{
  "version": 3,
  "sources": ["../../../node_modules/react/cjs/react.development.js", "../../../node_modules/react/index.js", "../../../node_modules/scheduler/cjs/scheduler.development.js", "../../../node_modules/scheduler/index.js", "../../../node_modules/react-dom/cjs/react-dom.development.js", "../../../node_modules/react-dom/index.js", "../../../node_modules/react-dom/client.js", "../../../node_modules/react-is/cjs/react-is.development.js", "../../../node_modules/react-is/index.js", "../../../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js", "../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js", "../../../node_modules/use-sync-external-store/shim/index.js", "../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js", "../../../node_modules/use-sync-external-store/shim/with-selector.js", "../../../node_modules/react-redux/lib/utils/reactBatchedUpdates.js", "../../../node_modules/react-redux/lib/utils/batch.js", "../../../node_modules/react-redux/lib/components/Context.js", "../../../node_modules/react-redux/lib/hooks/useReduxContext.js", "../../../node_modules/react-redux/lib/utils/useSyncExternalStore.js", "../../../node_modules/react-redux/lib/hooks/useSelector.js", "../../../node_modules/react-redux/node_modules/@babel/runtime/helpers/interopRequireDefault.js", "../../../node_modules/react-redux/node_modules/@babel/runtime/helpers/extends.js", "../../../node_modules/react-redux/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js", "../../../node_modules/react-redux/node_modules/react-is/cjs/react-is.development.js", "../../../node_modules/react-redux/node_modules/react-is/index.js", "../../../node_modules/react-redux/lib/utils/warning.js", "../../../node_modules/react-redux/lib/connect/verifySubselectors.js", "../../../node_modules/react-redux/lib/connect/selectorFactory.js", "../../../node_modules/react-redux/lib/utils/bindActionCreators.js", "../../../node_modules/react-redux/lib/utils/isPlainObject.js", "../../../node_modules/react-redux/lib/utils/verifyPlainObject.js", "../../../node_modules/react-redux/lib/connect/wrapMapToProps.js", "../../../node_modules/react-redux/lib/connect/invalidArgFactory.js", "../../../node_modules/react-redux/lib/connect/mapDispatchToProps.js", "../../../node_modules/react-redux/lib/connect/mapStateToProps.js", "../../../node_modules/react-redux/lib/connect/mergeProps.js", "../../../node_modules/react-redux/lib/utils/Subscription.js", "../../../node_modules/react-redux/lib/utils/useIsomorphicLayoutEffect.js", "../../../node_modules/react-redux/lib/utils/shallowEqual.js", "../../../node_modules/react-redux/lib/components/connect.js", "../../../node_modules/react-redux/lib/components/Provider.js", "../../../node_modules/react-redux/lib/hooks/useStore.js", "../../../node_modules/react-redux/lib/hooks/useDispatch.js", "../../../node_modules/react-redux/lib/types.js", "../../../node_modules/react-redux/lib/exports.js", "../../../node_modules/react-redux/lib/index.js", "../../../node_modules/react/cjs/react-jsx-runtime.development.js", "../../../node_modules/react/jsx-runtime.js", "../../../node_modules/warning/warning.js", "../../../node_modules/immer/src/utils/env.ts", "../../../node_modules/immer/src/utils/errors.ts", "../../../node_modules/immer/src/utils/common.ts", "../../../node_modules/immer/src/utils/plugins.ts", "../../../node_modules/immer/src/core/scope.ts", "../../../node_modules/immer/src/core/finalize.ts", "../../../node_modules/immer/src/core/proxy.ts", "../../../node_modules/immer/src/core/immerClass.ts", "../../../node_modules/immer/src/core/current.ts", "../../../node_modules/immer/src/plugins/es5.ts", "../../../node_modules/immer/src/plugins/patches.ts", "../../../node_modules/immer/src/plugins/mapset.ts", "../../../node_modules/immer/src/plugins/all.ts", "../../../node_modules/immer/src/immer.ts", "../../../node_modules/immer/dist/index.js", "../../../node_modules/@babel/runtime/helpers/typeof.js", "../../../node_modules/@babel/runtime/helpers/toPrimitive.js", "../../../node_modules/@babel/runtime/helpers/toPropertyKey.js", "../../../node_modules/@babel/runtime/helpers/defineProperty.js", "../../../node_modules/@babel/runtime/helpers/objectSpread2.js", "../../../node_modules/redux/lib/redux.js", "../../../node_modules/reselect/lib/defaultMemoize.js", "../../../node_modules/reselect/lib/index.js", "../../../node_modules/redux-thunk/lib/index.js", "../../../node_modules/@reduxjs/toolkit/src/index.ts", "../../../node_modules/@reduxjs/toolkit/src/createDraftSafeSelector.ts", "../../../node_modules/@reduxjs/toolkit/src/configureStore.ts", "../../../node_modules/@reduxjs/toolkit/src/devtoolsExtension.ts", "../../../node_modules/@reduxjs/toolkit/src/isPlainObject.ts", "../../../node_modules/@reduxjs/toolkit/src/getDefaultMiddleware.ts", "../../../node_modules/@reduxjs/toolkit/src/utils.ts", "../../../node_modules/@reduxjs/toolkit/src/immutableStateInvariantMiddleware.ts", "../../../node_modules/@reduxjs/toolkit/src/serializableStateInvariantMiddleware.ts", "../../../node_modules/@reduxjs/toolkit/src/createAction.ts", "../../../node_modules/@reduxjs/toolkit/src/createReducer.ts", "../../../node_modules/@reduxjs/toolkit/src/mapBuilders.ts", "../../../node_modules/@reduxjs/toolkit/src/createSlice.ts", "../../../node_modules/@reduxjs/toolkit/src/entities/entity_state.ts", "../../../node_modules/@reduxjs/toolkit/src/entities/state_selectors.ts", "../../../node_modules/@reduxjs/toolkit/src/entities/state_adapter.ts", "../../../node_modules/@reduxjs/toolkit/src/entities/utils.ts", "../../../node_modules/@reduxjs/toolkit/src/entities/unsorted_state_adapter.ts", "../../../node_modules/@reduxjs/toolkit/src/entities/sorted_state_adapter.ts", "../../../node_modules/@reduxjs/toolkit/src/entities/create_adapter.ts", "../../../node_modules/@reduxjs/toolkit/src/nanoid.ts", "../../../node_modules/@reduxjs/toolkit/src/createAsyncThunk.ts", "../../../node_modules/@reduxjs/toolkit/src/tsHelpers.ts", "../../../node_modules/@reduxjs/toolkit/src/matchers.ts", "../../../node_modules/@reduxjs/toolkit/src/listenerMiddleware/utils.ts", "../../../node_modules/@reduxjs/toolkit/src/listenerMiddleware/exceptions.ts", "../../../node_modules/@reduxjs/toolkit/src/listenerMiddleware/task.ts", "../../../node_modules/@reduxjs/toolkit/src/listenerMiddleware/index.ts", "../../../node_modules/@reduxjs/toolkit/src/autoBatchEnhancer.ts", "../../../node_modules/@reduxjs/toolkit/dist/redux-toolkit.cjs.development.js", "../../../node_modules/@reduxjs/toolkit/dist/index.js", "../../../node_modules/@reduxjs/toolkit/src/query/index.ts", "../../../node_modules/@reduxjs/toolkit/src/query/core/apiState.ts", "../../../node_modules/@reduxjs/toolkit/src/query/utils/isAbsoluteUrl.ts", "../../../node_modules/@reduxjs/toolkit/src/query/utils/joinUrls.ts", "../../../node_modules/@reduxjs/toolkit/src/query/utils/flatten.ts", "../../../node_modules/@reduxjs/toolkit/src/query/utils/isOnline.ts", "../../../node_modules/@reduxjs/toolkit/src/query/utils/isDocumentVisible.ts", "../../../node_modules/@reduxjs/toolkit/src/query/utils/copyWithStructuralSharing.ts", "../../../node_modules/@reduxjs/toolkit/src/query/fetchBaseQuery.ts", "../../../node_modules/@reduxjs/toolkit/src/query/HandledError.ts", "../../../node_modules/@reduxjs/toolkit/src/query/retry.ts", "../../../node_modules/@reduxjs/toolkit/src/query/core/setupListeners.ts", "../../../node_modules/@reduxjs/toolkit/src/query/core/buildSelectors.ts", "../../../node_modules/@reduxjs/toolkit/src/query/endpointDefinitions.ts", "../../../node_modules/@reduxjs/toolkit/src/query/core/buildSlice.ts", "../../../node_modules/@reduxjs/toolkit/src/query/utils/isNotNullish.ts", "../../../node_modules/@reduxjs/toolkit/src/query/core/buildInitiate.ts", "../../../node_modules/@reduxjs/toolkit/src/query/core/buildThunks.ts", "../../../node_modules/@reduxjs/toolkit/src/query/defaultSerializeQueryArgs.ts", "../../../node_modules/@reduxjs/toolkit/src/query/createApi.ts", "../../../node_modules/@reduxjs/toolkit/src/query/fakeBaseQuery.ts", "../../../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/index.ts", "../../../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/cacheCollection.ts", "../../../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/invalidationByTags.ts", "../../../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/polling.ts", "../../../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/windowEventHandling.ts", "../../../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/cacheLifecycle.ts", "../../../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/queryLifecycle.ts", "../../../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/devMiddleware.ts", "../../../node_modules/@reduxjs/toolkit/src/query/core/buildMiddleware/batchActions.ts", "../../../node_modules/@reduxjs/toolkit/src/query/tsHelpers.ts", "../../../node_modules/@reduxjs/toolkit/src/query/core/module.ts", "../../../node_modules/@reduxjs/toolkit/src/query/core/index.ts", "../../../node_modules/@reduxjs/toolkit/dist/query/rtk-query.cjs.development.js", "../../../node_modules/@reduxjs/toolkit/dist/query/index.js", "../../../node_modules/@reduxjs/toolkit/src/query/react/index.ts", "../../../node_modules/@reduxjs/toolkit/src/query/react/buildHooks.ts", "../../../node_modules/@reduxjs/toolkit/src/query/react/useSerializedStableValue.ts", "../../../node_modules/@reduxjs/toolkit/src/query/react/constants.ts", "../../../node_modules/@reduxjs/toolkit/src/query/react/useShallowStableValue.ts", "../../../node_modules/@reduxjs/toolkit/src/query/defaultSerializeQueryArgs.ts", "../../../node_modules/@reduxjs/toolkit/src/query/endpointDefinitions.ts", "../../../node_modules/@reduxjs/toolkit/src/query/utils/capitalize.ts", "../../../node_modules/@reduxjs/toolkit/src/query/tsHelpers.ts", "../../../node_modules/@reduxjs/toolkit/src/query/react/module.ts", "../../../node_modules/@reduxjs/toolkit/src/query/react/ApiProvider.tsx", "../../../node_modules/@reduxjs/toolkit/dist/query/react/rtk-query-react.cjs.development.js", "../../../node_modules/@reduxjs/toolkit/dist/query/react/index.js", "../../../node_modules/strict-uri-encode/index.js", "../../../node_modules/decode-uri-component/index.js", "../../../node_modules/split-on-first/index.js", "../../../node_modules/filter-obj/index.js", "../../../node_modules/query-string/index.js", "../../../node_modules/base64-js/index.js", "../../../node_modules/ieee754/index.js", "../../../node_modules/buffer/index.js", "../../../node_modules/debounce/index.js", "../../../node_modules/classnames/index.js", "../../../node_modules/react-element-popper/build/browser.min.js", "../../../node_modules/react-date-object/dist/index.js", "../../../node_modules/react-multi-date-picker/build/index.js", "../../../node_modules/react-responsive/dist/webpack:/MediaQuery/webpack/universalModuleDefinition", "../../../node_modules/react-responsive/dist/webpack:/MediaQuery/node_modules/css-mediaquery/index.js", "../../../node_modules/react-responsive/dist/webpack:/MediaQuery/node_modules/hyphenate-style-name/index.js", "../../../node_modules/react-responsive/dist/webpack:/MediaQuery/node_modules/matchmediaquery/index.js", "../../../node_modules/react-responsive/dist/webpack:/MediaQuery/node_modules/object-assign/index.js", "../../../node_modules/react-responsive/dist/webpack:/MediaQuery/node_modules/prop-types/checkPropTypes.js", "../../../node_modules/react-responsive/dist/webpack:/MediaQuery/node_modules/prop-types/factoryWithTypeCheckers.js", "../../../node_modules/react-responsive/dist/webpack:/MediaQuery/node_modules/prop-types/index.js", "../../../node_modules/react-responsive/dist/webpack:/MediaQuery/node_modules/prop-types/lib/ReactPropTypesSecret.js", "../../../node_modules/react-responsive/dist/webpack:/MediaQuery/node_modules/prop-types/lib/has.js", "../../../node_modules/react-responsive/dist/webpack:/MediaQuery/node_modules/react-is/cjs/react-is.development.js", "../../../node_modules/react-responsive/dist/webpack:/MediaQuery/node_modules/react-is/index.js", "../../../node_modules/react-responsive/dist/webpack:/MediaQuery/node_modules/shallow-equal/dist/index.esm.js", "../../../node_modules/react-responsive/dist/webpack:/MediaQuery/src/Component.ts", "../../../node_modules/react-responsive/dist/webpack:/MediaQuery/src/Context.ts", "../../../node_modules/react-responsive/dist/webpack:/MediaQuery/src/index.ts", "../../../node_modules/react-responsive/dist/webpack:/MediaQuery/src/mediaQuery.ts", "../../../node_modules/react-responsive/dist/webpack:/MediaQuery/src/toQuery.ts", "../../../node_modules/react-responsive/dist/webpack:/MediaQuery/src/useMediaQuery.ts", "../../../node_modules/react-responsive/dist/webpack:/MediaQuery/external umd {\"commonjs\":\"react\",\"commonjs2\":\"react\",\"amd\":\"react\",\"root\":\"React\"}", "../../../node_modules/react-responsive/dist/webpack:/MediaQuery/webpack/bootstrap", "../../../node_modules/react-responsive/dist/webpack:/MediaQuery/webpack/runtime/define property getters", "../../../node_modules/react-responsive/dist/webpack:/MediaQuery/webpack/runtime/hasOwnProperty shorthand", "../../../node_modules/react-responsive/dist/webpack:/MediaQuery/webpack/runtime/make namespace object", "../../../node_modules/react-responsive/dist/webpack:/MediaQuery/webpack/before-startup", "../../../node_modules/react-responsive/dist/webpack:/MediaQuery/webpack/startup", "../../../node_modules/react-responsive/dist/webpack:/MediaQuery/webpack/after-startup", "../../../node_modules/tailwindcss/lib/util/negateValue.js", "../../../node_modules/tailwindcss/lib/corePluginList.js", "../../../node_modules/tailwindcss/lib/util/configurePlugins.js", "../../../node_modules/tailwindcss/stubs/defaultConfig.stub.js", "../../../node_modules/picocolors/picocolors.browser.js", "../../../node_modules/tailwindcss/lib/util/log.js", "../../../node_modules/tailwindcss/lib/public/colors.js", "../../../node_modules/tailwindcss/lib/util/defaults.js", "../../../node_modules/tailwindcss/lib/util/toPath.js", "../../../node_modules/tailwindcss/lib/util/normalizeConfig.js", "../../../node_modules/tailwindcss/lib/util/isPlainObject.js", "../../../node_modules/tailwindcss/lib/util/cloneDeep.js", "../../../node_modules/postcss-selector-parser/dist/util/unesc.js", "../../../node_modules/postcss-selector-parser/dist/util/getProp.js", "../../../node_modules/postcss-selector-parser/dist/util/ensureObject.js", "../../../node_modules/postcss-selector-parser/dist/util/stripComments.js", "../../../node_modules/postcss-selector-parser/dist/util/index.js", "../../../node_modules/postcss-selector-parser/dist/selectors/node.js", "../../../node_modules/postcss-selector-parser/dist/selectors/types.js", "../../../node_modules/postcss-selector-parser/dist/selectors/container.js", "../../../node_modules/postcss-selector-parser/dist/selectors/root.js", "../../../node_modules/postcss-selector-parser/dist/selectors/selector.js", "../../../node_modules/cssesc/cssesc.js", "../../../node_modules/postcss-selector-parser/dist/selectors/className.js", "../../../node_modules/postcss-selector-parser/dist/selectors/comment.js", "../../../node_modules/postcss-selector-parser/dist/selectors/id.js", "../../../node_modules/postcss-selector-parser/dist/selectors/namespace.js", "../../../node_modules/postcss-selector-parser/dist/selectors/tag.js", "../../../node_modules/postcss-selector-parser/dist/selectors/string.js", "../../../node_modules/postcss-selector-parser/dist/selectors/pseudo.js", "../../../node_modules/util-deprecate/browser.js", "../../../node_modules/postcss-selector-parser/dist/selectors/attribute.js", "../../../node_modules/postcss-selector-parser/dist/selectors/universal.js", "../../../node_modules/postcss-selector-parser/dist/selectors/combinator.js", "../../../node_modules/postcss-selector-parser/dist/selectors/nesting.js", "../../../node_modules/postcss-selector-parser/dist/sortAscending.js", "../../../node_modules/postcss-selector-parser/dist/tokenTypes.js", "../../../node_modules/postcss-selector-parser/dist/tokenize.js", "../../../node_modules/postcss-selector-parser/dist/parser.js", "../../../node_modules/postcss-selector-parser/dist/processor.js", "../../../node_modules/postcss-selector-parser/dist/selectors/constructors.js", "../../../node_modules/postcss-selector-parser/dist/selectors/guards.js", "../../../node_modules/postcss-selector-parser/dist/selectors/index.js", "../../../node_modules/postcss-selector-parser/dist/index.js", "../../../node_modules/tailwindcss/lib/util/escapeCommas.js", "../../../node_modules/color-name/index.js", "../../../node_modules/tailwindcss/lib/util/color.js", "../../../node_modules/tailwindcss/lib/util/withAlphaVariable.js", "../../../node_modules/tailwindcss/lib/util/splitAtTopLevelOnly.js", "../../../node_modules/tailwindcss/lib/util/parseBoxShadowValue.js", "../../../node_modules/tailwindcss/lib/util/dataTypes.js", "../../../node_modules/tailwindcss/lib/util/validateFormalSyntax.js", "../../../node_modules/tailwindcss/lib/featureFlags.js", "../../../node_modules/tailwindcss/lib/util/pluginUtils.js", "../../../node_modules/tailwindcss/lib/util/toColorValue.js", "../../../node_modules/tailwindcss/lib/util/resolveConfig.js", "../../../node_modules/tailwindcss/lib/util/getAllConfigs.js", "../../../node_modules/tailwindcss/lib/public/resolve-config.js", "../../../node_modules/tailwindcss/resolveConfig.js", "../../../node_modules/is-arrayish/index.js", "../../../node_modules/simple-swizzle/index.js", "../../../node_modules/color-string/index.js", "../../../node_modules/color-convert/conversions.js", "../../../node_modules/color-convert/route.js", "../../../node_modules/color-convert/index.js", "../../../node_modules/color/index.js", "../../../node_modules/tailwindcss/lib/util/createPlugin.js", "../../../node_modules/tailwindcss/lib/public/create-plugin.js", "../../../node_modules/tailwindcss/plugin.js", "../../../node_modules/lodash.foreach/index.js", "../../../node_modules/flat/index.js", "../../../node_modules/tw-colors/lib/index.ts", "../../../tailwind.config.js", "../../../node_modules/parse-numeric-range/index.js", "../../../node_modules/boolbase/index.js", "../../../node_modules/inline-style-parser/index.js", "../../../node_modules/style-to-object/src/index.ts", "../../../node_modules/style-to-js/src/utilities.ts", "../../../node_modules/style-to-js/src/index.ts", "../../../node_modules/extend/index.js", "../../../node_modules/@uiw/copy-to-clipboard/src/main.js", "../../../node_modules/headers-polyfill/src/index.ts", "../../../node_modules/headers-polyfill/src/utils/normalizeHeaderName.ts", "../../../node_modules/headers-polyfill/src/utils/normalizeHeaderValue.ts", "../../../node_modules/headers-polyfill/src/Headers.ts", "../../../node_modules/headers-polyfill/src/transformers/headersToList.ts", "../../../node_modules/headers-polyfill/src/transformers/headersToString.ts", "../../../node_modules/headers-polyfill/src/transformers/headersToObject.ts", "../../../node_modules/headers-polyfill/src/transformers/stringToHeaders.ts", "../../../node_modules/headers-polyfill/src/transformers/listToHeaders.ts", "../../../node_modules/headers-polyfill/src/transformers/reduceHeadersObject.ts", "../../../node_modules/headers-polyfill/src/transformers/objectToHeaders.ts", "../../../node_modules/headers-polyfill/src/transformers/flattenHeadersList.ts", "../../../node_modules/headers-polyfill/src/transformers/flattenHeadersObject.ts", "../../../node_modules/cookie/index.js", "../../../node_modules/is-node-process/lib/index.js", "../../../node_modules/msw/node_modules/node-fetch/browser.js", "../../../node_modules/outvariant/lib/format.js", "../../../node_modules/outvariant/lib/invariant.js", "../../../node_modules/outvariant/lib/index.js", "../../../node_modules/@open-draft/until/lib/until.js", "../../../node_modules/@open-draft/until/lib/index.js", "../../../node_modules/@mswjs/interceptors/src/glossary.ts", "../../../node_modules/debug/node_modules/ms/index.js", "../../../node_modules/debug/src/common.js", "../../../node_modules/debug/src/browser.js", "../../../node_modules/events/events.js", "../../../node_modules/@mswjs/interceptors/node_modules/strict-event-emitter/lib/StrictEventEmitter.js", "../../../node_modules/@mswjs/interceptors/node_modules/strict-event-emitter/lib/index.js", "../../../node_modules/@mswjs/interceptors/src/utils/nextTick.ts", "../../../node_modules/@mswjs/interceptors/src/utils/AsyncEventEmitter.ts", "../../../node_modules/@mswjs/interceptors/src/Interceptor.ts", "../../../node_modules/@mswjs/interceptors/src/BatchInterceptor.ts", "../../../node_modules/has-symbols/shams.js", "../../../node_modules/has-tostringtag/shams.js", "../../../node_modules/has-symbols/index.js", "../../../node_modules/function-bind/implementation.js", "../../../node_modules/function-bind/index.js", "../../../node_modules/has/src/index.js", "../../../node_modules/get-intrinsic/index.js", "../../../node_modules/call-bind/index.js", "../../../node_modules/call-bind/callBound.js", "../../../node_modules/is-arguments/index.js", "../../../node_modules/is-generator-function/index.js", "../../../node_modules/is-callable/index.js", "../../../node_modules/for-each/index.js", "../../../node_modules/available-typed-arrays/index.js", "../../../node_modules/gopd/index.js", "../../../node_modules/is-typed-array/index.js", "../../../node_modules/which-typed-array/index.js", "../../../node_modules/util/support/types.js", "../../../node_modules/util/support/isBufferBrowser.js", "../../../node_modules/inherits/inherits_browser.js", "../../../node_modules/util/util.js", "../../../node_modules/web-encoding/src/lib.js", "../../../node_modules/@mswjs/interceptors/src/utils/bufferUtils.ts", "../../../node_modules/@mswjs/interceptors/src/utils/uuid.ts", "../../../node_modules/@mswjs/interceptors/src/IsomorphicRequest.ts", "../../../node_modules/@mswjs/interceptors/src/utils/createLazyCallback.ts", "../../../node_modules/@mswjs/interceptors/src/InteractiveIsomorphicRequest.ts", "../../../node_modules/@mswjs/interceptors/src/utils/getCleanUrl.ts", "../../../node_modules/@mswjs/interceptors/src/index.ts", "../../../node_modules/set-cookie-parser/lib/set-cookie.js", "../../../node_modules/@mswjs/cookies/lib/store.js", "../../../node_modules/@mswjs/cookies/lib/index.js", "../../../node_modules/js-levenshtein/index.js", "../../../node_modules/graphql/version.js", "../../../node_modules/graphql/jsutils/devAssert.js", "../../../node_modules/graphql/jsutils/isPromise.js", "../../../node_modules/graphql/jsutils/isObjectLike.js", "../../../node_modules/graphql/jsutils/invariant.js", "../../../node_modules/graphql/language/location.js", "../../../node_modules/graphql/language/printLocation.js", "../../../node_modules/graphql/error/GraphQLError.js", "../../../node_modules/graphql/error/syntaxError.js", "../../../node_modules/graphql/language/ast.js", "../../../node_modules/graphql/language/directiveLocation.js", "../../../node_modules/graphql/language/kinds.js", "../../../node_modules/graphql/language/characterClasses.js", "../../../node_modules/graphql/language/blockString.js", "../../../node_modules/graphql/language/tokenKind.js", "../../../node_modules/graphql/language/lexer.js", "../../../node_modules/graphql/jsutils/inspect.js", "../../../node_modules/graphql/jsutils/instanceOf.js", "../../../node_modules/graphql/language/source.js", "../../../node_modules/graphql/language/parser.js", "../../../node_modules/graphql/jsutils/didYouMean.js", "../../../node_modules/graphql/jsutils/identityFunc.js", "../../../node_modules/graphql/jsutils/keyMap.js", "../../../node_modules/graphql/jsutils/keyValMap.js", "../../../node_modules/graphql/jsutils/mapValue.js", "../../../node_modules/graphql/jsutils/naturalCompare.js", "../../../node_modules/graphql/jsutils/suggestionList.js", "../../../node_modules/graphql/jsutils/toObjMap.js", "../../../node_modules/graphql/language/printString.js", "../../../node_modules/graphql/language/visitor.js", "../../../node_modules/graphql/language/printer.js", "../../../node_modules/graphql/utilities/valueFromASTUntyped.js", "../../../node_modules/graphql/type/assertName.js", "../../../node_modules/graphql/type/definition.js", "../../../node_modules/graphql/utilities/typeComparators.js", "../../../node_modules/graphql/type/scalars.js", "../../../node_modules/graphql/type/directives.js", "../../../node_modules/graphql/jsutils/isIterableObject.js", "../../../node_modules/graphql/utilities/astFromValue.js", "../../../node_modules/graphql/type/introspection.js", "../../../node_modules/graphql/type/schema.js", "../../../node_modules/graphql/type/validate.js", "../../../node_modules/graphql/utilities/typeFromAST.js", "../../../node_modules/graphql/utilities/TypeInfo.js", "../../../node_modules/graphql/language/predicates.js", "../../../node_modules/graphql/validation/rules/ExecutableDefinitionsRule.js", "../../../node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.js", "../../../node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.js", "../../../node_modules/graphql/validation/rules/KnownArgumentNamesRule.js", "../../../node_modules/graphql/validation/rules/KnownDirectivesRule.js", "../../../node_modules/graphql/validation/rules/KnownFragmentNamesRule.js", "../../../node_modules/graphql/validation/rules/KnownTypeNamesRule.js", "../../../node_modules/graphql/validation/rules/LoneAnonymousOperationRule.js", "../../../node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.js", "../../../node_modules/graphql/validation/rules/NoFragmentCyclesRule.js", "../../../node_modules/graphql/validation/rules/NoUndefinedVariablesRule.js", "../../../node_modules/graphql/validation/rules/NoUnusedFragmentsRule.js", "../../../node_modules/graphql/validation/rules/NoUnusedVariablesRule.js", "../../../node_modules/graphql/utilities/sortValueNode.js", "../../../node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.js", "../../../node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.js", "../../../node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.js", "../../../node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.js", "../../../node_modules/graphql/validation/rules/ScalarLeafsRule.js", "../../../node_modules/graphql/jsutils/printPathArray.js", "../../../node_modules/graphql/jsutils/Path.js", "../../../node_modules/graphql/utilities/coerceInputValue.js", "../../../node_modules/graphql/utilities/valueFromAST.js", "../../../node_modules/graphql/execution/values.js", "../../../node_modules/graphql/execution/collectFields.js", "../../../node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.js", "../../../node_modules/graphql/jsutils/groupBy.js", "../../../node_modules/graphql/validation/rules/UniqueArgumentDefinitionNamesRule.js", "../../../node_modules/graphql/validation/rules/UniqueArgumentNamesRule.js", "../../../node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.js", "../../../node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.js", "../../../node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.js", "../../../node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.js", "../../../node_modules/graphql/validation/rules/UniqueFragmentNamesRule.js", "../../../node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.js", "../../../node_modules/graphql/validation/rules/UniqueOperationNamesRule.js", "../../../node_modules/graphql/validation/rules/UniqueOperationTypesRule.js", "../../../node_modules/graphql/validation/rules/UniqueTypeNamesRule.js", "../../../node_modules/graphql/validation/rules/UniqueVariableNamesRule.js", "../../../node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.js", "../../../node_modules/graphql/validation/rules/VariablesAreInputTypesRule.js", "../../../node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.js", "../../../node_modules/graphql/validation/specifiedRules.js", "../../../node_modules/graphql/validation/ValidationContext.js", "../../../node_modules/graphql/validation/validate.js", "../../../node_modules/graphql/jsutils/memoize3.js", "../../../node_modules/graphql/jsutils/promiseForObject.js", "../../../node_modules/graphql/jsutils/promiseReduce.js", "../../../node_modules/graphql/jsutils/toError.js", "../../../node_modules/graphql/error/locatedError.js", "../../../node_modules/graphql/execution/execute.js", "../../../node_modules/graphql/graphql.js", "../../../node_modules/graphql/type/index.js", "../../../node_modules/graphql/language/index.js", "../../../node_modules/graphql/jsutils/isAsyncIterable.js", "../../../node_modules/graphql/execution/mapAsyncIterator.js", "../../../node_modules/graphql/execution/subscribe.js", "../../../node_modules/graphql/execution/index.js", "../../../node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.js", "../../../node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.js", "../../../node_modules/graphql/validation/index.js", "../../../node_modules/graphql/error/index.js", "../../../node_modules/graphql/utilities/getIntrospectionQuery.js", "../../../node_modules/graphql/utilities/getOperationAST.js", "../../../node_modules/graphql/utilities/getOperationRootType.js", "../../../node_modules/graphql/utilities/introspectionFromSchema.js", "../../../node_modules/graphql/utilities/buildClientSchema.js", "../../../node_modules/graphql/utilities/extendSchema.js", "../../../node_modules/graphql/utilities/buildASTSchema.js", "../../../node_modules/graphql/utilities/lexicographicSortSchema.js", "../../../node_modules/graphql/utilities/printSchema.js", "../../../node_modules/graphql/utilities/concatAST.js", "../../../node_modules/graphql/utilities/separateOperations.js", "../../../node_modules/graphql/utilities/stripIgnoredCharacters.js", "../../../node_modules/graphql/utilities/assertValidName.js", "../../../node_modules/graphql/utilities/findBreakingChanges.js", "../../../node_modules/graphql/utilities/index.js", "../../../node_modules/graphql/index.js", "../../../node_modules/path-to-regexp/src/index.ts", "../../../node_modules/@mswjs/interceptors/src/utils/toIsoResponse.ts", "../../../node_modules/@mswjs/interceptors/src/interceptors/fetch/index.ts", "../../../node_modules/@xmldom/xmldom/lib/conventions.js", "../../../node_modules/@xmldom/xmldom/lib/dom.js", "../../../node_modules/@xmldom/xmldom/lib/entities.js", "../../../node_modules/@xmldom/xmldom/lib/sax.js", "../../../node_modules/@xmldom/xmldom/lib/dom-parser.js", "../../../node_modules/@xmldom/xmldom/lib/index.js", "../../../node_modules/@mswjs/interceptors/src/utils/parseJson.ts", "../../../node_modules/@mswjs/interceptors/src/interceptors/XMLHttpRequest/utils/bufferFrom.ts", "../../../node_modules/@mswjs/interceptors/src/interceptors/XMLHttpRequest/polyfills/EventPolyfill.ts", "../../../node_modules/@mswjs/interceptors/src/interceptors/XMLHttpRequest/polyfills/ProgressEventPolyfill.ts", "../../../node_modules/@mswjs/interceptors/src/interceptors/XMLHttpRequest/utils/createEvent.ts", "../../../node_modules/@mswjs/interceptors/src/interceptors/XMLHttpRequest/XMLHttpRequestOverride.ts", "../../../node_modules/@mswjs/interceptors/src/interceptors/XMLHttpRequest/index.ts", "../../../node_modules/strict-event-emitter/lib/MemoryLeakError.js", "../../../node_modules/strict-event-emitter/lib/Emitter.js", "../../../node_modules/strict-event-emitter/lib/index.js", "../../../node_modules/msw/src/index.ts", "../../../node_modules/msw/src/context/index.ts", "../../../node_modules/msw/src/context/status.ts", "../../../node_modules/msw/src/context/set.ts", "../../../node_modules/msw/src/context/cookie.ts", "../../../node_modules/msw/src/context/body.ts", "../../../node_modules/msw/src/utils/internal/jsonParse.ts", "../../../node_modules/msw/src/utils/internal/isObject.ts", "../../../node_modules/msw/src/utils/internal/mergeRight.ts", "../../../node_modules/msw/src/context/json.ts", "../../../node_modules/msw/src/context/data.ts", "../../../node_modules/msw/src/context/extensions.ts", "../../../node_modules/msw/src/context/delay.ts", "../../../node_modules/msw/src/context/errors.ts", "../../../node_modules/msw/src/context/fetch.ts", "../../../node_modules/msw/src/context/text.ts", "../../../node_modules/msw/src/context/xml.ts", "../../../node_modules/msw/src/utils/internal/checkGlobals.ts", "../../../node_modules/msw/src/utils/internal/devUtils.ts", "../../../node_modules/msw/src/setupWorker/setupWorker.ts", "../../../node_modules/msw/src/setupWorker/start/createStartHandler.ts", "../../../node_modules/msw/src/setupWorker/start/utils/getWorkerInstance.ts", "../../../node_modules/msw/src/setupWorker/start/utils/getWorkerByRegistration.ts", "../../../node_modules/msw/src/utils/url/getAbsoluteWorkerUrl.ts", "../../../node_modules/msw/src/setupWorker/start/utils/printStartMessage.ts", "../../../node_modules/msw/src/setupWorker/start/utils/enableMocking.ts", "../../../node_modules/msw/src/setupWorker/start/utils/createMessageChannel.ts", "../../../node_modules/msw/src/utils/NetworkError.ts", "../../../node_modules/msw/src/utils/request/parseWorkerRequest.ts", "../../../node_modules/msw/src/utils/request/MockedRequest.ts", "../../../node_modules/msw/src/utils/request/getRequestCookies.ts", "../../../node_modules/msw/src/utils/internal/parseMultipartData.ts", "../../../node_modules/msw/src/utils/request/parseBody.ts", "../../../node_modules/msw/src/utils/internal/isStringEqual.ts", "../../../node_modules/msw/src/utils/handleRequest.ts", "../../../node_modules/msw/src/utils/getResponse.ts", "../../../node_modules/msw/src/utils/request/onUnhandledRequest.ts", "../../../node_modules/msw/src/utils/internal/parseGraphQLRequest.ts", "../../../node_modules/msw/src/utils/request/getPublicUrlFromRequest.ts", "../../../node_modules/msw/src/utils/logging/getStatusCodeColor.ts", "../../../node_modules/msw/src/utils/logging/getTimestamp.ts", "../../../node_modules/msw/src/utils/logging/prepareRequest.ts", "../../../node_modules/msw/src/utils/logging/prepareResponse.ts", "../../../node_modules/msw/src/utils/matching/matchRequestUrl.ts", "../../../node_modules/msw/src/utils/url/cleanUrl.ts", "../../../node_modules/msw/src/utils/url/isAbsoluteUrl.ts", "../../../node_modules/msw/src/utils/url/getAbsoluteUrl.ts", "../../../node_modules/msw/src/utils/matching/normalizePath.ts", "../../../node_modules/msw/src/handlers/RequestHandler.ts", "../../../node_modules/msw/src/response.ts", "../../../node_modules/msw/src/utils/internal/compose.ts", "../../../node_modules/msw/src/utils/internal/getCallFrame.ts", "../../../node_modules/msw/src/utils/internal/isIterable.ts", "../../../node_modules/msw/src/handlers/RestHandler.ts", "../../../node_modules/msw/src/context/field.ts", "../../../node_modules/msw/src/utils/internal/tryCatch.ts", "../../../node_modules/msw/src/handlers/GraphQLHandler.ts", "../../../node_modules/msw/src/utils/request/readResponseCookies.ts", "../../../node_modules/msw/src/utils/logging/serializeResponse.ts", "../../../node_modules/msw/src/setupWorker/start/createRequestListener.ts", "../../../node_modules/msw/src/utils/internal/requestIntegrityCheck.ts", "../../../node_modules/msw/src/utils/deferNetworkRequestsUntil.ts", "../../../node_modules/msw/src/setupWorker/start/createResponseListener.ts", "../../../node_modules/msw/src/setupWorker/start/utils/validateWorkerScope.ts", "../../../node_modules/msw/src/setupWorker/stop/utils/printStopMessage.ts", "../../../node_modules/msw/src/setupWorker/stop/createStop.ts", "../../../node_modules/msw/src/setupWorker/start/utils/prepareStartHandler.ts", "../../../node_modules/msw/src/setupWorker/start/createFallbackRequestListener.ts", "../../../node_modules/msw/src/utils/request/createResponseFromIsomorphicResponse.ts", "../../../node_modules/msw/src/setupWorker/start/createFallbackStart.ts", "../../../node_modules/msw/src/setupWorker/stop/createFallbackStop.ts", "../../../node_modules/msw/src/SetupApi.ts", "../../../node_modules/msw/src/utils/internal/pipeEvents.ts", "../../../node_modules/msw/src/utils/internal/toReadonlyArray.ts", "../../../node_modules/msw/src/rest.ts", "../../../node_modules/msw/src/graphql.ts", "../../javascript/test/mocks/profileMocks.js", "../../javascript/test/mocks/metersMocks.js", "../../javascript/test/mocks/ticketsMocks.js", "../../javascript/test/mocks/accessMocks.js", "../../javascript/test/mocks/resolutionsMocks.js", "../../javascript/test/mocks/announcementsMocks.js", "../../javascript/test/mocks/activityLogMocks.js", "../../javascript/test/mocks/settlementsMocks.js", "../../javascript/test/mocks/tasksMocks.js", "../../javascript/test/mocks/employeesMocks.js", "../../javascript/test/mocks/usersMocks.js", "../../javascript/test/mocks/tenantsMocks.js", "../../javascript/test/mocks/venuesMocks.js", "../../javascript/test/mocks/homeownerAssociationsMocks.js", "../../javascript/test/mocks/companyMocks.js", "../../javascript/test/mocks/journalsMocks.js", "../../javascript/test/mocks/documentsMocks.js", "../../javascript/test/mocks.js", "../../javascript/test/worker.js", "../../javascript/app/App.tsx", "../../../node_modules/tslib/tslib.es6.js", "../../../node_modules/react-intl/lib/src/components/createFormattedComponent.js", "../../../node_modules/react-intl/lib/src/components/useIntl.js", "../../../node_modules/react-intl/lib/src/components/injectIntl.js", "../../../node_modules/react-intl/lib/src/utils.js", "../../../node_modules/@formatjs/ecma402-abstract/lib/utils.js", "../../../node_modules/@formatjs/icu-messageformat-parser/lib/error.js", "../../../node_modules/@formatjs/icu-messageformat-parser/lib/types.js", "../../../node_modules/@formatjs/icu-messageformat-parser/lib/regex.generated.js", "../../../node_modules/@formatjs/icu-skeleton-parser/lib/date-time.js", "../../../node_modules/@formatjs/icu-skeleton-parser/lib/regex.generated.js", "../../../node_modules/@formatjs/icu-skeleton-parser/lib/number.js", "../../../node_modules/@formatjs/icu-messageformat-parser/lib/time-data.generated.js", "../../../node_modules/@formatjs/icu-messageformat-parser/lib/date-time-pattern-generator.js", "../../../node_modules/@formatjs/icu-messageformat-parser/lib/parser.js", "../../../node_modules/@formatjs/icu-messageformat-parser/lib/index.js", "../../../node_modules/@formatjs/fast-memoize/lib/index.js", "../../../node_modules/intl-messageformat/lib/src/error.js", "../../../node_modules/intl-messageformat/lib/src/formatters.js", "../../../node_modules/intl-messageformat/lib/src/core.js", "../../../node_modules/@formatjs/intl/lib/src/error.js", "../../../node_modules/@formatjs/intl/lib/src/utils.js", "../../../node_modules/@formatjs/intl/lib/src/message.js", "../../../node_modules/@formatjs/intl/lib/src/dateTime.js", "../../../node_modules/@formatjs/intl/lib/src/displayName.js", "../../../node_modules/@formatjs/intl/lib/src/list.js", "../../../node_modules/@formatjs/intl/lib/src/plural.js", "../../../node_modules/@formatjs/intl/lib/src/relativeTime.js", "../../../node_modules/@formatjs/intl/lib/src/number.js", "../../../node_modules/@formatjs/intl/lib/src/create-intl.js", "../../../node_modules/react-intl/lib/src/components/provider.js", "../../../node_modules/react-intl/lib/index.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/webpack/bootstrap", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/webpack/runtime/define property getters", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/webpack/runtime/hasOwnProperty shorthand", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/shared/util.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/xfa_text.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/xfa_layer.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/display_utils.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/editor/toolbar.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/editor/tools.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/editor/alt_text.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/editor/comment.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/touch_manager.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/editor/editor.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/shared/murmurhash3.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/annotation_storage.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/font_loader.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/api_utils.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/shared/message_handler.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/canvas_factory.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/cmap_reader_factory.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/filter_factory.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/standard_fontdata_factory.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/wasm_factory.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/node_utils.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/canvas_dependency_tracker.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/pattern_helper.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/shared/image_utils.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/canvas.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/shared/obj-bin-transform.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/worker_options.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/metadata.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/optional_content_config.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/transport_stream.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/content_disposition.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/network_utils.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/fetch_stream.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/network.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/node_stream.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/pdf_objects.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/text_layer.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/api.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/editor/color_picker.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/shared/scripting_utils.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/svg_factory.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/annotation_layer.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/editor/freetext.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/editor/drawers/outline.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/editor/drawers/freedraw.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/editor/drawers/highlight.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/editor/highlight.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/editor/draw.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/editor/drawers/inkdraw.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/editor/ink.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/editor/drawers/contour.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/editor/drawers/signaturedraw.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/editor/signature.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/editor/stamp.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/editor/annotation_editor_layer.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/display/draw_layer.js", "../../../node_modules/pdfjs-dist/build/webpack:/pdf.js/src/pdf.js", "../../../node_modules/react-pdf/dist/Document.js", "../../../node_modules/clsx/dist/clsx.mjs", "../../../node_modules/dequal/dist/index.mjs", "../../../node_modules/make-cancellable-promise/dist/index.js", "../../../node_modules/make-event-props/dist/index.js", "../../../node_modules/tiny-invariant/dist/esm/tiny-invariant.js", "../../../node_modules/react-pdf/dist/DocumentContext.js", "../../../node_modules/react-pdf/dist/LinkService.js", "../../../node_modules/react-pdf/dist/Message.js", "../../../node_modules/react-pdf/dist/PasswordResponses.js", "../../../node_modules/react-pdf/dist/shared/hooks/useResolver.js", "../../../node_modules/react-pdf/dist/shared/utils.js", "../../../node_modules/react-pdf/dist/shared/hooks/useDocumentContext.js", "../../../node_modules/react-pdf/dist/Page.js", "../../../node_modules/merge-refs/dist/index.js", "../../../node_modules/react-pdf/dist/Page/AnnotationLayer.js", "../../../node_modules/react-pdf/dist/shared/hooks/usePageContext.js", "../../../node_modules/react-pdf/dist/PageContext.js", "../../../node_modules/react-pdf/dist/Page/Canvas.js", "../../../node_modules/react-pdf/dist/StructTree.js", "../../../node_modules/react-pdf/dist/StructTreeItem.js", "../../../node_modules/react-pdf/dist/shared/constants.js", "../../../node_modules/react-pdf/dist/shared/structTreeUtils.js", "../../../node_modules/react-pdf/dist/Page/TextLayer.js", "../../../node_modules/react-pdf/dist/index.js", "../../../node_modules/js-cookie/dist/js.cookie.mjs", "../../javascript/app/AppRouter.tsx", "../../../node_modules/@remix-run/router/history.ts", "../../../node_modules/@remix-run/router/utils.ts", "../../../node_modules/@remix-run/router/router.ts", "../../../node_modules/react-router/lib/use-sync-external-store-shim/useSyncExternalStoreShimClient.ts", "../../../node_modules/react-router/lib/use-sync-external-store-shim/useSyncExternalStoreShimServer.ts", "../../../node_modules/react-router/lib/use-sync-external-store-shim/index.ts", "../../../node_modules/react-router/lib/context.ts", "../../../node_modules/react-router/lib/hooks.tsx", "../../../node_modules/react-router/lib/components.tsx", "../../../node_modules/react-router/index.ts", "../../../node_modules/react-router-dom/dom.ts", "../../../node_modules/react-router-dom/index.tsx", "../../javascript/app/DocumentRouter.tsx", "../../javascript/app/pages/DocumentsPage/DocumentsPage.tsx", "../../../node_modules/react-hook-form/src/utils/isCheckBoxInput.ts", "../../../node_modules/react-hook-form/src/utils/isDateObject.ts", "../../../node_modules/react-hook-form/src/utils/isNullOrUndefined.ts", "../../../node_modules/react-hook-form/src/utils/isObject.ts", "../../../node_modules/react-hook-form/src/logic/getEventValue.ts", "../../../node_modules/react-hook-form/src/logic/getNodeParentName.ts", "../../../node_modules/react-hook-form/src/logic/isNameInFieldArray.ts", "../../../node_modules/react-hook-form/src/utils/compact.ts", "../../../node_modules/react-hook-form/src/utils/isUndefined.ts", "../../../node_modules/react-hook-form/src/utils/get.ts", "../../../node_modules/react-hook-form/src/constants.ts", "../../../node_modules/react-hook-form/src/useFormContext.tsx", "../../../node_modules/react-hook-form/src/logic/getProxyFormState.ts", "../../../node_modules/react-hook-form/src/utils/isEmptyObject.ts", "../../../node_modules/react-hook-form/src/logic/shouldRenderFormState.ts", "../../../node_modules/react-hook-form/src/utils/convertToArrayPayload.ts", "../../../node_modules/react-hook-form/src/logic/shouldSubscribeByName.ts", "../../../node_modules/react-hook-form/src/useSubscribe.ts", "../../../node_modules/react-hook-form/src/useFormState.ts", "../../../node_modules/react-hook-form/src/utils/isString.ts", "../../../node_modules/react-hook-form/src/logic/generateWatchOutput.ts", "../../../node_modules/react-hook-form/src/utils/isPlainObject.ts", "../../../node_modules/react-hook-form/src/utils/isWeb.ts", "../../../node_modules/react-hook-form/src/utils/cloneObject.ts", "../../../node_modules/react-hook-form/src/useWatch.ts", "../../../node_modules/react-hook-form/src/useController.ts", "../../../node_modules/react-hook-form/src/controller.tsx", "../../../node_modules/react-hook-form/src/logic/appendErrors.ts", "../../../node_modules/react-hook-form/src/utils/isKey.ts", "../../../node_modules/react-hook-form/src/utils/stringToPath.ts", "../../../node_modules/react-hook-form/src/utils/set.ts", "../../../node_modules/react-hook-form/src/logic/focusFieldBy.ts", "../../../node_modules/react-hook-form/src/logic/generateId.ts", "../../../node_modules/react-hook-form/src/logic/getFocusFieldName.ts", "../../../node_modules/react-hook-form/src/logic/getValidationModes.ts", "../../../node_modules/react-hook-form/src/logic/isWatched.ts", "../../../node_modules/react-hook-form/src/logic/updateFieldArrayRootError.ts", "../../../node_modules/react-hook-form/src/utils/isBoolean.ts", "../../../node_modules/react-hook-form/src/utils/isFileInput.ts", "../../../node_modules/react-hook-form/src/utils/isFunction.ts", "../../../node_modules/react-hook-form/src/utils/isHTMLElement.ts", "../../../node_modules/react-hook-form/src/utils/isMessage.ts", "../../../node_modules/react-hook-form/src/utils/isRadioInput.ts", "../../../node_modules/react-hook-form/src/utils/isRegex.ts", "../../../node_modules/react-hook-form/src/logic/getCheckboxValue.ts", "../../../node_modules/react-hook-form/src/logic/getRadioValue.ts", "../../../node_modules/react-hook-form/src/logic/getValidateError.ts", "../../../node_modules/react-hook-form/src/logic/getValueAndMessage.ts", "../../../node_modules/react-hook-form/src/logic/validateField.ts", "../../../node_modules/react-hook-form/src/utils/append.ts", "../../../node_modules/react-hook-form/src/utils/fillEmptyArray.ts", "../../../node_modules/react-hook-form/src/utils/insert.ts", "../../../node_modules/react-hook-form/src/utils/move.ts", "../../../node_modules/react-hook-form/src/utils/prepend.ts", "../../../node_modules/react-hook-form/src/utils/remove.ts", "../../../node_modules/react-hook-form/src/utils/swap.ts", "../../../node_modules/react-hook-form/src/utils/unset.ts", "../../../node_modules/react-hook-form/src/utils/update.ts", "../../../node_modules/react-hook-form/src/useFieldArray.ts", "../../../node_modules/react-hook-form/src/utils/createSubject.ts", "../../../node_modules/react-hook-form/src/utils/isPrimitive.ts", "../../../node_modules/react-hook-form/src/utils/deepEqual.ts", "../../../node_modules/react-hook-form/src/utils/isMultipleSelect.ts", "../../../node_modules/react-hook-form/src/utils/isRadioOrCheckbox.ts", "../../../node_modules/react-hook-form/src/utils/live.ts", "../../../node_modules/react-hook-form/src/utils/objectHasFunction.ts", "../../../node_modules/react-hook-form/src/logic/getDirtyFields.ts", "../../../node_modules/react-hook-form/src/logic/getFieldValueAs.ts", "../../../node_modules/react-hook-form/src/logic/getFieldValue.ts", "../../../node_modules/react-hook-form/src/logic/getResolverOptions.ts", "../../../node_modules/react-hook-form/src/logic/getRuleValue.ts", "../../../node_modules/react-hook-form/src/logic/hasValidation.ts", "../../../node_modules/react-hook-form/src/logic/schemaErrorLookup.ts", "../../../node_modules/react-hook-form/src/logic/skipValidation.ts", "../../../node_modules/react-hook-form/src/logic/unsetEmptyArray.ts", "../../../node_modules/react-hook-form/src/logic/createFormControl.ts", "../../../node_modules/react-hook-form/src/useForm.ts", "../../javascript/app/components/Tabs/Tabs.tsx", "../../javascript/app/hooks/usePermissions.ts", "../../javascript/app/api/appApi.ts", "../../javascript/app/api/baseQuery.ts", "../../javascript/app/api/modules/access/accessTranslator.ts", "../../javascript/app/api/modules/access/accessQueries.ts", "../../javascript/app/api/modules/tickets/ticketsQueries.ts", "../../javascript/app/api/modules/tasks/tasksTranslator.ts", "../../javascript/app/api/modules/tickets/ticketsTranslator.ts", "../../javascript/app/api/modules/meters/metersQueries.ts", "../../javascript/app/api/modules/meters/metersTypes.ts", "../../javascript/app/api/modules/meters/metersTranslator.ts", "../../javascript/app/api/modules/resolutions/resolutionsTranslator.ts", "../../javascript/app/api/modules/resolutions/resolutionsQueries.ts", "../../javascript/app/api/modules/user/userQueries.ts", "../../javascript/app/api/modules/user/userTranslator.ts", "../../javascript/app/api/modules/announcements/announcementsQueries.ts", "../../javascript/app/api/modules/announcements/announcementsTranslator.ts", "../../javascript/app/api/modules/residency/residencyTranslator.ts", "../../javascript/app/api/modules/residency/residencyQueries.ts", "../../javascript/app/api/modules/tenants/tenantsQueries.ts", "../../javascript/app/api/modules/venues/venuesQueries.ts", "../../javascript/app/api/modules/venues/venuesTranslator.ts", "../../javascript/app/api/modules/homeownerAssociations/homeownerAssociationsQueries.ts", "../../javascript/app/api/modules/settlements/settlementsQueries.ts", "../../javascript/app/api/modules/settlements/settlementsTypes.ts", "../../javascript/utils/formatters.ts", "../../javascript/app/api/modules/settlements/settlementsTranslator.ts", "../../javascript/app/api/modules/employees/employeesQueries.ts", "../../javascript/app/api/modules/employees/employeesTranslator.ts", "../../javascript/app/api/modules/tasks/tasksQueries.ts", "../../javascript/app/api/modules/company/companyTranslator.ts", "../../javascript/app/api/modules/company/companyQueries.ts", "../../javascript/app/api/modules/documents/documentsQueries.ts", "../../javascript/app/api/modules/documents/documentsTranslator.ts", "../../javascript/app/api/modules/notifications/notificationsQueries.ts", "../../javascript/app/api/modules/notifications/notificationsTranslator.ts", "../../javascript/utils/accessToken.ts", "../../javascript/app/hooks/useMessages.ts", "../../javascript/app/hooks/reduxHooks.ts", "../../javascript/app/hooks/useFilters.ts", "../../javascript/app/store/appSlice.ts", "../../javascript/app/components/Layout/Layout.tsx", "../../javascript/app/components/Navigation/Sidebar.tsx", "../../javascript/app/components/Navigation/Navigation.tsx", "../../javascript/app/icons/dropdown-arrow-up.svg", "../../javascript/app/icons/dropdown-arrow-down.svg", "../../javascript/app/components/Navigation/UserNavigation/UserNavigation.tsx", "../../javascript/app/components/Navigation/MainNavigation/MainNavigation.tsx", "../../javascript/app/icons/dashboard.svg", "../../javascript/app/components/Navigation/MainNavigation/NavigationItem.tsx", "../../javascript/app/components/Navigation/MainNavigation/NavigationSubItem.tsx", "../../javascript/app/icons/home.svg", "../../javascript/app/icons/meters.svg", "../../javascript/app/icons/tickets.svg", "../../javascript/app/icons/announcements.svg", "../../javascript/app/icons/resolutions.svg", "../../javascript/app/icons/profile.svg", "../../javascript/app/icons/credit-card.svg", "../../javascript/app/icons/clipboard.svg", "../../javascript/app/icons/users.svg", "../../javascript/app/icons/gauge.svg", "../../javascript/app/icons/documents.svg", "../../javascript/app/icons/bell-notification.svg", "../../javascript/app/hooks/useNotifications.ts", "../../javascript/app/hooks/useClickOutside.ts", "../../javascript/app/components/Spinner/Spinner.tsx", "../../javascript/app/icons/spinner.svg", "../../javascript/app/icons/logout.svg", "../../javascript/app/components/Navigation/VersionDisplay.tsx", "../../javascript/app/hooks/useTenantlessMode.ts", "../../javascript/app/hooks/useColorPallete.ts", "../../javascript/app/components/Layout/PageHeader.tsx", "../../javascript/app/components/BackLink/BackLink.tsx", "../../javascript/app/components/Navigation/TopBar/TopBar.tsx", "../../javascript/app/components/Navigation/TopBar/TopBarHeader/TopBarHeader.tsx", "../../javascript/app/icons/burger.svg", "../../javascript/utils/consts.ts", "../../javascript/app/components/FormInputs/inputs/FormInput.tsx", "../../javascript/app/components/FormInputs/InputLabel.tsx", "../../javascript/app/icons/x.svg", "../../javascript/app/icons/eye-open.svg", "../../javascript/app/icons/eye-closed.svg", "../../javascript/app/components/Button/Button.tsx", "../../javascript/app/components/FormInputs/inputs/FormSelect.tsx", "../../javascript/app/components/Dropdown/Dropdown.tsx", "../../javascript/app/components/FormInputs/inputs/FormTextarea.tsx", "../../javascript/app/components/FormInputs/inputs/FormRadioButtons.tsx", "../../javascript/app/components/FormInputs/inputs/FormDatePicker.tsx", "../../javascript/app/components/FormInputs/inputs/FormRangeDatePicker.tsx", "../../javascript/app/components/FormInputs/inputs/FormFileInput.tsx", "../../../node_modules/@hookform/error-message/src/ErrorMessage.tsx", "../../javascript/app/icons/paper-clip.svg", "../../javascript/app/components/FormInputs/inputs/FormCheckboxInput.tsx", "../../javascript/app/components/Tooltip/Tooltip.tsx", "../../javascript/app/components/FormInputs/inputs/FormMultiSelect.tsx", "../../javascript/app/icons/filters.svg", "../../javascript/app/icons/plus.svg", "../../javascript/app/pages/DocumentsPage/EmployeeDocumentsPage/EmployeeDocumentsFilters.tsx", "../../javascript/app/components/Filters/Filters.tsx", "../../javascript/app/components/FilterInput/FilterInput.tsx", "../../javascript/app/components/ContentWrapper/ContentWrapper.tsx", "../../javascript/app/pages/DocumentsPage/EmployeeDocumentsPage/EmployeeDocumentsList.tsx", "../../javascript/app/hooks/usePagination.ts", "../../javascript/app/hooks/useSortParams.ts", "../../javascript/utils/breakpoints.ts", "../../javascript/app/components/Table/PaginationControls.tsx", "../../javascript/app/pages/DocumentsPage/EmployeeDocumentsPage/EmployeeDocumentsTableDesktop.tsx", "../../../node_modules/date-fns/esm/_lib/toInteger/index.js", "../../../node_modules/date-fns/esm/_lib/requiredArgs/index.js", "../../../node_modules/date-fns/esm/toDate/index.js", "../../../node_modules/date-fns/esm/addMilliseconds/index.js", "../../../node_modules/date-fns/esm/_lib/defaultOptions/index.js", "../../../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js", "../../../node_modules/date-fns/esm/closestIndexTo/index.js", "../../../node_modules/date-fns/esm/isDate/index.js", "../../../node_modules/date-fns/esm/isValid/index.js", "../../../node_modules/date-fns/esm/subMilliseconds/index.js", "../../../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js", "../../../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js", "../../../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js", "../../../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js", "../../../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js", "../../../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js", "../../../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js", "../../../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js", "../../../node_modules/date-fns/esm/_lib/getUTCWeek/index.js", "../../../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js", "../../../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js", "../../../node_modules/date-fns/esm/_lib/format/formatters/index.js", "../../../node_modules/date-fns/esm/_lib/format/longFormatters/index.js", "../../../node_modules/date-fns/esm/_lib/protectedTokens/index.js", "../../../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js", "../../../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js", "../../../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js", "../../../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js", "../../../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js", "../../../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js", "../../../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js", "../../../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js", "../../../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js", "../../../node_modules/date-fns/esm/locale/en-US/index.js", "../../../node_modules/date-fns/esm/_lib/defaultLocale/index.js", "../../../node_modules/date-fns/esm/format/index.js", "../../../node_modules/date-fns/esm/isAfter/index.js", "../../../node_modules/date-fns/esm/isBefore/index.js", "../../../node_modules/date-fns/esm/isEqual/index.js", "../../../node_modules/date-fns/esm/isPast/index.js", "../../javascript/app/components/Table/TableActionsBar.tsx", "../../javascript/app/components/Table/Table.tsx", "../../javascript/app/components/Card/Card.tsx", "../../javascript/app/components/Table/SortArrows.tsx", "../../javascript/app/icons/table-arrow-up.svg", "../../javascript/app/icons/table-arrow-down.svg", "../../javascript/app/components/Table/TableBodyPlaceholder.tsx", "../../javascript/app/components/Table/TableContentPlaceholder.tsx", "../../javascript/app/components/Chip/Chip.tsx", "../../javascript/app/api/modules/documents/documentsTypes.ts", "../../javascript/app/pages/DocumentsPage/EmployeeDocumentsPage/DocumentsBulkActions/DocumentBulkActions.tsx", "../../javascript/app/pages/DocumentsPage/EmployeeDocumentsPage/DocumentsBulkActions/DocumentChangeCategoryAction.tsx", "../../javascript/app/icons/category.svg", "../../javascript/app/components/Dialog/Dialog.tsx", "../../javascript/app/components/Popup/Popup.tsx", "../../javascript/app/pages/DocumentsPage/EmployeeDocumentsPage/DocumentsBulkActions/DocumentAssignEmployeeAction.tsx", "../../javascript/app/icons/user.svg", "../../javascript/app/components/FormInputs/FormSearchableDropdown.tsx", "../../javascript/app/pages/DocumentsPage/EmployeeDocumentsPage/DocumentsBulkActions/DocumentChangeStatusAction.tsx", "../../javascript/app/icons/bell.svg", "../../javascript/app/pages/DocumentsPage/EmployeeDocumentsPage/DocumentsBulkActions/DocumentTableCustomisation.tsx", "../../javascript/app/components/TableCustomisationMenu/TableCustomisationMenu.tsx", "../../javascript/app/icons/table-customisation.svg", "../../javascript/app/pages/DocumentsPage/EmployeeDocumentsPage/EmployeeDocumentsTableMobile.tsx", "../../javascript/app/components/Table/ResponsiveTable.tsx", "../../javascript/app/pages/DocumentsPage/TenantDocumentsPage/TenantDocumentsList.tsx", "../../javascript/app/pages/DocumentsPage/TenantDocumentsPage/TenantDocumentsFilters.tsx", "../../javascript/app/pages/DocumentsPage/DocumentPage.tsx", "../../javascript/app/pages/DocumentsPage/EmployeeDocumentPage/MobileDocumentInfoCard.tsx", "../../javascript/app/components/InfoCard/MobileInfoCard/MobileInfoCard.tsx", "../../javascript/app/components/ExpandableCard/ExpandableCard.tsx", "../../javascript/app/pages/DocumentsPage/EmployeeDocumentPage/DocumentInfoCard.tsx", "../../javascript/app/components/SearchableDropdown/SearchableDropdown.tsx", "../../javascript/app/components/FormNotice/FormNotice.tsx", "../../javascript/utils/common.ts", "../../javascript/app/components/AttachmentPreview/AttachmentPreview.tsx", "../../javascript/app/components/AttachmentPreview/AttachmentTypeIcon/AttachmentTypeIcon.tsx", "../../javascript/app/components/PdfPreviewer/PdfPreviewer.tsx", "../../javascript/app/components/AttachmentPreview/PreviewReplacement/PreviewReplacement.tsx", "../../javascript/app/components/CommentsList/CommentsList.tsx", "../../javascript/app/components/CommentsList/CommentForm/CommentForm.tsx", "../../javascript/app/components/AttachmentPreview/FileUploadPreview/FileUploadPreview.tsx", "../../javascript/app/icons/delete.svg", "../../javascript/app/pages/DocumentsPage/EmployeeDocumentPage/DocumentDesktopInfoCard.tsx", "../../javascript/app/components/InfoCard/DesktopInfoCard/DesktopInfoCard.tsx", "../../javascript/app/icons/info.svg", "../../javascript/app/pages/LocalPage/TenantMetersPage/TenantMetersPage.tsx", "../../javascript/app/pages/LocalPage/TenantMetersPage/MetersListPage/MetersList.tsx", "../../javascript/app/pages/LocalPage/TenantMetersPage/MetersListPage/MetersCard/MetersCard.tsx", "../../javascript/app/pages/LocalPage/TenantMetersPage/MetersListPage/MetersUpadatePopup/MetersUpdatePopup.tsx", "../../javascript/utils/calculateReadingChange.ts", "../../javascript/app/pages/LocalPage/MeterTitleLocationContainer/MeterTitleLocationContainer.tsx", "../../javascript/app/pages/LocalPage/MeterReadingInput/MeterReadingInput.tsx", "../../javascript/app/pages/LocalPage/TenantMetersPage/MetersListPage/MetersCard/DisabledCard.tsx", "../../javascript/app/pages/LocalPage/TenantMetersPage/MetersHistoryPage/MetersHistory.tsx", "../../javascript/app/pages/LocalPage/TenantMetersPage/MetersHistoryPage/MetersHistoryCard/MetersHistoryCard.tsx", "../../javascript/app/pages/LocalPage/TenantMetersPage/MetersHistoryPage/MetersHistoryCard/HistoryCardHeader.tsx", "../../javascript/app/pages/LocalPage/TenantMetersPage/MetersHistoryPage/MetersHistoryFilters.tsx", "../../javascript/app/pages/LocalPage/EmployeeMeters/MetersVenuesListPage/MetersVenuesListPage.tsx", "../../javascript/app/pages/LocalPage/EmployeeMeters/MetersVenuesListPage/MetersVenuesList.tsx", "../../javascript/app/hooks/useHomeownerAssociationsMode.ts", "../../javascript/app/pages/LocalPage/EmployeeMeters/MetersVenuesListPage/MetersVenuesFilters.tsx", "../../javascript/app/pages/LocalPage/EmployeeMeters/EmployeeMetersListPage/EmployeeMetersListPage.tsx", "../../javascript/app/pages/LocalPage/EmployeeMeters/EmployeeMetersListPage/EmployeeMetersCard/EmployeeMetersCard.tsx", "../../javascript/app/pages/LocalPage/EmployeeMeters/EmployeeMetersListPage/EmployeeMetersCard/EmployeeDisabledCard.tsx", "../../javascript/app/pages/LocalPage/EmployeeMeters/EmployeeMetersListPage/MeterListInfoCard/MeterListDesktopInfoCard.tsx", "../../javascript/app/pages/LocalPage/EmployeeMeters/EmployeeMetersListPage/MeterListInfoCard/DetailsItemsList.tsx", "../../javascript/app/pages/LocalPage/EmployeeMeters/EmployeeMetersListPage/MeterListInfoCard/DetailItem.tsx", "../../javascript/app/pages/LocalPage/EmployeeMeters/EmployeeMetersListPage/MeterListInfoCard/MeterListMobileInfoCard.tsx", "../../javascript/app/pages/PeopleCountPage/PeopleCountPage.tsx", "../../javascript/app/pages/PeopleCountPage/ResidencyUpdateForm.tsx", "../../javascript/app/pages/PeopleCountPage/ResidencyUpdatesHistory.tsx", "../../javascript/app/pages/PeopleCountPage/UpcomingResidencyUpdate.tsx", "../../javascript/app/pages/ProfilePage/ProfilePage.tsx", "../../javascript/app/pages/ProfilePage/ProfileForm/ProfileForm.tsx", "../../javascript/app/pages/ProfilePage/ProfileForm/ChangeMyPasswordPopUp.tsx", "../../javascript/utils/roleUtils.ts", "../../javascript/app/pages/ProfilePage/ActivityLog/ActivityLog.tsx", "../../javascript/app/pages/ProfilePage/ActivityLog/ActivityLogFilters.tsx", "../../javascript/app/api/modules/user/userTypes.ts", "../../javascript/app/pages/ProfilePage/SettingsForm/SettingsForm.tsx", "../../javascript/app/pages/ProfilePage/NotificationSettingsForm/NotificationSettingsForm.tsx", "../../javascript/app/pages/ProfilePage/NotificationSettingsForm/NotificationSettingsTenantForm.tsx", "../../javascript/app/pages/ProfilePage/NotificationSettingsForm/NotificationSettingsWorkerForm.tsx", "../../javascript/app/pages/TicketsPage/TicketsPage.tsx", "../../javascript/app/pages/TicketsPage/EmployeeTicketsPage.tsx", "../../javascript/app/pages/TicketsPage/TicketsList/EmployeeTicketsList/EmployeeTicketsList.tsx", "../../javascript/app/pages/TicketsPage/TicketsList/EmployeeTicketsList/TicketsTableMobile.tsx", "../../javascript/app/pages/TicketsPage/TicketsList/EmployeeTicketsList/TicketsTableDesktop.tsx", "../../javascript/app/api/modules/tickets/ticketsTypes.ts", "../../javascript/app/pages/TicketsPage/TicketsList/EmployeeTicketsList/TicketsTableCustomisation.tsx", "../../javascript/app/pages/TicketsPage/TicketsList/EmployeeTicketsList/TicketsBulkActions/TicketsBulkActions.tsx", "../../javascript/app/pages/TicketsPage/TicketsList/EmployeeTicketsList/TicketsBulkActions/TicketChangeStatusAction.tsx", "../../javascript/app/pages/TicketsPage/TicketsList/EmployeeTicketsList/TicketsBulkActions/TicketAssignEmployeeAction.tsx", "../../javascript/app/pages/TicketsPage/TicketsList/EmployeeTicketsList/TicketsBulkActions/TicketChangeCategoryAction.tsx", "../../javascript/app/pages/TicketsPage/TicketsFilters/EmployeeTicketsFilters/EmployeeTicketsFilters.tsx", "../../javascript/app/pages/TicketsPage/TenantTicketsPage.tsx", "../../javascript/app/pages/TicketsPage/TicketsFilters/TenantTicketsFilters/TenantTicketsFilters.tsx", "../../javascript/app/pages/TicketsPage/TicketsList/TenantTicketsList/TenantTicketsList.tsx", "../../javascript/app/pages/TicketsPage/TicketPage/TicketPage.tsx", "../../javascript/app/pages/TicketsPage/TicketPage/EmployeeTicketPage/EmployeeTicketPage.tsx", "../../javascript/app/icons/document.svg", "../../javascript/app/pages/TicketsPage/TicketPage/EmployeeTicketPage/TicketInfoCard/TicketDesktopInfoCard.tsx", "../../javascript/app/pages/TicketsPage/TicketPage/EmployeeTicketPage/TicketInfoCard/TicketInfoCard.tsx", "../../javascript/app/hooks/useDocumentTitle.ts", "../../javascript/app/pages/TicketsPage/TicketPage/TenantTicketPage/TenantTicketPage.tsx", "../../javascript/app/pages/FallbackRender/FallbackRender.tsx", "../../javascript/app/pages/TicketsPage/TicketPage/EmployeeTicketPage/TicketInfoCard/TicketMobileInfoCard.tsx", "../../javascript/app/pages/TicketsPage/TicketForm/TicketForm.tsx", "../../javascript/app/pages/TicketsPage/TicketForm/EmployeeTicketForm/EmployeeTicketForm.tsx", "../../javascript/app/pages/TicketsPage/TicketForm/TenantTicketForm/TenantTicketForm.tsx", "../../javascript/app/pages/UsersPermissionsPage/UserPermissionsPage.tsx", "../../javascript/app/components/PermissionTree/PermissionTreeDisplay.tsx", "../../../config/permissions.json", "../../javascript/utils/permissions.ts", "../../javascript/app/hooks/useToggleArray.ts", "../../javascript/app/components/PermissionTree/PermissionEditTree.tsx", "../../javascript/app/pages/RolesPage/RolesPage.tsx", "../../javascript/app/pages/RolesPage/RolesSidebar.tsx", "../../javascript/app/icons/add_new.svg", "../../javascript/app/pages/RolesPage/RoleEditCard/RoleEditCard.tsx", "../../javascript/app/pages/RolesPage/RolePopup/RoleEditPopup.tsx", "../../javascript/app/pages/RolesPage/RolePopup/RoleDeletePopup.tsx", "../../javascript/app/components/FormInputs/ToggleableInput.tsx", "../../javascript/app/icons/edit-pencil.svg", "../../javascript/app/pages/ResolutionsPage/ResolutionsPage.tsx", "../../javascript/app/pages/ResolutionsPage/ResolutionsList/TenantResolutionsList/TenantResolutionsList.tsx", "../../javascript/app/pages/ResolutionsPage/ResolutionItem/ResolutionItem.tsx", "../../javascript/app/components/TypeBadge/TypeBadge.tsx", "../../javascript/app/icons/book-open.svg", "../../javascript/app/icons/outvoted.svg", "../../javascript/app/icons/rejected.svg", "../../javascript/app/pages/ResolutionsPage/ResolutionsFilters/TenantResolutionsFilters/TenantResolutionsFilters.tsx", "../../javascript/app/pages/ResolutionsPage/ResolutionsList/EmployeeResolutionsList/EmployeeResolutionsList.tsx", "../../javascript/app/pages/ResolutionsPage/ResolutionsFilters/EmployeeResolutionsFilters/EmployeeResolutionsFilters.tsx", "../../javascript/app/pages/ResolutionsPage/ResolutionPage/ResolutionPage.tsx", "../../javascript/app/pages/ResolutionsPage/ResolutionPage/TenantResolutionPage/TenantResolutionPage.tsx", "../../javascript/app/icons/location.svg", "../../javascript/app/pages/ResolutionsPage/ResolutionPage/EmployeeResolutionPage/EmployeeResolutionPage.tsx", "../../javascript/app/pages/ResolutionsPage/ResolutionPage/EmployeeResolutionPage/VotingsList.tsx", "../../javascript/app/pages/ResolutionsPage/ResolutionPage/EmployeeResolutionPage/VotingsListFiltersBar.tsx", "../../javascript/app/pages/ResolutionsPage/ResolutionPage/EmployeeResolutionPage/VotingsListFilters.tsx", "../../javascript/app/pages/ResolutionsPage/ResolutionAttachmentPreview/ResolutionAttachmentPreview.tsx", "../../javascript/app/components/AttachmentPreview/DownloadAttachment/DownloadAttachment.tsx", "../../javascript/app/pages/AnnouncementsPage/AnnouncementsPage.tsx", "../../javascript/app/pages/AnnouncementsPage/AnnouncementsFilters/AnnouncementsFilters.tsx", "../../javascript/app/pages/AnnouncementsPage/AnnouncementsList/AnnouncementsList.tsx", "../../javascript/app/icons/archiveBox.svg", "../../javascript/app/pages/AnnouncementsPage/AnnouncementsList/ArchiveAnnouncementPopup.tsx", "../../javascript/app/pages/AnnouncementsPage/AnnouncementPage/AnnouncementPage.tsx", "../../javascript/app/icons/volume.svg", "../../javascript/app/pages/AnnouncementsPage/AnnouncementPage/ReciepientsGroupItem.tsx", "../../javascript/app/components/Pill/Pill.tsx", "../../javascript/app/pages/AnnouncementsPage/AnnouncementForm/AnnouncementForm.tsx", "../../javascript/app/components/FormInputs/inputs/FormSearchableMultiselectDropdown.tsx", "../../javascript/app/pages/AnnouncementsPage/AnnouncementChangePage/AnnouncementChangePage.tsx", "../../javascript/app/pages/AnnouncementsPage/AnnouncementChangePage/AnnouncementChangeForm.tsx", "../../javascript/app/pages/SettlementsPage/SettlementsPage.tsx", "../../javascript/app/pages/SettlementsPage/PaymentsPage/PaymentsPage.tsx", "../../javascript/app/pages/SettlementsPage/PaymentsPage/PaymentsTable/PaymentsTable.tsx", "../../javascript/app/hooks/settlements/useSettlementsTenant.ts", "../../javascript/app/pages/SettlementsPage/PaymentsPage/PaymentInProgressDialog/PaymentInProgressDialog.tsx", "../../javascript/app/icons/payment-success.svg", "../../javascript/app/icons/payment-error.svg", "../../javascript/app/hooks/settlements/useSettlementsVenue.ts", "../../javascript/app/pages/SettlementsPage/YearsBalancePage/YearsBalancePage.tsx", "../../javascript/app/pages/SettlementsPage/YearsBalancePage/YearsBalanceHeader/YearsBalanceHeader.tsx", "../../javascript/app/hooks/settlements/useSettlementsYears.ts", "../../javascript/app/hooks/settlements/useSettlementsTitles.ts", "../../javascript/app/pages/SettlementsPage/YearsBalancePage/YearsBalanceTable/YearsBalanceTable.tsx", "../../javascript/app/pages/SettlementsPage/MonthsBalancePage/MonthsBalancePage.tsx", "../../javascript/app/pages/SettlementsPage/MonthsBalancePage/MonthsBalanceHeader/MonthsBalanceHeader.tsx", "../../javascript/app/pages/SettlementsPage/MonthsBalancePage/MonthsBalanceTable/MonthsBalanceTable.tsx", "../../javascript/app/pages/SettlementsPage/TitleBalancePage/TitleBalancePage.tsx", "../../javascript/app/pages/SettlementsPage/TitleBalancePage/TitleBalanceHeader/TitleBalanceHeader.tsx", "../../javascript/app/pages/SettlementsPage/TitleBalancePage/TitleBalanceTable/DesktopTitleBalanceTable.tsx", "../../javascript/app/pages/SettlementsPage/TitleBalancePage/TitleBalanceTable/ItemsTable.tsx", "../../javascript/app/pages/SettlementsPage/TitleBalancePage/TitleBalanceTable/MobileTitleBalanceTable/MobileTitleBalanceTable.tsx", "../../javascript/app/pages/SettlementsPage/TitleBalancePage/TitleBalanceTable/MobileTitleBalanceTable/MobileDocumentItem.tsx", "../../javascript/app/pages/SettlementsPage/PaymentsHistoryPage/PaymentsHistoryPage.tsx", "../../javascript/app/pages/SettlementsPage/PaymentsHistoryPage/PaymentsHistoryTable.tsx", "../../javascript/app/pages/SettlementsPage/PaymentsHistoryPage/PaymentsHistoryFilters.tsx", "../../javascript/app/pages/TasksPage/TasksPage.tsx", "../../javascript/app/pages/TasksPage/TasksList/TasksList.tsx", "../../javascript/app/pages/TasksPage/TasksList/TasksListDesktop.tsx", "../../javascript/app/api/modules/tasks/tasksTypes.ts", "../../javascript/app/pages/TasksPage/TasksList/TasksBulkActions/TasksBulkActions.tsx", "../../javascript/app/pages/TasksPage/TasksList/TasksBulkActions/TaskAssignEmployeeAction.tsx", "../../javascript/app/pages/TasksPage/TasksList/TasksBulkActions/TaskChangeCategoryAction.tsx", "../../javascript/app/pages/TasksPage/TasksList/TasksBulkActions/TaskChangeStatusAction.tsx", "../../javascript/app/pages/TasksPage/TasksList/TasksTableCustomisation.tsx", "../../javascript/app/pages/TasksPage/TasksList/TasksListMobile.tsx", "../../javascript/app/pages/TasksPage/TasksFilters/TasksFilters.tsx", "../../javascript/app/pages/TasksPage/TaskFormPage/TaskFormPage.tsx", "../../javascript/app/pages/TasksPage/TaskFormPage/NewTaskForm.tsx", "../../javascript/app/pages/TasksPage/TaskPage/TaskPage.tsx", "../../javascript/app/pages/TasksPage/TaskPage/MainTaskCard.tsx", "../../javascript/app/pages/TasksPage/TaskPage/TaskInfoCard/TaskDesktopInfoCard.tsx", "../../javascript/app/pages/TasksPage/TaskPage/TaskInfoCard/TaskInfoCard.tsx", "../../javascript/app/pages/TasksPage/TaskPage/TaskInfoCard/ConnectedTicketSection.tsx", "../../javascript/app/pages/TasksPage/TaskPage/TaskInfoCard/ConnectedDocumentSection.tsx", "../../javascript/app/pages/TasksPage/TaskPage/TaskInfoCard/ConnectedCommissionSection.tsx", "../../javascript/app/pages/TasksPage/TaskPage/TaskInfoCard/PortalProPopup.tsx", "../../javascript/app/pages/TasksPage/TaskPage/TaskInfoCard/TaskMobileInfoCard.tsx", "../../javascript/app/pages/UsersPage/UsersPage.tsx", "../../javascript/app/pages/UsersPage/UsersList/UsersList.tsx", "../../javascript/app/pages/UsersPage/UsersFilters/UsersFilters.tsx", "../../javascript/app/pages/UsersPage/UsersActivityLog/UsersActivityLog.tsx", "../../javascript/app/pages/UsersPage/UsersActivityLog/UsersActivityLogFilters.tsx", "../../javascript/app/pages/UsersPage/NewUserPage/NewUserPage.tsx", "../../javascript/app/pages/UsersPage/NewUserPage/NewUserForm.tsx", "../../javascript/app/pages/ParametersPage/TasksParametersPage/TasksParametersPage.tsx", "../../javascript/app/pages/ParametersPage/ParametersSidebar.tsx", "../../javascript/app/pages/ParametersPage/CategoryTable/CategoriesTable.tsx", "../../javascript/app/pages/ParametersPage/CategoryTable/AddCategoryPopup.tsx", "../../javascript/app/pages/ParametersPage/CategoryTable/ChangeCategoryPopup.tsx", "../../javascript/app/pages/ParametersPage/CategoryTable/DeleteCategoryPopup.tsx", "../../javascript/app/pages/ParametersPage/TicketsParametersPage/TicketsParametersPage.tsx", "../../javascript/app/pages/SettlementsPage/SettlementsVenueListPage/SettlementsVenueListPage.tsx", "../../javascript/app/pages/SettlementsPage/SettlementsVenueListPage/SettlementsVenueList.tsx", "../../javascript/app/pages/SettlementsPage/SettlementsVenueListPage/SettlementsVenueFilters.tsx", "../../javascript/app/pages/UsersPage/UserPage/UserPage.tsx", "../../javascript/app/pages/UsersPage/UserPage/UserForm.tsx", "../../javascript/app/pages/UsersPage/UserPage/ChangeUserPasswordPopUp.tsx", "../../javascript/app/pages/SettingsPage/SettingsPage.tsx", "../../javascript/app/pages/SettingsPage/CompanyDetailsForm.tsx", "../../javascript/app/pages/SettingsPage/CompanyAttachmentInput.tsx", "../../javascript/app/pages/SettingsPage/CompanyTaxDetailsForm.tsx", "../../javascript/app/pages/SettingsPage/MailServerConfig.tsx", "../../javascript/app/pages/SettingsPage/MailServerConfigForm.tsx", "../../javascript/app/api/modules/company/companyTypes.ts", "../../javascript/app/pages/SettingsPage/TestMailServerConfigForm.tsx", "../../javascript/app/pages/SettingsPage/NotificationSettingsAdminForm.tsx", "../../javascript/app/pages/DashboardPage/DashboardPage.tsx", "../../javascript/app/pages/DashboardPage/TenantDashboardPage.tsx", "../../javascript/app/pages/DashboardPage/Widgets/AnnouncementsWidget.tsx", "../../javascript/app/components/Spinner/SpinnerItem.tsx", "../../javascript/app/pages/DashboardPage/Widgets/TicketsWidget.tsx", "../../javascript/app/components/Tabs/WidgetTabs.tsx", "../../javascript/app/pages/DashboardPage/Widgets/SettlementsWidget.tsx", "../../javascript/app/pages/DashboardPage/Widgets/MetersWidget.tsx", "../../javascript/app/pages/DashboardPage/Widgets/ResolutionsWidget.tsx", "../../javascript/app/pages/DashboardPage/WorkerDashboardPage.tsx", "../../javascript/app/pages/DashboardPage/Widgets/TasksWidget.tsx", "../../javascript/app/icons/hourglass.svg", "../../javascript/app/pages/DashboardPage/Widgets/DocumentsWidget.tsx", "../../javascript/app/pages/ParametersPage/StatusesPage/StatusesPage.tsx", "../../javascript/app/pages/ParametersPage/StatusesPage/StatusesList.tsx", "../../javascript/app/pages/ParametersPage/StatusEditPage/StatusEditPage.tsx", "../../javascript/app/pages/ParametersPage/StatusEditPage/StatusForm.tsx", "../../javascript/app/pages/ParametersPage/JournalsPage/JournalsPage.tsx", "../../javascript/app/pages/ParametersPage/JournalEditPage/JournalEditPage.tsx", "../../javascript/app/pages/ParametersPage/JournalFormPage/JournalForm.tsx", "../../javascript/app/pages/ParametersPage/JournalEditPage/RemoveJournalPopUp.tsx", "../../javascript/app/pages/ParametersPage/JournalFormPage/JournalFormPage.tsx", "../../javascript/app/pages/ParametersPage/KsefJournalsPage/KsefJournalsPage.tsx", "../../javascript/app/pages/ParametersPage/KsefJournalEditPage/KsefJournalEditPage.tsx", "../../javascript/app/pages/ParametersPage/KsefJournalEditPage/KsefJournalForm.tsx", "../../javascript/app/pages/DocumentsPage/KsefInvoicesPage/KsefInvoicesPage.tsx", "../../javascript/app/pages/DocumentsPage/KsefInvoicesPage/KsefInvoicesFilters.tsx", "../../javascript/app/pages/DocumentsPage/KsefInvoicesPage/KsefInvoicesList.tsx", "../../javascript/app/pages/DocumentsPage/KsefInvoicesPage/KsefInvoicesTableDesktop.tsx", "../../javascript/app/pages/DocumentsPage/KsefInvoicesPage/KsefInvoicesTableCustomisation.tsx", "../../javascript/app/pages/DocumentsPage/KsefInvoicesPage/KsefInvoicesBulkActions/KsefInvoiceBulkActions.tsx", "../../javascript/app/pages/DocumentsPage/KsefInvoicesPage/KsefInvoicesBulkActions/KsefInvoiceAssignEmployeeAction.tsx", "../../javascript/app/pages/DocumentsPage/KsefInvoicesPage/KsefInvoicesBulkActions/KsefInvoiceChangeStatusAction.tsx", "../../javascript/app/pages/DocumentsPage/KsefInvoicesPage/KsefInvoicesTableMobile.tsx", "../../javascript/app/pages/DocumentsPage/KsefInvoicePage/KsefInvoicePage.tsx", "../../javascript/app/pages/DocumentsPage/KsefInvoicePage/KsefInvoiceDesktopInfoCard.tsx", "../../javascript/app/pages/DocumentsPage/KsefInvoicePage/KsefInvoiceInfoCard.tsx", "../../javascript/app/pages/DocumentsPage/KsefInvoicePage/KsefInvoiceMobileInfoCard.tsx", "../../javascript/app/pages/DocumentsPage/KsefInvoicePage/KsefInvoiceMarkdownField.tsx", "../../javascript/app/components/MarkdownEditor/MarkdownEditor.tsx", "../../../node_modules/@uiw/react-markdown-preview/node_modules/@babel/runtime/helpers/esm/extends.js", "../../../node_modules/@uiw/react-markdown-preview/esm/index.js", "../../../node_modules/unist-util-is/lib/index.js", "../../../node_modules/unist-util-visit-parents/lib/color.js", "../../../node_modules/unist-util-visit-parents/lib/index.js", "../../../node_modules/unist-util-visit/lib/index.js", "../../../node_modules/hast-util-to-string/lib/index.js", "../../../node_modules/unist-util-filter/lib/index.js", "../../../node_modules/refractor/lang/clike.js", "../../../node_modules/refractor/lang/c.js", "../../../node_modules/refractor/lang/cpp.js", "../../../node_modules/refractor/lang/arduino.js", "../../../node_modules/refractor/lang/bash.js", "../../../node_modules/refractor/lang/csharp.js", "../../../node_modules/refractor/lang/markup.js", "../../../node_modules/refractor/lang/css.js", "../../../node_modules/refractor/lang/diff.js", "../../../node_modules/refractor/lang/go.js", "../../../node_modules/refractor/lang/ini.js", "../../../node_modules/refractor/lang/java.js", "../../../node_modules/refractor/lang/regex.js", "../../../node_modules/refractor/lang/javascript.js", "../../../node_modules/refractor/lang/json.js", "../../../node_modules/refractor/lang/kotlin.js", "../../../node_modules/refractor/lang/less.js", "../../../node_modules/refractor/lang/lua.js", "../../../node_modules/refractor/lang/makefile.js", "../../../node_modules/refractor/lang/yaml.js", "../../../node_modules/refractor/lang/markdown.js", "../../../node_modules/refractor/lang/objectivec.js", "../../../node_modules/refractor/lang/perl.js", "../../../node_modules/refractor/lang/markup-templating.js", "../../../node_modules/refractor/lang/php.js", "../../../node_modules/refractor/lang/python.js", "../../../node_modules/refractor/lang/r.js", "../../../node_modules/refractor/lang/ruby.js", "../../../node_modules/refractor/lang/rust.js", "../../../node_modules/refractor/lang/sass.js", "../../../node_modules/refractor/lang/scss.js", "../../../node_modules/refractor/lang/sql.js", "../../../node_modules/refractor/lang/swift.js", "../../../node_modules/refractor/lang/typescript.js", "../../../node_modules/refractor/lang/basic.js", "../../../node_modules/refractor/lang/vbnet.js", "../../../node_modules/property-information/lib/util/schema.js", "../../../node_modules/property-information/lib/util/merge.js", "../../../node_modules/property-information/lib/normalize.js", "../../../node_modules/property-information/lib/util/info.js", "../../../node_modules/property-information/lib/util/types.js", "../../../node_modules/property-information/lib/util/defined-info.js", "../../../node_modules/property-information/lib/util/create.js", "../../../node_modules/property-information/lib/aria.js", "../../../node_modules/property-information/lib/util/case-sensitive-transform.js", "../../../node_modules/property-information/lib/util/case-insensitive-transform.js", "../../../node_modules/property-information/lib/html.js", "../../../node_modules/property-information/lib/svg.js", "../../../node_modules/property-information/lib/xlink.js", "../../../node_modules/property-information/lib/xmlns.js", "../../../node_modules/property-information/lib/xml.js", "../../../node_modules/property-information/lib/hast-to-react.js", "../../../node_modules/property-information/lib/find.js", "../../../node_modules/property-information/index.js", "../../../node_modules/comma-separated-tokens/index.js", "../../../node_modules/hast-util-parse-selector/lib/index.js", "../../../node_modules/space-separated-tokens/index.js", "../../../node_modules/hastscript/lib/create-h.js", "../../../node_modules/hastscript/lib/svg-case-sensitive-tag-names.js", "../../../node_modules/hastscript/lib/index.js", "../../../node_modules/character-entities-legacy/index.js", "../../../node_modules/character-reference-invalid/index.js", "../../../node_modules/is-decimal/index.js", "../../../node_modules/is-hexadecimal/index.js", "../../../node_modules/is-alphabetical/index.js", "../../../node_modules/is-alphanumerical/index.js", "../../../node_modules/decode-named-character-reference/index.dom.js", "../../../node_modules/parse-entities/lib/index.js", "../../../node_modules/refractor/lib/prism-core.js", "../../../node_modules/refractor/lib/core.js", "../../../node_modules/refractor/lib/common.js", "../../../node_modules/refractor/lang/abap.js", "../../../node_modules/refractor/lang/abnf.js", "../../../node_modules/refractor/lang/actionscript.js", "../../../node_modules/refractor/lang/ada.js", "../../../node_modules/refractor/lang/agda.js", "../../../node_modules/refractor/lang/al.js", "../../../node_modules/refractor/lang/antlr4.js", "../../../node_modules/refractor/lang/apacheconf.js", "../../../node_modules/refractor/lang/apex.js", "../../../node_modules/refractor/lang/apl.js", "../../../node_modules/refractor/lang/applescript.js", "../../../node_modules/refractor/lang/aql.js", "../../../node_modules/refractor/lang/arff.js", "../../../node_modules/refractor/lang/armasm.js", "../../../node_modules/refractor/lang/arturo.js", "../../../node_modules/refractor/lang/asciidoc.js", "../../../node_modules/refractor/lang/aspnet.js", "../../../node_modules/refractor/lang/asm6502.js", "../../../node_modules/refractor/lang/asmatmel.js", "../../../node_modules/refractor/lang/autohotkey.js", "../../../node_modules/refractor/lang/autoit.js", "../../../node_modules/refractor/lang/avisynth.js", "../../../node_modules/refractor/lang/avro-idl.js", "../../../node_modules/refractor/lang/awk.js", "../../../node_modules/refractor/lang/batch.js", "../../../node_modules/refractor/lang/bbcode.js", "../../../node_modules/refractor/lang/bbj.js", "../../../node_modules/refractor/lang/bicep.js", "../../../node_modules/refractor/lang/birb.js", "../../../node_modules/refractor/lang/bison.js", "../../../node_modules/refractor/lang/bnf.js", "../../../node_modules/refractor/lang/bqn.js", "../../../node_modules/refractor/lang/brainfuck.js", "../../../node_modules/refractor/lang/brightscript.js", "../../../node_modules/refractor/lang/bro.js", "../../../node_modules/refractor/lang/bsl.js", "../../../node_modules/refractor/lang/cfscript.js", "../../../node_modules/refractor/lang/chaiscript.js", "../../../node_modules/refractor/lang/cil.js", "../../../node_modules/refractor/lang/cilkc.js", "../../../node_modules/refractor/lang/cilkcpp.js", "../../../node_modules/refractor/lang/clojure.js", "../../../node_modules/refractor/lang/cmake.js", "../../../node_modules/refractor/lang/cobol.js", "../../../node_modules/refractor/lang/coffeescript.js", "../../../node_modules/refractor/lang/concurnas.js", "../../../node_modules/refractor/lang/csp.js", "../../../node_modules/refractor/lang/cooklang.js", "../../../node_modules/refractor/lang/coq.js", "../../../node_modules/refractor/lang/crystal.js", "../../../node_modules/refractor/lang/css-extras.js", "../../../node_modules/refractor/lang/csv.js", "../../../node_modules/refractor/lang/cue.js", "../../../node_modules/refractor/lang/cypher.js", "../../../node_modules/refractor/lang/d.js", "../../../node_modules/refractor/lang/dart.js", "../../../node_modules/refractor/lang/dataweave.js", "../../../node_modules/refractor/lang/dax.js", "../../../node_modules/refractor/lang/dhall.js", "../../../node_modules/refractor/lang/django.js", "../../../node_modules/refractor/lang/dns-zone-file.js", "../../../node_modules/refractor/lang/docker.js", "../../../node_modules/refractor/lang/dot.js", "../../../node_modules/refractor/lang/ebnf.js", "../../../node_modules/refractor/lang/editorconfig.js", "../../../node_modules/refractor/lang/eiffel.js", "../../../node_modules/refractor/lang/ejs.js", "../../../node_modules/refractor/lang/elixir.js", "../../../node_modules/refractor/lang/elm.js", "../../../node_modules/refractor/lang/etlua.js", "../../../node_modules/refractor/lang/erb.js", "../../../node_modules/refractor/lang/erlang.js", "../../../node_modules/refractor/lang/excel-formula.js", "../../../node_modules/refractor/lang/fsharp.js", "../../../node_modules/refractor/lang/factor.js", "../../../node_modules/refractor/lang/false.js", "../../../node_modules/refractor/lang/firestore-security-rules.js", "../../../node_modules/refractor/lang/flow.js", "../../../node_modules/refractor/lang/fortran.js", "../../../node_modules/refractor/lang/ftl.js", "../../../node_modules/refractor/lang/gml.js", "../../../node_modules/refractor/lang/gap.js", "../../../node_modules/refractor/lang/gcode.js", "../../../node_modules/refractor/lang/gdscript.js", "../../../node_modules/refractor/lang/gedcom.js", "../../../node_modules/refractor/lang/gettext.js", "../../../node_modules/refractor/lang/gherkin.js", "../../../node_modules/refractor/lang/git.js", "../../../node_modules/refractor/lang/glsl.js", "../../../node_modules/refractor/lang/gn.js", "../../../node_modules/refractor/lang/linker-script.js", "../../../node_modules/refractor/lang/go-module.js", "../../../node_modules/refractor/lang/gradle.js", "../../../node_modules/refractor/lang/graphql.js", "../../../node_modules/refractor/lang/groovy.js", "../../../node_modules/refractor/lang/textile.js", "../../../node_modules/refractor/lang/haml.js", "../../../node_modules/refractor/lang/handlebars.js", "../../../node_modules/refractor/lang/haskell.js", "../../../node_modules/refractor/lang/haxe.js", "../../../node_modules/refractor/lang/hcl.js", "../../../node_modules/refractor/lang/hlsl.js", "../../../node_modules/refractor/lang/hoon.js", "../../../node_modules/refractor/lang/hpkp.js", "../../../node_modules/refractor/lang/hsts.js", "../../../node_modules/refractor/lang/uri.js", "../../../node_modules/refractor/lang/http.js", "../../../node_modules/refractor/lang/ichigojam.js", "../../../node_modules/refractor/lang/icon.js", "../../../node_modules/refractor/lang/icu-message-format.js", "../../../node_modules/refractor/lang/idris.js", "../../../node_modules/refractor/lang/ignore.js", "../../../node_modules/refractor/lang/inform7.js", "../../../node_modules/refractor/lang/io.js", "../../../node_modules/refractor/lang/j.js", "../../../node_modules/refractor/lang/javadoclike.js", "../../../node_modules/refractor/lang/scala.js", "../../../node_modules/refractor/lang/javadoc.js", "../../../node_modules/refractor/lang/javastacktrace.js", "../../../node_modules/refractor/lang/jexl.js", "../../../node_modules/refractor/lang/jolie.js", "../../../node_modules/refractor/lang/jq.js", "../../../node_modules/refractor/lang/js-templates.js", "../../../node_modules/refractor/lang/jsdoc.js", "../../../node_modules/refractor/lang/n4js.js", "../../../node_modules/refractor/lang/js-extras.js", "../../../node_modules/refractor/lang/json5.js", "../../../node_modules/refractor/lang/jsonp.js", "../../../node_modules/refractor/lang/jsstacktrace.js", "../../../node_modules/refractor/lang/julia.js", "../../../node_modules/refractor/lang/keepalived.js", "../../../node_modules/refractor/lang/keyman.js", "../../../node_modules/refractor/lang/kumir.js", "../../../node_modules/refractor/lang/kusto.js", "../../../node_modules/refractor/lang/latex.js", "../../../node_modules/refractor/lang/latte.js", "../../../node_modules/refractor/lang/scheme.js", "../../../node_modules/refractor/lang/lilypond.js", "../../../node_modules/refractor/lang/liquid.js", "../../../node_modules/refractor/lang/lisp.js", "../../../node_modules/refractor/lang/livescript.js", "../../../node_modules/refractor/lang/llvm.js", "../../../node_modules/refractor/lang/log.js", "../../../node_modules/refractor/lang/lolcode.js", "../../../node_modules/refractor/lang/magma.js", "../../../node_modules/refractor/lang/mata.js", "../../../node_modules/refractor/lang/matlab.js", "../../../node_modules/refractor/lang/maxscript.js", "../../../node_modules/refractor/lang/mel.js", "../../../node_modules/refractor/lang/mermaid.js", "../../../node_modules/refractor/lang/metafont.js", "../../../node_modules/refractor/lang/mizar.js", "../../../node_modules/refractor/lang/mongodb.js", "../../../node_modules/refractor/lang/monkey.js", "../../../node_modules/refractor/lang/moonscript.js", "../../../node_modules/refractor/lang/n1ql.js", "../../../node_modules/refractor/lang/nand2tetris-hdl.js", "../../../node_modules/refractor/lang/naniscript.js", "../../../node_modules/refractor/lang/nasm.js", "../../../node_modules/refractor/lang/neon.js", "../../../node_modules/refractor/lang/nevod.js", "../../../node_modules/refractor/lang/nginx.js", "../../../node_modules/refractor/lang/nim.js", "../../../node_modules/refractor/lang/nix.js", "../../../node_modules/refractor/lang/nsis.js", "../../../node_modules/refractor/lang/ocaml.js", "../../../node_modules/refractor/lang/odin.js", "../../../node_modules/refractor/lang/opencl.js", "../../../node_modules/refractor/lang/openqasm.js", "../../../node_modules/refractor/lang/oz.js", "../../../node_modules/refractor/lang/parigp.js", "../../../node_modules/refractor/lang/parser.js", "../../../node_modules/refractor/lang/pascal.js", "../../../node_modules/refractor/lang/pascaligo.js", "../../../node_modules/refractor/lang/psl.js", "../../../node_modules/refractor/lang/pcaxis.js", "../../../node_modules/refractor/lang/peoplecode.js", "../../../node_modules/refractor/lang/phpdoc.js", "../../../node_modules/refractor/lang/php-extras.js", "../../../node_modules/refractor/lang/plant-uml.js", "../../../node_modules/refractor/lang/plsql.js", "../../../node_modules/refractor/lang/powerquery.js", "../../../node_modules/refractor/lang/powershell.js", "../../../node_modules/refractor/lang/processing.js", "../../../node_modules/refractor/lang/prolog.js", "../../../node_modules/refractor/lang/promql.js", "../../../node_modules/refractor/lang/properties.js", "../../../node_modules/refractor/lang/protobuf.js", "../../../node_modules/refractor/lang/stylus.js", "../../../node_modules/refractor/lang/twig.js", "../../../node_modules/refractor/lang/pug.js", "../../../node_modules/refractor/lang/puppet.js", "../../../node_modules/refractor/lang/pure.js", "../../../node_modules/refractor/lang/purebasic.js", "../../../node_modules/refractor/lang/purescript.js", "../../../node_modules/refractor/lang/qsharp.js", "../../../node_modules/refractor/lang/q.js", "../../../node_modules/refractor/lang/qml.js", "../../../node_modules/refractor/lang/qore.js", "../../../node_modules/refractor/lang/racket.js", "../../../node_modules/refractor/lang/cshtml.js", "../../../node_modules/refractor/lang/jsx.js", "../../../node_modules/refractor/lang/tsx.js", "../../../node_modules/refractor/lang/reason.js", "../../../node_modules/refractor/lang/rego.js", "../../../node_modules/refractor/lang/renpy.js", "../../../node_modules/refractor/lang/rescript.js", "../../../node_modules/refractor/lang/rest.js", "../../../node_modules/refractor/lang/rip.js", "../../../node_modules/refractor/lang/roboconf.js", "../../../node_modules/refractor/lang/robotframework.js", "../../../node_modules/refractor/lang/sas.js", "../../../node_modules/refractor/lang/shell-session.js", "../../../node_modules/refractor/lang/smali.js", "../../../node_modules/refractor/lang/smalltalk.js", "../../../node_modules/refractor/lang/smarty.js", "../../../node_modules/refractor/lang/sml.js", "../../../node_modules/refractor/lang/solidity.js", "../../../node_modules/refractor/lang/solution-file.js", "../../../node_modules/refractor/lang/soy.js", "../../../node_modules/refractor/lang/turtle.js", "../../../node_modules/refractor/lang/sparql.js", "../../../node_modules/refractor/lang/splunk-spl.js", "../../../node_modules/refractor/lang/sqf.js", "../../../node_modules/refractor/lang/squirrel.js", "../../../node_modules/refractor/lang/stan.js", "../../../node_modules/refractor/lang/stata.js", "../../../node_modules/refractor/lang/iecst.js", "../../../node_modules/refractor/lang/supercollider.js", "../../../node_modules/refractor/lang/systemd.js", "../../../node_modules/refractor/lang/t4-templating.js", "../../../node_modules/refractor/lang/t4-cs.js", "../../../node_modules/refractor/lang/t4-vb.js", "../../../node_modules/refractor/lang/tap.js", "../../../node_modules/refractor/lang/tcl.js", "../../../node_modules/refractor/lang/tt2.js", "../../../node_modules/refractor/lang/toml.js", "../../../node_modules/refractor/lang/tremor.js", "../../../node_modules/refractor/lang/typoscript.js", "../../../node_modules/refractor/lang/unrealscript.js", "../../../node_modules/refractor/lang/uorazor.js", "../../../node_modules/refractor/lang/v.js", "../../../node_modules/refractor/lang/vala.js", "../../../node_modules/refractor/lang/velocity.js", "../../../node_modules/refractor/lang/verilog.js", "../../../node_modules/refractor/lang/vhdl.js", "../../../node_modules/refractor/lang/vim.js", "../../../node_modules/refractor/lang/visual-basic.js", "../../../node_modules/refractor/lang/warpscript.js", "../../../node_modules/refractor/lang/wasm.js", "../../../node_modules/refractor/lang/web-idl.js", "../../../node_modules/refractor/lang/wgsl.js", "../../../node_modules/refractor/lang/wiki.js", "../../../node_modules/refractor/lang/wolfram.js", "../../../node_modules/refractor/lang/wren.js", "../../../node_modules/refractor/lang/xeora.js", "../../../node_modules/refractor/lang/xml-doc.js", "../../../node_modules/refractor/lang/xojo.js", "../../../node_modules/refractor/lang/xquery.js", "../../../node_modules/refractor/lang/yang.js", "../../../node_modules/refractor/lang/zig.js", "../../../node_modules/refractor/lib/all.js", "../../../node_modules/rehype-prism-plus/src/generator.js", "../../../node_modules/rehype-prism-plus/src/common.js", "../../../node_modules/rehype-prism-plus/src/all.js", "../../../node_modules/css-selector-parser/dist/mjs/indexes.js", "../../../node_modules/css-selector-parser/dist/mjs/pseudo-signatures.js", "../../../node_modules/css-selector-parser/dist/mjs/syntax-definitions.js", "../../../node_modules/css-selector-parser/dist/mjs/utils.js", "../../../node_modules/css-selector-parser/dist/mjs/parser.js", "../../../node_modules/css-selector-parser/dist/mjs/ast.js", "../../../node_modules/hast-util-select/lib/parse.js", "../../../node_modules/direction/index.js", "../../../node_modules/hast-util-select/lib/enter-state.js", "../../../node_modules/devlop/lib/default.js", "../../../node_modules/hast-util-select/lib/attribute.js", "../../../node_modules/hast-util-select/lib/class-name.js", "../../../node_modules/hast-util-select/lib/id.js", "../../../node_modules/hast-util-select/lib/name.js", "../../../node_modules/bcp-47-match/index.js", "../../../node_modules/hast-util-has-property/lib/index.js", "../../../node_modules/hast-util-whitespace/lib/index.js", "../../../node_modules/nth-check/lib/esm/parse.ts", "../../../node_modules/nth-check/lib/esm/compile.ts", "../../../node_modules/nth-check/lib/esm/index.ts", "../../../node_modules/zwitch/index.js", "../../../node_modules/hast-util-select/lib/pseudo.js", "../../../node_modules/hast-util-select/lib/test.js", "../../../node_modules/hast-util-select/lib/walk.js", "../../../node_modules/hast-util-select/lib/index.js", "../../../node_modules/rehype-rewrite/src/index.ts", "../../../node_modules/rehype-attr/node_modules/unist-util-visit/lib/index.js", "../../../node_modules/rehype-attr/src/utils.ts", "../../../node_modules/rehype-attr/src/index.ts", "../../../node_modules/@ungap/structured-clone/esm/types.js", "../../../node_modules/@ungap/structured-clone/esm/deserialize.js", "../../../node_modules/@ungap/structured-clone/esm/serialize.js", "../../../node_modules/@ungap/structured-clone/esm/index.js", "../../../node_modules/vfile-location/lib/index.js", "../../../node_modules/web-namespaces/index.js", "../../../node_modules/hast-util-from-parse5/lib/index.js", "../../../node_modules/hast-util-to-parse5/lib/index.js", "../../../node_modules/html-void-elements/index.js", "../../../node_modules/parse5/dist/common/unicode.js", "../../../node_modules/parse5/dist/common/error-codes.js", "../../../node_modules/parse5/dist/tokenizer/preprocessor.js", "../../../node_modules/parse5/dist/common/token.js", "../../../node_modules/entities/lib/esm/generated/generated/decode-data-html.ts", "../../../node_modules/entities/lib/esm/generated/generated/decode-data-xml.ts", "../../../node_modules/entities/lib/esm/decode_codepoint.ts", "../../../node_modules/entities/lib/esm/decode.ts", "../../../node_modules/parse5/dist/common/html.js", "../../../node_modules/parse5/dist/tokenizer/index.js", "../../../node_modules/parse5/dist/parser/open-element-stack.js", "../../../node_modules/parse5/dist/parser/formatting-element-list.js", "../../../node_modules/parse5/dist/tree-adapters/default.js", "../../../node_modules/parse5/dist/common/doctype.js", "../../../node_modules/parse5/dist/common/foreign-content.js", "../../../node_modules/parse5/dist/parser/index.js", "../../../node_modules/entities/lib/esm/escape.ts", "../../../node_modules/parse5/dist/serializer/index.js", "../../../node_modules/parse5/dist/index.js", "../../../node_modules/unist-util-position/lib/index.js", "../../../node_modules/hast-util-raw/lib/index.js", "../../../node_modules/rehype-raw/lib/index.js", "../../../node_modules/@uiw/react-markdown-preview/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js", "../../../node_modules/@uiw/react-markdown-preview/esm/preview.js", "../../../node_modules/estree-util-is-identifier-name/lib/index.js", "../../../node_modules/hast-util-to-jsx-runtime/lib/index.js", "../../../node_modules/unist-util-stringify-position/lib/index.js", "../../../node_modules/vfile-message/lib/index.js", "../../../node_modules/html-url-attributes/lib/index.js", "../../../node_modules/react-markdown/lib/index.js", "../../../node_modules/mdast-util-to-string/lib/index.js", "../../../node_modules/micromark-util-chunked/index.js", "../../../node_modules/micromark-util-combine-extensions/index.js", "../../../node_modules/micromark-util-decode-numeric-character-reference/index.js", "../../../node_modules/micromark-util-normalize-identifier/index.js", "../../../node_modules/micromark-util-character/index.js", "../../../node_modules/micromark-util-sanitize-uri/index.js", "../../../node_modules/micromark-factory-space/index.js", "../../../node_modules/micromark/lib/initialize/content.js", "../../../node_modules/micromark-util-edit-map/index.js", "../../../node_modules/micromark/lib/initialize/document.js", "../../../node_modules/micromark-util-classify-character/index.js", "../../../node_modules/micromark-util-resolve-all/index.js", "../../../node_modules/micromark-core-commonmark/lib/attention.js", "../../../node_modules/micromark-core-commonmark/lib/autolink.js", "../../../node_modules/micromark-core-commonmark/lib/blank-line.js", "../../../node_modules/micromark-core-commonmark/lib/block-quote.js", "../../../node_modules/micromark-core-commonmark/lib/character-escape.js", "../../../node_modules/micromark-core-commonmark/lib/character-reference.js", "../../../node_modules/micromark-core-commonmark/lib/partial-non-lazy-continuation.js", "../../../node_modules/micromark-core-commonmark/lib/code-fenced.js", "../../../node_modules/micromark-core-commonmark/lib/code-indented.js", "../../../node_modules/micromark-core-commonmark/lib/code-text.js", "../../../node_modules/micromark-util-subtokenize/lib/splice-buffer.js", "../../../node_modules/micromark-util-subtokenize/index.js", "../../../node_modules/micromark-core-commonmark/lib/content.js", "../../../node_modules/micromark-factory-destination/index.js", "../../../node_modules/micromark-factory-label/index.js", "../../../node_modules/micromark-factory-title/index.js", "../../../node_modules/micromark-factory-whitespace/index.js", "../../../node_modules/micromark-core-commonmark/lib/definition.js", "../../../node_modules/micromark-core-commonmark/lib/hard-break-escape.js", "../../../node_modules/micromark-core-commonmark/lib/heading-atx.js", "../../../node_modules/micromark-util-html-tag-name/index.js", "../../../node_modules/micromark-core-commonmark/lib/html-flow.js", "../../../node_modules/micromark-core-commonmark/lib/html-text.js", "../../../node_modules/micromark-core-commonmark/lib/label-end.js", "../../../node_modules/micromark-core-commonmark/lib/label-start-image.js", "../../../node_modules/micromark-core-commonmark/lib/label-start-link.js", "../../../node_modules/micromark-core-commonmark/lib/line-ending.js", "../../../node_modules/micromark-core-commonmark/lib/thematic-break.js", "../../../node_modules/micromark-core-commonmark/lib/list.js", "../../../node_modules/micromark-core-commonmark/lib/setext-underline.js", "../../../node_modules/micromark/lib/initialize/flow.js", "../../../node_modules/micromark/lib/initialize/text.js", "../../../node_modules/micromark/lib/constructs.js", "../../../node_modules/micromark/lib/create-tokenizer.js", "../../../node_modules/micromark/lib/parse.js", "../../../node_modules/micromark/lib/postprocess.js", "../../../node_modules/micromark/lib/preprocess.js", "../../../node_modules/micromark-util-decode-string/index.js", "../../../node_modules/mdast-util-from-markdown/lib/index.js", "../../../node_modules/remark-parse/lib/index.js", "../../../node_modules/mdast-util-to-hast/lib/handlers/blockquote.js", "../../../node_modules/mdast-util-to-hast/lib/handlers/break.js", "../../../node_modules/mdast-util-to-hast/lib/handlers/code.js", "../../../node_modules/mdast-util-to-hast/lib/handlers/delete.js", "../../../node_modules/mdast-util-to-hast/lib/handlers/emphasis.js", "../../../node_modules/mdast-util-to-hast/lib/handlers/footnote-reference.js", "../../../node_modules/mdast-util-to-hast/lib/handlers/heading.js", "../../../node_modules/mdast-util-to-hast/lib/handlers/html.js", "../../../node_modules/mdast-util-to-hast/lib/revert.js", "../../../node_modules/mdast-util-to-hast/lib/handlers/image-reference.js", "../../../node_modules/mdast-util-to-hast/lib/handlers/image.js", "../../../node_modules/mdast-util-to-hast/lib/handlers/inline-code.js", "../../../node_modules/mdast-util-to-hast/lib/handlers/link-reference.js", "../../../node_modules/mdast-util-to-hast/lib/handlers/link.js", "../../../node_modules/mdast-util-to-hast/lib/handlers/list-item.js", "../../../node_modules/mdast-util-to-hast/lib/handlers/list.js", "../../../node_modules/mdast-util-to-hast/lib/handlers/paragraph.js", "../../../node_modules/mdast-util-to-hast/lib/handlers/root.js", "../../../node_modules/mdast-util-to-hast/lib/handlers/strong.js", "../../../node_modules/mdast-util-to-hast/lib/handlers/table.js", "../../../node_modules/mdast-util-to-hast/lib/handlers/table-row.js", "../../../node_modules/mdast-util-to-hast/lib/handlers/table-cell.js", "../../../node_modules/trim-lines/index.js", "../../../node_modules/mdast-util-to-hast/lib/handlers/text.js", "../../../node_modules/mdast-util-to-hast/lib/handlers/thematic-break.js", "../../../node_modules/mdast-util-to-hast/lib/handlers/index.js", "../../../node_modules/mdast-util-to-hast/lib/footer.js", "../../../node_modules/mdast-util-to-hast/lib/state.js", "../../../node_modules/mdast-util-to-hast/lib/index.js", "../../../node_modules/remark-rehype/lib/index.js", "../../../node_modules/bail/index.js", "../../../node_modules/unified/lib/index.js", "../../../node_modules/is-plain-obj/index.js", "../../../node_modules/trough/lib/index.js", "../../../node_modules/vfile/lib/minpath.browser.js", "../../../node_modules/vfile/lib/minproc.browser.js", "../../../node_modules/vfile/lib/minurl.shared.js", "../../../node_modules/vfile/lib/minurl.browser.js", "../../../node_modules/vfile/lib/index.js", "../../../node_modules/unified/lib/callable-instance.js", "../../../node_modules/ccount/index.js", "../../../node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp/index.js", "../../../node_modules/mdast-util-find-and-replace/lib/index.js", "../../../node_modules/mdast-util-gfm-autolink-literal/lib/index.js", "../../../node_modules/mdast-util-gfm-footnote/lib/index.js", "../../../node_modules/mdast-util-gfm-strikethrough/lib/index.js", "../../../node_modules/markdown-table/index.js", "../../../node_modules/mdast-util-phrasing/lib/index.js", "../../../node_modules/mdast-util-to-markdown/lib/handle/blockquote.js", "../../../node_modules/mdast-util-to-markdown/lib/util/pattern-in-scope.js", "../../../node_modules/mdast-util-to-markdown/lib/handle/break.js", "../../../node_modules/longest-streak/index.js", "../../../node_modules/mdast-util-to-markdown/lib/util/format-code-as-indented.js", "../../../node_modules/mdast-util-to-markdown/lib/util/check-fence.js", "../../../node_modules/mdast-util-to-markdown/lib/handle/code.js", "../../../node_modules/mdast-util-to-markdown/lib/util/check-quote.js", "../../../node_modules/mdast-util-to-markdown/lib/handle/definition.js", "../../../node_modules/mdast-util-to-markdown/lib/util/check-emphasis.js", "../../../node_modules/mdast-util-to-markdown/lib/handle/emphasis.js", "../../../node_modules/mdast-util-to-markdown/lib/util/encode-character-reference.js", "../../../node_modules/mdast-util-to-markdown/lib/util/format-heading-as-setext.js", "../../../node_modules/mdast-util-to-markdown/lib/handle/heading.js", "../../../node_modules/mdast-util-to-markdown/lib/handle/html.js", "../../../node_modules/mdast-util-to-markdown/lib/handle/image.js", "../../../node_modules/mdast-util-to-markdown/lib/handle/image-reference.js", "../../../node_modules/mdast-util-to-markdown/lib/handle/inline-code.js", "../../../node_modules/mdast-util-to-markdown/lib/util/format-link-as-autolink.js", "../../../node_modules/mdast-util-to-markdown/lib/handle/link.js", "../../../node_modules/mdast-util-to-markdown/lib/handle/link-reference.js", "../../../node_modules/mdast-util-to-markdown/lib/util/check-bullet.js", "../../../node_modules/mdast-util-to-markdown/lib/util/check-bullet-other.js", "../../../node_modules/mdast-util-to-markdown/lib/util/check-bullet-ordered.js", "../../../node_modules/mdast-util-to-markdown/lib/util/check-rule.js", "../../../node_modules/mdast-util-to-markdown/lib/handle/list.js", "../../../node_modules/mdast-util-to-markdown/lib/util/check-list-item-indent.js", "../../../node_modules/mdast-util-to-markdown/lib/handle/list-item.js", "../../../node_modules/mdast-util-to-markdown/lib/handle/paragraph.js", "../../../node_modules/mdast-util-to-markdown/lib/handle/root.js", "../../../node_modules/mdast-util-to-markdown/lib/util/check-strong.js", "../../../node_modules/mdast-util-to-markdown/lib/handle/strong.js", "../../../node_modules/mdast-util-to-markdown/lib/handle/text.js", "../../../node_modules/mdast-util-to-markdown/lib/util/check-rule-repetition.js", "../../../node_modules/mdast-util-to-markdown/lib/handle/thematic-break.js", "../../../node_modules/mdast-util-to-markdown/lib/handle/index.js", "../../../node_modules/mdast-util-gfm-table/lib/index.js", "../../../node_modules/mdast-util-gfm-task-list-item/lib/index.js", "../../../node_modules/mdast-util-gfm/lib/index.js", "../../../node_modules/micromark-extension-gfm-autolink-literal/lib/syntax.js", "../../../node_modules/micromark-extension-gfm-footnote/lib/syntax.js", "../../../node_modules/micromark-extension-gfm-strikethrough/lib/syntax.js", "../../../node_modules/micromark-extension-gfm-table/lib/edit-map.js", "../../../node_modules/micromark-extension-gfm-table/lib/infer.js", "../../../node_modules/micromark-extension-gfm-table/lib/syntax.js", "../../../node_modules/micromark-extension-gfm-task-list-item/lib/syntax.js", "../../../node_modules/micromark-extension-gfm/index.js", "../../../node_modules/remark-gfm/lib/index.js", "../../../node_modules/remark-github-blockquote-alert/src/index.ts", "../../../node_modules/@uiw/react-markdown-preview/esm/plugins/useCopied.js", "../../../node_modules/@uiw/react-markdown-preview/esm/plugins/reservedMeta.js", "../../../node_modules/@uiw/react-markdown-preview/esm/plugins/retrieveMeta.js", "../../../node_modules/github-slugger/regex.js", "../../../node_modules/github-slugger/index.js", "../../../node_modules/hast-util-heading-rank/lib/index.js", "../../../node_modules/rehype-slug/lib/index.js", "../../../node_modules/hast-util-is-element/lib/index.js", "../../../node_modules/rehype-autolink-headings/lib/index.js", "../../../node_modules/rehype-ignore/src/index.ts", "../../../node_modules/@uiw/react-markdown-preview/esm/nodes/octiconLink.js", "../../../node_modules/@uiw/react-markdown-preview/esm/nodes/copy.js", "../../../node_modules/@uiw/react-markdown-preview/esm/rehypePlugins.js", "../../../node_modules/@uiw/react-md-editor/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteralLoose.js", "../../../node_modules/@uiw/react-md-editor/esm/components/TextArea/Markdown.js", "../../../node_modules/hast-util-from-html/lib/errors.js", "../../../node_modules/hast-util-from-html/lib/index.js", "../../../node_modules/rehype-parse/lib/index.js", "../../../node_modules/stringify-entities/lib/core.js", "../../../node_modules/stringify-entities/lib/util/to-hexadecimal.js", "../../../node_modules/stringify-entities/lib/util/to-decimal.js", "../../../node_modules/character-entities-html4/index.js", "../../../node_modules/stringify-entities/lib/constant/dangerous.js", "../../../node_modules/stringify-entities/lib/util/to-named.js", "../../../node_modules/stringify-entities/lib/util/format-smart.js", "../../../node_modules/stringify-entities/lib/index.js", "../../../node_modules/hast-util-to-html/lib/handle/comment.js", "../../../node_modules/hast-util-to-html/lib/handle/doctype.js", "../../../node_modules/hast-util-to-html/lib/omission/util/siblings.js", "../../../node_modules/hast-util-to-html/lib/omission/omission.js", "../../../node_modules/hast-util-to-html/lib/omission/closing.js", "../../../node_modules/hast-util-to-html/lib/omission/opening.js", "../../../node_modules/hast-util-to-html/lib/handle/element.js", "../../../node_modules/hast-util-to-html/lib/handle/text.js", "../../../node_modules/hast-util-to-html/lib/handle/raw.js", "../../../node_modules/hast-util-to-html/lib/handle/root.js", "../../../node_modules/hast-util-to-html/lib/handle/index.js", "../../../node_modules/hast-util-to-html/lib/index.js", "../../../node_modules/rehype-stringify/lib/index.js", "../../../node_modules/rehype/index.js", "../../../node_modules/@uiw/react-md-editor/node_modules/@babel/runtime/helpers/esm/extends.js", "../../../node_modules/@uiw/react-md-editor/esm/Context.js", "../../../node_modules/@uiw/react-md-editor/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js", "../../../node_modules/@uiw/react-md-editor/esm/components/TextArea/factory.js", "../../../node_modules/@uiw/react-md-editor/esm/components/TextArea/shortcuts.js", "../../../node_modules/@uiw/react-md-editor/esm/components/TextArea/Textarea.js", "../../../node_modules/@uiw/react-md-editor/esm/utils/InsertTextAtPosition.js", "../../../node_modules/@uiw/react-md-editor/esm/commands/bold.js", "../../../node_modules/@uiw/react-md-editor/esm/utils/markdownUtils.js", "../../../node_modules/@uiw/react-md-editor/esm/commands/code.js", "../../../node_modules/@uiw/react-md-editor/esm/commands/comment.js", "../../../node_modules/@uiw/react-md-editor/esm/commands/divider.js", "../../../node_modules/@uiw/react-md-editor/esm/commands/fullscreen.js", "../../../node_modules/@uiw/react-md-editor/node_modules/@babel/runtime/helpers/esm/objectDestructuringEmpty.js", "../../../node_modules/@uiw/react-md-editor/esm/commands/group.js", "../../../node_modules/@uiw/react-md-editor/esm/commands/hr.js", "../../../node_modules/@uiw/react-md-editor/esm/commands/image.js", "../../../node_modules/@uiw/react-md-editor/esm/commands/italic.js", "../../../node_modules/@uiw/react-md-editor/esm/commands/link.js", "../../../node_modules/@uiw/react-md-editor/esm/commands/list.js", "../../../node_modules/@uiw/react-md-editor/esm/commands/preview.js", "../../../node_modules/@uiw/react-md-editor/esm/commands/quote.js", "../../../node_modules/@uiw/react-md-editor/esm/commands/strikeThrough.js", "../../../node_modules/@uiw/react-md-editor/esm/commands/title.js", "../../../node_modules/@uiw/react-md-editor/esm/commands/title1.js", "../../../node_modules/@uiw/react-md-editor/esm/commands/title2.js", "../../../node_modules/@uiw/react-md-editor/esm/commands/title3.js", "../../../node_modules/@uiw/react-md-editor/esm/commands/title4.js", "../../../node_modules/@uiw/react-md-editor/esm/commands/title5.js", "../../../node_modules/@uiw/react-md-editor/esm/commands/title6.js", "../../../node_modules/@uiw/react-md-editor/esm/commands/table.js", "../../../node_modules/@uiw/react-md-editor/esm/commands/issue.js", "../../../node_modules/@uiw/react-md-editor/esm/commands/help.js", "../../../node_modules/@uiw/react-md-editor/esm/commands/index.js", "../../../node_modules/@uiw/react-md-editor/esm/components/TextArea/handleKeyDown.js", "../../../node_modules/@uiw/react-md-editor/esm/components/TextArea/index.js", "../../../node_modules/@uiw/react-md-editor/esm/Editor.factory.js", "../../../node_modules/@uiw/react-md-editor/esm/components/Toolbar/index.js", "../../../node_modules/@uiw/react-md-editor/esm/components/Toolbar/Child.js", "../../../node_modules/@uiw/react-md-editor/esm/components/DragBar/index.js", "../../../node_modules/@uiw/react-md-editor/esm/Editor.js", "../../../node_modules/@uiw/react-md-editor/esm/index.js", "../../../node_modules/hast-util-sanitize/lib/schema.js", "../../../node_modules/hast-util-sanitize/lib/index.js", "../../../node_modules/rehype-sanitize/lib/index.js", "../../javascript/app/pages/DocumentsPage/DocumentForm/DocumentFormPage.tsx", "../../javascript/app/pages/DocumentsPage/DocumentForm/DocumentForm.tsx", "../../javascript/app/pages/ParametersPage/DocumentsParametersPage/DocumentsParametersPage.tsx", "../../javascript/app/pages/PasswordChangeRequiredPage/PasswordChangeRequiredPage.tsx", "../../javascript/app/pages/NotificationsPage/NotificationsPage.tsx", "../../javascript/app/pages/NotificationsPage/NotificationsList/NotificationsList.tsx", "../../javascript/app/pages/NotificationsPage/NotificationsList/NotificationsTableDesktop.tsx", "../../javascript/app/pages/NotificationsPage/NotificationsList/NotificationsTableMobile.tsx", "../../javascript/app/languages/pl.ts", "../../javascript/app/store/store.ts", "../../javascript/app/store/errorHandlingMiddleware.tsx", "../../../node_modules/@rails/request.js/src/fetch_response.js", "../../../node_modules/@rails/request.js/src/request_interceptor.js", "../../../node_modules/@rails/request.js/src/lib/utils.js", "../../../node_modules/@rails/request.js/src/fetch_request.js", "../../javascript/utils/loginForm.ts", "../../javascript/application.ts"],
  "sourcesContent": ["/**\n * @license React\n * react.development.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\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n\n          'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n    'function'\n) {\n  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n          var ReactVersion = '18.2.0';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n  if (maybeIterable === null || typeof maybeIterable !== 'object') {\n    return null;\n  }\n\n  var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n  if (typeof maybeIterator === 'function') {\n    return maybeIterator;\n  }\n\n  return null;\n}\n\n/**\n * Keeps track of the current dispatcher.\n */\nvar ReactCurrentDispatcher = {\n  /**\n   * @internal\n   * @type {ReactComponent}\n   */\n  current: null\n};\n\n/**\n * Keeps track of the current batch's configuration such as how long an update\n * should suspend for if it needs to.\n */\nvar ReactCurrentBatchConfig = {\n  transition: null\n};\n\nvar ReactCurrentActQueue = {\n  current: null,\n  // Used to reproduce behavior of `batchedUpdates` in legacy mode.\n  isBatchingLegacy: false,\n  didScheduleLegacyUpdate: false\n};\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\nvar ReactCurrentOwner = {\n  /**\n   * @internal\n   * @type {ReactComponent}\n   */\n  current: null\n};\n\nvar ReactDebugCurrentFrame = {};\nvar currentExtraStackFrame = null;\nfunction setExtraStackFrame(stack) {\n  {\n    currentExtraStackFrame = stack;\n  }\n}\n\n{\n  ReactDebugCurrentFrame.setExtraStackFrame = function (stack) {\n    {\n      currentExtraStackFrame = stack;\n    }\n  }; // Stack implementation injected by the current renderer.\n\n\n  ReactDebugCurrentFrame.getCurrentStack = null;\n\n  ReactDebugCurrentFrame.getStackAddendum = function () {\n    var stack = ''; // Add an extra top frame while an element is being validated\n\n    if (currentExtraStackFrame) {\n      stack += currentExtraStackFrame;\n    } // Delegate to the injected renderer-specific implementation\n\n\n    var impl = ReactDebugCurrentFrame.getCurrentStack;\n\n    if (impl) {\n      stack += impl() || '';\n    }\n\n    return stack;\n  };\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar ReactSharedInternals = {\n  ReactCurrentDispatcher: ReactCurrentDispatcher,\n  ReactCurrentBatchConfig: ReactCurrentBatchConfig,\n  ReactCurrentOwner: ReactCurrentOwner\n};\n\n{\n  ReactSharedInternals.ReactDebugCurrentFrame = ReactDebugCurrentFrame;\n  ReactSharedInternals.ReactCurrentActQueue = ReactCurrentActQueue;\n}\n\n// by calls to these methods by a Babel plugin.\n//\n// In PROD (or in packages without access to React internals),\n// they are left as they are instead.\n\nfunction warn(format) {\n  {\n    {\n      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      printWarning('warn', format, args);\n    }\n  }\n}\nfunction error(format) {\n  {\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      printWarning('error', format, args);\n    }\n  }\n}\n\nfunction printWarning(level, format, args) {\n  // When changing this logic, you might want to also\n  // update consoleWithStackDev.www.js as well.\n  {\n    var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n    var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n    if (stack !== '') {\n      format += '%s';\n      args = args.concat([stack]);\n    } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n    var argsWithFormat = args.map(function (item) {\n      return String(item);\n    }); // Careful: RN currently depends on this prefix\n\n    argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n    // breaks IE9: https://github.com/facebook/react/issues/13610\n    // eslint-disable-next-line react-internal/no-production-logging\n\n    Function.prototype.apply.call(console[level], console, argsWithFormat);\n  }\n}\n\nvar didWarnStateUpdateForUnmountedComponent = {};\n\nfunction warnNoop(publicInstance, callerName) {\n  {\n    var _constructor = publicInstance.constructor;\n    var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass';\n    var warningKey = componentName + \".\" + callerName;\n\n    if (didWarnStateUpdateForUnmountedComponent[warningKey]) {\n      return;\n    }\n\n    error(\"Can't call %s on a component that is not yet mounted. \" + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName);\n\n    didWarnStateUpdateForUnmountedComponent[warningKey] = true;\n  }\n}\n/**\n * This is the abstract API for an update queue.\n */\n\n\nvar ReactNoopUpdateQueue = {\n  /**\n   * Checks whether or not this composite component is mounted.\n   * @param {ReactClass} publicInstance The instance we want to test.\n   * @return {boolean} True if mounted, false otherwise.\n   * @protected\n   * @final\n   */\n  isMounted: function (publicInstance) {\n    return false;\n  },\n\n  /**\n   * Forces an update. This should only be invoked when it is known with\n   * certainty that we are **not** in a DOM transaction.\n   *\n   * You may want to call this when you know that some deeper aspect of the\n   * component's state has changed but `setState` was not called.\n   *\n   * This will not invoke `shouldComponentUpdate`, but it will invoke\n   * `componentWillUpdate` and `componentDidUpdate`.\n   *\n   * @param {ReactClass} publicInstance The instance that should rerender.\n   * @param {?function} callback Called after component is updated.\n   * @param {?string} callerName name of the calling function in the public API.\n   * @internal\n   */\n  enqueueForceUpdate: function (publicInstance, callback, callerName) {\n    warnNoop(publicInstance, 'forceUpdate');\n  },\n\n  /**\n   * Replaces all of the state. Always use this or `setState` to mutate state.\n   * You should treat `this.state` as immutable.\n   *\n   * There is no guarantee that `this.state` will be immediately updated, so\n   * accessing `this.state` after calling this method may return the old value.\n   *\n   * @param {ReactClass} publicInstance The instance that should rerender.\n   * @param {object} completeState Next state.\n   * @param {?function} callback Called after component is updated.\n   * @param {?string} callerName name of the calling function in the public API.\n   * @internal\n   */\n  enqueueReplaceState: function (publicInstance, completeState, callback, callerName) {\n    warnNoop(publicInstance, 'replaceState');\n  },\n\n  /**\n   * Sets a subset of the state. This only exists because _pendingState is\n   * internal. This provides a merging strategy that is not available to deep\n   * properties which is confusing. TODO: Expose pendingState or don't use it\n   * during the merge.\n   *\n   * @param {ReactClass} publicInstance The instance that should rerender.\n   * @param {object} partialState Next partial state to be merged with state.\n   * @param {?function} callback Called after component is updated.\n   * @param {?string} Name of the calling function in the public API.\n   * @internal\n   */\n  enqueueSetState: function (publicInstance, partialState, callback, callerName) {\n    warnNoop(publicInstance, 'setState');\n  }\n};\n\nvar assign = Object.assign;\n\nvar emptyObject = {};\n\n{\n  Object.freeze(emptyObject);\n}\n/**\n * Base class helpers for the updating state of a component.\n */\n\n\nfunction Component(props, context, updater) {\n  this.props = props;\n  this.context = context; // If a component has string refs, we will assign a different object later.\n\n  this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the\n  // renderer.\n\n  this.updater = updater || ReactNoopUpdateQueue;\n}\n\nComponent.prototype.isReactComponent = {};\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together.  You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n *        produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\n\nComponent.prototype.setState = function (partialState, callback) {\n  if (typeof partialState !== 'object' && typeof partialState !== 'function' && partialState != null) {\n    throw new Error('setState(...): takes an object of state variables to update or a ' + 'function which returns an object of state variables.');\n  }\n\n  this.updater.enqueueSetState(this, partialState, callback, 'setState');\n};\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\n\n\nComponent.prototype.forceUpdate = function (callback) {\n  this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');\n};\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\n\n\n{\n  var deprecatedAPIs = {\n    isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n    replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n  };\n\n  var defineDeprecationWarning = function (methodName, info) {\n    Object.defineProperty(Component.prototype, methodName, {\n      get: function () {\n        warn('%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);\n\n        return undefined;\n      }\n    });\n  };\n\n  for (var fnName in deprecatedAPIs) {\n    if (deprecatedAPIs.hasOwnProperty(fnName)) {\n      defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n    }\n  }\n}\n\nfunction ComponentDummy() {}\n\nComponentDummy.prototype = Component.prototype;\n/**\n * Convenience component with default shallow equality check for sCU.\n */\n\nfunction PureComponent(props, context, updater) {\n  this.props = props;\n  this.context = context; // If a component has string refs, we will assign a different object later.\n\n  this.refs = emptyObject;\n  this.updater = updater || ReactNoopUpdateQueue;\n}\n\nvar pureComponentPrototype = PureComponent.prototype = new ComponentDummy();\npureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods.\n\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = true;\n\n// an immutable object with a single mutable value\nfunction createRef() {\n  var refObject = {\n    current: null\n  };\n\n  {\n    Object.seal(refObject);\n  }\n\n  return refObject;\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n  return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n  {\n    // toStringTag is needed for namespaced types like Temporal.Instant\n    var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n    var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n    return type;\n  }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n  {\n    try {\n      testStringCoercion(value);\n      return false;\n    } catch (e) {\n      return true;\n    }\n  }\n}\n\nfunction testStringCoercion(value) {\n  // If you ended up here by following an exception call stack, here's what's\n  // happened: you supplied an object or symbol value to React (as a prop, key,\n  // DOM attribute, CSS property, string ref, etc.) and when React tried to\n  // coerce it to a string using `'' + value`, an exception was thrown.\n  //\n  // The most common types that will cause this exception are `Symbol` instances\n  // and Temporal objects like `Temporal.Instant`. But any object that has a\n  // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n  // exception. (Library authors do this to prevent users from using built-in\n  // numeric operators like `+` or comparison operators like `>=` because custom\n  // methods are needed to perform accurate arithmetic or comparison.)\n  //\n  // To fix the problem, coerce this object or symbol value to a string before\n  // passing it to React. The most reliable way is usually `String(value)`.\n  //\n  // To find which value is throwing, check the browser or debugger console.\n  // Before this exception was thrown, there should be `console.error` output\n  // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n  // problem and how that type was used: key, atrribute, input value prop, etc.\n  // In most cases, this console output also shows the component and its\n  // ancestor components where the exception happened.\n  //\n  // eslint-disable-next-line react-internal/safe-string-coercion\n  return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n  var displayName = outerType.displayName;\n\n  if (displayName) {\n    return displayName;\n  }\n\n  var functionName = innerType.displayName || innerType.name || '';\n  return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n  return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n  if (type == null) {\n    // Host root, text node or just invalid type.\n    return null;\n  }\n\n  {\n    if (typeof type.tag === 'number') {\n      error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n    }\n  }\n\n  if (typeof type === 'function') {\n    return type.displayName || type.name || null;\n  }\n\n  if (typeof type === 'string') {\n    return type;\n  }\n\n  switch (type) {\n    case REACT_FRAGMENT_TYPE:\n      return 'Fragment';\n\n    case REACT_PORTAL_TYPE:\n      return 'Portal';\n\n    case REACT_PROFILER_TYPE:\n      return 'Profiler';\n\n    case REACT_STRICT_MODE_TYPE:\n      return 'StrictMode';\n\n    case REACT_SUSPENSE_TYPE:\n      return 'Suspense';\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return 'SuspenseList';\n\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_CONTEXT_TYPE:\n        var context = type;\n        return getContextName(context) + '.Consumer';\n\n      case REACT_PROVIDER_TYPE:\n        var provider = type;\n        return getContextName(provider._context) + '.Provider';\n\n      case REACT_FORWARD_REF_TYPE:\n        return getWrappedName(type, type.render, 'ForwardRef');\n\n      case REACT_MEMO_TYPE:\n        var outerName = type.displayName || null;\n\n        if (outerName !== null) {\n          return outerName;\n        }\n\n        return getComponentNameFromType(type.type) || 'Memo';\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            return getComponentNameFromType(init(payload));\n          } catch (x) {\n            return null;\n          }\n        }\n\n      // eslint-disable-next-line no-fallthrough\n    }\n  }\n\n  return null;\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar RESERVED_PROPS = {\n  key: true,\n  ref: true,\n  __self: true,\n  __source: true\n};\nvar specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs;\n\n{\n  didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n  {\n    if (hasOwnProperty.call(config, 'ref')) {\n      var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n      if (getter && getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n\n  return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n  {\n    if (hasOwnProperty.call(config, 'key')) {\n      var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n      if (getter && getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n\n  return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n  var warnAboutAccessingKey = function () {\n    {\n      if (!specialPropKeyWarningShown) {\n        specialPropKeyWarningShown = true;\n\n        error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n      }\n    }\n  };\n\n  warnAboutAccessingKey.isReactWarning = true;\n  Object.defineProperty(props, 'key', {\n    get: warnAboutAccessingKey,\n    configurable: true\n  });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n  var warnAboutAccessingRef = function () {\n    {\n      if (!specialPropRefWarningShown) {\n        specialPropRefWarningShown = true;\n\n        error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n      }\n    }\n  };\n\n  warnAboutAccessingRef.isReactWarning = true;\n  Object.defineProperty(props, 'ref', {\n    get: warnAboutAccessingRef,\n    configurable: true\n  });\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config) {\n  {\n    if (typeof config.ref === 'string' && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) {\n      var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n      if (!didWarnAboutStringRefs[componentName]) {\n        error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', componentName, config.ref);\n\n        didWarnAboutStringRefs[componentName] = true;\n      }\n    }\n  }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n  var element = {\n    // This tag allows us to uniquely identify this as a React Element\n    $$typeof: REACT_ELEMENT_TYPE,\n    // Built-in properties that belong on the element\n    type: type,\n    key: key,\n    ref: ref,\n    props: props,\n    // Record the component responsible for creating this element.\n    _owner: owner\n  };\n\n  {\n    // The validation flag is currently mutative. We put it on\n    // an external backing store so that we can freeze the whole object.\n    // This can be replaced with a WeakMap once they are implemented in\n    // commonly used development environments.\n    element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n    // the validation flag non-enumerable (where possible, which should\n    // include every environment we run tests in), so the test framework\n    // ignores it.\n\n    Object.defineProperty(element._store, 'validated', {\n      configurable: false,\n      enumerable: false,\n      writable: true,\n      value: false\n    }); // self and source are DEV only properties.\n\n    Object.defineProperty(element, '_self', {\n      configurable: false,\n      enumerable: false,\n      writable: false,\n      value: self\n    }); // Two elements created in two different places should be considered\n    // equal for testing purposes and therefore we hide it from enumeration.\n\n    Object.defineProperty(element, '_source', {\n      configurable: false,\n      enumerable: false,\n      writable: false,\n      value: source\n    });\n\n    if (Object.freeze) {\n      Object.freeze(element.props);\n      Object.freeze(element);\n    }\n  }\n\n  return element;\n};\n/**\n * Create and return a new ReactElement of the given type.\n * See https://reactjs.org/docs/react-api.html#createelement\n */\n\nfunction createElement(type, config, children) {\n  var propName; // Reserved names are extracted\n\n  var props = {};\n  var key = null;\n  var ref = null;\n  var self = null;\n  var source = null;\n\n  if (config != null) {\n    if (hasValidRef(config)) {\n      ref = config.ref;\n\n      {\n        warnIfStringRefCannotBeAutoConverted(config);\n      }\n    }\n\n    if (hasValidKey(config)) {\n      {\n        checkKeyStringCoercion(config.key);\n      }\n\n      key = '' + config.key;\n    }\n\n    self = config.__self === undefined ? null : config.__self;\n    source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object\n\n    for (propName in config) {\n      if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n        props[propName] = config[propName];\n      }\n    }\n  } // Children can be more than one argument, and those are transferred onto\n  // the newly allocated props object.\n\n\n  var childrenLength = arguments.length - 2;\n\n  if (childrenLength === 1) {\n    props.children = children;\n  } else if (childrenLength > 1) {\n    var childArray = Array(childrenLength);\n\n    for (var i = 0; i < childrenLength; i++) {\n      childArray[i] = arguments[i + 2];\n    }\n\n    {\n      if (Object.freeze) {\n        Object.freeze(childArray);\n      }\n    }\n\n    props.children = childArray;\n  } // Resolve default props\n\n\n  if (type && type.defaultProps) {\n    var defaultProps = type.defaultProps;\n\n    for (propName in defaultProps) {\n      if (props[propName] === undefined) {\n        props[propName] = defaultProps[propName];\n      }\n    }\n  }\n\n  {\n    if (key || ref) {\n      var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n      if (key) {\n        defineKeyPropWarningGetter(props, displayName);\n      }\n\n      if (ref) {\n        defineRefPropWarningGetter(props, displayName);\n      }\n    }\n  }\n\n  return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n  var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n  return newElement;\n}\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://reactjs.org/docs/react-api.html#cloneelement\n */\n\nfunction cloneElement(element, config, children) {\n  if (element === null || element === undefined) {\n    throw new Error(\"React.cloneElement(...): The argument must be a React element, but you passed \" + element + \".\");\n  }\n\n  var propName; // Original props are copied\n\n  var props = assign({}, element.props); // Reserved names are extracted\n\n  var key = element.key;\n  var ref = element.ref; // Self is preserved since the owner is preserved.\n\n  var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a\n  // transpiler, and the original source is probably a better indicator of the\n  // true owner.\n\n  var source = element._source; // Owner will be preserved, unless ref is overridden\n\n  var owner = element._owner;\n\n  if (config != null) {\n    if (hasValidRef(config)) {\n      // Silently steal the ref from the parent.\n      ref = config.ref;\n      owner = ReactCurrentOwner.current;\n    }\n\n    if (hasValidKey(config)) {\n      {\n        checkKeyStringCoercion(config.key);\n      }\n\n      key = '' + config.key;\n    } // Remaining properties override existing props\n\n\n    var defaultProps;\n\n    if (element.type && element.type.defaultProps) {\n      defaultProps = element.type.defaultProps;\n    }\n\n    for (propName in config) {\n      if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n        if (config[propName] === undefined && defaultProps !== undefined) {\n          // Resolve default props\n          props[propName] = defaultProps[propName];\n        } else {\n          props[propName] = config[propName];\n        }\n      }\n    }\n  } // Children can be more than one argument, and those are transferred onto\n  // the newly allocated props object.\n\n\n  var childrenLength = arguments.length - 2;\n\n  if (childrenLength === 1) {\n    props.children = children;\n  } else if (childrenLength > 1) {\n    var childArray = Array(childrenLength);\n\n    for (var i = 0; i < childrenLength; i++) {\n      childArray[i] = arguments[i + 2];\n    }\n\n    props.children = childArray;\n  }\n\n  return ReactElement(element.type, key, ref, self, source, owner, props);\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\nfunction isValidElement(object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n  var escapeRegex = /[=:]/g;\n  var escaperLookup = {\n    '=': '=0',\n    ':': '=2'\n  };\n  var escapedString = key.replace(escapeRegex, function (match) {\n    return escaperLookup[match];\n  });\n  return '$' + escapedString;\n}\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\n\nvar didWarnAboutMaps = false;\nvar userProvidedKeyEscapeRegex = /\\/+/g;\n\nfunction escapeUserProvidedKey(text) {\n  return text.replace(userProvidedKeyEscapeRegex, '$&/');\n}\n/**\n * Generate a key string that identifies a element within a set.\n *\n * @param {*} element A element that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\n\n\nfunction getElementKey(element, index) {\n  // Do some typechecking here since we call this blindly. We want to ensure\n  // that we don't block potential future ES APIs.\n  if (typeof element === 'object' && element !== null && element.key != null) {\n    // Explicit key\n    {\n      checkKeyStringCoercion(element.key);\n    }\n\n    return escape('' + element.key);\n  } // Implicit key determined by the index in the set\n\n\n  return index.toString(36);\n}\n\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n  var type = typeof children;\n\n  if (type === 'undefined' || type === 'boolean') {\n    // All of the above are perceived as null.\n    children = null;\n  }\n\n  var invokeCallback = false;\n\n  if (children === null) {\n    invokeCallback = true;\n  } else {\n    switch (type) {\n      case 'string':\n      case 'number':\n        invokeCallback = true;\n        break;\n\n      case 'object':\n        switch (children.$$typeof) {\n          case REACT_ELEMENT_TYPE:\n          case REACT_PORTAL_TYPE:\n            invokeCallback = true;\n        }\n\n    }\n  }\n\n  if (invokeCallback) {\n    var _child = children;\n    var mappedChild = callback(_child); // If it's the only child, treat the name as if it was wrapped in an array\n    // so that it's consistent if the number of children grows:\n\n    var childKey = nameSoFar === '' ? SEPARATOR + getElementKey(_child, 0) : nameSoFar;\n\n    if (isArray(mappedChild)) {\n      var escapedChildKey = '';\n\n      if (childKey != null) {\n        escapedChildKey = escapeUserProvidedKey(childKey) + '/';\n      }\n\n      mapIntoArray(mappedChild, array, escapedChildKey, '', function (c) {\n        return c;\n      });\n    } else if (mappedChild != null) {\n      if (isValidElement(mappedChild)) {\n        {\n          // The `if` statement here prevents auto-disabling of the safe\n          // coercion ESLint rule, so we must manually disable it below.\n          // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key\n          if (mappedChild.key && (!_child || _child.key !== mappedChild.key)) {\n            checkKeyStringCoercion(mappedChild.key);\n          }\n        }\n\n        mappedChild = cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as\n        // traverseAllChildren used to do for objects as children\n        escapedPrefix + ( // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key\n        mappedChild.key && (!_child || _child.key !== mappedChild.key) ? // $FlowFixMe Flow incorrectly thinks existing element's key can be a number\n        // eslint-disable-next-line react-internal/safe-string-coercion\n        escapeUserProvidedKey('' + mappedChild.key) + '/' : '') + childKey);\n      }\n\n      array.push(mappedChild);\n    }\n\n    return 1;\n  }\n\n  var child;\n  var nextName;\n  var subtreeCount = 0; // Count of children found in the current subtree.\n\n  var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n  if (isArray(children)) {\n    for (var i = 0; i < children.length; i++) {\n      child = children[i];\n      nextName = nextNamePrefix + getElementKey(child, i);\n      subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n    }\n  } else {\n    var iteratorFn = getIteratorFn(children);\n\n    if (typeof iteratorFn === 'function') {\n      var iterableChildren = children;\n\n      {\n        // Warn about using Maps as children\n        if (iteratorFn === iterableChildren.entries) {\n          if (!didWarnAboutMaps) {\n            warn('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.');\n          }\n\n          didWarnAboutMaps = true;\n        }\n      }\n\n      var iterator = iteratorFn.call(iterableChildren);\n      var step;\n      var ii = 0;\n\n      while (!(step = iterator.next()).done) {\n        child = step.value;\n        nextName = nextNamePrefix + getElementKey(child, ii++);\n        subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n      }\n    } else if (type === 'object') {\n      // eslint-disable-next-line react-internal/safe-string-coercion\n      var childrenString = String(children);\n      throw new Error(\"Objects are not valid as a React child (found: \" + (childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString) + \"). \" + 'If you meant to render a collection of children, use an array ' + 'instead.');\n    }\n  }\n\n  return subtreeCount;\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenmap\n *\n * The provided mapFunction(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n  if (children == null) {\n    return children;\n  }\n\n  var result = [];\n  var count = 0;\n  mapIntoArray(children, result, '', '', function (child) {\n    return func.call(context, child, count++);\n  });\n  return result;\n}\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrencount\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\n\n\nfunction countChildren(children) {\n  var n = 0;\n  mapChildren(children, function () {\n    n++; // Don't return anything\n  });\n  return n;\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenforeach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n  mapChildren(children, function () {\n    forEachFunc.apply(this, arguments); // Don't return anything.\n  }, forEachContext);\n}\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrentoarray\n */\n\n\nfunction toArray(children) {\n  return mapChildren(children, function (child) {\n    return child;\n  }) || [];\n}\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenonly\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\n\n\nfunction onlyChild(children) {\n  if (!isValidElement(children)) {\n    throw new Error('React.Children.only expected to receive a single React element child.');\n  }\n\n  return children;\n}\n\nfunction createContext(defaultValue) {\n  // TODO: Second argument used to be an optional `calculateChangedBits`\n  // function. Warn to reserve for future use?\n  var context = {\n    $$typeof: REACT_CONTEXT_TYPE,\n    // As a workaround to support multiple concurrent renderers, we categorize\n    // some renderers as primary and others as secondary. We only expect\n    // there to be two concurrent renderers at most: React Native (primary) and\n    // Fabric (secondary); React DOM (primary) and React ART (secondary).\n    // Secondary renderers store their context values on separate fields.\n    _currentValue: defaultValue,\n    _currentValue2: defaultValue,\n    // Used to track how many concurrent renderers this context currently\n    // supports within in a single renderer. Such as parallel server rendering.\n    _threadCount: 0,\n    // These are circular\n    Provider: null,\n    Consumer: null,\n    // Add these to use same hidden class in VM as ServerContext\n    _defaultValue: null,\n    _globalName: null\n  };\n  context.Provider = {\n    $$typeof: REACT_PROVIDER_TYPE,\n    _context: context\n  };\n  var hasWarnedAboutUsingNestedContextConsumers = false;\n  var hasWarnedAboutUsingConsumerProvider = false;\n  var hasWarnedAboutDisplayNameOnConsumer = false;\n\n  {\n    // A separate object, but proxies back to the original context object for\n    // backwards compatibility. It has a different $$typeof, so we can properly\n    // warn for the incorrect usage of Context as a Consumer.\n    var Consumer = {\n      $$typeof: REACT_CONTEXT_TYPE,\n      _context: context\n    }; // $FlowFixMe: Flow complains about not setting a value, which is intentional here\n\n    Object.defineProperties(Consumer, {\n      Provider: {\n        get: function () {\n          if (!hasWarnedAboutUsingConsumerProvider) {\n            hasWarnedAboutUsingConsumerProvider = true;\n\n            error('Rendering <Context.Consumer.Provider> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Provider> instead?');\n          }\n\n          return context.Provider;\n        },\n        set: function (_Provider) {\n          context.Provider = _Provider;\n        }\n      },\n      _currentValue: {\n        get: function () {\n          return context._currentValue;\n        },\n        set: function (_currentValue) {\n          context._currentValue = _currentValue;\n        }\n      },\n      _currentValue2: {\n        get: function () {\n          return context._currentValue2;\n        },\n        set: function (_currentValue2) {\n          context._currentValue2 = _currentValue2;\n        }\n      },\n      _threadCount: {\n        get: function () {\n          return context._threadCount;\n        },\n        set: function (_threadCount) {\n          context._threadCount = _threadCount;\n        }\n      },\n      Consumer: {\n        get: function () {\n          if (!hasWarnedAboutUsingNestedContextConsumers) {\n            hasWarnedAboutUsingNestedContextConsumers = true;\n\n            error('Rendering <Context.Consumer.Consumer> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Consumer> instead?');\n          }\n\n          return context.Consumer;\n        }\n      },\n      displayName: {\n        get: function () {\n          return context.displayName;\n        },\n        set: function (displayName) {\n          if (!hasWarnedAboutDisplayNameOnConsumer) {\n            warn('Setting `displayName` on Context.Consumer has no effect. ' + \"You should set it directly on the context with Context.displayName = '%s'.\", displayName);\n\n            hasWarnedAboutDisplayNameOnConsumer = true;\n          }\n        }\n      }\n    }); // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty\n\n    context.Consumer = Consumer;\n  }\n\n  {\n    context._currentRenderer = null;\n    context._currentRenderer2 = null;\n  }\n\n  return context;\n}\n\nvar Uninitialized = -1;\nvar Pending = 0;\nvar Resolved = 1;\nvar Rejected = 2;\n\nfunction lazyInitializer(payload) {\n  if (payload._status === Uninitialized) {\n    var ctor = payload._result;\n    var thenable = ctor(); // Transition to the next state.\n    // This might throw either because it's missing or throws. If so, we treat it\n    // as still uninitialized and try again next time. Which is the same as what\n    // happens if the ctor or any wrappers processing the ctor throws. This might\n    // end up fixing it if the resolution was a concurrency bug.\n\n    thenable.then(function (moduleObject) {\n      if (payload._status === Pending || payload._status === Uninitialized) {\n        // Transition to the next state.\n        var resolved = payload;\n        resolved._status = Resolved;\n        resolved._result = moduleObject;\n      }\n    }, function (error) {\n      if (payload._status === Pending || payload._status === Uninitialized) {\n        // Transition to the next state.\n        var rejected = payload;\n        rejected._status = Rejected;\n        rejected._result = error;\n      }\n    });\n\n    if (payload._status === Uninitialized) {\n      // In case, we're still uninitialized, then we're waiting for the thenable\n      // to resolve. Set it as pending in the meantime.\n      var pending = payload;\n      pending._status = Pending;\n      pending._result = thenable;\n    }\n  }\n\n  if (payload._status === Resolved) {\n    var moduleObject = payload._result;\n\n    {\n      if (moduleObject === undefined) {\n        error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\\n\\nYour code should look like: \\n  ' + // Break up imports to avoid accidentally parsing them as dependencies.\n        'const MyComponent = lazy(() => imp' + \"ort('./MyComponent'))\\n\\n\" + 'Did you accidentally put curly braces around the import?', moduleObject);\n      }\n    }\n\n    {\n      if (!('default' in moduleObject)) {\n        error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\\n\\nYour code should look like: \\n  ' + // Break up imports to avoid accidentally parsing them as dependencies.\n        'const MyComponent = lazy(() => imp' + \"ort('./MyComponent'))\", moduleObject);\n      }\n    }\n\n    return moduleObject.default;\n  } else {\n    throw payload._result;\n  }\n}\n\nfunction lazy(ctor) {\n  var payload = {\n    // We use these fields to store the result.\n    _status: Uninitialized,\n    _result: ctor\n  };\n  var lazyType = {\n    $$typeof: REACT_LAZY_TYPE,\n    _payload: payload,\n    _init: lazyInitializer\n  };\n\n  {\n    // In production, this would just set it on the object.\n    var defaultProps;\n    var propTypes; // $FlowFixMe\n\n    Object.defineProperties(lazyType, {\n      defaultProps: {\n        configurable: true,\n        get: function () {\n          return defaultProps;\n        },\n        set: function (newDefaultProps) {\n          error('React.lazy(...): It is not supported to assign `defaultProps` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n          defaultProps = newDefaultProps; // Match production behavior more closely:\n          // $FlowFixMe\n\n          Object.defineProperty(lazyType, 'defaultProps', {\n            enumerable: true\n          });\n        }\n      },\n      propTypes: {\n        configurable: true,\n        get: function () {\n          return propTypes;\n        },\n        set: function (newPropTypes) {\n          error('React.lazy(...): It is not supported to assign `propTypes` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n          propTypes = newPropTypes; // Match production behavior more closely:\n          // $FlowFixMe\n\n          Object.defineProperty(lazyType, 'propTypes', {\n            enumerable: true\n          });\n        }\n      }\n    });\n  }\n\n  return lazyType;\n}\n\nfunction forwardRef(render) {\n  {\n    if (render != null && render.$$typeof === REACT_MEMO_TYPE) {\n      error('forwardRef requires a render function but received a `memo` ' + 'component. Instead of forwardRef(memo(...)), use ' + 'memo(forwardRef(...)).');\n    } else if (typeof render !== 'function') {\n      error('forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render);\n    } else {\n      if (render.length !== 0 && render.length !== 2) {\n        error('forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.');\n      }\n    }\n\n    if (render != null) {\n      if (render.defaultProps != null || render.propTypes != null) {\n        error('forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?');\n      }\n    }\n  }\n\n  var elementType = {\n    $$typeof: REACT_FORWARD_REF_TYPE,\n    render: render\n  };\n\n  {\n    var ownName;\n    Object.defineProperty(elementType, 'displayName', {\n      enumerable: false,\n      configurable: true,\n      get: function () {\n        return ownName;\n      },\n      set: function (name) {\n        ownName = name; // The inner component shouldn't inherit this display name in most cases,\n        // because the component may be used elsewhere.\n        // But it's nice for anonymous functions to inherit the name,\n        // so that our component-stack generation logic will display their frames.\n        // An anonymous function generally suggests a pattern like:\n        //   React.forwardRef((props, ref) => {...});\n        // This kind of inner function is not used elsewhere so the side effect is okay.\n\n        if (!render.name && !render.displayName) {\n          render.displayName = name;\n        }\n      }\n    });\n  }\n\n  return elementType;\n}\n\nvar REACT_MODULE_REFERENCE;\n\n{\n  REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n  if (typeof type === 'string' || typeof type === 'function') {\n    return true;\n  } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n  if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing  || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden  || type === REACT_OFFSCREEN_TYPE || enableScopeAPI  || enableCacheElement  || enableTransitionTracing ) {\n    return true;\n  }\n\n  if (typeof type === 'object' && type !== null) {\n    if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n    // types supported by any Flight configuration anywhere since\n    // we don't know which Flight build this will end up being used\n    // with.\n    type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction memo(type, compare) {\n  {\n    if (!isValidElementType(type)) {\n      error('memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type);\n    }\n  }\n\n  var elementType = {\n    $$typeof: REACT_MEMO_TYPE,\n    type: type,\n    compare: compare === undefined ? null : compare\n  };\n\n  {\n    var ownName;\n    Object.defineProperty(elementType, 'displayName', {\n      enumerable: false,\n      configurable: true,\n      get: function () {\n        return ownName;\n      },\n      set: function (name) {\n        ownName = name; // The inner component shouldn't inherit this display name in most cases,\n        // because the component may be used elsewhere.\n        // But it's nice for anonymous functions to inherit the name,\n        // so that our component-stack generation logic will display their frames.\n        // An anonymous function generally suggests a pattern like:\n        //   React.memo((props) => {...});\n        // This kind of inner function is not used elsewhere so the side effect is okay.\n\n        if (!type.name && !type.displayName) {\n          type.displayName = name;\n        }\n      }\n    });\n  }\n\n  return elementType;\n}\n\nfunction resolveDispatcher() {\n  var dispatcher = ReactCurrentDispatcher.current;\n\n  {\n    if (dispatcher === null) {\n      error('Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for' + ' one of the following reasons:\\n' + '1. You might have mismatching versions of React and the renderer (such as React DOM)\\n' + '2. You might be breaking the Rules of Hooks\\n' + '3. You might have more than one copy of React in the same app\\n' + 'See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.');\n    }\n  } // Will result in a null access error if accessed outside render phase. We\n  // intentionally don't throw our own error because this is in a hot path.\n  // Also helps ensure this is inlined.\n\n\n  return dispatcher;\n}\nfunction useContext(Context) {\n  var dispatcher = resolveDispatcher();\n\n  {\n    // TODO: add a more generic warning for invalid values.\n    if (Context._context !== undefined) {\n      var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs\n      // and nobody should be using this in existing code.\n\n      if (realContext.Consumer === Context) {\n        error('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' + 'removed in a future major release. Did you mean to call useContext(Context) instead?');\n      } else if (realContext.Provider === Context) {\n        error('Calling useContext(Context.Provider) is not supported. ' + 'Did you mean to call useContext(Context) instead?');\n      }\n    }\n  }\n\n  return dispatcher.useContext(Context);\n}\nfunction useState(initialState) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useState(initialState);\n}\nfunction useReducer(reducer, initialArg, init) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useReducer(reducer, initialArg, init);\n}\nfunction useRef(initialValue) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useRef(initialValue);\n}\nfunction useEffect(create, deps) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useEffect(create, deps);\n}\nfunction useInsertionEffect(create, deps) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useInsertionEffect(create, deps);\n}\nfunction useLayoutEffect(create, deps) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useLayoutEffect(create, deps);\n}\nfunction useCallback(callback, deps) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useCallback(callback, deps);\n}\nfunction useMemo(create, deps) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useMemo(create, deps);\n}\nfunction useImperativeHandle(ref, create, deps) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useImperativeHandle(ref, create, deps);\n}\nfunction useDebugValue(value, formatterFn) {\n  {\n    var dispatcher = resolveDispatcher();\n    return dispatcher.useDebugValue(value, formatterFn);\n  }\n}\nfunction useTransition() {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useTransition();\n}\nfunction useDeferredValue(value) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useDeferredValue(value);\n}\nfunction useId() {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useId();\n}\nfunction useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n  var dispatcher = resolveDispatcher();\n  return dispatcher.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n  {\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      prevLog = console.log;\n      prevInfo = console.info;\n      prevWarn = console.warn;\n      prevError = console.error;\n      prevGroup = console.group;\n      prevGroupCollapsed = console.groupCollapsed;\n      prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n      var props = {\n        configurable: true,\n        enumerable: true,\n        value: disabledLog,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        info: props,\n        log: props,\n        warn: props,\n        error: props,\n        group: props,\n        groupCollapsed: props,\n        groupEnd: props\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    disabledDepth++;\n  }\n}\nfunction reenableLogs() {\n  {\n    disabledDepth--;\n\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      var props = {\n        configurable: true,\n        enumerable: true,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        log: assign({}, props, {\n          value: prevLog\n        }),\n        info: assign({}, props, {\n          value: prevInfo\n        }),\n        warn: assign({}, props, {\n          value: prevWarn\n        }),\n        error: assign({}, props, {\n          value: prevError\n        }),\n        group: assign({}, props, {\n          value: prevGroup\n        }),\n        groupCollapsed: assign({}, props, {\n          value: prevGroupCollapsed\n        }),\n        groupEnd: assign({}, props, {\n          value: prevGroupEnd\n        })\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    if (disabledDepth < 0) {\n      error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n    }\n  }\n}\n\nvar ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n  {\n    if (prefix === undefined) {\n      // Extract the VM specific prefix used by each line.\n      try {\n        throw Error();\n      } catch (x) {\n        var match = x.stack.trim().match(/\\n( *(at )?)/);\n        prefix = match && match[1] || '';\n      }\n    } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n    return '\\n' + prefix + name;\n  }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n  var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n  componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n  // If something asked for a stack inside a fake render, it should get ignored.\n  if ( !fn || reentry) {\n    return '';\n  }\n\n  {\n    var frame = componentFrameCache.get(fn);\n\n    if (frame !== undefined) {\n      return frame;\n    }\n  }\n\n  var control;\n  reentry = true;\n  var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n  Error.prepareStackTrace = undefined;\n  var previousDispatcher;\n\n  {\n    previousDispatcher = ReactCurrentDispatcher$1.current; // Set the dispatcher in DEV because this might be call in the render function\n    // for warnings.\n\n    ReactCurrentDispatcher$1.current = null;\n    disableLogs();\n  }\n\n  try {\n    // This should throw.\n    if (construct) {\n      // Something should be setting the props in the constructor.\n      var Fake = function () {\n        throw Error();\n      }; // $FlowFixMe\n\n\n      Object.defineProperty(Fake.prototype, 'props', {\n        set: function () {\n          // We use a throwing setter instead of frozen or non-writable props\n          // because that won't throw in a non-strict mode function.\n          throw Error();\n        }\n      });\n\n      if (typeof Reflect === 'object' && Reflect.construct) {\n        // We construct a different control for this case to include any extra\n        // frames added by the construct call.\n        try {\n          Reflect.construct(Fake, []);\n        } catch (x) {\n          control = x;\n        }\n\n        Reflect.construct(fn, [], Fake);\n      } else {\n        try {\n          Fake.call();\n        } catch (x) {\n          control = x;\n        }\n\n        fn.call(Fake.prototype);\n      }\n    } else {\n      try {\n        throw Error();\n      } catch (x) {\n        control = x;\n      }\n\n      fn();\n    }\n  } catch (sample) {\n    // This is inlined manually because closure doesn't do it for us.\n    if (sample && control && typeof sample.stack === 'string') {\n      // This extracts the first frame from the sample that isn't also in the control.\n      // Skipping one frame that we assume is the frame that calls the two.\n      var sampleLines = sample.stack.split('\\n');\n      var controlLines = control.stack.split('\\n');\n      var s = sampleLines.length - 1;\n      var c = controlLines.length - 1;\n\n      while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n        // We expect at least one stack frame to be shared.\n        // Typically this will be the root most one. However, stack frames may be\n        // cut off due to maximum stack limits. In this case, one maybe cut off\n        // earlier than the other. We assume that the sample is longer or the same\n        // and there for cut off earlier. So we should find the root most frame in\n        // the sample somewhere in the control.\n        c--;\n      }\n\n      for (; s >= 1 && c >= 0; s--, c--) {\n        // Next we find the first one that isn't the same which should be the\n        // frame that called our sample function and the control.\n        if (sampleLines[s] !== controlLines[c]) {\n          // In V8, the first line is describing the message but other VMs don't.\n          // If we're about to return the first line, and the control is also on the same\n          // line, that's a pretty good indicator that our sample threw at same line as\n          // the control. I.e. before we entered the sample frame. So we ignore this result.\n          // This can happen if you passed a class to function component, or non-function.\n          if (s !== 1 || c !== 1) {\n            do {\n              s--;\n              c--; // We may still have similar intermediate frames from the construct call.\n              // The next one that isn't the same should be our match though.\n\n              if (c < 0 || sampleLines[s] !== controlLines[c]) {\n                // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n                var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"<anonymous>\"\n                // but we have a user-provided \"displayName\"\n                // splice it in to make the stack more readable.\n\n\n                if (fn.displayName && _frame.includes('<anonymous>')) {\n                  _frame = _frame.replace('<anonymous>', fn.displayName);\n                }\n\n                {\n                  if (typeof fn === 'function') {\n                    componentFrameCache.set(fn, _frame);\n                  }\n                } // Return the line we found.\n\n\n                return _frame;\n              }\n            } while (s >= 1 && c >= 0);\n          }\n\n          break;\n        }\n      }\n    }\n  } finally {\n    reentry = false;\n\n    {\n      ReactCurrentDispatcher$1.current = previousDispatcher;\n      reenableLogs();\n    }\n\n    Error.prepareStackTrace = previousPrepareStackTrace;\n  } // Fallback to just using the name if we couldn't make it throw.\n\n\n  var name = fn ? fn.displayName || fn.name : '';\n  var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n  {\n    if (typeof fn === 'function') {\n      componentFrameCache.set(fn, syntheticFrame);\n    }\n  }\n\n  return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n  {\n    return describeNativeComponentFrame(fn, false);\n  }\n}\n\nfunction shouldConstruct(Component) {\n  var prototype = Component.prototype;\n  return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n  if (type == null) {\n    return '';\n  }\n\n  if (typeof type === 'function') {\n    {\n      return describeNativeComponentFrame(type, shouldConstruct(type));\n    }\n  }\n\n  if (typeof type === 'string') {\n    return describeBuiltInComponentFrame(type);\n  }\n\n  switch (type) {\n    case REACT_SUSPENSE_TYPE:\n      return describeBuiltInComponentFrame('Suspense');\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return describeBuiltInComponentFrame('SuspenseList');\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_FORWARD_REF_TYPE:\n        return describeFunctionComponentFrame(type.render);\n\n      case REACT_MEMO_TYPE:\n        // Memo may contain any component type so we recursively resolve it.\n        return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            // Lazy may contain any component type so we recursively resolve it.\n            return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n          } catch (x) {}\n        }\n    }\n  }\n\n  return '';\n}\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n  {\n    if (element) {\n      var owner = element._owner;\n      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n      ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n    } else {\n      ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n    }\n  }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n  {\n    // $FlowFixMe This is okay but Flow doesn't know it.\n    var has = Function.call.bind(hasOwnProperty);\n\n    for (var typeSpecName in typeSpecs) {\n      if (has(typeSpecs, typeSpecName)) {\n        var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          if (typeof typeSpecs[typeSpecName] !== 'function') {\n            // eslint-disable-next-line react-internal/prod-error-codes\n            var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n\n          error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n        } catch (ex) {\n          error$1 = ex;\n        }\n\n        if (error$1 && !(error$1 instanceof Error)) {\n          setCurrentlyValidatingElement(element);\n\n          error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n          setCurrentlyValidatingElement(null);\n        }\n\n        if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error$1.message] = true;\n          setCurrentlyValidatingElement(element);\n\n          error('Failed %s type: %s', location, error$1.message);\n\n          setCurrentlyValidatingElement(null);\n        }\n      }\n    }\n  }\n}\n\nfunction setCurrentlyValidatingElement$1(element) {\n  {\n    if (element) {\n      var owner = element._owner;\n      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n      setExtraStackFrame(stack);\n    } else {\n      setExtraStackFrame(null);\n    }\n  }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n  propTypesMisspellWarningShown = false;\n}\n\nfunction getDeclarationErrorAddendum() {\n  if (ReactCurrentOwner.current) {\n    var name = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n    if (name) {\n      return '\\n\\nCheck the render method of `' + name + '`.';\n    }\n  }\n\n  return '';\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n  if (source !== undefined) {\n    var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n    var lineNumber = source.lineNumber;\n    return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n  }\n\n  return '';\n}\n\nfunction getSourceInfoErrorAddendumForProps(elementProps) {\n  if (elementProps !== null && elementProps !== undefined) {\n    return getSourceInfoErrorAddendum(elementProps.__source);\n  }\n\n  return '';\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n  var info = getDeclarationErrorAddendum();\n\n  if (!info) {\n    var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n    if (parentName) {\n      info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n    }\n  }\n\n  return info;\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n  if (!element._store || element._store.validated || element.key != null) {\n    return;\n  }\n\n  element._store.validated = true;\n  var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n  if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n    return;\n  }\n\n  ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n  // property, it may be the creator of the child that's responsible for\n  // assigning it a key.\n\n  var childOwner = '';\n\n  if (element && element._owner && element._owner !== ReactCurrentOwner.current) {\n    // Give the component that originally created this child.\n    childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n  }\n\n  {\n    setCurrentlyValidatingElement$1(element);\n\n    error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n    setCurrentlyValidatingElement$1(null);\n  }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n  if (typeof node !== 'object') {\n    return;\n  }\n\n  if (isArray(node)) {\n    for (var i = 0; i < node.length; i++) {\n      var child = node[i];\n\n      if (isValidElement(child)) {\n        validateExplicitKey(child, parentType);\n      }\n    }\n  } else if (isValidElement(node)) {\n    // This element was passed in a valid location.\n    if (node._store) {\n      node._store.validated = true;\n    }\n  } else if (node) {\n    var iteratorFn = getIteratorFn(node);\n\n    if (typeof iteratorFn === 'function') {\n      // Entry iterators used to provide implicit keys,\n      // but now we print a separate warning for them later.\n      if (iteratorFn !== node.entries) {\n        var iterator = iteratorFn.call(node);\n        var step;\n\n        while (!(step = iterator.next()).done) {\n          if (isValidElement(step.value)) {\n            validateExplicitKey(step.value, parentType);\n          }\n        }\n      }\n    }\n  }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n  {\n    var type = element.type;\n\n    if (type === null || type === undefined || typeof type === 'string') {\n      return;\n    }\n\n    var propTypes;\n\n    if (typeof type === 'function') {\n      propTypes = type.propTypes;\n    } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n    // Inner props are checked in the reconciler.\n    type.$$typeof === REACT_MEMO_TYPE)) {\n      propTypes = type.propTypes;\n    } else {\n      return;\n    }\n\n    if (propTypes) {\n      // Intentionally inside to avoid triggering lazy initializers:\n      var name = getComponentNameFromType(type);\n      checkPropTypes(propTypes, element.props, 'prop', name, element);\n    } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n      propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n      var _name = getComponentNameFromType(type);\n\n      error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n    }\n\n    if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n      error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n    }\n  }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n  {\n    var keys = Object.keys(fragment.props);\n\n    for (var i = 0; i < keys.length; i++) {\n      var key = keys[i];\n\n      if (key !== 'children' && key !== 'key') {\n        setCurrentlyValidatingElement$1(fragment);\n\n        error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n        setCurrentlyValidatingElement$1(null);\n        break;\n      }\n    }\n\n    if (fragment.ref !== null) {\n      setCurrentlyValidatingElement$1(fragment);\n\n      error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n      setCurrentlyValidatingElement$1(null);\n    }\n  }\n}\nfunction createElementWithValidation(type, props, children) {\n  var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n  // succeed and there will likely be errors in render.\n\n  if (!validType) {\n    var info = '';\n\n    if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n      info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n    }\n\n    var sourceInfo = getSourceInfoErrorAddendumForProps(props);\n\n    if (sourceInfo) {\n      info += sourceInfo;\n    } else {\n      info += getDeclarationErrorAddendum();\n    }\n\n    var typeString;\n\n    if (type === null) {\n      typeString = 'null';\n    } else if (isArray(type)) {\n      typeString = 'array';\n    } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n      typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n      info = ' Did you accidentally export a JSX literal instead of a component?';\n    } else {\n      typeString = typeof type;\n    }\n\n    {\n      error('React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n    }\n  }\n\n  var element = createElement.apply(this, arguments); // The result can be nullish if a mock or a custom function is used.\n  // TODO: Drop this when these are no longer allowed as the type argument.\n\n  if (element == null) {\n    return element;\n  } // Skip key warning if the type isn't valid since our key validation logic\n  // doesn't expect a non-string/function type and can throw confusing errors.\n  // We don't want exception behavior to differ between dev and prod.\n  // (Rendering will throw with a helpful message and as soon as the type is\n  // fixed, the key warnings will appear.)\n\n\n  if (validType) {\n    for (var i = 2; i < arguments.length; i++) {\n      validateChildKeys(arguments[i], type);\n    }\n  }\n\n  if (type === REACT_FRAGMENT_TYPE) {\n    validateFragmentProps(element);\n  } else {\n    validatePropTypes(element);\n  }\n\n  return element;\n}\nvar didWarnAboutDeprecatedCreateFactory = false;\nfunction createFactoryWithValidation(type) {\n  var validatedFactory = createElementWithValidation.bind(null, type);\n  validatedFactory.type = type;\n\n  {\n    if (!didWarnAboutDeprecatedCreateFactory) {\n      didWarnAboutDeprecatedCreateFactory = true;\n\n      warn('React.createFactory() is deprecated and will be removed in ' + 'a future major release. Consider using JSX ' + 'or use React.createElement() directly instead.');\n    } // Legacy hook: remove it\n\n\n    Object.defineProperty(validatedFactory, 'type', {\n      enumerable: false,\n      get: function () {\n        warn('Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.');\n\n        Object.defineProperty(this, 'type', {\n          value: type\n        });\n        return type;\n      }\n    });\n  }\n\n  return validatedFactory;\n}\nfunction cloneElementWithValidation(element, props, children) {\n  var newElement = cloneElement.apply(this, arguments);\n\n  for (var i = 2; i < arguments.length; i++) {\n    validateChildKeys(arguments[i], newElement.type);\n  }\n\n  validatePropTypes(newElement);\n  return newElement;\n}\n\nfunction startTransition(scope, options) {\n  var prevTransition = ReactCurrentBatchConfig.transition;\n  ReactCurrentBatchConfig.transition = {};\n  var currentTransition = ReactCurrentBatchConfig.transition;\n\n  {\n    ReactCurrentBatchConfig.transition._updatedFibers = new Set();\n  }\n\n  try {\n    scope();\n  } finally {\n    ReactCurrentBatchConfig.transition = prevTransition;\n\n    {\n      if (prevTransition === null && currentTransition._updatedFibers) {\n        var updatedFibersCount = currentTransition._updatedFibers.size;\n\n        if (updatedFibersCount > 10) {\n          warn('Detected a large number of updates inside startTransition. ' + 'If this is due to a subscription please re-write it to use React provided hooks. ' + 'Otherwise concurrent mode guarantees are off the table.');\n        }\n\n        currentTransition._updatedFibers.clear();\n      }\n    }\n  }\n}\n\nvar didWarnAboutMessageChannel = false;\nvar enqueueTaskImpl = null;\nfunction enqueueTask(task) {\n  if (enqueueTaskImpl === null) {\n    try {\n      // read require off the module object to get around the bundlers.\n      // we don't want them to detect a require and bundle a Node polyfill.\n      var requireString = ('require' + Math.random()).slice(0, 7);\n      var nodeRequire = module && module[requireString]; // assuming we're in node, let's try to get node's\n      // version of setImmediate, bypassing fake timers if any.\n\n      enqueueTaskImpl = nodeRequire.call(module, 'timers').setImmediate;\n    } catch (_err) {\n      // we're in a browser\n      // we can't use regular timers because they may still be faked\n      // so we try MessageChannel+postMessage instead\n      enqueueTaskImpl = function (callback) {\n        {\n          if (didWarnAboutMessageChannel === false) {\n            didWarnAboutMessageChannel = true;\n\n            if (typeof MessageChannel === 'undefined') {\n              error('This browser does not have a MessageChannel implementation, ' + 'so enqueuing tasks via await act(async () => ...) will fail. ' + 'Please file an issue at https://github.com/facebook/react/issues ' + 'if you encounter this warning.');\n            }\n          }\n        }\n\n        var channel = new MessageChannel();\n        channel.port1.onmessage = callback;\n        channel.port2.postMessage(undefined);\n      };\n    }\n  }\n\n  return enqueueTaskImpl(task);\n}\n\nvar actScopeDepth = 0;\nvar didWarnNoAwaitAct = false;\nfunction act(callback) {\n  {\n    // `act` calls can be nested, so we track the depth. This represents the\n    // number of `act` scopes on the stack.\n    var prevActScopeDepth = actScopeDepth;\n    actScopeDepth++;\n\n    if (ReactCurrentActQueue.current === null) {\n      // This is the outermost `act` scope. Initialize the queue. The reconciler\n      // will detect the queue and use it instead of Scheduler.\n      ReactCurrentActQueue.current = [];\n    }\n\n    var prevIsBatchingLegacy = ReactCurrentActQueue.isBatchingLegacy;\n    var result;\n\n    try {\n      // Used to reproduce behavior of `batchedUpdates` in legacy mode. Only\n      // set to `true` while the given callback is executed, not for updates\n      // triggered during an async event, because this is how the legacy\n      // implementation of `act` behaved.\n      ReactCurrentActQueue.isBatchingLegacy = true;\n      result = callback(); // Replicate behavior of original `act` implementation in legacy mode,\n      // which flushed updates immediately after the scope function exits, even\n      // if it's an async function.\n\n      if (!prevIsBatchingLegacy && ReactCurrentActQueue.didScheduleLegacyUpdate) {\n        var queue = ReactCurrentActQueue.current;\n\n        if (queue !== null) {\n          ReactCurrentActQueue.didScheduleLegacyUpdate = false;\n          flushActQueue(queue);\n        }\n      }\n    } catch (error) {\n      popActScope(prevActScopeDepth);\n      throw error;\n    } finally {\n      ReactCurrentActQueue.isBatchingLegacy = prevIsBatchingLegacy;\n    }\n\n    if (result !== null && typeof result === 'object' && typeof result.then === 'function') {\n      var thenableResult = result; // The callback is an async function (i.e. returned a promise). Wait\n      // for it to resolve before exiting the current scope.\n\n      var wasAwaited = false;\n      var thenable = {\n        then: function (resolve, reject) {\n          wasAwaited = true;\n          thenableResult.then(function (returnValue) {\n            popActScope(prevActScopeDepth);\n\n            if (actScopeDepth === 0) {\n              // We've exited the outermost act scope. Recursively flush the\n              // queue until there's no remaining work.\n              recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n            } else {\n              resolve(returnValue);\n            }\n          }, function (error) {\n            // The callback threw an error.\n            popActScope(prevActScopeDepth);\n            reject(error);\n          });\n        }\n      };\n\n      {\n        if (!didWarnNoAwaitAct && typeof Promise !== 'undefined') {\n          // eslint-disable-next-line no-undef\n          Promise.resolve().then(function () {}).then(function () {\n            if (!wasAwaited) {\n              didWarnNoAwaitAct = true;\n\n              error('You called act(async () => ...) without await. ' + 'This could lead to unexpected testing behaviour, ' + 'interleaving multiple act calls and mixing their ' + 'scopes. ' + 'You should - await act(async () => ...);');\n            }\n          });\n        }\n      }\n\n      return thenable;\n    } else {\n      var returnValue = result; // The callback is not an async function. Exit the current scope\n      // immediately, without awaiting.\n\n      popActScope(prevActScopeDepth);\n\n      if (actScopeDepth === 0) {\n        // Exiting the outermost act scope. Flush the queue.\n        var _queue = ReactCurrentActQueue.current;\n\n        if (_queue !== null) {\n          flushActQueue(_queue);\n          ReactCurrentActQueue.current = null;\n        } // Return a thenable. If the user awaits it, we'll flush again in\n        // case additional work was scheduled by a microtask.\n\n\n        var _thenable = {\n          then: function (resolve, reject) {\n            // Confirm we haven't re-entered another `act` scope, in case\n            // the user does something weird like await the thenable\n            // multiple times.\n            if (ReactCurrentActQueue.current === null) {\n              // Recursively flush the queue until there's no remaining work.\n              ReactCurrentActQueue.current = [];\n              recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n            } else {\n              resolve(returnValue);\n            }\n          }\n        };\n        return _thenable;\n      } else {\n        // Since we're inside a nested `act` scope, the returned thenable\n        // immediately resolves. The outer scope will flush the queue.\n        var _thenable2 = {\n          then: function (resolve, reject) {\n            resolve(returnValue);\n          }\n        };\n        return _thenable2;\n      }\n    }\n  }\n}\n\nfunction popActScope(prevActScopeDepth) {\n  {\n    if (prevActScopeDepth !== actScopeDepth - 1) {\n      error('You seem to have overlapping act() calls, this is not supported. ' + 'Be sure to await previous act() calls before making a new one. ');\n    }\n\n    actScopeDepth = prevActScopeDepth;\n  }\n}\n\nfunction recursivelyFlushAsyncActWork(returnValue, resolve, reject) {\n  {\n    var queue = ReactCurrentActQueue.current;\n\n    if (queue !== null) {\n      try {\n        flushActQueue(queue);\n        enqueueTask(function () {\n          if (queue.length === 0) {\n            // No additional work was scheduled. Finish.\n            ReactCurrentActQueue.current = null;\n            resolve(returnValue);\n          } else {\n            // Keep flushing work until there's none left.\n            recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n          }\n        });\n      } catch (error) {\n        reject(error);\n      }\n    } else {\n      resolve(returnValue);\n    }\n  }\n}\n\nvar isFlushing = false;\n\nfunction flushActQueue(queue) {\n  {\n    if (!isFlushing) {\n      // Prevent re-entrance.\n      isFlushing = true;\n      var i = 0;\n\n      try {\n        for (; i < queue.length; i++) {\n          var callback = queue[i];\n\n          do {\n            callback = callback(true);\n          } while (callback !== null);\n        }\n\n        queue.length = 0;\n      } catch (error) {\n        // If something throws, leave the remaining callbacks on the queue.\n        queue = queue.slice(i + 1);\n        throw error;\n      } finally {\n        isFlushing = false;\n      }\n    }\n  }\n}\n\nvar createElement$1 =  createElementWithValidation ;\nvar cloneElement$1 =  cloneElementWithValidation ;\nvar createFactory =  createFactoryWithValidation ;\nvar Children = {\n  map: mapChildren,\n  forEach: forEachChildren,\n  count: countChildren,\n  toArray: toArray,\n  only: onlyChild\n};\n\nexports.Children = Children;\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals;\nexports.cloneElement = cloneElement$1;\nexports.createContext = createContext;\nexports.createElement = createElement$1;\nexports.createFactory = createFactory;\nexports.createRef = createRef;\nexports.forwardRef = forwardRef;\nexports.isValidElement = isValidElement;\nexports.lazy = lazy;\nexports.memo = memo;\nexports.startTransition = startTransition;\nexports.unstable_act = act;\nexports.useCallback = useCallback;\nexports.useContext = useContext;\nexports.useDebugValue = useDebugValue;\nexports.useDeferredValue = useDeferredValue;\nexports.useEffect = useEffect;\nexports.useId = useId;\nexports.useImperativeHandle = useImperativeHandle;\nexports.useInsertionEffect = useInsertionEffect;\nexports.useLayoutEffect = useLayoutEffect;\nexports.useMemo = useMemo;\nexports.useReducer = useReducer;\nexports.useRef = useRef;\nexports.useState = useState;\nexports.useSyncExternalStore = useSyncExternalStore;\nexports.useTransition = useTransition;\nexports.version = ReactVersion;\n          /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n    'function'\n) {\n  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n        \n  })();\n}\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react.production.min.js');\n} else {\n  module.exports = require('./cjs/react.development.js');\n}\n", "/**\n * @license React\n * scheduler.development.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\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n\n          'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n    'function'\n) {\n  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n          var enableSchedulerDebugging = false;\nvar enableProfiling = false;\nvar frameYieldMs = 5;\n\nfunction push(heap, node) {\n  var index = heap.length;\n  heap.push(node);\n  siftUp(heap, node, index);\n}\nfunction peek(heap) {\n  return heap.length === 0 ? null : heap[0];\n}\nfunction pop(heap) {\n  if (heap.length === 0) {\n    return null;\n  }\n\n  var first = heap[0];\n  var last = heap.pop();\n\n  if (last !== first) {\n    heap[0] = last;\n    siftDown(heap, last, 0);\n  }\n\n  return first;\n}\n\nfunction siftUp(heap, node, i) {\n  var index = i;\n\n  while (index > 0) {\n    var parentIndex = index - 1 >>> 1;\n    var parent = heap[parentIndex];\n\n    if (compare(parent, node) > 0) {\n      // The parent is larger. Swap positions.\n      heap[parentIndex] = node;\n      heap[index] = parent;\n      index = parentIndex;\n    } else {\n      // The parent is smaller. Exit.\n      return;\n    }\n  }\n}\n\nfunction siftDown(heap, node, i) {\n  var index = i;\n  var length = heap.length;\n  var halfLength = length >>> 1;\n\n  while (index < halfLength) {\n    var leftIndex = (index + 1) * 2 - 1;\n    var left = heap[leftIndex];\n    var rightIndex = leftIndex + 1;\n    var right = heap[rightIndex]; // If the left or right node is smaller, swap with the smaller of those.\n\n    if (compare(left, node) < 0) {\n      if (rightIndex < length && compare(right, left) < 0) {\n        heap[index] = right;\n        heap[rightIndex] = node;\n        index = rightIndex;\n      } else {\n        heap[index] = left;\n        heap[leftIndex] = node;\n        index = leftIndex;\n      }\n    } else if (rightIndex < length && compare(right, node) < 0) {\n      heap[index] = right;\n      heap[rightIndex] = node;\n      index = rightIndex;\n    } else {\n      // Neither child is smaller. Exit.\n      return;\n    }\n  }\n}\n\nfunction compare(a, b) {\n  // Compare sort index first, then task id.\n  var diff = a.sortIndex - b.sortIndex;\n  return diff !== 0 ? diff : a.id - b.id;\n}\n\n// TODO: Use symbols?\nvar ImmediatePriority = 1;\nvar UserBlockingPriority = 2;\nvar NormalPriority = 3;\nvar LowPriority = 4;\nvar IdlePriority = 5;\n\nfunction markTaskErrored(task, ms) {\n}\n\n/* eslint-disable no-var */\n\nvar hasPerformanceNow = typeof performance === 'object' && typeof performance.now === 'function';\n\nif (hasPerformanceNow) {\n  var localPerformance = performance;\n\n  exports.unstable_now = function () {\n    return localPerformance.now();\n  };\n} else {\n  var localDate = Date;\n  var initialTime = localDate.now();\n\n  exports.unstable_now = function () {\n    return localDate.now() - initialTime;\n  };\n} // Max 31 bit integer. The max integer size in V8 for 32-bit systems.\n// Math.pow(2, 30) - 1\n// 0b111111111111111111111111111111\n\n\nvar maxSigned31BitInt = 1073741823; // Times out immediately\n\nvar IMMEDIATE_PRIORITY_TIMEOUT = -1; // Eventually times out\n\nvar USER_BLOCKING_PRIORITY_TIMEOUT = 250;\nvar NORMAL_PRIORITY_TIMEOUT = 5000;\nvar LOW_PRIORITY_TIMEOUT = 10000; // Never times out\n\nvar IDLE_PRIORITY_TIMEOUT = maxSigned31BitInt; // Tasks are stored on a min heap\n\nvar taskQueue = [];\nvar timerQueue = []; // Incrementing id counter. Used to maintain insertion order.\n\nvar taskIdCounter = 1; // Pausing the scheduler is useful for debugging.\nvar currentTask = null;\nvar currentPriorityLevel = NormalPriority; // This is set while performing work, to prevent re-entrance.\n\nvar isPerformingWork = false;\nvar isHostCallbackScheduled = false;\nvar isHostTimeoutScheduled = false; // Capture local references to native APIs, in case a polyfill overrides them.\n\nvar localSetTimeout = typeof setTimeout === 'function' ? setTimeout : null;\nvar localClearTimeout = typeof clearTimeout === 'function' ? clearTimeout : null;\nvar localSetImmediate = typeof setImmediate !== 'undefined' ? setImmediate : null; // IE and Node.js + jsdom\n\nvar isInputPending = typeof navigator !== 'undefined' && navigator.scheduling !== undefined && navigator.scheduling.isInputPending !== undefined ? navigator.scheduling.isInputPending.bind(navigator.scheduling) : null;\n\nfunction advanceTimers(currentTime) {\n  // Check for tasks that are no longer delayed and add them to the queue.\n  var timer = peek(timerQueue);\n\n  while (timer !== null) {\n    if (timer.callback === null) {\n      // Timer was cancelled.\n      pop(timerQueue);\n    } else if (timer.startTime <= currentTime) {\n      // Timer fired. Transfer to the task queue.\n      pop(timerQueue);\n      timer.sortIndex = timer.expirationTime;\n      push(taskQueue, timer);\n    } else {\n      // Remaining timers are pending.\n      return;\n    }\n\n    timer = peek(timerQueue);\n  }\n}\n\nfunction handleTimeout(currentTime) {\n  isHostTimeoutScheduled = false;\n  advanceTimers(currentTime);\n\n  if (!isHostCallbackScheduled) {\n    if (peek(taskQueue) !== null) {\n      isHostCallbackScheduled = true;\n      requestHostCallback(flushWork);\n    } else {\n      var firstTimer = peek(timerQueue);\n\n      if (firstTimer !== null) {\n        requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n      }\n    }\n  }\n}\n\nfunction flushWork(hasTimeRemaining, initialTime) {\n\n\n  isHostCallbackScheduled = false;\n\n  if (isHostTimeoutScheduled) {\n    // We scheduled a timeout but it's no longer needed. Cancel it.\n    isHostTimeoutScheduled = false;\n    cancelHostTimeout();\n  }\n\n  isPerformingWork = true;\n  var previousPriorityLevel = currentPriorityLevel;\n\n  try {\n    if (enableProfiling) {\n      try {\n        return workLoop(hasTimeRemaining, initialTime);\n      } catch (error) {\n        if (currentTask !== null) {\n          var currentTime = exports.unstable_now();\n          markTaskErrored(currentTask, currentTime);\n          currentTask.isQueued = false;\n        }\n\n        throw error;\n      }\n    } else {\n      // No catch in prod code path.\n      return workLoop(hasTimeRemaining, initialTime);\n    }\n  } finally {\n    currentTask = null;\n    currentPriorityLevel = previousPriorityLevel;\n    isPerformingWork = false;\n  }\n}\n\nfunction workLoop(hasTimeRemaining, initialTime) {\n  var currentTime = initialTime;\n  advanceTimers(currentTime);\n  currentTask = peek(taskQueue);\n\n  while (currentTask !== null && !(enableSchedulerDebugging )) {\n    if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) {\n      // This currentTask hasn't expired, and we've reached the deadline.\n      break;\n    }\n\n    var callback = currentTask.callback;\n\n    if (typeof callback === 'function') {\n      currentTask.callback = null;\n      currentPriorityLevel = currentTask.priorityLevel;\n      var didUserCallbackTimeout = currentTask.expirationTime <= currentTime;\n\n      var continuationCallback = callback(didUserCallbackTimeout);\n      currentTime = exports.unstable_now();\n\n      if (typeof continuationCallback === 'function') {\n        currentTask.callback = continuationCallback;\n      } else {\n\n        if (currentTask === peek(taskQueue)) {\n          pop(taskQueue);\n        }\n      }\n\n      advanceTimers(currentTime);\n    } else {\n      pop(taskQueue);\n    }\n\n    currentTask = peek(taskQueue);\n  } // Return whether there's additional work\n\n\n  if (currentTask !== null) {\n    return true;\n  } else {\n    var firstTimer = peek(timerQueue);\n\n    if (firstTimer !== null) {\n      requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);\n    }\n\n    return false;\n  }\n}\n\nfunction unstable_runWithPriority(priorityLevel, eventHandler) {\n  switch (priorityLevel) {\n    case ImmediatePriority:\n    case UserBlockingPriority:\n    case NormalPriority:\n    case LowPriority:\n    case IdlePriority:\n      break;\n\n    default:\n      priorityLevel = NormalPriority;\n  }\n\n  var previousPriorityLevel = currentPriorityLevel;\n  currentPriorityLevel = priorityLevel;\n\n  try {\n    return eventHandler();\n  } finally {\n    currentPriorityLevel = previousPriorityLevel;\n  }\n}\n\nfunction unstable_next(eventHandler) {\n  var priorityLevel;\n\n  switch (currentPriorityLevel) {\n    case ImmediatePriority:\n    case UserBlockingPriority:\n    case NormalPriority:\n      // Shift down to normal priority\n      priorityLevel = NormalPriority;\n      break;\n\n    default:\n      // Anything lower than normal priority should remain at the current level.\n      priorityLevel = currentPriorityLevel;\n      break;\n  }\n\n  var previousPriorityLevel = currentPriorityLevel;\n  currentPriorityLevel = priorityLevel;\n\n  try {\n    return eventHandler();\n  } finally {\n    currentPriorityLevel = previousPriorityLevel;\n  }\n}\n\nfunction unstable_wrapCallback(callback) {\n  var parentPriorityLevel = currentPriorityLevel;\n  return function () {\n    // This is a fork of runWithPriority, inlined for performance.\n    var previousPriorityLevel = currentPriorityLevel;\n    currentPriorityLevel = parentPriorityLevel;\n\n    try {\n      return callback.apply(this, arguments);\n    } finally {\n      currentPriorityLevel = previousPriorityLevel;\n    }\n  };\n}\n\nfunction unstable_scheduleCallback(priorityLevel, callback, options) {\n  var currentTime = exports.unstable_now();\n  var startTime;\n\n  if (typeof options === 'object' && options !== null) {\n    var delay = options.delay;\n\n    if (typeof delay === 'number' && delay > 0) {\n      startTime = currentTime + delay;\n    } else {\n      startTime = currentTime;\n    }\n  } else {\n    startTime = currentTime;\n  }\n\n  var timeout;\n\n  switch (priorityLevel) {\n    case ImmediatePriority:\n      timeout = IMMEDIATE_PRIORITY_TIMEOUT;\n      break;\n\n    case UserBlockingPriority:\n      timeout = USER_BLOCKING_PRIORITY_TIMEOUT;\n      break;\n\n    case IdlePriority:\n      timeout = IDLE_PRIORITY_TIMEOUT;\n      break;\n\n    case LowPriority:\n      timeout = LOW_PRIORITY_TIMEOUT;\n      break;\n\n    case NormalPriority:\n    default:\n      timeout = NORMAL_PRIORITY_TIMEOUT;\n      break;\n  }\n\n  var expirationTime = startTime + timeout;\n  var newTask = {\n    id: taskIdCounter++,\n    callback: callback,\n    priorityLevel: priorityLevel,\n    startTime: startTime,\n    expirationTime: expirationTime,\n    sortIndex: -1\n  };\n\n  if (startTime > currentTime) {\n    // This is a delayed task.\n    newTask.sortIndex = startTime;\n    push(timerQueue, newTask);\n\n    if (peek(taskQueue) === null && newTask === peek(timerQueue)) {\n      // All tasks are delayed, and this is the task with the earliest delay.\n      if (isHostTimeoutScheduled) {\n        // Cancel an existing timeout.\n        cancelHostTimeout();\n      } else {\n        isHostTimeoutScheduled = true;\n      } // Schedule a timeout.\n\n\n      requestHostTimeout(handleTimeout, startTime - currentTime);\n    }\n  } else {\n    newTask.sortIndex = expirationTime;\n    push(taskQueue, newTask);\n    // wait until the next time we yield.\n\n\n    if (!isHostCallbackScheduled && !isPerformingWork) {\n      isHostCallbackScheduled = true;\n      requestHostCallback(flushWork);\n    }\n  }\n\n  return newTask;\n}\n\nfunction unstable_pauseExecution() {\n}\n\nfunction unstable_continueExecution() {\n\n  if (!isHostCallbackScheduled && !isPerformingWork) {\n    isHostCallbackScheduled = true;\n    requestHostCallback(flushWork);\n  }\n}\n\nfunction unstable_getFirstCallbackNode() {\n  return peek(taskQueue);\n}\n\nfunction unstable_cancelCallback(task) {\n  // remove from the queue because you can't remove arbitrary nodes from an\n  // array based heap, only the first one.)\n\n\n  task.callback = null;\n}\n\nfunction unstable_getCurrentPriorityLevel() {\n  return currentPriorityLevel;\n}\n\nvar isMessageLoopRunning = false;\nvar scheduledHostCallback = null;\nvar taskTimeoutID = -1; // Scheduler periodically yields in case there is other work on the main\n// thread, like user events. By default, it yields multiple times per frame.\n// It does not attempt to align with frame boundaries, since most tasks don't\n// need to be frame aligned; for those that do, use requestAnimationFrame.\n\nvar frameInterval = frameYieldMs;\nvar startTime = -1;\n\nfunction shouldYieldToHost() {\n  var timeElapsed = exports.unstable_now() - startTime;\n\n  if (timeElapsed < frameInterval) {\n    // The main thread has only been blocked for a really short amount of time;\n    // smaller than a single frame. Don't yield yet.\n    return false;\n  } // The main thread has been blocked for a non-negligible amount of time. We\n\n\n  return true;\n}\n\nfunction requestPaint() {\n\n}\n\nfunction forceFrameRate(fps) {\n  if (fps < 0 || fps > 125) {\n    // Using console['error'] to evade Babel and ESLint\n    console['error']('forceFrameRate takes a positive int between 0 and 125, ' + 'forcing frame rates higher than 125 fps is not supported');\n    return;\n  }\n\n  if (fps > 0) {\n    frameInterval = Math.floor(1000 / fps);\n  } else {\n    // reset the framerate\n    frameInterval = frameYieldMs;\n  }\n}\n\nvar performWorkUntilDeadline = function () {\n  if (scheduledHostCallback !== null) {\n    var currentTime = exports.unstable_now(); // Keep track of the start time so we can measure how long the main thread\n    // has been blocked.\n\n    startTime = currentTime;\n    var hasTimeRemaining = true; // If a scheduler task throws, exit the current browser task so the\n    // error can be observed.\n    //\n    // Intentionally not using a try-catch, since that makes some debugging\n    // techniques harder. Instead, if `scheduledHostCallback` errors, then\n    // `hasMoreWork` will remain true, and we'll continue the work loop.\n\n    var hasMoreWork = true;\n\n    try {\n      hasMoreWork = scheduledHostCallback(hasTimeRemaining, currentTime);\n    } finally {\n      if (hasMoreWork) {\n        // If there's more work, schedule the next message event at the end\n        // of the preceding one.\n        schedulePerformWorkUntilDeadline();\n      } else {\n        isMessageLoopRunning = false;\n        scheduledHostCallback = null;\n      }\n    }\n  } else {\n    isMessageLoopRunning = false;\n  } // Yielding to the browser will give it a chance to paint, so we can\n};\n\nvar schedulePerformWorkUntilDeadline;\n\nif (typeof localSetImmediate === 'function') {\n  // Node.js and old IE.\n  // There's a few reasons for why we prefer setImmediate.\n  //\n  // Unlike MessageChannel, it doesn't prevent a Node.js process from exiting.\n  // (Even though this is a DOM fork of the Scheduler, you could get here\n  // with a mix of Node.js 15+, which has a MessageChannel, and jsdom.)\n  // https://github.com/facebook/react/issues/20756\n  //\n  // But also, it runs earlier which is the semantic we want.\n  // If other browsers ever implement it, it's better to use it.\n  // Although both of these would be inferior to native scheduling.\n  schedulePerformWorkUntilDeadline = function () {\n    localSetImmediate(performWorkUntilDeadline);\n  };\n} else if (typeof MessageChannel !== 'undefined') {\n  // DOM and Worker environments.\n  // We prefer MessageChannel because of the 4ms setTimeout clamping.\n  var channel = new MessageChannel();\n  var port = channel.port2;\n  channel.port1.onmessage = performWorkUntilDeadline;\n\n  schedulePerformWorkUntilDeadline = function () {\n    port.postMessage(null);\n  };\n} else {\n  // We should only fallback here in non-browser environments.\n  schedulePerformWorkUntilDeadline = function () {\n    localSetTimeout(performWorkUntilDeadline, 0);\n  };\n}\n\nfunction requestHostCallback(callback) {\n  scheduledHostCallback = callback;\n\n  if (!isMessageLoopRunning) {\n    isMessageLoopRunning = true;\n    schedulePerformWorkUntilDeadline();\n  }\n}\n\nfunction requestHostTimeout(callback, ms) {\n  taskTimeoutID = localSetTimeout(function () {\n    callback(exports.unstable_now());\n  }, ms);\n}\n\nfunction cancelHostTimeout() {\n  localClearTimeout(taskTimeoutID);\n  taskTimeoutID = -1;\n}\n\nvar unstable_requestPaint = requestPaint;\nvar unstable_Profiling =  null;\n\nexports.unstable_IdlePriority = IdlePriority;\nexports.unstable_ImmediatePriority = ImmediatePriority;\nexports.unstable_LowPriority = LowPriority;\nexports.unstable_NormalPriority = NormalPriority;\nexports.unstable_Profiling = unstable_Profiling;\nexports.unstable_UserBlockingPriority = UserBlockingPriority;\nexports.unstable_cancelCallback = unstable_cancelCallback;\nexports.unstable_continueExecution = unstable_continueExecution;\nexports.unstable_forceFrameRate = forceFrameRate;\nexports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel;\nexports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode;\nexports.unstable_next = unstable_next;\nexports.unstable_pauseExecution = unstable_pauseExecution;\nexports.unstable_requestPaint = unstable_requestPaint;\nexports.unstable_runWithPriority = unstable_runWithPriority;\nexports.unstable_scheduleCallback = unstable_scheduleCallback;\nexports.unstable_shouldYield = shouldYieldToHost;\nexports.unstable_wrapCallback = unstable_wrapCallback;\n          /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n    'function'\n) {\n  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n        \n  })();\n}\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n  module.exports = require('./cjs/scheduler.development.js');\n}\n", "/**\n * @license React\n * react-dom.development.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\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n\n          'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n    'function'\n) {\n  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n          var React = require('react');\nvar Scheduler = require('scheduler');\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nvar suppressWarning = false;\nfunction setSuppressWarning(newSuppressWarning) {\n  {\n    suppressWarning = newSuppressWarning;\n  }\n} // In DEV, calls to console.warn and console.error get replaced\n// by calls to these methods by a Babel plugin.\n//\n// In PROD (or in packages without access to React internals),\n// they are left as they are instead.\n\nfunction warn(format) {\n  {\n    if (!suppressWarning) {\n      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      printWarning('warn', format, args);\n    }\n  }\n}\nfunction error(format) {\n  {\n    if (!suppressWarning) {\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      printWarning('error', format, args);\n    }\n  }\n}\n\nfunction printWarning(level, format, args) {\n  // When changing this logic, you might want to also\n  // update consoleWithStackDev.www.js as well.\n  {\n    var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n    var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n    if (stack !== '') {\n      format += '%s';\n      args = args.concat([stack]);\n    } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n    var argsWithFormat = args.map(function (item) {\n      return String(item);\n    }); // Careful: RN currently depends on this prefix\n\n    argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n    // breaks IE9: https://github.com/facebook/react/issues/13610\n    // eslint-disable-next-line react-internal/no-production-logging\n\n    Function.prototype.apply.call(console[level], console, argsWithFormat);\n  }\n}\n\nvar FunctionComponent = 0;\nvar ClassComponent = 1;\nvar IndeterminateComponent = 2; // Before we know whether it is function or class\n\nvar HostRoot = 3; // Root of a host tree. Could be nested inside another node.\n\nvar HostPortal = 4; // A subtree. Could be an entry point to a different renderer.\n\nvar HostComponent = 5;\nvar HostText = 6;\nvar Fragment = 7;\nvar Mode = 8;\nvar ContextConsumer = 9;\nvar ContextProvider = 10;\nvar ForwardRef = 11;\nvar Profiler = 12;\nvar SuspenseComponent = 13;\nvar MemoComponent = 14;\nvar SimpleMemoComponent = 15;\nvar LazyComponent = 16;\nvar IncompleteClassComponent = 17;\nvar DehydratedFragment = 18;\nvar SuspenseListComponent = 19;\nvar ScopeComponent = 21;\nvar OffscreenComponent = 22;\nvar LegacyHiddenComponent = 23;\nvar CacheComponent = 24;\nvar TracingMarkerComponent = 25;\n\n// -----------------------------------------------------------------------------\n\nvar enableClientRenderFallbackOnTextMismatch = true; // TODO: Need to review this code one more time before landing\n// the react-reconciler package.\n\nvar enableNewReconciler = false; // Support legacy Primer support on internal FB www\n\nvar enableLazyContextPropagation = false; // FB-only usage. The new API has different semantics.\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n\nvar enableSuspenseAvoidThisFallback = false; // Enables unstable_avoidThisFallback feature in Fizz\n// React DOM Chopping Block\n//\n// Similar to main Chopping Block but only flags related to React DOM. These are\n// grouped because we will likely batch all of them into a single major release.\n// -----------------------------------------------------------------------------\n// Disable support for comment nodes as React DOM containers. Already disabled\n// in open source, but www codebase still relies on it. Need to remove.\n\nvar disableCommentsAsDOMContainers = true; // Disable javascript: URL strings in href for XSS protection.\n// and client rendering, mostly to allow JSX attributes to apply to the custom\n// element's object properties instead of only HTML attributes.\n// https://github.com/facebook/react/issues/11347\n\nvar enableCustomElementPropertySupport = false; // Disables children for <textarea> elements\nvar warnAboutStringRefs = false; // -----------------------------------------------------------------------------\n// Debugging and DevTools\n// -----------------------------------------------------------------------------\n// Adds user timing marks for e.g. state updates, suspense, and work loop stuff,\n// for an experimental timeline tool.\n\nvar enableSchedulingProfiler = true; // Helps identify side effects in render-phase lifecycle hooks and setState\n\nvar enableProfilerTimer = true; // Record durations for commit and passive effects phases.\n\nvar enableProfilerCommitHooks = true; // Phase param passed to onRender callback differentiates between an \"update\" and a \"cascading-update\".\n\nvar allNativeEvents = new Set();\n/**\n * Mapping from registration name to event name\n */\n\n\nvar registrationNameDependencies = {};\n/**\n * Mapping from lowercase registration names to the properly cased version,\n * used to warn in the case of missing event handlers. Available\n * only in true.\n * @type {Object}\n */\n\nvar possibleRegistrationNames =  {} ; // Trust the developer to only use possibleRegistrationNames in true\n\nfunction registerTwoPhaseEvent(registrationName, dependencies) {\n  registerDirectEvent(registrationName, dependencies);\n  registerDirectEvent(registrationName + 'Capture', dependencies);\n}\nfunction registerDirectEvent(registrationName, dependencies) {\n  {\n    if (registrationNameDependencies[registrationName]) {\n      error('EventRegistry: More than one plugin attempted to publish the same ' + 'registration name, `%s`.', registrationName);\n    }\n  }\n\n  registrationNameDependencies[registrationName] = dependencies;\n\n  {\n    var lowerCasedName = registrationName.toLowerCase();\n    possibleRegistrationNames[lowerCasedName] = registrationName;\n\n    if (registrationName === 'onDoubleClick') {\n      possibleRegistrationNames.ondblclick = registrationName;\n    }\n  }\n\n  for (var i = 0; i < dependencies.length; i++) {\n    allNativeEvents.add(dependencies[i]);\n  }\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n  {\n    // toStringTag is needed for namespaced types like Temporal.Instant\n    var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n    var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n    return type;\n  }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n  {\n    try {\n      testStringCoercion(value);\n      return false;\n    } catch (e) {\n      return true;\n    }\n  }\n}\n\nfunction testStringCoercion(value) {\n  // If you ended up here by following an exception call stack, here's what's\n  // happened: you supplied an object or symbol value to React (as a prop, key,\n  // DOM attribute, CSS property, string ref, etc.) and when React tried to\n  // coerce it to a string using `'' + value`, an exception was thrown.\n  //\n  // The most common types that will cause this exception are `Symbol` instances\n  // and Temporal objects like `Temporal.Instant`. But any object that has a\n  // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n  // exception. (Library authors do this to prevent users from using built-in\n  // numeric operators like `+` or comparison operators like `>=` because custom\n  // methods are needed to perform accurate arithmetic or comparison.)\n  //\n  // To fix the problem, coerce this object or symbol value to a string before\n  // passing it to React. The most reliable way is usually `String(value)`.\n  //\n  // To find which value is throwing, check the browser or debugger console.\n  // Before this exception was thrown, there should be `console.error` output\n  // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n  // problem and how that type was used: key, atrribute, input value prop, etc.\n  // In most cases, this console output also shows the component and its\n  // ancestor components where the exception happened.\n  //\n  // eslint-disable-next-line react-internal/safe-string-coercion\n  return '' + value;\n}\n\nfunction checkAttributeStringCoercion(value, attributeName) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided `%s` attribute is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', attributeName, typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\nfunction checkKeyStringCoercion(value) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\nfunction checkPropStringCoercion(value, propName) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided `%s` prop is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', propName, typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\nfunction checkCSSPropertyStringCoercion(value, propName) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided `%s` CSS property is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', propName, typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\nfunction checkHtmlStringCoercion(value) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided HTML markup uses a value of unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\nfunction checkFormFieldValueStringCoercion(value) {\n  {\n    if (willCoercionThrow(value)) {\n      error('Form field values (value, checked, defaultValue, or defaultChecked props)' + ' must be strings, not %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\n\n// A reserved attribute.\n// It is handled by React separately and shouldn't be written to the DOM.\nvar RESERVED = 0; // A simple string attribute.\n// Attributes that aren't in the filter are presumed to have this type.\n\nvar STRING = 1; // A string attribute that accepts booleans in React. In HTML, these are called\n// \"enumerated\" attributes with \"true\" and \"false\" as possible values.\n// When true, it should be set to a \"true\" string.\n// When false, it should be set to a \"false\" string.\n\nvar BOOLEANISH_STRING = 2; // A real boolean attribute.\n// When true, it should be present (set either to an empty string or its name).\n// When false, it should be omitted.\n\nvar BOOLEAN = 3; // An attribute that can be used as a flag as well as with a value.\n// When true, it should be present (set either to an empty string or its name).\n// When false, it should be omitted.\n// For any other value, should be present with that value.\n\nvar OVERLOADED_BOOLEAN = 4; // An attribute that must be numeric or parse as a numeric.\n// When falsy, it should be removed.\n\nvar NUMERIC = 5; // An attribute that must be positive numeric or parse as a positive numeric.\n// When falsy, it should be removed.\n\nvar POSITIVE_NUMERIC = 6;\n\n/* eslint-disable max-len */\nvar ATTRIBUTE_NAME_START_CHAR = \":A-Z_a-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD\";\n/* eslint-enable max-len */\n\nvar ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + \"\\\\-.0-9\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040\";\nvar VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + ATTRIBUTE_NAME_START_CHAR + '][' + ATTRIBUTE_NAME_CHAR + ']*$');\nvar illegalAttributeNameCache = {};\nvar validatedAttributeNameCache = {};\nfunction isAttributeNameSafe(attributeName) {\n  if (hasOwnProperty.call(validatedAttributeNameCache, attributeName)) {\n    return true;\n  }\n\n  if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) {\n    return false;\n  }\n\n  if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {\n    validatedAttributeNameCache[attributeName] = true;\n    return true;\n  }\n\n  illegalAttributeNameCache[attributeName] = true;\n\n  {\n    error('Invalid attribute name: `%s`', attributeName);\n  }\n\n  return false;\n}\nfunction shouldIgnoreAttribute(name, propertyInfo, isCustomComponentTag) {\n  if (propertyInfo !== null) {\n    return propertyInfo.type === RESERVED;\n  }\n\n  if (isCustomComponentTag) {\n    return false;\n  }\n\n  if (name.length > 2 && (name[0] === 'o' || name[0] === 'O') && (name[1] === 'n' || name[1] === 'N')) {\n    return true;\n  }\n\n  return false;\n}\nfunction shouldRemoveAttributeWithWarning(name, value, propertyInfo, isCustomComponentTag) {\n  if (propertyInfo !== null && propertyInfo.type === RESERVED) {\n    return false;\n  }\n\n  switch (typeof value) {\n    case 'function': // $FlowIssue symbol is perfectly valid here\n\n    case 'symbol':\n      // eslint-disable-line\n      return true;\n\n    case 'boolean':\n      {\n        if (isCustomComponentTag) {\n          return false;\n        }\n\n        if (propertyInfo !== null) {\n          return !propertyInfo.acceptsBooleans;\n        } else {\n          var prefix = name.toLowerCase().slice(0, 5);\n          return prefix !== 'data-' && prefix !== 'aria-';\n        }\n      }\n\n    default:\n      return false;\n  }\n}\nfunction shouldRemoveAttribute(name, value, propertyInfo, isCustomComponentTag) {\n  if (value === null || typeof value === 'undefined') {\n    return true;\n  }\n\n  if (shouldRemoveAttributeWithWarning(name, value, propertyInfo, isCustomComponentTag)) {\n    return true;\n  }\n\n  if (isCustomComponentTag) {\n\n    return false;\n  }\n\n  if (propertyInfo !== null) {\n\n    switch (propertyInfo.type) {\n      case BOOLEAN:\n        return !value;\n\n      case OVERLOADED_BOOLEAN:\n        return value === false;\n\n      case NUMERIC:\n        return isNaN(value);\n\n      case POSITIVE_NUMERIC:\n        return isNaN(value) || value < 1;\n    }\n  }\n\n  return false;\n}\nfunction getPropertyInfo(name) {\n  return properties.hasOwnProperty(name) ? properties[name] : null;\n}\n\nfunction PropertyInfoRecord(name, type, mustUseProperty, attributeName, attributeNamespace, sanitizeURL, removeEmptyString) {\n  this.acceptsBooleans = type === BOOLEANISH_STRING || type === BOOLEAN || type === OVERLOADED_BOOLEAN;\n  this.attributeName = attributeName;\n  this.attributeNamespace = attributeNamespace;\n  this.mustUseProperty = mustUseProperty;\n  this.propertyName = name;\n  this.type = type;\n  this.sanitizeURL = sanitizeURL;\n  this.removeEmptyString = removeEmptyString;\n} // When adding attributes to this list, be sure to also add them to\n// the `possibleStandardNames` module to ensure casing and incorrect\n// name warnings.\n\n\nvar properties = {}; // These props are reserved by React. They shouldn't be written to the DOM.\n\nvar reservedProps = ['children', 'dangerouslySetInnerHTML', // TODO: This prevents the assignment of defaultValue to regular\n// elements (not just inputs). Now that ReactDOMInput assigns to the\n// defaultValue property -- do we need this?\n'defaultValue', 'defaultChecked', 'innerHTML', 'suppressContentEditableWarning', 'suppressHydrationWarning', 'style'];\n\nreservedProps.forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, RESERVED, false, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // A few React string attributes have a different name.\n// This is a mapping from React prop names to the attribute names.\n\n[['acceptCharset', 'accept-charset'], ['className', 'class'], ['htmlFor', 'for'], ['httpEquiv', 'http-equiv']].forEach(function (_ref) {\n  var name = _ref[0],\n      attributeName = _ref[1];\n  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n  attributeName, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are \"enumerated\" HTML attributes that accept \"true\" and \"false\".\n// In React, we let users pass `true` and `false` even though technically\n// these aren't boolean attributes (they are coerced to strings).\n\n['contentEditable', 'draggable', 'spellCheck', 'value'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty\n  name.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are \"enumerated\" SVG attributes that accept \"true\" and \"false\".\n// In React, we let users pass `true` and `false` even though technically\n// these aren't boolean attributes (they are coerced to strings).\n// Since these are SVG attributes, their attribute names are case-sensitive.\n\n['autoReverse', 'externalResourcesRequired', 'focusable', 'preserveAlpha'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are HTML boolean attributes.\n\n['allowFullScreen', 'async', // Note: there is a special case that prevents it from being written to the DOM\n// on the client side because the browsers are inconsistent. Instead we call focus().\n'autoFocus', 'autoPlay', 'controls', 'default', 'defer', 'disabled', 'disablePictureInPicture', 'disableRemotePlayback', 'formNoValidate', 'hidden', 'loop', 'noModule', 'noValidate', 'open', 'playsInline', 'readOnly', 'required', 'reversed', 'scoped', 'seamless', // Microdata\n'itemScope'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, BOOLEAN, false, // mustUseProperty\n  name.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are the few React props that we set as DOM properties\n// rather than attributes. These are all booleans.\n\n['checked', // Note: `option.selected` is not updated if `select.multiple` is\n// disabled with `removeAttribute`. We have special logic for handling this.\n'multiple', 'muted', 'selected' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, BOOLEAN, true, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are HTML attributes that are \"overloaded booleans\": they behave like\n// booleans, but can also accept a string value.\n\n['capture', 'download' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, OVERLOADED_BOOLEAN, false, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are HTML attributes that must be positive numbers.\n\n['cols', 'rows', 'size', 'span' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, POSITIVE_NUMERIC, false, // mustUseProperty\n  name, // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These are HTML attributes that must be numbers.\n\n['rowSpan', 'start'].forEach(function (name) {\n  properties[name] = new PropertyInfoRecord(name, NUMERIC, false, // mustUseProperty\n  name.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n});\nvar CAMELIZE = /[\\-\\:]([a-z])/g;\n\nvar capitalize = function (token) {\n  return token[1].toUpperCase();\n}; // This is a list of all SVG attributes that need special casing, namespacing,\n// or boolean value assignment. Regular attributes that just accept strings\n// and have the same names are omitted, just like in the HTML attribute filter.\n// Some of these attributes can be hard to find. This list was created by\n// scraping the MDN documentation.\n\n\n['accent-height', 'alignment-baseline', 'arabic-form', 'baseline-shift', 'cap-height', 'clip-path', 'clip-rule', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'dominant-baseline', 'enable-background', 'fill-opacity', 'fill-rule', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'glyph-name', 'glyph-orientation-horizontal', 'glyph-orientation-vertical', 'horiz-adv-x', 'horiz-origin-x', 'image-rendering', 'letter-spacing', 'lighting-color', 'marker-end', 'marker-mid', 'marker-start', 'overline-position', 'overline-thickness', 'paint-order', 'panose-1', 'pointer-events', 'rendering-intent', 'shape-rendering', 'stop-color', 'stop-opacity', 'strikethrough-position', 'strikethrough-thickness', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'text-anchor', 'text-decoration', 'text-rendering', 'underline-position', 'underline-thickness', 'unicode-bidi', 'unicode-range', 'units-per-em', 'v-alphabetic', 'v-hanging', 'v-ideographic', 'v-mathematical', 'vector-effect', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'word-spacing', 'writing-mode', 'xmlns:xlink', 'x-height' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (attributeName) {\n  var name = attributeName.replace(CAMELIZE, capitalize);\n  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n  attributeName, null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // String SVG attributes with the xlink namespace.\n\n['xlink:actuate', 'xlink:arcrole', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (attributeName) {\n  var name = attributeName.replace(CAMELIZE, capitalize);\n  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n  attributeName, 'http://www.w3.org/1999/xlink', false, // sanitizeURL\n  false);\n}); // String SVG attributes with the xml namespace.\n\n['xml:base', 'xml:lang', 'xml:space' // NOTE: if you add a camelCased prop to this list,\n// you'll need to set attributeName to name.toLowerCase()\n// instead in the assignment below.\n].forEach(function (attributeName) {\n  var name = attributeName.replace(CAMELIZE, capitalize);\n  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty\n  attributeName, 'http://www.w3.org/XML/1998/namespace', false, // sanitizeURL\n  false);\n}); // These attribute exists both in HTML and SVG.\n// The attribute name is case-sensitive in SVG so we can't just use\n// the React name like we do for attributes that exist only in HTML.\n\n['tabIndex', 'crossOrigin'].forEach(function (attributeName) {\n  properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty\n  attributeName.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  false, // sanitizeURL\n  false);\n}); // These attributes accept URLs. These must not allow javascript: URLS.\n// These will also need to accept Trusted Types object in the future.\n\nvar xlinkHref = 'xlinkHref';\nproperties[xlinkHref] = new PropertyInfoRecord('xlinkHref', STRING, false, // mustUseProperty\n'xlink:href', 'http://www.w3.org/1999/xlink', true, // sanitizeURL\nfalse);\n['src', 'href', 'action', 'formAction'].forEach(function (attributeName) {\n  properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty\n  attributeName.toLowerCase(), // attributeName\n  null, // attributeNamespace\n  true, // sanitizeURL\n  true);\n});\n\n// and any newline or tab are filtered out as if they're not part of the URL.\n// https://url.spec.whatwg.org/#url-parsing\n// Tab or newline are defined as \\r\\n\\t:\n// https://infra.spec.whatwg.org/#ascii-tab-or-newline\n// A C0 control is a code point in the range \\u0000 NULL to \\u001F\n// INFORMATION SEPARATOR ONE, inclusive:\n// https://infra.spec.whatwg.org/#c0-control-or-space\n\n/* eslint-disable max-len */\n\nvar isJavaScriptProtocol = /^[\\u0000-\\u001F ]*j[\\r\\n\\t]*a[\\r\\n\\t]*v[\\r\\n\\t]*a[\\r\\n\\t]*s[\\r\\n\\t]*c[\\r\\n\\t]*r[\\r\\n\\t]*i[\\r\\n\\t]*p[\\r\\n\\t]*t[\\r\\n\\t]*\\:/i;\nvar didWarn = false;\n\nfunction sanitizeURL(url) {\n  {\n    if (!didWarn && isJavaScriptProtocol.test(url)) {\n      didWarn = true;\n\n      error('A future version of React will block javascript: URLs as a security precaution. ' + 'Use event handlers instead if you can. If you need to generate unsafe HTML try ' + 'using dangerouslySetInnerHTML instead. React was passed %s.', JSON.stringify(url));\n    }\n  }\n}\n\n/**\n * Get the value for a property on a node. Only used in DEV for SSR validation.\n * The \"expected\" argument is used as a hint of what the expected value is.\n * Some properties have multiple equivalent values.\n */\nfunction getValueForProperty(node, name, expected, propertyInfo) {\n  {\n    if (propertyInfo.mustUseProperty) {\n      var propertyName = propertyInfo.propertyName;\n      return node[propertyName];\n    } else {\n      // This check protects multiple uses of `expected`, which is why the\n      // react-internal/safe-string-coercion rule is disabled in several spots\n      // below.\n      {\n        checkAttributeStringCoercion(expected, name);\n      }\n\n      if ( propertyInfo.sanitizeURL) {\n        // If we haven't fully disabled javascript: URLs, and if\n        // the hydration is successful of a javascript: URL, we\n        // still want to warn on the client.\n        // eslint-disable-next-line react-internal/safe-string-coercion\n        sanitizeURL('' + expected);\n      }\n\n      var attributeName = propertyInfo.attributeName;\n      var stringValue = null;\n\n      if (propertyInfo.type === OVERLOADED_BOOLEAN) {\n        if (node.hasAttribute(attributeName)) {\n          var value = node.getAttribute(attributeName);\n\n          if (value === '') {\n            return true;\n          }\n\n          if (shouldRemoveAttribute(name, expected, propertyInfo, false)) {\n            return value;\n          } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n          if (value === '' + expected) {\n            return expected;\n          }\n\n          return value;\n        }\n      } else if (node.hasAttribute(attributeName)) {\n        if (shouldRemoveAttribute(name, expected, propertyInfo, false)) {\n          // We had an attribute but shouldn't have had one, so read it\n          // for the error message.\n          return node.getAttribute(attributeName);\n        }\n\n        if (propertyInfo.type === BOOLEAN) {\n          // If this was a boolean, it doesn't matter what the value is\n          // the fact that we have it is the same as the expected.\n          return expected;\n        } // Even if this property uses a namespace we use getAttribute\n        // because we assume its namespaced name is the same as our config.\n        // To use getAttributeNS we need the local name which we don't have\n        // in our config atm.\n\n\n        stringValue = node.getAttribute(attributeName);\n      }\n\n      if (shouldRemoveAttribute(name, expected, propertyInfo, false)) {\n        return stringValue === null ? expected : stringValue; // eslint-disable-next-line react-internal/safe-string-coercion\n      } else if (stringValue === '' + expected) {\n        return expected;\n      } else {\n        return stringValue;\n      }\n    }\n  }\n}\n/**\n * Get the value for a attribute on a node. Only used in DEV for SSR validation.\n * The third argument is used as a hint of what the expected value is. Some\n * attributes have multiple equivalent values.\n */\n\nfunction getValueForAttribute(node, name, expected, isCustomComponentTag) {\n  {\n    if (!isAttributeNameSafe(name)) {\n      return;\n    }\n\n    if (!node.hasAttribute(name)) {\n      return expected === undefined ? undefined : null;\n    }\n\n    var value = node.getAttribute(name);\n\n    {\n      checkAttributeStringCoercion(expected, name);\n    }\n\n    if (value === '' + expected) {\n      return expected;\n    }\n\n    return value;\n  }\n}\n/**\n * Sets the value for a property on a node.\n *\n * @param {DOMElement} node\n * @param {string} name\n * @param {*} value\n */\n\nfunction setValueForProperty(node, name, value, isCustomComponentTag) {\n  var propertyInfo = getPropertyInfo(name);\n\n  if (shouldIgnoreAttribute(name, propertyInfo, isCustomComponentTag)) {\n    return;\n  }\n\n  if (shouldRemoveAttribute(name, value, propertyInfo, isCustomComponentTag)) {\n    value = null;\n  }\n\n\n  if (isCustomComponentTag || propertyInfo === null) {\n    if (isAttributeNameSafe(name)) {\n      var _attributeName = name;\n\n      if (value === null) {\n        node.removeAttribute(_attributeName);\n      } else {\n        {\n          checkAttributeStringCoercion(value, name);\n        }\n\n        node.setAttribute(_attributeName,  '' + value);\n      }\n    }\n\n    return;\n  }\n\n  var mustUseProperty = propertyInfo.mustUseProperty;\n\n  if (mustUseProperty) {\n    var propertyName = propertyInfo.propertyName;\n\n    if (value === null) {\n      var type = propertyInfo.type;\n      node[propertyName] = type === BOOLEAN ? false : '';\n    } else {\n      // Contrary to `setAttribute`, object properties are properly\n      // `toString`ed by IE8/9.\n      node[propertyName] = value;\n    }\n\n    return;\n  } // The rest are treated as attributes with special cases.\n\n\n  var attributeName = propertyInfo.attributeName,\n      attributeNamespace = propertyInfo.attributeNamespace;\n\n  if (value === null) {\n    node.removeAttribute(attributeName);\n  } else {\n    var _type = propertyInfo.type;\n    var attributeValue;\n\n    if (_type === BOOLEAN || _type === OVERLOADED_BOOLEAN && value === true) {\n      // If attribute type is boolean, we know for sure it won't be an execution sink\n      // and we won't require Trusted Type here.\n      attributeValue = '';\n    } else {\n      // `setAttribute` with objects becomes only `[object]` in IE8/9,\n      // ('' + value) makes it output the correct toString()-value.\n      {\n        {\n          checkAttributeStringCoercion(value, attributeName);\n        }\n\n        attributeValue = '' + value;\n      }\n\n      if (propertyInfo.sanitizeURL) {\n        sanitizeURL(attributeValue.toString());\n      }\n    }\n\n    if (attributeNamespace) {\n      node.setAttributeNS(attributeNamespace, attributeName, attributeValue);\n    } else {\n      node.setAttribute(attributeName, attributeValue);\n    }\n  }\n}\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_SCOPE_TYPE = Symbol.for('react.scope');\nvar REACT_DEBUG_TRACING_MODE_TYPE = Symbol.for('react.debug_trace_mode');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar REACT_LEGACY_HIDDEN_TYPE = Symbol.for('react.legacy_hidden');\nvar REACT_CACHE_TYPE = Symbol.for('react.cache');\nvar REACT_TRACING_MARKER_TYPE = Symbol.for('react.tracing_marker');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n  if (maybeIterable === null || typeof maybeIterable !== 'object') {\n    return null;\n  }\n\n  var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n  if (typeof maybeIterator === 'function') {\n    return maybeIterator;\n  }\n\n  return null;\n}\n\nvar assign = Object.assign;\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n  {\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      prevLog = console.log;\n      prevInfo = console.info;\n      prevWarn = console.warn;\n      prevError = console.error;\n      prevGroup = console.group;\n      prevGroupCollapsed = console.groupCollapsed;\n      prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n      var props = {\n        configurable: true,\n        enumerable: true,\n        value: disabledLog,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        info: props,\n        log: props,\n        warn: props,\n        error: props,\n        group: props,\n        groupCollapsed: props,\n        groupEnd: props\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    disabledDepth++;\n  }\n}\nfunction reenableLogs() {\n  {\n    disabledDepth--;\n\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      var props = {\n        configurable: true,\n        enumerable: true,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        log: assign({}, props, {\n          value: prevLog\n        }),\n        info: assign({}, props, {\n          value: prevInfo\n        }),\n        warn: assign({}, props, {\n          value: prevWarn\n        }),\n        error: assign({}, props, {\n          value: prevError\n        }),\n        group: assign({}, props, {\n          value: prevGroup\n        }),\n        groupCollapsed: assign({}, props, {\n          value: prevGroupCollapsed\n        }),\n        groupEnd: assign({}, props, {\n          value: prevGroupEnd\n        })\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    if (disabledDepth < 0) {\n      error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n    }\n  }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n  {\n    if (prefix === undefined) {\n      // Extract the VM specific prefix used by each line.\n      try {\n        throw Error();\n      } catch (x) {\n        var match = x.stack.trim().match(/\\n( *(at )?)/);\n        prefix = match && match[1] || '';\n      }\n    } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n    return '\\n' + prefix + name;\n  }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n  var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n  componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n  // If something asked for a stack inside a fake render, it should get ignored.\n  if ( !fn || reentry) {\n    return '';\n  }\n\n  {\n    var frame = componentFrameCache.get(fn);\n\n    if (frame !== undefined) {\n      return frame;\n    }\n  }\n\n  var control;\n  reentry = true;\n  var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n  Error.prepareStackTrace = undefined;\n  var previousDispatcher;\n\n  {\n    previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n    // for warnings.\n\n    ReactCurrentDispatcher.current = null;\n    disableLogs();\n  }\n\n  try {\n    // This should throw.\n    if (construct) {\n      // Something should be setting the props in the constructor.\n      var Fake = function () {\n        throw Error();\n      }; // $FlowFixMe\n\n\n      Object.defineProperty(Fake.prototype, 'props', {\n        set: function () {\n          // We use a throwing setter instead of frozen or non-writable props\n          // because that won't throw in a non-strict mode function.\n          throw Error();\n        }\n      });\n\n      if (typeof Reflect === 'object' && Reflect.construct) {\n        // We construct a different control for this case to include any extra\n        // frames added by the construct call.\n        try {\n          Reflect.construct(Fake, []);\n        } catch (x) {\n          control = x;\n        }\n\n        Reflect.construct(fn, [], Fake);\n      } else {\n        try {\n          Fake.call();\n        } catch (x) {\n          control = x;\n        }\n\n        fn.call(Fake.prototype);\n      }\n    } else {\n      try {\n        throw Error();\n      } catch (x) {\n        control = x;\n      }\n\n      fn();\n    }\n  } catch (sample) {\n    // This is inlined manually because closure doesn't do it for us.\n    if (sample && control && typeof sample.stack === 'string') {\n      // This extracts the first frame from the sample that isn't also in the control.\n      // Skipping one frame that we assume is the frame that calls the two.\n      var sampleLines = sample.stack.split('\\n');\n      var controlLines = control.stack.split('\\n');\n      var s = sampleLines.length - 1;\n      var c = controlLines.length - 1;\n\n      while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n        // We expect at least one stack frame to be shared.\n        // Typically this will be the root most one. However, stack frames may be\n        // cut off due to maximum stack limits. In this case, one maybe cut off\n        // earlier than the other. We assume that the sample is longer or the same\n        // and there for cut off earlier. So we should find the root most frame in\n        // the sample somewhere in the control.\n        c--;\n      }\n\n      for (; s >= 1 && c >= 0; s--, c--) {\n        // Next we find the first one that isn't the same which should be the\n        // frame that called our sample function and the control.\n        if (sampleLines[s] !== controlLines[c]) {\n          // In V8, the first line is describing the message but other VMs don't.\n          // If we're about to return the first line, and the control is also on the same\n          // line, that's a pretty good indicator that our sample threw at same line as\n          // the control. I.e. before we entered the sample frame. So we ignore this result.\n          // This can happen if you passed a class to function component, or non-function.\n          if (s !== 1 || c !== 1) {\n            do {\n              s--;\n              c--; // We may still have similar intermediate frames from the construct call.\n              // The next one that isn't the same should be our match though.\n\n              if (c < 0 || sampleLines[s] !== controlLines[c]) {\n                // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n                var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"<anonymous>\"\n                // but we have a user-provided \"displayName\"\n                // splice it in to make the stack more readable.\n\n\n                if (fn.displayName && _frame.includes('<anonymous>')) {\n                  _frame = _frame.replace('<anonymous>', fn.displayName);\n                }\n\n                {\n                  if (typeof fn === 'function') {\n                    componentFrameCache.set(fn, _frame);\n                  }\n                } // Return the line we found.\n\n\n                return _frame;\n              }\n            } while (s >= 1 && c >= 0);\n          }\n\n          break;\n        }\n      }\n    }\n  } finally {\n    reentry = false;\n\n    {\n      ReactCurrentDispatcher.current = previousDispatcher;\n      reenableLogs();\n    }\n\n    Error.prepareStackTrace = previousPrepareStackTrace;\n  } // Fallback to just using the name if we couldn't make it throw.\n\n\n  var name = fn ? fn.displayName || fn.name : '';\n  var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n  {\n    if (typeof fn === 'function') {\n      componentFrameCache.set(fn, syntheticFrame);\n    }\n  }\n\n  return syntheticFrame;\n}\n\nfunction describeClassComponentFrame(ctor, source, ownerFn) {\n  {\n    return describeNativeComponentFrame(ctor, true);\n  }\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n  {\n    return describeNativeComponentFrame(fn, false);\n  }\n}\n\nfunction shouldConstruct(Component) {\n  var prototype = Component.prototype;\n  return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n  if (type == null) {\n    return '';\n  }\n\n  if (typeof type === 'function') {\n    {\n      return describeNativeComponentFrame(type, shouldConstruct(type));\n    }\n  }\n\n  if (typeof type === 'string') {\n    return describeBuiltInComponentFrame(type);\n  }\n\n  switch (type) {\n    case REACT_SUSPENSE_TYPE:\n      return describeBuiltInComponentFrame('Suspense');\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return describeBuiltInComponentFrame('SuspenseList');\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_FORWARD_REF_TYPE:\n        return describeFunctionComponentFrame(type.render);\n\n      case REACT_MEMO_TYPE:\n        // Memo may contain any component type so we recursively resolve it.\n        return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            // Lazy may contain any component type so we recursively resolve it.\n            return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n          } catch (x) {}\n        }\n    }\n  }\n\n  return '';\n}\n\nfunction describeFiber(fiber) {\n  var owner =  fiber._debugOwner ? fiber._debugOwner.type : null ;\n  var source =  fiber._debugSource ;\n\n  switch (fiber.tag) {\n    case HostComponent:\n      return describeBuiltInComponentFrame(fiber.type);\n\n    case LazyComponent:\n      return describeBuiltInComponentFrame('Lazy');\n\n    case SuspenseComponent:\n      return describeBuiltInComponentFrame('Suspense');\n\n    case SuspenseListComponent:\n      return describeBuiltInComponentFrame('SuspenseList');\n\n    case FunctionComponent:\n    case IndeterminateComponent:\n    case SimpleMemoComponent:\n      return describeFunctionComponentFrame(fiber.type);\n\n    case ForwardRef:\n      return describeFunctionComponentFrame(fiber.type.render);\n\n    case ClassComponent:\n      return describeClassComponentFrame(fiber.type);\n\n    default:\n      return '';\n  }\n}\n\nfunction getStackByFiberInDevAndProd(workInProgress) {\n  try {\n    var info = '';\n    var node = workInProgress;\n\n    do {\n      info += describeFiber(node);\n      node = node.return;\n    } while (node);\n\n    return info;\n  } catch (x) {\n    return '\\nError generating stack: ' + x.message + '\\n' + x.stack;\n  }\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n  var displayName = outerType.displayName;\n\n  if (displayName) {\n    return displayName;\n  }\n\n  var functionName = innerType.displayName || innerType.name || '';\n  return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n  return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n  if (type == null) {\n    // Host root, text node or just invalid type.\n    return null;\n  }\n\n  {\n    if (typeof type.tag === 'number') {\n      error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n    }\n  }\n\n  if (typeof type === 'function') {\n    return type.displayName || type.name || null;\n  }\n\n  if (typeof type === 'string') {\n    return type;\n  }\n\n  switch (type) {\n    case REACT_FRAGMENT_TYPE:\n      return 'Fragment';\n\n    case REACT_PORTAL_TYPE:\n      return 'Portal';\n\n    case REACT_PROFILER_TYPE:\n      return 'Profiler';\n\n    case REACT_STRICT_MODE_TYPE:\n      return 'StrictMode';\n\n    case REACT_SUSPENSE_TYPE:\n      return 'Suspense';\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return 'SuspenseList';\n\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_CONTEXT_TYPE:\n        var context = type;\n        return getContextName(context) + '.Consumer';\n\n      case REACT_PROVIDER_TYPE:\n        var provider = type;\n        return getContextName(provider._context) + '.Provider';\n\n      case REACT_FORWARD_REF_TYPE:\n        return getWrappedName(type, type.render, 'ForwardRef');\n\n      case REACT_MEMO_TYPE:\n        var outerName = type.displayName || null;\n\n        if (outerName !== null) {\n          return outerName;\n        }\n\n        return getComponentNameFromType(type.type) || 'Memo';\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            return getComponentNameFromType(init(payload));\n          } catch (x) {\n            return null;\n          }\n        }\n\n      // eslint-disable-next-line no-fallthrough\n    }\n  }\n\n  return null;\n}\n\nfunction getWrappedName$1(outerType, innerType, wrapperName) {\n  var functionName = innerType.displayName || innerType.name || '';\n  return outerType.displayName || (functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName);\n} // Keep in sync with shared/getComponentNameFromType\n\n\nfunction getContextName$1(type) {\n  return type.displayName || 'Context';\n}\n\nfunction getComponentNameFromFiber(fiber) {\n  var tag = fiber.tag,\n      type = fiber.type;\n\n  switch (tag) {\n    case CacheComponent:\n      return 'Cache';\n\n    case ContextConsumer:\n      var context = type;\n      return getContextName$1(context) + '.Consumer';\n\n    case ContextProvider:\n      var provider = type;\n      return getContextName$1(provider._context) + '.Provider';\n\n    case DehydratedFragment:\n      return 'DehydratedFragment';\n\n    case ForwardRef:\n      return getWrappedName$1(type, type.render, 'ForwardRef');\n\n    case Fragment:\n      return 'Fragment';\n\n    case HostComponent:\n      // Host component type is the display name (e.g. \"div\", \"View\")\n      return type;\n\n    case HostPortal:\n      return 'Portal';\n\n    case HostRoot:\n      return 'Root';\n\n    case HostText:\n      return 'Text';\n\n    case LazyComponent:\n      // Name comes from the type in this case; we don't have a tag.\n      return getComponentNameFromType(type);\n\n    case Mode:\n      if (type === REACT_STRICT_MODE_TYPE) {\n        // Don't be less specific than shared/getComponentNameFromType\n        return 'StrictMode';\n      }\n\n      return 'Mode';\n\n    case OffscreenComponent:\n      return 'Offscreen';\n\n    case Profiler:\n      return 'Profiler';\n\n    case ScopeComponent:\n      return 'Scope';\n\n    case SuspenseComponent:\n      return 'Suspense';\n\n    case SuspenseListComponent:\n      return 'SuspenseList';\n\n    case TracingMarkerComponent:\n      return 'TracingMarker';\n    // The display name for this tags come from the user-provided type:\n\n    case ClassComponent:\n    case FunctionComponent:\n    case IncompleteClassComponent:\n    case IndeterminateComponent:\n    case MemoComponent:\n    case SimpleMemoComponent:\n      if (typeof type === 'function') {\n        return type.displayName || type.name || null;\n      }\n\n      if (typeof type === 'string') {\n        return type;\n      }\n\n      break;\n\n  }\n\n  return null;\n}\n\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\nvar current = null;\nvar isRendering = false;\nfunction getCurrentFiberOwnerNameInDevOrNull() {\n  {\n    if (current === null) {\n      return null;\n    }\n\n    var owner = current._debugOwner;\n\n    if (owner !== null && typeof owner !== 'undefined') {\n      return getComponentNameFromFiber(owner);\n    }\n  }\n\n  return null;\n}\n\nfunction getCurrentFiberStackInDev() {\n  {\n    if (current === null) {\n      return '';\n    } // Safe because if current fiber exists, we are reconciling,\n    // and it is guaranteed to be the work-in-progress version.\n\n\n    return getStackByFiberInDevAndProd(current);\n  }\n}\n\nfunction resetCurrentFiber() {\n  {\n    ReactDebugCurrentFrame.getCurrentStack = null;\n    current = null;\n    isRendering = false;\n  }\n}\nfunction setCurrentFiber(fiber) {\n  {\n    ReactDebugCurrentFrame.getCurrentStack = fiber === null ? null : getCurrentFiberStackInDev;\n    current = fiber;\n    isRendering = false;\n  }\n}\nfunction getCurrentFiber() {\n  {\n    return current;\n  }\n}\nfunction setIsRendering(rendering) {\n  {\n    isRendering = rendering;\n  }\n}\n\n// Flow does not allow string concatenation of most non-string types. To work\n// around this limitation, we use an opaque type that can only be obtained by\n// passing the value through getToStringValue first.\nfunction toString(value) {\n  // The coercion safety check is performed in getToStringValue().\n  // eslint-disable-next-line react-internal/safe-string-coercion\n  return '' + value;\n}\nfunction getToStringValue(value) {\n  switch (typeof value) {\n    case 'boolean':\n    case 'number':\n    case 'string':\n    case 'undefined':\n      return value;\n\n    case 'object':\n      {\n        checkFormFieldValueStringCoercion(value);\n      }\n\n      return value;\n\n    default:\n      // function, symbol are assigned as empty strings\n      return '';\n  }\n}\n\nvar hasReadOnlyValue = {\n  button: true,\n  checkbox: true,\n  image: true,\n  hidden: true,\n  radio: true,\n  reset: true,\n  submit: true\n};\nfunction checkControlledValueProps(tagName, props) {\n  {\n    if (!(hasReadOnlyValue[props.type] || props.onChange || props.onInput || props.readOnly || props.disabled || props.value == null)) {\n      error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n    }\n\n    if (!(props.onChange || props.readOnly || props.disabled || props.checked == null)) {\n      error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.');\n    }\n  }\n}\n\nfunction isCheckable(elem) {\n  var type = elem.type;\n  var nodeName = elem.nodeName;\n  return nodeName && nodeName.toLowerCase() === 'input' && (type === 'checkbox' || type === 'radio');\n}\n\nfunction getTracker(node) {\n  return node._valueTracker;\n}\n\nfunction detachTracker(node) {\n  node._valueTracker = null;\n}\n\nfunction getValueFromNode(node) {\n  var value = '';\n\n  if (!node) {\n    return value;\n  }\n\n  if (isCheckable(node)) {\n    value = node.checked ? 'true' : 'false';\n  } else {\n    value = node.value;\n  }\n\n  return value;\n}\n\nfunction trackValueOnNode(node) {\n  var valueField = isCheckable(node) ? 'checked' : 'value';\n  var descriptor = Object.getOwnPropertyDescriptor(node.constructor.prototype, valueField);\n\n  {\n    checkFormFieldValueStringCoercion(node[valueField]);\n  }\n\n  var currentValue = '' + node[valueField]; // if someone has already defined a value or Safari, then bail\n  // and don't track value will cause over reporting of changes,\n  // but it's better then a hard failure\n  // (needed for certain tests that spyOn input values and Safari)\n\n  if (node.hasOwnProperty(valueField) || typeof descriptor === 'undefined' || typeof descriptor.get !== 'function' || typeof descriptor.set !== 'function') {\n    return;\n  }\n\n  var get = descriptor.get,\n      set = descriptor.set;\n  Object.defineProperty(node, valueField, {\n    configurable: true,\n    get: function () {\n      return get.call(this);\n    },\n    set: function (value) {\n      {\n        checkFormFieldValueStringCoercion(value);\n      }\n\n      currentValue = '' + value;\n      set.call(this, value);\n    }\n  }); // We could've passed this the first time\n  // but it triggers a bug in IE11 and Edge 14/15.\n  // Calling defineProperty() again should be equivalent.\n  // https://github.com/facebook/react/issues/11768\n\n  Object.defineProperty(node, valueField, {\n    enumerable: descriptor.enumerable\n  });\n  var tracker = {\n    getValue: function () {\n      return currentValue;\n    },\n    setValue: function (value) {\n      {\n        checkFormFieldValueStringCoercion(value);\n      }\n\n      currentValue = '' + value;\n    },\n    stopTracking: function () {\n      detachTracker(node);\n      delete node[valueField];\n    }\n  };\n  return tracker;\n}\n\nfunction track(node) {\n  if (getTracker(node)) {\n    return;\n  } // TODO: Once it's just Fiber we can move this to node._wrapperState\n\n\n  node._valueTracker = trackValueOnNode(node);\n}\nfunction updateValueIfChanged(node) {\n  if (!node) {\n    return false;\n  }\n\n  var tracker = getTracker(node); // if there is no tracker at this point it's unlikely\n  // that trying again will succeed\n\n  if (!tracker) {\n    return true;\n  }\n\n  var lastValue = tracker.getValue();\n  var nextValue = getValueFromNode(node);\n\n  if (nextValue !== lastValue) {\n    tracker.setValue(nextValue);\n    return true;\n  }\n\n  return false;\n}\n\nfunction getActiveElement(doc) {\n  doc = doc || (typeof document !== 'undefined' ? document : undefined);\n\n  if (typeof doc === 'undefined') {\n    return null;\n  }\n\n  try {\n    return doc.activeElement || doc.body;\n  } catch (e) {\n    return doc.body;\n  }\n}\n\nvar didWarnValueDefaultValue = false;\nvar didWarnCheckedDefaultChecked = false;\nvar didWarnControlledToUncontrolled = false;\nvar didWarnUncontrolledToControlled = false;\n\nfunction isControlled(props) {\n  var usesChecked = props.type === 'checkbox' || props.type === 'radio';\n  return usesChecked ? props.checked != null : props.value != null;\n}\n/**\n * Implements an <input> host component that allows setting these optional\n * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.\n *\n * If `checked` or `value` are not supplied (or null/undefined), user actions\n * that affect the checked state or value will trigger updates to the element.\n *\n * If they are supplied (and not null/undefined), the rendered element will not\n * trigger updates to the element. Instead, the props must change in order for\n * the rendered element to be updated.\n *\n * The rendered element will be initialized as unchecked (or `defaultChecked`)\n * with an empty value (or `defaultValue`).\n *\n * See http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html\n */\n\n\nfunction getHostProps(element, props) {\n  var node = element;\n  var checked = props.checked;\n  var hostProps = assign({}, props, {\n    defaultChecked: undefined,\n    defaultValue: undefined,\n    value: undefined,\n    checked: checked != null ? checked : node._wrapperState.initialChecked\n  });\n  return hostProps;\n}\nfunction initWrapperState(element, props) {\n  {\n    checkControlledValueProps('input', props);\n\n    if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) {\n      error('%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://reactjs.org/link/controlled-components', getCurrentFiberOwnerNameInDevOrNull() || 'A component', props.type);\n\n      didWarnCheckedDefaultChecked = true;\n    }\n\n    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {\n      error('%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://reactjs.org/link/controlled-components', getCurrentFiberOwnerNameInDevOrNull() || 'A component', props.type);\n\n      didWarnValueDefaultValue = true;\n    }\n  }\n\n  var node = element;\n  var defaultValue = props.defaultValue == null ? '' : props.defaultValue;\n  node._wrapperState = {\n    initialChecked: props.checked != null ? props.checked : props.defaultChecked,\n    initialValue: getToStringValue(props.value != null ? props.value : defaultValue),\n    controlled: isControlled(props)\n  };\n}\nfunction updateChecked(element, props) {\n  var node = element;\n  var checked = props.checked;\n\n  if (checked != null) {\n    setValueForProperty(node, 'checked', checked, false);\n  }\n}\nfunction updateWrapper(element, props) {\n  var node = element;\n\n  {\n    var controlled = isControlled(props);\n\n    if (!node._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) {\n      error('A component is changing an uncontrolled input to be controlled. ' + 'This is likely caused by the value changing from undefined to ' + 'a defined value, which should not happen. ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://reactjs.org/link/controlled-components');\n\n      didWarnUncontrolledToControlled = true;\n    }\n\n    if (node._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) {\n      error('A component is changing a controlled input to be uncontrolled. ' + 'This is likely caused by the value changing from a defined to ' + 'undefined, which should not happen. ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://reactjs.org/link/controlled-components');\n\n      didWarnControlledToUncontrolled = true;\n    }\n  }\n\n  updateChecked(element, props);\n  var value = getToStringValue(props.value);\n  var type = props.type;\n\n  if (value != null) {\n    if (type === 'number') {\n      if (value === 0 && node.value === '' || // We explicitly want to coerce to number here if possible.\n      // eslint-disable-next-line\n      node.value != value) {\n        node.value = toString(value);\n      }\n    } else if (node.value !== toString(value)) {\n      node.value = toString(value);\n    }\n  } else if (type === 'submit' || type === 'reset') {\n    // Submit/reset inputs need the attribute removed completely to avoid\n    // blank-text buttons.\n    node.removeAttribute('value');\n    return;\n  }\n\n  {\n    // When syncing the value attribute, the value comes from a cascade of\n    // properties:\n    //  1. The value React property\n    //  2. The defaultValue React property\n    //  3. Otherwise there should be no change\n    if (props.hasOwnProperty('value')) {\n      setDefaultValue(node, props.type, value);\n    } else if (props.hasOwnProperty('defaultValue')) {\n      setDefaultValue(node, props.type, getToStringValue(props.defaultValue));\n    }\n  }\n\n  {\n    // When syncing the checked attribute, it only changes when it needs\n    // to be removed, such as transitioning from a checkbox into a text input\n    if (props.checked == null && props.defaultChecked != null) {\n      node.defaultChecked = !!props.defaultChecked;\n    }\n  }\n}\nfunction postMountWrapper(element, props, isHydrating) {\n  var node = element; // Do not assign value if it is already set. This prevents user text input\n  // from being lost during SSR hydration.\n\n  if (props.hasOwnProperty('value') || props.hasOwnProperty('defaultValue')) {\n    var type = props.type;\n    var isButton = type === 'submit' || type === 'reset'; // Avoid setting value attribute on submit/reset inputs as it overrides the\n    // default value provided by the browser. See: #12872\n\n    if (isButton && (props.value === undefined || props.value === null)) {\n      return;\n    }\n\n    var initialValue = toString(node._wrapperState.initialValue); // Do not assign value if it is already set. This prevents user text input\n    // from being lost during SSR hydration.\n\n    if (!isHydrating) {\n      {\n        // When syncing the value attribute, the value property should use\n        // the wrapperState._initialValue property. This uses:\n        //\n        //   1. The value React property when present\n        //   2. The defaultValue React property when present\n        //   3. An empty string\n        if (initialValue !== node.value) {\n          node.value = initialValue;\n        }\n      }\n    }\n\n    {\n      // Otherwise, the value attribute is synchronized to the property,\n      // so we assign defaultValue to the same thing as the value property\n      // assignment step above.\n      node.defaultValue = initialValue;\n    }\n  } // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug\n  // this is needed to work around a chrome bug where setting defaultChecked\n  // will sometimes influence the value of checked (even after detachment).\n  // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416\n  // We need to temporarily unset name to avoid disrupting radio button groups.\n\n\n  var name = node.name;\n\n  if (name !== '') {\n    node.name = '';\n  }\n\n  {\n    // When syncing the checked attribute, both the checked property and\n    // attribute are assigned at the same time using defaultChecked. This uses:\n    //\n    //   1. The checked React property when present\n    //   2. The defaultChecked React property when present\n    //   3. Otherwise, false\n    node.defaultChecked = !node.defaultChecked;\n    node.defaultChecked = !!node._wrapperState.initialChecked;\n  }\n\n  if (name !== '') {\n    node.name = name;\n  }\n}\nfunction restoreControlledState(element, props) {\n  var node = element;\n  updateWrapper(node, props);\n  updateNamedCousins(node, props);\n}\n\nfunction updateNamedCousins(rootNode, props) {\n  var name = props.name;\n\n  if (props.type === 'radio' && name != null) {\n    var queryRoot = rootNode;\n\n    while (queryRoot.parentNode) {\n      queryRoot = queryRoot.parentNode;\n    } // If `rootNode.form` was non-null, then we could try `form.elements`,\n    // but that sometimes behaves strangely in IE8. We could also try using\n    // `form.getElementsByName`, but that will only return direct children\n    // and won't include inputs that use the HTML5 `form=` attribute. Since\n    // the input might not even be in a form. It might not even be in the\n    // document. Let's just use the local `querySelectorAll` to ensure we don't\n    // miss anything.\n\n\n    {\n      checkAttributeStringCoercion(name, 'name');\n    }\n\n    var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type=\"radio\"]');\n\n    for (var i = 0; i < group.length; i++) {\n      var otherNode = group[i];\n\n      if (otherNode === rootNode || otherNode.form !== rootNode.form) {\n        continue;\n      } // This will throw if radio buttons rendered by different copies of React\n      // and the same name are rendered into the same form (same as #1939).\n      // That's probably okay; we don't support it just as we don't support\n      // mixing React radio buttons with non-React ones.\n\n\n      var otherProps = getFiberCurrentPropsFromNode(otherNode);\n\n      if (!otherProps) {\n        throw new Error('ReactDOMInput: Mixing React and non-React radio inputs with the ' + 'same `name` is not supported.');\n      } // We need update the tracked value on the named cousin since the value\n      // was changed but the input saw no event or value set\n\n\n      updateValueIfChanged(otherNode); // If this is a controlled radio button group, forcing the input that\n      // was previously checked to update will cause it to be come re-checked\n      // as appropriate.\n\n      updateWrapper(otherNode, otherProps);\n    }\n  }\n} // In Chrome, assigning defaultValue to certain input types triggers input validation.\n// For number inputs, the display value loses trailing decimal points. For email inputs,\n// Chrome raises \"The specified value <x> is not a valid email address\".\n//\n// Here we check to see if the defaultValue has actually changed, avoiding these problems\n// when the user is inputting text\n//\n// https://github.com/facebook/react/issues/7253\n\n\nfunction setDefaultValue(node, type, value) {\n  if ( // Focused number inputs synchronize on blur. See ChangeEventPlugin.js\n  type !== 'number' || getActiveElement(node.ownerDocument) !== node) {\n    if (value == null) {\n      node.defaultValue = toString(node._wrapperState.initialValue);\n    } else if (node.defaultValue !== toString(value)) {\n      node.defaultValue = toString(value);\n    }\n  }\n}\n\nvar didWarnSelectedSetOnOption = false;\nvar didWarnInvalidChild = false;\nvar didWarnInvalidInnerHTML = false;\n/**\n * Implements an <option> host component that warns when `selected` is set.\n */\n\nfunction validateProps(element, props) {\n  {\n    // If a value is not provided, then the children must be simple.\n    if (props.value == null) {\n      if (typeof props.children === 'object' && props.children !== null) {\n        React.Children.forEach(props.children, function (child) {\n          if (child == null) {\n            return;\n          }\n\n          if (typeof child === 'string' || typeof child === 'number') {\n            return;\n          }\n\n          if (!didWarnInvalidChild) {\n            didWarnInvalidChild = true;\n\n            error('Cannot infer the option value of complex children. ' + 'Pass a `value` prop or use a plain string as children to <option>.');\n          }\n        });\n      } else if (props.dangerouslySetInnerHTML != null) {\n        if (!didWarnInvalidInnerHTML) {\n          didWarnInvalidInnerHTML = true;\n\n          error('Pass a `value` prop if you set dangerouslyInnerHTML so React knows ' + 'which value should be selected.');\n        }\n      }\n    } // TODO: Remove support for `selected` in <option>.\n\n\n    if (props.selected != null && !didWarnSelectedSetOnOption) {\n      error('Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.');\n\n      didWarnSelectedSetOnOption = true;\n    }\n  }\n}\nfunction postMountWrapper$1(element, props) {\n  // value=\"\" should make a value attribute (#6219)\n  if (props.value != null) {\n    element.setAttribute('value', toString(getToStringValue(props.value)));\n  }\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n  return isArrayImpl(a);\n}\n\nvar didWarnValueDefaultValue$1;\n\n{\n  didWarnValueDefaultValue$1 = false;\n}\n\nfunction getDeclarationErrorAddendum() {\n  var ownerName = getCurrentFiberOwnerNameInDevOrNull();\n\n  if (ownerName) {\n    return '\\n\\nCheck the render method of `' + ownerName + '`.';\n  }\n\n  return '';\n}\n\nvar valuePropNames = ['value', 'defaultValue'];\n/**\n * Validation function for `value` and `defaultValue`.\n */\n\nfunction checkSelectPropTypes(props) {\n  {\n    checkControlledValueProps('select', props);\n\n    for (var i = 0; i < valuePropNames.length; i++) {\n      var propName = valuePropNames[i];\n\n      if (props[propName] == null) {\n        continue;\n      }\n\n      var propNameIsArray = isArray(props[propName]);\n\n      if (props.multiple && !propNameIsArray) {\n        error('The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum());\n      } else if (!props.multiple && propNameIsArray) {\n        error('The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum());\n      }\n    }\n  }\n}\n\nfunction updateOptions(node, multiple, propValue, setDefaultSelected) {\n  var options = node.options;\n\n  if (multiple) {\n    var selectedValues = propValue;\n    var selectedValue = {};\n\n    for (var i = 0; i < selectedValues.length; i++) {\n      // Prefix to avoid chaos with special keys.\n      selectedValue['$' + selectedValues[i]] = true;\n    }\n\n    for (var _i = 0; _i < options.length; _i++) {\n      var selected = selectedValue.hasOwnProperty('$' + options[_i].value);\n\n      if (options[_i].selected !== selected) {\n        options[_i].selected = selected;\n      }\n\n      if (selected && setDefaultSelected) {\n        options[_i].defaultSelected = true;\n      }\n    }\n  } else {\n    // Do not set `select.value` as exact behavior isn't consistent across all\n    // browsers for all cases.\n    var _selectedValue = toString(getToStringValue(propValue));\n\n    var defaultSelected = null;\n\n    for (var _i2 = 0; _i2 < options.length; _i2++) {\n      if (options[_i2].value === _selectedValue) {\n        options[_i2].selected = true;\n\n        if (setDefaultSelected) {\n          options[_i2].defaultSelected = true;\n        }\n\n        return;\n      }\n\n      if (defaultSelected === null && !options[_i2].disabled) {\n        defaultSelected = options[_i2];\n      }\n    }\n\n    if (defaultSelected !== null) {\n      defaultSelected.selected = true;\n    }\n  }\n}\n/**\n * Implements a <select> host component that allows optionally setting the\n * props `value` and `defaultValue`. If `multiple` is false, the prop must be a\n * stringable. If `multiple` is true, the prop must be an array of stringables.\n *\n * If `value` is not supplied (or null/undefined), user actions that change the\n * selected option will trigger updates to the rendered options.\n *\n * If it is supplied (and not null/undefined), the rendered options will not\n * update in response to user actions. Instead, the `value` prop must change in\n * order for the rendered options to update.\n *\n * If `defaultValue` is provided, any options with the supplied values will be\n * selected.\n */\n\n\nfunction getHostProps$1(element, props) {\n  return assign({}, props, {\n    value: undefined\n  });\n}\nfunction initWrapperState$1(element, props) {\n  var node = element;\n\n  {\n    checkSelectPropTypes(props);\n  }\n\n  node._wrapperState = {\n    wasMultiple: !!props.multiple\n  };\n\n  {\n    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue$1) {\n      error('Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://reactjs.org/link/controlled-components');\n\n      didWarnValueDefaultValue$1 = true;\n    }\n  }\n}\nfunction postMountWrapper$2(element, props) {\n  var node = element;\n  node.multiple = !!props.multiple;\n  var value = props.value;\n\n  if (value != null) {\n    updateOptions(node, !!props.multiple, value, false);\n  } else if (props.defaultValue != null) {\n    updateOptions(node, !!props.multiple, props.defaultValue, true);\n  }\n}\nfunction postUpdateWrapper(element, props) {\n  var node = element;\n  var wasMultiple = node._wrapperState.wasMultiple;\n  node._wrapperState.wasMultiple = !!props.multiple;\n  var value = props.value;\n\n  if (value != null) {\n    updateOptions(node, !!props.multiple, value, false);\n  } else if (wasMultiple !== !!props.multiple) {\n    // For simplicity, reapply `defaultValue` if `multiple` is toggled.\n    if (props.defaultValue != null) {\n      updateOptions(node, !!props.multiple, props.defaultValue, true);\n    } else {\n      // Revert the select back to its default unselected state.\n      updateOptions(node, !!props.multiple, props.multiple ? [] : '', false);\n    }\n  }\n}\nfunction restoreControlledState$1(element, props) {\n  var node = element;\n  var value = props.value;\n\n  if (value != null) {\n    updateOptions(node, !!props.multiple, value, false);\n  }\n}\n\nvar didWarnValDefaultVal = false;\n\n/**\n * Implements a <textarea> host component that allows setting `value`, and\n * `defaultValue`. This differs from the traditional DOM API because value is\n * usually set as PCDATA children.\n *\n * If `value` is not supplied (or null/undefined), user actions that affect the\n * value will trigger updates to the element.\n *\n * If `value` is supplied (and not null/undefined), the rendered element will\n * not trigger updates to the element. Instead, the `value` prop must change in\n * order for the rendered element to be updated.\n *\n * The rendered element will be initialized with an empty value, the prop\n * `defaultValue` if specified, or the children content (deprecated).\n */\nfunction getHostProps$2(element, props) {\n  var node = element;\n\n  if (props.dangerouslySetInnerHTML != null) {\n    throw new Error('`dangerouslySetInnerHTML` does not make sense on <textarea>.');\n  } // Always set children to the same thing. In IE9, the selection range will\n  // get reset if `textContent` is mutated.  We could add a check in setTextContent\n  // to only set the value if/when the value differs from the node value (which would\n  // completely solve this IE9 bug), but Sebastian+Sophie seemed to like this\n  // solution. The value can be a boolean or object so that's why it's forced\n  // to be a string.\n\n\n  var hostProps = assign({}, props, {\n    value: undefined,\n    defaultValue: undefined,\n    children: toString(node._wrapperState.initialValue)\n  });\n\n  return hostProps;\n}\nfunction initWrapperState$2(element, props) {\n  var node = element;\n\n  {\n    checkControlledValueProps('textarea', props);\n\n    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) {\n      error('%s contains a textarea with both value and defaultValue props. ' + 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://reactjs.org/link/controlled-components', getCurrentFiberOwnerNameInDevOrNull() || 'A component');\n\n      didWarnValDefaultVal = true;\n    }\n  }\n\n  var initialValue = props.value; // Only bother fetching default value if we're going to use it\n\n  if (initialValue == null) {\n    var children = props.children,\n        defaultValue = props.defaultValue;\n\n    if (children != null) {\n      {\n        error('Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.');\n      }\n\n      {\n        if (defaultValue != null) {\n          throw new Error('If you supply `defaultValue` on a <textarea>, do not pass children.');\n        }\n\n        if (isArray(children)) {\n          if (children.length > 1) {\n            throw new Error('<textarea> can only have at most one child.');\n          }\n\n          children = children[0];\n        }\n\n        defaultValue = children;\n      }\n    }\n\n    if (defaultValue == null) {\n      defaultValue = '';\n    }\n\n    initialValue = defaultValue;\n  }\n\n  node._wrapperState = {\n    initialValue: getToStringValue(initialValue)\n  };\n}\nfunction updateWrapper$1(element, props) {\n  var node = element;\n  var value = getToStringValue(props.value);\n  var defaultValue = getToStringValue(props.defaultValue);\n\n  if (value != null) {\n    // Cast `value` to a string to ensure the value is set correctly. While\n    // browsers typically do this as necessary, jsdom doesn't.\n    var newValue = toString(value); // To avoid side effects (such as losing text selection), only set value if changed\n\n    if (newValue !== node.value) {\n      node.value = newValue;\n    }\n\n    if (props.defaultValue == null && node.defaultValue !== newValue) {\n      node.defaultValue = newValue;\n    }\n  }\n\n  if (defaultValue != null) {\n    node.defaultValue = toString(defaultValue);\n  }\n}\nfunction postMountWrapper$3(element, props) {\n  var node = element; // This is in postMount because we need access to the DOM node, which is not\n  // available until after the component has mounted.\n\n  var textContent = node.textContent; // Only set node.value if textContent is equal to the expected\n  // initial value. In IE10/IE11 there is a bug where the placeholder attribute\n  // will populate textContent as well.\n  // https://developer.microsoft.com/microsoft-edge/platform/issues/101525/\n\n  if (textContent === node._wrapperState.initialValue) {\n    if (textContent !== '' && textContent !== null) {\n      node.value = textContent;\n    }\n  }\n}\nfunction restoreControlledState$2(element, props) {\n  // DOM component is still mounted; update\n  updateWrapper$1(element, props);\n}\n\nvar HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\nvar MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\nvar SVG_NAMESPACE = 'http://www.w3.org/2000/svg'; // Assumes there is no parent namespace.\n\nfunction getIntrinsicNamespace(type) {\n  switch (type) {\n    case 'svg':\n      return SVG_NAMESPACE;\n\n    case 'math':\n      return MATH_NAMESPACE;\n\n    default:\n      return HTML_NAMESPACE;\n  }\n}\nfunction getChildNamespace(parentNamespace, type) {\n  if (parentNamespace == null || parentNamespace === HTML_NAMESPACE) {\n    // No (or default) parent namespace: potential entry point.\n    return getIntrinsicNamespace(type);\n  }\n\n  if (parentNamespace === SVG_NAMESPACE && type === 'foreignObject') {\n    // We're leaving SVG.\n    return HTML_NAMESPACE;\n  } // By default, pass namespace below.\n\n\n  return parentNamespace;\n}\n\n/* globals MSApp */\n\n/**\n * Create a function which has 'unsafe' privileges (required by windows8 apps)\n */\nvar createMicrosoftUnsafeLocalFunction = function (func) {\n  if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {\n    return function (arg0, arg1, arg2, arg3) {\n      MSApp.execUnsafeLocalFunction(function () {\n        return func(arg0, arg1, arg2, arg3);\n      });\n    };\n  } else {\n    return func;\n  }\n};\n\nvar reusableSVGContainer;\n/**\n * Set the innerHTML property of a node\n *\n * @param {DOMElement} node\n * @param {string} html\n * @internal\n */\n\nvar setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) {\n  if (node.namespaceURI === SVG_NAMESPACE) {\n\n    if (!('innerHTML' in node)) {\n      // IE does not have innerHTML for SVG nodes, so instead we inject the\n      // new markup in a temp node and then move the child nodes across into\n      // the target node\n      reusableSVGContainer = reusableSVGContainer || document.createElement('div');\n      reusableSVGContainer.innerHTML = '<svg>' + html.valueOf().toString() + '</svg>';\n      var svgNode = reusableSVGContainer.firstChild;\n\n      while (node.firstChild) {\n        node.removeChild(node.firstChild);\n      }\n\n      while (svgNode.firstChild) {\n        node.appendChild(svgNode.firstChild);\n      }\n\n      return;\n    }\n  }\n\n  node.innerHTML = html;\n});\n\n/**\n * HTML nodeType values that represent the type of the node\n */\nvar ELEMENT_NODE = 1;\nvar TEXT_NODE = 3;\nvar COMMENT_NODE = 8;\nvar DOCUMENT_NODE = 9;\nvar DOCUMENT_FRAGMENT_NODE = 11;\n\n/**\n * Set the textContent property of a node. For text updates, it's faster\n * to set the `nodeValue` of the Text node directly instead of using\n * `.textContent` which will remove the existing node and create a new one.\n *\n * @param {DOMElement} node\n * @param {string} text\n * @internal\n */\n\nvar setTextContent = function (node, text) {\n  if (text) {\n    var firstChild = node.firstChild;\n\n    if (firstChild && firstChild === node.lastChild && firstChild.nodeType === TEXT_NODE) {\n      firstChild.nodeValue = text;\n      return;\n    }\n  }\n\n  node.textContent = text;\n};\n\n// List derived from Gecko source code:\n// https://github.com/mozilla/gecko-dev/blob/4e638efc71/layout/style/test/property_database.js\nvar shorthandToLonghand = {\n  animation: ['animationDelay', 'animationDirection', 'animationDuration', 'animationFillMode', 'animationIterationCount', 'animationName', 'animationPlayState', 'animationTimingFunction'],\n  background: ['backgroundAttachment', 'backgroundClip', 'backgroundColor', 'backgroundImage', 'backgroundOrigin', 'backgroundPositionX', 'backgroundPositionY', 'backgroundRepeat', 'backgroundSize'],\n  backgroundPosition: ['backgroundPositionX', 'backgroundPositionY'],\n  border: ['borderBottomColor', 'borderBottomStyle', 'borderBottomWidth', 'borderImageOutset', 'borderImageRepeat', 'borderImageSlice', 'borderImageSource', 'borderImageWidth', 'borderLeftColor', 'borderLeftStyle', 'borderLeftWidth', 'borderRightColor', 'borderRightStyle', 'borderRightWidth', 'borderTopColor', 'borderTopStyle', 'borderTopWidth'],\n  borderBlockEnd: ['borderBlockEndColor', 'borderBlockEndStyle', 'borderBlockEndWidth'],\n  borderBlockStart: ['borderBlockStartColor', 'borderBlockStartStyle', 'borderBlockStartWidth'],\n  borderBottom: ['borderBottomColor', 'borderBottomStyle', 'borderBottomWidth'],\n  borderColor: ['borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor'],\n  borderImage: ['borderImageOutset', 'borderImageRepeat', 'borderImageSlice', 'borderImageSource', 'borderImageWidth'],\n  borderInlineEnd: ['borderInlineEndColor', 'borderInlineEndStyle', 'borderInlineEndWidth'],\n  borderInlineStart: ['borderInlineStartColor', 'borderInlineStartStyle', 'borderInlineStartWidth'],\n  borderLeft: ['borderLeftColor', 'borderLeftStyle', 'borderLeftWidth'],\n  borderRadius: ['borderBottomLeftRadius', 'borderBottomRightRadius', 'borderTopLeftRadius', 'borderTopRightRadius'],\n  borderRight: ['borderRightColor', 'borderRightStyle', 'borderRightWidth'],\n  borderStyle: ['borderBottomStyle', 'borderLeftStyle', 'borderRightStyle', 'borderTopStyle'],\n  borderTop: ['borderTopColor', 'borderTopStyle', 'borderTopWidth'],\n  borderWidth: ['borderBottomWidth', 'borderLeftWidth', 'borderRightWidth', 'borderTopWidth'],\n  columnRule: ['columnRuleColor', 'columnRuleStyle', 'columnRuleWidth'],\n  columns: ['columnCount', 'columnWidth'],\n  flex: ['flexBasis', 'flexGrow', 'flexShrink'],\n  flexFlow: ['flexDirection', 'flexWrap'],\n  font: ['fontFamily', 'fontFeatureSettings', 'fontKerning', 'fontLanguageOverride', 'fontSize', 'fontSizeAdjust', 'fontStretch', 'fontStyle', 'fontVariant', 'fontVariantAlternates', 'fontVariantCaps', 'fontVariantEastAsian', 'fontVariantLigatures', 'fontVariantNumeric', 'fontVariantPosition', 'fontWeight', 'lineHeight'],\n  fontVariant: ['fontVariantAlternates', 'fontVariantCaps', 'fontVariantEastAsian', 'fontVariantLigatures', 'fontVariantNumeric', 'fontVariantPosition'],\n  gap: ['columnGap', 'rowGap'],\n  grid: ['gridAutoColumns', 'gridAutoFlow', 'gridAutoRows', 'gridTemplateAreas', 'gridTemplateColumns', 'gridTemplateRows'],\n  gridArea: ['gridColumnEnd', 'gridColumnStart', 'gridRowEnd', 'gridRowStart'],\n  gridColumn: ['gridColumnEnd', 'gridColumnStart'],\n  gridColumnGap: ['columnGap'],\n  gridGap: ['columnGap', 'rowGap'],\n  gridRow: ['gridRowEnd', 'gridRowStart'],\n  gridRowGap: ['rowGap'],\n  gridTemplate: ['gridTemplateAreas', 'gridTemplateColumns', 'gridTemplateRows'],\n  listStyle: ['listStyleImage', 'listStylePosition', 'listStyleType'],\n  margin: ['marginBottom', 'marginLeft', 'marginRight', 'marginTop'],\n  marker: ['markerEnd', 'markerMid', 'markerStart'],\n  mask: ['maskClip', 'maskComposite', 'maskImage', 'maskMode', 'maskOrigin', 'maskPositionX', 'maskPositionY', 'maskRepeat', 'maskSize'],\n  maskPosition: ['maskPositionX', 'maskPositionY'],\n  outline: ['outlineColor', 'outlineStyle', 'outlineWidth'],\n  overflow: ['overflowX', 'overflowY'],\n  padding: ['paddingBottom', 'paddingLeft', 'paddingRight', 'paddingTop'],\n  placeContent: ['alignContent', 'justifyContent'],\n  placeItems: ['alignItems', 'justifyItems'],\n  placeSelf: ['alignSelf', 'justifySelf'],\n  textDecoration: ['textDecorationColor', 'textDecorationLine', 'textDecorationStyle'],\n  textEmphasis: ['textEmphasisColor', 'textEmphasisStyle'],\n  transition: ['transitionDelay', 'transitionDuration', 'transitionProperty', 'transitionTimingFunction'],\n  wordWrap: ['overflowWrap']\n};\n\n/**\n * CSS properties which accept numbers but are not in units of \"px\".\n */\nvar isUnitlessNumber = {\n  animationIterationCount: true,\n  aspectRatio: true,\n  borderImageOutset: true,\n  borderImageSlice: true,\n  borderImageWidth: true,\n  boxFlex: true,\n  boxFlexGroup: true,\n  boxOrdinalGroup: true,\n  columnCount: true,\n  columns: true,\n  flex: true,\n  flexGrow: true,\n  flexPositive: true,\n  flexShrink: true,\n  flexNegative: true,\n  flexOrder: true,\n  gridArea: true,\n  gridRow: true,\n  gridRowEnd: true,\n  gridRowSpan: true,\n  gridRowStart: true,\n  gridColumn: true,\n  gridColumnEnd: true,\n  gridColumnSpan: true,\n  gridColumnStart: 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 * @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 */\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\nObject.keys(isUnitlessNumber).forEach(function (prop) {\n  prefixes.forEach(function (prefix) {\n    isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];\n  });\n});\n\n/**\n * Convert a value into the proper css writable value. The style name `name`\n * should be logical (no hyphens), as specified\n * in `CSSProperty.isUnitlessNumber`.\n *\n * @param {string} name CSS property name such as `topMargin`.\n * @param {*} value CSS property value such as `10px`.\n * @return {string} Normalized style value with dimensions applied.\n */\n\nfunction dangerousStyleValue(name, value, isCustomProperty) {\n  // Note that we've removed escapeTextForBrowser() calls here since the\n  // whole string will be escaped when the attribute is injected into\n  // the markup. If you provide unsafe user data here they can inject\n  // arbitrary CSS which may be problematic (I couldn't repro this):\n  // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet\n  // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/\n  // This is not an XSS hole but instead a potential CSS injection issue\n  // which has lead to a greater discussion about how we're going to\n  // trust URLs moving forward. See #2115901\n  var isEmpty = value == null || typeof value === 'boolean' || value === '';\n\n  if (isEmpty) {\n    return '';\n  }\n\n  if (!isCustomProperty && typeof value === 'number' && value !== 0 && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name])) {\n    return value + 'px'; // Presumes implicit 'px' suffix for unitless numbers\n  }\n\n  {\n    checkCSSPropertyStringCoercion(value, name);\n  }\n\n  return ('' + value).trim();\n}\n\nvar uppercasePattern = /([A-Z])/g;\nvar msPattern = /^ms-/;\n/**\n * Hyphenates a camelcased CSS property name, for example:\n *\n *   > hyphenateStyleName('backgroundColor')\n *   < \"background-color\"\n *   > hyphenateStyleName('MozTransition')\n *   < \"-moz-transition\"\n *   > hyphenateStyleName('msTransition')\n *   < \"-ms-transition\"\n *\n * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix\n * is converted to `-ms-`.\n */\n\nfunction hyphenateStyleName(name) {\n  return name.replace(uppercasePattern, '-$1').toLowerCase().replace(msPattern, '-ms-');\n}\n\nvar warnValidStyle = function () {};\n\n{\n  // 'msTransform' is correct, but the other prefixes should be capitalized\n  var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;\n  var msPattern$1 = /^-ms-/;\n  var hyphenPattern = /-(.)/g; // style values shouldn't contain a semicolon\n\n  var badStyleValueWithSemicolonPattern = /;\\s*$/;\n  var warnedStyleNames = {};\n  var warnedStyleValues = {};\n  var warnedForNaNValue = false;\n  var warnedForInfinityValue = false;\n\n  var camelize = function (string) {\n    return string.replace(hyphenPattern, function (_, character) {\n      return character.toUpperCase();\n    });\n  };\n\n  var warnHyphenatedStyleName = function (name) {\n    if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n      return;\n    }\n\n    warnedStyleNames[name] = true;\n\n    error('Unsupported style property %s. Did you mean %s?', name, // As Andi Smith suggests\n    // (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix\n    // is converted to lowercase `ms`.\n    camelize(name.replace(msPattern$1, 'ms-')));\n  };\n\n  var warnBadVendoredStyleName = function (name) {\n    if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {\n      return;\n    }\n\n    warnedStyleNames[name] = true;\n\n    error('Unsupported vendor-prefixed style property %s. Did you mean %s?', name, name.charAt(0).toUpperCase() + name.slice(1));\n  };\n\n  var warnStyleValueWithSemicolon = function (name, value) {\n    if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {\n      return;\n    }\n\n    warnedStyleValues[value] = true;\n\n    error(\"Style property values shouldn't contain a semicolon. \" + 'Try \"%s: %s\" instead.', name, value.replace(badStyleValueWithSemicolonPattern, ''));\n  };\n\n  var warnStyleValueIsNaN = function (name, value) {\n    if (warnedForNaNValue) {\n      return;\n    }\n\n    warnedForNaNValue = true;\n\n    error('`NaN` is an invalid value for the `%s` css style property.', name);\n  };\n\n  var warnStyleValueIsInfinity = function (name, value) {\n    if (warnedForInfinityValue) {\n      return;\n    }\n\n    warnedForInfinityValue = true;\n\n    error('`Infinity` is an invalid value for the `%s` css style property.', name);\n  };\n\n  warnValidStyle = function (name, value) {\n    if (name.indexOf('-') > -1) {\n      warnHyphenatedStyleName(name);\n    } else if (badVendoredStyleNamePattern.test(name)) {\n      warnBadVendoredStyleName(name);\n    } else if (badStyleValueWithSemicolonPattern.test(value)) {\n      warnStyleValueWithSemicolon(name, value);\n    }\n\n    if (typeof value === 'number') {\n      if (isNaN(value)) {\n        warnStyleValueIsNaN(name, value);\n      } else if (!isFinite(value)) {\n        warnStyleValueIsInfinity(name, value);\n      }\n    }\n  };\n}\n\nvar warnValidStyle$1 = warnValidStyle;\n\n/**\n * Operations for dealing with CSS properties.\n */\n\n/**\n * This creates a string that is expected to be equivalent to the style\n * attribute generated by server-side rendering. It by-passes warnings and\n * security checks so it's not safe to use this value for anything other than\n * comparison. It is only used in DEV for SSR validation.\n */\n\nfunction createDangerousStringForStyles(styles) {\n  {\n    var serialized = '';\n    var delimiter = '';\n\n    for (var styleName in styles) {\n      if (!styles.hasOwnProperty(styleName)) {\n        continue;\n      }\n\n      var styleValue = styles[styleName];\n\n      if (styleValue != null) {\n        var isCustomProperty = styleName.indexOf('--') === 0;\n        serialized += delimiter + (isCustomProperty ? styleName : hyphenateStyleName(styleName)) + ':';\n        serialized += dangerousStyleValue(styleName, styleValue, isCustomProperty);\n        delimiter = ';';\n      }\n    }\n\n    return serialized || null;\n  }\n}\n/**\n * Sets the value for multiple styles on a node.  If a value is specified as\n * '' (empty string), the corresponding style property will be unset.\n *\n * @param {DOMElement} node\n * @param {object} styles\n */\n\nfunction setValueForStyles(node, styles) {\n  var style = node.style;\n\n  for (var styleName in styles) {\n    if (!styles.hasOwnProperty(styleName)) {\n      continue;\n    }\n\n    var isCustomProperty = styleName.indexOf('--') === 0;\n\n    {\n      if (!isCustomProperty) {\n        warnValidStyle$1(styleName, styles[styleName]);\n      }\n    }\n\n    var styleValue = dangerousStyleValue(styleName, styles[styleName], isCustomProperty);\n\n    if (styleName === 'float') {\n      styleName = 'cssFloat';\n    }\n\n    if (isCustomProperty) {\n      style.setProperty(styleName, styleValue);\n    } else {\n      style[styleName] = styleValue;\n    }\n  }\n}\n\nfunction isValueEmpty(value) {\n  return value == null || typeof value === 'boolean' || value === '';\n}\n/**\n * Given {color: 'red', overflow: 'hidden'} returns {\n *   color: 'color',\n *   overflowX: 'overflow',\n *   overflowY: 'overflow',\n * }. This can be read as \"the overflowY property was set by the overflow\n * shorthand\". That is, the values are the property that each was derived from.\n */\n\n\nfunction expandShorthandMap(styles) {\n  var expanded = {};\n\n  for (var key in styles) {\n    var longhands = shorthandToLonghand[key] || [key];\n\n    for (var i = 0; i < longhands.length; i++) {\n      expanded[longhands[i]] = key;\n    }\n  }\n\n  return expanded;\n}\n/**\n * When mixing shorthand and longhand property names, we warn during updates if\n * we expect an incorrect result to occur. In particular, we warn for:\n *\n * Updating a shorthand property (longhand gets overwritten):\n *   {font: 'foo', fontVariant: 'bar'} -> {font: 'baz', fontVariant: 'bar'}\n *   becomes .style.font = 'baz'\n * Removing a shorthand property (longhand gets lost too):\n *   {font: 'foo', fontVariant: 'bar'} -> {fontVariant: 'bar'}\n *   becomes .style.font = ''\n * Removing a longhand property (should revert to shorthand; doesn't):\n *   {font: 'foo', fontVariant: 'bar'} -> {font: 'foo'}\n *   becomes .style.fontVariant = ''\n */\n\n\nfunction validateShorthandPropertyCollisionInDev(styleUpdates, nextStyles) {\n  {\n    if (!nextStyles) {\n      return;\n    }\n\n    var expandedUpdates = expandShorthandMap(styleUpdates);\n    var expandedStyles = expandShorthandMap(nextStyles);\n    var warnedAbout = {};\n\n    for (var key in expandedUpdates) {\n      var originalKey = expandedUpdates[key];\n      var correctOriginalKey = expandedStyles[key];\n\n      if (correctOriginalKey && originalKey !== correctOriginalKey) {\n        var warningKey = originalKey + ',' + correctOriginalKey;\n\n        if (warnedAbout[warningKey]) {\n          continue;\n        }\n\n        warnedAbout[warningKey] = true;\n\n        error('%s a style property during rerender (%s) when a ' + 'conflicting property is set (%s) can lead to styling bugs. To ' + \"avoid this, don't mix shorthand and non-shorthand properties \" + 'for the same value; instead, replace the shorthand with ' + 'separate values.', isValueEmpty(styleUpdates[originalKey]) ? 'Removing' : 'Updating', originalKey, correctOriginalKey);\n      }\n    }\n  }\n}\n\n// For HTML, certain tags should omit their close tag. We keep a list for\n// those special-case tags.\nvar omittedCloseTags = {\n  area: true,\n  base: true,\n  br: true,\n  col: true,\n  embed: true,\n  hr: true,\n  img: true,\n  input: true,\n  keygen: true,\n  link: true,\n  meta: true,\n  param: true,\n  source: true,\n  track: true,\n  wbr: true // NOTE: menuitem's close tag should be omitted, but that causes problems.\n\n};\n\n// `omittedCloseTags` except that `menuitem` should still have its closing tag.\n\nvar voidElementTags = assign({\n  menuitem: true\n}, omittedCloseTags);\n\nvar HTML = '__html';\n\nfunction assertValidProps(tag, props) {\n  if (!props) {\n    return;\n  } // Note the use of `==` which checks for null or undefined.\n\n\n  if (voidElementTags[tag]) {\n    if (props.children != null || props.dangerouslySetInnerHTML != null) {\n      throw new Error(tag + \" is a void element tag and must neither have `children` nor \" + 'use `dangerouslySetInnerHTML`.');\n    }\n  }\n\n  if (props.dangerouslySetInnerHTML != null) {\n    if (props.children != null) {\n      throw new Error('Can only set one of `children` or `props.dangerouslySetInnerHTML`.');\n    }\n\n    if (typeof props.dangerouslySetInnerHTML !== 'object' || !(HTML in props.dangerouslySetInnerHTML)) {\n      throw new Error('`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. ' + 'Please visit https://reactjs.org/link/dangerously-set-inner-html ' + 'for more information.');\n    }\n  }\n\n  {\n    if (!props.suppressContentEditableWarning && props.contentEditable && props.children != null) {\n      error('A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.');\n    }\n  }\n\n  if (props.style != null && typeof props.style !== 'object') {\n    throw new Error('The `style` prop expects a mapping from style properties to values, ' + \"not a string. For example, style={{marginRight: spacing + 'em'}} when \" + 'using JSX.');\n  }\n}\n\nfunction isCustomComponent(tagName, props) {\n  if (tagName.indexOf('-') === -1) {\n    return typeof props.is === 'string';\n  }\n\n  switch (tagName) {\n    // These are reserved SVG and MathML elements.\n    // We don't mind this list too much because we expect it to never grow.\n    // The alternative is to track the namespace in a few places which is convoluted.\n    // https://w3c.github.io/webcomponents/spec/custom/#custom-elements-core-concepts\n    case 'annotation-xml':\n    case 'color-profile':\n    case 'font-face':\n    case 'font-face-src':\n    case 'font-face-uri':\n    case 'font-face-format':\n    case 'font-face-name':\n    case 'missing-glyph':\n      return false;\n\n    default:\n      return true;\n  }\n}\n\n// When adding attributes to the HTML or SVG allowed attribute list, be sure to\n// also add them to this module to ensure casing and incorrect name\n// warnings.\nvar possibleStandardNames = {\n  // HTML\n  accept: 'accept',\n  acceptcharset: 'acceptCharset',\n  'accept-charset': 'acceptCharset',\n  accesskey: 'accessKey',\n  action: 'action',\n  allowfullscreen: 'allowFullScreen',\n  alt: 'alt',\n  as: 'as',\n  async: 'async',\n  autocapitalize: 'autoCapitalize',\n  autocomplete: 'autoComplete',\n  autocorrect: 'autoCorrect',\n  autofocus: 'autoFocus',\n  autoplay: 'autoPlay',\n  autosave: 'autoSave',\n  capture: 'capture',\n  cellpadding: 'cellPadding',\n  cellspacing: 'cellSpacing',\n  challenge: 'challenge',\n  charset: 'charSet',\n  checked: 'checked',\n  children: 'children',\n  cite: 'cite',\n  class: 'className',\n  classid: 'classID',\n  classname: 'className',\n  cols: 'cols',\n  colspan: 'colSpan',\n  content: 'content',\n  contenteditable: 'contentEditable',\n  contextmenu: 'contextMenu',\n  controls: 'controls',\n  controlslist: 'controlsList',\n  coords: 'coords',\n  crossorigin: 'crossOrigin',\n  dangerouslysetinnerhtml: 'dangerouslySetInnerHTML',\n  data: 'data',\n  datetime: 'dateTime',\n  default: 'default',\n  defaultchecked: 'defaultChecked',\n  defaultvalue: 'defaultValue',\n  defer: 'defer',\n  dir: 'dir',\n  disabled: 'disabled',\n  disablepictureinpicture: 'disablePictureInPicture',\n  disableremoteplayback: 'disableRemotePlayback',\n  download: 'download',\n  draggable: 'draggable',\n  enctype: 'encType',\n  enterkeyhint: 'enterKeyHint',\n  for: 'htmlFor',\n  form: 'form',\n  formmethod: 'formMethod',\n  formaction: 'formAction',\n  formenctype: 'formEncType',\n  formnovalidate: 'formNoValidate',\n  formtarget: 'formTarget',\n  frameborder: 'frameBorder',\n  headers: 'headers',\n  height: 'height',\n  hidden: 'hidden',\n  high: 'high',\n  href: 'href',\n  hreflang: 'hrefLang',\n  htmlfor: 'htmlFor',\n  httpequiv: 'httpEquiv',\n  'http-equiv': 'httpEquiv',\n  icon: 'icon',\n  id: 'id',\n  imagesizes: 'imageSizes',\n  imagesrcset: 'imageSrcSet',\n  innerhtml: 'innerHTML',\n  inputmode: 'inputMode',\n  integrity: 'integrity',\n  is: 'is',\n  itemid: 'itemID',\n  itemprop: 'itemProp',\n  itemref: 'itemRef',\n  itemscope: 'itemScope',\n  itemtype: 'itemType',\n  keyparams: 'keyParams',\n  keytype: 'keyType',\n  kind: 'kind',\n  label: 'label',\n  lang: 'lang',\n  list: 'list',\n  loop: 'loop',\n  low: 'low',\n  manifest: 'manifest',\n  marginwidth: 'marginWidth',\n  marginheight: 'marginHeight',\n  max: 'max',\n  maxlength: 'maxLength',\n  media: 'media',\n  mediagroup: 'mediaGroup',\n  method: 'method',\n  min: 'min',\n  minlength: 'minLength',\n  multiple: 'multiple',\n  muted: 'muted',\n  name: 'name',\n  nomodule: 'noModule',\n  nonce: 'nonce',\n  novalidate: 'noValidate',\n  open: 'open',\n  optimum: 'optimum',\n  pattern: 'pattern',\n  placeholder: 'placeholder',\n  playsinline: 'playsInline',\n  poster: 'poster',\n  preload: 'preload',\n  profile: 'profile',\n  radiogroup: 'radioGroup',\n  readonly: 'readOnly',\n  referrerpolicy: 'referrerPolicy',\n  rel: 'rel',\n  required: 'required',\n  reversed: 'reversed',\n  role: 'role',\n  rows: 'rows',\n  rowspan: 'rowSpan',\n  sandbox: 'sandbox',\n  scope: 'scope',\n  scoped: 'scoped',\n  scrolling: 'scrolling',\n  seamless: 'seamless',\n  selected: 'selected',\n  shape: 'shape',\n  size: 'size',\n  sizes: 'sizes',\n  span: 'span',\n  spellcheck: 'spellCheck',\n  src: 'src',\n  srcdoc: 'srcDoc',\n  srclang: 'srcLang',\n  srcset: 'srcSet',\n  start: 'start',\n  step: 'step',\n  style: 'style',\n  summary: 'summary',\n  tabindex: 'tabIndex',\n  target: 'target',\n  title: 'title',\n  type: 'type',\n  usemap: 'useMap',\n  value: 'value',\n  width: 'width',\n  wmode: 'wmode',\n  wrap: 'wrap',\n  // SVG\n  about: 'about',\n  accentheight: 'accentHeight',\n  'accent-height': 'accentHeight',\n  accumulate: 'accumulate',\n  additive: 'additive',\n  alignmentbaseline: 'alignmentBaseline',\n  'alignment-baseline': 'alignmentBaseline',\n  allowreorder: 'allowReorder',\n  alphabetic: 'alphabetic',\n  amplitude: 'amplitude',\n  arabicform: 'arabicForm',\n  'arabic-form': 'arabicForm',\n  ascent: 'ascent',\n  attributename: 'attributeName',\n  attributetype: 'attributeType',\n  autoreverse: 'autoReverse',\n  azimuth: 'azimuth',\n  basefrequency: 'baseFrequency',\n  baselineshift: 'baselineShift',\n  'baseline-shift': 'baselineShift',\n  baseprofile: 'baseProfile',\n  bbox: 'bbox',\n  begin: 'begin',\n  bias: 'bias',\n  by: 'by',\n  calcmode: 'calcMode',\n  capheight: 'capHeight',\n  'cap-height': 'capHeight',\n  clip: 'clip',\n  clippath: 'clipPath',\n  'clip-path': 'clipPath',\n  clippathunits: 'clipPathUnits',\n  cliprule: 'clipRule',\n  'clip-rule': 'clipRule',\n  color: 'color',\n  colorinterpolation: 'colorInterpolation',\n  'color-interpolation': 'colorInterpolation',\n  colorinterpolationfilters: 'colorInterpolationFilters',\n  'color-interpolation-filters': 'colorInterpolationFilters',\n  colorprofile: 'colorProfile',\n  'color-profile': 'colorProfile',\n  colorrendering: 'colorRendering',\n  'color-rendering': 'colorRendering',\n  contentscripttype: 'contentScriptType',\n  contentstyletype: 'contentStyleType',\n  cursor: 'cursor',\n  cx: 'cx',\n  cy: 'cy',\n  d: 'd',\n  datatype: 'datatype',\n  decelerate: 'decelerate',\n  descent: 'descent',\n  diffuseconstant: 'diffuseConstant',\n  direction: 'direction',\n  display: 'display',\n  divisor: 'divisor',\n  dominantbaseline: 'dominantBaseline',\n  'dominant-baseline': 'dominantBaseline',\n  dur: 'dur',\n  dx: 'dx',\n  dy: 'dy',\n  edgemode: 'edgeMode',\n  elevation: 'elevation',\n  enablebackground: 'enableBackground',\n  'enable-background': 'enableBackground',\n  end: 'end',\n  exponent: 'exponent',\n  externalresourcesrequired: 'externalResourcesRequired',\n  fill: 'fill',\n  fillopacity: 'fillOpacity',\n  'fill-opacity': 'fillOpacity',\n  fillrule: 'fillRule',\n  'fill-rule': 'fillRule',\n  filter: 'filter',\n  filterres: 'filterRes',\n  filterunits: 'filterUnits',\n  floodopacity: 'floodOpacity',\n  'flood-opacity': 'floodOpacity',\n  floodcolor: 'floodColor',\n  'flood-color': 'floodColor',\n  focusable: 'focusable',\n  fontfamily: 'fontFamily',\n  'font-family': 'fontFamily',\n  fontsize: 'fontSize',\n  'font-size': 'fontSize',\n  fontsizeadjust: 'fontSizeAdjust',\n  'font-size-adjust': 'fontSizeAdjust',\n  fontstretch: 'fontStretch',\n  'font-stretch': 'fontStretch',\n  fontstyle: 'fontStyle',\n  'font-style': 'fontStyle',\n  fontvariant: 'fontVariant',\n  'font-variant': 'fontVariant',\n  fontweight: 'fontWeight',\n  'font-weight': 'fontWeight',\n  format: 'format',\n  from: 'from',\n  fx: 'fx',\n  fy: 'fy',\n  g1: 'g1',\n  g2: 'g2',\n  glyphname: 'glyphName',\n  'glyph-name': 'glyphName',\n  glyphorientationhorizontal: 'glyphOrientationHorizontal',\n  'glyph-orientation-horizontal': 'glyphOrientationHorizontal',\n  glyphorientationvertical: 'glyphOrientationVertical',\n  'glyph-orientation-vertical': 'glyphOrientationVertical',\n  glyphref: 'glyphRef',\n  gradienttransform: 'gradientTransform',\n  gradientunits: 'gradientUnits',\n  hanging: 'hanging',\n  horizadvx: 'horizAdvX',\n  'horiz-adv-x': 'horizAdvX',\n  horizoriginx: 'horizOriginX',\n  'horiz-origin-x': 'horizOriginX',\n  ideographic: 'ideographic',\n  imagerendering: 'imageRendering',\n  'image-rendering': 'imageRendering',\n  in2: 'in2',\n  in: 'in',\n  inlist: 'inlist',\n  intercept: 'intercept',\n  k1: 'k1',\n  k2: 'k2',\n  k3: 'k3',\n  k4: 'k4',\n  k: 'k',\n  kernelmatrix: 'kernelMatrix',\n  kernelunitlength: 'kernelUnitLength',\n  kerning: 'kerning',\n  keypoints: 'keyPoints',\n  keysplines: 'keySplines',\n  keytimes: 'keyTimes',\n  lengthadjust: 'lengthAdjust',\n  letterspacing: 'letterSpacing',\n  'letter-spacing': 'letterSpacing',\n  lightingcolor: 'lightingColor',\n  'lighting-color': 'lightingColor',\n  limitingconeangle: 'limitingConeAngle',\n  local: 'local',\n  markerend: 'markerEnd',\n  'marker-end': 'markerEnd',\n  markerheight: 'markerHeight',\n  markermid: 'markerMid',\n  'marker-mid': 'markerMid',\n  markerstart: 'markerStart',\n  'marker-start': 'markerStart',\n  markerunits: 'markerUnits',\n  markerwidth: 'markerWidth',\n  mask: 'mask',\n  maskcontentunits: 'maskContentUnits',\n  maskunits: 'maskUnits',\n  mathematical: 'mathematical',\n  mode: 'mode',\n  numoctaves: 'numOctaves',\n  offset: 'offset',\n  opacity: 'opacity',\n  operator: 'operator',\n  order: 'order',\n  orient: 'orient',\n  orientation: 'orientation',\n  origin: 'origin',\n  overflow: 'overflow',\n  overlineposition: 'overlinePosition',\n  'overline-position': 'overlinePosition',\n  overlinethickness: 'overlineThickness',\n  'overline-thickness': 'overlineThickness',\n  paintorder: 'paintOrder',\n  'paint-order': 'paintOrder',\n  panose1: 'panose1',\n  'panose-1': 'panose1',\n  pathlength: 'pathLength',\n  patterncontentunits: 'patternContentUnits',\n  patterntransform: 'patternTransform',\n  patternunits: 'patternUnits',\n  pointerevents: 'pointerEvents',\n  'pointer-events': 'pointerEvents',\n  points: 'points',\n  pointsatx: 'pointsAtX',\n  pointsaty: 'pointsAtY',\n  pointsatz: 'pointsAtZ',\n  prefix: 'prefix',\n  preservealpha: 'preserveAlpha',\n  preserveaspectratio: 'preserveAspectRatio',\n  primitiveunits: 'primitiveUnits',\n  property: 'property',\n  r: 'r',\n  radius: 'radius',\n  refx: 'refX',\n  refy: 'refY',\n  renderingintent: 'renderingIntent',\n  'rendering-intent': 'renderingIntent',\n  repeatcount: 'repeatCount',\n  repeatdur: 'repeatDur',\n  requiredextensions: 'requiredExtensions',\n  requiredfeatures: 'requiredFeatures',\n  resource: 'resource',\n  restart: 'restart',\n  result: 'result',\n  results: 'results',\n  rotate: 'rotate',\n  rx: 'rx',\n  ry: 'ry',\n  scale: 'scale',\n  security: 'security',\n  seed: 'seed',\n  shaperendering: 'shapeRendering',\n  'shape-rendering': 'shapeRendering',\n  slope: 'slope',\n  spacing: 'spacing',\n  specularconstant: 'specularConstant',\n  specularexponent: 'specularExponent',\n  speed: 'speed',\n  spreadmethod: 'spreadMethod',\n  startoffset: 'startOffset',\n  stddeviation: 'stdDeviation',\n  stemh: 'stemh',\n  stemv: 'stemv',\n  stitchtiles: 'stitchTiles',\n  stopcolor: 'stopColor',\n  'stop-color': 'stopColor',\n  stopopacity: 'stopOpacity',\n  'stop-opacity': 'stopOpacity',\n  strikethroughposition: 'strikethroughPosition',\n  'strikethrough-position': 'strikethroughPosition',\n  strikethroughthickness: 'strikethroughThickness',\n  'strikethrough-thickness': 'strikethroughThickness',\n  string: 'string',\n  stroke: 'stroke',\n  strokedasharray: 'strokeDasharray',\n  'stroke-dasharray': 'strokeDasharray',\n  strokedashoffset: 'strokeDashoffset',\n  'stroke-dashoffset': 'strokeDashoffset',\n  strokelinecap: 'strokeLinecap',\n  'stroke-linecap': 'strokeLinecap',\n  strokelinejoin: 'strokeLinejoin',\n  'stroke-linejoin': 'strokeLinejoin',\n  strokemiterlimit: 'strokeMiterlimit',\n  'stroke-miterlimit': 'strokeMiterlimit',\n  strokewidth: 'strokeWidth',\n  'stroke-width': 'strokeWidth',\n  strokeopacity: 'strokeOpacity',\n  'stroke-opacity': 'strokeOpacity',\n  suppresscontenteditablewarning: 'suppressContentEditableWarning',\n  suppresshydrationwarning: 'suppressHydrationWarning',\n  surfacescale: 'surfaceScale',\n  systemlanguage: 'systemLanguage',\n  tablevalues: 'tableValues',\n  targetx: 'targetX',\n  targety: 'targetY',\n  textanchor: 'textAnchor',\n  'text-anchor': 'textAnchor',\n  textdecoration: 'textDecoration',\n  'text-decoration': 'textDecoration',\n  textlength: 'textLength',\n  textrendering: 'textRendering',\n  'text-rendering': 'textRendering',\n  to: 'to',\n  transform: 'transform',\n  typeof: 'typeof',\n  u1: 'u1',\n  u2: 'u2',\n  underlineposition: 'underlinePosition',\n  'underline-position': 'underlinePosition',\n  underlinethickness: 'underlineThickness',\n  'underline-thickness': 'underlineThickness',\n  unicode: 'unicode',\n  unicodebidi: 'unicodeBidi',\n  'unicode-bidi': 'unicodeBidi',\n  unicoderange: 'unicodeRange',\n  'unicode-range': 'unicodeRange',\n  unitsperem: 'unitsPerEm',\n  'units-per-em': 'unitsPerEm',\n  unselectable: 'unselectable',\n  valphabetic: 'vAlphabetic',\n  'v-alphabetic': 'vAlphabetic',\n  values: 'values',\n  vectoreffect: 'vectorEffect',\n  'vector-effect': 'vectorEffect',\n  version: 'version',\n  vertadvy: 'vertAdvY',\n  'vert-adv-y': 'vertAdvY',\n  vertoriginx: 'vertOriginX',\n  'vert-origin-x': 'vertOriginX',\n  vertoriginy: 'vertOriginY',\n  'vert-origin-y': 'vertOriginY',\n  vhanging: 'vHanging',\n  'v-hanging': 'vHanging',\n  videographic: 'vIdeographic',\n  'v-ideographic': 'vIdeographic',\n  viewbox: 'viewBox',\n  viewtarget: 'viewTarget',\n  visibility: 'visibility',\n  vmathematical: 'vMathematical',\n  'v-mathematical': 'vMathematical',\n  vocab: 'vocab',\n  widths: 'widths',\n  wordspacing: 'wordSpacing',\n  'word-spacing': 'wordSpacing',\n  writingmode: 'writingMode',\n  'writing-mode': 'writingMode',\n  x1: 'x1',\n  x2: 'x2',\n  x: 'x',\n  xchannelselector: 'xChannelSelector',\n  xheight: 'xHeight',\n  'x-height': 'xHeight',\n  xlinkactuate: 'xlinkActuate',\n  'xlink:actuate': 'xlinkActuate',\n  xlinkarcrole: 'xlinkArcrole',\n  'xlink:arcrole': 'xlinkArcrole',\n  xlinkhref: 'xlinkHref',\n  'xlink:href': 'xlinkHref',\n  xlinkrole: 'xlinkRole',\n  'xlink:role': 'xlinkRole',\n  xlinkshow: 'xlinkShow',\n  'xlink:show': 'xlinkShow',\n  xlinktitle: 'xlinkTitle',\n  'xlink:title': 'xlinkTitle',\n  xlinktype: 'xlinkType',\n  'xlink:type': 'xlinkType',\n  xmlbase: 'xmlBase',\n  'xml:base': 'xmlBase',\n  xmllang: 'xmlLang',\n  'xml:lang': 'xmlLang',\n  xmlns: 'xmlns',\n  'xml:space': 'xmlSpace',\n  xmlnsxlink: 'xmlnsXlink',\n  'xmlns:xlink': 'xmlnsXlink',\n  xmlspace: 'xmlSpace',\n  y1: 'y1',\n  y2: 'y2',\n  y: 'y',\n  ychannelselector: 'yChannelSelector',\n  z: 'z',\n  zoomandpan: 'zoomAndPan'\n};\n\nvar ariaProperties = {\n  'aria-current': 0,\n  // state\n  'aria-description': 0,\n  'aria-details': 0,\n  'aria-disabled': 0,\n  // state\n  'aria-hidden': 0,\n  // state\n  'aria-invalid': 0,\n  // state\n  'aria-keyshortcuts': 0,\n  'aria-label': 0,\n  'aria-roledescription': 0,\n  // Widget Attributes\n  'aria-autocomplete': 0,\n  'aria-checked': 0,\n  'aria-expanded': 0,\n  'aria-haspopup': 0,\n  'aria-level': 0,\n  'aria-modal': 0,\n  'aria-multiline': 0,\n  'aria-multiselectable': 0,\n  'aria-orientation': 0,\n  'aria-placeholder': 0,\n  'aria-pressed': 0,\n  'aria-readonly': 0,\n  'aria-required': 0,\n  'aria-selected': 0,\n  'aria-sort': 0,\n  'aria-valuemax': 0,\n  'aria-valuemin': 0,\n  'aria-valuenow': 0,\n  'aria-valuetext': 0,\n  // Live Region Attributes\n  'aria-atomic': 0,\n  'aria-busy': 0,\n  'aria-live': 0,\n  'aria-relevant': 0,\n  // Drag-and-Drop Attributes\n  'aria-dropeffect': 0,\n  'aria-grabbed': 0,\n  // Relationship Attributes\n  'aria-activedescendant': 0,\n  'aria-colcount': 0,\n  'aria-colindex': 0,\n  'aria-colspan': 0,\n  'aria-controls': 0,\n  'aria-describedby': 0,\n  'aria-errormessage': 0,\n  'aria-flowto': 0,\n  'aria-labelledby': 0,\n  'aria-owns': 0,\n  'aria-posinset': 0,\n  'aria-rowcount': 0,\n  'aria-rowindex': 0,\n  'aria-rowspan': 0,\n  'aria-setsize': 0\n};\n\nvar warnedProperties = {};\nvar rARIA = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$');\nvar rARIACamel = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$');\n\nfunction validateProperty(tagName, name) {\n  {\n    if (hasOwnProperty.call(warnedProperties, name) && warnedProperties[name]) {\n      return true;\n    }\n\n    if (rARIACamel.test(name)) {\n      var ariaName = 'aria-' + name.slice(4).toLowerCase();\n      var correctName = ariaProperties.hasOwnProperty(ariaName) ? ariaName : null; // If this is an aria-* attribute, but is not listed in the known DOM\n      // DOM properties, then it is an invalid aria-* attribute.\n\n      if (correctName == null) {\n        error('Invalid ARIA attribute `%s`. ARIA attributes follow the pattern aria-* and must be lowercase.', name);\n\n        warnedProperties[name] = true;\n        return true;\n      } // aria-* attributes should be lowercase; suggest the lowercase version.\n\n\n      if (name !== correctName) {\n        error('Invalid ARIA attribute `%s`. Did you mean `%s`?', name, correctName);\n\n        warnedProperties[name] = true;\n        return true;\n      }\n    }\n\n    if (rARIA.test(name)) {\n      var lowerCasedName = name.toLowerCase();\n      var standardName = ariaProperties.hasOwnProperty(lowerCasedName) ? lowerCasedName : null; // If this is an aria-* attribute, but is not listed in the known DOM\n      // DOM properties, then it is an invalid aria-* attribute.\n\n      if (standardName == null) {\n        warnedProperties[name] = true;\n        return false;\n      } // aria-* attributes should be lowercase; suggest the lowercase version.\n\n\n      if (name !== standardName) {\n        error('Unknown ARIA attribute `%s`. Did you mean `%s`?', name, standardName);\n\n        warnedProperties[name] = true;\n        return true;\n      }\n    }\n  }\n\n  return true;\n}\n\nfunction warnInvalidARIAProps(type, props) {\n  {\n    var invalidProps = [];\n\n    for (var key in props) {\n      var isValid = validateProperty(type, key);\n\n      if (!isValid) {\n        invalidProps.push(key);\n      }\n    }\n\n    var unknownPropString = invalidProps.map(function (prop) {\n      return '`' + prop + '`';\n    }).join(', ');\n\n    if (invalidProps.length === 1) {\n      error('Invalid aria prop %s on <%s> tag. ' + 'For details, see https://reactjs.org/link/invalid-aria-props', unknownPropString, type);\n    } else if (invalidProps.length > 1) {\n      error('Invalid aria props %s on <%s> tag. ' + 'For details, see https://reactjs.org/link/invalid-aria-props', unknownPropString, type);\n    }\n  }\n}\n\nfunction validateProperties(type, props) {\n  if (isCustomComponent(type, props)) {\n    return;\n  }\n\n  warnInvalidARIAProps(type, props);\n}\n\nvar didWarnValueNull = false;\nfunction validateProperties$1(type, props) {\n  {\n    if (type !== 'input' && type !== 'textarea' && type !== 'select') {\n      return;\n    }\n\n    if (props != null && props.value === null && !didWarnValueNull) {\n      didWarnValueNull = true;\n\n      if (type === 'select' && props.multiple) {\n        error('`value` prop on `%s` should not be null. ' + 'Consider using an empty array when `multiple` is set to `true` ' + 'to clear the component or `undefined` for uncontrolled components.', type);\n      } else {\n        error('`value` prop on `%s` should not be null. ' + 'Consider using an empty string to clear the component or `undefined` ' + 'for uncontrolled components.', type);\n      }\n    }\n  }\n}\n\nvar validateProperty$1 = function () {};\n\n{\n  var warnedProperties$1 = {};\n  var EVENT_NAME_REGEX = /^on./;\n  var INVALID_EVENT_NAME_REGEX = /^on[^A-Z]/;\n  var rARIA$1 = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$');\n  var rARIACamel$1 = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$');\n\n  validateProperty$1 = function (tagName, name, value, eventRegistry) {\n    if (hasOwnProperty.call(warnedProperties$1, name) && warnedProperties$1[name]) {\n      return true;\n    }\n\n    var lowerCasedName = name.toLowerCase();\n\n    if (lowerCasedName === 'onfocusin' || lowerCasedName === 'onfocusout') {\n      error('React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.');\n\n      warnedProperties$1[name] = true;\n      return true;\n    } // We can't rely on the event system being injected on the server.\n\n\n    if (eventRegistry != null) {\n      var registrationNameDependencies = eventRegistry.registrationNameDependencies,\n          possibleRegistrationNames = eventRegistry.possibleRegistrationNames;\n\n      if (registrationNameDependencies.hasOwnProperty(name)) {\n        return true;\n      }\n\n      var registrationName = possibleRegistrationNames.hasOwnProperty(lowerCasedName) ? possibleRegistrationNames[lowerCasedName] : null;\n\n      if (registrationName != null) {\n        error('Invalid event handler property `%s`. Did you mean `%s`?', name, registrationName);\n\n        warnedProperties$1[name] = true;\n        return true;\n      }\n\n      if (EVENT_NAME_REGEX.test(name)) {\n        error('Unknown event handler property `%s`. It will be ignored.', name);\n\n        warnedProperties$1[name] = true;\n        return true;\n      }\n    } else if (EVENT_NAME_REGEX.test(name)) {\n      // If no event plugins have been injected, we are in a server environment.\n      // So we can't tell if the event name is correct for sure, but we can filter\n      // out known bad ones like `onclick`. We can't suggest a specific replacement though.\n      if (INVALID_EVENT_NAME_REGEX.test(name)) {\n        error('Invalid event handler property `%s`. ' + 'React events use the camelCase naming convention, for example `onClick`.', name);\n      }\n\n      warnedProperties$1[name] = true;\n      return true;\n    } // Let the ARIA attribute hook validate ARIA attributes\n\n\n    if (rARIA$1.test(name) || rARIACamel$1.test(name)) {\n      return true;\n    }\n\n    if (lowerCasedName === 'innerhtml') {\n      error('Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.');\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (lowerCasedName === 'aria') {\n      error('The `aria` attribute is reserved for future use in React. ' + 'Pass individual `aria-` attributes instead.');\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (lowerCasedName === 'is' && value !== null && value !== undefined && typeof value !== 'string') {\n      error('Received a `%s` for a string attribute `is`. If this is expected, cast ' + 'the value to a string.', typeof value);\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (typeof value === 'number' && isNaN(value)) {\n      error('Received NaN for the `%s` attribute. If this is expected, cast ' + 'the value to a string.', name);\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    var propertyInfo = getPropertyInfo(name);\n    var isReserved = propertyInfo !== null && propertyInfo.type === RESERVED; // Known attributes should match the casing specified in the property config.\n\n    if (possibleStandardNames.hasOwnProperty(lowerCasedName)) {\n      var standardName = possibleStandardNames[lowerCasedName];\n\n      if (standardName !== name) {\n        error('Invalid DOM property `%s`. Did you mean `%s`?', name, standardName);\n\n        warnedProperties$1[name] = true;\n        return true;\n      }\n    } else if (!isReserved && name !== lowerCasedName) {\n      // Unknown attributes should have lowercase casing since that's how they\n      // will be cased anyway with server rendering.\n      error('React does not recognize the `%s` prop on a DOM element. If you ' + 'intentionally want it to appear in the DOM as a custom ' + 'attribute, spell it as lowercase `%s` instead. ' + 'If you accidentally passed it from a parent component, remove ' + 'it from the DOM element.', name, lowerCasedName);\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    if (typeof value === 'boolean' && shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) {\n      if (value) {\n        error('Received `%s` for a non-boolean attribute `%s`.\\n\\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s=\"%s\" or %s={value.toString()}.', value, name, name, value, name);\n      } else {\n        error('Received `%s` for a non-boolean attribute `%s`.\\n\\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s=\"%s\" or %s={value.toString()}.\\n\\n' + 'If you used to conditionally omit it with %s={condition && value}, ' + 'pass %s={condition ? value : undefined} instead.', value, name, name, value, name, name, name);\n      }\n\n      warnedProperties$1[name] = true;\n      return true;\n    } // Now that we've validated casing, do not validate\n    // data types for reserved props\n\n\n    if (isReserved) {\n      return true;\n    } // Warn when a known attribute is a bad type\n\n\n    if (shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) {\n      warnedProperties$1[name] = true;\n      return false;\n    } // Warn when passing the strings 'false' or 'true' into a boolean prop\n\n\n    if ((value === 'false' || value === 'true') && propertyInfo !== null && propertyInfo.type === BOOLEAN) {\n      error('Received the string `%s` for the boolean attribute `%s`. ' + '%s ' + 'Did you mean %s={%s}?', value, name, value === 'false' ? 'The browser will interpret it as a truthy value.' : 'Although this works, it will not work as expected if you pass the string \"false\".', name, value);\n\n      warnedProperties$1[name] = true;\n      return true;\n    }\n\n    return true;\n  };\n}\n\nvar warnUnknownProperties = function (type, props, eventRegistry) {\n  {\n    var unknownProps = [];\n\n    for (var key in props) {\n      var isValid = validateProperty$1(type, key, props[key], eventRegistry);\n\n      if (!isValid) {\n        unknownProps.push(key);\n      }\n    }\n\n    var unknownPropString = unknownProps.map(function (prop) {\n      return '`' + prop + '`';\n    }).join(', ');\n\n    if (unknownProps.length === 1) {\n      error('Invalid value for prop %s on <%s> tag. Either remove it from the element, ' + 'or pass a string or number value to keep it in the DOM. ' + 'For details, see https://reactjs.org/link/attribute-behavior ', unknownPropString, type);\n    } else if (unknownProps.length > 1) {\n      error('Invalid values for props %s on <%s> tag. Either remove them from the element, ' + 'or pass a string or number value to keep them in the DOM. ' + 'For details, see https://reactjs.org/link/attribute-behavior ', unknownPropString, type);\n    }\n  }\n};\n\nfunction validateProperties$2(type, props, eventRegistry) {\n  if (isCustomComponent(type, props)) {\n    return;\n  }\n\n  warnUnknownProperties(type, props, eventRegistry);\n}\n\nvar IS_EVENT_HANDLE_NON_MANAGED_NODE = 1;\nvar IS_NON_DELEGATED = 1 << 1;\nvar IS_CAPTURE_PHASE = 1 << 2;\n// set to LEGACY_FB_SUPPORT. LEGACY_FB_SUPPORT only gets set when\n// we call willDeferLaterForLegacyFBSupport, thus not bailing out\n// will result in endless cycles like an infinite loop.\n// We also don't want to defer during event replaying.\n\nvar SHOULD_NOT_PROCESS_POLYFILL_EVENT_PLUGINS = IS_EVENT_HANDLE_NON_MANAGED_NODE | IS_NON_DELEGATED | IS_CAPTURE_PHASE;\n\n// This exists to avoid circular dependency between ReactDOMEventReplaying\n// and DOMPluginEventSystem.\nvar currentReplayingEvent = null;\nfunction setReplayingEvent(event) {\n  {\n    if (currentReplayingEvent !== null) {\n      error('Expected currently replaying event to be null. This error ' + 'is likely caused by a bug in React. Please file an issue.');\n    }\n  }\n\n  currentReplayingEvent = event;\n}\nfunction resetReplayingEvent() {\n  {\n    if (currentReplayingEvent === null) {\n      error('Expected currently replaying event to not be null. This error ' + 'is likely caused by a bug in React. Please file an issue.');\n    }\n  }\n\n  currentReplayingEvent = null;\n}\nfunction isReplayingEvent(event) {\n  return event === currentReplayingEvent;\n}\n\n/**\n * Gets the target node from a native browser event by accounting for\n * inconsistencies in browser DOM APIs.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {DOMEventTarget} Target node.\n */\n\nfunction getEventTarget(nativeEvent) {\n  // Fallback to nativeEvent.srcElement for IE9\n  // https://github.com/facebook/react/issues/12506\n  var target = nativeEvent.target || nativeEvent.srcElement || window; // Normalize SVG <use> element events #4963\n\n  if (target.correspondingUseElement) {\n    target = target.correspondingUseElement;\n  } // Safari may fire events on text nodes (Node.TEXT_NODE is 3).\n  // @see http://www.quirksmode.org/js/events_properties.html\n\n\n  return target.nodeType === TEXT_NODE ? target.parentNode : target;\n}\n\nvar restoreImpl = null;\nvar restoreTarget = null;\nvar restoreQueue = null;\n\nfunction restoreStateOfTarget(target) {\n  // We perform this translation at the end of the event loop so that we\n  // always receive the correct fiber here\n  var internalInstance = getInstanceFromNode(target);\n\n  if (!internalInstance) {\n    // Unmounted\n    return;\n  }\n\n  if (typeof restoreImpl !== 'function') {\n    throw new Error('setRestoreImplementation() needs to be called to handle a target for controlled ' + 'events. This error is likely caused by a bug in React. Please file an issue.');\n  }\n\n  var stateNode = internalInstance.stateNode; // Guard against Fiber being unmounted.\n\n  if (stateNode) {\n    var _props = getFiberCurrentPropsFromNode(stateNode);\n\n    restoreImpl(internalInstance.stateNode, internalInstance.type, _props);\n  }\n}\n\nfunction setRestoreImplementation(impl) {\n  restoreImpl = impl;\n}\nfunction enqueueStateRestore(target) {\n  if (restoreTarget) {\n    if (restoreQueue) {\n      restoreQueue.push(target);\n    } else {\n      restoreQueue = [target];\n    }\n  } else {\n    restoreTarget = target;\n  }\n}\nfunction needsStateRestore() {\n  return restoreTarget !== null || restoreQueue !== null;\n}\nfunction restoreStateIfNeeded() {\n  if (!restoreTarget) {\n    return;\n  }\n\n  var target = restoreTarget;\n  var queuedTargets = restoreQueue;\n  restoreTarget = null;\n  restoreQueue = null;\n  restoreStateOfTarget(target);\n\n  if (queuedTargets) {\n    for (var i = 0; i < queuedTargets.length; i++) {\n      restoreStateOfTarget(queuedTargets[i]);\n    }\n  }\n}\n\n// the renderer. Such as when we're dispatching events or if third party\n// libraries need to call batchedUpdates. Eventually, this API will go away when\n// everything is batched by default. We'll then have a similar API to opt-out of\n// scheduled work and instead do synchronous work.\n// Defaults\n\nvar batchedUpdatesImpl = function (fn, bookkeeping) {\n  return fn(bookkeeping);\n};\n\nvar flushSyncImpl = function () {};\n\nvar isInsideEventHandler = false;\n\nfunction finishEventHandler() {\n  // Here we wait until all updates have propagated, which is important\n  // when using controlled components within layers:\n  // https://github.com/facebook/react/issues/1698\n  // Then we restore state of any controlled component.\n  var controlledComponentsHavePendingUpdates = needsStateRestore();\n\n  if (controlledComponentsHavePendingUpdates) {\n    // If a controlled event was fired, we may need to restore the state of\n    // the DOM node back to the controlled value. This is necessary when React\n    // bails out of the update without touching the DOM.\n    // TODO: Restore state in the microtask, after the discrete updates flush,\n    // instead of early flushing them here.\n    flushSyncImpl();\n    restoreStateIfNeeded();\n  }\n}\n\nfunction batchedUpdates(fn, a, b) {\n  if (isInsideEventHandler) {\n    // If we are currently inside another batch, we need to wait until it\n    // fully completes before restoring state.\n    return fn(a, b);\n  }\n\n  isInsideEventHandler = true;\n\n  try {\n    return batchedUpdatesImpl(fn, a, b);\n  } finally {\n    isInsideEventHandler = false;\n    finishEventHandler();\n  }\n} // TODO: Replace with flushSync\nfunction setBatchingImplementation(_batchedUpdatesImpl, _discreteUpdatesImpl, _flushSyncImpl) {\n  batchedUpdatesImpl = _batchedUpdatesImpl;\n  flushSyncImpl = _flushSyncImpl;\n}\n\nfunction isInteractive(tag) {\n  return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';\n}\n\nfunction shouldPreventMouseEvent(name, type, props) {\n  switch (name) {\n    case 'onClick':\n    case 'onClickCapture':\n    case 'onDoubleClick':\n    case 'onDoubleClickCapture':\n    case 'onMouseDown':\n    case 'onMouseDownCapture':\n    case 'onMouseMove':\n    case 'onMouseMoveCapture':\n    case 'onMouseUp':\n    case 'onMouseUpCapture':\n    case 'onMouseEnter':\n      return !!(props.disabled && isInteractive(type));\n\n    default:\n      return false;\n  }\n}\n/**\n * @param {object} inst The instance, which is the source of events.\n * @param {string} registrationName Name of listener (e.g. `onClick`).\n * @return {?function} The stored callback.\n */\n\n\nfunction getListener(inst, registrationName) {\n  var stateNode = inst.stateNode;\n\n  if (stateNode === null) {\n    // Work in progress (ex: onload events in incremental mode).\n    return null;\n  }\n\n  var props = getFiberCurrentPropsFromNode(stateNode);\n\n  if (props === null) {\n    // Work in progress.\n    return null;\n  }\n\n  var listener = props[registrationName];\n\n  if (shouldPreventMouseEvent(registrationName, inst.type, props)) {\n    return null;\n  }\n\n  if (listener && typeof listener !== 'function') {\n    throw new Error(\"Expected `\" + registrationName + \"` listener to be a function, instead got a value of `\" + typeof listener + \"` type.\");\n  }\n\n  return listener;\n}\n\nvar passiveBrowserEventsSupported = false; // Check if browser support events with passive listeners\n// https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\n\nif (canUseDOM) {\n  try {\n    var options = {}; // $FlowFixMe: Ignore Flow complaining about needing a value\n\n    Object.defineProperty(options, 'passive', {\n      get: function () {\n        passiveBrowserEventsSupported = true;\n      }\n    });\n    window.addEventListener('test', options, options);\n    window.removeEventListener('test', options, options);\n  } catch (e) {\n    passiveBrowserEventsSupported = false;\n  }\n}\n\nfunction invokeGuardedCallbackProd(name, func, context, a, b, c, d, e, f) {\n  var funcArgs = Array.prototype.slice.call(arguments, 3);\n\n  try {\n    func.apply(context, funcArgs);\n  } catch (error) {\n    this.onError(error);\n  }\n}\n\nvar invokeGuardedCallbackImpl = invokeGuardedCallbackProd;\n\n{\n  // In DEV mode, we swap out invokeGuardedCallback for a special version\n  // that plays more nicely with the browser's DevTools. The idea is to preserve\n  // \"Pause on exceptions\" behavior. Because React wraps all user-provided\n  // functions in invokeGuardedCallback, and the production version of\n  // invokeGuardedCallback uses a try-catch, all user exceptions are treated\n  // like caught exceptions, and the DevTools won't pause unless the developer\n  // takes the extra step of enabling pause on caught exceptions. This is\n  // unintuitive, though, because even though React has caught the error, from\n  // the developer's perspective, the error is uncaught.\n  //\n  // To preserve the expected \"Pause on exceptions\" behavior, we don't use a\n  // try-catch in DEV. Instead, we synchronously dispatch a fake event to a fake\n  // DOM node, and call the user-provided callback from inside an event handler\n  // for that fake event. If the callback throws, the error is \"captured\" using\n  // a global event handler. But because the error happens in a different\n  // event loop context, it does not interrupt the normal program flow.\n  // Effectively, this gives us try-catch behavior without actually using\n  // try-catch. Neat!\n  // Check that the browser supports the APIs we need to implement our special\n  // DEV version of invokeGuardedCallback\n  if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') {\n    var fakeNode = document.createElement('react');\n\n    invokeGuardedCallbackImpl = function invokeGuardedCallbackDev(name, func, context, a, b, c, d, e, f) {\n      // If document doesn't exist we know for sure we will crash in this method\n      // when we call document.createEvent(). However this can cause confusing\n      // errors: https://github.com/facebook/create-react-app/issues/3482\n      // So we preemptively throw with a better message instead.\n      if (typeof document === 'undefined' || document === null) {\n        throw new Error('The `document` global was defined when React was initialized, but is not ' + 'defined anymore. This can happen in a test environment if a component ' + 'schedules an update from an asynchronous callback, but the test has already ' + 'finished running. To solve this, you can either unmount the component at ' + 'the end of your test (and ensure that any asynchronous operations get ' + 'canceled in `componentWillUnmount`), or you can change the test itself ' + 'to be asynchronous.');\n      }\n\n      var evt = document.createEvent('Event');\n      var didCall = false; // Keeps track of whether the user-provided callback threw an error. We\n      // set this to true at the beginning, then set it to false right after\n      // calling the function. If the function errors, `didError` will never be\n      // set to false. This strategy works even if the browser is flaky and\n      // fails to call our global error handler, because it doesn't rely on\n      // the error event at all.\n\n      var didError = true; // Keeps track of the value of window.event so that we can reset it\n      // during the callback to let user code access window.event in the\n      // browsers that support it.\n\n      var windowEvent = window.event; // Keeps track of the descriptor of window.event to restore it after event\n      // dispatching: https://github.com/facebook/react/issues/13688\n\n      var windowEventDescriptor = Object.getOwnPropertyDescriptor(window, 'event');\n\n      function restoreAfterDispatch() {\n        // We immediately remove the callback from event listeners so that\n        // nested `invokeGuardedCallback` calls do not clash. Otherwise, a\n        // nested call would trigger the fake event handlers of any call higher\n        // in the stack.\n        fakeNode.removeEventListener(evtType, callCallback, false); // We check for window.hasOwnProperty('event') to prevent the\n        // window.event assignment in both IE <= 10 as they throw an error\n        // \"Member not found\" in strict mode, and in Firefox which does not\n        // support window.event.\n\n        if (typeof window.event !== 'undefined' && window.hasOwnProperty('event')) {\n          window.event = windowEvent;\n        }\n      } // Create an event handler for our fake event. We will synchronously\n      // dispatch our fake event using `dispatchEvent`. Inside the handler, we\n      // call the user-provided callback.\n\n\n      var funcArgs = Array.prototype.slice.call(arguments, 3);\n\n      function callCallback() {\n        didCall = true;\n        restoreAfterDispatch();\n        func.apply(context, funcArgs);\n        didError = false;\n      } // Create a global error event handler. We use this to capture the value\n      // that was thrown. It's possible that this error handler will fire more\n      // than once; for example, if non-React code also calls `dispatchEvent`\n      // and a handler for that event throws. We should be resilient to most of\n      // those cases. Even if our error event handler fires more than once, the\n      // last error event is always used. If the callback actually does error,\n      // we know that the last error event is the correct one, because it's not\n      // possible for anything else to have happened in between our callback\n      // erroring and the code that follows the `dispatchEvent` call below. If\n      // the callback doesn't error, but the error event was fired, we know to\n      // ignore it because `didError` will be false, as described above.\n\n\n      var error; // Use this to track whether the error event is ever called.\n\n      var didSetError = false;\n      var isCrossOriginError = false;\n\n      function handleWindowError(event) {\n        error = event.error;\n        didSetError = true;\n\n        if (error === null && event.colno === 0 && event.lineno === 0) {\n          isCrossOriginError = true;\n        }\n\n        if (event.defaultPrevented) {\n          // Some other error handler has prevented default.\n          // Browsers silence the error report if this happens.\n          // We'll remember this to later decide whether to log it or not.\n          if (error != null && typeof error === 'object') {\n            try {\n              error._suppressLogging = true;\n            } catch (inner) {// Ignore.\n            }\n          }\n        }\n      } // Create a fake event type.\n\n\n      var evtType = \"react-\" + (name ? name : 'invokeguardedcallback'); // Attach our event handlers\n\n      window.addEventListener('error', handleWindowError);\n      fakeNode.addEventListener(evtType, callCallback, false); // Synchronously dispatch our fake event. If the user-provided function\n      // errors, it will trigger our global error handler.\n\n      evt.initEvent(evtType, false, false);\n      fakeNode.dispatchEvent(evt);\n\n      if (windowEventDescriptor) {\n        Object.defineProperty(window, 'event', windowEventDescriptor);\n      }\n\n      if (didCall && didError) {\n        if (!didSetError) {\n          // The callback errored, but the error event never fired.\n          // eslint-disable-next-line react-internal/prod-error-codes\n          error = new Error('An error was thrown inside one of your components, but React ' + \"doesn't know what it was. This is likely due to browser \" + 'flakiness. React does its best to preserve the \"Pause on ' + 'exceptions\" behavior of the DevTools, which requires some ' + \"DEV-mode only tricks. It's possible that these don't work in \" + 'your browser. Try triggering the error in production mode, ' + 'or switching to a modern browser. If you suspect that this is ' + 'actually an issue with React, please file an issue.');\n        } else if (isCrossOriginError) {\n          // eslint-disable-next-line react-internal/prod-error-codes\n          error = new Error(\"A cross-origin error was thrown. React doesn't have access to \" + 'the actual error object in development. ' + 'See https://reactjs.org/link/crossorigin-error for more information.');\n        }\n\n        this.onError(error);\n      } // Remove our event listeners\n\n\n      window.removeEventListener('error', handleWindowError);\n\n      if (!didCall) {\n        // Something went really wrong, and our event was not dispatched.\n        // https://github.com/facebook/react/issues/16734\n        // https://github.com/facebook/react/issues/16585\n        // Fall back to the production implementation.\n        restoreAfterDispatch();\n        return invokeGuardedCallbackProd.apply(this, arguments);\n      }\n    };\n  }\n}\n\nvar invokeGuardedCallbackImpl$1 = invokeGuardedCallbackImpl;\n\nvar hasError = false;\nvar caughtError = null; // Used by event system to capture/rethrow the first error.\n\nvar hasRethrowError = false;\nvar rethrowError = null;\nvar reporter = {\n  onError: function (error) {\n    hasError = true;\n    caughtError = error;\n  }\n};\n/**\n * Call a function while guarding against errors that happens within it.\n * Returns an error if it throws, otherwise null.\n *\n * In production, this is implemented using a try-catch. The reason we don't\n * use a try-catch directly is so that we can swap out a different\n * implementation in DEV mode.\n *\n * @param {String} name of the guard to use for logging or debugging\n * @param {Function} func The function to invoke\n * @param {*} context The context to use when calling the function\n * @param {...*} args Arguments for function\n */\n\nfunction invokeGuardedCallback(name, func, context, a, b, c, d, e, f) {\n  hasError = false;\n  caughtError = null;\n  invokeGuardedCallbackImpl$1.apply(reporter, arguments);\n}\n/**\n * Same as invokeGuardedCallback, but instead of returning an error, it stores\n * it in a global so it can be rethrown by `rethrowCaughtError` later.\n * TODO: See if caughtError and rethrowError can be unified.\n *\n * @param {String} name of the guard to use for logging or debugging\n * @param {Function} func The function to invoke\n * @param {*} context The context to use when calling the function\n * @param {...*} args Arguments for function\n */\n\nfunction invokeGuardedCallbackAndCatchFirstError(name, func, context, a, b, c, d, e, f) {\n  invokeGuardedCallback.apply(this, arguments);\n\n  if (hasError) {\n    var error = clearCaughtError();\n\n    if (!hasRethrowError) {\n      hasRethrowError = true;\n      rethrowError = error;\n    }\n  }\n}\n/**\n * During execution of guarded functions we will capture the first error which\n * we will rethrow to be handled by the top level error handler.\n */\n\nfunction rethrowCaughtError() {\n  if (hasRethrowError) {\n    var error = rethrowError;\n    hasRethrowError = false;\n    rethrowError = null;\n    throw error;\n  }\n}\nfunction hasCaughtError() {\n  return hasError;\n}\nfunction clearCaughtError() {\n  if (hasError) {\n    var error = caughtError;\n    hasError = false;\n    caughtError = null;\n    return error;\n  } else {\n    throw new Error('clearCaughtError was called but no error was captured. This error ' + 'is likely caused by a bug in React. Please file an issue.');\n  }\n}\n\n/**\n * `ReactInstanceMap` maintains a mapping from a public facing stateful\n * instance (key) and the internal representation (value). This allows public\n * methods to accept the user facing instance as an argument and map them back\n * to internal methods.\n *\n * Note that this module is currently shared and assumed to be stateless.\n * If this becomes an actual Map, that will break.\n */\nfunction get(key) {\n  return key._reactInternals;\n}\nfunction has(key) {\n  return key._reactInternals !== undefined;\n}\nfunction set(key, value) {\n  key._reactInternals = value;\n}\n\n// Don't change these two values. They're used by React Dev Tools.\nvar NoFlags =\n/*                      */\n0;\nvar PerformedWork =\n/*                */\n1; // You can change the rest (and add more).\n\nvar Placement =\n/*                    */\n2;\nvar Update =\n/*                       */\n4;\nvar ChildDeletion =\n/*                */\n16;\nvar ContentReset =\n/*                 */\n32;\nvar Callback =\n/*                     */\n64;\nvar DidCapture =\n/*                   */\n128;\nvar ForceClientRender =\n/*            */\n256;\nvar Ref =\n/*                          */\n512;\nvar Snapshot =\n/*                     */\n1024;\nvar Passive =\n/*                      */\n2048;\nvar Hydrating =\n/*                    */\n4096;\nvar Visibility =\n/*                   */\n8192;\nvar StoreConsistency =\n/*             */\n16384;\nvar LifecycleEffectMask = Passive | Update | Callback | Ref | Snapshot | StoreConsistency; // Union of all commit flags (flags with the lifetime of a particular commit)\n\nvar HostEffectMask =\n/*               */\n32767; // These are not really side effects, but we still reuse this field.\n\nvar Incomplete =\n/*                   */\n32768;\nvar ShouldCapture =\n/*                */\n65536;\nvar ForceUpdateForLegacySuspense =\n/* */\n131072;\nvar Forked =\n/*                       */\n1048576; // Static tags describe aspects of a fiber that are not specific to a render,\n// e.g. a fiber uses a passive effect (even if there are no updates on this particular render).\n// This enables us to defer more work in the unmount case,\n// since we can defer traversing the tree during layout to look for Passive effects,\n// and instead rely on the static flag as a signal that there may be cleanup work.\n\nvar RefStatic =\n/*                    */\n2097152;\nvar LayoutStatic =\n/*                 */\n4194304;\nvar PassiveStatic =\n/*                */\n8388608; // These flags allow us to traverse to fibers that have effects on mount\n// without traversing the entire tree after every commit for\n// double invoking\n\nvar MountLayoutDev =\n/*               */\n16777216;\nvar MountPassiveDev =\n/*              */\n33554432; // Groups of flags that are used in the commit phase to skip over trees that\n// don't contain effects, by checking subtreeFlags.\n\nvar BeforeMutationMask = // TODO: Remove Update flag from before mutation phase by re-landing Visibility\n// flag logic (see #20043)\nUpdate | Snapshot | ( 0);\nvar MutationMask = Placement | Update | ChildDeletion | ContentReset | Ref | Hydrating | Visibility;\nvar LayoutMask = Update | Callback | Ref | Visibility; // TODO: Split into PassiveMountMask and PassiveUnmountMask\n\nvar PassiveMask = Passive | ChildDeletion; // Union of tags that don't get reset on clones.\n// This allows certain concepts to persist without recalculating them,\n// e.g. whether a subtree contains passive effects or portals.\n\nvar StaticMask = LayoutStatic | PassiveStatic | RefStatic;\n\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\nfunction getNearestMountedFiber(fiber) {\n  var node = fiber;\n  var nearestMounted = fiber;\n\n  if (!fiber.alternate) {\n    // If there is no alternate, this might be a new tree that isn't inserted\n    // yet. If it is, then it will have a pending insertion effect on it.\n    var nextNode = node;\n\n    do {\n      node = nextNode;\n\n      if ((node.flags & (Placement | Hydrating)) !== NoFlags) {\n        // This is an insertion or in-progress hydration. The nearest possible\n        // mounted fiber is the parent but we need to continue to figure out\n        // if that one is still mounted.\n        nearestMounted = node.return;\n      }\n\n      nextNode = node.return;\n    } while (nextNode);\n  } else {\n    while (node.return) {\n      node = node.return;\n    }\n  }\n\n  if (node.tag === HostRoot) {\n    // TODO: Check if this was a nested HostRoot when used with\n    // renderContainerIntoSubtree.\n    return nearestMounted;\n  } // If we didn't hit the root, that means that we're in an disconnected tree\n  // that has been unmounted.\n\n\n  return null;\n}\nfunction getSuspenseInstanceFromFiber(fiber) {\n  if (fiber.tag === SuspenseComponent) {\n    var suspenseState = fiber.memoizedState;\n\n    if (suspenseState === null) {\n      var current = fiber.alternate;\n\n      if (current !== null) {\n        suspenseState = current.memoizedState;\n      }\n    }\n\n    if (suspenseState !== null) {\n      return suspenseState.dehydrated;\n    }\n  }\n\n  return null;\n}\nfunction getContainerFromFiber(fiber) {\n  return fiber.tag === HostRoot ? fiber.stateNode.containerInfo : null;\n}\nfunction isFiberMounted(fiber) {\n  return getNearestMountedFiber(fiber) === fiber;\n}\nfunction isMounted(component) {\n  {\n    var owner = ReactCurrentOwner.current;\n\n    if (owner !== null && owner.tag === ClassComponent) {\n      var ownerFiber = owner;\n      var instance = ownerFiber.stateNode;\n\n      if (!instance._warnedAboutRefsInRender) {\n        error('%s is accessing isMounted inside its render() function. ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', getComponentNameFromFiber(ownerFiber) || 'A component');\n      }\n\n      instance._warnedAboutRefsInRender = true;\n    }\n  }\n\n  var fiber = get(component);\n\n  if (!fiber) {\n    return false;\n  }\n\n  return getNearestMountedFiber(fiber) === fiber;\n}\n\nfunction assertIsMounted(fiber) {\n  if (getNearestMountedFiber(fiber) !== fiber) {\n    throw new Error('Unable to find node on an unmounted component.');\n  }\n}\n\nfunction findCurrentFiberUsingSlowPath(fiber) {\n  var alternate = fiber.alternate;\n\n  if (!alternate) {\n    // If there is no alternate, then we only need to check if it is mounted.\n    var nearestMounted = getNearestMountedFiber(fiber);\n\n    if (nearestMounted === null) {\n      throw new Error('Unable to find node on an unmounted component.');\n    }\n\n    if (nearestMounted !== fiber) {\n      return null;\n    }\n\n    return fiber;\n  } // If we have two possible branches, we'll walk backwards up to the root\n  // to see what path the root points to. On the way we may hit one of the\n  // special cases and we'll deal with them.\n\n\n  var a = fiber;\n  var b = alternate;\n\n  while (true) {\n    var parentA = a.return;\n\n    if (parentA === null) {\n      // We're at the root.\n      break;\n    }\n\n    var parentB = parentA.alternate;\n\n    if (parentB === null) {\n      // There is no alternate. This is an unusual case. Currently, it only\n      // happens when a Suspense component is hidden. An extra fragment fiber\n      // is inserted in between the Suspense fiber and its children. Skip\n      // over this extra fragment fiber and proceed to the next parent.\n      var nextParent = parentA.return;\n\n      if (nextParent !== null) {\n        a = b = nextParent;\n        continue;\n      } // If there's no parent, we're at the root.\n\n\n      break;\n    } // If both copies of the parent fiber point to the same child, we can\n    // assume that the child is current. This happens when we bailout on low\n    // priority: the bailed out fiber's child reuses the current child.\n\n\n    if (parentA.child === parentB.child) {\n      var child = parentA.child;\n\n      while (child) {\n        if (child === a) {\n          // We've determined that A is the current branch.\n          assertIsMounted(parentA);\n          return fiber;\n        }\n\n        if (child === b) {\n          // We've determined that B is the current branch.\n          assertIsMounted(parentA);\n          return alternate;\n        }\n\n        child = child.sibling;\n      } // We should never have an alternate for any mounting node. So the only\n      // way this could possibly happen is if this was unmounted, if at all.\n\n\n      throw new Error('Unable to find node on an unmounted component.');\n    }\n\n    if (a.return !== b.return) {\n      // The return pointer of A and the return pointer of B point to different\n      // fibers. We assume that return pointers never criss-cross, so A must\n      // belong to the child set of A.return, and B must belong to the child\n      // set of B.return.\n      a = parentA;\n      b = parentB;\n    } else {\n      // The return pointers point to the same fiber. We'll have to use the\n      // default, slow path: scan the child sets of each parent alternate to see\n      // which child belongs to which set.\n      //\n      // Search parent A's child set\n      var didFindChild = false;\n      var _child = parentA.child;\n\n      while (_child) {\n        if (_child === a) {\n          didFindChild = true;\n          a = parentA;\n          b = parentB;\n          break;\n        }\n\n        if (_child === b) {\n          didFindChild = true;\n          b = parentA;\n          a = parentB;\n          break;\n        }\n\n        _child = _child.sibling;\n      }\n\n      if (!didFindChild) {\n        // Search parent B's child set\n        _child = parentB.child;\n\n        while (_child) {\n          if (_child === a) {\n            didFindChild = true;\n            a = parentB;\n            b = parentA;\n            break;\n          }\n\n          if (_child === b) {\n            didFindChild = true;\n            b = parentB;\n            a = parentA;\n            break;\n          }\n\n          _child = _child.sibling;\n        }\n\n        if (!didFindChild) {\n          throw new Error('Child was not found in either parent set. This indicates a bug ' + 'in React related to the return pointer. Please file an issue.');\n        }\n      }\n    }\n\n    if (a.alternate !== b) {\n      throw new Error(\"Return fibers should always be each others' alternates. \" + 'This error is likely caused by a bug in React. Please file an issue.');\n    }\n  } // If the root is not a host container, we're in a disconnected tree. I.e.\n  // unmounted.\n\n\n  if (a.tag !== HostRoot) {\n    throw new Error('Unable to find node on an unmounted component.');\n  }\n\n  if (a.stateNode.current === a) {\n    // We've determined that A is the current branch.\n    return fiber;\n  } // Otherwise B has to be current branch.\n\n\n  return alternate;\n}\nfunction findCurrentHostFiber(parent) {\n  var currentParent = findCurrentFiberUsingSlowPath(parent);\n  return currentParent !== null ? findCurrentHostFiberImpl(currentParent) : null;\n}\n\nfunction findCurrentHostFiberImpl(node) {\n  // Next we'll drill down this component to find the first HostComponent/Text.\n  if (node.tag === HostComponent || node.tag === HostText) {\n    return node;\n  }\n\n  var child = node.child;\n\n  while (child !== null) {\n    var match = findCurrentHostFiberImpl(child);\n\n    if (match !== null) {\n      return match;\n    }\n\n    child = child.sibling;\n  }\n\n  return null;\n}\n\nfunction findCurrentHostFiberWithNoPortals(parent) {\n  var currentParent = findCurrentFiberUsingSlowPath(parent);\n  return currentParent !== null ? findCurrentHostFiberWithNoPortalsImpl(currentParent) : null;\n}\n\nfunction findCurrentHostFiberWithNoPortalsImpl(node) {\n  // Next we'll drill down this component to find the first HostComponent/Text.\n  if (node.tag === HostComponent || node.tag === HostText) {\n    return node;\n  }\n\n  var child = node.child;\n\n  while (child !== null) {\n    if (child.tag !== HostPortal) {\n      var match = findCurrentHostFiberWithNoPortalsImpl(child);\n\n      if (match !== null) {\n        return match;\n      }\n    }\n\n    child = child.sibling;\n  }\n\n  return null;\n}\n\n// This module only exists as an ESM wrapper around the external CommonJS\nvar scheduleCallback = Scheduler.unstable_scheduleCallback;\nvar cancelCallback = Scheduler.unstable_cancelCallback;\nvar shouldYield = Scheduler.unstable_shouldYield;\nvar requestPaint = Scheduler.unstable_requestPaint;\nvar now = Scheduler.unstable_now;\nvar getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel;\nvar ImmediatePriority = Scheduler.unstable_ImmediatePriority;\nvar UserBlockingPriority = Scheduler.unstable_UserBlockingPriority;\nvar NormalPriority = Scheduler.unstable_NormalPriority;\nvar LowPriority = Scheduler.unstable_LowPriority;\nvar IdlePriority = Scheduler.unstable_IdlePriority;\n// this doesn't actually exist on the scheduler, but it *does*\n// on scheduler/unstable_mock, which we'll need for internal testing\nvar unstable_yieldValue = Scheduler.unstable_yieldValue;\nvar unstable_setDisableYieldValue = Scheduler.unstable_setDisableYieldValue;\n\nvar rendererID = null;\nvar injectedHook = null;\nvar injectedProfilingHooks = null;\nvar hasLoggedError = false;\nvar isDevToolsPresent = typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined';\nfunction injectInternals(internals) {\n  if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {\n    // No DevTools\n    return false;\n  }\n\n  var hook = __REACT_DEVTOOLS_GLOBAL_HOOK__;\n\n  if (hook.isDisabled) {\n    // This isn't a real property on the hook, but it can be set to opt out\n    // of DevTools integration and associated warnings and logs.\n    // https://github.com/facebook/react/issues/3877\n    return true;\n  }\n\n  if (!hook.supportsFiber) {\n    {\n      error('The installed version of React DevTools is too old and will not work ' + 'with the current version of React. Please update React DevTools. ' + 'https://reactjs.org/link/react-devtools');\n    } // DevTools exists, even though it doesn't support Fiber.\n\n\n    return true;\n  }\n\n  try {\n    if (enableSchedulingProfiler) {\n      // Conditionally inject these hooks only if Timeline profiler is supported by this build.\n      // This gives DevTools a way to feature detect that isn't tied to version number\n      // (since profiling and timeline are controlled by different feature flags).\n      internals = assign({}, internals, {\n        getLaneLabelMap: getLaneLabelMap,\n        injectProfilingHooks: injectProfilingHooks\n      });\n    }\n\n    rendererID = hook.inject(internals); // We have successfully injected, so now it is safe to set up hooks.\n\n    injectedHook = hook;\n  } catch (err) {\n    // Catch all errors because it is unsafe to throw during initialization.\n    {\n      error('React instrumentation encountered an error: %s.', err);\n    }\n  }\n\n  if (hook.checkDCE) {\n    // This is the real DevTools.\n    return true;\n  } else {\n    // This is likely a hook installed by Fast Refresh runtime.\n    return false;\n  }\n}\nfunction onScheduleRoot(root, children) {\n  {\n    if (injectedHook && typeof injectedHook.onScheduleFiberRoot === 'function') {\n      try {\n        injectedHook.onScheduleFiberRoot(rendererID, root, children);\n      } catch (err) {\n        if ( !hasLoggedError) {\n          hasLoggedError = true;\n\n          error('React instrumentation encountered an error: %s', err);\n        }\n      }\n    }\n  }\n}\nfunction onCommitRoot(root, eventPriority) {\n  if (injectedHook && typeof injectedHook.onCommitFiberRoot === 'function') {\n    try {\n      var didError = (root.current.flags & DidCapture) === DidCapture;\n\n      if (enableProfilerTimer) {\n        var schedulerPriority;\n\n        switch (eventPriority) {\n          case DiscreteEventPriority:\n            schedulerPriority = ImmediatePriority;\n            break;\n\n          case ContinuousEventPriority:\n            schedulerPriority = UserBlockingPriority;\n            break;\n\n          case DefaultEventPriority:\n            schedulerPriority = NormalPriority;\n            break;\n\n          case IdleEventPriority:\n            schedulerPriority = IdlePriority;\n            break;\n\n          default:\n            schedulerPriority = NormalPriority;\n            break;\n        }\n\n        injectedHook.onCommitFiberRoot(rendererID, root, schedulerPriority, didError);\n      } else {\n        injectedHook.onCommitFiberRoot(rendererID, root, undefined, didError);\n      }\n    } catch (err) {\n      {\n        if (!hasLoggedError) {\n          hasLoggedError = true;\n\n          error('React instrumentation encountered an error: %s', err);\n        }\n      }\n    }\n  }\n}\nfunction onPostCommitRoot(root) {\n  if (injectedHook && typeof injectedHook.onPostCommitFiberRoot === 'function') {\n    try {\n      injectedHook.onPostCommitFiberRoot(rendererID, root);\n    } catch (err) {\n      {\n        if (!hasLoggedError) {\n          hasLoggedError = true;\n\n          error('React instrumentation encountered an error: %s', err);\n        }\n      }\n    }\n  }\n}\nfunction onCommitUnmount(fiber) {\n  if (injectedHook && typeof injectedHook.onCommitFiberUnmount === 'function') {\n    try {\n      injectedHook.onCommitFiberUnmount(rendererID, fiber);\n    } catch (err) {\n      {\n        if (!hasLoggedError) {\n          hasLoggedError = true;\n\n          error('React instrumentation encountered an error: %s', err);\n        }\n      }\n    }\n  }\n}\nfunction setIsStrictModeForDevtools(newIsStrictMode) {\n  {\n    if (typeof unstable_yieldValue === 'function') {\n      // We're in a test because Scheduler.unstable_yieldValue only exists\n      // in SchedulerMock. To reduce the noise in strict mode tests,\n      // suppress warnings and disable scheduler yielding during the double render\n      unstable_setDisableYieldValue(newIsStrictMode);\n      setSuppressWarning(newIsStrictMode);\n    }\n\n    if (injectedHook && typeof injectedHook.setStrictMode === 'function') {\n      try {\n        injectedHook.setStrictMode(rendererID, newIsStrictMode);\n      } catch (err) {\n        {\n          if (!hasLoggedError) {\n            hasLoggedError = true;\n\n            error('React instrumentation encountered an error: %s', err);\n          }\n        }\n      }\n    }\n  }\n} // Profiler API hooks\n\nfunction injectProfilingHooks(profilingHooks) {\n  injectedProfilingHooks = profilingHooks;\n}\n\nfunction getLaneLabelMap() {\n  {\n    var map = new Map();\n    var lane = 1;\n\n    for (var index = 0; index < TotalLanes; index++) {\n      var label = getLabelForLane(lane);\n      map.set(lane, label);\n      lane *= 2;\n    }\n\n    return map;\n  }\n}\n\nfunction markCommitStarted(lanes) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markCommitStarted === 'function') {\n      injectedProfilingHooks.markCommitStarted(lanes);\n    }\n  }\n}\nfunction markCommitStopped() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markCommitStopped === 'function') {\n      injectedProfilingHooks.markCommitStopped();\n    }\n  }\n}\nfunction markComponentRenderStarted(fiber) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentRenderStarted === 'function') {\n      injectedProfilingHooks.markComponentRenderStarted(fiber);\n    }\n  }\n}\nfunction markComponentRenderStopped() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentRenderStopped === 'function') {\n      injectedProfilingHooks.markComponentRenderStopped();\n    }\n  }\n}\nfunction markComponentPassiveEffectMountStarted(fiber) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentPassiveEffectMountStarted === 'function') {\n      injectedProfilingHooks.markComponentPassiveEffectMountStarted(fiber);\n    }\n  }\n}\nfunction markComponentPassiveEffectMountStopped() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentPassiveEffectMountStopped === 'function') {\n      injectedProfilingHooks.markComponentPassiveEffectMountStopped();\n    }\n  }\n}\nfunction markComponentPassiveEffectUnmountStarted(fiber) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentPassiveEffectUnmountStarted === 'function') {\n      injectedProfilingHooks.markComponentPassiveEffectUnmountStarted(fiber);\n    }\n  }\n}\nfunction markComponentPassiveEffectUnmountStopped() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentPassiveEffectUnmountStopped === 'function') {\n      injectedProfilingHooks.markComponentPassiveEffectUnmountStopped();\n    }\n  }\n}\nfunction markComponentLayoutEffectMountStarted(fiber) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentLayoutEffectMountStarted === 'function') {\n      injectedProfilingHooks.markComponentLayoutEffectMountStarted(fiber);\n    }\n  }\n}\nfunction markComponentLayoutEffectMountStopped() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentLayoutEffectMountStopped === 'function') {\n      injectedProfilingHooks.markComponentLayoutEffectMountStopped();\n    }\n  }\n}\nfunction markComponentLayoutEffectUnmountStarted(fiber) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentLayoutEffectUnmountStarted === 'function') {\n      injectedProfilingHooks.markComponentLayoutEffectUnmountStarted(fiber);\n    }\n  }\n}\nfunction markComponentLayoutEffectUnmountStopped() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentLayoutEffectUnmountStopped === 'function') {\n      injectedProfilingHooks.markComponentLayoutEffectUnmountStopped();\n    }\n  }\n}\nfunction markComponentErrored(fiber, thrownValue, lanes) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentErrored === 'function') {\n      injectedProfilingHooks.markComponentErrored(fiber, thrownValue, lanes);\n    }\n  }\n}\nfunction markComponentSuspended(fiber, wakeable, lanes) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markComponentSuspended === 'function') {\n      injectedProfilingHooks.markComponentSuspended(fiber, wakeable, lanes);\n    }\n  }\n}\nfunction markLayoutEffectsStarted(lanes) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markLayoutEffectsStarted === 'function') {\n      injectedProfilingHooks.markLayoutEffectsStarted(lanes);\n    }\n  }\n}\nfunction markLayoutEffectsStopped() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markLayoutEffectsStopped === 'function') {\n      injectedProfilingHooks.markLayoutEffectsStopped();\n    }\n  }\n}\nfunction markPassiveEffectsStarted(lanes) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markPassiveEffectsStarted === 'function') {\n      injectedProfilingHooks.markPassiveEffectsStarted(lanes);\n    }\n  }\n}\nfunction markPassiveEffectsStopped() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markPassiveEffectsStopped === 'function') {\n      injectedProfilingHooks.markPassiveEffectsStopped();\n    }\n  }\n}\nfunction markRenderStarted(lanes) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markRenderStarted === 'function') {\n      injectedProfilingHooks.markRenderStarted(lanes);\n    }\n  }\n}\nfunction markRenderYielded() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markRenderYielded === 'function') {\n      injectedProfilingHooks.markRenderYielded();\n    }\n  }\n}\nfunction markRenderStopped() {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markRenderStopped === 'function') {\n      injectedProfilingHooks.markRenderStopped();\n    }\n  }\n}\nfunction markRenderScheduled(lane) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markRenderScheduled === 'function') {\n      injectedProfilingHooks.markRenderScheduled(lane);\n    }\n  }\n}\nfunction markForceUpdateScheduled(fiber, lane) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markForceUpdateScheduled === 'function') {\n      injectedProfilingHooks.markForceUpdateScheduled(fiber, lane);\n    }\n  }\n}\nfunction markStateUpdateScheduled(fiber, lane) {\n  {\n    if (injectedProfilingHooks !== null && typeof injectedProfilingHooks.markStateUpdateScheduled === 'function') {\n      injectedProfilingHooks.markStateUpdateScheduled(fiber, lane);\n    }\n  }\n}\n\nvar NoMode =\n/*                         */\n0; // TODO: Remove ConcurrentMode by reading from the root tag instead\n\nvar ConcurrentMode =\n/*                 */\n1;\nvar ProfileMode =\n/*                    */\n2;\nvar StrictLegacyMode =\n/*               */\n8;\nvar StrictEffectsMode =\n/*              */\n16;\n\n// TODO: This is pretty well supported by browsers. Maybe we can drop it.\nvar clz32 = Math.clz32 ? Math.clz32 : clz32Fallback; // Count leading zeros.\n// Based on:\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/clz32\n\nvar log = Math.log;\nvar LN2 = Math.LN2;\n\nfunction clz32Fallback(x) {\n  var asUint = x >>> 0;\n\n  if (asUint === 0) {\n    return 32;\n  }\n\n  return 31 - (log(asUint) / LN2 | 0) | 0;\n}\n\n// If those values are changed that package should be rebuilt and redeployed.\n\nvar TotalLanes = 31;\nvar NoLanes =\n/*                        */\n0;\nvar NoLane =\n/*                          */\n0;\nvar SyncLane =\n/*                        */\n1;\nvar InputContinuousHydrationLane =\n/*    */\n2;\nvar InputContinuousLane =\n/*             */\n4;\nvar DefaultHydrationLane =\n/*            */\n8;\nvar DefaultLane =\n/*                     */\n16;\nvar TransitionHydrationLane =\n/*                */\n32;\nvar TransitionLanes =\n/*                       */\n4194240;\nvar TransitionLane1 =\n/*                        */\n64;\nvar TransitionLane2 =\n/*                        */\n128;\nvar TransitionLane3 =\n/*                        */\n256;\nvar TransitionLane4 =\n/*                        */\n512;\nvar TransitionLane5 =\n/*                        */\n1024;\nvar TransitionLane6 =\n/*                        */\n2048;\nvar TransitionLane7 =\n/*                        */\n4096;\nvar TransitionLane8 =\n/*                        */\n8192;\nvar TransitionLane9 =\n/*                        */\n16384;\nvar TransitionLane10 =\n/*                       */\n32768;\nvar TransitionLane11 =\n/*                       */\n65536;\nvar TransitionLane12 =\n/*                       */\n131072;\nvar TransitionLane13 =\n/*                       */\n262144;\nvar TransitionLane14 =\n/*                       */\n524288;\nvar TransitionLane15 =\n/*                       */\n1048576;\nvar TransitionLane16 =\n/*                       */\n2097152;\nvar RetryLanes =\n/*                            */\n130023424;\nvar RetryLane1 =\n/*                             */\n4194304;\nvar RetryLane2 =\n/*                             */\n8388608;\nvar RetryLane3 =\n/*                             */\n16777216;\nvar RetryLane4 =\n/*                             */\n33554432;\nvar RetryLane5 =\n/*                             */\n67108864;\nvar SomeRetryLane = RetryLane1;\nvar SelectiveHydrationLane =\n/*          */\n134217728;\nvar NonIdleLanes =\n/*                          */\n268435455;\nvar IdleHydrationLane =\n/*               */\n268435456;\nvar IdleLane =\n/*                        */\n536870912;\nvar OffscreenLane =\n/*                   */\n1073741824; // This function is used for the experimental timeline (react-devtools-timeline)\n// It should be kept in sync with the Lanes values above.\n\nfunction getLabelForLane(lane) {\n  {\n    if (lane & SyncLane) {\n      return 'Sync';\n    }\n\n    if (lane & InputContinuousHydrationLane) {\n      return 'InputContinuousHydration';\n    }\n\n    if (lane & InputContinuousLane) {\n      return 'InputContinuous';\n    }\n\n    if (lane & DefaultHydrationLane) {\n      return 'DefaultHydration';\n    }\n\n    if (lane & DefaultLane) {\n      return 'Default';\n    }\n\n    if (lane & TransitionHydrationLane) {\n      return 'TransitionHydration';\n    }\n\n    if (lane & TransitionLanes) {\n      return 'Transition';\n    }\n\n    if (lane & RetryLanes) {\n      return 'Retry';\n    }\n\n    if (lane & SelectiveHydrationLane) {\n      return 'SelectiveHydration';\n    }\n\n    if (lane & IdleHydrationLane) {\n      return 'IdleHydration';\n    }\n\n    if (lane & IdleLane) {\n      return 'Idle';\n    }\n\n    if (lane & OffscreenLane) {\n      return 'Offscreen';\n    }\n  }\n}\nvar NoTimestamp = -1;\nvar nextTransitionLane = TransitionLane1;\nvar nextRetryLane = RetryLane1;\n\nfunction getHighestPriorityLanes(lanes) {\n  switch (getHighestPriorityLane(lanes)) {\n    case SyncLane:\n      return SyncLane;\n\n    case InputContinuousHydrationLane:\n      return InputContinuousHydrationLane;\n\n    case InputContinuousLane:\n      return InputContinuousLane;\n\n    case DefaultHydrationLane:\n      return DefaultHydrationLane;\n\n    case DefaultLane:\n      return DefaultLane;\n\n    case TransitionHydrationLane:\n      return TransitionHydrationLane;\n\n    case TransitionLane1:\n    case TransitionLane2:\n    case TransitionLane3:\n    case TransitionLane4:\n    case TransitionLane5:\n    case TransitionLane6:\n    case TransitionLane7:\n    case TransitionLane8:\n    case TransitionLane9:\n    case TransitionLane10:\n    case TransitionLane11:\n    case TransitionLane12:\n    case TransitionLane13:\n    case TransitionLane14:\n    case TransitionLane15:\n    case TransitionLane16:\n      return lanes & TransitionLanes;\n\n    case RetryLane1:\n    case RetryLane2:\n    case RetryLane3:\n    case RetryLane4:\n    case RetryLane5:\n      return lanes & RetryLanes;\n\n    case SelectiveHydrationLane:\n      return SelectiveHydrationLane;\n\n    case IdleHydrationLane:\n      return IdleHydrationLane;\n\n    case IdleLane:\n      return IdleLane;\n\n    case OffscreenLane:\n      return OffscreenLane;\n\n    default:\n      {\n        error('Should have found matching lanes. This is a bug in React.');\n      } // This shouldn't be reachable, but as a fallback, return the entire bitmask.\n\n\n      return lanes;\n  }\n}\n\nfunction getNextLanes(root, wipLanes) {\n  // Early bailout if there's no pending work left.\n  var pendingLanes = root.pendingLanes;\n\n  if (pendingLanes === NoLanes) {\n    return NoLanes;\n  }\n\n  var nextLanes = NoLanes;\n  var suspendedLanes = root.suspendedLanes;\n  var pingedLanes = root.pingedLanes; // Do not work on any idle work until all the non-idle work has finished,\n  // even if the work is suspended.\n\n  var nonIdlePendingLanes = pendingLanes & NonIdleLanes;\n\n  if (nonIdlePendingLanes !== NoLanes) {\n    var nonIdleUnblockedLanes = nonIdlePendingLanes & ~suspendedLanes;\n\n    if (nonIdleUnblockedLanes !== NoLanes) {\n      nextLanes = getHighestPriorityLanes(nonIdleUnblockedLanes);\n    } else {\n      var nonIdlePingedLanes = nonIdlePendingLanes & pingedLanes;\n\n      if (nonIdlePingedLanes !== NoLanes) {\n        nextLanes = getHighestPriorityLanes(nonIdlePingedLanes);\n      }\n    }\n  } else {\n    // The only remaining work is Idle.\n    var unblockedLanes = pendingLanes & ~suspendedLanes;\n\n    if (unblockedLanes !== NoLanes) {\n      nextLanes = getHighestPriorityLanes(unblockedLanes);\n    } else {\n      if (pingedLanes !== NoLanes) {\n        nextLanes = getHighestPriorityLanes(pingedLanes);\n      }\n    }\n  }\n\n  if (nextLanes === NoLanes) {\n    // This should only be reachable if we're suspended\n    // TODO: Consider warning in this path if a fallback timer is not scheduled.\n    return NoLanes;\n  } // If we're already in the middle of a render, switching lanes will interrupt\n  // it and we'll lose our progress. We should only do this if the new lanes are\n  // higher priority.\n\n\n  if (wipLanes !== NoLanes && wipLanes !== nextLanes && // If we already suspended with a delay, then interrupting is fine. Don't\n  // bother waiting until the root is complete.\n  (wipLanes & suspendedLanes) === NoLanes) {\n    var nextLane = getHighestPriorityLane(nextLanes);\n    var wipLane = getHighestPriorityLane(wipLanes);\n\n    if ( // Tests whether the next lane is equal or lower priority than the wip\n    // one. This works because the bits decrease in priority as you go left.\n    nextLane >= wipLane || // Default priority updates should not interrupt transition updates. The\n    // only difference between default updates and transition updates is that\n    // default updates do not support refresh transitions.\n    nextLane === DefaultLane && (wipLane & TransitionLanes) !== NoLanes) {\n      // Keep working on the existing in-progress tree. Do not interrupt.\n      return wipLanes;\n    }\n  }\n\n  if ((nextLanes & InputContinuousLane) !== NoLanes) {\n    // When updates are sync by default, we entangle continuous priority updates\n    // and default updates, so they render in the same batch. The only reason\n    // they use separate lanes is because continuous updates should interrupt\n    // transitions, but default updates should not.\n    nextLanes |= pendingLanes & DefaultLane;\n  } // Check for entangled lanes and add them to the batch.\n  //\n  // A lane is said to be entangled with another when it's not allowed to render\n  // in a batch that does not also include the other lane. Typically we do this\n  // when multiple updates have the same source, and we only want to respond to\n  // the most recent event from that source.\n  //\n  // Note that we apply entanglements *after* checking for partial work above.\n  // This means that if a lane is entangled during an interleaved event while\n  // it's already rendering, we won't interrupt it. This is intentional, since\n  // entanglement is usually \"best effort\": we'll try our best to render the\n  // lanes in the same batch, but it's not worth throwing out partially\n  // completed work in order to do it.\n  // TODO: Reconsider this. The counter-argument is that the partial work\n  // represents an intermediate state, which we don't want to show to the user.\n  // And by spending extra time finishing it, we're increasing the amount of\n  // time it takes to show the final state, which is what they are actually\n  // waiting for.\n  //\n  // For those exceptions where entanglement is semantically important, like\n  // useMutableSource, we should ensure that there is no partial work at the\n  // time we apply the entanglement.\n\n\n  var entangledLanes = root.entangledLanes;\n\n  if (entangledLanes !== NoLanes) {\n    var entanglements = root.entanglements;\n    var lanes = nextLanes & entangledLanes;\n\n    while (lanes > 0) {\n      var index = pickArbitraryLaneIndex(lanes);\n      var lane = 1 << index;\n      nextLanes |= entanglements[index];\n      lanes &= ~lane;\n    }\n  }\n\n  return nextLanes;\n}\nfunction getMostRecentEventTime(root, lanes) {\n  var eventTimes = root.eventTimes;\n  var mostRecentEventTime = NoTimestamp;\n\n  while (lanes > 0) {\n    var index = pickArbitraryLaneIndex(lanes);\n    var lane = 1 << index;\n    var eventTime = eventTimes[index];\n\n    if (eventTime > mostRecentEventTime) {\n      mostRecentEventTime = eventTime;\n    }\n\n    lanes &= ~lane;\n  }\n\n  return mostRecentEventTime;\n}\n\nfunction computeExpirationTime(lane, currentTime) {\n  switch (lane) {\n    case SyncLane:\n    case InputContinuousHydrationLane:\n    case InputContinuousLane:\n      // User interactions should expire slightly more quickly.\n      //\n      // NOTE: This is set to the corresponding constant as in Scheduler.js.\n      // When we made it larger, a product metric in www regressed, suggesting\n      // there's a user interaction that's being starved by a series of\n      // synchronous updates. If that theory is correct, the proper solution is\n      // to fix the starvation. However, this scenario supports the idea that\n      // expiration times are an important safeguard when starvation\n      // does happen.\n      return currentTime + 250;\n\n    case DefaultHydrationLane:\n    case DefaultLane:\n    case TransitionHydrationLane:\n    case TransitionLane1:\n    case TransitionLane2:\n    case TransitionLane3:\n    case TransitionLane4:\n    case TransitionLane5:\n    case TransitionLane6:\n    case TransitionLane7:\n    case TransitionLane8:\n    case TransitionLane9:\n    case TransitionLane10:\n    case TransitionLane11:\n    case TransitionLane12:\n    case TransitionLane13:\n    case TransitionLane14:\n    case TransitionLane15:\n    case TransitionLane16:\n      return currentTime + 5000;\n\n    case RetryLane1:\n    case RetryLane2:\n    case RetryLane3:\n    case RetryLane4:\n    case RetryLane5:\n      // TODO: Retries should be allowed to expire if they are CPU bound for\n      // too long, but when I made this change it caused a spike in browser\n      // crashes. There must be some other underlying bug; not super urgent but\n      // ideally should figure out why and fix it. Unfortunately we don't have\n      // a repro for the crashes, only detected via production metrics.\n      return NoTimestamp;\n\n    case SelectiveHydrationLane:\n    case IdleHydrationLane:\n    case IdleLane:\n    case OffscreenLane:\n      // Anything idle priority or lower should never expire.\n      return NoTimestamp;\n\n    default:\n      {\n        error('Should have found matching lanes. This is a bug in React.');\n      }\n\n      return NoTimestamp;\n  }\n}\n\nfunction markStarvedLanesAsExpired(root, currentTime) {\n  // TODO: This gets called every time we yield. We can optimize by storing\n  // the earliest expiration time on the root. Then use that to quickly bail out\n  // of this function.\n  var pendingLanes = root.pendingLanes;\n  var suspendedLanes = root.suspendedLanes;\n  var pingedLanes = root.pingedLanes;\n  var expirationTimes = root.expirationTimes; // Iterate through the pending lanes and check if we've reached their\n  // expiration time. If so, we'll assume the update is being starved and mark\n  // it as expired to force it to finish.\n\n  var lanes = pendingLanes;\n\n  while (lanes > 0) {\n    var index = pickArbitraryLaneIndex(lanes);\n    var lane = 1 << index;\n    var expirationTime = expirationTimes[index];\n\n    if (expirationTime === NoTimestamp) {\n      // Found a pending lane with no expiration time. If it's not suspended, or\n      // if it's pinged, assume it's CPU-bound. Compute a new expiration time\n      // using the current time.\n      if ((lane & suspendedLanes) === NoLanes || (lane & pingedLanes) !== NoLanes) {\n        // Assumes timestamps are monotonically increasing.\n        expirationTimes[index] = computeExpirationTime(lane, currentTime);\n      }\n    } else if (expirationTime <= currentTime) {\n      // This lane expired\n      root.expiredLanes |= lane;\n    }\n\n    lanes &= ~lane;\n  }\n} // This returns the highest priority pending lanes regardless of whether they\n// are suspended.\n\nfunction getHighestPriorityPendingLanes(root) {\n  return getHighestPriorityLanes(root.pendingLanes);\n}\nfunction getLanesToRetrySynchronouslyOnError(root) {\n  var everythingButOffscreen = root.pendingLanes & ~OffscreenLane;\n\n  if (everythingButOffscreen !== NoLanes) {\n    return everythingButOffscreen;\n  }\n\n  if (everythingButOffscreen & OffscreenLane) {\n    return OffscreenLane;\n  }\n\n  return NoLanes;\n}\nfunction includesSyncLane(lanes) {\n  return (lanes & SyncLane) !== NoLanes;\n}\nfunction includesNonIdleWork(lanes) {\n  return (lanes & NonIdleLanes) !== NoLanes;\n}\nfunction includesOnlyRetries(lanes) {\n  return (lanes & RetryLanes) === lanes;\n}\nfunction includesOnlyNonUrgentLanes(lanes) {\n  var UrgentLanes = SyncLane | InputContinuousLane | DefaultLane;\n  return (lanes & UrgentLanes) === NoLanes;\n}\nfunction includesOnlyTransitions(lanes) {\n  return (lanes & TransitionLanes) === lanes;\n}\nfunction includesBlockingLane(root, lanes) {\n\n  var SyncDefaultLanes = InputContinuousHydrationLane | InputContinuousLane | DefaultHydrationLane | DefaultLane;\n  return (lanes & SyncDefaultLanes) !== NoLanes;\n}\nfunction includesExpiredLane(root, lanes) {\n  // This is a separate check from includesBlockingLane because a lane can\n  // expire after a render has already started.\n  return (lanes & root.expiredLanes) !== NoLanes;\n}\nfunction isTransitionLane(lane) {\n  return (lane & TransitionLanes) !== NoLanes;\n}\nfunction claimNextTransitionLane() {\n  // Cycle through the lanes, assigning each new transition to the next lane.\n  // In most cases, this means every transition gets its own lane, until we\n  // run out of lanes and cycle back to the beginning.\n  var lane = nextTransitionLane;\n  nextTransitionLane <<= 1;\n\n  if ((nextTransitionLane & TransitionLanes) === NoLanes) {\n    nextTransitionLane = TransitionLane1;\n  }\n\n  return lane;\n}\nfunction claimNextRetryLane() {\n  var lane = nextRetryLane;\n  nextRetryLane <<= 1;\n\n  if ((nextRetryLane & RetryLanes) === NoLanes) {\n    nextRetryLane = RetryLane1;\n  }\n\n  return lane;\n}\nfunction getHighestPriorityLane(lanes) {\n  return lanes & -lanes;\n}\nfunction pickArbitraryLane(lanes) {\n  // This wrapper function gets inlined. Only exists so to communicate that it\n  // doesn't matter which bit is selected; you can pick any bit without\n  // affecting the algorithms where its used. Here I'm using\n  // getHighestPriorityLane because it requires the fewest operations.\n  return getHighestPriorityLane(lanes);\n}\n\nfunction pickArbitraryLaneIndex(lanes) {\n  return 31 - clz32(lanes);\n}\n\nfunction laneToIndex(lane) {\n  return pickArbitraryLaneIndex(lane);\n}\n\nfunction includesSomeLane(a, b) {\n  return (a & b) !== NoLanes;\n}\nfunction isSubsetOfLanes(set, subset) {\n  return (set & subset) === subset;\n}\nfunction mergeLanes(a, b) {\n  return a | b;\n}\nfunction removeLanes(set, subset) {\n  return set & ~subset;\n}\nfunction intersectLanes(a, b) {\n  return a & b;\n} // Seems redundant, but it changes the type from a single lane (used for\n// updates) to a group of lanes (used for flushing work).\n\nfunction laneToLanes(lane) {\n  return lane;\n}\nfunction higherPriorityLane(a, b) {\n  // This works because the bit ranges decrease in priority as you go left.\n  return a !== NoLane && a < b ? a : b;\n}\nfunction createLaneMap(initial) {\n  // Intentionally pushing one by one.\n  // https://v8.dev/blog/elements-kinds#avoid-creating-holes\n  var laneMap = [];\n\n  for (var i = 0; i < TotalLanes; i++) {\n    laneMap.push(initial);\n  }\n\n  return laneMap;\n}\nfunction markRootUpdated(root, updateLane, eventTime) {\n  root.pendingLanes |= updateLane; // If there are any suspended transitions, it's possible this new update\n  // could unblock them. Clear the suspended lanes so that we can try rendering\n  // them again.\n  //\n  // TODO: We really only need to unsuspend only lanes that are in the\n  // `subtreeLanes` of the updated fiber, or the update lanes of the return\n  // path. This would exclude suspended updates in an unrelated sibling tree,\n  // since there's no way for this update to unblock it.\n  //\n  // We don't do this if the incoming update is idle, because we never process\n  // idle updates until after all the regular updates have finished; there's no\n  // way it could unblock a transition.\n\n  if (updateLane !== IdleLane) {\n    root.suspendedLanes = NoLanes;\n    root.pingedLanes = NoLanes;\n  }\n\n  var eventTimes = root.eventTimes;\n  var index = laneToIndex(updateLane); // We can always overwrite an existing timestamp because we prefer the most\n  // recent event, and we assume time is monotonically increasing.\n\n  eventTimes[index] = eventTime;\n}\nfunction markRootSuspended(root, suspendedLanes) {\n  root.suspendedLanes |= suspendedLanes;\n  root.pingedLanes &= ~suspendedLanes; // The suspended lanes are no longer CPU-bound. Clear their expiration times.\n\n  var expirationTimes = root.expirationTimes;\n  var lanes = suspendedLanes;\n\n  while (lanes > 0) {\n    var index = pickArbitraryLaneIndex(lanes);\n    var lane = 1 << index;\n    expirationTimes[index] = NoTimestamp;\n    lanes &= ~lane;\n  }\n}\nfunction markRootPinged(root, pingedLanes, eventTime) {\n  root.pingedLanes |= root.suspendedLanes & pingedLanes;\n}\nfunction markRootFinished(root, remainingLanes) {\n  var noLongerPendingLanes = root.pendingLanes & ~remainingLanes;\n  root.pendingLanes = remainingLanes; // Let's try everything again\n\n  root.suspendedLanes = NoLanes;\n  root.pingedLanes = NoLanes;\n  root.expiredLanes &= remainingLanes;\n  root.mutableReadLanes &= remainingLanes;\n  root.entangledLanes &= remainingLanes;\n  var entanglements = root.entanglements;\n  var eventTimes = root.eventTimes;\n  var expirationTimes = root.expirationTimes; // Clear the lanes that no longer have pending work\n\n  var lanes = noLongerPendingLanes;\n\n  while (lanes > 0) {\n    var index = pickArbitraryLaneIndex(lanes);\n    var lane = 1 << index;\n    entanglements[index] = NoLanes;\n    eventTimes[index] = NoTimestamp;\n    expirationTimes[index] = NoTimestamp;\n    lanes &= ~lane;\n  }\n}\nfunction markRootEntangled(root, entangledLanes) {\n  // In addition to entangling each of the given lanes with each other, we also\n  // have to consider _transitive_ entanglements. For each lane that is already\n  // entangled with *any* of the given lanes, that lane is now transitively\n  // entangled with *all* the given lanes.\n  //\n  // Translated: If C is entangled with A, then entangling A with B also\n  // entangles C with B.\n  //\n  // If this is hard to grasp, it might help to intentionally break this\n  // function and look at the tests that fail in ReactTransition-test.js. Try\n  // commenting out one of the conditions below.\n  var rootEntangledLanes = root.entangledLanes |= entangledLanes;\n  var entanglements = root.entanglements;\n  var lanes = rootEntangledLanes;\n\n  while (lanes) {\n    var index = pickArbitraryLaneIndex(lanes);\n    var lane = 1 << index;\n\n    if ( // Is this one of the newly entangled lanes?\n    lane & entangledLanes | // Is this lane transitively entangled with the newly entangled lanes?\n    entanglements[index] & entangledLanes) {\n      entanglements[index] |= entangledLanes;\n    }\n\n    lanes &= ~lane;\n  }\n}\nfunction getBumpedLaneForHydration(root, renderLanes) {\n  var renderLane = getHighestPriorityLane(renderLanes);\n  var lane;\n\n  switch (renderLane) {\n    case InputContinuousLane:\n      lane = InputContinuousHydrationLane;\n      break;\n\n    case DefaultLane:\n      lane = DefaultHydrationLane;\n      break;\n\n    case TransitionLane1:\n    case TransitionLane2:\n    case TransitionLane3:\n    case TransitionLane4:\n    case TransitionLane5:\n    case TransitionLane6:\n    case TransitionLane7:\n    case TransitionLane8:\n    case TransitionLane9:\n    case TransitionLane10:\n    case TransitionLane11:\n    case TransitionLane12:\n    case TransitionLane13:\n    case TransitionLane14:\n    case TransitionLane15:\n    case TransitionLane16:\n    case RetryLane1:\n    case RetryLane2:\n    case RetryLane3:\n    case RetryLane4:\n    case RetryLane5:\n      lane = TransitionHydrationLane;\n      break;\n\n    case IdleLane:\n      lane = IdleHydrationLane;\n      break;\n\n    default:\n      // Everything else is already either a hydration lane, or shouldn't\n      // be retried at a hydration lane.\n      lane = NoLane;\n      break;\n  } // Check if the lane we chose is suspended. If so, that indicates that we\n  // already attempted and failed to hydrate at that level. Also check if we're\n  // already rendering that lane, which is rare but could happen.\n\n\n  if ((lane & (root.suspendedLanes | renderLanes)) !== NoLane) {\n    // Give up trying to hydrate and fall back to client render.\n    return NoLane;\n  }\n\n  return lane;\n}\nfunction addFiberToLanesMap(root, fiber, lanes) {\n\n  if (!isDevToolsPresent) {\n    return;\n  }\n\n  var pendingUpdatersLaneMap = root.pendingUpdatersLaneMap;\n\n  while (lanes > 0) {\n    var index = laneToIndex(lanes);\n    var lane = 1 << index;\n    var updaters = pendingUpdatersLaneMap[index];\n    updaters.add(fiber);\n    lanes &= ~lane;\n  }\n}\nfunction movePendingFibersToMemoized(root, lanes) {\n\n  if (!isDevToolsPresent) {\n    return;\n  }\n\n  var pendingUpdatersLaneMap = root.pendingUpdatersLaneMap;\n  var memoizedUpdaters = root.memoizedUpdaters;\n\n  while (lanes > 0) {\n    var index = laneToIndex(lanes);\n    var lane = 1 << index;\n    var updaters = pendingUpdatersLaneMap[index];\n\n    if (updaters.size > 0) {\n      updaters.forEach(function (fiber) {\n        var alternate = fiber.alternate;\n\n        if (alternate === null || !memoizedUpdaters.has(alternate)) {\n          memoizedUpdaters.add(fiber);\n        }\n      });\n      updaters.clear();\n    }\n\n    lanes &= ~lane;\n  }\n}\nfunction getTransitionsForLanes(root, lanes) {\n  {\n    return null;\n  }\n}\n\nvar DiscreteEventPriority = SyncLane;\nvar ContinuousEventPriority = InputContinuousLane;\nvar DefaultEventPriority = DefaultLane;\nvar IdleEventPriority = IdleLane;\nvar currentUpdatePriority = NoLane;\nfunction getCurrentUpdatePriority() {\n  return currentUpdatePriority;\n}\nfunction setCurrentUpdatePriority(newPriority) {\n  currentUpdatePriority = newPriority;\n}\nfunction runWithPriority(priority, fn) {\n  var previousPriority = currentUpdatePriority;\n\n  try {\n    currentUpdatePriority = priority;\n    return fn();\n  } finally {\n    currentUpdatePriority = previousPriority;\n  }\n}\nfunction higherEventPriority(a, b) {\n  return a !== 0 && a < b ? a : b;\n}\nfunction lowerEventPriority(a, b) {\n  return a === 0 || a > b ? a : b;\n}\nfunction isHigherEventPriority(a, b) {\n  return a !== 0 && a < b;\n}\nfunction lanesToEventPriority(lanes) {\n  var lane = getHighestPriorityLane(lanes);\n\n  if (!isHigherEventPriority(DiscreteEventPriority, lane)) {\n    return DiscreteEventPriority;\n  }\n\n  if (!isHigherEventPriority(ContinuousEventPriority, lane)) {\n    return ContinuousEventPriority;\n  }\n\n  if (includesNonIdleWork(lane)) {\n    return DefaultEventPriority;\n  }\n\n  return IdleEventPriority;\n}\n\n// This is imported by the event replaying implementation in React DOM. It's\n// in a separate file to break a circular dependency between the renderer and\n// the reconciler.\nfunction isRootDehydrated(root) {\n  var currentState = root.current.memoizedState;\n  return currentState.isDehydrated;\n}\n\nvar _attemptSynchronousHydration;\n\nfunction setAttemptSynchronousHydration(fn) {\n  _attemptSynchronousHydration = fn;\n}\nfunction attemptSynchronousHydration(fiber) {\n  _attemptSynchronousHydration(fiber);\n}\nvar attemptContinuousHydration;\nfunction setAttemptContinuousHydration(fn) {\n  attemptContinuousHydration = fn;\n}\nvar attemptHydrationAtCurrentPriority;\nfunction setAttemptHydrationAtCurrentPriority(fn) {\n  attemptHydrationAtCurrentPriority = fn;\n}\nvar getCurrentUpdatePriority$1;\nfunction setGetCurrentUpdatePriority(fn) {\n  getCurrentUpdatePriority$1 = fn;\n}\nvar attemptHydrationAtPriority;\nfunction setAttemptHydrationAtPriority(fn) {\n  attemptHydrationAtPriority = fn;\n} // TODO: Upgrade this definition once we're on a newer version of Flow that\n// has this definition built-in.\n\nvar hasScheduledReplayAttempt = false; // The queue of discrete events to be replayed.\n\nvar queuedDiscreteEvents = []; // Indicates if any continuous event targets are non-null for early bailout.\n// if the last target was dehydrated.\n\nvar queuedFocus = null;\nvar queuedDrag = null;\nvar queuedMouse = null; // For pointer events there can be one latest event per pointerId.\n\nvar queuedPointers = new Map();\nvar queuedPointerCaptures = new Map(); // We could consider replaying selectionchange and touchmoves too.\n\nvar queuedExplicitHydrationTargets = [];\nvar discreteReplayableEvents = ['mousedown', 'mouseup', 'touchcancel', 'touchend', 'touchstart', 'auxclick', 'dblclick', 'pointercancel', 'pointerdown', 'pointerup', 'dragend', 'dragstart', 'drop', 'compositionend', 'compositionstart', 'keydown', 'keypress', 'keyup', 'input', 'textInput', // Intentionally camelCase\n'copy', 'cut', 'paste', 'click', 'change', 'contextmenu', 'reset', 'submit'];\nfunction isDiscreteEventThatRequiresHydration(eventType) {\n  return discreteReplayableEvents.indexOf(eventType) > -1;\n}\n\nfunction createQueuedReplayableEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n  return {\n    blockedOn: blockedOn,\n    domEventName: domEventName,\n    eventSystemFlags: eventSystemFlags,\n    nativeEvent: nativeEvent,\n    targetContainers: [targetContainer]\n  };\n}\n\nfunction clearIfContinuousEvent(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case 'focusin':\n    case 'focusout':\n      queuedFocus = null;\n      break;\n\n    case 'dragenter':\n    case 'dragleave':\n      queuedDrag = null;\n      break;\n\n    case 'mouseover':\n    case 'mouseout':\n      queuedMouse = null;\n      break;\n\n    case 'pointerover':\n    case 'pointerout':\n      {\n        var pointerId = nativeEvent.pointerId;\n        queuedPointers.delete(pointerId);\n        break;\n      }\n\n    case 'gotpointercapture':\n    case 'lostpointercapture':\n      {\n        var _pointerId = nativeEvent.pointerId;\n        queuedPointerCaptures.delete(_pointerId);\n        break;\n      }\n  }\n}\n\nfunction accumulateOrCreateContinuousQueuedReplayableEvent(existingQueuedEvent, blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n  if (existingQueuedEvent === null || existingQueuedEvent.nativeEvent !== nativeEvent) {\n    var queuedEvent = createQueuedReplayableEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent);\n\n    if (blockedOn !== null) {\n      var _fiber2 = getInstanceFromNode(blockedOn);\n\n      if (_fiber2 !== null) {\n        // Attempt to increase the priority of this target.\n        attemptContinuousHydration(_fiber2);\n      }\n    }\n\n    return queuedEvent;\n  } // If we have already queued this exact event, then it's because\n  // the different event systems have different DOM event listeners.\n  // We can accumulate the flags, and the targetContainers, and\n  // store a single event to be replayed.\n\n\n  existingQueuedEvent.eventSystemFlags |= eventSystemFlags;\n  var targetContainers = existingQueuedEvent.targetContainers;\n\n  if (targetContainer !== null && targetContainers.indexOf(targetContainer) === -1) {\n    targetContainers.push(targetContainer);\n  }\n\n  return existingQueuedEvent;\n}\n\nfunction queueIfContinuousEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n  // These set relatedTarget to null because the replayed event will be treated as if we\n  // moved from outside the window (no target) onto the target once it hydrates.\n  // Instead of mutating we could clone the event.\n  switch (domEventName) {\n    case 'focusin':\n      {\n        var focusEvent = nativeEvent;\n        queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(queuedFocus, blockedOn, domEventName, eventSystemFlags, targetContainer, focusEvent);\n        return true;\n      }\n\n    case 'dragenter':\n      {\n        var dragEvent = nativeEvent;\n        queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(queuedDrag, blockedOn, domEventName, eventSystemFlags, targetContainer, dragEvent);\n        return true;\n      }\n\n    case 'mouseover':\n      {\n        var mouseEvent = nativeEvent;\n        queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(queuedMouse, blockedOn, domEventName, eventSystemFlags, targetContainer, mouseEvent);\n        return true;\n      }\n\n    case 'pointerover':\n      {\n        var pointerEvent = nativeEvent;\n        var pointerId = pointerEvent.pointerId;\n        queuedPointers.set(pointerId, accumulateOrCreateContinuousQueuedReplayableEvent(queuedPointers.get(pointerId) || null, blockedOn, domEventName, eventSystemFlags, targetContainer, pointerEvent));\n        return true;\n      }\n\n    case 'gotpointercapture':\n      {\n        var _pointerEvent = nativeEvent;\n        var _pointerId2 = _pointerEvent.pointerId;\n        queuedPointerCaptures.set(_pointerId2, accumulateOrCreateContinuousQueuedReplayableEvent(queuedPointerCaptures.get(_pointerId2) || null, blockedOn, domEventName, eventSystemFlags, targetContainer, _pointerEvent));\n        return true;\n      }\n  }\n\n  return false;\n} // Check if this target is unblocked. Returns true if it's unblocked.\n\nfunction attemptExplicitHydrationTarget(queuedTarget) {\n  // TODO: This function shares a lot of logic with findInstanceBlockingEvent.\n  // Try to unify them. It's a bit tricky since it would require two return\n  // values.\n  var targetInst = getClosestInstanceFromNode(queuedTarget.target);\n\n  if (targetInst !== null) {\n    var nearestMounted = getNearestMountedFiber(targetInst);\n\n    if (nearestMounted !== null) {\n      var tag = nearestMounted.tag;\n\n      if (tag === SuspenseComponent) {\n        var instance = getSuspenseInstanceFromFiber(nearestMounted);\n\n        if (instance !== null) {\n          // We're blocked on hydrating this boundary.\n          // Increase its priority.\n          queuedTarget.blockedOn = instance;\n          attemptHydrationAtPriority(queuedTarget.priority, function () {\n            attemptHydrationAtCurrentPriority(nearestMounted);\n          });\n          return;\n        }\n      } else if (tag === HostRoot) {\n        var root = nearestMounted.stateNode;\n\n        if (isRootDehydrated(root)) {\n          queuedTarget.blockedOn = getContainerFromFiber(nearestMounted); // We don't currently have a way to increase the priority of\n          // a root other than sync.\n\n          return;\n        }\n      }\n    }\n  }\n\n  queuedTarget.blockedOn = null;\n}\n\nfunction queueExplicitHydrationTarget(target) {\n  // TODO: This will read the priority if it's dispatched by the React\n  // event system but not native events. Should read window.event.type, like\n  // we do for updates (getCurrentEventPriority).\n  var updatePriority = getCurrentUpdatePriority$1();\n  var queuedTarget = {\n    blockedOn: null,\n    target: target,\n    priority: updatePriority\n  };\n  var i = 0;\n\n  for (; i < queuedExplicitHydrationTargets.length; i++) {\n    // Stop once we hit the first target with lower priority than\n    if (!isHigherEventPriority(updatePriority, queuedExplicitHydrationTargets[i].priority)) {\n      break;\n    }\n  }\n\n  queuedExplicitHydrationTargets.splice(i, 0, queuedTarget);\n\n  if (i === 0) {\n    attemptExplicitHydrationTarget(queuedTarget);\n  }\n}\n\nfunction attemptReplayContinuousQueuedEvent(queuedEvent) {\n  if (queuedEvent.blockedOn !== null) {\n    return false;\n  }\n\n  var targetContainers = queuedEvent.targetContainers;\n\n  while (targetContainers.length > 0) {\n    var targetContainer = targetContainers[0];\n    var nextBlockedOn = findInstanceBlockingEvent(queuedEvent.domEventName, queuedEvent.eventSystemFlags, targetContainer, queuedEvent.nativeEvent);\n\n    if (nextBlockedOn === null) {\n      {\n        var nativeEvent = queuedEvent.nativeEvent;\n        var nativeEventClone = new nativeEvent.constructor(nativeEvent.type, nativeEvent);\n        setReplayingEvent(nativeEventClone);\n        nativeEvent.target.dispatchEvent(nativeEventClone);\n        resetReplayingEvent();\n      }\n    } else {\n      // We're still blocked. Try again later.\n      var _fiber3 = getInstanceFromNode(nextBlockedOn);\n\n      if (_fiber3 !== null) {\n        attemptContinuousHydration(_fiber3);\n      }\n\n      queuedEvent.blockedOn = nextBlockedOn;\n      return false;\n    } // This target container was successfully dispatched. Try the next.\n\n\n    targetContainers.shift();\n  }\n\n  return true;\n}\n\nfunction attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) {\n  if (attemptReplayContinuousQueuedEvent(queuedEvent)) {\n    map.delete(key);\n  }\n}\n\nfunction replayUnblockedEvents() {\n  hasScheduledReplayAttempt = false;\n\n\n  if (queuedFocus !== null && attemptReplayContinuousQueuedEvent(queuedFocus)) {\n    queuedFocus = null;\n  }\n\n  if (queuedDrag !== null && attemptReplayContinuousQueuedEvent(queuedDrag)) {\n    queuedDrag = null;\n  }\n\n  if (queuedMouse !== null && attemptReplayContinuousQueuedEvent(queuedMouse)) {\n    queuedMouse = null;\n  }\n\n  queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);\n  queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);\n}\n\nfunction scheduleCallbackIfUnblocked(queuedEvent, unblocked) {\n  if (queuedEvent.blockedOn === unblocked) {\n    queuedEvent.blockedOn = null;\n\n    if (!hasScheduledReplayAttempt) {\n      hasScheduledReplayAttempt = true; // Schedule a callback to attempt replaying as many events as are\n      // now unblocked. This first might not actually be unblocked yet.\n      // We could check it early to avoid scheduling an unnecessary callback.\n\n      Scheduler.unstable_scheduleCallback(Scheduler.unstable_NormalPriority, replayUnblockedEvents);\n    }\n  }\n}\n\nfunction retryIfBlockedOn(unblocked) {\n  // Mark anything that was blocked on this as no longer blocked\n  // and eligible for a replay.\n  if (queuedDiscreteEvents.length > 0) {\n    scheduleCallbackIfUnblocked(queuedDiscreteEvents[0], unblocked); // This is a exponential search for each boundary that commits. I think it's\n    // worth it because we expect very few discrete events to queue up and once\n    // we are actually fully unblocked it will be fast to replay them.\n\n    for (var i = 1; i < queuedDiscreteEvents.length; i++) {\n      var queuedEvent = queuedDiscreteEvents[i];\n\n      if (queuedEvent.blockedOn === unblocked) {\n        queuedEvent.blockedOn = null;\n      }\n    }\n  }\n\n  if (queuedFocus !== null) {\n    scheduleCallbackIfUnblocked(queuedFocus, unblocked);\n  }\n\n  if (queuedDrag !== null) {\n    scheduleCallbackIfUnblocked(queuedDrag, unblocked);\n  }\n\n  if (queuedMouse !== null) {\n    scheduleCallbackIfUnblocked(queuedMouse, unblocked);\n  }\n\n  var unblock = function (queuedEvent) {\n    return scheduleCallbackIfUnblocked(queuedEvent, unblocked);\n  };\n\n  queuedPointers.forEach(unblock);\n  queuedPointerCaptures.forEach(unblock);\n\n  for (var _i = 0; _i < queuedExplicitHydrationTargets.length; _i++) {\n    var queuedTarget = queuedExplicitHydrationTargets[_i];\n\n    if (queuedTarget.blockedOn === unblocked) {\n      queuedTarget.blockedOn = null;\n    }\n  }\n\n  while (queuedExplicitHydrationTargets.length > 0) {\n    var nextExplicitTarget = queuedExplicitHydrationTargets[0];\n\n    if (nextExplicitTarget.blockedOn !== null) {\n      // We're still blocked.\n      break;\n    } else {\n      attemptExplicitHydrationTarget(nextExplicitTarget);\n\n      if (nextExplicitTarget.blockedOn === null) {\n        // We're unblocked.\n        queuedExplicitHydrationTargets.shift();\n      }\n    }\n  }\n}\n\nvar ReactCurrentBatchConfig = ReactSharedInternals.ReactCurrentBatchConfig; // TODO: can we stop exporting these?\n\nvar _enabled = true; // This is exported in FB builds for use by legacy FB layer infra.\n// We'd like to remove this but it's not clear if this is safe.\n\nfunction setEnabled(enabled) {\n  _enabled = !!enabled;\n}\nfunction isEnabled() {\n  return _enabled;\n}\nfunction createEventListenerWrapperWithPriority(targetContainer, domEventName, eventSystemFlags) {\n  var eventPriority = getEventPriority(domEventName);\n  var listenerWrapper;\n\n  switch (eventPriority) {\n    case DiscreteEventPriority:\n      listenerWrapper = dispatchDiscreteEvent;\n      break;\n\n    case ContinuousEventPriority:\n      listenerWrapper = dispatchContinuousEvent;\n      break;\n\n    case DefaultEventPriority:\n    default:\n      listenerWrapper = dispatchEvent;\n      break;\n  }\n\n  return listenerWrapper.bind(null, domEventName, eventSystemFlags, targetContainer);\n}\n\nfunction dispatchDiscreteEvent(domEventName, eventSystemFlags, container, nativeEvent) {\n  var previousPriority = getCurrentUpdatePriority();\n  var prevTransition = ReactCurrentBatchConfig.transition;\n  ReactCurrentBatchConfig.transition = null;\n\n  try {\n    setCurrentUpdatePriority(DiscreteEventPriority);\n    dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n  } finally {\n    setCurrentUpdatePriority(previousPriority);\n    ReactCurrentBatchConfig.transition = prevTransition;\n  }\n}\n\nfunction dispatchContinuousEvent(domEventName, eventSystemFlags, container, nativeEvent) {\n  var previousPriority = getCurrentUpdatePriority();\n  var prevTransition = ReactCurrentBatchConfig.transition;\n  ReactCurrentBatchConfig.transition = null;\n\n  try {\n    setCurrentUpdatePriority(ContinuousEventPriority);\n    dispatchEvent(domEventName, eventSystemFlags, container, nativeEvent);\n  } finally {\n    setCurrentUpdatePriority(previousPriority);\n    ReactCurrentBatchConfig.transition = prevTransition;\n  }\n}\n\nfunction dispatchEvent(domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n  if (!_enabled) {\n    return;\n  }\n\n  {\n    dispatchEventWithEnableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay(domEventName, eventSystemFlags, targetContainer, nativeEvent);\n  }\n}\n\nfunction dispatchEventWithEnableCapturePhaseSelectiveHydrationWithoutDiscreteEventReplay(domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n  var blockedOn = findInstanceBlockingEvent(domEventName, eventSystemFlags, targetContainer, nativeEvent);\n\n  if (blockedOn === null) {\n    dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, return_targetInst, targetContainer);\n    clearIfContinuousEvent(domEventName, nativeEvent);\n    return;\n  }\n\n  if (queueIfContinuousEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent)) {\n    nativeEvent.stopPropagation();\n    return;\n  } // We need to clear only if we didn't queue because\n  // queueing is accumulative.\n\n\n  clearIfContinuousEvent(domEventName, nativeEvent);\n\n  if (eventSystemFlags & IS_CAPTURE_PHASE && isDiscreteEventThatRequiresHydration(domEventName)) {\n    while (blockedOn !== null) {\n      var fiber = getInstanceFromNode(blockedOn);\n\n      if (fiber !== null) {\n        attemptSynchronousHydration(fiber);\n      }\n\n      var nextBlockedOn = findInstanceBlockingEvent(domEventName, eventSystemFlags, targetContainer, nativeEvent);\n\n      if (nextBlockedOn === null) {\n        dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, return_targetInst, targetContainer);\n      }\n\n      if (nextBlockedOn === blockedOn) {\n        break;\n      }\n\n      blockedOn = nextBlockedOn;\n    }\n\n    if (blockedOn !== null) {\n      nativeEvent.stopPropagation();\n    }\n\n    return;\n  } // This is not replayable so we'll invoke it but without a target,\n  // in case the event system needs to trace it.\n\n\n  dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, null, targetContainer);\n}\n\nvar return_targetInst = null; // Returns a SuspenseInstance or Container if it's blocked.\n// The return_targetInst field above is conceptually part of the return value.\n\nfunction findInstanceBlockingEvent(domEventName, eventSystemFlags, targetContainer, nativeEvent) {\n  // TODO: Warn if _enabled is false.\n  return_targetInst = null;\n  var nativeEventTarget = getEventTarget(nativeEvent);\n  var targetInst = getClosestInstanceFromNode(nativeEventTarget);\n\n  if (targetInst !== null) {\n    var nearestMounted = getNearestMountedFiber(targetInst);\n\n    if (nearestMounted === null) {\n      // This tree has been unmounted already. Dispatch without a target.\n      targetInst = null;\n    } else {\n      var tag = nearestMounted.tag;\n\n      if (tag === SuspenseComponent) {\n        var instance = getSuspenseInstanceFromFiber(nearestMounted);\n\n        if (instance !== null) {\n          // Queue the event to be replayed later. Abort dispatching since we\n          // don't want this event dispatched twice through the event system.\n          // TODO: If this is the first discrete event in the queue. Schedule an increased\n          // priority for this boundary.\n          return instance;\n        } // This shouldn't happen, something went wrong but to avoid blocking\n        // the whole system, dispatch the event without a target.\n        // TODO: Warn.\n\n\n        targetInst = null;\n      } else if (tag === HostRoot) {\n        var root = nearestMounted.stateNode;\n\n        if (isRootDehydrated(root)) {\n          // If this happens during a replay something went wrong and it might block\n          // the whole system.\n          return getContainerFromFiber(nearestMounted);\n        }\n\n        targetInst = null;\n      } else if (nearestMounted !== targetInst) {\n        // If we get an event (ex: img onload) before committing that\n        // component's mount, ignore it for now (that is, treat it as if it was an\n        // event on a non-React tree). We might also consider queueing events and\n        // dispatching them after the mount.\n        targetInst = null;\n      }\n    }\n  }\n\n  return_targetInst = targetInst; // We're not blocked on anything.\n\n  return null;\n}\nfunction getEventPriority(domEventName) {\n  switch (domEventName) {\n    // Used by SimpleEventPlugin:\n    case 'cancel':\n    case 'click':\n    case 'close':\n    case 'contextmenu':\n    case 'copy':\n    case 'cut':\n    case 'auxclick':\n    case 'dblclick':\n    case 'dragend':\n    case 'dragstart':\n    case 'drop':\n    case 'focusin':\n    case 'focusout':\n    case 'input':\n    case 'invalid':\n    case 'keydown':\n    case 'keypress':\n    case 'keyup':\n    case 'mousedown':\n    case 'mouseup':\n    case 'paste':\n    case 'pause':\n    case 'play':\n    case 'pointercancel':\n    case 'pointerdown':\n    case 'pointerup':\n    case 'ratechange':\n    case 'reset':\n    case 'resize':\n    case 'seeked':\n    case 'submit':\n    case 'touchcancel':\n    case 'touchend':\n    case 'touchstart':\n    case 'volumechange': // Used by polyfills:\n    // eslint-disable-next-line no-fallthrough\n\n    case 'change':\n    case 'selectionchange':\n    case 'textInput':\n    case 'compositionstart':\n    case 'compositionend':\n    case 'compositionupdate': // Only enableCreateEventHandleAPI:\n    // eslint-disable-next-line no-fallthrough\n\n    case 'beforeblur':\n    case 'afterblur': // Not used by React but could be by user code:\n    // eslint-disable-next-line no-fallthrough\n\n    case 'beforeinput':\n    case 'blur':\n    case 'fullscreenchange':\n    case 'focus':\n    case 'hashchange':\n    case 'popstate':\n    case 'select':\n    case 'selectstart':\n      return DiscreteEventPriority;\n\n    case 'drag':\n    case 'dragenter':\n    case 'dragexit':\n    case 'dragleave':\n    case 'dragover':\n    case 'mousemove':\n    case 'mouseout':\n    case 'mouseover':\n    case 'pointermove':\n    case 'pointerout':\n    case 'pointerover':\n    case 'scroll':\n    case 'toggle':\n    case 'touchmove':\n    case 'wheel': // Not used by React but could be by user code:\n    // eslint-disable-next-line no-fallthrough\n\n    case 'mouseenter':\n    case 'mouseleave':\n    case 'pointerenter':\n    case 'pointerleave':\n      return ContinuousEventPriority;\n\n    case 'message':\n      {\n        // We might be in the Scheduler callback.\n        // Eventually this mechanism will be replaced by a check\n        // of the current priority on the native scheduler.\n        var schedulerPriority = getCurrentPriorityLevel();\n\n        switch (schedulerPriority) {\n          case ImmediatePriority:\n            return DiscreteEventPriority;\n\n          case UserBlockingPriority:\n            return ContinuousEventPriority;\n\n          case NormalPriority:\n          case LowPriority:\n            // TODO: Handle LowSchedulerPriority, somehow. Maybe the same lane as hydration.\n            return DefaultEventPriority;\n\n          case IdlePriority:\n            return IdleEventPriority;\n\n          default:\n            return DefaultEventPriority;\n        }\n      }\n\n    default:\n      return DefaultEventPriority;\n  }\n}\n\nfunction addEventBubbleListener(target, eventType, listener) {\n  target.addEventListener(eventType, listener, false);\n  return listener;\n}\nfunction addEventCaptureListener(target, eventType, listener) {\n  target.addEventListener(eventType, listener, true);\n  return listener;\n}\nfunction addEventCaptureListenerWithPassiveFlag(target, eventType, listener, passive) {\n  target.addEventListener(eventType, listener, {\n    capture: true,\n    passive: passive\n  });\n  return listener;\n}\nfunction addEventBubbleListenerWithPassiveFlag(target, eventType, listener, passive) {\n  target.addEventListener(eventType, listener, {\n    passive: passive\n  });\n  return listener;\n}\n\n/**\n * These variables store information about text content of a target node,\n * allowing comparison of content before and after a given event.\n *\n * Identify the node where selection currently begins, then observe\n * both its text content and its current position in the DOM. Since the\n * browser may natively replace the target node during composition, we can\n * use its position to find its replacement.\n *\n *\n */\nvar root = null;\nvar startText = null;\nvar fallbackText = null;\nfunction initialize(nativeEventTarget) {\n  root = nativeEventTarget;\n  startText = getText();\n  return true;\n}\nfunction reset() {\n  root = null;\n  startText = null;\n  fallbackText = null;\n}\nfunction getData() {\n  if (fallbackText) {\n    return fallbackText;\n  }\n\n  var start;\n  var startValue = startText;\n  var startLength = startValue.length;\n  var end;\n  var endValue = getText();\n  var endLength = endValue.length;\n\n  for (start = 0; start < startLength; start++) {\n    if (startValue[start] !== endValue[start]) {\n      break;\n    }\n  }\n\n  var minEnd = startLength - start;\n\n  for (end = 1; end <= minEnd; end++) {\n    if (startValue[startLength - end] !== endValue[endLength - end]) {\n      break;\n    }\n  }\n\n  var sliceTail = end > 1 ? 1 - end : undefined;\n  fallbackText = endValue.slice(start, sliceTail);\n  return fallbackText;\n}\nfunction getText() {\n  if ('value' in root) {\n    return root.value;\n  }\n\n  return root.textContent;\n}\n\n/**\n * `charCode` represents the actual \"character code\" and is safe to use with\n * `String.fromCharCode`. As such, only keys that correspond to printable\n * characters produce a valid `charCode`, the only exception to this is Enter.\n * The Tab-key is considered non-printable and does not have a `charCode`,\n * presumably because it does not produce a tab-character in browsers.\n *\n * @param {object} nativeEvent Native browser event.\n * @return {number} Normalized `charCode` property.\n */\nfunction getEventCharCode(nativeEvent) {\n  var charCode;\n  var keyCode = nativeEvent.keyCode;\n\n  if ('charCode' in nativeEvent) {\n    charCode = nativeEvent.charCode; // FF does not set `charCode` for the Enter-key, check against `keyCode`.\n\n    if (charCode === 0 && keyCode === 13) {\n      charCode = 13;\n    }\n  } else {\n    // IE8 does not implement `charCode`, but `keyCode` has the correct value.\n    charCode = keyCode;\n  } // IE and Edge (on Windows) and Chrome / Safari (on Windows and Linux)\n  // report Enter as charCode 10 when ctrl is pressed.\n\n\n  if (charCode === 10) {\n    charCode = 13;\n  } // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.\n  // Must not discard the (non-)printable Enter-key.\n\n\n  if (charCode >= 32 || charCode === 13) {\n    return charCode;\n  }\n\n  return 0;\n}\n\nfunction functionThatReturnsTrue() {\n  return true;\n}\n\nfunction functionThatReturnsFalse() {\n  return false;\n} // This is intentionally a factory so that we have different returned constructors.\n// If we had a single constructor, it would be megamorphic and engines would deopt.\n\n\nfunction createSyntheticEvent(Interface) {\n  /**\n   * Synthetic events are dispatched by event plugins, typically in response to a\n   * top-level event delegation handler.\n   *\n   * These systems should generally use pooling to reduce the frequency of garbage\n   * collection. The system should check `isPersistent` to determine whether the\n   * event should be released into the pool after being dispatched. Users that\n   * need a persisted event should invoke `persist`.\n   *\n   * Synthetic events (and subclasses) implement the DOM Level 3 Events API by\n   * normalizing browser quirks. Subclasses do not necessarily have to implement a\n   * DOM interface; custom application-specific events can also subclass this.\n   */\n  function SyntheticBaseEvent(reactName, reactEventType, targetInst, nativeEvent, nativeEventTarget) {\n    this._reactName = reactName;\n    this._targetInst = targetInst;\n    this.type = reactEventType;\n    this.nativeEvent = nativeEvent;\n    this.target = nativeEventTarget;\n    this.currentTarget = null;\n\n    for (var _propName in Interface) {\n      if (!Interface.hasOwnProperty(_propName)) {\n        continue;\n      }\n\n      var normalize = Interface[_propName];\n\n      if (normalize) {\n        this[_propName] = normalize(nativeEvent);\n      } else {\n        this[_propName] = nativeEvent[_propName];\n      }\n    }\n\n    var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;\n\n    if (defaultPrevented) {\n      this.isDefaultPrevented = functionThatReturnsTrue;\n    } else {\n      this.isDefaultPrevented = functionThatReturnsFalse;\n    }\n\n    this.isPropagationStopped = functionThatReturnsFalse;\n    return this;\n  }\n\n  assign(SyntheticBaseEvent.prototype, {\n    preventDefault: function () {\n      this.defaultPrevented = true;\n      var event = this.nativeEvent;\n\n      if (!event) {\n        return;\n      }\n\n      if (event.preventDefault) {\n        event.preventDefault(); // $FlowFixMe - flow is not aware of `unknown` in IE\n      } else if (typeof event.returnValue !== 'unknown') {\n        event.returnValue = false;\n      }\n\n      this.isDefaultPrevented = functionThatReturnsTrue;\n    },\n    stopPropagation: function () {\n      var event = this.nativeEvent;\n\n      if (!event) {\n        return;\n      }\n\n      if (event.stopPropagation) {\n        event.stopPropagation(); // $FlowFixMe - flow is not aware of `unknown` in IE\n      } else if (typeof event.cancelBubble !== 'unknown') {\n        // The ChangeEventPlugin registers a \"propertychange\" event for\n        // IE. This event does not support bubbling or cancelling, and\n        // any references to cancelBubble throw \"Member not found\".  A\n        // typeof check of \"unknown\" circumvents this issue (and is also\n        // IE specific).\n        event.cancelBubble = true;\n      }\n\n      this.isPropagationStopped = functionThatReturnsTrue;\n    },\n\n    /**\n     * We release all dispatched `SyntheticEvent`s after each event loop, adding\n     * them back into the pool. This allows a way to hold onto a reference that\n     * won't be added back into the pool.\n     */\n    persist: function () {// Modern event system doesn't use pooling.\n    },\n\n    /**\n     * Checks if this event should be released back into the pool.\n     *\n     * @return {boolean} True if this should not be released, false otherwise.\n     */\n    isPersistent: functionThatReturnsTrue\n  });\n  return SyntheticBaseEvent;\n}\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\n\nvar EventInterface = {\n  eventPhase: 0,\n  bubbles: 0,\n  cancelable: 0,\n  timeStamp: function (event) {\n    return event.timeStamp || Date.now();\n  },\n  defaultPrevented: 0,\n  isTrusted: 0\n};\nvar SyntheticEvent = createSyntheticEvent(EventInterface);\n\nvar UIEventInterface = assign({}, EventInterface, {\n  view: 0,\n  detail: 0\n});\n\nvar SyntheticUIEvent = createSyntheticEvent(UIEventInterface);\nvar lastMovementX;\nvar lastMovementY;\nvar lastMouseEvent;\n\nfunction updateMouseMovementPolyfillState(event) {\n  if (event !== lastMouseEvent) {\n    if (lastMouseEvent && event.type === 'mousemove') {\n      lastMovementX = event.screenX - lastMouseEvent.screenX;\n      lastMovementY = event.screenY - lastMouseEvent.screenY;\n    } else {\n      lastMovementX = 0;\n      lastMovementY = 0;\n    }\n\n    lastMouseEvent = event;\n  }\n}\n/**\n * @interface MouseEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\n\nvar MouseEventInterface = assign({}, UIEventInterface, {\n  screenX: 0,\n  screenY: 0,\n  clientX: 0,\n  clientY: 0,\n  pageX: 0,\n  pageY: 0,\n  ctrlKey: 0,\n  shiftKey: 0,\n  altKey: 0,\n  metaKey: 0,\n  getModifierState: getEventModifierState,\n  button: 0,\n  buttons: 0,\n  relatedTarget: function (event) {\n    if (event.relatedTarget === undefined) return event.fromElement === event.srcElement ? event.toElement : event.fromElement;\n    return event.relatedTarget;\n  },\n  movementX: function (event) {\n    if ('movementX' in event) {\n      return event.movementX;\n    }\n\n    updateMouseMovementPolyfillState(event);\n    return lastMovementX;\n  },\n  movementY: function (event) {\n    if ('movementY' in event) {\n      return event.movementY;\n    } // Don't need to call updateMouseMovementPolyfillState() here\n    // because it's guaranteed to have already run when movementX\n    // was copied.\n\n\n    return lastMovementY;\n  }\n});\n\nvar SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface);\n/**\n * @interface DragEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\nvar DragEventInterface = assign({}, MouseEventInterface, {\n  dataTransfer: 0\n});\n\nvar SyntheticDragEvent = createSyntheticEvent(DragEventInterface);\n/**\n * @interface FocusEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\nvar FocusEventInterface = assign({}, UIEventInterface, {\n  relatedTarget: 0\n});\n\nvar SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface);\n/**\n * @interface Event\n * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent\n */\n\nvar AnimationEventInterface = assign({}, EventInterface, {\n  animationName: 0,\n  elapsedTime: 0,\n  pseudoElement: 0\n});\n\nvar SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface);\n/**\n * @interface Event\n * @see http://www.w3.org/TR/clipboard-apis/\n */\n\nvar ClipboardEventInterface = assign({}, EventInterface, {\n  clipboardData: function (event) {\n    return 'clipboardData' in event ? event.clipboardData : window.clipboardData;\n  }\n});\n\nvar SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface);\n/**\n * @interface Event\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents\n */\n\nvar CompositionEventInterface = assign({}, EventInterface, {\n  data: 0\n});\n\nvar SyntheticCompositionEvent = createSyntheticEvent(CompositionEventInterface);\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105\n *      /#events-inputevents\n */\n// Happens to share the same list for now.\n\nvar SyntheticInputEvent = SyntheticCompositionEvent;\n/**\n * Normalization of deprecated HTML5 `key` values\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\n\nvar normalizeKey = {\n  Esc: 'Escape',\n  Spacebar: ' ',\n  Left: 'ArrowLeft',\n  Up: 'ArrowUp',\n  Right: 'ArrowRight',\n  Down: 'ArrowDown',\n  Del: 'Delete',\n  Win: 'OS',\n  Menu: 'ContextMenu',\n  Apps: 'ContextMenu',\n  Scroll: 'ScrollLock',\n  MozPrintableKey: 'Unidentified'\n};\n/**\n * Translation from legacy `keyCode` to HTML5 `key`\n * Only special keys supported, all others depend on keyboard layout or browser\n * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names\n */\n\nvar translateToKey = {\n  '8': 'Backspace',\n  '9': 'Tab',\n  '12': 'Clear',\n  '13': 'Enter',\n  '16': 'Shift',\n  '17': 'Control',\n  '18': 'Alt',\n  '19': 'Pause',\n  '20': 'CapsLock',\n  '27': 'Escape',\n  '32': ' ',\n  '33': 'PageUp',\n  '34': 'PageDown',\n  '35': 'End',\n  '36': 'Home',\n  '37': 'ArrowLeft',\n  '38': 'ArrowUp',\n  '39': 'ArrowRight',\n  '40': 'ArrowDown',\n  '45': 'Insert',\n  '46': 'Delete',\n  '112': 'F1',\n  '113': 'F2',\n  '114': 'F3',\n  '115': 'F4',\n  '116': 'F5',\n  '117': 'F6',\n  '118': 'F7',\n  '119': 'F8',\n  '120': 'F9',\n  '121': 'F10',\n  '122': 'F11',\n  '123': 'F12',\n  '144': 'NumLock',\n  '145': 'ScrollLock',\n  '224': 'Meta'\n};\n/**\n * @param {object} nativeEvent Native browser event.\n * @return {string} Normalized `key` property.\n */\n\nfunction getEventKey(nativeEvent) {\n  if (nativeEvent.key) {\n    // Normalize inconsistent values reported by browsers due to\n    // implementations of a working draft specification.\n    // FireFox implements `key` but returns `MozPrintableKey` for all\n    // printable characters (normalized to `Unidentified`), ignore it.\n    var key = normalizeKey[nativeEvent.key] || nativeEvent.key;\n\n    if (key !== 'Unidentified') {\n      return key;\n    }\n  } // Browser does not implement `key`, polyfill as much of it as we can.\n\n\n  if (nativeEvent.type === 'keypress') {\n    var charCode = getEventCharCode(nativeEvent); // The enter-key is technically both printable and non-printable and can\n    // thus be captured by `keypress`, no other non-printable key should.\n\n    return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);\n  }\n\n  if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {\n    // While user keyboard layout determines the actual meaning of each\n    // `keyCode` value, almost all function keys have a universal value.\n    return translateToKey[nativeEvent.keyCode] || 'Unidentified';\n  }\n\n  return '';\n}\n/**\n * Translation from modifier key to the associated property in the event.\n * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers\n */\n\n\nvar modifierKeyToProp = {\n  Alt: 'altKey',\n  Control: 'ctrlKey',\n  Meta: 'metaKey',\n  Shift: 'shiftKey'\n}; // Older browsers (Safari <= 10, iOS Safari <= 10.2) do not support\n// getModifierState. If getModifierState is not supported, we map it to a set of\n// modifier keys exposed by the event. In this case, Lock-keys are not supported.\n\nfunction modifierStateGetter(keyArg) {\n  var syntheticEvent = this;\n  var nativeEvent = syntheticEvent.nativeEvent;\n\n  if (nativeEvent.getModifierState) {\n    return nativeEvent.getModifierState(keyArg);\n  }\n\n  var keyProp = modifierKeyToProp[keyArg];\n  return keyProp ? !!nativeEvent[keyProp] : false;\n}\n\nfunction getEventModifierState(nativeEvent) {\n  return modifierStateGetter;\n}\n/**\n * @interface KeyboardEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\n\nvar KeyboardEventInterface = assign({}, UIEventInterface, {\n  key: getEventKey,\n  code: 0,\n  location: 0,\n  ctrlKey: 0,\n  shiftKey: 0,\n  altKey: 0,\n  metaKey: 0,\n  repeat: 0,\n  locale: 0,\n  getModifierState: getEventModifierState,\n  // Legacy Interface\n  charCode: function (event) {\n    // `charCode` is the result of a KeyPress event and represents the value of\n    // the actual printable character.\n    // KeyPress is deprecated, but its replacement is not yet final and not\n    // implemented in any major browser. Only KeyPress has charCode.\n    if (event.type === 'keypress') {\n      return getEventCharCode(event);\n    }\n\n    return 0;\n  },\n  keyCode: function (event) {\n    // `keyCode` is the result of a KeyDown/Up event and represents the value of\n    // physical keyboard key.\n    // The actual meaning of the value depends on the users' keyboard layout\n    // which cannot be detected. Assuming that it is a US keyboard layout\n    // provides a surprisingly accurate mapping for US and European users.\n    // Due to this, it is left to the user to implement at this time.\n    if (event.type === 'keydown' || event.type === 'keyup') {\n      return event.keyCode;\n    }\n\n    return 0;\n  },\n  which: function (event) {\n    // `which` is an alias for either `keyCode` or `charCode` depending on the\n    // type of the event.\n    if (event.type === 'keypress') {\n      return getEventCharCode(event);\n    }\n\n    if (event.type === 'keydown' || event.type === 'keyup') {\n      return event.keyCode;\n    }\n\n    return 0;\n  }\n});\n\nvar SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface);\n/**\n * @interface PointerEvent\n * @see http://www.w3.org/TR/pointerevents/\n */\n\nvar PointerEventInterface = assign({}, MouseEventInterface, {\n  pointerId: 0,\n  width: 0,\n  height: 0,\n  pressure: 0,\n  tangentialPressure: 0,\n  tiltX: 0,\n  tiltY: 0,\n  twist: 0,\n  pointerType: 0,\n  isPrimary: 0\n});\n\nvar SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface);\n/**\n * @interface TouchEvent\n * @see http://www.w3.org/TR/touch-events/\n */\n\nvar TouchEventInterface = assign({}, UIEventInterface, {\n  touches: 0,\n  targetTouches: 0,\n  changedTouches: 0,\n  altKey: 0,\n  metaKey: 0,\n  ctrlKey: 0,\n  shiftKey: 0,\n  getModifierState: getEventModifierState\n});\n\nvar SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface);\n/**\n * @interface Event\n * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-\n * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent\n */\n\nvar TransitionEventInterface = assign({}, EventInterface, {\n  propertyName: 0,\n  elapsedTime: 0,\n  pseudoElement: 0\n});\n\nvar SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface);\n/**\n * @interface WheelEvent\n * @see http://www.w3.org/TR/DOM-Level-3-Events/\n */\n\nvar WheelEventInterface = assign({}, MouseEventInterface, {\n  deltaX: function (event) {\n    return 'deltaX' in event ? event.deltaX : // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).\n    'wheelDeltaX' in event ? -event.wheelDeltaX : 0;\n  },\n  deltaY: function (event) {\n    return 'deltaY' in event ? event.deltaY : // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).\n    'wheelDeltaY' in event ? -event.wheelDeltaY : // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).\n    'wheelDelta' in event ? -event.wheelDelta : 0;\n  },\n  deltaZ: 0,\n  // Browsers without \"deltaMode\" is reporting in raw wheel delta where one\n  // notch on the scroll is always +/- 120, roughly equivalent to pixels.\n  // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or\n  // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.\n  deltaMode: 0\n});\n\nvar SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface);\n\nvar END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space\n\nvar START_KEYCODE = 229;\nvar canUseCompositionEvent = canUseDOM && 'CompositionEvent' in window;\nvar documentMode = null;\n\nif (canUseDOM && 'documentMode' in document) {\n  documentMode = document.documentMode;\n} // Webkit offers a very useful `textInput` event that can be used to\n// directly represent `beforeInput`. The IE `textinput` event is not as\n// useful, so we don't use it.\n\n\nvar canUseTextInputEvent = canUseDOM && 'TextEvent' in window && !documentMode; // In IE9+, we have access to composition events, but the data supplied\n// by the native compositionend event may be incorrect. Japanese ideographic\n// spaces, for instance (\\u3000) are not recorded correctly.\n\nvar useFallbackCompositionData = canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);\nvar SPACEBAR_CODE = 32;\nvar SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);\n\nfunction registerEvents() {\n  registerTwoPhaseEvent('onBeforeInput', ['compositionend', 'keypress', 'textInput', 'paste']);\n  registerTwoPhaseEvent('onCompositionEnd', ['compositionend', 'focusout', 'keydown', 'keypress', 'keyup', 'mousedown']);\n  registerTwoPhaseEvent('onCompositionStart', ['compositionstart', 'focusout', 'keydown', 'keypress', 'keyup', 'mousedown']);\n  registerTwoPhaseEvent('onCompositionUpdate', ['compositionupdate', 'focusout', 'keydown', 'keypress', 'keyup', 'mousedown']);\n} // Track whether we've ever handled a keypress on the space key.\n\n\nvar hasSpaceKeypress = false;\n/**\n * Return whether a native keypress event is assumed to be a command.\n * This is required because Firefox fires `keypress` events for key commands\n * (cut, copy, select-all, etc.) even though no character is inserted.\n */\n\nfunction isKeypressCommand(nativeEvent) {\n  return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) && // ctrlKey && altKey is equivalent to AltGr, and is not a command.\n  !(nativeEvent.ctrlKey && nativeEvent.altKey);\n}\n/**\n * Translate native top level events into event types.\n */\n\n\nfunction getCompositionEventType(domEventName) {\n  switch (domEventName) {\n    case 'compositionstart':\n      return 'onCompositionStart';\n\n    case 'compositionend':\n      return 'onCompositionEnd';\n\n    case 'compositionupdate':\n      return 'onCompositionUpdate';\n  }\n}\n/**\n * Does our fallback best-guess model think this event signifies that\n * composition has begun?\n */\n\n\nfunction isFallbackCompositionStart(domEventName, nativeEvent) {\n  return domEventName === 'keydown' && nativeEvent.keyCode === START_KEYCODE;\n}\n/**\n * Does our fallback mode think that this event is the end of composition?\n */\n\n\nfunction isFallbackCompositionEnd(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case 'keyup':\n      // Command keys insert or clear IME input.\n      return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;\n\n    case 'keydown':\n      // Expect IME keyCode on each keydown. If we get any other\n      // code we must have exited earlier.\n      return nativeEvent.keyCode !== START_KEYCODE;\n\n    case 'keypress':\n    case 'mousedown':\n    case 'focusout':\n      // Events are not possible without cancelling IME.\n      return true;\n\n    default:\n      return false;\n  }\n}\n/**\n * Google Input Tools provides composition data via a CustomEvent,\n * with the `data` property populated in the `detail` object. If this\n * is available on the event object, use it. If not, this is a plain\n * composition event and we have nothing special to extract.\n *\n * @param {object} nativeEvent\n * @return {?string}\n */\n\n\nfunction getDataFromCustomEvent(nativeEvent) {\n  var detail = nativeEvent.detail;\n\n  if (typeof detail === 'object' && 'data' in detail) {\n    return detail.data;\n  }\n\n  return null;\n}\n/**\n * Check if a composition event was triggered by Korean IME.\n * Our fallback mode does not work well with IE's Korean IME,\n * so just use native composition events when Korean IME is used.\n * Although CompositionEvent.locale property is deprecated,\n * it is available in IE, where our fallback mode is enabled.\n *\n * @param {object} nativeEvent\n * @return {boolean}\n */\n\n\nfunction isUsingKoreanIME(nativeEvent) {\n  return nativeEvent.locale === 'ko';\n} // Track the current IME composition status, if any.\n\n\nvar isComposing = false;\n/**\n * @return {?object} A SyntheticCompositionEvent.\n */\n\nfunction extractCompositionEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget) {\n  var eventType;\n  var fallbackData;\n\n  if (canUseCompositionEvent) {\n    eventType = getCompositionEventType(domEventName);\n  } else if (!isComposing) {\n    if (isFallbackCompositionStart(domEventName, nativeEvent)) {\n      eventType = 'onCompositionStart';\n    }\n  } else if (isFallbackCompositionEnd(domEventName, nativeEvent)) {\n    eventType = 'onCompositionEnd';\n  }\n\n  if (!eventType) {\n    return null;\n  }\n\n  if (useFallbackCompositionData && !isUsingKoreanIME(nativeEvent)) {\n    // The current composition is stored statically and must not be\n    // overwritten while composition continues.\n    if (!isComposing && eventType === 'onCompositionStart') {\n      isComposing = initialize(nativeEventTarget);\n    } else if (eventType === 'onCompositionEnd') {\n      if (isComposing) {\n        fallbackData = getData();\n      }\n    }\n  }\n\n  var listeners = accumulateTwoPhaseListeners(targetInst, eventType);\n\n  if (listeners.length > 0) {\n    var event = new SyntheticCompositionEvent(eventType, domEventName, null, nativeEvent, nativeEventTarget);\n    dispatchQueue.push({\n      event: event,\n      listeners: listeners\n    });\n\n    if (fallbackData) {\n      // Inject data generated from fallback path into the synthetic event.\n      // This matches the property of native CompositionEventInterface.\n      event.data = fallbackData;\n    } else {\n      var customData = getDataFromCustomEvent(nativeEvent);\n\n      if (customData !== null) {\n        event.data = customData;\n      }\n    }\n  }\n}\n\nfunction getNativeBeforeInputChars(domEventName, nativeEvent) {\n  switch (domEventName) {\n    case 'compositionend':\n      return getDataFromCustomEvent(nativeEvent);\n\n    case 'keypress':\n      /**\n       * If native `textInput` events are available, our goal is to make\n       * use of them. However, there is a special case: the spacebar key.\n       * In Webkit, preventing default on a spacebar `textInput` event\n       * cancels character insertion, but it *also* causes the browser\n       * to fall back to its default spacebar behavior of scrolling the\n       * page.\n       *\n       * Tracking at:\n       * https://code.google.com/p/chromium/issues/detail?id=355103\n       *\n       * To avoid this issue, use the keypress event as if no `textInput`\n       * event is available.\n       */\n      var which = nativeEvent.which;\n\n      if (which !== SPACEBAR_CODE) {\n        return null;\n      }\n\n      hasSpaceKeypress = true;\n      return SPACEBAR_CHAR;\n\n    case 'textInput':\n      // Record the characters to be added to the DOM.\n      var chars = nativeEvent.data; // If it's a spacebar character, assume that we have already handled\n      // it at the keypress level and bail immediately. Android Chrome\n      // doesn't give us keycodes, so we need to ignore it.\n\n      if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {\n        return null;\n      }\n\n      return chars;\n\n    default:\n      // For other native event types, do nothing.\n      return null;\n  }\n}\n/**\n * For browsers that do not provide the `textInput` event, extract the\n * appropriate string to use for SyntheticInputEvent.\n */\n\n\nfunction getFallbackBeforeInputChars(domEventName, nativeEvent) {\n  // If we are currently composing (IME) and using a fallback to do so,\n  // try to extract the composed characters from the fallback object.\n  // If composition event is available, we extract a string only at\n  // compositionevent, otherwise extract it at fallback events.\n  if (isComposing) {\n    if (domEventName === 'compositionend' || !canUseCompositionEvent && isFallbackCompositionEnd(domEventName, nativeEvent)) {\n      var chars = getData();\n      reset();\n      isComposing = false;\n      return chars;\n    }\n\n    return null;\n  }\n\n  switch (domEventName) {\n    case 'paste':\n      // If a paste event occurs after a keypress, throw out the input\n      // chars. Paste events should not lead to BeforeInput events.\n      return null;\n\n    case 'keypress':\n      /**\n       * As of v27, Firefox may fire keypress events even when no character\n       * will be inserted. A few possibilities:\n       *\n       * - `which` is `0`. Arrow keys, Esc key, etc.\n       *\n       * - `which` is the pressed key code, but no char is available.\n       *   Ex: 'AltGr + d` in Polish. There is no modified character for\n       *   this key combination and no character is inserted into the\n       *   document, but FF fires the keypress for char code `100` anyway.\n       *   No `input` event will occur.\n       *\n       * - `which` is the pressed key code, but a command combination is\n       *   being used. Ex: `Cmd+C`. No character is inserted, and no\n       *   `input` event will occur.\n       */\n      if (!isKeypressCommand(nativeEvent)) {\n        // IE fires the `keypress` event when a user types an emoji via\n        // Touch keyboard of Windows.  In such a case, the `char` property\n        // holds an emoji character like `\\uD83D\\uDE0A`.  Because its length\n        // is 2, the property `which` does not represent an emoji correctly.\n        // In such a case, we directly return the `char` property instead of\n        // using `which`.\n        if (nativeEvent.char && nativeEvent.char.length > 1) {\n          return nativeEvent.char;\n        } else if (nativeEvent.which) {\n          return String.fromCharCode(nativeEvent.which);\n        }\n      }\n\n      return null;\n\n    case 'compositionend':\n      return useFallbackCompositionData && !isUsingKoreanIME(nativeEvent) ? null : nativeEvent.data;\n\n    default:\n      return null;\n  }\n}\n/**\n * Extract a SyntheticInputEvent for `beforeInput`, based on either native\n * `textInput` or fallback behavior.\n *\n * @return {?object} A SyntheticInputEvent.\n */\n\n\nfunction extractBeforeInputEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget) {\n  var chars;\n\n  if (canUseTextInputEvent) {\n    chars = getNativeBeforeInputChars(domEventName, nativeEvent);\n  } else {\n    chars = getFallbackBeforeInputChars(domEventName, nativeEvent);\n  } // If no characters are being inserted, no BeforeInput event should\n  // be fired.\n\n\n  if (!chars) {\n    return null;\n  }\n\n  var listeners = accumulateTwoPhaseListeners(targetInst, 'onBeforeInput');\n\n  if (listeners.length > 0) {\n    var event = new SyntheticInputEvent('onBeforeInput', 'beforeinput', null, nativeEvent, nativeEventTarget);\n    dispatchQueue.push({\n      event: event,\n      listeners: listeners\n    });\n    event.data = chars;\n  }\n}\n/**\n * Create an `onBeforeInput` event to match\n * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.\n *\n * This event plugin is based on the native `textInput` event\n * available in Chrome, Safari, Opera, and IE. This event fires after\n * `onKeyPress` and `onCompositionEnd`, but before `onInput`.\n *\n * `beforeInput` is spec'd but not implemented in any browsers, and\n * the `input` event does not provide any useful information about what has\n * actually been added, contrary to the spec. Thus, `textInput` is the best\n * available event to identify the characters that have actually been inserted\n * into the target node.\n *\n * This plugin is also responsible for emitting `composition` events, thus\n * allowing us to share composition fallback code for both `beforeInput` and\n * `composition` event types.\n */\n\n\nfunction extractEvents(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n  extractCompositionEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n  extractBeforeInputEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n}\n\n/**\n * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary\n */\nvar supportedInputTypes = {\n  color: true,\n  date: true,\n  datetime: true,\n  'datetime-local': true,\n  email: true,\n  month: true,\n  number: true,\n  password: true,\n  range: true,\n  search: true,\n  tel: true,\n  text: true,\n  time: true,\n  url: true,\n  week: true\n};\n\nfunction isTextInputElement(elem) {\n  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n\n  if (nodeName === 'input') {\n    return !!supportedInputTypes[elem.type];\n  }\n\n  if (nodeName === 'textarea') {\n    return true;\n  }\n\n  return false;\n}\n\n/**\n * Checks if an event is supported in the current execution environment.\n *\n * NOTE: This will not work correctly for non-generic events such as `change`,\n * `reset`, `load`, `error`, and `select`.\n *\n * Borrows from Modernizr.\n *\n * @param {string} eventNameSuffix Event name, e.g. \"click\".\n * @return {boolean} True if the event is supported.\n * @internal\n * @license Modernizr 3.0.0pre (Custom Build) | MIT\n */\n\nfunction isEventSupported(eventNameSuffix) {\n  if (!canUseDOM) {\n    return false;\n  }\n\n  var eventName = 'on' + eventNameSuffix;\n  var isSupported = (eventName in document);\n\n  if (!isSupported) {\n    var element = document.createElement('div');\n    element.setAttribute(eventName, 'return;');\n    isSupported = typeof element[eventName] === 'function';\n  }\n\n  return isSupported;\n}\n\nfunction registerEvents$1() {\n  registerTwoPhaseEvent('onChange', ['change', 'click', 'focusin', 'focusout', 'input', 'keydown', 'keyup', 'selectionchange']);\n}\n\nfunction createAndAccumulateChangeEvent(dispatchQueue, inst, nativeEvent, target) {\n  // Flag this event loop as needing state restore.\n  enqueueStateRestore(target);\n  var listeners = accumulateTwoPhaseListeners(inst, 'onChange');\n\n  if (listeners.length > 0) {\n    var event = new SyntheticEvent('onChange', 'change', null, nativeEvent, target);\n    dispatchQueue.push({\n      event: event,\n      listeners: listeners\n    });\n  }\n}\n/**\n * For IE shims\n */\n\n\nvar activeElement = null;\nvar activeElementInst = null;\n/**\n * SECTION: handle `change` event\n */\n\nfunction shouldUseChangeEvent(elem) {\n  var nodeName = elem.nodeName && elem.nodeName.toLowerCase();\n  return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';\n}\n\nfunction manualDispatchChangeEvent(nativeEvent) {\n  var dispatchQueue = [];\n  createAndAccumulateChangeEvent(dispatchQueue, activeElementInst, nativeEvent, getEventTarget(nativeEvent)); // If change and propertychange bubbled, we'd just bind to it like all the\n  // other events and have it go through ReactBrowserEventEmitter. Since it\n  // doesn't, we manually listen for the events and so we have to enqueue and\n  // process the abstract event manually.\n  //\n  // Batching is necessary here in order to ensure that all event handlers run\n  // before the next rerender (including event handlers attached to ancestor\n  // elements instead of directly on the input). Without this, controlled\n  // components don't work properly in conjunction with event bubbling because\n  // the component is rerendered and the value reverted before all the event\n  // handlers can run. See https://github.com/facebook/react/issues/708.\n\n  batchedUpdates(runEventInBatch, dispatchQueue);\n}\n\nfunction runEventInBatch(dispatchQueue) {\n  processDispatchQueue(dispatchQueue, 0);\n}\n\nfunction getInstIfValueChanged(targetInst) {\n  var targetNode = getNodeFromInstance(targetInst);\n\n  if (updateValueIfChanged(targetNode)) {\n    return targetInst;\n  }\n}\n\nfunction getTargetInstForChangeEvent(domEventName, targetInst) {\n  if (domEventName === 'change') {\n    return targetInst;\n  }\n}\n/**\n * SECTION: handle `input` event\n */\n\n\nvar isInputEventSupported = false;\n\nif (canUseDOM) {\n  // IE9 claims to support the input event but fails to trigger it when\n  // deleting text, so we ignore its input events.\n  isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 9);\n}\n/**\n * (For IE <=9) Starts tracking propertychange events on the passed-in element\n * and override the value property so that we can distinguish user events from\n * value changes in JS.\n */\n\n\nfunction startWatchingForValueChange(target, targetInst) {\n  activeElement = target;\n  activeElementInst = targetInst;\n  activeElement.attachEvent('onpropertychange', handlePropertyChange);\n}\n/**\n * (For IE <=9) Removes the event listeners from the currently-tracked element,\n * if any exists.\n */\n\n\nfunction stopWatchingForValueChange() {\n  if (!activeElement) {\n    return;\n  }\n\n  activeElement.detachEvent('onpropertychange', handlePropertyChange);\n  activeElement = null;\n  activeElementInst = null;\n}\n/**\n * (For IE <=9) Handles a propertychange event, sending a `change` event if\n * the value of the active element has changed.\n */\n\n\nfunction handlePropertyChange(nativeEvent) {\n  if (nativeEvent.propertyName !== 'value') {\n    return;\n  }\n\n  if (getInstIfValueChanged(activeElementInst)) {\n    manualDispatchChangeEvent(nativeEvent);\n  }\n}\n\nfunction handleEventsForInputEventPolyfill(domEventName, target, targetInst) {\n  if (domEventName === 'focusin') {\n    // In IE9, propertychange fires for most input events but is buggy and\n    // doesn't fire when text is deleted, but conveniently, selectionchange\n    // appears to fire in all of the remaining cases so we catch those and\n    // forward the event if the value has changed\n    // In either case, we don't want to call the event handler if the value\n    // is changed from JS so we redefine a setter for `.value` that updates\n    // our activeElementValue variable, allowing us to ignore those changes\n    //\n    // stopWatching() should be a noop here but we call it just in case we\n    // missed a blur event somehow.\n    stopWatchingForValueChange();\n    startWatchingForValueChange(target, targetInst);\n  } else if (domEventName === 'focusout') {\n    stopWatchingForValueChange();\n  }\n} // For IE8 and IE9.\n\n\nfunction getTargetInstForInputEventPolyfill(domEventName, targetInst) {\n  if (domEventName === 'selectionchange' || domEventName === 'keyup' || domEventName === 'keydown') {\n    // On the selectionchange event, the target is just document which isn't\n    // helpful for us so just check activeElement instead.\n    //\n    // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire\n    // propertychange on the first input event after setting `value` from a\n    // script and fires only keydown, keypress, keyup. Catching keyup usually\n    // gets it and catching keydown lets us fire an event for the first\n    // keystroke if user does a key repeat (it'll be a little delayed: right\n    // before the second keystroke). Other input methods (e.g., paste) seem to\n    // fire selectionchange normally.\n    return getInstIfValueChanged(activeElementInst);\n  }\n}\n/**\n * SECTION: handle `click` event\n */\n\n\nfunction shouldUseClickEvent(elem) {\n  // Use the `click` event to detect changes to checkbox and radio inputs.\n  // This approach works across all browsers, whereas `change` does not fire\n  // until `blur` in IE8.\n  var nodeName = elem.nodeName;\n  return nodeName && nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');\n}\n\nfunction getTargetInstForClickEvent(domEventName, targetInst) {\n  if (domEventName === 'click') {\n    return getInstIfValueChanged(targetInst);\n  }\n}\n\nfunction getTargetInstForInputOrChangeEvent(domEventName, targetInst) {\n  if (domEventName === 'input' || domEventName === 'change') {\n    return getInstIfValueChanged(targetInst);\n  }\n}\n\nfunction handleControlledInputBlur(node) {\n  var state = node._wrapperState;\n\n  if (!state || !state.controlled || node.type !== 'number') {\n    return;\n  }\n\n  {\n    // If controlled, assign the value attribute to the current value on blur\n    setDefaultValue(node, 'number', node.value);\n  }\n}\n/**\n * This plugin creates an `onChange` event that normalizes change events\n * across form elements. This event fires at a time when it's possible to\n * change the element's value without seeing a flicker.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - select\n */\n\n\nfunction extractEvents$1(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n  var targetNode = targetInst ? getNodeFromInstance(targetInst) : window;\n  var getTargetInstFunc, handleEventFunc;\n\n  if (shouldUseChangeEvent(targetNode)) {\n    getTargetInstFunc = getTargetInstForChangeEvent;\n  } else if (isTextInputElement(targetNode)) {\n    if (isInputEventSupported) {\n      getTargetInstFunc = getTargetInstForInputOrChangeEvent;\n    } else {\n      getTargetInstFunc = getTargetInstForInputEventPolyfill;\n      handleEventFunc = handleEventsForInputEventPolyfill;\n    }\n  } else if (shouldUseClickEvent(targetNode)) {\n    getTargetInstFunc = getTargetInstForClickEvent;\n  }\n\n  if (getTargetInstFunc) {\n    var inst = getTargetInstFunc(domEventName, targetInst);\n\n    if (inst) {\n      createAndAccumulateChangeEvent(dispatchQueue, inst, nativeEvent, nativeEventTarget);\n      return;\n    }\n  }\n\n  if (handleEventFunc) {\n    handleEventFunc(domEventName, targetNode, targetInst);\n  } // When blurring, set the value attribute for number inputs\n\n\n  if (domEventName === 'focusout') {\n    handleControlledInputBlur(targetNode);\n  }\n}\n\nfunction registerEvents$2() {\n  registerDirectEvent('onMouseEnter', ['mouseout', 'mouseover']);\n  registerDirectEvent('onMouseLeave', ['mouseout', 'mouseover']);\n  registerDirectEvent('onPointerEnter', ['pointerout', 'pointerover']);\n  registerDirectEvent('onPointerLeave', ['pointerout', 'pointerover']);\n}\n/**\n * For almost every interaction we care about, there will be both a top-level\n * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that\n * we do not extract duplicate events. However, moving the mouse into the\n * browser from outside will not fire a `mouseout` event. In this case, we use\n * the `mouseover` top-level event.\n */\n\n\nfunction extractEvents$2(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n  var isOverEvent = domEventName === 'mouseover' || domEventName === 'pointerover';\n  var isOutEvent = domEventName === 'mouseout' || domEventName === 'pointerout';\n\n  if (isOverEvent && !isReplayingEvent(nativeEvent)) {\n    // If this is an over event with a target, we might have already dispatched\n    // the event in the out event of the other target. If this is replayed,\n    // then it's because we couldn't dispatch against this target previously\n    // so we have to do it now instead.\n    var related = nativeEvent.relatedTarget || nativeEvent.fromElement;\n\n    if (related) {\n      // If the related node is managed by React, we can assume that we have\n      // already dispatched the corresponding events during its mouseout.\n      if (getClosestInstanceFromNode(related) || isContainerMarkedAsRoot(related)) {\n        return;\n      }\n    }\n  }\n\n  if (!isOutEvent && !isOverEvent) {\n    // Must not be a mouse or pointer in or out - ignoring.\n    return;\n  }\n\n  var win; // TODO: why is this nullable in the types but we read from it?\n\n  if (nativeEventTarget.window === nativeEventTarget) {\n    // `nativeEventTarget` is probably a window object.\n    win = nativeEventTarget;\n  } else {\n    // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.\n    var doc = nativeEventTarget.ownerDocument;\n\n    if (doc) {\n      win = doc.defaultView || doc.parentWindow;\n    } else {\n      win = window;\n    }\n  }\n\n  var from;\n  var to;\n\n  if (isOutEvent) {\n    var _related = nativeEvent.relatedTarget || nativeEvent.toElement;\n\n    from = targetInst;\n    to = _related ? getClosestInstanceFromNode(_related) : null;\n\n    if (to !== null) {\n      var nearestMounted = getNearestMountedFiber(to);\n\n      if (to !== nearestMounted || to.tag !== HostComponent && to.tag !== HostText) {\n        to = null;\n      }\n    }\n  } else {\n    // Moving to a node from outside the window.\n    from = null;\n    to = targetInst;\n  }\n\n  if (from === to) {\n    // Nothing pertains to our managed components.\n    return;\n  }\n\n  var SyntheticEventCtor = SyntheticMouseEvent;\n  var leaveEventType = 'onMouseLeave';\n  var enterEventType = 'onMouseEnter';\n  var eventTypePrefix = 'mouse';\n\n  if (domEventName === 'pointerout' || domEventName === 'pointerover') {\n    SyntheticEventCtor = SyntheticPointerEvent;\n    leaveEventType = 'onPointerLeave';\n    enterEventType = 'onPointerEnter';\n    eventTypePrefix = 'pointer';\n  }\n\n  var fromNode = from == null ? win : getNodeFromInstance(from);\n  var toNode = to == null ? win : getNodeFromInstance(to);\n  var leave = new SyntheticEventCtor(leaveEventType, eventTypePrefix + 'leave', from, nativeEvent, nativeEventTarget);\n  leave.target = fromNode;\n  leave.relatedTarget = toNode;\n  var enter = null; // We should only process this nativeEvent if we are processing\n  // the first ancestor. Next time, we will ignore the event.\n\n  var nativeTargetInst = getClosestInstanceFromNode(nativeEventTarget);\n\n  if (nativeTargetInst === targetInst) {\n    var enterEvent = new SyntheticEventCtor(enterEventType, eventTypePrefix + 'enter', to, nativeEvent, nativeEventTarget);\n    enterEvent.target = toNode;\n    enterEvent.relatedTarget = fromNode;\n    enter = enterEvent;\n  }\n\n  accumulateEnterLeaveTwoPhaseListeners(dispatchQueue, leave, enter, from, to);\n}\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n  return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare\n  ;\n}\n\nvar objectIs = typeof Object.is === 'function' ? Object.is : is;\n\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\n\nfunction shallowEqual(objA, objB) {\n  if (objectIs(objA, objB)) {\n    return true;\n  }\n\n  if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n    return false;\n  }\n\n  var keysA = Object.keys(objA);\n  var keysB = Object.keys(objB);\n\n  if (keysA.length !== keysB.length) {\n    return false;\n  } // Test for A's keys different from B.\n\n\n  for (var i = 0; i < keysA.length; i++) {\n    var currentKey = keysA[i];\n\n    if (!hasOwnProperty.call(objB, currentKey) || !objectIs(objA[currentKey], objB[currentKey])) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/**\n * Given any node return the first leaf node without children.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {DOMElement|DOMTextNode}\n */\n\nfunction getLeafNode(node) {\n  while (node && node.firstChild) {\n    node = node.firstChild;\n  }\n\n  return node;\n}\n/**\n * Get the next sibling within a container. This will walk up the\n * DOM if a node's siblings have been exhausted.\n *\n * @param {DOMElement|DOMTextNode} node\n * @return {?DOMElement|DOMTextNode}\n */\n\n\nfunction getSiblingNode(node) {\n  while (node) {\n    if (node.nextSibling) {\n      return node.nextSibling;\n    }\n\n    node = node.parentNode;\n  }\n}\n/**\n * Get object describing the nodes which contain characters at offset.\n *\n * @param {DOMElement|DOMTextNode} root\n * @param {number} offset\n * @return {?object}\n */\n\n\nfunction getNodeForCharacterOffset(root, offset) {\n  var node = getLeafNode(root);\n  var nodeStart = 0;\n  var nodeEnd = 0;\n\n  while (node) {\n    if (node.nodeType === TEXT_NODE) {\n      nodeEnd = nodeStart + node.textContent.length;\n\n      if (nodeStart <= offset && nodeEnd >= offset) {\n        return {\n          node: node,\n          offset: offset - nodeStart\n        };\n      }\n\n      nodeStart = nodeEnd;\n    }\n\n    node = getLeafNode(getSiblingNode(node));\n  }\n}\n\n/**\n * @param {DOMElement} outerNode\n * @return {?object}\n */\n\nfunction getOffsets(outerNode) {\n  var ownerDocument = outerNode.ownerDocument;\n  var win = ownerDocument && ownerDocument.defaultView || window;\n  var selection = win.getSelection && win.getSelection();\n\n  if (!selection || selection.rangeCount === 0) {\n    return null;\n  }\n\n  var anchorNode = selection.anchorNode,\n      anchorOffset = selection.anchorOffset,\n      focusNode = selection.focusNode,\n      focusOffset = selection.focusOffset; // In Firefox, anchorNode and focusNode can be \"anonymous divs\", e.g. the\n  // up/down buttons on an <input type=\"number\">. Anonymous divs do not seem to\n  // expose properties, triggering a \"Permission denied error\" if any of its\n  // properties are accessed. The only seemingly possible way to avoid erroring\n  // is to access a property that typically works for non-anonymous divs and\n  // catch any error that may otherwise arise. See\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n\n  try {\n    /* eslint-disable no-unused-expressions */\n    anchorNode.nodeType;\n    focusNode.nodeType;\n    /* eslint-enable no-unused-expressions */\n  } catch (e) {\n    return null;\n  }\n\n  return getModernOffsetsFromPoints(outerNode, anchorNode, anchorOffset, focusNode, focusOffset);\n}\n/**\n * Returns {start, end} where `start` is the character/codepoint index of\n * (anchorNode, anchorOffset) within the textContent of `outerNode`, and\n * `end` is the index of (focusNode, focusOffset).\n *\n * Returns null if you pass in garbage input but we should probably just crash.\n *\n * Exported only for testing.\n */\n\nfunction getModernOffsetsFromPoints(outerNode, anchorNode, anchorOffset, focusNode, focusOffset) {\n  var length = 0;\n  var start = -1;\n  var end = -1;\n  var indexWithinAnchor = 0;\n  var indexWithinFocus = 0;\n  var node = outerNode;\n  var parentNode = null;\n\n  outer: while (true) {\n    var next = null;\n\n    while (true) {\n      if (node === anchorNode && (anchorOffset === 0 || node.nodeType === TEXT_NODE)) {\n        start = length + anchorOffset;\n      }\n\n      if (node === focusNode && (focusOffset === 0 || node.nodeType === TEXT_NODE)) {\n        end = length + focusOffset;\n      }\n\n      if (node.nodeType === TEXT_NODE) {\n        length += node.nodeValue.length;\n      }\n\n      if ((next = node.firstChild) === null) {\n        break;\n      } // Moving from `node` to its first child `next`.\n\n\n      parentNode = node;\n      node = next;\n    }\n\n    while (true) {\n      if (node === outerNode) {\n        // If `outerNode` has children, this is always the second time visiting\n        // it. If it has no children, this is still the first loop, and the only\n        // valid selection is anchorNode and focusNode both equal to this node\n        // and both offsets 0, in which case we will have handled above.\n        break outer;\n      }\n\n      if (parentNode === anchorNode && ++indexWithinAnchor === anchorOffset) {\n        start = length;\n      }\n\n      if (parentNode === focusNode && ++indexWithinFocus === focusOffset) {\n        end = length;\n      }\n\n      if ((next = node.nextSibling) !== null) {\n        break;\n      }\n\n      node = parentNode;\n      parentNode = node.parentNode;\n    } // Moving from `node` to its next sibling `next`.\n\n\n    node = next;\n  }\n\n  if (start === -1 || end === -1) {\n    // This should never happen. (Would happen if the anchor/focus nodes aren't\n    // actually inside the passed-in node.)\n    return null;\n  }\n\n  return {\n    start: start,\n    end: end\n  };\n}\n/**\n * In modern non-IE browsers, we can support both forward and backward\n * selections.\n *\n * Note: IE10+ supports the Selection object, but it does not support\n * the `extend` method, which means that even in modern IE, it's not possible\n * to programmatically create a backward selection. Thus, for all IE\n * versions, we use the old IE API to create our selections.\n *\n * @param {DOMElement|DOMTextNode} node\n * @param {object} offsets\n */\n\nfunction setOffsets(node, offsets) {\n  var doc = node.ownerDocument || document;\n  var win = doc && doc.defaultView || window; // Edge fails with \"Object expected\" in some scenarios.\n  // (For instance: TinyMCE editor used in a list component that supports pasting to add more,\n  // fails when pasting 100+ items)\n\n  if (!win.getSelection) {\n    return;\n  }\n\n  var selection = win.getSelection();\n  var length = node.textContent.length;\n  var start = Math.min(offsets.start, length);\n  var end = offsets.end === undefined ? start : Math.min(offsets.end, length); // IE 11 uses modern selection, but doesn't support the extend method.\n  // Flip backward selections, so we can set with a single range.\n\n  if (!selection.extend && start > end) {\n    var temp = end;\n    end = start;\n    start = temp;\n  }\n\n  var startMarker = getNodeForCharacterOffset(node, start);\n  var endMarker = getNodeForCharacterOffset(node, end);\n\n  if (startMarker && endMarker) {\n    if (selection.rangeCount === 1 && selection.anchorNode === startMarker.node && selection.anchorOffset === startMarker.offset && selection.focusNode === endMarker.node && selection.focusOffset === endMarker.offset) {\n      return;\n    }\n\n    var range = doc.createRange();\n    range.setStart(startMarker.node, startMarker.offset);\n    selection.removeAllRanges();\n\n    if (start > end) {\n      selection.addRange(range);\n      selection.extend(endMarker.node, endMarker.offset);\n    } else {\n      range.setEnd(endMarker.node, endMarker.offset);\n      selection.addRange(range);\n    }\n  }\n}\n\nfunction isTextNode(node) {\n  return node && node.nodeType === TEXT_NODE;\n}\n\nfunction containsNode(outerNode, innerNode) {\n  if (!outerNode || !innerNode) {\n    return false;\n  } else if (outerNode === innerNode) {\n    return true;\n  } else if (isTextNode(outerNode)) {\n    return false;\n  } else if (isTextNode(innerNode)) {\n    return containsNode(outerNode, innerNode.parentNode);\n  } else if ('contains' in outerNode) {\n    return outerNode.contains(innerNode);\n  } else if (outerNode.compareDocumentPosition) {\n    return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n  } else {\n    return false;\n  }\n}\n\nfunction isInDocument(node) {\n  return node && node.ownerDocument && containsNode(node.ownerDocument.documentElement, node);\n}\n\nfunction isSameOriginFrame(iframe) {\n  try {\n    // Accessing the contentDocument of a HTMLIframeElement can cause the browser\n    // to throw, e.g. if it has a cross-origin src attribute.\n    // Safari will show an error in the console when the access results in \"Blocked a frame with origin\". e.g:\n    // iframe.contentDocument.defaultView;\n    // A safety way is to access one of the cross origin properties: Window or Location\n    // Which might result in \"SecurityError\" DOM Exception and it is compatible to Safari.\n    // https://html.spec.whatwg.org/multipage/browsers.html#integration-with-idl\n    return typeof iframe.contentWindow.location.href === 'string';\n  } catch (err) {\n    return false;\n  }\n}\n\nfunction getActiveElementDeep() {\n  var win = window;\n  var element = getActiveElement();\n\n  while (element instanceof win.HTMLIFrameElement) {\n    if (isSameOriginFrame(element)) {\n      win = element.contentWindow;\n    } else {\n      return element;\n    }\n\n    element = getActiveElement(win.document);\n  }\n\n  return element;\n}\n/**\n * @ReactInputSelection: React input selection module. Based on Selection.js,\n * but modified to be suitable for react and has a couple of bug fixes (doesn't\n * assume buttons have range selections allowed).\n * Input selection module for React.\n */\n\n/**\n * @hasSelectionCapabilities: we get the element types that support selection\n * from https://html.spec.whatwg.org/#do-not-apply, looking at `selectionStart`\n * and `selectionEnd` rows.\n */\n\n\nfunction hasSelectionCapabilities(elem) {\n  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();\n  return nodeName && (nodeName === 'input' && (elem.type === 'text' || elem.type === 'search' || elem.type === 'tel' || elem.type === 'url' || elem.type === 'password') || nodeName === 'textarea' || elem.contentEditable === 'true');\n}\nfunction getSelectionInformation() {\n  var focusedElem = getActiveElementDeep();\n  return {\n    focusedElem: focusedElem,\n    selectionRange: hasSelectionCapabilities(focusedElem) ? getSelection(focusedElem) : null\n  };\n}\n/**\n * @restoreSelection: If any selection information was potentially lost,\n * restore it. This is useful when performing operations that could remove dom\n * nodes and place them back in, resulting in focus being lost.\n */\n\nfunction restoreSelection(priorSelectionInformation) {\n  var curFocusedElem = getActiveElementDeep();\n  var priorFocusedElem = priorSelectionInformation.focusedElem;\n  var priorSelectionRange = priorSelectionInformation.selectionRange;\n\n  if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {\n    if (priorSelectionRange !== null && hasSelectionCapabilities(priorFocusedElem)) {\n      setSelection(priorFocusedElem, priorSelectionRange);\n    } // Focusing a node can change the scroll position, which is undesirable\n\n\n    var ancestors = [];\n    var ancestor = priorFocusedElem;\n\n    while (ancestor = ancestor.parentNode) {\n      if (ancestor.nodeType === ELEMENT_NODE) {\n        ancestors.push({\n          element: ancestor,\n          left: ancestor.scrollLeft,\n          top: ancestor.scrollTop\n        });\n      }\n    }\n\n    if (typeof priorFocusedElem.focus === 'function') {\n      priorFocusedElem.focus();\n    }\n\n    for (var i = 0; i < ancestors.length; i++) {\n      var info = ancestors[i];\n      info.element.scrollLeft = info.left;\n      info.element.scrollTop = info.top;\n    }\n  }\n}\n/**\n * @getSelection: Gets the selection bounds of a focused textarea, input or\n * contentEditable node.\n * -@input: Look up selection bounds of this input\n * -@return {start: selectionStart, end: selectionEnd}\n */\n\nfunction getSelection(input) {\n  var selection;\n\n  if ('selectionStart' in input) {\n    // Modern browser with input or textarea.\n    selection = {\n      start: input.selectionStart,\n      end: input.selectionEnd\n    };\n  } else {\n    // Content editable or old IE textarea.\n    selection = getOffsets(input);\n  }\n\n  return selection || {\n    start: 0,\n    end: 0\n  };\n}\n/**\n * @setSelection: Sets the selection bounds of a textarea or input and focuses\n * the input.\n * -@input     Set selection bounds of this input or textarea\n * -@offsets   Object of same form that is returned from get*\n */\n\nfunction setSelection(input, offsets) {\n  var start = offsets.start;\n  var end = offsets.end;\n\n  if (end === undefined) {\n    end = start;\n  }\n\n  if ('selectionStart' in input) {\n    input.selectionStart = start;\n    input.selectionEnd = Math.min(end, input.value.length);\n  } else {\n    setOffsets(input, offsets);\n  }\n}\n\nvar skipSelectionChangeEvent = canUseDOM && 'documentMode' in document && document.documentMode <= 11;\n\nfunction registerEvents$3() {\n  registerTwoPhaseEvent('onSelect', ['focusout', 'contextmenu', 'dragend', 'focusin', 'keydown', 'keyup', 'mousedown', 'mouseup', 'selectionchange']);\n}\n\nvar activeElement$1 = null;\nvar activeElementInst$1 = null;\nvar lastSelection = null;\nvar mouseDown = false;\n/**\n * Get an object which is a unique representation of the current selection.\n *\n * The return value will not be consistent across nodes or browsers, but\n * two identical selections on the same node will return identical objects.\n */\n\nfunction getSelection$1(node) {\n  if ('selectionStart' in node && hasSelectionCapabilities(node)) {\n    return {\n      start: node.selectionStart,\n      end: node.selectionEnd\n    };\n  } else {\n    var win = node.ownerDocument && node.ownerDocument.defaultView || window;\n    var selection = win.getSelection();\n    return {\n      anchorNode: selection.anchorNode,\n      anchorOffset: selection.anchorOffset,\n      focusNode: selection.focusNode,\n      focusOffset: selection.focusOffset\n    };\n  }\n}\n/**\n * Get document associated with the event target.\n */\n\n\nfunction getEventTargetDocument(eventTarget) {\n  return eventTarget.window === eventTarget ? eventTarget.document : eventTarget.nodeType === DOCUMENT_NODE ? eventTarget : eventTarget.ownerDocument;\n}\n/**\n * Poll selection to see whether it's changed.\n *\n * @param {object} nativeEvent\n * @param {object} nativeEventTarget\n * @return {?SyntheticEvent}\n */\n\n\nfunction constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {\n  // Ensure we have the right element, and that the user is not dragging a\n  // selection (this matches native `select` event behavior). In HTML5, select\n  // fires only on input and textarea thus if there's no focused element we\n  // won't dispatch.\n  var doc = getEventTargetDocument(nativeEventTarget);\n\n  if (mouseDown || activeElement$1 == null || activeElement$1 !== getActiveElement(doc)) {\n    return;\n  } // Only fire when selection has actually changed.\n\n\n  var currentSelection = getSelection$1(activeElement$1);\n\n  if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {\n    lastSelection = currentSelection;\n    var listeners = accumulateTwoPhaseListeners(activeElementInst$1, 'onSelect');\n\n    if (listeners.length > 0) {\n      var event = new SyntheticEvent('onSelect', 'select', null, nativeEvent, nativeEventTarget);\n      dispatchQueue.push({\n        event: event,\n        listeners: listeners\n      });\n      event.target = activeElement$1;\n    }\n  }\n}\n/**\n * This plugin creates an `onSelect` event that normalizes select events\n * across form elements.\n *\n * Supported elements are:\n * - input (see `isTextInputElement`)\n * - textarea\n * - contentEditable\n *\n * This differs from native browser implementations in the following ways:\n * - Fires on contentEditable fields as well as inputs.\n * - Fires for collapsed selection.\n * - Fires after user input.\n */\n\n\nfunction extractEvents$3(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n  var targetNode = targetInst ? getNodeFromInstance(targetInst) : window;\n\n  switch (domEventName) {\n    // Track the input node that has focus.\n    case 'focusin':\n      if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') {\n        activeElement$1 = targetNode;\n        activeElementInst$1 = targetInst;\n        lastSelection = null;\n      }\n\n      break;\n\n    case 'focusout':\n      activeElement$1 = null;\n      activeElementInst$1 = null;\n      lastSelection = null;\n      break;\n    // Don't fire the event while the user is dragging. This matches the\n    // semantics of the native select event.\n\n    case 'mousedown':\n      mouseDown = true;\n      break;\n\n    case 'contextmenu':\n    case 'mouseup':\n    case 'dragend':\n      mouseDown = false;\n      constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n      break;\n    // Chrome and IE fire non-standard event when selection is changed (and\n    // sometimes when it hasn't). IE's event fires out of order with respect\n    // to key and input events on deletion, so we discard it.\n    //\n    // Firefox doesn't support selectionchange, so check selection status\n    // after each key entry. The selection changes after keydown and before\n    // keyup, but we check on keydown as well in the case of holding down a\n    // key, when multiple keydown events are fired but only one keyup is.\n    // This is also our approach for IE handling, for the reason above.\n\n    case 'selectionchange':\n      if (skipSelectionChangeEvent) {\n        break;\n      }\n\n    // falls through\n\n    case 'keydown':\n    case 'keyup':\n      constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);\n  }\n}\n\n/**\n * Generate a mapping of standard vendor prefixes using the defined style property and event name.\n *\n * @param {string} styleProp\n * @param {string} eventName\n * @returns {object}\n */\n\nfunction makePrefixMap(styleProp, eventName) {\n  var prefixes = {};\n  prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();\n  prefixes['Webkit' + styleProp] = 'webkit' + eventName;\n  prefixes['Moz' + styleProp] = 'moz' + eventName;\n  return prefixes;\n}\n/**\n * A list of event names to a configurable list of vendor prefixes.\n */\n\n\nvar vendorPrefixes = {\n  animationend: makePrefixMap('Animation', 'AnimationEnd'),\n  animationiteration: makePrefixMap('Animation', 'AnimationIteration'),\n  animationstart: makePrefixMap('Animation', 'AnimationStart'),\n  transitionend: makePrefixMap('Transition', 'TransitionEnd')\n};\n/**\n * Event names that have already been detected and prefixed (if applicable).\n */\n\nvar prefixedEventNames = {};\n/**\n * Element to check for prefixes on.\n */\n\nvar style = {};\n/**\n * Bootstrap if a DOM exists.\n */\n\nif (canUseDOM) {\n  style = document.createElement('div').style; // On some platforms, in particular some releases of Android 4.x,\n  // the un-prefixed \"animation\" and \"transition\" properties are defined on the\n  // style object but the events that fire will still be prefixed, so we need\n  // to check if the un-prefixed events are usable, and if not remove them from the map.\n\n  if (!('AnimationEvent' in window)) {\n    delete vendorPrefixes.animationend.animation;\n    delete vendorPrefixes.animationiteration.animation;\n    delete vendorPrefixes.animationstart.animation;\n  } // Same as above\n\n\n  if (!('TransitionEvent' in window)) {\n    delete vendorPrefixes.transitionend.transition;\n  }\n}\n/**\n * Attempts to determine the correct vendor prefixed event name.\n *\n * @param {string} eventName\n * @returns {string}\n */\n\n\nfunction getVendorPrefixedEventName(eventName) {\n  if (prefixedEventNames[eventName]) {\n    return prefixedEventNames[eventName];\n  } else if (!vendorPrefixes[eventName]) {\n    return eventName;\n  }\n\n  var prefixMap = vendorPrefixes[eventName];\n\n  for (var styleProp in prefixMap) {\n    if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {\n      return prefixedEventNames[eventName] = prefixMap[styleProp];\n    }\n  }\n\n  return eventName;\n}\n\nvar ANIMATION_END = getVendorPrefixedEventName('animationend');\nvar ANIMATION_ITERATION = getVendorPrefixedEventName('animationiteration');\nvar ANIMATION_START = getVendorPrefixedEventName('animationstart');\nvar TRANSITION_END = getVendorPrefixedEventName('transitionend');\n\nvar topLevelEventsToReactNames = new Map(); // NOTE: Capitalization is important in this list!\n//\n// E.g. it needs \"pointerDown\", not \"pointerdown\".\n// This is because we derive both React name (\"onPointerDown\")\n// and DOM name (\"pointerdown\") from the same list.\n//\n// Exceptions that don't match this convention are listed separately.\n//\n// prettier-ignore\n\nvar simpleEventPluginEvents = ['abort', 'auxClick', 'cancel', 'canPlay', 'canPlayThrough', 'click', 'close', 'contextMenu', 'copy', 'cut', 'drag', 'dragEnd', 'dragEnter', 'dragExit', 'dragLeave', 'dragOver', 'dragStart', 'drop', 'durationChange', 'emptied', 'encrypted', 'ended', 'error', 'gotPointerCapture', 'input', 'invalid', 'keyDown', 'keyPress', 'keyUp', 'load', 'loadedData', 'loadedMetadata', 'loadStart', 'lostPointerCapture', 'mouseDown', 'mouseMove', 'mouseOut', 'mouseOver', 'mouseUp', 'paste', 'pause', 'play', 'playing', 'pointerCancel', 'pointerDown', 'pointerMove', 'pointerOut', 'pointerOver', 'pointerUp', 'progress', 'rateChange', 'reset', 'resize', 'seeked', 'seeking', 'stalled', 'submit', 'suspend', 'timeUpdate', 'touchCancel', 'touchEnd', 'touchStart', 'volumeChange', 'scroll', 'toggle', 'touchMove', 'waiting', 'wheel'];\n\nfunction registerSimpleEvent(domEventName, reactName) {\n  topLevelEventsToReactNames.set(domEventName, reactName);\n  registerTwoPhaseEvent(reactName, [domEventName]);\n}\n\nfunction registerSimpleEvents() {\n  for (var i = 0; i < simpleEventPluginEvents.length; i++) {\n    var eventName = simpleEventPluginEvents[i];\n    var domEventName = eventName.toLowerCase();\n    var capitalizedEvent = eventName[0].toUpperCase() + eventName.slice(1);\n    registerSimpleEvent(domEventName, 'on' + capitalizedEvent);\n  } // Special cases where event names don't match.\n\n\n  registerSimpleEvent(ANIMATION_END, 'onAnimationEnd');\n  registerSimpleEvent(ANIMATION_ITERATION, 'onAnimationIteration');\n  registerSimpleEvent(ANIMATION_START, 'onAnimationStart');\n  registerSimpleEvent('dblclick', 'onDoubleClick');\n  registerSimpleEvent('focusin', 'onFocus');\n  registerSimpleEvent('focusout', 'onBlur');\n  registerSimpleEvent(TRANSITION_END, 'onTransitionEnd');\n}\n\nfunction extractEvents$4(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n  var reactName = topLevelEventsToReactNames.get(domEventName);\n\n  if (reactName === undefined) {\n    return;\n  }\n\n  var SyntheticEventCtor = SyntheticEvent;\n  var reactEventType = domEventName;\n\n  switch (domEventName) {\n    case 'keypress':\n      // Firefox creates a keypress event for function keys too. This removes\n      // the unwanted keypress events. Enter is however both printable and\n      // non-printable. One would expect Tab to be as well (but it isn't).\n      if (getEventCharCode(nativeEvent) === 0) {\n        return;\n      }\n\n    /* falls through */\n\n    case 'keydown':\n    case 'keyup':\n      SyntheticEventCtor = SyntheticKeyboardEvent;\n      break;\n\n    case 'focusin':\n      reactEventType = 'focus';\n      SyntheticEventCtor = SyntheticFocusEvent;\n      break;\n\n    case 'focusout':\n      reactEventType = 'blur';\n      SyntheticEventCtor = SyntheticFocusEvent;\n      break;\n\n    case 'beforeblur':\n    case 'afterblur':\n      SyntheticEventCtor = SyntheticFocusEvent;\n      break;\n\n    case 'click':\n      // Firefox creates a click event on right mouse clicks. This removes the\n      // unwanted click events.\n      if (nativeEvent.button === 2) {\n        return;\n      }\n\n    /* falls through */\n\n    case 'auxclick':\n    case 'dblclick':\n    case 'mousedown':\n    case 'mousemove':\n    case 'mouseup': // TODO: Disabled elements should not respond to mouse events\n\n    /* falls through */\n\n    case 'mouseout':\n    case 'mouseover':\n    case 'contextmenu':\n      SyntheticEventCtor = SyntheticMouseEvent;\n      break;\n\n    case 'drag':\n    case 'dragend':\n    case 'dragenter':\n    case 'dragexit':\n    case 'dragleave':\n    case 'dragover':\n    case 'dragstart':\n    case 'drop':\n      SyntheticEventCtor = SyntheticDragEvent;\n      break;\n\n    case 'touchcancel':\n    case 'touchend':\n    case 'touchmove':\n    case 'touchstart':\n      SyntheticEventCtor = SyntheticTouchEvent;\n      break;\n\n    case ANIMATION_END:\n    case ANIMATION_ITERATION:\n    case ANIMATION_START:\n      SyntheticEventCtor = SyntheticAnimationEvent;\n      break;\n\n    case TRANSITION_END:\n      SyntheticEventCtor = SyntheticTransitionEvent;\n      break;\n\n    case 'scroll':\n      SyntheticEventCtor = SyntheticUIEvent;\n      break;\n\n    case 'wheel':\n      SyntheticEventCtor = SyntheticWheelEvent;\n      break;\n\n    case 'copy':\n    case 'cut':\n    case 'paste':\n      SyntheticEventCtor = SyntheticClipboardEvent;\n      break;\n\n    case 'gotpointercapture':\n    case 'lostpointercapture':\n    case 'pointercancel':\n    case 'pointerdown':\n    case 'pointermove':\n    case 'pointerout':\n    case 'pointerover':\n    case 'pointerup':\n      SyntheticEventCtor = SyntheticPointerEvent;\n      break;\n  }\n\n  var inCapturePhase = (eventSystemFlags & IS_CAPTURE_PHASE) !== 0;\n\n  {\n    // Some events don't bubble in the browser.\n    // In the past, React has always bubbled them, but this can be surprising.\n    // We're going to try aligning closer to the browser behavior by not bubbling\n    // them in React either. We'll start by not bubbling onScroll, and then expand.\n    var accumulateTargetOnly = !inCapturePhase && // TODO: ideally, we'd eventually add all events from\n    // nonDelegatedEvents list in DOMPluginEventSystem.\n    // Then we can remove this special list.\n    // This is a breaking change that can wait until React 18.\n    domEventName === 'scroll';\n\n    var _listeners = accumulateSinglePhaseListeners(targetInst, reactName, nativeEvent.type, inCapturePhase, accumulateTargetOnly);\n\n    if (_listeners.length > 0) {\n      // Intentionally create event lazily.\n      var _event = new SyntheticEventCtor(reactName, reactEventType, null, nativeEvent, nativeEventTarget);\n\n      dispatchQueue.push({\n        event: _event,\n        listeners: _listeners\n      });\n    }\n  }\n}\n\n// TODO: remove top-level side effect.\nregisterSimpleEvents();\nregisterEvents$2();\nregisterEvents$1();\nregisterEvents$3();\nregisterEvents();\n\nfunction extractEvents$5(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {\n  // TODO: we should remove the concept of a \"SimpleEventPlugin\".\n  // This is the basic functionality of the event system. All\n  // the other plugins are essentially polyfills. So the plugin\n  // should probably be inlined somewhere and have its logic\n  // be core the to event system. This would potentially allow\n  // us to ship builds of React without the polyfilled plugins below.\n  extractEvents$4(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags);\n  var shouldProcessPolyfillPlugins = (eventSystemFlags & SHOULD_NOT_PROCESS_POLYFILL_EVENT_PLUGINS) === 0; // We don't process these events unless we are in the\n  // event's native \"bubble\" phase, which means that we're\n  // not in the capture phase. That's because we emulate\n  // the capture phase here still. This is a trade-off,\n  // because in an ideal world we would not emulate and use\n  // the phases properly, like we do with the SimpleEvent\n  // plugin. However, the plugins below either expect\n  // emulation (EnterLeave) or use state localized to that\n  // plugin (BeforeInput, Change, Select). The state in\n  // these modules complicates things, as you'll essentially\n  // get the case where the capture phase event might change\n  // state, only for the following bubble event to come in\n  // later and not trigger anything as the state now\n  // invalidates the heuristics of the event plugin. We\n  // could alter all these plugins to work in such ways, but\n  // that might cause other unknown side-effects that we\n  // can't foresee right now.\n\n  if (shouldProcessPolyfillPlugins) {\n    extractEvents$2(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n    extractEvents$1(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n    extractEvents$3(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n    extractEvents(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);\n  }\n} // List of events that need to be individually attached to media elements.\n\n\nvar mediaEventTypes = ['abort', 'canplay', 'canplaythrough', 'durationchange', 'emptied', 'encrypted', 'ended', 'error', 'loadeddata', 'loadedmetadata', 'loadstart', 'pause', 'play', 'playing', 'progress', 'ratechange', 'resize', 'seeked', 'seeking', 'stalled', 'suspend', 'timeupdate', 'volumechange', 'waiting']; // We should not delegate these events to the container, but rather\n// set them on the actual target element itself. This is primarily\n// because these events do not consistently bubble in the DOM.\n\nvar nonDelegatedEvents = new Set(['cancel', 'close', 'invalid', 'load', 'scroll', 'toggle'].concat(mediaEventTypes));\n\nfunction executeDispatch(event, listener, currentTarget) {\n  var type = event.type || 'unknown-event';\n  event.currentTarget = currentTarget;\n  invokeGuardedCallbackAndCatchFirstError(type, listener, undefined, event);\n  event.currentTarget = null;\n}\n\nfunction processDispatchQueueItemsInOrder(event, dispatchListeners, inCapturePhase) {\n  var previousInstance;\n\n  if (inCapturePhase) {\n    for (var i = dispatchListeners.length - 1; i >= 0; i--) {\n      var _dispatchListeners$i = dispatchListeners[i],\n          instance = _dispatchListeners$i.instance,\n          currentTarget = _dispatchListeners$i.currentTarget,\n          listener = _dispatchListeners$i.listener;\n\n      if (instance !== previousInstance && event.isPropagationStopped()) {\n        return;\n      }\n\n      executeDispatch(event, listener, currentTarget);\n      previousInstance = instance;\n    }\n  } else {\n    for (var _i = 0; _i < dispatchListeners.length; _i++) {\n      var _dispatchListeners$_i = dispatchListeners[_i],\n          _instance = _dispatchListeners$_i.instance,\n          _currentTarget = _dispatchListeners$_i.currentTarget,\n          _listener = _dispatchListeners$_i.listener;\n\n      if (_instance !== previousInstance && event.isPropagationStopped()) {\n        return;\n      }\n\n      executeDispatch(event, _listener, _currentTarget);\n      previousInstance = _instance;\n    }\n  }\n}\n\nfunction processDispatchQueue(dispatchQueue, eventSystemFlags) {\n  var inCapturePhase = (eventSystemFlags & IS_CAPTURE_PHASE) !== 0;\n\n  for (var i = 0; i < dispatchQueue.length; i++) {\n    var _dispatchQueue$i = dispatchQueue[i],\n        event = _dispatchQueue$i.event,\n        listeners = _dispatchQueue$i.listeners;\n    processDispatchQueueItemsInOrder(event, listeners, inCapturePhase); //  event system doesn't use pooling.\n  } // This would be a good time to rethrow if any of the event handlers threw.\n\n\n  rethrowCaughtError();\n}\n\nfunction dispatchEventsForPlugins(domEventName, eventSystemFlags, nativeEvent, targetInst, targetContainer) {\n  var nativeEventTarget = getEventTarget(nativeEvent);\n  var dispatchQueue = [];\n  extractEvents$5(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags);\n  processDispatchQueue(dispatchQueue, eventSystemFlags);\n}\n\nfunction listenToNonDelegatedEvent(domEventName, targetElement) {\n  {\n    if (!nonDelegatedEvents.has(domEventName)) {\n      error('Did not expect a listenToNonDelegatedEvent() call for \"%s\". ' + 'This is a bug in React. Please file an issue.', domEventName);\n    }\n  }\n\n  var isCapturePhaseListener = false;\n  var listenerSet = getEventListenerSet(targetElement);\n  var listenerSetKey = getListenerSetKey(domEventName, isCapturePhaseListener);\n\n  if (!listenerSet.has(listenerSetKey)) {\n    addTrappedEventListener(targetElement, domEventName, IS_NON_DELEGATED, isCapturePhaseListener);\n    listenerSet.add(listenerSetKey);\n  }\n}\nfunction listenToNativeEvent(domEventName, isCapturePhaseListener, target) {\n  {\n    if (nonDelegatedEvents.has(domEventName) && !isCapturePhaseListener) {\n      error('Did not expect a listenToNativeEvent() call for \"%s\" in the bubble phase. ' + 'This is a bug in React. Please file an issue.', domEventName);\n    }\n  }\n\n  var eventSystemFlags = 0;\n\n  if (isCapturePhaseListener) {\n    eventSystemFlags |= IS_CAPTURE_PHASE;\n  }\n\n  addTrappedEventListener(target, domEventName, eventSystemFlags, isCapturePhaseListener);\n} // This is only used by createEventHandle when the\nvar listeningMarker = '_reactListening' + Math.random().toString(36).slice(2);\nfunction listenToAllSupportedEvents(rootContainerElement) {\n  if (!rootContainerElement[listeningMarker]) {\n    rootContainerElement[listeningMarker] = true;\n    allNativeEvents.forEach(function (domEventName) {\n      // We handle selectionchange separately because it\n      // doesn't bubble and needs to be on the document.\n      if (domEventName !== 'selectionchange') {\n        if (!nonDelegatedEvents.has(domEventName)) {\n          listenToNativeEvent(domEventName, false, rootContainerElement);\n        }\n\n        listenToNativeEvent(domEventName, true, rootContainerElement);\n      }\n    });\n    var ownerDocument = rootContainerElement.nodeType === DOCUMENT_NODE ? rootContainerElement : rootContainerElement.ownerDocument;\n\n    if (ownerDocument !== null) {\n      // The selectionchange event also needs deduplication\n      // but it is attached to the document.\n      if (!ownerDocument[listeningMarker]) {\n        ownerDocument[listeningMarker] = true;\n        listenToNativeEvent('selectionchange', false, ownerDocument);\n      }\n    }\n  }\n}\n\nfunction addTrappedEventListener(targetContainer, domEventName, eventSystemFlags, isCapturePhaseListener, isDeferredListenerForLegacyFBSupport) {\n  var listener = createEventListenerWrapperWithPriority(targetContainer, domEventName, eventSystemFlags); // If passive option is not supported, then the event will be\n  // active and not passive.\n\n  var isPassiveListener = undefined;\n\n  if (passiveBrowserEventsSupported) {\n    // Browsers introduced an intervention, making these events\n    // passive by default on document. React doesn't bind them\n    // to document anymore, but changing this now would undo\n    // the performance wins from the change. So we emulate\n    // the existing behavior manually on the roots now.\n    // https://github.com/facebook/react/issues/19651\n    if (domEventName === 'touchstart' || domEventName === 'touchmove' || domEventName === 'wheel') {\n      isPassiveListener = true;\n    }\n  }\n\n  targetContainer =  targetContainer;\n  var unsubscribeListener; // When legacyFBSupport is enabled, it's for when we\n\n\n  if (isCapturePhaseListener) {\n    if (isPassiveListener !== undefined) {\n      unsubscribeListener = addEventCaptureListenerWithPassiveFlag(targetContainer, domEventName, listener, isPassiveListener);\n    } else {\n      unsubscribeListener = addEventCaptureListener(targetContainer, domEventName, listener);\n    }\n  } else {\n    if (isPassiveListener !== undefined) {\n      unsubscribeListener = addEventBubbleListenerWithPassiveFlag(targetContainer, domEventName, listener, isPassiveListener);\n    } else {\n      unsubscribeListener = addEventBubbleListener(targetContainer, domEventName, listener);\n    }\n  }\n}\n\nfunction isMatchingRootContainer(grandContainer, targetContainer) {\n  return grandContainer === targetContainer || grandContainer.nodeType === COMMENT_NODE && grandContainer.parentNode === targetContainer;\n}\n\nfunction dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, targetInst, targetContainer) {\n  var ancestorInst = targetInst;\n\n  if ((eventSystemFlags & IS_EVENT_HANDLE_NON_MANAGED_NODE) === 0 && (eventSystemFlags & IS_NON_DELEGATED) === 0) {\n    var targetContainerNode = targetContainer; // If we are using the legacy FB support flag, we\n\n    if (targetInst !== null) {\n      // The below logic attempts to work out if we need to change\n      // the target fiber to a different ancestor. We had similar logic\n      // in the legacy event system, except the big difference between\n      // systems is that the modern event system now has an event listener\n      // attached to each React Root and React Portal Root. Together,\n      // the DOM nodes representing these roots are the \"rootContainer\".\n      // To figure out which ancestor instance we should use, we traverse\n      // up the fiber tree from the target instance and attempt to find\n      // root boundaries that match that of our current \"rootContainer\".\n      // If we find that \"rootContainer\", we find the parent fiber\n      // sub-tree for that root and make that our ancestor instance.\n      var node = targetInst;\n\n      mainLoop: while (true) {\n        if (node === null) {\n          return;\n        }\n\n        var nodeTag = node.tag;\n\n        if (nodeTag === HostRoot || nodeTag === HostPortal) {\n          var container = node.stateNode.containerInfo;\n\n          if (isMatchingRootContainer(container, targetContainerNode)) {\n            break;\n          }\n\n          if (nodeTag === HostPortal) {\n            // The target is a portal, but it's not the rootContainer we're looking for.\n            // Normally portals handle their own events all the way down to the root.\n            // So we should be able to stop now. However, we don't know if this portal\n            // was part of *our* root.\n            var grandNode = node.return;\n\n            while (grandNode !== null) {\n              var grandTag = grandNode.tag;\n\n              if (grandTag === HostRoot || grandTag === HostPortal) {\n                var grandContainer = grandNode.stateNode.containerInfo;\n\n                if (isMatchingRootContainer(grandContainer, targetContainerNode)) {\n                  // This is the rootContainer we're looking for and we found it as\n                  // a parent of the Portal. That means we can ignore it because the\n                  // Portal will bubble through to us.\n                  return;\n                }\n              }\n\n              grandNode = grandNode.return;\n            }\n          } // Now we need to find it's corresponding host fiber in the other\n          // tree. To do this we can use getClosestInstanceFromNode, but we\n          // need to validate that the fiber is a host instance, otherwise\n          // we need to traverse up through the DOM till we find the correct\n          // node that is from the other tree.\n\n\n          while (container !== null) {\n            var parentNode = getClosestInstanceFromNode(container);\n\n            if (parentNode === null) {\n              return;\n            }\n\n            var parentTag = parentNode.tag;\n\n            if (parentTag === HostComponent || parentTag === HostText) {\n              node = ancestorInst = parentNode;\n              continue mainLoop;\n            }\n\n            container = container.parentNode;\n          }\n        }\n\n        node = node.return;\n      }\n    }\n  }\n\n  batchedUpdates(function () {\n    return dispatchEventsForPlugins(domEventName, eventSystemFlags, nativeEvent, ancestorInst);\n  });\n}\n\nfunction createDispatchListener(instance, listener, currentTarget) {\n  return {\n    instance: instance,\n    listener: listener,\n    currentTarget: currentTarget\n  };\n}\n\nfunction accumulateSinglePhaseListeners(targetFiber, reactName, nativeEventType, inCapturePhase, accumulateTargetOnly, nativeEvent) {\n  var captureName = reactName !== null ? reactName + 'Capture' : null;\n  var reactEventName = inCapturePhase ? captureName : reactName;\n  var listeners = [];\n  var instance = targetFiber;\n  var lastHostComponent = null; // Accumulate all instances and listeners via the target -> root path.\n\n  while (instance !== null) {\n    var _instance2 = instance,\n        stateNode = _instance2.stateNode,\n        tag = _instance2.tag; // Handle listeners that are on HostComponents (i.e. <div>)\n\n    if (tag === HostComponent && stateNode !== null) {\n      lastHostComponent = stateNode; // createEventHandle listeners\n\n\n      if (reactEventName !== null) {\n        var listener = getListener(instance, reactEventName);\n\n        if (listener != null) {\n          listeners.push(createDispatchListener(instance, listener, lastHostComponent));\n        }\n      }\n    } // If we are only accumulating events for the target, then we don't\n    // continue to propagate through the React fiber tree to find other\n    // listeners.\n\n\n    if (accumulateTargetOnly) {\n      break;\n    } // If we are processing the onBeforeBlur event, then we need to take\n\n    instance = instance.return;\n  }\n\n  return listeners;\n} // We should only use this function for:\n// - BeforeInputEventPlugin\n// - ChangeEventPlugin\n// - SelectEventPlugin\n// This is because we only process these plugins\n// in the bubble phase, so we need to accumulate two\n// phase event listeners (via emulation).\n\nfunction accumulateTwoPhaseListeners(targetFiber, reactName) {\n  var captureName = reactName + 'Capture';\n  var listeners = [];\n  var instance = targetFiber; // Accumulate all instances and listeners via the target -> root path.\n\n  while (instance !== null) {\n    var _instance3 = instance,\n        stateNode = _instance3.stateNode,\n        tag = _instance3.tag; // Handle listeners that are on HostComponents (i.e. <div>)\n\n    if (tag === HostComponent && stateNode !== null) {\n      var currentTarget = stateNode;\n      var captureListener = getListener(instance, captureName);\n\n      if (captureListener != null) {\n        listeners.unshift(createDispatchListener(instance, captureListener, currentTarget));\n      }\n\n      var bubbleListener = getListener(instance, reactName);\n\n      if (bubbleListener != null) {\n        listeners.push(createDispatchListener(instance, bubbleListener, currentTarget));\n      }\n    }\n\n    instance = instance.return;\n  }\n\n  return listeners;\n}\n\nfunction getParent(inst) {\n  if (inst === null) {\n    return null;\n  }\n\n  do {\n    inst = inst.return; // TODO: If this is a HostRoot we might want to bail out.\n    // That is depending on if we want nested subtrees (layers) to bubble\n    // events to their parent. We could also go through parentNode on the\n    // host node but that wouldn't work for React Native and doesn't let us\n    // do the portal feature.\n  } while (inst && inst.tag !== HostComponent);\n\n  if (inst) {\n    return inst;\n  }\n\n  return null;\n}\n/**\n * Return the lowest common ancestor of A and B, or null if they are in\n * different trees.\n */\n\n\nfunction getLowestCommonAncestor(instA, instB) {\n  var nodeA = instA;\n  var nodeB = instB;\n  var depthA = 0;\n\n  for (var tempA = nodeA; tempA; tempA = getParent(tempA)) {\n    depthA++;\n  }\n\n  var depthB = 0;\n\n  for (var tempB = nodeB; tempB; tempB = getParent(tempB)) {\n    depthB++;\n  } // If A is deeper, crawl up.\n\n\n  while (depthA - depthB > 0) {\n    nodeA = getParent(nodeA);\n    depthA--;\n  } // If B is deeper, crawl up.\n\n\n  while (depthB - depthA > 0) {\n    nodeB = getParent(nodeB);\n    depthB--;\n  } // Walk in lockstep until we find a match.\n\n\n  var depth = depthA;\n\n  while (depth--) {\n    if (nodeA === nodeB || nodeB !== null && nodeA === nodeB.alternate) {\n      return nodeA;\n    }\n\n    nodeA = getParent(nodeA);\n    nodeB = getParent(nodeB);\n  }\n\n  return null;\n}\n\nfunction accumulateEnterLeaveListenersForEvent(dispatchQueue, event, target, common, inCapturePhase) {\n  var registrationName = event._reactName;\n  var listeners = [];\n  var instance = target;\n\n  while (instance !== null) {\n    if (instance === common) {\n      break;\n    }\n\n    var _instance4 = instance,\n        alternate = _instance4.alternate,\n        stateNode = _instance4.stateNode,\n        tag = _instance4.tag;\n\n    if (alternate !== null && alternate === common) {\n      break;\n    }\n\n    if (tag === HostComponent && stateNode !== null) {\n      var currentTarget = stateNode;\n\n      if (inCapturePhase) {\n        var captureListener = getListener(instance, registrationName);\n\n        if (captureListener != null) {\n          listeners.unshift(createDispatchListener(instance, captureListener, currentTarget));\n        }\n      } else if (!inCapturePhase) {\n        var bubbleListener = getListener(instance, registrationName);\n\n        if (bubbleListener != null) {\n          listeners.push(createDispatchListener(instance, bubbleListener, currentTarget));\n        }\n      }\n    }\n\n    instance = instance.return;\n  }\n\n  if (listeners.length !== 0) {\n    dispatchQueue.push({\n      event: event,\n      listeners: listeners\n    });\n  }\n} // We should only use this function for:\n// - EnterLeaveEventPlugin\n// This is because we only process this plugin\n// in the bubble phase, so we need to accumulate two\n// phase event listeners.\n\n\nfunction accumulateEnterLeaveTwoPhaseListeners(dispatchQueue, leaveEvent, enterEvent, from, to) {\n  var common = from && to ? getLowestCommonAncestor(from, to) : null;\n\n  if (from !== null) {\n    accumulateEnterLeaveListenersForEvent(dispatchQueue, leaveEvent, from, common, false);\n  }\n\n  if (to !== null && enterEvent !== null) {\n    accumulateEnterLeaveListenersForEvent(dispatchQueue, enterEvent, to, common, true);\n  }\n}\nfunction getListenerSetKey(domEventName, capture) {\n  return domEventName + \"__\" + (capture ? 'capture' : 'bubble');\n}\n\nvar didWarnInvalidHydration = false;\nvar DANGEROUSLY_SET_INNER_HTML = 'dangerouslySetInnerHTML';\nvar SUPPRESS_CONTENT_EDITABLE_WARNING = 'suppressContentEditableWarning';\nvar SUPPRESS_HYDRATION_WARNING = 'suppressHydrationWarning';\nvar AUTOFOCUS = 'autoFocus';\nvar CHILDREN = 'children';\nvar STYLE = 'style';\nvar HTML$1 = '__html';\nvar warnedUnknownTags;\nvar validatePropertiesInDevelopment;\nvar warnForPropDifference;\nvar warnForExtraAttributes;\nvar warnForInvalidEventListener;\nvar canDiffStyleForHydrationWarning;\nvar normalizeHTML;\n\n{\n  warnedUnknownTags = {\n    // There are working polyfills for <dialog>. Let people use it.\n    dialog: true,\n    // Electron ships a custom <webview> tag to display external web content in\n    // an isolated frame and process.\n    // This tag is not present in non Electron environments such as JSDom which\n    // is often used for testing purposes.\n    // @see https://electronjs.org/docs/api/webview-tag\n    webview: true\n  };\n\n  validatePropertiesInDevelopment = function (type, props) {\n    validateProperties(type, props);\n    validateProperties$1(type, props);\n    validateProperties$2(type, props, {\n      registrationNameDependencies: registrationNameDependencies,\n      possibleRegistrationNames: possibleRegistrationNames\n    });\n  }; // IE 11 parses & normalizes the style attribute as opposed to other\n  // browsers. It adds spaces and sorts the properties in some\n  // non-alphabetical order. Handling that would require sorting CSS\n  // properties in the client & server versions or applying\n  // `expectedStyle` to a temporary DOM node to read its `style` attribute\n  // normalized. Since it only affects IE, we're skipping style warnings\n  // in that browser completely in favor of doing all that work.\n  // See https://github.com/facebook/react/issues/11807\n\n\n  canDiffStyleForHydrationWarning = canUseDOM && !document.documentMode;\n\n  warnForPropDifference = function (propName, serverValue, clientValue) {\n    if (didWarnInvalidHydration) {\n      return;\n    }\n\n    var normalizedClientValue = normalizeMarkupForTextOrAttribute(clientValue);\n    var normalizedServerValue = normalizeMarkupForTextOrAttribute(serverValue);\n\n    if (normalizedServerValue === normalizedClientValue) {\n      return;\n    }\n\n    didWarnInvalidHydration = true;\n\n    error('Prop `%s` did not match. Server: %s Client: %s', propName, JSON.stringify(normalizedServerValue), JSON.stringify(normalizedClientValue));\n  };\n\n  warnForExtraAttributes = function (attributeNames) {\n    if (didWarnInvalidHydration) {\n      return;\n    }\n\n    didWarnInvalidHydration = true;\n    var names = [];\n    attributeNames.forEach(function (name) {\n      names.push(name);\n    });\n\n    error('Extra attributes from the server: %s', names);\n  };\n\n  warnForInvalidEventListener = function (registrationName, listener) {\n    if (listener === false) {\n      error('Expected `%s` listener to be a function, instead got `false`.\\n\\n' + 'If you used to conditionally omit it with %s={condition && value}, ' + 'pass %s={condition ? value : undefined} instead.', registrationName, registrationName, registrationName);\n    } else {\n      error('Expected `%s` listener to be a function, instead got a value of `%s` type.', registrationName, typeof listener);\n    }\n  }; // Parse the HTML and read it back to normalize the HTML string so that it\n  // can be used for comparison.\n\n\n  normalizeHTML = function (parent, html) {\n    // We could have created a separate document here to avoid\n    // re-initializing custom elements if they exist. But this breaks\n    // how <noscript> is being handled. So we use the same document.\n    // See the discussion in https://github.com/facebook/react/pull/11157.\n    var testElement = parent.namespaceURI === HTML_NAMESPACE ? parent.ownerDocument.createElement(parent.tagName) : parent.ownerDocument.createElementNS(parent.namespaceURI, parent.tagName);\n    testElement.innerHTML = html;\n    return testElement.innerHTML;\n  };\n} // HTML parsing normalizes CR and CRLF to LF.\n// It also can turn \\u0000 into \\uFFFD inside attributes.\n// https://www.w3.org/TR/html5/single-page.html#preprocessing-the-input-stream\n// If we have a mismatch, it might be caused by that.\n// We will still patch up in this case but not fire the warning.\n\n\nvar NORMALIZE_NEWLINES_REGEX = /\\r\\n?/g;\nvar NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\\u0000|\\uFFFD/g;\n\nfunction normalizeMarkupForTextOrAttribute(markup) {\n  {\n    checkHtmlStringCoercion(markup);\n  }\n\n  var markupString = typeof markup === 'string' ? markup : '' + markup;\n  return markupString.replace(NORMALIZE_NEWLINES_REGEX, '\\n').replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, '');\n}\n\nfunction checkForUnmatchedText(serverText, clientText, isConcurrentMode, shouldWarnDev) {\n  var normalizedClientText = normalizeMarkupForTextOrAttribute(clientText);\n  var normalizedServerText = normalizeMarkupForTextOrAttribute(serverText);\n\n  if (normalizedServerText === normalizedClientText) {\n    return;\n  }\n\n  if (shouldWarnDev) {\n    {\n      if (!didWarnInvalidHydration) {\n        didWarnInvalidHydration = true;\n\n        error('Text content did not match. Server: \"%s\" Client: \"%s\"', normalizedServerText, normalizedClientText);\n      }\n    }\n  }\n\n  if (isConcurrentMode && enableClientRenderFallbackOnTextMismatch) {\n    // In concurrent roots, we throw when there's a text mismatch and revert to\n    // client rendering, up to the nearest Suspense boundary.\n    throw new Error('Text content does not match server-rendered HTML.');\n  }\n}\n\nfunction getOwnerDocumentFromRootContainer(rootContainerElement) {\n  return rootContainerElement.nodeType === DOCUMENT_NODE ? rootContainerElement : rootContainerElement.ownerDocument;\n}\n\nfunction noop() {}\n\nfunction trapClickOnNonInteractiveElement(node) {\n  // Mobile Safari does not fire properly bubble click events on\n  // non-interactive elements, which means delegated click listeners do not\n  // fire. The workaround for this bug involves attaching an empty click\n  // listener on the target node.\n  // https://www.quirksmode.org/blog/archives/2010/09/click_event_del.html\n  // Just set it using the onclick property so that we don't have to manage any\n  // bookkeeping for it. Not sure if we need to clear it when the listener is\n  // removed.\n  // TODO: Only do this for the relevant Safaris maybe?\n  node.onclick = noop;\n}\n\nfunction setInitialDOMProperties(tag, domElement, rootContainerElement, nextProps, isCustomComponentTag) {\n  for (var propKey in nextProps) {\n    if (!nextProps.hasOwnProperty(propKey)) {\n      continue;\n    }\n\n    var nextProp = nextProps[propKey];\n\n    if (propKey === STYLE) {\n      {\n        if (nextProp) {\n          // Freeze the next style object so that we can assume it won't be\n          // mutated. We have already warned for this in the past.\n          Object.freeze(nextProp);\n        }\n      } // Relies on `updateStylesByID` not mutating `styleUpdates`.\n\n\n      setValueForStyles(domElement, nextProp);\n    } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n      var nextHtml = nextProp ? nextProp[HTML$1] : undefined;\n\n      if (nextHtml != null) {\n        setInnerHTML(domElement, nextHtml);\n      }\n    } else if (propKey === CHILDREN) {\n      if (typeof nextProp === 'string') {\n        // Avoid setting initial textContent when the text is empty. In IE11 setting\n        // textContent on a <textarea> will cause the placeholder to not\n        // show within the <textarea> until it has been focused and blurred again.\n        // https://github.com/facebook/react/issues/6731#issuecomment-254874553\n        var canSetTextContent = tag !== 'textarea' || nextProp !== '';\n\n        if (canSetTextContent) {\n          setTextContent(domElement, nextProp);\n        }\n      } else if (typeof nextProp === 'number') {\n        setTextContent(domElement, '' + nextProp);\n      }\n    } else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING) ; else if (propKey === AUTOFOCUS) ; else if (registrationNameDependencies.hasOwnProperty(propKey)) {\n      if (nextProp != null) {\n        if ( typeof nextProp !== 'function') {\n          warnForInvalidEventListener(propKey, nextProp);\n        }\n\n        if (propKey === 'onScroll') {\n          listenToNonDelegatedEvent('scroll', domElement);\n        }\n      }\n    } else if (nextProp != null) {\n      setValueForProperty(domElement, propKey, nextProp, isCustomComponentTag);\n    }\n  }\n}\n\nfunction updateDOMProperties(domElement, updatePayload, wasCustomComponentTag, isCustomComponentTag) {\n  // TODO: Handle wasCustomComponentTag\n  for (var i = 0; i < updatePayload.length; i += 2) {\n    var propKey = updatePayload[i];\n    var propValue = updatePayload[i + 1];\n\n    if (propKey === STYLE) {\n      setValueForStyles(domElement, propValue);\n    } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n      setInnerHTML(domElement, propValue);\n    } else if (propKey === CHILDREN) {\n      setTextContent(domElement, propValue);\n    } else {\n      setValueForProperty(domElement, propKey, propValue, isCustomComponentTag);\n    }\n  }\n}\n\nfunction createElement(type, props, rootContainerElement, parentNamespace) {\n  var isCustomComponentTag; // We create tags in the namespace of their parent container, except HTML\n  // tags get no namespace.\n\n  var ownerDocument = getOwnerDocumentFromRootContainer(rootContainerElement);\n  var domElement;\n  var namespaceURI = parentNamespace;\n\n  if (namespaceURI === HTML_NAMESPACE) {\n    namespaceURI = getIntrinsicNamespace(type);\n  }\n\n  if (namespaceURI === HTML_NAMESPACE) {\n    {\n      isCustomComponentTag = isCustomComponent(type, props); // Should this check be gated by parent namespace? Not sure we want to\n      // allow <SVG> or <mATH>.\n\n      if (!isCustomComponentTag && type !== type.toLowerCase()) {\n        error('<%s /> is using incorrect casing. ' + 'Use PascalCase for React components, ' + 'or lowercase for HTML elements.', type);\n      }\n    }\n\n    if (type === 'script') {\n      // Create the script via .innerHTML so its \"parser-inserted\" flag is\n      // set to true and it does not execute\n      var div = ownerDocument.createElement('div');\n\n      div.innerHTML = '<script><' + '/script>'; // eslint-disable-line\n      // This is guaranteed to yield a script element.\n\n      var firstChild = div.firstChild;\n      domElement = div.removeChild(firstChild);\n    } else if (typeof props.is === 'string') {\n      // $FlowIssue `createElement` should be updated for Web Components\n      domElement = ownerDocument.createElement(type, {\n        is: props.is\n      });\n    } else {\n      // Separate else branch instead of using `props.is || undefined` above because of a Firefox bug.\n      // See discussion in https://github.com/facebook/react/pull/6896\n      // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240\n      domElement = ownerDocument.createElement(type); // Normally attributes are assigned in `setInitialDOMProperties`, however the `multiple` and `size`\n      // attributes on `select`s needs to be added before `option`s are inserted.\n      // This prevents:\n      // - a bug where the `select` does not scroll to the correct option because singular\n      //  `select` elements automatically pick the first item #13222\n      // - a bug where the `select` set the first item as selected despite the `size` attribute #14239\n      // See https://github.com/facebook/react/issues/13222\n      // and https://github.com/facebook/react/issues/14239\n\n      if (type === 'select') {\n        var node = domElement;\n\n        if (props.multiple) {\n          node.multiple = true;\n        } else if (props.size) {\n          // Setting a size greater than 1 causes a select to behave like `multiple=true`, where\n          // it is possible that no option is selected.\n          //\n          // This is only necessary when a select in \"single selection mode\".\n          node.size = props.size;\n        }\n      }\n    }\n  } else {\n    domElement = ownerDocument.createElementNS(namespaceURI, type);\n  }\n\n  {\n    if (namespaceURI === HTML_NAMESPACE) {\n      if (!isCustomComponentTag && Object.prototype.toString.call(domElement) === '[object HTMLUnknownElement]' && !hasOwnProperty.call(warnedUnknownTags, type)) {\n        warnedUnknownTags[type] = true;\n\n        error('The tag <%s> is unrecognized in this browser. ' + 'If you meant to render a React component, start its name with ' + 'an uppercase letter.', type);\n      }\n    }\n  }\n\n  return domElement;\n}\nfunction createTextNode(text, rootContainerElement) {\n  return getOwnerDocumentFromRootContainer(rootContainerElement).createTextNode(text);\n}\nfunction setInitialProperties(domElement, tag, rawProps, rootContainerElement) {\n  var isCustomComponentTag = isCustomComponent(tag, rawProps);\n\n  {\n    validatePropertiesInDevelopment(tag, rawProps);\n  } // TODO: Make sure that we check isMounted before firing any of these events.\n\n\n  var props;\n\n  switch (tag) {\n    case 'dialog':\n      listenToNonDelegatedEvent('cancel', domElement);\n      listenToNonDelegatedEvent('close', domElement);\n      props = rawProps;\n      break;\n\n    case 'iframe':\n    case 'object':\n    case 'embed':\n      // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the load event.\n      listenToNonDelegatedEvent('load', domElement);\n      props = rawProps;\n      break;\n\n    case 'video':\n    case 'audio':\n      // We listen to these events in case to ensure emulated bubble\n      // listeners still fire for all the media events.\n      for (var i = 0; i < mediaEventTypes.length; i++) {\n        listenToNonDelegatedEvent(mediaEventTypes[i], domElement);\n      }\n\n      props = rawProps;\n      break;\n\n    case 'source':\n      // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the error event.\n      listenToNonDelegatedEvent('error', domElement);\n      props = rawProps;\n      break;\n\n    case 'img':\n    case 'image':\n    case 'link':\n      // We listen to these events in case to ensure emulated bubble\n      // listeners still fire for error and load events.\n      listenToNonDelegatedEvent('error', domElement);\n      listenToNonDelegatedEvent('load', domElement);\n      props = rawProps;\n      break;\n\n    case 'details':\n      // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the toggle event.\n      listenToNonDelegatedEvent('toggle', domElement);\n      props = rawProps;\n      break;\n\n    case 'input':\n      initWrapperState(domElement, rawProps);\n      props = getHostProps(domElement, rawProps); // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the invalid event.\n\n      listenToNonDelegatedEvent('invalid', domElement);\n      break;\n\n    case 'option':\n      validateProps(domElement, rawProps);\n      props = rawProps;\n      break;\n\n    case 'select':\n      initWrapperState$1(domElement, rawProps);\n      props = getHostProps$1(domElement, rawProps); // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the invalid event.\n\n      listenToNonDelegatedEvent('invalid', domElement);\n      break;\n\n    case 'textarea':\n      initWrapperState$2(domElement, rawProps);\n      props = getHostProps$2(domElement, rawProps); // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the invalid event.\n\n      listenToNonDelegatedEvent('invalid', domElement);\n      break;\n\n    default:\n      props = rawProps;\n  }\n\n  assertValidProps(tag, props);\n  setInitialDOMProperties(tag, domElement, rootContainerElement, props, isCustomComponentTag);\n\n  switch (tag) {\n    case 'input':\n      // TODO: Make sure we check if this is still unmounted or do any clean\n      // up necessary since we never stop tracking anymore.\n      track(domElement);\n      postMountWrapper(domElement, rawProps, false);\n      break;\n\n    case 'textarea':\n      // TODO: Make sure we check if this is still unmounted or do any clean\n      // up necessary since we never stop tracking anymore.\n      track(domElement);\n      postMountWrapper$3(domElement);\n      break;\n\n    case 'option':\n      postMountWrapper$1(domElement, rawProps);\n      break;\n\n    case 'select':\n      postMountWrapper$2(domElement, rawProps);\n      break;\n\n    default:\n      if (typeof props.onClick === 'function') {\n        // TODO: This cast may not be sound for SVG, MathML or custom elements.\n        trapClickOnNonInteractiveElement(domElement);\n      }\n\n      break;\n  }\n} // Calculate the diff between the two objects.\n\nfunction diffProperties(domElement, tag, lastRawProps, nextRawProps, rootContainerElement) {\n  {\n    validatePropertiesInDevelopment(tag, nextRawProps);\n  }\n\n  var updatePayload = null;\n  var lastProps;\n  var nextProps;\n\n  switch (tag) {\n    case 'input':\n      lastProps = getHostProps(domElement, lastRawProps);\n      nextProps = getHostProps(domElement, nextRawProps);\n      updatePayload = [];\n      break;\n\n    case 'select':\n      lastProps = getHostProps$1(domElement, lastRawProps);\n      nextProps = getHostProps$1(domElement, nextRawProps);\n      updatePayload = [];\n      break;\n\n    case 'textarea':\n      lastProps = getHostProps$2(domElement, lastRawProps);\n      nextProps = getHostProps$2(domElement, nextRawProps);\n      updatePayload = [];\n      break;\n\n    default:\n      lastProps = lastRawProps;\n      nextProps = nextRawProps;\n\n      if (typeof lastProps.onClick !== 'function' && typeof nextProps.onClick === 'function') {\n        // TODO: This cast may not be sound for SVG, MathML or custom elements.\n        trapClickOnNonInteractiveElement(domElement);\n      }\n\n      break;\n  }\n\n  assertValidProps(tag, nextProps);\n  var propKey;\n  var styleName;\n  var styleUpdates = null;\n\n  for (propKey in lastProps) {\n    if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {\n      continue;\n    }\n\n    if (propKey === STYLE) {\n      var lastStyle = lastProps[propKey];\n\n      for (styleName in lastStyle) {\n        if (lastStyle.hasOwnProperty(styleName)) {\n          if (!styleUpdates) {\n            styleUpdates = {};\n          }\n\n          styleUpdates[styleName] = '';\n        }\n      }\n    } else if (propKey === DANGEROUSLY_SET_INNER_HTML || propKey === CHILDREN) ; else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING) ; else if (propKey === AUTOFOCUS) ; else if (registrationNameDependencies.hasOwnProperty(propKey)) {\n      // This is a special case. If any listener updates we need to ensure\n      // that the \"current\" fiber pointer gets updated so we need a commit\n      // to update this element.\n      if (!updatePayload) {\n        updatePayload = [];\n      }\n    } else {\n      // For all other deleted properties we add it to the queue. We use\n      // the allowed property list in the commit phase instead.\n      (updatePayload = updatePayload || []).push(propKey, null);\n    }\n  }\n\n  for (propKey in nextProps) {\n    var nextProp = nextProps[propKey];\n    var lastProp = lastProps != null ? lastProps[propKey] : undefined;\n\n    if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {\n      continue;\n    }\n\n    if (propKey === STYLE) {\n      {\n        if (nextProp) {\n          // Freeze the next style object so that we can assume it won't be\n          // mutated. We have already warned for this in the past.\n          Object.freeze(nextProp);\n        }\n      }\n\n      if (lastProp) {\n        // Unset styles on `lastProp` but not on `nextProp`.\n        for (styleName in lastProp) {\n          if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {\n            if (!styleUpdates) {\n              styleUpdates = {};\n            }\n\n            styleUpdates[styleName] = '';\n          }\n        } // Update styles that changed since `lastProp`.\n\n\n        for (styleName in nextProp) {\n          if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {\n            if (!styleUpdates) {\n              styleUpdates = {};\n            }\n\n            styleUpdates[styleName] = nextProp[styleName];\n          }\n        }\n      } else {\n        // Relies on `updateStylesByID` not mutating `styleUpdates`.\n        if (!styleUpdates) {\n          if (!updatePayload) {\n            updatePayload = [];\n          }\n\n          updatePayload.push(propKey, styleUpdates);\n        }\n\n        styleUpdates = nextProp;\n      }\n    } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n      var nextHtml = nextProp ? nextProp[HTML$1] : undefined;\n      var lastHtml = lastProp ? lastProp[HTML$1] : undefined;\n\n      if (nextHtml != null) {\n        if (lastHtml !== nextHtml) {\n          (updatePayload = updatePayload || []).push(propKey, nextHtml);\n        }\n      }\n    } else if (propKey === CHILDREN) {\n      if (typeof nextProp === 'string' || typeof nextProp === 'number') {\n        (updatePayload = updatePayload || []).push(propKey, '' + nextProp);\n      }\n    } else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING) ; else if (registrationNameDependencies.hasOwnProperty(propKey)) {\n      if (nextProp != null) {\n        // We eagerly listen to this even though we haven't committed yet.\n        if ( typeof nextProp !== 'function') {\n          warnForInvalidEventListener(propKey, nextProp);\n        }\n\n        if (propKey === 'onScroll') {\n          listenToNonDelegatedEvent('scroll', domElement);\n        }\n      }\n\n      if (!updatePayload && lastProp !== nextProp) {\n        // This is a special case. If any listener updates we need to ensure\n        // that the \"current\" props pointer gets updated so we need a commit\n        // to update this element.\n        updatePayload = [];\n      }\n    } else {\n      // For any other property we always add it to the queue and then we\n      // filter it out using the allowed property list during the commit.\n      (updatePayload = updatePayload || []).push(propKey, nextProp);\n    }\n  }\n\n  if (styleUpdates) {\n    {\n      validateShorthandPropertyCollisionInDev(styleUpdates, nextProps[STYLE]);\n    }\n\n    (updatePayload = updatePayload || []).push(STYLE, styleUpdates);\n  }\n\n  return updatePayload;\n} // Apply the diff.\n\nfunction updateProperties(domElement, updatePayload, tag, lastRawProps, nextRawProps) {\n  // Update checked *before* name.\n  // In the middle of an update, it is possible to have multiple checked.\n  // When a checked radio tries to change name, browser makes another radio's checked false.\n  if (tag === 'input' && nextRawProps.type === 'radio' && nextRawProps.name != null) {\n    updateChecked(domElement, nextRawProps);\n  }\n\n  var wasCustomComponentTag = isCustomComponent(tag, lastRawProps);\n  var isCustomComponentTag = isCustomComponent(tag, nextRawProps); // Apply the diff.\n\n  updateDOMProperties(domElement, updatePayload, wasCustomComponentTag, isCustomComponentTag); // TODO: Ensure that an update gets scheduled if any of the special props\n  // changed.\n\n  switch (tag) {\n    case 'input':\n      // Update the wrapper around inputs *after* updating props. This has to\n      // happen after `updateDOMProperties`. Otherwise HTML5 input validations\n      // raise warnings and prevent the new value from being assigned.\n      updateWrapper(domElement, nextRawProps);\n      break;\n\n    case 'textarea':\n      updateWrapper$1(domElement, nextRawProps);\n      break;\n\n    case 'select':\n      // <select> value update needs to occur after <option> children\n      // reconciliation\n      postUpdateWrapper(domElement, nextRawProps);\n      break;\n  }\n}\n\nfunction getPossibleStandardName(propName) {\n  {\n    var lowerCasedName = propName.toLowerCase();\n\n    if (!possibleStandardNames.hasOwnProperty(lowerCasedName)) {\n      return null;\n    }\n\n    return possibleStandardNames[lowerCasedName] || null;\n  }\n}\n\nfunction diffHydratedProperties(domElement, tag, rawProps, parentNamespace, rootContainerElement, isConcurrentMode, shouldWarnDev) {\n  var isCustomComponentTag;\n  var extraAttributeNames;\n\n  {\n    isCustomComponentTag = isCustomComponent(tag, rawProps);\n    validatePropertiesInDevelopment(tag, rawProps);\n  } // TODO: Make sure that we check isMounted before firing any of these events.\n\n\n  switch (tag) {\n    case 'dialog':\n      listenToNonDelegatedEvent('cancel', domElement);\n      listenToNonDelegatedEvent('close', domElement);\n      break;\n\n    case 'iframe':\n    case 'object':\n    case 'embed':\n      // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the load event.\n      listenToNonDelegatedEvent('load', domElement);\n      break;\n\n    case 'video':\n    case 'audio':\n      // We listen to these events in case to ensure emulated bubble\n      // listeners still fire for all the media events.\n      for (var i = 0; i < mediaEventTypes.length; i++) {\n        listenToNonDelegatedEvent(mediaEventTypes[i], domElement);\n      }\n\n      break;\n\n    case 'source':\n      // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the error event.\n      listenToNonDelegatedEvent('error', domElement);\n      break;\n\n    case 'img':\n    case 'image':\n    case 'link':\n      // We listen to these events in case to ensure emulated bubble\n      // listeners still fire for error and load events.\n      listenToNonDelegatedEvent('error', domElement);\n      listenToNonDelegatedEvent('load', domElement);\n      break;\n\n    case 'details':\n      // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the toggle event.\n      listenToNonDelegatedEvent('toggle', domElement);\n      break;\n\n    case 'input':\n      initWrapperState(domElement, rawProps); // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the invalid event.\n\n      listenToNonDelegatedEvent('invalid', domElement);\n      break;\n\n    case 'option':\n      validateProps(domElement, rawProps);\n      break;\n\n    case 'select':\n      initWrapperState$1(domElement, rawProps); // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the invalid event.\n\n      listenToNonDelegatedEvent('invalid', domElement);\n      break;\n\n    case 'textarea':\n      initWrapperState$2(domElement, rawProps); // We listen to this event in case to ensure emulated bubble\n      // listeners still fire for the invalid event.\n\n      listenToNonDelegatedEvent('invalid', domElement);\n      break;\n  }\n\n  assertValidProps(tag, rawProps);\n\n  {\n    extraAttributeNames = new Set();\n    var attributes = domElement.attributes;\n\n    for (var _i = 0; _i < attributes.length; _i++) {\n      var name = attributes[_i].name.toLowerCase();\n\n      switch (name) {\n        // Controlled attributes are not validated\n        // TODO: Only ignore them on controlled tags.\n        case 'value':\n          break;\n\n        case 'checked':\n          break;\n\n        case 'selected':\n          break;\n\n        default:\n          // Intentionally use the original name.\n          // See discussion in https://github.com/facebook/react/pull/10676.\n          extraAttributeNames.add(attributes[_i].name);\n      }\n    }\n  }\n\n  var updatePayload = null;\n\n  for (var propKey in rawProps) {\n    if (!rawProps.hasOwnProperty(propKey)) {\n      continue;\n    }\n\n    var nextProp = rawProps[propKey];\n\n    if (propKey === CHILDREN) {\n      // For text content children we compare against textContent. This\n      // might match additional HTML that is hidden when we read it using\n      // textContent. E.g. \"foo\" will match \"f<span>oo</span>\" but that still\n      // satisfies our requirement. Our requirement is not to produce perfect\n      // HTML and attributes. Ideally we should preserve structure but it's\n      // ok not to if the visible content is still enough to indicate what\n      // even listeners these nodes might be wired up to.\n      // TODO: Warn if there is more than a single textNode as a child.\n      // TODO: Should we use domElement.firstChild.nodeValue to compare?\n      if (typeof nextProp === 'string') {\n        if (domElement.textContent !== nextProp) {\n          if (rawProps[SUPPRESS_HYDRATION_WARNING] !== true) {\n            checkForUnmatchedText(domElement.textContent, nextProp, isConcurrentMode, shouldWarnDev);\n          }\n\n          updatePayload = [CHILDREN, nextProp];\n        }\n      } else if (typeof nextProp === 'number') {\n        if (domElement.textContent !== '' + nextProp) {\n          if (rawProps[SUPPRESS_HYDRATION_WARNING] !== true) {\n            checkForUnmatchedText(domElement.textContent, nextProp, isConcurrentMode, shouldWarnDev);\n          }\n\n          updatePayload = [CHILDREN, '' + nextProp];\n        }\n      }\n    } else if (registrationNameDependencies.hasOwnProperty(propKey)) {\n      if (nextProp != null) {\n        if ( typeof nextProp !== 'function') {\n          warnForInvalidEventListener(propKey, nextProp);\n        }\n\n        if (propKey === 'onScroll') {\n          listenToNonDelegatedEvent('scroll', domElement);\n        }\n      }\n    } else if (shouldWarnDev && true && // Convince Flow we've calculated it (it's DEV-only in this method.)\n    typeof isCustomComponentTag === 'boolean') {\n      // Validate that the properties correspond to their expected values.\n      var serverValue = void 0;\n      var propertyInfo = isCustomComponentTag && enableCustomElementPropertySupport ? null : getPropertyInfo(propKey);\n\n      if (rawProps[SUPPRESS_HYDRATION_WARNING] === true) ; else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING || // Controlled attributes are not validated\n      // TODO: Only ignore them on controlled tags.\n      propKey === 'value' || propKey === 'checked' || propKey === 'selected') ; else if (propKey === DANGEROUSLY_SET_INNER_HTML) {\n        var serverHTML = domElement.innerHTML;\n        var nextHtml = nextProp ? nextProp[HTML$1] : undefined;\n\n        if (nextHtml != null) {\n          var expectedHTML = normalizeHTML(domElement, nextHtml);\n\n          if (expectedHTML !== serverHTML) {\n            warnForPropDifference(propKey, serverHTML, expectedHTML);\n          }\n        }\n      } else if (propKey === STYLE) {\n        // $FlowFixMe - Should be inferred as not undefined.\n        extraAttributeNames.delete(propKey);\n\n        if (canDiffStyleForHydrationWarning) {\n          var expectedStyle = createDangerousStringForStyles(nextProp);\n          serverValue = domElement.getAttribute('style');\n\n          if (expectedStyle !== serverValue) {\n            warnForPropDifference(propKey, serverValue, expectedStyle);\n          }\n        }\n      } else if (isCustomComponentTag && !enableCustomElementPropertySupport) {\n        // $FlowFixMe - Should be inferred as not undefined.\n        extraAttributeNames.delete(propKey.toLowerCase());\n        serverValue = getValueForAttribute(domElement, propKey, nextProp);\n\n        if (nextProp !== serverValue) {\n          warnForPropDifference(propKey, serverValue, nextProp);\n        }\n      } else if (!shouldIgnoreAttribute(propKey, propertyInfo, isCustomComponentTag) && !shouldRemoveAttribute(propKey, nextProp, propertyInfo, isCustomComponentTag)) {\n        var isMismatchDueToBadCasing = false;\n\n        if (propertyInfo !== null) {\n          // $FlowFixMe - Should be inferred as not undefined.\n          extraAttributeNames.delete(propertyInfo.attributeName);\n          serverValue = getValueForProperty(domElement, propKey, nextProp, propertyInfo);\n        } else {\n          var ownNamespace = parentNamespace;\n\n          if (ownNamespace === HTML_NAMESPACE) {\n            ownNamespace = getIntrinsicNamespace(tag);\n          }\n\n          if (ownNamespace === HTML_NAMESPACE) {\n            // $FlowFixMe - Should be inferred as not undefined.\n            extraAttributeNames.delete(propKey.toLowerCase());\n          } else {\n            var standardName = getPossibleStandardName(propKey);\n\n            if (standardName !== null && standardName !== propKey) {\n              // If an SVG prop is supplied with bad casing, it will\n              // be successfully parsed from HTML, but will produce a mismatch\n              // (and would be incorrectly rendered on the client).\n              // However, we already warn about bad casing elsewhere.\n              // So we'll skip the misleading extra mismatch warning in this case.\n              isMismatchDueToBadCasing = true; // $FlowFixMe - Should be inferred as not undefined.\n\n              extraAttributeNames.delete(standardName);\n            } // $FlowFixMe - Should be inferred as not undefined.\n\n\n            extraAttributeNames.delete(propKey);\n          }\n\n          serverValue = getValueForAttribute(domElement, propKey, nextProp);\n        }\n\n        var dontWarnCustomElement = enableCustomElementPropertySupport  ;\n\n        if (!dontWarnCustomElement && nextProp !== serverValue && !isMismatchDueToBadCasing) {\n          warnForPropDifference(propKey, serverValue, nextProp);\n        }\n      }\n    }\n  }\n\n  {\n    if (shouldWarnDev) {\n      if ( // $FlowFixMe - Should be inferred as not undefined.\n      extraAttributeNames.size > 0 && rawProps[SUPPRESS_HYDRATION_WARNING] !== true) {\n        // $FlowFixMe - Should be inferred as not undefined.\n        warnForExtraAttributes(extraAttributeNames);\n      }\n    }\n  }\n\n  switch (tag) {\n    case 'input':\n      // TODO: Make sure we check if this is still unmounted or do any clean\n      // up necessary since we never stop tracking anymore.\n      track(domElement);\n      postMountWrapper(domElement, rawProps, true);\n      break;\n\n    case 'textarea':\n      // TODO: Make sure we check if this is still unmounted or do any clean\n      // up necessary since we never stop tracking anymore.\n      track(domElement);\n      postMountWrapper$3(domElement);\n      break;\n\n    case 'select':\n    case 'option':\n      // For input and textarea we current always set the value property at\n      // post mount to force it to diverge from attributes. However, for\n      // option and select we don't quite do the same thing and select\n      // is not resilient to the DOM state changing so we don't do that here.\n      // TODO: Consider not doing this for input and textarea.\n      break;\n\n    default:\n      if (typeof rawProps.onClick === 'function') {\n        // TODO: This cast may not be sound for SVG, MathML or custom elements.\n        trapClickOnNonInteractiveElement(domElement);\n      }\n\n      break;\n  }\n\n  return updatePayload;\n}\nfunction diffHydratedText(textNode, text, isConcurrentMode) {\n  var isDifferent = textNode.nodeValue !== text;\n  return isDifferent;\n}\nfunction warnForDeletedHydratableElement(parentNode, child) {\n  {\n    if (didWarnInvalidHydration) {\n      return;\n    }\n\n    didWarnInvalidHydration = true;\n\n    error('Did not expect server HTML to contain a <%s> in <%s>.', child.nodeName.toLowerCase(), parentNode.nodeName.toLowerCase());\n  }\n}\nfunction warnForDeletedHydratableText(parentNode, child) {\n  {\n    if (didWarnInvalidHydration) {\n      return;\n    }\n\n    didWarnInvalidHydration = true;\n\n    error('Did not expect server HTML to contain the text node \"%s\" in <%s>.', child.nodeValue, parentNode.nodeName.toLowerCase());\n  }\n}\nfunction warnForInsertedHydratedElement(parentNode, tag, props) {\n  {\n    if (didWarnInvalidHydration) {\n      return;\n    }\n\n    didWarnInvalidHydration = true;\n\n    error('Expected server HTML to contain a matching <%s> in <%s>.', tag, parentNode.nodeName.toLowerCase());\n  }\n}\nfunction warnForInsertedHydratedText(parentNode, text) {\n  {\n    if (text === '') {\n      // We expect to insert empty text nodes since they're not represented in\n      // the HTML.\n      // TODO: Remove this special case if we can just avoid inserting empty\n      // text nodes.\n      return;\n    }\n\n    if (didWarnInvalidHydration) {\n      return;\n    }\n\n    didWarnInvalidHydration = true;\n\n    error('Expected server HTML to contain a matching text node for \"%s\" in <%s>.', text, parentNode.nodeName.toLowerCase());\n  }\n}\nfunction restoreControlledState$3(domElement, tag, props) {\n  switch (tag) {\n    case 'input':\n      restoreControlledState(domElement, props);\n      return;\n\n    case 'textarea':\n      restoreControlledState$2(domElement, props);\n      return;\n\n    case 'select':\n      restoreControlledState$1(domElement, props);\n      return;\n  }\n}\n\nvar validateDOMNesting = function () {};\n\nvar updatedAncestorInfo = function () {};\n\n{\n  // This validation code was written based on the HTML5 parsing spec:\n  // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n  //\n  // Note: this does not catch all invalid nesting, nor does it try to (as it's\n  // not clear what practical benefit doing so provides); instead, we warn only\n  // for cases where the parser will give a parse tree differing from what React\n  // intended. For example, <b><div></div></b> is invalid but we don't warn\n  // because it still parses correctly; we do warn for other cases like nested\n  // <p> tags where the beginning of the second element implicitly closes the\n  // first, causing a confusing mess.\n  // https://html.spec.whatwg.org/multipage/syntax.html#special\n  var specialTags = ['address', 'applet', 'area', 'article', 'aside', 'base', 'basefont', 'bgsound', 'blockquote', 'body', 'br', 'button', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dir', 'div', 'dl', 'dt', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'iframe', 'img', 'input', 'isindex', 'li', 'link', 'listing', 'main', 'marquee', 'menu', 'menuitem', 'meta', 'nav', 'noembed', 'noframes', 'noscript', 'object', 'ol', 'p', 'param', 'plaintext', 'pre', 'script', 'section', 'select', 'source', 'style', 'summary', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul', 'wbr', 'xmp']; // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope\n\n  var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template', // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point\n  // TODO: Distinguish by namespace here -- for <title>, including it here\n  // errs on the side of fewer warnings\n  'foreignObject', 'desc', 'title']; // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope\n\n  var buttonScopeTags = inScopeTags.concat(['button']); // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags\n\n  var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt'];\n  var emptyAncestorInfo = {\n    current: null,\n    formTag: null,\n    aTagInScope: null,\n    buttonTagInScope: null,\n    nobrTagInScope: null,\n    pTagInButtonScope: null,\n    listItemTagAutoclosing: null,\n    dlItemTagAutoclosing: null\n  };\n\n  updatedAncestorInfo = function (oldInfo, tag) {\n    var ancestorInfo = assign({}, oldInfo || emptyAncestorInfo);\n\n    var info = {\n      tag: tag\n    };\n\n    if (inScopeTags.indexOf(tag) !== -1) {\n      ancestorInfo.aTagInScope = null;\n      ancestorInfo.buttonTagInScope = null;\n      ancestorInfo.nobrTagInScope = null;\n    }\n\n    if (buttonScopeTags.indexOf(tag) !== -1) {\n      ancestorInfo.pTagInButtonScope = null;\n    } // See rules for 'li', 'dd', 'dt' start tags in\n    // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n\n\n    if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') {\n      ancestorInfo.listItemTagAutoclosing = null;\n      ancestorInfo.dlItemTagAutoclosing = null;\n    }\n\n    ancestorInfo.current = info;\n\n    if (tag === 'form') {\n      ancestorInfo.formTag = info;\n    }\n\n    if (tag === 'a') {\n      ancestorInfo.aTagInScope = info;\n    }\n\n    if (tag === 'button') {\n      ancestorInfo.buttonTagInScope = info;\n    }\n\n    if (tag === 'nobr') {\n      ancestorInfo.nobrTagInScope = info;\n    }\n\n    if (tag === 'p') {\n      ancestorInfo.pTagInButtonScope = info;\n    }\n\n    if (tag === 'li') {\n      ancestorInfo.listItemTagAutoclosing = info;\n    }\n\n    if (tag === 'dd' || tag === 'dt') {\n      ancestorInfo.dlItemTagAutoclosing = info;\n    }\n\n    return ancestorInfo;\n  };\n  /**\n   * Returns whether\n   */\n\n\n  var isTagValidWithParent = function (tag, parentTag) {\n    // First, let's check if we're in an unusual parsing mode...\n    switch (parentTag) {\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect\n      case 'select':\n        return tag === 'option' || tag === 'optgroup' || tag === '#text';\n\n      case 'optgroup':\n        return tag === 'option' || tag === '#text';\n      // Strictly speaking, seeing an <option> doesn't mean we're in a <select>\n      // but\n\n      case 'option':\n        return tag === '#text';\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption\n      // No special behavior since these rules fall back to \"in body\" mode for\n      // all except special table nodes which cause bad parsing behavior anyway.\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr\n\n      case 'tr':\n        return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template';\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody\n\n      case 'tbody':\n      case 'thead':\n      case 'tfoot':\n        return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template';\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup\n\n      case 'colgroup':\n        return tag === 'col' || tag === 'template';\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable\n\n      case 'table':\n        return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template';\n      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead\n\n      case 'head':\n        return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template';\n      // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element\n\n      case 'html':\n        return tag === 'head' || tag === 'body' || tag === 'frameset';\n\n      case 'frameset':\n        return tag === 'frame';\n\n      case '#document':\n        return tag === 'html';\n    } // Probably in the \"in body\" parsing mode, so we outlaw only tag combos\n    // where the parsing rules cause implicit opens or closes to be added.\n    // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody\n\n\n    switch (tag) {\n      case 'h1':\n      case 'h2':\n      case 'h3':\n      case 'h4':\n      case 'h5':\n      case 'h6':\n        return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6';\n\n      case 'rp':\n      case 'rt':\n        return impliedEndTags.indexOf(parentTag) === -1;\n\n      case 'body':\n      case 'caption':\n      case 'col':\n      case 'colgroup':\n      case 'frameset':\n      case 'frame':\n      case 'head':\n      case 'html':\n      case 'tbody':\n      case 'td':\n      case 'tfoot':\n      case 'th':\n      case 'thead':\n      case 'tr':\n        // These tags are only valid with a few parents that have special child\n        // parsing rules -- if we're down here, then none of those matched and\n        // so we allow it only if we don't know what the parent is, as all other\n        // cases are invalid.\n        return parentTag == null;\n    }\n\n    return true;\n  };\n  /**\n   * Returns whether\n   */\n\n\n  var findInvalidAncestorForTag = function (tag, ancestorInfo) {\n    switch (tag) {\n      case 'address':\n      case 'article':\n      case 'aside':\n      case 'blockquote':\n      case 'center':\n      case 'details':\n      case 'dialog':\n      case 'dir':\n      case 'div':\n      case 'dl':\n      case 'fieldset':\n      case 'figcaption':\n      case 'figure':\n      case 'footer':\n      case 'header':\n      case 'hgroup':\n      case 'main':\n      case 'menu':\n      case 'nav':\n      case 'ol':\n      case 'p':\n      case 'section':\n      case 'summary':\n      case 'ul':\n      case 'pre':\n      case 'listing':\n      case 'table':\n      case 'hr':\n      case 'xmp':\n      case 'h1':\n      case 'h2':\n      case 'h3':\n      case 'h4':\n      case 'h5':\n      case 'h6':\n        return ancestorInfo.pTagInButtonScope;\n\n      case 'form':\n        return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;\n\n      case 'li':\n        return ancestorInfo.listItemTagAutoclosing;\n\n      case 'dd':\n      case 'dt':\n        return ancestorInfo.dlItemTagAutoclosing;\n\n      case 'button':\n        return ancestorInfo.buttonTagInScope;\n\n      case 'a':\n        // Spec says something about storing a list of markers, but it sounds\n        // equivalent to this check.\n        return ancestorInfo.aTagInScope;\n\n      case 'nobr':\n        return ancestorInfo.nobrTagInScope;\n    }\n\n    return null;\n  };\n\n  var didWarn$1 = {};\n\n  validateDOMNesting = function (childTag, childText, ancestorInfo) {\n    ancestorInfo = ancestorInfo || emptyAncestorInfo;\n    var parentInfo = ancestorInfo.current;\n    var parentTag = parentInfo && parentInfo.tag;\n\n    if (childText != null) {\n      if (childTag != null) {\n        error('validateDOMNesting: when childText is passed, childTag should be null');\n      }\n\n      childTag = '#text';\n    }\n\n    var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;\n    var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);\n    var invalidParentOrAncestor = invalidParent || invalidAncestor;\n\n    if (!invalidParentOrAncestor) {\n      return;\n    }\n\n    var ancestorTag = invalidParentOrAncestor.tag;\n    var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag;\n\n    if (didWarn$1[warnKey]) {\n      return;\n    }\n\n    didWarn$1[warnKey] = true;\n    var tagDisplayName = childTag;\n    var whitespaceInfo = '';\n\n    if (childTag === '#text') {\n      if (/\\S/.test(childText)) {\n        tagDisplayName = 'Text nodes';\n      } else {\n        tagDisplayName = 'Whitespace text nodes';\n        whitespaceInfo = \" Make sure you don't have any extra whitespace between tags on \" + 'each line of your source code.';\n      }\n    } else {\n      tagDisplayName = '<' + childTag + '>';\n    }\n\n    if (invalidParent) {\n      var info = '';\n\n      if (ancestorTag === 'table' && childTag === 'tr') {\n        info += ' Add a <tbody>, <thead> or <tfoot> to your code to match the DOM tree generated by ' + 'the browser.';\n      }\n\n      error('validateDOMNesting(...): %s cannot appear as a child of <%s>.%s%s', tagDisplayName, ancestorTag, whitespaceInfo, info);\n    } else {\n      error('validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>.', tagDisplayName, ancestorTag);\n    }\n  };\n}\n\nvar SUPPRESS_HYDRATION_WARNING$1 = 'suppressHydrationWarning';\nvar SUSPENSE_START_DATA = '$';\nvar SUSPENSE_END_DATA = '/$';\nvar SUSPENSE_PENDING_START_DATA = '$?';\nvar SUSPENSE_FALLBACK_START_DATA = '$!';\nvar STYLE$1 = 'style';\nvar eventsEnabled = null;\nvar selectionInformation = null;\nfunction getRootHostContext(rootContainerInstance) {\n  var type;\n  var namespace;\n  var nodeType = rootContainerInstance.nodeType;\n\n  switch (nodeType) {\n    case DOCUMENT_NODE:\n    case DOCUMENT_FRAGMENT_NODE:\n      {\n        type = nodeType === DOCUMENT_NODE ? '#document' : '#fragment';\n        var root = rootContainerInstance.documentElement;\n        namespace = root ? root.namespaceURI : getChildNamespace(null, '');\n        break;\n      }\n\n    default:\n      {\n        var container = nodeType === COMMENT_NODE ? rootContainerInstance.parentNode : rootContainerInstance;\n        var ownNamespace = container.namespaceURI || null;\n        type = container.tagName;\n        namespace = getChildNamespace(ownNamespace, type);\n        break;\n      }\n  }\n\n  {\n    var validatedTag = type.toLowerCase();\n    var ancestorInfo = updatedAncestorInfo(null, validatedTag);\n    return {\n      namespace: namespace,\n      ancestorInfo: ancestorInfo\n    };\n  }\n}\nfunction getChildHostContext(parentHostContext, type, rootContainerInstance) {\n  {\n    var parentHostContextDev = parentHostContext;\n    var namespace = getChildNamespace(parentHostContextDev.namespace, type);\n    var ancestorInfo = updatedAncestorInfo(parentHostContextDev.ancestorInfo, type);\n    return {\n      namespace: namespace,\n      ancestorInfo: ancestorInfo\n    };\n  }\n}\nfunction getPublicInstance(instance) {\n  return instance;\n}\nfunction prepareForCommit(containerInfo) {\n  eventsEnabled = isEnabled();\n  selectionInformation = getSelectionInformation();\n  var activeInstance = null;\n\n  setEnabled(false);\n  return activeInstance;\n}\nfunction resetAfterCommit(containerInfo) {\n  restoreSelection(selectionInformation);\n  setEnabled(eventsEnabled);\n  eventsEnabled = null;\n  selectionInformation = null;\n}\nfunction createInstance(type, props, rootContainerInstance, hostContext, internalInstanceHandle) {\n  var parentNamespace;\n\n  {\n    // TODO: take namespace into account when validating.\n    var hostContextDev = hostContext;\n    validateDOMNesting(type, null, hostContextDev.ancestorInfo);\n\n    if (typeof props.children === 'string' || typeof props.children === 'number') {\n      var string = '' + props.children;\n      var ownAncestorInfo = updatedAncestorInfo(hostContextDev.ancestorInfo, type);\n      validateDOMNesting(null, string, ownAncestorInfo);\n    }\n\n    parentNamespace = hostContextDev.namespace;\n  }\n\n  var domElement = createElement(type, props, rootContainerInstance, parentNamespace);\n  precacheFiberNode(internalInstanceHandle, domElement);\n  updateFiberProps(domElement, props);\n  return domElement;\n}\nfunction appendInitialChild(parentInstance, child) {\n  parentInstance.appendChild(child);\n}\nfunction finalizeInitialChildren(domElement, type, props, rootContainerInstance, hostContext) {\n  setInitialProperties(domElement, type, props, rootContainerInstance);\n\n  switch (type) {\n    case 'button':\n    case 'input':\n    case 'select':\n    case 'textarea':\n      return !!props.autoFocus;\n\n    case 'img':\n      return true;\n\n    default:\n      return false;\n  }\n}\nfunction prepareUpdate(domElement, type, oldProps, newProps, rootContainerInstance, hostContext) {\n  {\n    var hostContextDev = hostContext;\n\n    if (typeof newProps.children !== typeof oldProps.children && (typeof newProps.children === 'string' || typeof newProps.children === 'number')) {\n      var string = '' + newProps.children;\n      var ownAncestorInfo = updatedAncestorInfo(hostContextDev.ancestorInfo, type);\n      validateDOMNesting(null, string, ownAncestorInfo);\n    }\n  }\n\n  return diffProperties(domElement, type, oldProps, newProps);\n}\nfunction shouldSetTextContent(type, props) {\n  return type === 'textarea' || type === 'noscript' || typeof props.children === 'string' || typeof props.children === 'number' || typeof props.dangerouslySetInnerHTML === 'object' && props.dangerouslySetInnerHTML !== null && props.dangerouslySetInnerHTML.__html != null;\n}\nfunction createTextInstance(text, rootContainerInstance, hostContext, internalInstanceHandle) {\n  {\n    var hostContextDev = hostContext;\n    validateDOMNesting(null, text, hostContextDev.ancestorInfo);\n  }\n\n  var textNode = createTextNode(text, rootContainerInstance);\n  precacheFiberNode(internalInstanceHandle, textNode);\n  return textNode;\n}\nfunction getCurrentEventPriority() {\n  var currentEvent = window.event;\n\n  if (currentEvent === undefined) {\n    return DefaultEventPriority;\n  }\n\n  return getEventPriority(currentEvent.type);\n}\n// if a component just imports ReactDOM (e.g. for findDOMNode).\n// Some environments might not have setTimeout or clearTimeout.\n\nvar scheduleTimeout = typeof setTimeout === 'function' ? setTimeout : undefined;\nvar cancelTimeout = typeof clearTimeout === 'function' ? clearTimeout : undefined;\nvar noTimeout = -1;\nvar localPromise = typeof Promise === 'function' ? Promise : undefined; // -------------------\nvar scheduleMicrotask = typeof queueMicrotask === 'function' ? queueMicrotask : typeof localPromise !== 'undefined' ? function (callback) {\n  return localPromise.resolve(null).then(callback).catch(handleErrorInNextTick);\n} : scheduleTimeout; // TODO: Determine the best fallback here.\n\nfunction handleErrorInNextTick(error) {\n  setTimeout(function () {\n    throw error;\n  });\n} // -------------------\nfunction commitMount(domElement, type, newProps, internalInstanceHandle) {\n  // Despite the naming that might imply otherwise, this method only\n  // fires if there is an `Update` effect scheduled during mounting.\n  // This happens if `finalizeInitialChildren` returns `true` (which it\n  // does to implement the `autoFocus` attribute on the client). But\n  // there are also other cases when this might happen (such as patching\n  // up text content during hydration mismatch). So we'll check this again.\n  switch (type) {\n    case 'button':\n    case 'input':\n    case 'select':\n    case 'textarea':\n      if (newProps.autoFocus) {\n        domElement.focus();\n      }\n\n      return;\n\n    case 'img':\n      {\n        if (newProps.src) {\n          domElement.src = newProps.src;\n        }\n\n        return;\n      }\n  }\n}\nfunction commitUpdate(domElement, updatePayload, type, oldProps, newProps, internalInstanceHandle) {\n  // Apply the diff to the DOM node.\n  updateProperties(domElement, updatePayload, type, oldProps, newProps); // Update the props handle so that we know which props are the ones with\n  // with current event handlers.\n\n  updateFiberProps(domElement, newProps);\n}\nfunction resetTextContent(domElement) {\n  setTextContent(domElement, '');\n}\nfunction commitTextUpdate(textInstance, oldText, newText) {\n  textInstance.nodeValue = newText;\n}\nfunction appendChild(parentInstance, child) {\n  parentInstance.appendChild(child);\n}\nfunction appendChildToContainer(container, child) {\n  var parentNode;\n\n  if (container.nodeType === COMMENT_NODE) {\n    parentNode = container.parentNode;\n    parentNode.insertBefore(child, container);\n  } else {\n    parentNode = container;\n    parentNode.appendChild(child);\n  } // This container might be used for a portal.\n  // If something inside a portal is clicked, that click should bubble\n  // through the React tree. However, on Mobile Safari the click would\n  // never bubble through the *DOM* tree unless an ancestor with onclick\n  // event exists. So we wouldn't see it and dispatch it.\n  // This is why we ensure that non React root containers have inline onclick\n  // defined.\n  // https://github.com/facebook/react/issues/11918\n\n\n  var reactRootContainer = container._reactRootContainer;\n\n  if ((reactRootContainer === null || reactRootContainer === undefined) && parentNode.onclick === null) {\n    // TODO: This cast may not be sound for SVG, MathML or custom elements.\n    trapClickOnNonInteractiveElement(parentNode);\n  }\n}\nfunction insertBefore(parentInstance, child, beforeChild) {\n  parentInstance.insertBefore(child, beforeChild);\n}\nfunction insertInContainerBefore(container, child, beforeChild) {\n  if (container.nodeType === COMMENT_NODE) {\n    container.parentNode.insertBefore(child, beforeChild);\n  } else {\n    container.insertBefore(child, beforeChild);\n  }\n}\n\nfunction removeChild(parentInstance, child) {\n  parentInstance.removeChild(child);\n}\nfunction removeChildFromContainer(container, child) {\n  if (container.nodeType === COMMENT_NODE) {\n    container.parentNode.removeChild(child);\n  } else {\n    container.removeChild(child);\n  }\n}\nfunction clearSuspenseBoundary(parentInstance, suspenseInstance) {\n  var node = suspenseInstance; // Delete all nodes within this suspense boundary.\n  // There might be nested nodes so we need to keep track of how\n  // deep we are and only break out when we're back on top.\n\n  var depth = 0;\n\n  do {\n    var nextNode = node.nextSibling;\n    parentInstance.removeChild(node);\n\n    if (nextNode && nextNode.nodeType === COMMENT_NODE) {\n      var data = nextNode.data;\n\n      if (data === SUSPENSE_END_DATA) {\n        if (depth === 0) {\n          parentInstance.removeChild(nextNode); // Retry if any event replaying was blocked on this.\n\n          retryIfBlockedOn(suspenseInstance);\n          return;\n        } else {\n          depth--;\n        }\n      } else if (data === SUSPENSE_START_DATA || data === SUSPENSE_PENDING_START_DATA || data === SUSPENSE_FALLBACK_START_DATA) {\n        depth++;\n      }\n    }\n\n    node = nextNode;\n  } while (node); // TODO: Warn, we didn't find the end comment boundary.\n  // Retry if any event replaying was blocked on this.\n\n\n  retryIfBlockedOn(suspenseInstance);\n}\nfunction clearSuspenseBoundaryFromContainer(container, suspenseInstance) {\n  if (container.nodeType === COMMENT_NODE) {\n    clearSuspenseBoundary(container.parentNode, suspenseInstance);\n  } else if (container.nodeType === ELEMENT_NODE) {\n    clearSuspenseBoundary(container, suspenseInstance);\n  } // Retry if any event replaying was blocked on this.\n\n\n  retryIfBlockedOn(container);\n}\nfunction hideInstance(instance) {\n  // TODO: Does this work for all element types? What about MathML? Should we\n  // pass host context to this method?\n  instance = instance;\n  var style = instance.style;\n\n  if (typeof style.setProperty === 'function') {\n    style.setProperty('display', 'none', 'important');\n  } else {\n    style.display = 'none';\n  }\n}\nfunction hideTextInstance(textInstance) {\n  textInstance.nodeValue = '';\n}\nfunction unhideInstance(instance, props) {\n  instance = instance;\n  var styleProp = props[STYLE$1];\n  var display = styleProp !== undefined && styleProp !== null && styleProp.hasOwnProperty('display') ? styleProp.display : null;\n  instance.style.display = dangerousStyleValue('display', display);\n}\nfunction unhideTextInstance(textInstance, text) {\n  textInstance.nodeValue = text;\n}\nfunction clearContainer(container) {\n  if (container.nodeType === ELEMENT_NODE) {\n    container.textContent = '';\n  } else if (container.nodeType === DOCUMENT_NODE) {\n    if (container.documentElement) {\n      container.removeChild(container.documentElement);\n    }\n  }\n} // -------------------\nfunction canHydrateInstance(instance, type, props) {\n  if (instance.nodeType !== ELEMENT_NODE || type.toLowerCase() !== instance.nodeName.toLowerCase()) {\n    return null;\n  } // This has now been refined to an element node.\n\n\n  return instance;\n}\nfunction canHydrateTextInstance(instance, text) {\n  if (text === '' || instance.nodeType !== TEXT_NODE) {\n    // Empty strings are not parsed by HTML so there won't be a correct match here.\n    return null;\n  } // This has now been refined to a text node.\n\n\n  return instance;\n}\nfunction canHydrateSuspenseInstance(instance) {\n  if (instance.nodeType !== COMMENT_NODE) {\n    // Empty strings are not parsed by HTML so there won't be a correct match here.\n    return null;\n  } // This has now been refined to a suspense node.\n\n\n  return instance;\n}\nfunction isSuspenseInstancePending(instance) {\n  return instance.data === SUSPENSE_PENDING_START_DATA;\n}\nfunction isSuspenseInstanceFallback(instance) {\n  return instance.data === SUSPENSE_FALLBACK_START_DATA;\n}\nfunction getSuspenseInstanceFallbackErrorDetails(instance) {\n  var dataset = instance.nextSibling && instance.nextSibling.dataset;\n  var digest, message, stack;\n\n  if (dataset) {\n    digest = dataset.dgst;\n\n    {\n      message = dataset.msg;\n      stack = dataset.stck;\n    }\n  }\n\n  {\n    return {\n      message: message,\n      digest: digest,\n      stack: stack\n    };\n  } // let value = {message: undefined, hash: undefined};\n  // const nextSibling = instance.nextSibling;\n  // if (nextSibling) {\n  //   const dataset = ((nextSibling: any): HTMLTemplateElement).dataset;\n  //   value.message = dataset.msg;\n  //   value.hash = dataset.hash;\n  //   if (true) {\n  //     value.stack = dataset.stack;\n  //   }\n  // }\n  // return value;\n\n}\nfunction registerSuspenseInstanceRetry(instance, callback) {\n  instance._reactRetry = callback;\n}\n\nfunction getNextHydratable(node) {\n  // Skip non-hydratable nodes.\n  for (; node != null; node = node.nextSibling) {\n    var nodeType = node.nodeType;\n\n    if (nodeType === ELEMENT_NODE || nodeType === TEXT_NODE) {\n      break;\n    }\n\n    if (nodeType === COMMENT_NODE) {\n      var nodeData = node.data;\n\n      if (nodeData === SUSPENSE_START_DATA || nodeData === SUSPENSE_FALLBACK_START_DATA || nodeData === SUSPENSE_PENDING_START_DATA) {\n        break;\n      }\n\n      if (nodeData === SUSPENSE_END_DATA) {\n        return null;\n      }\n    }\n  }\n\n  return node;\n}\n\nfunction getNextHydratableSibling(instance) {\n  return getNextHydratable(instance.nextSibling);\n}\nfunction getFirstHydratableChild(parentInstance) {\n  return getNextHydratable(parentInstance.firstChild);\n}\nfunction getFirstHydratableChildWithinContainer(parentContainer) {\n  return getNextHydratable(parentContainer.firstChild);\n}\nfunction getFirstHydratableChildWithinSuspenseInstance(parentInstance) {\n  return getNextHydratable(parentInstance.nextSibling);\n}\nfunction hydrateInstance(instance, type, props, rootContainerInstance, hostContext, internalInstanceHandle, shouldWarnDev) {\n  precacheFiberNode(internalInstanceHandle, instance); // TODO: Possibly defer this until the commit phase where all the events\n  // get attached.\n\n  updateFiberProps(instance, props);\n  var parentNamespace;\n\n  {\n    var hostContextDev = hostContext;\n    parentNamespace = hostContextDev.namespace;\n  } // TODO: Temporary hack to check if we're in a concurrent root. We can delete\n  // when the legacy root API is removed.\n\n\n  var isConcurrentMode = (internalInstanceHandle.mode & ConcurrentMode) !== NoMode;\n  return diffHydratedProperties(instance, type, props, parentNamespace, rootContainerInstance, isConcurrentMode, shouldWarnDev);\n}\nfunction hydrateTextInstance(textInstance, text, internalInstanceHandle, shouldWarnDev) {\n  precacheFiberNode(internalInstanceHandle, textInstance); // TODO: Temporary hack to check if we're in a concurrent root. We can delete\n  // when the legacy root API is removed.\n\n  var isConcurrentMode = (internalInstanceHandle.mode & ConcurrentMode) !== NoMode;\n  return diffHydratedText(textInstance, text);\n}\nfunction hydrateSuspenseInstance(suspenseInstance, internalInstanceHandle) {\n  precacheFiberNode(internalInstanceHandle, suspenseInstance);\n}\nfunction getNextHydratableInstanceAfterSuspenseInstance(suspenseInstance) {\n  var node = suspenseInstance.nextSibling; // Skip past all nodes within this suspense boundary.\n  // There might be nested nodes so we need to keep track of how\n  // deep we are and only break out when we're back on top.\n\n  var depth = 0;\n\n  while (node) {\n    if (node.nodeType === COMMENT_NODE) {\n      var data = node.data;\n\n      if (data === SUSPENSE_END_DATA) {\n        if (depth === 0) {\n          return getNextHydratableSibling(node);\n        } else {\n          depth--;\n        }\n      } else if (data === SUSPENSE_START_DATA || data === SUSPENSE_FALLBACK_START_DATA || data === SUSPENSE_PENDING_START_DATA) {\n        depth++;\n      }\n    }\n\n    node = node.nextSibling;\n  } // TODO: Warn, we didn't find the end comment boundary.\n\n\n  return null;\n} // Returns the SuspenseInstance if this node is a direct child of a\n// SuspenseInstance. I.e. if its previous sibling is a Comment with\n// SUSPENSE_x_START_DATA. Otherwise, null.\n\nfunction getParentSuspenseInstance(targetInstance) {\n  var node = targetInstance.previousSibling; // Skip past all nodes within this suspense boundary.\n  // There might be nested nodes so we need to keep track of how\n  // deep we are and only break out when we're back on top.\n\n  var depth = 0;\n\n  while (node) {\n    if (node.nodeType === COMMENT_NODE) {\n      var data = node.data;\n\n      if (data === SUSPENSE_START_DATA || data === SUSPENSE_FALLBACK_START_DATA || data === SUSPENSE_PENDING_START_DATA) {\n        if (depth === 0) {\n          return node;\n        } else {\n          depth--;\n        }\n      } else if (data === SUSPENSE_END_DATA) {\n        depth++;\n      }\n    }\n\n    node = node.previousSibling;\n  }\n\n  return null;\n}\nfunction commitHydratedContainer(container) {\n  // Retry if any event replaying was blocked on this.\n  retryIfBlockedOn(container);\n}\nfunction commitHydratedSuspenseInstance(suspenseInstance) {\n  // Retry if any event replaying was blocked on this.\n  retryIfBlockedOn(suspenseInstance);\n}\nfunction shouldDeleteUnhydratedTailInstances(parentType) {\n  return parentType !== 'head' && parentType !== 'body';\n}\nfunction didNotMatchHydratedContainerTextInstance(parentContainer, textInstance, text, isConcurrentMode) {\n  var shouldWarnDev = true;\n  checkForUnmatchedText(textInstance.nodeValue, text, isConcurrentMode, shouldWarnDev);\n}\nfunction didNotMatchHydratedTextInstance(parentType, parentProps, parentInstance, textInstance, text, isConcurrentMode) {\n  if (parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {\n    var shouldWarnDev = true;\n    checkForUnmatchedText(textInstance.nodeValue, text, isConcurrentMode, shouldWarnDev);\n  }\n}\nfunction didNotHydrateInstanceWithinContainer(parentContainer, instance) {\n  {\n    if (instance.nodeType === ELEMENT_NODE) {\n      warnForDeletedHydratableElement(parentContainer, instance);\n    } else if (instance.nodeType === COMMENT_NODE) ; else {\n      warnForDeletedHydratableText(parentContainer, instance);\n    }\n  }\n}\nfunction didNotHydrateInstanceWithinSuspenseInstance(parentInstance, instance) {\n  {\n    // $FlowFixMe: Only Element or Document can be parent nodes.\n    var parentNode = parentInstance.parentNode;\n\n    if (parentNode !== null) {\n      if (instance.nodeType === ELEMENT_NODE) {\n        warnForDeletedHydratableElement(parentNode, instance);\n      } else if (instance.nodeType === COMMENT_NODE) ; else {\n        warnForDeletedHydratableText(parentNode, instance);\n      }\n    }\n  }\n}\nfunction didNotHydrateInstance(parentType, parentProps, parentInstance, instance, isConcurrentMode) {\n  {\n    if (isConcurrentMode || parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {\n      if (instance.nodeType === ELEMENT_NODE) {\n        warnForDeletedHydratableElement(parentInstance, instance);\n      } else if (instance.nodeType === COMMENT_NODE) ; else {\n        warnForDeletedHydratableText(parentInstance, instance);\n      }\n    }\n  }\n}\nfunction didNotFindHydratableInstanceWithinContainer(parentContainer, type, props) {\n  {\n    warnForInsertedHydratedElement(parentContainer, type);\n  }\n}\nfunction didNotFindHydratableTextInstanceWithinContainer(parentContainer, text) {\n  {\n    warnForInsertedHydratedText(parentContainer, text);\n  }\n}\nfunction didNotFindHydratableInstanceWithinSuspenseInstance(parentInstance, type, props) {\n  {\n    // $FlowFixMe: Only Element or Document can be parent nodes.\n    var parentNode = parentInstance.parentNode;\n    if (parentNode !== null) warnForInsertedHydratedElement(parentNode, type);\n  }\n}\nfunction didNotFindHydratableTextInstanceWithinSuspenseInstance(parentInstance, text) {\n  {\n    // $FlowFixMe: Only Element or Document can be parent nodes.\n    var parentNode = parentInstance.parentNode;\n    if (parentNode !== null) warnForInsertedHydratedText(parentNode, text);\n  }\n}\nfunction didNotFindHydratableInstance(parentType, parentProps, parentInstance, type, props, isConcurrentMode) {\n  {\n    if (isConcurrentMode || parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {\n      warnForInsertedHydratedElement(parentInstance, type);\n    }\n  }\n}\nfunction didNotFindHydratableTextInstance(parentType, parentProps, parentInstance, text, isConcurrentMode) {\n  {\n    if (isConcurrentMode || parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {\n      warnForInsertedHydratedText(parentInstance, text);\n    }\n  }\n}\nfunction errorHydratingContainer(parentContainer) {\n  {\n    // TODO: This gets logged by onRecoverableError, too, so we should be\n    // able to remove it.\n    error('An error occurred during hydration. The server HTML was replaced with client content in <%s>.', parentContainer.nodeName.toLowerCase());\n  }\n}\nfunction preparePortalMount(portalInstance) {\n  listenToAllSupportedEvents(portalInstance);\n}\n\nvar randomKey = Math.random().toString(36).slice(2);\nvar internalInstanceKey = '__reactFiber$' + randomKey;\nvar internalPropsKey = '__reactProps$' + randomKey;\nvar internalContainerInstanceKey = '__reactContainer$' + randomKey;\nvar internalEventHandlersKey = '__reactEvents$' + randomKey;\nvar internalEventHandlerListenersKey = '__reactListeners$' + randomKey;\nvar internalEventHandlesSetKey = '__reactHandles$' + randomKey;\nfunction detachDeletedInstance(node) {\n  // TODO: This function is only called on host components. I don't think all of\n  // these fields are relevant.\n  delete node[internalInstanceKey];\n  delete node[internalPropsKey];\n  delete node[internalEventHandlersKey];\n  delete node[internalEventHandlerListenersKey];\n  delete node[internalEventHandlesSetKey];\n}\nfunction precacheFiberNode(hostInst, node) {\n  node[internalInstanceKey] = hostInst;\n}\nfunction markContainerAsRoot(hostRoot, node) {\n  node[internalContainerInstanceKey] = hostRoot;\n}\nfunction unmarkContainerAsRoot(node) {\n  node[internalContainerInstanceKey] = null;\n}\nfunction isContainerMarkedAsRoot(node) {\n  return !!node[internalContainerInstanceKey];\n} // Given a DOM node, return the closest HostComponent or HostText fiber ancestor.\n// If the target node is part of a hydrated or not yet rendered subtree, then\n// this may also return a SuspenseComponent or HostRoot to indicate that.\n// Conceptually the HostRoot fiber is a child of the Container node. So if you\n// pass the Container node as the targetNode, you will not actually get the\n// HostRoot back. To get to the HostRoot, you need to pass a child of it.\n// The same thing applies to Suspense boundaries.\n\nfunction getClosestInstanceFromNode(targetNode) {\n  var targetInst = targetNode[internalInstanceKey];\n\n  if (targetInst) {\n    // Don't return HostRoot or SuspenseComponent here.\n    return targetInst;\n  } // If the direct event target isn't a React owned DOM node, we need to look\n  // to see if one of its parents is a React owned DOM node.\n\n\n  var parentNode = targetNode.parentNode;\n\n  while (parentNode) {\n    // We'll check if this is a container root that could include\n    // React nodes in the future. We need to check this first because\n    // if we're a child of a dehydrated container, we need to first\n    // find that inner container before moving on to finding the parent\n    // instance. Note that we don't check this field on  the targetNode\n    // itself because the fibers are conceptually between the container\n    // node and the first child. It isn't surrounding the container node.\n    // If it's not a container, we check if it's an instance.\n    targetInst = parentNode[internalContainerInstanceKey] || parentNode[internalInstanceKey];\n\n    if (targetInst) {\n      // Since this wasn't the direct target of the event, we might have\n      // stepped past dehydrated DOM nodes to get here. However they could\n      // also have been non-React nodes. We need to answer which one.\n      // If we the instance doesn't have any children, then there can't be\n      // a nested suspense boundary within it. So we can use this as a fast\n      // bailout. Most of the time, when people add non-React children to\n      // the tree, it is using a ref to a child-less DOM node.\n      // Normally we'd only need to check one of the fibers because if it\n      // has ever gone from having children to deleting them or vice versa\n      // it would have deleted the dehydrated boundary nested inside already.\n      // However, since the HostRoot starts out with an alternate it might\n      // have one on the alternate so we need to check in case this was a\n      // root.\n      var alternate = targetInst.alternate;\n\n      if (targetInst.child !== null || alternate !== null && alternate.child !== null) {\n        // Next we need to figure out if the node that skipped past is\n        // nested within a dehydrated boundary and if so, which one.\n        var suspenseInstance = getParentSuspenseInstance(targetNode);\n\n        while (suspenseInstance !== null) {\n          // We found a suspense instance. That means that we haven't\n          // hydrated it yet. Even though we leave the comments in the\n          // DOM after hydrating, and there are boundaries in the DOM\n          // that could already be hydrated, we wouldn't have found them\n          // through this pass since if the target is hydrated it would\n          // have had an internalInstanceKey on it.\n          // Let's get the fiber associated with the SuspenseComponent\n          // as the deepest instance.\n          var targetSuspenseInst = suspenseInstance[internalInstanceKey];\n\n          if (targetSuspenseInst) {\n            return targetSuspenseInst;\n          } // If we don't find a Fiber on the comment, it might be because\n          // we haven't gotten to hydrate it yet. There might still be a\n          // parent boundary that hasn't above this one so we need to find\n          // the outer most that is known.\n\n\n          suspenseInstance = getParentSuspenseInstance(suspenseInstance); // If we don't find one, then that should mean that the parent\n          // host component also hasn't hydrated yet. We can return it\n          // below since it will bail out on the isMounted check later.\n        }\n      }\n\n      return targetInst;\n    }\n\n    targetNode = parentNode;\n    parentNode = targetNode.parentNode;\n  }\n\n  return null;\n}\n/**\n * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent\n * instance, or null if the node was not rendered by this React.\n */\n\nfunction getInstanceFromNode(node) {\n  var inst = node[internalInstanceKey] || node[internalContainerInstanceKey];\n\n  if (inst) {\n    if (inst.tag === HostComponent || inst.tag === HostText || inst.tag === SuspenseComponent || inst.tag === HostRoot) {\n      return inst;\n    } else {\n      return null;\n    }\n  }\n\n  return null;\n}\n/**\n * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding\n * DOM node.\n */\n\nfunction getNodeFromInstance(inst) {\n  if (inst.tag === HostComponent || inst.tag === HostText) {\n    // In Fiber this, is just the state node right now. We assume it will be\n    // a host component or host text.\n    return inst.stateNode;\n  } // Without this first invariant, passing a non-DOM-component triggers the next\n  // invariant for a missing parent, which is super confusing.\n\n\n  throw new Error('getNodeFromInstance: Invalid argument.');\n}\nfunction getFiberCurrentPropsFromNode(node) {\n  return node[internalPropsKey] || null;\n}\nfunction updateFiberProps(node, props) {\n  node[internalPropsKey] = props;\n}\nfunction getEventListenerSet(node) {\n  var elementListenerSet = node[internalEventHandlersKey];\n\n  if (elementListenerSet === undefined) {\n    elementListenerSet = node[internalEventHandlersKey] = new Set();\n  }\n\n  return elementListenerSet;\n}\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n  {\n    if (element) {\n      var owner = element._owner;\n      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n      ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n    } else {\n      ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n    }\n  }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n  {\n    // $FlowFixMe This is okay but Flow doesn't know it.\n    var has = Function.call.bind(hasOwnProperty);\n\n    for (var typeSpecName in typeSpecs) {\n      if (has(typeSpecs, typeSpecName)) {\n        var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          if (typeof typeSpecs[typeSpecName] !== 'function') {\n            // eslint-disable-next-line react-internal/prod-error-codes\n            var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n\n          error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n        } catch (ex) {\n          error$1 = ex;\n        }\n\n        if (error$1 && !(error$1 instanceof Error)) {\n          setCurrentlyValidatingElement(element);\n\n          error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n          setCurrentlyValidatingElement(null);\n        }\n\n        if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error$1.message] = true;\n          setCurrentlyValidatingElement(element);\n\n          error('Failed %s type: %s', location, error$1.message);\n\n          setCurrentlyValidatingElement(null);\n        }\n      }\n    }\n  }\n}\n\nvar valueStack = [];\nvar fiberStack;\n\n{\n  fiberStack = [];\n}\n\nvar index = -1;\n\nfunction createCursor(defaultValue) {\n  return {\n    current: defaultValue\n  };\n}\n\nfunction pop(cursor, fiber) {\n  if (index < 0) {\n    {\n      error('Unexpected pop.');\n    }\n\n    return;\n  }\n\n  {\n    if (fiber !== fiberStack[index]) {\n      error('Unexpected Fiber popped.');\n    }\n  }\n\n  cursor.current = valueStack[index];\n  valueStack[index] = null;\n\n  {\n    fiberStack[index] = null;\n  }\n\n  index--;\n}\n\nfunction push(cursor, value, fiber) {\n  index++;\n  valueStack[index] = cursor.current;\n\n  {\n    fiberStack[index] = fiber;\n  }\n\n  cursor.current = value;\n}\n\nvar warnedAboutMissingGetChildContext;\n\n{\n  warnedAboutMissingGetChildContext = {};\n}\n\nvar emptyContextObject = {};\n\n{\n  Object.freeze(emptyContextObject);\n} // A cursor to the current merged context object on the stack.\n\n\nvar contextStackCursor = createCursor(emptyContextObject); // A cursor to a boolean indicating whether the context has changed.\n\nvar didPerformWorkStackCursor = createCursor(false); // Keep track of the previous context object that was on the stack.\n// We use this to get access to the parent context after we have already\n// pushed the next context provider, and now need to merge their contexts.\n\nvar previousContext = emptyContextObject;\n\nfunction getUnmaskedContext(workInProgress, Component, didPushOwnContextIfProvider) {\n  {\n    if (didPushOwnContextIfProvider && isContextProvider(Component)) {\n      // If the fiber is a context provider itself, when we read its context\n      // we may have already pushed its own child context on the stack. A context\n      // provider should not \"see\" its own child context. Therefore we read the\n      // previous (parent) context instead for a context provider.\n      return previousContext;\n    }\n\n    return contextStackCursor.current;\n  }\n}\n\nfunction cacheContext(workInProgress, unmaskedContext, maskedContext) {\n  {\n    var instance = workInProgress.stateNode;\n    instance.__reactInternalMemoizedUnmaskedChildContext = unmaskedContext;\n    instance.__reactInternalMemoizedMaskedChildContext = maskedContext;\n  }\n}\n\nfunction getMaskedContext(workInProgress, unmaskedContext) {\n  {\n    var type = workInProgress.type;\n    var contextTypes = type.contextTypes;\n\n    if (!contextTypes) {\n      return emptyContextObject;\n    } // Avoid recreating masked context unless unmasked context has changed.\n    // Failing to do this will result in unnecessary calls to componentWillReceiveProps.\n    // This may trigger infinite loops if componentWillReceiveProps calls setState.\n\n\n    var instance = workInProgress.stateNode;\n\n    if (instance && instance.__reactInternalMemoizedUnmaskedChildContext === unmaskedContext) {\n      return instance.__reactInternalMemoizedMaskedChildContext;\n    }\n\n    var context = {};\n\n    for (var key in contextTypes) {\n      context[key] = unmaskedContext[key];\n    }\n\n    {\n      var name = getComponentNameFromFiber(workInProgress) || 'Unknown';\n      checkPropTypes(contextTypes, context, 'context', name);\n    } // Cache unmasked context so we can avoid recreating masked context unless necessary.\n    // Context is created before the class component is instantiated so check for instance.\n\n\n    if (instance) {\n      cacheContext(workInProgress, unmaskedContext, context);\n    }\n\n    return context;\n  }\n}\n\nfunction hasContextChanged() {\n  {\n    return didPerformWorkStackCursor.current;\n  }\n}\n\nfunction isContextProvider(type) {\n  {\n    var childContextTypes = type.childContextTypes;\n    return childContextTypes !== null && childContextTypes !== undefined;\n  }\n}\n\nfunction popContext(fiber) {\n  {\n    pop(didPerformWorkStackCursor, fiber);\n    pop(contextStackCursor, fiber);\n  }\n}\n\nfunction popTopLevelContextObject(fiber) {\n  {\n    pop(didPerformWorkStackCursor, fiber);\n    pop(contextStackCursor, fiber);\n  }\n}\n\nfunction pushTopLevelContextObject(fiber, context, didChange) {\n  {\n    if (contextStackCursor.current !== emptyContextObject) {\n      throw new Error('Unexpected context found on stack. ' + 'This error is likely caused by a bug in React. Please file an issue.');\n    }\n\n    push(contextStackCursor, context, fiber);\n    push(didPerformWorkStackCursor, didChange, fiber);\n  }\n}\n\nfunction processChildContext(fiber, type, parentContext) {\n  {\n    var instance = fiber.stateNode;\n    var childContextTypes = type.childContextTypes; // TODO (bvaughn) Replace this behavior with an invariant() in the future.\n    // It has only been added in Fiber to match the (unintentional) behavior in Stack.\n\n    if (typeof instance.getChildContext !== 'function') {\n      {\n        var componentName = getComponentNameFromFiber(fiber) || 'Unknown';\n\n        if (!warnedAboutMissingGetChildContext[componentName]) {\n          warnedAboutMissingGetChildContext[componentName] = true;\n\n          error('%s.childContextTypes is specified but there is no getChildContext() method ' + 'on the instance. You can either define getChildContext() on %s or remove ' + 'childContextTypes from it.', componentName, componentName);\n        }\n      }\n\n      return parentContext;\n    }\n\n    var childContext = instance.getChildContext();\n\n    for (var contextKey in childContext) {\n      if (!(contextKey in childContextTypes)) {\n        throw new Error((getComponentNameFromFiber(fiber) || 'Unknown') + \".getChildContext(): key \\\"\" + contextKey + \"\\\" is not defined in childContextTypes.\");\n      }\n    }\n\n    {\n      var name = getComponentNameFromFiber(fiber) || 'Unknown';\n      checkPropTypes(childContextTypes, childContext, 'child context', name);\n    }\n\n    return assign({}, parentContext, childContext);\n  }\n}\n\nfunction pushContextProvider(workInProgress) {\n  {\n    var instance = workInProgress.stateNode; // We push the context as early as possible to ensure stack integrity.\n    // If the instance does not exist yet, we will push null at first,\n    // and replace it on the stack later when invalidating the context.\n\n    var memoizedMergedChildContext = instance && instance.__reactInternalMemoizedMergedChildContext || emptyContextObject; // Remember the parent context so we can merge with it later.\n    // Inherit the parent's did-perform-work value to avoid inadvertently blocking updates.\n\n    previousContext = contextStackCursor.current;\n    push(contextStackCursor, memoizedMergedChildContext, workInProgress);\n    push(didPerformWorkStackCursor, didPerformWorkStackCursor.current, workInProgress);\n    return true;\n  }\n}\n\nfunction invalidateContextProvider(workInProgress, type, didChange) {\n  {\n    var instance = workInProgress.stateNode;\n\n    if (!instance) {\n      throw new Error('Expected to have an instance by this point. ' + 'This error is likely caused by a bug in React. Please file an issue.');\n    }\n\n    if (didChange) {\n      // Merge parent and own context.\n      // Skip this if we're not updating due to sCU.\n      // This avoids unnecessarily recomputing memoized values.\n      var mergedContext = processChildContext(workInProgress, type, previousContext);\n      instance.__reactInternalMemoizedMergedChildContext = mergedContext; // Replace the old (or empty) context with the new one.\n      // It is important to unwind the context in the reverse order.\n\n      pop(didPerformWorkStackCursor, workInProgress);\n      pop(contextStackCursor, workInProgress); // Now push the new context and mark that it has changed.\n\n      push(contextStackCursor, mergedContext, workInProgress);\n      push(didPerformWorkStackCursor, didChange, workInProgress);\n    } else {\n      pop(didPerformWorkStackCursor, workInProgress);\n      push(didPerformWorkStackCursor, didChange, workInProgress);\n    }\n  }\n}\n\nfunction findCurrentUnmaskedContext(fiber) {\n  {\n    // Currently this is only used with renderSubtreeIntoContainer; not sure if it\n    // makes sense elsewhere\n    if (!isFiberMounted(fiber) || fiber.tag !== ClassComponent) {\n      throw new Error('Expected subtree parent to be a mounted class component. ' + 'This error is likely caused by a bug in React. Please file an issue.');\n    }\n\n    var node = fiber;\n\n    do {\n      switch (node.tag) {\n        case HostRoot:\n          return node.stateNode.context;\n\n        case ClassComponent:\n          {\n            var Component = node.type;\n\n            if (isContextProvider(Component)) {\n              return node.stateNode.__reactInternalMemoizedMergedChildContext;\n            }\n\n            break;\n          }\n      }\n\n      node = node.return;\n    } while (node !== null);\n\n    throw new Error('Found unexpected detached subtree parent. ' + 'This error is likely caused by a bug in React. Please file an issue.');\n  }\n}\n\nvar LegacyRoot = 0;\nvar ConcurrentRoot = 1;\n\nvar syncQueue = null;\nvar includesLegacySyncCallbacks = false;\nvar isFlushingSyncQueue = false;\nfunction scheduleSyncCallback(callback) {\n  // Push this callback into an internal queue. We'll flush these either in\n  // the next tick, or earlier if something calls `flushSyncCallbackQueue`.\n  if (syncQueue === null) {\n    syncQueue = [callback];\n  } else {\n    // Push onto existing queue. Don't need to schedule a callback because\n    // we already scheduled one when we created the queue.\n    syncQueue.push(callback);\n  }\n}\nfunction scheduleLegacySyncCallback(callback) {\n  includesLegacySyncCallbacks = true;\n  scheduleSyncCallback(callback);\n}\nfunction flushSyncCallbacksOnlyInLegacyMode() {\n  // Only flushes the queue if there's a legacy sync callback scheduled.\n  // TODO: There's only a single type of callback: performSyncOnWorkOnRoot. So\n  // it might make more sense for the queue to be a list of roots instead of a\n  // list of generic callbacks. Then we can have two: one for legacy roots, one\n  // for concurrent roots. And this method would only flush the legacy ones.\n  if (includesLegacySyncCallbacks) {\n    flushSyncCallbacks();\n  }\n}\nfunction flushSyncCallbacks() {\n  if (!isFlushingSyncQueue && syncQueue !== null) {\n    // Prevent re-entrance.\n    isFlushingSyncQueue = true;\n    var i = 0;\n    var previousUpdatePriority = getCurrentUpdatePriority();\n\n    try {\n      var isSync = true;\n      var queue = syncQueue; // TODO: Is this necessary anymore? The only user code that runs in this\n      // queue is in the render or commit phases.\n\n      setCurrentUpdatePriority(DiscreteEventPriority);\n\n      for (; i < queue.length; i++) {\n        var callback = queue[i];\n\n        do {\n          callback = callback(isSync);\n        } while (callback !== null);\n      }\n\n      syncQueue = null;\n      includesLegacySyncCallbacks = false;\n    } catch (error) {\n      // If something throws, leave the remaining callbacks on the queue.\n      if (syncQueue !== null) {\n        syncQueue = syncQueue.slice(i + 1);\n      } // Resume flushing in the next tick\n\n\n      scheduleCallback(ImmediatePriority, flushSyncCallbacks);\n      throw error;\n    } finally {\n      setCurrentUpdatePriority(previousUpdatePriority);\n      isFlushingSyncQueue = false;\n    }\n  }\n\n  return null;\n}\n\n// TODO: Use the unified fiber stack module instead of this local one?\n// Intentionally not using it yet to derisk the initial implementation, because\n// the way we push/pop these values is a bit unusual. If there's a mistake, I'd\n// rather the ids be wrong than crash the whole reconciler.\nvar forkStack = [];\nvar forkStackIndex = 0;\nvar treeForkProvider = null;\nvar treeForkCount = 0;\nvar idStack = [];\nvar idStackIndex = 0;\nvar treeContextProvider = null;\nvar treeContextId = 1;\nvar treeContextOverflow = '';\nfunction isForkedChild(workInProgress) {\n  warnIfNotHydrating();\n  return (workInProgress.flags & Forked) !== NoFlags;\n}\nfunction getForksAtLevel(workInProgress) {\n  warnIfNotHydrating();\n  return treeForkCount;\n}\nfunction getTreeId() {\n  var overflow = treeContextOverflow;\n  var idWithLeadingBit = treeContextId;\n  var id = idWithLeadingBit & ~getLeadingBit(idWithLeadingBit);\n  return id.toString(32) + overflow;\n}\nfunction pushTreeFork(workInProgress, totalChildren) {\n  // This is called right after we reconcile an array (or iterator) of child\n  // fibers, because that's the only place where we know how many children in\n  // the whole set without doing extra work later, or storing addtional\n  // information on the fiber.\n  //\n  // That's why this function is separate from pushTreeId \u2014 it's called during\n  // the render phase of the fork parent, not the child, which is where we push\n  // the other context values.\n  //\n  // In the Fizz implementation this is much simpler because the child is\n  // rendered in the same callstack as the parent.\n  //\n  // It might be better to just add a `forks` field to the Fiber type. It would\n  // make this module simpler.\n  warnIfNotHydrating();\n  forkStack[forkStackIndex++] = treeForkCount;\n  forkStack[forkStackIndex++] = treeForkProvider;\n  treeForkProvider = workInProgress;\n  treeForkCount = totalChildren;\n}\nfunction pushTreeId(workInProgress, totalChildren, index) {\n  warnIfNotHydrating();\n  idStack[idStackIndex++] = treeContextId;\n  idStack[idStackIndex++] = treeContextOverflow;\n  idStack[idStackIndex++] = treeContextProvider;\n  treeContextProvider = workInProgress;\n  var baseIdWithLeadingBit = treeContextId;\n  var baseOverflow = treeContextOverflow; // The leftmost 1 marks the end of the sequence, non-inclusive. It's not part\n  // of the id; we use it to account for leading 0s.\n\n  var baseLength = getBitLength(baseIdWithLeadingBit) - 1;\n  var baseId = baseIdWithLeadingBit & ~(1 << baseLength);\n  var slot = index + 1;\n  var length = getBitLength(totalChildren) + baseLength; // 30 is the max length we can store without overflowing, taking into\n  // consideration the leading 1 we use to mark the end of the sequence.\n\n  if (length > 30) {\n    // We overflowed the bitwise-safe range. Fall back to slower algorithm.\n    // This branch assumes the length of the base id is greater than 5; it won't\n    // work for smaller ids, because you need 5 bits per character.\n    //\n    // We encode the id in multiple steps: first the base id, then the\n    // remaining digits.\n    //\n    // Each 5 bit sequence corresponds to a single base 32 character. So for\n    // example, if the current id is 23 bits long, we can convert 20 of those\n    // bits into a string of 4 characters, with 3 bits left over.\n    //\n    // First calculate how many bits in the base id represent a complete\n    // sequence of characters.\n    var numberOfOverflowBits = baseLength - baseLength % 5; // Then create a bitmask that selects only those bits.\n\n    var newOverflowBits = (1 << numberOfOverflowBits) - 1; // Select the bits, and convert them to a base 32 string.\n\n    var newOverflow = (baseId & newOverflowBits).toString(32); // Now we can remove those bits from the base id.\n\n    var restOfBaseId = baseId >> numberOfOverflowBits;\n    var restOfBaseLength = baseLength - numberOfOverflowBits; // Finally, encode the rest of the bits using the normal algorithm. Because\n    // we made more room, this time it won't overflow.\n\n    var restOfLength = getBitLength(totalChildren) + restOfBaseLength;\n    var restOfNewBits = slot << restOfBaseLength;\n    var id = restOfNewBits | restOfBaseId;\n    var overflow = newOverflow + baseOverflow;\n    treeContextId = 1 << restOfLength | id;\n    treeContextOverflow = overflow;\n  } else {\n    // Normal path\n    var newBits = slot << baseLength;\n\n    var _id = newBits | baseId;\n\n    var _overflow = baseOverflow;\n    treeContextId = 1 << length | _id;\n    treeContextOverflow = _overflow;\n  }\n}\nfunction pushMaterializedTreeId(workInProgress) {\n  warnIfNotHydrating(); // This component materialized an id. This will affect any ids that appear\n  // in its children.\n\n  var returnFiber = workInProgress.return;\n\n  if (returnFiber !== null) {\n    var numberOfForks = 1;\n    var slotIndex = 0;\n    pushTreeFork(workInProgress, numberOfForks);\n    pushTreeId(workInProgress, numberOfForks, slotIndex);\n  }\n}\n\nfunction getBitLength(number) {\n  return 32 - clz32(number);\n}\n\nfunction getLeadingBit(id) {\n  return 1 << getBitLength(id) - 1;\n}\n\nfunction popTreeContext(workInProgress) {\n  // Restore the previous values.\n  // This is a bit more complicated than other context-like modules in Fiber\n  // because the same Fiber may appear on the stack multiple times and for\n  // different reasons. We have to keep popping until the work-in-progress is\n  // no longer at the top of the stack.\n  while (workInProgress === treeForkProvider) {\n    treeForkProvider = forkStack[--forkStackIndex];\n    forkStack[forkStackIndex] = null;\n    treeForkCount = forkStack[--forkStackIndex];\n    forkStack[forkStackIndex] = null;\n  }\n\n  while (workInProgress === treeContextProvider) {\n    treeContextProvider = idStack[--idStackIndex];\n    idStack[idStackIndex] = null;\n    treeContextOverflow = idStack[--idStackIndex];\n    idStack[idStackIndex] = null;\n    treeContextId = idStack[--idStackIndex];\n    idStack[idStackIndex] = null;\n  }\n}\nfunction getSuspendedTreeContext() {\n  warnIfNotHydrating();\n\n  if (treeContextProvider !== null) {\n    return {\n      id: treeContextId,\n      overflow: treeContextOverflow\n    };\n  } else {\n    return null;\n  }\n}\nfunction restoreSuspendedTreeContext(workInProgress, suspendedContext) {\n  warnIfNotHydrating();\n  idStack[idStackIndex++] = treeContextId;\n  idStack[idStackIndex++] = treeContextOverflow;\n  idStack[idStackIndex++] = treeContextProvider;\n  treeContextId = suspendedContext.id;\n  treeContextOverflow = suspendedContext.overflow;\n  treeContextProvider = workInProgress;\n}\n\nfunction warnIfNotHydrating() {\n  {\n    if (!getIsHydrating()) {\n      error('Expected to be hydrating. This is a bug in React. Please file ' + 'an issue.');\n    }\n  }\n}\n\n// This may have been an insertion or a hydration.\n\nvar hydrationParentFiber = null;\nvar nextHydratableInstance = null;\nvar isHydrating = false; // This flag allows for warning supression when we expect there to be mismatches\n// due to earlier mismatches or a suspended fiber.\n\nvar didSuspendOrErrorDEV = false; // Hydration errors that were thrown inside this boundary\n\nvar hydrationErrors = null;\n\nfunction warnIfHydrating() {\n  {\n    if (isHydrating) {\n      error('We should not be hydrating here. This is a bug in React. Please file a bug.');\n    }\n  }\n}\n\nfunction markDidThrowWhileHydratingDEV() {\n  {\n    didSuspendOrErrorDEV = true;\n  }\n}\nfunction didSuspendOrErrorWhileHydratingDEV() {\n  {\n    return didSuspendOrErrorDEV;\n  }\n}\n\nfunction enterHydrationState(fiber) {\n\n  var parentInstance = fiber.stateNode.containerInfo;\n  nextHydratableInstance = getFirstHydratableChildWithinContainer(parentInstance);\n  hydrationParentFiber = fiber;\n  isHydrating = true;\n  hydrationErrors = null;\n  didSuspendOrErrorDEV = false;\n  return true;\n}\n\nfunction reenterHydrationStateFromDehydratedSuspenseInstance(fiber, suspenseInstance, treeContext) {\n\n  nextHydratableInstance = getFirstHydratableChildWithinSuspenseInstance(suspenseInstance);\n  hydrationParentFiber = fiber;\n  isHydrating = true;\n  hydrationErrors = null;\n  didSuspendOrErrorDEV = false;\n\n  if (treeContext !== null) {\n    restoreSuspendedTreeContext(fiber, treeContext);\n  }\n\n  return true;\n}\n\nfunction warnUnhydratedInstance(returnFiber, instance) {\n  {\n    switch (returnFiber.tag) {\n      case HostRoot:\n        {\n          didNotHydrateInstanceWithinContainer(returnFiber.stateNode.containerInfo, instance);\n          break;\n        }\n\n      case HostComponent:\n        {\n          var isConcurrentMode = (returnFiber.mode & ConcurrentMode) !== NoMode;\n          didNotHydrateInstance(returnFiber.type, returnFiber.memoizedProps, returnFiber.stateNode, instance, // TODO: Delete this argument when we remove the legacy root API.\n          isConcurrentMode);\n          break;\n        }\n\n      case SuspenseComponent:\n        {\n          var suspenseState = returnFiber.memoizedState;\n          if (suspenseState.dehydrated !== null) didNotHydrateInstanceWithinSuspenseInstance(suspenseState.dehydrated, instance);\n          break;\n        }\n    }\n  }\n}\n\nfunction deleteHydratableInstance(returnFiber, instance) {\n  warnUnhydratedInstance(returnFiber, instance);\n  var childToDelete = createFiberFromHostInstanceForDeletion();\n  childToDelete.stateNode = instance;\n  childToDelete.return = returnFiber;\n  var deletions = returnFiber.deletions;\n\n  if (deletions === null) {\n    returnFiber.deletions = [childToDelete];\n    returnFiber.flags |= ChildDeletion;\n  } else {\n    deletions.push(childToDelete);\n  }\n}\n\nfunction warnNonhydratedInstance(returnFiber, fiber) {\n  {\n    if (didSuspendOrErrorDEV) {\n      // Inside a boundary that already suspended. We're currently rendering the\n      // siblings of a suspended node. The mismatch may be due to the missing\n      // data, so it's probably a false positive.\n      return;\n    }\n\n    switch (returnFiber.tag) {\n      case HostRoot:\n        {\n          var parentContainer = returnFiber.stateNode.containerInfo;\n\n          switch (fiber.tag) {\n            case HostComponent:\n              var type = fiber.type;\n              var props = fiber.pendingProps;\n              didNotFindHydratableInstanceWithinContainer(parentContainer, type);\n              break;\n\n            case HostText:\n              var text = fiber.pendingProps;\n              didNotFindHydratableTextInstanceWithinContainer(parentContainer, text);\n              break;\n          }\n\n          break;\n        }\n\n      case HostComponent:\n        {\n          var parentType = returnFiber.type;\n          var parentProps = returnFiber.memoizedProps;\n          var parentInstance = returnFiber.stateNode;\n\n          switch (fiber.tag) {\n            case HostComponent:\n              {\n                var _type = fiber.type;\n                var _props = fiber.pendingProps;\n                var isConcurrentMode = (returnFiber.mode & ConcurrentMode) !== NoMode;\n                didNotFindHydratableInstance(parentType, parentProps, parentInstance, _type, _props, // TODO: Delete this argument when we remove the legacy root API.\n                isConcurrentMode);\n                break;\n              }\n\n            case HostText:\n              {\n                var _text = fiber.pendingProps;\n\n                var _isConcurrentMode = (returnFiber.mode & ConcurrentMode) !== NoMode;\n\n                didNotFindHydratableTextInstance(parentType, parentProps, parentInstance, _text, // TODO: Delete this argument when we remove the legacy root API.\n                _isConcurrentMode);\n                break;\n              }\n          }\n\n          break;\n        }\n\n      case SuspenseComponent:\n        {\n          var suspenseState = returnFiber.memoizedState;\n          var _parentInstance = suspenseState.dehydrated;\n          if (_parentInstance !== null) switch (fiber.tag) {\n            case HostComponent:\n              var _type2 = fiber.type;\n              var _props2 = fiber.pendingProps;\n              didNotFindHydratableInstanceWithinSuspenseInstance(_parentInstance, _type2);\n              break;\n\n            case HostText:\n              var _text2 = fiber.pendingProps;\n              didNotFindHydratableTextInstanceWithinSuspenseInstance(_parentInstance, _text2);\n              break;\n          }\n          break;\n        }\n\n      default:\n        return;\n    }\n  }\n}\n\nfunction insertNonHydratedInstance(returnFiber, fiber) {\n  fiber.flags = fiber.flags & ~Hydrating | Placement;\n  warnNonhydratedInstance(returnFiber, fiber);\n}\n\nfunction tryHydrate(fiber, nextInstance) {\n  switch (fiber.tag) {\n    case HostComponent:\n      {\n        var type = fiber.type;\n        var props = fiber.pendingProps;\n        var instance = canHydrateInstance(nextInstance, type);\n\n        if (instance !== null) {\n          fiber.stateNode = instance;\n          hydrationParentFiber = fiber;\n          nextHydratableInstance = getFirstHydratableChild(instance);\n          return true;\n        }\n\n        return false;\n      }\n\n    case HostText:\n      {\n        var text = fiber.pendingProps;\n        var textInstance = canHydrateTextInstance(nextInstance, text);\n\n        if (textInstance !== null) {\n          fiber.stateNode = textInstance;\n          hydrationParentFiber = fiber; // Text Instances don't have children so there's nothing to hydrate.\n\n          nextHydratableInstance = null;\n          return true;\n        }\n\n        return false;\n      }\n\n    case SuspenseComponent:\n      {\n        var suspenseInstance = canHydrateSuspenseInstance(nextInstance);\n\n        if (suspenseInstance !== null) {\n          var suspenseState = {\n            dehydrated: suspenseInstance,\n            treeContext: getSuspendedTreeContext(),\n            retryLane: OffscreenLane\n          };\n          fiber.memoizedState = suspenseState; // Store the dehydrated fragment as a child fiber.\n          // This simplifies the code for getHostSibling and deleting nodes,\n          // since it doesn't have to consider all Suspense boundaries and\n          // check if they're dehydrated ones or not.\n\n          var dehydratedFragment = createFiberFromDehydratedFragment(suspenseInstance);\n          dehydratedFragment.return = fiber;\n          fiber.child = dehydratedFragment;\n          hydrationParentFiber = fiber; // While a Suspense Instance does have children, we won't step into\n          // it during the first pass. Instead, we'll reenter it later.\n\n          nextHydratableInstance = null;\n          return true;\n        }\n\n        return false;\n      }\n\n    default:\n      return false;\n  }\n}\n\nfunction shouldClientRenderOnMismatch(fiber) {\n  return (fiber.mode & ConcurrentMode) !== NoMode && (fiber.flags & DidCapture) === NoFlags;\n}\n\nfunction throwOnHydrationMismatch(fiber) {\n  throw new Error('Hydration failed because the initial UI does not match what was ' + 'rendered on the server.');\n}\n\nfunction tryToClaimNextHydratableInstance(fiber) {\n  if (!isHydrating) {\n    return;\n  }\n\n  var nextInstance = nextHydratableInstance;\n\n  if (!nextInstance) {\n    if (shouldClientRenderOnMismatch(fiber)) {\n      warnNonhydratedInstance(hydrationParentFiber, fiber);\n      throwOnHydrationMismatch();\n    } // Nothing to hydrate. Make it an insertion.\n\n\n    insertNonHydratedInstance(hydrationParentFiber, fiber);\n    isHydrating = false;\n    hydrationParentFiber = fiber;\n    return;\n  }\n\n  var firstAttemptedInstance = nextInstance;\n\n  if (!tryHydrate(fiber, nextInstance)) {\n    if (shouldClientRenderOnMismatch(fiber)) {\n      warnNonhydratedInstance(hydrationParentFiber, fiber);\n      throwOnHydrationMismatch();\n    } // If we can't hydrate this instance let's try the next one.\n    // We use this as a heuristic. It's based on intuition and not data so it\n    // might be flawed or unnecessary.\n\n\n    nextInstance = getNextHydratableSibling(firstAttemptedInstance);\n    var prevHydrationParentFiber = hydrationParentFiber;\n\n    if (!nextInstance || !tryHydrate(fiber, nextInstance)) {\n      // Nothing to hydrate. Make it an insertion.\n      insertNonHydratedInstance(hydrationParentFiber, fiber);\n      isHydrating = false;\n      hydrationParentFiber = fiber;\n      return;\n    } // We matched the next one, we'll now assume that the first one was\n    // superfluous and we'll delete it. Since we can't eagerly delete it\n    // we'll have to schedule a deletion. To do that, this node needs a dummy\n    // fiber associated with it.\n\n\n    deleteHydratableInstance(prevHydrationParentFiber, firstAttemptedInstance);\n  }\n}\n\nfunction prepareToHydrateHostInstance(fiber, rootContainerInstance, hostContext) {\n\n  var instance = fiber.stateNode;\n  var shouldWarnIfMismatchDev = !didSuspendOrErrorDEV;\n  var updatePayload = hydrateInstance(instance, fiber.type, fiber.memoizedProps, rootContainerInstance, hostContext, fiber, shouldWarnIfMismatchDev); // TODO: Type this specific to this type of component.\n\n  fiber.updateQueue = updatePayload; // If the update payload indicates that there is a change or if there\n  // is a new ref we mark this as an update.\n\n  if (updatePayload !== null) {\n    return true;\n  }\n\n  return false;\n}\n\nfunction prepareToHydrateHostTextInstance(fiber) {\n\n  var textInstance = fiber.stateNode;\n  var textContent = fiber.memoizedProps;\n  var shouldUpdate = hydrateTextInstance(textInstance, textContent, fiber);\n\n  if (shouldUpdate) {\n    // We assume that prepareToHydrateHostTextInstance is called in a context where the\n    // hydration parent is the parent host component of this host text.\n    var returnFiber = hydrationParentFiber;\n\n    if (returnFiber !== null) {\n      switch (returnFiber.tag) {\n        case HostRoot:\n          {\n            var parentContainer = returnFiber.stateNode.containerInfo;\n            var isConcurrentMode = (returnFiber.mode & ConcurrentMode) !== NoMode;\n            didNotMatchHydratedContainerTextInstance(parentContainer, textInstance, textContent, // TODO: Delete this argument when we remove the legacy root API.\n            isConcurrentMode);\n            break;\n          }\n\n        case HostComponent:\n          {\n            var parentType = returnFiber.type;\n            var parentProps = returnFiber.memoizedProps;\n            var parentInstance = returnFiber.stateNode;\n\n            var _isConcurrentMode2 = (returnFiber.mode & ConcurrentMode) !== NoMode;\n\n            didNotMatchHydratedTextInstance(parentType, parentProps, parentInstance, textInstance, textContent, // TODO: Delete this argument when we remove the legacy root API.\n            _isConcurrentMode2);\n            break;\n          }\n      }\n    }\n  }\n\n  return shouldUpdate;\n}\n\nfunction prepareToHydrateHostSuspenseInstance(fiber) {\n\n  var suspenseState = fiber.memoizedState;\n  var suspenseInstance = suspenseState !== null ? suspenseState.dehydrated : null;\n\n  if (!suspenseInstance) {\n    throw new Error('Expected to have a hydrated suspense instance. ' + 'This error is likely caused by a bug in React. Please file an issue.');\n  }\n\n  hydrateSuspenseInstance(suspenseInstance, fiber);\n}\n\nfunction skipPastDehydratedSuspenseInstance(fiber) {\n\n  var suspenseState = fiber.memoizedState;\n  var suspenseInstance = suspenseState !== null ? suspenseState.dehydrated : null;\n\n  if (!suspenseInstance) {\n    throw new Error('Expected to have a hydrated suspense instance. ' + 'This error is likely caused by a bug in React. Please file an issue.');\n  }\n\n  return getNextHydratableInstanceAfterSuspenseInstance(suspenseInstance);\n}\n\nfunction popToNextHostParent(fiber) {\n  var parent = fiber.return;\n\n  while (parent !== null && parent.tag !== HostComponent && parent.tag !== HostRoot && parent.tag !== SuspenseComponent) {\n    parent = parent.return;\n  }\n\n  hydrationParentFiber = parent;\n}\n\nfunction popHydrationState(fiber) {\n\n  if (fiber !== hydrationParentFiber) {\n    // We're deeper than the current hydration context, inside an inserted\n    // tree.\n    return false;\n  }\n\n  if (!isHydrating) {\n    // If we're not currently hydrating but we're in a hydration context, then\n    // we were an insertion and now need to pop up reenter hydration of our\n    // siblings.\n    popToNextHostParent(fiber);\n    isHydrating = true;\n    return false;\n  } // If we have any remaining hydratable nodes, we need to delete them now.\n  // We only do this deeper than head and body since they tend to have random\n  // other nodes in them. We also ignore components with pure text content in\n  // side of them. We also don't delete anything inside the root container.\n\n\n  if (fiber.tag !== HostRoot && (fiber.tag !== HostComponent || shouldDeleteUnhydratedTailInstances(fiber.type) && !shouldSetTextContent(fiber.type, fiber.memoizedProps))) {\n    var nextInstance = nextHydratableInstance;\n\n    if (nextInstance) {\n      if (shouldClientRenderOnMismatch(fiber)) {\n        warnIfUnhydratedTailNodes(fiber);\n        throwOnHydrationMismatch();\n      } else {\n        while (nextInstance) {\n          deleteHydratableInstance(fiber, nextInstance);\n          nextInstance = getNextHydratableSibling(nextInstance);\n        }\n      }\n    }\n  }\n\n  popToNextHostParent(fiber);\n\n  if (fiber.tag === SuspenseComponent) {\n    nextHydratableInstance = skipPastDehydratedSuspenseInstance(fiber);\n  } else {\n    nextHydratableInstance = hydrationParentFiber ? getNextHydratableSibling(fiber.stateNode) : null;\n  }\n\n  return true;\n}\n\nfunction hasUnhydratedTailNodes() {\n  return isHydrating && nextHydratableInstance !== null;\n}\n\nfunction warnIfUnhydratedTailNodes(fiber) {\n  var nextInstance = nextHydratableInstance;\n\n  while (nextInstance) {\n    warnUnhydratedInstance(fiber, nextInstance);\n    nextInstance = getNextHydratableSibling(nextInstance);\n  }\n}\n\nfunction resetHydrationState() {\n\n  hydrationParentFiber = null;\n  nextHydratableInstance = null;\n  isHydrating = false;\n  didSuspendOrErrorDEV = false;\n}\n\nfunction upgradeHydrationErrorsToRecoverable() {\n  if (hydrationErrors !== null) {\n    // Successfully completed a forced client render. The errors that occurred\n    // during the hydration attempt are now recovered. We will log them in\n    // commit phase, once the entire tree has finished.\n    queueRecoverableErrors(hydrationErrors);\n    hydrationErrors = null;\n  }\n}\n\nfunction getIsHydrating() {\n  return isHydrating;\n}\n\nfunction queueHydrationError(error) {\n  if (hydrationErrors === null) {\n    hydrationErrors = [error];\n  } else {\n    hydrationErrors.push(error);\n  }\n}\n\nvar ReactCurrentBatchConfig$1 = ReactSharedInternals.ReactCurrentBatchConfig;\nvar NoTransition = null;\nfunction requestCurrentTransition() {\n  return ReactCurrentBatchConfig$1.transition;\n}\n\nvar ReactStrictModeWarnings = {\n  recordUnsafeLifecycleWarnings: function (fiber, instance) {},\n  flushPendingUnsafeLifecycleWarnings: function () {},\n  recordLegacyContextWarning: function (fiber, instance) {},\n  flushLegacyContextWarning: function () {},\n  discardPendingWarnings: function () {}\n};\n\n{\n  var findStrictRoot = function (fiber) {\n    var maybeStrictRoot = null;\n    var node = fiber;\n\n    while (node !== null) {\n      if (node.mode & StrictLegacyMode) {\n        maybeStrictRoot = node;\n      }\n\n      node = node.return;\n    }\n\n    return maybeStrictRoot;\n  };\n\n  var setToSortedString = function (set) {\n    var array = [];\n    set.forEach(function (value) {\n      array.push(value);\n    });\n    return array.sort().join(', ');\n  };\n\n  var pendingComponentWillMountWarnings = [];\n  var pendingUNSAFE_ComponentWillMountWarnings = [];\n  var pendingComponentWillReceivePropsWarnings = [];\n  var pendingUNSAFE_ComponentWillReceivePropsWarnings = [];\n  var pendingComponentWillUpdateWarnings = [];\n  var pendingUNSAFE_ComponentWillUpdateWarnings = []; // Tracks components we have already warned about.\n\n  var didWarnAboutUnsafeLifecycles = new Set();\n\n  ReactStrictModeWarnings.recordUnsafeLifecycleWarnings = function (fiber, instance) {\n    // Dedupe strategy: Warn once per component.\n    if (didWarnAboutUnsafeLifecycles.has(fiber.type)) {\n      return;\n    }\n\n    if (typeof instance.componentWillMount === 'function' && // Don't warn about react-lifecycles-compat polyfilled components.\n    instance.componentWillMount.__suppressDeprecationWarning !== true) {\n      pendingComponentWillMountWarnings.push(fiber);\n    }\n\n    if (fiber.mode & StrictLegacyMode && typeof instance.UNSAFE_componentWillMount === 'function') {\n      pendingUNSAFE_ComponentWillMountWarnings.push(fiber);\n    }\n\n    if (typeof instance.componentWillReceiveProps === 'function' && instance.componentWillReceiveProps.__suppressDeprecationWarning !== true) {\n      pendingComponentWillReceivePropsWarnings.push(fiber);\n    }\n\n    if (fiber.mode & StrictLegacyMode && typeof instance.UNSAFE_componentWillReceiveProps === 'function') {\n      pendingUNSAFE_ComponentWillReceivePropsWarnings.push(fiber);\n    }\n\n    if (typeof instance.componentWillUpdate === 'function' && instance.componentWillUpdate.__suppressDeprecationWarning !== true) {\n      pendingComponentWillUpdateWarnings.push(fiber);\n    }\n\n    if (fiber.mode & StrictLegacyMode && typeof instance.UNSAFE_componentWillUpdate === 'function') {\n      pendingUNSAFE_ComponentWillUpdateWarnings.push(fiber);\n    }\n  };\n\n  ReactStrictModeWarnings.flushPendingUnsafeLifecycleWarnings = function () {\n    // We do an initial pass to gather component names\n    var componentWillMountUniqueNames = new Set();\n\n    if (pendingComponentWillMountWarnings.length > 0) {\n      pendingComponentWillMountWarnings.forEach(function (fiber) {\n        componentWillMountUniqueNames.add(getComponentNameFromFiber(fiber) || 'Component');\n        didWarnAboutUnsafeLifecycles.add(fiber.type);\n      });\n      pendingComponentWillMountWarnings = [];\n    }\n\n    var UNSAFE_componentWillMountUniqueNames = new Set();\n\n    if (pendingUNSAFE_ComponentWillMountWarnings.length > 0) {\n      pendingUNSAFE_ComponentWillMountWarnings.forEach(function (fiber) {\n        UNSAFE_componentWillMountUniqueNames.add(getComponentNameFromFiber(fiber) || 'Component');\n        didWarnAboutUnsafeLifecycles.add(fiber.type);\n      });\n      pendingUNSAFE_ComponentWillMountWarnings = [];\n    }\n\n    var componentWillReceivePropsUniqueNames = new Set();\n\n    if (pendingComponentWillReceivePropsWarnings.length > 0) {\n      pendingComponentWillReceivePropsWarnings.forEach(function (fiber) {\n        componentWillReceivePropsUniqueNames.add(getComponentNameFromFiber(fiber) || 'Component');\n        didWarnAboutUnsafeLifecycles.add(fiber.type);\n      });\n      pendingComponentWillReceivePropsWarnings = [];\n    }\n\n    var UNSAFE_componentWillReceivePropsUniqueNames = new Set();\n\n    if (pendingUNSAFE_ComponentWillReceivePropsWarnings.length > 0) {\n      pendingUNSAFE_ComponentWillReceivePropsWarnings.forEach(function (fiber) {\n        UNSAFE_componentWillReceivePropsUniqueNames.add(getComponentNameFromFiber(fiber) || 'Component');\n        didWarnAboutUnsafeLifecycles.add(fiber.type);\n      });\n      pendingUNSAFE_ComponentWillReceivePropsWarnings = [];\n    }\n\n    var componentWillUpdateUniqueNames = new Set();\n\n    if (pendingComponentWillUpdateWarnings.length > 0) {\n      pendingComponentWillUpdateWarnings.forEach(function (fiber) {\n        componentWillUpdateUniqueNames.add(getComponentNameFromFiber(fiber) || 'Component');\n        didWarnAboutUnsafeLifecycles.add(fiber.type);\n      });\n      pendingComponentWillUpdateWarnings = [];\n    }\n\n    var UNSAFE_componentWillUpdateUniqueNames = new Set();\n\n    if (pendingUNSAFE_ComponentWillUpdateWarnings.length > 0) {\n      pendingUNSAFE_ComponentWillUpdateWarnings.forEach(function (fiber) {\n        UNSAFE_componentWillUpdateUniqueNames.add(getComponentNameFromFiber(fiber) || 'Component');\n        didWarnAboutUnsafeLifecycles.add(fiber.type);\n      });\n      pendingUNSAFE_ComponentWillUpdateWarnings = [];\n    } // Finally, we flush all the warnings\n    // UNSAFE_ ones before the deprecated ones, since they'll be 'louder'\n\n\n    if (UNSAFE_componentWillMountUniqueNames.size > 0) {\n      var sortedNames = setToSortedString(UNSAFE_componentWillMountUniqueNames);\n\n      error('Using UNSAFE_componentWillMount in strict mode is not recommended and may indicate bugs in your code. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n' + '* Move code with side effects to componentDidMount, and set initial state in the constructor.\\n' + '\\nPlease update the following components: %s', sortedNames);\n    }\n\n    if (UNSAFE_componentWillReceivePropsUniqueNames.size > 0) {\n      var _sortedNames = setToSortedString(UNSAFE_componentWillReceivePropsUniqueNames);\n\n      error('Using UNSAFE_componentWillReceiveProps in strict mode is not recommended ' + 'and may indicate bugs in your code. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n' + '* Move data fetching code or side effects to componentDidUpdate.\\n' + \"* If you're updating state whenever props change, \" + 'refactor your code to use memoization techniques or move it to ' + 'static getDerivedStateFromProps. Learn more at: https://reactjs.org/link/derived-state\\n' + '\\nPlease update the following components: %s', _sortedNames);\n    }\n\n    if (UNSAFE_componentWillUpdateUniqueNames.size > 0) {\n      var _sortedNames2 = setToSortedString(UNSAFE_componentWillUpdateUniqueNames);\n\n      error('Using UNSAFE_componentWillUpdate in strict mode is not recommended ' + 'and may indicate bugs in your code. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n' + '* Move data fetching code or side effects to componentDidUpdate.\\n' + '\\nPlease update the following components: %s', _sortedNames2);\n    }\n\n    if (componentWillMountUniqueNames.size > 0) {\n      var _sortedNames3 = setToSortedString(componentWillMountUniqueNames);\n\n      warn('componentWillMount has been renamed, and is not recommended for use. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n' + '* Move code with side effects to componentDidMount, and set initial state in the constructor.\\n' + '* Rename componentWillMount to UNSAFE_componentWillMount to suppress ' + 'this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. ' + 'To rename all deprecated lifecycles to their new names, you can run ' + '`npx react-codemod rename-unsafe-lifecycles` in your project source folder.\\n' + '\\nPlease update the following components: %s', _sortedNames3);\n    }\n\n    if (componentWillReceivePropsUniqueNames.size > 0) {\n      var _sortedNames4 = setToSortedString(componentWillReceivePropsUniqueNames);\n\n      warn('componentWillReceiveProps has been renamed, and is not recommended for use. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n' + '* Move data fetching code or side effects to componentDidUpdate.\\n' + \"* If you're updating state whenever props change, refactor your \" + 'code to use memoization techniques or move it to ' + 'static getDerivedStateFromProps. Learn more at: https://reactjs.org/link/derived-state\\n' + '* Rename componentWillReceiveProps to UNSAFE_componentWillReceiveProps to suppress ' + 'this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. ' + 'To rename all deprecated lifecycles to their new names, you can run ' + '`npx react-codemod rename-unsafe-lifecycles` in your project source folder.\\n' + '\\nPlease update the following components: %s', _sortedNames4);\n    }\n\n    if (componentWillUpdateUniqueNames.size > 0) {\n      var _sortedNames5 = setToSortedString(componentWillUpdateUniqueNames);\n\n      warn('componentWillUpdate has been renamed, and is not recommended for use. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\\n\\n' + '* Move data fetching code or side effects to componentDidUpdate.\\n' + '* Rename componentWillUpdate to UNSAFE_componentWillUpdate to suppress ' + 'this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. ' + 'To rename all deprecated lifecycles to their new names, you can run ' + '`npx react-codemod rename-unsafe-lifecycles` in your project source folder.\\n' + '\\nPlease update the following components: %s', _sortedNames5);\n    }\n  };\n\n  var pendingLegacyContextWarning = new Map(); // Tracks components we have already warned about.\n\n  var didWarnAboutLegacyContext = new Set();\n\n  ReactStrictModeWarnings.recordLegacyContextWarning = function (fiber, instance) {\n    var strictRoot = findStrictRoot(fiber);\n\n    if (strictRoot === null) {\n      error('Expected to find a StrictMode component in a strict mode tree. ' + 'This error is likely caused by a bug in React. Please file an issue.');\n\n      return;\n    } // Dedup strategy: Warn once per component.\n\n\n    if (didWarnAboutLegacyContext.has(fiber.type)) {\n      return;\n    }\n\n    var warningsForRoot = pendingLegacyContextWarning.get(strictRoot);\n\n    if (fiber.type.contextTypes != null || fiber.type.childContextTypes != null || instance !== null && typeof instance.getChildContext === 'function') {\n      if (warningsForRoot === undefined) {\n        warningsForRoot = [];\n        pendingLegacyContextWarning.set(strictRoot, warningsForRoot);\n      }\n\n      warningsForRoot.push(fiber);\n    }\n  };\n\n  ReactStrictModeWarnings.flushLegacyContextWarning = function () {\n    pendingLegacyContextWarning.forEach(function (fiberArray, strictRoot) {\n      if (fiberArray.length === 0) {\n        return;\n      }\n\n      var firstFiber = fiberArray[0];\n      var uniqueNames = new Set();\n      fiberArray.forEach(function (fiber) {\n        uniqueNames.add(getComponentNameFromFiber(fiber) || 'Component');\n        didWarnAboutLegacyContext.add(fiber.type);\n      });\n      var sortedNames = setToSortedString(uniqueNames);\n\n      try {\n        setCurrentFiber(firstFiber);\n\n        error('Legacy context API has been detected within a strict-mode tree.' + '\\n\\nThe old API will be supported in all 16.x releases, but applications ' + 'using it should migrate to the new version.' + '\\n\\nPlease update the following components: %s' + '\\n\\nLearn more about this warning here: https://reactjs.org/link/legacy-context', sortedNames);\n      } finally {\n        resetCurrentFiber();\n      }\n    });\n  };\n\n  ReactStrictModeWarnings.discardPendingWarnings = function () {\n    pendingComponentWillMountWarnings = [];\n    pendingUNSAFE_ComponentWillMountWarnings = [];\n    pendingComponentWillReceivePropsWarnings = [];\n    pendingUNSAFE_ComponentWillReceivePropsWarnings = [];\n    pendingComponentWillUpdateWarnings = [];\n    pendingUNSAFE_ComponentWillUpdateWarnings = [];\n    pendingLegacyContextWarning = new Map();\n  };\n}\n\nfunction resolveDefaultProps(Component, baseProps) {\n  if (Component && Component.defaultProps) {\n    // Resolve default props. Taken from ReactElement\n    var props = assign({}, baseProps);\n    var defaultProps = Component.defaultProps;\n\n    for (var propName in defaultProps) {\n      if (props[propName] === undefined) {\n        props[propName] = defaultProps[propName];\n      }\n    }\n\n    return props;\n  }\n\n  return baseProps;\n}\n\nvar valueCursor = createCursor(null);\nvar rendererSigil;\n\n{\n  // Use this to detect multiple renderers using the same context\n  rendererSigil = {};\n}\n\nvar currentlyRenderingFiber = null;\nvar lastContextDependency = null;\nvar lastFullyObservedContext = null;\nvar isDisallowedContextReadInDEV = false;\nfunction resetContextDependencies() {\n  // This is called right before React yields execution, to ensure `readContext`\n  // cannot be called outside the render phase.\n  currentlyRenderingFiber = null;\n  lastContextDependency = null;\n  lastFullyObservedContext = null;\n\n  {\n    isDisallowedContextReadInDEV = false;\n  }\n}\nfunction enterDisallowedContextReadInDEV() {\n  {\n    isDisallowedContextReadInDEV = true;\n  }\n}\nfunction exitDisallowedContextReadInDEV() {\n  {\n    isDisallowedContextReadInDEV = false;\n  }\n}\nfunction pushProvider(providerFiber, context, nextValue) {\n  {\n    push(valueCursor, context._currentValue, providerFiber);\n    context._currentValue = nextValue;\n\n    {\n      if (context._currentRenderer !== undefined && context._currentRenderer !== null && context._currentRenderer !== rendererSigil) {\n        error('Detected multiple renderers concurrently rendering the ' + 'same context provider. This is currently unsupported.');\n      }\n\n      context._currentRenderer = rendererSigil;\n    }\n  }\n}\nfunction popProvider(context, providerFiber) {\n  var currentValue = valueCursor.current;\n  pop(valueCursor, providerFiber);\n\n  {\n    {\n      context._currentValue = currentValue;\n    }\n  }\n}\nfunction scheduleContextWorkOnParentPath(parent, renderLanes, propagationRoot) {\n  // Update the child lanes of all the ancestors, including the alternates.\n  var node = parent;\n\n  while (node !== null) {\n    var alternate = node.alternate;\n\n    if (!isSubsetOfLanes(node.childLanes, renderLanes)) {\n      node.childLanes = mergeLanes(node.childLanes, renderLanes);\n\n      if (alternate !== null) {\n        alternate.childLanes = mergeLanes(alternate.childLanes, renderLanes);\n      }\n    } else if (alternate !== null && !isSubsetOfLanes(alternate.childLanes, renderLanes)) {\n      alternate.childLanes = mergeLanes(alternate.childLanes, renderLanes);\n    }\n\n    if (node === propagationRoot) {\n      break;\n    }\n\n    node = node.return;\n  }\n\n  {\n    if (node !== propagationRoot) {\n      error('Expected to find the propagation root when scheduling context work. ' + 'This error is likely caused by a bug in React. Please file an issue.');\n    }\n  }\n}\nfunction propagateContextChange(workInProgress, context, renderLanes) {\n  {\n    propagateContextChange_eager(workInProgress, context, renderLanes);\n  }\n}\n\nfunction propagateContextChange_eager(workInProgress, context, renderLanes) {\n\n  var fiber = workInProgress.child;\n\n  if (fiber !== null) {\n    // Set the return pointer of the child to the work-in-progress fiber.\n    fiber.return = workInProgress;\n  }\n\n  while (fiber !== null) {\n    var nextFiber = void 0; // Visit this fiber.\n\n    var list = fiber.dependencies;\n\n    if (list !== null) {\n      nextFiber = fiber.child;\n      var dependency = list.firstContext;\n\n      while (dependency !== null) {\n        // Check if the context matches.\n        if (dependency.context === context) {\n          // Match! Schedule an update on this fiber.\n          if (fiber.tag === ClassComponent) {\n            // Schedule a force update on the work-in-progress.\n            var lane = pickArbitraryLane(renderLanes);\n            var update = createUpdate(NoTimestamp, lane);\n            update.tag = ForceUpdate; // TODO: Because we don't have a work-in-progress, this will add the\n            // update to the current fiber, too, which means it will persist even if\n            // this render is thrown away. Since it's a race condition, not sure it's\n            // worth fixing.\n            // Inlined `enqueueUpdate` to remove interleaved update check\n\n            var updateQueue = fiber.updateQueue;\n\n            if (updateQueue === null) ; else {\n              var sharedQueue = updateQueue.shared;\n              var pending = sharedQueue.pending;\n\n              if (pending === null) {\n                // This is the first update. Create a circular list.\n                update.next = update;\n              } else {\n                update.next = pending.next;\n                pending.next = update;\n              }\n\n              sharedQueue.pending = update;\n            }\n          }\n\n          fiber.lanes = mergeLanes(fiber.lanes, renderLanes);\n          var alternate = fiber.alternate;\n\n          if (alternate !== null) {\n            alternate.lanes = mergeLanes(alternate.lanes, renderLanes);\n          }\n\n          scheduleContextWorkOnParentPath(fiber.return, renderLanes, workInProgress); // Mark the updated lanes on the list, too.\n\n          list.lanes = mergeLanes(list.lanes, renderLanes); // Since we already found a match, we can stop traversing the\n          // dependency list.\n\n          break;\n        }\n\n        dependency = dependency.next;\n      }\n    } else if (fiber.tag === ContextProvider) {\n      // Don't scan deeper if this is a matching provider\n      nextFiber = fiber.type === workInProgress.type ? null : fiber.child;\n    } else if (fiber.tag === DehydratedFragment) {\n      // If a dehydrated suspense boundary is in this subtree, we don't know\n      // if it will have any context consumers in it. The best we can do is\n      // mark it as having updates.\n      var parentSuspense = fiber.return;\n\n      if (parentSuspense === null) {\n        throw new Error('We just came from a parent so we must have had a parent. This is a bug in React.');\n      }\n\n      parentSuspense.lanes = mergeLanes(parentSuspense.lanes, renderLanes);\n      var _alternate = parentSuspense.alternate;\n\n      if (_alternate !== null) {\n        _alternate.lanes = mergeLanes(_alternate.lanes, renderLanes);\n      } // This is intentionally passing this fiber as the parent\n      // because we want to schedule this fiber as having work\n      // on its children. We'll use the childLanes on\n      // this fiber to indicate that a context has changed.\n\n\n      scheduleContextWorkOnParentPath(parentSuspense, renderLanes, workInProgress);\n      nextFiber = fiber.sibling;\n    } else {\n      // Traverse down.\n      nextFiber = fiber.child;\n    }\n\n    if (nextFiber !== null) {\n      // Set the return pointer of the child to the work-in-progress fiber.\n      nextFiber.return = fiber;\n    } else {\n      // No child. Traverse to next sibling.\n      nextFiber = fiber;\n\n      while (nextFiber !== null) {\n        if (nextFiber === workInProgress) {\n          // We're back to the root of this subtree. Exit.\n          nextFiber = null;\n          break;\n        }\n\n        var sibling = nextFiber.sibling;\n\n        if (sibling !== null) {\n          // Set the return pointer of the sibling to the work-in-progress fiber.\n          sibling.return = nextFiber.return;\n          nextFiber = sibling;\n          break;\n        } // No more siblings. Traverse up.\n\n\n        nextFiber = nextFiber.return;\n      }\n    }\n\n    fiber = nextFiber;\n  }\n}\nfunction prepareToReadContext(workInProgress, renderLanes) {\n  currentlyRenderingFiber = workInProgress;\n  lastContextDependency = null;\n  lastFullyObservedContext = null;\n  var dependencies = workInProgress.dependencies;\n\n  if (dependencies !== null) {\n    {\n      var firstContext = dependencies.firstContext;\n\n      if (firstContext !== null) {\n        if (includesSomeLane(dependencies.lanes, renderLanes)) {\n          // Context list has a pending update. Mark that this fiber performed work.\n          markWorkInProgressReceivedUpdate();\n        } // Reset the work-in-progress list\n\n\n        dependencies.firstContext = null;\n      }\n    }\n  }\n}\nfunction readContext(context) {\n  {\n    // This warning would fire if you read context inside a Hook like useMemo.\n    // Unlike the class check below, it's not enforced in production for perf.\n    if (isDisallowedContextReadInDEV) {\n      error('Context can only be read while React is rendering. ' + 'In classes, you can read it in the render method or getDerivedStateFromProps. ' + 'In function components, you can read it directly in the function body, but not ' + 'inside Hooks like useReducer() or useMemo().');\n    }\n  }\n\n  var value =  context._currentValue ;\n\n  if (lastFullyObservedContext === context) ; else {\n    var contextItem = {\n      context: context,\n      memoizedValue: value,\n      next: null\n    };\n\n    if (lastContextDependency === null) {\n      if (currentlyRenderingFiber === null) {\n        throw new Error('Context can only be read while React is rendering. ' + 'In classes, you can read it in the render method or getDerivedStateFromProps. ' + 'In function components, you can read it directly in the function body, but not ' + 'inside Hooks like useReducer() or useMemo().');\n      } // This is the first dependency for this component. Create a new list.\n\n\n      lastContextDependency = contextItem;\n      currentlyRenderingFiber.dependencies = {\n        lanes: NoLanes,\n        firstContext: contextItem\n      };\n    } else {\n      // Append a new context item.\n      lastContextDependency = lastContextDependency.next = contextItem;\n    }\n  }\n\n  return value;\n}\n\n// render. When this render exits, either because it finishes or because it is\n// interrupted, the interleaved updates will be transferred onto the main part\n// of the queue.\n\nvar concurrentQueues = null;\nfunction pushConcurrentUpdateQueue(queue) {\n  if (concurrentQueues === null) {\n    concurrentQueues = [queue];\n  } else {\n    concurrentQueues.push(queue);\n  }\n}\nfunction finishQueueingConcurrentUpdates() {\n  // Transfer the interleaved updates onto the main queue. Each queue has a\n  // `pending` field and an `interleaved` field. When they are not null, they\n  // point to the last node in a circular linked list. We need to append the\n  // interleaved list to the end of the pending list by joining them into a\n  // single, circular list.\n  if (concurrentQueues !== null) {\n    for (var i = 0; i < concurrentQueues.length; i++) {\n      var queue = concurrentQueues[i];\n      var lastInterleavedUpdate = queue.interleaved;\n\n      if (lastInterleavedUpdate !== null) {\n        queue.interleaved = null;\n        var firstInterleavedUpdate = lastInterleavedUpdate.next;\n        var lastPendingUpdate = queue.pending;\n\n        if (lastPendingUpdate !== null) {\n          var firstPendingUpdate = lastPendingUpdate.next;\n          lastPendingUpdate.next = firstInterleavedUpdate;\n          lastInterleavedUpdate.next = firstPendingUpdate;\n        }\n\n        queue.pending = lastInterleavedUpdate;\n      }\n    }\n\n    concurrentQueues = null;\n  }\n}\nfunction enqueueConcurrentHookUpdate(fiber, queue, update, lane) {\n  var interleaved = queue.interleaved;\n\n  if (interleaved === null) {\n    // This is the first update. Create a circular list.\n    update.next = update; // At the end of the current render, this queue's interleaved updates will\n    // be transferred to the pending queue.\n\n    pushConcurrentUpdateQueue(queue);\n  } else {\n    update.next = interleaved.next;\n    interleaved.next = update;\n  }\n\n  queue.interleaved = update;\n  return markUpdateLaneFromFiberToRoot(fiber, lane);\n}\nfunction enqueueConcurrentHookUpdateAndEagerlyBailout(fiber, queue, update, lane) {\n  var interleaved = queue.interleaved;\n\n  if (interleaved === null) {\n    // This is the first update. Create a circular list.\n    update.next = update; // At the end of the current render, this queue's interleaved updates will\n    // be transferred to the pending queue.\n\n    pushConcurrentUpdateQueue(queue);\n  } else {\n    update.next = interleaved.next;\n    interleaved.next = update;\n  }\n\n  queue.interleaved = update;\n}\nfunction enqueueConcurrentClassUpdate(fiber, queue, update, lane) {\n  var interleaved = queue.interleaved;\n\n  if (interleaved === null) {\n    // This is the first update. Create a circular list.\n    update.next = update; // At the end of the current render, this queue's interleaved updates will\n    // be transferred to the pending queue.\n\n    pushConcurrentUpdateQueue(queue);\n  } else {\n    update.next = interleaved.next;\n    interleaved.next = update;\n  }\n\n  queue.interleaved = update;\n  return markUpdateLaneFromFiberToRoot(fiber, lane);\n}\nfunction enqueueConcurrentRenderForLane(fiber, lane) {\n  return markUpdateLaneFromFiberToRoot(fiber, lane);\n} // Calling this function outside this module should only be done for backwards\n// compatibility and should always be accompanied by a warning.\n\nvar unsafe_markUpdateLaneFromFiberToRoot = markUpdateLaneFromFiberToRoot;\n\nfunction markUpdateLaneFromFiberToRoot(sourceFiber, lane) {\n  // Update the source fiber's lanes\n  sourceFiber.lanes = mergeLanes(sourceFiber.lanes, lane);\n  var alternate = sourceFiber.alternate;\n\n  if (alternate !== null) {\n    alternate.lanes = mergeLanes(alternate.lanes, lane);\n  }\n\n  {\n    if (alternate === null && (sourceFiber.flags & (Placement | Hydrating)) !== NoFlags) {\n      warnAboutUpdateOnNotYetMountedFiberInDEV(sourceFiber);\n    }\n  } // Walk the parent path to the root and update the child lanes.\n\n\n  var node = sourceFiber;\n  var parent = sourceFiber.return;\n\n  while (parent !== null) {\n    parent.childLanes = mergeLanes(parent.childLanes, lane);\n    alternate = parent.alternate;\n\n    if (alternate !== null) {\n      alternate.childLanes = mergeLanes(alternate.childLanes, lane);\n    } else {\n      {\n        if ((parent.flags & (Placement | Hydrating)) !== NoFlags) {\n          warnAboutUpdateOnNotYetMountedFiberInDEV(sourceFiber);\n        }\n      }\n    }\n\n    node = parent;\n    parent = parent.return;\n  }\n\n  if (node.tag === HostRoot) {\n    var root = node.stateNode;\n    return root;\n  } else {\n    return null;\n  }\n}\n\nvar UpdateState = 0;\nvar ReplaceState = 1;\nvar ForceUpdate = 2;\nvar CaptureUpdate = 3; // Global state that is reset at the beginning of calling `processUpdateQueue`.\n// It should only be read right after calling `processUpdateQueue`, via\n// `checkHasForceUpdateAfterProcessing`.\n\nvar hasForceUpdate = false;\nvar didWarnUpdateInsideUpdate;\nvar currentlyProcessingQueue;\n\n{\n  didWarnUpdateInsideUpdate = false;\n  currentlyProcessingQueue = null;\n}\n\nfunction initializeUpdateQueue(fiber) {\n  var queue = {\n    baseState: fiber.memoizedState,\n    firstBaseUpdate: null,\n    lastBaseUpdate: null,\n    shared: {\n      pending: null,\n      interleaved: null,\n      lanes: NoLanes\n    },\n    effects: null\n  };\n  fiber.updateQueue = queue;\n}\nfunction cloneUpdateQueue(current, workInProgress) {\n  // Clone the update queue from current. Unless it's already a clone.\n  var queue = workInProgress.updateQueue;\n  var currentQueue = current.updateQueue;\n\n  if (queue === currentQueue) {\n    var clone = {\n      baseState: currentQueue.baseState,\n      firstBaseUpdate: currentQueue.firstBaseUpdate,\n      lastBaseUpdate: currentQueue.lastBaseUpdate,\n      shared: currentQueue.shared,\n      effects: currentQueue.effects\n    };\n    workInProgress.updateQueue = clone;\n  }\n}\nfunction createUpdate(eventTime, lane) {\n  var update = {\n    eventTime: eventTime,\n    lane: lane,\n    tag: UpdateState,\n    payload: null,\n    callback: null,\n    next: null\n  };\n  return update;\n}\nfunction enqueueUpdate(fiber, update, lane) {\n  var updateQueue = fiber.updateQueue;\n\n  if (updateQueue === null) {\n    // Only occurs if the fiber has been unmounted.\n    return null;\n  }\n\n  var sharedQueue = updateQueue.shared;\n\n  {\n    if (currentlyProcessingQueue === sharedQueue && !didWarnUpdateInsideUpdate) {\n      error('An update (setState, replaceState, or forceUpdate) was scheduled ' + 'from inside an update function. Update functions should be pure, ' + 'with zero side-effects. Consider using componentDidUpdate or a ' + 'callback.');\n\n      didWarnUpdateInsideUpdate = true;\n    }\n  }\n\n  if (isUnsafeClassRenderPhaseUpdate()) {\n    // This is an unsafe render phase update. Add directly to the update\n    // queue so we can process it immediately during the current render.\n    var pending = sharedQueue.pending;\n\n    if (pending === null) {\n      // This is the first update. Create a circular list.\n      update.next = update;\n    } else {\n      update.next = pending.next;\n      pending.next = update;\n    }\n\n    sharedQueue.pending = update; // Update the childLanes even though we're most likely already rendering\n    // this fiber. This is for backwards compatibility in the case where you\n    // update a different component during render phase than the one that is\n    // currently renderings (a pattern that is accompanied by a warning).\n\n    return unsafe_markUpdateLaneFromFiberToRoot(fiber, lane);\n  } else {\n    return enqueueConcurrentClassUpdate(fiber, sharedQueue, update, lane);\n  }\n}\nfunction entangleTransitions(root, fiber, lane) {\n  var updateQueue = fiber.updateQueue;\n\n  if (updateQueue === null) {\n    // Only occurs if the fiber has been unmounted.\n    return;\n  }\n\n  var sharedQueue = updateQueue.shared;\n\n  if (isTransitionLane(lane)) {\n    var queueLanes = sharedQueue.lanes; // If any entangled lanes are no longer pending on the root, then they must\n    // have finished. We can remove them from the shared queue, which represents\n    // a superset of the actually pending lanes. In some cases we may entangle\n    // more than we need to, but that's OK. In fact it's worse if we *don't*\n    // entangle when we should.\n\n    queueLanes = intersectLanes(queueLanes, root.pendingLanes); // Entangle the new transition lane with the other transition lanes.\n\n    var newQueueLanes = mergeLanes(queueLanes, lane);\n    sharedQueue.lanes = newQueueLanes; // Even if queue.lanes already include lane, we don't know for certain if\n    // the lane finished since the last time we entangled it. So we need to\n    // entangle it again, just to be sure.\n\n    markRootEntangled(root, newQueueLanes);\n  }\n}\nfunction enqueueCapturedUpdate(workInProgress, capturedUpdate) {\n  // Captured updates are updates that are thrown by a child during the render\n  // phase. They should be discarded if the render is aborted. Therefore,\n  // we should only put them on the work-in-progress queue, not the current one.\n  var queue = workInProgress.updateQueue; // Check if the work-in-progress queue is a clone.\n\n  var current = workInProgress.alternate;\n\n  if (current !== null) {\n    var currentQueue = current.updateQueue;\n\n    if (queue === currentQueue) {\n      // The work-in-progress queue is the same as current. This happens when\n      // we bail out on a parent fiber that then captures an error thrown by\n      // a child. Since we want to append the update only to the work-in\n      // -progress queue, we need to clone the updates. We usually clone during\n      // processUpdateQueue, but that didn't happen in this case because we\n      // skipped over the parent when we bailed out.\n      var newFirst = null;\n      var newLast = null;\n      var firstBaseUpdate = queue.firstBaseUpdate;\n\n      if (firstBaseUpdate !== null) {\n        // Loop through the updates and clone them.\n        var update = firstBaseUpdate;\n\n        do {\n          var clone = {\n            eventTime: update.eventTime,\n            lane: update.lane,\n            tag: update.tag,\n            payload: update.payload,\n            callback: update.callback,\n            next: null\n          };\n\n          if (newLast === null) {\n            newFirst = newLast = clone;\n          } else {\n            newLast.next = clone;\n            newLast = clone;\n          }\n\n          update = update.next;\n        } while (update !== null); // Append the captured update the end of the cloned list.\n\n\n        if (newLast === null) {\n          newFirst = newLast = capturedUpdate;\n        } else {\n          newLast.next = capturedUpdate;\n          newLast = capturedUpdate;\n        }\n      } else {\n        // There are no base updates.\n        newFirst = newLast = capturedUpdate;\n      }\n\n      queue = {\n        baseState: currentQueue.baseState,\n        firstBaseUpdate: newFirst,\n        lastBaseUpdate: newLast,\n        shared: currentQueue.shared,\n        effects: currentQueue.effects\n      };\n      workInProgress.updateQueue = queue;\n      return;\n    }\n  } // Append the update to the end of the list.\n\n\n  var lastBaseUpdate = queue.lastBaseUpdate;\n\n  if (lastBaseUpdate === null) {\n    queue.firstBaseUpdate = capturedUpdate;\n  } else {\n    lastBaseUpdate.next = capturedUpdate;\n  }\n\n  queue.lastBaseUpdate = capturedUpdate;\n}\n\nfunction getStateFromUpdate(workInProgress, queue, update, prevState, nextProps, instance) {\n  switch (update.tag) {\n    case ReplaceState:\n      {\n        var payload = update.payload;\n\n        if (typeof payload === 'function') {\n          // Updater function\n          {\n            enterDisallowedContextReadInDEV();\n          }\n\n          var nextState = payload.call(instance, prevState, nextProps);\n\n          {\n            if ( workInProgress.mode & StrictLegacyMode) {\n              setIsStrictModeForDevtools(true);\n\n              try {\n                payload.call(instance, prevState, nextProps);\n              } finally {\n                setIsStrictModeForDevtools(false);\n              }\n            }\n\n            exitDisallowedContextReadInDEV();\n          }\n\n          return nextState;\n        } // State object\n\n\n        return payload;\n      }\n\n    case CaptureUpdate:\n      {\n        workInProgress.flags = workInProgress.flags & ~ShouldCapture | DidCapture;\n      }\n    // Intentional fallthrough\n\n    case UpdateState:\n      {\n        var _payload = update.payload;\n        var partialState;\n\n        if (typeof _payload === 'function') {\n          // Updater function\n          {\n            enterDisallowedContextReadInDEV();\n          }\n\n          partialState = _payload.call(instance, prevState, nextProps);\n\n          {\n            if ( workInProgress.mode & StrictLegacyMode) {\n              setIsStrictModeForDevtools(true);\n\n              try {\n                _payload.call(instance, prevState, nextProps);\n              } finally {\n                setIsStrictModeForDevtools(false);\n              }\n            }\n\n            exitDisallowedContextReadInDEV();\n          }\n        } else {\n          // Partial state object\n          partialState = _payload;\n        }\n\n        if (partialState === null || partialState === undefined) {\n          // Null and undefined are treated as no-ops.\n          return prevState;\n        } // Merge the partial state and the previous state.\n\n\n        return assign({}, prevState, partialState);\n      }\n\n    case ForceUpdate:\n      {\n        hasForceUpdate = true;\n        return prevState;\n      }\n  }\n\n  return prevState;\n}\n\nfunction processUpdateQueue(workInProgress, props, instance, renderLanes) {\n  // This is always non-null on a ClassComponent or HostRoot\n  var queue = workInProgress.updateQueue;\n  hasForceUpdate = false;\n\n  {\n    currentlyProcessingQueue = queue.shared;\n  }\n\n  var firstBaseUpdate = queue.firstBaseUpdate;\n  var lastBaseUpdate = queue.lastBaseUpdate; // Check if there are pending updates. If so, transfer them to the base queue.\n\n  var pendingQueue = queue.shared.pending;\n\n  if (pendingQueue !== null) {\n    queue.shared.pending = null; // The pending queue is circular. Disconnect the pointer between first\n    // and last so that it's non-circular.\n\n    var lastPendingUpdate = pendingQueue;\n    var firstPendingUpdate = lastPendingUpdate.next;\n    lastPendingUpdate.next = null; // Append pending updates to base queue\n\n    if (lastBaseUpdate === null) {\n      firstBaseUpdate = firstPendingUpdate;\n    } else {\n      lastBaseUpdate.next = firstPendingUpdate;\n    }\n\n    lastBaseUpdate = lastPendingUpdate; // If there's a current queue, and it's different from the base queue, then\n    // we need to transfer the updates to that queue, too. Because the base\n    // queue is a singly-linked list with no cycles, we can append to both\n    // lists and take advantage of structural sharing.\n    // TODO: Pass `current` as argument\n\n    var current = workInProgress.alternate;\n\n    if (current !== null) {\n      // This is always non-null on a ClassComponent or HostRoot\n      var currentQueue = current.updateQueue;\n      var currentLastBaseUpdate = currentQueue.lastBaseUpdate;\n\n      if (currentLastBaseUpdate !== lastBaseUpdate) {\n        if (currentLastBaseUpdate === null) {\n          currentQueue.firstBaseUpdate = firstPendingUpdate;\n        } else {\n          currentLastBaseUpdate.next = firstPendingUpdate;\n        }\n\n        currentQueue.lastBaseUpdate = lastPendingUpdate;\n      }\n    }\n  } // These values may change as we process the queue.\n\n\n  if (firstBaseUpdate !== null) {\n    // Iterate through the list of updates to compute the result.\n    var newState = queue.baseState; // TODO: Don't need to accumulate this. Instead, we can remove renderLanes\n    // from the original lanes.\n\n    var newLanes = NoLanes;\n    var newBaseState = null;\n    var newFirstBaseUpdate = null;\n    var newLastBaseUpdate = null;\n    var update = firstBaseUpdate;\n\n    do {\n      var updateLane = update.lane;\n      var updateEventTime = update.eventTime;\n\n      if (!isSubsetOfLanes(renderLanes, updateLane)) {\n        // Priority is insufficient. Skip this update. If this is the first\n        // skipped update, the previous update/state is the new base\n        // update/state.\n        var clone = {\n          eventTime: updateEventTime,\n          lane: updateLane,\n          tag: update.tag,\n          payload: update.payload,\n          callback: update.callback,\n          next: null\n        };\n\n        if (newLastBaseUpdate === null) {\n          newFirstBaseUpdate = newLastBaseUpdate = clone;\n          newBaseState = newState;\n        } else {\n          newLastBaseUpdate = newLastBaseUpdate.next = clone;\n        } // Update the remaining priority in the queue.\n\n\n        newLanes = mergeLanes(newLanes, updateLane);\n      } else {\n        // This update does have sufficient priority.\n        if (newLastBaseUpdate !== null) {\n          var _clone = {\n            eventTime: updateEventTime,\n            // This update is going to be committed so we never want uncommit\n            // it. Using NoLane works because 0 is a subset of all bitmasks, so\n            // this will never be skipped by the check above.\n            lane: NoLane,\n            tag: update.tag,\n            payload: update.payload,\n            callback: update.callback,\n            next: null\n          };\n          newLastBaseUpdate = newLastBaseUpdate.next = _clone;\n        } // Process this update.\n\n\n        newState = getStateFromUpdate(workInProgress, queue, update, newState, props, instance);\n        var callback = update.callback;\n\n        if (callback !== null && // If the update was already committed, we should not queue its\n        // callback again.\n        update.lane !== NoLane) {\n          workInProgress.flags |= Callback;\n          var effects = queue.effects;\n\n          if (effects === null) {\n            queue.effects = [update];\n          } else {\n            effects.push(update);\n          }\n        }\n      }\n\n      update = update.next;\n\n      if (update === null) {\n        pendingQueue = queue.shared.pending;\n\n        if (pendingQueue === null) {\n          break;\n        } else {\n          // An update was scheduled from inside a reducer. Add the new\n          // pending updates to the end of the list and keep processing.\n          var _lastPendingUpdate = pendingQueue; // Intentionally unsound. Pending updates form a circular list, but we\n          // unravel them when transferring them to the base queue.\n\n          var _firstPendingUpdate = _lastPendingUpdate.next;\n          _lastPendingUpdate.next = null;\n          update = _firstPendingUpdate;\n          queue.lastBaseUpdate = _lastPendingUpdate;\n          queue.shared.pending = null;\n        }\n      }\n    } while (true);\n\n    if (newLastBaseUpdate === null) {\n      newBaseState = newState;\n    }\n\n    queue.baseState = newBaseState;\n    queue.firstBaseUpdate = newFirstBaseUpdate;\n    queue.lastBaseUpdate = newLastBaseUpdate; // Interleaved updates are stored on a separate queue. We aren't going to\n    // process them during this render, but we do need to track which lanes\n    // are remaining.\n\n    var lastInterleaved = queue.shared.interleaved;\n\n    if (lastInterleaved !== null) {\n      var interleaved = lastInterleaved;\n\n      do {\n        newLanes = mergeLanes(newLanes, interleaved.lane);\n        interleaved = interleaved.next;\n      } while (interleaved !== lastInterleaved);\n    } else if (firstBaseUpdate === null) {\n      // `queue.lanes` is used for entangling transitions. We can set it back to\n      // zero once the queue is empty.\n      queue.shared.lanes = NoLanes;\n    } // Set the remaining expiration time to be whatever is remaining in the queue.\n    // This should be fine because the only two other things that contribute to\n    // expiration time are props and context. We're already in the middle of the\n    // begin phase by the time we start processing the queue, so we've already\n    // dealt with the props. Context in components that specify\n    // shouldComponentUpdate is tricky; but we'll have to account for\n    // that regardless.\n\n\n    markSkippedUpdateLanes(newLanes);\n    workInProgress.lanes = newLanes;\n    workInProgress.memoizedState = newState;\n  }\n\n  {\n    currentlyProcessingQueue = null;\n  }\n}\n\nfunction callCallback(callback, context) {\n  if (typeof callback !== 'function') {\n    throw new Error('Invalid argument passed as callback. Expected a function. Instead ' + (\"received: \" + callback));\n  }\n\n  callback.call(context);\n}\n\nfunction resetHasForceUpdateBeforeProcessing() {\n  hasForceUpdate = false;\n}\nfunction checkHasForceUpdateAfterProcessing() {\n  return hasForceUpdate;\n}\nfunction commitUpdateQueue(finishedWork, finishedQueue, instance) {\n  // Commit the effects\n  var effects = finishedQueue.effects;\n  finishedQueue.effects = null;\n\n  if (effects !== null) {\n    for (var i = 0; i < effects.length; i++) {\n      var effect = effects[i];\n      var callback = effect.callback;\n\n      if (callback !== null) {\n        effect.callback = null;\n        callCallback(callback, instance);\n      }\n    }\n  }\n}\n\nvar fakeInternalInstance = {}; // React.Component uses a shared frozen object by default.\n// We'll use it to determine whether we need to initialize legacy refs.\n\nvar emptyRefsObject = new React.Component().refs;\nvar didWarnAboutStateAssignmentForComponent;\nvar didWarnAboutUninitializedState;\nvar didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate;\nvar didWarnAboutLegacyLifecyclesAndDerivedState;\nvar didWarnAboutUndefinedDerivedState;\nvar warnOnUndefinedDerivedState;\nvar warnOnInvalidCallback;\nvar didWarnAboutDirectlyAssigningPropsToState;\nvar didWarnAboutContextTypeAndContextTypes;\nvar didWarnAboutInvalidateContextType;\n\n{\n  didWarnAboutStateAssignmentForComponent = new Set();\n  didWarnAboutUninitializedState = new Set();\n  didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate = new Set();\n  didWarnAboutLegacyLifecyclesAndDerivedState = new Set();\n  didWarnAboutDirectlyAssigningPropsToState = new Set();\n  didWarnAboutUndefinedDerivedState = new Set();\n  didWarnAboutContextTypeAndContextTypes = new Set();\n  didWarnAboutInvalidateContextType = new Set();\n  var didWarnOnInvalidCallback = new Set();\n\n  warnOnInvalidCallback = function (callback, callerName) {\n    if (callback === null || typeof callback === 'function') {\n      return;\n    }\n\n    var key = callerName + '_' + callback;\n\n    if (!didWarnOnInvalidCallback.has(key)) {\n      didWarnOnInvalidCallback.add(key);\n\n      error('%s(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callerName, callback);\n    }\n  };\n\n  warnOnUndefinedDerivedState = function (type, partialState) {\n    if (partialState === undefined) {\n      var componentName = getComponentNameFromType(type) || 'Component';\n\n      if (!didWarnAboutUndefinedDerivedState.has(componentName)) {\n        didWarnAboutUndefinedDerivedState.add(componentName);\n\n        error('%s.getDerivedStateFromProps(): A valid state object (or null) must be returned. ' + 'You have returned undefined.', componentName);\n      }\n    }\n  }; // This is so gross but it's at least non-critical and can be removed if\n  // it causes problems. This is meant to give a nicer error message for\n  // ReactDOM15.unstable_renderSubtreeIntoContainer(reactDOM16Component,\n  // ...)) which otherwise throws a \"_processChildContext is not a function\"\n  // exception.\n\n\n  Object.defineProperty(fakeInternalInstance, '_processChildContext', {\n    enumerable: false,\n    value: function () {\n      throw new Error('_processChildContext is not available in React 16+. This likely ' + 'means you have multiple copies of React and are attempting to nest ' + 'a React 15 tree inside a React 16 tree using ' + \"unstable_renderSubtreeIntoContainer, which isn't supported. Try \" + 'to make sure you have only one copy of React (and ideally, switch ' + 'to ReactDOM.createPortal).');\n    }\n  });\n  Object.freeze(fakeInternalInstance);\n}\n\nfunction applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, nextProps) {\n  var prevState = workInProgress.memoizedState;\n  var partialState = getDerivedStateFromProps(nextProps, prevState);\n\n  {\n    if ( workInProgress.mode & StrictLegacyMode) {\n      setIsStrictModeForDevtools(true);\n\n      try {\n        // Invoke the function an extra time to help detect side-effects.\n        partialState = getDerivedStateFromProps(nextProps, prevState);\n      } finally {\n        setIsStrictModeForDevtools(false);\n      }\n    }\n\n    warnOnUndefinedDerivedState(ctor, partialState);\n  } // Merge the partial state and the previous state.\n\n\n  var memoizedState = partialState === null || partialState === undefined ? prevState : assign({}, prevState, partialState);\n  workInProgress.memoizedState = memoizedState; // Once the update queue is empty, persist the derived state onto the\n  // base state.\n\n  if (workInProgress.lanes === NoLanes) {\n    // Queue is always non-null for classes\n    var updateQueue = workInProgress.updateQueue;\n    updateQueue.baseState = memoizedState;\n  }\n}\n\nvar classComponentUpdater = {\n  isMounted: isMounted,\n  enqueueSetState: function (inst, payload, callback) {\n    var fiber = get(inst);\n    var eventTime = requestEventTime();\n    var lane = requestUpdateLane(fiber);\n    var update = createUpdate(eventTime, lane);\n    update.payload = payload;\n\n    if (callback !== undefined && callback !== null) {\n      {\n        warnOnInvalidCallback(callback, 'setState');\n      }\n\n      update.callback = callback;\n    }\n\n    var root = enqueueUpdate(fiber, update, lane);\n\n    if (root !== null) {\n      scheduleUpdateOnFiber(root, fiber, lane, eventTime);\n      entangleTransitions(root, fiber, lane);\n    }\n\n    {\n      markStateUpdateScheduled(fiber, lane);\n    }\n  },\n  enqueueReplaceState: function (inst, payload, callback) {\n    var fiber = get(inst);\n    var eventTime = requestEventTime();\n    var lane = requestUpdateLane(fiber);\n    var update = createUpdate(eventTime, lane);\n    update.tag = ReplaceState;\n    update.payload = payload;\n\n    if (callback !== undefined && callback !== null) {\n      {\n        warnOnInvalidCallback(callback, 'replaceState');\n      }\n\n      update.callback = callback;\n    }\n\n    var root = enqueueUpdate(fiber, update, lane);\n\n    if (root !== null) {\n      scheduleUpdateOnFiber(root, fiber, lane, eventTime);\n      entangleTransitions(root, fiber, lane);\n    }\n\n    {\n      markStateUpdateScheduled(fiber, lane);\n    }\n  },\n  enqueueForceUpdate: function (inst, callback) {\n    var fiber = get(inst);\n    var eventTime = requestEventTime();\n    var lane = requestUpdateLane(fiber);\n    var update = createUpdate(eventTime, lane);\n    update.tag = ForceUpdate;\n\n    if (callback !== undefined && callback !== null) {\n      {\n        warnOnInvalidCallback(callback, 'forceUpdate');\n      }\n\n      update.callback = callback;\n    }\n\n    var root = enqueueUpdate(fiber, update, lane);\n\n    if (root !== null) {\n      scheduleUpdateOnFiber(root, fiber, lane, eventTime);\n      entangleTransitions(root, fiber, lane);\n    }\n\n    {\n      markForceUpdateScheduled(fiber, lane);\n    }\n  }\n};\n\nfunction checkShouldComponentUpdate(workInProgress, ctor, oldProps, newProps, oldState, newState, nextContext) {\n  var instance = workInProgress.stateNode;\n\n  if (typeof instance.shouldComponentUpdate === 'function') {\n    var shouldUpdate = instance.shouldComponentUpdate(newProps, newState, nextContext);\n\n    {\n      if ( workInProgress.mode & StrictLegacyMode) {\n        setIsStrictModeForDevtools(true);\n\n        try {\n          // Invoke the function an extra time to help detect side-effects.\n          shouldUpdate = instance.shouldComponentUpdate(newProps, newState, nextContext);\n        } finally {\n          setIsStrictModeForDevtools(false);\n        }\n      }\n\n      if (shouldUpdate === undefined) {\n        error('%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', getComponentNameFromType(ctor) || 'Component');\n      }\n    }\n\n    return shouldUpdate;\n  }\n\n  if (ctor.prototype && ctor.prototype.isPureReactComponent) {\n    return !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState);\n  }\n\n  return true;\n}\n\nfunction checkClassInstance(workInProgress, ctor, newProps) {\n  var instance = workInProgress.stateNode;\n\n  {\n    var name = getComponentNameFromType(ctor) || 'Component';\n    var renderPresent = instance.render;\n\n    if (!renderPresent) {\n      if (ctor.prototype && typeof ctor.prototype.render === 'function') {\n        error('%s(...): No `render` method found on the returned component ' + 'instance: did you accidentally return an object from the constructor?', name);\n      } else {\n        error('%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', name);\n      }\n    }\n\n    if (instance.getInitialState && !instance.getInitialState.isReactClassApproved && !instance.state) {\n      error('getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', name);\n    }\n\n    if (instance.getDefaultProps && !instance.getDefaultProps.isReactClassApproved) {\n      error('getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', name);\n    }\n\n    if (instance.propTypes) {\n      error('propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', name);\n    }\n\n    if (instance.contextType) {\n      error('contextType was defined as an instance property on %s. Use a static ' + 'property to define contextType instead.', name);\n    }\n\n    {\n      if (instance.contextTypes) {\n        error('contextTypes was defined as an instance property on %s. Use a static ' + 'property to define contextTypes instead.', name);\n      }\n\n      if (ctor.contextType && ctor.contextTypes && !didWarnAboutContextTypeAndContextTypes.has(ctor)) {\n        didWarnAboutContextTypeAndContextTypes.add(ctor);\n\n        error('%s declares both contextTypes and contextType static properties. ' + 'The legacy contextTypes property will be ignored.', name);\n      }\n    }\n\n    if (typeof instance.componentShouldUpdate === 'function') {\n      error('%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', name);\n    }\n\n    if (ctor.prototype && ctor.prototype.isPureReactComponent && typeof instance.shouldComponentUpdate !== 'undefined') {\n      error('%s has a method called shouldComponentUpdate(). ' + 'shouldComponentUpdate should not be used when extending React.PureComponent. ' + 'Please extend React.Component if shouldComponentUpdate is used.', getComponentNameFromType(ctor) || 'A pure component');\n    }\n\n    if (typeof instance.componentDidUnmount === 'function') {\n      error('%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', name);\n    }\n\n    if (typeof instance.componentDidReceiveProps === 'function') {\n      error('%s has a method called ' + 'componentDidReceiveProps(). But there is no such lifecycle method. ' + 'If you meant to update the state in response to changing props, ' + 'use componentWillReceiveProps(). If you meant to fetch data or ' + 'run side-effects or mutations after React has updated the UI, use componentDidUpdate().', name);\n    }\n\n    if (typeof instance.componentWillRecieveProps === 'function') {\n      error('%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', name);\n    }\n\n    if (typeof instance.UNSAFE_componentWillRecieveProps === 'function') {\n      error('%s has a method called ' + 'UNSAFE_componentWillRecieveProps(). Did you mean UNSAFE_componentWillReceiveProps()?', name);\n    }\n\n    var hasMutatedProps = instance.props !== newProps;\n\n    if (instance.props !== undefined && hasMutatedProps) {\n      error('%s(...): When calling super() in `%s`, make sure to pass ' + \"up the same props that your component's constructor was passed.\", name, name);\n    }\n\n    if (instance.defaultProps) {\n      error('Setting defaultProps as an instance property on %s is not supported and will be ignored.' + ' Instead, define defaultProps as a static property on %s.', name, name);\n    }\n\n    if (typeof instance.getSnapshotBeforeUpdate === 'function' && typeof instance.componentDidUpdate !== 'function' && !didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.has(ctor)) {\n      didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.add(ctor);\n\n      error('%s: getSnapshotBeforeUpdate() should be used with componentDidUpdate(). ' + 'This component defines getSnapshotBeforeUpdate() only.', getComponentNameFromType(ctor));\n    }\n\n    if (typeof instance.getDerivedStateFromProps === 'function') {\n      error('%s: getDerivedStateFromProps() is defined as an instance method ' + 'and will be ignored. Instead, declare it as a static method.', name);\n    }\n\n    if (typeof instance.getDerivedStateFromError === 'function') {\n      error('%s: getDerivedStateFromError() is defined as an instance method ' + 'and will be ignored. Instead, declare it as a static method.', name);\n    }\n\n    if (typeof ctor.getSnapshotBeforeUpdate === 'function') {\n      error('%s: getSnapshotBeforeUpdate() is defined as a static method ' + 'and will be ignored. Instead, declare it as an instance method.', name);\n    }\n\n    var _state = instance.state;\n\n    if (_state && (typeof _state !== 'object' || isArray(_state))) {\n      error('%s.state: must be set to an object or null', name);\n    }\n\n    if (typeof instance.getChildContext === 'function' && typeof ctor.childContextTypes !== 'object') {\n      error('%s.getChildContext(): childContextTypes must be defined in order to ' + 'use getChildContext().', name);\n    }\n  }\n}\n\nfunction adoptClassInstance(workInProgress, instance) {\n  instance.updater = classComponentUpdater;\n  workInProgress.stateNode = instance; // The instance needs access to the fiber so that it can schedule updates\n\n  set(instance, workInProgress);\n\n  {\n    instance._reactInternalInstance = fakeInternalInstance;\n  }\n}\n\nfunction constructClassInstance(workInProgress, ctor, props) {\n  var isLegacyContextConsumer = false;\n  var unmaskedContext = emptyContextObject;\n  var context = emptyContextObject;\n  var contextType = ctor.contextType;\n\n  {\n    if ('contextType' in ctor) {\n      var isValid = // Allow null for conditional declaration\n      contextType === null || contextType !== undefined && contextType.$$typeof === REACT_CONTEXT_TYPE && contextType._context === undefined; // Not a <Context.Consumer>\n\n      if (!isValid && !didWarnAboutInvalidateContextType.has(ctor)) {\n        didWarnAboutInvalidateContextType.add(ctor);\n        var addendum = '';\n\n        if (contextType === undefined) {\n          addendum = ' However, it is set to undefined. ' + 'This can be caused by a typo or by mixing up named and default imports. ' + 'This can also happen due to a circular dependency, so ' + 'try moving the createContext() call to a separate file.';\n        } else if (typeof contextType !== 'object') {\n          addendum = ' However, it is set to a ' + typeof contextType + '.';\n        } else if (contextType.$$typeof === REACT_PROVIDER_TYPE) {\n          addendum = ' Did you accidentally pass the Context.Provider instead?';\n        } else if (contextType._context !== undefined) {\n          // <Context.Consumer>\n          addendum = ' Did you accidentally pass the Context.Consumer instead?';\n        } else {\n          addendum = ' However, it is set to an object with keys {' + Object.keys(contextType).join(', ') + '}.';\n        }\n\n        error('%s defines an invalid contextType. ' + 'contextType should point to the Context object returned by React.createContext().%s', getComponentNameFromType(ctor) || 'Component', addendum);\n      }\n    }\n  }\n\n  if (typeof contextType === 'object' && contextType !== null) {\n    context = readContext(contextType);\n  } else {\n    unmaskedContext = getUnmaskedContext(workInProgress, ctor, true);\n    var contextTypes = ctor.contextTypes;\n    isLegacyContextConsumer = contextTypes !== null && contextTypes !== undefined;\n    context = isLegacyContextConsumer ? getMaskedContext(workInProgress, unmaskedContext) : emptyContextObject;\n  }\n\n  var instance = new ctor(props, context); // Instantiate twice to help detect side-effects.\n\n  {\n    if ( workInProgress.mode & StrictLegacyMode) {\n      setIsStrictModeForDevtools(true);\n\n      try {\n        instance = new ctor(props, context); // eslint-disable-line no-new\n      } finally {\n        setIsStrictModeForDevtools(false);\n      }\n    }\n  }\n\n  var state = workInProgress.memoizedState = instance.state !== null && instance.state !== undefined ? instance.state : null;\n  adoptClassInstance(workInProgress, instance);\n\n  {\n    if (typeof ctor.getDerivedStateFromProps === 'function' && state === null) {\n      var componentName = getComponentNameFromType(ctor) || 'Component';\n\n      if (!didWarnAboutUninitializedState.has(componentName)) {\n        didWarnAboutUninitializedState.add(componentName);\n\n        error('`%s` uses `getDerivedStateFromProps` but its initial state is ' + '%s. This is not recommended. Instead, define the initial state by ' + 'assigning an object to `this.state` in the constructor of `%s`. ' + 'This ensures that `getDerivedStateFromProps` arguments have a consistent shape.', componentName, instance.state === null ? 'null' : 'undefined', componentName);\n      }\n    } // If new component APIs are defined, \"unsafe\" lifecycles won't be called.\n    // Warn about these lifecycles if they are present.\n    // Don't warn about react-lifecycles-compat polyfilled methods though.\n\n\n    if (typeof ctor.getDerivedStateFromProps === 'function' || typeof instance.getSnapshotBeforeUpdate === 'function') {\n      var foundWillMountName = null;\n      var foundWillReceivePropsName = null;\n      var foundWillUpdateName = null;\n\n      if (typeof instance.componentWillMount === 'function' && instance.componentWillMount.__suppressDeprecationWarning !== true) {\n        foundWillMountName = 'componentWillMount';\n      } else if (typeof instance.UNSAFE_componentWillMount === 'function') {\n        foundWillMountName = 'UNSAFE_componentWillMount';\n      }\n\n      if (typeof instance.componentWillReceiveProps === 'function' && instance.componentWillReceiveProps.__suppressDeprecationWarning !== true) {\n        foundWillReceivePropsName = 'componentWillReceiveProps';\n      } else if (typeof instance.UNSAFE_componentWillReceiveProps === 'function') {\n        foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';\n      }\n\n      if (typeof instance.componentWillUpdate === 'function' && instance.componentWillUpdate.__suppressDeprecationWarning !== true) {\n        foundWillUpdateName = 'componentWillUpdate';\n      } else if (typeof instance.UNSAFE_componentWillUpdate === 'function') {\n        foundWillUpdateName = 'UNSAFE_componentWillUpdate';\n      }\n\n      if (foundWillMountName !== null || foundWillReceivePropsName !== null || foundWillUpdateName !== null) {\n        var _componentName = getComponentNameFromType(ctor) || 'Component';\n\n        var newApiName = typeof ctor.getDerivedStateFromProps === 'function' ? 'getDerivedStateFromProps()' : 'getSnapshotBeforeUpdate()';\n\n        if (!didWarnAboutLegacyLifecyclesAndDerivedState.has(_componentName)) {\n          didWarnAboutLegacyLifecyclesAndDerivedState.add(_componentName);\n\n          error('Unsafe legacy lifecycles will not be called for components using new component APIs.\\n\\n' + '%s uses %s but also contains the following legacy lifecycles:%s%s%s\\n\\n' + 'The above lifecycles should be removed. Learn more about this warning here:\\n' + 'https://reactjs.org/link/unsafe-component-lifecycles', _componentName, newApiName, foundWillMountName !== null ? \"\\n  \" + foundWillMountName : '', foundWillReceivePropsName !== null ? \"\\n  \" + foundWillReceivePropsName : '', foundWillUpdateName !== null ? \"\\n  \" + foundWillUpdateName : '');\n        }\n      }\n    }\n  } // Cache unmasked context so we can avoid recreating masked context unless necessary.\n  // ReactFiberContext usually updates this cache but can't for newly-created instances.\n\n\n  if (isLegacyContextConsumer) {\n    cacheContext(workInProgress, unmaskedContext, context);\n  }\n\n  return instance;\n}\n\nfunction callComponentWillMount(workInProgress, instance) {\n  var oldState = instance.state;\n\n  if (typeof instance.componentWillMount === 'function') {\n    instance.componentWillMount();\n  }\n\n  if (typeof instance.UNSAFE_componentWillMount === 'function') {\n    instance.UNSAFE_componentWillMount();\n  }\n\n  if (oldState !== instance.state) {\n    {\n      error('%s.componentWillMount(): Assigning directly to this.state is ' + \"deprecated (except inside a component's \" + 'constructor). Use setState instead.', getComponentNameFromFiber(workInProgress) || 'Component');\n    }\n\n    classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n  }\n}\n\nfunction callComponentWillReceiveProps(workInProgress, instance, newProps, nextContext) {\n  var oldState = instance.state;\n\n  if (typeof instance.componentWillReceiveProps === 'function') {\n    instance.componentWillReceiveProps(newProps, nextContext);\n  }\n\n  if (typeof instance.UNSAFE_componentWillReceiveProps === 'function') {\n    instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);\n  }\n\n  if (instance.state !== oldState) {\n    {\n      var componentName = getComponentNameFromFiber(workInProgress) || 'Component';\n\n      if (!didWarnAboutStateAssignmentForComponent.has(componentName)) {\n        didWarnAboutStateAssignmentForComponent.add(componentName);\n\n        error('%s.componentWillReceiveProps(): Assigning directly to ' + \"this.state is deprecated (except inside a component's \" + 'constructor). Use setState instead.', componentName);\n      }\n    }\n\n    classComponentUpdater.enqueueReplaceState(instance, instance.state, null);\n  }\n} // Invokes the mount life-cycles on a previously never rendered instance.\n\n\nfunction mountClassInstance(workInProgress, ctor, newProps, renderLanes) {\n  {\n    checkClassInstance(workInProgress, ctor, newProps);\n  }\n\n  var instance = workInProgress.stateNode;\n  instance.props = newProps;\n  instance.state = workInProgress.memoizedState;\n  instance.refs = emptyRefsObject;\n  initializeUpdateQueue(workInProgress);\n  var contextType = ctor.contextType;\n\n  if (typeof contextType === 'object' && contextType !== null) {\n    instance.context = readContext(contextType);\n  } else {\n    var unmaskedContext = getUnmaskedContext(workInProgress, ctor, true);\n    instance.context = getMaskedContext(workInProgress, unmaskedContext);\n  }\n\n  {\n    if (instance.state === newProps) {\n      var componentName = getComponentNameFromType(ctor) || 'Component';\n\n      if (!didWarnAboutDirectlyAssigningPropsToState.has(componentName)) {\n        didWarnAboutDirectlyAssigningPropsToState.add(componentName);\n\n        error('%s: It is not recommended to assign props directly to state ' + \"because updates to props won't be reflected in state. \" + 'In most cases, it is better to use props directly.', componentName);\n      }\n    }\n\n    if (workInProgress.mode & StrictLegacyMode) {\n      ReactStrictModeWarnings.recordLegacyContextWarning(workInProgress, instance);\n    }\n\n    {\n      ReactStrictModeWarnings.recordUnsafeLifecycleWarnings(workInProgress, instance);\n    }\n  }\n\n  instance.state = workInProgress.memoizedState;\n  var getDerivedStateFromProps = ctor.getDerivedStateFromProps;\n\n  if (typeof getDerivedStateFromProps === 'function') {\n    applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, newProps);\n    instance.state = workInProgress.memoizedState;\n  } // In order to support react-lifecycles-compat polyfilled components,\n  // Unsafe lifecycles should not be invoked for components using the new APIs.\n\n\n  if (typeof ctor.getDerivedStateFromProps !== 'function' && typeof instance.getSnapshotBeforeUpdate !== 'function' && (typeof instance.UNSAFE_componentWillMount === 'function' || typeof instance.componentWillMount === 'function')) {\n    callComponentWillMount(workInProgress, instance); // If we had additional state updates during this life-cycle, let's\n    // process them now.\n\n    processUpdateQueue(workInProgress, newProps, instance, renderLanes);\n    instance.state = workInProgress.memoizedState;\n  }\n\n  if (typeof instance.componentDidMount === 'function') {\n    var fiberFlags = Update;\n\n    {\n      fiberFlags |= LayoutStatic;\n    }\n\n    if ( (workInProgress.mode & StrictEffectsMode) !== NoMode) {\n      fiberFlags |= MountLayoutDev;\n    }\n\n    workInProgress.flags |= fiberFlags;\n  }\n}\n\nfunction resumeMountClassInstance(workInProgress, ctor, newProps, renderLanes) {\n  var instance = workInProgress.stateNode;\n  var oldProps = workInProgress.memoizedProps;\n  instance.props = oldProps;\n  var oldContext = instance.context;\n  var contextType = ctor.contextType;\n  var nextContext = emptyContextObject;\n\n  if (typeof contextType === 'object' && contextType !== null) {\n    nextContext = readContext(contextType);\n  } else {\n    var nextLegacyUnmaskedContext = getUnmaskedContext(workInProgress, ctor, true);\n    nextContext = getMaskedContext(workInProgress, nextLegacyUnmaskedContext);\n  }\n\n  var getDerivedStateFromProps = ctor.getDerivedStateFromProps;\n  var hasNewLifecycles = typeof getDerivedStateFromProps === 'function' || typeof instance.getSnapshotBeforeUpdate === 'function'; // Note: During these life-cycles, instance.props/instance.state are what\n  // ever the previously attempted to render - not the \"current\". However,\n  // during componentDidUpdate we pass the \"current\" props.\n  // In order to support react-lifecycles-compat polyfilled components,\n  // Unsafe lifecycles should not be invoked for components using the new APIs.\n\n  if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillReceiveProps === 'function' || typeof instance.componentWillReceiveProps === 'function')) {\n    if (oldProps !== newProps || oldContext !== nextContext) {\n      callComponentWillReceiveProps(workInProgress, instance, newProps, nextContext);\n    }\n  }\n\n  resetHasForceUpdateBeforeProcessing();\n  var oldState = workInProgress.memoizedState;\n  var newState = instance.state = oldState;\n  processUpdateQueue(workInProgress, newProps, instance, renderLanes);\n  newState = workInProgress.memoizedState;\n\n  if (oldProps === newProps && oldState === newState && !hasContextChanged() && !checkHasForceUpdateAfterProcessing()) {\n    // If an update was already in progress, we should schedule an Update\n    // effect even though we're bailing out, so that cWU/cDU are called.\n    if (typeof instance.componentDidMount === 'function') {\n      var fiberFlags = Update;\n\n      {\n        fiberFlags |= LayoutStatic;\n      }\n\n      if ( (workInProgress.mode & StrictEffectsMode) !== NoMode) {\n        fiberFlags |= MountLayoutDev;\n      }\n\n      workInProgress.flags |= fiberFlags;\n    }\n\n    return false;\n  }\n\n  if (typeof getDerivedStateFromProps === 'function') {\n    applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, newProps);\n    newState = workInProgress.memoizedState;\n  }\n\n  var shouldUpdate = checkHasForceUpdateAfterProcessing() || checkShouldComponentUpdate(workInProgress, ctor, oldProps, newProps, oldState, newState, nextContext);\n\n  if (shouldUpdate) {\n    // In order to support react-lifecycles-compat polyfilled components,\n    // Unsafe lifecycles should not be invoked for components using the new APIs.\n    if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillMount === 'function' || typeof instance.componentWillMount === 'function')) {\n      if (typeof instance.componentWillMount === 'function') {\n        instance.componentWillMount();\n      }\n\n      if (typeof instance.UNSAFE_componentWillMount === 'function') {\n        instance.UNSAFE_componentWillMount();\n      }\n    }\n\n    if (typeof instance.componentDidMount === 'function') {\n      var _fiberFlags = Update;\n\n      {\n        _fiberFlags |= LayoutStatic;\n      }\n\n      if ( (workInProgress.mode & StrictEffectsMode) !== NoMode) {\n        _fiberFlags |= MountLayoutDev;\n      }\n\n      workInProgress.flags |= _fiberFlags;\n    }\n  } else {\n    // If an update was already in progress, we should schedule an Update\n    // effect even though we're bailing out, so that cWU/cDU are called.\n    if (typeof instance.componentDidMount === 'function') {\n      var _fiberFlags2 = Update;\n\n      {\n        _fiberFlags2 |= LayoutStatic;\n      }\n\n      if ( (workInProgress.mode & StrictEffectsMode) !== NoMode) {\n        _fiberFlags2 |= MountLayoutDev;\n      }\n\n      workInProgress.flags |= _fiberFlags2;\n    } // If shouldComponentUpdate returned false, we should still update the\n    // memoized state to indicate that this work can be reused.\n\n\n    workInProgress.memoizedProps = newProps;\n    workInProgress.memoizedState = newState;\n  } // Update the existing instance's state, props, and context pointers even\n  // if shouldComponentUpdate returns false.\n\n\n  instance.props = newProps;\n  instance.state = newState;\n  instance.context = nextContext;\n  return shouldUpdate;\n} // Invokes the update life-cycles and returns false if it shouldn't rerender.\n\n\nfunction updateClassInstance(current, workInProgress, ctor, newProps, renderLanes) {\n  var instance = workInProgress.stateNode;\n  cloneUpdateQueue(current, workInProgress);\n  var unresolvedOldProps = workInProgress.memoizedProps;\n  var oldProps = workInProgress.type === workInProgress.elementType ? unresolvedOldProps : resolveDefaultProps(workInProgress.type, unresolvedOldProps);\n  instance.props = oldProps;\n  var unresolvedNewProps = workInProgress.pendingProps;\n  var oldContext = instance.context;\n  var contextType = ctor.contextType;\n  var nextContext = emptyContextObject;\n\n  if (typeof contextType === 'object' && contextType !== null) {\n    nextContext = readContext(contextType);\n  } else {\n    var nextUnmaskedContext = getUnmaskedContext(workInProgress, ctor, true);\n    nextContext = getMaskedContext(workInProgress, nextUnmaskedContext);\n  }\n\n  var getDerivedStateFromProps = ctor.getDerivedStateFromProps;\n  var hasNewLifecycles = typeof getDerivedStateFromProps === 'function' || typeof instance.getSnapshotBeforeUpdate === 'function'; // Note: During these life-cycles, instance.props/instance.state are what\n  // ever the previously attempted to render - not the \"current\". However,\n  // during componentDidUpdate we pass the \"current\" props.\n  // In order to support react-lifecycles-compat polyfilled components,\n  // Unsafe lifecycles should not be invoked for components using the new APIs.\n\n  if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillReceiveProps === 'function' || typeof instance.componentWillReceiveProps === 'function')) {\n    if (unresolvedOldProps !== unresolvedNewProps || oldContext !== nextContext) {\n      callComponentWillReceiveProps(workInProgress, instance, newProps, nextContext);\n    }\n  }\n\n  resetHasForceUpdateBeforeProcessing();\n  var oldState = workInProgress.memoizedState;\n  var newState = instance.state = oldState;\n  processUpdateQueue(workInProgress, newProps, instance, renderLanes);\n  newState = workInProgress.memoizedState;\n\n  if (unresolvedOldProps === unresolvedNewProps && oldState === newState && !hasContextChanged() && !checkHasForceUpdateAfterProcessing() && !(enableLazyContextPropagation   )) {\n    // If an update was already in progress, we should schedule an Update\n    // effect even though we're bailing out, so that cWU/cDU are called.\n    if (typeof instance.componentDidUpdate === 'function') {\n      if (unresolvedOldProps !== current.memoizedProps || oldState !== current.memoizedState) {\n        workInProgress.flags |= Update;\n      }\n    }\n\n    if (typeof instance.getSnapshotBeforeUpdate === 'function') {\n      if (unresolvedOldProps !== current.memoizedProps || oldState !== current.memoizedState) {\n        workInProgress.flags |= Snapshot;\n      }\n    }\n\n    return false;\n  }\n\n  if (typeof getDerivedStateFromProps === 'function') {\n    applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, newProps);\n    newState = workInProgress.memoizedState;\n  }\n\n  var shouldUpdate = checkHasForceUpdateAfterProcessing() || checkShouldComponentUpdate(workInProgress, ctor, oldProps, newProps, oldState, newState, nextContext) || // TODO: In some cases, we'll end up checking if context has changed twice,\n  // both before and after `shouldComponentUpdate` has been called. Not ideal,\n  // but I'm loath to refactor this function. This only happens for memoized\n  // components so it's not that common.\n  enableLazyContextPropagation   ;\n\n  if (shouldUpdate) {\n    // In order to support react-lifecycles-compat polyfilled components,\n    // Unsafe lifecycles should not be invoked for components using the new APIs.\n    if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillUpdate === 'function' || typeof instance.componentWillUpdate === 'function')) {\n      if (typeof instance.componentWillUpdate === 'function') {\n        instance.componentWillUpdate(newProps, newState, nextContext);\n      }\n\n      if (typeof instance.UNSAFE_componentWillUpdate === 'function') {\n        instance.UNSAFE_componentWillUpdate(newProps, newState, nextContext);\n      }\n    }\n\n    if (typeof instance.componentDidUpdate === 'function') {\n      workInProgress.flags |= Update;\n    }\n\n    if (typeof instance.getSnapshotBeforeUpdate === 'function') {\n      workInProgress.flags |= Snapshot;\n    }\n  } else {\n    // If an update was already in progress, we should schedule an Update\n    // effect even though we're bailing out, so that cWU/cDU are called.\n    if (typeof instance.componentDidUpdate === 'function') {\n      if (unresolvedOldProps !== current.memoizedProps || oldState !== current.memoizedState) {\n        workInProgress.flags |= Update;\n      }\n    }\n\n    if (typeof instance.getSnapshotBeforeUpdate === 'function') {\n      if (unresolvedOldProps !== current.memoizedProps || oldState !== current.memoizedState) {\n        workInProgress.flags |= Snapshot;\n      }\n    } // If shouldComponentUpdate returned false, we should still update the\n    // memoized props/state to indicate that this work can be reused.\n\n\n    workInProgress.memoizedProps = newProps;\n    workInProgress.memoizedState = newState;\n  } // Update the existing instance's state, props, and context pointers even\n  // if shouldComponentUpdate returns false.\n\n\n  instance.props = newProps;\n  instance.state = newState;\n  instance.context = nextContext;\n  return shouldUpdate;\n}\n\nvar didWarnAboutMaps;\nvar didWarnAboutGenerators;\nvar didWarnAboutStringRefs;\nvar ownerHasKeyUseWarning;\nvar ownerHasFunctionTypeWarning;\n\nvar warnForMissingKey = function (child, returnFiber) {};\n\n{\n  didWarnAboutMaps = false;\n  didWarnAboutGenerators = false;\n  didWarnAboutStringRefs = {};\n  /**\n   * Warn if there's no key explicitly set on dynamic arrays of children or\n   * object keys are not valid. This allows us to keep track of children between\n   * updates.\n   */\n\n  ownerHasKeyUseWarning = {};\n  ownerHasFunctionTypeWarning = {};\n\n  warnForMissingKey = function (child, returnFiber) {\n    if (child === null || typeof child !== 'object') {\n      return;\n    }\n\n    if (!child._store || child._store.validated || child.key != null) {\n      return;\n    }\n\n    if (typeof child._store !== 'object') {\n      throw new Error('React Component in warnForMissingKey should have a _store. ' + 'This error is likely caused by a bug in React. Please file an issue.');\n    }\n\n    child._store.validated = true;\n    var componentName = getComponentNameFromFiber(returnFiber) || 'Component';\n\n    if (ownerHasKeyUseWarning[componentName]) {\n      return;\n    }\n\n    ownerHasKeyUseWarning[componentName] = true;\n\n    error('Each child in a list should have a unique ' + '\"key\" prop. See https://reactjs.org/link/warning-keys for ' + 'more information.');\n  };\n}\n\nfunction coerceRef(returnFiber, current, element) {\n  var mixedRef = element.ref;\n\n  if (mixedRef !== null && typeof mixedRef !== 'function' && typeof mixedRef !== 'object') {\n    {\n      // TODO: Clean this up once we turn on the string ref warning for\n      // everyone, because the strict mode case will no longer be relevant\n      if ((returnFiber.mode & StrictLegacyMode || warnAboutStringRefs) && // We warn in ReactElement.js if owner and self are equal for string refs\n      // because these cannot be automatically converted to an arrow function\n      // using a codemod. Therefore, we don't have to warn about string refs again.\n      !(element._owner && element._self && element._owner.stateNode !== element._self)) {\n        var componentName = getComponentNameFromFiber(returnFiber) || 'Component';\n\n        if (!didWarnAboutStringRefs[componentName]) {\n          {\n            error('A string ref, \"%s\", has been found within a strict mode tree. ' + 'String refs are a source of potential bugs and should be avoided. ' + 'We recommend using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', mixedRef);\n          }\n\n          didWarnAboutStringRefs[componentName] = true;\n        }\n      }\n    }\n\n    if (element._owner) {\n      var owner = element._owner;\n      var inst;\n\n      if (owner) {\n        var ownerFiber = owner;\n\n        if (ownerFiber.tag !== ClassComponent) {\n          throw new Error('Function components cannot have string refs. ' + 'We recommend using useRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref');\n        }\n\n        inst = ownerFiber.stateNode;\n      }\n\n      if (!inst) {\n        throw new Error(\"Missing owner for string ref \" + mixedRef + \". This error is likely caused by a \" + 'bug in React. Please file an issue.');\n      } // Assigning this to a const so Flow knows it won't change in the closure\n\n\n      var resolvedInst = inst;\n\n      {\n        checkPropStringCoercion(mixedRef, 'ref');\n      }\n\n      var stringRef = '' + mixedRef; // Check if previous string ref matches new string ref\n\n      if (current !== null && current.ref !== null && typeof current.ref === 'function' && current.ref._stringRef === stringRef) {\n        return current.ref;\n      }\n\n      var ref = function (value) {\n        var refs = resolvedInst.refs;\n\n        if (refs === emptyRefsObject) {\n          // This is a lazy pooled frozen object, so we need to initialize.\n          refs = resolvedInst.refs = {};\n        }\n\n        if (value === null) {\n          delete refs[stringRef];\n        } else {\n          refs[stringRef] = value;\n        }\n      };\n\n      ref._stringRef = stringRef;\n      return ref;\n    } else {\n      if (typeof mixedRef !== 'string') {\n        throw new Error('Expected ref to be a function, a string, an object returned by React.createRef(), or null.');\n      }\n\n      if (!element._owner) {\n        throw new Error(\"Element ref was specified as a string (\" + mixedRef + \") but no owner was set. This could happen for one of\" + ' the following reasons:\\n' + '1. You may be adding a ref to a function component\\n' + \"2. You may be adding a ref to a component that was not created inside a component's render method\\n\" + '3. You have multiple copies of React loaded\\n' + 'See https://reactjs.org/link/refs-must-have-owner for more information.');\n      }\n    }\n  }\n\n  return mixedRef;\n}\n\nfunction throwOnInvalidObjectType(returnFiber, newChild) {\n  var childString = Object.prototype.toString.call(newChild);\n  throw new Error(\"Objects are not valid as a React child (found: \" + (childString === '[object Object]' ? 'object with keys {' + Object.keys(newChild).join(', ') + '}' : childString) + \"). \" + 'If you meant to render a collection of children, use an array ' + 'instead.');\n}\n\nfunction warnOnFunctionType(returnFiber) {\n  {\n    var componentName = getComponentNameFromFiber(returnFiber) || 'Component';\n\n    if (ownerHasFunctionTypeWarning[componentName]) {\n      return;\n    }\n\n    ownerHasFunctionTypeWarning[componentName] = true;\n\n    error('Functions are not valid as a React child. This may happen if ' + 'you return a Component instead of <Component /> from render. ' + 'Or maybe you meant to call this function rather than return it.');\n  }\n}\n\nfunction resolveLazy(lazyType) {\n  var payload = lazyType._payload;\n  var init = lazyType._init;\n  return init(payload);\n} // This wrapper function exists because I expect to clone the code in each path\n// to be able to optimize each path individually by branching early. This needs\n// a compiler or we can do it manually. Helpers that don't need this branching\n// live outside of this function.\n\n\nfunction ChildReconciler(shouldTrackSideEffects) {\n  function deleteChild(returnFiber, childToDelete) {\n    if (!shouldTrackSideEffects) {\n      // Noop.\n      return;\n    }\n\n    var deletions = returnFiber.deletions;\n\n    if (deletions === null) {\n      returnFiber.deletions = [childToDelete];\n      returnFiber.flags |= ChildDeletion;\n    } else {\n      deletions.push(childToDelete);\n    }\n  }\n\n  function deleteRemainingChildren(returnFiber, currentFirstChild) {\n    if (!shouldTrackSideEffects) {\n      // Noop.\n      return null;\n    } // TODO: For the shouldClone case, this could be micro-optimized a bit by\n    // assuming that after the first child we've already added everything.\n\n\n    var childToDelete = currentFirstChild;\n\n    while (childToDelete !== null) {\n      deleteChild(returnFiber, childToDelete);\n      childToDelete = childToDelete.sibling;\n    }\n\n    return null;\n  }\n\n  function mapRemainingChildren(returnFiber, currentFirstChild) {\n    // Add the remaining children to a temporary map so that we can find them by\n    // keys quickly. Implicit (null) keys get added to this set with their index\n    // instead.\n    var existingChildren = new Map();\n    var existingChild = currentFirstChild;\n\n    while (existingChild !== null) {\n      if (existingChild.key !== null) {\n        existingChildren.set(existingChild.key, existingChild);\n      } else {\n        existingChildren.set(existingChild.index, existingChild);\n      }\n\n      existingChild = existingChild.sibling;\n    }\n\n    return existingChildren;\n  }\n\n  function useFiber(fiber, pendingProps) {\n    // We currently set sibling to null and index to 0 here because it is easy\n    // to forget to do before returning it. E.g. for the single child case.\n    var clone = createWorkInProgress(fiber, pendingProps);\n    clone.index = 0;\n    clone.sibling = null;\n    return clone;\n  }\n\n  function placeChild(newFiber, lastPlacedIndex, newIndex) {\n    newFiber.index = newIndex;\n\n    if (!shouldTrackSideEffects) {\n      // During hydration, the useId algorithm needs to know which fibers are\n      // part of a list of children (arrays, iterators).\n      newFiber.flags |= Forked;\n      return lastPlacedIndex;\n    }\n\n    var current = newFiber.alternate;\n\n    if (current !== null) {\n      var oldIndex = current.index;\n\n      if (oldIndex < lastPlacedIndex) {\n        // This is a move.\n        newFiber.flags |= Placement;\n        return lastPlacedIndex;\n      } else {\n        // This item can stay in place.\n        return oldIndex;\n      }\n    } else {\n      // This is an insertion.\n      newFiber.flags |= Placement;\n      return lastPlacedIndex;\n    }\n  }\n\n  function placeSingleChild(newFiber) {\n    // This is simpler for the single child case. We only need to do a\n    // placement for inserting new children.\n    if (shouldTrackSideEffects && newFiber.alternate === null) {\n      newFiber.flags |= Placement;\n    }\n\n    return newFiber;\n  }\n\n  function updateTextNode(returnFiber, current, textContent, lanes) {\n    if (current === null || current.tag !== HostText) {\n      // Insert\n      var created = createFiberFromText(textContent, returnFiber.mode, lanes);\n      created.return = returnFiber;\n      return created;\n    } else {\n      // Update\n      var existing = useFiber(current, textContent);\n      existing.return = returnFiber;\n      return existing;\n    }\n  }\n\n  function updateElement(returnFiber, current, element, lanes) {\n    var elementType = element.type;\n\n    if (elementType === REACT_FRAGMENT_TYPE) {\n      return updateFragment(returnFiber, current, element.props.children, lanes, element.key);\n    }\n\n    if (current !== null) {\n      if (current.elementType === elementType || ( // Keep this check inline so it only runs on the false path:\n       isCompatibleFamilyForHotReloading(current, element) ) || // Lazy types should reconcile their resolved type.\n      // We need to do this after the Hot Reloading check above,\n      // because hot reloading has different semantics than prod because\n      // it doesn't resuspend. So we can't let the call below suspend.\n      typeof elementType === 'object' && elementType !== null && elementType.$$typeof === REACT_LAZY_TYPE && resolveLazy(elementType) === current.type) {\n        // Move based on index\n        var existing = useFiber(current, element.props);\n        existing.ref = coerceRef(returnFiber, current, element);\n        existing.return = returnFiber;\n\n        {\n          existing._debugSource = element._source;\n          existing._debugOwner = element._owner;\n        }\n\n        return existing;\n      }\n    } // Insert\n\n\n    var created = createFiberFromElement(element, returnFiber.mode, lanes);\n    created.ref = coerceRef(returnFiber, current, element);\n    created.return = returnFiber;\n    return created;\n  }\n\n  function updatePortal(returnFiber, current, portal, lanes) {\n    if (current === null || current.tag !== HostPortal || current.stateNode.containerInfo !== portal.containerInfo || current.stateNode.implementation !== portal.implementation) {\n      // Insert\n      var created = createFiberFromPortal(portal, returnFiber.mode, lanes);\n      created.return = returnFiber;\n      return created;\n    } else {\n      // Update\n      var existing = useFiber(current, portal.children || []);\n      existing.return = returnFiber;\n      return existing;\n    }\n  }\n\n  function updateFragment(returnFiber, current, fragment, lanes, key) {\n    if (current === null || current.tag !== Fragment) {\n      // Insert\n      var created = createFiberFromFragment(fragment, returnFiber.mode, lanes, key);\n      created.return = returnFiber;\n      return created;\n    } else {\n      // Update\n      var existing = useFiber(current, fragment);\n      existing.return = returnFiber;\n      return existing;\n    }\n  }\n\n  function createChild(returnFiber, newChild, lanes) {\n    if (typeof newChild === 'string' && newChild !== '' || typeof newChild === 'number') {\n      // Text nodes don't have keys. If the previous node is implicitly keyed\n      // we can continue to replace it without aborting even if it is not a text\n      // node.\n      var created = createFiberFromText('' + newChild, returnFiber.mode, lanes);\n      created.return = returnFiber;\n      return created;\n    }\n\n    if (typeof newChild === 'object' && newChild !== null) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          {\n            var _created = createFiberFromElement(newChild, returnFiber.mode, lanes);\n\n            _created.ref = coerceRef(returnFiber, null, newChild);\n            _created.return = returnFiber;\n            return _created;\n          }\n\n        case REACT_PORTAL_TYPE:\n          {\n            var _created2 = createFiberFromPortal(newChild, returnFiber.mode, lanes);\n\n            _created2.return = returnFiber;\n            return _created2;\n          }\n\n        case REACT_LAZY_TYPE:\n          {\n            var payload = newChild._payload;\n            var init = newChild._init;\n            return createChild(returnFiber, init(payload), lanes);\n          }\n      }\n\n      if (isArray(newChild) || getIteratorFn(newChild)) {\n        var _created3 = createFiberFromFragment(newChild, returnFiber.mode, lanes, null);\n\n        _created3.return = returnFiber;\n        return _created3;\n      }\n\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n\n    {\n      if (typeof newChild === 'function') {\n        warnOnFunctionType(returnFiber);\n      }\n    }\n\n    return null;\n  }\n\n  function updateSlot(returnFiber, oldFiber, newChild, lanes) {\n    // Update the fiber if the keys match, otherwise return null.\n    var key = oldFiber !== null ? oldFiber.key : null;\n\n    if (typeof newChild === 'string' && newChild !== '' || typeof newChild === 'number') {\n      // Text nodes don't have keys. If the previous node is implicitly keyed\n      // we can continue to replace it without aborting even if it is not a text\n      // node.\n      if (key !== null) {\n        return null;\n      }\n\n      return updateTextNode(returnFiber, oldFiber, '' + newChild, lanes);\n    }\n\n    if (typeof newChild === 'object' && newChild !== null) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          {\n            if (newChild.key === key) {\n              return updateElement(returnFiber, oldFiber, newChild, lanes);\n            } else {\n              return null;\n            }\n          }\n\n        case REACT_PORTAL_TYPE:\n          {\n            if (newChild.key === key) {\n              return updatePortal(returnFiber, oldFiber, newChild, lanes);\n            } else {\n              return null;\n            }\n          }\n\n        case REACT_LAZY_TYPE:\n          {\n            var payload = newChild._payload;\n            var init = newChild._init;\n            return updateSlot(returnFiber, oldFiber, init(payload), lanes);\n          }\n      }\n\n      if (isArray(newChild) || getIteratorFn(newChild)) {\n        if (key !== null) {\n          return null;\n        }\n\n        return updateFragment(returnFiber, oldFiber, newChild, lanes, null);\n      }\n\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n\n    {\n      if (typeof newChild === 'function') {\n        warnOnFunctionType(returnFiber);\n      }\n    }\n\n    return null;\n  }\n\n  function updateFromMap(existingChildren, returnFiber, newIdx, newChild, lanes) {\n    if (typeof newChild === 'string' && newChild !== '' || typeof newChild === 'number') {\n      // Text nodes don't have keys, so we neither have to check the old nor\n      // new node for the key. If both are text nodes, they match.\n      var matchedFiber = existingChildren.get(newIdx) || null;\n      return updateTextNode(returnFiber, matchedFiber, '' + newChild, lanes);\n    }\n\n    if (typeof newChild === 'object' && newChild !== null) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          {\n            var _matchedFiber = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null;\n\n            return updateElement(returnFiber, _matchedFiber, newChild, lanes);\n          }\n\n        case REACT_PORTAL_TYPE:\n          {\n            var _matchedFiber2 = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null;\n\n            return updatePortal(returnFiber, _matchedFiber2, newChild, lanes);\n          }\n\n        case REACT_LAZY_TYPE:\n          var payload = newChild._payload;\n          var init = newChild._init;\n          return updateFromMap(existingChildren, returnFiber, newIdx, init(payload), lanes);\n      }\n\n      if (isArray(newChild) || getIteratorFn(newChild)) {\n        var _matchedFiber3 = existingChildren.get(newIdx) || null;\n\n        return updateFragment(returnFiber, _matchedFiber3, newChild, lanes, null);\n      }\n\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n\n    {\n      if (typeof newChild === 'function') {\n        warnOnFunctionType(returnFiber);\n      }\n    }\n\n    return null;\n  }\n  /**\n   * Warns if there is a duplicate or missing key\n   */\n\n\n  function warnOnInvalidKey(child, knownKeys, returnFiber) {\n    {\n      if (typeof child !== 'object' || child === null) {\n        return knownKeys;\n      }\n\n      switch (child.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n        case REACT_PORTAL_TYPE:\n          warnForMissingKey(child, returnFiber);\n          var key = child.key;\n\n          if (typeof key !== 'string') {\n            break;\n          }\n\n          if (knownKeys === null) {\n            knownKeys = new Set();\n            knownKeys.add(key);\n            break;\n          }\n\n          if (!knownKeys.has(key)) {\n            knownKeys.add(key);\n            break;\n          }\n\n          error('Encountered two children with the same key, `%s`. ' + 'Keys should be unique so that components maintain their identity ' + 'across updates. Non-unique keys may cause children to be ' + 'duplicated and/or omitted \u2014 the behavior is unsupported and ' + 'could change in a future version.', key);\n\n          break;\n\n        case REACT_LAZY_TYPE:\n          var payload = child._payload;\n          var init = child._init;\n          warnOnInvalidKey(init(payload), knownKeys, returnFiber);\n          break;\n      }\n    }\n\n    return knownKeys;\n  }\n\n  function reconcileChildrenArray(returnFiber, currentFirstChild, newChildren, lanes) {\n    // This algorithm can't optimize by searching from both ends since we\n    // don't have backpointers on fibers. I'm trying to see how far we can get\n    // with that model. If it ends up not being worth the tradeoffs, we can\n    // add it later.\n    // Even with a two ended optimization, we'd want to optimize for the case\n    // where there are few changes and brute force the comparison instead of\n    // going for the Map. It'd like to explore hitting that path first in\n    // forward-only mode and only go for the Map once we notice that we need\n    // lots of look ahead. This doesn't handle reversal as well as two ended\n    // search but that's unusual. Besides, for the two ended optimization to\n    // work on Iterables, we'd need to copy the whole set.\n    // In this first iteration, we'll just live with hitting the bad case\n    // (adding everything to a Map) in for every insert/move.\n    // If you change this code, also update reconcileChildrenIterator() which\n    // uses the same algorithm.\n    {\n      // First, validate keys.\n      var knownKeys = null;\n\n      for (var i = 0; i < newChildren.length; i++) {\n        var child = newChildren[i];\n        knownKeys = warnOnInvalidKey(child, knownKeys, returnFiber);\n      }\n    }\n\n    var resultingFirstChild = null;\n    var previousNewFiber = null;\n    var oldFiber = currentFirstChild;\n    var lastPlacedIndex = 0;\n    var newIdx = 0;\n    var nextOldFiber = null;\n\n    for (; oldFiber !== null && newIdx < newChildren.length; newIdx++) {\n      if (oldFiber.index > newIdx) {\n        nextOldFiber = oldFiber;\n        oldFiber = null;\n      } else {\n        nextOldFiber = oldFiber.sibling;\n      }\n\n      var newFiber = updateSlot(returnFiber, oldFiber, newChildren[newIdx], lanes);\n\n      if (newFiber === null) {\n        // TODO: This breaks on empty slots like null children. That's\n        // unfortunate because it triggers the slow path all the time. We need\n        // a better way to communicate whether this was a miss or null,\n        // boolean, undefined, etc.\n        if (oldFiber === null) {\n          oldFiber = nextOldFiber;\n        }\n\n        break;\n      }\n\n      if (shouldTrackSideEffects) {\n        if (oldFiber && newFiber.alternate === null) {\n          // We matched the slot, but we didn't reuse the existing fiber, so we\n          // need to delete the existing child.\n          deleteChild(returnFiber, oldFiber);\n        }\n      }\n\n      lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);\n\n      if (previousNewFiber === null) {\n        // TODO: Move out of the loop. This only happens for the first run.\n        resultingFirstChild = newFiber;\n      } else {\n        // TODO: Defer siblings if we're not at the right index for this slot.\n        // I.e. if we had null values before, then we want to defer this\n        // for each null value. However, we also don't want to call updateSlot\n        // with the previous one.\n        previousNewFiber.sibling = newFiber;\n      }\n\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n\n    if (newIdx === newChildren.length) {\n      // We've reached the end of the new children. We can delete the rest.\n      deleteRemainingChildren(returnFiber, oldFiber);\n\n      if (getIsHydrating()) {\n        var numberOfForks = newIdx;\n        pushTreeFork(returnFiber, numberOfForks);\n      }\n\n      return resultingFirstChild;\n    }\n\n    if (oldFiber === null) {\n      // If we don't have any more existing children we can choose a fast path\n      // since the rest will all be insertions.\n      for (; newIdx < newChildren.length; newIdx++) {\n        var _newFiber = createChild(returnFiber, newChildren[newIdx], lanes);\n\n        if (_newFiber === null) {\n          continue;\n        }\n\n        lastPlacedIndex = placeChild(_newFiber, lastPlacedIndex, newIdx);\n\n        if (previousNewFiber === null) {\n          // TODO: Move out of the loop. This only happens for the first run.\n          resultingFirstChild = _newFiber;\n        } else {\n          previousNewFiber.sibling = _newFiber;\n        }\n\n        previousNewFiber = _newFiber;\n      }\n\n      if (getIsHydrating()) {\n        var _numberOfForks = newIdx;\n        pushTreeFork(returnFiber, _numberOfForks);\n      }\n\n      return resultingFirstChild;\n    } // Add all children to a key map for quick lookups.\n\n\n    var existingChildren = mapRemainingChildren(returnFiber, oldFiber); // Keep scanning and use the map to restore deleted items as moves.\n\n    for (; newIdx < newChildren.length; newIdx++) {\n      var _newFiber2 = updateFromMap(existingChildren, returnFiber, newIdx, newChildren[newIdx], lanes);\n\n      if (_newFiber2 !== null) {\n        if (shouldTrackSideEffects) {\n          if (_newFiber2.alternate !== null) {\n            // The new fiber is a work in progress, but if there exists a\n            // current, that means that we reused the fiber. We need to delete\n            // it from the child list so that we don't add it to the deletion\n            // list.\n            existingChildren.delete(_newFiber2.key === null ? newIdx : _newFiber2.key);\n          }\n        }\n\n        lastPlacedIndex = placeChild(_newFiber2, lastPlacedIndex, newIdx);\n\n        if (previousNewFiber === null) {\n          resultingFirstChild = _newFiber2;\n        } else {\n          previousNewFiber.sibling = _newFiber2;\n        }\n\n        previousNewFiber = _newFiber2;\n      }\n    }\n\n    if (shouldTrackSideEffects) {\n      // Any existing children that weren't consumed above were deleted. We need\n      // to add them to the deletion list.\n      existingChildren.forEach(function (child) {\n        return deleteChild(returnFiber, child);\n      });\n    }\n\n    if (getIsHydrating()) {\n      var _numberOfForks2 = newIdx;\n      pushTreeFork(returnFiber, _numberOfForks2);\n    }\n\n    return resultingFirstChild;\n  }\n\n  function reconcileChildrenIterator(returnFiber, currentFirstChild, newChildrenIterable, lanes) {\n    // This is the same implementation as reconcileChildrenArray(),\n    // but using the iterator instead.\n    var iteratorFn = getIteratorFn(newChildrenIterable);\n\n    if (typeof iteratorFn !== 'function') {\n      throw new Error('An object is not an iterable. This error is likely caused by a bug in ' + 'React. Please file an issue.');\n    }\n\n    {\n      // We don't support rendering Generators because it's a mutation.\n      // See https://github.com/facebook/react/issues/12995\n      if (typeof Symbol === 'function' && // $FlowFixMe Flow doesn't know about toStringTag\n      newChildrenIterable[Symbol.toStringTag] === 'Generator') {\n        if (!didWarnAboutGenerators) {\n          error('Using Generators as children is unsupported and will likely yield ' + 'unexpected results because enumerating a generator mutates it. ' + 'You may convert it to an array with `Array.from()` or the ' + '`[...spread]` operator before rendering. Keep in mind ' + 'you might need to polyfill these features for older browsers.');\n        }\n\n        didWarnAboutGenerators = true;\n      } // Warn about using Maps as children\n\n\n      if (newChildrenIterable.entries === iteratorFn) {\n        if (!didWarnAboutMaps) {\n          error('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.');\n        }\n\n        didWarnAboutMaps = true;\n      } // First, validate keys.\n      // We'll get a different iterator later for the main pass.\n\n\n      var _newChildren = iteratorFn.call(newChildrenIterable);\n\n      if (_newChildren) {\n        var knownKeys = null;\n\n        var _step = _newChildren.next();\n\n        for (; !_step.done; _step = _newChildren.next()) {\n          var child = _step.value;\n          knownKeys = warnOnInvalidKey(child, knownKeys, returnFiber);\n        }\n      }\n    }\n\n    var newChildren = iteratorFn.call(newChildrenIterable);\n\n    if (newChildren == null) {\n      throw new Error('An iterable object provided no iterator.');\n    }\n\n    var resultingFirstChild = null;\n    var previousNewFiber = null;\n    var oldFiber = currentFirstChild;\n    var lastPlacedIndex = 0;\n    var newIdx = 0;\n    var nextOldFiber = null;\n    var step = newChildren.next();\n\n    for (; oldFiber !== null && !step.done; newIdx++, step = newChildren.next()) {\n      if (oldFiber.index > newIdx) {\n        nextOldFiber = oldFiber;\n        oldFiber = null;\n      } else {\n        nextOldFiber = oldFiber.sibling;\n      }\n\n      var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);\n\n      if (newFiber === null) {\n        // TODO: This breaks on empty slots like null children. That's\n        // unfortunate because it triggers the slow path all the time. We need\n        // a better way to communicate whether this was a miss or null,\n        // boolean, undefined, etc.\n        if (oldFiber === null) {\n          oldFiber = nextOldFiber;\n        }\n\n        break;\n      }\n\n      if (shouldTrackSideEffects) {\n        if (oldFiber && newFiber.alternate === null) {\n          // We matched the slot, but we didn't reuse the existing fiber, so we\n          // need to delete the existing child.\n          deleteChild(returnFiber, oldFiber);\n        }\n      }\n\n      lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);\n\n      if (previousNewFiber === null) {\n        // TODO: Move out of the loop. This only happens for the first run.\n        resultingFirstChild = newFiber;\n      } else {\n        // TODO: Defer siblings if we're not at the right index for this slot.\n        // I.e. if we had null values before, then we want to defer this\n        // for each null value. However, we also don't want to call updateSlot\n        // with the previous one.\n        previousNewFiber.sibling = newFiber;\n      }\n\n      previousNewFiber = newFiber;\n      oldFiber = nextOldFiber;\n    }\n\n    if (step.done) {\n      // We've reached the end of the new children. We can delete the rest.\n      deleteRemainingChildren(returnFiber, oldFiber);\n\n      if (getIsHydrating()) {\n        var numberOfForks = newIdx;\n        pushTreeFork(returnFiber, numberOfForks);\n      }\n\n      return resultingFirstChild;\n    }\n\n    if (oldFiber === null) {\n      // If we don't have any more existing children we can choose a fast path\n      // since the rest will all be insertions.\n      for (; !step.done; newIdx++, step = newChildren.next()) {\n        var _newFiber3 = createChild(returnFiber, step.value, lanes);\n\n        if (_newFiber3 === null) {\n          continue;\n        }\n\n        lastPlacedIndex = placeChild(_newFiber3, lastPlacedIndex, newIdx);\n\n        if (previousNewFiber === null) {\n          // TODO: Move out of the loop. This only happens for the first run.\n          resultingFirstChild = _newFiber3;\n        } else {\n          previousNewFiber.sibling = _newFiber3;\n        }\n\n        previousNewFiber = _newFiber3;\n      }\n\n      if (getIsHydrating()) {\n        var _numberOfForks3 = newIdx;\n        pushTreeFork(returnFiber, _numberOfForks3);\n      }\n\n      return resultingFirstChild;\n    } // Add all children to a key map for quick lookups.\n\n\n    var existingChildren = mapRemainingChildren(returnFiber, oldFiber); // Keep scanning and use the map to restore deleted items as moves.\n\n    for (; !step.done; newIdx++, step = newChildren.next()) {\n      var _newFiber4 = updateFromMap(existingChildren, returnFiber, newIdx, step.value, lanes);\n\n      if (_newFiber4 !== null) {\n        if (shouldTrackSideEffects) {\n          if (_newFiber4.alternate !== null) {\n            // The new fiber is a work in progress, but if there exists a\n            // current, that means that we reused the fiber. We need to delete\n            // it from the child list so that we don't add it to the deletion\n            // list.\n            existingChildren.delete(_newFiber4.key === null ? newIdx : _newFiber4.key);\n          }\n        }\n\n        lastPlacedIndex = placeChild(_newFiber4, lastPlacedIndex, newIdx);\n\n        if (previousNewFiber === null) {\n          resultingFirstChild = _newFiber4;\n        } else {\n          previousNewFiber.sibling = _newFiber4;\n        }\n\n        previousNewFiber = _newFiber4;\n      }\n    }\n\n    if (shouldTrackSideEffects) {\n      // Any existing children that weren't consumed above were deleted. We need\n      // to add them to the deletion list.\n      existingChildren.forEach(function (child) {\n        return deleteChild(returnFiber, child);\n      });\n    }\n\n    if (getIsHydrating()) {\n      var _numberOfForks4 = newIdx;\n      pushTreeFork(returnFiber, _numberOfForks4);\n    }\n\n    return resultingFirstChild;\n  }\n\n  function reconcileSingleTextNode(returnFiber, currentFirstChild, textContent, lanes) {\n    // There's no need to check for keys on text nodes since we don't have a\n    // way to define them.\n    if (currentFirstChild !== null && currentFirstChild.tag === HostText) {\n      // We already have an existing node so let's just update it and delete\n      // the rest.\n      deleteRemainingChildren(returnFiber, currentFirstChild.sibling);\n      var existing = useFiber(currentFirstChild, textContent);\n      existing.return = returnFiber;\n      return existing;\n    } // The existing first child is not a text node so we need to create one\n    // and delete the existing ones.\n\n\n    deleteRemainingChildren(returnFiber, currentFirstChild);\n    var created = createFiberFromText(textContent, returnFiber.mode, lanes);\n    created.return = returnFiber;\n    return created;\n  }\n\n  function reconcileSingleElement(returnFiber, currentFirstChild, element, lanes) {\n    var key = element.key;\n    var child = currentFirstChild;\n\n    while (child !== null) {\n      // TODO: If key === null and child.key === null, then this only applies to\n      // the first item in the list.\n      if (child.key === key) {\n        var elementType = element.type;\n\n        if (elementType === REACT_FRAGMENT_TYPE) {\n          if (child.tag === Fragment) {\n            deleteRemainingChildren(returnFiber, child.sibling);\n            var existing = useFiber(child, element.props.children);\n            existing.return = returnFiber;\n\n            {\n              existing._debugSource = element._source;\n              existing._debugOwner = element._owner;\n            }\n\n            return existing;\n          }\n        } else {\n          if (child.elementType === elementType || ( // Keep this check inline so it only runs on the false path:\n           isCompatibleFamilyForHotReloading(child, element) ) || // Lazy types should reconcile their resolved type.\n          // We need to do this after the Hot Reloading check above,\n          // because hot reloading has different semantics than prod because\n          // it doesn't resuspend. So we can't let the call below suspend.\n          typeof elementType === 'object' && elementType !== null && elementType.$$typeof === REACT_LAZY_TYPE && resolveLazy(elementType) === child.type) {\n            deleteRemainingChildren(returnFiber, child.sibling);\n\n            var _existing = useFiber(child, element.props);\n\n            _existing.ref = coerceRef(returnFiber, child, element);\n            _existing.return = returnFiber;\n\n            {\n              _existing._debugSource = element._source;\n              _existing._debugOwner = element._owner;\n            }\n\n            return _existing;\n          }\n        } // Didn't match.\n\n\n        deleteRemainingChildren(returnFiber, child);\n        break;\n      } else {\n        deleteChild(returnFiber, child);\n      }\n\n      child = child.sibling;\n    }\n\n    if (element.type === REACT_FRAGMENT_TYPE) {\n      var created = createFiberFromFragment(element.props.children, returnFiber.mode, lanes, element.key);\n      created.return = returnFiber;\n      return created;\n    } else {\n      var _created4 = createFiberFromElement(element, returnFiber.mode, lanes);\n\n      _created4.ref = coerceRef(returnFiber, currentFirstChild, element);\n      _created4.return = returnFiber;\n      return _created4;\n    }\n  }\n\n  function reconcileSinglePortal(returnFiber, currentFirstChild, portal, lanes) {\n    var key = portal.key;\n    var child = currentFirstChild;\n\n    while (child !== null) {\n      // TODO: If key === null and child.key === null, then this only applies to\n      // the first item in the list.\n      if (child.key === key) {\n        if (child.tag === HostPortal && child.stateNode.containerInfo === portal.containerInfo && child.stateNode.implementation === portal.implementation) {\n          deleteRemainingChildren(returnFiber, child.sibling);\n          var existing = useFiber(child, portal.children || []);\n          existing.return = returnFiber;\n          return existing;\n        } else {\n          deleteRemainingChildren(returnFiber, child);\n          break;\n        }\n      } else {\n        deleteChild(returnFiber, child);\n      }\n\n      child = child.sibling;\n    }\n\n    var created = createFiberFromPortal(portal, returnFiber.mode, lanes);\n    created.return = returnFiber;\n    return created;\n  } // This API will tag the children with the side-effect of the reconciliation\n  // itself. They will be added to the side-effect list as we pass through the\n  // children and the parent.\n\n\n  function reconcileChildFibers(returnFiber, currentFirstChild, newChild, lanes) {\n    // This function is not recursive.\n    // If the top level item is an array, we treat it as a set of children,\n    // not as a fragment. Nested arrays on the other hand will be treated as\n    // fragment nodes. Recursion happens at the normal flow.\n    // Handle top level unkeyed fragments as if they were arrays.\n    // This leads to an ambiguity between <>{[...]}</> and <>...</>.\n    // We treat the ambiguous cases above the same.\n    var isUnkeyedTopLevelFragment = typeof newChild === 'object' && newChild !== null && newChild.type === REACT_FRAGMENT_TYPE && newChild.key === null;\n\n    if (isUnkeyedTopLevelFragment) {\n      newChild = newChild.props.children;\n    } // Handle object types\n\n\n    if (typeof newChild === 'object' && newChild !== null) {\n      switch (newChild.$$typeof) {\n        case REACT_ELEMENT_TYPE:\n          return placeSingleChild(reconcileSingleElement(returnFiber, currentFirstChild, newChild, lanes));\n\n        case REACT_PORTAL_TYPE:\n          return placeSingleChild(reconcileSinglePortal(returnFiber, currentFirstChild, newChild, lanes));\n\n        case REACT_LAZY_TYPE:\n          var payload = newChild._payload;\n          var init = newChild._init; // TODO: This function is supposed to be non-recursive.\n\n          return reconcileChildFibers(returnFiber, currentFirstChild, init(payload), lanes);\n      }\n\n      if (isArray(newChild)) {\n        return reconcileChildrenArray(returnFiber, currentFirstChild, newChild, lanes);\n      }\n\n      if (getIteratorFn(newChild)) {\n        return reconcileChildrenIterator(returnFiber, currentFirstChild, newChild, lanes);\n      }\n\n      throwOnInvalidObjectType(returnFiber, newChild);\n    }\n\n    if (typeof newChild === 'string' && newChild !== '' || typeof newChild === 'number') {\n      return placeSingleChild(reconcileSingleTextNode(returnFiber, currentFirstChild, '' + newChild, lanes));\n    }\n\n    {\n      if (typeof newChild === 'function') {\n        warnOnFunctionType(returnFiber);\n      }\n    } // Remaining cases are all treated as empty.\n\n\n    return deleteRemainingChildren(returnFiber, currentFirstChild);\n  }\n\n  return reconcileChildFibers;\n}\n\nvar reconcileChildFibers = ChildReconciler(true);\nvar mountChildFibers = ChildReconciler(false);\nfunction cloneChildFibers(current, workInProgress) {\n  if (current !== null && workInProgress.child !== current.child) {\n    throw new Error('Resuming work not yet implemented.');\n  }\n\n  if (workInProgress.child === null) {\n    return;\n  }\n\n  var currentChild = workInProgress.child;\n  var newChild = createWorkInProgress(currentChild, currentChild.pendingProps);\n  workInProgress.child = newChild;\n  newChild.return = workInProgress;\n\n  while (currentChild.sibling !== null) {\n    currentChild = currentChild.sibling;\n    newChild = newChild.sibling = createWorkInProgress(currentChild, currentChild.pendingProps);\n    newChild.return = workInProgress;\n  }\n\n  newChild.sibling = null;\n} // Reset a workInProgress child set to prepare it for a second pass.\n\nfunction resetChildFibers(workInProgress, lanes) {\n  var child = workInProgress.child;\n\n  while (child !== null) {\n    resetWorkInProgress(child, lanes);\n    child = child.sibling;\n  }\n}\n\nvar NO_CONTEXT = {};\nvar contextStackCursor$1 = createCursor(NO_CONTEXT);\nvar contextFiberStackCursor = createCursor(NO_CONTEXT);\nvar rootInstanceStackCursor = createCursor(NO_CONTEXT);\n\nfunction requiredContext(c) {\n  if (c === NO_CONTEXT) {\n    throw new Error('Expected host context to exist. This error is likely caused by a bug ' + 'in React. Please file an issue.');\n  }\n\n  return c;\n}\n\nfunction getRootHostContainer() {\n  var rootInstance = requiredContext(rootInstanceStackCursor.current);\n  return rootInstance;\n}\n\nfunction pushHostContainer(fiber, nextRootInstance) {\n  // Push current root instance onto the stack;\n  // This allows us to reset root when portals are popped.\n  push(rootInstanceStackCursor, nextRootInstance, fiber); // Track the context and the Fiber that provided it.\n  // This enables us to pop only Fibers that provide unique contexts.\n\n  push(contextFiberStackCursor, fiber, fiber); // Finally, we need to push the host context to the stack.\n  // However, we can't just call getRootHostContext() and push it because\n  // we'd have a different number of entries on the stack depending on\n  // whether getRootHostContext() throws somewhere in renderer code or not.\n  // So we push an empty value first. This lets us safely unwind on errors.\n\n  push(contextStackCursor$1, NO_CONTEXT, fiber);\n  var nextRootContext = getRootHostContext(nextRootInstance); // Now that we know this function doesn't throw, replace it.\n\n  pop(contextStackCursor$1, fiber);\n  push(contextStackCursor$1, nextRootContext, fiber);\n}\n\nfunction popHostContainer(fiber) {\n  pop(contextStackCursor$1, fiber);\n  pop(contextFiberStackCursor, fiber);\n  pop(rootInstanceStackCursor, fiber);\n}\n\nfunction getHostContext() {\n  var context = requiredContext(contextStackCursor$1.current);\n  return context;\n}\n\nfunction pushHostContext(fiber) {\n  var rootInstance = requiredContext(rootInstanceStackCursor.current);\n  var context = requiredContext(contextStackCursor$1.current);\n  var nextContext = getChildHostContext(context, fiber.type); // Don't push this Fiber's context unless it's unique.\n\n  if (context === nextContext) {\n    return;\n  } // Track the context and the Fiber that provided it.\n  // This enables us to pop only Fibers that provide unique contexts.\n\n\n  push(contextFiberStackCursor, fiber, fiber);\n  push(contextStackCursor$1, nextContext, fiber);\n}\n\nfunction popHostContext(fiber) {\n  // Do not pop unless this Fiber provided the current context.\n  // pushHostContext() only pushes Fibers that provide unique contexts.\n  if (contextFiberStackCursor.current !== fiber) {\n    return;\n  }\n\n  pop(contextStackCursor$1, fiber);\n  pop(contextFiberStackCursor, fiber);\n}\n\nvar DefaultSuspenseContext = 0; // The Suspense Context is split into two parts. The lower bits is\n// inherited deeply down the subtree. The upper bits only affect\n// this immediate suspense boundary and gets reset each new\n// boundary or suspense list.\n\nvar SubtreeSuspenseContextMask = 1; // Subtree Flags:\n// InvisibleParentSuspenseContext indicates that one of our parent Suspense\n// boundaries is not currently showing visible main content.\n// Either because it is already showing a fallback or is not mounted at all.\n// We can use this to determine if it is desirable to trigger a fallback at\n// the parent. If not, then we might need to trigger undesirable boundaries\n// and/or suspend the commit to avoid hiding the parent content.\n\nvar InvisibleParentSuspenseContext = 1; // Shallow Flags:\n// ForceSuspenseFallback can be used by SuspenseList to force newly added\n// items into their fallback state during one of the render passes.\n\nvar ForceSuspenseFallback = 2;\nvar suspenseStackCursor = createCursor(DefaultSuspenseContext);\nfunction hasSuspenseContext(parentContext, flag) {\n  return (parentContext & flag) !== 0;\n}\nfunction setDefaultShallowSuspenseContext(parentContext) {\n  return parentContext & SubtreeSuspenseContextMask;\n}\nfunction setShallowSuspenseContext(parentContext, shallowContext) {\n  return parentContext & SubtreeSuspenseContextMask | shallowContext;\n}\nfunction addSubtreeSuspenseContext(parentContext, subtreeContext) {\n  return parentContext | subtreeContext;\n}\nfunction pushSuspenseContext(fiber, newContext) {\n  push(suspenseStackCursor, newContext, fiber);\n}\nfunction popSuspenseContext(fiber) {\n  pop(suspenseStackCursor, fiber);\n}\n\nfunction shouldCaptureSuspense(workInProgress, hasInvisibleParent) {\n  // If it was the primary children that just suspended, capture and render the\n  // fallback. Otherwise, don't capture and bubble to the next boundary.\n  var nextState = workInProgress.memoizedState;\n\n  if (nextState !== null) {\n    if (nextState.dehydrated !== null) {\n      // A dehydrated boundary always captures.\n      return true;\n    }\n\n    return false;\n  }\n\n  var props = workInProgress.memoizedProps; // Regular boundaries always capture.\n\n  {\n    return true;\n  } // If it's a boundary we should avoid, then we prefer to bubble up to the\n}\nfunction findFirstSuspended(row) {\n  var node = row;\n\n  while (node !== null) {\n    if (node.tag === SuspenseComponent) {\n      var state = node.memoizedState;\n\n      if (state !== null) {\n        var dehydrated = state.dehydrated;\n\n        if (dehydrated === null || isSuspenseInstancePending(dehydrated) || isSuspenseInstanceFallback(dehydrated)) {\n          return node;\n        }\n      }\n    } else if (node.tag === SuspenseListComponent && // revealOrder undefined can't be trusted because it don't\n    // keep track of whether it suspended or not.\n    node.memoizedProps.revealOrder !== undefined) {\n      var didSuspend = (node.flags & DidCapture) !== NoFlags;\n\n      if (didSuspend) {\n        return node;\n      }\n    } else if (node.child !== null) {\n      node.child.return = node;\n      node = node.child;\n      continue;\n    }\n\n    if (node === row) {\n      return null;\n    }\n\n    while (node.sibling === null) {\n      if (node.return === null || node.return === row) {\n        return null;\n      }\n\n      node = node.return;\n    }\n\n    node.sibling.return = node.return;\n    node = node.sibling;\n  }\n\n  return null;\n}\n\nvar NoFlags$1 =\n/*   */\n0; // Represents whether effect should fire.\n\nvar HasEffect =\n/* */\n1; // Represents the phase in which the effect (not the clean-up) fires.\n\nvar Insertion =\n/*  */\n2;\nvar Layout =\n/*    */\n4;\nvar Passive$1 =\n/*   */\n8;\n\n// and should be reset before starting a new render.\n// This tracks which mutable sources need to be reset after a render.\n\nvar workInProgressSources = [];\nfunction resetWorkInProgressVersions() {\n  for (var i = 0; i < workInProgressSources.length; i++) {\n    var mutableSource = workInProgressSources[i];\n\n    {\n      mutableSource._workInProgressVersionPrimary = null;\n    }\n  }\n\n  workInProgressSources.length = 0;\n}\n// This ensures that the version used for server rendering matches the one\n// that is eventually read during hydration.\n// If they don't match there's a potential tear and a full deopt render is required.\n\nfunction registerMutableSourceForHydration(root, mutableSource) {\n  var getVersion = mutableSource._getVersion;\n  var version = getVersion(mutableSource._source); // TODO Clear this data once all pending hydration work is finished.\n  // Retaining it forever may interfere with GC.\n\n  if (root.mutableSourceEagerHydrationData == null) {\n    root.mutableSourceEagerHydrationData = [mutableSource, version];\n  } else {\n    root.mutableSourceEagerHydrationData.push(mutableSource, version);\n  }\n}\n\nvar ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher,\n    ReactCurrentBatchConfig$2 = ReactSharedInternals.ReactCurrentBatchConfig;\nvar didWarnAboutMismatchedHooksForComponent;\nvar didWarnUncachedGetSnapshot;\n\n{\n  didWarnAboutMismatchedHooksForComponent = new Set();\n}\n\n// These are set right before calling the component.\nvar renderLanes = NoLanes; // The work-in-progress fiber. I've named it differently to distinguish it from\n// the work-in-progress hook.\n\nvar currentlyRenderingFiber$1 = null; // Hooks are stored as a linked list on the fiber's memoizedState field. The\n// current hook list is the list that belongs to the current fiber. The\n// work-in-progress hook list is a new list that will be added to the\n// work-in-progress fiber.\n\nvar currentHook = null;\nvar workInProgressHook = null; // Whether an update was scheduled at any point during the render phase. This\n// does not get reset if we do another render pass; only when we're completely\n// finished evaluating this component. This is an optimization so we know\n// whether we need to clear render phase updates after a throw.\n\nvar didScheduleRenderPhaseUpdate = false; // Where an update was scheduled only during the current render pass. This\n// gets reset after each attempt.\n// TODO: Maybe there's some way to consolidate this with\n// `didScheduleRenderPhaseUpdate`. Or with `numberOfReRenders`.\n\nvar didScheduleRenderPhaseUpdateDuringThisPass = false; // Counts the number of useId hooks in this component.\n\nvar localIdCounter = 0; // Used for ids that are generated completely client-side (i.e. not during\n// hydration). This counter is global, so client ids are not stable across\n// render attempts.\n\nvar globalClientIdCounter = 0;\nvar RE_RENDER_LIMIT = 25; // In DEV, this is the name of the currently executing primitive hook\n\nvar currentHookNameInDev = null; // In DEV, this list ensures that hooks are called in the same order between renders.\n// The list stores the order of hooks used during the initial render (mount).\n// Subsequent renders (updates) reference this list.\n\nvar hookTypesDev = null;\nvar hookTypesUpdateIndexDev = -1; // In DEV, this tracks whether currently rendering component needs to ignore\n// the dependencies for Hooks that need them (e.g. useEffect or useMemo).\n// When true, such Hooks will always be \"remounted\". Only used during hot reload.\n\nvar ignorePreviousDependencies = false;\n\nfunction mountHookTypesDev() {\n  {\n    var hookName = currentHookNameInDev;\n\n    if (hookTypesDev === null) {\n      hookTypesDev = [hookName];\n    } else {\n      hookTypesDev.push(hookName);\n    }\n  }\n}\n\nfunction updateHookTypesDev() {\n  {\n    var hookName = currentHookNameInDev;\n\n    if (hookTypesDev !== null) {\n      hookTypesUpdateIndexDev++;\n\n      if (hookTypesDev[hookTypesUpdateIndexDev] !== hookName) {\n        warnOnHookMismatchInDev(hookName);\n      }\n    }\n  }\n}\n\nfunction checkDepsAreArrayDev(deps) {\n  {\n    if (deps !== undefined && deps !== null && !isArray(deps)) {\n      // Verify deps, but only on mount to avoid extra checks.\n      // It's unlikely their type would change as usually you define them inline.\n      error('%s received a final argument that is not an array (instead, received `%s`). When ' + 'specified, the final argument must be an array.', currentHookNameInDev, typeof deps);\n    }\n  }\n}\n\nfunction warnOnHookMismatchInDev(currentHookName) {\n  {\n    var componentName = getComponentNameFromFiber(currentlyRenderingFiber$1);\n\n    if (!didWarnAboutMismatchedHooksForComponent.has(componentName)) {\n      didWarnAboutMismatchedHooksForComponent.add(componentName);\n\n      if (hookTypesDev !== null) {\n        var table = '';\n        var secondColumnStart = 30;\n\n        for (var i = 0; i <= hookTypesUpdateIndexDev; i++) {\n          var oldHookName = hookTypesDev[i];\n          var newHookName = i === hookTypesUpdateIndexDev ? currentHookName : oldHookName;\n          var row = i + 1 + \". \" + oldHookName; // Extra space so second column lines up\n          // lol @ IE not supporting String#repeat\n\n          while (row.length < secondColumnStart) {\n            row += ' ';\n          }\n\n          row += newHookName + '\\n';\n          table += row;\n        }\n\n        error('React has detected a change in the order of Hooks called by %s. ' + 'This will lead to bugs and errors if not fixed. ' + 'For more information, read the Rules of Hooks: https://reactjs.org/link/rules-of-hooks\\n\\n' + '   Previous render            Next render\\n' + '   ------------------------------------------------------\\n' + '%s' + '   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n', componentName, table);\n      }\n    }\n  }\n}\n\nfunction throwInvalidHookError() {\n  throw new Error('Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for' + ' one of the following reasons:\\n' + '1. You might have mismatching versions of React and the renderer (such as React DOM)\\n' + '2. You might be breaking the Rules of Hooks\\n' + '3. You might have more than one copy of React in the same app\\n' + 'See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.');\n}\n\nfunction areHookInputsEqual(nextDeps, prevDeps) {\n  {\n    if (ignorePreviousDependencies) {\n      // Only true when this component is being hot reloaded.\n      return false;\n    }\n  }\n\n  if (prevDeps === null) {\n    {\n      error('%s received a final argument during this render, but not during ' + 'the previous render. Even though the final argument is optional, ' + 'its type cannot change between renders.', currentHookNameInDev);\n    }\n\n    return false;\n  }\n\n  {\n    // Don't bother comparing lengths in prod because these arrays should be\n    // passed inline.\n    if (nextDeps.length !== prevDeps.length) {\n      error('The final argument passed to %s changed size between renders. The ' + 'order and size of this array must remain constant.\\n\\n' + 'Previous: %s\\n' + 'Incoming: %s', currentHookNameInDev, \"[\" + prevDeps.join(', ') + \"]\", \"[\" + nextDeps.join(', ') + \"]\");\n    }\n  }\n\n  for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++) {\n    if (objectIs(nextDeps[i], prevDeps[i])) {\n      continue;\n    }\n\n    return false;\n  }\n\n  return true;\n}\n\nfunction renderWithHooks(current, workInProgress, Component, props, secondArg, nextRenderLanes) {\n  renderLanes = nextRenderLanes;\n  currentlyRenderingFiber$1 = workInProgress;\n\n  {\n    hookTypesDev = current !== null ? current._debugHookTypes : null;\n    hookTypesUpdateIndexDev = -1; // Used for hot reloading:\n\n    ignorePreviousDependencies = current !== null && current.type !== workInProgress.type;\n  }\n\n  workInProgress.memoizedState = null;\n  workInProgress.updateQueue = null;\n  workInProgress.lanes = NoLanes; // The following should have already been reset\n  // currentHook = null;\n  // workInProgressHook = null;\n  // didScheduleRenderPhaseUpdate = false;\n  // localIdCounter = 0;\n  // TODO Warn if no hooks are used at all during mount, then some are used during update.\n  // Currently we will identify the update render as a mount because memoizedState === null.\n  // This is tricky because it's valid for certain types of components (e.g. React.lazy)\n  // Using memoizedState to differentiate between mount/update only works if at least one stateful hook is used.\n  // Non-stateful hooks (e.g. context) don't get added to memoizedState,\n  // so memoizedState would be null during updates and mounts.\n\n  {\n    if (current !== null && current.memoizedState !== null) {\n      ReactCurrentDispatcher$1.current = HooksDispatcherOnUpdateInDEV;\n    } else if (hookTypesDev !== null) {\n      // This dispatcher handles an edge case where a component is updating,\n      // but no stateful hooks have been used.\n      // We want to match the production code behavior (which will use HooksDispatcherOnMount),\n      // but with the extra DEV validation to ensure hooks ordering hasn't changed.\n      // This dispatcher does that.\n      ReactCurrentDispatcher$1.current = HooksDispatcherOnMountWithHookTypesInDEV;\n    } else {\n      ReactCurrentDispatcher$1.current = HooksDispatcherOnMountInDEV;\n    }\n  }\n\n  var children = Component(props, secondArg); // Check if there was a render phase update\n\n  if (didScheduleRenderPhaseUpdateDuringThisPass) {\n    // Keep rendering in a loop for as long as render phase updates continue to\n    // be scheduled. Use a counter to prevent infinite loops.\n    var numberOfReRenders = 0;\n\n    do {\n      didScheduleRenderPhaseUpdateDuringThisPass = false;\n      localIdCounter = 0;\n\n      if (numberOfReRenders >= RE_RENDER_LIMIT) {\n        throw new Error('Too many re-renders. React limits the number of renders to prevent ' + 'an infinite loop.');\n      }\n\n      numberOfReRenders += 1;\n\n      {\n        // Even when hot reloading, allow dependencies to stabilize\n        // after first render to prevent infinite render phase updates.\n        ignorePreviousDependencies = false;\n      } // Start over from the beginning of the list\n\n\n      currentHook = null;\n      workInProgressHook = null;\n      workInProgress.updateQueue = null;\n\n      {\n        // Also validate hook order for cascading updates.\n        hookTypesUpdateIndexDev = -1;\n      }\n\n      ReactCurrentDispatcher$1.current =  HooksDispatcherOnRerenderInDEV ;\n      children = Component(props, secondArg);\n    } while (didScheduleRenderPhaseUpdateDuringThisPass);\n  } // We can assume the previous dispatcher is always this one, since we set it\n  // at the beginning of the render phase and there's no re-entrance.\n\n\n  ReactCurrentDispatcher$1.current = ContextOnlyDispatcher;\n\n  {\n    workInProgress._debugHookTypes = hookTypesDev;\n  } // This check uses currentHook so that it works the same in DEV and prod bundles.\n  // hookTypesDev could catch more cases (e.g. context) but only in DEV bundles.\n\n\n  var didRenderTooFewHooks = currentHook !== null && currentHook.next !== null;\n  renderLanes = NoLanes;\n  currentlyRenderingFiber$1 = null;\n  currentHook = null;\n  workInProgressHook = null;\n\n  {\n    currentHookNameInDev = null;\n    hookTypesDev = null;\n    hookTypesUpdateIndexDev = -1; // Confirm that a static flag was not added or removed since the last\n    // render. If this fires, it suggests that we incorrectly reset the static\n    // flags in some other part of the codebase. This has happened before, for\n    // example, in the SuspenseList implementation.\n\n    if (current !== null && (current.flags & StaticMask) !== (workInProgress.flags & StaticMask) && // Disable this warning in legacy mode, because legacy Suspense is weird\n    // and creates false positives. To make this work in legacy mode, we'd\n    // need to mark fibers that commit in an incomplete state, somehow. For\n    // now I'll disable the warning that most of the bugs that would trigger\n    // it are either exclusive to concurrent mode or exist in both.\n    (current.mode & ConcurrentMode) !== NoMode) {\n      error('Internal React error: Expected static flag was missing. Please ' + 'notify the React team.');\n    }\n  }\n\n  didScheduleRenderPhaseUpdate = false; // This is reset by checkDidRenderIdHook\n  // localIdCounter = 0;\n\n  if (didRenderTooFewHooks) {\n    throw new Error('Rendered fewer hooks than expected. This may be caused by an accidental ' + 'early return statement.');\n  }\n\n  return children;\n}\nfunction checkDidRenderIdHook() {\n  // This should be called immediately after every renderWithHooks call.\n  // Conceptually, it's part of the return value of renderWithHooks; it's only a\n  // separate function to avoid using an array tuple.\n  var didRenderIdHook = localIdCounter !== 0;\n  localIdCounter = 0;\n  return didRenderIdHook;\n}\nfunction bailoutHooks(current, workInProgress, lanes) {\n  workInProgress.updateQueue = current.updateQueue; // TODO: Don't need to reset the flags here, because they're reset in the\n  // complete phase (bubbleProperties).\n\n  if ( (workInProgress.mode & StrictEffectsMode) !== NoMode) {\n    workInProgress.flags &= ~(MountPassiveDev | MountLayoutDev | Passive | Update);\n  } else {\n    workInProgress.flags &= ~(Passive | Update);\n  }\n\n  current.lanes = removeLanes(current.lanes, lanes);\n}\nfunction resetHooksAfterThrow() {\n  // We can assume the previous dispatcher is always this one, since we set it\n  // at the beginning of the render phase and there's no re-entrance.\n  ReactCurrentDispatcher$1.current = ContextOnlyDispatcher;\n\n  if (didScheduleRenderPhaseUpdate) {\n    // There were render phase updates. These are only valid for this render\n    // phase, which we are now aborting. Remove the updates from the queues so\n    // they do not persist to the next render. Do not remove updates from hooks\n    // that weren't processed.\n    //\n    // Only reset the updates from the queue if it has a clone. If it does\n    // not have a clone, that means it wasn't processed, and the updates were\n    // scheduled before we entered the render phase.\n    var hook = currentlyRenderingFiber$1.memoizedState;\n\n    while (hook !== null) {\n      var queue = hook.queue;\n\n      if (queue !== null) {\n        queue.pending = null;\n      }\n\n      hook = hook.next;\n    }\n\n    didScheduleRenderPhaseUpdate = false;\n  }\n\n  renderLanes = NoLanes;\n  currentlyRenderingFiber$1 = null;\n  currentHook = null;\n  workInProgressHook = null;\n\n  {\n    hookTypesDev = null;\n    hookTypesUpdateIndexDev = -1;\n    currentHookNameInDev = null;\n    isUpdatingOpaqueValueInRenderPhase = false;\n  }\n\n  didScheduleRenderPhaseUpdateDuringThisPass = false;\n  localIdCounter = 0;\n}\n\nfunction mountWorkInProgressHook() {\n  var hook = {\n    memoizedState: null,\n    baseState: null,\n    baseQueue: null,\n    queue: null,\n    next: null\n  };\n\n  if (workInProgressHook === null) {\n    // This is the first hook in the list\n    currentlyRenderingFiber$1.memoizedState = workInProgressHook = hook;\n  } else {\n    // Append to the end of the list\n    workInProgressHook = workInProgressHook.next = hook;\n  }\n\n  return workInProgressHook;\n}\n\nfunction updateWorkInProgressHook() {\n  // This function is used both for updates and for re-renders triggered by a\n  // render phase update. It assumes there is either a current hook we can\n  // clone, or a work-in-progress hook from a previous render pass that we can\n  // use as a base. When we reach the end of the base list, we must switch to\n  // the dispatcher used for mounts.\n  var nextCurrentHook;\n\n  if (currentHook === null) {\n    var current = currentlyRenderingFiber$1.alternate;\n\n    if (current !== null) {\n      nextCurrentHook = current.memoizedState;\n    } else {\n      nextCurrentHook = null;\n    }\n  } else {\n    nextCurrentHook = currentHook.next;\n  }\n\n  var nextWorkInProgressHook;\n\n  if (workInProgressHook === null) {\n    nextWorkInProgressHook = currentlyRenderingFiber$1.memoizedState;\n  } else {\n    nextWorkInProgressHook = workInProgressHook.next;\n  }\n\n  if (nextWorkInProgressHook !== null) {\n    // There's already a work-in-progress. Reuse it.\n    workInProgressHook = nextWorkInProgressHook;\n    nextWorkInProgressHook = workInProgressHook.next;\n    currentHook = nextCurrentHook;\n  } else {\n    // Clone from the current hook.\n    if (nextCurrentHook === null) {\n      throw new Error('Rendered more hooks than during the previous render.');\n    }\n\n    currentHook = nextCurrentHook;\n    var newHook = {\n      memoizedState: currentHook.memoizedState,\n      baseState: currentHook.baseState,\n      baseQueue: currentHook.baseQueue,\n      queue: currentHook.queue,\n      next: null\n    };\n\n    if (workInProgressHook === null) {\n      // This is the first hook in the list.\n      currentlyRenderingFiber$1.memoizedState = workInProgressHook = newHook;\n    } else {\n      // Append to the end of the list.\n      workInProgressHook = workInProgressHook.next = newHook;\n    }\n  }\n\n  return workInProgressHook;\n}\n\nfunction createFunctionComponentUpdateQueue() {\n  return {\n    lastEffect: null,\n    stores: null\n  };\n}\n\nfunction basicStateReducer(state, action) {\n  // $FlowFixMe: Flow doesn't like mixed types\n  return typeof action === 'function' ? action(state) : action;\n}\n\nfunction mountReducer(reducer, initialArg, init) {\n  var hook = mountWorkInProgressHook();\n  var initialState;\n\n  if (init !== undefined) {\n    initialState = init(initialArg);\n  } else {\n    initialState = initialArg;\n  }\n\n  hook.memoizedState = hook.baseState = initialState;\n  var queue = {\n    pending: null,\n    interleaved: null,\n    lanes: NoLanes,\n    dispatch: null,\n    lastRenderedReducer: reducer,\n    lastRenderedState: initialState\n  };\n  hook.queue = queue;\n  var dispatch = queue.dispatch = dispatchReducerAction.bind(null, currentlyRenderingFiber$1, queue);\n  return [hook.memoizedState, dispatch];\n}\n\nfunction updateReducer(reducer, initialArg, init) {\n  var hook = updateWorkInProgressHook();\n  var queue = hook.queue;\n\n  if (queue === null) {\n    throw new Error('Should have a queue. This is likely a bug in React. Please file an issue.');\n  }\n\n  queue.lastRenderedReducer = reducer;\n  var current = currentHook; // The last rebase update that is NOT part of the base state.\n\n  var baseQueue = current.baseQueue; // The last pending update that hasn't been processed yet.\n\n  var pendingQueue = queue.pending;\n\n  if (pendingQueue !== null) {\n    // We have new updates that haven't been processed yet.\n    // We'll add them to the base queue.\n    if (baseQueue !== null) {\n      // Merge the pending queue and the base queue.\n      var baseFirst = baseQueue.next;\n      var pendingFirst = pendingQueue.next;\n      baseQueue.next = pendingFirst;\n      pendingQueue.next = baseFirst;\n    }\n\n    {\n      if (current.baseQueue !== baseQueue) {\n        // Internal invariant that should never happen, but feasibly could in\n        // the future if we implement resuming, or some form of that.\n        error('Internal error: Expected work-in-progress queue to be a clone. ' + 'This is a bug in React.');\n      }\n    }\n\n    current.baseQueue = baseQueue = pendingQueue;\n    queue.pending = null;\n  }\n\n  if (baseQueue !== null) {\n    // We have a queue to process.\n    var first = baseQueue.next;\n    var newState = current.baseState;\n    var newBaseState = null;\n    var newBaseQueueFirst = null;\n    var newBaseQueueLast = null;\n    var update = first;\n\n    do {\n      var updateLane = update.lane;\n\n      if (!isSubsetOfLanes(renderLanes, updateLane)) {\n        // Priority is insufficient. Skip this update. If this is the first\n        // skipped update, the previous update/state is the new base\n        // update/state.\n        var clone = {\n          lane: updateLane,\n          action: update.action,\n          hasEagerState: update.hasEagerState,\n          eagerState: update.eagerState,\n          next: null\n        };\n\n        if (newBaseQueueLast === null) {\n          newBaseQueueFirst = newBaseQueueLast = clone;\n          newBaseState = newState;\n        } else {\n          newBaseQueueLast = newBaseQueueLast.next = clone;\n        } // Update the remaining priority in the queue.\n        // TODO: Don't need to accumulate this. Instead, we can remove\n        // renderLanes from the original lanes.\n\n\n        currentlyRenderingFiber$1.lanes = mergeLanes(currentlyRenderingFiber$1.lanes, updateLane);\n        markSkippedUpdateLanes(updateLane);\n      } else {\n        // This update does have sufficient priority.\n        if (newBaseQueueLast !== null) {\n          var _clone = {\n            // This update is going to be committed so we never want uncommit\n            // it. Using NoLane works because 0 is a subset of all bitmasks, so\n            // this will never be skipped by the check above.\n            lane: NoLane,\n            action: update.action,\n            hasEagerState: update.hasEagerState,\n            eagerState: update.eagerState,\n            next: null\n          };\n          newBaseQueueLast = newBaseQueueLast.next = _clone;\n        } // Process this update.\n\n\n        if (update.hasEagerState) {\n          // If this update is a state update (not a reducer) and was processed eagerly,\n          // we can use the eagerly computed state\n          newState = update.eagerState;\n        } else {\n          var action = update.action;\n          newState = reducer(newState, action);\n        }\n      }\n\n      update = update.next;\n    } while (update !== null && update !== first);\n\n    if (newBaseQueueLast === null) {\n      newBaseState = newState;\n    } else {\n      newBaseQueueLast.next = newBaseQueueFirst;\n    } // Mark that the fiber performed work, but only if the new state is\n    // different from the current state.\n\n\n    if (!objectIs(newState, hook.memoizedState)) {\n      markWorkInProgressReceivedUpdate();\n    }\n\n    hook.memoizedState = newState;\n    hook.baseState = newBaseState;\n    hook.baseQueue = newBaseQueueLast;\n    queue.lastRenderedState = newState;\n  } // Interleaved updates are stored on a separate queue. We aren't going to\n  // process them during this render, but we do need to track which lanes\n  // are remaining.\n\n\n  var lastInterleaved = queue.interleaved;\n\n  if (lastInterleaved !== null) {\n    var interleaved = lastInterleaved;\n\n    do {\n      var interleavedLane = interleaved.lane;\n      currentlyRenderingFiber$1.lanes = mergeLanes(currentlyRenderingFiber$1.lanes, interleavedLane);\n      markSkippedUpdateLanes(interleavedLane);\n      interleaved = interleaved.next;\n    } while (interleaved !== lastInterleaved);\n  } else if (baseQueue === null) {\n    // `queue.lanes` is used for entangling transitions. We can set it back to\n    // zero once the queue is empty.\n    queue.lanes = NoLanes;\n  }\n\n  var dispatch = queue.dispatch;\n  return [hook.memoizedState, dispatch];\n}\n\nfunction rerenderReducer(reducer, initialArg, init) {\n  var hook = updateWorkInProgressHook();\n  var queue = hook.queue;\n\n  if (queue === null) {\n    throw new Error('Should have a queue. This is likely a bug in React. Please file an issue.');\n  }\n\n  queue.lastRenderedReducer = reducer; // This is a re-render. Apply the new render phase updates to the previous\n  // work-in-progress hook.\n\n  var dispatch = queue.dispatch;\n  var lastRenderPhaseUpdate = queue.pending;\n  var newState = hook.memoizedState;\n\n  if (lastRenderPhaseUpdate !== null) {\n    // The queue doesn't persist past this render pass.\n    queue.pending = null;\n    var firstRenderPhaseUpdate = lastRenderPhaseUpdate.next;\n    var update = firstRenderPhaseUpdate;\n\n    do {\n      // Process this render phase update. We don't have to check the\n      // priority because it will always be the same as the current\n      // render's.\n      var action = update.action;\n      newState = reducer(newState, action);\n      update = update.next;\n    } while (update !== firstRenderPhaseUpdate); // Mark that the fiber performed work, but only if the new state is\n    // different from the current state.\n\n\n    if (!objectIs(newState, hook.memoizedState)) {\n      markWorkInProgressReceivedUpdate();\n    }\n\n    hook.memoizedState = newState; // Don't persist the state accumulated from the render phase updates to\n    // the base state unless the queue is empty.\n    // TODO: Not sure if this is the desired semantics, but it's what we\n    // do for gDSFP. I can't remember why.\n\n    if (hook.baseQueue === null) {\n      hook.baseState = newState;\n    }\n\n    queue.lastRenderedState = newState;\n  }\n\n  return [newState, dispatch];\n}\n\nfunction mountMutableSource(source, getSnapshot, subscribe) {\n  {\n    return undefined;\n  }\n}\n\nfunction updateMutableSource(source, getSnapshot, subscribe) {\n  {\n    return undefined;\n  }\n}\n\nfunction mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n  var fiber = currentlyRenderingFiber$1;\n  var hook = mountWorkInProgressHook();\n  var nextSnapshot;\n  var isHydrating = getIsHydrating();\n\n  if (isHydrating) {\n    if (getServerSnapshot === undefined) {\n      throw new Error('Missing getServerSnapshot, which is required for ' + 'server-rendered content. Will revert to client rendering.');\n    }\n\n    nextSnapshot = getServerSnapshot();\n\n    {\n      if (!didWarnUncachedGetSnapshot) {\n        if (nextSnapshot !== getServerSnapshot()) {\n          error('The result of getServerSnapshot should be cached to avoid an infinite loop');\n\n          didWarnUncachedGetSnapshot = true;\n        }\n      }\n    }\n  } else {\n    nextSnapshot = getSnapshot();\n\n    {\n      if (!didWarnUncachedGetSnapshot) {\n        var cachedSnapshot = getSnapshot();\n\n        if (!objectIs(nextSnapshot, cachedSnapshot)) {\n          error('The result of getSnapshot should be cached to avoid an infinite loop');\n\n          didWarnUncachedGetSnapshot = true;\n        }\n      }\n    } // Unless we're rendering a blocking lane, schedule a consistency check.\n    // Right before committing, we will walk the tree and check if any of the\n    // stores were mutated.\n    //\n    // We won't do this if we're hydrating server-rendered content, because if\n    // the content is stale, it's already visible anyway. Instead we'll patch\n    // it up in a passive effect.\n\n\n    var root = getWorkInProgressRoot();\n\n    if (root === null) {\n      throw new Error('Expected a work-in-progress root. This is a bug in React. Please file an issue.');\n    }\n\n    if (!includesBlockingLane(root, renderLanes)) {\n      pushStoreConsistencyCheck(fiber, getSnapshot, nextSnapshot);\n    }\n  } // Read the current snapshot from the store on every render. This breaks the\n  // normal rules of React, and only works because store updates are\n  // always synchronous.\n\n\n  hook.memoizedState = nextSnapshot;\n  var inst = {\n    value: nextSnapshot,\n    getSnapshot: getSnapshot\n  };\n  hook.queue = inst; // Schedule an effect to subscribe to the store.\n\n  mountEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [subscribe]); // Schedule an effect to update the mutable instance fields. We will update\n  // this whenever subscribe, getSnapshot, or value changes. Because there's no\n  // clean-up function, and we track the deps correctly, we can call pushEffect\n  // directly, without storing any additional state. For the same reason, we\n  // don't need to set a static flag, either.\n  // TODO: We can move this to the passive phase once we add a pre-commit\n  // consistency check. See the next comment.\n\n  fiber.flags |= Passive;\n  pushEffect(HasEffect | Passive$1, updateStoreInstance.bind(null, fiber, inst, nextSnapshot, getSnapshot), undefined, null);\n  return nextSnapshot;\n}\n\nfunction updateSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n  var fiber = currentlyRenderingFiber$1;\n  var hook = updateWorkInProgressHook(); // Read the current snapshot from the store on every render. This breaks the\n  // normal rules of React, and only works because store updates are\n  // always synchronous.\n\n  var nextSnapshot = getSnapshot();\n\n  {\n    if (!didWarnUncachedGetSnapshot) {\n      var cachedSnapshot = getSnapshot();\n\n      if (!objectIs(nextSnapshot, cachedSnapshot)) {\n        error('The result of getSnapshot should be cached to avoid an infinite loop');\n\n        didWarnUncachedGetSnapshot = true;\n      }\n    }\n  }\n\n  var prevSnapshot = hook.memoizedState;\n  var snapshotChanged = !objectIs(prevSnapshot, nextSnapshot);\n\n  if (snapshotChanged) {\n    hook.memoizedState = nextSnapshot;\n    markWorkInProgressReceivedUpdate();\n  }\n\n  var inst = hook.queue;\n  updateEffect(subscribeToStore.bind(null, fiber, inst, subscribe), [subscribe]); // Whenever getSnapshot or subscribe changes, we need to check in the\n  // commit phase if there was an interleaved mutation. In concurrent mode\n  // this can happen all the time, but even in synchronous mode, an earlier\n  // effect may have mutated the store.\n\n  if (inst.getSnapshot !== getSnapshot || snapshotChanged || // Check if the susbcribe function changed. We can save some memory by\n  // checking whether we scheduled a subscription effect above.\n  workInProgressHook !== null && workInProgressHook.memoizedState.tag & HasEffect) {\n    fiber.flags |= Passive;\n    pushEffect(HasEffect | Passive$1, updateStoreInstance.bind(null, fiber, inst, nextSnapshot, getSnapshot), undefined, null); // Unless we're rendering a blocking lane, schedule a consistency check.\n    // Right before committing, we will walk the tree and check if any of the\n    // stores were mutated.\n\n    var root = getWorkInProgressRoot();\n\n    if (root === null) {\n      throw new Error('Expected a work-in-progress root. This is a bug in React. Please file an issue.');\n    }\n\n    if (!includesBlockingLane(root, renderLanes)) {\n      pushStoreConsistencyCheck(fiber, getSnapshot, nextSnapshot);\n    }\n  }\n\n  return nextSnapshot;\n}\n\nfunction pushStoreConsistencyCheck(fiber, getSnapshot, renderedSnapshot) {\n  fiber.flags |= StoreConsistency;\n  var check = {\n    getSnapshot: getSnapshot,\n    value: renderedSnapshot\n  };\n  var componentUpdateQueue = currentlyRenderingFiber$1.updateQueue;\n\n  if (componentUpdateQueue === null) {\n    componentUpdateQueue = createFunctionComponentUpdateQueue();\n    currentlyRenderingFiber$1.updateQueue = componentUpdateQueue;\n    componentUpdateQueue.stores = [check];\n  } else {\n    var stores = componentUpdateQueue.stores;\n\n    if (stores === null) {\n      componentUpdateQueue.stores = [check];\n    } else {\n      stores.push(check);\n    }\n  }\n}\n\nfunction updateStoreInstance(fiber, inst, nextSnapshot, getSnapshot) {\n  // These are updated in the passive phase\n  inst.value = nextSnapshot;\n  inst.getSnapshot = getSnapshot; // Something may have been mutated in between render and commit. This could\n  // have been in an event that fired before the passive effects, or it could\n  // have been in a layout effect. In that case, we would have used the old\n  // snapsho and getSnapshot values to bail out. We need to check one more time.\n\n  if (checkIfSnapshotChanged(inst)) {\n    // Force a re-render.\n    forceStoreRerender(fiber);\n  }\n}\n\nfunction subscribeToStore(fiber, inst, subscribe) {\n  var handleStoreChange = function () {\n    // The store changed. Check if the snapshot changed since the last time we\n    // read from the store.\n    if (checkIfSnapshotChanged(inst)) {\n      // Force a re-render.\n      forceStoreRerender(fiber);\n    }\n  }; // Subscribe to the store and return a clean-up function.\n\n\n  return subscribe(handleStoreChange);\n}\n\nfunction checkIfSnapshotChanged(inst) {\n  var latestGetSnapshot = inst.getSnapshot;\n  var prevValue = inst.value;\n\n  try {\n    var nextValue = latestGetSnapshot();\n    return !objectIs(prevValue, nextValue);\n  } catch (error) {\n    return true;\n  }\n}\n\nfunction forceStoreRerender(fiber) {\n  var root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n  if (root !== null) {\n    scheduleUpdateOnFiber(root, fiber, SyncLane, NoTimestamp);\n  }\n}\n\nfunction mountState(initialState) {\n  var hook = mountWorkInProgressHook();\n\n  if (typeof initialState === 'function') {\n    // $FlowFixMe: Flow doesn't like mixed types\n    initialState = initialState();\n  }\n\n  hook.memoizedState = hook.baseState = initialState;\n  var queue = {\n    pending: null,\n    interleaved: null,\n    lanes: NoLanes,\n    dispatch: null,\n    lastRenderedReducer: basicStateReducer,\n    lastRenderedState: initialState\n  };\n  hook.queue = queue;\n  var dispatch = queue.dispatch = dispatchSetState.bind(null, currentlyRenderingFiber$1, queue);\n  return [hook.memoizedState, dispatch];\n}\n\nfunction updateState(initialState) {\n  return updateReducer(basicStateReducer);\n}\n\nfunction rerenderState(initialState) {\n  return rerenderReducer(basicStateReducer);\n}\n\nfunction pushEffect(tag, create, destroy, deps) {\n  var effect = {\n    tag: tag,\n    create: create,\n    destroy: destroy,\n    deps: deps,\n    // Circular\n    next: null\n  };\n  var componentUpdateQueue = currentlyRenderingFiber$1.updateQueue;\n\n  if (componentUpdateQueue === null) {\n    componentUpdateQueue = createFunctionComponentUpdateQueue();\n    currentlyRenderingFiber$1.updateQueue = componentUpdateQueue;\n    componentUpdateQueue.lastEffect = effect.next = effect;\n  } else {\n    var lastEffect = componentUpdateQueue.lastEffect;\n\n    if (lastEffect === null) {\n      componentUpdateQueue.lastEffect = effect.next = effect;\n    } else {\n      var firstEffect = lastEffect.next;\n      lastEffect.next = effect;\n      effect.next = firstEffect;\n      componentUpdateQueue.lastEffect = effect;\n    }\n  }\n\n  return effect;\n}\n\nfunction mountRef(initialValue) {\n  var hook = mountWorkInProgressHook();\n\n  {\n    var _ref2 = {\n      current: initialValue\n    };\n    hook.memoizedState = _ref2;\n    return _ref2;\n  }\n}\n\nfunction updateRef(initialValue) {\n  var hook = updateWorkInProgressHook();\n  return hook.memoizedState;\n}\n\nfunction mountEffectImpl(fiberFlags, hookFlags, create, deps) {\n  var hook = mountWorkInProgressHook();\n  var nextDeps = deps === undefined ? null : deps;\n  currentlyRenderingFiber$1.flags |= fiberFlags;\n  hook.memoizedState = pushEffect(HasEffect | hookFlags, create, undefined, nextDeps);\n}\n\nfunction updateEffectImpl(fiberFlags, hookFlags, create, deps) {\n  var hook = updateWorkInProgressHook();\n  var nextDeps = deps === undefined ? null : deps;\n  var destroy = undefined;\n\n  if (currentHook !== null) {\n    var prevEffect = currentHook.memoizedState;\n    destroy = prevEffect.destroy;\n\n    if (nextDeps !== null) {\n      var prevDeps = prevEffect.deps;\n\n      if (areHookInputsEqual(nextDeps, prevDeps)) {\n        hook.memoizedState = pushEffect(hookFlags, create, destroy, nextDeps);\n        return;\n      }\n    }\n  }\n\n  currentlyRenderingFiber$1.flags |= fiberFlags;\n  hook.memoizedState = pushEffect(HasEffect | hookFlags, create, destroy, nextDeps);\n}\n\nfunction mountEffect(create, deps) {\n  if ( (currentlyRenderingFiber$1.mode & StrictEffectsMode) !== NoMode) {\n    return mountEffectImpl(MountPassiveDev | Passive | PassiveStatic, Passive$1, create, deps);\n  } else {\n    return mountEffectImpl(Passive | PassiveStatic, Passive$1, create, deps);\n  }\n}\n\nfunction updateEffect(create, deps) {\n  return updateEffectImpl(Passive, Passive$1, create, deps);\n}\n\nfunction mountInsertionEffect(create, deps) {\n  return mountEffectImpl(Update, Insertion, create, deps);\n}\n\nfunction updateInsertionEffect(create, deps) {\n  return updateEffectImpl(Update, Insertion, create, deps);\n}\n\nfunction mountLayoutEffect(create, deps) {\n  var fiberFlags = Update;\n\n  {\n    fiberFlags |= LayoutStatic;\n  }\n\n  if ( (currentlyRenderingFiber$1.mode & StrictEffectsMode) !== NoMode) {\n    fiberFlags |= MountLayoutDev;\n  }\n\n  return mountEffectImpl(fiberFlags, Layout, create, deps);\n}\n\nfunction updateLayoutEffect(create, deps) {\n  return updateEffectImpl(Update, Layout, create, deps);\n}\n\nfunction imperativeHandleEffect(create, ref) {\n  if (typeof ref === 'function') {\n    var refCallback = ref;\n\n    var _inst = create();\n\n    refCallback(_inst);\n    return function () {\n      refCallback(null);\n    };\n  } else if (ref !== null && ref !== undefined) {\n    var refObject = ref;\n\n    {\n      if (!refObject.hasOwnProperty('current')) {\n        error('Expected useImperativeHandle() first argument to either be a ' + 'ref callback or React.createRef() object. Instead received: %s.', 'an object with keys {' + Object.keys(refObject).join(', ') + '}');\n      }\n    }\n\n    var _inst2 = create();\n\n    refObject.current = _inst2;\n    return function () {\n      refObject.current = null;\n    };\n  }\n}\n\nfunction mountImperativeHandle(ref, create, deps) {\n  {\n    if (typeof create !== 'function') {\n      error('Expected useImperativeHandle() second argument to be a function ' + 'that creates a handle. Instead received: %s.', create !== null ? typeof create : 'null');\n    }\n  } // TODO: If deps are provided, should we skip comparing the ref itself?\n\n\n  var effectDeps = deps !== null && deps !== undefined ? deps.concat([ref]) : null;\n  var fiberFlags = Update;\n\n  {\n    fiberFlags |= LayoutStatic;\n  }\n\n  if ( (currentlyRenderingFiber$1.mode & StrictEffectsMode) !== NoMode) {\n    fiberFlags |= MountLayoutDev;\n  }\n\n  return mountEffectImpl(fiberFlags, Layout, imperativeHandleEffect.bind(null, create, ref), effectDeps);\n}\n\nfunction updateImperativeHandle(ref, create, deps) {\n  {\n    if (typeof create !== 'function') {\n      error('Expected useImperativeHandle() second argument to be a function ' + 'that creates a handle. Instead received: %s.', create !== null ? typeof create : 'null');\n    }\n  } // TODO: If deps are provided, should we skip comparing the ref itself?\n\n\n  var effectDeps = deps !== null && deps !== undefined ? deps.concat([ref]) : null;\n  return updateEffectImpl(Update, Layout, imperativeHandleEffect.bind(null, create, ref), effectDeps);\n}\n\nfunction mountDebugValue(value, formatterFn) {// This hook is normally a no-op.\n  // The react-debug-hooks package injects its own implementation\n  // so that e.g. DevTools can display custom hook values.\n}\n\nvar updateDebugValue = mountDebugValue;\n\nfunction mountCallback(callback, deps) {\n  var hook = mountWorkInProgressHook();\n  var nextDeps = deps === undefined ? null : deps;\n  hook.memoizedState = [callback, nextDeps];\n  return callback;\n}\n\nfunction updateCallback(callback, deps) {\n  var hook = updateWorkInProgressHook();\n  var nextDeps = deps === undefined ? null : deps;\n  var prevState = hook.memoizedState;\n\n  if (prevState !== null) {\n    if (nextDeps !== null) {\n      var prevDeps = prevState[1];\n\n      if (areHookInputsEqual(nextDeps, prevDeps)) {\n        return prevState[0];\n      }\n    }\n  }\n\n  hook.memoizedState = [callback, nextDeps];\n  return callback;\n}\n\nfunction mountMemo(nextCreate, deps) {\n  var hook = mountWorkInProgressHook();\n  var nextDeps = deps === undefined ? null : deps;\n  var nextValue = nextCreate();\n  hook.memoizedState = [nextValue, nextDeps];\n  return nextValue;\n}\n\nfunction updateMemo(nextCreate, deps) {\n  var hook = updateWorkInProgressHook();\n  var nextDeps = deps === undefined ? null : deps;\n  var prevState = hook.memoizedState;\n\n  if (prevState !== null) {\n    // Assume these are defined. If they're not, areHookInputsEqual will warn.\n    if (nextDeps !== null) {\n      var prevDeps = prevState[1];\n\n      if (areHookInputsEqual(nextDeps, prevDeps)) {\n        return prevState[0];\n      }\n    }\n  }\n\n  var nextValue = nextCreate();\n  hook.memoizedState = [nextValue, nextDeps];\n  return nextValue;\n}\n\nfunction mountDeferredValue(value) {\n  var hook = mountWorkInProgressHook();\n  hook.memoizedState = value;\n  return value;\n}\n\nfunction updateDeferredValue(value) {\n  var hook = updateWorkInProgressHook();\n  var resolvedCurrentHook = currentHook;\n  var prevValue = resolvedCurrentHook.memoizedState;\n  return updateDeferredValueImpl(hook, prevValue, value);\n}\n\nfunction rerenderDeferredValue(value) {\n  var hook = updateWorkInProgressHook();\n\n  if (currentHook === null) {\n    // This is a rerender during a mount.\n    hook.memoizedState = value;\n    return value;\n  } else {\n    // This is a rerender during an update.\n    var prevValue = currentHook.memoizedState;\n    return updateDeferredValueImpl(hook, prevValue, value);\n  }\n}\n\nfunction updateDeferredValueImpl(hook, prevValue, value) {\n  var shouldDeferValue = !includesOnlyNonUrgentLanes(renderLanes);\n\n  if (shouldDeferValue) {\n    // This is an urgent update. If the value has changed, keep using the\n    // previous value and spawn a deferred render to update it later.\n    if (!objectIs(value, prevValue)) {\n      // Schedule a deferred render\n      var deferredLane = claimNextTransitionLane();\n      currentlyRenderingFiber$1.lanes = mergeLanes(currentlyRenderingFiber$1.lanes, deferredLane);\n      markSkippedUpdateLanes(deferredLane); // Set this to true to indicate that the rendered value is inconsistent\n      // from the latest value. The name \"baseState\" doesn't really match how we\n      // use it because we're reusing a state hook field instead of creating a\n      // new one.\n\n      hook.baseState = true;\n    } // Reuse the previous value\n\n\n    return prevValue;\n  } else {\n    // This is not an urgent update, so we can use the latest value regardless\n    // of what it is. No need to defer it.\n    // However, if we're currently inside a spawned render, then we need to mark\n    // this as an update to prevent the fiber from bailing out.\n    //\n    // `baseState` is true when the current value is different from the rendered\n    // value. The name doesn't really match how we use it because we're reusing\n    // a state hook field instead of creating a new one.\n    if (hook.baseState) {\n      // Flip this back to false.\n      hook.baseState = false;\n      markWorkInProgressReceivedUpdate();\n    }\n\n    hook.memoizedState = value;\n    return value;\n  }\n}\n\nfunction startTransition(setPending, callback, options) {\n  var previousPriority = getCurrentUpdatePriority();\n  setCurrentUpdatePriority(higherEventPriority(previousPriority, ContinuousEventPriority));\n  setPending(true);\n  var prevTransition = ReactCurrentBatchConfig$2.transition;\n  ReactCurrentBatchConfig$2.transition = {};\n  var currentTransition = ReactCurrentBatchConfig$2.transition;\n\n  {\n    ReactCurrentBatchConfig$2.transition._updatedFibers = new Set();\n  }\n\n  try {\n    setPending(false);\n    callback();\n  } finally {\n    setCurrentUpdatePriority(previousPriority);\n    ReactCurrentBatchConfig$2.transition = prevTransition;\n\n    {\n      if (prevTransition === null && currentTransition._updatedFibers) {\n        var updatedFibersCount = currentTransition._updatedFibers.size;\n\n        if (updatedFibersCount > 10) {\n          warn('Detected a large number of updates inside startTransition. ' + 'If this is due to a subscription please re-write it to use React provided hooks. ' + 'Otherwise concurrent mode guarantees are off the table.');\n        }\n\n        currentTransition._updatedFibers.clear();\n      }\n    }\n  }\n}\n\nfunction mountTransition() {\n  var _mountState = mountState(false),\n      isPending = _mountState[0],\n      setPending = _mountState[1]; // The `start` method never changes.\n\n\n  var start = startTransition.bind(null, setPending);\n  var hook = mountWorkInProgressHook();\n  hook.memoizedState = start;\n  return [isPending, start];\n}\n\nfunction updateTransition() {\n  var _updateState = updateState(),\n      isPending = _updateState[0];\n\n  var hook = updateWorkInProgressHook();\n  var start = hook.memoizedState;\n  return [isPending, start];\n}\n\nfunction rerenderTransition() {\n  var _rerenderState = rerenderState(),\n      isPending = _rerenderState[0];\n\n  var hook = updateWorkInProgressHook();\n  var start = hook.memoizedState;\n  return [isPending, start];\n}\n\nvar isUpdatingOpaqueValueInRenderPhase = false;\nfunction getIsUpdatingOpaqueValueInRenderPhaseInDEV() {\n  {\n    return isUpdatingOpaqueValueInRenderPhase;\n  }\n}\n\nfunction mountId() {\n  var hook = mountWorkInProgressHook();\n  var root = getWorkInProgressRoot(); // TODO: In Fizz, id generation is specific to each server config. Maybe we\n  // should do this in Fiber, too? Deferring this decision for now because\n  // there's no other place to store the prefix except for an internal field on\n  // the public createRoot object, which the fiber tree does not currently have\n  // a reference to.\n\n  var identifierPrefix = root.identifierPrefix;\n  var id;\n\n  if (getIsHydrating()) {\n    var treeId = getTreeId(); // Use a captial R prefix for server-generated ids.\n\n    id = ':' + identifierPrefix + 'R' + treeId; // Unless this is the first id at this level, append a number at the end\n    // that represents the position of this useId hook among all the useId\n    // hooks for this fiber.\n\n    var localId = localIdCounter++;\n\n    if (localId > 0) {\n      id += 'H' + localId.toString(32);\n    }\n\n    id += ':';\n  } else {\n    // Use a lowercase r prefix for client-generated ids.\n    var globalClientId = globalClientIdCounter++;\n    id = ':' + identifierPrefix + 'r' + globalClientId.toString(32) + ':';\n  }\n\n  hook.memoizedState = id;\n  return id;\n}\n\nfunction updateId() {\n  var hook = updateWorkInProgressHook();\n  var id = hook.memoizedState;\n  return id;\n}\n\nfunction dispatchReducerAction(fiber, queue, action) {\n  {\n    if (typeof arguments[3] === 'function') {\n      error(\"State updates from the useState() and useReducer() Hooks don't support the \" + 'second callback argument. To execute a side effect after ' + 'rendering, declare it in the component body with useEffect().');\n    }\n  }\n\n  var lane = requestUpdateLane(fiber);\n  var update = {\n    lane: lane,\n    action: action,\n    hasEagerState: false,\n    eagerState: null,\n    next: null\n  };\n\n  if (isRenderPhaseUpdate(fiber)) {\n    enqueueRenderPhaseUpdate(queue, update);\n  } else {\n    var root = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n\n    if (root !== null) {\n      var eventTime = requestEventTime();\n      scheduleUpdateOnFiber(root, fiber, lane, eventTime);\n      entangleTransitionUpdate(root, queue, lane);\n    }\n  }\n\n  markUpdateInDevTools(fiber, lane);\n}\n\nfunction dispatchSetState(fiber, queue, action) {\n  {\n    if (typeof arguments[3] === 'function') {\n      error(\"State updates from the useState() and useReducer() Hooks don't support the \" + 'second callback argument. To execute a side effect after ' + 'rendering, declare it in the component body with useEffect().');\n    }\n  }\n\n  var lane = requestUpdateLane(fiber);\n  var update = {\n    lane: lane,\n    action: action,\n    hasEagerState: false,\n    eagerState: null,\n    next: null\n  };\n\n  if (isRenderPhaseUpdate(fiber)) {\n    enqueueRenderPhaseUpdate(queue, update);\n  } else {\n    var alternate = fiber.alternate;\n\n    if (fiber.lanes === NoLanes && (alternate === null || alternate.lanes === NoLanes)) {\n      // The queue is currently empty, which means we can eagerly compute the\n      // next state before entering the render phase. If the new state is the\n      // same as the current state, we may be able to bail out entirely.\n      var lastRenderedReducer = queue.lastRenderedReducer;\n\n      if (lastRenderedReducer !== null) {\n        var prevDispatcher;\n\n        {\n          prevDispatcher = ReactCurrentDispatcher$1.current;\n          ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n        }\n\n        try {\n          var currentState = queue.lastRenderedState;\n          var eagerState = lastRenderedReducer(currentState, action); // Stash the eagerly computed state, and the reducer used to compute\n          // it, on the update object. If the reducer hasn't changed by the\n          // time we enter the render phase, then the eager state can be used\n          // without calling the reducer again.\n\n          update.hasEagerState = true;\n          update.eagerState = eagerState;\n\n          if (objectIs(eagerState, currentState)) {\n            // Fast path. We can bail out without scheduling React to re-render.\n            // It's still possible that we'll need to rebase this update later,\n            // if the component re-renders for a different reason and by that\n            // time the reducer has changed.\n            // TODO: Do we still need to entangle transitions in this case?\n            enqueueConcurrentHookUpdateAndEagerlyBailout(fiber, queue, update, lane);\n            return;\n          }\n        } catch (error) {// Suppress the error. It will throw again in the render phase.\n        } finally {\n          {\n            ReactCurrentDispatcher$1.current = prevDispatcher;\n          }\n        }\n      }\n    }\n\n    var root = enqueueConcurrentHookUpdate(fiber, queue, update, lane);\n\n    if (root !== null) {\n      var eventTime = requestEventTime();\n      scheduleUpdateOnFiber(root, fiber, lane, eventTime);\n      entangleTransitionUpdate(root, queue, lane);\n    }\n  }\n\n  markUpdateInDevTools(fiber, lane);\n}\n\nfunction isRenderPhaseUpdate(fiber) {\n  var alternate = fiber.alternate;\n  return fiber === currentlyRenderingFiber$1 || alternate !== null && alternate === currentlyRenderingFiber$1;\n}\n\nfunction enqueueRenderPhaseUpdate(queue, update) {\n  // This is a render phase update. Stash it in a lazily-created map of\n  // queue -> linked list of updates. After this render pass, we'll restart\n  // and apply the stashed updates on top of the work-in-progress hook.\n  didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate = true;\n  var pending = queue.pending;\n\n  if (pending === null) {\n    // This is the first update. Create a circular list.\n    update.next = update;\n  } else {\n    update.next = pending.next;\n    pending.next = update;\n  }\n\n  queue.pending = update;\n} // TODO: Move to ReactFiberConcurrentUpdates?\n\n\nfunction entangleTransitionUpdate(root, queue, lane) {\n  if (isTransitionLane(lane)) {\n    var queueLanes = queue.lanes; // If any entangled lanes are no longer pending on the root, then they\n    // must have finished. We can remove them from the shared queue, which\n    // represents a superset of the actually pending lanes. In some cases we\n    // may entangle more than we need to, but that's OK. In fact it's worse if\n    // we *don't* entangle when we should.\n\n    queueLanes = intersectLanes(queueLanes, root.pendingLanes); // Entangle the new transition lane with the other transition lanes.\n\n    var newQueueLanes = mergeLanes(queueLanes, lane);\n    queue.lanes = newQueueLanes; // Even if queue.lanes already include lane, we don't know for certain if\n    // the lane finished since the last time we entangled it. So we need to\n    // entangle it again, just to be sure.\n\n    markRootEntangled(root, newQueueLanes);\n  }\n}\n\nfunction markUpdateInDevTools(fiber, lane, action) {\n\n  {\n    markStateUpdateScheduled(fiber, lane);\n  }\n}\n\nvar ContextOnlyDispatcher = {\n  readContext: readContext,\n  useCallback: throwInvalidHookError,\n  useContext: throwInvalidHookError,\n  useEffect: throwInvalidHookError,\n  useImperativeHandle: throwInvalidHookError,\n  useInsertionEffect: throwInvalidHookError,\n  useLayoutEffect: throwInvalidHookError,\n  useMemo: throwInvalidHookError,\n  useReducer: throwInvalidHookError,\n  useRef: throwInvalidHookError,\n  useState: throwInvalidHookError,\n  useDebugValue: throwInvalidHookError,\n  useDeferredValue: throwInvalidHookError,\n  useTransition: throwInvalidHookError,\n  useMutableSource: throwInvalidHookError,\n  useSyncExternalStore: throwInvalidHookError,\n  useId: throwInvalidHookError,\n  unstable_isNewReconciler: enableNewReconciler\n};\n\nvar HooksDispatcherOnMountInDEV = null;\nvar HooksDispatcherOnMountWithHookTypesInDEV = null;\nvar HooksDispatcherOnUpdateInDEV = null;\nvar HooksDispatcherOnRerenderInDEV = null;\nvar InvalidNestedHooksDispatcherOnMountInDEV = null;\nvar InvalidNestedHooksDispatcherOnUpdateInDEV = null;\nvar InvalidNestedHooksDispatcherOnRerenderInDEV = null;\n\n{\n  var warnInvalidContextAccess = function () {\n    error('Context can only be read while React is rendering. ' + 'In classes, you can read it in the render method or getDerivedStateFromProps. ' + 'In function components, you can read it directly in the function body, but not ' + 'inside Hooks like useReducer() or useMemo().');\n  };\n\n  var warnInvalidHookAccess = function () {\n    error('Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. ' + 'You can only call Hooks at the top level of your React function. ' + 'For more information, see ' + 'https://reactjs.org/link/rules-of-hooks');\n  };\n\n  HooksDispatcherOnMountInDEV = {\n    readContext: function (context) {\n      return readContext(context);\n    },\n    useCallback: function (callback, deps) {\n      currentHookNameInDev = 'useCallback';\n      mountHookTypesDev();\n      checkDepsAreArrayDev(deps);\n      return mountCallback(callback, deps);\n    },\n    useContext: function (context) {\n      currentHookNameInDev = 'useContext';\n      mountHookTypesDev();\n      return readContext(context);\n    },\n    useEffect: function (create, deps) {\n      currentHookNameInDev = 'useEffect';\n      mountHookTypesDev();\n      checkDepsAreArrayDev(deps);\n      return mountEffect(create, deps);\n    },\n    useImperativeHandle: function (ref, create, deps) {\n      currentHookNameInDev = 'useImperativeHandle';\n      mountHookTypesDev();\n      checkDepsAreArrayDev(deps);\n      return mountImperativeHandle(ref, create, deps);\n    },\n    useInsertionEffect: function (create, deps) {\n      currentHookNameInDev = 'useInsertionEffect';\n      mountHookTypesDev();\n      checkDepsAreArrayDev(deps);\n      return mountInsertionEffect(create, deps);\n    },\n    useLayoutEffect: function (create, deps) {\n      currentHookNameInDev = 'useLayoutEffect';\n      mountHookTypesDev();\n      checkDepsAreArrayDev(deps);\n      return mountLayoutEffect(create, deps);\n    },\n    useMemo: function (create, deps) {\n      currentHookNameInDev = 'useMemo';\n      mountHookTypesDev();\n      checkDepsAreArrayDev(deps);\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n      try {\n        return mountMemo(create, deps);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useReducer: function (reducer, initialArg, init) {\n      currentHookNameInDev = 'useReducer';\n      mountHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n      try {\n        return mountReducer(reducer, initialArg, init);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useRef: function (initialValue) {\n      currentHookNameInDev = 'useRef';\n      mountHookTypesDev();\n      return mountRef(initialValue);\n    },\n    useState: function (initialState) {\n      currentHookNameInDev = 'useState';\n      mountHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n      try {\n        return mountState(initialState);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useDebugValue: function (value, formatterFn) {\n      currentHookNameInDev = 'useDebugValue';\n      mountHookTypesDev();\n      return mountDebugValue();\n    },\n    useDeferredValue: function (value) {\n      currentHookNameInDev = 'useDeferredValue';\n      mountHookTypesDev();\n      return mountDeferredValue(value);\n    },\n    useTransition: function () {\n      currentHookNameInDev = 'useTransition';\n      mountHookTypesDev();\n      return mountTransition();\n    },\n    useMutableSource: function (source, getSnapshot, subscribe) {\n      currentHookNameInDev = 'useMutableSource';\n      mountHookTypesDev();\n      return mountMutableSource();\n    },\n    useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n      currentHookNameInDev = 'useSyncExternalStore';\n      mountHookTypesDev();\n      return mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n    },\n    useId: function () {\n      currentHookNameInDev = 'useId';\n      mountHookTypesDev();\n      return mountId();\n    },\n    unstable_isNewReconciler: enableNewReconciler\n  };\n\n  HooksDispatcherOnMountWithHookTypesInDEV = {\n    readContext: function (context) {\n      return readContext(context);\n    },\n    useCallback: function (callback, deps) {\n      currentHookNameInDev = 'useCallback';\n      updateHookTypesDev();\n      return mountCallback(callback, deps);\n    },\n    useContext: function (context) {\n      currentHookNameInDev = 'useContext';\n      updateHookTypesDev();\n      return readContext(context);\n    },\n    useEffect: function (create, deps) {\n      currentHookNameInDev = 'useEffect';\n      updateHookTypesDev();\n      return mountEffect(create, deps);\n    },\n    useImperativeHandle: function (ref, create, deps) {\n      currentHookNameInDev = 'useImperativeHandle';\n      updateHookTypesDev();\n      return mountImperativeHandle(ref, create, deps);\n    },\n    useInsertionEffect: function (create, deps) {\n      currentHookNameInDev = 'useInsertionEffect';\n      updateHookTypesDev();\n      return mountInsertionEffect(create, deps);\n    },\n    useLayoutEffect: function (create, deps) {\n      currentHookNameInDev = 'useLayoutEffect';\n      updateHookTypesDev();\n      return mountLayoutEffect(create, deps);\n    },\n    useMemo: function (create, deps) {\n      currentHookNameInDev = 'useMemo';\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n      try {\n        return mountMemo(create, deps);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useReducer: function (reducer, initialArg, init) {\n      currentHookNameInDev = 'useReducer';\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n      try {\n        return mountReducer(reducer, initialArg, init);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useRef: function (initialValue) {\n      currentHookNameInDev = 'useRef';\n      updateHookTypesDev();\n      return mountRef(initialValue);\n    },\n    useState: function (initialState) {\n      currentHookNameInDev = 'useState';\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n      try {\n        return mountState(initialState);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useDebugValue: function (value, formatterFn) {\n      currentHookNameInDev = 'useDebugValue';\n      updateHookTypesDev();\n      return mountDebugValue();\n    },\n    useDeferredValue: function (value) {\n      currentHookNameInDev = 'useDeferredValue';\n      updateHookTypesDev();\n      return mountDeferredValue(value);\n    },\n    useTransition: function () {\n      currentHookNameInDev = 'useTransition';\n      updateHookTypesDev();\n      return mountTransition();\n    },\n    useMutableSource: function (source, getSnapshot, subscribe) {\n      currentHookNameInDev = 'useMutableSource';\n      updateHookTypesDev();\n      return mountMutableSource();\n    },\n    useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n      currentHookNameInDev = 'useSyncExternalStore';\n      updateHookTypesDev();\n      return mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n    },\n    useId: function () {\n      currentHookNameInDev = 'useId';\n      updateHookTypesDev();\n      return mountId();\n    },\n    unstable_isNewReconciler: enableNewReconciler\n  };\n\n  HooksDispatcherOnUpdateInDEV = {\n    readContext: function (context) {\n      return readContext(context);\n    },\n    useCallback: function (callback, deps) {\n      currentHookNameInDev = 'useCallback';\n      updateHookTypesDev();\n      return updateCallback(callback, deps);\n    },\n    useContext: function (context) {\n      currentHookNameInDev = 'useContext';\n      updateHookTypesDev();\n      return readContext(context);\n    },\n    useEffect: function (create, deps) {\n      currentHookNameInDev = 'useEffect';\n      updateHookTypesDev();\n      return updateEffect(create, deps);\n    },\n    useImperativeHandle: function (ref, create, deps) {\n      currentHookNameInDev = 'useImperativeHandle';\n      updateHookTypesDev();\n      return updateImperativeHandle(ref, create, deps);\n    },\n    useInsertionEffect: function (create, deps) {\n      currentHookNameInDev = 'useInsertionEffect';\n      updateHookTypesDev();\n      return updateInsertionEffect(create, deps);\n    },\n    useLayoutEffect: function (create, deps) {\n      currentHookNameInDev = 'useLayoutEffect';\n      updateHookTypesDev();\n      return updateLayoutEffect(create, deps);\n    },\n    useMemo: function (create, deps) {\n      currentHookNameInDev = 'useMemo';\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n      try {\n        return updateMemo(create, deps);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useReducer: function (reducer, initialArg, init) {\n      currentHookNameInDev = 'useReducer';\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n      try {\n        return updateReducer(reducer, initialArg, init);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useRef: function (initialValue) {\n      currentHookNameInDev = 'useRef';\n      updateHookTypesDev();\n      return updateRef();\n    },\n    useState: function (initialState) {\n      currentHookNameInDev = 'useState';\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n      try {\n        return updateState(initialState);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useDebugValue: function (value, formatterFn) {\n      currentHookNameInDev = 'useDebugValue';\n      updateHookTypesDev();\n      return updateDebugValue();\n    },\n    useDeferredValue: function (value) {\n      currentHookNameInDev = 'useDeferredValue';\n      updateHookTypesDev();\n      return updateDeferredValue(value);\n    },\n    useTransition: function () {\n      currentHookNameInDev = 'useTransition';\n      updateHookTypesDev();\n      return updateTransition();\n    },\n    useMutableSource: function (source, getSnapshot, subscribe) {\n      currentHookNameInDev = 'useMutableSource';\n      updateHookTypesDev();\n      return updateMutableSource();\n    },\n    useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n      currentHookNameInDev = 'useSyncExternalStore';\n      updateHookTypesDev();\n      return updateSyncExternalStore(subscribe, getSnapshot);\n    },\n    useId: function () {\n      currentHookNameInDev = 'useId';\n      updateHookTypesDev();\n      return updateId();\n    },\n    unstable_isNewReconciler: enableNewReconciler\n  };\n\n  HooksDispatcherOnRerenderInDEV = {\n    readContext: function (context) {\n      return readContext(context);\n    },\n    useCallback: function (callback, deps) {\n      currentHookNameInDev = 'useCallback';\n      updateHookTypesDev();\n      return updateCallback(callback, deps);\n    },\n    useContext: function (context) {\n      currentHookNameInDev = 'useContext';\n      updateHookTypesDev();\n      return readContext(context);\n    },\n    useEffect: function (create, deps) {\n      currentHookNameInDev = 'useEffect';\n      updateHookTypesDev();\n      return updateEffect(create, deps);\n    },\n    useImperativeHandle: function (ref, create, deps) {\n      currentHookNameInDev = 'useImperativeHandle';\n      updateHookTypesDev();\n      return updateImperativeHandle(ref, create, deps);\n    },\n    useInsertionEffect: function (create, deps) {\n      currentHookNameInDev = 'useInsertionEffect';\n      updateHookTypesDev();\n      return updateInsertionEffect(create, deps);\n    },\n    useLayoutEffect: function (create, deps) {\n      currentHookNameInDev = 'useLayoutEffect';\n      updateHookTypesDev();\n      return updateLayoutEffect(create, deps);\n    },\n    useMemo: function (create, deps) {\n      currentHookNameInDev = 'useMemo';\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnRerenderInDEV;\n\n      try {\n        return updateMemo(create, deps);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useReducer: function (reducer, initialArg, init) {\n      currentHookNameInDev = 'useReducer';\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnRerenderInDEV;\n\n      try {\n        return rerenderReducer(reducer, initialArg, init);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useRef: function (initialValue) {\n      currentHookNameInDev = 'useRef';\n      updateHookTypesDev();\n      return updateRef();\n    },\n    useState: function (initialState) {\n      currentHookNameInDev = 'useState';\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnRerenderInDEV;\n\n      try {\n        return rerenderState(initialState);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useDebugValue: function (value, formatterFn) {\n      currentHookNameInDev = 'useDebugValue';\n      updateHookTypesDev();\n      return updateDebugValue();\n    },\n    useDeferredValue: function (value) {\n      currentHookNameInDev = 'useDeferredValue';\n      updateHookTypesDev();\n      return rerenderDeferredValue(value);\n    },\n    useTransition: function () {\n      currentHookNameInDev = 'useTransition';\n      updateHookTypesDev();\n      return rerenderTransition();\n    },\n    useMutableSource: function (source, getSnapshot, subscribe) {\n      currentHookNameInDev = 'useMutableSource';\n      updateHookTypesDev();\n      return updateMutableSource();\n    },\n    useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n      currentHookNameInDev = 'useSyncExternalStore';\n      updateHookTypesDev();\n      return updateSyncExternalStore(subscribe, getSnapshot);\n    },\n    useId: function () {\n      currentHookNameInDev = 'useId';\n      updateHookTypesDev();\n      return updateId();\n    },\n    unstable_isNewReconciler: enableNewReconciler\n  };\n\n  InvalidNestedHooksDispatcherOnMountInDEV = {\n    readContext: function (context) {\n      warnInvalidContextAccess();\n      return readContext(context);\n    },\n    useCallback: function (callback, deps) {\n      currentHookNameInDev = 'useCallback';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountCallback(callback, deps);\n    },\n    useContext: function (context) {\n      currentHookNameInDev = 'useContext';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return readContext(context);\n    },\n    useEffect: function (create, deps) {\n      currentHookNameInDev = 'useEffect';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountEffect(create, deps);\n    },\n    useImperativeHandle: function (ref, create, deps) {\n      currentHookNameInDev = 'useImperativeHandle';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountImperativeHandle(ref, create, deps);\n    },\n    useInsertionEffect: function (create, deps) {\n      currentHookNameInDev = 'useInsertionEffect';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountInsertionEffect(create, deps);\n    },\n    useLayoutEffect: function (create, deps) {\n      currentHookNameInDev = 'useLayoutEffect';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountLayoutEffect(create, deps);\n    },\n    useMemo: function (create, deps) {\n      currentHookNameInDev = 'useMemo';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n      try {\n        return mountMemo(create, deps);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useReducer: function (reducer, initialArg, init) {\n      currentHookNameInDev = 'useReducer';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n      try {\n        return mountReducer(reducer, initialArg, init);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useRef: function (initialValue) {\n      currentHookNameInDev = 'useRef';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountRef(initialValue);\n    },\n    useState: function (initialState) {\n      currentHookNameInDev = 'useState';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;\n\n      try {\n        return mountState(initialState);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useDebugValue: function (value, formatterFn) {\n      currentHookNameInDev = 'useDebugValue';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountDebugValue();\n    },\n    useDeferredValue: function (value) {\n      currentHookNameInDev = 'useDeferredValue';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountDeferredValue(value);\n    },\n    useTransition: function () {\n      currentHookNameInDev = 'useTransition';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountTransition();\n    },\n    useMutableSource: function (source, getSnapshot, subscribe) {\n      currentHookNameInDev = 'useMutableSource';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountMutableSource();\n    },\n    useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n      currentHookNameInDev = 'useSyncExternalStore';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n    },\n    useId: function () {\n      currentHookNameInDev = 'useId';\n      warnInvalidHookAccess();\n      mountHookTypesDev();\n      return mountId();\n    },\n    unstable_isNewReconciler: enableNewReconciler\n  };\n\n  InvalidNestedHooksDispatcherOnUpdateInDEV = {\n    readContext: function (context) {\n      warnInvalidContextAccess();\n      return readContext(context);\n    },\n    useCallback: function (callback, deps) {\n      currentHookNameInDev = 'useCallback';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateCallback(callback, deps);\n    },\n    useContext: function (context) {\n      currentHookNameInDev = 'useContext';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return readContext(context);\n    },\n    useEffect: function (create, deps) {\n      currentHookNameInDev = 'useEffect';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateEffect(create, deps);\n    },\n    useImperativeHandle: function (ref, create, deps) {\n      currentHookNameInDev = 'useImperativeHandle';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateImperativeHandle(ref, create, deps);\n    },\n    useInsertionEffect: function (create, deps) {\n      currentHookNameInDev = 'useInsertionEffect';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateInsertionEffect(create, deps);\n    },\n    useLayoutEffect: function (create, deps) {\n      currentHookNameInDev = 'useLayoutEffect';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateLayoutEffect(create, deps);\n    },\n    useMemo: function (create, deps) {\n      currentHookNameInDev = 'useMemo';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n      try {\n        return updateMemo(create, deps);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useReducer: function (reducer, initialArg, init) {\n      currentHookNameInDev = 'useReducer';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n      try {\n        return updateReducer(reducer, initialArg, init);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useRef: function (initialValue) {\n      currentHookNameInDev = 'useRef';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateRef();\n    },\n    useState: function (initialState) {\n      currentHookNameInDev = 'useState';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n      try {\n        return updateState(initialState);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useDebugValue: function (value, formatterFn) {\n      currentHookNameInDev = 'useDebugValue';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateDebugValue();\n    },\n    useDeferredValue: function (value) {\n      currentHookNameInDev = 'useDeferredValue';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateDeferredValue(value);\n    },\n    useTransition: function () {\n      currentHookNameInDev = 'useTransition';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateTransition();\n    },\n    useMutableSource: function (source, getSnapshot, subscribe) {\n      currentHookNameInDev = 'useMutableSource';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateMutableSource();\n    },\n    useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n      currentHookNameInDev = 'useSyncExternalStore';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateSyncExternalStore(subscribe, getSnapshot);\n    },\n    useId: function () {\n      currentHookNameInDev = 'useId';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateId();\n    },\n    unstable_isNewReconciler: enableNewReconciler\n  };\n\n  InvalidNestedHooksDispatcherOnRerenderInDEV = {\n    readContext: function (context) {\n      warnInvalidContextAccess();\n      return readContext(context);\n    },\n    useCallback: function (callback, deps) {\n      currentHookNameInDev = 'useCallback';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateCallback(callback, deps);\n    },\n    useContext: function (context) {\n      currentHookNameInDev = 'useContext';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return readContext(context);\n    },\n    useEffect: function (create, deps) {\n      currentHookNameInDev = 'useEffect';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateEffect(create, deps);\n    },\n    useImperativeHandle: function (ref, create, deps) {\n      currentHookNameInDev = 'useImperativeHandle';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateImperativeHandle(ref, create, deps);\n    },\n    useInsertionEffect: function (create, deps) {\n      currentHookNameInDev = 'useInsertionEffect';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateInsertionEffect(create, deps);\n    },\n    useLayoutEffect: function (create, deps) {\n      currentHookNameInDev = 'useLayoutEffect';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateLayoutEffect(create, deps);\n    },\n    useMemo: function (create, deps) {\n      currentHookNameInDev = 'useMemo';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n      try {\n        return updateMemo(create, deps);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useReducer: function (reducer, initialArg, init) {\n      currentHookNameInDev = 'useReducer';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n      try {\n        return rerenderReducer(reducer, initialArg, init);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useRef: function (initialValue) {\n      currentHookNameInDev = 'useRef';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateRef();\n    },\n    useState: function (initialState) {\n      currentHookNameInDev = 'useState';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      var prevDispatcher = ReactCurrentDispatcher$1.current;\n      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;\n\n      try {\n        return rerenderState(initialState);\n      } finally {\n        ReactCurrentDispatcher$1.current = prevDispatcher;\n      }\n    },\n    useDebugValue: function (value, formatterFn) {\n      currentHookNameInDev = 'useDebugValue';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateDebugValue();\n    },\n    useDeferredValue: function (value) {\n      currentHookNameInDev = 'useDeferredValue';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return rerenderDeferredValue(value);\n    },\n    useTransition: function () {\n      currentHookNameInDev = 'useTransition';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return rerenderTransition();\n    },\n    useMutableSource: function (source, getSnapshot, subscribe) {\n      currentHookNameInDev = 'useMutableSource';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateMutableSource();\n    },\n    useSyncExternalStore: function (subscribe, getSnapshot, getServerSnapshot) {\n      currentHookNameInDev = 'useSyncExternalStore';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateSyncExternalStore(subscribe, getSnapshot);\n    },\n    useId: function () {\n      currentHookNameInDev = 'useId';\n      warnInvalidHookAccess();\n      updateHookTypesDev();\n      return updateId();\n    },\n    unstable_isNewReconciler: enableNewReconciler\n  };\n}\n\nvar now$1 = Scheduler.unstable_now;\nvar commitTime = 0;\nvar layoutEffectStartTime = -1;\nvar profilerStartTime = -1;\nvar passiveEffectStartTime = -1;\n/**\n * Tracks whether the current update was a nested/cascading update (scheduled from a layout effect).\n *\n * The overall sequence is:\n *   1. render\n *   2. commit (and call `onRender`, `onCommit`)\n *   3. check for nested updates\n *   4. flush passive effects (and call `onPostCommit`)\n *\n * Nested updates are identified in step 3 above,\n * but step 4 still applies to the work that was just committed.\n * We use two flags to track nested updates then:\n * one tracks whether the upcoming update is a nested update,\n * and the other tracks whether the current update was a nested update.\n * The first value gets synced to the second at the start of the render phase.\n */\n\nvar currentUpdateIsNested = false;\nvar nestedUpdateScheduled = false;\n\nfunction isCurrentUpdateNested() {\n  return currentUpdateIsNested;\n}\n\nfunction markNestedUpdateScheduled() {\n  {\n    nestedUpdateScheduled = true;\n  }\n}\n\nfunction resetNestedUpdateFlag() {\n  {\n    currentUpdateIsNested = false;\n    nestedUpdateScheduled = false;\n  }\n}\n\nfunction syncNestedUpdateFlag() {\n  {\n    currentUpdateIsNested = nestedUpdateScheduled;\n    nestedUpdateScheduled = false;\n  }\n}\n\nfunction getCommitTime() {\n  return commitTime;\n}\n\nfunction recordCommitTime() {\n\n  commitTime = now$1();\n}\n\nfunction startProfilerTimer(fiber) {\n\n  profilerStartTime = now$1();\n\n  if (fiber.actualStartTime < 0) {\n    fiber.actualStartTime = now$1();\n  }\n}\n\nfunction stopProfilerTimerIfRunning(fiber) {\n\n  profilerStartTime = -1;\n}\n\nfunction stopProfilerTimerIfRunningAndRecordDelta(fiber, overrideBaseTime) {\n\n  if (profilerStartTime >= 0) {\n    var elapsedTime = now$1() - profilerStartTime;\n    fiber.actualDuration += elapsedTime;\n\n    if (overrideBaseTime) {\n      fiber.selfBaseDuration = elapsedTime;\n    }\n\n    profilerStartTime = -1;\n  }\n}\n\nfunction recordLayoutEffectDuration(fiber) {\n\n  if (layoutEffectStartTime >= 0) {\n    var elapsedTime = now$1() - layoutEffectStartTime;\n    layoutEffectStartTime = -1; // Store duration on the next nearest Profiler ancestor\n    // Or the root (for the DevTools Profiler to read)\n\n    var parentFiber = fiber.return;\n\n    while (parentFiber !== null) {\n      switch (parentFiber.tag) {\n        case HostRoot:\n          var root = parentFiber.stateNode;\n          root.effectDuration += elapsedTime;\n          return;\n\n        case Profiler:\n          var parentStateNode = parentFiber.stateNode;\n          parentStateNode.effectDuration += elapsedTime;\n          return;\n      }\n\n      parentFiber = parentFiber.return;\n    }\n  }\n}\n\nfunction recordPassiveEffectDuration(fiber) {\n\n  if (passiveEffectStartTime >= 0) {\n    var elapsedTime = now$1() - passiveEffectStartTime;\n    passiveEffectStartTime = -1; // Store duration on the next nearest Profiler ancestor\n    // Or the root (for the DevTools Profiler to read)\n\n    var parentFiber = fiber.return;\n\n    while (parentFiber !== null) {\n      switch (parentFiber.tag) {\n        case HostRoot:\n          var root = parentFiber.stateNode;\n\n          if (root !== null) {\n            root.passiveEffectDuration += elapsedTime;\n          }\n\n          return;\n\n        case Profiler:\n          var parentStateNode = parentFiber.stateNode;\n\n          if (parentStateNode !== null) {\n            // Detached fibers have their state node cleared out.\n            // In this case, the return pointer is also cleared out,\n            // so we won't be able to report the time spent in this Profiler's subtree.\n            parentStateNode.passiveEffectDuration += elapsedTime;\n          }\n\n          return;\n      }\n\n      parentFiber = parentFiber.return;\n    }\n  }\n}\n\nfunction startLayoutEffectTimer() {\n\n  layoutEffectStartTime = now$1();\n}\n\nfunction startPassiveEffectTimer() {\n\n  passiveEffectStartTime = now$1();\n}\n\nfunction transferActualDuration(fiber) {\n  // Transfer time spent rendering these children so we don't lose it\n  // after we rerender. This is used as a helper in special cases\n  // where we should count the work of multiple passes.\n  var child = fiber.child;\n\n  while (child) {\n    fiber.actualDuration += child.actualDuration;\n    child = child.sibling;\n  }\n}\n\nfunction createCapturedValueAtFiber(value, source) {\n  // If the value is an error, call this function immediately after it is thrown\n  // so the stack is accurate.\n  return {\n    value: value,\n    source: source,\n    stack: getStackByFiberInDevAndProd(source),\n    digest: null\n  };\n}\nfunction createCapturedValue(value, digest, stack) {\n  return {\n    value: value,\n    source: null,\n    stack: stack != null ? stack : null,\n    digest: digest != null ? digest : null\n  };\n}\n\n// This module is forked in different environments.\n// By default, return `true` to log errors to the console.\n// Forks can return `false` if this isn't desirable.\nfunction showErrorDialog(boundary, errorInfo) {\n  return true;\n}\n\nfunction logCapturedError(boundary, errorInfo) {\n  try {\n    var logError = showErrorDialog(boundary, errorInfo); // Allow injected showErrorDialog() to prevent default console.error logging.\n    // This enables renderers like ReactNative to better manage redbox behavior.\n\n    if (logError === false) {\n      return;\n    }\n\n    var error = errorInfo.value;\n\n    if (true) {\n      var source = errorInfo.source;\n      var stack = errorInfo.stack;\n      var componentStack = stack !== null ? stack : ''; // Browsers support silencing uncaught errors by calling\n      // `preventDefault()` in window `error` handler.\n      // We record this information as an expando on the error.\n\n      if (error != null && error._suppressLogging) {\n        if (boundary.tag === ClassComponent) {\n          // The error is recoverable and was silenced.\n          // Ignore it and don't print the stack addendum.\n          // This is handy for testing error boundaries without noise.\n          return;\n        } // The error is fatal. Since the silencing might have\n        // been accidental, we'll surface it anyway.\n        // However, the browser would have silenced the original error\n        // so we'll print it first, and then print the stack addendum.\n\n\n        console['error'](error); // Don't transform to our wrapper\n        // For a more detailed description of this block, see:\n        // https://github.com/facebook/react/pull/13384\n      }\n\n      var componentName = source ? getComponentNameFromFiber(source) : null;\n      var componentNameMessage = componentName ? \"The above error occurred in the <\" + componentName + \"> component:\" : 'The above error occurred in one of your React components:';\n      var errorBoundaryMessage;\n\n      if (boundary.tag === HostRoot) {\n        errorBoundaryMessage = 'Consider adding an error boundary to your tree to customize error handling behavior.\\n' + 'Visit https://reactjs.org/link/error-boundaries to learn more about error boundaries.';\n      } else {\n        var errorBoundaryName = getComponentNameFromFiber(boundary) || 'Anonymous';\n        errorBoundaryMessage = \"React will try to recreate this component tree from scratch \" + (\"using the error boundary you provided, \" + errorBoundaryName + \".\");\n      }\n\n      var combinedMessage = componentNameMessage + \"\\n\" + componentStack + \"\\n\\n\" + (\"\" + errorBoundaryMessage); // In development, we provide our own message with just the component stack.\n      // We don't include the original error message and JS stack because the browser\n      // has already printed it. Even if the application swallows the error, it is still\n      // displayed by the browser thanks to the DEV-only fake event trick in ReactErrorUtils.\n\n      console['error'](combinedMessage); // Don't transform to our wrapper\n    } else {\n      // In production, we print the error directly.\n      // This will include the message, the JS stack, and anything the browser wants to show.\n      // We pass the error object instead of custom message so that the browser displays the error natively.\n      console['error'](error); // Don't transform to our wrapper\n    }\n  } catch (e) {\n    // This method must not throw, or React internal state will get messed up.\n    // If console.error is overridden, or logCapturedError() shows a dialog that throws,\n    // we want to report this error outside of the normal stack as a last resort.\n    // https://github.com/facebook/react/issues/13188\n    setTimeout(function () {\n      throw e;\n    });\n  }\n}\n\nvar PossiblyWeakMap$1 = typeof WeakMap === 'function' ? WeakMap : Map;\n\nfunction createRootErrorUpdate(fiber, errorInfo, lane) {\n  var update = createUpdate(NoTimestamp, lane); // Unmount the root by rendering null.\n\n  update.tag = CaptureUpdate; // Caution: React DevTools currently depends on this property\n  // being called \"element\".\n\n  update.payload = {\n    element: null\n  };\n  var error = errorInfo.value;\n\n  update.callback = function () {\n    onUncaughtError(error);\n    logCapturedError(fiber, errorInfo);\n  };\n\n  return update;\n}\n\nfunction createClassErrorUpdate(fiber, errorInfo, lane) {\n  var update = createUpdate(NoTimestamp, lane);\n  update.tag = CaptureUpdate;\n  var getDerivedStateFromError = fiber.type.getDerivedStateFromError;\n\n  if (typeof getDerivedStateFromError === 'function') {\n    var error$1 = errorInfo.value;\n\n    update.payload = function () {\n      return getDerivedStateFromError(error$1);\n    };\n\n    update.callback = function () {\n      {\n        markFailedErrorBoundaryForHotReloading(fiber);\n      }\n\n      logCapturedError(fiber, errorInfo);\n    };\n  }\n\n  var inst = fiber.stateNode;\n\n  if (inst !== null && typeof inst.componentDidCatch === 'function') {\n    update.callback = function callback() {\n      {\n        markFailedErrorBoundaryForHotReloading(fiber);\n      }\n\n      logCapturedError(fiber, errorInfo);\n\n      if (typeof getDerivedStateFromError !== 'function') {\n        // To preserve the preexisting retry behavior of error boundaries,\n        // we keep track of which ones already failed during this batch.\n        // This gets reset before we yield back to the browser.\n        // TODO: Warn in strict mode if getDerivedStateFromError is\n        // not defined.\n        markLegacyErrorBoundaryAsFailed(this);\n      }\n\n      var error$1 = errorInfo.value;\n      var stack = errorInfo.stack;\n      this.componentDidCatch(error$1, {\n        componentStack: stack !== null ? stack : ''\n      });\n\n      {\n        if (typeof getDerivedStateFromError !== 'function') {\n          // If componentDidCatch is the only error boundary method defined,\n          // then it needs to call setState to recover from errors.\n          // If no state update is scheduled then the boundary will swallow the error.\n          if (!includesSomeLane(fiber.lanes, SyncLane)) {\n            error('%s: Error boundaries should implement getDerivedStateFromError(). ' + 'In that method, return a state update to display an error message or fallback UI.', getComponentNameFromFiber(fiber) || 'Unknown');\n          }\n        }\n      }\n    };\n  }\n\n  return update;\n}\n\nfunction attachPingListener(root, wakeable, lanes) {\n  // Attach a ping listener\n  //\n  // The data might resolve before we have a chance to commit the fallback. Or,\n  // in the case of a refresh, we'll never commit a fallback. So we need to\n  // attach a listener now. When it resolves (\"pings\"), we can decide whether to\n  // try rendering the tree again.\n  //\n  // Only attach a listener if one does not already exist for the lanes\n  // we're currently rendering (which acts like a \"thread ID\" here).\n  //\n  // We only need to do this in concurrent mode. Legacy Suspense always\n  // commits fallbacks synchronously, so there are no pings.\n  var pingCache = root.pingCache;\n  var threadIDs;\n\n  if (pingCache === null) {\n    pingCache = root.pingCache = new PossiblyWeakMap$1();\n    threadIDs = new Set();\n    pingCache.set(wakeable, threadIDs);\n  } else {\n    threadIDs = pingCache.get(wakeable);\n\n    if (threadIDs === undefined) {\n      threadIDs = new Set();\n      pingCache.set(wakeable, threadIDs);\n    }\n  }\n\n  if (!threadIDs.has(lanes)) {\n    // Memoize using the thread ID to prevent redundant listeners.\n    threadIDs.add(lanes);\n    var ping = pingSuspendedRoot.bind(null, root, wakeable, lanes);\n\n    {\n      if (isDevToolsPresent) {\n        // If we have pending work still, restore the original updaters\n        restorePendingUpdaters(root, lanes);\n      }\n    }\n\n    wakeable.then(ping, ping);\n  }\n}\n\nfunction attachRetryListener(suspenseBoundary, root, wakeable, lanes) {\n  // Retry listener\n  //\n  // If the fallback does commit, we need to attach a different type of\n  // listener. This one schedules an update on the Suspense boundary to turn\n  // the fallback state off.\n  //\n  // Stash the wakeable on the boundary fiber so we can access it in the\n  // commit phase.\n  //\n  // When the wakeable resolves, we'll attempt to render the boundary\n  // again (\"retry\").\n  var wakeables = suspenseBoundary.updateQueue;\n\n  if (wakeables === null) {\n    var updateQueue = new Set();\n    updateQueue.add(wakeable);\n    suspenseBoundary.updateQueue = updateQueue;\n  } else {\n    wakeables.add(wakeable);\n  }\n}\n\nfunction resetSuspendedComponent(sourceFiber, rootRenderLanes) {\n  // A legacy mode Suspense quirk, only relevant to hook components.\n\n\n  var tag = sourceFiber.tag;\n\n  if ((sourceFiber.mode & ConcurrentMode) === NoMode && (tag === FunctionComponent || tag === ForwardRef || tag === SimpleMemoComponent)) {\n    var currentSource = sourceFiber.alternate;\n\n    if (currentSource) {\n      sourceFiber.updateQueue = currentSource.updateQueue;\n      sourceFiber.memoizedState = currentSource.memoizedState;\n      sourceFiber.lanes = currentSource.lanes;\n    } else {\n      sourceFiber.updateQueue = null;\n      sourceFiber.memoizedState = null;\n    }\n  }\n}\n\nfunction getNearestSuspenseBoundaryToCapture(returnFiber) {\n  var node = returnFiber;\n\n  do {\n    if (node.tag === SuspenseComponent && shouldCaptureSuspense(node)) {\n      return node;\n    } // This boundary already captured during this render. Continue to the next\n    // boundary.\n\n\n    node = node.return;\n  } while (node !== null);\n\n  return null;\n}\n\nfunction markSuspenseBoundaryShouldCapture(suspenseBoundary, returnFiber, sourceFiber, root, rootRenderLanes) {\n  // This marks a Suspense boundary so that when we're unwinding the stack,\n  // it captures the suspended \"exception\" and does a second (fallback) pass.\n  if ((suspenseBoundary.mode & ConcurrentMode) === NoMode) {\n    // Legacy Mode Suspense\n    //\n    // If the boundary is in legacy mode, we should *not*\n    // suspend the commit. Pretend as if the suspended component rendered\n    // null and keep rendering. When the Suspense boundary completes,\n    // we'll do a second pass to render the fallback.\n    if (suspenseBoundary === returnFiber) {\n      // Special case where we suspended while reconciling the children of\n      // a Suspense boundary's inner Offscreen wrapper fiber. This happens\n      // when a React.lazy component is a direct child of a\n      // Suspense boundary.\n      //\n      // Suspense boundaries are implemented as multiple fibers, but they\n      // are a single conceptual unit. The legacy mode behavior where we\n      // pretend the suspended fiber committed as `null` won't work,\n      // because in this case the \"suspended\" fiber is the inner\n      // Offscreen wrapper.\n      //\n      // Because the contents of the boundary haven't started rendering\n      // yet (i.e. nothing in the tree has partially rendered) we can\n      // switch to the regular, concurrent mode behavior: mark the\n      // boundary with ShouldCapture and enter the unwind phase.\n      suspenseBoundary.flags |= ShouldCapture;\n    } else {\n      suspenseBoundary.flags |= DidCapture;\n      sourceFiber.flags |= ForceUpdateForLegacySuspense; // We're going to commit this fiber even though it didn't complete.\n      // But we shouldn't call any lifecycle methods or callbacks. Remove\n      // all lifecycle effect tags.\n\n      sourceFiber.flags &= ~(LifecycleEffectMask | Incomplete);\n\n      if (sourceFiber.tag === ClassComponent) {\n        var currentSourceFiber = sourceFiber.alternate;\n\n        if (currentSourceFiber === null) {\n          // This is a new mount. Change the tag so it's not mistaken for a\n          // completed class component. For example, we should not call\n          // componentWillUnmount if it is deleted.\n          sourceFiber.tag = IncompleteClassComponent;\n        } else {\n          // When we try rendering again, we should not reuse the current fiber,\n          // since it's known to be in an inconsistent state. Use a force update to\n          // prevent a bail out.\n          var update = createUpdate(NoTimestamp, SyncLane);\n          update.tag = ForceUpdate;\n          enqueueUpdate(sourceFiber, update, SyncLane);\n        }\n      } // The source fiber did not complete. Mark it with Sync priority to\n      // indicate that it still has pending work.\n\n\n      sourceFiber.lanes = mergeLanes(sourceFiber.lanes, SyncLane);\n    }\n\n    return suspenseBoundary;\n  } // Confirmed that the boundary is in a concurrent mode tree. Continue\n  // with the normal suspend path.\n  //\n  // After this we'll use a set of heuristics to determine whether this\n  // render pass will run to completion or restart or \"suspend\" the commit.\n  // The actual logic for this is spread out in different places.\n  //\n  // This first principle is that if we're going to suspend when we complete\n  // a root, then we should also restart if we get an update or ping that\n  // might unsuspend it, and vice versa. The only reason to suspend is\n  // because you think you might want to restart before committing. However,\n  // it doesn't make sense to restart only while in the period we're suspended.\n  //\n  // Restarting too aggressively is also not good because it starves out any\n  // intermediate loading state. So we use heuristics to determine when.\n  // Suspense Heuristics\n  //\n  // If nothing threw a Promise or all the same fallbacks are already showing,\n  // then don't suspend/restart.\n  //\n  // If this is an initial render of a new tree of Suspense boundaries and\n  // those trigger a fallback, then don't suspend/restart. We want to ensure\n  // that we can show the initial loading state as quickly as possible.\n  //\n  // If we hit a \"Delayed\" case, such as when we'd switch from content back into\n  // a fallback, then we should always suspend/restart. Transitions apply\n  // to this case. If none is defined, JND is used instead.\n  //\n  // If we're already showing a fallback and it gets \"retried\", allowing us to show\n  // another level, but there's still an inner boundary that would show a fallback,\n  // then we suspend/restart for 500ms since the last time we showed a fallback\n  // anywhere in the tree. This effectively throttles progressive loading into a\n  // consistent train of commits. This also gives us an opportunity to restart to\n  // get to the completed state slightly earlier.\n  //\n  // If there's ambiguity due to batching it's resolved in preference of:\n  // 1) \"delayed\", 2) \"initial render\", 3) \"retry\".\n  //\n  // We want to ensure that a \"busy\" state doesn't get force committed. We want to\n  // ensure that new initial loading states can commit as soon as possible.\n\n\n  suspenseBoundary.flags |= ShouldCapture; // TODO: I think we can remove this, since we now use `DidCapture` in\n  // the begin phase to prevent an early bailout.\n\n  suspenseBoundary.lanes = rootRenderLanes;\n  return suspenseBoundary;\n}\n\nfunction throwException(root, returnFiber, sourceFiber, value, rootRenderLanes) {\n  // The source fiber did not complete.\n  sourceFiber.flags |= Incomplete;\n\n  {\n    if (isDevToolsPresent) {\n      // If we have pending work still, restore the original updaters\n      restorePendingUpdaters(root, rootRenderLanes);\n    }\n  }\n\n  if (value !== null && typeof value === 'object' && typeof value.then === 'function') {\n    // This is a wakeable. The component suspended.\n    var wakeable = value;\n    resetSuspendedComponent(sourceFiber);\n\n    {\n      if (getIsHydrating() && sourceFiber.mode & ConcurrentMode) {\n        markDidThrowWhileHydratingDEV();\n      }\n    }\n\n\n    var suspenseBoundary = getNearestSuspenseBoundaryToCapture(returnFiber);\n\n    if (suspenseBoundary !== null) {\n      suspenseBoundary.flags &= ~ForceClientRender;\n      markSuspenseBoundaryShouldCapture(suspenseBoundary, returnFiber, sourceFiber, root, rootRenderLanes); // We only attach ping listeners in concurrent mode. Legacy Suspense always\n      // commits fallbacks synchronously, so there are no pings.\n\n      if (suspenseBoundary.mode & ConcurrentMode) {\n        attachPingListener(root, wakeable, rootRenderLanes);\n      }\n\n      attachRetryListener(suspenseBoundary, root, wakeable);\n      return;\n    } else {\n      // No boundary was found. Unless this is a sync update, this is OK.\n      // We can suspend and wait for more data to arrive.\n      if (!includesSyncLane(rootRenderLanes)) {\n        // This is not a sync update. Suspend. Since we're not activating a\n        // Suspense boundary, this will unwind all the way to the root without\n        // performing a second pass to render a fallback. (This is arguably how\n        // refresh transitions should work, too, since we're not going to commit\n        // the fallbacks anyway.)\n        //\n        // This case also applies to initial hydration.\n        attachPingListener(root, wakeable, rootRenderLanes);\n        renderDidSuspendDelayIfPossible();\n        return;\n      } // This is a sync/discrete update. We treat this case like an error\n      // because discrete renders are expected to produce a complete tree\n      // synchronously to maintain consistency with external state.\n\n\n      var uncaughtSuspenseError = new Error('A component suspended while responding to synchronous input. This ' + 'will cause the UI to be replaced with a loading indicator. To ' + 'fix, updates that suspend should be wrapped ' + 'with startTransition.'); // If we're outside a transition, fall through to the regular error path.\n      // The error will be caught by the nearest suspense boundary.\n\n      value = uncaughtSuspenseError;\n    }\n  } else {\n    // This is a regular error, not a Suspense wakeable.\n    if (getIsHydrating() && sourceFiber.mode & ConcurrentMode) {\n      markDidThrowWhileHydratingDEV();\n\n      var _suspenseBoundary = getNearestSuspenseBoundaryToCapture(returnFiber); // If the error was thrown during hydration, we may be able to recover by\n      // discarding the dehydrated content and switching to a client render.\n      // Instead of surfacing the error, find the nearest Suspense boundary\n      // and render it again without hydration.\n\n\n      if (_suspenseBoundary !== null) {\n        if ((_suspenseBoundary.flags & ShouldCapture) === NoFlags) {\n          // Set a flag to indicate that we should try rendering the normal\n          // children again, not the fallback.\n          _suspenseBoundary.flags |= ForceClientRender;\n        }\n\n        markSuspenseBoundaryShouldCapture(_suspenseBoundary, returnFiber, sourceFiber, root, rootRenderLanes); // Even though the user may not be affected by this error, we should\n        // still log it so it can be fixed.\n\n        queueHydrationError(createCapturedValueAtFiber(value, sourceFiber));\n        return;\n      }\n    }\n  }\n\n  value = createCapturedValueAtFiber(value, sourceFiber);\n  renderDidError(value); // We didn't find a boundary that could handle this type of exception. Start\n  // over and traverse parent path again, this time treating the exception\n  // as an error.\n\n  var workInProgress = returnFiber;\n\n  do {\n    switch (workInProgress.tag) {\n      case HostRoot:\n        {\n          var _errorInfo = value;\n          workInProgress.flags |= ShouldCapture;\n          var lane = pickArbitraryLane(rootRenderLanes);\n          workInProgress.lanes = mergeLanes(workInProgress.lanes, lane);\n          var update = createRootErrorUpdate(workInProgress, _errorInfo, lane);\n          enqueueCapturedUpdate(workInProgress, update);\n          return;\n        }\n\n      case ClassComponent:\n        // Capture and retry\n        var errorInfo = value;\n        var ctor = workInProgress.type;\n        var instance = workInProgress.stateNode;\n\n        if ((workInProgress.flags & DidCapture) === NoFlags && (typeof ctor.getDerivedStateFromError === 'function' || instance !== null && typeof instance.componentDidCatch === 'function' && !isAlreadyFailedLegacyErrorBoundary(instance))) {\n          workInProgress.flags |= ShouldCapture;\n\n          var _lane = pickArbitraryLane(rootRenderLanes);\n\n          workInProgress.lanes = mergeLanes(workInProgress.lanes, _lane); // Schedule the error boundary to re-render using updated state\n\n          var _update = createClassErrorUpdate(workInProgress, errorInfo, _lane);\n\n          enqueueCapturedUpdate(workInProgress, _update);\n          return;\n        }\n\n        break;\n    }\n\n    workInProgress = workInProgress.return;\n  } while (workInProgress !== null);\n}\n\nfunction getSuspendedCache() {\n  {\n    return null;\n  } // This function is called when a Suspense boundary suspends. It returns the\n}\n\nvar ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\nvar didReceiveUpdate = false;\nvar didWarnAboutBadClass;\nvar didWarnAboutModulePatternComponent;\nvar didWarnAboutContextTypeOnFunctionComponent;\nvar didWarnAboutGetDerivedStateOnFunctionComponent;\nvar didWarnAboutFunctionRefs;\nvar didWarnAboutReassigningProps;\nvar didWarnAboutRevealOrder;\nvar didWarnAboutTailOptions;\n\n{\n  didWarnAboutBadClass = {};\n  didWarnAboutModulePatternComponent = {};\n  didWarnAboutContextTypeOnFunctionComponent = {};\n  didWarnAboutGetDerivedStateOnFunctionComponent = {};\n  didWarnAboutFunctionRefs = {};\n  didWarnAboutReassigningProps = false;\n  didWarnAboutRevealOrder = {};\n  didWarnAboutTailOptions = {};\n}\n\nfunction reconcileChildren(current, workInProgress, nextChildren, renderLanes) {\n  if (current === null) {\n    // If this is a fresh new component that hasn't been rendered yet, we\n    // won't update its child set by applying minimal side-effects. Instead,\n    // we will add them all to the child before it gets rendered. That means\n    // we can optimize this reconciliation pass by not tracking side-effects.\n    workInProgress.child = mountChildFibers(workInProgress, null, nextChildren, renderLanes);\n  } else {\n    // If the current child is the same as the work in progress, it means that\n    // we haven't yet started any work on these children. Therefore, we use\n    // the clone algorithm to create a copy of all the current children.\n    // If we had any progressed work already, that is invalid at this point so\n    // let's throw it out.\n    workInProgress.child = reconcileChildFibers(workInProgress, current.child, nextChildren, renderLanes);\n  }\n}\n\nfunction forceUnmountCurrentAndReconcile(current, workInProgress, nextChildren, renderLanes) {\n  // This function is fork of reconcileChildren. It's used in cases where we\n  // want to reconcile without matching against the existing set. This has the\n  // effect of all current children being unmounted; even if the type and key\n  // are the same, the old child is unmounted and a new child is created.\n  //\n  // To do this, we're going to go through the reconcile algorithm twice. In\n  // the first pass, we schedule a deletion for all the current children by\n  // passing null.\n  workInProgress.child = reconcileChildFibers(workInProgress, current.child, null, renderLanes); // In the second pass, we mount the new children. The trick here is that we\n  // pass null in place of where we usually pass the current child set. This has\n  // the effect of remounting all children regardless of whether their\n  // identities match.\n\n  workInProgress.child = reconcileChildFibers(workInProgress, null, nextChildren, renderLanes);\n}\n\nfunction updateForwardRef(current, workInProgress, Component, nextProps, renderLanes) {\n  // TODO: current can be non-null here even if the component\n  // hasn't yet mounted. This happens after the first render suspends.\n  // We'll need to figure out if this is fine or can cause issues.\n  {\n    if (workInProgress.type !== workInProgress.elementType) {\n      // Lazy component props can't be validated in createElement\n      // because they're only guaranteed to be resolved here.\n      var innerPropTypes = Component.propTypes;\n\n      if (innerPropTypes) {\n        checkPropTypes(innerPropTypes, nextProps, // Resolved props\n        'prop', getComponentNameFromType(Component));\n      }\n    }\n  }\n\n  var render = Component.render;\n  var ref = workInProgress.ref; // The rest is a fork of updateFunctionComponent\n\n  var nextChildren;\n  var hasId;\n  prepareToReadContext(workInProgress, renderLanes);\n\n  {\n    markComponentRenderStarted(workInProgress);\n  }\n\n  {\n    ReactCurrentOwner$1.current = workInProgress;\n    setIsRendering(true);\n    nextChildren = renderWithHooks(current, workInProgress, render, nextProps, ref, renderLanes);\n    hasId = checkDidRenderIdHook();\n\n    if ( workInProgress.mode & StrictLegacyMode) {\n      setIsStrictModeForDevtools(true);\n\n      try {\n        nextChildren = renderWithHooks(current, workInProgress, render, nextProps, ref, renderLanes);\n        hasId = checkDidRenderIdHook();\n      } finally {\n        setIsStrictModeForDevtools(false);\n      }\n    }\n\n    setIsRendering(false);\n  }\n\n  {\n    markComponentRenderStopped();\n  }\n\n  if (current !== null && !didReceiveUpdate) {\n    bailoutHooks(current, workInProgress, renderLanes);\n    return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n  }\n\n  if (getIsHydrating() && hasId) {\n    pushMaterializedTreeId(workInProgress);\n  } // React DevTools reads this flag.\n\n\n  workInProgress.flags |= PerformedWork;\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\n\nfunction updateMemoComponent(current, workInProgress, Component, nextProps, renderLanes) {\n  if (current === null) {\n    var type = Component.type;\n\n    if (isSimpleFunctionComponent(type) && Component.compare === null && // SimpleMemoComponent codepath doesn't resolve outer props either.\n    Component.defaultProps === undefined) {\n      var resolvedType = type;\n\n      {\n        resolvedType = resolveFunctionForHotReloading(type);\n      } // If this is a plain function component without default props,\n      // and with only the default shallow comparison, we upgrade it\n      // to a SimpleMemoComponent to allow fast path updates.\n\n\n      workInProgress.tag = SimpleMemoComponent;\n      workInProgress.type = resolvedType;\n\n      {\n        validateFunctionComponentInDev(workInProgress, type);\n      }\n\n      return updateSimpleMemoComponent(current, workInProgress, resolvedType, nextProps, renderLanes);\n    }\n\n    {\n      var innerPropTypes = type.propTypes;\n\n      if (innerPropTypes) {\n        // Inner memo component props aren't currently validated in createElement.\n        // We could move it there, but we'd still need this for lazy code path.\n        checkPropTypes(innerPropTypes, nextProps, // Resolved props\n        'prop', getComponentNameFromType(type));\n      }\n    }\n\n    var child = createFiberFromTypeAndProps(Component.type, null, nextProps, workInProgress, workInProgress.mode, renderLanes);\n    child.ref = workInProgress.ref;\n    child.return = workInProgress;\n    workInProgress.child = child;\n    return child;\n  }\n\n  {\n    var _type = Component.type;\n    var _innerPropTypes = _type.propTypes;\n\n    if (_innerPropTypes) {\n      // Inner memo component props aren't currently validated in createElement.\n      // We could move it there, but we'd still need this for lazy code path.\n      checkPropTypes(_innerPropTypes, nextProps, // Resolved props\n      'prop', getComponentNameFromType(_type));\n    }\n  }\n\n  var currentChild = current.child; // This is always exactly one child\n\n  var hasScheduledUpdateOrContext = checkScheduledUpdateOrContext(current, renderLanes);\n\n  if (!hasScheduledUpdateOrContext) {\n    // This will be the props with resolved defaultProps,\n    // unlike current.memoizedProps which will be the unresolved ones.\n    var prevProps = currentChild.memoizedProps; // Default to shallow comparison\n\n    var compare = Component.compare;\n    compare = compare !== null ? compare : shallowEqual;\n\n    if (compare(prevProps, nextProps) && current.ref === workInProgress.ref) {\n      return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n    }\n  } // React DevTools reads this flag.\n\n\n  workInProgress.flags |= PerformedWork;\n  var newChild = createWorkInProgress(currentChild, nextProps);\n  newChild.ref = workInProgress.ref;\n  newChild.return = workInProgress;\n  workInProgress.child = newChild;\n  return newChild;\n}\n\nfunction updateSimpleMemoComponent(current, workInProgress, Component, nextProps, renderLanes) {\n  // TODO: current can be non-null here even if the component\n  // hasn't yet mounted. This happens when the inner render suspends.\n  // We'll need to figure out if this is fine or can cause issues.\n  {\n    if (workInProgress.type !== workInProgress.elementType) {\n      // Lazy component props can't be validated in createElement\n      // because they're only guaranteed to be resolved here.\n      var outerMemoType = workInProgress.elementType;\n\n      if (outerMemoType.$$typeof === REACT_LAZY_TYPE) {\n        // We warn when you define propTypes on lazy()\n        // so let's just skip over it to find memo() outer wrapper.\n        // Inner props for memo are validated later.\n        var lazyComponent = outerMemoType;\n        var payload = lazyComponent._payload;\n        var init = lazyComponent._init;\n\n        try {\n          outerMemoType = init(payload);\n        } catch (x) {\n          outerMemoType = null;\n        } // Inner propTypes will be validated in the function component path.\n\n\n        var outerPropTypes = outerMemoType && outerMemoType.propTypes;\n\n        if (outerPropTypes) {\n          checkPropTypes(outerPropTypes, nextProps, // Resolved (SimpleMemoComponent has no defaultProps)\n          'prop', getComponentNameFromType(outerMemoType));\n        }\n      }\n    }\n  }\n\n  if (current !== null) {\n    var prevProps = current.memoizedProps;\n\n    if (shallowEqual(prevProps, nextProps) && current.ref === workInProgress.ref && ( // Prevent bailout if the implementation changed due to hot reload.\n     workInProgress.type === current.type )) {\n      didReceiveUpdate = false; // The props are shallowly equal. Reuse the previous props object, like we\n      // would during a normal fiber bailout.\n      //\n      // We don't have strong guarantees that the props object is referentially\n      // equal during updates where we can't bail out anyway \u2014 like if the props\n      // are shallowly equal, but there's a local state or context update in the\n      // same batch.\n      //\n      // However, as a principle, we should aim to make the behavior consistent\n      // across different ways of memoizing a component. For example, React.memo\n      // has a different internal Fiber layout if you pass a normal function\n      // component (SimpleMemoComponent) versus if you pass a different type\n      // like forwardRef (MemoComponent). But this is an implementation detail.\n      // Wrapping a component in forwardRef (or React.lazy, etc) shouldn't\n      // affect whether the props object is reused during a bailout.\n\n      workInProgress.pendingProps = nextProps = prevProps;\n\n      if (!checkScheduledUpdateOrContext(current, renderLanes)) {\n        // The pending lanes were cleared at the beginning of beginWork. We're\n        // about to bail out, but there might be other lanes that weren't\n        // included in the current render. Usually, the priority level of the\n        // remaining updates is accumulated during the evaluation of the\n        // component (i.e. when processing the update queue). But since since\n        // we're bailing out early *without* evaluating the component, we need\n        // to account for it here, too. Reset to the value of the current fiber.\n        // NOTE: This only applies to SimpleMemoComponent, not MemoComponent,\n        // because a MemoComponent fiber does not have hooks or an update queue;\n        // rather, it wraps around an inner component, which may or may not\n        // contains hooks.\n        // TODO: Move the reset at in beginWork out of the common path so that\n        // this is no longer necessary.\n        workInProgress.lanes = current.lanes;\n        return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n      } else if ((current.flags & ForceUpdateForLegacySuspense) !== NoFlags) {\n        // This is a special case that only exists for legacy mode.\n        // See https://github.com/facebook/react/pull/19216.\n        didReceiveUpdate = true;\n      }\n    }\n  }\n\n  return updateFunctionComponent(current, workInProgress, Component, nextProps, renderLanes);\n}\n\nfunction updateOffscreenComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps;\n  var nextChildren = nextProps.children;\n  var prevState = current !== null ? current.memoizedState : null;\n\n  if (nextProps.mode === 'hidden' || enableLegacyHidden ) {\n    // Rendering a hidden tree.\n    if ((workInProgress.mode & ConcurrentMode) === NoMode) {\n      // In legacy sync mode, don't defer the subtree. Render it now.\n      // TODO: Consider how Offscreen should work with transitions in the future\n      var nextState = {\n        baseLanes: NoLanes,\n        cachePool: null,\n        transitions: null\n      };\n      workInProgress.memoizedState = nextState;\n\n      pushRenderLanes(workInProgress, renderLanes);\n    } else if (!includesSomeLane(renderLanes, OffscreenLane)) {\n      var spawnedCachePool = null; // We're hidden, and we're not rendering at Offscreen. We will bail out\n      // and resume this tree later.\n\n      var nextBaseLanes;\n\n      if (prevState !== null) {\n        var prevBaseLanes = prevState.baseLanes;\n        nextBaseLanes = mergeLanes(prevBaseLanes, renderLanes);\n      } else {\n        nextBaseLanes = renderLanes;\n      } // Schedule this fiber to re-render at offscreen priority. Then bailout.\n\n\n      workInProgress.lanes = workInProgress.childLanes = laneToLanes(OffscreenLane);\n      var _nextState = {\n        baseLanes: nextBaseLanes,\n        cachePool: spawnedCachePool,\n        transitions: null\n      };\n      workInProgress.memoizedState = _nextState;\n      workInProgress.updateQueue = null;\n      // to avoid a push/pop misalignment.\n\n\n      pushRenderLanes(workInProgress, nextBaseLanes);\n\n      return null;\n    } else {\n      // This is the second render. The surrounding visible content has already\n      // committed. Now we resume rendering the hidden tree.\n      // Rendering at offscreen, so we can clear the base lanes.\n      var _nextState2 = {\n        baseLanes: NoLanes,\n        cachePool: null,\n        transitions: null\n      };\n      workInProgress.memoizedState = _nextState2; // Push the lanes that were skipped when we bailed out.\n\n      var subtreeRenderLanes = prevState !== null ? prevState.baseLanes : renderLanes;\n\n      pushRenderLanes(workInProgress, subtreeRenderLanes);\n    }\n  } else {\n    // Rendering a visible tree.\n    var _subtreeRenderLanes;\n\n    if (prevState !== null) {\n      // We're going from hidden -> visible.\n      _subtreeRenderLanes = mergeLanes(prevState.baseLanes, renderLanes);\n\n      workInProgress.memoizedState = null;\n    } else {\n      // We weren't previously hidden, and we still aren't, so there's nothing\n      // special to do. Need to push to the stack regardless, though, to avoid\n      // a push/pop misalignment.\n      _subtreeRenderLanes = renderLanes;\n    }\n\n    pushRenderLanes(workInProgress, _subtreeRenderLanes);\n  }\n\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n} // Note: These happen to have identical begin phases, for now. We shouldn't hold\n\nfunction updateFragment(current, workInProgress, renderLanes) {\n  var nextChildren = workInProgress.pendingProps;\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\n\nfunction updateMode(current, workInProgress, renderLanes) {\n  var nextChildren = workInProgress.pendingProps.children;\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\n\nfunction updateProfiler(current, workInProgress, renderLanes) {\n  {\n    workInProgress.flags |= Update;\n\n    {\n      // Reset effect durations for the next eventual effect phase.\n      // These are reset during render to allow the DevTools commit hook a chance to read them,\n      var stateNode = workInProgress.stateNode;\n      stateNode.effectDuration = 0;\n      stateNode.passiveEffectDuration = 0;\n    }\n  }\n\n  var nextProps = workInProgress.pendingProps;\n  var nextChildren = nextProps.children;\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\n\nfunction markRef(current, workInProgress) {\n  var ref = workInProgress.ref;\n\n  if (current === null && ref !== null || current !== null && current.ref !== ref) {\n    // Schedule a Ref effect\n    workInProgress.flags |= Ref;\n\n    {\n      workInProgress.flags |= RefStatic;\n    }\n  }\n}\n\nfunction updateFunctionComponent(current, workInProgress, Component, nextProps, renderLanes) {\n  {\n    if (workInProgress.type !== workInProgress.elementType) {\n      // Lazy component props can't be validated in createElement\n      // because they're only guaranteed to be resolved here.\n      var innerPropTypes = Component.propTypes;\n\n      if (innerPropTypes) {\n        checkPropTypes(innerPropTypes, nextProps, // Resolved props\n        'prop', getComponentNameFromType(Component));\n      }\n    }\n  }\n\n  var context;\n\n  {\n    var unmaskedContext = getUnmaskedContext(workInProgress, Component, true);\n    context = getMaskedContext(workInProgress, unmaskedContext);\n  }\n\n  var nextChildren;\n  var hasId;\n  prepareToReadContext(workInProgress, renderLanes);\n\n  {\n    markComponentRenderStarted(workInProgress);\n  }\n\n  {\n    ReactCurrentOwner$1.current = workInProgress;\n    setIsRendering(true);\n    nextChildren = renderWithHooks(current, workInProgress, Component, nextProps, context, renderLanes);\n    hasId = checkDidRenderIdHook();\n\n    if ( workInProgress.mode & StrictLegacyMode) {\n      setIsStrictModeForDevtools(true);\n\n      try {\n        nextChildren = renderWithHooks(current, workInProgress, Component, nextProps, context, renderLanes);\n        hasId = checkDidRenderIdHook();\n      } finally {\n        setIsStrictModeForDevtools(false);\n      }\n    }\n\n    setIsRendering(false);\n  }\n\n  {\n    markComponentRenderStopped();\n  }\n\n  if (current !== null && !didReceiveUpdate) {\n    bailoutHooks(current, workInProgress, renderLanes);\n    return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n  }\n\n  if (getIsHydrating() && hasId) {\n    pushMaterializedTreeId(workInProgress);\n  } // React DevTools reads this flag.\n\n\n  workInProgress.flags |= PerformedWork;\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\n\nfunction updateClassComponent(current, workInProgress, Component, nextProps, renderLanes) {\n  {\n    // This is used by DevTools to force a boundary to error.\n    switch (shouldError(workInProgress)) {\n      case false:\n        {\n          var _instance = workInProgress.stateNode;\n          var ctor = workInProgress.type; // TODO This way of resetting the error boundary state is a hack.\n          // Is there a better way to do this?\n\n          var tempInstance = new ctor(workInProgress.memoizedProps, _instance.context);\n          var state = tempInstance.state;\n\n          _instance.updater.enqueueSetState(_instance, state, null);\n\n          break;\n        }\n\n      case true:\n        {\n          workInProgress.flags |= DidCapture;\n          workInProgress.flags |= ShouldCapture; // eslint-disable-next-line react-internal/prod-error-codes\n\n          var error$1 = new Error('Simulated error coming from DevTools');\n          var lane = pickArbitraryLane(renderLanes);\n          workInProgress.lanes = mergeLanes(workInProgress.lanes, lane); // Schedule the error boundary to re-render using updated state\n\n          var update = createClassErrorUpdate(workInProgress, createCapturedValueAtFiber(error$1, workInProgress), lane);\n          enqueueCapturedUpdate(workInProgress, update);\n          break;\n        }\n    }\n\n    if (workInProgress.type !== workInProgress.elementType) {\n      // Lazy component props can't be validated in createElement\n      // because they're only guaranteed to be resolved here.\n      var innerPropTypes = Component.propTypes;\n\n      if (innerPropTypes) {\n        checkPropTypes(innerPropTypes, nextProps, // Resolved props\n        'prop', getComponentNameFromType(Component));\n      }\n    }\n  } // Push context providers early to prevent context stack mismatches.\n  // During mounting we don't know the child context yet as the instance doesn't exist.\n  // We will invalidate the child context in finishClassComponent() right after rendering.\n\n\n  var hasContext;\n\n  if (isContextProvider(Component)) {\n    hasContext = true;\n    pushContextProvider(workInProgress);\n  } else {\n    hasContext = false;\n  }\n\n  prepareToReadContext(workInProgress, renderLanes);\n  var instance = workInProgress.stateNode;\n  var shouldUpdate;\n\n  if (instance === null) {\n    resetSuspendedCurrentOnMountInLegacyMode(current, workInProgress); // In the initial pass we might need to construct the instance.\n\n    constructClassInstance(workInProgress, Component, nextProps);\n    mountClassInstance(workInProgress, Component, nextProps, renderLanes);\n    shouldUpdate = true;\n  } else if (current === null) {\n    // In a resume, we'll already have an instance we can reuse.\n    shouldUpdate = resumeMountClassInstance(workInProgress, Component, nextProps, renderLanes);\n  } else {\n    shouldUpdate = updateClassInstance(current, workInProgress, Component, nextProps, renderLanes);\n  }\n\n  var nextUnitOfWork = finishClassComponent(current, workInProgress, Component, shouldUpdate, hasContext, renderLanes);\n\n  {\n    var inst = workInProgress.stateNode;\n\n    if (shouldUpdate && inst.props !== nextProps) {\n      if (!didWarnAboutReassigningProps) {\n        error('It looks like %s is reassigning its own `this.props` while rendering. ' + 'This is not supported and can lead to confusing bugs.', getComponentNameFromFiber(workInProgress) || 'a component');\n      }\n\n      didWarnAboutReassigningProps = true;\n    }\n  }\n\n  return nextUnitOfWork;\n}\n\nfunction finishClassComponent(current, workInProgress, Component, shouldUpdate, hasContext, renderLanes) {\n  // Refs should update even if shouldComponentUpdate returns false\n  markRef(current, workInProgress);\n  var didCaptureError = (workInProgress.flags & DidCapture) !== NoFlags;\n\n  if (!shouldUpdate && !didCaptureError) {\n    // Context providers should defer to sCU for rendering\n    if (hasContext) {\n      invalidateContextProvider(workInProgress, Component, false);\n    }\n\n    return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n  }\n\n  var instance = workInProgress.stateNode; // Rerender\n\n  ReactCurrentOwner$1.current = workInProgress;\n  var nextChildren;\n\n  if (didCaptureError && typeof Component.getDerivedStateFromError !== 'function') {\n    // If we captured an error, but getDerivedStateFromError is not defined,\n    // unmount all the children. componentDidCatch will schedule an update to\n    // re-render a fallback. This is temporary until we migrate everyone to\n    // the new API.\n    // TODO: Warn in a future release.\n    nextChildren = null;\n\n    {\n      stopProfilerTimerIfRunning();\n    }\n  } else {\n    {\n      markComponentRenderStarted(workInProgress);\n    }\n\n    {\n      setIsRendering(true);\n      nextChildren = instance.render();\n\n      if ( workInProgress.mode & StrictLegacyMode) {\n        setIsStrictModeForDevtools(true);\n\n        try {\n          instance.render();\n        } finally {\n          setIsStrictModeForDevtools(false);\n        }\n      }\n\n      setIsRendering(false);\n    }\n\n    {\n      markComponentRenderStopped();\n    }\n  } // React DevTools reads this flag.\n\n\n  workInProgress.flags |= PerformedWork;\n\n  if (current !== null && didCaptureError) {\n    // If we're recovering from an error, reconcile without reusing any of\n    // the existing children. Conceptually, the normal children and the children\n    // that are shown on error are two different sets, so we shouldn't reuse\n    // normal children even if their identities match.\n    forceUnmountCurrentAndReconcile(current, workInProgress, nextChildren, renderLanes);\n  } else {\n    reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  } // Memoize state using the values we just used to render.\n  // TODO: Restructure so we never read values from the instance.\n\n\n  workInProgress.memoizedState = instance.state; // The context might have changed so we need to recalculate it.\n\n  if (hasContext) {\n    invalidateContextProvider(workInProgress, Component, true);\n  }\n\n  return workInProgress.child;\n}\n\nfunction pushHostRootContext(workInProgress) {\n  var root = workInProgress.stateNode;\n\n  if (root.pendingContext) {\n    pushTopLevelContextObject(workInProgress, root.pendingContext, root.pendingContext !== root.context);\n  } else if (root.context) {\n    // Should always be set\n    pushTopLevelContextObject(workInProgress, root.context, false);\n  }\n\n  pushHostContainer(workInProgress, root.containerInfo);\n}\n\nfunction updateHostRoot(current, workInProgress, renderLanes) {\n  pushHostRootContext(workInProgress);\n\n  if (current === null) {\n    throw new Error('Should have a current fiber. This is a bug in React.');\n  }\n\n  var nextProps = workInProgress.pendingProps;\n  var prevState = workInProgress.memoizedState;\n  var prevChildren = prevState.element;\n  cloneUpdateQueue(current, workInProgress);\n  processUpdateQueue(workInProgress, nextProps, null, renderLanes);\n  var nextState = workInProgress.memoizedState;\n  var root = workInProgress.stateNode;\n  // being called \"element\".\n\n\n  var nextChildren = nextState.element;\n\n  if ( prevState.isDehydrated) {\n    // This is a hydration root whose shell has not yet hydrated. We should\n    // attempt to hydrate.\n    // Flip isDehydrated to false to indicate that when this render\n    // finishes, the root will no longer be dehydrated.\n    var overrideState = {\n      element: nextChildren,\n      isDehydrated: false,\n      cache: nextState.cache,\n      pendingSuspenseBoundaries: nextState.pendingSuspenseBoundaries,\n      transitions: nextState.transitions\n    };\n    var updateQueue = workInProgress.updateQueue; // `baseState` can always be the last state because the root doesn't\n    // have reducer functions so it doesn't need rebasing.\n\n    updateQueue.baseState = overrideState;\n    workInProgress.memoizedState = overrideState;\n\n    if (workInProgress.flags & ForceClientRender) {\n      // Something errored during a previous attempt to hydrate the shell, so we\n      // forced a client render.\n      var recoverableError = createCapturedValueAtFiber(new Error('There was an error while hydrating. Because the error happened outside ' + 'of a Suspense boundary, the entire root will switch to ' + 'client rendering.'), workInProgress);\n      return mountHostRootWithoutHydrating(current, workInProgress, nextChildren, renderLanes, recoverableError);\n    } else if (nextChildren !== prevChildren) {\n      var _recoverableError = createCapturedValueAtFiber(new Error('This root received an early update, before anything was able ' + 'hydrate. Switched the entire root to client rendering.'), workInProgress);\n\n      return mountHostRootWithoutHydrating(current, workInProgress, nextChildren, renderLanes, _recoverableError);\n    } else {\n      // The outermost shell has not hydrated yet. Start hydrating.\n      enterHydrationState(workInProgress);\n\n      var child = mountChildFibers(workInProgress, null, nextChildren, renderLanes);\n      workInProgress.child = child;\n      var node = child;\n\n      while (node) {\n        // Mark each child as hydrating. This is a fast path to know whether this\n        // tree is part of a hydrating tree. This is used to determine if a child\n        // node has fully mounted yet, and for scheduling event replaying.\n        // Conceptually this is similar to Placement in that a new subtree is\n        // inserted into the React tree here. It just happens to not need DOM\n        // mutations because it already exists.\n        node.flags = node.flags & ~Placement | Hydrating;\n        node = node.sibling;\n      }\n    }\n  } else {\n    // Root is not dehydrated. Either this is a client-only root, or it\n    // already hydrated.\n    resetHydrationState();\n\n    if (nextChildren === prevChildren) {\n      return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n    }\n\n    reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  }\n\n  return workInProgress.child;\n}\n\nfunction mountHostRootWithoutHydrating(current, workInProgress, nextChildren, renderLanes, recoverableError) {\n  // Revert to client rendering.\n  resetHydrationState();\n  queueHydrationError(recoverableError);\n  workInProgress.flags |= ForceClientRender;\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\n\nfunction updateHostComponent(current, workInProgress, renderLanes) {\n  pushHostContext(workInProgress);\n\n  if (current === null) {\n    tryToClaimNextHydratableInstance(workInProgress);\n  }\n\n  var type = workInProgress.type;\n  var nextProps = workInProgress.pendingProps;\n  var prevProps = current !== null ? current.memoizedProps : null;\n  var nextChildren = nextProps.children;\n  var isDirectTextChild = shouldSetTextContent(type, nextProps);\n\n  if (isDirectTextChild) {\n    // We special case a direct text child of a host node. This is a common\n    // case. We won't handle it as a reified child. We will instead handle\n    // this in the host environment that also has access to this prop. That\n    // avoids allocating another HostText fiber and traversing it.\n    nextChildren = null;\n  } else if (prevProps !== null && shouldSetTextContent(type, prevProps)) {\n    // If we're switching from a direct text child to a normal child, or to\n    // empty, we need to schedule the text content to be reset.\n    workInProgress.flags |= ContentReset;\n  }\n\n  markRef(current, workInProgress);\n  reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  return workInProgress.child;\n}\n\nfunction updateHostText(current, workInProgress) {\n  if (current === null) {\n    tryToClaimNextHydratableInstance(workInProgress);\n  } // Nothing to do here. This is terminal. We'll do the completion step\n  // immediately after.\n\n\n  return null;\n}\n\nfunction mountLazyComponent(_current, workInProgress, elementType, renderLanes) {\n  resetSuspendedCurrentOnMountInLegacyMode(_current, workInProgress);\n  var props = workInProgress.pendingProps;\n  var lazyComponent = elementType;\n  var payload = lazyComponent._payload;\n  var init = lazyComponent._init;\n  var Component = init(payload); // Store the unwrapped component in the type.\n\n  workInProgress.type = Component;\n  var resolvedTag = workInProgress.tag = resolveLazyComponentTag(Component);\n  var resolvedProps = resolveDefaultProps(Component, props);\n  var child;\n\n  switch (resolvedTag) {\n    case FunctionComponent:\n      {\n        {\n          validateFunctionComponentInDev(workInProgress, Component);\n          workInProgress.type = Component = resolveFunctionForHotReloading(Component);\n        }\n\n        child = updateFunctionComponent(null, workInProgress, Component, resolvedProps, renderLanes);\n        return child;\n      }\n\n    case ClassComponent:\n      {\n        {\n          workInProgress.type = Component = resolveClassForHotReloading(Component);\n        }\n\n        child = updateClassComponent(null, workInProgress, Component, resolvedProps, renderLanes);\n        return child;\n      }\n\n    case ForwardRef:\n      {\n        {\n          workInProgress.type = Component = resolveForwardRefForHotReloading(Component);\n        }\n\n        child = updateForwardRef(null, workInProgress, Component, resolvedProps, renderLanes);\n        return child;\n      }\n\n    case MemoComponent:\n      {\n        {\n          if (workInProgress.type !== workInProgress.elementType) {\n            var outerPropTypes = Component.propTypes;\n\n            if (outerPropTypes) {\n              checkPropTypes(outerPropTypes, resolvedProps, // Resolved for outer only\n              'prop', getComponentNameFromType(Component));\n            }\n          }\n        }\n\n        child = updateMemoComponent(null, workInProgress, Component, resolveDefaultProps(Component.type, resolvedProps), // The inner type can have defaults too\n        renderLanes);\n        return child;\n      }\n  }\n\n  var hint = '';\n\n  {\n    if (Component !== null && typeof Component === 'object' && Component.$$typeof === REACT_LAZY_TYPE) {\n      hint = ' Did you wrap a component in React.lazy() more than once?';\n    }\n  } // This message intentionally doesn't mention ForwardRef or MemoComponent\n  // because the fact that it's a separate type of work is an\n  // implementation detail.\n\n\n  throw new Error(\"Element type is invalid. Received a promise that resolves to: \" + Component + \". \" + (\"Lazy element type must resolve to a class or function.\" + hint));\n}\n\nfunction mountIncompleteClassComponent(_current, workInProgress, Component, nextProps, renderLanes) {\n  resetSuspendedCurrentOnMountInLegacyMode(_current, workInProgress); // Promote the fiber to a class and try rendering again.\n\n  workInProgress.tag = ClassComponent; // The rest of this function is a fork of `updateClassComponent`\n  // Push context providers early to prevent context stack mismatches.\n  // During mounting we don't know the child context yet as the instance doesn't exist.\n  // We will invalidate the child context in finishClassComponent() right after rendering.\n\n  var hasContext;\n\n  if (isContextProvider(Component)) {\n    hasContext = true;\n    pushContextProvider(workInProgress);\n  } else {\n    hasContext = false;\n  }\n\n  prepareToReadContext(workInProgress, renderLanes);\n  constructClassInstance(workInProgress, Component, nextProps);\n  mountClassInstance(workInProgress, Component, nextProps, renderLanes);\n  return finishClassComponent(null, workInProgress, Component, true, hasContext, renderLanes);\n}\n\nfunction mountIndeterminateComponent(_current, workInProgress, Component, renderLanes) {\n  resetSuspendedCurrentOnMountInLegacyMode(_current, workInProgress);\n  var props = workInProgress.pendingProps;\n  var context;\n\n  {\n    var unmaskedContext = getUnmaskedContext(workInProgress, Component, false);\n    context = getMaskedContext(workInProgress, unmaskedContext);\n  }\n\n  prepareToReadContext(workInProgress, renderLanes);\n  var value;\n  var hasId;\n\n  {\n    markComponentRenderStarted(workInProgress);\n  }\n\n  {\n    if (Component.prototype && typeof Component.prototype.render === 'function') {\n      var componentName = getComponentNameFromType(Component) || 'Unknown';\n\n      if (!didWarnAboutBadClass[componentName]) {\n        error(\"The <%s /> component appears to have a render method, but doesn't extend React.Component. \" + 'This is likely to cause errors. Change %s to extend React.Component instead.', componentName, componentName);\n\n        didWarnAboutBadClass[componentName] = true;\n      }\n    }\n\n    if (workInProgress.mode & StrictLegacyMode) {\n      ReactStrictModeWarnings.recordLegacyContextWarning(workInProgress, null);\n    }\n\n    setIsRendering(true);\n    ReactCurrentOwner$1.current = workInProgress;\n    value = renderWithHooks(null, workInProgress, Component, props, context, renderLanes);\n    hasId = checkDidRenderIdHook();\n    setIsRendering(false);\n  }\n\n  {\n    markComponentRenderStopped();\n  } // React DevTools reads this flag.\n\n\n  workInProgress.flags |= PerformedWork;\n\n  {\n    // Support for module components is deprecated and is removed behind a flag.\n    // Whether or not it would crash later, we want to show a good message in DEV first.\n    if (typeof value === 'object' && value !== null && typeof value.render === 'function' && value.$$typeof === undefined) {\n      var _componentName = getComponentNameFromType(Component) || 'Unknown';\n\n      if (!didWarnAboutModulePatternComponent[_componentName]) {\n        error('The <%s /> component appears to be a function component that returns a class instance. ' + 'Change %s to a class that extends React.Component instead. ' + \"If you can't use a class try assigning the prototype on the function as a workaround. \" + \"`%s.prototype = React.Component.prototype`. Don't use an arrow function since it \" + 'cannot be called with `new` by React.', _componentName, _componentName, _componentName);\n\n        didWarnAboutModulePatternComponent[_componentName] = true;\n      }\n    }\n  }\n\n  if ( // Run these checks in production only if the flag is off.\n  // Eventually we'll delete this branch altogether.\n   typeof value === 'object' && value !== null && typeof value.render === 'function' && value.$$typeof === undefined) {\n    {\n      var _componentName2 = getComponentNameFromType(Component) || 'Unknown';\n\n      if (!didWarnAboutModulePatternComponent[_componentName2]) {\n        error('The <%s /> component appears to be a function component that returns a class instance. ' + 'Change %s to a class that extends React.Component instead. ' + \"If you can't use a class try assigning the prototype on the function as a workaround. \" + \"`%s.prototype = React.Component.prototype`. Don't use an arrow function since it \" + 'cannot be called with `new` by React.', _componentName2, _componentName2, _componentName2);\n\n        didWarnAboutModulePatternComponent[_componentName2] = true;\n      }\n    } // Proceed under the assumption that this is a class instance\n\n\n    workInProgress.tag = ClassComponent; // Throw out any hooks that were used.\n\n    workInProgress.memoizedState = null;\n    workInProgress.updateQueue = null; // Push context providers early to prevent context stack mismatches.\n    // During mounting we don't know the child context yet as the instance doesn't exist.\n    // We will invalidate the child context in finishClassComponent() right after rendering.\n\n    var hasContext = false;\n\n    if (isContextProvider(Component)) {\n      hasContext = true;\n      pushContextProvider(workInProgress);\n    } else {\n      hasContext = false;\n    }\n\n    workInProgress.memoizedState = value.state !== null && value.state !== undefined ? value.state : null;\n    initializeUpdateQueue(workInProgress);\n    adoptClassInstance(workInProgress, value);\n    mountClassInstance(workInProgress, Component, props, renderLanes);\n    return finishClassComponent(null, workInProgress, Component, true, hasContext, renderLanes);\n  } else {\n    // Proceed under the assumption that this is a function component\n    workInProgress.tag = FunctionComponent;\n\n    {\n\n      if ( workInProgress.mode & StrictLegacyMode) {\n        setIsStrictModeForDevtools(true);\n\n        try {\n          value = renderWithHooks(null, workInProgress, Component, props, context, renderLanes);\n          hasId = checkDidRenderIdHook();\n        } finally {\n          setIsStrictModeForDevtools(false);\n        }\n      }\n    }\n\n    if (getIsHydrating() && hasId) {\n      pushMaterializedTreeId(workInProgress);\n    }\n\n    reconcileChildren(null, workInProgress, value, renderLanes);\n\n    {\n      validateFunctionComponentInDev(workInProgress, Component);\n    }\n\n    return workInProgress.child;\n  }\n}\n\nfunction validateFunctionComponentInDev(workInProgress, Component) {\n  {\n    if (Component) {\n      if (Component.childContextTypes) {\n        error('%s(...): childContextTypes cannot be defined on a function component.', Component.displayName || Component.name || 'Component');\n      }\n    }\n\n    if (workInProgress.ref !== null) {\n      var info = '';\n      var ownerName = getCurrentFiberOwnerNameInDevOrNull();\n\n      if (ownerName) {\n        info += '\\n\\nCheck the render method of `' + ownerName + '`.';\n      }\n\n      var warningKey = ownerName || '';\n      var debugSource = workInProgress._debugSource;\n\n      if (debugSource) {\n        warningKey = debugSource.fileName + ':' + debugSource.lineNumber;\n      }\n\n      if (!didWarnAboutFunctionRefs[warningKey]) {\n        didWarnAboutFunctionRefs[warningKey] = true;\n\n        error('Function components cannot be given refs. ' + 'Attempts to access this ref will fail. ' + 'Did you mean to use React.forwardRef()?%s', info);\n      }\n    }\n\n    if (typeof Component.getDerivedStateFromProps === 'function') {\n      var _componentName3 = getComponentNameFromType(Component) || 'Unknown';\n\n      if (!didWarnAboutGetDerivedStateOnFunctionComponent[_componentName3]) {\n        error('%s: Function components do not support getDerivedStateFromProps.', _componentName3);\n\n        didWarnAboutGetDerivedStateOnFunctionComponent[_componentName3] = true;\n      }\n    }\n\n    if (typeof Component.contextType === 'object' && Component.contextType !== null) {\n      var _componentName4 = getComponentNameFromType(Component) || 'Unknown';\n\n      if (!didWarnAboutContextTypeOnFunctionComponent[_componentName4]) {\n        error('%s: Function components do not support contextType.', _componentName4);\n\n        didWarnAboutContextTypeOnFunctionComponent[_componentName4] = true;\n      }\n    }\n  }\n}\n\nvar SUSPENDED_MARKER = {\n  dehydrated: null,\n  treeContext: null,\n  retryLane: NoLane\n};\n\nfunction mountSuspenseOffscreenState(renderLanes) {\n  return {\n    baseLanes: renderLanes,\n    cachePool: getSuspendedCache(),\n    transitions: null\n  };\n}\n\nfunction updateSuspenseOffscreenState(prevOffscreenState, renderLanes) {\n  var cachePool = null;\n\n  return {\n    baseLanes: mergeLanes(prevOffscreenState.baseLanes, renderLanes),\n    cachePool: cachePool,\n    transitions: prevOffscreenState.transitions\n  };\n} // TODO: Probably should inline this back\n\n\nfunction shouldRemainOnFallback(suspenseContext, current, workInProgress, renderLanes) {\n  // If we're already showing a fallback, there are cases where we need to\n  // remain on that fallback regardless of whether the content has resolved.\n  // For example, SuspenseList coordinates when nested content appears.\n  if (current !== null) {\n    var suspenseState = current.memoizedState;\n\n    if (suspenseState === null) {\n      // Currently showing content. Don't hide it, even if ForceSuspenseFallback\n      // is true. More precise name might be \"ForceRemainSuspenseFallback\".\n      // Note: This is a factoring smell. Can't remain on a fallback if there's\n      // no fallback to remain on.\n      return false;\n    }\n  } // Not currently showing content. Consult the Suspense context.\n\n\n  return hasSuspenseContext(suspenseContext, ForceSuspenseFallback);\n}\n\nfunction getRemainingWorkInPrimaryTree(current, renderLanes) {\n  // TODO: Should not remove render lanes that were pinged during this render\n  return removeLanes(current.childLanes, renderLanes);\n}\n\nfunction updateSuspenseComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps; // This is used by DevTools to force a boundary to suspend.\n\n  {\n    if (shouldSuspend(workInProgress)) {\n      workInProgress.flags |= DidCapture;\n    }\n  }\n\n  var suspenseContext = suspenseStackCursor.current;\n  var showFallback = false;\n  var didSuspend = (workInProgress.flags & DidCapture) !== NoFlags;\n\n  if (didSuspend || shouldRemainOnFallback(suspenseContext, current)) {\n    // Something in this boundary's subtree already suspended. Switch to\n    // rendering the fallback children.\n    showFallback = true;\n    workInProgress.flags &= ~DidCapture;\n  } else {\n    // Attempting the main content\n    if (current === null || current.memoizedState !== null) {\n      // This is a new mount or this boundary is already showing a fallback state.\n      // Mark this subtree context as having at least one invisible parent that could\n      // handle the fallback state.\n      // Avoided boundaries are not considered since they cannot handle preferred fallback states.\n      {\n        suspenseContext = addSubtreeSuspenseContext(suspenseContext, InvisibleParentSuspenseContext);\n      }\n    }\n  }\n\n  suspenseContext = setDefaultShallowSuspenseContext(suspenseContext);\n  pushSuspenseContext(workInProgress, suspenseContext); // OK, the next part is confusing. We're about to reconcile the Suspense\n  // boundary's children. This involves some custom reconciliation logic. Two\n  // main reasons this is so complicated.\n  //\n  // First, Legacy Mode has different semantics for backwards compatibility. The\n  // primary tree will commit in an inconsistent state, so when we do the\n  // second pass to render the fallback, we do some exceedingly, uh, clever\n  // hacks to make that not totally break. Like transferring effects and\n  // deletions from hidden tree. In Concurrent Mode, it's much simpler,\n  // because we bailout on the primary tree completely and leave it in its old\n  // state, no effects. Same as what we do for Offscreen (except that\n  // Offscreen doesn't have the first render pass).\n  //\n  // Second is hydration. During hydration, the Suspense fiber has a slightly\n  // different layout, where the child points to a dehydrated fragment, which\n  // contains the DOM rendered by the server.\n  //\n  // Third, even if you set all that aside, Suspense is like error boundaries in\n  // that we first we try to render one tree, and if that fails, we render again\n  // and switch to a different tree. Like a try/catch block. So we have to track\n  // which branch we're currently rendering. Ideally we would model this using\n  // a stack.\n\n  if (current === null) {\n    // Initial mount\n    // Special path for hydration\n    // If we're currently hydrating, try to hydrate this boundary.\n    tryToClaimNextHydratableInstance(workInProgress); // This could've been a dehydrated suspense component.\n\n    var suspenseState = workInProgress.memoizedState;\n\n    if (suspenseState !== null) {\n      var dehydrated = suspenseState.dehydrated;\n\n      if (dehydrated !== null) {\n        return mountDehydratedSuspenseComponent(workInProgress, dehydrated);\n      }\n    }\n\n    var nextPrimaryChildren = nextProps.children;\n    var nextFallbackChildren = nextProps.fallback;\n\n    if (showFallback) {\n      var fallbackFragment = mountSuspenseFallbackChildren(workInProgress, nextPrimaryChildren, nextFallbackChildren, renderLanes);\n      var primaryChildFragment = workInProgress.child;\n      primaryChildFragment.memoizedState = mountSuspenseOffscreenState(renderLanes);\n      workInProgress.memoizedState = SUSPENDED_MARKER;\n\n      return fallbackFragment;\n    } else {\n      return mountSuspensePrimaryChildren(workInProgress, nextPrimaryChildren);\n    }\n  } else {\n    // This is an update.\n    // Special path for hydration\n    var prevState = current.memoizedState;\n\n    if (prevState !== null) {\n      var _dehydrated = prevState.dehydrated;\n\n      if (_dehydrated !== null) {\n        return updateDehydratedSuspenseComponent(current, workInProgress, didSuspend, nextProps, _dehydrated, prevState, renderLanes);\n      }\n    }\n\n    if (showFallback) {\n      var _nextFallbackChildren = nextProps.fallback;\n      var _nextPrimaryChildren = nextProps.children;\n      var fallbackChildFragment = updateSuspenseFallbackChildren(current, workInProgress, _nextPrimaryChildren, _nextFallbackChildren, renderLanes);\n      var _primaryChildFragment2 = workInProgress.child;\n      var prevOffscreenState = current.child.memoizedState;\n      _primaryChildFragment2.memoizedState = prevOffscreenState === null ? mountSuspenseOffscreenState(renderLanes) : updateSuspenseOffscreenState(prevOffscreenState, renderLanes);\n\n      _primaryChildFragment2.childLanes = getRemainingWorkInPrimaryTree(current, renderLanes);\n      workInProgress.memoizedState = SUSPENDED_MARKER;\n      return fallbackChildFragment;\n    } else {\n      var _nextPrimaryChildren2 = nextProps.children;\n\n      var _primaryChildFragment3 = updateSuspensePrimaryChildren(current, workInProgress, _nextPrimaryChildren2, renderLanes);\n\n      workInProgress.memoizedState = null;\n      return _primaryChildFragment3;\n    }\n  }\n}\n\nfunction mountSuspensePrimaryChildren(workInProgress, primaryChildren, renderLanes) {\n  var mode = workInProgress.mode;\n  var primaryChildProps = {\n    mode: 'visible',\n    children: primaryChildren\n  };\n  var primaryChildFragment = mountWorkInProgressOffscreenFiber(primaryChildProps, mode);\n  primaryChildFragment.return = workInProgress;\n  workInProgress.child = primaryChildFragment;\n  return primaryChildFragment;\n}\n\nfunction mountSuspenseFallbackChildren(workInProgress, primaryChildren, fallbackChildren, renderLanes) {\n  var mode = workInProgress.mode;\n  var progressedPrimaryFragment = workInProgress.child;\n  var primaryChildProps = {\n    mode: 'hidden',\n    children: primaryChildren\n  };\n  var primaryChildFragment;\n  var fallbackChildFragment;\n\n  if ((mode & ConcurrentMode) === NoMode && progressedPrimaryFragment !== null) {\n    // In legacy mode, we commit the primary tree as if it successfully\n    // completed, even though it's in an inconsistent state.\n    primaryChildFragment = progressedPrimaryFragment;\n    primaryChildFragment.childLanes = NoLanes;\n    primaryChildFragment.pendingProps = primaryChildProps;\n\n    if ( workInProgress.mode & ProfileMode) {\n      // Reset the durations from the first pass so they aren't included in the\n      // final amounts. This seems counterintuitive, since we're intentionally\n      // not measuring part of the render phase, but this makes it match what we\n      // do in Concurrent Mode.\n      primaryChildFragment.actualDuration = 0;\n      primaryChildFragment.actualStartTime = -1;\n      primaryChildFragment.selfBaseDuration = 0;\n      primaryChildFragment.treeBaseDuration = 0;\n    }\n\n    fallbackChildFragment = createFiberFromFragment(fallbackChildren, mode, renderLanes, null);\n  } else {\n    primaryChildFragment = mountWorkInProgressOffscreenFiber(primaryChildProps, mode);\n    fallbackChildFragment = createFiberFromFragment(fallbackChildren, mode, renderLanes, null);\n  }\n\n  primaryChildFragment.return = workInProgress;\n  fallbackChildFragment.return = workInProgress;\n  primaryChildFragment.sibling = fallbackChildFragment;\n  workInProgress.child = primaryChildFragment;\n  return fallbackChildFragment;\n}\n\nfunction mountWorkInProgressOffscreenFiber(offscreenProps, mode, renderLanes) {\n  // The props argument to `createFiberFromOffscreen` is `any` typed, so we use\n  // this wrapper function to constrain it.\n  return createFiberFromOffscreen(offscreenProps, mode, NoLanes, null);\n}\n\nfunction updateWorkInProgressOffscreenFiber(current, offscreenProps) {\n  // The props argument to `createWorkInProgress` is `any` typed, so we use this\n  // wrapper function to constrain it.\n  return createWorkInProgress(current, offscreenProps);\n}\n\nfunction updateSuspensePrimaryChildren(current, workInProgress, primaryChildren, renderLanes) {\n  var currentPrimaryChildFragment = current.child;\n  var currentFallbackChildFragment = currentPrimaryChildFragment.sibling;\n  var primaryChildFragment = updateWorkInProgressOffscreenFiber(currentPrimaryChildFragment, {\n    mode: 'visible',\n    children: primaryChildren\n  });\n\n  if ((workInProgress.mode & ConcurrentMode) === NoMode) {\n    primaryChildFragment.lanes = renderLanes;\n  }\n\n  primaryChildFragment.return = workInProgress;\n  primaryChildFragment.sibling = null;\n\n  if (currentFallbackChildFragment !== null) {\n    // Delete the fallback child fragment\n    var deletions = workInProgress.deletions;\n\n    if (deletions === null) {\n      workInProgress.deletions = [currentFallbackChildFragment];\n      workInProgress.flags |= ChildDeletion;\n    } else {\n      deletions.push(currentFallbackChildFragment);\n    }\n  }\n\n  workInProgress.child = primaryChildFragment;\n  return primaryChildFragment;\n}\n\nfunction updateSuspenseFallbackChildren(current, workInProgress, primaryChildren, fallbackChildren, renderLanes) {\n  var mode = workInProgress.mode;\n  var currentPrimaryChildFragment = current.child;\n  var currentFallbackChildFragment = currentPrimaryChildFragment.sibling;\n  var primaryChildProps = {\n    mode: 'hidden',\n    children: primaryChildren\n  };\n  var primaryChildFragment;\n\n  if ( // In legacy mode, we commit the primary tree as if it successfully\n  // completed, even though it's in an inconsistent state.\n  (mode & ConcurrentMode) === NoMode && // Make sure we're on the second pass, i.e. the primary child fragment was\n  // already cloned. In legacy mode, the only case where this isn't true is\n  // when DevTools forces us to display a fallback; we skip the first render\n  // pass entirely and go straight to rendering the fallback. (In Concurrent\n  // Mode, SuspenseList can also trigger this scenario, but this is a legacy-\n  // only codepath.)\n  workInProgress.child !== currentPrimaryChildFragment) {\n    var progressedPrimaryFragment = workInProgress.child;\n    primaryChildFragment = progressedPrimaryFragment;\n    primaryChildFragment.childLanes = NoLanes;\n    primaryChildFragment.pendingProps = primaryChildProps;\n\n    if ( workInProgress.mode & ProfileMode) {\n      // Reset the durations from the first pass so they aren't included in the\n      // final amounts. This seems counterintuitive, since we're intentionally\n      // not measuring part of the render phase, but this makes it match what we\n      // do in Concurrent Mode.\n      primaryChildFragment.actualDuration = 0;\n      primaryChildFragment.actualStartTime = -1;\n      primaryChildFragment.selfBaseDuration = currentPrimaryChildFragment.selfBaseDuration;\n      primaryChildFragment.treeBaseDuration = currentPrimaryChildFragment.treeBaseDuration;\n    } // The fallback fiber was added as a deletion during the first pass.\n    // However, since we're going to remain on the fallback, we no longer want\n    // to delete it.\n\n\n    workInProgress.deletions = null;\n  } else {\n    primaryChildFragment = updateWorkInProgressOffscreenFiber(currentPrimaryChildFragment, primaryChildProps); // Since we're reusing a current tree, we need to reuse the flags, too.\n    // (We don't do this in legacy mode, because in legacy mode we don't re-use\n    // the current tree; see previous branch.)\n\n    primaryChildFragment.subtreeFlags = currentPrimaryChildFragment.subtreeFlags & StaticMask;\n  }\n\n  var fallbackChildFragment;\n\n  if (currentFallbackChildFragment !== null) {\n    fallbackChildFragment = createWorkInProgress(currentFallbackChildFragment, fallbackChildren);\n  } else {\n    fallbackChildFragment = createFiberFromFragment(fallbackChildren, mode, renderLanes, null); // Needs a placement effect because the parent (the Suspense boundary) already\n    // mounted but this is a new fiber.\n\n    fallbackChildFragment.flags |= Placement;\n  }\n\n  fallbackChildFragment.return = workInProgress;\n  primaryChildFragment.return = workInProgress;\n  primaryChildFragment.sibling = fallbackChildFragment;\n  workInProgress.child = primaryChildFragment;\n  return fallbackChildFragment;\n}\n\nfunction retrySuspenseComponentWithoutHydrating(current, workInProgress, renderLanes, recoverableError) {\n  // Falling back to client rendering. Because this has performance\n  // implications, it's considered a recoverable error, even though the user\n  // likely won't observe anything wrong with the UI.\n  //\n  // The error is passed in as an argument to enforce that every caller provide\n  // a custom message, or explicitly opt out (currently the only path that opts\n  // out is legacy mode; every concurrent path provides an error).\n  if (recoverableError !== null) {\n    queueHydrationError(recoverableError);\n  } // This will add the old fiber to the deletion list\n\n\n  reconcileChildFibers(workInProgress, current.child, null, renderLanes); // We're now not suspended nor dehydrated.\n\n  var nextProps = workInProgress.pendingProps;\n  var primaryChildren = nextProps.children;\n  var primaryChildFragment = mountSuspensePrimaryChildren(workInProgress, primaryChildren); // Needs a placement effect because the parent (the Suspense boundary) already\n  // mounted but this is a new fiber.\n\n  primaryChildFragment.flags |= Placement;\n  workInProgress.memoizedState = null;\n  return primaryChildFragment;\n}\n\nfunction mountSuspenseFallbackAfterRetryWithoutHydrating(current, workInProgress, primaryChildren, fallbackChildren, renderLanes) {\n  var fiberMode = workInProgress.mode;\n  var primaryChildProps = {\n    mode: 'visible',\n    children: primaryChildren\n  };\n  var primaryChildFragment = mountWorkInProgressOffscreenFiber(primaryChildProps, fiberMode);\n  var fallbackChildFragment = createFiberFromFragment(fallbackChildren, fiberMode, renderLanes, null); // Needs a placement effect because the parent (the Suspense\n  // boundary) already mounted but this is a new fiber.\n\n  fallbackChildFragment.flags |= Placement;\n  primaryChildFragment.return = workInProgress;\n  fallbackChildFragment.return = workInProgress;\n  primaryChildFragment.sibling = fallbackChildFragment;\n  workInProgress.child = primaryChildFragment;\n\n  if ((workInProgress.mode & ConcurrentMode) !== NoMode) {\n    // We will have dropped the effect list which contains the\n    // deletion. We need to reconcile to delete the current child.\n    reconcileChildFibers(workInProgress, current.child, null, renderLanes);\n  }\n\n  return fallbackChildFragment;\n}\n\nfunction mountDehydratedSuspenseComponent(workInProgress, suspenseInstance, renderLanes) {\n  // During the first pass, we'll bail out and not drill into the children.\n  // Instead, we'll leave the content in place and try to hydrate it later.\n  if ((workInProgress.mode & ConcurrentMode) === NoMode) {\n    {\n      error('Cannot hydrate Suspense in legacy mode. Switch from ' + 'ReactDOM.hydrate(element, container) to ' + 'ReactDOMClient.hydrateRoot(container, <App />)' + '.render(element) or remove the Suspense components from ' + 'the server rendered components.');\n    }\n\n    workInProgress.lanes = laneToLanes(SyncLane);\n  } else if (isSuspenseInstanceFallback(suspenseInstance)) {\n    // This is a client-only boundary. Since we won't get any content from the server\n    // for this, we need to schedule that at a higher priority based on when it would\n    // have timed out. In theory we could render it in this pass but it would have the\n    // wrong priority associated with it and will prevent hydration of parent path.\n    // Instead, we'll leave work left on it to render it in a separate commit.\n    // TODO This time should be the time at which the server rendered response that is\n    // a parent to this boundary was displayed. However, since we currently don't have\n    // a protocol to transfer that time, we'll just estimate it by using the current\n    // time. This will mean that Suspense timeouts are slightly shifted to later than\n    // they should be.\n    // Schedule a normal pri update to render this content.\n    workInProgress.lanes = laneToLanes(DefaultHydrationLane);\n  } else {\n    // We'll continue hydrating the rest at offscreen priority since we'll already\n    // be showing the right content coming from the server, it is no rush.\n    workInProgress.lanes = laneToLanes(OffscreenLane);\n  }\n\n  return null;\n}\n\nfunction updateDehydratedSuspenseComponent(current, workInProgress, didSuspend, nextProps, suspenseInstance, suspenseState, renderLanes) {\n  if (!didSuspend) {\n    // This is the first render pass. Attempt to hydrate.\n    // We should never be hydrating at this point because it is the first pass,\n    // but after we've already committed once.\n    warnIfHydrating();\n\n    if ((workInProgress.mode & ConcurrentMode) === NoMode) {\n      return retrySuspenseComponentWithoutHydrating(current, workInProgress, renderLanes, // TODO: When we delete legacy mode, we should make this error argument\n      // required \u2014 every concurrent mode path that causes hydration to\n      // de-opt to client rendering should have an error message.\n      null);\n    }\n\n    if (isSuspenseInstanceFallback(suspenseInstance)) {\n      // This boundary is in a permanent fallback state. In this case, we'll never\n      // get an update and we'll never be able to hydrate the final content. Let's just try the\n      // client side render instead.\n      var digest, message, stack;\n\n      {\n        var _getSuspenseInstanceF = getSuspenseInstanceFallbackErrorDetails(suspenseInstance);\n\n        digest = _getSuspenseInstanceF.digest;\n        message = _getSuspenseInstanceF.message;\n        stack = _getSuspenseInstanceF.stack;\n      }\n\n      var error;\n\n      if (message) {\n        // eslint-disable-next-line react-internal/prod-error-codes\n        error = new Error(message);\n      } else {\n        error = new Error('The server could not finish this Suspense boundary, likely ' + 'due to an error during server rendering. Switched to ' + 'client rendering.');\n      }\n\n      var capturedValue = createCapturedValue(error, digest, stack);\n      return retrySuspenseComponentWithoutHydrating(current, workInProgress, renderLanes, capturedValue);\n    }\n    // any context has changed, we need to treat is as if the input might have changed.\n\n\n    var hasContextChanged = includesSomeLane(renderLanes, current.childLanes);\n\n    if (didReceiveUpdate || hasContextChanged) {\n      // This boundary has changed since the first render. This means that we are now unable to\n      // hydrate it. We might still be able to hydrate it using a higher priority lane.\n      var root = getWorkInProgressRoot();\n\n      if (root !== null) {\n        var attemptHydrationAtLane = getBumpedLaneForHydration(root, renderLanes);\n\n        if (attemptHydrationAtLane !== NoLane && attemptHydrationAtLane !== suspenseState.retryLane) {\n          // Intentionally mutating since this render will get interrupted. This\n          // is one of the very rare times where we mutate the current tree\n          // during the render phase.\n          suspenseState.retryLane = attemptHydrationAtLane; // TODO: Ideally this would inherit the event time of the current render\n\n          var eventTime = NoTimestamp;\n          enqueueConcurrentRenderForLane(current, attemptHydrationAtLane);\n          scheduleUpdateOnFiber(root, current, attemptHydrationAtLane, eventTime);\n        }\n      } // If we have scheduled higher pri work above, this will probably just abort the render\n      // since we now have higher priority work, but in case it doesn't, we need to prepare to\n      // render something, if we time out. Even if that requires us to delete everything and\n      // skip hydration.\n      // Delay having to do this as long as the suspense timeout allows us.\n\n\n      renderDidSuspendDelayIfPossible();\n\n      var _capturedValue = createCapturedValue(new Error('This Suspense boundary received an update before it finished ' + 'hydrating. This caused the boundary to switch to client rendering. ' + 'The usual way to fix this is to wrap the original update ' + 'in startTransition.'));\n\n      return retrySuspenseComponentWithoutHydrating(current, workInProgress, renderLanes, _capturedValue);\n    } else if (isSuspenseInstancePending(suspenseInstance)) {\n      // This component is still pending more data from the server, so we can't hydrate its\n      // content. We treat it as if this component suspended itself. It might seem as if\n      // we could just try to render it client-side instead. However, this will perform a\n      // lot of unnecessary work and is unlikely to complete since it often will suspend\n      // on missing data anyway. Additionally, the server might be able to render more\n      // than we can on the client yet. In that case we'd end up with more fallback states\n      // on the client than if we just leave it alone. If the server times out or errors\n      // these should update this boundary to the permanent Fallback state instead.\n      // Mark it as having captured (i.e. suspended).\n      workInProgress.flags |= DidCapture; // Leave the child in place. I.e. the dehydrated fragment.\n\n      workInProgress.child = current.child; // Register a callback to retry this boundary once the server has sent the result.\n\n      var retry = retryDehydratedSuspenseBoundary.bind(null, current);\n      registerSuspenseInstanceRetry(suspenseInstance, retry);\n      return null;\n    } else {\n      // This is the first attempt.\n      reenterHydrationStateFromDehydratedSuspenseInstance(workInProgress, suspenseInstance, suspenseState.treeContext);\n      var primaryChildren = nextProps.children;\n      var primaryChildFragment = mountSuspensePrimaryChildren(workInProgress, primaryChildren); // Mark the children as hydrating. This is a fast path to know whether this\n      // tree is part of a hydrating tree. This is used to determine if a child\n      // node has fully mounted yet, and for scheduling event replaying.\n      // Conceptually this is similar to Placement in that a new subtree is\n      // inserted into the React tree here. It just happens to not need DOM\n      // mutations because it already exists.\n\n      primaryChildFragment.flags |= Hydrating;\n      return primaryChildFragment;\n    }\n  } else {\n    // This is the second render pass. We already attempted to hydrated, but\n    // something either suspended or errored.\n    if (workInProgress.flags & ForceClientRender) {\n      // Something errored during hydration. Try again without hydrating.\n      workInProgress.flags &= ~ForceClientRender;\n\n      var _capturedValue2 = createCapturedValue(new Error('There was an error while hydrating this Suspense boundary. ' + 'Switched to client rendering.'));\n\n      return retrySuspenseComponentWithoutHydrating(current, workInProgress, renderLanes, _capturedValue2);\n    } else if (workInProgress.memoizedState !== null) {\n      // Something suspended and we should still be in dehydrated mode.\n      // Leave the existing child in place.\n      workInProgress.child = current.child; // The dehydrated completion pass expects this flag to be there\n      // but the normal suspense pass doesn't.\n\n      workInProgress.flags |= DidCapture;\n      return null;\n    } else {\n      // Suspended but we should no longer be in dehydrated mode.\n      // Therefore we now have to render the fallback.\n      var nextPrimaryChildren = nextProps.children;\n      var nextFallbackChildren = nextProps.fallback;\n      var fallbackChildFragment = mountSuspenseFallbackAfterRetryWithoutHydrating(current, workInProgress, nextPrimaryChildren, nextFallbackChildren, renderLanes);\n      var _primaryChildFragment4 = workInProgress.child;\n      _primaryChildFragment4.memoizedState = mountSuspenseOffscreenState(renderLanes);\n      workInProgress.memoizedState = SUSPENDED_MARKER;\n      return fallbackChildFragment;\n    }\n  }\n}\n\nfunction scheduleSuspenseWorkOnFiber(fiber, renderLanes, propagationRoot) {\n  fiber.lanes = mergeLanes(fiber.lanes, renderLanes);\n  var alternate = fiber.alternate;\n\n  if (alternate !== null) {\n    alternate.lanes = mergeLanes(alternate.lanes, renderLanes);\n  }\n\n  scheduleContextWorkOnParentPath(fiber.return, renderLanes, propagationRoot);\n}\n\nfunction propagateSuspenseContextChange(workInProgress, firstChild, renderLanes) {\n  // Mark any Suspense boundaries with fallbacks as having work to do.\n  // If they were previously forced into fallbacks, they may now be able\n  // to unblock.\n  var node = firstChild;\n\n  while (node !== null) {\n    if (node.tag === SuspenseComponent) {\n      var state = node.memoizedState;\n\n      if (state !== null) {\n        scheduleSuspenseWorkOnFiber(node, renderLanes, workInProgress);\n      }\n    } else if (node.tag === SuspenseListComponent) {\n      // If the tail is hidden there might not be an Suspense boundaries\n      // to schedule work on. In this case we have to schedule it on the\n      // list itself.\n      // We don't have to traverse to the children of the list since\n      // the list will propagate the change when it rerenders.\n      scheduleSuspenseWorkOnFiber(node, renderLanes, workInProgress);\n    } else if (node.child !== null) {\n      node.child.return = node;\n      node = node.child;\n      continue;\n    }\n\n    if (node === workInProgress) {\n      return;\n    }\n\n    while (node.sibling === null) {\n      if (node.return === null || node.return === workInProgress) {\n        return;\n      }\n\n      node = node.return;\n    }\n\n    node.sibling.return = node.return;\n    node = node.sibling;\n  }\n}\n\nfunction findLastContentRow(firstChild) {\n  // This is going to find the last row among these children that is already\n  // showing content on the screen, as opposed to being in fallback state or\n  // new. If a row has multiple Suspense boundaries, any of them being in the\n  // fallback state, counts as the whole row being in a fallback state.\n  // Note that the \"rows\" will be workInProgress, but any nested children\n  // will still be current since we haven't rendered them yet. The mounted\n  // order may not be the same as the new order. We use the new order.\n  var row = firstChild;\n  var lastContentRow = null;\n\n  while (row !== null) {\n    var currentRow = row.alternate; // New rows can't be content rows.\n\n    if (currentRow !== null && findFirstSuspended(currentRow) === null) {\n      lastContentRow = row;\n    }\n\n    row = row.sibling;\n  }\n\n  return lastContentRow;\n}\n\nfunction validateRevealOrder(revealOrder) {\n  {\n    if (revealOrder !== undefined && revealOrder !== 'forwards' && revealOrder !== 'backwards' && revealOrder !== 'together' && !didWarnAboutRevealOrder[revealOrder]) {\n      didWarnAboutRevealOrder[revealOrder] = true;\n\n      if (typeof revealOrder === 'string') {\n        switch (revealOrder.toLowerCase()) {\n          case 'together':\n          case 'forwards':\n          case 'backwards':\n            {\n              error('\"%s\" is not a valid value for revealOrder on <SuspenseList />. ' + 'Use lowercase \"%s\" instead.', revealOrder, revealOrder.toLowerCase());\n\n              break;\n            }\n\n          case 'forward':\n          case 'backward':\n            {\n              error('\"%s\" is not a valid value for revealOrder on <SuspenseList />. ' + 'React uses the -s suffix in the spelling. Use \"%ss\" instead.', revealOrder, revealOrder.toLowerCase());\n\n              break;\n            }\n\n          default:\n            error('\"%s\" is not a supported revealOrder on <SuspenseList />. ' + 'Did you mean \"together\", \"forwards\" or \"backwards\"?', revealOrder);\n\n            break;\n        }\n      } else {\n        error('%s is not a supported value for revealOrder on <SuspenseList />. ' + 'Did you mean \"together\", \"forwards\" or \"backwards\"?', revealOrder);\n      }\n    }\n  }\n}\n\nfunction validateTailOptions(tailMode, revealOrder) {\n  {\n    if (tailMode !== undefined && !didWarnAboutTailOptions[tailMode]) {\n      if (tailMode !== 'collapsed' && tailMode !== 'hidden') {\n        didWarnAboutTailOptions[tailMode] = true;\n\n        error('\"%s\" is not a supported value for tail on <SuspenseList />. ' + 'Did you mean \"collapsed\" or \"hidden\"?', tailMode);\n      } else if (revealOrder !== 'forwards' && revealOrder !== 'backwards') {\n        didWarnAboutTailOptions[tailMode] = true;\n\n        error('<SuspenseList tail=\"%s\" /> is only valid if revealOrder is ' + '\"forwards\" or \"backwards\". ' + 'Did you mean to specify revealOrder=\"forwards\"?', tailMode);\n      }\n    }\n  }\n}\n\nfunction validateSuspenseListNestedChild(childSlot, index) {\n  {\n    var isAnArray = isArray(childSlot);\n    var isIterable = !isAnArray && typeof getIteratorFn(childSlot) === 'function';\n\n    if (isAnArray || isIterable) {\n      var type = isAnArray ? 'array' : 'iterable';\n\n      error('A nested %s was passed to row #%s in <SuspenseList />. Wrap it in ' + 'an additional SuspenseList to configure its revealOrder: ' + '<SuspenseList revealOrder=...> ... ' + '<SuspenseList revealOrder=...>{%s}</SuspenseList> ... ' + '</SuspenseList>', type, index, type);\n\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction validateSuspenseListChildren(children, revealOrder) {\n  {\n    if ((revealOrder === 'forwards' || revealOrder === 'backwards') && children !== undefined && children !== null && children !== false) {\n      if (isArray(children)) {\n        for (var i = 0; i < children.length; i++) {\n          if (!validateSuspenseListNestedChild(children[i], i)) {\n            return;\n          }\n        }\n      } else {\n        var iteratorFn = getIteratorFn(children);\n\n        if (typeof iteratorFn === 'function') {\n          var childrenIterator = iteratorFn.call(children);\n\n          if (childrenIterator) {\n            var step = childrenIterator.next();\n            var _i = 0;\n\n            for (; !step.done; step = childrenIterator.next()) {\n              if (!validateSuspenseListNestedChild(step.value, _i)) {\n                return;\n              }\n\n              _i++;\n            }\n          }\n        } else {\n          error('A single row was passed to a <SuspenseList revealOrder=\"%s\" />. ' + 'This is not useful since it needs multiple rows. ' + 'Did you mean to pass multiple children or an array?', revealOrder);\n        }\n      }\n    }\n  }\n}\n\nfunction initSuspenseListRenderState(workInProgress, isBackwards, tail, lastContentRow, tailMode) {\n  var renderState = workInProgress.memoizedState;\n\n  if (renderState === null) {\n    workInProgress.memoizedState = {\n      isBackwards: isBackwards,\n      rendering: null,\n      renderingStartTime: 0,\n      last: lastContentRow,\n      tail: tail,\n      tailMode: tailMode\n    };\n  } else {\n    // We can reuse the existing object from previous renders.\n    renderState.isBackwards = isBackwards;\n    renderState.rendering = null;\n    renderState.renderingStartTime = 0;\n    renderState.last = lastContentRow;\n    renderState.tail = tail;\n    renderState.tailMode = tailMode;\n  }\n} // This can end up rendering this component multiple passes.\n// The first pass splits the children fibers into two sets. A head and tail.\n// We first render the head. If anything is in fallback state, we do another\n// pass through beginWork to rerender all children (including the tail) with\n// the force suspend context. If the first render didn't have anything in\n// in fallback state. Then we render each row in the tail one-by-one.\n// That happens in the completeWork phase without going back to beginWork.\n\n\nfunction updateSuspenseListComponent(current, workInProgress, renderLanes) {\n  var nextProps = workInProgress.pendingProps;\n  var revealOrder = nextProps.revealOrder;\n  var tailMode = nextProps.tail;\n  var newChildren = nextProps.children;\n  validateRevealOrder(revealOrder);\n  validateTailOptions(tailMode, revealOrder);\n  validateSuspenseListChildren(newChildren, revealOrder);\n  reconcileChildren(current, workInProgress, newChildren, renderLanes);\n  var suspenseContext = suspenseStackCursor.current;\n  var shouldForceFallback = hasSuspenseContext(suspenseContext, ForceSuspenseFallback);\n\n  if (shouldForceFallback) {\n    suspenseContext = setShallowSuspenseContext(suspenseContext, ForceSuspenseFallback);\n    workInProgress.flags |= DidCapture;\n  } else {\n    var didSuspendBefore = current !== null && (current.flags & DidCapture) !== NoFlags;\n\n    if (didSuspendBefore) {\n      // If we previously forced a fallback, we need to schedule work\n      // on any nested boundaries to let them know to try to render\n      // again. This is the same as context updating.\n      propagateSuspenseContextChange(workInProgress, workInProgress.child, renderLanes);\n    }\n\n    suspenseContext = setDefaultShallowSuspenseContext(suspenseContext);\n  }\n\n  pushSuspenseContext(workInProgress, suspenseContext);\n\n  if ((workInProgress.mode & ConcurrentMode) === NoMode) {\n    // In legacy mode, SuspenseList doesn't work so we just\n    // use make it a noop by treating it as the default revealOrder.\n    workInProgress.memoizedState = null;\n  } else {\n    switch (revealOrder) {\n      case 'forwards':\n        {\n          var lastContentRow = findLastContentRow(workInProgress.child);\n          var tail;\n\n          if (lastContentRow === null) {\n            // The whole list is part of the tail.\n            // TODO: We could fast path by just rendering the tail now.\n            tail = workInProgress.child;\n            workInProgress.child = null;\n          } else {\n            // Disconnect the tail rows after the content row.\n            // We're going to render them separately later.\n            tail = lastContentRow.sibling;\n            lastContentRow.sibling = null;\n          }\n\n          initSuspenseListRenderState(workInProgress, false, // isBackwards\n          tail, lastContentRow, tailMode);\n          break;\n        }\n\n      case 'backwards':\n        {\n          // We're going to find the first row that has existing content.\n          // At the same time we're going to reverse the list of everything\n          // we pass in the meantime. That's going to be our tail in reverse\n          // order.\n          var _tail = null;\n          var row = workInProgress.child;\n          workInProgress.child = null;\n\n          while (row !== null) {\n            var currentRow = row.alternate; // New rows can't be content rows.\n\n            if (currentRow !== null && findFirstSuspended(currentRow) === null) {\n              // This is the beginning of the main content.\n              workInProgress.child = row;\n              break;\n            }\n\n            var nextRow = row.sibling;\n            row.sibling = _tail;\n            _tail = row;\n            row = nextRow;\n          } // TODO: If workInProgress.child is null, we can continue on the tail immediately.\n\n\n          initSuspenseListRenderState(workInProgress, true, // isBackwards\n          _tail, null, // last\n          tailMode);\n          break;\n        }\n\n      case 'together':\n        {\n          initSuspenseListRenderState(workInProgress, false, // isBackwards\n          null, // tail\n          null, // last\n          undefined);\n          break;\n        }\n\n      default:\n        {\n          // The default reveal order is the same as not having\n          // a boundary.\n          workInProgress.memoizedState = null;\n        }\n    }\n  }\n\n  return workInProgress.child;\n}\n\nfunction updatePortalComponent(current, workInProgress, renderLanes) {\n  pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n  var nextChildren = workInProgress.pendingProps;\n\n  if (current === null) {\n    // Portals are special because we don't append the children during mount\n    // but at commit. Therefore we need to track insertions which the normal\n    // flow doesn't do during mount. This doesn't happen at the root because\n    // the root always starts with a \"current\" with a null child.\n    // TODO: Consider unifying this with how the root works.\n    workInProgress.child = reconcileChildFibers(workInProgress, null, nextChildren, renderLanes);\n  } else {\n    reconcileChildren(current, workInProgress, nextChildren, renderLanes);\n  }\n\n  return workInProgress.child;\n}\n\nvar hasWarnedAboutUsingNoValuePropOnContextProvider = false;\n\nfunction updateContextProvider(current, workInProgress, renderLanes) {\n  var providerType = workInProgress.type;\n  var context = providerType._context;\n  var newProps = workInProgress.pendingProps;\n  var oldProps = workInProgress.memoizedProps;\n  var newValue = newProps.value;\n\n  {\n    if (!('value' in newProps)) {\n      if (!hasWarnedAboutUsingNoValuePropOnContextProvider) {\n        hasWarnedAboutUsingNoValuePropOnContextProvider = true;\n\n        error('The `value` prop is required for the `<Context.Provider>`. Did you misspell it or forget to pass it?');\n      }\n    }\n\n    var providerPropTypes = workInProgress.type.propTypes;\n\n    if (providerPropTypes) {\n      checkPropTypes(providerPropTypes, newProps, 'prop', 'Context.Provider');\n    }\n  }\n\n  pushProvider(workInProgress, context, newValue);\n\n  {\n    if (oldProps !== null) {\n      var oldValue = oldProps.value;\n\n      if (objectIs(oldValue, newValue)) {\n        // No change. Bailout early if children are the same.\n        if (oldProps.children === newProps.children && !hasContextChanged()) {\n          return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n        }\n      } else {\n        // The context value changed. Search for matching consumers and schedule\n        // them to update.\n        propagateContextChange(workInProgress, context, renderLanes);\n      }\n    }\n  }\n\n  var newChildren = newProps.children;\n  reconcileChildren(current, workInProgress, newChildren, renderLanes);\n  return workInProgress.child;\n}\n\nvar hasWarnedAboutUsingContextAsConsumer = false;\n\nfunction updateContextConsumer(current, workInProgress, renderLanes) {\n  var context = workInProgress.type; // The logic below for Context differs depending on PROD or DEV mode. In\n  // DEV mode, we create a separate object for Context.Consumer that acts\n  // like a proxy to Context. This proxy object adds unnecessary code in PROD\n  // so we use the old behaviour (Context.Consumer references Context) to\n  // reduce size and overhead. The separate object references context via\n  // a property called \"_context\", which also gives us the ability to check\n  // in DEV mode if this property exists or not and warn if it does not.\n\n  {\n    if (context._context === undefined) {\n      // This may be because it's a Context (rather than a Consumer).\n      // Or it may be because it's older React where they're the same thing.\n      // We only want to warn if we're sure it's a new React.\n      if (context !== context.Consumer) {\n        if (!hasWarnedAboutUsingContextAsConsumer) {\n          hasWarnedAboutUsingContextAsConsumer = true;\n\n          error('Rendering <Context> directly is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Consumer> instead?');\n        }\n      }\n    } else {\n      context = context._context;\n    }\n  }\n\n  var newProps = workInProgress.pendingProps;\n  var render = newProps.children;\n\n  {\n    if (typeof render !== 'function') {\n      error('A context consumer was rendered with multiple children, or a child ' + \"that isn't a function. A context consumer expects a single child \" + 'that is a function. If you did pass a function, make sure there ' + 'is no trailing or leading whitespace around it.');\n    }\n  }\n\n  prepareToReadContext(workInProgress, renderLanes);\n  var newValue = readContext(context);\n\n  {\n    markComponentRenderStarted(workInProgress);\n  }\n\n  var newChildren;\n\n  {\n    ReactCurrentOwner$1.current = workInProgress;\n    setIsRendering(true);\n    newChildren = render(newValue);\n    setIsRendering(false);\n  }\n\n  {\n    markComponentRenderStopped();\n  } // React DevTools reads this flag.\n\n\n  workInProgress.flags |= PerformedWork;\n  reconcileChildren(current, workInProgress, newChildren, renderLanes);\n  return workInProgress.child;\n}\n\nfunction markWorkInProgressReceivedUpdate() {\n  didReceiveUpdate = true;\n}\n\nfunction resetSuspendedCurrentOnMountInLegacyMode(current, workInProgress) {\n  if ((workInProgress.mode & ConcurrentMode) === NoMode) {\n    if (current !== null) {\n      // A lazy component only mounts if it suspended inside a non-\n      // concurrent tree, in an inconsistent state. We want to treat it like\n      // a new mount, even though an empty version of it already committed.\n      // Disconnect the alternate pointers.\n      current.alternate = null;\n      workInProgress.alternate = null; // Since this is conceptually a new fiber, schedule a Placement effect\n\n      workInProgress.flags |= Placement;\n    }\n  }\n}\n\nfunction bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes) {\n  if (current !== null) {\n    // Reuse previous dependencies\n    workInProgress.dependencies = current.dependencies;\n  }\n\n  {\n    // Don't update \"base\" render times for bailouts.\n    stopProfilerTimerIfRunning();\n  }\n\n  markSkippedUpdateLanes(workInProgress.lanes); // Check if the children have any pending work.\n\n  if (!includesSomeLane(renderLanes, workInProgress.childLanes)) {\n    // The children don't have any work either. We can skip them.\n    // TODO: Once we add back resuming, we should check if the children are\n    // a work-in-progress set. If so, we need to transfer their effects.\n    {\n      return null;\n    }\n  } // This fiber doesn't have work, but its subtree does. Clone the child\n  // fibers and continue.\n\n\n  cloneChildFibers(current, workInProgress);\n  return workInProgress.child;\n}\n\nfunction remountFiber(current, oldWorkInProgress, newWorkInProgress) {\n  {\n    var returnFiber = oldWorkInProgress.return;\n\n    if (returnFiber === null) {\n      // eslint-disable-next-line react-internal/prod-error-codes\n      throw new Error('Cannot swap the root fiber.');\n    } // Disconnect from the old current.\n    // It will get deleted.\n\n\n    current.alternate = null;\n    oldWorkInProgress.alternate = null; // Connect to the new tree.\n\n    newWorkInProgress.index = oldWorkInProgress.index;\n    newWorkInProgress.sibling = oldWorkInProgress.sibling;\n    newWorkInProgress.return = oldWorkInProgress.return;\n    newWorkInProgress.ref = oldWorkInProgress.ref; // Replace the child/sibling pointers above it.\n\n    if (oldWorkInProgress === returnFiber.child) {\n      returnFiber.child = newWorkInProgress;\n    } else {\n      var prevSibling = returnFiber.child;\n\n      if (prevSibling === null) {\n        // eslint-disable-next-line react-internal/prod-error-codes\n        throw new Error('Expected parent to have a child.');\n      }\n\n      while (prevSibling.sibling !== oldWorkInProgress) {\n        prevSibling = prevSibling.sibling;\n\n        if (prevSibling === null) {\n          // eslint-disable-next-line react-internal/prod-error-codes\n          throw new Error('Expected to find the previous sibling.');\n        }\n      }\n\n      prevSibling.sibling = newWorkInProgress;\n    } // Delete the old fiber and place the new one.\n    // Since the old fiber is disconnected, we have to schedule it manually.\n\n\n    var deletions = returnFiber.deletions;\n\n    if (deletions === null) {\n      returnFiber.deletions = [current];\n      returnFiber.flags |= ChildDeletion;\n    } else {\n      deletions.push(current);\n    }\n\n    newWorkInProgress.flags |= Placement; // Restart work from the new fiber.\n\n    return newWorkInProgress;\n  }\n}\n\nfunction checkScheduledUpdateOrContext(current, renderLanes) {\n  // Before performing an early bailout, we must check if there are pending\n  // updates or context.\n  var updateLanes = current.lanes;\n\n  if (includesSomeLane(updateLanes, renderLanes)) {\n    return true;\n  } // No pending update, but because context is propagated lazily, we need\n\n  return false;\n}\n\nfunction attemptEarlyBailoutIfNoScheduledUpdate(current, workInProgress, renderLanes) {\n  // This fiber does not have any pending work. Bailout without entering\n  // the begin phase. There's still some bookkeeping we that needs to be done\n  // in this optimized path, mostly pushing stuff onto the stack.\n  switch (workInProgress.tag) {\n    case HostRoot:\n      pushHostRootContext(workInProgress);\n      var root = workInProgress.stateNode;\n\n      resetHydrationState();\n      break;\n\n    case HostComponent:\n      pushHostContext(workInProgress);\n      break;\n\n    case ClassComponent:\n      {\n        var Component = workInProgress.type;\n\n        if (isContextProvider(Component)) {\n          pushContextProvider(workInProgress);\n        }\n\n        break;\n      }\n\n    case HostPortal:\n      pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);\n      break;\n\n    case ContextProvider:\n      {\n        var newValue = workInProgress.memoizedProps.value;\n        var context = workInProgress.type._context;\n        pushProvider(workInProgress, context, newValue);\n        break;\n      }\n\n    case Profiler:\n      {\n        // Profiler should only call onRender when one of its descendants actually rendered.\n        var hasChildWork = includesSomeLane(renderLanes, workInProgress.childLanes);\n\n        if (hasChildWork) {\n          workInProgress.flags |= Update;\n        }\n\n        {\n          // Reset effect durations for the next eventual effect phase.\n          // These are reset during render to allow the DevTools commit hook a chance to read them,\n          var stateNode = workInProgress.stateNode;\n          stateNode.effectDuration = 0;\n          stateNode.passiveEffectDuration = 0;\n        }\n      }\n\n      break;\n\n    case SuspenseComponent:\n      {\n        var state = workInProgress.memoizedState;\n\n        if (state !== null) {\n          if (state.dehydrated !== null) {\n            pushSuspenseContext(workInProgress, setDefaultShallowSuspenseContext(suspenseStackCursor.current)); // We know that this component will suspend again because if it has\n            // been unsuspended it has committed as a resolved Suspense component.\n            // If it needs to be retried, it should have work scheduled on it.\n\n            workInProgress.flags |= DidCapture; // We should never render the children of a dehydrated boundary until we\n            // upgrade it. We return null instead of bailoutOnAlreadyFinishedWork.\n\n            return null;\n          } // If this boundary is currently timed out, we need to decide\n          // whether to retry the primary children, or to skip over it and\n          // go straight to the fallback. Check the priority of the primary\n          // child fragment.\n\n\n          var primaryChildFragment = workInProgress.child;\n          var primaryChildLanes = primaryChildFragment.childLanes;\n\n          if (includesSomeLane(renderLanes, primaryChildLanes)) {\n            // The primary children have pending work. Use the normal path\n            // to attempt to render the primary children again.\n            return updateSuspenseComponent(current, workInProgress, renderLanes);\n          } else {\n            // The primary child fragment does not have pending work marked\n            // on it\n            pushSuspenseContext(workInProgress, setDefaultShallowSuspenseContext(suspenseStackCursor.current)); // The primary children do not have pending work with sufficient\n            // priority. Bailout.\n\n            var child = bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n\n            if (child !== null) {\n              // The fallback children have pending work. Skip over the\n              // primary children and work on the fallback.\n              return child.sibling;\n            } else {\n              // Note: We can return `null` here because we already checked\n              // whether there were nested context consumers, via the call to\n              // `bailoutOnAlreadyFinishedWork` above.\n              return null;\n            }\n          }\n        } else {\n          pushSuspenseContext(workInProgress, setDefaultShallowSuspenseContext(suspenseStackCursor.current));\n        }\n\n        break;\n      }\n\n    case SuspenseListComponent:\n      {\n        var didSuspendBefore = (current.flags & DidCapture) !== NoFlags;\n\n        var _hasChildWork = includesSomeLane(renderLanes, workInProgress.childLanes);\n\n        if (didSuspendBefore) {\n          if (_hasChildWork) {\n            // If something was in fallback state last time, and we have all the\n            // same children then we're still in progressive loading state.\n            // Something might get unblocked by state updates or retries in the\n            // tree which will affect the tail. So we need to use the normal\n            // path to compute the correct tail.\n            return updateSuspenseListComponent(current, workInProgress, renderLanes);\n          } // If none of the children had any work, that means that none of\n          // them got retried so they'll still be blocked in the same way\n          // as before. We can fast bail out.\n\n\n          workInProgress.flags |= DidCapture;\n        } // If nothing suspended before and we're rendering the same children,\n        // then the tail doesn't matter. Anything new that suspends will work\n        // in the \"together\" mode, so we can continue from the state we had.\n\n\n        var renderState = workInProgress.memoizedState;\n\n        if (renderState !== null) {\n          // Reset to the \"together\" mode in case we've started a different\n          // update in the past but didn't complete it.\n          renderState.rendering = null;\n          renderState.tail = null;\n          renderState.lastEffect = null;\n        }\n\n        pushSuspenseContext(workInProgress, suspenseStackCursor.current);\n\n        if (_hasChildWork) {\n          break;\n        } else {\n          // If none of the children had any work, that means that none of\n          // them got retried so they'll still be blocked in the same way\n          // as before. We can fast bail out.\n          return null;\n        }\n      }\n\n    case OffscreenComponent:\n    case LegacyHiddenComponent:\n      {\n        // Need to check if the tree still needs to be deferred. This is\n        // almost identical to the logic used in the normal update path,\n        // so we'll just enter that. The only difference is we'll bail out\n        // at the next level instead of this one, because the child props\n        // have not changed. Which is fine.\n        // TODO: Probably should refactor `beginWork` to split the bailout\n        // path from the normal path. I'm tempted to do a labeled break here\n        // but I won't :)\n        workInProgress.lanes = NoLanes;\n        return updateOffscreenComponent(current, workInProgress, renderLanes);\n      }\n  }\n\n  return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);\n}\n\nfunction beginWork(current, workInProgress, renderLanes) {\n  {\n    if (workInProgress._debugNeedsRemount && current !== null) {\n      // This will restart the begin phase with a new fiber.\n      return remountFiber(current, workInProgress, createFiberFromTypeAndProps(workInProgress.type, workInProgress.key, workInProgress.pendingProps, workInProgress._debugOwner || null, workInProgress.mode, workInProgress.lanes));\n    }\n  }\n\n  if (current !== null) {\n    var oldProps = current.memoizedProps;\n    var newProps = workInProgress.pendingProps;\n\n    if (oldProps !== newProps || hasContextChanged() || ( // Force a re-render if the implementation changed due to hot reload:\n     workInProgress.type !== current.type )) {\n      // If props or context changed, mark the fiber as having performed work.\n      // This may be unset if the props are determined to be equal later (memo).\n      didReceiveUpdate = true;\n    } else {\n      // Neither props nor legacy context changes. Check if there's a pending\n      // update or context change.\n      var hasScheduledUpdateOrContext = checkScheduledUpdateOrContext(current, renderLanes);\n\n      if (!hasScheduledUpdateOrContext && // If this is the second pass of an error or suspense boundary, there\n      // may not be work scheduled on `current`, so we check for this flag.\n      (workInProgress.flags & DidCapture) === NoFlags) {\n        // No pending updates or context. Bail out now.\n        didReceiveUpdate = false;\n        return attemptEarlyBailoutIfNoScheduledUpdate(current, workInProgress, renderLanes);\n      }\n\n      if ((current.flags & ForceUpdateForLegacySuspense) !== NoFlags) {\n        // This is a special case that only exists for legacy mode.\n        // See https://github.com/facebook/react/pull/19216.\n        didReceiveUpdate = true;\n      } else {\n        // An update was scheduled on this fiber, but there are no new props\n        // nor legacy context. Set this to false. If an update queue or context\n        // consumer produces a changed value, it will set this to true. Otherwise,\n        // the component will assume the children have not changed and bail out.\n        didReceiveUpdate = false;\n      }\n    }\n  } else {\n    didReceiveUpdate = false;\n\n    if (getIsHydrating() && isForkedChild(workInProgress)) {\n      // Check if this child belongs to a list of muliple children in\n      // its parent.\n      //\n      // In a true multi-threaded implementation, we would render children on\n      // parallel threads. This would represent the beginning of a new render\n      // thread for this subtree.\n      //\n      // We only use this for id generation during hydration, which is why the\n      // logic is located in this special branch.\n      var slotIndex = workInProgress.index;\n      var numberOfForks = getForksAtLevel();\n      pushTreeId(workInProgress, numberOfForks, slotIndex);\n    }\n  } // Before entering the begin phase, clear pending update priority.\n  // TODO: This assumes that we're about to evaluate the component and process\n  // the update queue. However, there's an exception: SimpleMemoComponent\n  // sometimes bails out later in the begin phase. This indicates that we should\n  // move this assignment out of the common path and into each branch.\n\n\n  workInProgress.lanes = NoLanes;\n\n  switch (workInProgress.tag) {\n    case IndeterminateComponent:\n      {\n        return mountIndeterminateComponent(current, workInProgress, workInProgress.type, renderLanes);\n      }\n\n    case LazyComponent:\n      {\n        var elementType = workInProgress.elementType;\n        return mountLazyComponent(current, workInProgress, elementType, renderLanes);\n      }\n\n    case FunctionComponent:\n      {\n        var Component = workInProgress.type;\n        var unresolvedProps = workInProgress.pendingProps;\n        var resolvedProps = workInProgress.elementType === Component ? unresolvedProps : resolveDefaultProps(Component, unresolvedProps);\n        return updateFunctionComponent(current, workInProgress, Component, resolvedProps, renderLanes);\n      }\n\n    case ClassComponent:\n      {\n        var _Component = workInProgress.type;\n        var _unresolvedProps = workInProgress.pendingProps;\n\n        var _resolvedProps = workInProgress.elementType === _Component ? _unresolvedProps : resolveDefaultProps(_Component, _unresolvedProps);\n\n        return updateClassComponent(current, workInProgress, _Component, _resolvedProps, renderLanes);\n      }\n\n    case HostRoot:\n      return updateHostRoot(current, workInProgress, renderLanes);\n\n    case HostComponent:\n      return updateHostComponent(current, workInProgress, renderLanes);\n\n    case HostText:\n      return updateHostText(current, workInProgress);\n\n    case SuspenseComponent:\n      return updateSuspenseComponent(current, workInProgress, renderLanes);\n\n    case HostPortal:\n      return updatePortalComponent(current, workInProgress, renderLanes);\n\n    case ForwardRef:\n      {\n        var type = workInProgress.type;\n        var _unresolvedProps2 = workInProgress.pendingProps;\n\n        var _resolvedProps2 = workInProgress.elementType === type ? _unresolvedProps2 : resolveDefaultProps(type, _unresolvedProps2);\n\n        return updateForwardRef(current, workInProgress, type, _resolvedProps2, renderLanes);\n      }\n\n    case Fragment:\n      return updateFragment(current, workInProgress, renderLanes);\n\n    case Mode:\n      return updateMode(current, workInProgress, renderLanes);\n\n    case Profiler:\n      return updateProfiler(current, workInProgress, renderLanes);\n\n    case ContextProvider:\n      return updateContextProvider(current, workInProgress, renderLanes);\n\n    case ContextConsumer:\n      return updateContextConsumer(current, workInProgress, renderLanes);\n\n    case MemoComponent:\n      {\n        var _type2 = workInProgress.type;\n        var _unresolvedProps3 = workInProgress.pendingProps; // Resolve outer props first, then resolve inner props.\n\n        var _resolvedProps3 = resolveDefaultProps(_type2, _unresolvedProps3);\n\n        {\n          if (workInProgress.type !== workInProgress.elementType) {\n            var outerPropTypes = _type2.propTypes;\n\n            if (outerPropTypes) {\n              checkPropTypes(outerPropTypes, _resolvedProps3, // Resolved for outer only\n              'prop', getComponentNameFromType(_type2));\n            }\n          }\n        }\n\n        _resolvedProps3 = resolveDefaultProps(_type2.type, _resolvedProps3);\n        return updateMemoComponent(current, workInProgress, _type2, _resolvedProps3, renderLanes);\n      }\n\n    case SimpleMemoComponent:\n      {\n        return updateSimpleMemoComponent(current, workInProgress, workInProgress.type, workInProgress.pendingProps, renderLanes);\n      }\n\n    case IncompleteClassComponent:\n      {\n        var _Component2 = workInProgress.type;\n        var _unresolvedProps4 = workInProgress.pendingProps;\n\n        var _resolvedProps4 = workInProgress.elementType === _Component2 ? _unresolvedProps4 : resolveDefaultProps(_Component2, _unresolvedProps4);\n\n        return mountIncompleteClassComponent(current, workInProgress, _Component2, _resolvedProps4, renderLanes);\n      }\n\n    case SuspenseListComponent:\n      {\n        return updateSuspenseListComponent(current, workInProgress, renderLanes);\n      }\n\n    case ScopeComponent:\n      {\n\n        break;\n      }\n\n    case OffscreenComponent:\n      {\n        return updateOffscreenComponent(current, workInProgress, renderLanes);\n      }\n  }\n\n  throw new Error(\"Unknown unit of work tag (\" + workInProgress.tag + \"). This error is likely caused by a bug in \" + 'React. Please file an issue.');\n}\n\nfunction markUpdate(workInProgress) {\n  // Tag the fiber with an update effect. This turns a Placement into\n  // a PlacementAndUpdate.\n  workInProgress.flags |= Update;\n}\n\nfunction markRef$1(workInProgress) {\n  workInProgress.flags |= Ref;\n\n  {\n    workInProgress.flags |= RefStatic;\n  }\n}\n\nvar appendAllChildren;\nvar updateHostContainer;\nvar updateHostComponent$1;\nvar updateHostText$1;\n\n{\n  // Mutation mode\n  appendAllChildren = function (parent, workInProgress, needsVisibilityToggle, isHidden) {\n    // We only have the top Fiber that was created but we need recurse down its\n    // children to find all the terminal nodes.\n    var node = workInProgress.child;\n\n    while (node !== null) {\n      if (node.tag === HostComponent || node.tag === HostText) {\n        appendInitialChild(parent, node.stateNode);\n      } else if (node.tag === HostPortal) ; else if (node.child !== null) {\n        node.child.return = node;\n        node = node.child;\n        continue;\n      }\n\n      if (node === workInProgress) {\n        return;\n      }\n\n      while (node.sibling === null) {\n        if (node.return === null || node.return === workInProgress) {\n          return;\n        }\n\n        node = node.return;\n      }\n\n      node.sibling.return = node.return;\n      node = node.sibling;\n    }\n  };\n\n  updateHostContainer = function (current, workInProgress) {// Noop\n  };\n\n  updateHostComponent$1 = function (current, workInProgress, type, newProps, rootContainerInstance) {\n    // If we have an alternate, that means this is an update and we need to\n    // schedule a side-effect to do the updates.\n    var oldProps = current.memoizedProps;\n\n    if (oldProps === newProps) {\n      // In mutation mode, this is sufficient for a bailout because\n      // we won't touch this node even if children changed.\n      return;\n    } // If we get updated because one of our children updated, we don't\n    // have newProps so we'll have to reuse them.\n    // TODO: Split the update API as separate for the props vs. children.\n    // Even better would be if children weren't special cased at all tho.\n\n\n    var instance = workInProgress.stateNode;\n    var currentHostContext = getHostContext(); // TODO: Experiencing an error where oldProps is null. Suggests a host\n    // component is hitting the resume path. Figure out why. Possibly\n    // related to `hidden`.\n\n    var updatePayload = prepareUpdate(instance, type, oldProps, newProps, rootContainerInstance, currentHostContext); // TODO: Type this specific to this type of component.\n\n    workInProgress.updateQueue = updatePayload; // If the update payload indicates that there is a change or if there\n    // is a new ref we mark this as an update. All the work is done in commitWork.\n\n    if (updatePayload) {\n      markUpdate(workInProgress);\n    }\n  };\n\n  updateHostText$1 = function (current, workInProgress, oldText, newText) {\n    // If the text differs, mark it as an update. All the work in done in commitWork.\n    if (oldText !== newText) {\n      markUpdate(workInProgress);\n    }\n  };\n}\n\nfunction cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {\n  if (getIsHydrating()) {\n    // If we're hydrating, we should consume as many items as we can\n    // so we don't leave any behind.\n    return;\n  }\n\n  switch (renderState.tailMode) {\n    case 'hidden':\n      {\n        // Any insertions at the end of the tail list after this point\n        // should be invisible. If there are already mounted boundaries\n        // anything before them are not considered for collapsing.\n        // Therefore we need to go through the whole tail to find if\n        // there are any.\n        var tailNode = renderState.tail;\n        var lastTailNode = null;\n\n        while (tailNode !== null) {\n          if (tailNode.alternate !== null) {\n            lastTailNode = tailNode;\n          }\n\n          tailNode = tailNode.sibling;\n        } // Next we're simply going to delete all insertions after the\n        // last rendered item.\n\n\n        if (lastTailNode === null) {\n          // All remaining items in the tail are insertions.\n          renderState.tail = null;\n        } else {\n          // Detach the insertion after the last node that was already\n          // inserted.\n          lastTailNode.sibling = null;\n        }\n\n        break;\n      }\n\n    case 'collapsed':\n      {\n        // Any insertions at the end of the tail list after this point\n        // should be invisible. If there are already mounted boundaries\n        // anything before them are not considered for collapsing.\n        // Therefore we need to go through the whole tail to find if\n        // there are any.\n        var _tailNode = renderState.tail;\n        var _lastTailNode = null;\n\n        while (_tailNode !== null) {\n          if (_tailNode.alternate !== null) {\n            _lastTailNode = _tailNode;\n          }\n\n          _tailNode = _tailNode.sibling;\n        } // Next we're simply going to delete all insertions after the\n        // last rendered item.\n\n\n        if (_lastTailNode === null) {\n          // All remaining items in the tail are insertions.\n          if (!hasRenderedATailFallback && renderState.tail !== null) {\n            // We suspended during the head. We want to show at least one\n            // row at the tail. So we'll keep on and cut off the rest.\n            renderState.tail.sibling = null;\n          } else {\n            renderState.tail = null;\n          }\n        } else {\n          // Detach the insertion after the last node that was already\n          // inserted.\n          _lastTailNode.sibling = null;\n        }\n\n        break;\n      }\n  }\n}\n\nfunction bubbleProperties(completedWork) {\n  var didBailout = completedWork.alternate !== null && completedWork.alternate.child === completedWork.child;\n  var newChildLanes = NoLanes;\n  var subtreeFlags = NoFlags;\n\n  if (!didBailout) {\n    // Bubble up the earliest expiration time.\n    if ( (completedWork.mode & ProfileMode) !== NoMode) {\n      // In profiling mode, resetChildExpirationTime is also used to reset\n      // profiler durations.\n      var actualDuration = completedWork.actualDuration;\n      var treeBaseDuration = completedWork.selfBaseDuration;\n      var child = completedWork.child;\n\n      while (child !== null) {\n        newChildLanes = mergeLanes(newChildLanes, mergeLanes(child.lanes, child.childLanes));\n        subtreeFlags |= child.subtreeFlags;\n        subtreeFlags |= child.flags; // When a fiber is cloned, its actualDuration is reset to 0. This value will\n        // only be updated if work is done on the fiber (i.e. it doesn't bailout).\n        // When work is done, it should bubble to the parent's actualDuration. If\n        // the fiber has not been cloned though, (meaning no work was done), then\n        // this value will reflect the amount of time spent working on a previous\n        // render. In that case it should not bubble. We determine whether it was\n        // cloned by comparing the child pointer.\n\n        actualDuration += child.actualDuration;\n        treeBaseDuration += child.treeBaseDuration;\n        child = child.sibling;\n      }\n\n      completedWork.actualDuration = actualDuration;\n      completedWork.treeBaseDuration = treeBaseDuration;\n    } else {\n      var _child = completedWork.child;\n\n      while (_child !== null) {\n        newChildLanes = mergeLanes(newChildLanes, mergeLanes(_child.lanes, _child.childLanes));\n        subtreeFlags |= _child.subtreeFlags;\n        subtreeFlags |= _child.flags; // Update the return pointer so the tree is consistent. This is a code\n        // smell because it assumes the commit phase is never concurrent with\n        // the render phase. Will address during refactor to alternate model.\n\n        _child.return = completedWork;\n        _child = _child.sibling;\n      }\n    }\n\n    completedWork.subtreeFlags |= subtreeFlags;\n  } else {\n    // Bubble up the earliest expiration time.\n    if ( (completedWork.mode & ProfileMode) !== NoMode) {\n      // In profiling mode, resetChildExpirationTime is also used to reset\n      // profiler durations.\n      var _treeBaseDuration = completedWork.selfBaseDuration;\n      var _child2 = completedWork.child;\n\n      while (_child2 !== null) {\n        newChildLanes = mergeLanes(newChildLanes, mergeLanes(_child2.lanes, _child2.childLanes)); // \"Static\" flags share the lifetime of the fiber/hook they belong to,\n        // so we should bubble those up even during a bailout. All the other\n        // flags have a lifetime only of a single render + commit, so we should\n        // ignore them.\n\n        subtreeFlags |= _child2.subtreeFlags & StaticMask;\n        subtreeFlags |= _child2.flags & StaticMask;\n        _treeBaseDuration += _child2.treeBaseDuration;\n        _child2 = _child2.sibling;\n      }\n\n      completedWork.treeBaseDuration = _treeBaseDuration;\n    } else {\n      var _child3 = completedWork.child;\n\n      while (_child3 !== null) {\n        newChildLanes = mergeLanes(newChildLanes, mergeLanes(_child3.lanes, _child3.childLanes)); // \"Static\" flags share the lifetime of the fiber/hook they belong to,\n        // so we should bubble those up even during a bailout. All the other\n        // flags have a lifetime only of a single render + commit, so we should\n        // ignore them.\n\n        subtreeFlags |= _child3.subtreeFlags & StaticMask;\n        subtreeFlags |= _child3.flags & StaticMask; // Update the return pointer so the tree is consistent. This is a code\n        // smell because it assumes the commit phase is never concurrent with\n        // the render phase. Will address during refactor to alternate model.\n\n        _child3.return = completedWork;\n        _child3 = _child3.sibling;\n      }\n    }\n\n    completedWork.subtreeFlags |= subtreeFlags;\n  }\n\n  completedWork.childLanes = newChildLanes;\n  return didBailout;\n}\n\nfunction completeDehydratedSuspenseBoundary(current, workInProgress, nextState) {\n  if (hasUnhydratedTailNodes() && (workInProgress.mode & ConcurrentMode) !== NoMode && (workInProgress.flags & DidCapture) === NoFlags) {\n    warnIfUnhydratedTailNodes(workInProgress);\n    resetHydrationState();\n    workInProgress.flags |= ForceClientRender | Incomplete | ShouldCapture;\n    return false;\n  }\n\n  var wasHydrated = popHydrationState(workInProgress);\n\n  if (nextState !== null && nextState.dehydrated !== null) {\n    // We might be inside a hydration state the first time we're picking up this\n    // Suspense boundary, and also after we've reentered it for further hydration.\n    if (current === null) {\n      if (!wasHydrated) {\n        throw new Error('A dehydrated suspense component was completed without a hydrated node. ' + 'This is probably a bug in React.');\n      }\n\n      prepareToHydrateHostSuspenseInstance(workInProgress);\n      bubbleProperties(workInProgress);\n\n      {\n        if ((workInProgress.mode & ProfileMode) !== NoMode) {\n          var isTimedOutSuspense = nextState !== null;\n\n          if (isTimedOutSuspense) {\n            // Don't count time spent in a timed out Suspense subtree as part of the base duration.\n            var primaryChildFragment = workInProgress.child;\n\n            if (primaryChildFragment !== null) {\n              // $FlowFixMe Flow doesn't support type casting in combination with the -= operator\n              workInProgress.treeBaseDuration -= primaryChildFragment.treeBaseDuration;\n            }\n          }\n        }\n      }\n\n      return false;\n    } else {\n      // We might have reentered this boundary to hydrate it. If so, we need to reset the hydration\n      // state since we're now exiting out of it. popHydrationState doesn't do that for us.\n      resetHydrationState();\n\n      if ((workInProgress.flags & DidCapture) === NoFlags) {\n        // This boundary did not suspend so it's now hydrated and unsuspended.\n        workInProgress.memoizedState = null;\n      } // If nothing suspended, we need to schedule an effect to mark this boundary\n      // as having hydrated so events know that they're free to be invoked.\n      // It's also a signal to replay events and the suspense callback.\n      // If something suspended, schedule an effect to attach retry listeners.\n      // So we might as well always mark this.\n\n\n      workInProgress.flags |= Update;\n      bubbleProperties(workInProgress);\n\n      {\n        if ((workInProgress.mode & ProfileMode) !== NoMode) {\n          var _isTimedOutSuspense = nextState !== null;\n\n          if (_isTimedOutSuspense) {\n            // Don't count time spent in a timed out Suspense subtree as part of the base duration.\n            var _primaryChildFragment = workInProgress.child;\n\n            if (_primaryChildFragment !== null) {\n              // $FlowFixMe Flow doesn't support type casting in combination with the -= operator\n              workInProgress.treeBaseDuration -= _primaryChildFragment.treeBaseDuration;\n            }\n          }\n        }\n      }\n\n      return false;\n    }\n  } else {\n    // Successfully completed this tree. If this was a forced client render,\n    // there may have been recoverable errors during first hydration\n    // attempt. If so, add them to a queue so we can log them in the\n    // commit phase.\n    upgradeHydrationErrorsToRecoverable(); // Fall through to normal Suspense path\n\n    return true;\n  }\n}\n\nfunction completeWork(current, workInProgress, renderLanes) {\n  var newProps = workInProgress.pendingProps; // Note: This intentionally doesn't check if we're hydrating because comparing\n  // to the current tree provider fiber is just as fast and less error-prone.\n  // Ideally we would have a special version of the work loop only\n  // for hydration.\n\n  popTreeContext(workInProgress);\n\n  switch (workInProgress.tag) {\n    case IndeterminateComponent:\n    case LazyComponent:\n    case SimpleMemoComponent:\n    case FunctionComponent:\n    case ForwardRef:\n    case Fragment:\n    case Mode:\n    case Profiler:\n    case ContextConsumer:\n    case MemoComponent:\n      bubbleProperties(workInProgress);\n      return null;\n\n    case ClassComponent:\n      {\n        var Component = workInProgress.type;\n\n        if (isContextProvider(Component)) {\n          popContext(workInProgress);\n        }\n\n        bubbleProperties(workInProgress);\n        return null;\n      }\n\n    case HostRoot:\n      {\n        var fiberRoot = workInProgress.stateNode;\n        popHostContainer(workInProgress);\n        popTopLevelContextObject(workInProgress);\n        resetWorkInProgressVersions();\n\n        if (fiberRoot.pendingContext) {\n          fiberRoot.context = fiberRoot.pendingContext;\n          fiberRoot.pendingContext = null;\n        }\n\n        if (current === null || current.child === null) {\n          // If we hydrated, pop so that we can delete any remaining children\n          // that weren't hydrated.\n          var wasHydrated = popHydrationState(workInProgress);\n\n          if (wasHydrated) {\n            // If we hydrated, then we'll need to schedule an update for\n            // the commit side-effects on the root.\n            markUpdate(workInProgress);\n          } else {\n            if (current !== null) {\n              var prevState = current.memoizedState;\n\n              if ( // Check if this is a client root\n              !prevState.isDehydrated || // Check if we reverted to client rendering (e.g. due to an error)\n              (workInProgress.flags & ForceClientRender) !== NoFlags) {\n                // Schedule an effect to clear this container at the start of the\n                // next commit. This handles the case of React rendering into a\n                // container with previous children. It's also safe to do for\n                // updates too, because current.child would only be null if the\n                // previous render was null (so the container would already\n                // be empty).\n                workInProgress.flags |= Snapshot; // If this was a forced client render, there may have been\n                // recoverable errors during first hydration attempt. If so, add\n                // them to a queue so we can log them in the commit phase.\n\n                upgradeHydrationErrorsToRecoverable();\n              }\n            }\n          }\n        }\n\n        updateHostContainer(current, workInProgress);\n        bubbleProperties(workInProgress);\n\n        return null;\n      }\n\n    case HostComponent:\n      {\n        popHostContext(workInProgress);\n        var rootContainerInstance = getRootHostContainer();\n        var type = workInProgress.type;\n\n        if (current !== null && workInProgress.stateNode != null) {\n          updateHostComponent$1(current, workInProgress, type, newProps, rootContainerInstance);\n\n          if (current.ref !== workInProgress.ref) {\n            markRef$1(workInProgress);\n          }\n        } else {\n          if (!newProps) {\n            if (workInProgress.stateNode === null) {\n              throw new Error('We must have new props for new mounts. This error is likely ' + 'caused by a bug in React. Please file an issue.');\n            } // This can happen when we abort work.\n\n\n            bubbleProperties(workInProgress);\n            return null;\n          }\n\n          var currentHostContext = getHostContext(); // TODO: Move createInstance to beginWork and keep it on a context\n          // \"stack\" as the parent. Then append children as we go in beginWork\n          // or completeWork depending on whether we want to add them top->down or\n          // bottom->up. Top->down is faster in IE11.\n\n          var _wasHydrated = popHydrationState(workInProgress);\n\n          if (_wasHydrated) {\n            // TODO: Move this and createInstance step into the beginPhase\n            // to consolidate.\n            if (prepareToHydrateHostInstance(workInProgress, rootContainerInstance, currentHostContext)) {\n              // If changes to the hydrated node need to be applied at the\n              // commit-phase we mark this as such.\n              markUpdate(workInProgress);\n            }\n          } else {\n            var instance = createInstance(type, newProps, rootContainerInstance, currentHostContext, workInProgress);\n            appendAllChildren(instance, workInProgress, false, false);\n            workInProgress.stateNode = instance; // Certain renderers require commit-time effects for initial mount.\n            // (eg DOM renderer supports auto-focus for certain elements).\n            // Make sure such renderers get scheduled for later work.\n\n            if (finalizeInitialChildren(instance, type, newProps, rootContainerInstance)) {\n              markUpdate(workInProgress);\n            }\n          }\n\n          if (workInProgress.ref !== null) {\n            // If there is a ref on a host node we need to schedule a callback\n            markRef$1(workInProgress);\n          }\n        }\n\n        bubbleProperties(workInProgress);\n        return null;\n      }\n\n    case HostText:\n      {\n        var newText = newProps;\n\n        if (current && workInProgress.stateNode != null) {\n          var oldText = current.memoizedProps; // If we have an alternate, that means this is an update and we need\n          // to schedule a side-effect to do the updates.\n\n          updateHostText$1(current, workInProgress, oldText, newText);\n        } else {\n          if (typeof newText !== 'string') {\n            if (workInProgress.stateNode === null) {\n              throw new Error('We must have new props for new mounts. This error is likely ' + 'caused by a bug in React. Please file an issue.');\n            } // This can happen when we abort work.\n\n          }\n\n          var _rootContainerInstance = getRootHostContainer();\n\n          var _currentHostContext = getHostContext();\n\n          var _wasHydrated2 = popHydrationState(workInProgress);\n\n          if (_wasHydrated2) {\n            if (prepareToHydrateHostTextInstance(workInProgress)) {\n              markUpdate(workInProgress);\n            }\n          } else {\n            workInProgress.stateNode = createTextInstance(newText, _rootContainerInstance, _currentHostContext, workInProgress);\n          }\n        }\n\n        bubbleProperties(workInProgress);\n        return null;\n      }\n\n    case SuspenseComponent:\n      {\n        popSuspenseContext(workInProgress);\n        var nextState = workInProgress.memoizedState; // Special path for dehydrated boundaries. We may eventually move this\n        // to its own fiber type so that we can add other kinds of hydration\n        // boundaries that aren't associated with a Suspense tree. In anticipation\n        // of such a refactor, all the hydration logic is contained in\n        // this branch.\n\n        if (current === null || current.memoizedState !== null && current.memoizedState.dehydrated !== null) {\n          var fallthroughToNormalSuspensePath = completeDehydratedSuspenseBoundary(current, workInProgress, nextState);\n\n          if (!fallthroughToNormalSuspensePath) {\n            if (workInProgress.flags & ShouldCapture) {\n              // Special case. There were remaining unhydrated nodes. We treat\n              // this as a mismatch. Revert to client rendering.\n              return workInProgress;\n            } else {\n              // Did not finish hydrating, either because this is the initial\n              // render or because something suspended.\n              return null;\n            }\n          } // Continue with the normal Suspense path.\n\n        }\n\n        if ((workInProgress.flags & DidCapture) !== NoFlags) {\n          // Something suspended. Re-render with the fallback children.\n          workInProgress.lanes = renderLanes; // Do not reset the effect list.\n\n          if ( (workInProgress.mode & ProfileMode) !== NoMode) {\n            transferActualDuration(workInProgress);\n          } // Don't bubble properties in this case.\n\n\n          return workInProgress;\n        }\n\n        var nextDidTimeout = nextState !== null;\n        var prevDidTimeout = current !== null && current.memoizedState !== null;\n        // a passive effect, which is when we process the transitions\n\n\n        if (nextDidTimeout !== prevDidTimeout) {\n          // an effect to toggle the subtree's visibility. When we switch from\n          // fallback -> primary, the inner Offscreen fiber schedules this effect\n          // as part of its normal complete phase. But when we switch from\n          // primary -> fallback, the inner Offscreen fiber does not have a complete\n          // phase. So we need to schedule its effect here.\n          //\n          // We also use this flag to connect/disconnect the effects, but the same\n          // logic applies: when re-connecting, the Offscreen fiber's complete\n          // phase will handle scheduling the effect. It's only when the fallback\n          // is active that we have to do anything special.\n\n\n          if (nextDidTimeout) {\n            var _offscreenFiber2 = workInProgress.child;\n            _offscreenFiber2.flags |= Visibility; // TODO: This will still suspend a synchronous tree if anything\n            // in the concurrent tree already suspended during this render.\n            // This is a known bug.\n\n            if ((workInProgress.mode & ConcurrentMode) !== NoMode) {\n              // TODO: Move this back to throwException because this is too late\n              // if this is a large tree which is common for initial loads. We\n              // don't know if we should restart a render or not until we get\n              // this marker, and this is too late.\n              // If this render already had a ping or lower pri updates,\n              // and this is the first time we know we're going to suspend we\n              // should be able to immediately restart from within throwException.\n              var hasInvisibleChildContext = current === null && (workInProgress.memoizedProps.unstable_avoidThisFallback !== true || !enableSuspenseAvoidThisFallback);\n\n              if (hasInvisibleChildContext || hasSuspenseContext(suspenseStackCursor.current, InvisibleParentSuspenseContext)) {\n                // If this was in an invisible tree or a new render, then showing\n                // this boundary is ok.\n                renderDidSuspend();\n              } else {\n                // Otherwise, we're going to have to hide content so we should\n                // suspend for longer if possible.\n                renderDidSuspendDelayIfPossible();\n              }\n            }\n          }\n        }\n\n        var wakeables = workInProgress.updateQueue;\n\n        if (wakeables !== null) {\n          // Schedule an effect to attach a retry listener to the promise.\n          // TODO: Move to passive phase\n          workInProgress.flags |= Update;\n        }\n\n        bubbleProperties(workInProgress);\n\n        {\n          if ((workInProgress.mode & ProfileMode) !== NoMode) {\n            if (nextDidTimeout) {\n              // Don't count time spent in a timed out Suspense subtree as part of the base duration.\n              var primaryChildFragment = workInProgress.child;\n\n              if (primaryChildFragment !== null) {\n                // $FlowFixMe Flow doesn't support type casting in combination with the -= operator\n                workInProgress.treeBaseDuration -= primaryChildFragment.treeBaseDuration;\n              }\n            }\n          }\n        }\n\n        return null;\n      }\n\n    case HostPortal:\n      popHostContainer(workInProgress);\n      updateHostContainer(current, workInProgress);\n\n      if (current === null) {\n        preparePortalMount(workInProgress.stateNode.containerInfo);\n      }\n\n      bubbleProperties(workInProgress);\n      return null;\n\n    case ContextProvider:\n      // Pop provider fiber\n      var context = workInProgress.type._context;\n      popProvider(context, workInProgress);\n      bubbleProperties(workInProgress);\n      return null;\n\n    case IncompleteClassComponent:\n      {\n        // Same as class component case. I put it down here so that the tags are\n        // sequential to ensure this switch is compiled to a jump table.\n        var _Component = workInProgress.type;\n\n        if (isContextProvider(_Component)) {\n          popContext(workInProgress);\n        }\n\n        bubbleProperties(workInProgress);\n        return null;\n      }\n\n    case SuspenseListComponent:\n      {\n        popSuspenseContext(workInProgress);\n        var renderState = workInProgress.memoizedState;\n\n        if (renderState === null) {\n          // We're running in the default, \"independent\" mode.\n          // We don't do anything in this mode.\n          bubbleProperties(workInProgress);\n          return null;\n        }\n\n        var didSuspendAlready = (workInProgress.flags & DidCapture) !== NoFlags;\n        var renderedTail = renderState.rendering;\n\n        if (renderedTail === null) {\n          // We just rendered the head.\n          if (!didSuspendAlready) {\n            // This is the first pass. We need to figure out if anything is still\n            // suspended in the rendered set.\n            // If new content unsuspended, but there's still some content that\n            // didn't. Then we need to do a second pass that forces everything\n            // to keep showing their fallbacks.\n            // We might be suspended if something in this render pass suspended, or\n            // something in the previous committed pass suspended. Otherwise,\n            // there's no chance so we can skip the expensive call to\n            // findFirstSuspended.\n            var cannotBeSuspended = renderHasNotSuspendedYet() && (current === null || (current.flags & DidCapture) === NoFlags);\n\n            if (!cannotBeSuspended) {\n              var row = workInProgress.child;\n\n              while (row !== null) {\n                var suspended = findFirstSuspended(row);\n\n                if (suspended !== null) {\n                  didSuspendAlready = true;\n                  workInProgress.flags |= DidCapture;\n                  cutOffTailIfNeeded(renderState, false); // If this is a newly suspended tree, it might not get committed as\n                  // part of the second pass. In that case nothing will subscribe to\n                  // its thenables. Instead, we'll transfer its thenables to the\n                  // SuspenseList so that it can retry if they resolve.\n                  // There might be multiple of these in the list but since we're\n                  // going to wait for all of them anyway, it doesn't really matter\n                  // which ones gets to ping. In theory we could get clever and keep\n                  // track of how many dependencies remain but it gets tricky because\n                  // in the meantime, we can add/remove/change items and dependencies.\n                  // We might bail out of the loop before finding any but that\n                  // doesn't matter since that means that the other boundaries that\n                  // we did find already has their listeners attached.\n\n                  var newThenables = suspended.updateQueue;\n\n                  if (newThenables !== null) {\n                    workInProgress.updateQueue = newThenables;\n                    workInProgress.flags |= Update;\n                  } // Rerender the whole list, but this time, we'll force fallbacks\n                  // to stay in place.\n                  // Reset the effect flags before doing the second pass since that's now invalid.\n                  // Reset the child fibers to their original state.\n\n\n                  workInProgress.subtreeFlags = NoFlags;\n                  resetChildFibers(workInProgress, renderLanes); // Set up the Suspense Context to force suspense and immediately\n                  // rerender the children.\n\n                  pushSuspenseContext(workInProgress, setShallowSuspenseContext(suspenseStackCursor.current, ForceSuspenseFallback)); // Don't bubble properties in this case.\n\n                  return workInProgress.child;\n                }\n\n                row = row.sibling;\n              }\n            }\n\n            if (renderState.tail !== null && now() > getRenderTargetTime()) {\n              // We have already passed our CPU deadline but we still have rows\n              // left in the tail. We'll just give up further attempts to render\n              // the main content and only render fallbacks.\n              workInProgress.flags |= DidCapture;\n              didSuspendAlready = true;\n              cutOffTailIfNeeded(renderState, false); // Since nothing actually suspended, there will nothing to ping this\n              // to get it started back up to attempt the next item. While in terms\n              // of priority this work has the same priority as this current render,\n              // it's not part of the same transition once the transition has\n              // committed. If it's sync, we still want to yield so that it can be\n              // painted. Conceptually, this is really the same as pinging.\n              // We can use any RetryLane even if it's the one currently rendering\n              // since we're leaving it behind on this node.\n\n              workInProgress.lanes = SomeRetryLane;\n            }\n          } else {\n            cutOffTailIfNeeded(renderState, false);\n          } // Next we're going to render the tail.\n\n        } else {\n          // Append the rendered row to the child list.\n          if (!didSuspendAlready) {\n            var _suspended = findFirstSuspended(renderedTail);\n\n            if (_suspended !== null) {\n              workInProgress.flags |= DidCapture;\n              didSuspendAlready = true; // Ensure we transfer the update queue to the parent so that it doesn't\n              // get lost if this row ends up dropped during a second pass.\n\n              var _newThenables = _suspended.updateQueue;\n\n              if (_newThenables !== null) {\n                workInProgress.updateQueue = _newThenables;\n                workInProgress.flags |= Update;\n              }\n\n              cutOffTailIfNeeded(renderState, true); // This might have been modified.\n\n              if (renderState.tail === null && renderState.tailMode === 'hidden' && !renderedTail.alternate && !getIsHydrating() // We don't cut it if we're hydrating.\n              ) {\n                  // We're done.\n                  bubbleProperties(workInProgress);\n                  return null;\n                }\n            } else if ( // The time it took to render last row is greater than the remaining\n            // time we have to render. So rendering one more row would likely\n            // exceed it.\n            now() * 2 - renderState.renderingStartTime > getRenderTargetTime() && renderLanes !== OffscreenLane) {\n              // We have now passed our CPU deadline and we'll just give up further\n              // attempts to render the main content and only render fallbacks.\n              // The assumption is that this is usually faster.\n              workInProgress.flags |= DidCapture;\n              didSuspendAlready = true;\n              cutOffTailIfNeeded(renderState, false); // Since nothing actually suspended, there will nothing to ping this\n              // to get it started back up to attempt the next item. While in terms\n              // of priority this work has the same priority as this current render,\n              // it's not part of the same transition once the transition has\n              // committed. If it's sync, we still want to yield so that it can be\n              // painted. Conceptually, this is really the same as pinging.\n              // We can use any RetryLane even if it's the one currently rendering\n              // since we're leaving it behind on this node.\n\n              workInProgress.lanes = SomeRetryLane;\n            }\n          }\n\n          if (renderState.isBackwards) {\n            // The effect list of the backwards tail will have been added\n            // to the end. This breaks the guarantee that life-cycles fire in\n            // sibling order but that isn't a strong guarantee promised by React.\n            // Especially since these might also just pop in during future commits.\n            // Append to the beginning of the list.\n            renderedTail.sibling = workInProgress.child;\n            workInProgress.child = renderedTail;\n          } else {\n            var previousSibling = renderState.last;\n\n            if (previousSibling !== null) {\n              previousSibling.sibling = renderedTail;\n            } else {\n              workInProgress.child = renderedTail;\n            }\n\n            renderState.last = renderedTail;\n          }\n        }\n\n        if (renderState.tail !== null) {\n          // We still have tail rows to render.\n          // Pop a row.\n          var next = renderState.tail;\n          renderState.rendering = next;\n          renderState.tail = next.sibling;\n          renderState.renderingStartTime = now();\n          next.sibling = null; // Restore the context.\n          // TODO: We can probably just avoid popping it instead and only\n          // setting it the first time we go from not suspended to suspended.\n\n          var suspenseContext = suspenseStackCursor.current;\n\n          if (didSuspendAlready) {\n            suspenseContext = setShallowSuspenseContext(suspenseContext, ForceSuspenseFallback);\n          } else {\n            suspenseContext = setDefaultShallowSuspenseContext(suspenseContext);\n          }\n\n          pushSuspenseContext(workInProgress, suspenseContext); // Do a pass over the next row.\n          // Don't bubble properties in this case.\n\n          return next;\n        }\n\n        bubbleProperties(workInProgress);\n        return null;\n      }\n\n    case ScopeComponent:\n      {\n\n        break;\n      }\n\n    case OffscreenComponent:\n    case LegacyHiddenComponent:\n      {\n        popRenderLanes(workInProgress);\n        var _nextState = workInProgress.memoizedState;\n        var nextIsHidden = _nextState !== null;\n\n        if (current !== null) {\n          var _prevState = current.memoizedState;\n          var prevIsHidden = _prevState !== null;\n\n          if (prevIsHidden !== nextIsHidden && ( // LegacyHidden doesn't do any hiding \u2014 it only pre-renders.\n          !enableLegacyHidden )) {\n            workInProgress.flags |= Visibility;\n          }\n        }\n\n        if (!nextIsHidden || (workInProgress.mode & ConcurrentMode) === NoMode) {\n          bubbleProperties(workInProgress);\n        } else {\n          // Don't bubble properties for hidden children unless we're rendering\n          // at offscreen priority.\n          if (includesSomeLane(subtreeRenderLanes, OffscreenLane)) {\n            bubbleProperties(workInProgress);\n\n            {\n              // Check if there was an insertion or update in the hidden subtree.\n              // If so, we need to hide those nodes in the commit phase, so\n              // schedule a visibility effect.\n              if ( workInProgress.subtreeFlags & (Placement | Update)) {\n                workInProgress.flags |= Visibility;\n              }\n            }\n          }\n        }\n        return null;\n      }\n\n    case CacheComponent:\n      {\n\n        return null;\n      }\n\n    case TracingMarkerComponent:\n      {\n\n        return null;\n      }\n  }\n\n  throw new Error(\"Unknown unit of work tag (\" + workInProgress.tag + \"). This error is likely caused by a bug in \" + 'React. Please file an issue.');\n}\n\nfunction unwindWork(current, workInProgress, renderLanes) {\n  // Note: This intentionally doesn't check if we're hydrating because comparing\n  // to the current tree provider fiber is just as fast and less error-prone.\n  // Ideally we would have a special version of the work loop only\n  // for hydration.\n  popTreeContext(workInProgress);\n\n  switch (workInProgress.tag) {\n    case ClassComponent:\n      {\n        var Component = workInProgress.type;\n\n        if (isContextProvider(Component)) {\n          popContext(workInProgress);\n        }\n\n        var flags = workInProgress.flags;\n\n        if (flags & ShouldCapture) {\n          workInProgress.flags = flags & ~ShouldCapture | DidCapture;\n\n          if ( (workInProgress.mode & ProfileMode) !== NoMode) {\n            transferActualDuration(workInProgress);\n          }\n\n          return workInProgress;\n        }\n\n        return null;\n      }\n\n    case HostRoot:\n      {\n        var root = workInProgress.stateNode;\n        popHostContainer(workInProgress);\n        popTopLevelContextObject(workInProgress);\n        resetWorkInProgressVersions();\n        var _flags = workInProgress.flags;\n\n        if ((_flags & ShouldCapture) !== NoFlags && (_flags & DidCapture) === NoFlags) {\n          // There was an error during render that wasn't captured by a suspense\n          // boundary. Do a second pass on the root to unmount the children.\n          workInProgress.flags = _flags & ~ShouldCapture | DidCapture;\n          return workInProgress;\n        } // We unwound to the root without completing it. Exit.\n\n\n        return null;\n      }\n\n    case HostComponent:\n      {\n        // TODO: popHydrationState\n        popHostContext(workInProgress);\n        return null;\n      }\n\n    case SuspenseComponent:\n      {\n        popSuspenseContext(workInProgress);\n        var suspenseState = workInProgress.memoizedState;\n\n        if (suspenseState !== null && suspenseState.dehydrated !== null) {\n          if (workInProgress.alternate === null) {\n            throw new Error('Threw in newly mounted dehydrated component. This is likely a bug in ' + 'React. Please file an issue.');\n          }\n\n          resetHydrationState();\n        }\n\n        var _flags2 = workInProgress.flags;\n\n        if (_flags2 & ShouldCapture) {\n          workInProgress.flags = _flags2 & ~ShouldCapture | DidCapture; // Captured a suspense effect. Re-render the boundary.\n\n          if ( (workInProgress.mode & ProfileMode) !== NoMode) {\n            transferActualDuration(workInProgress);\n          }\n\n          return workInProgress;\n        }\n\n        return null;\n      }\n\n    case SuspenseListComponent:\n      {\n        popSuspenseContext(workInProgress); // SuspenseList doesn't actually catch anything. It should've been\n        // caught by a nested boundary. If not, it should bubble through.\n\n        return null;\n      }\n\n    case HostPortal:\n      popHostContainer(workInProgress);\n      return null;\n\n    case ContextProvider:\n      var context = workInProgress.type._context;\n      popProvider(context, workInProgress);\n      return null;\n\n    case OffscreenComponent:\n    case LegacyHiddenComponent:\n      popRenderLanes(workInProgress);\n      return null;\n\n    case CacheComponent:\n\n      return null;\n\n    default:\n      return null;\n  }\n}\n\nfunction unwindInterruptedWork(current, interruptedWork, renderLanes) {\n  // Note: This intentionally doesn't check if we're hydrating because comparing\n  // to the current tree provider fiber is just as fast and less error-prone.\n  // Ideally we would have a special version of the work loop only\n  // for hydration.\n  popTreeContext(interruptedWork);\n\n  switch (interruptedWork.tag) {\n    case ClassComponent:\n      {\n        var childContextTypes = interruptedWork.type.childContextTypes;\n\n        if (childContextTypes !== null && childContextTypes !== undefined) {\n          popContext(interruptedWork);\n        }\n\n        break;\n      }\n\n    case HostRoot:\n      {\n        var root = interruptedWork.stateNode;\n        popHostContainer(interruptedWork);\n        popTopLevelContextObject(interruptedWork);\n        resetWorkInProgressVersions();\n        break;\n      }\n\n    case HostComponent:\n      {\n        popHostContext(interruptedWork);\n        break;\n      }\n\n    case HostPortal:\n      popHostContainer(interruptedWork);\n      break;\n\n    case SuspenseComponent:\n      popSuspenseContext(interruptedWork);\n      break;\n\n    case SuspenseListComponent:\n      popSuspenseContext(interruptedWork);\n      break;\n\n    case ContextProvider:\n      var context = interruptedWork.type._context;\n      popProvider(context, interruptedWork);\n      break;\n\n    case OffscreenComponent:\n    case LegacyHiddenComponent:\n      popRenderLanes(interruptedWork);\n      break;\n  }\n}\n\nvar didWarnAboutUndefinedSnapshotBeforeUpdate = null;\n\n{\n  didWarnAboutUndefinedSnapshotBeforeUpdate = new Set();\n} // Used during the commit phase to track the state of the Offscreen component stack.\n// Allows us to avoid traversing the return path to find the nearest Offscreen ancestor.\n// Only used when enableSuspenseLayoutEffectSemantics is enabled.\n\n\nvar offscreenSubtreeIsHidden = false;\nvar offscreenSubtreeWasHidden = false;\nvar PossiblyWeakSet = typeof WeakSet === 'function' ? WeakSet : Set;\nvar nextEffect = null; // Used for Profiling builds to track updaters.\n\nvar inProgressLanes = null;\nvar inProgressRoot = null;\nfunction reportUncaughtErrorInDEV(error) {\n  // Wrapping each small part of the commit phase into a guarded\n  // callback is a bit too slow (https://github.com/facebook/react/pull/21666).\n  // But we rely on it to surface errors to DEV tools like overlays\n  // (https://github.com/facebook/react/issues/21712).\n  // As a compromise, rethrow only caught errors in a guard.\n  {\n    invokeGuardedCallback(null, function () {\n      throw error;\n    });\n    clearCaughtError();\n  }\n}\n\nvar callComponentWillUnmountWithTimer = function (current, instance) {\n  instance.props = current.memoizedProps;\n  instance.state = current.memoizedState;\n\n  if ( current.mode & ProfileMode) {\n    try {\n      startLayoutEffectTimer();\n      instance.componentWillUnmount();\n    } finally {\n      recordLayoutEffectDuration(current);\n    }\n  } else {\n    instance.componentWillUnmount();\n  }\n}; // Capture errors so they don't interrupt mounting.\n\n\nfunction safelyCallCommitHookLayoutEffectListMount(current, nearestMountedAncestor) {\n  try {\n    commitHookEffectListMount(Layout, current);\n  } catch (error) {\n    captureCommitPhaseError(current, nearestMountedAncestor, error);\n  }\n} // Capture errors so they don't interrupt unmounting.\n\n\nfunction safelyCallComponentWillUnmount(current, nearestMountedAncestor, instance) {\n  try {\n    callComponentWillUnmountWithTimer(current, instance);\n  } catch (error) {\n    captureCommitPhaseError(current, nearestMountedAncestor, error);\n  }\n} // Capture errors so they don't interrupt mounting.\n\n\nfunction safelyCallComponentDidMount(current, nearestMountedAncestor, instance) {\n  try {\n    instance.componentDidMount();\n  } catch (error) {\n    captureCommitPhaseError(current, nearestMountedAncestor, error);\n  }\n} // Capture errors so they don't interrupt mounting.\n\n\nfunction safelyAttachRef(current, nearestMountedAncestor) {\n  try {\n    commitAttachRef(current);\n  } catch (error) {\n    captureCommitPhaseError(current, nearestMountedAncestor, error);\n  }\n}\n\nfunction safelyDetachRef(current, nearestMountedAncestor) {\n  var ref = current.ref;\n\n  if (ref !== null) {\n    if (typeof ref === 'function') {\n      var retVal;\n\n      try {\n        if (enableProfilerTimer && enableProfilerCommitHooks && current.mode & ProfileMode) {\n          try {\n            startLayoutEffectTimer();\n            retVal = ref(null);\n          } finally {\n            recordLayoutEffectDuration(current);\n          }\n        } else {\n          retVal = ref(null);\n        }\n      } catch (error) {\n        captureCommitPhaseError(current, nearestMountedAncestor, error);\n      }\n\n      {\n        if (typeof retVal === 'function') {\n          error('Unexpected return value from a callback ref in %s. ' + 'A callback ref should not return a function.', getComponentNameFromFiber(current));\n        }\n      }\n    } else {\n      ref.current = null;\n    }\n  }\n}\n\nfunction safelyCallDestroy(current, nearestMountedAncestor, destroy) {\n  try {\n    destroy();\n  } catch (error) {\n    captureCommitPhaseError(current, nearestMountedAncestor, error);\n  }\n}\n\nvar focusedInstanceHandle = null;\nvar shouldFireAfterActiveInstanceBlur = false;\nfunction commitBeforeMutationEffects(root, firstChild) {\n  focusedInstanceHandle = prepareForCommit(root.containerInfo);\n  nextEffect = firstChild;\n  commitBeforeMutationEffects_begin(); // We no longer need to track the active instance fiber\n\n  var shouldFire = shouldFireAfterActiveInstanceBlur;\n  shouldFireAfterActiveInstanceBlur = false;\n  focusedInstanceHandle = null;\n  return shouldFire;\n}\n\nfunction commitBeforeMutationEffects_begin() {\n  while (nextEffect !== null) {\n    var fiber = nextEffect; // This phase is only used for beforeActiveInstanceBlur.\n\n    var child = fiber.child;\n\n    if ((fiber.subtreeFlags & BeforeMutationMask) !== NoFlags && child !== null) {\n      child.return = fiber;\n      nextEffect = child;\n    } else {\n      commitBeforeMutationEffects_complete();\n    }\n  }\n}\n\nfunction commitBeforeMutationEffects_complete() {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n    setCurrentFiber(fiber);\n\n    try {\n      commitBeforeMutationEffectsOnFiber(fiber);\n    } catch (error) {\n      captureCommitPhaseError(fiber, fiber.return, error);\n    }\n\n    resetCurrentFiber();\n    var sibling = fiber.sibling;\n\n    if (sibling !== null) {\n      sibling.return = fiber.return;\n      nextEffect = sibling;\n      return;\n    }\n\n    nextEffect = fiber.return;\n  }\n}\n\nfunction commitBeforeMutationEffectsOnFiber(finishedWork) {\n  var current = finishedWork.alternate;\n  var flags = finishedWork.flags;\n\n  if ((flags & Snapshot) !== NoFlags) {\n    setCurrentFiber(finishedWork);\n\n    switch (finishedWork.tag) {\n      case FunctionComponent:\n      case ForwardRef:\n      case SimpleMemoComponent:\n        {\n          break;\n        }\n\n      case ClassComponent:\n        {\n          if (current !== null) {\n            var prevProps = current.memoizedProps;\n            var prevState = current.memoizedState;\n            var instance = finishedWork.stateNode; // We could update instance props and state here,\n            // but instead we rely on them being set during last render.\n            // TODO: revisit this when we implement resuming.\n\n            {\n              if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {\n                if (instance.props !== finishedWork.memoizedProps) {\n                  error('Expected %s props to match memoized props before ' + 'getSnapshotBeforeUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentNameFromFiber(finishedWork) || 'instance');\n                }\n\n                if (instance.state !== finishedWork.memoizedState) {\n                  error('Expected %s state to match memoized state before ' + 'getSnapshotBeforeUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.state`. ' + 'Please file an issue.', getComponentNameFromFiber(finishedWork) || 'instance');\n                }\n              }\n            }\n\n            var snapshot = instance.getSnapshotBeforeUpdate(finishedWork.elementType === finishedWork.type ? prevProps : resolveDefaultProps(finishedWork.type, prevProps), prevState);\n\n            {\n              var didWarnSet = didWarnAboutUndefinedSnapshotBeforeUpdate;\n\n              if (snapshot === undefined && !didWarnSet.has(finishedWork.type)) {\n                didWarnSet.add(finishedWork.type);\n\n                error('%s.getSnapshotBeforeUpdate(): A snapshot value (or null) ' + 'must be returned. You have returned undefined.', getComponentNameFromFiber(finishedWork));\n              }\n            }\n\n            instance.__reactInternalSnapshotBeforeUpdate = snapshot;\n          }\n\n          break;\n        }\n\n      case HostRoot:\n        {\n          {\n            var root = finishedWork.stateNode;\n            clearContainer(root.containerInfo);\n          }\n\n          break;\n        }\n\n      case HostComponent:\n      case HostText:\n      case HostPortal:\n      case IncompleteClassComponent:\n        // Nothing to do for these component types\n        break;\n\n      default:\n        {\n          throw new Error('This unit of work tag should not have side-effects. This error is ' + 'likely caused by a bug in React. Please file an issue.');\n        }\n    }\n\n    resetCurrentFiber();\n  }\n}\n\nfunction commitHookEffectListUnmount(flags, finishedWork, nearestMountedAncestor) {\n  var updateQueue = finishedWork.updateQueue;\n  var lastEffect = updateQueue !== null ? updateQueue.lastEffect : null;\n\n  if (lastEffect !== null) {\n    var firstEffect = lastEffect.next;\n    var effect = firstEffect;\n\n    do {\n      if ((effect.tag & flags) === flags) {\n        // Unmount\n        var destroy = effect.destroy;\n        effect.destroy = undefined;\n\n        if (destroy !== undefined) {\n          {\n            if ((flags & Passive$1) !== NoFlags$1) {\n              markComponentPassiveEffectUnmountStarted(finishedWork);\n            } else if ((flags & Layout) !== NoFlags$1) {\n              markComponentLayoutEffectUnmountStarted(finishedWork);\n            }\n          }\n\n          {\n            if ((flags & Insertion) !== NoFlags$1) {\n              setIsRunningInsertionEffect(true);\n            }\n          }\n\n          safelyCallDestroy(finishedWork, nearestMountedAncestor, destroy);\n\n          {\n            if ((flags & Insertion) !== NoFlags$1) {\n              setIsRunningInsertionEffect(false);\n            }\n          }\n\n          {\n            if ((flags & Passive$1) !== NoFlags$1) {\n              markComponentPassiveEffectUnmountStopped();\n            } else if ((flags & Layout) !== NoFlags$1) {\n              markComponentLayoutEffectUnmountStopped();\n            }\n          }\n        }\n      }\n\n      effect = effect.next;\n    } while (effect !== firstEffect);\n  }\n}\n\nfunction commitHookEffectListMount(flags, finishedWork) {\n  var updateQueue = finishedWork.updateQueue;\n  var lastEffect = updateQueue !== null ? updateQueue.lastEffect : null;\n\n  if (lastEffect !== null) {\n    var firstEffect = lastEffect.next;\n    var effect = firstEffect;\n\n    do {\n      if ((effect.tag & flags) === flags) {\n        {\n          if ((flags & Passive$1) !== NoFlags$1) {\n            markComponentPassiveEffectMountStarted(finishedWork);\n          } else if ((flags & Layout) !== NoFlags$1) {\n            markComponentLayoutEffectMountStarted(finishedWork);\n          }\n        } // Mount\n\n\n        var create = effect.create;\n\n        {\n          if ((flags & Insertion) !== NoFlags$1) {\n            setIsRunningInsertionEffect(true);\n          }\n        }\n\n        effect.destroy = create();\n\n        {\n          if ((flags & Insertion) !== NoFlags$1) {\n            setIsRunningInsertionEffect(false);\n          }\n        }\n\n        {\n          if ((flags & Passive$1) !== NoFlags$1) {\n            markComponentPassiveEffectMountStopped();\n          } else if ((flags & Layout) !== NoFlags$1) {\n            markComponentLayoutEffectMountStopped();\n          }\n        }\n\n        {\n          var destroy = effect.destroy;\n\n          if (destroy !== undefined && typeof destroy !== 'function') {\n            var hookName = void 0;\n\n            if ((effect.tag & Layout) !== NoFlags) {\n              hookName = 'useLayoutEffect';\n            } else if ((effect.tag & Insertion) !== NoFlags) {\n              hookName = 'useInsertionEffect';\n            } else {\n              hookName = 'useEffect';\n            }\n\n            var addendum = void 0;\n\n            if (destroy === null) {\n              addendum = ' You returned null. If your effect does not require clean ' + 'up, return undefined (or nothing).';\n            } else if (typeof destroy.then === 'function') {\n              addendum = '\\n\\nIt looks like you wrote ' + hookName + '(async () => ...) or returned a Promise. ' + 'Instead, write the async function inside your effect ' + 'and call it immediately:\\n\\n' + hookName + '(() => {\\n' + '  async function fetchData() {\\n' + '    // You can await here\\n' + '    const response = await MyAPI.getData(someId);\\n' + '    // ...\\n' + '  }\\n' + '  fetchData();\\n' + \"}, [someId]); // Or [] if effect doesn't need props or state\\n\\n\" + 'Learn more about data fetching with Hooks: https://reactjs.org/link/hooks-data-fetching';\n            } else {\n              addendum = ' You returned: ' + destroy;\n            }\n\n            error('%s must not return anything besides a function, ' + 'which is used for clean-up.%s', hookName, addendum);\n          }\n        }\n      }\n\n      effect = effect.next;\n    } while (effect !== firstEffect);\n  }\n}\n\nfunction commitPassiveEffectDurations(finishedRoot, finishedWork) {\n  {\n    // Only Profilers with work in their subtree will have an Update effect scheduled.\n    if ((finishedWork.flags & Update) !== NoFlags) {\n      switch (finishedWork.tag) {\n        case Profiler:\n          {\n            var passiveEffectDuration = finishedWork.stateNode.passiveEffectDuration;\n            var _finishedWork$memoize = finishedWork.memoizedProps,\n                id = _finishedWork$memoize.id,\n                onPostCommit = _finishedWork$memoize.onPostCommit; // This value will still reflect the previous commit phase.\n            // It does not get reset until the start of the next commit phase.\n\n            var commitTime = getCommitTime();\n            var phase = finishedWork.alternate === null ? 'mount' : 'update';\n\n            {\n              if (isCurrentUpdateNested()) {\n                phase = 'nested-update';\n              }\n            }\n\n            if (typeof onPostCommit === 'function') {\n              onPostCommit(id, phase, passiveEffectDuration, commitTime);\n            } // Bubble times to the next nearest ancestor Profiler.\n            // After we process that Profiler, we'll bubble further up.\n\n\n            var parentFiber = finishedWork.return;\n\n            outer: while (parentFiber !== null) {\n              switch (parentFiber.tag) {\n                case HostRoot:\n                  var root = parentFiber.stateNode;\n                  root.passiveEffectDuration += passiveEffectDuration;\n                  break outer;\n\n                case Profiler:\n                  var parentStateNode = parentFiber.stateNode;\n                  parentStateNode.passiveEffectDuration += passiveEffectDuration;\n                  break outer;\n              }\n\n              parentFiber = parentFiber.return;\n            }\n\n            break;\n          }\n      }\n    }\n  }\n}\n\nfunction commitLayoutEffectOnFiber(finishedRoot, current, finishedWork, committedLanes) {\n  if ((finishedWork.flags & LayoutMask) !== NoFlags) {\n    switch (finishedWork.tag) {\n      case FunctionComponent:\n      case ForwardRef:\n      case SimpleMemoComponent:\n        {\n          if ( !offscreenSubtreeWasHidden) {\n            // At this point layout effects have already been destroyed (during mutation phase).\n            // This is done to prevent sibling component effects from interfering with each other,\n            // e.g. a destroy function in one component should never override a ref set\n            // by a create function in another component during the same commit.\n            if ( finishedWork.mode & ProfileMode) {\n              try {\n                startLayoutEffectTimer();\n                commitHookEffectListMount(Layout | HasEffect, finishedWork);\n              } finally {\n                recordLayoutEffectDuration(finishedWork);\n              }\n            } else {\n              commitHookEffectListMount(Layout | HasEffect, finishedWork);\n            }\n          }\n\n          break;\n        }\n\n      case ClassComponent:\n        {\n          var instance = finishedWork.stateNode;\n\n          if (finishedWork.flags & Update) {\n            if (!offscreenSubtreeWasHidden) {\n              if (current === null) {\n                // We could update instance props and state here,\n                // but instead we rely on them being set during last render.\n                // TODO: revisit this when we implement resuming.\n                {\n                  if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {\n                    if (instance.props !== finishedWork.memoizedProps) {\n                      error('Expected %s props to match memoized props before ' + 'componentDidMount. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentNameFromFiber(finishedWork) || 'instance');\n                    }\n\n                    if (instance.state !== finishedWork.memoizedState) {\n                      error('Expected %s state to match memoized state before ' + 'componentDidMount. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.state`. ' + 'Please file an issue.', getComponentNameFromFiber(finishedWork) || 'instance');\n                    }\n                  }\n                }\n\n                if ( finishedWork.mode & ProfileMode) {\n                  try {\n                    startLayoutEffectTimer();\n                    instance.componentDidMount();\n                  } finally {\n                    recordLayoutEffectDuration(finishedWork);\n                  }\n                } else {\n                  instance.componentDidMount();\n                }\n              } else {\n                var prevProps = finishedWork.elementType === finishedWork.type ? current.memoizedProps : resolveDefaultProps(finishedWork.type, current.memoizedProps);\n                var prevState = current.memoizedState; // We could update instance props and state here,\n                // but instead we rely on them being set during last render.\n                // TODO: revisit this when we implement resuming.\n\n                {\n                  if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {\n                    if (instance.props !== finishedWork.memoizedProps) {\n                      error('Expected %s props to match memoized props before ' + 'componentDidUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentNameFromFiber(finishedWork) || 'instance');\n                    }\n\n                    if (instance.state !== finishedWork.memoizedState) {\n                      error('Expected %s state to match memoized state before ' + 'componentDidUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.state`. ' + 'Please file an issue.', getComponentNameFromFiber(finishedWork) || 'instance');\n                    }\n                  }\n                }\n\n                if ( finishedWork.mode & ProfileMode) {\n                  try {\n                    startLayoutEffectTimer();\n                    instance.componentDidUpdate(prevProps, prevState, instance.__reactInternalSnapshotBeforeUpdate);\n                  } finally {\n                    recordLayoutEffectDuration(finishedWork);\n                  }\n                } else {\n                  instance.componentDidUpdate(prevProps, prevState, instance.__reactInternalSnapshotBeforeUpdate);\n                }\n              }\n            }\n          } // TODO: I think this is now always non-null by the time it reaches the\n          // commit phase. Consider removing the type check.\n\n\n          var updateQueue = finishedWork.updateQueue;\n\n          if (updateQueue !== null) {\n            {\n              if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {\n                if (instance.props !== finishedWork.memoizedProps) {\n                  error('Expected %s props to match memoized props before ' + 'processing the update queue. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentNameFromFiber(finishedWork) || 'instance');\n                }\n\n                if (instance.state !== finishedWork.memoizedState) {\n                  error('Expected %s state to match memoized state before ' + 'processing the update queue. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.state`. ' + 'Please file an issue.', getComponentNameFromFiber(finishedWork) || 'instance');\n                }\n              }\n            } // We could update instance props and state here,\n            // but instead we rely on them being set during last render.\n            // TODO: revisit this when we implement resuming.\n\n\n            commitUpdateQueue(finishedWork, updateQueue, instance);\n          }\n\n          break;\n        }\n\n      case HostRoot:\n        {\n          // TODO: I think this is now always non-null by the time it reaches the\n          // commit phase. Consider removing the type check.\n          var _updateQueue = finishedWork.updateQueue;\n\n          if (_updateQueue !== null) {\n            var _instance = null;\n\n            if (finishedWork.child !== null) {\n              switch (finishedWork.child.tag) {\n                case HostComponent:\n                  _instance = getPublicInstance(finishedWork.child.stateNode);\n                  break;\n\n                case ClassComponent:\n                  _instance = finishedWork.child.stateNode;\n                  break;\n              }\n            }\n\n            commitUpdateQueue(finishedWork, _updateQueue, _instance);\n          }\n\n          break;\n        }\n\n      case HostComponent:\n        {\n          var _instance2 = finishedWork.stateNode; // Renderers may schedule work to be done after host components are mounted\n          // (eg DOM renderer may schedule auto-focus for inputs and form controls).\n          // These effects should only be committed when components are first mounted,\n          // aka when there is no current/alternate.\n\n          if (current === null && finishedWork.flags & Update) {\n            var type = finishedWork.type;\n            var props = finishedWork.memoizedProps;\n            commitMount(_instance2, type, props);\n          }\n\n          break;\n        }\n\n      case HostText:\n        {\n          // We have no life-cycles associated with text.\n          break;\n        }\n\n      case HostPortal:\n        {\n          // We have no life-cycles associated with portals.\n          break;\n        }\n\n      case Profiler:\n        {\n          {\n            var _finishedWork$memoize2 = finishedWork.memoizedProps,\n                onCommit = _finishedWork$memoize2.onCommit,\n                onRender = _finishedWork$memoize2.onRender;\n            var effectDuration = finishedWork.stateNode.effectDuration;\n            var commitTime = getCommitTime();\n            var phase = current === null ? 'mount' : 'update';\n\n            {\n              if (isCurrentUpdateNested()) {\n                phase = 'nested-update';\n              }\n            }\n\n            if (typeof onRender === 'function') {\n              onRender(finishedWork.memoizedProps.id, phase, finishedWork.actualDuration, finishedWork.treeBaseDuration, finishedWork.actualStartTime, commitTime);\n            }\n\n            {\n              if (typeof onCommit === 'function') {\n                onCommit(finishedWork.memoizedProps.id, phase, effectDuration, commitTime);\n              } // Schedule a passive effect for this Profiler to call onPostCommit hooks.\n              // This effect should be scheduled even if there is no onPostCommit callback for this Profiler,\n              // because the effect is also where times bubble to parent Profilers.\n\n\n              enqueuePendingPassiveProfilerEffect(finishedWork); // Propagate layout effect durations to the next nearest Profiler ancestor.\n              // Do not reset these values until the next render so DevTools has a chance to read them first.\n\n              var parentFiber = finishedWork.return;\n\n              outer: while (parentFiber !== null) {\n                switch (parentFiber.tag) {\n                  case HostRoot:\n                    var root = parentFiber.stateNode;\n                    root.effectDuration += effectDuration;\n                    break outer;\n\n                  case Profiler:\n                    var parentStateNode = parentFiber.stateNode;\n                    parentStateNode.effectDuration += effectDuration;\n                    break outer;\n                }\n\n                parentFiber = parentFiber.return;\n              }\n            }\n          }\n\n          break;\n        }\n\n      case SuspenseComponent:\n        {\n          commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);\n          break;\n        }\n\n      case SuspenseListComponent:\n      case IncompleteClassComponent:\n      case ScopeComponent:\n      case OffscreenComponent:\n      case LegacyHiddenComponent:\n      case TracingMarkerComponent:\n        {\n          break;\n        }\n\n      default:\n        throw new Error('This unit of work tag should not have side-effects. This error is ' + 'likely caused by a bug in React. Please file an issue.');\n    }\n  }\n\n  if ( !offscreenSubtreeWasHidden) {\n    {\n      if (finishedWork.flags & Ref) {\n        commitAttachRef(finishedWork);\n      }\n    }\n  }\n}\n\nfunction reappearLayoutEffectsOnFiber(node) {\n  // Turn on layout effects in a tree that previously disappeared.\n  // TODO (Offscreen) Check: flags & LayoutStatic\n  switch (node.tag) {\n    case FunctionComponent:\n    case ForwardRef:\n    case SimpleMemoComponent:\n      {\n        if ( node.mode & ProfileMode) {\n          try {\n            startLayoutEffectTimer();\n            safelyCallCommitHookLayoutEffectListMount(node, node.return);\n          } finally {\n            recordLayoutEffectDuration(node);\n          }\n        } else {\n          safelyCallCommitHookLayoutEffectListMount(node, node.return);\n        }\n\n        break;\n      }\n\n    case ClassComponent:\n      {\n        var instance = node.stateNode;\n\n        if (typeof instance.componentDidMount === 'function') {\n          safelyCallComponentDidMount(node, node.return, instance);\n        }\n\n        safelyAttachRef(node, node.return);\n        break;\n      }\n\n    case HostComponent:\n      {\n        safelyAttachRef(node, node.return);\n        break;\n      }\n  }\n}\n\nfunction hideOrUnhideAllChildren(finishedWork, isHidden) {\n  // Only hide or unhide the top-most host nodes.\n  var hostSubtreeRoot = null;\n\n  {\n    // We only have the top Fiber that was inserted but we need to recurse down its\n    // children to find all the terminal nodes.\n    var node = finishedWork;\n\n    while (true) {\n      if (node.tag === HostComponent) {\n        if (hostSubtreeRoot === null) {\n          hostSubtreeRoot = node;\n\n          try {\n            var instance = node.stateNode;\n\n            if (isHidden) {\n              hideInstance(instance);\n            } else {\n              unhideInstance(node.stateNode, node.memoizedProps);\n            }\n          } catch (error) {\n            captureCommitPhaseError(finishedWork, finishedWork.return, error);\n          }\n        }\n      } else if (node.tag === HostText) {\n        if (hostSubtreeRoot === null) {\n          try {\n            var _instance3 = node.stateNode;\n\n            if (isHidden) {\n              hideTextInstance(_instance3);\n            } else {\n              unhideTextInstance(_instance3, node.memoizedProps);\n            }\n          } catch (error) {\n            captureCommitPhaseError(finishedWork, finishedWork.return, error);\n          }\n        }\n      } else if ((node.tag === OffscreenComponent || node.tag === LegacyHiddenComponent) && node.memoizedState !== null && node !== finishedWork) ; else if (node.child !== null) {\n        node.child.return = node;\n        node = node.child;\n        continue;\n      }\n\n      if (node === finishedWork) {\n        return;\n      }\n\n      while (node.sibling === null) {\n        if (node.return === null || node.return === finishedWork) {\n          return;\n        }\n\n        if (hostSubtreeRoot === node) {\n          hostSubtreeRoot = null;\n        }\n\n        node = node.return;\n      }\n\n      if (hostSubtreeRoot === node) {\n        hostSubtreeRoot = null;\n      }\n\n      node.sibling.return = node.return;\n      node = node.sibling;\n    }\n  }\n}\n\nfunction commitAttachRef(finishedWork) {\n  var ref = finishedWork.ref;\n\n  if (ref !== null) {\n    var instance = finishedWork.stateNode;\n    var instanceToUse;\n\n    switch (finishedWork.tag) {\n      case HostComponent:\n        instanceToUse = getPublicInstance(instance);\n        break;\n\n      default:\n        instanceToUse = instance;\n    } // Moved outside to ensure DCE works with this flag\n\n    if (typeof ref === 'function') {\n      var retVal;\n\n      if ( finishedWork.mode & ProfileMode) {\n        try {\n          startLayoutEffectTimer();\n          retVal = ref(instanceToUse);\n        } finally {\n          recordLayoutEffectDuration(finishedWork);\n        }\n      } else {\n        retVal = ref(instanceToUse);\n      }\n\n      {\n        if (typeof retVal === 'function') {\n          error('Unexpected return value from a callback ref in %s. ' + 'A callback ref should not return a function.', getComponentNameFromFiber(finishedWork));\n        }\n      }\n    } else {\n      {\n        if (!ref.hasOwnProperty('current')) {\n          error('Unexpected ref object provided for %s. ' + 'Use either a ref-setter function or React.createRef().', getComponentNameFromFiber(finishedWork));\n        }\n      }\n\n      ref.current = instanceToUse;\n    }\n  }\n}\n\nfunction detachFiberMutation(fiber) {\n  // Cut off the return pointer to disconnect it from the tree.\n  // This enables us to detect and warn against state updates on an unmounted component.\n  // It also prevents events from bubbling from within disconnected components.\n  //\n  // Ideally, we should also clear the child pointer of the parent alternate to let this\n  // get GC:ed but we don't know which for sure which parent is the current\n  // one so we'll settle for GC:ing the subtree of this child.\n  // This child itself will be GC:ed when the parent updates the next time.\n  //\n  // Note that we can't clear child or sibling pointers yet.\n  // They're needed for passive effects and for findDOMNode.\n  // We defer those fields, and all other cleanup, to the passive phase (see detachFiberAfterEffects).\n  //\n  // Don't reset the alternate yet, either. We need that so we can detach the\n  // alternate's fields in the passive phase. Clearing the return pointer is\n  // sufficient for findDOMNode semantics.\n  var alternate = fiber.alternate;\n\n  if (alternate !== null) {\n    alternate.return = null;\n  }\n\n  fiber.return = null;\n}\n\nfunction detachFiberAfterEffects(fiber) {\n  var alternate = fiber.alternate;\n\n  if (alternate !== null) {\n    fiber.alternate = null;\n    detachFiberAfterEffects(alternate);\n  } // Note: Defensively using negation instead of < in case\n  // `deletedTreeCleanUpLevel` is undefined.\n\n\n  {\n    // Clear cyclical Fiber fields. This level alone is designed to roughly\n    // approximate the planned Fiber refactor. In that world, `setState` will be\n    // bound to a special \"instance\" object instead of a Fiber. The Instance\n    // object will not have any of these fields. It will only be connected to\n    // the fiber tree via a single link at the root. So if this level alone is\n    // sufficient to fix memory issues, that bodes well for our plans.\n    fiber.child = null;\n    fiber.deletions = null;\n    fiber.sibling = null; // The `stateNode` is cyclical because on host nodes it points to the host\n    // tree, which has its own pointers to children, parents, and siblings.\n    // The other host nodes also point back to fibers, so we should detach that\n    // one, too.\n\n    if (fiber.tag === HostComponent) {\n      var hostInstance = fiber.stateNode;\n\n      if (hostInstance !== null) {\n        detachDeletedInstance(hostInstance);\n      }\n    }\n\n    fiber.stateNode = null; // I'm intentionally not clearing the `return` field in this level. We\n    // already disconnect the `return` pointer at the root of the deleted\n    // subtree (in `detachFiberMutation`). Besides, `return` by itself is not\n    // cyclical \u2014 it's only cyclical when combined with `child`, `sibling`, and\n    // `alternate`. But we'll clear it in the next level anyway, just in case.\n\n    {\n      fiber._debugOwner = null;\n    }\n\n    {\n      // Theoretically, nothing in here should be necessary, because we already\n      // disconnected the fiber from the tree. So even if something leaks this\n      // particular fiber, it won't leak anything else\n      //\n      // The purpose of this branch is to be super aggressive so we can measure\n      // if there's any difference in memory impact. If there is, that could\n      // indicate a React leak we don't know about.\n      fiber.return = null;\n      fiber.dependencies = null;\n      fiber.memoizedProps = null;\n      fiber.memoizedState = null;\n      fiber.pendingProps = null;\n      fiber.stateNode = null; // TODO: Move to `commitPassiveUnmountInsideDeletedTreeOnFiber` instead.\n\n      fiber.updateQueue = null;\n    }\n  }\n}\n\nfunction getHostParentFiber(fiber) {\n  var parent = fiber.return;\n\n  while (parent !== null) {\n    if (isHostParent(parent)) {\n      return parent;\n    }\n\n    parent = parent.return;\n  }\n\n  throw new Error('Expected to find a host parent. This error is likely caused by a bug ' + 'in React. Please file an issue.');\n}\n\nfunction isHostParent(fiber) {\n  return fiber.tag === HostComponent || fiber.tag === HostRoot || fiber.tag === HostPortal;\n}\n\nfunction getHostSibling(fiber) {\n  // We're going to search forward into the tree until we find a sibling host\n  // node. Unfortunately, if multiple insertions are done in a row we have to\n  // search past them. This leads to exponential search for the next sibling.\n  // TODO: Find a more efficient way to do this.\n  var node = fiber;\n\n  siblings: while (true) {\n    // If we didn't find anything, let's try the next sibling.\n    while (node.sibling === null) {\n      if (node.return === null || isHostParent(node.return)) {\n        // If we pop out of the root or hit the parent the fiber we are the\n        // last sibling.\n        return null;\n      }\n\n      node = node.return;\n    }\n\n    node.sibling.return = node.return;\n    node = node.sibling;\n\n    while (node.tag !== HostComponent && node.tag !== HostText && node.tag !== DehydratedFragment) {\n      // If it is not host node and, we might have a host node inside it.\n      // Try to search down until we find one.\n      if (node.flags & Placement) {\n        // If we don't have a child, try the siblings instead.\n        continue siblings;\n      } // If we don't have a child, try the siblings instead.\n      // We also skip portals because they are not part of this host tree.\n\n\n      if (node.child === null || node.tag === HostPortal) {\n        continue siblings;\n      } else {\n        node.child.return = node;\n        node = node.child;\n      }\n    } // Check if this host node is stable or about to be placed.\n\n\n    if (!(node.flags & Placement)) {\n      // Found it!\n      return node.stateNode;\n    }\n  }\n}\n\nfunction commitPlacement(finishedWork) {\n\n\n  var parentFiber = getHostParentFiber(finishedWork); // Note: these two variables *must* always be updated together.\n\n  switch (parentFiber.tag) {\n    case HostComponent:\n      {\n        var parent = parentFiber.stateNode;\n\n        if (parentFiber.flags & ContentReset) {\n          // Reset the text content of the parent before doing any insertions\n          resetTextContent(parent); // Clear ContentReset from the effect tag\n\n          parentFiber.flags &= ~ContentReset;\n        }\n\n        var before = getHostSibling(finishedWork); // We only have the top Fiber that was inserted but we need to recurse down its\n        // children to find all the terminal nodes.\n\n        insertOrAppendPlacementNode(finishedWork, before, parent);\n        break;\n      }\n\n    case HostRoot:\n    case HostPortal:\n      {\n        var _parent = parentFiber.stateNode.containerInfo;\n\n        var _before = getHostSibling(finishedWork);\n\n        insertOrAppendPlacementNodeIntoContainer(finishedWork, _before, _parent);\n        break;\n      }\n    // eslint-disable-next-line-no-fallthrough\n\n    default:\n      throw new Error('Invalid host parent fiber. This error is likely caused by a bug ' + 'in React. Please file an issue.');\n  }\n}\n\nfunction insertOrAppendPlacementNodeIntoContainer(node, before, parent) {\n  var tag = node.tag;\n  var isHost = tag === HostComponent || tag === HostText;\n\n  if (isHost) {\n    var stateNode = node.stateNode;\n\n    if (before) {\n      insertInContainerBefore(parent, stateNode, before);\n    } else {\n      appendChildToContainer(parent, stateNode);\n    }\n  } else if (tag === HostPortal) ; else {\n    var child = node.child;\n\n    if (child !== null) {\n      insertOrAppendPlacementNodeIntoContainer(child, before, parent);\n      var sibling = child.sibling;\n\n      while (sibling !== null) {\n        insertOrAppendPlacementNodeIntoContainer(sibling, before, parent);\n        sibling = sibling.sibling;\n      }\n    }\n  }\n}\n\nfunction insertOrAppendPlacementNode(node, before, parent) {\n  var tag = node.tag;\n  var isHost = tag === HostComponent || tag === HostText;\n\n  if (isHost) {\n    var stateNode = node.stateNode;\n\n    if (before) {\n      insertBefore(parent, stateNode, before);\n    } else {\n      appendChild(parent, stateNode);\n    }\n  } else if (tag === HostPortal) ; else {\n    var child = node.child;\n\n    if (child !== null) {\n      insertOrAppendPlacementNode(child, before, parent);\n      var sibling = child.sibling;\n\n      while (sibling !== null) {\n        insertOrAppendPlacementNode(sibling, before, parent);\n        sibling = sibling.sibling;\n      }\n    }\n  }\n} // These are tracked on the stack as we recursively traverse a\n// deleted subtree.\n// TODO: Update these during the whole mutation phase, not just during\n// a deletion.\n\n\nvar hostParent = null;\nvar hostParentIsContainer = false;\n\nfunction commitDeletionEffects(root, returnFiber, deletedFiber) {\n  {\n    // We only have the top Fiber that was deleted but we need to recurse down its\n    // children to find all the terminal nodes.\n    // Recursively delete all host nodes from the parent, detach refs, clean\n    // up mounted layout effects, and call componentWillUnmount.\n    // We only need to remove the topmost host child in each branch. But then we\n    // still need to keep traversing to unmount effects, refs, and cWU. TODO: We\n    // could split this into two separate traversals functions, where the second\n    // one doesn't include any removeChild logic. This is maybe the same\n    // function as \"disappearLayoutEffects\" (or whatever that turns into after\n    // the layout phase is refactored to use recursion).\n    // Before starting, find the nearest host parent on the stack so we know\n    // which instance/container to remove the children from.\n    // TODO: Instead of searching up the fiber return path on every deletion, we\n    // can track the nearest host component on the JS stack as we traverse the\n    // tree during the commit phase. This would make insertions faster, too.\n    var parent = returnFiber;\n\n    findParent: while (parent !== null) {\n      switch (parent.tag) {\n        case HostComponent:\n          {\n            hostParent = parent.stateNode;\n            hostParentIsContainer = false;\n            break findParent;\n          }\n\n        case HostRoot:\n          {\n            hostParent = parent.stateNode.containerInfo;\n            hostParentIsContainer = true;\n            break findParent;\n          }\n\n        case HostPortal:\n          {\n            hostParent = parent.stateNode.containerInfo;\n            hostParentIsContainer = true;\n            break findParent;\n          }\n      }\n\n      parent = parent.return;\n    }\n\n    if (hostParent === null) {\n      throw new Error('Expected to find a host parent. This error is likely caused by ' + 'a bug in React. Please file an issue.');\n    }\n\n    commitDeletionEffectsOnFiber(root, returnFiber, deletedFiber);\n    hostParent = null;\n    hostParentIsContainer = false;\n  }\n\n  detachFiberMutation(deletedFiber);\n}\n\nfunction recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, parent) {\n  // TODO: Use a static flag to skip trees that don't have unmount effects\n  var child = parent.child;\n\n  while (child !== null) {\n    commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, child);\n    child = child.sibling;\n  }\n}\n\nfunction commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, deletedFiber) {\n  onCommitUnmount(deletedFiber); // The cases in this outer switch modify the stack before they traverse\n  // into their subtree. There are simpler cases in the inner switch\n  // that don't modify the stack.\n\n  switch (deletedFiber.tag) {\n    case HostComponent:\n      {\n        if (!offscreenSubtreeWasHidden) {\n          safelyDetachRef(deletedFiber, nearestMountedAncestor);\n        } // Intentional fallthrough to next branch\n\n      }\n    // eslint-disable-next-line-no-fallthrough\n\n    case HostText:\n      {\n        // We only need to remove the nearest host child. Set the host parent\n        // to `null` on the stack to indicate that nested children don't\n        // need to be removed.\n        {\n          var prevHostParent = hostParent;\n          var prevHostParentIsContainer = hostParentIsContainer;\n          hostParent = null;\n          recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n          hostParent = prevHostParent;\n          hostParentIsContainer = prevHostParentIsContainer;\n\n          if (hostParent !== null) {\n            // Now that all the child effects have unmounted, we can remove the\n            // node from the tree.\n            if (hostParentIsContainer) {\n              removeChildFromContainer(hostParent, deletedFiber.stateNode);\n            } else {\n              removeChild(hostParent, deletedFiber.stateNode);\n            }\n          }\n        }\n\n        return;\n      }\n\n    case DehydratedFragment:\n      {\n        // Delete the dehydrated suspense boundary and all of its content.\n\n\n        {\n          if (hostParent !== null) {\n            if (hostParentIsContainer) {\n              clearSuspenseBoundaryFromContainer(hostParent, deletedFiber.stateNode);\n            } else {\n              clearSuspenseBoundary(hostParent, deletedFiber.stateNode);\n            }\n          }\n        }\n\n        return;\n      }\n\n    case HostPortal:\n      {\n        {\n          // When we go into a portal, it becomes the parent to remove from.\n          var _prevHostParent = hostParent;\n          var _prevHostParentIsContainer = hostParentIsContainer;\n          hostParent = deletedFiber.stateNode.containerInfo;\n          hostParentIsContainer = true;\n          recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n          hostParent = _prevHostParent;\n          hostParentIsContainer = _prevHostParentIsContainer;\n        }\n\n        return;\n      }\n\n    case FunctionComponent:\n    case ForwardRef:\n    case MemoComponent:\n    case SimpleMemoComponent:\n      {\n        if (!offscreenSubtreeWasHidden) {\n          var updateQueue = deletedFiber.updateQueue;\n\n          if (updateQueue !== null) {\n            var lastEffect = updateQueue.lastEffect;\n\n            if (lastEffect !== null) {\n              var firstEffect = lastEffect.next;\n              var effect = firstEffect;\n\n              do {\n                var _effect = effect,\n                    destroy = _effect.destroy,\n                    tag = _effect.tag;\n\n                if (destroy !== undefined) {\n                  if ((tag & Insertion) !== NoFlags$1) {\n                    safelyCallDestroy(deletedFiber, nearestMountedAncestor, destroy);\n                  } else if ((tag & Layout) !== NoFlags$1) {\n                    {\n                      markComponentLayoutEffectUnmountStarted(deletedFiber);\n                    }\n\n                    if ( deletedFiber.mode & ProfileMode) {\n                      startLayoutEffectTimer();\n                      safelyCallDestroy(deletedFiber, nearestMountedAncestor, destroy);\n                      recordLayoutEffectDuration(deletedFiber);\n                    } else {\n                      safelyCallDestroy(deletedFiber, nearestMountedAncestor, destroy);\n                    }\n\n                    {\n                      markComponentLayoutEffectUnmountStopped();\n                    }\n                  }\n                }\n\n                effect = effect.next;\n              } while (effect !== firstEffect);\n            }\n          }\n        }\n\n        recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n        return;\n      }\n\n    case ClassComponent:\n      {\n        if (!offscreenSubtreeWasHidden) {\n          safelyDetachRef(deletedFiber, nearestMountedAncestor);\n          var instance = deletedFiber.stateNode;\n\n          if (typeof instance.componentWillUnmount === 'function') {\n            safelyCallComponentWillUnmount(deletedFiber, nearestMountedAncestor, instance);\n          }\n        }\n\n        recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n        return;\n      }\n\n    case ScopeComponent:\n      {\n\n        recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n        return;\n      }\n\n    case OffscreenComponent:\n      {\n        if ( // TODO: Remove this dead flag\n         deletedFiber.mode & ConcurrentMode) {\n          // If this offscreen component is hidden, we already unmounted it. Before\n          // deleting the children, track that it's already unmounted so that we\n          // don't attempt to unmount the effects again.\n          // TODO: If the tree is hidden, in most cases we should be able to skip\n          // over the nested children entirely. An exception is we haven't yet found\n          // the topmost host node to delete, which we already track on the stack.\n          // But the other case is portals, which need to be detached no matter how\n          // deeply they are nested. We should use a subtree flag to track whether a\n          // subtree includes a nested portal.\n          var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n          offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || deletedFiber.memoizedState !== null;\n          recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n          offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n        } else {\n          recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n        }\n\n        break;\n      }\n\n    default:\n      {\n        recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, deletedFiber);\n        return;\n      }\n  }\n}\n\nfunction commitSuspenseCallback(finishedWork) {\n  // TODO: Move this to passive phase\n  var newState = finishedWork.memoizedState;\n}\n\nfunction commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {\n\n  var newState = finishedWork.memoizedState;\n\n  if (newState === null) {\n    var current = finishedWork.alternate;\n\n    if (current !== null) {\n      var prevState = current.memoizedState;\n\n      if (prevState !== null) {\n        var suspenseInstance = prevState.dehydrated;\n\n        if (suspenseInstance !== null) {\n          commitHydratedSuspenseInstance(suspenseInstance);\n        }\n      }\n    }\n  }\n}\n\nfunction attachSuspenseRetryListeners(finishedWork) {\n  // If this boundary just timed out, then it will have a set of wakeables.\n  // For each wakeable, attach a listener so that when it resolves, React\n  // attempts to re-render the boundary in the primary (pre-timeout) state.\n  var wakeables = finishedWork.updateQueue;\n\n  if (wakeables !== null) {\n    finishedWork.updateQueue = null;\n    var retryCache = finishedWork.stateNode;\n\n    if (retryCache === null) {\n      retryCache = finishedWork.stateNode = new PossiblyWeakSet();\n    }\n\n    wakeables.forEach(function (wakeable) {\n      // Memoize using the boundary fiber to prevent redundant listeners.\n      var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);\n\n      if (!retryCache.has(wakeable)) {\n        retryCache.add(wakeable);\n\n        {\n          if (isDevToolsPresent) {\n            if (inProgressLanes !== null && inProgressRoot !== null) {\n              // If we have pending work still, associate the original updaters with it.\n              restorePendingUpdaters(inProgressRoot, inProgressLanes);\n            } else {\n              throw Error('Expected finished root and lanes to be set. This is a bug in React.');\n            }\n          }\n        }\n\n        wakeable.then(retry, retry);\n      }\n    });\n  }\n} // This function detects when a Suspense boundary goes from visible to hidden.\nfunction commitMutationEffects(root, finishedWork, committedLanes) {\n  inProgressLanes = committedLanes;\n  inProgressRoot = root;\n  setCurrentFiber(finishedWork);\n  commitMutationEffectsOnFiber(finishedWork, root);\n  setCurrentFiber(finishedWork);\n  inProgressLanes = null;\n  inProgressRoot = null;\n}\n\nfunction recursivelyTraverseMutationEffects(root, parentFiber, lanes) {\n  // Deletions effects can be scheduled on any fiber type. They need to happen\n  // before the children effects hae fired.\n  var deletions = parentFiber.deletions;\n\n  if (deletions !== null) {\n    for (var i = 0; i < deletions.length; i++) {\n      var childToDelete = deletions[i];\n\n      try {\n        commitDeletionEffects(root, parentFiber, childToDelete);\n      } catch (error) {\n        captureCommitPhaseError(childToDelete, parentFiber, error);\n      }\n    }\n  }\n\n  var prevDebugFiber = getCurrentFiber();\n\n  if (parentFiber.subtreeFlags & MutationMask) {\n    var child = parentFiber.child;\n\n    while (child !== null) {\n      setCurrentFiber(child);\n      commitMutationEffectsOnFiber(child, root);\n      child = child.sibling;\n    }\n  }\n\n  setCurrentFiber(prevDebugFiber);\n}\n\nfunction commitMutationEffectsOnFiber(finishedWork, root, lanes) {\n  var current = finishedWork.alternate;\n  var flags = finishedWork.flags; // The effect flag should be checked *after* we refine the type of fiber,\n  // because the fiber tag is more specific. An exception is any flag related\n  // to reconcilation, because those can be set on all fiber types.\n\n  switch (finishedWork.tag) {\n    case FunctionComponent:\n    case ForwardRef:\n    case MemoComponent:\n    case SimpleMemoComponent:\n      {\n        recursivelyTraverseMutationEffects(root, finishedWork);\n        commitReconciliationEffects(finishedWork);\n\n        if (flags & Update) {\n          try {\n            commitHookEffectListUnmount(Insertion | HasEffect, finishedWork, finishedWork.return);\n            commitHookEffectListMount(Insertion | HasEffect, finishedWork);\n          } catch (error) {\n            captureCommitPhaseError(finishedWork, finishedWork.return, error);\n          } // Layout effects are destroyed during the mutation phase so that all\n          // destroy functions for all fibers are called before any create functions.\n          // This prevents sibling component effects from interfering with each other,\n          // e.g. a destroy function in one component should never override a ref set\n          // by a create function in another component during the same commit.\n\n\n          if ( finishedWork.mode & ProfileMode) {\n            try {\n              startLayoutEffectTimer();\n              commitHookEffectListUnmount(Layout | HasEffect, finishedWork, finishedWork.return);\n            } catch (error) {\n              captureCommitPhaseError(finishedWork, finishedWork.return, error);\n            }\n\n            recordLayoutEffectDuration(finishedWork);\n          } else {\n            try {\n              commitHookEffectListUnmount(Layout | HasEffect, finishedWork, finishedWork.return);\n            } catch (error) {\n              captureCommitPhaseError(finishedWork, finishedWork.return, error);\n            }\n          }\n        }\n\n        return;\n      }\n\n    case ClassComponent:\n      {\n        recursivelyTraverseMutationEffects(root, finishedWork);\n        commitReconciliationEffects(finishedWork);\n\n        if (flags & Ref) {\n          if (current !== null) {\n            safelyDetachRef(current, current.return);\n          }\n        }\n\n        return;\n      }\n\n    case HostComponent:\n      {\n        recursivelyTraverseMutationEffects(root, finishedWork);\n        commitReconciliationEffects(finishedWork);\n\n        if (flags & Ref) {\n          if (current !== null) {\n            safelyDetachRef(current, current.return);\n          }\n        }\n\n        {\n          // TODO: ContentReset gets cleared by the children during the commit\n          // phase. This is a refactor hazard because it means we must read\n          // flags the flags after `commitReconciliationEffects` has already run;\n          // the order matters. We should refactor so that ContentReset does not\n          // rely on mutating the flag during commit. Like by setting a flag\n          // during the render phase instead.\n          if (finishedWork.flags & ContentReset) {\n            var instance = finishedWork.stateNode;\n\n            try {\n              resetTextContent(instance);\n            } catch (error) {\n              captureCommitPhaseError(finishedWork, finishedWork.return, error);\n            }\n          }\n\n          if (flags & Update) {\n            var _instance4 = finishedWork.stateNode;\n\n            if (_instance4 != null) {\n              // Commit the work prepared earlier.\n              var newProps = finishedWork.memoizedProps; // For hydration we reuse the update path but we treat the oldProps\n              // as the newProps. The updatePayload will contain the real change in\n              // this case.\n\n              var oldProps = current !== null ? current.memoizedProps : newProps;\n              var type = finishedWork.type; // TODO: Type the updateQueue to be specific to host components.\n\n              var updatePayload = finishedWork.updateQueue;\n              finishedWork.updateQueue = null;\n\n              if (updatePayload !== null) {\n                try {\n                  commitUpdate(_instance4, updatePayload, type, oldProps, newProps, finishedWork);\n                } catch (error) {\n                  captureCommitPhaseError(finishedWork, finishedWork.return, error);\n                }\n              }\n            }\n          }\n        }\n\n        return;\n      }\n\n    case HostText:\n      {\n        recursivelyTraverseMutationEffects(root, finishedWork);\n        commitReconciliationEffects(finishedWork);\n\n        if (flags & Update) {\n          {\n            if (finishedWork.stateNode === null) {\n              throw new Error('This should have a text node initialized. This error is likely ' + 'caused by a bug in React. Please file an issue.');\n            }\n\n            var textInstance = finishedWork.stateNode;\n            var newText = finishedWork.memoizedProps; // For hydration we reuse the update path but we treat the oldProps\n            // as the newProps. The updatePayload will contain the real change in\n            // this case.\n\n            var oldText = current !== null ? current.memoizedProps : newText;\n\n            try {\n              commitTextUpdate(textInstance, oldText, newText);\n            } catch (error) {\n              captureCommitPhaseError(finishedWork, finishedWork.return, error);\n            }\n          }\n        }\n\n        return;\n      }\n\n    case HostRoot:\n      {\n        recursivelyTraverseMutationEffects(root, finishedWork);\n        commitReconciliationEffects(finishedWork);\n\n        if (flags & Update) {\n          {\n            if (current !== null) {\n              var prevRootState = current.memoizedState;\n\n              if (prevRootState.isDehydrated) {\n                try {\n                  commitHydratedContainer(root.containerInfo);\n                } catch (error) {\n                  captureCommitPhaseError(finishedWork, finishedWork.return, error);\n                }\n              }\n            }\n          }\n        }\n\n        return;\n      }\n\n    case HostPortal:\n      {\n        recursivelyTraverseMutationEffects(root, finishedWork);\n        commitReconciliationEffects(finishedWork);\n\n        return;\n      }\n\n    case SuspenseComponent:\n      {\n        recursivelyTraverseMutationEffects(root, finishedWork);\n        commitReconciliationEffects(finishedWork);\n        var offscreenFiber = finishedWork.child;\n\n        if (offscreenFiber.flags & Visibility) {\n          var offscreenInstance = offscreenFiber.stateNode;\n          var newState = offscreenFiber.memoizedState;\n          var isHidden = newState !== null; // Track the current state on the Offscreen instance so we can\n          // read it during an event\n\n          offscreenInstance.isHidden = isHidden;\n\n          if (isHidden) {\n            var wasHidden = offscreenFiber.alternate !== null && offscreenFiber.alternate.memoizedState !== null;\n\n            if (!wasHidden) {\n              // TODO: Move to passive phase\n              markCommitTimeOfFallback();\n            }\n          }\n        }\n\n        if (flags & Update) {\n          try {\n            commitSuspenseCallback(finishedWork);\n          } catch (error) {\n            captureCommitPhaseError(finishedWork, finishedWork.return, error);\n          }\n\n          attachSuspenseRetryListeners(finishedWork);\n        }\n\n        return;\n      }\n\n    case OffscreenComponent:\n      {\n        var _wasHidden = current !== null && current.memoizedState !== null;\n\n        if ( // TODO: Remove this dead flag\n         finishedWork.mode & ConcurrentMode) {\n          // Before committing the children, track on the stack whether this\n          // offscreen subtree was already hidden, so that we don't unmount the\n          // effects again.\n          var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden;\n          offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || _wasHidden;\n          recursivelyTraverseMutationEffects(root, finishedWork);\n          offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n        } else {\n          recursivelyTraverseMutationEffects(root, finishedWork);\n        }\n\n        commitReconciliationEffects(finishedWork);\n\n        if (flags & Visibility) {\n          var _offscreenInstance = finishedWork.stateNode;\n          var _newState = finishedWork.memoizedState;\n\n          var _isHidden = _newState !== null;\n\n          var offscreenBoundary = finishedWork; // Track the current state on the Offscreen instance so we can\n          // read it during an event\n\n          _offscreenInstance.isHidden = _isHidden;\n\n          {\n            if (_isHidden) {\n              if (!_wasHidden) {\n                if ((offscreenBoundary.mode & ConcurrentMode) !== NoMode) {\n                  nextEffect = offscreenBoundary;\n                  var offscreenChild = offscreenBoundary.child;\n\n                  while (offscreenChild !== null) {\n                    nextEffect = offscreenChild;\n                    disappearLayoutEffects_begin(offscreenChild);\n                    offscreenChild = offscreenChild.sibling;\n                  }\n                }\n              }\n            }\n          }\n\n          {\n            // TODO: This needs to run whenever there's an insertion or update\n            // inside a hidden Offscreen tree.\n            hideOrUnhideAllChildren(offscreenBoundary, _isHidden);\n          }\n        }\n\n        return;\n      }\n\n    case SuspenseListComponent:\n      {\n        recursivelyTraverseMutationEffects(root, finishedWork);\n        commitReconciliationEffects(finishedWork);\n\n        if (flags & Update) {\n          attachSuspenseRetryListeners(finishedWork);\n        }\n\n        return;\n      }\n\n    case ScopeComponent:\n      {\n\n        return;\n      }\n\n    default:\n      {\n        recursivelyTraverseMutationEffects(root, finishedWork);\n        commitReconciliationEffects(finishedWork);\n        return;\n      }\n  }\n}\n\nfunction commitReconciliationEffects(finishedWork) {\n  // Placement effects (insertions, reorders) can be scheduled on any fiber\n  // type. They needs to happen after the children effects have fired, but\n  // before the effects on this fiber have fired.\n  var flags = finishedWork.flags;\n\n  if (flags & Placement) {\n    try {\n      commitPlacement(finishedWork);\n    } catch (error) {\n      captureCommitPhaseError(finishedWork, finishedWork.return, error);\n    } // Clear the \"placement\" from effect tag so that we know that this is\n    // inserted, before any life-cycles like componentDidMount gets called.\n    // TODO: findDOMNode doesn't rely on this any more but isMounted does\n    // and isMounted is deprecated anyway so we should be able to kill this.\n\n\n    finishedWork.flags &= ~Placement;\n  }\n\n  if (flags & Hydrating) {\n    finishedWork.flags &= ~Hydrating;\n  }\n}\n\nfunction commitLayoutEffects(finishedWork, root, committedLanes) {\n  inProgressLanes = committedLanes;\n  inProgressRoot = root;\n  nextEffect = finishedWork;\n  commitLayoutEffects_begin(finishedWork, root, committedLanes);\n  inProgressLanes = null;\n  inProgressRoot = null;\n}\n\nfunction commitLayoutEffects_begin(subtreeRoot, root, committedLanes) {\n  // Suspense layout effects semantics don't change for legacy roots.\n  var isModernRoot = (subtreeRoot.mode & ConcurrentMode) !== NoMode;\n\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n    var firstChild = fiber.child;\n\n    if ( fiber.tag === OffscreenComponent && isModernRoot) {\n      // Keep track of the current Offscreen stack's state.\n      var isHidden = fiber.memoizedState !== null;\n      var newOffscreenSubtreeIsHidden = isHidden || offscreenSubtreeIsHidden;\n\n      if (newOffscreenSubtreeIsHidden) {\n        // The Offscreen tree is hidden. Skip over its layout effects.\n        commitLayoutMountEffects_complete(subtreeRoot, root, committedLanes);\n        continue;\n      } else {\n        // TODO (Offscreen) Also check: subtreeFlags & LayoutMask\n        var current = fiber.alternate;\n        var wasHidden = current !== null && current.memoizedState !== null;\n        var newOffscreenSubtreeWasHidden = wasHidden || offscreenSubtreeWasHidden;\n        var prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden;\n        var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden; // Traverse the Offscreen subtree with the current Offscreen as the root.\n\n        offscreenSubtreeIsHidden = newOffscreenSubtreeIsHidden;\n        offscreenSubtreeWasHidden = newOffscreenSubtreeWasHidden;\n\n        if (offscreenSubtreeWasHidden && !prevOffscreenSubtreeWasHidden) {\n          // This is the root of a reappearing boundary. Turn its layout effects\n          // back on.\n          nextEffect = fiber;\n          reappearLayoutEffects_begin(fiber);\n        }\n\n        var child = firstChild;\n\n        while (child !== null) {\n          nextEffect = child;\n          commitLayoutEffects_begin(child, // New root; bubble back up to here and stop.\n          root, committedLanes);\n          child = child.sibling;\n        } // Restore Offscreen state and resume in our-progress traversal.\n\n\n        nextEffect = fiber;\n        offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden;\n        offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden;\n        commitLayoutMountEffects_complete(subtreeRoot, root, committedLanes);\n        continue;\n      }\n    }\n\n    if ((fiber.subtreeFlags & LayoutMask) !== NoFlags && firstChild !== null) {\n      firstChild.return = fiber;\n      nextEffect = firstChild;\n    } else {\n      commitLayoutMountEffects_complete(subtreeRoot, root, committedLanes);\n    }\n  }\n}\n\nfunction commitLayoutMountEffects_complete(subtreeRoot, root, committedLanes) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n\n    if ((fiber.flags & LayoutMask) !== NoFlags) {\n      var current = fiber.alternate;\n      setCurrentFiber(fiber);\n\n      try {\n        commitLayoutEffectOnFiber(root, current, fiber, committedLanes);\n      } catch (error) {\n        captureCommitPhaseError(fiber, fiber.return, error);\n      }\n\n      resetCurrentFiber();\n    }\n\n    if (fiber === subtreeRoot) {\n      nextEffect = null;\n      return;\n    }\n\n    var sibling = fiber.sibling;\n\n    if (sibling !== null) {\n      sibling.return = fiber.return;\n      nextEffect = sibling;\n      return;\n    }\n\n    nextEffect = fiber.return;\n  }\n}\n\nfunction disappearLayoutEffects_begin(subtreeRoot) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n    var firstChild = fiber.child; // TODO (Offscreen) Check: flags & (RefStatic | LayoutStatic)\n\n    switch (fiber.tag) {\n      case FunctionComponent:\n      case ForwardRef:\n      case MemoComponent:\n      case SimpleMemoComponent:\n        {\n          if ( fiber.mode & ProfileMode) {\n            try {\n              startLayoutEffectTimer();\n              commitHookEffectListUnmount(Layout, fiber, fiber.return);\n            } finally {\n              recordLayoutEffectDuration(fiber);\n            }\n          } else {\n            commitHookEffectListUnmount(Layout, fiber, fiber.return);\n          }\n\n          break;\n        }\n\n      case ClassComponent:\n        {\n          // TODO (Offscreen) Check: flags & RefStatic\n          safelyDetachRef(fiber, fiber.return);\n          var instance = fiber.stateNode;\n\n          if (typeof instance.componentWillUnmount === 'function') {\n            safelyCallComponentWillUnmount(fiber, fiber.return, instance);\n          }\n\n          break;\n        }\n\n      case HostComponent:\n        {\n          safelyDetachRef(fiber, fiber.return);\n          break;\n        }\n\n      case OffscreenComponent:\n        {\n          // Check if this is a\n          var isHidden = fiber.memoizedState !== null;\n\n          if (isHidden) {\n            // Nested Offscreen tree is already hidden. Don't disappear\n            // its effects.\n            disappearLayoutEffects_complete(subtreeRoot);\n            continue;\n          }\n\n          break;\n        }\n    } // TODO (Offscreen) Check: subtreeFlags & LayoutStatic\n\n\n    if (firstChild !== null) {\n      firstChild.return = fiber;\n      nextEffect = firstChild;\n    } else {\n      disappearLayoutEffects_complete(subtreeRoot);\n    }\n  }\n}\n\nfunction disappearLayoutEffects_complete(subtreeRoot) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n\n    if (fiber === subtreeRoot) {\n      nextEffect = null;\n      return;\n    }\n\n    var sibling = fiber.sibling;\n\n    if (sibling !== null) {\n      sibling.return = fiber.return;\n      nextEffect = sibling;\n      return;\n    }\n\n    nextEffect = fiber.return;\n  }\n}\n\nfunction reappearLayoutEffects_begin(subtreeRoot) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n    var firstChild = fiber.child;\n\n    if (fiber.tag === OffscreenComponent) {\n      var isHidden = fiber.memoizedState !== null;\n\n      if (isHidden) {\n        // Nested Offscreen tree is still hidden. Don't re-appear its effects.\n        reappearLayoutEffects_complete(subtreeRoot);\n        continue;\n      }\n    } // TODO (Offscreen) Check: subtreeFlags & LayoutStatic\n\n\n    if (firstChild !== null) {\n      // This node may have been reused from a previous render, so we can't\n      // assume its return pointer is correct.\n      firstChild.return = fiber;\n      nextEffect = firstChild;\n    } else {\n      reappearLayoutEffects_complete(subtreeRoot);\n    }\n  }\n}\n\nfunction reappearLayoutEffects_complete(subtreeRoot) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect; // TODO (Offscreen) Check: flags & LayoutStatic\n\n    setCurrentFiber(fiber);\n\n    try {\n      reappearLayoutEffectsOnFiber(fiber);\n    } catch (error) {\n      captureCommitPhaseError(fiber, fiber.return, error);\n    }\n\n    resetCurrentFiber();\n\n    if (fiber === subtreeRoot) {\n      nextEffect = null;\n      return;\n    }\n\n    var sibling = fiber.sibling;\n\n    if (sibling !== null) {\n      // This node may have been reused from a previous render, so we can't\n      // assume its return pointer is correct.\n      sibling.return = fiber.return;\n      nextEffect = sibling;\n      return;\n    }\n\n    nextEffect = fiber.return;\n  }\n}\n\nfunction commitPassiveMountEffects(root, finishedWork, committedLanes, committedTransitions) {\n  nextEffect = finishedWork;\n  commitPassiveMountEffects_begin(finishedWork, root, committedLanes, committedTransitions);\n}\n\nfunction commitPassiveMountEffects_begin(subtreeRoot, root, committedLanes, committedTransitions) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n    var firstChild = fiber.child;\n\n    if ((fiber.subtreeFlags & PassiveMask) !== NoFlags && firstChild !== null) {\n      firstChild.return = fiber;\n      nextEffect = firstChild;\n    } else {\n      commitPassiveMountEffects_complete(subtreeRoot, root, committedLanes, committedTransitions);\n    }\n  }\n}\n\nfunction commitPassiveMountEffects_complete(subtreeRoot, root, committedLanes, committedTransitions) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n\n    if ((fiber.flags & Passive) !== NoFlags) {\n      setCurrentFiber(fiber);\n\n      try {\n        commitPassiveMountOnFiber(root, fiber, committedLanes, committedTransitions);\n      } catch (error) {\n        captureCommitPhaseError(fiber, fiber.return, error);\n      }\n\n      resetCurrentFiber();\n    }\n\n    if (fiber === subtreeRoot) {\n      nextEffect = null;\n      return;\n    }\n\n    var sibling = fiber.sibling;\n\n    if (sibling !== null) {\n      sibling.return = fiber.return;\n      nextEffect = sibling;\n      return;\n    }\n\n    nextEffect = fiber.return;\n  }\n}\n\nfunction commitPassiveMountOnFiber(finishedRoot, finishedWork, committedLanes, committedTransitions) {\n  switch (finishedWork.tag) {\n    case FunctionComponent:\n    case ForwardRef:\n    case SimpleMemoComponent:\n      {\n        if ( finishedWork.mode & ProfileMode) {\n          startPassiveEffectTimer();\n\n          try {\n            commitHookEffectListMount(Passive$1 | HasEffect, finishedWork);\n          } finally {\n            recordPassiveEffectDuration(finishedWork);\n          }\n        } else {\n          commitHookEffectListMount(Passive$1 | HasEffect, finishedWork);\n        }\n\n        break;\n      }\n  }\n}\n\nfunction commitPassiveUnmountEffects(firstChild) {\n  nextEffect = firstChild;\n  commitPassiveUnmountEffects_begin();\n}\n\nfunction commitPassiveUnmountEffects_begin() {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n    var child = fiber.child;\n\n    if ((nextEffect.flags & ChildDeletion) !== NoFlags) {\n      var deletions = fiber.deletions;\n\n      if (deletions !== null) {\n        for (var i = 0; i < deletions.length; i++) {\n          var fiberToDelete = deletions[i];\n          nextEffect = fiberToDelete;\n          commitPassiveUnmountEffectsInsideOfDeletedTree_begin(fiberToDelete, fiber);\n        }\n\n        {\n          // A fiber was deleted from this parent fiber, but it's still part of\n          // the previous (alternate) parent fiber's list of children. Because\n          // children are a linked list, an earlier sibling that's still alive\n          // will be connected to the deleted fiber via its `alternate`:\n          //\n          //   live fiber\n          //   --alternate--> previous live fiber\n          //   --sibling--> deleted fiber\n          //\n          // We can't disconnect `alternate` on nodes that haven't been deleted\n          // yet, but we can disconnect the `sibling` and `child` pointers.\n          var previousFiber = fiber.alternate;\n\n          if (previousFiber !== null) {\n            var detachedChild = previousFiber.child;\n\n            if (detachedChild !== null) {\n              previousFiber.child = null;\n\n              do {\n                var detachedSibling = detachedChild.sibling;\n                detachedChild.sibling = null;\n                detachedChild = detachedSibling;\n              } while (detachedChild !== null);\n            }\n          }\n        }\n\n        nextEffect = fiber;\n      }\n    }\n\n    if ((fiber.subtreeFlags & PassiveMask) !== NoFlags && child !== null) {\n      child.return = fiber;\n      nextEffect = child;\n    } else {\n      commitPassiveUnmountEffects_complete();\n    }\n  }\n}\n\nfunction commitPassiveUnmountEffects_complete() {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n\n    if ((fiber.flags & Passive) !== NoFlags) {\n      setCurrentFiber(fiber);\n      commitPassiveUnmountOnFiber(fiber);\n      resetCurrentFiber();\n    }\n\n    var sibling = fiber.sibling;\n\n    if (sibling !== null) {\n      sibling.return = fiber.return;\n      nextEffect = sibling;\n      return;\n    }\n\n    nextEffect = fiber.return;\n  }\n}\n\nfunction commitPassiveUnmountOnFiber(finishedWork) {\n  switch (finishedWork.tag) {\n    case FunctionComponent:\n    case ForwardRef:\n    case SimpleMemoComponent:\n      {\n        if ( finishedWork.mode & ProfileMode) {\n          startPassiveEffectTimer();\n          commitHookEffectListUnmount(Passive$1 | HasEffect, finishedWork, finishedWork.return);\n          recordPassiveEffectDuration(finishedWork);\n        } else {\n          commitHookEffectListUnmount(Passive$1 | HasEffect, finishedWork, finishedWork.return);\n        }\n\n        break;\n      }\n  }\n}\n\nfunction commitPassiveUnmountEffectsInsideOfDeletedTree_begin(deletedSubtreeRoot, nearestMountedAncestor) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect; // Deletion effects fire in parent -> child order\n    // TODO: Check if fiber has a PassiveStatic flag\n\n    setCurrentFiber(fiber);\n    commitPassiveUnmountInsideDeletedTreeOnFiber(fiber, nearestMountedAncestor);\n    resetCurrentFiber();\n    var child = fiber.child; // TODO: Only traverse subtree if it has a PassiveStatic flag. (But, if we\n    // do this, still need to handle `deletedTreeCleanUpLevel` correctly.)\n\n    if (child !== null) {\n      child.return = fiber;\n      nextEffect = child;\n    } else {\n      commitPassiveUnmountEffectsInsideOfDeletedTree_complete(deletedSubtreeRoot);\n    }\n  }\n}\n\nfunction commitPassiveUnmountEffectsInsideOfDeletedTree_complete(deletedSubtreeRoot) {\n  while (nextEffect !== null) {\n    var fiber = nextEffect;\n    var sibling = fiber.sibling;\n    var returnFiber = fiber.return;\n\n    {\n      // Recursively traverse the entire deleted tree and clean up fiber fields.\n      // This is more aggressive than ideal, and the long term goal is to only\n      // have to detach the deleted tree at the root.\n      detachFiberAfterEffects(fiber);\n\n      if (fiber === deletedSubtreeRoot) {\n        nextEffect = null;\n        return;\n      }\n    }\n\n    if (sibling !== null) {\n      sibling.return = returnFiber;\n      nextEffect = sibling;\n      return;\n    }\n\n    nextEffect = returnFiber;\n  }\n}\n\nfunction commitPassiveUnmountInsideDeletedTreeOnFiber(current, nearestMountedAncestor) {\n  switch (current.tag) {\n    case FunctionComponent:\n    case ForwardRef:\n    case SimpleMemoComponent:\n      {\n        if ( current.mode & ProfileMode) {\n          startPassiveEffectTimer();\n          commitHookEffectListUnmount(Passive$1, current, nearestMountedAncestor);\n          recordPassiveEffectDuration(current);\n        } else {\n          commitHookEffectListUnmount(Passive$1, current, nearestMountedAncestor);\n        }\n\n        break;\n      }\n  }\n} // TODO: Reuse reappearLayoutEffects traversal here?\n\n\nfunction invokeLayoutEffectMountInDEV(fiber) {\n  {\n    // We don't need to re-check StrictEffectsMode here.\n    // This function is only called if that check has already passed.\n    switch (fiber.tag) {\n      case FunctionComponent:\n      case ForwardRef:\n      case SimpleMemoComponent:\n        {\n          try {\n            commitHookEffectListMount(Layout | HasEffect, fiber);\n          } catch (error) {\n            captureCommitPhaseError(fiber, fiber.return, error);\n          }\n\n          break;\n        }\n\n      case ClassComponent:\n        {\n          var instance = fiber.stateNode;\n\n          try {\n            instance.componentDidMount();\n          } catch (error) {\n            captureCommitPhaseError(fiber, fiber.return, error);\n          }\n\n          break;\n        }\n    }\n  }\n}\n\nfunction invokePassiveEffectMountInDEV(fiber) {\n  {\n    // We don't need to re-check StrictEffectsMode here.\n    // This function is only called if that check has already passed.\n    switch (fiber.tag) {\n      case FunctionComponent:\n      case ForwardRef:\n      case SimpleMemoComponent:\n        {\n          try {\n            commitHookEffectListMount(Passive$1 | HasEffect, fiber);\n          } catch (error) {\n            captureCommitPhaseError(fiber, fiber.return, error);\n          }\n\n          break;\n        }\n    }\n  }\n}\n\nfunction invokeLayoutEffectUnmountInDEV(fiber) {\n  {\n    // We don't need to re-check StrictEffectsMode here.\n    // This function is only called if that check has already passed.\n    switch (fiber.tag) {\n      case FunctionComponent:\n      case ForwardRef:\n      case SimpleMemoComponent:\n        {\n          try {\n            commitHookEffectListUnmount(Layout | HasEffect, fiber, fiber.return);\n          } catch (error) {\n            captureCommitPhaseError(fiber, fiber.return, error);\n          }\n\n          break;\n        }\n\n      case ClassComponent:\n        {\n          var instance = fiber.stateNode;\n\n          if (typeof instance.componentWillUnmount === 'function') {\n            safelyCallComponentWillUnmount(fiber, fiber.return, instance);\n          }\n\n          break;\n        }\n    }\n  }\n}\n\nfunction invokePassiveEffectUnmountInDEV(fiber) {\n  {\n    // We don't need to re-check StrictEffectsMode here.\n    // This function is only called if that check has already passed.\n    switch (fiber.tag) {\n      case FunctionComponent:\n      case ForwardRef:\n      case SimpleMemoComponent:\n        {\n          try {\n            commitHookEffectListUnmount(Passive$1 | HasEffect, fiber, fiber.return);\n          } catch (error) {\n            captureCommitPhaseError(fiber, fiber.return, error);\n          }\n        }\n    }\n  }\n}\n\nvar COMPONENT_TYPE = 0;\nvar HAS_PSEUDO_CLASS_TYPE = 1;\nvar ROLE_TYPE = 2;\nvar TEST_NAME_TYPE = 3;\nvar TEXT_TYPE = 4;\n\nif (typeof Symbol === 'function' && Symbol.for) {\n  var symbolFor = Symbol.for;\n  COMPONENT_TYPE = symbolFor('selector.component');\n  HAS_PSEUDO_CLASS_TYPE = symbolFor('selector.has_pseudo_class');\n  ROLE_TYPE = symbolFor('selector.role');\n  TEST_NAME_TYPE = symbolFor('selector.test_id');\n  TEXT_TYPE = symbolFor('selector.text');\n}\nvar commitHooks = [];\nfunction onCommitRoot$1() {\n  {\n    commitHooks.forEach(function (commitHook) {\n      return commitHook();\n    });\n  }\n}\n\nvar ReactCurrentActQueue = ReactSharedInternals.ReactCurrentActQueue;\nfunction isLegacyActEnvironment(fiber) {\n  {\n    // Legacy mode. We preserve the behavior of React 17's act. It assumes an\n    // act environment whenever `jest` is defined, but you can still turn off\n    // spurious warnings by setting IS_REACT_ACT_ENVIRONMENT explicitly\n    // to false.\n    var isReactActEnvironmentGlobal = // $FlowExpectedError \u2013 Flow doesn't know about IS_REACT_ACT_ENVIRONMENT global\n    typeof IS_REACT_ACT_ENVIRONMENT !== 'undefined' ? IS_REACT_ACT_ENVIRONMENT : undefined; // $FlowExpectedError - Flow doesn't know about jest\n\n    var jestIsDefined = typeof jest !== 'undefined';\n    return  jestIsDefined && isReactActEnvironmentGlobal !== false;\n  }\n}\nfunction isConcurrentActEnvironment() {\n  {\n    var isReactActEnvironmentGlobal = // $FlowExpectedError \u2013 Flow doesn't know about IS_REACT_ACT_ENVIRONMENT global\n    typeof IS_REACT_ACT_ENVIRONMENT !== 'undefined' ? IS_REACT_ACT_ENVIRONMENT : undefined;\n\n    if (!isReactActEnvironmentGlobal && ReactCurrentActQueue.current !== null) {\n      // TODO: Include link to relevant documentation page.\n      error('The current testing environment is not configured to support ' + 'act(...)');\n    }\n\n    return isReactActEnvironmentGlobal;\n  }\n}\n\nvar ceil = Math.ceil;\nvar ReactCurrentDispatcher$2 = ReactSharedInternals.ReactCurrentDispatcher,\n    ReactCurrentOwner$2 = ReactSharedInternals.ReactCurrentOwner,\n    ReactCurrentBatchConfig$3 = ReactSharedInternals.ReactCurrentBatchConfig,\n    ReactCurrentActQueue$1 = ReactSharedInternals.ReactCurrentActQueue;\nvar NoContext =\n/*             */\n0;\nvar BatchedContext =\n/*               */\n1;\nvar RenderContext =\n/*                */\n2;\nvar CommitContext =\n/*                */\n4;\nvar RootInProgress = 0;\nvar RootFatalErrored = 1;\nvar RootErrored = 2;\nvar RootSuspended = 3;\nvar RootSuspendedWithDelay = 4;\nvar RootCompleted = 5;\nvar RootDidNotComplete = 6; // Describes where we are in the React execution stack\n\nvar executionContext = NoContext; // The root we're working on\n\nvar workInProgressRoot = null; // The fiber we're working on\n\nvar workInProgress = null; // The lanes we're rendering\n\nvar workInProgressRootRenderLanes = NoLanes; // Stack that allows components to change the render lanes for its subtree\n// This is a superset of the lanes we started working on at the root. The only\n// case where it's different from `workInProgressRootRenderLanes` is when we\n// enter a subtree that is hidden and needs to be unhidden: Suspense and\n// Offscreen component.\n//\n// Most things in the work loop should deal with workInProgressRootRenderLanes.\n// Most things in begin/complete phases should deal with subtreeRenderLanes.\n\nvar subtreeRenderLanes = NoLanes;\nvar subtreeRenderLanesCursor = createCursor(NoLanes); // Whether to root completed, errored, suspended, etc.\n\nvar workInProgressRootExitStatus = RootInProgress; // A fatal error, if one is thrown\n\nvar workInProgressRootFatalError = null; // \"Included\" lanes refer to lanes that were worked on during this render. It's\n// slightly different than `renderLanes` because `renderLanes` can change as you\n// enter and exit an Offscreen tree. This value is the combination of all render\n// lanes for the entire render phase.\n\nvar workInProgressRootIncludedLanes = NoLanes; // The work left over by components that were visited during this render. Only\n// includes unprocessed updates, not work in bailed out children.\n\nvar workInProgressRootSkippedLanes = NoLanes; // Lanes that were updated (in an interleaved event) during this render.\n\nvar workInProgressRootInterleavedUpdatedLanes = NoLanes; // Lanes that were updated during the render phase (*not* an interleaved event).\n\nvar workInProgressRootPingedLanes = NoLanes; // Errors that are thrown during the render phase.\n\nvar workInProgressRootConcurrentErrors = null; // These are errors that we recovered from without surfacing them to the UI.\n// We will log them once the tree commits.\n\nvar workInProgressRootRecoverableErrors = null; // The most recent time we committed a fallback. This lets us ensure a train\n// model where we don't commit new loading states in too quick succession.\n\nvar globalMostRecentFallbackTime = 0;\nvar FALLBACK_THROTTLE_MS = 500; // The absolute time for when we should start giving up on rendering\n// more and prefer CPU suspense heuristics instead.\n\nvar workInProgressRootRenderTargetTime = Infinity; // How long a render is supposed to take before we start following CPU\n// suspense heuristics and opt out of rendering more content.\n\nvar RENDER_TIMEOUT_MS = 500;\nvar workInProgressTransitions = null;\n\nfunction resetRenderTimer() {\n  workInProgressRootRenderTargetTime = now() + RENDER_TIMEOUT_MS;\n}\n\nfunction getRenderTargetTime() {\n  return workInProgressRootRenderTargetTime;\n}\nvar hasUncaughtError = false;\nvar firstUncaughtError = null;\nvar legacyErrorBoundariesThatAlreadyFailed = null; // Only used when enableProfilerNestedUpdateScheduledHook is true;\nvar rootDoesHavePassiveEffects = false;\nvar rootWithPendingPassiveEffects = null;\nvar pendingPassiveEffectsLanes = NoLanes;\nvar pendingPassiveProfilerEffects = [];\nvar pendingPassiveTransitions = null; // Use these to prevent an infinite loop of nested updates\n\nvar NESTED_UPDATE_LIMIT = 50;\nvar nestedUpdateCount = 0;\nvar rootWithNestedUpdates = null;\nvar isFlushingPassiveEffects = false;\nvar didScheduleUpdateDuringPassiveEffects = false;\nvar NESTED_PASSIVE_UPDATE_LIMIT = 50;\nvar nestedPassiveUpdateCount = 0;\nvar rootWithPassiveNestedUpdates = null; // If two updates are scheduled within the same event, we should treat their\n// event times as simultaneous, even if the actual clock time has advanced\n// between the first and second call.\n\nvar currentEventTime = NoTimestamp;\nvar currentEventTransitionLane = NoLanes;\nvar isRunningInsertionEffect = false;\nfunction getWorkInProgressRoot() {\n  return workInProgressRoot;\n}\nfunction requestEventTime() {\n  if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n    // We're inside React, so it's fine to read the actual time.\n    return now();\n  } // We're not inside React, so we may be in the middle of a browser event.\n\n\n  if (currentEventTime !== NoTimestamp) {\n    // Use the same start time for all updates until we enter React again.\n    return currentEventTime;\n  } // This is the first update since React yielded. Compute a new start time.\n\n\n  currentEventTime = now();\n  return currentEventTime;\n}\nfunction requestUpdateLane(fiber) {\n  // Special cases\n  var mode = fiber.mode;\n\n  if ((mode & ConcurrentMode) === NoMode) {\n    return SyncLane;\n  } else if ( (executionContext & RenderContext) !== NoContext && workInProgressRootRenderLanes !== NoLanes) {\n    // This is a render phase update. These are not officially supported. The\n    // old behavior is to give this the same \"thread\" (lanes) as\n    // whatever is currently rendering. So if you call `setState` on a component\n    // that happens later in the same render, it will flush. Ideally, we want to\n    // remove the special case and treat them as if they came from an\n    // interleaved event. Regardless, this pattern is not officially supported.\n    // This behavior is only a fallback. The flag only exists until we can roll\n    // out the setState warning, since existing code might accidentally rely on\n    // the current behavior.\n    return pickArbitraryLane(workInProgressRootRenderLanes);\n  }\n\n  var isTransition = requestCurrentTransition() !== NoTransition;\n\n  if (isTransition) {\n    if ( ReactCurrentBatchConfig$3.transition !== null) {\n      var transition = ReactCurrentBatchConfig$3.transition;\n\n      if (!transition._updatedFibers) {\n        transition._updatedFibers = new Set();\n      }\n\n      transition._updatedFibers.add(fiber);\n    } // The algorithm for assigning an update to a lane should be stable for all\n    // updates at the same priority within the same event. To do this, the\n    // inputs to the algorithm must be the same.\n    //\n    // The trick we use is to cache the first of each of these inputs within an\n    // event. Then reset the cached values once we can be sure the event is\n    // over. Our heuristic for that is whenever we enter a concurrent work loop.\n\n\n    if (currentEventTransitionLane === NoLane) {\n      // All transitions within the same event are assigned the same lane.\n      currentEventTransitionLane = claimNextTransitionLane();\n    }\n\n    return currentEventTransitionLane;\n  } // Updates originating inside certain React methods, like flushSync, have\n  // their priority set by tracking it with a context variable.\n  //\n  // The opaque type returned by the host config is internally a lane, so we can\n  // use that directly.\n  // TODO: Move this type conversion to the event priority module.\n\n\n  var updateLane = getCurrentUpdatePriority();\n\n  if (updateLane !== NoLane) {\n    return updateLane;\n  } // This update originated outside React. Ask the host environment for an\n  // appropriate priority, based on the type of event.\n  //\n  // The opaque type returned by the host config is internally a lane, so we can\n  // use that directly.\n  // TODO: Move this type conversion to the event priority module.\n\n\n  var eventLane = getCurrentEventPriority();\n  return eventLane;\n}\n\nfunction requestRetryLane(fiber) {\n  // This is a fork of `requestUpdateLane` designed specifically for Suspense\n  // \"retries\" \u2014 a special update that attempts to flip a Suspense boundary\n  // from its placeholder state to its primary/resolved state.\n  // Special cases\n  var mode = fiber.mode;\n\n  if ((mode & ConcurrentMode) === NoMode) {\n    return SyncLane;\n  }\n\n  return claimNextRetryLane();\n}\n\nfunction scheduleUpdateOnFiber(root, fiber, lane, eventTime) {\n  checkForNestedUpdates();\n\n  {\n    if (isRunningInsertionEffect) {\n      error('useInsertionEffect must not schedule updates.');\n    }\n  }\n\n  {\n    if (isFlushingPassiveEffects) {\n      didScheduleUpdateDuringPassiveEffects = true;\n    }\n  } // Mark that the root has a pending update.\n\n\n  markRootUpdated(root, lane, eventTime);\n\n  if ((executionContext & RenderContext) !== NoLanes && root === workInProgressRoot) {\n    // This update was dispatched during the render phase. This is a mistake\n    // if the update originates from user space (with the exception of local\n    // hook updates, which are handled differently and don't reach this\n    // function), but there are some internal React features that use this as\n    // an implementation detail, like selective hydration.\n    warnAboutRenderPhaseUpdatesInDEV(fiber); // Track lanes that were updated during the render phase\n  } else {\n    // This is a normal update, scheduled from outside the render phase. For\n    // example, during an input event.\n    {\n      if (isDevToolsPresent) {\n        addFiberToLanesMap(root, fiber, lane);\n      }\n    }\n\n    warnIfUpdatesNotWrappedWithActDEV(fiber);\n\n    if (root === workInProgressRoot) {\n      // Received an update to a tree that's in the middle of rendering. Mark\n      // that there was an interleaved update work on this root. Unless the\n      // `deferRenderPhaseUpdateToNextBatch` flag is off and this is a render\n      // phase update. In that case, we don't treat render phase updates as if\n      // they were interleaved, for backwards compat reasons.\n      if ( (executionContext & RenderContext) === NoContext) {\n        workInProgressRootInterleavedUpdatedLanes = mergeLanes(workInProgressRootInterleavedUpdatedLanes, lane);\n      }\n\n      if (workInProgressRootExitStatus === RootSuspendedWithDelay) {\n        // The root already suspended with a delay, which means this render\n        // definitely won't finish. Since we have a new update, let's mark it as\n        // suspended now, right before marking the incoming update. This has the\n        // effect of interrupting the current render and switching to the update.\n        // TODO: Make sure this doesn't override pings that happen while we've\n        // already started rendering.\n        markRootSuspended$1(root, workInProgressRootRenderLanes);\n      }\n    }\n\n    ensureRootIsScheduled(root, eventTime);\n\n    if (lane === SyncLane && executionContext === NoContext && (fiber.mode & ConcurrentMode) === NoMode && // Treat `act` as if it's inside `batchedUpdates`, even in legacy mode.\n    !( ReactCurrentActQueue$1.isBatchingLegacy)) {\n      // Flush the synchronous work now, unless we're already working or inside\n      // a batch. This is intentionally inside scheduleUpdateOnFiber instead of\n      // scheduleCallbackForFiber to preserve the ability to schedule a callback\n      // without immediately flushing it. We only do this for user-initiated\n      // updates, to preserve historical behavior of legacy mode.\n      resetRenderTimer();\n      flushSyncCallbacksOnlyInLegacyMode();\n    }\n  }\n}\nfunction scheduleInitialHydrationOnRoot(root, lane, eventTime) {\n  // This is a special fork of scheduleUpdateOnFiber that is only used to\n  // schedule the initial hydration of a root that has just been created. Most\n  // of the stuff in scheduleUpdateOnFiber can be skipped.\n  //\n  // The main reason for this separate path, though, is to distinguish the\n  // initial children from subsequent updates. In fully client-rendered roots\n  // (createRoot instead of hydrateRoot), all top-level renders are modeled as\n  // updates, but hydration roots are special because the initial render must\n  // match what was rendered on the server.\n  var current = root.current;\n  current.lanes = lane;\n  markRootUpdated(root, lane, eventTime);\n  ensureRootIsScheduled(root, eventTime);\n}\nfunction isUnsafeClassRenderPhaseUpdate(fiber) {\n  // Check if this is a render phase update. Only called by class components,\n  // which special (deprecated) behavior for UNSAFE_componentWillReceive props.\n  return (// TODO: Remove outdated deferRenderPhaseUpdateToNextBatch experiment. We\n    // decided not to enable it.\n     (executionContext & RenderContext) !== NoContext\n  );\n} // Use this function to schedule a task for a root. There's only one task per\n// root; if a task was already scheduled, we'll check to make sure the priority\n// of the existing task is the same as the priority of the next level that the\n// root has work on. This function is called on every update, and right before\n// exiting a task.\n\nfunction ensureRootIsScheduled(root, currentTime) {\n  var existingCallbackNode = root.callbackNode; // Check if any lanes are being starved by other work. If so, mark them as\n  // expired so we know to work on those next.\n\n  markStarvedLanesAsExpired(root, currentTime); // Determine the next lanes to work on, and their priority.\n\n  var nextLanes = getNextLanes(root, root === workInProgressRoot ? workInProgressRootRenderLanes : NoLanes);\n\n  if (nextLanes === NoLanes) {\n    // Special case: There's nothing to work on.\n    if (existingCallbackNode !== null) {\n      cancelCallback$1(existingCallbackNode);\n    }\n\n    root.callbackNode = null;\n    root.callbackPriority = NoLane;\n    return;\n  } // We use the highest priority lane to represent the priority of the callback.\n\n\n  var newCallbackPriority = getHighestPriorityLane(nextLanes); // Check if there's an existing task. We may be able to reuse it.\n\n  var existingCallbackPriority = root.callbackPriority;\n\n  if (existingCallbackPriority === newCallbackPriority && // Special case related to `act`. If the currently scheduled task is a\n  // Scheduler task, rather than an `act` task, cancel it and re-scheduled\n  // on the `act` queue.\n  !( ReactCurrentActQueue$1.current !== null && existingCallbackNode !== fakeActCallbackNode)) {\n    {\n      // If we're going to re-use an existing task, it needs to exist.\n      // Assume that discrete update microtasks are non-cancellable and null.\n      // TODO: Temporary until we confirm this warning is not fired.\n      if (existingCallbackNode == null && existingCallbackPriority !== SyncLane) {\n        error('Expected scheduled callback to exist. This error is likely caused by a bug in React. Please file an issue.');\n      }\n    } // The priority hasn't changed. We can reuse the existing task. Exit.\n\n\n    return;\n  }\n\n  if (existingCallbackNode != null) {\n    // Cancel the existing callback. We'll schedule a new one below.\n    cancelCallback$1(existingCallbackNode);\n  } // Schedule a new callback.\n\n\n  var newCallbackNode;\n\n  if (newCallbackPriority === SyncLane) {\n    // Special case: Sync React callbacks are scheduled on a special\n    // internal queue\n    if (root.tag === LegacyRoot) {\n      if ( ReactCurrentActQueue$1.isBatchingLegacy !== null) {\n        ReactCurrentActQueue$1.didScheduleLegacyUpdate = true;\n      }\n\n      scheduleLegacySyncCallback(performSyncWorkOnRoot.bind(null, root));\n    } else {\n      scheduleSyncCallback(performSyncWorkOnRoot.bind(null, root));\n    }\n\n    {\n      // Flush the queue in a microtask.\n      if ( ReactCurrentActQueue$1.current !== null) {\n        // Inside `act`, use our internal `act` queue so that these get flushed\n        // at the end of the current scope even when using the sync version\n        // of `act`.\n        ReactCurrentActQueue$1.current.push(flushSyncCallbacks);\n      } else {\n        scheduleMicrotask(function () {\n          // In Safari, appending an iframe forces microtasks to run.\n          // https://github.com/facebook/react/issues/22459\n          // We don't support running callbacks in the middle of render\n          // or commit so we need to check against that.\n          if ((executionContext & (RenderContext | CommitContext)) === NoContext) {\n            // Note that this would still prematurely flush the callbacks\n            // if this happens outside render or commit phase (e.g. in an event).\n            flushSyncCallbacks();\n          }\n        });\n      }\n    }\n\n    newCallbackNode = null;\n  } else {\n    var schedulerPriorityLevel;\n\n    switch (lanesToEventPriority(nextLanes)) {\n      case DiscreteEventPriority:\n        schedulerPriorityLevel = ImmediatePriority;\n        break;\n\n      case ContinuousEventPriority:\n        schedulerPriorityLevel = UserBlockingPriority;\n        break;\n\n      case DefaultEventPriority:\n        schedulerPriorityLevel = NormalPriority;\n        break;\n\n      case IdleEventPriority:\n        schedulerPriorityLevel = IdlePriority;\n        break;\n\n      default:\n        schedulerPriorityLevel = NormalPriority;\n        break;\n    }\n\n    newCallbackNode = scheduleCallback$1(schedulerPriorityLevel, performConcurrentWorkOnRoot.bind(null, root));\n  }\n\n  root.callbackPriority = newCallbackPriority;\n  root.callbackNode = newCallbackNode;\n} // This is the entry point for every concurrent task, i.e. anything that\n// goes through Scheduler.\n\n\nfunction performConcurrentWorkOnRoot(root, didTimeout) {\n  {\n    resetNestedUpdateFlag();\n  } // Since we know we're in a React event, we can clear the current\n  // event time. The next update will compute a new event time.\n\n\n  currentEventTime = NoTimestamp;\n  currentEventTransitionLane = NoLanes;\n\n  if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n    throw new Error('Should not already be working.');\n  } // Flush any pending passive effects before deciding which lanes to work on,\n  // in case they schedule additional work.\n\n\n  var originalCallbackNode = root.callbackNode;\n  var didFlushPassiveEffects = flushPassiveEffects();\n\n  if (didFlushPassiveEffects) {\n    // Something in the passive effect phase may have canceled the current task.\n    // Check if the task node for this root was changed.\n    if (root.callbackNode !== originalCallbackNode) {\n      // The current task was canceled. Exit. We don't need to call\n      // `ensureRootIsScheduled` because the check above implies either that\n      // there's a new task, or that there's no remaining work on this root.\n      return null;\n    }\n  } // Determine the next lanes to work on, using the fields stored\n  // on the root.\n\n\n  var lanes = getNextLanes(root, root === workInProgressRoot ? workInProgressRootRenderLanes : NoLanes);\n\n  if (lanes === NoLanes) {\n    // Defensive coding. This is never expected to happen.\n    return null;\n  } // We disable time-slicing in some cases: if the work has been CPU-bound\n  // for too long (\"expired\" work, to prevent starvation), or we're in\n  // sync-updates-by-default mode.\n  // TODO: We only check `didTimeout` defensively, to account for a Scheduler\n  // bug we're still investigating. Once the bug in Scheduler is fixed,\n  // we can remove this, since we track expiration ourselves.\n\n\n  var shouldTimeSlice = !includesBlockingLane(root, lanes) && !includesExpiredLane(root, lanes) && ( !didTimeout);\n  var exitStatus = shouldTimeSlice ? renderRootConcurrent(root, lanes) : renderRootSync(root, lanes);\n\n  if (exitStatus !== RootInProgress) {\n    if (exitStatus === RootErrored) {\n      // If something threw an error, try rendering one more time. We'll\n      // render synchronously to block concurrent data mutations, and we'll\n      // includes all pending updates are included. If it still fails after\n      // the second attempt, we'll give up and commit the resulting tree.\n      var errorRetryLanes = getLanesToRetrySynchronouslyOnError(root);\n\n      if (errorRetryLanes !== NoLanes) {\n        lanes = errorRetryLanes;\n        exitStatus = recoverFromConcurrentError(root, errorRetryLanes);\n      }\n    }\n\n    if (exitStatus === RootFatalErrored) {\n      var fatalError = workInProgressRootFatalError;\n      prepareFreshStack(root, NoLanes);\n      markRootSuspended$1(root, lanes);\n      ensureRootIsScheduled(root, now());\n      throw fatalError;\n    }\n\n    if (exitStatus === RootDidNotComplete) {\n      // The render unwound without completing the tree. This happens in special\n      // cases where need to exit the current render without producing a\n      // consistent tree or committing.\n      //\n      // This should only happen during a concurrent render, not a discrete or\n      // synchronous update. We should have already checked for this when we\n      // unwound the stack.\n      markRootSuspended$1(root, lanes);\n    } else {\n      // The render completed.\n      // Check if this render may have yielded to a concurrent event, and if so,\n      // confirm that any newly rendered stores are consistent.\n      // TODO: It's possible that even a concurrent render may never have yielded\n      // to the main thread, if it was fast enough, or if it expired. We could\n      // skip the consistency check in that case, too.\n      var renderWasConcurrent = !includesBlockingLane(root, lanes);\n      var finishedWork = root.current.alternate;\n\n      if (renderWasConcurrent && !isRenderConsistentWithExternalStores(finishedWork)) {\n        // A store was mutated in an interleaved event. Render again,\n        // synchronously, to block further mutations.\n        exitStatus = renderRootSync(root, lanes); // We need to check again if something threw\n\n        if (exitStatus === RootErrored) {\n          var _errorRetryLanes = getLanesToRetrySynchronouslyOnError(root);\n\n          if (_errorRetryLanes !== NoLanes) {\n            lanes = _errorRetryLanes;\n            exitStatus = recoverFromConcurrentError(root, _errorRetryLanes); // We assume the tree is now consistent because we didn't yield to any\n            // concurrent events.\n          }\n        }\n\n        if (exitStatus === RootFatalErrored) {\n          var _fatalError = workInProgressRootFatalError;\n          prepareFreshStack(root, NoLanes);\n          markRootSuspended$1(root, lanes);\n          ensureRootIsScheduled(root, now());\n          throw _fatalError;\n        }\n      } // We now have a consistent tree. The next step is either to commit it,\n      // or, if something suspended, wait to commit it after a timeout.\n\n\n      root.finishedWork = finishedWork;\n      root.finishedLanes = lanes;\n      finishConcurrentRender(root, exitStatus, lanes);\n    }\n  }\n\n  ensureRootIsScheduled(root, now());\n\n  if (root.callbackNode === originalCallbackNode) {\n    // The task node scheduled for this root is the same one that's\n    // currently executed. Need to return a continuation.\n    return performConcurrentWorkOnRoot.bind(null, root);\n  }\n\n  return null;\n}\n\nfunction recoverFromConcurrentError(root, errorRetryLanes) {\n  // If an error occurred during hydration, discard server response and fall\n  // back to client side render.\n  // Before rendering again, save the errors from the previous attempt.\n  var errorsFromFirstAttempt = workInProgressRootConcurrentErrors;\n\n  if (isRootDehydrated(root)) {\n    // The shell failed to hydrate. Set a flag to force a client rendering\n    // during the next attempt. To do this, we call prepareFreshStack now\n    // to create the root work-in-progress fiber. This is a bit weird in terms\n    // of factoring, because it relies on renderRootSync not calling\n    // prepareFreshStack again in the call below, which happens because the\n    // root and lanes haven't changed.\n    //\n    // TODO: I think what we should do is set ForceClientRender inside\n    // throwException, like we do for nested Suspense boundaries. The reason\n    // it's here instead is so we can switch to the synchronous work loop, too.\n    // Something to consider for a future refactor.\n    var rootWorkInProgress = prepareFreshStack(root, errorRetryLanes);\n    rootWorkInProgress.flags |= ForceClientRender;\n\n    {\n      errorHydratingContainer(root.containerInfo);\n    }\n  }\n\n  var exitStatus = renderRootSync(root, errorRetryLanes);\n\n  if (exitStatus !== RootErrored) {\n    // Successfully finished rendering on retry\n    // The errors from the failed first attempt have been recovered. Add\n    // them to the collection of recoverable errors. We'll log them in the\n    // commit phase.\n    var errorsFromSecondAttempt = workInProgressRootRecoverableErrors;\n    workInProgressRootRecoverableErrors = errorsFromFirstAttempt; // The errors from the second attempt should be queued after the errors\n    // from the first attempt, to preserve the causal sequence.\n\n    if (errorsFromSecondAttempt !== null) {\n      queueRecoverableErrors(errorsFromSecondAttempt);\n    }\n  }\n\n  return exitStatus;\n}\n\nfunction queueRecoverableErrors(errors) {\n  if (workInProgressRootRecoverableErrors === null) {\n    workInProgressRootRecoverableErrors = errors;\n  } else {\n    workInProgressRootRecoverableErrors.push.apply(workInProgressRootRecoverableErrors, errors);\n  }\n}\n\nfunction finishConcurrentRender(root, exitStatus, lanes) {\n  switch (exitStatus) {\n    case RootInProgress:\n    case RootFatalErrored:\n      {\n        throw new Error('Root did not complete. This is a bug in React.');\n      }\n    // Flow knows about invariant, so it complains if I add a break\n    // statement, but eslint doesn't know about invariant, so it complains\n    // if I do. eslint-disable-next-line no-fallthrough\n\n    case RootErrored:\n      {\n        // We should have already attempted to retry this tree. If we reached\n        // this point, it errored again. Commit it.\n        commitRoot(root, workInProgressRootRecoverableErrors, workInProgressTransitions);\n        break;\n      }\n\n    case RootSuspended:\n      {\n        markRootSuspended$1(root, lanes); // We have an acceptable loading state. We need to figure out if we\n        // should immediately commit it or wait a bit.\n\n        if (includesOnlyRetries(lanes) && // do not delay if we're inside an act() scope\n        !shouldForceFlushFallbacksInDEV()) {\n          // This render only included retries, no updates. Throttle committing\n          // retries so that we don't show too many loading states too quickly.\n          var msUntilTimeout = globalMostRecentFallbackTime + FALLBACK_THROTTLE_MS - now(); // Don't bother with a very short suspense time.\n\n          if (msUntilTimeout > 10) {\n            var nextLanes = getNextLanes(root, NoLanes);\n\n            if (nextLanes !== NoLanes) {\n              // There's additional work on this root.\n              break;\n            }\n\n            var suspendedLanes = root.suspendedLanes;\n\n            if (!isSubsetOfLanes(suspendedLanes, lanes)) {\n              // We should prefer to render the fallback of at the last\n              // suspended level. Ping the last suspended level to try\n              // rendering it again.\n              // FIXME: What if the suspended lanes are Idle? Should not restart.\n              var eventTime = requestEventTime();\n              markRootPinged(root, suspendedLanes);\n              break;\n            } // The render is suspended, it hasn't timed out, and there's no\n            // lower priority work to do. Instead of committing the fallback\n            // immediately, wait for more data to arrive.\n\n\n            root.timeoutHandle = scheduleTimeout(commitRoot.bind(null, root, workInProgressRootRecoverableErrors, workInProgressTransitions), msUntilTimeout);\n            break;\n          }\n        } // The work expired. Commit immediately.\n\n\n        commitRoot(root, workInProgressRootRecoverableErrors, workInProgressTransitions);\n        break;\n      }\n\n    case RootSuspendedWithDelay:\n      {\n        markRootSuspended$1(root, lanes);\n\n        if (includesOnlyTransitions(lanes)) {\n          // This is a transition, so we should exit without committing a\n          // placeholder and without scheduling a timeout. Delay indefinitely\n          // until we receive more data.\n          break;\n        }\n\n        if (!shouldForceFlushFallbacksInDEV()) {\n          // This is not a transition, but we did trigger an avoided state.\n          // Schedule a placeholder to display after a short delay, using the Just\n          // Noticeable Difference.\n          // TODO: Is the JND optimization worth the added complexity? If this is\n          // the only reason we track the event time, then probably not.\n          // Consider removing.\n          var mostRecentEventTime = getMostRecentEventTime(root, lanes);\n          var eventTimeMs = mostRecentEventTime;\n          var timeElapsedMs = now() - eventTimeMs;\n\n          var _msUntilTimeout = jnd(timeElapsedMs) - timeElapsedMs; // Don't bother with a very short suspense time.\n\n\n          if (_msUntilTimeout > 10) {\n            // Instead of committing the fallback immediately, wait for more data\n            // to arrive.\n            root.timeoutHandle = scheduleTimeout(commitRoot.bind(null, root, workInProgressRootRecoverableErrors, workInProgressTransitions), _msUntilTimeout);\n            break;\n          }\n        } // Commit the placeholder.\n\n\n        commitRoot(root, workInProgressRootRecoverableErrors, workInProgressTransitions);\n        break;\n      }\n\n    case RootCompleted:\n      {\n        // The work completed. Ready to commit.\n        commitRoot(root, workInProgressRootRecoverableErrors, workInProgressTransitions);\n        break;\n      }\n\n    default:\n      {\n        throw new Error('Unknown root exit status.');\n      }\n  }\n}\n\nfunction isRenderConsistentWithExternalStores(finishedWork) {\n  // Search the rendered tree for external store reads, and check whether the\n  // stores were mutated in a concurrent event. Intentionally using an iterative\n  // loop instead of recursion so we can exit early.\n  var node = finishedWork;\n\n  while (true) {\n    if (node.flags & StoreConsistency) {\n      var updateQueue = node.updateQueue;\n\n      if (updateQueue !== null) {\n        var checks = updateQueue.stores;\n\n        if (checks !== null) {\n          for (var i = 0; i < checks.length; i++) {\n            var check = checks[i];\n            var getSnapshot = check.getSnapshot;\n            var renderedValue = check.value;\n\n            try {\n              if (!objectIs(getSnapshot(), renderedValue)) {\n                // Found an inconsistent store.\n                return false;\n              }\n            } catch (error) {\n              // If `getSnapshot` throws, return `false`. This will schedule\n              // a re-render, and the error will be rethrown during render.\n              return false;\n            }\n          }\n        }\n      }\n    }\n\n    var child = node.child;\n\n    if (node.subtreeFlags & StoreConsistency && child !== null) {\n      child.return = node;\n      node = child;\n      continue;\n    }\n\n    if (node === finishedWork) {\n      return true;\n    }\n\n    while (node.sibling === null) {\n      if (node.return === null || node.return === finishedWork) {\n        return true;\n      }\n\n      node = node.return;\n    }\n\n    node.sibling.return = node.return;\n    node = node.sibling;\n  } // Flow doesn't know this is unreachable, but eslint does\n  // eslint-disable-next-line no-unreachable\n\n\n  return true;\n}\n\nfunction markRootSuspended$1(root, suspendedLanes) {\n  // When suspending, we should always exclude lanes that were pinged or (more\n  // rarely, since we try to avoid it) updated during the render phase.\n  // TODO: Lol maybe there's a better way to factor this besides this\n  // obnoxiously named function :)\n  suspendedLanes = removeLanes(suspendedLanes, workInProgressRootPingedLanes);\n  suspendedLanes = removeLanes(suspendedLanes, workInProgressRootInterleavedUpdatedLanes);\n  markRootSuspended(root, suspendedLanes);\n} // This is the entry point for synchronous tasks that don't go\n// through Scheduler\n\n\nfunction performSyncWorkOnRoot(root) {\n  {\n    syncNestedUpdateFlag();\n  }\n\n  if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n    throw new Error('Should not already be working.');\n  }\n\n  flushPassiveEffects();\n  var lanes = getNextLanes(root, NoLanes);\n\n  if (!includesSomeLane(lanes, SyncLane)) {\n    // There's no remaining sync work left.\n    ensureRootIsScheduled(root, now());\n    return null;\n  }\n\n  var exitStatus = renderRootSync(root, lanes);\n\n  if (root.tag !== LegacyRoot && exitStatus === RootErrored) {\n    // If something threw an error, try rendering one more time. We'll render\n    // synchronously to block concurrent data mutations, and we'll includes\n    // all pending updates are included. If it still fails after the second\n    // attempt, we'll give up and commit the resulting tree.\n    var errorRetryLanes = getLanesToRetrySynchronouslyOnError(root);\n\n    if (errorRetryLanes !== NoLanes) {\n      lanes = errorRetryLanes;\n      exitStatus = recoverFromConcurrentError(root, errorRetryLanes);\n    }\n  }\n\n  if (exitStatus === RootFatalErrored) {\n    var fatalError = workInProgressRootFatalError;\n    prepareFreshStack(root, NoLanes);\n    markRootSuspended$1(root, lanes);\n    ensureRootIsScheduled(root, now());\n    throw fatalError;\n  }\n\n  if (exitStatus === RootDidNotComplete) {\n    throw new Error('Root did not complete. This is a bug in React.');\n  } // We now have a consistent tree. Because this is a sync render, we\n  // will commit it even if something suspended.\n\n\n  var finishedWork = root.current.alternate;\n  root.finishedWork = finishedWork;\n  root.finishedLanes = lanes;\n  commitRoot(root, workInProgressRootRecoverableErrors, workInProgressTransitions); // Before exiting, make sure there's a callback scheduled for the next\n  // pending level.\n\n  ensureRootIsScheduled(root, now());\n  return null;\n}\n\nfunction flushRoot(root, lanes) {\n  if (lanes !== NoLanes) {\n    markRootEntangled(root, mergeLanes(lanes, SyncLane));\n    ensureRootIsScheduled(root, now());\n\n    if ((executionContext & (RenderContext | CommitContext)) === NoContext) {\n      resetRenderTimer();\n      flushSyncCallbacks();\n    }\n  }\n}\nfunction batchedUpdates$1(fn, a) {\n  var prevExecutionContext = executionContext;\n  executionContext |= BatchedContext;\n\n  try {\n    return fn(a);\n  } finally {\n    executionContext = prevExecutionContext; // If there were legacy sync updates, flush them at the end of the outer\n    // most batchedUpdates-like method.\n\n    if (executionContext === NoContext && // Treat `act` as if it's inside `batchedUpdates`, even in legacy mode.\n    !( ReactCurrentActQueue$1.isBatchingLegacy)) {\n      resetRenderTimer();\n      flushSyncCallbacksOnlyInLegacyMode();\n    }\n  }\n}\nfunction discreteUpdates(fn, a, b, c, d) {\n  var previousPriority = getCurrentUpdatePriority();\n  var prevTransition = ReactCurrentBatchConfig$3.transition;\n\n  try {\n    ReactCurrentBatchConfig$3.transition = null;\n    setCurrentUpdatePriority(DiscreteEventPriority);\n    return fn(a, b, c, d);\n  } finally {\n    setCurrentUpdatePriority(previousPriority);\n    ReactCurrentBatchConfig$3.transition = prevTransition;\n\n    if (executionContext === NoContext) {\n      resetRenderTimer();\n    }\n  }\n} // Overload the definition to the two valid signatures.\n// Warning, this opts-out of checking the function body.\n\n// eslint-disable-next-line no-redeclare\nfunction flushSync(fn) {\n  // In legacy mode, we flush pending passive effects at the beginning of the\n  // next event, not at the end of the previous one.\n  if (rootWithPendingPassiveEffects !== null && rootWithPendingPassiveEffects.tag === LegacyRoot && (executionContext & (RenderContext | CommitContext)) === NoContext) {\n    flushPassiveEffects();\n  }\n\n  var prevExecutionContext = executionContext;\n  executionContext |= BatchedContext;\n  var prevTransition = ReactCurrentBatchConfig$3.transition;\n  var previousPriority = getCurrentUpdatePriority();\n\n  try {\n    ReactCurrentBatchConfig$3.transition = null;\n    setCurrentUpdatePriority(DiscreteEventPriority);\n\n    if (fn) {\n      return fn();\n    } else {\n      return undefined;\n    }\n  } finally {\n    setCurrentUpdatePriority(previousPriority);\n    ReactCurrentBatchConfig$3.transition = prevTransition;\n    executionContext = prevExecutionContext; // Flush the immediate callbacks that were scheduled during this batch.\n    // Note that this will happen even if batchedUpdates is higher up\n    // the stack.\n\n    if ((executionContext & (RenderContext | CommitContext)) === NoContext) {\n      flushSyncCallbacks();\n    }\n  }\n}\nfunction isAlreadyRendering() {\n  // Used by the renderer to print a warning if certain APIs are called from\n  // the wrong context.\n  return  (executionContext & (RenderContext | CommitContext)) !== NoContext;\n}\nfunction pushRenderLanes(fiber, lanes) {\n  push(subtreeRenderLanesCursor, subtreeRenderLanes, fiber);\n  subtreeRenderLanes = mergeLanes(subtreeRenderLanes, lanes);\n  workInProgressRootIncludedLanes = mergeLanes(workInProgressRootIncludedLanes, lanes);\n}\nfunction popRenderLanes(fiber) {\n  subtreeRenderLanes = subtreeRenderLanesCursor.current;\n  pop(subtreeRenderLanesCursor, fiber);\n}\n\nfunction prepareFreshStack(root, lanes) {\n  root.finishedWork = null;\n  root.finishedLanes = NoLanes;\n  var timeoutHandle = root.timeoutHandle;\n\n  if (timeoutHandle !== noTimeout) {\n    // The root previous suspended and scheduled a timeout to commit a fallback\n    // state. Now that we have additional work, cancel the timeout.\n    root.timeoutHandle = noTimeout; // $FlowFixMe Complains noTimeout is not a TimeoutID, despite the check above\n\n    cancelTimeout(timeoutHandle);\n  }\n\n  if (workInProgress !== null) {\n    var interruptedWork = workInProgress.return;\n\n    while (interruptedWork !== null) {\n      var current = interruptedWork.alternate;\n      unwindInterruptedWork(current, interruptedWork);\n      interruptedWork = interruptedWork.return;\n    }\n  }\n\n  workInProgressRoot = root;\n  var rootWorkInProgress = createWorkInProgress(root.current, null);\n  workInProgress = rootWorkInProgress;\n  workInProgressRootRenderLanes = subtreeRenderLanes = workInProgressRootIncludedLanes = lanes;\n  workInProgressRootExitStatus = RootInProgress;\n  workInProgressRootFatalError = null;\n  workInProgressRootSkippedLanes = NoLanes;\n  workInProgressRootInterleavedUpdatedLanes = NoLanes;\n  workInProgressRootPingedLanes = NoLanes;\n  workInProgressRootConcurrentErrors = null;\n  workInProgressRootRecoverableErrors = null;\n  finishQueueingConcurrentUpdates();\n\n  {\n    ReactStrictModeWarnings.discardPendingWarnings();\n  }\n\n  return rootWorkInProgress;\n}\n\nfunction handleError(root, thrownValue) {\n  do {\n    var erroredWork = workInProgress;\n\n    try {\n      // Reset module-level state that was set during the render phase.\n      resetContextDependencies();\n      resetHooksAfterThrow();\n      resetCurrentFiber(); // TODO: I found and added this missing line while investigating a\n      // separate issue. Write a regression test using string refs.\n\n      ReactCurrentOwner$2.current = null;\n\n      if (erroredWork === null || erroredWork.return === null) {\n        // Expected to be working on a non-root fiber. This is a fatal error\n        // because there's no ancestor that can handle it; the root is\n        // supposed to capture all errors that weren't caught by an error\n        // boundary.\n        workInProgressRootExitStatus = RootFatalErrored;\n        workInProgressRootFatalError = thrownValue; // Set `workInProgress` to null. This represents advancing to the next\n        // sibling, or the parent if there are no siblings. But since the root\n        // has no siblings nor a parent, we set it to null. Usually this is\n        // handled by `completeUnitOfWork` or `unwindWork`, but since we're\n        // intentionally not calling those, we need set it here.\n        // TODO: Consider calling `unwindWork` to pop the contexts.\n\n        workInProgress = null;\n        return;\n      }\n\n      if (enableProfilerTimer && erroredWork.mode & ProfileMode) {\n        // Record the time spent rendering before an error was thrown. This\n        // avoids inaccurate Profiler durations in the case of a\n        // suspended render.\n        stopProfilerTimerIfRunningAndRecordDelta(erroredWork, true);\n      }\n\n      if (enableSchedulingProfiler) {\n        markComponentRenderStopped();\n\n        if (thrownValue !== null && typeof thrownValue === 'object' && typeof thrownValue.then === 'function') {\n          var wakeable = thrownValue;\n          markComponentSuspended(erroredWork, wakeable, workInProgressRootRenderLanes);\n        } else {\n          markComponentErrored(erroredWork, thrownValue, workInProgressRootRenderLanes);\n        }\n      }\n\n      throwException(root, erroredWork.return, erroredWork, thrownValue, workInProgressRootRenderLanes);\n      completeUnitOfWork(erroredWork);\n    } catch (yetAnotherThrownValue) {\n      // Something in the return path also threw.\n      thrownValue = yetAnotherThrownValue;\n\n      if (workInProgress === erroredWork && erroredWork !== null) {\n        // If this boundary has already errored, then we had trouble processing\n        // the error. Bubble it to the next boundary.\n        erroredWork = erroredWork.return;\n        workInProgress = erroredWork;\n      } else {\n        erroredWork = workInProgress;\n      }\n\n      continue;\n    } // Return to the normal work loop.\n\n\n    return;\n  } while (true);\n}\n\nfunction pushDispatcher() {\n  var prevDispatcher = ReactCurrentDispatcher$2.current;\n  ReactCurrentDispatcher$2.current = ContextOnlyDispatcher;\n\n  if (prevDispatcher === null) {\n    // The React isomorphic package does not include a default dispatcher.\n    // Instead the first renderer will lazily attach one, in order to give\n    // nicer error messages.\n    return ContextOnlyDispatcher;\n  } else {\n    return prevDispatcher;\n  }\n}\n\nfunction popDispatcher(prevDispatcher) {\n  ReactCurrentDispatcher$2.current = prevDispatcher;\n}\n\nfunction markCommitTimeOfFallback() {\n  globalMostRecentFallbackTime = now();\n}\nfunction markSkippedUpdateLanes(lane) {\n  workInProgressRootSkippedLanes = mergeLanes(lane, workInProgressRootSkippedLanes);\n}\nfunction renderDidSuspend() {\n  if (workInProgressRootExitStatus === RootInProgress) {\n    workInProgressRootExitStatus = RootSuspended;\n  }\n}\nfunction renderDidSuspendDelayIfPossible() {\n  if (workInProgressRootExitStatus === RootInProgress || workInProgressRootExitStatus === RootSuspended || workInProgressRootExitStatus === RootErrored) {\n    workInProgressRootExitStatus = RootSuspendedWithDelay;\n  } // Check if there are updates that we skipped tree that might have unblocked\n  // this render.\n\n\n  if (workInProgressRoot !== null && (includesNonIdleWork(workInProgressRootSkippedLanes) || includesNonIdleWork(workInProgressRootInterleavedUpdatedLanes))) {\n    // Mark the current render as suspended so that we switch to working on\n    // the updates that were skipped. Usually we only suspend at the end of\n    // the render phase.\n    // TODO: We should probably always mark the root as suspended immediately\n    // (inside this function), since by suspending at the end of the render\n    // phase introduces a potential mistake where we suspend lanes that were\n    // pinged or updated while we were rendering.\n    markRootSuspended$1(workInProgressRoot, workInProgressRootRenderLanes);\n  }\n}\nfunction renderDidError(error) {\n  if (workInProgressRootExitStatus !== RootSuspendedWithDelay) {\n    workInProgressRootExitStatus = RootErrored;\n  }\n\n  if (workInProgressRootConcurrentErrors === null) {\n    workInProgressRootConcurrentErrors = [error];\n  } else {\n    workInProgressRootConcurrentErrors.push(error);\n  }\n} // Called during render to determine if anything has suspended.\n// Returns false if we're not sure.\n\nfunction renderHasNotSuspendedYet() {\n  // If something errored or completed, we can't really be sure,\n  // so those are false.\n  return workInProgressRootExitStatus === RootInProgress;\n}\n\nfunction renderRootSync(root, lanes) {\n  var prevExecutionContext = executionContext;\n  executionContext |= RenderContext;\n  var prevDispatcher = pushDispatcher(); // If the root or lanes have changed, throw out the existing stack\n  // and prepare a fresh one. Otherwise we'll continue where we left off.\n\n  if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes) {\n    {\n      if (isDevToolsPresent) {\n        var memoizedUpdaters = root.memoizedUpdaters;\n\n        if (memoizedUpdaters.size > 0) {\n          restorePendingUpdaters(root, workInProgressRootRenderLanes);\n          memoizedUpdaters.clear();\n        } // At this point, move Fibers that scheduled the upcoming work from the Map to the Set.\n        // If we bailout on this work, we'll move them back (like above).\n        // It's important to move them now in case the work spawns more work at the same priority with different updaters.\n        // That way we can keep the current update and future updates separate.\n\n\n        movePendingFibersToMemoized(root, lanes);\n      }\n    }\n\n    workInProgressTransitions = getTransitionsForLanes();\n    prepareFreshStack(root, lanes);\n  }\n\n  {\n    markRenderStarted(lanes);\n  }\n\n  do {\n    try {\n      workLoopSync();\n      break;\n    } catch (thrownValue) {\n      handleError(root, thrownValue);\n    }\n  } while (true);\n\n  resetContextDependencies();\n  executionContext = prevExecutionContext;\n  popDispatcher(prevDispatcher);\n\n  if (workInProgress !== null) {\n    // This is a sync render, so we should have finished the whole tree.\n    throw new Error('Cannot commit an incomplete root. This error is likely caused by a ' + 'bug in React. Please file an issue.');\n  }\n\n  {\n    markRenderStopped();\n  } // Set this to null to indicate there's no in-progress render.\n\n\n  workInProgressRoot = null;\n  workInProgressRootRenderLanes = NoLanes;\n  return workInProgressRootExitStatus;\n} // The work loop is an extremely hot path. Tell Closure not to inline it.\n\n/** @noinline */\n\n\nfunction workLoopSync() {\n  // Already timed out, so perform work without checking if we need to yield.\n  while (workInProgress !== null) {\n    performUnitOfWork(workInProgress);\n  }\n}\n\nfunction renderRootConcurrent(root, lanes) {\n  var prevExecutionContext = executionContext;\n  executionContext |= RenderContext;\n  var prevDispatcher = pushDispatcher(); // If the root or lanes have changed, throw out the existing stack\n  // and prepare a fresh one. Otherwise we'll continue where we left off.\n\n  if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes) {\n    {\n      if (isDevToolsPresent) {\n        var memoizedUpdaters = root.memoizedUpdaters;\n\n        if (memoizedUpdaters.size > 0) {\n          restorePendingUpdaters(root, workInProgressRootRenderLanes);\n          memoizedUpdaters.clear();\n        } // At this point, move Fibers that scheduled the upcoming work from the Map to the Set.\n        // If we bailout on this work, we'll move them back (like above).\n        // It's important to move them now in case the work spawns more work at the same priority with different updaters.\n        // That way we can keep the current update and future updates separate.\n\n\n        movePendingFibersToMemoized(root, lanes);\n      }\n    }\n\n    workInProgressTransitions = getTransitionsForLanes();\n    resetRenderTimer();\n    prepareFreshStack(root, lanes);\n  }\n\n  {\n    markRenderStarted(lanes);\n  }\n\n  do {\n    try {\n      workLoopConcurrent();\n      break;\n    } catch (thrownValue) {\n      handleError(root, thrownValue);\n    }\n  } while (true);\n\n  resetContextDependencies();\n  popDispatcher(prevDispatcher);\n  executionContext = prevExecutionContext;\n\n\n  if (workInProgress !== null) {\n    // Still work remaining.\n    {\n      markRenderYielded();\n    }\n\n    return RootInProgress;\n  } else {\n    // Completed the tree.\n    {\n      markRenderStopped();\n    } // Set this to null to indicate there's no in-progress render.\n\n\n    workInProgressRoot = null;\n    workInProgressRootRenderLanes = NoLanes; // Return the final exit status.\n\n    return workInProgressRootExitStatus;\n  }\n}\n/** @noinline */\n\n\nfunction workLoopConcurrent() {\n  // Perform work until Scheduler asks us to yield\n  while (workInProgress !== null && !shouldYield()) {\n    performUnitOfWork(workInProgress);\n  }\n}\n\nfunction performUnitOfWork(unitOfWork) {\n  // The current, flushed, state of this fiber is the alternate. Ideally\n  // nothing should rely on this, but relying on it here means that we don't\n  // need an additional field on the work in progress.\n  var current = unitOfWork.alternate;\n  setCurrentFiber(unitOfWork);\n  var next;\n\n  if ( (unitOfWork.mode & ProfileMode) !== NoMode) {\n    startProfilerTimer(unitOfWork);\n    next = beginWork$1(current, unitOfWork, subtreeRenderLanes);\n    stopProfilerTimerIfRunningAndRecordDelta(unitOfWork, true);\n  } else {\n    next = beginWork$1(current, unitOfWork, subtreeRenderLanes);\n  }\n\n  resetCurrentFiber();\n  unitOfWork.memoizedProps = unitOfWork.pendingProps;\n\n  if (next === null) {\n    // If this doesn't spawn new work, complete the current work.\n    completeUnitOfWork(unitOfWork);\n  } else {\n    workInProgress = next;\n  }\n\n  ReactCurrentOwner$2.current = null;\n}\n\nfunction completeUnitOfWork(unitOfWork) {\n  // Attempt to complete the current unit of work, then move to the next\n  // sibling. If there are no more siblings, return to the parent fiber.\n  var completedWork = unitOfWork;\n\n  do {\n    // The current, flushed, state of this fiber is the alternate. Ideally\n    // nothing should rely on this, but relying on it here means that we don't\n    // need an additional field on the work in progress.\n    var current = completedWork.alternate;\n    var returnFiber = completedWork.return; // Check if the work completed or if something threw.\n\n    if ((completedWork.flags & Incomplete) === NoFlags) {\n      setCurrentFiber(completedWork);\n      var next = void 0;\n\n      if ( (completedWork.mode & ProfileMode) === NoMode) {\n        next = completeWork(current, completedWork, subtreeRenderLanes);\n      } else {\n        startProfilerTimer(completedWork);\n        next = completeWork(current, completedWork, subtreeRenderLanes); // Update render duration assuming we didn't error.\n\n        stopProfilerTimerIfRunningAndRecordDelta(completedWork, false);\n      }\n\n      resetCurrentFiber();\n\n      if (next !== null) {\n        // Completing this fiber spawned new work. Work on that next.\n        workInProgress = next;\n        return;\n      }\n    } else {\n      // This fiber did not complete because something threw. Pop values off\n      // the stack without entering the complete phase. If this is a boundary,\n      // capture values if possible.\n      var _next = unwindWork(current, completedWork); // Because this fiber did not complete, don't reset its lanes.\n\n\n      if (_next !== null) {\n        // If completing this work spawned new work, do that next. We'll come\n        // back here again.\n        // Since we're restarting, remove anything that is not a host effect\n        // from the effect tag.\n        _next.flags &= HostEffectMask;\n        workInProgress = _next;\n        return;\n      }\n\n      if ( (completedWork.mode & ProfileMode) !== NoMode) {\n        // Record the render duration for the fiber that errored.\n        stopProfilerTimerIfRunningAndRecordDelta(completedWork, false); // Include the time spent working on failed children before continuing.\n\n        var actualDuration = completedWork.actualDuration;\n        var child = completedWork.child;\n\n        while (child !== null) {\n          actualDuration += child.actualDuration;\n          child = child.sibling;\n        }\n\n        completedWork.actualDuration = actualDuration;\n      }\n\n      if (returnFiber !== null) {\n        // Mark the parent fiber as incomplete and clear its subtree flags.\n        returnFiber.flags |= Incomplete;\n        returnFiber.subtreeFlags = NoFlags;\n        returnFiber.deletions = null;\n      } else {\n        // We've unwound all the way to the root.\n        workInProgressRootExitStatus = RootDidNotComplete;\n        workInProgress = null;\n        return;\n      }\n    }\n\n    var siblingFiber = completedWork.sibling;\n\n    if (siblingFiber !== null) {\n      // If there is more work to do in this returnFiber, do that next.\n      workInProgress = siblingFiber;\n      return;\n    } // Otherwise, return to the parent\n\n\n    completedWork = returnFiber; // Update the next thing we're working on in case something throws.\n\n    workInProgress = completedWork;\n  } while (completedWork !== null); // We've reached the root.\n\n\n  if (workInProgressRootExitStatus === RootInProgress) {\n    workInProgressRootExitStatus = RootCompleted;\n  }\n}\n\nfunction commitRoot(root, recoverableErrors, transitions) {\n  // TODO: This no longer makes any sense. We already wrap the mutation and\n  // layout phases. Should be able to remove.\n  var previousUpdateLanePriority = getCurrentUpdatePriority();\n  var prevTransition = ReactCurrentBatchConfig$3.transition;\n\n  try {\n    ReactCurrentBatchConfig$3.transition = null;\n    setCurrentUpdatePriority(DiscreteEventPriority);\n    commitRootImpl(root, recoverableErrors, transitions, previousUpdateLanePriority);\n  } finally {\n    ReactCurrentBatchConfig$3.transition = prevTransition;\n    setCurrentUpdatePriority(previousUpdateLanePriority);\n  }\n\n  return null;\n}\n\nfunction commitRootImpl(root, recoverableErrors, transitions, renderPriorityLevel) {\n  do {\n    // `flushPassiveEffects` will call `flushSyncUpdateQueue` at the end, which\n    // means `flushPassiveEffects` will sometimes result in additional\n    // passive effects. So we need to keep flushing in a loop until there are\n    // no more pending effects.\n    // TODO: Might be better if `flushPassiveEffects` did not automatically\n    // flush synchronous work at the end, to avoid factoring hazards like this.\n    flushPassiveEffects();\n  } while (rootWithPendingPassiveEffects !== null);\n\n  flushRenderPhaseStrictModeWarningsInDEV();\n\n  if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n    throw new Error('Should not already be working.');\n  }\n\n  var finishedWork = root.finishedWork;\n  var lanes = root.finishedLanes;\n\n  {\n    markCommitStarted(lanes);\n  }\n\n  if (finishedWork === null) {\n\n    {\n      markCommitStopped();\n    }\n\n    return null;\n  } else {\n    {\n      if (lanes === NoLanes) {\n        error('root.finishedLanes should not be empty during a commit. This is a ' + 'bug in React.');\n      }\n    }\n  }\n\n  root.finishedWork = null;\n  root.finishedLanes = NoLanes;\n\n  if (finishedWork === root.current) {\n    throw new Error('Cannot commit the same tree as before. This error is likely caused by ' + 'a bug in React. Please file an issue.');\n  } // commitRoot never returns a continuation; it always finishes synchronously.\n  // So we can clear these now to allow a new callback to be scheduled.\n\n\n  root.callbackNode = null;\n  root.callbackPriority = NoLane; // Update the first and last pending times on this root. The new first\n  // pending time is whatever is left on the root fiber.\n\n  var remainingLanes = mergeLanes(finishedWork.lanes, finishedWork.childLanes);\n  markRootFinished(root, remainingLanes);\n\n  if (root === workInProgressRoot) {\n    // We can reset these now that they are finished.\n    workInProgressRoot = null;\n    workInProgress = null;\n    workInProgressRootRenderLanes = NoLanes;\n  } // If there are pending passive effects, schedule a callback to process them.\n  // Do this as early as possible, so it is queued before anything else that\n  // might get scheduled in the commit phase. (See #16714.)\n  // TODO: Delete all other places that schedule the passive effect callback\n  // They're redundant.\n\n\n  if ((finishedWork.subtreeFlags & PassiveMask) !== NoFlags || (finishedWork.flags & PassiveMask) !== NoFlags) {\n    if (!rootDoesHavePassiveEffects) {\n      rootDoesHavePassiveEffects = true;\n      // to store it in pendingPassiveTransitions until they get processed\n      // We need to pass this through as an argument to commitRoot\n      // because workInProgressTransitions might have changed between\n      // the previous render and commit if we throttle the commit\n      // with setTimeout\n\n      pendingPassiveTransitions = transitions;\n      scheduleCallback$1(NormalPriority, function () {\n        flushPassiveEffects(); // This render triggered passive effects: release the root cache pool\n        // *after* passive effects fire to avoid freeing a cache pool that may\n        // be referenced by a node in the tree (HostRoot, Cache boundary etc)\n\n        return null;\n      });\n    }\n  } // Check if there are any effects in the whole tree.\n  // TODO: This is left over from the effect list implementation, where we had\n  // to check for the existence of `firstEffect` to satisfy Flow. I think the\n  // only other reason this optimization exists is because it affects profiling.\n  // Reconsider whether this is necessary.\n\n\n  var subtreeHasEffects = (finishedWork.subtreeFlags & (BeforeMutationMask | MutationMask | LayoutMask | PassiveMask)) !== NoFlags;\n  var rootHasEffect = (finishedWork.flags & (BeforeMutationMask | MutationMask | LayoutMask | PassiveMask)) !== NoFlags;\n\n  if (subtreeHasEffects || rootHasEffect) {\n    var prevTransition = ReactCurrentBatchConfig$3.transition;\n    ReactCurrentBatchConfig$3.transition = null;\n    var previousPriority = getCurrentUpdatePriority();\n    setCurrentUpdatePriority(DiscreteEventPriority);\n    var prevExecutionContext = executionContext;\n    executionContext |= CommitContext; // Reset this to null before calling lifecycles\n\n    ReactCurrentOwner$2.current = null; // The commit phase is broken into several sub-phases. We do a separate pass\n    // of the effect list for each phase: all mutation effects come before all\n    // layout effects, and so on.\n    // The first phase a \"before mutation\" phase. We use this phase to read the\n    // state of the host tree right before we mutate it. This is where\n    // getSnapshotBeforeUpdate is called.\n\n    var shouldFireAfterActiveInstanceBlur = commitBeforeMutationEffects(root, finishedWork);\n\n    {\n      // Mark the current commit time to be shared by all Profilers in this\n      // batch. This enables them to be grouped later.\n      recordCommitTime();\n    }\n\n\n    commitMutationEffects(root, finishedWork, lanes);\n\n    resetAfterCommit(root.containerInfo); // The work-in-progress tree is now the current tree. This must come after\n    // the mutation phase, so that the previous tree is still current during\n    // componentWillUnmount, but before the layout phase, so that the finished\n    // work is current during componentDidMount/Update.\n\n    root.current = finishedWork; // The next phase is the layout phase, where we call effects that read\n\n    {\n      markLayoutEffectsStarted(lanes);\n    }\n\n    commitLayoutEffects(finishedWork, root, lanes);\n\n    {\n      markLayoutEffectsStopped();\n    }\n    // opportunity to paint.\n\n\n    requestPaint();\n    executionContext = prevExecutionContext; // Reset the priority to the previous non-sync value.\n\n    setCurrentUpdatePriority(previousPriority);\n    ReactCurrentBatchConfig$3.transition = prevTransition;\n  } else {\n    // No effects.\n    root.current = finishedWork; // Measure these anyway so the flamegraph explicitly shows that there were\n    // no effects.\n    // TODO: Maybe there's a better way to report this.\n\n    {\n      recordCommitTime();\n    }\n  }\n\n  var rootDidHavePassiveEffects = rootDoesHavePassiveEffects;\n\n  if (rootDoesHavePassiveEffects) {\n    // This commit has passive effects. Stash a reference to them. But don't\n    // schedule a callback until after flushing layout work.\n    rootDoesHavePassiveEffects = false;\n    rootWithPendingPassiveEffects = root;\n    pendingPassiveEffectsLanes = lanes;\n  } else {\n\n    {\n      nestedPassiveUpdateCount = 0;\n      rootWithPassiveNestedUpdates = null;\n    }\n  } // Read this again, since an effect might have updated it\n\n\n  remainingLanes = root.pendingLanes; // Check if there's remaining work on this root\n  // TODO: This is part of the `componentDidCatch` implementation. Its purpose\n  // is to detect whether something might have called setState inside\n  // `componentDidCatch`. The mechanism is known to be flawed because `setState`\n  // inside `componentDidCatch` is itself flawed \u2014 that's why we recommend\n  // `getDerivedStateFromError` instead. However, it could be improved by\n  // checking if remainingLanes includes Sync work, instead of whether there's\n  // any work remaining at all (which would also include stuff like Suspense\n  // retries or transitions). It's been like this for a while, though, so fixing\n  // it probably isn't that urgent.\n\n  if (remainingLanes === NoLanes) {\n    // If there's no remaining work, we can clear the set of already failed\n    // error boundaries.\n    legacyErrorBoundariesThatAlreadyFailed = null;\n  }\n\n  {\n    if (!rootDidHavePassiveEffects) {\n      commitDoubleInvokeEffectsInDEV(root.current, false);\n    }\n  }\n\n  onCommitRoot(finishedWork.stateNode, renderPriorityLevel);\n\n  {\n    if (isDevToolsPresent) {\n      root.memoizedUpdaters.clear();\n    }\n  }\n\n  {\n    onCommitRoot$1();\n  } // Always call this before exiting `commitRoot`, to ensure that any\n  // additional work on this root is scheduled.\n\n\n  ensureRootIsScheduled(root, now());\n\n  if (recoverableErrors !== null) {\n    // There were errors during this render, but recovered from them without\n    // needing to surface it to the UI. We log them here.\n    var onRecoverableError = root.onRecoverableError;\n\n    for (var i = 0; i < recoverableErrors.length; i++) {\n      var recoverableError = recoverableErrors[i];\n      var componentStack = recoverableError.stack;\n      var digest = recoverableError.digest;\n      onRecoverableError(recoverableError.value, {\n        componentStack: componentStack,\n        digest: digest\n      });\n    }\n  }\n\n  if (hasUncaughtError) {\n    hasUncaughtError = false;\n    var error$1 = firstUncaughtError;\n    firstUncaughtError = null;\n    throw error$1;\n  } // If the passive effects are the result of a discrete render, flush them\n  // synchronously at the end of the current task so that the result is\n  // immediately observable. Otherwise, we assume that they are not\n  // order-dependent and do not need to be observed by external systems, so we\n  // can wait until after paint.\n  // TODO: We can optimize this by not scheduling the callback earlier. Since we\n  // currently schedule the callback in multiple places, will wait until those\n  // are consolidated.\n\n\n  if (includesSomeLane(pendingPassiveEffectsLanes, SyncLane) && root.tag !== LegacyRoot) {\n    flushPassiveEffects();\n  } // Read this again, since a passive effect might have updated it\n\n\n  remainingLanes = root.pendingLanes;\n\n  if (includesSomeLane(remainingLanes, SyncLane)) {\n    {\n      markNestedUpdateScheduled();\n    } // Count the number of times the root synchronously re-renders without\n    // finishing. If there are too many, it indicates an infinite update loop.\n\n\n    if (root === rootWithNestedUpdates) {\n      nestedUpdateCount++;\n    } else {\n      nestedUpdateCount = 0;\n      rootWithNestedUpdates = root;\n    }\n  } else {\n    nestedUpdateCount = 0;\n  } // If layout work was scheduled, flush it now.\n\n\n  flushSyncCallbacks();\n\n  {\n    markCommitStopped();\n  }\n\n  return null;\n}\n\nfunction flushPassiveEffects() {\n  // Returns whether passive effects were flushed.\n  // TODO: Combine this check with the one in flushPassiveEFfectsImpl. We should\n  // probably just combine the two functions. I believe they were only separate\n  // in the first place because we used to wrap it with\n  // `Scheduler.runWithPriority`, which accepts a function. But now we track the\n  // priority within React itself, so we can mutate the variable directly.\n  if (rootWithPendingPassiveEffects !== null) {\n    var renderPriority = lanesToEventPriority(pendingPassiveEffectsLanes);\n    var priority = lowerEventPriority(DefaultEventPriority, renderPriority);\n    var prevTransition = ReactCurrentBatchConfig$3.transition;\n    var previousPriority = getCurrentUpdatePriority();\n\n    try {\n      ReactCurrentBatchConfig$3.transition = null;\n      setCurrentUpdatePriority(priority);\n      return flushPassiveEffectsImpl();\n    } finally {\n      setCurrentUpdatePriority(previousPriority);\n      ReactCurrentBatchConfig$3.transition = prevTransition; // Once passive effects have run for the tree - giving components a\n    }\n  }\n\n  return false;\n}\nfunction enqueuePendingPassiveProfilerEffect(fiber) {\n  {\n    pendingPassiveProfilerEffects.push(fiber);\n\n    if (!rootDoesHavePassiveEffects) {\n      rootDoesHavePassiveEffects = true;\n      scheduleCallback$1(NormalPriority, function () {\n        flushPassiveEffects();\n        return null;\n      });\n    }\n  }\n}\n\nfunction flushPassiveEffectsImpl() {\n  if (rootWithPendingPassiveEffects === null) {\n    return false;\n  } // Cache and clear the transitions flag\n\n\n  var transitions = pendingPassiveTransitions;\n  pendingPassiveTransitions = null;\n  var root = rootWithPendingPassiveEffects;\n  var lanes = pendingPassiveEffectsLanes;\n  rootWithPendingPassiveEffects = null; // TODO: This is sometimes out of sync with rootWithPendingPassiveEffects.\n  // Figure out why and fix it. It's not causing any known issues (probably\n  // because it's only used for profiling), but it's a refactor hazard.\n\n  pendingPassiveEffectsLanes = NoLanes;\n\n  if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {\n    throw new Error('Cannot flush passive effects while already rendering.');\n  }\n\n  {\n    isFlushingPassiveEffects = true;\n    didScheduleUpdateDuringPassiveEffects = false;\n  }\n\n  {\n    markPassiveEffectsStarted(lanes);\n  }\n\n  var prevExecutionContext = executionContext;\n  executionContext |= CommitContext;\n  commitPassiveUnmountEffects(root.current);\n  commitPassiveMountEffects(root, root.current, lanes, transitions); // TODO: Move to commitPassiveMountEffects\n\n  {\n    var profilerEffects = pendingPassiveProfilerEffects;\n    pendingPassiveProfilerEffects = [];\n\n    for (var i = 0; i < profilerEffects.length; i++) {\n      var _fiber = profilerEffects[i];\n      commitPassiveEffectDurations(root, _fiber);\n    }\n  }\n\n  {\n    markPassiveEffectsStopped();\n  }\n\n  {\n    commitDoubleInvokeEffectsInDEV(root.current, true);\n  }\n\n  executionContext = prevExecutionContext;\n  flushSyncCallbacks();\n\n  {\n    // If additional passive effects were scheduled, increment a counter. If this\n    // exceeds the limit, we'll fire a warning.\n    if (didScheduleUpdateDuringPassiveEffects) {\n      if (root === rootWithPassiveNestedUpdates) {\n        nestedPassiveUpdateCount++;\n      } else {\n        nestedPassiveUpdateCount = 0;\n        rootWithPassiveNestedUpdates = root;\n      }\n    } else {\n      nestedPassiveUpdateCount = 0;\n    }\n\n    isFlushingPassiveEffects = false;\n    didScheduleUpdateDuringPassiveEffects = false;\n  } // TODO: Move to commitPassiveMountEffects\n\n\n  onPostCommitRoot(root);\n\n  {\n    var stateNode = root.current.stateNode;\n    stateNode.effectDuration = 0;\n    stateNode.passiveEffectDuration = 0;\n  }\n\n  return true;\n}\n\nfunction isAlreadyFailedLegacyErrorBoundary(instance) {\n  return legacyErrorBoundariesThatAlreadyFailed !== null && legacyErrorBoundariesThatAlreadyFailed.has(instance);\n}\nfunction markLegacyErrorBoundaryAsFailed(instance) {\n  if (legacyErrorBoundariesThatAlreadyFailed === null) {\n    legacyErrorBoundariesThatAlreadyFailed = new Set([instance]);\n  } else {\n    legacyErrorBoundariesThatAlreadyFailed.add(instance);\n  }\n}\n\nfunction prepareToThrowUncaughtError(error) {\n  if (!hasUncaughtError) {\n    hasUncaughtError = true;\n    firstUncaughtError = error;\n  }\n}\n\nvar onUncaughtError = prepareToThrowUncaughtError;\n\nfunction captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error) {\n  var errorInfo = createCapturedValueAtFiber(error, sourceFiber);\n  var update = createRootErrorUpdate(rootFiber, errorInfo, SyncLane);\n  var root = enqueueUpdate(rootFiber, update, SyncLane);\n  var eventTime = requestEventTime();\n\n  if (root !== null) {\n    markRootUpdated(root, SyncLane, eventTime);\n    ensureRootIsScheduled(root, eventTime);\n  }\n}\n\nfunction captureCommitPhaseError(sourceFiber, nearestMountedAncestor, error$1) {\n  {\n    reportUncaughtErrorInDEV(error$1);\n    setIsRunningInsertionEffect(false);\n  }\n\n  if (sourceFiber.tag === HostRoot) {\n    // Error was thrown at the root. There is no parent, so the root\n    // itself should capture it.\n    captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error$1);\n    return;\n  }\n\n  var fiber = null;\n\n  {\n    fiber = nearestMountedAncestor;\n  }\n\n  while (fiber !== null) {\n    if (fiber.tag === HostRoot) {\n      captureCommitPhaseErrorOnRoot(fiber, sourceFiber, error$1);\n      return;\n    } else if (fiber.tag === ClassComponent) {\n      var ctor = fiber.type;\n      var instance = fiber.stateNode;\n\n      if (typeof ctor.getDerivedStateFromError === 'function' || typeof instance.componentDidCatch === 'function' && !isAlreadyFailedLegacyErrorBoundary(instance)) {\n        var errorInfo = createCapturedValueAtFiber(error$1, sourceFiber);\n        var update = createClassErrorUpdate(fiber, errorInfo, SyncLane);\n        var root = enqueueUpdate(fiber, update, SyncLane);\n        var eventTime = requestEventTime();\n\n        if (root !== null) {\n          markRootUpdated(root, SyncLane, eventTime);\n          ensureRootIsScheduled(root, eventTime);\n        }\n\n        return;\n      }\n    }\n\n    fiber = fiber.return;\n  }\n\n  {\n    // TODO: Until we re-land skipUnmountedBoundaries (see #20147), this warning\n    // will fire for errors that are thrown by destroy functions inside deleted\n    // trees. What it should instead do is propagate the error to the parent of\n    // the deleted tree. In the meantime, do not add this warning to the\n    // allowlist; this is only for our internal use.\n    error('Internal React error: Attempted to capture a commit phase error ' + 'inside a detached tree. This indicates a bug in React. Likely ' + 'causes include deleting the same fiber more than once, committing an ' + 'already-finished tree, or an inconsistent return pointer.\\n\\n' + 'Error message:\\n\\n%s', error$1);\n  }\n}\nfunction pingSuspendedRoot(root, wakeable, pingedLanes) {\n  var pingCache = root.pingCache;\n\n  if (pingCache !== null) {\n    // The wakeable resolved, so we no longer need to memoize, because it will\n    // never be thrown again.\n    pingCache.delete(wakeable);\n  }\n\n  var eventTime = requestEventTime();\n  markRootPinged(root, pingedLanes);\n  warnIfSuspenseResolutionNotWrappedWithActDEV(root);\n\n  if (workInProgressRoot === root && isSubsetOfLanes(workInProgressRootRenderLanes, pingedLanes)) {\n    // Received a ping at the same priority level at which we're currently\n    // rendering. We might want to restart this render. This should mirror\n    // the logic of whether or not a root suspends once it completes.\n    // TODO: If we're rendering sync either due to Sync, Batched or expired,\n    // we should probably never restart.\n    // If we're suspended with delay, or if it's a retry, we'll always suspend\n    // so we can always restart.\n    if (workInProgressRootExitStatus === RootSuspendedWithDelay || workInProgressRootExitStatus === RootSuspended && includesOnlyRetries(workInProgressRootRenderLanes) && now() - globalMostRecentFallbackTime < FALLBACK_THROTTLE_MS) {\n      // Restart from the root.\n      prepareFreshStack(root, NoLanes);\n    } else {\n      // Even though we can't restart right now, we might get an\n      // opportunity later. So we mark this render as having a ping.\n      workInProgressRootPingedLanes = mergeLanes(workInProgressRootPingedLanes, pingedLanes);\n    }\n  }\n\n  ensureRootIsScheduled(root, eventTime);\n}\n\nfunction retryTimedOutBoundary(boundaryFiber, retryLane) {\n  // The boundary fiber (a Suspense component or SuspenseList component)\n  // previously was rendered in its fallback state. One of the promises that\n  // suspended it has resolved, which means at least part of the tree was\n  // likely unblocked. Try rendering again, at a new lanes.\n  if (retryLane === NoLane) {\n    // TODO: Assign this to `suspenseState.retryLane`? to avoid\n    // unnecessary entanglement?\n    retryLane = requestRetryLane(boundaryFiber);\n  } // TODO: Special case idle priority?\n\n\n  var eventTime = requestEventTime();\n  var root = enqueueConcurrentRenderForLane(boundaryFiber, retryLane);\n\n  if (root !== null) {\n    markRootUpdated(root, retryLane, eventTime);\n    ensureRootIsScheduled(root, eventTime);\n  }\n}\n\nfunction retryDehydratedSuspenseBoundary(boundaryFiber) {\n  var suspenseState = boundaryFiber.memoizedState;\n  var retryLane = NoLane;\n\n  if (suspenseState !== null) {\n    retryLane = suspenseState.retryLane;\n  }\n\n  retryTimedOutBoundary(boundaryFiber, retryLane);\n}\nfunction resolveRetryWakeable(boundaryFiber, wakeable) {\n  var retryLane = NoLane; // Default\n\n  var retryCache;\n\n  switch (boundaryFiber.tag) {\n    case SuspenseComponent:\n      retryCache = boundaryFiber.stateNode;\n      var suspenseState = boundaryFiber.memoizedState;\n\n      if (suspenseState !== null) {\n        retryLane = suspenseState.retryLane;\n      }\n\n      break;\n\n    case SuspenseListComponent:\n      retryCache = boundaryFiber.stateNode;\n      break;\n\n    default:\n      throw new Error('Pinged unknown suspense boundary type. ' + 'This is probably a bug in React.');\n  }\n\n  if (retryCache !== null) {\n    // The wakeable resolved, so we no longer need to memoize, because it will\n    // never be thrown again.\n    retryCache.delete(wakeable);\n  }\n\n  retryTimedOutBoundary(boundaryFiber, retryLane);\n} // Computes the next Just Noticeable Difference (JND) boundary.\n// The theory is that a person can't tell the difference between small differences in time.\n// Therefore, if we wait a bit longer than necessary that won't translate to a noticeable\n// difference in the experience. However, waiting for longer might mean that we can avoid\n// showing an intermediate loading state. The longer we have already waited, the harder it\n// is to tell small differences in time. Therefore, the longer we've already waited,\n// the longer we can wait additionally. At some point we have to give up though.\n// We pick a train model where the next boundary commits at a consistent schedule.\n// These particular numbers are vague estimates. We expect to adjust them based on research.\n\nfunction jnd(timeElapsed) {\n  return timeElapsed < 120 ? 120 : timeElapsed < 480 ? 480 : timeElapsed < 1080 ? 1080 : timeElapsed < 1920 ? 1920 : timeElapsed < 3000 ? 3000 : timeElapsed < 4320 ? 4320 : ceil(timeElapsed / 1960) * 1960;\n}\n\nfunction checkForNestedUpdates() {\n  if (nestedUpdateCount > NESTED_UPDATE_LIMIT) {\n    nestedUpdateCount = 0;\n    rootWithNestedUpdates = null;\n    throw new Error('Maximum update depth exceeded. This can happen when a component ' + 'repeatedly calls setState inside componentWillUpdate or ' + 'componentDidUpdate. React limits the number of nested updates to ' + 'prevent infinite loops.');\n  }\n\n  {\n    if (nestedPassiveUpdateCount > NESTED_PASSIVE_UPDATE_LIMIT) {\n      nestedPassiveUpdateCount = 0;\n      rootWithPassiveNestedUpdates = null;\n\n      error('Maximum update depth exceeded. This can happen when a component ' + \"calls setState inside useEffect, but useEffect either doesn't \" + 'have a dependency array, or one of the dependencies changes on ' + 'every render.');\n    }\n  }\n}\n\nfunction flushRenderPhaseStrictModeWarningsInDEV() {\n  {\n    ReactStrictModeWarnings.flushLegacyContextWarning();\n\n    {\n      ReactStrictModeWarnings.flushPendingUnsafeLifecycleWarnings();\n    }\n  }\n}\n\nfunction commitDoubleInvokeEffectsInDEV(fiber, hasPassiveEffects) {\n  {\n    // TODO (StrictEffects) Should we set a marker on the root if it contains strict effects\n    // so we don't traverse unnecessarily? similar to subtreeFlags but just at the root level.\n    // Maybe not a big deal since this is DEV only behavior.\n    setCurrentFiber(fiber);\n    invokeEffectsInDev(fiber, MountLayoutDev, invokeLayoutEffectUnmountInDEV);\n\n    if (hasPassiveEffects) {\n      invokeEffectsInDev(fiber, MountPassiveDev, invokePassiveEffectUnmountInDEV);\n    }\n\n    invokeEffectsInDev(fiber, MountLayoutDev, invokeLayoutEffectMountInDEV);\n\n    if (hasPassiveEffects) {\n      invokeEffectsInDev(fiber, MountPassiveDev, invokePassiveEffectMountInDEV);\n    }\n\n    resetCurrentFiber();\n  }\n}\n\nfunction invokeEffectsInDev(firstChild, fiberFlags, invokeEffectFn) {\n  {\n    // We don't need to re-check StrictEffectsMode here.\n    // This function is only called if that check has already passed.\n    var current = firstChild;\n    var subtreeRoot = null;\n\n    while (current !== null) {\n      var primarySubtreeFlag = current.subtreeFlags & fiberFlags;\n\n      if (current !== subtreeRoot && current.child !== null && primarySubtreeFlag !== NoFlags) {\n        current = current.child;\n      } else {\n        if ((current.flags & fiberFlags) !== NoFlags) {\n          invokeEffectFn(current);\n        }\n\n        if (current.sibling !== null) {\n          current = current.sibling;\n        } else {\n          current = subtreeRoot = current.return;\n        }\n      }\n    }\n  }\n}\n\nvar didWarnStateUpdateForNotYetMountedComponent = null;\nfunction warnAboutUpdateOnNotYetMountedFiberInDEV(fiber) {\n  {\n    if ((executionContext & RenderContext) !== NoContext) {\n      // We let the other warning about render phase updates deal with this one.\n      return;\n    }\n\n    if (!(fiber.mode & ConcurrentMode)) {\n      return;\n    }\n\n    var tag = fiber.tag;\n\n    if (tag !== IndeterminateComponent && tag !== HostRoot && tag !== ClassComponent && tag !== FunctionComponent && tag !== ForwardRef && tag !== MemoComponent && tag !== SimpleMemoComponent) {\n      // Only warn for user-defined components, not internal ones like Suspense.\n      return;\n    } // We show the whole stack but dedupe on the top component's name because\n    // the problematic code almost always lies inside that component.\n\n\n    var componentName = getComponentNameFromFiber(fiber) || 'ReactComponent';\n\n    if (didWarnStateUpdateForNotYetMountedComponent !== null) {\n      if (didWarnStateUpdateForNotYetMountedComponent.has(componentName)) {\n        return;\n      }\n\n      didWarnStateUpdateForNotYetMountedComponent.add(componentName);\n    } else {\n      didWarnStateUpdateForNotYetMountedComponent = new Set([componentName]);\n    }\n\n    var previousFiber = current;\n\n    try {\n      setCurrentFiber(fiber);\n\n      error(\"Can't perform a React state update on a component that hasn't mounted yet. \" + 'This indicates that you have a side-effect in your render function that ' + 'asynchronously later calls tries to update the component. Move this work to ' + 'useEffect instead.');\n    } finally {\n      if (previousFiber) {\n        setCurrentFiber(fiber);\n      } else {\n        resetCurrentFiber();\n      }\n    }\n  }\n}\nvar beginWork$1;\n\n{\n  var dummyFiber = null;\n\n  beginWork$1 = function (current, unitOfWork, lanes) {\n    // If a component throws an error, we replay it again in a synchronously\n    // dispatched event, so that the debugger will treat it as an uncaught\n    // error See ReactErrorUtils for more information.\n    // Before entering the begin phase, copy the work-in-progress onto a dummy\n    // fiber. If beginWork throws, we'll use this to reset the state.\n    var originalWorkInProgressCopy = assignFiberPropertiesInDEV(dummyFiber, unitOfWork);\n\n    try {\n      return beginWork(current, unitOfWork, lanes);\n    } catch (originalError) {\n      if (didSuspendOrErrorWhileHydratingDEV() || originalError !== null && typeof originalError === 'object' && typeof originalError.then === 'function') {\n        // Don't replay promises.\n        // Don't replay errors if we are hydrating and have already suspended or handled an error\n        throw originalError;\n      } // Keep this code in sync with handleError; any changes here must have\n      // corresponding changes there.\n\n\n      resetContextDependencies();\n      resetHooksAfterThrow(); // Don't reset current debug fiber, since we're about to work on the\n      // same fiber again.\n      // Unwind the failed stack frame\n\n      unwindInterruptedWork(current, unitOfWork); // Restore the original properties of the fiber.\n\n      assignFiberPropertiesInDEV(unitOfWork, originalWorkInProgressCopy);\n\n      if ( unitOfWork.mode & ProfileMode) {\n        // Reset the profiler timer.\n        startProfilerTimer(unitOfWork);\n      } // Run beginWork again.\n\n\n      invokeGuardedCallback(null, beginWork, null, current, unitOfWork, lanes);\n\n      if (hasCaughtError()) {\n        var replayError = clearCaughtError();\n\n        if (typeof replayError === 'object' && replayError !== null && replayError._suppressLogging && typeof originalError === 'object' && originalError !== null && !originalError._suppressLogging) {\n          // If suppressed, let the flag carry over to the original error which is the one we'll rethrow.\n          originalError._suppressLogging = true;\n        }\n      } // We always throw the original error in case the second render pass is not idempotent.\n      // This can happen if a memoized function or CommonJS module doesn't throw after first invocation.\n\n\n      throw originalError;\n    }\n  };\n}\n\nvar didWarnAboutUpdateInRender = false;\nvar didWarnAboutUpdateInRenderForAnotherComponent;\n\n{\n  didWarnAboutUpdateInRenderForAnotherComponent = new Set();\n}\n\nfunction warnAboutRenderPhaseUpdatesInDEV(fiber) {\n  {\n    if (isRendering && !getIsUpdatingOpaqueValueInRenderPhaseInDEV()) {\n      switch (fiber.tag) {\n        case FunctionComponent:\n        case ForwardRef:\n        case SimpleMemoComponent:\n          {\n            var renderingComponentName = workInProgress && getComponentNameFromFiber(workInProgress) || 'Unknown'; // Dedupe by the rendering component because it's the one that needs to be fixed.\n\n            var dedupeKey = renderingComponentName;\n\n            if (!didWarnAboutUpdateInRenderForAnotherComponent.has(dedupeKey)) {\n              didWarnAboutUpdateInRenderForAnotherComponent.add(dedupeKey);\n              var setStateComponentName = getComponentNameFromFiber(fiber) || 'Unknown';\n\n              error('Cannot update a component (`%s`) while rendering a ' + 'different component (`%s`). To locate the bad setState() call inside `%s`, ' + 'follow the stack trace as described in https://reactjs.org/link/setstate-in-render', setStateComponentName, renderingComponentName, renderingComponentName);\n            }\n\n            break;\n          }\n\n        case ClassComponent:\n          {\n            if (!didWarnAboutUpdateInRender) {\n              error('Cannot update during an existing state transition (such as ' + 'within `render`). Render methods should be a pure ' + 'function of props and state.');\n\n              didWarnAboutUpdateInRender = true;\n            }\n\n            break;\n          }\n      }\n    }\n  }\n}\n\nfunction restorePendingUpdaters(root, lanes) {\n  {\n    if (isDevToolsPresent) {\n      var memoizedUpdaters = root.memoizedUpdaters;\n      memoizedUpdaters.forEach(function (schedulingFiber) {\n        addFiberToLanesMap(root, schedulingFiber, lanes);\n      }); // This function intentionally does not clear memoized updaters.\n      // Those may still be relevant to the current commit\n      // and a future one (e.g. Suspense).\n    }\n  }\n}\nvar fakeActCallbackNode = {};\n\nfunction scheduleCallback$1(priorityLevel, callback) {\n  {\n    // If we're currently inside an `act` scope, bypass Scheduler and push to\n    // the `act` queue instead.\n    var actQueue = ReactCurrentActQueue$1.current;\n\n    if (actQueue !== null) {\n      actQueue.push(callback);\n      return fakeActCallbackNode;\n    } else {\n      return scheduleCallback(priorityLevel, callback);\n    }\n  }\n}\n\nfunction cancelCallback$1(callbackNode) {\n  if ( callbackNode === fakeActCallbackNode) {\n    return;\n  } // In production, always call Scheduler. This function will be stripped out.\n\n\n  return cancelCallback(callbackNode);\n}\n\nfunction shouldForceFlushFallbacksInDEV() {\n  // Never force flush in production. This function should get stripped out.\n  return  ReactCurrentActQueue$1.current !== null;\n}\n\nfunction warnIfUpdatesNotWrappedWithActDEV(fiber) {\n  {\n    if (fiber.mode & ConcurrentMode) {\n      if (!isConcurrentActEnvironment()) {\n        // Not in an act environment. No need to warn.\n        return;\n      }\n    } else {\n      // Legacy mode has additional cases where we suppress a warning.\n      if (!isLegacyActEnvironment()) {\n        // Not in an act environment. No need to warn.\n        return;\n      }\n\n      if (executionContext !== NoContext) {\n        // Legacy mode doesn't warn if the update is batched, i.e.\n        // batchedUpdates or flushSync.\n        return;\n      }\n\n      if (fiber.tag !== FunctionComponent && fiber.tag !== ForwardRef && fiber.tag !== SimpleMemoComponent) {\n        // For backwards compatibility with pre-hooks code, legacy mode only\n        // warns for updates that originate from a hook.\n        return;\n      }\n    }\n\n    if (ReactCurrentActQueue$1.current === null) {\n      var previousFiber = current;\n\n      try {\n        setCurrentFiber(fiber);\n\n        error('An update to %s inside a test was not wrapped in act(...).\\n\\n' + 'When testing, code that causes React state updates should be ' + 'wrapped into act(...):\\n\\n' + 'act(() => {\\n' + '  /* fire events that update state */\\n' + '});\\n' + '/* assert on the output */\\n\\n' + \"This ensures that you're testing the behavior the user would see \" + 'in the browser.' + ' Learn more at https://reactjs.org/link/wrap-tests-with-act', getComponentNameFromFiber(fiber));\n      } finally {\n        if (previousFiber) {\n          setCurrentFiber(fiber);\n        } else {\n          resetCurrentFiber();\n        }\n      }\n    }\n  }\n}\n\nfunction warnIfSuspenseResolutionNotWrappedWithActDEV(root) {\n  {\n    if (root.tag !== LegacyRoot && isConcurrentActEnvironment() && ReactCurrentActQueue$1.current === null) {\n      error('A suspended resource finished loading inside a test, but the event ' + 'was not wrapped in act(...).\\n\\n' + 'When testing, code that resolves suspended data should be wrapped ' + 'into act(...):\\n\\n' + 'act(() => {\\n' + '  /* finish loading suspended data */\\n' + '});\\n' + '/* assert on the output */\\n\\n' + \"This ensures that you're testing the behavior the user would see \" + 'in the browser.' + ' Learn more at https://reactjs.org/link/wrap-tests-with-act');\n    }\n  }\n}\n\nfunction setIsRunningInsertionEffect(isRunning) {\n  {\n    isRunningInsertionEffect = isRunning;\n  }\n}\n\n/* eslint-disable react-internal/prod-error-codes */\nvar resolveFamily = null; // $FlowFixMe Flow gets confused by a WeakSet feature check below.\n\nvar failedBoundaries = null;\nvar setRefreshHandler = function (handler) {\n  {\n    resolveFamily = handler;\n  }\n};\nfunction resolveFunctionForHotReloading(type) {\n  {\n    if (resolveFamily === null) {\n      // Hot reloading is disabled.\n      return type;\n    }\n\n    var family = resolveFamily(type);\n\n    if (family === undefined) {\n      return type;\n    } // Use the latest known implementation.\n\n\n    return family.current;\n  }\n}\nfunction resolveClassForHotReloading(type) {\n  // No implementation differences.\n  return resolveFunctionForHotReloading(type);\n}\nfunction resolveForwardRefForHotReloading(type) {\n  {\n    if (resolveFamily === null) {\n      // Hot reloading is disabled.\n      return type;\n    }\n\n    var family = resolveFamily(type);\n\n    if (family === undefined) {\n      // Check if we're dealing with a real forwardRef. Don't want to crash early.\n      if (type !== null && type !== undefined && typeof type.render === 'function') {\n        // ForwardRef is special because its resolved .type is an object,\n        // but it's possible that we only have its inner render function in the map.\n        // If that inner render function is different, we'll build a new forwardRef type.\n        var currentRender = resolveFunctionForHotReloading(type.render);\n\n        if (type.render !== currentRender) {\n          var syntheticType = {\n            $$typeof: REACT_FORWARD_REF_TYPE,\n            render: currentRender\n          };\n\n          if (type.displayName !== undefined) {\n            syntheticType.displayName = type.displayName;\n          }\n\n          return syntheticType;\n        }\n      }\n\n      return type;\n    } // Use the latest known implementation.\n\n\n    return family.current;\n  }\n}\nfunction isCompatibleFamilyForHotReloading(fiber, element) {\n  {\n    if (resolveFamily === null) {\n      // Hot reloading is disabled.\n      return false;\n    }\n\n    var prevType = fiber.elementType;\n    var nextType = element.type; // If we got here, we know types aren't === equal.\n\n    var needsCompareFamilies = false;\n    var $$typeofNextType = typeof nextType === 'object' && nextType !== null ? nextType.$$typeof : null;\n\n    switch (fiber.tag) {\n      case ClassComponent:\n        {\n          if (typeof nextType === 'function') {\n            needsCompareFamilies = true;\n          }\n\n          break;\n        }\n\n      case FunctionComponent:\n        {\n          if (typeof nextType === 'function') {\n            needsCompareFamilies = true;\n          } else if ($$typeofNextType === REACT_LAZY_TYPE) {\n            // We don't know the inner type yet.\n            // We're going to assume that the lazy inner type is stable,\n            // and so it is sufficient to avoid reconciling it away.\n            // We're not going to unwrap or actually use the new lazy type.\n            needsCompareFamilies = true;\n          }\n\n          break;\n        }\n\n      case ForwardRef:\n        {\n          if ($$typeofNextType === REACT_FORWARD_REF_TYPE) {\n            needsCompareFamilies = true;\n          } else if ($$typeofNextType === REACT_LAZY_TYPE) {\n            needsCompareFamilies = true;\n          }\n\n          break;\n        }\n\n      case MemoComponent:\n      case SimpleMemoComponent:\n        {\n          if ($$typeofNextType === REACT_MEMO_TYPE) {\n            // TODO: if it was but can no longer be simple,\n            // we shouldn't set this.\n            needsCompareFamilies = true;\n          } else if ($$typeofNextType === REACT_LAZY_TYPE) {\n            needsCompareFamilies = true;\n          }\n\n          break;\n        }\n\n      default:\n        return false;\n    } // Check if both types have a family and it's the same one.\n\n\n    if (needsCompareFamilies) {\n      // Note: memo() and forwardRef() we'll compare outer rather than inner type.\n      // This means both of them need to be registered to preserve state.\n      // If we unwrapped and compared the inner types for wrappers instead,\n      // then we would risk falsely saying two separate memo(Foo)\n      // calls are equivalent because they wrap the same Foo function.\n      var prevFamily = resolveFamily(prevType);\n\n      if (prevFamily !== undefined && prevFamily === resolveFamily(nextType)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n}\nfunction markFailedErrorBoundaryForHotReloading(fiber) {\n  {\n    if (resolveFamily === null) {\n      // Hot reloading is disabled.\n      return;\n    }\n\n    if (typeof WeakSet !== 'function') {\n      return;\n    }\n\n    if (failedBoundaries === null) {\n      failedBoundaries = new WeakSet();\n    }\n\n    failedBoundaries.add(fiber);\n  }\n}\nvar scheduleRefresh = function (root, update) {\n  {\n    if (resolveFamily === null) {\n      // Hot reloading is disabled.\n      return;\n    }\n\n    var staleFamilies = update.staleFamilies,\n        updatedFamilies = update.updatedFamilies;\n    flushPassiveEffects();\n    flushSync(function () {\n      scheduleFibersWithFamiliesRecursively(root.current, updatedFamilies, staleFamilies);\n    });\n  }\n};\nvar scheduleRoot = function (root, element) {\n  {\n    if (root.context !== emptyContextObject) {\n      // Super edge case: root has a legacy _renderSubtree context\n      // but we don't know the parentComponent so we can't pass it.\n      // Just ignore. We'll delete this with _renderSubtree code path later.\n      return;\n    }\n\n    flushPassiveEffects();\n    flushSync(function () {\n      updateContainer(element, root, null, null);\n    });\n  }\n};\n\nfunction scheduleFibersWithFamiliesRecursively(fiber, updatedFamilies, staleFamilies) {\n  {\n    var alternate = fiber.alternate,\n        child = fiber.child,\n        sibling = fiber.sibling,\n        tag = fiber.tag,\n        type = fiber.type;\n    var candidateType = null;\n\n    switch (tag) {\n      case FunctionComponent:\n      case SimpleMemoComponent:\n      case ClassComponent:\n        candidateType = type;\n        break;\n\n      case ForwardRef:\n        candidateType = type.render;\n        break;\n    }\n\n    if (resolveFamily === null) {\n      throw new Error('Expected resolveFamily to be set during hot reload.');\n    }\n\n    var needsRender = false;\n    var needsRemount = false;\n\n    if (candidateType !== null) {\n      var family = resolveFamily(candidateType);\n\n      if (family !== undefined) {\n        if (staleFamilies.has(family)) {\n          needsRemount = true;\n        } else if (updatedFamilies.has(family)) {\n          if (tag === ClassComponent) {\n            needsRemount = true;\n          } else {\n            needsRender = true;\n          }\n        }\n      }\n    }\n\n    if (failedBoundaries !== null) {\n      if (failedBoundaries.has(fiber) || alternate !== null && failedBoundaries.has(alternate)) {\n        needsRemount = true;\n      }\n    }\n\n    if (needsRemount) {\n      fiber._debugNeedsRemount = true;\n    }\n\n    if (needsRemount || needsRender) {\n      var _root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n      if (_root !== null) {\n        scheduleUpdateOnFiber(_root, fiber, SyncLane, NoTimestamp);\n      }\n    }\n\n    if (child !== null && !needsRemount) {\n      scheduleFibersWithFamiliesRecursively(child, updatedFamilies, staleFamilies);\n    }\n\n    if (sibling !== null) {\n      scheduleFibersWithFamiliesRecursively(sibling, updatedFamilies, staleFamilies);\n    }\n  }\n}\n\nvar findHostInstancesForRefresh = function (root, families) {\n  {\n    var hostInstances = new Set();\n    var types = new Set(families.map(function (family) {\n      return family.current;\n    }));\n    findHostInstancesForMatchingFibersRecursively(root.current, types, hostInstances);\n    return hostInstances;\n  }\n};\n\nfunction findHostInstancesForMatchingFibersRecursively(fiber, types, hostInstances) {\n  {\n    var child = fiber.child,\n        sibling = fiber.sibling,\n        tag = fiber.tag,\n        type = fiber.type;\n    var candidateType = null;\n\n    switch (tag) {\n      case FunctionComponent:\n      case SimpleMemoComponent:\n      case ClassComponent:\n        candidateType = type;\n        break;\n\n      case ForwardRef:\n        candidateType = type.render;\n        break;\n    }\n\n    var didMatch = false;\n\n    if (candidateType !== null) {\n      if (types.has(candidateType)) {\n        didMatch = true;\n      }\n    }\n\n    if (didMatch) {\n      // We have a match. This only drills down to the closest host components.\n      // There's no need to search deeper because for the purpose of giving\n      // visual feedback, \"flashing\" outermost parent rectangles is sufficient.\n      findHostInstancesForFiberShallowly(fiber, hostInstances);\n    } else {\n      // If there's no match, maybe there will be one further down in the child tree.\n      if (child !== null) {\n        findHostInstancesForMatchingFibersRecursively(child, types, hostInstances);\n      }\n    }\n\n    if (sibling !== null) {\n      findHostInstancesForMatchingFibersRecursively(sibling, types, hostInstances);\n    }\n  }\n}\n\nfunction findHostInstancesForFiberShallowly(fiber, hostInstances) {\n  {\n    var foundHostInstances = findChildHostInstancesForFiberShallowly(fiber, hostInstances);\n\n    if (foundHostInstances) {\n      return;\n    } // If we didn't find any host children, fallback to closest host parent.\n\n\n    var node = fiber;\n\n    while (true) {\n      switch (node.tag) {\n        case HostComponent:\n          hostInstances.add(node.stateNode);\n          return;\n\n        case HostPortal:\n          hostInstances.add(node.stateNode.containerInfo);\n          return;\n\n        case HostRoot:\n          hostInstances.add(node.stateNode.containerInfo);\n          return;\n      }\n\n      if (node.return === null) {\n        throw new Error('Expected to reach root first.');\n      }\n\n      node = node.return;\n    }\n  }\n}\n\nfunction findChildHostInstancesForFiberShallowly(fiber, hostInstances) {\n  {\n    var node = fiber;\n    var foundHostInstances = false;\n\n    while (true) {\n      if (node.tag === HostComponent) {\n        // We got a match.\n        foundHostInstances = true;\n        hostInstances.add(node.stateNode); // There may still be more, so keep searching.\n      } else if (node.child !== null) {\n        node.child.return = node;\n        node = node.child;\n        continue;\n      }\n\n      if (node === fiber) {\n        return foundHostInstances;\n      }\n\n      while (node.sibling === null) {\n        if (node.return === null || node.return === fiber) {\n          return foundHostInstances;\n        }\n\n        node = node.return;\n      }\n\n      node.sibling.return = node.return;\n      node = node.sibling;\n    }\n  }\n\n  return false;\n}\n\nvar hasBadMapPolyfill;\n\n{\n  hasBadMapPolyfill = false;\n\n  try {\n    var nonExtensibleObject = Object.preventExtensions({});\n    /* eslint-disable no-new */\n\n    new Map([[nonExtensibleObject, null]]);\n    new Set([nonExtensibleObject]);\n    /* eslint-enable no-new */\n  } catch (e) {\n    // TODO: Consider warning about bad polyfills\n    hasBadMapPolyfill = true;\n  }\n}\n\nfunction FiberNode(tag, pendingProps, key, mode) {\n  // Instance\n  this.tag = tag;\n  this.key = key;\n  this.elementType = null;\n  this.type = null;\n  this.stateNode = null; // Fiber\n\n  this.return = null;\n  this.child = null;\n  this.sibling = null;\n  this.index = 0;\n  this.ref = null;\n  this.pendingProps = pendingProps;\n  this.memoizedProps = null;\n  this.updateQueue = null;\n  this.memoizedState = null;\n  this.dependencies = null;\n  this.mode = mode; // Effects\n\n  this.flags = NoFlags;\n  this.subtreeFlags = NoFlags;\n  this.deletions = null;\n  this.lanes = NoLanes;\n  this.childLanes = NoLanes;\n  this.alternate = null;\n\n  {\n    // Note: The following is done to avoid a v8 performance cliff.\n    //\n    // Initializing the fields below to smis and later updating them with\n    // double values will cause Fibers to end up having separate shapes.\n    // This behavior/bug has something to do with Object.preventExtension().\n    // Fortunately this only impacts DEV builds.\n    // Unfortunately it makes React unusably slow for some applications.\n    // To work around this, initialize the fields below with doubles.\n    //\n    // Learn more about this here:\n    // https://github.com/facebook/react/issues/14365\n    // https://bugs.chromium.org/p/v8/issues/detail?id=8538\n    this.actualDuration = Number.NaN;\n    this.actualStartTime = Number.NaN;\n    this.selfBaseDuration = Number.NaN;\n    this.treeBaseDuration = Number.NaN; // It's okay to replace the initial doubles with smis after initialization.\n    // This won't trigger the performance cliff mentioned above,\n    // and it simplifies other profiler code (including DevTools).\n\n    this.actualDuration = 0;\n    this.actualStartTime = -1;\n    this.selfBaseDuration = 0;\n    this.treeBaseDuration = 0;\n  }\n\n  {\n    // This isn't directly used but is handy for debugging internals:\n    this._debugSource = null;\n    this._debugOwner = null;\n    this._debugNeedsRemount = false;\n    this._debugHookTypes = null;\n\n    if (!hasBadMapPolyfill && typeof Object.preventExtensions === 'function') {\n      Object.preventExtensions(this);\n    }\n  }\n} // This is a constructor function, rather than a POJO constructor, still\n// please ensure we do the following:\n// 1) Nobody should add any instance methods on this. Instance methods can be\n//    more difficult to predict when they get optimized and they are almost\n//    never inlined properly in static compilers.\n// 2) Nobody should rely on `instanceof Fiber` for type testing. We should\n//    always know when it is a fiber.\n// 3) We might want to experiment with using numeric keys since they are easier\n//    to optimize in a non-JIT environment.\n// 4) We can easily go from a constructor to a createFiber object literal if that\n//    is faster.\n// 5) It should be easy to port this to a C struct and keep a C implementation\n//    compatible.\n\n\nvar createFiber = function (tag, pendingProps, key, mode) {\n  // $FlowFixMe: the shapes are exact here but Flow doesn't like constructors\n  return new FiberNode(tag, pendingProps, key, mode);\n};\n\nfunction shouldConstruct$1(Component) {\n  var prototype = Component.prototype;\n  return !!(prototype && prototype.isReactComponent);\n}\n\nfunction isSimpleFunctionComponent(type) {\n  return typeof type === 'function' && !shouldConstruct$1(type) && type.defaultProps === undefined;\n}\nfunction resolveLazyComponentTag(Component) {\n  if (typeof Component === 'function') {\n    return shouldConstruct$1(Component) ? ClassComponent : FunctionComponent;\n  } else if (Component !== undefined && Component !== null) {\n    var $$typeof = Component.$$typeof;\n\n    if ($$typeof === REACT_FORWARD_REF_TYPE) {\n      return ForwardRef;\n    }\n\n    if ($$typeof === REACT_MEMO_TYPE) {\n      return MemoComponent;\n    }\n  }\n\n  return IndeterminateComponent;\n} // This is used to create an alternate fiber to do work on.\n\nfunction createWorkInProgress(current, pendingProps) {\n  var workInProgress = current.alternate;\n\n  if (workInProgress === null) {\n    // We use a double buffering pooling technique because we know that we'll\n    // only ever need at most two versions of a tree. We pool the \"other\" unused\n    // node that we're free to reuse. This is lazily created to avoid allocating\n    // extra objects for things that are never updated. It also allow us to\n    // reclaim the extra memory if needed.\n    workInProgress = createFiber(current.tag, pendingProps, current.key, current.mode);\n    workInProgress.elementType = current.elementType;\n    workInProgress.type = current.type;\n    workInProgress.stateNode = current.stateNode;\n\n    {\n      // DEV-only fields\n      workInProgress._debugSource = current._debugSource;\n      workInProgress._debugOwner = current._debugOwner;\n      workInProgress._debugHookTypes = current._debugHookTypes;\n    }\n\n    workInProgress.alternate = current;\n    current.alternate = workInProgress;\n  } else {\n    workInProgress.pendingProps = pendingProps; // Needed because Blocks store data on type.\n\n    workInProgress.type = current.type; // We already have an alternate.\n    // Reset the effect tag.\n\n    workInProgress.flags = NoFlags; // The effects are no longer valid.\n\n    workInProgress.subtreeFlags = NoFlags;\n    workInProgress.deletions = null;\n\n    {\n      // We intentionally reset, rather than copy, actualDuration & actualStartTime.\n      // This prevents time from endlessly accumulating in new commits.\n      // This has the downside of resetting values for different priority renders,\n      // But works for yielding (the common case) and should support resuming.\n      workInProgress.actualDuration = 0;\n      workInProgress.actualStartTime = -1;\n    }\n  } // Reset all effects except static ones.\n  // Static effects are not specific to a render.\n\n\n  workInProgress.flags = current.flags & StaticMask;\n  workInProgress.childLanes = current.childLanes;\n  workInProgress.lanes = current.lanes;\n  workInProgress.child = current.child;\n  workInProgress.memoizedProps = current.memoizedProps;\n  workInProgress.memoizedState = current.memoizedState;\n  workInProgress.updateQueue = current.updateQueue; // Clone the dependencies object. This is mutated during the render phase, so\n  // it cannot be shared with the current fiber.\n\n  var currentDependencies = current.dependencies;\n  workInProgress.dependencies = currentDependencies === null ? null : {\n    lanes: currentDependencies.lanes,\n    firstContext: currentDependencies.firstContext\n  }; // These will be overridden during the parent's reconciliation\n\n  workInProgress.sibling = current.sibling;\n  workInProgress.index = current.index;\n  workInProgress.ref = current.ref;\n\n  {\n    workInProgress.selfBaseDuration = current.selfBaseDuration;\n    workInProgress.treeBaseDuration = current.treeBaseDuration;\n  }\n\n  {\n    workInProgress._debugNeedsRemount = current._debugNeedsRemount;\n\n    switch (workInProgress.tag) {\n      case IndeterminateComponent:\n      case FunctionComponent:\n      case SimpleMemoComponent:\n        workInProgress.type = resolveFunctionForHotReloading(current.type);\n        break;\n\n      case ClassComponent:\n        workInProgress.type = resolveClassForHotReloading(current.type);\n        break;\n\n      case ForwardRef:\n        workInProgress.type = resolveForwardRefForHotReloading(current.type);\n        break;\n    }\n  }\n\n  return workInProgress;\n} // Used to reuse a Fiber for a second pass.\n\nfunction resetWorkInProgress(workInProgress, renderLanes) {\n  // This resets the Fiber to what createFiber or createWorkInProgress would\n  // have set the values to before during the first pass. Ideally this wouldn't\n  // be necessary but unfortunately many code paths reads from the workInProgress\n  // when they should be reading from current and writing to workInProgress.\n  // We assume pendingProps, index, key, ref, return are still untouched to\n  // avoid doing another reconciliation.\n  // Reset the effect flags but keep any Placement tags, since that's something\n  // that child fiber is setting, not the reconciliation.\n  workInProgress.flags &= StaticMask | Placement; // The effects are no longer valid.\n\n  var current = workInProgress.alternate;\n\n  if (current === null) {\n    // Reset to createFiber's initial values.\n    workInProgress.childLanes = NoLanes;\n    workInProgress.lanes = renderLanes;\n    workInProgress.child = null;\n    workInProgress.subtreeFlags = NoFlags;\n    workInProgress.memoizedProps = null;\n    workInProgress.memoizedState = null;\n    workInProgress.updateQueue = null;\n    workInProgress.dependencies = null;\n    workInProgress.stateNode = null;\n\n    {\n      // Note: We don't reset the actualTime counts. It's useful to accumulate\n      // actual time across multiple render passes.\n      workInProgress.selfBaseDuration = 0;\n      workInProgress.treeBaseDuration = 0;\n    }\n  } else {\n    // Reset to the cloned values that createWorkInProgress would've.\n    workInProgress.childLanes = current.childLanes;\n    workInProgress.lanes = current.lanes;\n    workInProgress.child = current.child;\n    workInProgress.subtreeFlags = NoFlags;\n    workInProgress.deletions = null;\n    workInProgress.memoizedProps = current.memoizedProps;\n    workInProgress.memoizedState = current.memoizedState;\n    workInProgress.updateQueue = current.updateQueue; // Needed because Blocks store data on type.\n\n    workInProgress.type = current.type; // Clone the dependencies object. This is mutated during the render phase, so\n    // it cannot be shared with the current fiber.\n\n    var currentDependencies = current.dependencies;\n    workInProgress.dependencies = currentDependencies === null ? null : {\n      lanes: currentDependencies.lanes,\n      firstContext: currentDependencies.firstContext\n    };\n\n    {\n      // Note: We don't reset the actualTime counts. It's useful to accumulate\n      // actual time across multiple render passes.\n      workInProgress.selfBaseDuration = current.selfBaseDuration;\n      workInProgress.treeBaseDuration = current.treeBaseDuration;\n    }\n  }\n\n  return workInProgress;\n}\nfunction createHostRootFiber(tag, isStrictMode, concurrentUpdatesByDefaultOverride) {\n  var mode;\n\n  if (tag === ConcurrentRoot) {\n    mode = ConcurrentMode;\n\n    if (isStrictMode === true) {\n      mode |= StrictLegacyMode;\n\n      {\n        mode |= StrictEffectsMode;\n      }\n    }\n  } else {\n    mode = NoMode;\n  }\n\n  if ( isDevToolsPresent) {\n    // Always collect profile timings when DevTools are present.\n    // This enables DevTools to start capturing timing at any point\u2013\n    // Without some nodes in the tree having empty base times.\n    mode |= ProfileMode;\n  }\n\n  return createFiber(HostRoot, null, null, mode);\n}\nfunction createFiberFromTypeAndProps(type, // React$ElementType\nkey, pendingProps, owner, mode, lanes) {\n  var fiberTag = IndeterminateComponent; // The resolved type is set if we know what the final type will be. I.e. it's not lazy.\n\n  var resolvedType = type;\n\n  if (typeof type === 'function') {\n    if (shouldConstruct$1(type)) {\n      fiberTag = ClassComponent;\n\n      {\n        resolvedType = resolveClassForHotReloading(resolvedType);\n      }\n    } else {\n      {\n        resolvedType = resolveFunctionForHotReloading(resolvedType);\n      }\n    }\n  } else if (typeof type === 'string') {\n    fiberTag = HostComponent;\n  } else {\n    getTag: switch (type) {\n      case REACT_FRAGMENT_TYPE:\n        return createFiberFromFragment(pendingProps.children, mode, lanes, key);\n\n      case REACT_STRICT_MODE_TYPE:\n        fiberTag = Mode;\n        mode |= StrictLegacyMode;\n\n        if ( (mode & ConcurrentMode) !== NoMode) {\n          // Strict effects should never run on legacy roots\n          mode |= StrictEffectsMode;\n        }\n\n        break;\n\n      case REACT_PROFILER_TYPE:\n        return createFiberFromProfiler(pendingProps, mode, lanes, key);\n\n      case REACT_SUSPENSE_TYPE:\n        return createFiberFromSuspense(pendingProps, mode, lanes, key);\n\n      case REACT_SUSPENSE_LIST_TYPE:\n        return createFiberFromSuspenseList(pendingProps, mode, lanes, key);\n\n      case REACT_OFFSCREEN_TYPE:\n        return createFiberFromOffscreen(pendingProps, mode, lanes, key);\n\n      case REACT_LEGACY_HIDDEN_TYPE:\n\n      // eslint-disable-next-line no-fallthrough\n\n      case REACT_SCOPE_TYPE:\n\n      // eslint-disable-next-line no-fallthrough\n\n      case REACT_CACHE_TYPE:\n\n      // eslint-disable-next-line no-fallthrough\n\n      case REACT_TRACING_MARKER_TYPE:\n\n      // eslint-disable-next-line no-fallthrough\n\n      case REACT_DEBUG_TRACING_MODE_TYPE:\n\n      // eslint-disable-next-line no-fallthrough\n\n      default:\n        {\n          if (typeof type === 'object' && type !== null) {\n            switch (type.$$typeof) {\n              case REACT_PROVIDER_TYPE:\n                fiberTag = ContextProvider;\n                break getTag;\n\n              case REACT_CONTEXT_TYPE:\n                // This is a consumer\n                fiberTag = ContextConsumer;\n                break getTag;\n\n              case REACT_FORWARD_REF_TYPE:\n                fiberTag = ForwardRef;\n\n                {\n                  resolvedType = resolveForwardRefForHotReloading(resolvedType);\n                }\n\n                break getTag;\n\n              case REACT_MEMO_TYPE:\n                fiberTag = MemoComponent;\n                break getTag;\n\n              case REACT_LAZY_TYPE:\n                fiberTag = LazyComponent;\n                resolvedType = null;\n                break getTag;\n            }\n          }\n\n          var info = '';\n\n          {\n            if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n              info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and \" + 'named imports.';\n            }\n\n            var ownerName = owner ? getComponentNameFromFiber(owner) : null;\n\n            if (ownerName) {\n              info += '\\n\\nCheck the render method of `' + ownerName + '`.';\n            }\n          }\n\n          throw new Error('Element type is invalid: expected a string (for built-in ' + 'components) or a class/function (for composite components) ' + (\"but got: \" + (type == null ? type : typeof type) + \".\" + info));\n        }\n    }\n  }\n\n  var fiber = createFiber(fiberTag, pendingProps, key, mode);\n  fiber.elementType = type;\n  fiber.type = resolvedType;\n  fiber.lanes = lanes;\n\n  {\n    fiber._debugOwner = owner;\n  }\n\n  return fiber;\n}\nfunction createFiberFromElement(element, mode, lanes) {\n  var owner = null;\n\n  {\n    owner = element._owner;\n  }\n\n  var type = element.type;\n  var key = element.key;\n  var pendingProps = element.props;\n  var fiber = createFiberFromTypeAndProps(type, key, pendingProps, owner, mode, lanes);\n\n  {\n    fiber._debugSource = element._source;\n    fiber._debugOwner = element._owner;\n  }\n\n  return fiber;\n}\nfunction createFiberFromFragment(elements, mode, lanes, key) {\n  var fiber = createFiber(Fragment, elements, key, mode);\n  fiber.lanes = lanes;\n  return fiber;\n}\n\nfunction createFiberFromProfiler(pendingProps, mode, lanes, key) {\n  {\n    if (typeof pendingProps.id !== 'string') {\n      error('Profiler must specify an \"id\" of type `string` as a prop. Received the type `%s` instead.', typeof pendingProps.id);\n    }\n  }\n\n  var fiber = createFiber(Profiler, pendingProps, key, mode | ProfileMode);\n  fiber.elementType = REACT_PROFILER_TYPE;\n  fiber.lanes = lanes;\n\n  {\n    fiber.stateNode = {\n      effectDuration: 0,\n      passiveEffectDuration: 0\n    };\n  }\n\n  return fiber;\n}\n\nfunction createFiberFromSuspense(pendingProps, mode, lanes, key) {\n  var fiber = createFiber(SuspenseComponent, pendingProps, key, mode);\n  fiber.elementType = REACT_SUSPENSE_TYPE;\n  fiber.lanes = lanes;\n  return fiber;\n}\nfunction createFiberFromSuspenseList(pendingProps, mode, lanes, key) {\n  var fiber = createFiber(SuspenseListComponent, pendingProps, key, mode);\n  fiber.elementType = REACT_SUSPENSE_LIST_TYPE;\n  fiber.lanes = lanes;\n  return fiber;\n}\nfunction createFiberFromOffscreen(pendingProps, mode, lanes, key) {\n  var fiber = createFiber(OffscreenComponent, pendingProps, key, mode);\n  fiber.elementType = REACT_OFFSCREEN_TYPE;\n  fiber.lanes = lanes;\n  var primaryChildInstance = {\n    isHidden: false\n  };\n  fiber.stateNode = primaryChildInstance;\n  return fiber;\n}\nfunction createFiberFromText(content, mode, lanes) {\n  var fiber = createFiber(HostText, content, null, mode);\n  fiber.lanes = lanes;\n  return fiber;\n}\nfunction createFiberFromHostInstanceForDeletion() {\n  var fiber = createFiber(HostComponent, null, null, NoMode);\n  fiber.elementType = 'DELETED';\n  return fiber;\n}\nfunction createFiberFromDehydratedFragment(dehydratedNode) {\n  var fiber = createFiber(DehydratedFragment, null, null, NoMode);\n  fiber.stateNode = dehydratedNode;\n  return fiber;\n}\nfunction createFiberFromPortal(portal, mode, lanes) {\n  var pendingProps = portal.children !== null ? portal.children : [];\n  var fiber = createFiber(HostPortal, pendingProps, portal.key, mode);\n  fiber.lanes = lanes;\n  fiber.stateNode = {\n    containerInfo: portal.containerInfo,\n    pendingChildren: null,\n    // Used by persistent updates\n    implementation: portal.implementation\n  };\n  return fiber;\n} // Used for stashing WIP properties to replay failed work in DEV.\n\nfunction assignFiberPropertiesInDEV(target, source) {\n  if (target === null) {\n    // This Fiber's initial properties will always be overwritten.\n    // We only use a Fiber to ensure the same hidden class so DEV isn't slow.\n    target = createFiber(IndeterminateComponent, null, null, NoMode);\n  } // This is intentionally written as a list of all properties.\n  // We tried to use Object.assign() instead but this is called in\n  // the hottest path, and Object.assign() was too slow:\n  // https://github.com/facebook/react/issues/12502\n  // This code is DEV-only so size is not a concern.\n\n\n  target.tag = source.tag;\n  target.key = source.key;\n  target.elementType = source.elementType;\n  target.type = source.type;\n  target.stateNode = source.stateNode;\n  target.return = source.return;\n  target.child = source.child;\n  target.sibling = source.sibling;\n  target.index = source.index;\n  target.ref = source.ref;\n  target.pendingProps = source.pendingProps;\n  target.memoizedProps = source.memoizedProps;\n  target.updateQueue = source.updateQueue;\n  target.memoizedState = source.memoizedState;\n  target.dependencies = source.dependencies;\n  target.mode = source.mode;\n  target.flags = source.flags;\n  target.subtreeFlags = source.subtreeFlags;\n  target.deletions = source.deletions;\n  target.lanes = source.lanes;\n  target.childLanes = source.childLanes;\n  target.alternate = source.alternate;\n\n  {\n    target.actualDuration = source.actualDuration;\n    target.actualStartTime = source.actualStartTime;\n    target.selfBaseDuration = source.selfBaseDuration;\n    target.treeBaseDuration = source.treeBaseDuration;\n  }\n\n  target._debugSource = source._debugSource;\n  target._debugOwner = source._debugOwner;\n  target._debugNeedsRemount = source._debugNeedsRemount;\n  target._debugHookTypes = source._debugHookTypes;\n  return target;\n}\n\nfunction FiberRootNode(containerInfo, tag, hydrate, identifierPrefix, onRecoverableError) {\n  this.tag = tag;\n  this.containerInfo = containerInfo;\n  this.pendingChildren = null;\n  this.current = null;\n  this.pingCache = null;\n  this.finishedWork = null;\n  this.timeoutHandle = noTimeout;\n  this.context = null;\n  this.pendingContext = null;\n  this.callbackNode = null;\n  this.callbackPriority = NoLane;\n  this.eventTimes = createLaneMap(NoLanes);\n  this.expirationTimes = createLaneMap(NoTimestamp);\n  this.pendingLanes = NoLanes;\n  this.suspendedLanes = NoLanes;\n  this.pingedLanes = NoLanes;\n  this.expiredLanes = NoLanes;\n  this.mutableReadLanes = NoLanes;\n  this.finishedLanes = NoLanes;\n  this.entangledLanes = NoLanes;\n  this.entanglements = createLaneMap(NoLanes);\n  this.identifierPrefix = identifierPrefix;\n  this.onRecoverableError = onRecoverableError;\n\n  {\n    this.mutableSourceEagerHydrationData = null;\n  }\n\n  {\n    this.effectDuration = 0;\n    this.passiveEffectDuration = 0;\n  }\n\n  {\n    this.memoizedUpdaters = new Set();\n    var pendingUpdatersLaneMap = this.pendingUpdatersLaneMap = [];\n\n    for (var _i = 0; _i < TotalLanes; _i++) {\n      pendingUpdatersLaneMap.push(new Set());\n    }\n  }\n\n  {\n    switch (tag) {\n      case ConcurrentRoot:\n        this._debugRootType = hydrate ? 'hydrateRoot()' : 'createRoot()';\n        break;\n\n      case LegacyRoot:\n        this._debugRootType = hydrate ? 'hydrate()' : 'render()';\n        break;\n    }\n  }\n}\n\nfunction createFiberRoot(containerInfo, tag, hydrate, initialChildren, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, // TODO: We have several of these arguments that are conceptually part of the\n// host config, but because they are passed in at runtime, we have to thread\n// them through the root constructor. Perhaps we should put them all into a\n// single type, like a DynamicHostConfig that is defined by the renderer.\nidentifierPrefix, onRecoverableError, transitionCallbacks) {\n  var root = new FiberRootNode(containerInfo, tag, hydrate, identifierPrefix, onRecoverableError);\n  // stateNode is any.\n\n\n  var uninitializedFiber = createHostRootFiber(tag, isStrictMode);\n  root.current = uninitializedFiber;\n  uninitializedFiber.stateNode = root;\n\n  {\n    var _initialState = {\n      element: initialChildren,\n      isDehydrated: hydrate,\n      cache: null,\n      // not enabled yet\n      transitions: null,\n      pendingSuspenseBoundaries: null\n    };\n    uninitializedFiber.memoizedState = _initialState;\n  }\n\n  initializeUpdateQueue(uninitializedFiber);\n  return root;\n}\n\nvar ReactVersion = '18.2.0';\n\nfunction createPortal(children, containerInfo, // TODO: figure out the API for cross-renderer implementation.\nimplementation) {\n  var key = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n  {\n    checkKeyStringCoercion(key);\n  }\n\n  return {\n    // This tag allow us to uniquely identify this as a React Portal\n    $$typeof: REACT_PORTAL_TYPE,\n    key: key == null ? null : '' + key,\n    children: children,\n    containerInfo: containerInfo,\n    implementation: implementation\n  };\n}\n\nvar didWarnAboutNestedUpdates;\nvar didWarnAboutFindNodeInStrictMode;\n\n{\n  didWarnAboutNestedUpdates = false;\n  didWarnAboutFindNodeInStrictMode = {};\n}\n\nfunction getContextForSubtree(parentComponent) {\n  if (!parentComponent) {\n    return emptyContextObject;\n  }\n\n  var fiber = get(parentComponent);\n  var parentContext = findCurrentUnmaskedContext(fiber);\n\n  if (fiber.tag === ClassComponent) {\n    var Component = fiber.type;\n\n    if (isContextProvider(Component)) {\n      return processChildContext(fiber, Component, parentContext);\n    }\n  }\n\n  return parentContext;\n}\n\nfunction findHostInstanceWithWarning(component, methodName) {\n  {\n    var fiber = get(component);\n\n    if (fiber === undefined) {\n      if (typeof component.render === 'function') {\n        throw new Error('Unable to find node on an unmounted component.');\n      } else {\n        var keys = Object.keys(component).join(',');\n        throw new Error(\"Argument appears to not be a ReactComponent. Keys: \" + keys);\n      }\n    }\n\n    var hostFiber = findCurrentHostFiber(fiber);\n\n    if (hostFiber === null) {\n      return null;\n    }\n\n    if (hostFiber.mode & StrictLegacyMode) {\n      var componentName = getComponentNameFromFiber(fiber) || 'Component';\n\n      if (!didWarnAboutFindNodeInStrictMode[componentName]) {\n        didWarnAboutFindNodeInStrictMode[componentName] = true;\n        var previousFiber = current;\n\n        try {\n          setCurrentFiber(hostFiber);\n\n          if (fiber.mode & StrictLegacyMode) {\n            error('%s is deprecated in StrictMode. ' + '%s was passed an instance of %s which is inside StrictMode. ' + 'Instead, add a ref directly to the element you want to reference. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-find-node', methodName, methodName, componentName);\n          } else {\n            error('%s is deprecated in StrictMode. ' + '%s was passed an instance of %s which renders StrictMode children. ' + 'Instead, add a ref directly to the element you want to reference. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-find-node', methodName, methodName, componentName);\n          }\n        } finally {\n          // Ideally this should reset to previous but this shouldn't be called in\n          // render and there's another warning for that anyway.\n          if (previousFiber) {\n            setCurrentFiber(previousFiber);\n          } else {\n            resetCurrentFiber();\n          }\n        }\n      }\n    }\n\n    return hostFiber.stateNode;\n  }\n}\n\nfunction createContainer(containerInfo, tag, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError, transitionCallbacks) {\n  var hydrate = false;\n  var initialChildren = null;\n  return createFiberRoot(containerInfo, tag, hydrate, initialChildren, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError);\n}\nfunction createHydrationContainer(initialChildren, // TODO: Remove `callback` when we delete legacy mode.\ncallback, containerInfo, tag, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError, transitionCallbacks) {\n  var hydrate = true;\n  var root = createFiberRoot(containerInfo, tag, hydrate, initialChildren, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError); // TODO: Move this to FiberRoot constructor\n\n  root.context = getContextForSubtree(null); // Schedule the initial render. In a hydration root, this is different from\n  // a regular update because the initial render must match was was rendered\n  // on the server.\n  // NOTE: This update intentionally doesn't have a payload. We're only using\n  // the update to schedule work on the root fiber (and, for legacy roots, to\n  // enqueue the callback if one is provided).\n\n  var current = root.current;\n  var eventTime = requestEventTime();\n  var lane = requestUpdateLane(current);\n  var update = createUpdate(eventTime, lane);\n  update.callback = callback !== undefined && callback !== null ? callback : null;\n  enqueueUpdate(current, update, lane);\n  scheduleInitialHydrationOnRoot(root, lane, eventTime);\n  return root;\n}\nfunction updateContainer(element, container, parentComponent, callback) {\n  {\n    onScheduleRoot(container, element);\n  }\n\n  var current$1 = container.current;\n  var eventTime = requestEventTime();\n  var lane = requestUpdateLane(current$1);\n\n  {\n    markRenderScheduled(lane);\n  }\n\n  var context = getContextForSubtree(parentComponent);\n\n  if (container.context === null) {\n    container.context = context;\n  } else {\n    container.pendingContext = context;\n  }\n\n  {\n    if (isRendering && current !== null && !didWarnAboutNestedUpdates) {\n      didWarnAboutNestedUpdates = true;\n\n      error('Render methods should be a pure function of props and state; ' + 'triggering nested component updates from render is not allowed. ' + 'If necessary, trigger nested updates in componentDidUpdate.\\n\\n' + 'Check the render method of %s.', getComponentNameFromFiber(current) || 'Unknown');\n    }\n  }\n\n  var update = createUpdate(eventTime, lane); // Caution: React DevTools currently depends on this property\n  // being called \"element\".\n\n  update.payload = {\n    element: element\n  };\n  callback = callback === undefined ? null : callback;\n\n  if (callback !== null) {\n    {\n      if (typeof callback !== 'function') {\n        error('render(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callback);\n      }\n    }\n\n    update.callback = callback;\n  }\n\n  var root = enqueueUpdate(current$1, update, lane);\n\n  if (root !== null) {\n    scheduleUpdateOnFiber(root, current$1, lane, eventTime);\n    entangleTransitions(root, current$1, lane);\n  }\n\n  return lane;\n}\nfunction getPublicRootInstance(container) {\n  var containerFiber = container.current;\n\n  if (!containerFiber.child) {\n    return null;\n  }\n\n  switch (containerFiber.child.tag) {\n    case HostComponent:\n      return getPublicInstance(containerFiber.child.stateNode);\n\n    default:\n      return containerFiber.child.stateNode;\n  }\n}\nfunction attemptSynchronousHydration$1(fiber) {\n  switch (fiber.tag) {\n    case HostRoot:\n      {\n        var root = fiber.stateNode;\n\n        if (isRootDehydrated(root)) {\n          // Flush the first scheduled \"update\".\n          var lanes = getHighestPriorityPendingLanes(root);\n          flushRoot(root, lanes);\n        }\n\n        break;\n      }\n\n    case SuspenseComponent:\n      {\n        flushSync(function () {\n          var root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n          if (root !== null) {\n            var eventTime = requestEventTime();\n            scheduleUpdateOnFiber(root, fiber, SyncLane, eventTime);\n          }\n        }); // If we're still blocked after this, we need to increase\n        // the priority of any promises resolving within this\n        // boundary so that they next attempt also has higher pri.\n\n        var retryLane = SyncLane;\n        markRetryLaneIfNotHydrated(fiber, retryLane);\n        break;\n      }\n  }\n}\n\nfunction markRetryLaneImpl(fiber, retryLane) {\n  var suspenseState = fiber.memoizedState;\n\n  if (suspenseState !== null && suspenseState.dehydrated !== null) {\n    suspenseState.retryLane = higherPriorityLane(suspenseState.retryLane, retryLane);\n  }\n} // Increases the priority of thenables when they resolve within this boundary.\n\n\nfunction markRetryLaneIfNotHydrated(fiber, retryLane) {\n  markRetryLaneImpl(fiber, retryLane);\n  var alternate = fiber.alternate;\n\n  if (alternate) {\n    markRetryLaneImpl(alternate, retryLane);\n  }\n}\nfunction attemptContinuousHydration$1(fiber) {\n  if (fiber.tag !== SuspenseComponent) {\n    // We ignore HostRoots here because we can't increase\n    // their priority and they should not suspend on I/O,\n    // since you have to wrap anything that might suspend in\n    // Suspense.\n    return;\n  }\n\n  var lane = SelectiveHydrationLane;\n  var root = enqueueConcurrentRenderForLane(fiber, lane);\n\n  if (root !== null) {\n    var eventTime = requestEventTime();\n    scheduleUpdateOnFiber(root, fiber, lane, eventTime);\n  }\n\n  markRetryLaneIfNotHydrated(fiber, lane);\n}\nfunction attemptHydrationAtCurrentPriority$1(fiber) {\n  if (fiber.tag !== SuspenseComponent) {\n    // We ignore HostRoots here because we can't increase\n    // their priority other than synchronously flush it.\n    return;\n  }\n\n  var lane = requestUpdateLane(fiber);\n  var root = enqueueConcurrentRenderForLane(fiber, lane);\n\n  if (root !== null) {\n    var eventTime = requestEventTime();\n    scheduleUpdateOnFiber(root, fiber, lane, eventTime);\n  }\n\n  markRetryLaneIfNotHydrated(fiber, lane);\n}\nfunction findHostInstanceWithNoPortals(fiber) {\n  var hostFiber = findCurrentHostFiberWithNoPortals(fiber);\n\n  if (hostFiber === null) {\n    return null;\n  }\n\n  return hostFiber.stateNode;\n}\n\nvar shouldErrorImpl = function (fiber) {\n  return null;\n};\n\nfunction shouldError(fiber) {\n  return shouldErrorImpl(fiber);\n}\n\nvar shouldSuspendImpl = function (fiber) {\n  return false;\n};\n\nfunction shouldSuspend(fiber) {\n  return shouldSuspendImpl(fiber);\n}\nvar overrideHookState = null;\nvar overrideHookStateDeletePath = null;\nvar overrideHookStateRenamePath = null;\nvar overrideProps = null;\nvar overridePropsDeletePath = null;\nvar overridePropsRenamePath = null;\nvar scheduleUpdate = null;\nvar setErrorHandler = null;\nvar setSuspenseHandler = null;\n\n{\n  var copyWithDeleteImpl = function (obj, path, index) {\n    var key = path[index];\n    var updated = isArray(obj) ? obj.slice() : assign({}, obj);\n\n    if (index + 1 === path.length) {\n      if (isArray(updated)) {\n        updated.splice(key, 1);\n      } else {\n        delete updated[key];\n      }\n\n      return updated;\n    } // $FlowFixMe number or string is fine here\n\n\n    updated[key] = copyWithDeleteImpl(obj[key], path, index + 1);\n    return updated;\n  };\n\n  var copyWithDelete = function (obj, path) {\n    return copyWithDeleteImpl(obj, path, 0);\n  };\n\n  var copyWithRenameImpl = function (obj, oldPath, newPath, index) {\n    var oldKey = oldPath[index];\n    var updated = isArray(obj) ? obj.slice() : assign({}, obj);\n\n    if (index + 1 === oldPath.length) {\n      var newKey = newPath[index]; // $FlowFixMe number or string is fine here\n\n      updated[newKey] = updated[oldKey];\n\n      if (isArray(updated)) {\n        updated.splice(oldKey, 1);\n      } else {\n        delete updated[oldKey];\n      }\n    } else {\n      // $FlowFixMe number or string is fine here\n      updated[oldKey] = copyWithRenameImpl( // $FlowFixMe number or string is fine here\n      obj[oldKey], oldPath, newPath, index + 1);\n    }\n\n    return updated;\n  };\n\n  var copyWithRename = function (obj, oldPath, newPath) {\n    if (oldPath.length !== newPath.length) {\n      warn('copyWithRename() expects paths of the same length');\n\n      return;\n    } else {\n      for (var i = 0; i < newPath.length - 1; i++) {\n        if (oldPath[i] !== newPath[i]) {\n          warn('copyWithRename() expects paths to be the same except for the deepest key');\n\n          return;\n        }\n      }\n    }\n\n    return copyWithRenameImpl(obj, oldPath, newPath, 0);\n  };\n\n  var copyWithSetImpl = function (obj, path, index, value) {\n    if (index >= path.length) {\n      return value;\n    }\n\n    var key = path[index];\n    var updated = isArray(obj) ? obj.slice() : assign({}, obj); // $FlowFixMe number or string is fine here\n\n    updated[key] = copyWithSetImpl(obj[key], path, index + 1, value);\n    return updated;\n  };\n\n  var copyWithSet = function (obj, path, value) {\n    return copyWithSetImpl(obj, path, 0, value);\n  };\n\n  var findHook = function (fiber, id) {\n    // For now, the \"id\" of stateful hooks is just the stateful hook index.\n    // This may change in the future with e.g. nested hooks.\n    var currentHook = fiber.memoizedState;\n\n    while (currentHook !== null && id > 0) {\n      currentHook = currentHook.next;\n      id--;\n    }\n\n    return currentHook;\n  }; // Support DevTools editable values for useState and useReducer.\n\n\n  overrideHookState = function (fiber, id, path, value) {\n    var hook = findHook(fiber, id);\n\n    if (hook !== null) {\n      var newState = copyWithSet(hook.memoizedState, path, value);\n      hook.memoizedState = newState;\n      hook.baseState = newState; // We aren't actually adding an update to the queue,\n      // because there is no update we can add for useReducer hooks that won't trigger an error.\n      // (There's no appropriate action type for DevTools overrides.)\n      // As a result though, React will see the scheduled update as a noop and bailout.\n      // Shallow cloning props works as a workaround for now to bypass the bailout check.\n\n      fiber.memoizedProps = assign({}, fiber.memoizedProps);\n      var root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n      if (root !== null) {\n        scheduleUpdateOnFiber(root, fiber, SyncLane, NoTimestamp);\n      }\n    }\n  };\n\n  overrideHookStateDeletePath = function (fiber, id, path) {\n    var hook = findHook(fiber, id);\n\n    if (hook !== null) {\n      var newState = copyWithDelete(hook.memoizedState, path);\n      hook.memoizedState = newState;\n      hook.baseState = newState; // We aren't actually adding an update to the queue,\n      // because there is no update we can add for useReducer hooks that won't trigger an error.\n      // (There's no appropriate action type for DevTools overrides.)\n      // As a result though, React will see the scheduled update as a noop and bailout.\n      // Shallow cloning props works as a workaround for now to bypass the bailout check.\n\n      fiber.memoizedProps = assign({}, fiber.memoizedProps);\n      var root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n      if (root !== null) {\n        scheduleUpdateOnFiber(root, fiber, SyncLane, NoTimestamp);\n      }\n    }\n  };\n\n  overrideHookStateRenamePath = function (fiber, id, oldPath, newPath) {\n    var hook = findHook(fiber, id);\n\n    if (hook !== null) {\n      var newState = copyWithRename(hook.memoizedState, oldPath, newPath);\n      hook.memoizedState = newState;\n      hook.baseState = newState; // We aren't actually adding an update to the queue,\n      // because there is no update we can add for useReducer hooks that won't trigger an error.\n      // (There's no appropriate action type for DevTools overrides.)\n      // As a result though, React will see the scheduled update as a noop and bailout.\n      // Shallow cloning props works as a workaround for now to bypass the bailout check.\n\n      fiber.memoizedProps = assign({}, fiber.memoizedProps);\n      var root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n      if (root !== null) {\n        scheduleUpdateOnFiber(root, fiber, SyncLane, NoTimestamp);\n      }\n    }\n  }; // Support DevTools props for function components, forwardRef, memo, host components, etc.\n\n\n  overrideProps = function (fiber, path, value) {\n    fiber.pendingProps = copyWithSet(fiber.memoizedProps, path, value);\n\n    if (fiber.alternate) {\n      fiber.alternate.pendingProps = fiber.pendingProps;\n    }\n\n    var root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n    if (root !== null) {\n      scheduleUpdateOnFiber(root, fiber, SyncLane, NoTimestamp);\n    }\n  };\n\n  overridePropsDeletePath = function (fiber, path) {\n    fiber.pendingProps = copyWithDelete(fiber.memoizedProps, path);\n\n    if (fiber.alternate) {\n      fiber.alternate.pendingProps = fiber.pendingProps;\n    }\n\n    var root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n    if (root !== null) {\n      scheduleUpdateOnFiber(root, fiber, SyncLane, NoTimestamp);\n    }\n  };\n\n  overridePropsRenamePath = function (fiber, oldPath, newPath) {\n    fiber.pendingProps = copyWithRename(fiber.memoizedProps, oldPath, newPath);\n\n    if (fiber.alternate) {\n      fiber.alternate.pendingProps = fiber.pendingProps;\n    }\n\n    var root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n    if (root !== null) {\n      scheduleUpdateOnFiber(root, fiber, SyncLane, NoTimestamp);\n    }\n  };\n\n  scheduleUpdate = function (fiber) {\n    var root = enqueueConcurrentRenderForLane(fiber, SyncLane);\n\n    if (root !== null) {\n      scheduleUpdateOnFiber(root, fiber, SyncLane, NoTimestamp);\n    }\n  };\n\n  setErrorHandler = function (newShouldErrorImpl) {\n    shouldErrorImpl = newShouldErrorImpl;\n  };\n\n  setSuspenseHandler = function (newShouldSuspendImpl) {\n    shouldSuspendImpl = newShouldSuspendImpl;\n  };\n}\n\nfunction findHostInstanceByFiber(fiber) {\n  var hostFiber = findCurrentHostFiber(fiber);\n\n  if (hostFiber === null) {\n    return null;\n  }\n\n  return hostFiber.stateNode;\n}\n\nfunction emptyFindFiberByHostInstance(instance) {\n  return null;\n}\n\nfunction getCurrentFiberForDevTools() {\n  return current;\n}\n\nfunction injectIntoDevTools(devToolsConfig) {\n  var findFiberByHostInstance = devToolsConfig.findFiberByHostInstance;\n  var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\n  return injectInternals({\n    bundleType: devToolsConfig.bundleType,\n    version: devToolsConfig.version,\n    rendererPackageName: devToolsConfig.rendererPackageName,\n    rendererConfig: devToolsConfig.rendererConfig,\n    overrideHookState: overrideHookState,\n    overrideHookStateDeletePath: overrideHookStateDeletePath,\n    overrideHookStateRenamePath: overrideHookStateRenamePath,\n    overrideProps: overrideProps,\n    overridePropsDeletePath: overridePropsDeletePath,\n    overridePropsRenamePath: overridePropsRenamePath,\n    setErrorHandler: setErrorHandler,\n    setSuspenseHandler: setSuspenseHandler,\n    scheduleUpdate: scheduleUpdate,\n    currentDispatcherRef: ReactCurrentDispatcher,\n    findHostInstanceByFiber: findHostInstanceByFiber,\n    findFiberByHostInstance: findFiberByHostInstance || emptyFindFiberByHostInstance,\n    // React Refresh\n    findHostInstancesForRefresh:  findHostInstancesForRefresh ,\n    scheduleRefresh:  scheduleRefresh ,\n    scheduleRoot:  scheduleRoot ,\n    setRefreshHandler:  setRefreshHandler ,\n    // Enables DevTools to append owner stacks to error messages in DEV mode.\n    getCurrentFiber:  getCurrentFiberForDevTools ,\n    // Enables DevTools to detect reconciler version rather than renderer version\n    // which may not match for third party renderers.\n    reconcilerVersion: ReactVersion\n  });\n}\n\n/* global reportError */\n\nvar defaultOnRecoverableError = typeof reportError === 'function' ? // In modern browsers, reportError will dispatch an error event,\n// emulating an uncaught JavaScript error.\nreportError : function (error) {\n  // In older browsers and test environments, fallback to console.error.\n  // eslint-disable-next-line react-internal/no-production-logging\n  console['error'](error);\n};\n\nfunction ReactDOMRoot(internalRoot) {\n  this._internalRoot = internalRoot;\n}\n\nReactDOMHydrationRoot.prototype.render = ReactDOMRoot.prototype.render = function (children) {\n  var root = this._internalRoot;\n\n  if (root === null) {\n    throw new Error('Cannot update an unmounted root.');\n  }\n\n  {\n    if (typeof arguments[1] === 'function') {\n      error('render(...): does not support the second callback argument. ' + 'To execute a side effect after rendering, declare it in a component body with useEffect().');\n    } else if (isValidContainer(arguments[1])) {\n      error('You passed a container to the second argument of root.render(...). ' + \"You don't need to pass it again since you already passed it to create the root.\");\n    } else if (typeof arguments[1] !== 'undefined') {\n      error('You passed a second argument to root.render(...) but it only accepts ' + 'one argument.');\n    }\n\n    var container = root.containerInfo;\n\n    if (container.nodeType !== COMMENT_NODE) {\n      var hostInstance = findHostInstanceWithNoPortals(root.current);\n\n      if (hostInstance) {\n        if (hostInstance.parentNode !== container) {\n          error('render(...): It looks like the React-rendered content of the ' + 'root container was removed without using React. This is not ' + 'supported and will cause errors. Instead, call ' + \"root.unmount() to empty a root's container.\");\n        }\n      }\n    }\n  }\n\n  updateContainer(children, root, null, null);\n};\n\nReactDOMHydrationRoot.prototype.unmount = ReactDOMRoot.prototype.unmount = function () {\n  {\n    if (typeof arguments[0] === 'function') {\n      error('unmount(...): does not support a callback argument. ' + 'To execute a side effect after rendering, declare it in a component body with useEffect().');\n    }\n  }\n\n  var root = this._internalRoot;\n\n  if (root !== null) {\n    this._internalRoot = null;\n    var container = root.containerInfo;\n\n    {\n      if (isAlreadyRendering()) {\n        error('Attempted to synchronously unmount a root while React was already ' + 'rendering. React cannot finish unmounting the root until the ' + 'current render has completed, which may lead to a race condition.');\n      }\n    }\n\n    flushSync(function () {\n      updateContainer(null, root, null, null);\n    });\n    unmarkContainerAsRoot(container);\n  }\n};\n\nfunction createRoot(container, options) {\n  if (!isValidContainer(container)) {\n    throw new Error('createRoot(...): Target container is not a DOM element.');\n  }\n\n  warnIfReactDOMContainerInDEV(container);\n  var isStrictMode = false;\n  var concurrentUpdatesByDefaultOverride = false;\n  var identifierPrefix = '';\n  var onRecoverableError = defaultOnRecoverableError;\n  var transitionCallbacks = null;\n\n  if (options !== null && options !== undefined) {\n    {\n      if (options.hydrate) {\n        warn('hydrate through createRoot is deprecated. Use ReactDOMClient.hydrateRoot(container, <App />) instead.');\n      } else {\n        if (typeof options === 'object' && options !== null && options.$$typeof === REACT_ELEMENT_TYPE) {\n          error('You passed a JSX element to createRoot. You probably meant to ' + 'call root.render instead. ' + 'Example usage:\\n\\n' + '  let root = createRoot(domContainer);\\n' + '  root.render(<App />);');\n        }\n      }\n    }\n\n    if (options.unstable_strictMode === true) {\n      isStrictMode = true;\n    }\n\n    if (options.identifierPrefix !== undefined) {\n      identifierPrefix = options.identifierPrefix;\n    }\n\n    if (options.onRecoverableError !== undefined) {\n      onRecoverableError = options.onRecoverableError;\n    }\n\n    if (options.transitionCallbacks !== undefined) {\n      transitionCallbacks = options.transitionCallbacks;\n    }\n  }\n\n  var root = createContainer(container, ConcurrentRoot, null, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError);\n  markContainerAsRoot(root.current, container);\n  var rootContainerElement = container.nodeType === COMMENT_NODE ? container.parentNode : container;\n  listenToAllSupportedEvents(rootContainerElement);\n  return new ReactDOMRoot(root);\n}\n\nfunction ReactDOMHydrationRoot(internalRoot) {\n  this._internalRoot = internalRoot;\n}\n\nfunction scheduleHydration(target) {\n  if (target) {\n    queueExplicitHydrationTarget(target);\n  }\n}\n\nReactDOMHydrationRoot.prototype.unstable_scheduleHydration = scheduleHydration;\nfunction hydrateRoot(container, initialChildren, options) {\n  if (!isValidContainer(container)) {\n    throw new Error('hydrateRoot(...): Target container is not a DOM element.');\n  }\n\n  warnIfReactDOMContainerInDEV(container);\n\n  {\n    if (initialChildren === undefined) {\n      error('Must provide initial children as second argument to hydrateRoot. ' + 'Example usage: hydrateRoot(domContainer, <App />)');\n    }\n  } // For now we reuse the whole bag of options since they contain\n  // the hydration callbacks.\n\n\n  var hydrationCallbacks = options != null ? options : null; // TODO: Delete this option\n\n  var mutableSources = options != null && options.hydratedSources || null;\n  var isStrictMode = false;\n  var concurrentUpdatesByDefaultOverride = false;\n  var identifierPrefix = '';\n  var onRecoverableError = defaultOnRecoverableError;\n\n  if (options !== null && options !== undefined) {\n    if (options.unstable_strictMode === true) {\n      isStrictMode = true;\n    }\n\n    if (options.identifierPrefix !== undefined) {\n      identifierPrefix = options.identifierPrefix;\n    }\n\n    if (options.onRecoverableError !== undefined) {\n      onRecoverableError = options.onRecoverableError;\n    }\n  }\n\n  var root = createHydrationContainer(initialChildren, null, container, ConcurrentRoot, hydrationCallbacks, isStrictMode, concurrentUpdatesByDefaultOverride, identifierPrefix, onRecoverableError);\n  markContainerAsRoot(root.current, container); // This can't be a comment node since hydration doesn't work on comment nodes anyway.\n\n  listenToAllSupportedEvents(container);\n\n  if (mutableSources) {\n    for (var i = 0; i < mutableSources.length; i++) {\n      var mutableSource = mutableSources[i];\n      registerMutableSourceForHydration(root, mutableSource);\n    }\n  }\n\n  return new ReactDOMHydrationRoot(root);\n}\nfunction isValidContainer(node) {\n  return !!(node && (node.nodeType === ELEMENT_NODE || node.nodeType === DOCUMENT_NODE || node.nodeType === DOCUMENT_FRAGMENT_NODE || !disableCommentsAsDOMContainers  ));\n} // TODO: Remove this function which also includes comment nodes.\n// We only use it in places that are currently more relaxed.\n\nfunction isValidContainerLegacy(node) {\n  return !!(node && (node.nodeType === ELEMENT_NODE || node.nodeType === DOCUMENT_NODE || node.nodeType === DOCUMENT_FRAGMENT_NODE || node.nodeType === COMMENT_NODE && node.nodeValue === ' react-mount-point-unstable '));\n}\n\nfunction warnIfReactDOMContainerInDEV(container) {\n  {\n    if (container.nodeType === ELEMENT_NODE && container.tagName && container.tagName.toUpperCase() === 'BODY') {\n      error('createRoot(): Creating roots directly with document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try using a container element created ' + 'for your app.');\n    }\n\n    if (isContainerMarkedAsRoot(container)) {\n      if (container._reactRootContainer) {\n        error('You are calling ReactDOMClient.createRoot() on a container that was previously ' + 'passed to ReactDOM.render(). This is not supported.');\n      } else {\n        error('You are calling ReactDOMClient.createRoot() on a container that ' + 'has already been passed to createRoot() before. Instead, call ' + 'root.render() on the existing root instead if you want to update it.');\n      }\n    }\n  }\n}\n\nvar ReactCurrentOwner$3 = ReactSharedInternals.ReactCurrentOwner;\nvar topLevelUpdateWarnings;\n\n{\n  topLevelUpdateWarnings = function (container) {\n    if (container._reactRootContainer && container.nodeType !== COMMENT_NODE) {\n      var hostInstance = findHostInstanceWithNoPortals(container._reactRootContainer.current);\n\n      if (hostInstance) {\n        if (hostInstance.parentNode !== container) {\n          error('render(...): It looks like the React-rendered content of this ' + 'container was removed without using React. This is not ' + 'supported and will cause errors. Instead, call ' + 'ReactDOM.unmountComponentAtNode to empty a container.');\n        }\n      }\n    }\n\n    var isRootRenderedBySomeReact = !!container._reactRootContainer;\n    var rootEl = getReactRootElementInContainer(container);\n    var hasNonRootReactChild = !!(rootEl && getInstanceFromNode(rootEl));\n\n    if (hasNonRootReactChild && !isRootRenderedBySomeReact) {\n      error('render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.');\n    }\n\n    if (container.nodeType === ELEMENT_NODE && container.tagName && container.tagName.toUpperCase() === 'BODY') {\n      error('render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.');\n    }\n  };\n}\n\nfunction getReactRootElementInContainer(container) {\n  if (!container) {\n    return null;\n  }\n\n  if (container.nodeType === DOCUMENT_NODE) {\n    return container.documentElement;\n  } else {\n    return container.firstChild;\n  }\n}\n\nfunction noopOnRecoverableError() {// This isn't reachable because onRecoverableError isn't called in the\n  // legacy API.\n}\n\nfunction legacyCreateRootFromDOMContainer(container, initialChildren, parentComponent, callback, isHydrationContainer) {\n  if (isHydrationContainer) {\n    if (typeof callback === 'function') {\n      var originalCallback = callback;\n\n      callback = function () {\n        var instance = getPublicRootInstance(root);\n        originalCallback.call(instance);\n      };\n    }\n\n    var root = createHydrationContainer(initialChildren, callback, container, LegacyRoot, null, // hydrationCallbacks\n    false, // isStrictMode\n    false, // concurrentUpdatesByDefaultOverride,\n    '', // identifierPrefix\n    noopOnRecoverableError);\n    container._reactRootContainer = root;\n    markContainerAsRoot(root.current, container);\n    var rootContainerElement = container.nodeType === COMMENT_NODE ? container.parentNode : container;\n    listenToAllSupportedEvents(rootContainerElement);\n    flushSync();\n    return root;\n  } else {\n    // First clear any existing content.\n    var rootSibling;\n\n    while (rootSibling = container.lastChild) {\n      container.removeChild(rootSibling);\n    }\n\n    if (typeof callback === 'function') {\n      var _originalCallback = callback;\n\n      callback = function () {\n        var instance = getPublicRootInstance(_root);\n\n        _originalCallback.call(instance);\n      };\n    }\n\n    var _root = createContainer(container, LegacyRoot, null, // hydrationCallbacks\n    false, // isStrictMode\n    false, // concurrentUpdatesByDefaultOverride,\n    '', // identifierPrefix\n    noopOnRecoverableError);\n\n    container._reactRootContainer = _root;\n    markContainerAsRoot(_root.current, container);\n\n    var _rootContainerElement = container.nodeType === COMMENT_NODE ? container.parentNode : container;\n\n    listenToAllSupportedEvents(_rootContainerElement); // Initial mount should not be batched.\n\n    flushSync(function () {\n      updateContainer(initialChildren, _root, parentComponent, callback);\n    });\n    return _root;\n  }\n}\n\nfunction warnOnInvalidCallback$1(callback, callerName) {\n  {\n    if (callback !== null && typeof callback !== 'function') {\n      error('%s(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callerName, callback);\n    }\n  }\n}\n\nfunction legacyRenderSubtreeIntoContainer(parentComponent, children, container, forceHydrate, callback) {\n  {\n    topLevelUpdateWarnings(container);\n    warnOnInvalidCallback$1(callback === undefined ? null : callback, 'render');\n  }\n\n  var maybeRoot = container._reactRootContainer;\n  var root;\n\n  if (!maybeRoot) {\n    // Initial mount\n    root = legacyCreateRootFromDOMContainer(container, children, parentComponent, callback, forceHydrate);\n  } else {\n    root = maybeRoot;\n\n    if (typeof callback === 'function') {\n      var originalCallback = callback;\n\n      callback = function () {\n        var instance = getPublicRootInstance(root);\n        originalCallback.call(instance);\n      };\n    } // Update\n\n\n    updateContainer(children, root, parentComponent, callback);\n  }\n\n  return getPublicRootInstance(root);\n}\n\nfunction findDOMNode(componentOrElement) {\n  {\n    var owner = ReactCurrentOwner$3.current;\n\n    if (owner !== null && owner.stateNode !== null) {\n      var warnedAboutRefsInRender = owner.stateNode._warnedAboutRefsInRender;\n\n      if (!warnedAboutRefsInRender) {\n        error('%s is accessing findDOMNode inside its render(). ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', getComponentNameFromType(owner.type) || 'A component');\n      }\n\n      owner.stateNode._warnedAboutRefsInRender = true;\n    }\n  }\n\n  if (componentOrElement == null) {\n    return null;\n  }\n\n  if (componentOrElement.nodeType === ELEMENT_NODE) {\n    return componentOrElement;\n  }\n\n  {\n    return findHostInstanceWithWarning(componentOrElement, 'findDOMNode');\n  }\n}\nfunction hydrate(element, container, callback) {\n  {\n    error('ReactDOM.hydrate is no longer supported in React 18. Use hydrateRoot ' + 'instead. Until you switch to the new API, your app will behave as ' + \"if it's running React 17. Learn \" + 'more: https://reactjs.org/link/switch-to-createroot');\n  }\n\n  if (!isValidContainerLegacy(container)) {\n    throw new Error('Target container is not a DOM element.');\n  }\n\n  {\n    var isModernRoot = isContainerMarkedAsRoot(container) && container._reactRootContainer === undefined;\n\n    if (isModernRoot) {\n      error('You are calling ReactDOM.hydrate() on a container that was previously ' + 'passed to ReactDOMClient.createRoot(). This is not supported. ' + 'Did you mean to call hydrateRoot(container, element)?');\n    }\n  } // TODO: throw or warn if we couldn't hydrate?\n\n\n  return legacyRenderSubtreeIntoContainer(null, element, container, true, callback);\n}\nfunction render(element, container, callback) {\n  {\n    error('ReactDOM.render is no longer supported in React 18. Use createRoot ' + 'instead. Until you switch to the new API, your app will behave as ' + \"if it's running React 17. Learn \" + 'more: https://reactjs.org/link/switch-to-createroot');\n  }\n\n  if (!isValidContainerLegacy(container)) {\n    throw new Error('Target container is not a DOM element.');\n  }\n\n  {\n    var isModernRoot = isContainerMarkedAsRoot(container) && container._reactRootContainer === undefined;\n\n    if (isModernRoot) {\n      error('You are calling ReactDOM.render() on a container that was previously ' + 'passed to ReactDOMClient.createRoot(). This is not supported. ' + 'Did you mean to call root.render(element)?');\n    }\n  }\n\n  return legacyRenderSubtreeIntoContainer(null, element, container, false, callback);\n}\nfunction unstable_renderSubtreeIntoContainer(parentComponent, element, containerNode, callback) {\n  {\n    error('ReactDOM.unstable_renderSubtreeIntoContainer() is no longer supported ' + 'in React 18. Consider using a portal instead. Until you switch to ' + \"the createRoot API, your app will behave as if it's running React \" + '17. Learn more: https://reactjs.org/link/switch-to-createroot');\n  }\n\n  if (!isValidContainerLegacy(containerNode)) {\n    throw new Error('Target container is not a DOM element.');\n  }\n\n  if (parentComponent == null || !has(parentComponent)) {\n    throw new Error('parentComponent must be a valid React Component');\n  }\n\n  return legacyRenderSubtreeIntoContainer(parentComponent, element, containerNode, false, callback);\n}\nfunction unmountComponentAtNode(container) {\n  if (!isValidContainerLegacy(container)) {\n    throw new Error('unmountComponentAtNode(...): Target container is not a DOM element.');\n  }\n\n  {\n    var isModernRoot = isContainerMarkedAsRoot(container) && container._reactRootContainer === undefined;\n\n    if (isModernRoot) {\n      error('You are calling ReactDOM.unmountComponentAtNode() on a container that was previously ' + 'passed to ReactDOMClient.createRoot(). This is not supported. Did you mean to call root.unmount()?');\n    }\n  }\n\n  if (container._reactRootContainer) {\n    {\n      var rootEl = getReactRootElementInContainer(container);\n      var renderedByDifferentReact = rootEl && !getInstanceFromNode(rootEl);\n\n      if (renderedByDifferentReact) {\n        error(\"unmountComponentAtNode(): The node you're attempting to unmount \" + 'was rendered by another copy of React.');\n      }\n    } // Unmount should not be batched.\n\n\n    flushSync(function () {\n      legacyRenderSubtreeIntoContainer(null, null, container, false, function () {\n        // $FlowFixMe This should probably use `delete container._reactRootContainer`\n        container._reactRootContainer = null;\n        unmarkContainerAsRoot(container);\n      });\n    }); // If you call unmountComponentAtNode twice in quick succession, you'll\n    // get `true` twice. That's probably fine?\n\n    return true;\n  } else {\n    {\n      var _rootEl = getReactRootElementInContainer(container);\n\n      var hasNonRootReactChild = !!(_rootEl && getInstanceFromNode(_rootEl)); // Check if the container itself is a React root node.\n\n      var isContainerReactRoot = container.nodeType === ELEMENT_NODE && isValidContainerLegacy(container.parentNode) && !!container.parentNode._reactRootContainer;\n\n      if (hasNonRootReactChild) {\n        error(\"unmountComponentAtNode(): The node you're attempting to unmount \" + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.');\n      }\n    }\n\n    return false;\n  }\n}\n\nsetAttemptSynchronousHydration(attemptSynchronousHydration$1);\nsetAttemptContinuousHydration(attemptContinuousHydration$1);\nsetAttemptHydrationAtCurrentPriority(attemptHydrationAtCurrentPriority$1);\nsetGetCurrentUpdatePriority(getCurrentUpdatePriority);\nsetAttemptHydrationAtPriority(runWithPriority);\n\n{\n  if (typeof Map !== 'function' || // $FlowIssue Flow incorrectly thinks Map has no prototype\n  Map.prototype == null || typeof Map.prototype.forEach !== 'function' || typeof Set !== 'function' || // $FlowIssue Flow incorrectly thinks Set has no prototype\n  Set.prototype == null || typeof Set.prototype.clear !== 'function' || typeof Set.prototype.forEach !== 'function') {\n    error('React depends on Map and Set built-in types. Make sure that you load a ' + 'polyfill in older browsers. https://reactjs.org/link/react-polyfills');\n  }\n}\n\nsetRestoreImplementation(restoreControlledState$3);\nsetBatchingImplementation(batchedUpdates$1, discreteUpdates, flushSync);\n\nfunction createPortal$1(children, container) {\n  var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n\n  if (!isValidContainer(container)) {\n    throw new Error('Target container is not a DOM element.');\n  } // TODO: pass ReactDOM portal implementation as third argument\n  // $FlowFixMe The Flow type is opaque but there's no way to actually create it.\n\n\n  return createPortal(children, container, null, key);\n}\n\nfunction renderSubtreeIntoContainer(parentComponent, element, containerNode, callback) {\n  return unstable_renderSubtreeIntoContainer(parentComponent, element, containerNode, callback);\n}\n\nvar Internals = {\n  usingClientEntryPoint: false,\n  // Keep in sync with ReactTestUtils.js.\n  // This is an array for better minification.\n  Events: [getInstanceFromNode, getNodeFromInstance, getFiberCurrentPropsFromNode, enqueueStateRestore, restoreStateIfNeeded, batchedUpdates$1]\n};\n\nfunction createRoot$1(container, options) {\n  {\n    if (!Internals.usingClientEntryPoint && !false) {\n      error('You are importing createRoot from \"react-dom\" which is not supported. ' + 'You should instead import it from \"react-dom/client\".');\n    }\n  }\n\n  return createRoot(container, options);\n}\n\nfunction hydrateRoot$1(container, initialChildren, options) {\n  {\n    if (!Internals.usingClientEntryPoint && !false) {\n      error('You are importing hydrateRoot from \"react-dom\" which is not supported. ' + 'You should instead import it from \"react-dom/client\".');\n    }\n  }\n\n  return hydrateRoot(container, initialChildren, options);\n} // Overload the definition to the two valid signatures.\n// Warning, this opts-out of checking the function body.\n\n\n// eslint-disable-next-line no-redeclare\nfunction flushSync$1(fn) {\n  {\n    if (isAlreadyRendering()) {\n      error('flushSync was called from inside a lifecycle method. React cannot ' + 'flush when React is already rendering. Consider moving this call to ' + 'a scheduler task or micro task.');\n    }\n  }\n\n  return flushSync(fn);\n}\nvar foundDevTools = injectIntoDevTools({\n  findFiberByHostInstance: getClosestInstanceFromNode,\n  bundleType:  1 ,\n  version: ReactVersion,\n  rendererPackageName: 'react-dom'\n});\n\n{\n  if (!foundDevTools && canUseDOM && window.top === window.self) {\n    // If we're in Chrome or Firefox, provide a download link if not installed.\n    if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) {\n      var protocol = window.location.protocol; // Don't warn in exotic cases like chrome-extension://.\n\n      if (/^(https?|file):$/.test(protocol)) {\n        // eslint-disable-next-line react-internal/no-production-logging\n        console.info('%cDownload the React DevTools ' + 'for a better development experience: ' + 'https://reactjs.org/link/react-devtools' + (protocol === 'file:' ? '\\nYou might need to use a local HTTP server (instead of file://): ' + 'https://reactjs.org/link/react-devtools-faq' : ''), 'font-weight:bold');\n      }\n    }\n  }\n}\n\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = Internals;\nexports.createPortal = createPortal$1;\nexports.createRoot = createRoot$1;\nexports.findDOMNode = findDOMNode;\nexports.flushSync = flushSync$1;\nexports.hydrate = hydrate;\nexports.hydrateRoot = hydrateRoot$1;\nexports.render = render;\nexports.unmountComponentAtNode = unmountComponentAtNode;\nexports.unstable_batchedUpdates = batchedUpdates$1;\nexports.unstable_renderSubtreeIntoContainer = renderSubtreeIntoContainer;\nexports.version = ReactVersion;\n          /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n    'function'\n) {\n  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n        \n  })();\n}\n", "'use strict';\n\nfunction checkDCE() {\n  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n  if (\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n  ) {\n    return;\n  }\n  if (process.env.NODE_ENV !== 'production') {\n    // This branch is unreachable because this function is only called\n    // in production, but the condition is true only in development.\n    // Therefore if the branch is still here, dead code elimination wasn't\n    // properly applied.\n    // Don't change the message. React DevTools relies on it. Also make sure\n    // this message doesn't occur elsewhere in this function, or it will cause\n    // a false positive.\n    throw new Error('^_^');\n  }\n  try {\n    // Verify that the code above has been dead code eliminated (DCE'd).\n    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n  } catch (err) {\n    // DevTools shouldn't crash React, no matter what.\n    // We should still report in case we break this code.\n    console.error(err);\n  }\n}\n\nif (process.env.NODE_ENV === 'production') {\n  // DCE check should happen before ReactDOM bundle executes so that\n  // DevTools can report bad minification during injection.\n  checkDCE();\n  module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n  module.exports = require('./cjs/react-dom.development.js');\n}\n", "'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n  exports.createRoot = m.createRoot;\n  exports.hydrateRoot = m.hydrateRoot;\n} else {\n  var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n  exports.createRoot = function(c, o) {\n    i.usingClientEntryPoint = true;\n    try {\n      return m.createRoot(c, o);\n    } finally {\n      i.usingClientEntryPoint = false;\n    }\n  };\n  exports.hydrateRoot = function(c, h, o) {\n    i.usingClientEntryPoint = true;\n    try {\n      return m.hydrateRoot(c, h, o);\n    } finally {\n      i.usingClientEntryPoint = false;\n    }\n  };\n}\n", "/** @license React v16.13.1\n * react-is.development.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\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n  return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n  type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n  if (typeof object === 'object' && object !== null) {\n    var $$typeof = object.$$typeof;\n\n    switch ($$typeof) {\n      case REACT_ELEMENT_TYPE:\n        var type = object.type;\n\n        switch (type) {\n          case REACT_ASYNC_MODE_TYPE:\n          case REACT_CONCURRENT_MODE_TYPE:\n          case REACT_FRAGMENT_TYPE:\n          case REACT_PROFILER_TYPE:\n          case REACT_STRICT_MODE_TYPE:\n          case REACT_SUSPENSE_TYPE:\n            return type;\n\n          default:\n            var $$typeofType = type && type.$$typeof;\n\n            switch ($$typeofType) {\n              case REACT_CONTEXT_TYPE:\n              case REACT_FORWARD_REF_TYPE:\n              case REACT_LAZY_TYPE:\n              case REACT_MEMO_TYPE:\n              case REACT_PROVIDER_TYPE:\n                return $$typeofType;\n\n              default:\n                return $$typeof;\n            }\n\n        }\n\n      case REACT_PORTAL_TYPE:\n        return $$typeof;\n    }\n  }\n\n  return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n    }\n  }\n\n  return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n  return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n  return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n  return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n  return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n  return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n  return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n  return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n  return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n  return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n  return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n  return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n  })();\n}\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\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n  childContextTypes: true,\n  contextType: true,\n  contextTypes: true,\n  defaultProps: true,\n  displayName: true,\n  getDefaultProps: true,\n  getDerivedStateFromError: true,\n  getDerivedStateFromProps: true,\n  mixins: true,\n  propTypes: true,\n  type: true\n};\nvar KNOWN_STATICS = {\n  name: true,\n  length: true,\n  prototype: true,\n  caller: true,\n  callee: true,\n  arguments: true,\n  arity: true\n};\nvar FORWARD_REF_STATICS = {\n  '$$typeof': true,\n  render: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true\n};\nvar MEMO_STATICS = {\n  '$$typeof': true,\n  compare: true,\n  defaultProps: true,\n  displayName: true,\n  propTypes: true,\n  type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n  // React v16.11 and below\n  if (reactIs.isMemo(component)) {\n    return MEMO_STATICS;\n  } // React v16.12 and above\n\n\n  return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n  if (typeof sourceComponent !== 'string') {\n    // don't hoist over string (html) components\n    if (objectPrototype) {\n      var inheritedComponent = getPrototypeOf(sourceComponent);\n\n      if (inheritedComponent && inheritedComponent !== objectPrototype) {\n        hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n      }\n    }\n\n    var keys = getOwnPropertyNames(sourceComponent);\n\n    if (getOwnPropertySymbols) {\n      keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n    }\n\n    var targetStatics = getStatics(targetComponent);\n    var sourceStatics = getStatics(sourceComponent);\n\n    for (var i = 0; i < keys.length; ++i) {\n      var key = keys[i];\n\n      if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n        var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n        try {\n          // Avoid failures from read-only properties\n          defineProperty(targetComponent, key, descriptor);\n        } catch (e) {}\n      }\n    }\n  }\n\n  return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n", "/**\n * @license React\n * use-sync-external-store-shim.development.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\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n\n          'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n    'function'\n) {\n  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n          var React = require('react');\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n  {\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      printWarning('error', format, args);\n    }\n  }\n}\n\nfunction printWarning(level, format, args) {\n  // When changing this logic, you might want to also\n  // update consoleWithStackDev.www.js as well.\n  {\n    var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n    var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n    if (stack !== '') {\n      format += '%s';\n      args = args.concat([stack]);\n    } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n    var argsWithFormat = args.map(function (item) {\n      return String(item);\n    }); // Careful: RN currently depends on this prefix\n\n    argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n    // breaks IE9: https://github.com/facebook/react/issues/13610\n    // eslint-disable-next-line react-internal/no-production-logging\n\n    Function.prototype.apply.call(console[level], console, argsWithFormat);\n  }\n}\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n  return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare\n  ;\n}\n\nvar objectIs = typeof Object.is === 'function' ? Object.is : is;\n\n// dispatch for CommonJS interop named imports.\n\nvar useState = React.useState,\n    useEffect = React.useEffect,\n    useLayoutEffect = React.useLayoutEffect,\n    useDebugValue = React.useDebugValue;\nvar didWarnOld18Alpha = false;\nvar didWarnUncachedGetSnapshot = false; // Disclaimer: This shim breaks many of the rules of React, and only works\n// because of a very particular set of implementation details and assumptions\n// -- change any one of them and it will break. The most important assumption\n// is that updates are always synchronous, because concurrent rendering is\n// only available in versions of React that also have a built-in\n// useSyncExternalStore API. And we only use this shim when the built-in API\n// does not exist.\n//\n// Do not assume that the clever hacks used by this hook also work in general.\n// The point of this shim is to replace the need for hacks by other libraries.\n\nfunction useSyncExternalStore(subscribe, getSnapshot, // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n// React do not expose a way to check if we're hydrating. So users of the shim\n// will need to track that themselves and return the correct value\n// from `getSnapshot`.\ngetServerSnapshot) {\n  {\n    if (!didWarnOld18Alpha) {\n      if (React.startTransition !== undefined) {\n        didWarnOld18Alpha = true;\n\n        error('You are using an outdated, pre-release alpha of React 18 that ' + 'does not support useSyncExternalStore. The ' + 'use-sync-external-store shim will not work correctly. Upgrade ' + 'to a newer pre-release.');\n      }\n    }\n  } // Read the current snapshot from the store on every render. Again, this\n  // breaks the rules of React, and only works here because of specific\n  // implementation details, most importantly that updates are\n  // always synchronous.\n\n\n  var value = getSnapshot();\n\n  {\n    if (!didWarnUncachedGetSnapshot) {\n      var cachedValue = getSnapshot();\n\n      if (!objectIs(value, cachedValue)) {\n        error('The result of getSnapshot should be cached to avoid an infinite loop');\n\n        didWarnUncachedGetSnapshot = true;\n      }\n    }\n  } // Because updates are synchronous, we don't queue them. Instead we force a\n  // re-render whenever the subscribed state changes by updating an some\n  // arbitrary useState hook. Then, during render, we call getSnapshot to read\n  // the current value.\n  //\n  // Because we don't actually use the state returned by the useState hook, we\n  // can save a bit of memory by storing other stuff in that slot.\n  //\n  // To implement the early bailout, we need to track some things on a mutable\n  // object. Usually, we would put that in a useRef hook, but we can stash it in\n  // our useState hook instead.\n  //\n  // To force a re-render, we call forceUpdate({inst}). That works because the\n  // new object always fails an equality check.\n\n\n  var _useState = useState({\n    inst: {\n      value: value,\n      getSnapshot: getSnapshot\n    }\n  }),\n      inst = _useState[0].inst,\n      forceUpdate = _useState[1]; // Track the latest getSnapshot function with a ref. This needs to be updated\n  // in the layout phase so we can access it during the tearing check that\n  // happens on subscribe.\n\n\n  useLayoutEffect(function () {\n    inst.value = value;\n    inst.getSnapshot = getSnapshot; // Whenever getSnapshot or subscribe changes, we need to check in the\n    // commit phase if there was an interleaved mutation. In concurrent mode\n    // this can happen all the time, but even in synchronous mode, an earlier\n    // effect may have mutated the store.\n\n    if (checkIfSnapshotChanged(inst)) {\n      // Force a re-render.\n      forceUpdate({\n        inst: inst\n      });\n    }\n  }, [subscribe, value, getSnapshot]);\n  useEffect(function () {\n    // Check for changes right before subscribing. Subsequent changes will be\n    // detected in the subscription handler.\n    if (checkIfSnapshotChanged(inst)) {\n      // Force a re-render.\n      forceUpdate({\n        inst: inst\n      });\n    }\n\n    var handleStoreChange = function () {\n      // TODO: Because there is no cross-renderer API for batching updates, it's\n      // up to the consumer of this library to wrap their subscription event\n      // with unstable_batchedUpdates. Should we try to detect when this isn't\n      // the case and print a warning in development?\n      // The store changed. Check if the snapshot changed since the last time we\n      // read from the store.\n      if (checkIfSnapshotChanged(inst)) {\n        // Force a re-render.\n        forceUpdate({\n          inst: inst\n        });\n      }\n    }; // Subscribe to the store and return a clean-up function.\n\n\n    return subscribe(handleStoreChange);\n  }, [subscribe]);\n  useDebugValue(value);\n  return value;\n}\n\nfunction checkIfSnapshotChanged(inst) {\n  var latestGetSnapshot = inst.getSnapshot;\n  var prevValue = inst.value;\n\n  try {\n    var nextValue = latestGetSnapshot();\n    return !objectIs(prevValue, nextValue);\n  } catch (error) {\n    return true;\n  }\n}\n\nfunction useSyncExternalStore$1(subscribe, getSnapshot, getServerSnapshot) {\n  // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n  // React do not expose a way to check if we're hydrating. So users of the shim\n  // will need to track that themselves and return the correct value\n  // from `getSnapshot`.\n  return getSnapshot();\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\n\nvar isServerEnvironment = !canUseDOM;\n\nvar shim = isServerEnvironment ? useSyncExternalStore$1 : useSyncExternalStore;\nvar useSyncExternalStore$2 = React.useSyncExternalStore !== undefined ? React.useSyncExternalStore : shim;\n\nexports.useSyncExternalStore = useSyncExternalStore$2;\n          /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n    'function'\n) {\n  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n        \n  })();\n}\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 * @license React\n * use-sync-external-store-shim/with-selector.development.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\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n\n          'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n    'function'\n) {\n  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n          var React = require('react');\nvar shim = require('use-sync-external-store/shim');\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction is(x, y) {\n  return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare\n  ;\n}\n\nvar objectIs = typeof Object.is === 'function' ? Object.is : is;\n\nvar useSyncExternalStore = shim.useSyncExternalStore;\n\n// for CommonJS interop.\n\nvar useRef = React.useRef,\n    useEffect = React.useEffect,\n    useMemo = React.useMemo,\n    useDebugValue = React.useDebugValue; // Same as useSyncExternalStore, but supports selector and isEqual arguments.\n\nfunction useSyncExternalStoreWithSelector(subscribe, getSnapshot, getServerSnapshot, selector, isEqual) {\n  // Use this to track the rendered snapshot.\n  var instRef = useRef(null);\n  var inst;\n\n  if (instRef.current === null) {\n    inst = {\n      hasValue: false,\n      value: null\n    };\n    instRef.current = inst;\n  } else {\n    inst = instRef.current;\n  }\n\n  var _useMemo = useMemo(function () {\n    // Track the memoized state using closure variables that are local to this\n    // memoized instance of a getSnapshot function. Intentionally not using a\n    // useRef hook, because that state would be shared across all concurrent\n    // copies of the hook/component.\n    var hasMemo = false;\n    var memoizedSnapshot;\n    var memoizedSelection;\n\n    var memoizedSelector = function (nextSnapshot) {\n      if (!hasMemo) {\n        // The first time the hook is called, there is no memoized result.\n        hasMemo = true;\n        memoizedSnapshot = nextSnapshot;\n\n        var _nextSelection = selector(nextSnapshot);\n\n        if (isEqual !== undefined) {\n          // Even if the selector has changed, the currently rendered selection\n          // may be equal to the new selection. We should attempt to reuse the\n          // current value if possible, to preserve downstream memoizations.\n          if (inst.hasValue) {\n            var currentSelection = inst.value;\n\n            if (isEqual(currentSelection, _nextSelection)) {\n              memoizedSelection = currentSelection;\n              return currentSelection;\n            }\n          }\n        }\n\n        memoizedSelection = _nextSelection;\n        return _nextSelection;\n      } // We may be able to reuse the previous invocation's result.\n\n\n      // We may be able to reuse the previous invocation's result.\n      var prevSnapshot = memoizedSnapshot;\n      var prevSelection = memoizedSelection;\n\n      if (objectIs(prevSnapshot, nextSnapshot)) {\n        // The snapshot is the same as last time. Reuse the previous selection.\n        return prevSelection;\n      } // The snapshot has changed, so we need to compute a new selection.\n\n\n      // The snapshot has changed, so we need to compute a new selection.\n      var nextSelection = selector(nextSnapshot); // If a custom isEqual function is provided, use that to check if the data\n      // has changed. If it hasn't, return the previous selection. That signals\n      // to React that the selections are conceptually equal, and we can bail\n      // out of rendering.\n\n      // If a custom isEqual function is provided, use that to check if the data\n      // has changed. If it hasn't, return the previous selection. That signals\n      // to React that the selections are conceptually equal, and we can bail\n      // out of rendering.\n      if (isEqual !== undefined && isEqual(prevSelection, nextSelection)) {\n        return prevSelection;\n      }\n\n      memoizedSnapshot = nextSnapshot;\n      memoizedSelection = nextSelection;\n      return nextSelection;\n    }; // Assigning this to a constant so that Flow knows it can't change.\n\n\n    // Assigning this to a constant so that Flow knows it can't change.\n    var maybeGetServerSnapshot = getServerSnapshot === undefined ? null : getServerSnapshot;\n\n    var getSnapshotWithSelector = function () {\n      return memoizedSelector(getSnapshot());\n    };\n\n    var getServerSnapshotWithSelector = maybeGetServerSnapshot === null ? undefined : function () {\n      return memoizedSelector(maybeGetServerSnapshot());\n    };\n    return [getSnapshotWithSelector, getServerSnapshotWithSelector];\n  }, [getSnapshot, getServerSnapshot, selector, isEqual]),\n      getSelection = _useMemo[0],\n      getServerSelection = _useMemo[1];\n\n  var value = useSyncExternalStore(subscribe, getSelection, getServerSelection);\n  useEffect(function () {\n    inst.hasValue = true;\n    inst.value = value;\n  }, [value]);\n  useDebugValue(value);\n  return value;\n}\n\nexports.useSyncExternalStoreWithSelector = useSyncExternalStoreWithSelector;\n          /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n  typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n    'function'\n) {\n  __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n        \n  })();\n}\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.min.js');\n} else {\n  module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n", "\"use strict\";\n\nexports.__esModule = true;\nObject.defineProperty(exports, \"unstable_batchedUpdates\", {\n  enumerable: true,\n  get: function () {\n    return _reactDom.unstable_batchedUpdates;\n  }\n});\n\nvar _reactDom = require(\"react-dom\");", "\"use strict\";\n\nexports.__esModule = true;\nexports.getBatch = exports.setBatch = void 0;\n\n// Default to a dummy \"batch\" implementation that just runs the callback\nfunction defaultNoopBatch(callback) {\n  callback();\n}\n\nlet batch = defaultNoopBatch; // Allow injecting another batching function later\n\nconst setBatch = newBatch => batch = newBatch; // Supply a getter just to skip dealing with ESM bindings\n\n\nexports.setBatch = setBatch;\n\nconst getBatch = () => batch;\n\nexports.getBatch = getBatch;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = exports.ReactReduxContext = void 0;\n\nvar _react = require(\"react\");\n\nconst ReactReduxContext = /*#__PURE__*/(0, _react.createContext)(null);\nexports.ReactReduxContext = ReactReduxContext;\n\nif (process.env.NODE_ENV !== 'production') {\n  ReactReduxContext.displayName = 'ReactRedux';\n}\n\nvar _default = ReactReduxContext;\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.useReduxContext = useReduxContext;\n\nvar _react = require(\"react\");\n\nvar _Context = require(\"../components/Context\");\n\n/**\r\n * A hook to access the value of the `ReactReduxContext`. This is a low-level\r\n * hook that you should usually not need to call directly.\r\n *\r\n * @returns {any} the value of the `ReactReduxContext`\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useReduxContext } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n *   const { store } = useReduxContext()\r\n *   return <div>{store.getState()}</div>\r\n * }\r\n */\nfunction useReduxContext() {\n  const contextValue = (0, _react.useContext)(_Context.ReactReduxContext);\n\n  if (process.env.NODE_ENV !== 'production' && !contextValue) {\n    throw new Error('could not find react-redux context value; please ensure the component is wrapped in a <Provider>');\n  }\n\n  return contextValue;\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.notInitialized = void 0;\n\nconst notInitialized = () => {\n  throw new Error('uSES not initialized!');\n};\n\nexports.notInitialized = notInitialized;", "\"use strict\";\n\nexports.__esModule = true;\nexports.createSelectorHook = createSelectorHook;\nexports.useSelector = exports.initializeUseSelector = void 0;\n\nvar _react = require(\"react\");\n\nvar _useReduxContext = require(\"./useReduxContext\");\n\nvar _Context = require(\"../components/Context\");\n\nvar _useSyncExternalStore = require(\"../utils/useSyncExternalStore\");\n\nlet useSyncExternalStoreWithSelector = _useSyncExternalStore.notInitialized;\n\nconst initializeUseSelector = fn => {\n  useSyncExternalStoreWithSelector = fn;\n};\n\nexports.initializeUseSelector = initializeUseSelector;\n\nconst refEquality = (a, b) => a === b;\n/**\r\n * Hook factory, which creates a `useSelector` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useSelector` hook bound to the specified context.\r\n */\n\n\nfunction createSelectorHook(context = _Context.ReactReduxContext) {\n  const useReduxContext = context === _Context.ReactReduxContext ? _useReduxContext.useReduxContext : () => (0, _react.useContext)(context);\n  return function useSelector(selector, equalityFn = refEquality) {\n    if (process.env.NODE_ENV !== 'production') {\n      if (!selector) {\n        throw new Error(`You must pass a selector to useSelector`);\n      }\n\n      if (typeof selector !== 'function') {\n        throw new Error(`You must pass a function as a selector to useSelector`);\n      }\n\n      if (typeof equalityFn !== 'function') {\n        throw new Error(`You must pass a function as an equality function to useSelector`);\n      }\n    }\n\n    const {\n      store,\n      subscription,\n      getServerState\n    } = useReduxContext();\n    const selectedState = useSyncExternalStoreWithSelector(subscription.addNestedSub, store.getState, getServerState || store.getState, selector, equalityFn);\n    (0, _react.useDebugValue)(selectedState);\n    return selectedState;\n  };\n}\n/**\r\n * A hook to access the redux store's state. This hook takes a selector function\r\n * as an argument. The selector is called with the store state.\r\n *\r\n * This hook takes an optional equality comparison function as the second parameter\r\n * that allows you to customize the way the selected state is compared to determine\r\n * whether the component needs to be re-rendered.\r\n *\r\n * @param {Function} selector the selector function\r\n * @param {Function=} equalityFn the function that will be used to determine equality\r\n *\r\n * @returns {any} the selected state\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useSelector } from 'react-redux'\r\n *\r\n * export const CounterComponent = () => {\r\n *   const counter = useSelector(state => state.counter)\r\n *   return <div>{counter}</div>\r\n * }\r\n */\n\n\nconst useSelector = /*#__PURE__*/createSelectorHook();\nexports.useSelector = useSelector;", "function _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    \"default\": obj\n  };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "function _extends() {\n  module.exports = _extends = Object.assign ? Object.assign.bind() : function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _extends.apply(this, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "function _objectWithoutPropertiesLoose(source, excluded) {\n  if (source == null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key, i;\n  for (i = 0; i < sourceKeys.length; i++) {\n    key = sourceKeys[i];\n    if (excluded.indexOf(key) >= 0) continue;\n    target[key] = source[key];\n  }\n  return target;\n}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "/**\n * @license React\n * react-is.development.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\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n'use strict';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_SERVER_CONTEXT_TYPE = Symbol.for('react.server_context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n  REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n  if (typeof type === 'string' || typeof type === 'function') {\n    return true;\n  } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n  if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing  || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden  || type === REACT_OFFSCREEN_TYPE || enableScopeAPI  || enableCacheElement  || enableTransitionTracing ) {\n    return true;\n  }\n\n  if (typeof type === 'object' && type !== null) {\n    if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n    // types supported by any Flight configuration anywhere since\n    // we don't know which Flight build this will end up being used\n    // with.\n    type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction typeOf(object) {\n  if (typeof object === 'object' && object !== null) {\n    var $$typeof = object.$$typeof;\n\n    switch ($$typeof) {\n      case REACT_ELEMENT_TYPE:\n        var type = object.type;\n\n        switch (type) {\n          case REACT_FRAGMENT_TYPE:\n          case REACT_PROFILER_TYPE:\n          case REACT_STRICT_MODE_TYPE:\n          case REACT_SUSPENSE_TYPE:\n          case REACT_SUSPENSE_LIST_TYPE:\n            return type;\n\n          default:\n            var $$typeofType = type && type.$$typeof;\n\n            switch ($$typeofType) {\n              case REACT_SERVER_CONTEXT_TYPE:\n              case REACT_CONTEXT_TYPE:\n              case REACT_FORWARD_REF_TYPE:\n              case REACT_LAZY_TYPE:\n              case REACT_MEMO_TYPE:\n              case REACT_PROVIDER_TYPE:\n                return $$typeofType;\n\n              default:\n                return $$typeof;\n            }\n\n        }\n\n      case REACT_PORTAL_TYPE:\n        return $$typeof;\n    }\n  }\n\n  return undefined;\n}\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\nvar hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n    }\n  }\n\n  return false;\n}\nfunction isConcurrentMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsConcurrentMode) {\n      hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n    }\n  }\n\n  return false;\n}\nfunction isContextConsumer(object) {\n  return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n  return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n  return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n  return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n  return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n  return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n  return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n  return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n  return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n  return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\nfunction isSuspenseList(object) {\n  return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n}\n\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.SuspenseList = SuspenseList;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isSuspenseList = isSuspenseList;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n  })();\n}\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\nexports.__esModule = true;\nexports.default = warning;\n\n/**\r\n * Prints a warning in the console if it exists.\r\n *\r\n * @param {String} message The warning message.\r\n * @returns {void}\r\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    /* eslint-disable no-empty */\n  } catch (e) {}\n  /* eslint-enable no-empty */\n\n}", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = verifySubselectors;\n\nvar _warning = _interopRequireDefault(require(\"../utils/warning\"));\n\nfunction verify(selector, methodName) {\n  if (!selector) {\n    throw new Error(`Unexpected value for ${methodName} in connect.`);\n  } else if (methodName === 'mapStateToProps' || methodName === 'mapDispatchToProps') {\n    if (!Object.prototype.hasOwnProperty.call(selector, 'dependsOnOwnProps')) {\n      (0, _warning.default)(`The selector for ${methodName} of connect did not specify a value for dependsOnOwnProps.`);\n    }\n  }\n}\n\nfunction verifySubselectors(mapStateToProps, mapDispatchToProps, mergeProps) {\n  verify(mapStateToProps, 'mapStateToProps');\n  verify(mapDispatchToProps, 'mapDispatchToProps');\n  verify(mergeProps, 'mergeProps');\n}", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.pureFinalPropsSelectorFactory = pureFinalPropsSelectorFactory;\nexports.default = finalPropsSelectorFactory;\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nvar _verifySubselectors = _interopRequireDefault(require(\"./verifySubselectors\"));\n\nconst _excluded = [\"initMapStateToProps\", \"initMapDispatchToProps\", \"initMergeProps\"];\n\nfunction pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, {\n  areStatesEqual,\n  areOwnPropsEqual,\n  areStatePropsEqual\n}) {\n  let hasRunAtLeastOnce = false;\n  let state;\n  let ownProps;\n  let stateProps;\n  let dispatchProps;\n  let mergedProps;\n\n  function handleFirstCall(firstState, firstOwnProps) {\n    state = firstState;\n    ownProps = firstOwnProps;\n    stateProps = mapStateToProps(state, ownProps);\n    dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    hasRunAtLeastOnce = true;\n    return mergedProps;\n  }\n\n  function handleNewPropsAndNewState() {\n    stateProps = mapStateToProps(state, ownProps);\n    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleNewProps() {\n    if (mapStateToProps.dependsOnOwnProps) stateProps = mapStateToProps(state, ownProps);\n    if (mapDispatchToProps.dependsOnOwnProps) dispatchProps = mapDispatchToProps(dispatch, ownProps);\n    mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleNewState() {\n    const nextStateProps = mapStateToProps(state, ownProps);\n    const statePropsChanged = !areStatePropsEqual(nextStateProps, stateProps);\n    stateProps = nextStateProps;\n    if (statePropsChanged) mergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n    return mergedProps;\n  }\n\n  function handleSubsequentCalls(nextState, nextOwnProps) {\n    const propsChanged = !areOwnPropsEqual(nextOwnProps, ownProps);\n    const stateChanged = !areStatesEqual(nextState, state, nextOwnProps, ownProps);\n    state = nextState;\n    ownProps = nextOwnProps;\n    if (propsChanged && stateChanged) return handleNewPropsAndNewState();\n    if (propsChanged) return handleNewProps();\n    if (stateChanged) return handleNewState();\n    return mergedProps;\n  }\n\n  return function pureFinalPropsSelector(nextState, nextOwnProps) {\n    return hasRunAtLeastOnce ? handleSubsequentCalls(nextState, nextOwnProps) : handleFirstCall(nextState, nextOwnProps);\n  };\n}\n\n// TODO: Add more comments\n// The selector returned by selectorFactory will memoize its results,\n// allowing connect's shouldComponentUpdate to return false if final\n// props have not changed.\nfunction finalPropsSelectorFactory(dispatch, _ref) {\n  let {\n    initMapStateToProps,\n    initMapDispatchToProps,\n    initMergeProps\n  } = _ref,\n      options = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);\n  const mapStateToProps = initMapStateToProps(dispatch, options);\n  const mapDispatchToProps = initMapDispatchToProps(dispatch, options);\n  const mergeProps = initMergeProps(dispatch, options);\n\n  if (process.env.NODE_ENV !== 'production') {\n    (0, _verifySubselectors.default)(mapStateToProps, mapDispatchToProps, mergeProps);\n  }\n\n  return pureFinalPropsSelectorFactory(mapStateToProps, mapDispatchToProps, mergeProps, dispatch, options);\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = bindActionCreators;\n\nfunction bindActionCreators(actionCreators, dispatch) {\n  const boundActionCreators = {};\n\n  for (const key in actionCreators) {\n    const actionCreator = actionCreators[key];\n\n    if (typeof actionCreator === 'function') {\n      boundActionCreators[key] = (...args) => dispatch(actionCreator(...args));\n    }\n  }\n\n  return boundActionCreators;\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = isPlainObject;\n\n/**\r\n * @param {any} obj The object to inspect.\r\n * @returns {boolean} True if the argument appears to be a plain object.\r\n */\nfunction isPlainObject(obj) {\n  if (typeof obj !== 'object' || obj === null) return false;\n  let proto = Object.getPrototypeOf(obj);\n  if (proto === null) return true;\n  let baseProto = proto;\n\n  while (Object.getPrototypeOf(baseProto) !== null) {\n    baseProto = Object.getPrototypeOf(baseProto);\n  }\n\n  return proto === baseProto;\n}", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = verifyPlainObject;\n\nvar _isPlainObject = _interopRequireDefault(require(\"./isPlainObject\"));\n\nvar _warning = _interopRequireDefault(require(\"./warning\"));\n\nfunction verifyPlainObject(value, displayName, methodName) {\n  if (!(0, _isPlainObject.default)(value)) {\n    (0, _warning.default)(`${methodName}() in ${displayName} must return a plain object. Instead received ${value}.`);\n  }\n}", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.wrapMapToPropsConstant = wrapMapToPropsConstant;\nexports.getDependsOnOwnProps = getDependsOnOwnProps;\nexports.wrapMapToPropsFunc = wrapMapToPropsFunc;\n\nvar _verifyPlainObject = _interopRequireDefault(require(\"../utils/verifyPlainObject\"));\n\nfunction wrapMapToPropsConstant( // * Note:\n//  It seems that the dispatch argument\n//  could be a dispatch function in some cases (ex: whenMapDispatchToPropsIsMissing)\n//  and a state object in some others (ex: whenMapStateToPropsIsMissing)\n// eslint-disable-next-line no-unused-vars\ngetConstant) {\n  return function initConstantSelector(dispatch) {\n    const constant = getConstant(dispatch);\n\n    function constantSelector() {\n      return constant;\n    }\n\n    constantSelector.dependsOnOwnProps = false;\n    return constantSelector;\n  };\n} // dependsOnOwnProps is used by createMapToPropsProxy to determine whether to pass props as args\n// to the mapToProps function being wrapped. It is also used by makePurePropsSelector to determine\n// whether mapToProps needs to be invoked when props have changed.\n//\n// A length of one signals that mapToProps does not depend on props from the parent component.\n// A length of zero is assumed to mean mapToProps is getting args via arguments or ...args and\n// therefore not reporting its length accurately..\n// TODO Can this get pulled out so that we can subscribe directly to the store if we don't need ownProps?\n\n\nfunction getDependsOnOwnProps(mapToProps) {\n  return mapToProps.dependsOnOwnProps ? Boolean(mapToProps.dependsOnOwnProps) : mapToProps.length !== 1;\n} // Used by whenMapStateToPropsIsFunction and whenMapDispatchToPropsIsFunction,\n// this function wraps mapToProps in a proxy function which does several things:\n//\n//  * Detects whether the mapToProps function being called depends on props, which\n//    is used by selectorFactory to decide if it should reinvoke on props changes.\n//\n//  * On first call, handles mapToProps if returns another function, and treats that\n//    new function as the true mapToProps for subsequent calls.\n//\n//  * On first call, verifies the first result is a plain object, in order to warn\n//    the developer that their mapToProps function is not returning a valid result.\n//\n\n\nfunction wrapMapToPropsFunc(mapToProps, methodName) {\n  return function initProxySelector(dispatch, {\n    displayName\n  }) {\n    const proxy = function mapToPropsProxy(stateOrDispatch, ownProps) {\n      return proxy.dependsOnOwnProps ? proxy.mapToProps(stateOrDispatch, ownProps) : proxy.mapToProps(stateOrDispatch, undefined);\n    }; // allow detectFactoryAndVerify to get ownProps\n\n\n    proxy.dependsOnOwnProps = true;\n\n    proxy.mapToProps = function detectFactoryAndVerify(stateOrDispatch, ownProps) {\n      proxy.mapToProps = mapToProps;\n      proxy.dependsOnOwnProps = getDependsOnOwnProps(mapToProps);\n      let props = proxy(stateOrDispatch, ownProps);\n\n      if (typeof props === 'function') {\n        proxy.mapToProps = props;\n        proxy.dependsOnOwnProps = getDependsOnOwnProps(props);\n        props = proxy(stateOrDispatch, ownProps);\n      }\n\n      if (process.env.NODE_ENV !== 'production') (0, _verifyPlainObject.default)(props, displayName, methodName);\n      return props;\n    };\n\n    return proxy;\n  };\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.createInvalidArgFactory = createInvalidArgFactory;\n\nfunction createInvalidArgFactory(arg, name) {\n  return (dispatch, options) => {\n    throw new Error(`Invalid value of type ${typeof arg} for ${name} argument when connecting component ${options.wrappedComponentName}.`);\n  };\n}", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.mapDispatchToPropsFactory = mapDispatchToPropsFactory;\n\nvar _bindActionCreators = _interopRequireDefault(require(\"../utils/bindActionCreators\"));\n\nvar _wrapMapToProps = require(\"./wrapMapToProps\");\n\nvar _invalidArgFactory = require(\"./invalidArgFactory\");\n\nfunction mapDispatchToPropsFactory(mapDispatchToProps) {\n  return mapDispatchToProps && typeof mapDispatchToProps === 'object' ? (0, _wrapMapToProps.wrapMapToPropsConstant)(dispatch => // @ts-ignore\n  (0, _bindActionCreators.default)(mapDispatchToProps, dispatch)) : !mapDispatchToProps ? (0, _wrapMapToProps.wrapMapToPropsConstant)(dispatch => ({\n    dispatch\n  })) : typeof mapDispatchToProps === 'function' ? // @ts-ignore\n  (0, _wrapMapToProps.wrapMapToPropsFunc)(mapDispatchToProps, 'mapDispatchToProps') : (0, _invalidArgFactory.createInvalidArgFactory)(mapDispatchToProps, 'mapDispatchToProps');\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.mapStateToPropsFactory = mapStateToPropsFactory;\n\nvar _wrapMapToProps = require(\"./wrapMapToProps\");\n\nvar _invalidArgFactory = require(\"./invalidArgFactory\");\n\nfunction mapStateToPropsFactory(mapStateToProps) {\n  return !mapStateToProps ? (0, _wrapMapToProps.wrapMapToPropsConstant)(() => ({})) : typeof mapStateToProps === 'function' ? // @ts-ignore\n  (0, _wrapMapToProps.wrapMapToPropsFunc)(mapStateToProps, 'mapStateToProps') : (0, _invalidArgFactory.createInvalidArgFactory)(mapStateToProps, 'mapStateToProps');\n}", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.defaultMergeProps = defaultMergeProps;\nexports.wrapMergePropsFunc = wrapMergePropsFunc;\nexports.mergePropsFactory = mergePropsFactory;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _verifyPlainObject = _interopRequireDefault(require(\"../utils/verifyPlainObject\"));\n\nvar _invalidArgFactory = require(\"./invalidArgFactory\");\n\nfunction defaultMergeProps(stateProps, dispatchProps, ownProps) {\n  // @ts-ignore\n  return (0, _extends2.default)({}, ownProps, stateProps, dispatchProps);\n}\n\nfunction wrapMergePropsFunc(mergeProps) {\n  return function initMergePropsProxy(dispatch, {\n    displayName,\n    areMergedPropsEqual\n  }) {\n    let hasRunOnce = false;\n    let mergedProps;\n    return function mergePropsProxy(stateProps, dispatchProps, ownProps) {\n      const nextMergedProps = mergeProps(stateProps, dispatchProps, ownProps);\n\n      if (hasRunOnce) {\n        if (!areMergedPropsEqual(nextMergedProps, mergedProps)) mergedProps = nextMergedProps;\n      } else {\n        hasRunOnce = true;\n        mergedProps = nextMergedProps;\n        if (process.env.NODE_ENV !== 'production') (0, _verifyPlainObject.default)(mergedProps, displayName, 'mergeProps');\n      }\n\n      return mergedProps;\n    };\n  };\n}\n\nfunction mergePropsFactory(mergeProps) {\n  return !mergeProps ? () => defaultMergeProps : typeof mergeProps === 'function' ? wrapMergePropsFunc(mergeProps) : (0, _invalidArgFactory.createInvalidArgFactory)(mergeProps, 'mergeProps');\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.createSubscription = createSubscription;\n\nvar _batch = require(\"./batch\");\n\nfunction createListenerCollection() {\n  const batch = (0, _batch.getBatch)();\n  let first = null;\n  let last = null;\n  return {\n    clear() {\n      first = null;\n      last = null;\n    },\n\n    notify() {\n      batch(() => {\n        let listener = first;\n\n        while (listener) {\n          listener.callback();\n          listener = listener.next;\n        }\n      });\n    },\n\n    get() {\n      let listeners = [];\n      let listener = first;\n\n      while (listener) {\n        listeners.push(listener);\n        listener = listener.next;\n      }\n\n      return listeners;\n    },\n\n    subscribe(callback) {\n      let isSubscribed = true;\n      let listener = last = {\n        callback,\n        next: null,\n        prev: last\n      };\n\n      if (listener.prev) {\n        listener.prev.next = listener;\n      } else {\n        first = listener;\n      }\n\n      return function unsubscribe() {\n        if (!isSubscribed || first === null) return;\n        isSubscribed = false;\n\n        if (listener.next) {\n          listener.next.prev = listener.prev;\n        } else {\n          last = listener.prev;\n        }\n\n        if (listener.prev) {\n          listener.prev.next = listener.next;\n        } else {\n          first = listener.next;\n        }\n      };\n    }\n\n  };\n}\n\nconst nullListeners = {\n  notify() {},\n\n  get: () => []\n};\n\nfunction createSubscription(store, parentSub) {\n  let unsubscribe;\n  let listeners = nullListeners;\n\n  function addNestedSub(listener) {\n    trySubscribe();\n    return listeners.subscribe(listener);\n  }\n\n  function notifyNestedSubs() {\n    listeners.notify();\n  }\n\n  function handleChangeWrapper() {\n    if (subscription.onStateChange) {\n      subscription.onStateChange();\n    }\n  }\n\n  function isSubscribed() {\n    return Boolean(unsubscribe);\n  }\n\n  function trySubscribe() {\n    if (!unsubscribe) {\n      unsubscribe = parentSub ? parentSub.addNestedSub(handleChangeWrapper) : store.subscribe(handleChangeWrapper);\n      listeners = createListenerCollection();\n    }\n  }\n\n  function tryUnsubscribe() {\n    if (unsubscribe) {\n      unsubscribe();\n      unsubscribe = undefined;\n      listeners.clear();\n      listeners = nullListeners;\n    }\n  }\n\n  const subscription = {\n    addNestedSub,\n    notifyNestedSubs,\n    handleChangeWrapper,\n    isSubscribed,\n    trySubscribe,\n    tryUnsubscribe,\n    getListeners: () => listeners\n  };\n  return subscription;\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports.useIsomorphicLayoutEffect = exports.canUseDOM = void 0;\n\nvar _react = require(\"react\");\n\n// React currently throws a warning when using useLayoutEffect on the server.\n// To get around it, we can conditionally useEffect on the server (no-op) and\n// useLayoutEffect in the browser. We need useLayoutEffect to ensure the store\n// subscription callback always has the selector from the latest render commit\n// available, otherwise a store update may happen between render and the effect,\n// which may cause missed updates; we also must ensure the store subscription\n// is created synchronously, otherwise a store update may occur before the\n// subscription is created and an inconsistent state may be observed\n// Matches logic in React's `shared/ExecutionEnvironment` file\nconst canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');\nexports.canUseDOM = canUseDOM;\nconst useIsomorphicLayoutEffect = canUseDOM ? _react.useLayoutEffect : _react.useEffect;\nexports.useIsomorphicLayoutEffect = useIsomorphicLayoutEffect;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = shallowEqual;\n\nfunction is(x, y) {\n  if (x === y) {\n    return x !== 0 || y !== 0 || 1 / x === 1 / y;\n  } else {\n    return x !== x && y !== y;\n  }\n}\n\nfunction shallowEqual(objA, objB) {\n  if (is(objA, objB)) return true;\n\n  if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {\n    return false;\n  }\n\n  const keysA = Object.keys(objA);\n  const keysB = Object.keys(objB);\n  if (keysA.length !== keysB.length) return false;\n\n  for (let i = 0; i < keysA.length; i++) {\n    if (!Object.prototype.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n      return false;\n    }\n  }\n\n  return true;\n}", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.default = exports.initializeConnect = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nvar _hoistNonReactStatics = _interopRequireDefault(require(\"hoist-non-react-statics\"));\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _reactIs = require(\"react-is\");\n\nvar _selectorFactory = _interopRequireDefault(require(\"../connect/selectorFactory\"));\n\nvar _mapDispatchToProps = require(\"../connect/mapDispatchToProps\");\n\nvar _mapStateToProps = require(\"../connect/mapStateToProps\");\n\nvar _mergeProps = require(\"../connect/mergeProps\");\n\nvar _Subscription = require(\"../utils/Subscription\");\n\nvar _useIsomorphicLayoutEffect = require(\"../utils/useIsomorphicLayoutEffect\");\n\nvar _shallowEqual = _interopRequireDefault(require(\"../utils/shallowEqual\"));\n\nvar _warning = _interopRequireDefault(require(\"../utils/warning\"));\n\nvar _Context = require(\"./Context\");\n\nvar _useSyncExternalStore = require(\"../utils/useSyncExternalStore\");\n\nconst _excluded = [\"reactReduxForwardedRef\"];\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nlet useSyncExternalStore = _useSyncExternalStore.notInitialized;\n\nconst initializeConnect = fn => {\n  useSyncExternalStore = fn;\n}; // Define some constant arrays just to avoid re-creating these\n\n\nexports.initializeConnect = initializeConnect;\nconst EMPTY_ARRAY = [null, 0];\nconst NO_SUBSCRIPTION_ARRAY = [null, null]; // Attempts to stringify whatever not-really-a-component value we were given\n// for logging in an error message\n\nconst stringifyComponent = Comp => {\n  try {\n    return JSON.stringify(Comp);\n  } catch (err) {\n    return String(Comp);\n  }\n};\n\n// This is \"just\" a `useLayoutEffect`, but with two modifications:\n// - we need to fall back to `useEffect` in SSR to avoid annoying warnings\n// - we extract this to a separate function to avoid closing over values\n//   and causing memory leaks\nfunction useIsomorphicLayoutEffectWithArgs(effectFunc, effectArgs, dependencies) {\n  (0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(() => effectFunc(...effectArgs), dependencies);\n} // Effect callback, extracted: assign the latest props values to refs for later usage\n\n\nfunction captureWrapperProps(lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, // actualChildProps: unknown,\nchildPropsFromStoreUpdate, notifyNestedSubs) {\n  // We want to capture the wrapper props and child props we used for later comparisons\n  lastWrapperProps.current = wrapperProps;\n  renderIsScheduled.current = false; // If the render was from a store update, clear out that reference and cascade the subscriber update\n\n  if (childPropsFromStoreUpdate.current) {\n    childPropsFromStoreUpdate.current = null;\n    notifyNestedSubs();\n  }\n} // Effect callback, extracted: subscribe to the Redux store or nearest connected ancestor,\n// check for updates after dispatched actions, and trigger re-renders.\n\n\nfunction subscribeUpdates(shouldHandleStateChanges, store, subscription, childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, // forceComponentUpdateDispatch: React.Dispatch<any>,\nadditionalSubscribeListener) {\n  // If we're not subscribed to the store, nothing to do here\n  if (!shouldHandleStateChanges) return () => {}; // Capture values for checking if and when this component unmounts\n\n  let didUnsubscribe = false;\n  let lastThrownError = null; // We'll run this callback every time a store subscription update propagates to this component\n\n  const checkForUpdates = () => {\n    if (didUnsubscribe || !isMounted.current) {\n      // Don't run stale listeners.\n      // Redux doesn't guarantee unsubscriptions happen until next dispatch.\n      return;\n    } // TODO We're currently calling getState ourselves here, rather than letting `uSES` do it\n\n\n    const latestStoreState = store.getState();\n    let newChildProps, error;\n\n    try {\n      // Actually run the selector with the most recent store state and wrapper props\n      // to determine what the child props should be\n      newChildProps = childPropsSelector(latestStoreState, lastWrapperProps.current);\n    } catch (e) {\n      error = e;\n      lastThrownError = e;\n    }\n\n    if (!error) {\n      lastThrownError = null;\n    } // If the child props haven't changed, nothing to do here - cascade the subscription update\n\n\n    if (newChildProps === lastChildProps.current) {\n      if (!renderIsScheduled.current) {\n        notifyNestedSubs();\n      }\n    } else {\n      // Save references to the new child props.  Note that we track the \"child props from store update\"\n      // as a ref instead of a useState/useReducer because we need a way to determine if that value has\n      // been processed.  If this went into useState/useReducer, we couldn't clear out the value without\n      // forcing another re-render, which we don't want.\n      lastChildProps.current = newChildProps;\n      childPropsFromStoreUpdate.current = newChildProps;\n      renderIsScheduled.current = true; // TODO This is hacky and not how `uSES` is meant to be used\n      // Trigger the React `useSyncExternalStore` subscriber\n\n      additionalSubscribeListener();\n    }\n  }; // Actually subscribe to the nearest connected ancestor (or store)\n\n\n  subscription.onStateChange = checkForUpdates;\n  subscription.trySubscribe(); // Pull data from the store after first render in case the store has\n  // changed since we began.\n\n  checkForUpdates();\n\n  const unsubscribeWrapper = () => {\n    didUnsubscribe = true;\n    subscription.tryUnsubscribe();\n    subscription.onStateChange = null;\n\n    if (lastThrownError) {\n      // It's possible that we caught an error due to a bad mapState function, but the\n      // parent re-rendered without this component and we're about to unmount.\n      // This shouldn't happen as long as we do top-down subscriptions correctly, but\n      // if we ever do those wrong, this throw will surface the error in our tests.\n      // In that case, throw the error from here so it doesn't get lost.\n      throw lastThrownError;\n    }\n  };\n\n  return unsubscribeWrapper;\n} // Reducer initial state creation for our update reducer\n\n\nconst initStateUpdates = () => EMPTY_ARRAY;\n\nfunction strictEqual(a, b) {\n  return a === b;\n}\n/**\r\n * Infers the type of props that a connector will inject into a component.\r\n */\n\n\nlet hasWarnedAboutDeprecatedPureOption = false;\n/**\r\n * Connects a React component to a Redux store.\r\n *\r\n * - Without arguments, just wraps the component, without changing the behavior / props\r\n *\r\n * - If 2 params are passed (3rd param, mergeProps, is skipped), default behavior\r\n * is to override ownProps (as stated in the docs), so what remains is everything that's\r\n * not a state or dispatch prop\r\n *\r\n * - When 3rd param is passed, we don't know if ownProps propagate and whether they\r\n * should be valid component props, because it depends on mergeProps implementation.\r\n * As such, it is the user's responsibility to extend ownProps interface from state or\r\n * dispatch props or both when applicable\r\n *\r\n * @param mapStateToProps A function that extracts values from state\r\n * @param mapDispatchToProps Setup for dispatching actions\r\n * @param mergeProps Optional callback to merge state and dispatch props together\r\n * @param options Options for configuring the connection\r\n *\r\n */\n\nfunction connect(mapStateToProps, mapDispatchToProps, mergeProps, {\n  // The `pure` option has been removed, so TS doesn't like us destructuring this to check its existence.\n  // @ts-ignore\n  pure,\n  areStatesEqual = strictEqual,\n  areOwnPropsEqual = _shallowEqual.default,\n  areStatePropsEqual = _shallowEqual.default,\n  areMergedPropsEqual = _shallowEqual.default,\n  // use React's forwardRef to expose a ref of the wrapped component\n  forwardRef = false,\n  // the context consumer to use\n  context = _Context.ReactReduxContext\n} = {}) {\n  if (process.env.NODE_ENV !== 'production') {\n    if (pure !== undefined && !hasWarnedAboutDeprecatedPureOption) {\n      hasWarnedAboutDeprecatedPureOption = true;\n      (0, _warning.default)('The `pure` option has been removed. `connect` is now always a \"pure/memoized\" component');\n    }\n  }\n\n  const Context = context;\n  const initMapStateToProps = (0, _mapStateToProps.mapStateToPropsFactory)(mapStateToProps);\n  const initMapDispatchToProps = (0, _mapDispatchToProps.mapDispatchToPropsFactory)(mapDispatchToProps);\n  const initMergeProps = (0, _mergeProps.mergePropsFactory)(mergeProps);\n  const shouldHandleStateChanges = Boolean(mapStateToProps);\n\n  const wrapWithConnect = WrappedComponent => {\n    if (process.env.NODE_ENV !== 'production' && !(0, _reactIs.isValidElementType)(WrappedComponent)) {\n      throw new Error(`You must pass a component to the function returned by connect. Instead received ${stringifyComponent(WrappedComponent)}`);\n    }\n\n    const wrappedComponentName = WrappedComponent.displayName || WrappedComponent.name || 'Component';\n    const displayName = `Connect(${wrappedComponentName})`;\n    const selectorFactoryOptions = {\n      shouldHandleStateChanges,\n      displayName,\n      wrappedComponentName,\n      WrappedComponent,\n      // @ts-ignore\n      initMapStateToProps,\n      // @ts-ignore\n      initMapDispatchToProps,\n      initMergeProps,\n      areStatesEqual,\n      areStatePropsEqual,\n      areOwnPropsEqual,\n      areMergedPropsEqual\n    };\n\n    function ConnectFunction(props) {\n      const [propsContext, reactReduxForwardedRef, wrapperProps] = (0, _react.useMemo)(() => {\n        // Distinguish between actual \"data\" props that were passed to the wrapper component,\n        // and values needed to control behavior (forwarded refs, alternate context instances).\n        // To maintain the wrapperProps object reference, memoize this destructuring.\n        const {\n          reactReduxForwardedRef\n        } = props,\n              wrapperProps = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);\n        return [props.context, reactReduxForwardedRef, wrapperProps];\n      }, [props]);\n      const ContextToUse = (0, _react.useMemo)(() => {\n        // Users may optionally pass in a custom context instance to use instead of our ReactReduxContext.\n        // Memoize the check that determines which context instance we should use.\n        return propsContext && propsContext.Consumer && // @ts-ignore\n        (0, _reactIs.isContextConsumer)( /*#__PURE__*/_react.default.createElement(propsContext.Consumer, null)) ? propsContext : Context;\n      }, [propsContext, Context]); // Retrieve the store and ancestor subscription via context, if available\n\n      const contextValue = (0, _react.useContext)(ContextToUse); // The store _must_ exist as either a prop or in context.\n      // We'll check to see if it _looks_ like a Redux store first.\n      // This allows us to pass through a `store` prop that is just a plain value.\n\n      const didStoreComeFromProps = Boolean(props.store) && Boolean(props.store.getState) && Boolean(props.store.dispatch);\n      const didStoreComeFromContext = Boolean(contextValue) && Boolean(contextValue.store);\n\n      if (process.env.NODE_ENV !== 'production' && !didStoreComeFromProps && !didStoreComeFromContext) {\n        throw new Error(`Could not find \"store\" in the context of ` + `\"${displayName}\". Either wrap the root component in a <Provider>, ` + `or pass a custom React context provider to <Provider> and the corresponding ` + `React context consumer to ${displayName} in connect options.`);\n      } // Based on the previous check, one of these must be true\n\n\n      const store = didStoreComeFromProps ? props.store : contextValue.store;\n      const getServerState = didStoreComeFromContext ? contextValue.getServerState : store.getState;\n      const childPropsSelector = (0, _react.useMemo)(() => {\n        // The child props selector needs the store reference as an input.\n        // Re-create this selector whenever the store changes.\n        return (0, _selectorFactory.default)(store.dispatch, selectorFactoryOptions);\n      }, [store]);\n      const [subscription, notifyNestedSubs] = (0, _react.useMemo)(() => {\n        if (!shouldHandleStateChanges) return NO_SUBSCRIPTION_ARRAY; // This Subscription's source should match where store came from: props vs. context. A component\n        // connected to the store via props shouldn't use subscription from context, or vice versa.\n\n        const subscription = (0, _Subscription.createSubscription)(store, didStoreComeFromProps ? undefined : contextValue.subscription); // `notifyNestedSubs` is duplicated to handle the case where the component is unmounted in\n        // the middle of the notification loop, where `subscription` will then be null. This can\n        // probably be avoided if Subscription's listeners logic is changed to not call listeners\n        // that have been unsubscribed in the  middle of the notification loop.\n\n        const notifyNestedSubs = subscription.notifyNestedSubs.bind(subscription);\n        return [subscription, notifyNestedSubs];\n      }, [store, didStoreComeFromProps, contextValue]); // Determine what {store, subscription} value should be put into nested context, if necessary,\n      // and memoize that value to avoid unnecessary context updates.\n\n      const overriddenContextValue = (0, _react.useMemo)(() => {\n        if (didStoreComeFromProps) {\n          // This component is directly subscribed to a store from props.\n          // We don't want descendants reading from this store - pass down whatever\n          // the existing context value is from the nearest connected ancestor.\n          return contextValue;\n        } // Otherwise, put this component's subscription instance into context, so that\n        // connected descendants won't update until after this component is done\n\n\n        return (0, _extends2.default)({}, contextValue, {\n          subscription\n        });\n      }, [didStoreComeFromProps, contextValue, subscription]); // Set up refs to coordinate values between the subscription effect and the render logic\n\n      const lastChildProps = (0, _react.useRef)();\n      const lastWrapperProps = (0, _react.useRef)(wrapperProps);\n      const childPropsFromStoreUpdate = (0, _react.useRef)();\n      const renderIsScheduled = (0, _react.useRef)(false);\n      const isProcessingDispatch = (0, _react.useRef)(false);\n      const isMounted = (0, _react.useRef)(false);\n      const latestSubscriptionCallbackError = (0, _react.useRef)();\n      (0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(() => {\n        isMounted.current = true;\n        return () => {\n          isMounted.current = false;\n        };\n      }, []);\n      const actualChildPropsSelector = (0, _react.useMemo)(() => {\n        const selector = () => {\n          // Tricky logic here:\n          // - This render may have been triggered by a Redux store update that produced new child props\n          // - However, we may have gotten new wrapper props after that\n          // If we have new child props, and the same wrapper props, we know we should use the new child props as-is.\n          // But, if we have new wrapper props, those might change the child props, so we have to recalculate things.\n          // So, we'll use the child props from store update only if the wrapper props are the same as last time.\n          if (childPropsFromStoreUpdate.current && wrapperProps === lastWrapperProps.current) {\n            return childPropsFromStoreUpdate.current;\n          } // TODO We're reading the store directly in render() here. Bad idea?\n          // This will likely cause Bad Things (TM) to happen in Concurrent Mode.\n          // Note that we do this because on renders _not_ caused by store updates, we need the latest store state\n          // to determine what the child props should be.\n\n\n          return childPropsSelector(store.getState(), wrapperProps);\n        };\n\n        return selector;\n      }, [store, wrapperProps]); // We need this to execute synchronously every time we re-render. However, React warns\n      // about useLayoutEffect in SSR, so we try to detect environment and fall back to\n      // just useEffect instead to avoid the warning, since neither will run anyway.\n\n      const subscribeForReact = (0, _react.useMemo)(() => {\n        const subscribe = reactListener => {\n          if (!subscription) {\n            return () => {};\n          }\n\n          return subscribeUpdates(shouldHandleStateChanges, store, subscription, // @ts-ignore\n          childPropsSelector, lastWrapperProps, lastChildProps, renderIsScheduled, isMounted, childPropsFromStoreUpdate, notifyNestedSubs, reactListener);\n        };\n\n        return subscribe;\n      }, [subscription]);\n      useIsomorphicLayoutEffectWithArgs(captureWrapperProps, [lastWrapperProps, lastChildProps, renderIsScheduled, wrapperProps, childPropsFromStoreUpdate, notifyNestedSubs]);\n      let actualChildProps;\n\n      try {\n        actualChildProps = useSyncExternalStore( // TODO We're passing through a big wrapper that does a bunch of extra side effects besides subscribing\n        subscribeForReact, // TODO This is incredibly hacky. We've already processed the store update and calculated new child props,\n        // TODO and we're just passing that through so it triggers a re-render for us rather than relying on `uSES`.\n        actualChildPropsSelector, getServerState ? () => childPropsSelector(getServerState(), wrapperProps) : actualChildPropsSelector);\n      } catch (err) {\n        if (latestSubscriptionCallbackError.current) {\n          ;\n          err.message += `\\nThe error may be correlated with this previous error:\\n${latestSubscriptionCallbackError.current.stack}\\n\\n`;\n        }\n\n        throw err;\n      }\n\n      (0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(() => {\n        latestSubscriptionCallbackError.current = undefined;\n        childPropsFromStoreUpdate.current = undefined;\n        lastChildProps.current = actualChildProps;\n      }); // Now that all that's done, we can finally try to actually render the child component.\n      // We memoize the elements for the rendered child component as an optimization.\n\n      const renderedWrappedComponent = (0, _react.useMemo)(() => {\n        return (\n          /*#__PURE__*/\n          // @ts-ignore\n          _react.default.createElement(WrappedComponent, (0, _extends2.default)({}, actualChildProps, {\n            ref: reactReduxForwardedRef\n          }))\n        );\n      }, [reactReduxForwardedRef, WrappedComponent, actualChildProps]); // If React sees the exact same element reference as last time, it bails out of re-rendering\n      // that child, same as if it was wrapped in React.memo() or returned false from shouldComponentUpdate.\n\n      const renderedChild = (0, _react.useMemo)(() => {\n        if (shouldHandleStateChanges) {\n          // If this component is subscribed to store updates, we need to pass its own\n          // subscription instance down to our descendants. That means rendering the same\n          // Context instance, and putting a different value into the context.\n          return /*#__PURE__*/_react.default.createElement(ContextToUse.Provider, {\n            value: overriddenContextValue\n          }, renderedWrappedComponent);\n        }\n\n        return renderedWrappedComponent;\n      }, [ContextToUse, renderedWrappedComponent, overriddenContextValue]);\n      return renderedChild;\n    }\n\n    const _Connect = _react.default.memo(ConnectFunction);\n\n    // Add a hacky cast to get the right output type\n    const Connect = _Connect;\n    Connect.WrappedComponent = WrappedComponent;\n    Connect.displayName = ConnectFunction.displayName = displayName;\n\n    if (forwardRef) {\n      const _forwarded = _react.default.forwardRef(function forwardConnectRef(props, ref) {\n        // @ts-ignore\n        return /*#__PURE__*/_react.default.createElement(Connect, (0, _extends2.default)({}, props, {\n          reactReduxForwardedRef: ref\n        }));\n      });\n\n      const forwarded = _forwarded;\n      forwarded.displayName = displayName;\n      forwarded.WrappedComponent = WrappedComponent;\n      return (0, _hoistNonReactStatics.default)(forwarded, WrappedComponent);\n    }\n\n    return (0, _hoistNonReactStatics.default)(Connect, WrappedComponent);\n  };\n\n  return wrapWithConnect;\n}\n\nvar _default = connect;\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _Context = require(\"./Context\");\n\nvar _Subscription = require(\"../utils/Subscription\");\n\nvar _useIsomorphicLayoutEffect = require(\"../utils/useIsomorphicLayoutEffect\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction Provider({\n  store,\n  context,\n  children,\n  serverState\n}) {\n  const contextValue = (0, _react.useMemo)(() => {\n    const subscription = (0, _Subscription.createSubscription)(store);\n    return {\n      store,\n      subscription,\n      getServerState: serverState ? () => serverState : undefined\n    };\n  }, [store, serverState]);\n  const previousState = (0, _react.useMemo)(() => store.getState(), [store]);\n  (0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(() => {\n    const {\n      subscription\n    } = contextValue;\n    subscription.onStateChange = subscription.notifyNestedSubs;\n    subscription.trySubscribe();\n\n    if (previousState !== store.getState()) {\n      subscription.notifyNestedSubs();\n    }\n\n    return () => {\n      subscription.tryUnsubscribe();\n      subscription.onStateChange = undefined;\n    };\n  }, [contextValue, previousState]);\n  const Context = context || _Context.ReactReduxContext; // @ts-ignore 'AnyAction' is assignable to the constraint of type 'A', but 'A' could be instantiated with a different subtype\n\n  return /*#__PURE__*/_react.default.createElement(Context.Provider, {\n    value: contextValue\n  }, children);\n}\n\nvar _default = Provider;\nexports.default = _default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.createStoreHook = createStoreHook;\nexports.useStore = void 0;\n\nvar _react = require(\"react\");\n\nvar _Context = require(\"../components/Context\");\n\nvar _useReduxContext = require(\"./useReduxContext\");\n\n/**\r\n * Hook factory, which creates a `useStore` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useStore` hook bound to the specified context.\r\n */\nfunction createStoreHook(context = _Context.ReactReduxContext) {\n  const useReduxContext = // @ts-ignore\n  context === _Context.ReactReduxContext ? _useReduxContext.useReduxContext : () => (0, _react.useContext)(context);\n  return function useStore() {\n    const {\n      store\n    } = useReduxContext(); // @ts-ignore\n\n    return store;\n  };\n}\n/**\r\n * A hook to access the redux store.\r\n *\r\n * @returns {any} the redux store\r\n *\r\n * @example\r\n *\r\n * import React from 'react'\r\n * import { useStore } from 'react-redux'\r\n *\r\n * export const ExampleComponent = () => {\r\n *   const store = useStore()\r\n *   return <div>{store.getState()}</div>\r\n * }\r\n */\n\n\nconst useStore = /*#__PURE__*/createStoreHook();\nexports.useStore = useStore;", "\"use strict\";\n\nexports.__esModule = true;\nexports.createDispatchHook = createDispatchHook;\nexports.useDispatch = void 0;\n\nvar _Context = require(\"../components/Context\");\n\nvar _useStore = require(\"./useStore\");\n\n/**\r\n * Hook factory, which creates a `useDispatch` hook bound to a given context.\r\n *\r\n * @param {React.Context} [context=ReactReduxContext] Context passed to your `<Provider>`.\r\n * @returns {Function} A `useDispatch` hook bound to the specified context.\r\n */\nfunction createDispatchHook(context = _Context.ReactReduxContext) {\n  const useStore = // @ts-ignore\n  context === _Context.ReactReduxContext ? _useStore.useStore : (0, _useStore.createStoreHook)(context);\n  return function useDispatch() {\n    const store = useStore(); // @ts-ignore\n\n    return store.dispatch;\n  };\n}\n/**\r\n * A hook to access the redux `dispatch` function.\r\n *\r\n * @returns {any|function} redux store's `dispatch` function\r\n *\r\n * @example\r\n *\r\n * import React, { useCallback } from 'react'\r\n * import { useDispatch } from 'react-redux'\r\n *\r\n * export const CounterComponent = ({ value }) => {\r\n *   const dispatch = useDispatch()\r\n *   const increaseCounter = useCallback(() => dispatch({ type: 'increase-counter' }), [])\r\n *   return (\r\n *     <div>\r\n *       <span>{value}</span>\r\n *       <button onClick={increaseCounter}>Increase counter</button>\r\n *     </div>\r\n *   )\r\n * }\r\n */\n\n\nconst useDispatch = /*#__PURE__*/createDispatchHook();\nexports.useDispatch = useDispatch;", "\"use strict\";", "\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nvar _exportNames = {\n  Provider: true,\n  connect: true,\n  ReactReduxContext: true,\n  useDispatch: true,\n  createDispatchHook: true,\n  useSelector: true,\n  createSelectorHook: true,\n  useStore: true,\n  createStoreHook: true,\n  shallowEqual: true\n};\nObject.defineProperty(exports, \"Provider\", {\n  enumerable: true,\n  get: function () {\n    return _Provider.default;\n  }\n});\nObject.defineProperty(exports, \"connect\", {\n  enumerable: true,\n  get: function () {\n    return _connect.default;\n  }\n});\nObject.defineProperty(exports, \"ReactReduxContext\", {\n  enumerable: true,\n  get: function () {\n    return _Context.ReactReduxContext;\n  }\n});\nObject.defineProperty(exports, \"useDispatch\", {\n  enumerable: true,\n  get: function () {\n    return _useDispatch.useDispatch;\n  }\n});\nObject.defineProperty(exports, \"createDispatchHook\", {\n  enumerable: true,\n  get: function () {\n    return _useDispatch.createDispatchHook;\n  }\n});\nObject.defineProperty(exports, \"useSelector\", {\n  enumerable: true,\n  get: function () {\n    return _useSelector.useSelector;\n  }\n});\nObject.defineProperty(exports, \"createSelectorHook\", {\n  enumerable: true,\n  get: function () {\n    return _useSelector.createSelectorHook;\n  }\n});\nObject.defineProperty(exports, \"useStore\", {\n  enumerable: true,\n  get: function () {\n    return _useStore.useStore;\n  }\n});\nObject.defineProperty(exports, \"createStoreHook\", {\n  enumerable: true,\n  get: function () {\n    return _useStore.createStoreHook;\n  }\n});\nObject.defineProperty(exports, \"shallowEqual\", {\n  enumerable: true,\n  get: function () {\n    return _shallowEqual.default;\n  }\n});\n\nvar _Provider = _interopRequireDefault(require(\"./components/Provider\"));\n\nvar _connect = _interopRequireDefault(require(\"./components/connect\"));\n\nvar _Context = require(\"./components/Context\");\n\nvar _useDispatch = require(\"./hooks/useDispatch\");\n\nvar _useSelector = require(\"./hooks/useSelector\");\n\nvar _useStore = require(\"./hooks/useStore\");\n\nvar _shallowEqual = _interopRequireDefault(require(\"./utils/shallowEqual\"));\n\nvar _types = require(\"./types\");\n\nObject.keys(_types).forEach(function (key) {\n  if (key === \"default\" || key === \"__esModule\") return;\n  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n  if (key in exports && exports[key] === _types[key]) return;\n  Object.defineProperty(exports, key, {\n    enumerable: true,\n    get: function () {\n      return _types[key];\n    }\n  });\n});", "\"use strict\";\n\nexports.__esModule = true;\nvar _exportNames = {\n  batch: true\n};\nObject.defineProperty(exports, \"batch\", {\n  enumerable: true,\n  get: function () {\n    return _reactBatchedUpdates.unstable_batchedUpdates;\n  }\n});\n\nvar _shim = require(\"use-sync-external-store/shim\");\n\nvar _withSelector = require(\"use-sync-external-store/shim/with-selector\");\n\nvar _reactBatchedUpdates = require(\"./utils/reactBatchedUpdates\");\n\nvar _batch = require(\"./utils/batch\");\n\nvar _useSelector = require(\"./hooks/useSelector\");\n\nvar _connect = require(\"./components/connect\");\n\nvar _exports = require(\"./exports\");\n\nObject.keys(_exports).forEach(function (key) {\n  if (key === \"default\" || key === \"__esModule\") return;\n  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n  if (key in exports && exports[key] === _exports[key]) return;\n  Object.defineProperty(exports, key, {\n    enumerable: true,\n    get: function () {\n      return _exports[key];\n    }\n  });\n});\n// The primary entry point assumes we're working with standard ReactDOM/RN, but\n// older versions that do not include `useSyncExternalStore` (React 16.9 - 17.x).\n// Because of that, the useSyncExternalStore compat shim is needed.\n(0, _useSelector.initializeUseSelector)(_withSelector.useSyncExternalStoreWithSelector);\n(0, _connect.initializeConnect)(_shim.useSyncExternalStore); // Enable batched updates in our subscriptions for use\n// with standard React renderers (ReactDOM, React Native)\n\n(0, _batch.setBatch)(_reactBatchedUpdates.unstable_batchedUpdates);", "/**\n * @license React\n * react-jsx-runtime.development.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\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n'use strict';\n\nvar React = require('react');\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n  if (maybeIterable === null || typeof maybeIterable !== 'object') {\n    return null;\n  }\n\n  var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n  if (typeof maybeIterator === 'function') {\n    return maybeIterator;\n  }\n\n  return null;\n}\n\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n\nfunction error(format) {\n  {\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      printWarning('error', format, args);\n    }\n  }\n}\n\nfunction printWarning(level, format, args) {\n  // When changing this logic, you might want to also\n  // update consoleWithStackDev.www.js as well.\n  {\n    var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n    var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n    if (stack !== '') {\n      format += '%s';\n      args = args.concat([stack]);\n    } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n    var argsWithFormat = args.map(function (item) {\n      return String(item);\n    }); // Careful: RN currently depends on this prefix\n\n    argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n    // breaks IE9: https://github.com/facebook/react/issues/13610\n    // eslint-disable-next-line react-internal/no-production-logging\n\n    Function.prototype.apply.call(console[level], console, argsWithFormat);\n  }\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n  REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n  if (typeof type === 'string' || typeof type === 'function') {\n    return true;\n  } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n  if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing  || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden  || type === REACT_OFFSCREEN_TYPE || enableScopeAPI  || enableCacheElement  || enableTransitionTracing ) {\n    return true;\n  }\n\n  if (typeof type === 'object' && type !== null) {\n    if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n    // types supported by any Flight configuration anywhere since\n    // we don't know which Flight build this will end up being used\n    // with.\n    type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n  var displayName = outerType.displayName;\n\n  if (displayName) {\n    return displayName;\n  }\n\n  var functionName = innerType.displayName || innerType.name || '';\n  return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n  return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n  if (type == null) {\n    // Host root, text node or just invalid type.\n    return null;\n  }\n\n  {\n    if (typeof type.tag === 'number') {\n      error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n    }\n  }\n\n  if (typeof type === 'function') {\n    return type.displayName || type.name || null;\n  }\n\n  if (typeof type === 'string') {\n    return type;\n  }\n\n  switch (type) {\n    case REACT_FRAGMENT_TYPE:\n      return 'Fragment';\n\n    case REACT_PORTAL_TYPE:\n      return 'Portal';\n\n    case REACT_PROFILER_TYPE:\n      return 'Profiler';\n\n    case REACT_STRICT_MODE_TYPE:\n      return 'StrictMode';\n\n    case REACT_SUSPENSE_TYPE:\n      return 'Suspense';\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return 'SuspenseList';\n\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_CONTEXT_TYPE:\n        var context = type;\n        return getContextName(context) + '.Consumer';\n\n      case REACT_PROVIDER_TYPE:\n        var provider = type;\n        return getContextName(provider._context) + '.Provider';\n\n      case REACT_FORWARD_REF_TYPE:\n        return getWrappedName(type, type.render, 'ForwardRef');\n\n      case REACT_MEMO_TYPE:\n        var outerName = type.displayName || null;\n\n        if (outerName !== null) {\n          return outerName;\n        }\n\n        return getComponentNameFromType(type.type) || 'Memo';\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            return getComponentNameFromType(init(payload));\n          } catch (x) {\n            return null;\n          }\n        }\n\n      // eslint-disable-next-line no-fallthrough\n    }\n  }\n\n  return null;\n}\n\nvar assign = Object.assign;\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n  {\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      prevLog = console.log;\n      prevInfo = console.info;\n      prevWarn = console.warn;\n      prevError = console.error;\n      prevGroup = console.group;\n      prevGroupCollapsed = console.groupCollapsed;\n      prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n      var props = {\n        configurable: true,\n        enumerable: true,\n        value: disabledLog,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        info: props,\n        log: props,\n        warn: props,\n        error: props,\n        group: props,\n        groupCollapsed: props,\n        groupEnd: props\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    disabledDepth++;\n  }\n}\nfunction reenableLogs() {\n  {\n    disabledDepth--;\n\n    if (disabledDepth === 0) {\n      /* eslint-disable react-internal/no-production-logging */\n      var props = {\n        configurable: true,\n        enumerable: true,\n        writable: true\n      }; // $FlowFixMe Flow thinks console is immutable.\n\n      Object.defineProperties(console, {\n        log: assign({}, props, {\n          value: prevLog\n        }),\n        info: assign({}, props, {\n          value: prevInfo\n        }),\n        warn: assign({}, props, {\n          value: prevWarn\n        }),\n        error: assign({}, props, {\n          value: prevError\n        }),\n        group: assign({}, props, {\n          value: prevGroup\n        }),\n        groupCollapsed: assign({}, props, {\n          value: prevGroupCollapsed\n        }),\n        groupEnd: assign({}, props, {\n          value: prevGroupEnd\n        })\n      });\n      /* eslint-enable react-internal/no-production-logging */\n    }\n\n    if (disabledDepth < 0) {\n      error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n    }\n  }\n}\n\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n  {\n    if (prefix === undefined) {\n      // Extract the VM specific prefix used by each line.\n      try {\n        throw Error();\n      } catch (x) {\n        var match = x.stack.trim().match(/\\n( *(at )?)/);\n        prefix = match && match[1] || '';\n      }\n    } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n    return '\\n' + prefix + name;\n  }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n  var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n  componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n  // If something asked for a stack inside a fake render, it should get ignored.\n  if ( !fn || reentry) {\n    return '';\n  }\n\n  {\n    var frame = componentFrameCache.get(fn);\n\n    if (frame !== undefined) {\n      return frame;\n    }\n  }\n\n  var control;\n  reentry = true;\n  var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n  Error.prepareStackTrace = undefined;\n  var previousDispatcher;\n\n  {\n    previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\n    // for warnings.\n\n    ReactCurrentDispatcher.current = null;\n    disableLogs();\n  }\n\n  try {\n    // This should throw.\n    if (construct) {\n      // Something should be setting the props in the constructor.\n      var Fake = function () {\n        throw Error();\n      }; // $FlowFixMe\n\n\n      Object.defineProperty(Fake.prototype, 'props', {\n        set: function () {\n          // We use a throwing setter instead of frozen or non-writable props\n          // because that won't throw in a non-strict mode function.\n          throw Error();\n        }\n      });\n\n      if (typeof Reflect === 'object' && Reflect.construct) {\n        // We construct a different control for this case to include any extra\n        // frames added by the construct call.\n        try {\n          Reflect.construct(Fake, []);\n        } catch (x) {\n          control = x;\n        }\n\n        Reflect.construct(fn, [], Fake);\n      } else {\n        try {\n          Fake.call();\n        } catch (x) {\n          control = x;\n        }\n\n        fn.call(Fake.prototype);\n      }\n    } else {\n      try {\n        throw Error();\n      } catch (x) {\n        control = x;\n      }\n\n      fn();\n    }\n  } catch (sample) {\n    // This is inlined manually because closure doesn't do it for us.\n    if (sample && control && typeof sample.stack === 'string') {\n      // This extracts the first frame from the sample that isn't also in the control.\n      // Skipping one frame that we assume is the frame that calls the two.\n      var sampleLines = sample.stack.split('\\n');\n      var controlLines = control.stack.split('\\n');\n      var s = sampleLines.length - 1;\n      var c = controlLines.length - 1;\n\n      while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n        // We expect at least one stack frame to be shared.\n        // Typically this will be the root most one. However, stack frames may be\n        // cut off due to maximum stack limits. In this case, one maybe cut off\n        // earlier than the other. We assume that the sample is longer or the same\n        // and there for cut off earlier. So we should find the root most frame in\n        // the sample somewhere in the control.\n        c--;\n      }\n\n      for (; s >= 1 && c >= 0; s--, c--) {\n        // Next we find the first one that isn't the same which should be the\n        // frame that called our sample function and the control.\n        if (sampleLines[s] !== controlLines[c]) {\n          // In V8, the first line is describing the message but other VMs don't.\n          // If we're about to return the first line, and the control is also on the same\n          // line, that's a pretty good indicator that our sample threw at same line as\n          // the control. I.e. before we entered the sample frame. So we ignore this result.\n          // This can happen if you passed a class to function component, or non-function.\n          if (s !== 1 || c !== 1) {\n            do {\n              s--;\n              c--; // We may still have similar intermediate frames from the construct call.\n              // The next one that isn't the same should be our match though.\n\n              if (c < 0 || sampleLines[s] !== controlLines[c]) {\n                // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n                var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"<anonymous>\"\n                // but we have a user-provided \"displayName\"\n                // splice it in to make the stack more readable.\n\n\n                if (fn.displayName && _frame.includes('<anonymous>')) {\n                  _frame = _frame.replace('<anonymous>', fn.displayName);\n                }\n\n                {\n                  if (typeof fn === 'function') {\n                    componentFrameCache.set(fn, _frame);\n                  }\n                } // Return the line we found.\n\n\n                return _frame;\n              }\n            } while (s >= 1 && c >= 0);\n          }\n\n          break;\n        }\n      }\n    }\n  } finally {\n    reentry = false;\n\n    {\n      ReactCurrentDispatcher.current = previousDispatcher;\n      reenableLogs();\n    }\n\n    Error.prepareStackTrace = previousPrepareStackTrace;\n  } // Fallback to just using the name if we couldn't make it throw.\n\n\n  var name = fn ? fn.displayName || fn.name : '';\n  var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n  {\n    if (typeof fn === 'function') {\n      componentFrameCache.set(fn, syntheticFrame);\n    }\n  }\n\n  return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n  {\n    return describeNativeComponentFrame(fn, false);\n  }\n}\n\nfunction shouldConstruct(Component) {\n  var prototype = Component.prototype;\n  return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n  if (type == null) {\n    return '';\n  }\n\n  if (typeof type === 'function') {\n    {\n      return describeNativeComponentFrame(type, shouldConstruct(type));\n    }\n  }\n\n  if (typeof type === 'string') {\n    return describeBuiltInComponentFrame(type);\n  }\n\n  switch (type) {\n    case REACT_SUSPENSE_TYPE:\n      return describeBuiltInComponentFrame('Suspense');\n\n    case REACT_SUSPENSE_LIST_TYPE:\n      return describeBuiltInComponentFrame('SuspenseList');\n  }\n\n  if (typeof type === 'object') {\n    switch (type.$$typeof) {\n      case REACT_FORWARD_REF_TYPE:\n        return describeFunctionComponentFrame(type.render);\n\n      case REACT_MEMO_TYPE:\n        // Memo may contain any component type so we recursively resolve it.\n        return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n      case REACT_LAZY_TYPE:\n        {\n          var lazyComponent = type;\n          var payload = lazyComponent._payload;\n          var init = lazyComponent._init;\n\n          try {\n            // Lazy may contain any component type so we recursively resolve it.\n            return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n          } catch (x) {}\n        }\n    }\n  }\n\n  return '';\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n  {\n    if (element) {\n      var owner = element._owner;\n      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n      ReactDebugCurrentFrame.setExtraStackFrame(stack);\n    } else {\n      ReactDebugCurrentFrame.setExtraStackFrame(null);\n    }\n  }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n  {\n    // $FlowFixMe This is okay but Flow doesn't know it.\n    var has = Function.call.bind(hasOwnProperty);\n\n    for (var typeSpecName in typeSpecs) {\n      if (has(typeSpecs, typeSpecName)) {\n        var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          if (typeof typeSpecs[typeSpecName] !== 'function') {\n            // eslint-disable-next-line react-internal/prod-error-codes\n            var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n\n          error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n        } catch (ex) {\n          error$1 = ex;\n        }\n\n        if (error$1 && !(error$1 instanceof Error)) {\n          setCurrentlyValidatingElement(element);\n\n          error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n          setCurrentlyValidatingElement(null);\n        }\n\n        if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error$1.message] = true;\n          setCurrentlyValidatingElement(element);\n\n          error('Failed %s type: %s', location, error$1.message);\n\n          setCurrentlyValidatingElement(null);\n        }\n      }\n    }\n  }\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n  return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n  {\n    // toStringTag is needed for namespaced types like Temporal.Instant\n    var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n    var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n    return type;\n  }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n  {\n    try {\n      testStringCoercion(value);\n      return false;\n    } catch (e) {\n      return true;\n    }\n  }\n}\n\nfunction testStringCoercion(value) {\n  // If you ended up here by following an exception call stack, here's what's\n  // happened: you supplied an object or symbol value to React (as a prop, key,\n  // DOM attribute, CSS property, string ref, etc.) and when React tried to\n  // coerce it to a string using `'' + value`, an exception was thrown.\n  //\n  // The most common types that will cause this exception are `Symbol` instances\n  // and Temporal objects like `Temporal.Instant`. But any object that has a\n  // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n  // exception. (Library authors do this to prevent users from using built-in\n  // numeric operators like `+` or comparison operators like `>=` because custom\n  // methods are needed to perform accurate arithmetic or comparison.)\n  //\n  // To fix the problem, coerce this object or symbol value to a string before\n  // passing it to React. The most reliable way is usually `String(value)`.\n  //\n  // To find which value is throwing, check the browser or debugger console.\n  // Before this exception was thrown, there should be `console.error` output\n  // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n  // problem and how that type was used: key, atrribute, input value prop, etc.\n  // In most cases, this console output also shows the component and its\n  // ancestor components where the exception happened.\n  //\n  // eslint-disable-next-line react-internal/safe-string-coercion\n  return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n  {\n    if (willCoercionThrow(value)) {\n      error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n      return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n    }\n  }\n}\n\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\nvar RESERVED_PROPS = {\n  key: true,\n  ref: true,\n  __self: true,\n  __source: true\n};\nvar specialPropKeyWarningShown;\nvar specialPropRefWarningShown;\nvar didWarnAboutStringRefs;\n\n{\n  didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n  {\n    if (hasOwnProperty.call(config, 'ref')) {\n      var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n      if (getter && getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n\n  return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n  {\n    if (hasOwnProperty.call(config, 'key')) {\n      var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n      if (getter && getter.isReactWarning) {\n        return false;\n      }\n    }\n  }\n\n  return config.key !== undefined;\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config, self) {\n  {\n    if (typeof config.ref === 'string' && ReactCurrentOwner.current && self && ReactCurrentOwner.current.stateNode !== self) {\n      var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n      if (!didWarnAboutStringRefs[componentName]) {\n        error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner.current.type), config.ref);\n\n        didWarnAboutStringRefs[componentName] = true;\n      }\n    }\n  }\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n  {\n    var warnAboutAccessingKey = function () {\n      if (!specialPropKeyWarningShown) {\n        specialPropKeyWarningShown = true;\n\n        error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n      }\n    };\n\n    warnAboutAccessingKey.isReactWarning = true;\n    Object.defineProperty(props, 'key', {\n      get: warnAboutAccessingKey,\n      configurable: true\n    });\n  }\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n  {\n    var warnAboutAccessingRef = function () {\n      if (!specialPropRefWarningShown) {\n        specialPropRefWarningShown = true;\n\n        error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n      }\n    };\n\n    warnAboutAccessingRef.isReactWarning = true;\n    Object.defineProperty(props, 'ref', {\n      get: warnAboutAccessingRef,\n      configurable: true\n    });\n  }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n  var element = {\n    // This tag allows us to uniquely identify this as a React Element\n    $$typeof: REACT_ELEMENT_TYPE,\n    // Built-in properties that belong on the element\n    type: type,\n    key: key,\n    ref: ref,\n    props: props,\n    // Record the component responsible for creating this element.\n    _owner: owner\n  };\n\n  {\n    // The validation flag is currently mutative. We put it on\n    // an external backing store so that we can freeze the whole object.\n    // This can be replaced with a WeakMap once they are implemented in\n    // commonly used development environments.\n    element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n    // the validation flag non-enumerable (where possible, which should\n    // include every environment we run tests in), so the test framework\n    // ignores it.\n\n    Object.defineProperty(element._store, 'validated', {\n      configurable: false,\n      enumerable: false,\n      writable: true,\n      value: false\n    }); // self and source are DEV only properties.\n\n    Object.defineProperty(element, '_self', {\n      configurable: false,\n      enumerable: false,\n      writable: false,\n      value: self\n    }); // Two elements created in two different places should be considered\n    // equal for testing purposes and therefore we hide it from enumeration.\n\n    Object.defineProperty(element, '_source', {\n      configurable: false,\n      enumerable: false,\n      writable: false,\n      value: source\n    });\n\n    if (Object.freeze) {\n      Object.freeze(element.props);\n      Object.freeze(element);\n    }\n  }\n\n  return element;\n};\n/**\n * https://github.com/reactjs/rfcs/pull/107\n * @param {*} type\n * @param {object} props\n * @param {string} key\n */\n\nfunction jsxDEV(type, config, maybeKey, source, self) {\n  {\n    var propName; // Reserved names are extracted\n\n    var props = {};\n    var key = null;\n    var ref = null; // Currently, key can be spread in as a prop. This causes a potential\n    // issue if key is also explicitly declared (ie. <div {...props} key=\"Hi\" />\n    // or <div key=\"Hi\" {...props} /> ). We want to deprecate key spread,\n    // but as an intermediary step, we will use jsxDEV for everything except\n    // <div {...props} key=\"Hi\" />, because we aren't currently able to tell if\n    // key is explicitly declared to be undefined or not.\n\n    if (maybeKey !== undefined) {\n      {\n        checkKeyStringCoercion(maybeKey);\n      }\n\n      key = '' + maybeKey;\n    }\n\n    if (hasValidKey(config)) {\n      {\n        checkKeyStringCoercion(config.key);\n      }\n\n      key = '' + config.key;\n    }\n\n    if (hasValidRef(config)) {\n      ref = config.ref;\n      warnIfStringRefCannotBeAutoConverted(config, self);\n    } // Remaining properties are added to a new props object\n\n\n    for (propName in config) {\n      if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n        props[propName] = config[propName];\n      }\n    } // Resolve default props\n\n\n    if (type && type.defaultProps) {\n      var defaultProps = type.defaultProps;\n\n      for (propName in defaultProps) {\n        if (props[propName] === undefined) {\n          props[propName] = defaultProps[propName];\n        }\n      }\n    }\n\n    if (key || ref) {\n      var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n      if (key) {\n        defineKeyPropWarningGetter(props, displayName);\n      }\n\n      if (ref) {\n        defineRefPropWarningGetter(props, displayName);\n      }\n    }\n\n    return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n  }\n}\n\nvar ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement$1(element) {\n  {\n    if (element) {\n      var owner = element._owner;\n      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n      ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n    } else {\n      ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n    }\n  }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n  propTypesMisspellWarningShown = false;\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\n\nfunction isValidElement(object) {\n  {\n    return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n  }\n}\n\nfunction getDeclarationErrorAddendum() {\n  {\n    if (ReactCurrentOwner$1.current) {\n      var name = getComponentNameFromType(ReactCurrentOwner$1.current.type);\n\n      if (name) {\n        return '\\n\\nCheck the render method of `' + name + '`.';\n      }\n    }\n\n    return '';\n  }\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n  {\n    if (source !== undefined) {\n      var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n      var lineNumber = source.lineNumber;\n      return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n    }\n\n    return '';\n  }\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n  {\n    var info = getDeclarationErrorAddendum();\n\n    if (!info) {\n      var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n      if (parentName) {\n        info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n      }\n    }\n\n    return info;\n  }\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n  {\n    if (!element._store || element._store.validated || element.key != null) {\n      return;\n    }\n\n    element._store.validated = true;\n    var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n    if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n      return;\n    }\n\n    ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n    // property, it may be the creator of the child that's responsible for\n    // assigning it a key.\n\n    var childOwner = '';\n\n    if (element && element._owner && element._owner !== ReactCurrentOwner$1.current) {\n      // Give the component that originally created this child.\n      childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n    }\n\n    setCurrentlyValidatingElement$1(element);\n\n    error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n    setCurrentlyValidatingElement$1(null);\n  }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n  {\n    if (typeof node !== 'object') {\n      return;\n    }\n\n    if (isArray(node)) {\n      for (var i = 0; i < node.length; i++) {\n        var child = node[i];\n\n        if (isValidElement(child)) {\n          validateExplicitKey(child, parentType);\n        }\n      }\n    } else if (isValidElement(node)) {\n      // This element was passed in a valid location.\n      if (node._store) {\n        node._store.validated = true;\n      }\n    } else if (node) {\n      var iteratorFn = getIteratorFn(node);\n\n      if (typeof iteratorFn === 'function') {\n        // Entry iterators used to provide implicit keys,\n        // but now we print a separate warning for them later.\n        if (iteratorFn !== node.entries) {\n          var iterator = iteratorFn.call(node);\n          var step;\n\n          while (!(step = iterator.next()).done) {\n            if (isValidElement(step.value)) {\n              validateExplicitKey(step.value, parentType);\n            }\n          }\n        }\n      }\n    }\n  }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n  {\n    var type = element.type;\n\n    if (type === null || type === undefined || typeof type === 'string') {\n      return;\n    }\n\n    var propTypes;\n\n    if (typeof type === 'function') {\n      propTypes = type.propTypes;\n    } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n    // Inner props are checked in the reconciler.\n    type.$$typeof === REACT_MEMO_TYPE)) {\n      propTypes = type.propTypes;\n    } else {\n      return;\n    }\n\n    if (propTypes) {\n      // Intentionally inside to avoid triggering lazy initializers:\n      var name = getComponentNameFromType(type);\n      checkPropTypes(propTypes, element.props, 'prop', name, element);\n    } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n      propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n      var _name = getComponentNameFromType(type);\n\n      error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n    }\n\n    if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n      error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n    }\n  }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n  {\n    var keys = Object.keys(fragment.props);\n\n    for (var i = 0; i < keys.length; i++) {\n      var key = keys[i];\n\n      if (key !== 'children' && key !== 'key') {\n        setCurrentlyValidatingElement$1(fragment);\n\n        error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n        setCurrentlyValidatingElement$1(null);\n        break;\n      }\n    }\n\n    if (fragment.ref !== null) {\n      setCurrentlyValidatingElement$1(fragment);\n\n      error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n      setCurrentlyValidatingElement$1(null);\n    }\n  }\n}\n\nfunction jsxWithValidation(type, props, key, isStaticChildren, source, self) {\n  {\n    var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n    // succeed and there will likely be errors in render.\n\n    if (!validType) {\n      var info = '';\n\n      if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n        info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n      }\n\n      var sourceInfo = getSourceInfoErrorAddendum(source);\n\n      if (sourceInfo) {\n        info += sourceInfo;\n      } else {\n        info += getDeclarationErrorAddendum();\n      }\n\n      var typeString;\n\n      if (type === null) {\n        typeString = 'null';\n      } else if (isArray(type)) {\n        typeString = 'array';\n      } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n        typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n        info = ' Did you accidentally export a JSX literal instead of a component?';\n      } else {\n        typeString = typeof type;\n      }\n\n      error('React.jsx: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n    }\n\n    var element = jsxDEV(type, props, key, source, self); // The result can be nullish if a mock or a custom function is used.\n    // TODO: Drop this when these are no longer allowed as the type argument.\n\n    if (element == null) {\n      return element;\n    } // Skip key warning if the type isn't valid since our key validation logic\n    // doesn't expect a non-string/function type and can throw confusing errors.\n    // We don't want exception behavior to differ between dev and prod.\n    // (Rendering will throw with a helpful message and as soon as the type is\n    // fixed, the key warnings will appear.)\n\n\n    if (validType) {\n      var children = props.children;\n\n      if (children !== undefined) {\n        if (isStaticChildren) {\n          if (isArray(children)) {\n            for (var i = 0; i < children.length; i++) {\n              validateChildKeys(children[i], type);\n            }\n\n            if (Object.freeze) {\n              Object.freeze(children);\n            }\n          } else {\n            error('React.jsx: Static children should always be an array. ' + 'You are likely explicitly calling React.jsxs or React.jsxDEV. ' + 'Use the Babel transform instead.');\n          }\n        } else {\n          validateChildKeys(children, type);\n        }\n      }\n    }\n\n    if (type === REACT_FRAGMENT_TYPE) {\n      validateFragmentProps(element);\n    } else {\n      validatePropTypes(element);\n    }\n\n    return element;\n  }\n} // These two functions exist to still get child warnings in dev\n// even with the prod transform. This means that jsxDEV is purely\n// opt-in behavior for better messages but that we won't stop\n// giving you warnings if you use production apis.\n\nfunction jsxWithValidationStatic(type, props, key) {\n  {\n    return jsxWithValidation(type, props, key, true);\n  }\n}\nfunction jsxWithValidationDynamic(type, props, key) {\n  {\n    return jsxWithValidation(type, props, key, false);\n  }\n}\n\nvar jsx =  jsxWithValidationDynamic ; // we may want to special case jsxs internally to take advantage of static children.\n// for now we can ship identical prod functions\n\nvar jsxs =  jsxWithValidationStatic ;\n\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsx;\nexports.jsxs = jsxs;\n  })();\n}\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n  module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n", "/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n  var printWarning = function printWarning(format, args) {\n    var len = arguments.length;\n    args = new Array(len > 1 ? len - 1 : 0);\n    for (var key = 1; key < len; key++) {\n      args[key - 1] = arguments[key];\n    }\n    var argIndex = 0;\n    var message = 'Warning: ' +\n      format.replace(/%s/g, function() {\n        return args[argIndex++];\n      });\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  }\n\n  warning = function(condition, format, args) {\n    var len = arguments.length;\n    args = new Array(len > 2 ? len - 2 : 0);\n    for (var key = 2; key < len; key++) {\n      args[key - 2] = arguments[key];\n    }\n    if (format === undefined) {\n      throw new Error(\n          '`warning(condition, format, ...args)` requires a warning ' +\n          'message argument'\n      );\n    }\n    if (!condition) {\n      printWarning.apply(null, [format].concat(args));\n    }\n  };\n}\n\nmodule.exports = warning;\n", "// Should be no imports here!\n\n// Some things that should be evaluated before all else...\n\n// We only want to know if non-polyfilled symbols are available\nconst hasSymbol =\n\ttypeof Symbol !== \"undefined\" && typeof Symbol(\"x\") === \"symbol\"\nexport const hasMap = typeof Map !== \"undefined\"\nexport const hasSet = typeof Set !== \"undefined\"\nexport const hasProxies =\n\ttypeof Proxy !== \"undefined\" &&\n\ttypeof Proxy.revocable !== \"undefined\" &&\n\ttypeof Reflect !== \"undefined\"\n\n/**\n * The sentinel value returned by producers to replace the draft with undefined.\n */\nexport const NOTHING: Nothing = hasSymbol\n\t? Symbol.for(\"immer-nothing\")\n\t: ({[\"immer-nothing\"]: true} as any)\n\n/**\n * To let Immer treat your class instances as plain immutable objects\n * (albeit with a custom prototype), you must define either an instance property\n * or a static property on each of your custom classes.\n *\n * Otherwise, your class instance will never be drafted, which means it won't be\n * safe to mutate in a produce callback.\n */\nexport const DRAFTABLE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-draftable\")\n\t: (\"__$immer_draftable\" as any)\n\nexport const DRAFT_STATE: unique symbol = hasSymbol\n\t? Symbol.for(\"immer-state\")\n\t: (\"__$immer_state\" as any)\n\n// Even a polyfilled Symbol might provide Symbol.iterator\nexport const iteratorSymbol: typeof Symbol.iterator =\n\t(typeof Symbol != \"undefined\" && Symbol.iterator) || (\"@@iterator\" as any)\n\n/** Use a class type for `nothing` so its type is unique */\nexport class Nothing {\n\t// This lets us do `Exclude<T, Nothing>`\n\t// @ts-ignore\n\tprivate _!: unique symbol\n}\n", "const errors = {\n\t0: \"Illegal state\",\n\t1: \"Immer drafts cannot have computed properties\",\n\t2: \"This object has been frozen and should not be mutated\",\n\t3(data: any) {\n\t\treturn (\n\t\t\t\"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? \" +\n\t\t\tdata\n\t\t)\n\t},\n\t4: \"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.\",\n\t5: \"Immer forbids circular references\",\n\t6: \"The first or second argument to `produce` must be a function\",\n\t7: \"The third argument to `produce` must be a function or undefined\",\n\t8: \"First argument to `createDraft` must be a plain object, an array, or an immerable object\",\n\t9: \"First argument to `finishDraft` must be a draft returned by `createDraft`\",\n\t10: \"The given draft is already finalized\",\n\t11: \"Object.defineProperty() cannot be used on an Immer draft\",\n\t12: \"Object.setPrototypeOf() cannot be used on an Immer draft\",\n\t13: \"Immer only supports deleting array indices\",\n\t14: \"Immer only supports setting array indices and the 'length' property\",\n\t15(path: string) {\n\t\treturn \"Cannot apply patch, path doesn't resolve: \" + path\n\t},\n\t16: 'Sets cannot have \"replace\" patches.',\n\t17(op: string) {\n\t\treturn \"Unsupported patch operation: \" + op\n\t},\n\t18(plugin: string) {\n\t\treturn `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \\`enable${plugin}()\\` when initializing your application.`\n\t},\n\t20: \"Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available\",\n\t21(thing: string) {\n\t\treturn `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`\n\t},\n\t22(thing: string) {\n\t\treturn `'current' expects a draft, got: ${thing}`\n\t},\n\t23(thing: string) {\n\t\treturn `'original' expects a draft, got: ${thing}`\n\t},\n\t24: \"Patching reserved attributes like __proto__, prototype and constructor is not allowed\"\n} as const\n\nexport function die(error: keyof typeof errors, ...args: any[]): never {\n\tif (__DEV__) {\n\t\tconst e = errors[error]\n\t\tconst msg = !e\n\t\t\t? \"unknown error nr: \" + error\n\t\t\t: typeof e === \"function\"\n\t\t\t? e.apply(null, args as any)\n\t\t\t: e\n\t\tthrow new Error(`[Immer] ${msg}`)\n\t}\n\tthrow new Error(\n\t\t`[Immer] minified error nr: ${error}${\n\t\t\targs.length ? \" \" + args.map(s => `'${s}'`).join(\",\") : \"\"\n\t\t}. Find the full error at: https://bit.ly/3cXEKWf`\n\t)\n}\n", "import {\n\tDRAFT_STATE,\n\tDRAFTABLE,\n\thasSet,\n\tObjectish,\n\tDrafted,\n\tAnyObject,\n\tAnyMap,\n\tAnySet,\n\tImmerState,\n\thasMap,\n\tArchtype,\n\tdie\n} from \"../internal\"\n\n/** Returns true if the given value is an Immer draft */\n/*#__PURE__*/\nexport function isDraft(value: any): boolean {\n\treturn !!value && !!value[DRAFT_STATE]\n}\n\n/** Returns true if the given value can be drafted by Immer */\n/*#__PURE__*/\nexport function isDraftable(value: any): boolean {\n\tif (!value) return false\n\treturn (\n\t\tisPlainObject(value) ||\n\t\tArray.isArray(value) ||\n\t\t!!value[DRAFTABLE] ||\n\t\t!!value.constructor?.[DRAFTABLE] ||\n\t\tisMap(value) ||\n\t\tisSet(value)\n\t)\n}\n\nconst objectCtorString = Object.prototype.constructor.toString()\n/*#__PURE__*/\nexport function isPlainObject(value: any): boolean {\n\tif (!value || typeof value !== \"object\") return false\n\tconst proto = Object.getPrototypeOf(value)\n\tif (proto === null) {\n\t\treturn true\n\t}\n\tconst Ctor =\n\t\tObject.hasOwnProperty.call(proto, \"constructor\") && proto.constructor\n\n\tif (Ctor === Object) return true\n\n\treturn (\n\t\ttypeof Ctor == \"function\" &&\n\t\tFunction.toString.call(Ctor) === objectCtorString\n\t)\n}\n\n/** Get the underlying object that is represented by the given draft */\n/*#__PURE__*/\nexport function original<T>(value: T): T | undefined\nexport function original(value: Drafted<any>): any {\n\tif (!isDraft(value)) die(23, value)\n\treturn value[DRAFT_STATE].base_\n}\n\n/*#__PURE__*/\nexport const ownKeys: (target: AnyObject) => PropertyKey[] =\n\ttypeof Reflect !== \"undefined\" && Reflect.ownKeys\n\t\t? Reflect.ownKeys\n\t\t: typeof Object.getOwnPropertySymbols !== \"undefined\"\n\t\t? obj =>\n\t\t\t\tObject.getOwnPropertyNames(obj).concat(\n\t\t\t\t\tObject.getOwnPropertySymbols(obj) as any\n\t\t\t\t)\n\t\t: /* istanbul ignore next */ Object.getOwnPropertyNames\n\nexport const getOwnPropertyDescriptors =\n\tObject.getOwnPropertyDescriptors ||\n\tfunction getOwnPropertyDescriptors(target: any) {\n\t\t// Polyfill needed for Hermes and IE, see https://github.com/facebook/hermes/issues/274\n\t\tconst res: any = {}\n\t\townKeys(target).forEach(key => {\n\t\t\tres[key] = Object.getOwnPropertyDescriptor(target, key)\n\t\t})\n\t\treturn res\n\t}\n\nexport function each<T extends Objectish>(\n\tobj: T,\n\titer: (key: string | number, value: any, source: T) => void,\n\tenumerableOnly?: boolean\n): void\nexport function each(obj: any, iter: any, enumerableOnly = false) {\n\tif (getArchtype(obj) === Archtype.Object) {\n\t\t;(enumerableOnly ? Object.keys : ownKeys)(obj).forEach(key => {\n\t\t\tif (!enumerableOnly || typeof key !== \"symbol\") iter(key, obj[key], obj)\n\t\t})\n\t} else {\n\t\tobj.forEach((entry: any, index: any) => iter(index, entry, obj))\n\t}\n}\n\n/*#__PURE__*/\nexport function getArchtype(thing: any): Archtype {\n\t/* istanbul ignore next */\n\tconst state: undefined | ImmerState = thing[DRAFT_STATE]\n\treturn state\n\t\t? state.type_ > 3\n\t\t\t? state.type_ - 4 // cause Object and Array map back from 4 and 5\n\t\t\t: (state.type_ as any) // others are the same\n\t\t: Array.isArray(thing)\n\t\t? Archtype.Array\n\t\t: isMap(thing)\n\t\t? Archtype.Map\n\t\t: isSet(thing)\n\t\t? Archtype.Set\n\t\t: Archtype.Object\n}\n\n/*#__PURE__*/\nexport function has(thing: any, prop: PropertyKey): boolean {\n\treturn getArchtype(thing) === Archtype.Map\n\t\t? thing.has(prop)\n\t\t: Object.prototype.hasOwnProperty.call(thing, prop)\n}\n\n/*#__PURE__*/\nexport function get(thing: AnyMap | AnyObject, prop: PropertyKey): any {\n\t// @ts-ignore\n\treturn getArchtype(thing) === Archtype.Map ? thing.get(prop) : thing[prop]\n}\n\n/*#__PURE__*/\nexport function set(thing: any, propOrOldValue: PropertyKey, value: any) {\n\tconst t = getArchtype(thing)\n\tif (t === Archtype.Map) thing.set(propOrOldValue, value)\n\telse if (t === Archtype.Set) {\n\t\tthing.add(value)\n\t} else thing[propOrOldValue] = value\n}\n\n/*#__PURE__*/\nexport function is(x: any, y: any): boolean {\n\t// From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n\tif (x === y) {\n\t\treturn x !== 0 || 1 / x === 1 / y\n\t} else {\n\t\treturn x !== x && y !== y\n\t}\n}\n\n/*#__PURE__*/\nexport function isMap(target: any): target is AnyMap {\n\treturn hasMap && target instanceof Map\n}\n\n/*#__PURE__*/\nexport function isSet(target: any): target is AnySet {\n\treturn hasSet && target instanceof Set\n}\n/*#__PURE__*/\nexport function latest(state: ImmerState): any {\n\treturn state.copy_ || state.base_\n}\n\n/*#__PURE__*/\nexport function shallowCopy(base: any) {\n\tif (Array.isArray(base)) return Array.prototype.slice.call(base)\n\tconst descriptors = getOwnPropertyDescriptors(base)\n\tdelete descriptors[DRAFT_STATE as any]\n\tlet keys = ownKeys(descriptors)\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tconst key: any = keys[i]\n\t\tconst desc = descriptors[key]\n\t\tif (desc.writable === false) {\n\t\t\tdesc.writable = true\n\t\t\tdesc.configurable = true\n\t\t}\n\t\t// like object.assign, we will read any _own_, get/set accessors. This helps in dealing\n\t\t// with libraries that trap values, like mobx or vue\n\t\t// unlike object.assign, non-enumerables will be copied as well\n\t\tif (desc.get || desc.set)\n\t\t\tdescriptors[key] = {\n\t\t\t\tconfigurable: true,\n\t\t\t\twritable: true, // could live with !!desc.set as well here...\n\t\t\t\tenumerable: desc.enumerable,\n\t\t\t\tvalue: base[key]\n\t\t\t}\n\t}\n\treturn Object.create(Object.getPrototypeOf(base), descriptors)\n}\n\n/**\n * Freezes draftable objects. Returns the original object.\n * By default freezes shallowly, but if the second argument is `true` it will freeze recursively.\n *\n * @param obj\n * @param deep\n */\nexport function freeze<T>(obj: T, deep?: boolean): T\nexport function freeze<T>(obj: any, deep: boolean = false): T {\n\tif (isFrozen(obj) || isDraft(obj) || !isDraftable(obj)) return obj\n\tif (getArchtype(obj) > 1 /* Map or Set */) {\n\t\tobj.set = obj.add = obj.clear = obj.delete = dontMutateFrozenCollections as any\n\t}\n\tObject.freeze(obj)\n\tif (deep) each(obj, (key, value) => freeze(value, true), true)\n\treturn obj\n}\n\nfunction dontMutateFrozenCollections() {\n\tdie(2)\n}\n\nexport function isFrozen(obj: any): boolean {\n\tif (obj == null || typeof obj !== \"object\") return true\n\t// See #600, IE dies on non-objects in Object.isFrozen\n\treturn Object.isFrozen(obj)\n}\n", "import {\n\tImmerState,\n\tPatch,\n\tImmerScope,\n\tDrafted,\n\tAnyObject,\n\tImmerBaseState,\n\tAnyMap,\n\tAnySet,\n\tProxyType,\n\tdie\n} from \"../internal\"\n\n/** Plugin utilities */\nconst plugins: {\n\tPatches?: {\n\t\tgeneratePatches_(\n\t\t\tstate: ImmerState,\n\t\t\tbasePath: PatchPath,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tgenerateReplacementPatches_(\n\t\t\tbase: any,\n\t\t\treplacement: any,\n\t\t\tpatches: Patch[],\n\t\t\tinversePatches: Patch[]\n\t\t): void\n\t\tapplyPatches_<T>(draft: T, patches: Patch[]): T\n\t}\n\tES5?: {\n\t\twillFinalizeES5_(scope: ImmerScope, result: any, isReplaced: boolean): void\n\t\tcreateES5Proxy_<T>(\n\t\t\tbase: T,\n\t\t\tparent?: ImmerState\n\t\t): Drafted<T, ES5ObjectState | ES5ArrayState>\n\t\thasChanges_(state: ES5ArrayState | ES5ObjectState): boolean\n\t}\n\tMapSet?: {\n\t\tproxyMap_<T extends AnyMap>(target: T, parent?: ImmerState): T\n\t\tproxySet_<T extends AnySet>(target: T, parent?: ImmerState): T\n\t}\n} = {}\n\ntype Plugins = typeof plugins\n\nexport function getPlugin<K extends keyof Plugins>(\n\tpluginKey: K\n): Exclude<Plugins[K], undefined> {\n\tconst plugin = plugins[pluginKey]\n\tif (!plugin) {\n\t\tdie(18, pluginKey)\n\t}\n\t// @ts-ignore\n\treturn plugin\n}\n\nexport function loadPlugin<K extends keyof Plugins>(\n\tpluginKey: K,\n\timplementation: Plugins[K]\n): void {\n\tif (!plugins[pluginKey]) plugins[pluginKey] = implementation\n}\n\n/** ES5 Plugin */\n\ninterface ES5BaseState extends ImmerBaseState {\n\tassigned_: {[key: string]: any}\n\tparent_?: ImmerState\n\trevoked_: boolean\n}\n\nexport interface ES5ObjectState extends ES5BaseState {\n\ttype_: ProxyType.ES5Object\n\tdraft_: Drafted<AnyObject, ES5ObjectState>\n\tbase_: AnyObject\n\tcopy_: AnyObject | null\n}\n\nexport interface ES5ArrayState extends ES5BaseState {\n\ttype_: ProxyType.ES5Array\n\tdraft_: Drafted<AnyObject, ES5ArrayState>\n\tbase_: any\n\tcopy_: any\n}\n\n/** Map / Set plugin */\n\nexport interface MapState extends ImmerBaseState {\n\ttype_: ProxyType.Map\n\tcopy_: AnyMap | undefined\n\tassigned_: Map<any, boolean> | undefined\n\tbase_: AnyMap\n\trevoked_: boolean\n\tdraft_: Drafted<AnyMap, MapState>\n}\n\nexport interface SetState extends ImmerBaseState {\n\ttype_: ProxyType.Set\n\tcopy_: AnySet | undefined\n\tbase_: AnySet\n\tdrafts_: Map<any, Drafted> // maps the original value to the draft value in the new set\n\trevoked_: boolean\n\tdraft_: Drafted<AnySet, SetState>\n}\n\n/** Patches plugin */\n\nexport type PatchPath = (string | number)[]\n", "import {\n\tPatch,\n\tPatchListener,\n\tDrafted,\n\tImmer,\n\tDRAFT_STATE,\n\tImmerState,\n\tProxyType,\n\tgetPlugin\n} from \"../internal\"\nimport {die} from \"../utils/errors\"\n\n/** Each scope represents a `produce` call. */\n\nexport interface ImmerScope {\n\tpatches_?: Patch[]\n\tinversePatches_?: Patch[]\n\tcanAutoFreeze_: boolean\n\tdrafts_: any[]\n\tparent_?: ImmerScope\n\tpatchListener_?: PatchListener\n\timmer_: Immer\n\tunfinalizedDrafts_: number\n}\n\nlet currentScope: ImmerScope | undefined\n\nexport function getCurrentScope() {\n\tif (__DEV__ && !currentScope) die(0)\n\treturn currentScope!\n}\n\nfunction createScope(\n\tparent_: ImmerScope | undefined,\n\timmer_: Immer\n): ImmerScope {\n\treturn {\n\t\tdrafts_: [],\n\t\tparent_,\n\t\timmer_,\n\t\t// Whenever the modified draft contains a draft from another scope, we\n\t\t// need to prevent auto-freezing so the unowned draft can be finalized.\n\t\tcanAutoFreeze_: true,\n\t\tunfinalizedDrafts_: 0\n\t}\n}\n\nexport function usePatchesInScope(\n\tscope: ImmerScope,\n\tpatchListener?: PatchListener\n) {\n\tif (patchListener) {\n\t\tgetPlugin(\"Patches\") // assert we have the plugin\n\t\tscope.patches_ = []\n\t\tscope.inversePatches_ = []\n\t\tscope.patchListener_ = patchListener\n\t}\n}\n\nexport function revokeScope(scope: ImmerScope) {\n\tleaveScope(scope)\n\tscope.drafts_.forEach(revokeDraft)\n\t// @ts-ignore\n\tscope.drafts_ = null\n}\n\nexport function leaveScope(scope: ImmerScope) {\n\tif (scope === currentScope) {\n\t\tcurrentScope = scope.parent_\n\t}\n}\n\nexport function enterScope(immer: Immer) {\n\treturn (currentScope = createScope(currentScope, immer))\n}\n\nfunction revokeDraft(draft: Drafted) {\n\tconst state: ImmerState = draft[DRAFT_STATE]\n\tif (\n\t\tstate.type_ === ProxyType.ProxyObject ||\n\t\tstate.type_ === ProxyType.ProxyArray\n\t)\n\t\tstate.revoke_()\n\telse state.revoked_ = true\n}\n", "import {\n\tImmerScope,\n\tDRAFT_STATE,\n\tisDraftable,\n\tNOTHING,\n\tPatchPath,\n\teach,\n\thas,\n\tfreeze,\n\tImmerState,\n\tisDraft,\n\tSetState,\n\tset,\n\tProxyType,\n\tgetPlugin,\n\tdie,\n\trevokeScope,\n\tisFrozen,\n\tshallowCopy\n} from \"../internal\"\n\nexport function processResult(result: any, scope: ImmerScope) {\n\tscope.unfinalizedDrafts_ = scope.drafts_.length\n\tconst baseDraft = scope.drafts_![0]\n\tconst isReplaced = result !== undefined && result !== baseDraft\n\tif (!scope.immer_.useProxies_)\n\t\tgetPlugin(\"ES5\").willFinalizeES5_(scope, result, isReplaced)\n\tif (isReplaced) {\n\t\tif (baseDraft[DRAFT_STATE].modified_) {\n\t\t\trevokeScope(scope)\n\t\t\tdie(4)\n\t\t}\n\t\tif (isDraftable(result)) {\n\t\t\t// Finalize the result in case it contains (or is) a subset of the draft.\n\t\t\tresult = finalize(scope, result)\n\t\t\tif (!scope.parent_) maybeFreeze(scope, result)\n\t\t}\n\t\tif (scope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(\n\t\t\t\tbaseDraft[DRAFT_STATE].base_,\n\t\t\t\tresult,\n\t\t\t\tscope.patches_,\n\t\t\t\tscope.inversePatches_!\n\t\t\t)\n\t\t}\n\t} else {\n\t\t// Finalize the base draft.\n\t\tresult = finalize(scope, baseDraft, [])\n\t}\n\trevokeScope(scope)\n\tif (scope.patches_) {\n\t\tscope.patchListener_!(scope.patches_, scope.inversePatches_!)\n\t}\n\treturn result !== NOTHING ? result : undefined\n}\n\nfunction finalize(rootScope: ImmerScope, value: any, path?: PatchPath) {\n\t// Don't recurse in tho recursive data structures\n\tif (isFrozen(value)) return value\n\n\tconst state: ImmerState = value[DRAFT_STATE]\n\t// A plain object, might need freezing, might contain drafts\n\tif (!state) {\n\t\teach(\n\t\t\tvalue,\n\t\t\t(key, childValue) =>\n\t\t\t\tfinalizeProperty(rootScope, state, value, key, childValue, path),\n\t\t\ttrue // See #590, don't recurse into non-enumerable of non drafted objects\n\t\t)\n\t\treturn value\n\t}\n\t// Never finalize drafts owned by another scope.\n\tif (state.scope_ !== rootScope) return value\n\t// Unmodified draft, return the (frozen) original\n\tif (!state.modified_) {\n\t\tmaybeFreeze(rootScope, state.base_, true)\n\t\treturn state.base_\n\t}\n\t// Not finalized yet, let's do that now\n\tif (!state.finalized_) {\n\t\tstate.finalized_ = true\n\t\tstate.scope_.unfinalizedDrafts_--\n\t\tconst result =\n\t\t\t// For ES5, create a good copy from the draft first, with added keys and without deleted keys.\n\t\t\tstate.type_ === ProxyType.ES5Object || state.type_ === ProxyType.ES5Array\n\t\t\t\t? (state.copy_ = shallowCopy(state.draft_))\n\t\t\t\t: state.copy_\n\t\t// Finalize all children of the copy\n\t\t// For sets we clone before iterating, otherwise we can get in endless loop due to modifying during iteration, see #628\n\t\t// To preserve insertion order in all cases we then clear the set\n\t\t// And we let finalizeProperty know it needs to re-add non-draft children back to the target\n\t\tlet resultEach = result\n\t\tlet isSet = false\n\t\tif (state.type_ === ProxyType.Set) {\n\t\t\tresultEach = new Set(result)\n\t\t\tresult.clear()\n\t\t\tisSet = true\n\t\t}\n\t\teach(resultEach, (key, childValue) =>\n\t\t\tfinalizeProperty(rootScope, state, result, key, childValue, path, isSet)\n\t\t)\n\t\t// everything inside is frozen, we can freeze here\n\t\tmaybeFreeze(rootScope, result, false)\n\t\t// first time finalizing, let's create those patches\n\t\tif (path && rootScope.patches_) {\n\t\t\tgetPlugin(\"Patches\").generatePatches_(\n\t\t\t\tstate,\n\t\t\t\tpath,\n\t\t\t\trootScope.patches_,\n\t\t\t\trootScope.inversePatches_!\n\t\t\t)\n\t\t}\n\t}\n\treturn state.copy_\n}\n\nfunction finalizeProperty(\n\trootScope: ImmerScope,\n\tparentState: undefined | ImmerState,\n\ttargetObject: any,\n\tprop: string | number,\n\tchildValue: any,\n\trootPath?: PatchPath,\n\ttargetIsSet?: boolean\n) {\n\tif (__DEV__ && childValue === targetObject) die(5)\n\tif (isDraft(childValue)) {\n\t\tconst path =\n\t\t\trootPath &&\n\t\t\tparentState &&\n\t\t\tparentState!.type_ !== ProxyType.Set && // Set objects are atomic since they have no keys.\n\t\t\t!has((parentState as Exclude<ImmerState, SetState>).assigned_!, prop) // Skip deep patches for assigned keys.\n\t\t\t\t? rootPath!.concat(prop)\n\t\t\t\t: undefined\n\t\t// Drafts owned by `scope` are finalized here.\n\t\tconst res = finalize(rootScope, childValue, path)\n\t\tset(targetObject, prop, res)\n\t\t// Drafts from another scope must prevented to be frozen\n\t\t// if we got a draft back from finalize, we're in a nested produce and shouldn't freeze\n\t\tif (isDraft(res)) {\n\t\t\trootScope.canAutoFreeze_ = false\n\t\t} else return\n\t} else if (targetIsSet) {\n\t\ttargetObject.add(childValue)\n\t}\n\t// Search new objects for unfinalized drafts. Frozen objects should never contain drafts.\n\tif (isDraftable(childValue) && !isFrozen(childValue)) {\n\t\tif (!rootScope.immer_.autoFreeze_ && rootScope.unfinalizedDrafts_ < 1) {\n\t\t\t// optimization: if an object is not a draft, and we don't have to\n\t\t\t// deepfreeze everything, and we are sure that no drafts are left in the remaining object\n\t\t\t// cause we saw and finalized all drafts already; we can stop visiting the rest of the tree.\n\t\t\t// This benefits especially adding large data tree's without further processing.\n\t\t\t// See add-data.js perf test\n\t\t\treturn\n\t\t}\n\t\tfinalize(rootScope, childValue)\n\t\t// immer deep freezes plain objects, so if there is no parent state, we freeze as well\n\t\tif (!parentState || !parentState.scope_.parent_)\n\t\t\tmaybeFreeze(rootScope, childValue)\n\t}\n}\n\nfunction maybeFreeze(scope: ImmerScope, value: any, deep = false) {\n\tif (scope.immer_.autoFreeze_ && scope.canAutoFreeze_) {\n\t\tfreeze(value, deep)\n\t}\n}\n", "import {\n\teach,\n\thas,\n\tis,\n\tisDraftable,\n\tshallowCopy,\n\tlatest,\n\tImmerBaseState,\n\tImmerState,\n\tDrafted,\n\tAnyObject,\n\tAnyArray,\n\tObjectish,\n\tgetCurrentScope,\n\tDRAFT_STATE,\n\tdie,\n\tcreateProxy,\n\tProxyType\n} from \"../internal\"\n\ninterface ProxyBaseState extends ImmerBaseState {\n\tassigned_: {\n\t\t[property: string]: boolean\n\t}\n\tparent_?: ImmerState\n\trevoke_(): void\n}\n\nexport interface ProxyObjectState extends ProxyBaseState {\n\ttype_: ProxyType.ProxyObject\n\tbase_: any\n\tcopy_: any\n\tdraft_: Drafted<AnyObject, ProxyObjectState>\n}\n\nexport interface ProxyArrayState extends ProxyBaseState {\n\ttype_: ProxyType.ProxyArray\n\tbase_: AnyArray\n\tcopy_: AnyArray | null\n\tdraft_: Drafted<AnyArray, ProxyArrayState>\n}\n\ntype ProxyState = ProxyObjectState | ProxyArrayState\n\n/**\n * Returns a new draft of the `base` object.\n *\n * The second argument is the parent draft-state (used internally).\n */\nexport function createProxyProxy<T extends Objectish>(\n\tbase: T,\n\tparent?: ImmerState\n): Drafted<T, ProxyState> {\n\tconst isArray = Array.isArray(base)\n\tconst state: ProxyState = {\n\t\ttype_: isArray ? ProxyType.ProxyArray : (ProxyType.ProxyObject as any),\n\t\t// Track which produce call this is associated with.\n\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t// True for both shallow and deep changes.\n\t\tmodified_: false,\n\t\t// Used during finalization.\n\t\tfinalized_: false,\n\t\t// Track which properties have been assigned (true) or deleted (false).\n\t\tassigned_: {},\n\t\t// The parent draft state.\n\t\tparent_: parent,\n\t\t// The base state.\n\t\tbase_: base,\n\t\t// The base proxy.\n\t\tdraft_: null as any, // set below\n\t\t// The base copy with any updated values.\n\t\tcopy_: null,\n\t\t// Called by the `produce` function.\n\t\trevoke_: null as any,\n\t\tisManual_: false\n\t}\n\n\t// the traps must target something, a bit like the 'real' base.\n\t// but also, we need to be able to determine from the target what the relevant state is\n\t// (to avoid creating traps per instance to capture the state in closure,\n\t// and to avoid creating weird hidden properties as well)\n\t// So the trick is to use 'state' as the actual 'target'! (and make sure we intercept everything)\n\t// Note that in the case of an array, we put the state in an array to have better Reflect defaults ootb\n\tlet target: T = state as any\n\tlet traps: ProxyHandler<object | Array<any>> = objectTraps\n\tif (isArray) {\n\t\ttarget = [state] as any\n\t\ttraps = arrayTraps\n\t}\n\n\tconst {revoke, proxy} = Proxy.revocable(target, traps)\n\tstate.draft_ = proxy as any\n\tstate.revoke_ = revoke\n\treturn proxy as any\n}\n\n/**\n * Object drafts\n */\nexport const objectTraps: ProxyHandler<ProxyState> = {\n\tget(state, prop) {\n\t\tif (prop === DRAFT_STATE) return state\n\n\t\tconst source = latest(state)\n\t\tif (!has(source, prop)) {\n\t\t\t// non-existing or non-own property...\n\t\t\treturn readPropFromProto(state, source, prop)\n\t\t}\n\t\tconst value = source[prop]\n\t\tif (state.finalized_ || !isDraftable(value)) {\n\t\t\treturn value\n\t\t}\n\t\t// Check for existing draft in modified state.\n\t\t// Assigned values are never drafted. This catches any drafts we created, too.\n\t\tif (value === peek(state.base_, prop)) {\n\t\t\tprepareCopy(state)\n\t\t\treturn (state.copy_![prop as any] = createProxy(\n\t\t\t\tstate.scope_.immer_,\n\t\t\t\tvalue,\n\t\t\t\tstate\n\t\t\t))\n\t\t}\n\t\treturn value\n\t},\n\thas(state, prop) {\n\t\treturn prop in latest(state)\n\t},\n\townKeys(state) {\n\t\treturn Reflect.ownKeys(latest(state))\n\t},\n\tset(\n\t\tstate: ProxyObjectState,\n\t\tprop: string /* strictly not, but helps TS */,\n\t\tvalue\n\t) {\n\t\tconst desc = getDescriptorFromProto(latest(state), prop)\n\t\tif (desc?.set) {\n\t\t\t// special case: if this write is captured by a setter, we have\n\t\t\t// to trigger it with the correct context\n\t\t\tdesc.set.call(state.draft_, value)\n\t\t\treturn true\n\t\t}\n\t\tif (!state.modified_) {\n\t\t\t// the last check is because we need to be able to distinguish setting a non-existing to undefined (which is a change)\n\t\t\t// from setting an existing property with value undefined to undefined (which is not a change)\n\t\t\tconst current = peek(latest(state), prop)\n\t\t\t// special case, if we assigning the original value to a draft, we can ignore the assignment\n\t\t\tconst currentState: ProxyObjectState = current?.[DRAFT_STATE]\n\t\t\tif (currentState && currentState.base_ === value) {\n\t\t\t\tstate.copy_![prop] = value\n\t\t\t\tstate.assigned_[prop] = false\n\t\t\t\treturn true\n\t\t\t}\n\t\t\tif (is(value, current) && (value !== undefined || has(state.base_, prop)))\n\t\t\t\treturn true\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t}\n\n\t\tif (\n\t\t\t(state.copy_![prop] === value &&\n\t\t\t\t// special case: handle new props with value 'undefined'\n\t\t\t\t(value !== undefined || prop in state.copy_)) ||\n\t\t\t// special case: NaN\n\t\t\t(Number.isNaN(value) && Number.isNaN(state.copy_![prop]))\n\t\t)\n\t\t\treturn true\n\n\t\t// @ts-ignore\n\t\tstate.copy_![prop] = value\n\t\tstate.assigned_[prop] = true\n\t\treturn true\n\t},\n\tdeleteProperty(state, prop: string) {\n\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\tif (peek(state.base_, prop) !== undefined || prop in state.base_) {\n\t\t\tstate.assigned_[prop] = false\n\t\t\tprepareCopy(state)\n\t\t\tmarkChanged(state)\n\t\t} else {\n\t\t\t// if an originally not assigned property was deleted\n\t\t\tdelete state.assigned_[prop]\n\t\t}\n\t\t// @ts-ignore\n\t\tif (state.copy_) delete state.copy_[prop]\n\t\treturn true\n\t},\n\t// Note: We never coerce `desc.value` into an Immer draft, because we can't make\n\t// the same guarantee in ES5 mode.\n\tgetOwnPropertyDescriptor(state, prop) {\n\t\tconst owner = latest(state)\n\t\tconst desc = Reflect.getOwnPropertyDescriptor(owner, prop)\n\t\tif (!desc) return desc\n\t\treturn {\n\t\t\twritable: true,\n\t\t\tconfigurable: state.type_ !== ProxyType.ProxyArray || prop !== \"length\",\n\t\t\tenumerable: desc.enumerable,\n\t\t\tvalue: owner[prop]\n\t\t}\n\t},\n\tdefineProperty() {\n\t\tdie(11)\n\t},\n\tgetPrototypeOf(state) {\n\t\treturn Object.getPrototypeOf(state.base_)\n\t},\n\tsetPrototypeOf() {\n\t\tdie(12)\n\t}\n}\n\n/**\n * Array drafts\n */\n\nconst arrayTraps: ProxyHandler<[ProxyArrayState]> = {}\neach(objectTraps, (key, fn) => {\n\t// @ts-ignore\n\tarrayTraps[key] = function() {\n\t\targuments[0] = arguments[0][0]\n\t\treturn fn.apply(this, arguments)\n\t}\n})\narrayTraps.deleteProperty = function(state, prop) {\n\tif (__DEV__ && isNaN(parseInt(prop as any))) die(13)\n\t// @ts-ignore\n\treturn arrayTraps.set!.call(this, state, prop, undefined)\n}\narrayTraps.set = function(state, prop, value) {\n\tif (__DEV__ && prop !== \"length\" && isNaN(parseInt(prop as any))) die(14)\n\treturn objectTraps.set!.call(this, state[0], prop, value, state[0])\n}\n\n// Access a property without creating an Immer draft.\nfunction peek(draft: Drafted, prop: PropertyKey) {\n\tconst state = draft[DRAFT_STATE]\n\tconst source = state ? latest(state) : draft\n\treturn source[prop]\n}\n\nfunction readPropFromProto(state: ImmerState, source: any, prop: PropertyKey) {\n\tconst desc = getDescriptorFromProto(source, prop)\n\treturn desc\n\t\t? `value` in desc\n\t\t\t? desc.value\n\t\t\t: // This is a very special case, if the prop is a getter defined by the\n\t\t\t  // prototype, we should invoke it with the draft as context!\n\t\t\t  desc.get?.call(state.draft_)\n\t\t: undefined\n}\n\nfunction getDescriptorFromProto(\n\tsource: any,\n\tprop: PropertyKey\n): PropertyDescriptor | undefined {\n\t// 'in' checks proto!\n\tif (!(prop in source)) return undefined\n\tlet proto = Object.getPrototypeOf(source)\n\twhile (proto) {\n\t\tconst desc = Object.getOwnPropertyDescriptor(proto, prop)\n\t\tif (desc) return desc\n\t\tproto = Object.getPrototypeOf(proto)\n\t}\n\treturn undefined\n}\n\nexport function markChanged(state: ImmerState) {\n\tif (!state.modified_) {\n\t\tstate.modified_ = true\n\t\tif (state.parent_) {\n\t\t\tmarkChanged(state.parent_)\n\t\t}\n\t}\n}\n\nexport function prepareCopy(state: {base_: any; copy_: any}) {\n\tif (!state.copy_) {\n\t\tstate.copy_ = shallowCopy(state.base_)\n\t}\n}\n", "import {\n\tIProduceWithPatches,\n\tIProduce,\n\tImmerState,\n\tDrafted,\n\tisDraftable,\n\tprocessResult,\n\tPatch,\n\tObjectish,\n\tDRAFT_STATE,\n\tDraft,\n\tPatchListener,\n\tisDraft,\n\tisMap,\n\tisSet,\n\tcreateProxyProxy,\n\tgetPlugin,\n\tdie,\n\thasProxies,\n\tenterScope,\n\trevokeScope,\n\tleaveScope,\n\tusePatchesInScope,\n\tgetCurrentScope,\n\tNOTHING,\n\tfreeze,\n\tcurrent\n} from \"../internal\"\n\ninterface ProducersFns {\n\tproduce: IProduce\n\tproduceWithPatches: IProduceWithPatches\n}\n\nexport class Immer implements ProducersFns {\n\tuseProxies_: boolean = hasProxies\n\n\tautoFreeze_: boolean = true\n\n\tconstructor(config?: {useProxies?: boolean; autoFreeze?: boolean}) {\n\t\tif (typeof config?.useProxies === \"boolean\")\n\t\t\tthis.setUseProxies(config!.useProxies)\n\t\tif (typeof config?.autoFreeze === \"boolean\")\n\t\t\tthis.setAutoFreeze(config!.autoFreeze)\n\t}\n\n\t/**\n\t * The `produce` function takes a value and a \"recipe function\" (whose\n\t * return value often depends on the base state). The recipe function is\n\t * free to mutate its first argument however it wants. All mutations are\n\t * only ever applied to a __copy__ of the base state.\n\t *\n\t * Pass only a function to create a \"curried producer\" which relieves you\n\t * from passing the recipe function every time.\n\t *\n\t * Only plain objects and arrays are made mutable. All other objects are\n\t * considered uncopyable.\n\t *\n\t * Note: This function is __bound__ to its `Immer` instance.\n\t *\n\t * @param {any} base - the initial state\n\t * @param {Function} recipe - function that receives a proxy of the base state as first argument and which can be freely modified\n\t * @param {Function} patchListener - optional function that will be called with all the patches produced here\n\t * @returns {any} a new state, or the initial state if nothing was modified\n\t */\n\tproduce: IProduce = (base: any, recipe?: any, patchListener?: any) => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\" && typeof recipe !== \"function\") {\n\t\t\tconst defaultBase = recipe\n\t\t\trecipe = base\n\n\t\t\tconst self = this\n\t\t\treturn function curriedProduce(\n\t\t\t\tthis: any,\n\t\t\t\tbase = defaultBase,\n\t\t\t\t...args: any[]\n\t\t\t) {\n\t\t\t\treturn self.produce(base, (draft: Drafted) => recipe.call(this, draft, ...args)) // prettier-ignore\n\t\t\t}\n\t\t}\n\n\t\tif (typeof recipe !== \"function\") die(6)\n\t\tif (patchListener !== undefined && typeof patchListener !== \"function\")\n\t\t\tdie(7)\n\n\t\tlet result\n\n\t\t// Only plain objects, arrays, and \"immerable classes\" are drafted.\n\t\tif (isDraftable(base)) {\n\t\t\tconst scope = enterScope(this)\n\t\t\tconst proxy = createProxy(this, base, undefined)\n\t\t\tlet hasError = true\n\t\t\ttry {\n\t\t\t\tresult = recipe(proxy)\n\t\t\t\thasError = false\n\t\t\t} finally {\n\t\t\t\t// finally instead of catch + rethrow better preserves original stack\n\t\t\t\tif (hasError) revokeScope(scope)\n\t\t\t\telse leaveScope(scope)\n\t\t\t}\n\t\t\tif (typeof Promise !== \"undefined\" && result instanceof Promise) {\n\t\t\t\treturn result.then(\n\t\t\t\t\tresult => {\n\t\t\t\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\t\t\t\treturn processResult(result, scope)\n\t\t\t\t\t},\n\t\t\t\t\terror => {\n\t\t\t\t\t\trevokeScope(scope)\n\t\t\t\t\t\tthrow error\n\t\t\t\t\t}\n\t\t\t\t)\n\t\t\t}\n\t\t\tusePatchesInScope(scope, patchListener)\n\t\t\treturn processResult(result, scope)\n\t\t} else if (!base || typeof base !== \"object\") {\n\t\t\tresult = recipe(base)\n\t\t\tif (result === undefined) result = base\n\t\t\tif (result === NOTHING) result = undefined\n\t\t\tif (this.autoFreeze_) freeze(result, true)\n\t\t\tif (patchListener) {\n\t\t\t\tconst p: Patch[] = []\n\t\t\t\tconst ip: Patch[] = []\n\t\t\t\tgetPlugin(\"Patches\").generateReplacementPatches_(base, result, p, ip)\n\t\t\t\tpatchListener(p, ip)\n\t\t\t}\n\t\t\treturn result\n\t\t} else die(21, base)\n\t}\n\n\tproduceWithPatches: IProduceWithPatches = (base: any, recipe?: any): any => {\n\t\t// curried invocation\n\t\tif (typeof base === \"function\") {\n\t\t\treturn (state: any, ...args: any[]) =>\n\t\t\t\tthis.produceWithPatches(state, (draft: any) => base(draft, ...args))\n\t\t}\n\n\t\tlet patches: Patch[], inversePatches: Patch[]\n\t\tconst result = this.produce(base, recipe, (p: Patch[], ip: Patch[]) => {\n\t\t\tpatches = p\n\t\t\tinversePatches = ip\n\t\t})\n\n\t\tif (typeof Promise !== \"undefined\" && result instanceof Promise) {\n\t\t\treturn result.then(nextState => [nextState, patches!, inversePatches!])\n\t\t}\n\t\treturn [result, patches!, inversePatches!]\n\t}\n\n\tcreateDraft<T extends Objectish>(base: T): Draft<T> {\n\t\tif (!isDraftable(base)) die(8)\n\t\tif (isDraft(base)) base = current(base)\n\t\tconst scope = enterScope(this)\n\t\tconst proxy = createProxy(this, base, undefined)\n\t\tproxy[DRAFT_STATE].isManual_ = true\n\t\tleaveScope(scope)\n\t\treturn proxy as any\n\t}\n\n\tfinishDraft<D extends Draft<any>>(\n\t\tdraft: D,\n\t\tpatchListener?: PatchListener\n\t): D extends Draft<infer T> ? T : never {\n\t\tconst state: ImmerState = draft && (draft as any)[DRAFT_STATE]\n\t\tif (__DEV__) {\n\t\t\tif (!state || !state.isManual_) die(9)\n\t\t\tif (state.finalized_) die(10)\n\t\t}\n\t\tconst {scope_: scope} = state\n\t\tusePatchesInScope(scope, patchListener)\n\t\treturn processResult(undefined, scope)\n\t}\n\n\t/**\n\t * Pass true to automatically freeze all copies created by Immer.\n\t *\n\t * By default, auto-freezing is enabled.\n\t */\n\tsetAutoFreeze(value: boolean) {\n\t\tthis.autoFreeze_ = value\n\t}\n\n\t/**\n\t * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n\t * always faster than using ES5 proxies.\n\t *\n\t * By default, feature detection is used, so calling this is rarely necessary.\n\t */\n\tsetUseProxies(value: boolean) {\n\t\tif (value && !hasProxies) {\n\t\t\tdie(20)\n\t\t}\n\t\tthis.useProxies_ = value\n\t}\n\n\tapplyPatches<T extends Objectish>(base: T, patches: Patch[]): T {\n\t\t// If a patch replaces the entire state, take that replacement as base\n\t\t// before applying patches\n\t\tlet i: number\n\t\tfor (i = patches.length - 1; i >= 0; i--) {\n\t\t\tconst patch = patches[i]\n\t\t\tif (patch.path.length === 0 && patch.op === \"replace\") {\n\t\t\t\tbase = patch.value\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t\t// If there was a patch that replaced the entire state, start from the\n\t\t// patch after that.\n\t\tif (i > -1) {\n\t\t\tpatches = patches.slice(i + 1)\n\t\t}\n\n\t\tconst applyPatchesImpl = getPlugin(\"Patches\").applyPatches_\n\t\tif (isDraft(base)) {\n\t\t\t// N.B: never hits if some patch a replacement, patches are never drafts\n\t\t\treturn applyPatchesImpl(base, patches)\n\t\t}\n\t\t// Otherwise, produce a copy of the base state.\n\t\treturn this.produce(base, (draft: Drafted) =>\n\t\t\tapplyPatchesImpl(draft, patches)\n\t\t)\n\t}\n}\n\nexport function createProxy<T extends Objectish>(\n\timmer: Immer,\n\tvalue: T,\n\tparent?: ImmerState\n): Drafted<T, ImmerState> {\n\t// precondition: createProxy should be guarded by isDraftable, so we know we can safely draft\n\tconst draft: Drafted = isMap(value)\n\t\t? getPlugin(\"MapSet\").proxyMap_(value, parent)\n\t\t: isSet(value)\n\t\t? getPlugin(\"MapSet\").proxySet_(value, parent)\n\t\t: immer.useProxies_\n\t\t? createProxyProxy(value, parent)\n\t\t: getPlugin(\"ES5\").createES5Proxy_(value, parent)\n\n\tconst scope = parent ? parent.scope_ : getCurrentScope()\n\tscope.drafts_.push(draft)\n\treturn draft\n}\n", "import {\n\tdie,\n\tisDraft,\n\tshallowCopy,\n\teach,\n\tDRAFT_STATE,\n\tget,\n\tset,\n\tImmerState,\n\tisDraftable,\n\tArchtype,\n\tgetArchtype,\n\tgetPlugin\n} from \"../internal\"\n\n/** Takes a snapshot of the current state of a draft and finalizes it (but without freezing). This is a great utility to print the current state during debugging (no Proxies in the way). The output of current can also be safely leaked outside the producer. */\nexport function current<T>(value: T): T\nexport function current(value: any): any {\n\tif (!isDraft(value)) die(22, value)\n\treturn currentImpl(value)\n}\n\nfunction currentImpl(value: any): any {\n\tif (!isDraftable(value)) return value\n\tconst state: ImmerState | undefined = value[DRAFT_STATE]\n\tlet copy: any\n\tconst archType = getArchtype(value)\n\tif (state) {\n\t\tif (\n\t\t\t!state.modified_ &&\n\t\t\t(state.type_ < 4 || !getPlugin(\"ES5\").hasChanges_(state as any))\n\t\t)\n\t\t\treturn state.base_\n\t\t// Optimization: avoid generating new drafts during copying\n\t\tstate.finalized_ = true\n\t\tcopy = copyHelper(value, archType)\n\t\tstate.finalized_ = false\n\t} else {\n\t\tcopy = copyHelper(value, archType)\n\t}\n\n\teach(copy, (key, childValue) => {\n\t\tif (state && get(state.base_, key) === childValue) return // no need to copy or search in something that didn't change\n\t\tset(copy, key, currentImpl(childValue))\n\t})\n\t// In the future, we might consider freezing here, based on the current settings\n\treturn archType === Archtype.Set ? new Set(copy) : copy\n}\n\nfunction copyHelper(value: any, archType: number): any {\n\t// creates a shallow copy, even if it is a map or set\n\tswitch (archType) {\n\t\tcase Archtype.Map:\n\t\t\treturn new Map(value)\n\t\tcase Archtype.Set:\n\t\t\t// Set will be cloned as array temporarily, so that we can replace individual items\n\t\t\treturn Array.from(value)\n\t}\n\treturn shallowCopy(value)\n}\n", "import {\n\tImmerState,\n\tDrafted,\n\tES5ArrayState,\n\tES5ObjectState,\n\teach,\n\thas,\n\tisDraft,\n\tlatest,\n\tDRAFT_STATE,\n\tis,\n\tloadPlugin,\n\tImmerScope,\n\tProxyType,\n\tgetCurrentScope,\n\tdie,\n\tmarkChanged,\n\tobjectTraps,\n\townKeys,\n\tgetOwnPropertyDescriptors\n} from \"../internal\"\n\ntype ES5State = ES5ArrayState | ES5ObjectState\n\nexport function enableES5() {\n\tfunction willFinalizeES5_(\n\t\tscope: ImmerScope,\n\t\tresult: any,\n\t\tisReplaced: boolean\n\t) {\n\t\tif (!isReplaced) {\n\t\t\tif (scope.patches_) {\n\t\t\t\tmarkChangesRecursively(scope.drafts_![0])\n\t\t\t}\n\t\t\t// This is faster when we don't care about which attributes changed.\n\t\t\tmarkChangesSweep(scope.drafts_)\n\t\t}\n\t\t// When a child draft is returned, look for changes.\n\t\telse if (\n\t\t\tisDraft(result) &&\n\t\t\t(result[DRAFT_STATE] as ES5State).scope_ === scope\n\t\t) {\n\t\t\tmarkChangesSweep(scope.drafts_)\n\t\t}\n\t}\n\n\tfunction createES5Draft(isArray: boolean, base: any) {\n\t\tif (isArray) {\n\t\t\tconst draft = new Array(base.length)\n\t\t\tfor (let i = 0; i < base.length; i++)\n\t\t\t\tObject.defineProperty(draft, \"\" + i, proxyProperty(i, true))\n\t\t\treturn draft\n\t\t} else {\n\t\t\tconst descriptors = getOwnPropertyDescriptors(base)\n\t\t\tdelete descriptors[DRAFT_STATE as any]\n\t\t\tconst keys = ownKeys(descriptors)\n\t\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\t\tconst key: any = keys[i]\n\t\t\t\tdescriptors[key] = proxyProperty(\n\t\t\t\t\tkey,\n\t\t\t\t\tisArray || !!descriptors[key].enumerable\n\t\t\t\t)\n\t\t\t}\n\t\t\treturn Object.create(Object.getPrototypeOf(base), descriptors)\n\t\t}\n\t}\n\n\tfunction createES5Proxy_<T>(\n\t\tbase: T,\n\t\tparent?: ImmerState\n\t): Drafted<T, ES5ObjectState | ES5ArrayState> {\n\t\tconst isArray = Array.isArray(base)\n\t\tconst draft = createES5Draft(isArray, base)\n\n\t\tconst state: ES5ObjectState | ES5ArrayState = {\n\t\t\ttype_: isArray ? ProxyType.ES5Array : (ProxyType.ES5Object as any),\n\t\t\tscope_: parent ? parent.scope_ : getCurrentScope(),\n\t\t\tmodified_: false,\n\t\t\tfinalized_: false,\n\t\t\tassigned_: {},\n\t\t\tparent_: parent,\n\t\t\t// base is the object we are drafting\n\t\t\tbase_: base,\n\t\t\t// draft is the draft object itself, that traps all reads and reads from either the base (if unmodified) or copy (if modified)\n\t\t\tdraft_: draft,\n\t\t\tcopy_: null,\n\t\t\trevoked_: false,\n\t\t\tisManual_: false\n\t\t}\n\n\t\tObject.defineProperty(draft, DRAFT_STATE, {\n\t\t\tvalue: state,\n\t\t\t// enumerable: false <- the default\n\t\t\twritable: true\n\t\t})\n\t\treturn draft\n\t}\n\n\t// property descriptors are recycled to make sure we don't create a get and set closure per property,\n\t// but share them all instead\n\tconst descriptors: {[prop: string]: PropertyDescriptor} = {}\n\n\tfunction proxyProperty(\n\t\tprop: string | number,\n\t\tenumerable: boolean\n\t): PropertyDescriptor {\n\t\tlet desc = descriptors[prop]\n\t\tif (desc) {\n\t\t\tdesc.enumerable = enumerable\n\t\t} else {\n\t\t\tdescriptors[prop] = desc = {\n\t\t\t\tconfigurable: true,\n\t\t\t\tenumerable,\n\t\t\t\tget(this: any) {\n\t\t\t\t\tconst state = this[DRAFT_STATE]\n\t\t\t\t\tif (__DEV__) assertUnrevoked(state)\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\treturn objectTraps.get(state, prop)\n\t\t\t\t},\n\t\t\t\tset(this: any, value) {\n\t\t\t\t\tconst state = this[DRAFT_STATE]\n\t\t\t\t\tif (__DEV__) assertUnrevoked(state)\n\t\t\t\t\t// @ts-ignore\n\t\t\t\t\tobjectTraps.set(state, prop, value)\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn desc\n\t}\n\n\t// This looks expensive, but only proxies are visited, and only objects without known changes are scanned.\n\tfunction markChangesSweep(drafts: Drafted<any, ImmerState>[]) {\n\t\t// The natural order of drafts in the `scope` array is based on when they\n\t\t// were accessed. By processing drafts in reverse natural order, we have a\n\t\t// better chance of processing leaf nodes first. When a leaf node is known to\n\t\t// have changed, we can avoid any traversal of its ancestor nodes.\n\t\tfor (let i = drafts.length - 1; i >= 0; i--) {\n\t\t\tconst state: ES5State = drafts[i][DRAFT_STATE]\n\t\t\tif (!state.modified_) {\n\t\t\t\tswitch (state.type_) {\n\t\t\t\t\tcase ProxyType.ES5Array:\n\t\t\t\t\t\tif (hasArrayChanges(state)) markChanged(state)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tcase ProxyType.ES5Object:\n\t\t\t\t\t\tif (hasObjectChanges(state)) markChanged(state)\n\t\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction markChangesRecursively(object: any) {\n\t\tif (!object || typeof object !== \"object\") return\n\t\tconst state: ES5State | undefined = object[DRAFT_STATE]\n\t\tif (!state) return\n\t\tconst {base_, draft_, assigned_, type_} = state\n\t\tif (type_ === ProxyType.ES5Object) {\n\t\t\t// Look for added keys.\n\t\t\t// probably there is a faster way to detect changes, as sweep + recurse seems to do some\n\t\t\t// unnecessary work.\n\t\t\t// also: probably we can store the information we detect here, to speed up tree finalization!\n\t\t\teach(draft_, key => {\n\t\t\t\tif ((key as any) === DRAFT_STATE) return\n\t\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\t\tif ((base_ as any)[key] === undefined && !has(base_, key)) {\n\t\t\t\t\tassigned_[key] = true\n\t\t\t\t\tmarkChanged(state)\n\t\t\t\t} else if (!assigned_[key]) {\n\t\t\t\t\t// Only untouched properties trigger recursion.\n\t\t\t\t\tmarkChangesRecursively(draft_[key])\n\t\t\t\t}\n\t\t\t})\n\t\t\t// Look for removed keys.\n\t\t\teach(base_, key => {\n\t\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\t\tif (draft_[key] === undefined && !has(draft_, key)) {\n\t\t\t\t\tassigned_[key] = false\n\t\t\t\t\tmarkChanged(state)\n\t\t\t\t}\n\t\t\t})\n\t\t} else if (type_ === ProxyType.ES5Array) {\n\t\t\tif (hasArrayChanges(state as ES5ArrayState)) {\n\t\t\t\tmarkChanged(state)\n\t\t\t\tassigned_.length = true\n\t\t\t}\n\n\t\t\tif (draft_.length < base_.length) {\n\t\t\t\tfor (let i = draft_.length; i < base_.length; i++) assigned_[i] = false\n\t\t\t} else {\n\t\t\t\tfor (let i = base_.length; i < draft_.length; i++) assigned_[i] = true\n\t\t\t}\n\n\t\t\t// Minimum count is enough, the other parts has been processed.\n\t\t\tconst min = Math.min(draft_.length, base_.length)\n\n\t\t\tfor (let i = 0; i < min; i++) {\n\t\t\t\t// Only untouched indices trigger recursion.\n\t\t\t\tif (!draft_.hasOwnProperty(i)) {\n\t\t\t\t\tassigned_[i] = true\n\t\t\t\t}\n\t\t\t\tif (assigned_[i] === undefined) markChangesRecursively(draft_[i])\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction hasObjectChanges(state: ES5ObjectState) {\n\t\tconst {base_, draft_} = state\n\n\t\t// Search for added keys and changed keys. Start at the back, because\n\t\t// non-numeric keys are ordered by time of definition on the object.\n\t\tconst keys = ownKeys(draft_)\n\t\tfor (let i = keys.length - 1; i >= 0; i--) {\n\t\t\tconst key: any = keys[i]\n\t\t\tif (key === DRAFT_STATE) continue\n\t\t\tconst baseValue = base_[key]\n\t\t\t// The `undefined` check is a fast path for pre-existing keys.\n\t\t\tif (baseValue === undefined && !has(base_, key)) {\n\t\t\t\treturn true\n\t\t\t}\n\t\t\t// Once a base key is deleted, future changes go undetected, because its\n\t\t\t// descriptor is erased. This branch detects any missed changes.\n\t\t\telse {\n\t\t\t\tconst value = draft_[key]\n\t\t\t\tconst state: ImmerState = value && value[DRAFT_STATE]\n\t\t\t\tif (state ? state.base_ !== baseValue : !is(value, baseValue)) {\n\t\t\t\t\treturn true\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// At this point, no keys were added or changed.\n\t\t// Compare key count to determine if keys were deleted.\n\t\tconst baseIsDraft = !!base_[DRAFT_STATE as any]\n\t\treturn keys.length !== ownKeys(base_).length + (baseIsDraft ? 0 : 1) // + 1 to correct for DRAFT_STATE\n\t}\n\n\tfunction hasArrayChanges(state: ES5ArrayState) {\n\t\tconst {draft_} = state\n\t\tif (draft_.length !== state.base_.length) return true\n\t\t// See #116\n\t\t// If we first shorten the length, our array interceptors will be removed.\n\t\t// If after that new items are added, result in the same original length,\n\t\t// those last items will have no intercepting property.\n\t\t// So if there is no own descriptor on the last position, we know that items were removed and added\n\t\t// N.B.: splice, unshift, etc only shift values around, but not prop descriptors, so we only have to check\n\t\t// the last one\n\t\t// last descriptor can be not a trap, if the array was extended\n\t\tconst descriptor = Object.getOwnPropertyDescriptor(\n\t\t\tdraft_,\n\t\t\tdraft_.length - 1\n\t\t)\n\t\t// descriptor can be null, but only for newly created sparse arrays, eg. new Array(10)\n\t\tif (descriptor && !descriptor.get) return true\n\t\t// if we miss a property, it has been deleted, so array probobaly changed\n\t\tfor (let i = 0; i < draft_.length; i++) {\n\t\t\tif (!draft_.hasOwnProperty(i)) return true\n\t\t}\n\t\t// For all other cases, we don't have to compare, as they would have been picked up by the index setters\n\t\treturn false\n\t}\n\n\tfunction hasChanges_(state: ES5State) {\n\t\treturn state.type_ === ProxyType.ES5Object\n\t\t\t? hasObjectChanges(state)\n\t\t\t: hasArrayChanges(state)\n\t}\n\n\tfunction assertUnrevoked(state: any /*ES5State | MapState | SetState*/) {\n\t\tif (state.revoked_) die(3, JSON.stringify(latest(state)))\n\t}\n\n\tloadPlugin(\"ES5\", {\n\t\tcreateES5Proxy_,\n\t\twillFinalizeES5_,\n\t\thasChanges_\n\t})\n}\n", "import {immerable} from \"../immer\"\nimport {\n\tImmerState,\n\tPatch,\n\tSetState,\n\tES5ArrayState,\n\tProxyArrayState,\n\tMapState,\n\tES5ObjectState,\n\tProxyObjectState,\n\tPatchPath,\n\tget,\n\teach,\n\thas,\n\tgetArchtype,\n\tisSet,\n\tisMap,\n\tloadPlugin,\n\tProxyType,\n\tArchtype,\n\tdie,\n\tisDraft,\n\tisDraftable,\n\tNOTHING\n} from \"../internal\"\n\nexport function enablePatches() {\n\tconst REPLACE = \"replace\"\n\tconst ADD = \"add\"\n\tconst REMOVE = \"remove\"\n\n\tfunction generatePatches_(\n\t\tstate: ImmerState,\n\t\tbasePath: PatchPath,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t): void {\n\t\tswitch (state.type_) {\n\t\t\tcase ProxyType.ProxyObject:\n\t\t\tcase ProxyType.ES5Object:\n\t\t\tcase ProxyType.Map:\n\t\t\t\treturn generatePatchesFromAssigned(\n\t\t\t\t\tstate,\n\t\t\t\t\tbasePath,\n\t\t\t\t\tpatches,\n\t\t\t\t\tinversePatches\n\t\t\t\t)\n\t\t\tcase ProxyType.ES5Array:\n\t\t\tcase ProxyType.ProxyArray:\n\t\t\t\treturn generateArrayPatches(state, basePath, patches, inversePatches)\n\t\t\tcase ProxyType.Set:\n\t\t\t\treturn generateSetPatches(\n\t\t\t\t\t(state as any) as SetState,\n\t\t\t\t\tbasePath,\n\t\t\t\t\tpatches,\n\t\t\t\t\tinversePatches\n\t\t\t\t)\n\t\t}\n\t}\n\n\tfunction generateArrayPatches(\n\t\tstate: ES5ArrayState | ProxyArrayState,\n\t\tbasePath: PatchPath,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t) {\n\t\tlet {base_, assigned_} = state\n\t\tlet copy_ = state.copy_!\n\n\t\t// Reduce complexity by ensuring `base` is never longer.\n\t\tif (copy_.length < base_.length) {\n\t\t\t// @ts-ignore\n\t\t\t;[base_, copy_] = [copy_, base_]\n\t\t\t;[patches, inversePatches] = [inversePatches, patches]\n\t\t}\n\n\t\t// Process replaced indices.\n\t\tfor (let i = 0; i < base_.length; i++) {\n\t\t\tif (assigned_[i] && copy_[i] !== base_[i]) {\n\t\t\t\tconst path = basePath.concat([i])\n\t\t\t\tpatches.push({\n\t\t\t\t\top: REPLACE,\n\t\t\t\t\tpath,\n\t\t\t\t\t// Need to maybe clone it, as it can in fact be the original value\n\t\t\t\t\t// due to the base/copy inversion at the start of this function\n\t\t\t\t\tvalue: clonePatchValueIfNeeded(copy_[i])\n\t\t\t\t})\n\t\t\t\tinversePatches.push({\n\t\t\t\t\top: REPLACE,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue: clonePatchValueIfNeeded(base_[i])\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\t// Process added indices.\n\t\tfor (let i = base_.length; i < copy_.length; i++) {\n\t\t\tconst path = basePath.concat([i])\n\t\t\tpatches.push({\n\t\t\t\top: ADD,\n\t\t\t\tpath,\n\t\t\t\t// Need to maybe clone it, as it can in fact be the original value\n\t\t\t\t// due to the base/copy inversion at the start of this function\n\t\t\t\tvalue: clonePatchValueIfNeeded(copy_[i])\n\t\t\t})\n\t\t}\n\t\tif (base_.length < copy_.length) {\n\t\t\tinversePatches.push({\n\t\t\t\top: REPLACE,\n\t\t\t\tpath: basePath.concat([\"length\"]),\n\t\t\t\tvalue: base_.length\n\t\t\t})\n\t\t}\n\t}\n\n\t// This is used for both Map objects and normal objects.\n\tfunction generatePatchesFromAssigned(\n\t\tstate: MapState | ES5ObjectState | ProxyObjectState,\n\t\tbasePath: PatchPath,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t) {\n\t\tconst {base_, copy_} = state\n\t\teach(state.assigned_!, (key, assignedValue) => {\n\t\t\tconst origValue = get(base_, key)\n\t\t\tconst value = get(copy_!, key)\n\t\t\tconst op = !assignedValue ? REMOVE : has(base_, key) ? REPLACE : ADD\n\t\t\tif (origValue === value && op === REPLACE) return\n\t\t\tconst path = basePath.concat(key as any)\n\t\t\tpatches.push(op === REMOVE ? {op, path} : {op, path, value})\n\t\t\tinversePatches.push(\n\t\t\t\top === ADD\n\t\t\t\t\t? {op: REMOVE, path}\n\t\t\t\t\t: op === REMOVE\n\t\t\t\t\t? {op: ADD, path, value: clonePatchValueIfNeeded(origValue)}\n\t\t\t\t\t: {op: REPLACE, path, value: clonePatchValueIfNeeded(origValue)}\n\t\t\t)\n\t\t})\n\t}\n\n\tfunction generateSetPatches(\n\t\tstate: SetState,\n\t\tbasePath: PatchPath,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t) {\n\t\tlet {base_, copy_} = state\n\n\t\tlet i = 0\n\t\tbase_.forEach((value: any) => {\n\t\t\tif (!copy_!.has(value)) {\n\t\t\t\tconst path = basePath.concat([i])\n\t\t\t\tpatches.push({\n\t\t\t\t\top: REMOVE,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue\n\t\t\t\t})\n\t\t\t\tinversePatches.unshift({\n\t\t\t\t\top: ADD,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue\n\t\t\t\t})\n\t\t\t}\n\t\t\ti++\n\t\t})\n\t\ti = 0\n\t\tcopy_!.forEach((value: any) => {\n\t\t\tif (!base_.has(value)) {\n\t\t\t\tconst path = basePath.concat([i])\n\t\t\t\tpatches.push({\n\t\t\t\t\top: ADD,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue\n\t\t\t\t})\n\t\t\t\tinversePatches.unshift({\n\t\t\t\t\top: REMOVE,\n\t\t\t\t\tpath,\n\t\t\t\t\tvalue\n\t\t\t\t})\n\t\t\t}\n\t\t\ti++\n\t\t})\n\t}\n\n\tfunction generateReplacementPatches_(\n\t\tbaseValue: any,\n\t\treplacement: any,\n\t\tpatches: Patch[],\n\t\tinversePatches: Patch[]\n\t): void {\n\t\tpatches.push({\n\t\t\top: REPLACE,\n\t\t\tpath: [],\n\t\t\tvalue: replacement === NOTHING ? undefined : replacement\n\t\t})\n\t\tinversePatches.push({\n\t\t\top: REPLACE,\n\t\t\tpath: [],\n\t\t\tvalue: baseValue\n\t\t})\n\t}\n\n\tfunction applyPatches_<T>(draft: T, patches: Patch[]): T {\n\t\tpatches.forEach(patch => {\n\t\t\tconst {path, op} = patch\n\n\t\t\tlet base: any = draft\n\t\t\tfor (let i = 0; i < path.length - 1; i++) {\n\t\t\t\tconst parentType = getArchtype(base)\n\t\t\t\tconst p = \"\" + path[i]\n\t\t\t\t// See #738, avoid prototype pollution\n\t\t\t\tif (\n\t\t\t\t\t(parentType === Archtype.Object || parentType === Archtype.Array) &&\n\t\t\t\t\t(p === \"__proto__\" || p === \"constructor\")\n\t\t\t\t)\n\t\t\t\t\tdie(24)\n\t\t\t\tif (typeof base === \"function\" && p === \"prototype\") die(24)\n\t\t\t\tbase = get(base, p)\n\t\t\t\tif (typeof base !== \"object\") die(15, path.join(\"/\"))\n\t\t\t}\n\n\t\t\tconst type = getArchtype(base)\n\t\t\tconst value = deepClonePatchValue(patch.value) // used to clone patch to ensure original patch is not modified, see #411\n\t\t\tconst key = path[path.length - 1]\n\t\t\tswitch (op) {\n\t\t\t\tcase REPLACE:\n\t\t\t\t\tswitch (type) {\n\t\t\t\t\t\tcase Archtype.Map:\n\t\t\t\t\t\t\treturn base.set(key, value)\n\t\t\t\t\t\t/* istanbul ignore next */\n\t\t\t\t\t\tcase Archtype.Set:\n\t\t\t\t\t\t\tdie(16)\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t// if value is an object, then it's assigned by reference\n\t\t\t\t\t\t\t// in the following add or remove ops, the value field inside the patch will also be modifyed\n\t\t\t\t\t\t\t// so we use value from the cloned patch\n\t\t\t\t\t\t\t// @ts-ignore\n\t\t\t\t\t\t\treturn (base[key] = value)\n\t\t\t\t\t}\n\t\t\t\tcase ADD:\n\t\t\t\t\tswitch (type) {\n\t\t\t\t\t\tcase Archtype.Array:\n\t\t\t\t\t\t\treturn key === \"-\"\n\t\t\t\t\t\t\t\t? base.push(value)\n\t\t\t\t\t\t\t\t: base.splice(key as any, 0, value)\n\t\t\t\t\t\tcase Archtype.Map:\n\t\t\t\t\t\t\treturn base.set(key, value)\n\t\t\t\t\t\tcase Archtype.Set:\n\t\t\t\t\t\t\treturn base.add(value)\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn (base[key] = value)\n\t\t\t\t\t}\n\t\t\t\tcase REMOVE:\n\t\t\t\t\tswitch (type) {\n\t\t\t\t\t\tcase Archtype.Array:\n\t\t\t\t\t\t\treturn base.splice(key as any, 1)\n\t\t\t\t\t\tcase Archtype.Map:\n\t\t\t\t\t\t\treturn base.delete(key)\n\t\t\t\t\t\tcase Archtype.Set:\n\t\t\t\t\t\t\treturn base.delete(patch.value)\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\treturn delete base[key]\n\t\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tdie(17, op)\n\t\t\t}\n\t\t})\n\n\t\treturn draft\n\t}\n\n\t// optimize: this is quite a performance hit, can we detect intelligently when it is needed?\n\t// E.g. auto-draft when new objects from outside are assigned and modified?\n\t// (See failing test when deepClone just returns obj)\n\tfunction deepClonePatchValue<T>(obj: T): T\n\tfunction deepClonePatchValue(obj: any) {\n\t\tif (!isDraftable(obj)) return obj\n\t\tif (Array.isArray(obj)) return obj.map(deepClonePatchValue)\n\t\tif (isMap(obj))\n\t\t\treturn new Map(\n\t\t\t\tArray.from(obj.entries()).map(([k, v]) => [k, deepClonePatchValue(v)])\n\t\t\t)\n\t\tif (isSet(obj)) return new Set(Array.from(obj).map(deepClonePatchValue))\n\t\tconst cloned = Object.create(Object.getPrototypeOf(obj))\n\t\tfor (const key in obj) cloned[key] = deepClonePatchValue(obj[key])\n\t\tif (has(obj, immerable)) cloned[immerable] = obj[immerable]\n\t\treturn cloned\n\t}\n\n\tfunction clonePatchValueIfNeeded<T>(obj: T): T {\n\t\tif (isDraft(obj)) {\n\t\t\treturn deepClonePatchValue(obj)\n\t\t} else return obj\n\t}\n\n\tloadPlugin(\"Patches\", {\n\t\tapplyPatches_,\n\t\tgeneratePatches_,\n\t\tgenerateReplacementPatches_\n\t})\n}\n", "// types only!\nimport {\n\tImmerState,\n\tAnyMap,\n\tAnySet,\n\tMapState,\n\tSetState,\n\tDRAFT_STATE,\n\tgetCurrentScope,\n\tlatest,\n\titeratorSymbol,\n\tisDraftable,\n\tcreateProxy,\n\tloadPlugin,\n\tmarkChanged,\n\tProxyType,\n\tdie,\n\teach\n} from \"../internal\"\n\nexport function enableMapSet() {\n\t/* istanbul ignore next */\n\tvar extendStatics = function(d: any, b: any): any {\n\t\textendStatics =\n\t\t\tObject.setPrototypeOf ||\n\t\t\t({__proto__: []} instanceof Array &&\n\t\t\t\tfunction(d, b) {\n\t\t\t\t\td.__proto__ = b\n\t\t\t\t}) ||\n\t\t\tfunction(d, b) {\n\t\t\t\tfor (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]\n\t\t\t}\n\t\treturn extendStatics(d, b)\n\t}\n\n\t// Ugly hack to resolve #502 and inherit built in Map / Set\n\tfunction __extends(d: any, b: any): any {\n\t\textendStatics(d, b)\n\t\tfunction __(this: any): any {\n\t\t\tthis.constructor = d\n\t\t}\n\t\td.prototype =\n\t\t\t// @ts-ignore\n\t\t\t((__.prototype = b.prototype), new __())\n\t}\n\n\tconst DraftMap = (function(_super) {\n\t\t__extends(DraftMap, _super)\n\t\t// Create class manually, cause #502\n\t\tfunction DraftMap(this: any, target: AnyMap, parent?: ImmerState): any {\n\t\t\tthis[DRAFT_STATE] = {\n\t\t\t\ttype_: ProxyType.Map,\n\t\t\t\tparent_: parent,\n\t\t\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t\t\tmodified_: false,\n\t\t\t\tfinalized_: false,\n\t\t\t\tcopy_: undefined,\n\t\t\t\tassigned_: undefined,\n\t\t\t\tbase_: target,\n\t\t\t\tdraft_: this as any,\n\t\t\t\tisManual_: false,\n\t\t\t\trevoked_: false\n\t\t\t} as MapState\n\t\t\treturn this\n\t\t}\n\t\tconst p = DraftMap.prototype\n\n\t\tObject.defineProperty(p, \"size\", {\n\t\t\tget: function() {\n\t\t\t\treturn latest(this[DRAFT_STATE]).size\n\t\t\t}\n\t\t\t// enumerable: false,\n\t\t\t// configurable: true\n\t\t})\n\n\t\tp.has = function(key: any): boolean {\n\t\t\treturn latest(this[DRAFT_STATE]).has(key)\n\t\t}\n\n\t\tp.set = function(key: any, value: any) {\n\t\t\tconst state: MapState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tif (!latest(state).has(key) || latest(state).get(key) !== value) {\n\t\t\t\tprepareMapCopy(state)\n\t\t\t\tmarkChanged(state)\n\t\t\t\tstate.assigned_!.set(key, true)\n\t\t\t\tstate.copy_!.set(key, value)\n\t\t\t\tstate.assigned_!.set(key, true)\n\t\t\t}\n\t\t\treturn this\n\t\t}\n\n\t\tp.delete = function(key: any): boolean {\n\t\t\tif (!this.has(key)) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tconst state: MapState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tprepareMapCopy(state)\n\t\t\tmarkChanged(state)\n\t\t\tif (state.base_.has(key)) {\n\t\t\t\tstate.assigned_!.set(key, false)\n\t\t\t} else {\n\t\t\t\tstate.assigned_!.delete(key)\n\t\t\t}\n\t\t\tstate.copy_!.delete(key)\n\t\t\treturn true\n\t\t}\n\n\t\tp.clear = function() {\n\t\t\tconst state: MapState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tif (latest(state).size) {\n\t\t\t\tprepareMapCopy(state)\n\t\t\t\tmarkChanged(state)\n\t\t\t\tstate.assigned_ = new Map()\n\t\t\t\teach(state.base_, key => {\n\t\t\t\t\tstate.assigned_!.set(key, false)\n\t\t\t\t})\n\t\t\t\tstate.copy_!.clear()\n\t\t\t}\n\t\t}\n\n\t\tp.forEach = function(\n\t\t\tcb: (value: any, key: any, self: any) => void,\n\t\t\tthisArg?: any\n\t\t) {\n\t\t\tconst state: MapState = this[DRAFT_STATE]\n\t\t\tlatest(state).forEach((_value: any, key: any, _map: any) => {\n\t\t\t\tcb.call(thisArg, this.get(key), key, this)\n\t\t\t})\n\t\t}\n\n\t\tp.get = function(key: any): any {\n\t\t\tconst state: MapState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tconst value = latest(state).get(key)\n\t\t\tif (state.finalized_ || !isDraftable(value)) {\n\t\t\t\treturn value\n\t\t\t}\n\t\t\tif (value !== state.base_.get(key)) {\n\t\t\t\treturn value // either already drafted or reassigned\n\t\t\t}\n\t\t\t// despite what it looks, this creates a draft only once, see above condition\n\t\t\tconst draft = createProxy(state.scope_.immer_, value, state)\n\t\t\tprepareMapCopy(state)\n\t\t\tstate.copy_!.set(key, draft)\n\t\t\treturn draft\n\t\t}\n\n\t\tp.keys = function(): IterableIterator<any> {\n\t\t\treturn latest(this[DRAFT_STATE]).keys()\n\t\t}\n\n\t\tp.values = function(): IterableIterator<any> {\n\t\t\tconst iterator = this.keys()\n\t\t\treturn {\n\t\t\t\t[iteratorSymbol]: () => this.values(),\n\t\t\t\tnext: () => {\n\t\t\t\t\tconst r = iterator.next()\n\t\t\t\t\t/* istanbul ignore next */\n\t\t\t\t\tif (r.done) return r\n\t\t\t\t\tconst value = this.get(r.value)\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdone: false,\n\t\t\t\t\t\tvalue\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} as any\n\t\t}\n\n\t\tp.entries = function(): IterableIterator<[any, any]> {\n\t\t\tconst iterator = this.keys()\n\t\t\treturn {\n\t\t\t\t[iteratorSymbol]: () => this.entries(),\n\t\t\t\tnext: () => {\n\t\t\t\t\tconst r = iterator.next()\n\t\t\t\t\t/* istanbul ignore next */\n\t\t\t\t\tif (r.done) return r\n\t\t\t\t\tconst value = this.get(r.value)\n\t\t\t\t\treturn {\n\t\t\t\t\t\tdone: false,\n\t\t\t\t\t\tvalue: [r.value, value]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} as any\n\t\t}\n\n\t\tp[iteratorSymbol] = function() {\n\t\t\treturn this.entries()\n\t\t}\n\n\t\treturn DraftMap\n\t})(Map)\n\n\tfunction proxyMap_<T extends AnyMap>(target: T, parent?: ImmerState): T {\n\t\t// @ts-ignore\n\t\treturn new DraftMap(target, parent)\n\t}\n\n\tfunction prepareMapCopy(state: MapState) {\n\t\tif (!state.copy_) {\n\t\t\tstate.assigned_ = new Map()\n\t\t\tstate.copy_ = new Map(state.base_)\n\t\t}\n\t}\n\n\tconst DraftSet = (function(_super) {\n\t\t__extends(DraftSet, _super)\n\t\t// Create class manually, cause #502\n\t\tfunction DraftSet(this: any, target: AnySet, parent?: ImmerState) {\n\t\t\tthis[DRAFT_STATE] = {\n\t\t\t\ttype_: ProxyType.Set,\n\t\t\t\tparent_: parent,\n\t\t\t\tscope_: parent ? parent.scope_ : getCurrentScope()!,\n\t\t\t\tmodified_: false,\n\t\t\t\tfinalized_: false,\n\t\t\t\tcopy_: undefined,\n\t\t\t\tbase_: target,\n\t\t\t\tdraft_: this,\n\t\t\t\tdrafts_: new Map(),\n\t\t\t\trevoked_: false,\n\t\t\t\tisManual_: false\n\t\t\t} as SetState\n\t\t\treturn this\n\t\t}\n\t\tconst p = DraftSet.prototype\n\n\t\tObject.defineProperty(p, \"size\", {\n\t\t\tget: function() {\n\t\t\t\treturn latest(this[DRAFT_STATE]).size\n\t\t\t}\n\t\t\t// enumerable: true,\n\t\t})\n\n\t\tp.has = function(value: any): boolean {\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\t// bit of trickery here, to be able to recognize both the value, and the draft of its value\n\t\t\tif (!state.copy_) {\n\t\t\t\treturn state.base_.has(value)\n\t\t\t}\n\t\t\tif (state.copy_.has(value)) return true\n\t\t\tif (state.drafts_.has(value) && state.copy_.has(state.drafts_.get(value)))\n\t\t\t\treturn true\n\t\t\treturn false\n\t\t}\n\n\t\tp.add = function(value: any): any {\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tif (!this.has(value)) {\n\t\t\t\tprepareSetCopy(state)\n\t\t\t\tmarkChanged(state)\n\t\t\t\tstate.copy_!.add(value)\n\t\t\t}\n\t\t\treturn this\n\t\t}\n\n\t\tp.delete = function(value: any): any {\n\t\t\tif (!this.has(value)) {\n\t\t\t\treturn false\n\t\t\t}\n\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tprepareSetCopy(state)\n\t\t\tmarkChanged(state)\n\t\t\treturn (\n\t\t\t\tstate.copy_!.delete(value) ||\n\t\t\t\t(state.drafts_.has(value)\n\t\t\t\t\t? state.copy_!.delete(state.drafts_.get(value))\n\t\t\t\t\t: /* istanbul ignore next */ false)\n\t\t\t)\n\t\t}\n\n\t\tp.clear = function() {\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tif (latest(state).size) {\n\t\t\t\tprepareSetCopy(state)\n\t\t\t\tmarkChanged(state)\n\t\t\t\tstate.copy_!.clear()\n\t\t\t}\n\t\t}\n\n\t\tp.values = function(): IterableIterator<any> {\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tprepareSetCopy(state)\n\t\t\treturn state.copy_!.values()\n\t\t}\n\n\t\tp.entries = function entries(): IterableIterator<[any, any]> {\n\t\t\tconst state: SetState = this[DRAFT_STATE]\n\t\t\tassertUnrevoked(state)\n\t\t\tprepareSetCopy(state)\n\t\t\treturn state.copy_!.entries()\n\t\t}\n\n\t\tp.keys = function(): IterableIterator<any> {\n\t\t\treturn this.values()\n\t\t}\n\n\t\tp[iteratorSymbol] = function() {\n\t\t\treturn this.values()\n\t\t}\n\n\t\tp.forEach = function forEach(cb: any, thisArg?: any) {\n\t\t\tconst iterator = this.values()\n\t\t\tlet result = iterator.next()\n\t\t\twhile (!result.done) {\n\t\t\t\tcb.call(thisArg, result.value, result.value, this)\n\t\t\t\tresult = iterator.next()\n\t\t\t}\n\t\t}\n\n\t\treturn DraftSet\n\t})(Set)\n\n\tfunction proxySet_<T extends AnySet>(target: T, parent?: ImmerState): T {\n\t\t// @ts-ignore\n\t\treturn new DraftSet(target, parent)\n\t}\n\n\tfunction prepareSetCopy(state: SetState) {\n\t\tif (!state.copy_) {\n\t\t\t// create drafts for all entries to preserve insertion order\n\t\t\tstate.copy_ = new Set()\n\t\t\tstate.base_.forEach(value => {\n\t\t\t\tif (isDraftable(value)) {\n\t\t\t\t\tconst draft = createProxy(state.scope_.immer_, value, state)\n\t\t\t\t\tstate.drafts_.set(value, draft)\n\t\t\t\t\tstate.copy_!.add(draft)\n\t\t\t\t} else {\n\t\t\t\t\tstate.copy_!.add(value)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t}\n\n\tfunction assertUnrevoked(state: any /*ES5State | MapState | SetState*/) {\n\t\tif (state.revoked_) die(3, JSON.stringify(latest(state)))\n\t}\n\n\tloadPlugin(\"MapSet\", {proxyMap_, proxySet_})\n}\n", "import {enableES5} from \"./es5\"\nimport {enableMapSet} from \"./mapset\"\nimport {enablePatches} from \"./patches\"\n\nexport function enableAllPlugins() {\n\tenableES5()\n\tenableMapSet()\n\tenablePatches()\n}\n", "import {\n\tIProduce,\n\tIProduceWithPatches,\n\tImmer,\n\tDraft,\n\tImmutable\n} from \"./internal\"\n\nexport {\n\tDraft,\n\tImmutable,\n\tPatch,\n\tPatchListener,\n\toriginal,\n\tcurrent,\n\tisDraft,\n\tisDraftable,\n\tNOTHING as nothing,\n\tDRAFTABLE as immerable,\n\tfreeze\n} from \"./internal\"\n\nconst immer = new Immer()\n\n/**\n * The `produce` function takes a value and a \"recipe function\" (whose\n * return value often depends on the base state). The recipe function is\n * free to mutate its first argument however it wants. All mutations are\n * only ever applied to a __copy__ of the base state.\n *\n * Pass only a function to create a \"curried producer\" which relieves you\n * from passing the recipe function every time.\n *\n * Only plain objects and arrays are made mutable. All other objects are\n * considered uncopyable.\n *\n * Note: This function is __bound__ to its `Immer` instance.\n *\n * @param {any} base - the initial state\n * @param {Function} producer - function that receives a proxy of the base state as first argument and which can be freely modified\n * @param {Function} patchListener - optional function that will be called with all the patches produced here\n * @returns {any} a new state, or the initial state if nothing was modified\n */\nexport const produce: IProduce = immer.produce\nexport default produce\n\n/**\n * Like `produce`, but `produceWithPatches` always returns a tuple\n * [nextState, patches, inversePatches] (instead of just the next state)\n */\nexport const produceWithPatches: IProduceWithPatches = immer.produceWithPatches.bind(\n\timmer\n)\n\n/**\n * Pass true to automatically freeze all copies created by Immer.\n *\n * Always freeze by default, even in production mode\n */\nexport const setAutoFreeze = immer.setAutoFreeze.bind(immer)\n\n/**\n * Pass true to use the ES2015 `Proxy` class when creating drafts, which is\n * always faster than using ES5 proxies.\n *\n * By default, feature detection is used, so calling this is rarely necessary.\n */\nexport const setUseProxies = immer.setUseProxies.bind(immer)\n\n/**\n * Apply an array of Immer patches to the first argument.\n *\n * This function is a producer, which means copy-on-write is in effect.\n */\nexport const applyPatches = immer.applyPatches.bind(immer)\n\n/**\n * Create an Immer draft from the given base state, which may be a draft itself.\n * The draft can be modified until you finalize it with the `finishDraft` function.\n */\nexport const createDraft = immer.createDraft.bind(immer)\n\n/**\n * Finalize an Immer draft from a `createDraft` call, returning the base state\n * (if no changes were made) or a modified copy. The draft must *not* be\n * mutated afterwards.\n *\n * Pass a function as the 2nd argument to generate Immer patches based on the\n * changes that were made.\n */\nexport const finishDraft = immer.finishDraft.bind(immer)\n\n/**\n * This function is actually a no-op, but can be used to cast an immutable type\n * to an draft type and make TypeScript happy\n *\n * @param value\n */\nexport function castDraft<T>(value: T): Draft<T> {\n\treturn value as any\n}\n\n/**\n * This function is actually a no-op, but can be used to cast a mutable type\n * to an immutable type and make TypeScript happy\n * @param value\n */\nexport function castImmutable<T>(value: T): Immutable<T> {\n\treturn value as any\n}\n\nexport {Immer}\n\nexport {enableES5} from \"./plugins/es5\"\nexport {enablePatches} from \"./plugins/patches\"\nexport {enableMapSet} from \"./plugins/mapset\"\nexport {enableAllPlugins} from \"./plugins/all\"\n", "\n'use strict'\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./immer.cjs.production.min.js')\n} else {\n  module.exports = require('./immer.cjs.development.js')\n}\n", "function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _toPrimitive(input, hint) {\n  if (_typeof(input) !== \"object\" || input === null) return input;\n  var prim = input[Symbol.toPrimitive];\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if (_typeof(res) !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (hint === \"string\" ? String : Number)(input);\n}\nmodule.exports = _toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction _toPropertyKey(arg) {\n  var key = toPrimitive(arg, \"string\");\n  return _typeof(key) === \"symbol\" ? key : String(key);\n}\nmodule.exports = _toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(obj, key, value) {\n  key = toPropertyKey(key);\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  return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "var defineProperty = require(\"./defineProperty.js\");\nfunction ownKeys(object, enumerableOnly) {\n  var keys = Object.keys(object);\n  if (Object.getOwnPropertySymbols) {\n    var symbols = Object.getOwnPropertySymbols(object);\n    enumerableOnly && (symbols = symbols.filter(function (sym) {\n      return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n    })), keys.push.apply(keys, symbols);\n  }\n  return keys;\n}\nfunction _objectSpread2(target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = null != arguments[i] ? arguments[i] : {};\n    i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n      defineProperty(target, key, source[key]);\n    }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n      Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n    });\n  }\n  return target;\n}\nmodule.exports = _objectSpread2, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar _objectSpread = require('@babel/runtime/helpers/objectSpread2');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar _objectSpread__default = /*#__PURE__*/_interopDefaultLegacy(_objectSpread);\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 \u201Cwhat changed\u201D. 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__default['default'](_objectSpread__default['default']({}, store), {}, {\n        dispatch: _dispatch\n      });\n    };\n  };\n}\n\n/*\n * This is a dummy function to check if the function name has been altered by minification.\n * If the function has been minified and NODE_ENV !== 'production', warn the user.\n */\n\nfunction isCrushed() {}\n\nif (process.env.NODE_ENV !== 'production' && typeof isCrushed.name === 'string' && isCrushed.name !== 'isCrushed') {\n  warning('You are currently using minified code outside of NODE_ENV === \"production\". ' + 'This means that you are running a slower development build of Redux. ' + 'You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify ' + 'or setting mode to production in webpack (https://webpack.js.org/concepts/mode/) ' + 'to ensure you have the correct code for your production build.');\n}\n\nexports.__DO_NOT_USE__ActionTypes = ActionTypes;\nexports.applyMiddleware = applyMiddleware;\nexports.bindActionCreators = bindActionCreators;\nexports.combineReducers = combineReducers;\nexports.compose = compose;\nexports.createStore = createStore;\nexports.legacy_createStore = legacy_createStore;\n", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.createCacheKeyComparator = createCacheKeyComparator;\nexports.defaultEqualityCheck = void 0;\nexports.defaultMemoize = defaultMemoize;\n// Cache implementation based on Erik Rasmussen's `lru-memoize`:\n// https://github.com/erikras/lru-memoize\nvar NOT_FOUND = 'NOT_FOUND';\n\nfunction createSingletonCache(equals) {\n  var entry;\n  return {\n    get: function get(key) {\n      if (entry && equals(entry.key, key)) {\n        return entry.value;\n      }\n\n      return NOT_FOUND;\n    },\n    put: function put(key, value) {\n      entry = {\n        key: key,\n        value: value\n      };\n    },\n    getEntries: function getEntries() {\n      return entry ? [entry] : [];\n    },\n    clear: function clear() {\n      entry = undefined;\n    }\n  };\n}\n\nfunction createLruCache(maxSize, equals) {\n  var entries = [];\n\n  function get(key) {\n    var cacheIndex = entries.findIndex(function (entry) {\n      return equals(key, entry.key);\n    }); // We found a cached entry\n\n    if (cacheIndex > -1) {\n      var entry = entries[cacheIndex]; // Cached entry not at top of cache, move it to the top\n\n      if (cacheIndex > 0) {\n        entries.splice(cacheIndex, 1);\n        entries.unshift(entry);\n      }\n\n      return entry.value;\n    } // No entry found in cache, return sentinel\n\n\n    return NOT_FOUND;\n  }\n\n  function put(key, value) {\n    if (get(key) === NOT_FOUND) {\n      // TODO Is unshift slow?\n      entries.unshift({\n        key: key,\n        value: value\n      });\n\n      if (entries.length > maxSize) {\n        entries.pop();\n      }\n    }\n  }\n\n  function getEntries() {\n    return entries;\n  }\n\n  function clear() {\n    entries = [];\n  }\n\n  return {\n    get: get,\n    put: put,\n    getEntries: getEntries,\n    clear: clear\n  };\n}\n\nvar defaultEqualityCheck = function defaultEqualityCheck(a, b) {\n  return a === b;\n};\n\nexports.defaultEqualityCheck = defaultEqualityCheck;\n\nfunction createCacheKeyComparator(equalityCheck) {\n  return function areArgumentsShallowlyEqual(prev, next) {\n    if (prev === null || next === null || prev.length !== next.length) {\n      return false;\n    } // Do this in a for loop (and not a `forEach` or an `every`) so we can determine equality as fast as possible.\n\n\n    var length = prev.length;\n\n    for (var i = 0; i < length; i++) {\n      if (!equalityCheck(prev[i], next[i])) {\n        return false;\n      }\n    }\n\n    return true;\n  };\n}\n\n// defaultMemoize now supports a configurable cache size with LRU behavior,\n// and optional comparison of the result value with existing values\nfunction defaultMemoize(func, equalityCheckOrOptions) {\n  var providedOptions = typeof equalityCheckOrOptions === 'object' ? equalityCheckOrOptions : {\n    equalityCheck: equalityCheckOrOptions\n  };\n  var _providedOptions$equa = providedOptions.equalityCheck,\n      equalityCheck = _providedOptions$equa === void 0 ? defaultEqualityCheck : _providedOptions$equa,\n      _providedOptions$maxS = providedOptions.maxSize,\n      maxSize = _providedOptions$maxS === void 0 ? 1 : _providedOptions$maxS,\n      resultEqualityCheck = providedOptions.resultEqualityCheck;\n  var comparator = createCacheKeyComparator(equalityCheck);\n  var cache = maxSize === 1 ? createSingletonCache(comparator) : createLruCache(maxSize, comparator); // we reference arguments instead of spreading them for performance reasons\n\n  function memoized() {\n    var value = cache.get(arguments);\n\n    if (value === NOT_FOUND) {\n      // @ts-ignore\n      value = func.apply(null, arguments);\n\n      if (resultEqualityCheck) {\n        var entries = cache.getEntries();\n        var matchingEntry = entries.find(function (entry) {\n          return resultEqualityCheck(entry.value, value);\n        });\n\n        if (matchingEntry) {\n          value = matchingEntry.value;\n        }\n      }\n\n      cache.put(arguments, value);\n    }\n\n    return value;\n  }\n\n  memoized.clearCache = function () {\n    return cache.clear();\n  };\n\n  return memoized;\n}", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.createSelector = void 0;\nexports.createSelectorCreator = createSelectorCreator;\nexports.createStructuredSelector = void 0;\nObject.defineProperty(exports, \"defaultEqualityCheck\", {\n  enumerable: true,\n  get: function get() {\n    return _defaultMemoize.defaultEqualityCheck;\n  }\n});\nObject.defineProperty(exports, \"defaultMemoize\", {\n  enumerable: true,\n  get: function get() {\n    return _defaultMemoize.defaultMemoize;\n  }\n});\n\nvar _defaultMemoize = require(\"./defaultMemoize\");\n\nfunction getDependencies(funcs) {\n  var dependencies = Array.isArray(funcs[0]) ? funcs[0] : funcs;\n\n  if (!dependencies.every(function (dep) {\n    return typeof dep === 'function';\n  })) {\n    var dependencyTypes = dependencies.map(function (dep) {\n      return typeof dep === 'function' ? \"function \" + (dep.name || 'unnamed') + \"()\" : typeof dep;\n    }).join(', ');\n    throw new Error(\"createSelector expects all input-selectors to be functions, but received the following types: [\" + dependencyTypes + \"]\");\n  }\n\n  return dependencies;\n}\n\nfunction createSelectorCreator(memoize) {\n  for (var _len = arguments.length, memoizeOptionsFromArgs = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    memoizeOptionsFromArgs[_key - 1] = arguments[_key];\n  }\n\n  var createSelector = function createSelector() {\n    for (var _len2 = arguments.length, funcs = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      funcs[_key2] = arguments[_key2];\n    }\n\n    var _recomputations = 0;\n\n    var _lastResult; // Due to the intricacies of rest params, we can't do an optional arg after `...funcs`.\n    // So, start by declaring the default value here.\n    // (And yes, the words 'memoize' and 'options' appear too many times in this next sequence.)\n\n\n    var directlyPassedOptions = {\n      memoizeOptions: undefined\n    }; // Normally, the result func or \"output selector\" is the last arg\n\n    var resultFunc = funcs.pop(); // If the result func is actually an _object_, assume it's our options object\n\n    if (typeof resultFunc === 'object') {\n      directlyPassedOptions = resultFunc; // and pop the real result func off\n\n      resultFunc = funcs.pop();\n    }\n\n    if (typeof resultFunc !== 'function') {\n      throw new Error(\"createSelector expects an output function after the inputs, but received: [\" + typeof resultFunc + \"]\");\n    } // Determine which set of options we're using. Prefer options passed directly,\n    // but fall back to options given to createSelectorCreator.\n\n\n    var _directlyPassedOption = directlyPassedOptions,\n        _directlyPassedOption2 = _directlyPassedOption.memoizeOptions,\n        memoizeOptions = _directlyPassedOption2 === void 0 ? memoizeOptionsFromArgs : _directlyPassedOption2; // Simplifying assumption: it's unlikely that the first options arg of the provided memoizer\n    // is an array. In most libs I've looked at, it's an equality function or options object.\n    // Based on that, if `memoizeOptions` _is_ an array, we assume it's a full\n    // user-provided array of options. Otherwise, it must be just the _first_ arg, and so\n    // we wrap it in an array so we can apply it.\n\n    var finalMemoizeOptions = Array.isArray(memoizeOptions) ? memoizeOptions : [memoizeOptions];\n    var dependencies = getDependencies(funcs);\n    var memoizedResultFunc = memoize.apply(void 0, [function recomputationWrapper() {\n      _recomputations++; // apply arguments instead of spreading for performance.\n\n      return resultFunc.apply(null, arguments);\n    }].concat(finalMemoizeOptions)); // If a selector is called with the exact same arguments we don't need to traverse our dependencies again.\n\n    var selector = memoize(function dependenciesChecker() {\n      var params = [];\n      var length = dependencies.length;\n\n      for (var i = 0; i < length; i++) {\n        // apply arguments instead of spreading and mutate a local list of params for performance.\n        // @ts-ignore\n        params.push(dependencies[i].apply(null, arguments));\n      } // apply arguments instead of spreading for performance.\n\n\n      _lastResult = memoizedResultFunc.apply(null, params);\n      return _lastResult;\n    });\n    Object.assign(selector, {\n      resultFunc: resultFunc,\n      memoizedResultFunc: memoizedResultFunc,\n      dependencies: dependencies,\n      lastResult: function lastResult() {\n        return _lastResult;\n      },\n      recomputations: function recomputations() {\n        return _recomputations;\n      },\n      resetRecomputations: function resetRecomputations() {\n        return _recomputations = 0;\n      }\n    });\n    return selector;\n  }; // @ts-ignore\n\n\n  return createSelector;\n}\n\nvar createSelector = /* #__PURE__ */createSelectorCreator(_defaultMemoize.defaultMemoize);\nexports.createSelector = createSelector;\n\n// Manual definition of state and output arguments\nvar createStructuredSelector = function createStructuredSelector(selectors, selectorCreator) {\n  if (selectorCreator === void 0) {\n    selectorCreator = createSelector;\n  }\n\n  if (typeof selectors !== 'object') {\n    throw new Error('createStructuredSelector expects first argument to be an object ' + (\"where each property is a selector, instead received a \" + typeof selectors));\n  }\n\n  var objectKeys = Object.keys(selectors);\n  var resultSelector = selectorCreator( // @ts-ignore\n  objectKeys.map(function (key) {\n    return selectors[key];\n  }), function () {\n    for (var _len3 = arguments.length, values = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n      values[_key3] = arguments[_key3];\n    }\n\n    return values.reduce(function (composition, value, index) {\n      composition[objectKeys[index]] = value;\n      return composition;\n    }, {});\n  });\n  return resultSelector;\n};\n\nexports.createStructuredSelector = createStructuredSelector;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\n/** 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;\nvar _default = thunk;\nexports.default = _default;", "import { enableES5 } from 'immer'\r\nexport * from 'redux'\r\nexport {\r\n  default as createNextState,\r\n  current,\r\n  freeze,\r\n  original,\r\n  isDraft,\r\n} from 'immer'\r\nexport type { Draft } from 'immer'\r\nexport { createSelector } from 'reselect'\r\nexport type {\r\n  Selector,\r\n  OutputParametricSelector,\r\n  OutputSelector,\r\n  ParametricSelector,\r\n} from 'reselect'\r\nexport { createDraftSafeSelector } from './createDraftSafeSelector'\r\nexport type { ThunkAction, ThunkDispatch, ThunkMiddleware } from 'redux-thunk'\r\n\r\n// We deliberately enable Immer's ES5 support, on the grounds that\r\n// we assume RTK will be used with React Native and other Proxy-less\r\n// environments.  In addition, that's how Immer 4 behaved, and since\r\n// we want to ship this in an RTK minor, we should keep the same behavior.\r\nenableES5()\r\n\r\nexport {\r\n  // js\r\n  configureStore,\r\n} from './configureStore'\r\nexport type {\r\n  // types\r\n  ConfigureEnhancersCallback,\r\n  ConfigureStoreOptions,\r\n  EnhancedStore,\r\n} from './configureStore'\r\nexport type { DevToolsEnhancerOptions } from './devtoolsExtension'\r\nexport {\r\n  // js\r\n  createAction,\r\n  getType,\r\n} from './createAction'\r\nexport type {\r\n  // types\r\n  PayloadAction,\r\n  PayloadActionCreator,\r\n  ActionCreatorWithNonInferrablePayload,\r\n  ActionCreatorWithOptionalPayload,\r\n  ActionCreatorWithPayload,\r\n  ActionCreatorWithoutPayload,\r\n  ActionCreatorWithPreparedPayload,\r\n  PrepareAction,\r\n} from './createAction'\r\nexport {\r\n  // js\r\n  createReducer,\r\n} from './createReducer'\r\nexport type {\r\n  // types\r\n  Actions,\r\n  CaseReducer,\r\n  CaseReducers,\r\n} from './createReducer'\r\nexport {\r\n  // js\r\n  createSlice,\r\n} from './createSlice'\r\n\r\nexport type {\r\n  // types\r\n  CreateSliceOptions,\r\n  Slice,\r\n  CaseReducerActions,\r\n  SliceCaseReducers,\r\n  ValidateSliceCaseReducers,\r\n  CaseReducerWithPrepare,\r\n  SliceActionCreator,\r\n} from './createSlice'\r\nexport {\r\n  // js\r\n  createImmutableStateInvariantMiddleware,\r\n  isImmutableDefault,\r\n} from './immutableStateInvariantMiddleware'\r\nexport type {\r\n  // types\r\n  ImmutableStateInvariantMiddlewareOptions,\r\n} from './immutableStateInvariantMiddleware'\r\nexport {\r\n  // js\r\n  createSerializableStateInvariantMiddleware,\r\n  findNonSerializableValue,\r\n  isPlain,\r\n} from './serializableStateInvariantMiddleware'\r\nexport type {\r\n  // types\r\n  SerializableStateInvariantMiddlewareOptions,\r\n} from './serializableStateInvariantMiddleware'\r\nexport {\r\n  // js\r\n  getDefaultMiddleware,\r\n} from './getDefaultMiddleware'\r\nexport type {\r\n  // types\r\n  ActionReducerMapBuilder,\r\n} from './mapBuilders'\r\nexport { MiddlewareArray } from './utils'\r\n\r\nexport { createEntityAdapter } from './entities/create_adapter'\r\nexport type {\r\n  Dictionary,\r\n  EntityState,\r\n  EntityAdapter,\r\n  EntitySelectors,\r\n  EntityStateAdapter,\r\n  EntityId,\r\n  Update,\r\n  IdSelector,\r\n  Comparer,\r\n} from './entities/models'\r\n\r\nexport {\r\n  createAsyncThunk,\r\n  unwrapResult,\r\n  miniSerializeError,\r\n} from './createAsyncThunk'\r\nexport type {\r\n  AsyncThunk,\r\n  AsyncThunkOptions,\r\n  AsyncThunkAction,\r\n  AsyncThunkPayloadCreatorReturnValue,\r\n  AsyncThunkPayloadCreator,\r\n  SerializedError,\r\n} from './createAsyncThunk'\r\n\r\nexport {\r\n  // js\r\n  isAllOf,\r\n  isAnyOf,\r\n  isPending,\r\n  isRejected,\r\n  isFulfilled,\r\n  isAsyncThunkAction,\r\n  isRejectedWithValue,\r\n} from './matchers'\r\nexport type {\r\n  // types\r\n  ActionMatchingAllOf,\r\n  ActionMatchingAnyOf,\r\n} from './matchers'\r\n\r\nexport { nanoid } from './nanoid'\r\n\r\nexport { default as isPlainObject } from './isPlainObject'\r\n\r\nexport type {\r\n  ListenerEffect,\r\n  ListenerMiddleware,\r\n  ListenerEffectAPI,\r\n  ListenerMiddlewareInstance,\r\n  CreateListenerMiddlewareOptions,\r\n  ListenerErrorHandler,\r\n  TypedStartListening,\r\n  TypedAddListener,\r\n  TypedStopListening,\r\n  TypedRemoveListener,\r\n  UnsubscribeListener,\r\n  UnsubscribeListenerOptions,\r\n  ForkedTaskExecutor,\r\n  ForkedTask,\r\n  ForkedTaskAPI,\r\n  AsyncTaskExecutor,\r\n  SyncTaskExecutor,\r\n  TaskCancelled,\r\n  TaskRejected,\r\n  TaskResolved,\r\n  TaskResult,\r\n} from './listenerMiddleware/index'\r\nexport type { AnyListenerPredicate } from './listenerMiddleware/types'\r\n\r\nexport {\r\n  createListenerMiddleware,\r\n  addListener,\r\n  removeListener,\r\n  clearAllListeners,\r\n  TaskAbortError,\r\n} from './listenerMiddleware/index'\r\n\r\nexport {\r\n  SHOULD_AUTOBATCH,\r\n  prepareAutoBatched,\r\n  autoBatchEnhancer,\r\n  AutoBatchOptions,\r\n} from './autoBatchEnhancer'\r\n", "import { current, isDraft } from 'immer'\r\nimport { createSelector } from 'reselect'\r\n\r\n/**\r\n * \"Draft-Safe\" version of `reselect`'s `createSelector`:\r\n * If an `immer`-drafted object is passed into the resulting selector's first argument,\r\n * the selector will act on the current draft value, instead of returning a cached value\r\n * that might be possibly outdated if the draft has been modified since.\r\n * @public\r\n */\r\nexport const createDraftSafeSelector: typeof createSelector = (\r\n  ...args: unknown[]\r\n) => {\r\n  const selector = (createSelector as any)(...args)\r\n  const wrappedSelector = (value: unknown, ...rest: unknown[]) =>\r\n    selector(isDraft(value) ? current(value) : value, ...rest)\r\n  return wrappedSelector as any\r\n}\r\n", "import type {\r\n  Reducer,\r\n  ReducersMapObject,\r\n  Middleware,\r\n  Action,\r\n  AnyAction,\r\n  StoreEnhancer,\r\n  Store,\r\n  Dispatch,\r\n  PreloadedState,\r\n  CombinedState,\r\n} from 'redux'\r\nimport { createStore, compose, applyMiddleware, combineReducers } from 'redux'\r\nimport type { DevToolsEnhancerOptions as DevToolsOptions } from './devtoolsExtension'\r\nimport { composeWithDevTools } from './devtoolsExtension'\r\n\r\nimport isPlainObject from './isPlainObject'\r\nimport type {\r\n  ThunkMiddlewareFor,\r\n  CurriedGetDefaultMiddleware,\r\n} from './getDefaultMiddleware'\r\nimport { curryGetDefaultMiddleware } from './getDefaultMiddleware'\r\nimport type {\r\n  NoInfer,\r\n  ExtractDispatchExtensions,\r\n  ExtractStoreExtensions,\r\n} from './tsHelpers'\r\n\r\nconst IS_PRODUCTION = process.env.NODE_ENV === 'production'\r\n\r\n/**\r\n * Callback function type, to be used in `ConfigureStoreOptions.enhancers`\r\n *\r\n * @public\r\n */\r\nexport type ConfigureEnhancersCallback<E extends Enhancers = Enhancers> = (\r\n    defaultEnhancers: readonly StoreEnhancer[]\r\n) => [...E]\r\n\r\n/**\r\n * Options for `configureStore()`.\r\n *\r\n * @public\r\n */\r\nexport interface ConfigureStoreOptions<\r\n  S = any,\r\n  A extends Action = AnyAction,\r\n  M extends Middlewares<S> = Middlewares<S>,\r\n  E extends Enhancers = Enhancers\r\n> {\r\n  /**\r\n   * A single reducer function that will be used as the root reducer, or an\r\n   * object of slice reducers that will be passed to `combineReducers()`.\r\n   */\r\n  reducer: Reducer<S, A> | ReducersMapObject<S, A>\r\n\r\n  /**\r\n   * An array of Redux middleware to install. If not supplied, defaults to\r\n   * the set of middleware returned by `getDefaultMiddleware()`.\r\n   *\r\n   * @example `middleware: (gDM) => gDM().concat(logger, apiMiddleware, yourCustomMiddleware)`\r\n   * @see https://redux-toolkit.js.org/api/getDefaultMiddleware#intended-usage\r\n   */\r\n  middleware?: ((getDefaultMiddleware: CurriedGetDefaultMiddleware<S>) => M) | M\r\n\r\n  /**\r\n   * Whether to enable Redux DevTools integration. Defaults to `true`.\r\n   *\r\n   * Additional configuration can be done by passing Redux DevTools options\r\n   */\r\n  devTools?: boolean | DevToolsOptions\r\n\r\n  /**\r\n   * The initial state, same as Redux's createStore.\r\n   * You may optionally specify it to hydrate the state\r\n   * from the server in universal apps, or to restore a previously serialized\r\n   * user session. If you use `combineReducers()` to produce the root reducer\r\n   * function (either directly or indirectly by passing an object as `reducer`),\r\n   * this must be an object with the same shape as the reducer map keys.\r\n   */\r\n  /*\r\n  Not 100% correct but the best approximation we can get:\r\n  - if S is a `CombinedState` applying a second `CombinedState` on it does not change anything.\r\n  - if it is not, there could be two cases:\r\n    - `ReducersMapObject<S, A>` is being passed in. In this case, we will call `combineReducers` on it and `CombinedState<S>` is correct\r\n    - `Reducer<S, A>` is being passed in. In this case, actually `CombinedState<S>` is wrong and `S` would be correct.\r\n    As we cannot distinguish between those two cases without adding another generic parameter,\r\n    we just make the pragmatic assumption that the latter almost never happens.\r\n  */\r\n  preloadedState?: PreloadedState<CombinedState<NoInfer<S>>>\r\n\r\n  /**\r\n   * The store enhancers to apply. See Redux's `createStore()`.\r\n   * All enhancers will be included before the DevTools Extension enhancer.\r\n   * If you need to customize the order of enhancers, supply a callback\r\n   * function that will receive the original array (ie, `[applyMiddleware]`),\r\n   * and should return a new array (such as `[applyMiddleware, offline]`).\r\n   * If you only need to add middleware, you can use the `middleware` parameter instead.\r\n   */\r\n  enhancers?: E | ConfigureEnhancersCallback<E>\r\n}\r\n\r\ntype Middlewares<S> = ReadonlyArray<Middleware<{}, S>>\r\n\r\ntype Enhancers = ReadonlyArray<StoreEnhancer>\r\n\r\nexport interface ToolkitStore<\r\n  S = any,\r\n  A extends Action = AnyAction,\r\n  M extends Middlewares<S> = Middlewares<S>,\r\n> extends Store<S, A> {\r\n  /**\r\n   * The `dispatch` method of your store, enhanced by all its middlewares.\r\n   *\r\n   * @inheritdoc\r\n   */\r\n  dispatch: ExtractDispatchExtensions<M> & Dispatch<A>\r\n}\r\n\r\n/**\r\n * A Redux store returned by `configureStore()`. Supports dispatching\r\n * side-effectful _thunks_ in addition to plain actions.\r\n *\r\n * @public\r\n */\r\nexport type EnhancedStore<\r\n  S = any,\r\n  A extends Action = AnyAction,\r\n  M extends Middlewares<S> = Middlewares<S>,\r\n  E extends Enhancers = Enhancers\r\n> = ToolkitStore<S, A, M> & ExtractStoreExtensions<E>\r\n\r\n/**\r\n * A friendly abstraction over the standard Redux `createStore()` function.\r\n *\r\n * @param options The store configuration.\r\n * @returns A configured Redux store.\r\n *\r\n * @public\r\n */\r\nexport function configureStore<\r\n  S = any,\r\n  A extends Action = AnyAction,\r\n  M extends Middlewares<S> = [ThunkMiddlewareFor<S>],\r\n  E extends Enhancers = [StoreEnhancer]\r\n>(options: ConfigureStoreOptions<S, A, M, E>): EnhancedStore<S, A, M, E> {\r\n  const curriedGetDefaultMiddleware = curryGetDefaultMiddleware<S>()\r\n\r\n  const {\r\n    reducer = undefined,\r\n    middleware = curriedGetDefaultMiddleware(),\r\n    devTools = true,\r\n    preloadedState = undefined,\r\n    enhancers = undefined,\r\n  } = options || {}\r\n\r\n  let rootReducer: Reducer<S, A>\r\n\r\n  if (typeof reducer === 'function') {\r\n    rootReducer = reducer\r\n  } else if (isPlainObject(reducer)) {\r\n    rootReducer = combineReducers(reducer) as unknown as Reducer<S, A>\r\n  } else {\r\n    throw new Error(\r\n      '\"reducer\" is a required argument, and must be a function or an object of functions that can be passed to combineReducers'\r\n    )\r\n  }\r\n\r\n  let finalMiddleware = middleware\r\n  if (typeof finalMiddleware === 'function') {\r\n    finalMiddleware = finalMiddleware(curriedGetDefaultMiddleware)\r\n\r\n    if (!IS_PRODUCTION && !Array.isArray(finalMiddleware)) {\r\n      throw new Error(\r\n        'when using a middleware builder function, an array of middleware must be returned'\r\n      )\r\n    }\r\n  }\r\n  if (\r\n    !IS_PRODUCTION &&\r\n    finalMiddleware.some((item: any) => typeof item !== 'function')\r\n  ) {\r\n    throw new Error(\r\n      'each middleware provided to configureStore must be a function'\r\n    )\r\n  }\r\n\r\n  const middlewareEnhancer: StoreEnhancer = applyMiddleware(...finalMiddleware)\r\n\r\n  let finalCompose = compose\r\n\r\n  if (devTools) {\r\n    finalCompose = composeWithDevTools({\r\n      // Enable capture of stack traces for dispatched Redux actions\r\n      trace: !IS_PRODUCTION,\r\n      ...(typeof devTools === 'object' && devTools),\r\n    })\r\n  }\r\n\r\n  let storeEnhancers: Enhancers = [middlewareEnhancer]\r\n\r\n  if (Array.isArray(enhancers)) {\r\n    storeEnhancers = [middlewareEnhancer, ...enhancers]\r\n  } else if (typeof enhancers === 'function') {\r\n    storeEnhancers = enhancers(storeEnhancers)\r\n  }\r\n\r\n  const composedEnhancer = finalCompose(...storeEnhancers) as StoreEnhancer<any>\r\n\r\n  return createStore(rootReducer, preloadedState, composedEnhancer)\r\n}\r\n", "import type { Action, ActionCreator, StoreEnhancer } from 'redux'\r\nimport { compose } from 'redux'\r\n\r\n/**\r\n * @public\r\n */\r\nexport interface DevToolsEnhancerOptions {\r\n  /**\r\n   * the instance name to be showed on the monitor page. Default value is `document.title`.\r\n   * If not specified and there's no document title, it will consist of `tabId` and `instanceId`.\r\n   */\r\n  name?: string\r\n  /**\r\n   * action creators functions to be available in the Dispatcher.\r\n   */\r\n  actionCreators?: ActionCreator<any>[] | { [key: string]: ActionCreator<any> }\r\n  /**\r\n   * if more than one action is dispatched in the indicated interval, all new actions will be collected and sent at once.\r\n   * It is the joint between performance and speed. When set to `0`, all actions will be sent instantly.\r\n   * Set it to a higher value when experiencing perf issues (also `maxAge` to a lower value).\r\n   *\r\n   * @default 500 ms.\r\n   */\r\n  latency?: number\r\n  /**\r\n   * (> 1) - maximum allowed actions to be stored in the history tree. The oldest actions are removed once maxAge is reached. It's critical for performance.\r\n   *\r\n   * @default 50\r\n   */\r\n  maxAge?: number\r\n  /**\r\n   * Customizes how actions and state are serialized and deserialized. Can be a boolean or object. If given a boolean, the behavior is the same as if you\r\n   * were to pass an object and specify `options` as a boolean. Giving an object allows fine-grained customization using the `replacer` and `reviver`\r\n   * functions.\r\n   */\r\n  serialize?:\r\n    | boolean\r\n    | {\r\n        /**\r\n         * - `undefined` - will use regular `JSON.stringify` to send data (it's the fast mode).\r\n         * - `false` - will handle also circular references.\r\n         * - `true` - will handle also date, regex, undefined, error objects, symbols, maps, sets and functions.\r\n         * - object, which contains `date`, `regex`, `undefined`, `error`, `symbol`, `map`, `set` and `function` keys.\r\n         *   For each of them you can indicate if to include (by setting as `true`).\r\n         *   For `function` key you can also specify a custom function which handles serialization.\r\n         *   See [`jsan`](https://github.com/kolodny/jsan) for more details.\r\n         */\r\n        options?:\r\n          | undefined\r\n          | boolean\r\n          | {\r\n              date?: true\r\n              regex?: true\r\n              undefined?: true\r\n              error?: true\r\n              symbol?: true\r\n              map?: true\r\n              set?: true\r\n              function?: true | ((fn: (...args: any[]) => any) => string)\r\n            }\r\n        /**\r\n         * [JSON replacer function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#The_replacer_parameter) used for both actions and states stringify.\r\n         * In addition, you can specify a data type by adding a [`__serializedType__`](https://github.com/zalmoxisus/remotedev-serialize/blob/master/helpers/index.js#L4)\r\n         * key. So you can deserialize it back while importing or persisting data.\r\n         * Moreover, it will also [show a nice preview showing the provided custom type](https://cloud.githubusercontent.com/assets/7957859/21814330/a17d556a-d761-11e6-85ef-159dd12f36c5.png):\r\n         */\r\n        replacer?: (key: string, value: unknown) => any\r\n        /**\r\n         * [JSON `reviver` function](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse#Using_the_reviver_parameter)\r\n         * used for parsing the imported actions and states. See [`remotedev-serialize`](https://github.com/zalmoxisus/remotedev-serialize/blob/master/immutable/serialize.js#L8-L41)\r\n         * as an example on how to serialize special data types and get them back.\r\n         */\r\n        reviver?: (key: string, value: unknown) => any\r\n        /**\r\n         * Automatically serialize/deserialize immutablejs via [remotedev-serialize](https://github.com/zalmoxisus/remotedev-serialize).\r\n         * Just pass the Immutable library. It will support all ImmutableJS structures. You can even export them into a file and get them back.\r\n         * The only exception is `Record` class, for which you should pass this in addition the references to your classes in `refs`.\r\n         */\r\n        immutable?: any\r\n        /**\r\n         * ImmutableJS `Record` classes used to make possible restore its instances back when importing, persisting...\r\n         */\r\n        refs?: any\r\n      }\r\n  /**\r\n   * function which takes `action` object and id number as arguments, and should return `action` object back.\r\n   */\r\n  actionSanitizer?: <A extends Action>(action: A, id: number) => A\r\n  /**\r\n   * function which takes `state` object and index as arguments, and should return `state` object back.\r\n   */\r\n  stateSanitizer?: <S>(state: S, index: number) => S\r\n  /**\r\n   * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n   * If `actionsWhitelist` specified, `actionsBlacklist` is ignored.\r\n   * @deprecated Use actionsDenylist instead.\r\n   */\r\n  actionsBlacklist?: string | string[]\r\n  /**\r\n   * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n   * If `actionsWhitelist` specified, `actionsBlacklist` is ignored.\r\n   * @deprecated Use actionsAllowlist instead.\r\n   */\r\n  actionsWhitelist?: string | string[]\r\n  /**\r\n   * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n   * If `actionsAllowlist` specified, `actionsDenylist` is ignored.\r\n   */\r\n  actionsDenylist?: string | string[]\r\n  /**\r\n   * *string or array of strings as regex* - actions types to be hidden / shown in the monitors (while passed to the reducers).\r\n   * If `actionsAllowlist` specified, `actionsDenylist` is ignored.\r\n   */\r\n  actionsAllowlist?: string | string[]\r\n  /**\r\n   * called for every action before sending, takes `state` and `action` object, and returns `true` in case it allows sending the current data to the monitor.\r\n   * Use it as a more advanced version of `actionsDenylist`/`actionsAllowlist` parameters.\r\n   */\r\n  predicate?: <S, A extends Action>(state: S, action: A) => boolean\r\n  /**\r\n   * if specified as `false`, it will not record the changes till clicking on `Start recording` button.\r\n   * Available only for Redux enhancer, for others use `autoPause`.\r\n   *\r\n   * @default true\r\n   */\r\n  shouldRecordChanges?: boolean\r\n  /**\r\n   * if specified, whenever clicking on `Pause recording` button and there are actions in the history log, will add this action type.\r\n   * If not specified, will commit when paused. Available only for Redux enhancer.\r\n   *\r\n   * @default \"@@PAUSED\"\"\r\n   */\r\n  pauseActionType?: string\r\n  /**\r\n   * auto pauses when the extension’s window is not opened, and so has zero impact on your app when not in use.\r\n   * Not available for Redux enhancer (as it already does it but storing the data to be sent).\r\n   *\r\n   * @default false\r\n   */\r\n  autoPause?: boolean\r\n  /**\r\n   * if specified as `true`, it will not allow any non-monitor actions to be dispatched till clicking on `Unlock changes` button.\r\n   * Available only for Redux enhancer.\r\n   *\r\n   * @default false\r\n   */\r\n  shouldStartLocked?: boolean\r\n  /**\r\n   * if set to `false`, will not recompute the states on hot reloading (or on replacing the reducers). Available only for Redux enhancer.\r\n   *\r\n   * @default true\r\n   */\r\n  shouldHotReload?: boolean\r\n  /**\r\n   * if specified as `true`, whenever there's an exception in reducers, the monitors will show the error message, and next actions will not be dispatched.\r\n   *\r\n   * @default false\r\n   */\r\n  shouldCatchErrors?: boolean\r\n  /**\r\n   * If you want to restrict the extension, specify the features you allow.\r\n   * If not specified, all of the features are enabled. When set as an object, only those included as `true` will be allowed.\r\n   * Note that except `true`/`false`, `import` and `export` can be set as `custom` (which is by default for Redux enhancer), meaning that the importing/exporting occurs on the client side.\r\n   * Otherwise, you'll get/set the data right from the monitor part.\r\n   */\r\n  features?: {\r\n    /**\r\n     * start/pause recording of dispatched actions\r\n     */\r\n    pause?: boolean\r\n    /**\r\n     * lock/unlock dispatching actions and side effects\r\n     */\r\n    lock?: boolean\r\n    /**\r\n     * persist states on page reloading\r\n     */\r\n    persist?: boolean\r\n    /**\r\n     * export history of actions in a file\r\n     */\r\n    export?: boolean | 'custom'\r\n    /**\r\n     * import history of actions from a file\r\n     */\r\n    import?: boolean | 'custom'\r\n    /**\r\n     * jump back and forth (time travelling)\r\n     */\r\n    jump?: boolean\r\n    /**\r\n     * skip (cancel) actions\r\n     */\r\n    skip?: boolean\r\n    /**\r\n     * drag and drop actions in the history list\r\n     */\r\n    reorder?: boolean\r\n    /**\r\n     * dispatch custom actions or action creators\r\n     */\r\n    dispatch?: boolean\r\n    /**\r\n     * generate tests for the selected actions\r\n     */\r\n    test?: boolean\r\n  }\r\n  /**\r\n   * Set to true or a stacktrace-returning function to record call stack traces for dispatched actions.\r\n   * Defaults to false.\r\n   */\r\n  trace?: boolean | (<A extends Action>(action: A) => string)\r\n  /**\r\n   * The maximum number of stack trace entries to record per action. Defaults to 10.\r\n   */\r\n  traceLimit?: number\r\n}\r\n\r\ntype Compose = typeof compose\r\n\r\ninterface ComposeWithDevTools {\r\n  (options: DevToolsEnhancerOptions): Compose\r\n  <StoreExt>(...funcs: StoreEnhancer<StoreExt>[]): StoreEnhancer<StoreExt>\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport const composeWithDevTools: ComposeWithDevTools =\r\n  typeof window !== 'undefined' &&\r\n  (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\r\n    ? (window as any).__REDUX_DEVTOOLS_EXTENSION_COMPOSE__\r\n    : function () {\r\n        if (arguments.length === 0) return undefined\r\n        if (typeof arguments[0] === 'object') return compose\r\n        return compose.apply(null, arguments as any as Function[])\r\n      }\r\n\r\n/**\r\n * @public\r\n */\r\nexport const devToolsEnhancer: {\r\n  (options: DevToolsEnhancerOptions): StoreEnhancer<any>\r\n} =\r\n  typeof window !== 'undefined' && (window as any).__REDUX_DEVTOOLS_EXTENSION__\r\n    ? (window as any).__REDUX_DEVTOOLS_EXTENSION__\r\n    : function () {\r\n        return function (noop) {\r\n          return noop\r\n        }\r\n      }\r\n", "/**\r\n * Returns true if the passed value is \"plain\" object, i.e. an object whose\r\n * prototype is the root `Object.prototype`. This includes objects created\r\n * using object literals, but not for instance for class instances.\r\n *\r\n * @param {any} value The value to inspect.\r\n * @returns {boolean} True if the argument appears to be a plain object.\r\n *\r\n * @public\r\n */\r\nexport default function isPlainObject(value: unknown): value is object {\r\n  if (typeof value !== 'object' || value === null) return false\r\n\r\n  let proto = Object.getPrototypeOf(value)\r\n  if (proto === null) return true\r\n\r\n  let baseProto = proto\r\n  while (Object.getPrototypeOf(baseProto) !== null) {\r\n    baseProto = Object.getPrototypeOf(baseProto)\r\n  }\r\n\r\n  return proto === baseProto\r\n}\r\n", "import type { Middleware, AnyAction } from 'redux'\r\nimport type { ThunkMiddleware } from 'redux-thunk'\r\nimport thunkMiddleware from 'redux-thunk'\r\nimport type { ImmutableStateInvariantMiddlewareOptions } from './immutableStateInvariantMiddleware'\r\n/* PROD_START_REMOVE_UMD */\r\nimport { createImmutableStateInvariantMiddleware } from './immutableStateInvariantMiddleware'\r\n/* PROD_STOP_REMOVE_UMD */\r\n\r\nimport type { SerializableStateInvariantMiddlewareOptions } from './serializableStateInvariantMiddleware'\r\nimport { createSerializableStateInvariantMiddleware } from './serializableStateInvariantMiddleware'\r\nimport type { ExcludeFromTuple } from './tsHelpers'\r\nimport { MiddlewareArray } from './utils'\r\n\r\nfunction isBoolean(x: any): x is boolean {\r\n  return typeof x === 'boolean'\r\n}\r\n\r\ninterface ThunkOptions<E = any> {\r\n  extraArgument: E\r\n}\r\n\r\ninterface GetDefaultMiddlewareOptions {\r\n  thunk?: boolean | ThunkOptions\r\n  immutableCheck?: boolean | ImmutableStateInvariantMiddlewareOptions\r\n  serializableCheck?: boolean | SerializableStateInvariantMiddlewareOptions\r\n}\r\n\r\nexport type ThunkMiddlewareFor<\r\n  S,\r\n  O extends GetDefaultMiddlewareOptions = {}\r\n> = O extends {\r\n  thunk: false\r\n}\r\n  ? never\r\n  : O extends { thunk: { extraArgument: infer E } }\r\n  ? ThunkMiddleware<S, AnyAction, E>\r\n  : ThunkMiddleware<S, AnyAction>\r\n\r\nexport type CurriedGetDefaultMiddleware<S = any> = <\r\n  O extends Partial<GetDefaultMiddlewareOptions> = {\r\n    thunk: true\r\n    immutableCheck: true\r\n    serializableCheck: true\r\n  }\r\n>(\r\n  options?: O\r\n) => MiddlewareArray<ExcludeFromTuple<[ThunkMiddlewareFor<S, O>], never>>\r\n\r\nexport function curryGetDefaultMiddleware<\r\n  S = any\r\n>(): CurriedGetDefaultMiddleware<S> {\r\n  return function curriedGetDefaultMiddleware(options) {\r\n    return getDefaultMiddleware(options)\r\n  }\r\n}\r\n\r\n/**\r\n * Returns any array containing the default middleware installed by\r\n * `configureStore()`. Useful if you want to configure your store with a custom\r\n * `middleware` array but still keep the default set.\r\n *\r\n * @return The default middleware used by `configureStore()`.\r\n *\r\n * @public\r\n *\r\n * @deprecated Prefer to use the callback notation for the `middleware` option in `configureStore`\r\n * to access a pre-typed `getDefaultMiddleware` instead.\r\n */\r\nexport function getDefaultMiddleware<\r\n  S = any,\r\n  O extends Partial<GetDefaultMiddlewareOptions> = {\r\n    thunk: true\r\n    immutableCheck: true\r\n    serializableCheck: true\r\n  }\r\n>(\r\n  options: O = {} as O\r\n): MiddlewareArray<ExcludeFromTuple<[ThunkMiddlewareFor<S, O>], never>> {\r\n  const {\r\n    thunk = true,\r\n    immutableCheck = true,\r\n    serializableCheck = true,\r\n  } = options\r\n\r\n  let middlewareArray = new MiddlewareArray<Middleware[]>()\r\n\r\n  if (thunk) {\r\n    if (isBoolean(thunk)) {\r\n      middlewareArray.push(thunkMiddleware)\r\n    } else {\r\n      middlewareArray.push(\r\n        thunkMiddleware.withExtraArgument(thunk.extraArgument)\r\n      )\r\n    }\r\n  }\r\n\r\n  if (process.env.NODE_ENV !== 'production') {\r\n    if (immutableCheck) {\r\n      /* PROD_START_REMOVE_UMD */\r\n      let immutableOptions: ImmutableStateInvariantMiddlewareOptions = {}\r\n\r\n      if (!isBoolean(immutableCheck)) {\r\n        immutableOptions = immutableCheck\r\n      }\r\n\r\n      middlewareArray.unshift(\r\n        createImmutableStateInvariantMiddleware(immutableOptions)\r\n      )\r\n      /* PROD_STOP_REMOVE_UMD */\r\n    }\r\n\r\n    if (serializableCheck) {\r\n      let serializableOptions: SerializableStateInvariantMiddlewareOptions = {}\r\n\r\n      if (!isBoolean(serializableCheck)) {\r\n        serializableOptions = serializableCheck\r\n      }\r\n\r\n      middlewareArray.push(\r\n        createSerializableStateInvariantMiddleware(serializableOptions)\r\n      )\r\n    }\r\n  }\r\n\r\n  return middlewareArray as any\r\n}\r\n", "import createNextState, { isDraftable } from 'immer'\r\nimport type { Middleware } from 'redux'\r\n\r\nexport function getTimeMeasureUtils(maxDelay: number, fnName: string) {\r\n  let elapsed = 0\r\n  return {\r\n    measureTime<T>(fn: () => T): T {\r\n      const started = Date.now()\r\n      try {\r\n        return fn()\r\n      } finally {\r\n        const finished = Date.now()\r\n        elapsed += finished - started\r\n      }\r\n    },\r\n    warnIfExceeded() {\r\n      if (elapsed > maxDelay) {\r\n        console.warn(`${fnName} took ${elapsed}ms, which is more than the warning threshold of ${maxDelay}ms. \r\nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\r\nIt is disabled in production builds, so you don't need to worry about that.`)\r\n      }\r\n    },\r\n  }\r\n}\r\n\r\nexport function delay(ms: number) {\r\n  return new Promise((resolve) => setTimeout(resolve, ms))\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport class MiddlewareArray<\r\n  Middlewares extends Middleware<any, any>[]\r\n> extends Array<Middlewares[number]> {\r\n  constructor(...items: Middlewares)\r\n  constructor(...args: any[]) {\r\n    super(...args)\r\n    Object.setPrototypeOf(this, MiddlewareArray.prototype)\r\n  }\r\n\r\n  static get [Symbol.species]() {\r\n    return MiddlewareArray as any\r\n  }\r\n\r\n  concat<AdditionalMiddlewares extends ReadonlyArray<Middleware<any, any>>>(\r\n    items: AdditionalMiddlewares\r\n  ): MiddlewareArray<[...Middlewares, ...AdditionalMiddlewares]>\r\n\r\n  concat<AdditionalMiddlewares extends ReadonlyArray<Middleware<any, any>>>(\r\n    ...items: AdditionalMiddlewares\r\n  ): MiddlewareArray<[...Middlewares, ...AdditionalMiddlewares]>\r\n  concat(...arr: any[]) {\r\n    return super.concat.apply(this, arr)\r\n  }\r\n\r\n  prepend<AdditionalMiddlewares extends ReadonlyArray<Middleware<any, any>>>(\r\n    items: AdditionalMiddlewares\r\n  ): MiddlewareArray<[...AdditionalMiddlewares, ...Middlewares]>\r\n\r\n  prepend<AdditionalMiddlewares extends ReadonlyArray<Middleware<any, any>>>(\r\n    ...items: AdditionalMiddlewares\r\n  ): MiddlewareArray<[...AdditionalMiddlewares, ...Middlewares]>\r\n\r\n  prepend(...arr: any[]) {\r\n    if (arr.length === 1 && Array.isArray(arr[0])) {\r\n      return new MiddlewareArray(...arr[0].concat(this))\r\n    }\r\n    return new MiddlewareArray(...arr.concat(this))\r\n  }\r\n}\r\n\r\nexport function freezeDraftable<T>(val: T) {\r\n  return isDraftable(val) ? createNextState(val, () => {}) : val\r\n}\r\n", "import type { Middleware } from 'redux'\r\nimport { getTimeMeasureUtils } from './utils'\r\n\r\ntype EntryProcessor = (key: string, value: any) => any\r\n\r\nconst isProduction: boolean = process.env.NODE_ENV === 'production'\r\nconst prefix: string = 'Invariant failed'\r\n\r\n// Throw an error if the condition fails\r\n// Strip out error messages for production\r\n// > Not providing an inline default argument for message as the result is smaller\r\nfunction invariant(condition: any, message?: string) {\r\n  if (condition) {\r\n    return\r\n  }\r\n  // Condition not passed\r\n\r\n  // In production we strip the message but still throw\r\n  if (isProduction) {\r\n    throw new Error(prefix)\r\n  }\r\n\r\n  // When not in production we allow the message to pass through\r\n  // *This block will be removed in production builds*\r\n  throw new Error(`${prefix}: ${message || ''}`)\r\n}\r\n\r\nfunction stringify(\r\n  obj: any,\r\n  serializer?: EntryProcessor,\r\n  indent?: string | number,\r\n  decycler?: EntryProcessor\r\n): string {\r\n  return JSON.stringify(obj, getSerialize(serializer, decycler), indent)\r\n}\r\n\r\nfunction getSerialize(\r\n  serializer?: EntryProcessor,\r\n  decycler?: EntryProcessor\r\n): EntryProcessor {\r\n  let stack: any[] = [],\r\n    keys: any[] = []\r\n\r\n  if (!decycler)\r\n    decycler = function (_: string, value: any) {\r\n      if (stack[0] === value) return '[Circular ~]'\r\n      return (\r\n        '[Circular ~.' + keys.slice(0, stack.indexOf(value)).join('.') + ']'\r\n      )\r\n    }\r\n\r\n  return function (this: any, key: string, value: any) {\r\n    if (stack.length > 0) {\r\n      var thisPos = stack.indexOf(this)\r\n      ~thisPos ? stack.splice(thisPos + 1) : stack.push(this)\r\n      ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key)\r\n      if (~stack.indexOf(value)) value = decycler!.call(this, key, value)\r\n    } else stack.push(value)\r\n\r\n    return serializer == null ? value : serializer.call(this, key, value)\r\n  }\r\n}\r\n\r\n/**\r\n * The default `isImmutable` function.\r\n *\r\n * @public\r\n */\r\nexport function isImmutableDefault(value: unknown): boolean {\r\n  return typeof value !== 'object' || value == null || Object.isFrozen(value)\r\n}\r\n\r\nexport function trackForMutations(\r\n  isImmutable: IsImmutableFunc,\r\n  ignorePaths: string[] | undefined,\r\n  obj: any\r\n) {\r\n  const trackedProperties = trackProperties(isImmutable, ignorePaths, obj)\r\n  return {\r\n    detectMutations() {\r\n      return detectMutations(isImmutable, ignorePaths, trackedProperties, obj)\r\n    },\r\n  }\r\n}\r\n\r\ninterface TrackedProperty {\r\n  value: any\r\n  children: Record<string, any>\r\n}\r\n\r\nfunction trackProperties(\r\n  isImmutable: IsImmutableFunc,\r\n  ignorePaths: IgnorePaths = [],\r\n  obj: Record<string, any>,\r\n  path: string = ''\r\n) {\r\n  const tracked: Partial<TrackedProperty> = { value: obj }\r\n\r\n  if (!isImmutable(obj)) {\r\n    tracked.children = {}\r\n\r\n    for (const key in obj) {\r\n      const childPath = path ? path + '.' + key : key\r\n      if (ignorePaths.length && ignorePaths.indexOf(childPath) !== -1) {\r\n        continue\r\n      }\r\n\r\n      tracked.children[key] = trackProperties(\r\n        isImmutable,\r\n        ignorePaths,\r\n        obj[key],\r\n        childPath\r\n      )\r\n    }\r\n  }\r\n  return tracked as TrackedProperty\r\n}\r\n\r\ntype IgnorePaths = readonly string[]\r\n\r\nfunction detectMutations(\r\n  isImmutable: IsImmutableFunc,\r\n  ignorePaths: IgnorePaths = [],\r\n  trackedProperty: TrackedProperty,\r\n  obj: any,\r\n  sameParentRef: boolean = false,\r\n  path: string = ''\r\n): { wasMutated: boolean; path?: string } {\r\n  const prevObj = trackedProperty ? trackedProperty.value : undefined\r\n\r\n  const sameRef = prevObj === obj\r\n\r\n  if (sameParentRef && !sameRef && !Number.isNaN(obj)) {\r\n    return { wasMutated: true, path }\r\n  }\r\n\r\n  if (isImmutable(prevObj) || isImmutable(obj)) {\r\n    return { wasMutated: false }\r\n  }\r\n\r\n  // Gather all keys from prev (tracked) and after objs\r\n  const keysToDetect: Record<string, boolean> = {}\r\n  for (let key in trackedProperty.children) {\r\n    keysToDetect[key] = true\r\n  }\r\n  for (let key in obj) {\r\n    keysToDetect[key] = true\r\n  }\r\n\r\n  for (let key in keysToDetect) {\r\n    const childPath = path ? path + '.' + key : key\r\n    if (ignorePaths.length && ignorePaths.indexOf(childPath) !== -1) {\r\n      continue\r\n    }\r\n\r\n    const result = detectMutations(\r\n      isImmutable,\r\n      ignorePaths,\r\n      trackedProperty.children[key],\r\n      obj[key],\r\n      sameRef,\r\n      childPath\r\n    )\r\n\r\n    if (result.wasMutated) {\r\n      return result\r\n    }\r\n  }\r\n  return { wasMutated: false }\r\n}\r\n\r\ntype IsImmutableFunc = (value: any) => boolean\r\n\r\n/**\r\n * Options for `createImmutableStateInvariantMiddleware()`.\r\n *\r\n * @public\r\n */\r\nexport interface ImmutableStateInvariantMiddlewareOptions {\r\n  /**\r\n    Callback function to check if a value is considered to be immutable.\r\n    This function is applied recursively to every value contained in the state.\r\n    The default implementation will return true for primitive types \r\n    (like numbers, strings, booleans, null and undefined).\r\n   */\r\n  isImmutable?: IsImmutableFunc\r\n  /** \r\n    An array of dot-separated path strings that match named nodes from \r\n    the root state to ignore when checking for immutability.\r\n    Defaults to undefined\r\n   */\r\n  ignoredPaths?: string[]\r\n  /** Print a warning if checks take longer than N ms. Default: 32ms */\r\n  warnAfter?: number\r\n  // @deprecated. Use ignoredPaths\r\n  ignore?: string[]\r\n}\r\n\r\n/**\r\n * Creates a middleware that checks whether any state was mutated in between\r\n * dispatches or during a dispatch. If any mutations are detected, an error is\r\n * thrown.\r\n *\r\n * @param options Middleware options.\r\n *\r\n * @public\r\n */\r\nexport function createImmutableStateInvariantMiddleware(\r\n  options: ImmutableStateInvariantMiddlewareOptions = {}\r\n): Middleware {\r\n  if (process.env.NODE_ENV === 'production') {\r\n    return () => (next) => (action) => next(action)\r\n  }\r\n\r\n  let {\r\n    isImmutable = isImmutableDefault,\r\n    ignoredPaths,\r\n    warnAfter = 32,\r\n    ignore,\r\n  } = options\r\n\r\n  // Alias ignore->ignoredPaths, but prefer ignoredPaths if present\r\n  ignoredPaths = ignoredPaths || ignore\r\n\r\n  const track = trackForMutations.bind(null, isImmutable, ignoredPaths)\r\n\r\n  return ({ getState }) => {\r\n    let state = getState()\r\n    let tracker = track(state)\r\n\r\n    let result\r\n    return (next) => (action) => {\r\n      const measureUtils = getTimeMeasureUtils(\r\n        warnAfter,\r\n        'ImmutableStateInvariantMiddleware'\r\n      )\r\n\r\n      measureUtils.measureTime(() => {\r\n        state = getState()\r\n\r\n        result = tracker.detectMutations()\r\n        // Track before potentially not meeting the invariant\r\n        tracker = track(state)\r\n\r\n        invariant(\r\n          !result.wasMutated,\r\n          `A state mutation was detected between dispatches, in the path '${\r\n            result.path || ''\r\n          }'.  This may cause incorrect behavior. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)`\r\n        )\r\n      })\r\n\r\n      const dispatchedAction = next(action)\r\n\r\n      measureUtils.measureTime(() => {\r\n        state = getState()\r\n\r\n        result = tracker.detectMutations()\r\n        // Track before potentially not meeting the invariant\r\n        tracker = track(state)\r\n\r\n        result.wasMutated &&\r\n          invariant(\r\n            !result.wasMutated,\r\n            `A state mutation was detected inside a dispatch, in the path: ${\r\n              result.path || ''\r\n            }. Take a look at the reducer(s) handling the action ${stringify(\r\n              action\r\n            )}. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)`\r\n          )\r\n      })\r\n\r\n      measureUtils.warnIfExceeded()\r\n\r\n      return dispatchedAction\r\n    }\r\n  }\r\n}\r\n", "import isPlainObject from './isPlainObject'\r\nimport type { Middleware } from 'redux'\r\nimport { getTimeMeasureUtils } from './utils'\r\n\r\n/**\r\n * Returns true if the passed value is \"plain\", i.e. a value that is either\r\n * directly JSON-serializable (boolean, number, string, array, plain object)\r\n * or `undefined`.\r\n *\r\n * @param val The value to check.\r\n *\r\n * @public\r\n */\r\nexport function isPlain(val: any) {\r\n  const type = typeof val\r\n  return (\r\n    val == null ||\r\n    type === 'string' ||\r\n    type === 'boolean' ||\r\n    type === 'number' ||\r\n    Array.isArray(val) ||\r\n    isPlainObject(val)\r\n  )\r\n}\r\n\r\ninterface NonSerializableValue {\r\n  keyPath: string\r\n  value: unknown\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport function findNonSerializableValue(\r\n  value: unknown,\r\n  path: string = '',\r\n  isSerializable: (value: unknown) => boolean = isPlain,\r\n  getEntries?: (value: unknown) => [string, any][],\r\n  ignoredPaths: readonly string[] = []\r\n): NonSerializableValue | false {\r\n  let foundNestedSerializable: NonSerializableValue | false\r\n\r\n  if (!isSerializable(value)) {\r\n    return {\r\n      keyPath: path || '<root>',\r\n      value: value,\r\n    }\r\n  }\r\n\r\n  if (typeof value !== 'object' || value === null) {\r\n    return false\r\n  }\r\n\r\n  const entries = getEntries != null ? getEntries(value) : Object.entries(value)\r\n\r\n  const hasIgnoredPaths = ignoredPaths.length > 0\r\n\r\n  for (const [key, nestedValue] of entries) {\r\n    const nestedPath = path ? path + '.' + key : key\r\n\r\n    if (hasIgnoredPaths && ignoredPaths.indexOf(nestedPath) >= 0) {\r\n      continue\r\n    }\r\n\r\n    if (!isSerializable(nestedValue)) {\r\n      return {\r\n        keyPath: nestedPath,\r\n        value: nestedValue,\r\n      }\r\n    }\r\n\r\n    if (typeof nestedValue === 'object') {\r\n      foundNestedSerializable = findNonSerializableValue(\r\n        nestedValue,\r\n        nestedPath,\r\n        isSerializable,\r\n        getEntries,\r\n        ignoredPaths\r\n      )\r\n\r\n      if (foundNestedSerializable) {\r\n        return foundNestedSerializable\r\n      }\r\n    }\r\n  }\r\n\r\n  return false\r\n}\r\n\r\n/**\r\n * Options for `createSerializableStateInvariantMiddleware()`.\r\n *\r\n * @public\r\n */\r\nexport interface SerializableStateInvariantMiddlewareOptions {\r\n  /**\r\n   * The function to check if a value is considered serializable. This\r\n   * function is applied recursively to every value contained in the\r\n   * state. Defaults to `isPlain()`.\r\n   */\r\n  isSerializable?: (value: any) => boolean\r\n  /**\r\n   * The function that will be used to retrieve entries from each\r\n   * value.  If unspecified, `Object.entries` will be used. Defaults\r\n   * to `undefined`.\r\n   */\r\n  getEntries?: (value: any) => [string, any][]\r\n\r\n  /**\r\n   * An array of action types to ignore when checking for serializability.\r\n   * Defaults to []\r\n   */\r\n  ignoredActions?: string[]\r\n\r\n  /**\r\n   * An array of dot-separated path strings to ignore when checking\r\n   * for serializability, Defaults to ['meta.arg', 'meta.baseQueryMeta']\r\n   */\r\n  ignoredActionPaths?: string[]\r\n\r\n  /**\r\n   * An array of dot-separated path strings to ignore when checking\r\n   * for serializability, Defaults to []\r\n   */\r\n  ignoredPaths?: string[]\r\n  /**\r\n   * Execution time warning threshold. If the middleware takes longer\r\n   * than `warnAfter` ms, a warning will be displayed in the console.\r\n   * Defaults to 32ms.\r\n   */\r\n  warnAfter?: number\r\n\r\n  /**\r\n   * Opt out of checking state. When set to `true`, other state-related params will be ignored.\r\n   */\r\n  ignoreState?: boolean\r\n\r\n  /**\r\n   * Opt out of checking actions. When set to `true`, other action-related params will be ignored.\r\n   */\r\n  ignoreActions?: boolean\r\n}\r\n\r\n/**\r\n * Creates a middleware that, after every state change, checks if the new\r\n * state is serializable. If a non-serializable value is found within the\r\n * state, an error is printed to the console.\r\n *\r\n * @param options Middleware options.\r\n *\r\n * @public\r\n */\r\nexport function createSerializableStateInvariantMiddleware(\r\n  options: SerializableStateInvariantMiddlewareOptions = {}\r\n): Middleware {\r\n  if (process.env.NODE_ENV === 'production') {\r\n    return () => (next) => (action) => next(action)\r\n  }\r\n  const {\r\n    isSerializable = isPlain,\r\n    getEntries,\r\n    ignoredActions = [],\r\n    ignoredActionPaths = ['meta.arg', 'meta.baseQueryMeta'],\r\n    ignoredPaths = [],\r\n    warnAfter = 32,\r\n    ignoreState = false,\r\n    ignoreActions = false,\r\n  } = options\r\n\r\n  return (storeAPI) => (next) => (action) => {\r\n    const result = next(action)\r\n\r\n    const measureUtils = getTimeMeasureUtils(\r\n      warnAfter,\r\n      'SerializableStateInvariantMiddleware'\r\n    )\r\n\r\n    if (\r\n      !ignoreActions &&\r\n      !(ignoredActions.length && ignoredActions.indexOf(action.type) !== -1)\r\n    ) {\r\n      measureUtils.measureTime(() => {\r\n        const foundActionNonSerializableValue = findNonSerializableValue(\r\n          action,\r\n          '',\r\n          isSerializable,\r\n          getEntries,\r\n          ignoredActionPaths\r\n        )\r\n\r\n        if (foundActionNonSerializableValue) {\r\n          const { keyPath, value } = foundActionNonSerializableValue\r\n\r\n          console.error(\r\n            `A non-serializable value was detected in an action, in the path: \\`${keyPath}\\`. Value:`,\r\n            value,\r\n            '\\nTake a look at the logic that dispatched this action: ',\r\n            action,\r\n            '\\n(See https://redux.js.org/faq/actions#why-should-type-be-a-string-or-at-least-serializable-why-should-my-action-types-be-constants)',\r\n            '\\n(To allow non-serializable values see: https://redux-toolkit.js.org/usage/usage-guide#working-with-non-serializable-data)'\r\n          )\r\n        }\r\n      })\r\n    }\r\n\r\n    if (!ignoreState) {\r\n      measureUtils.measureTime(() => {\r\n        const state = storeAPI.getState()\r\n\r\n        const foundStateNonSerializableValue = findNonSerializableValue(\r\n          state,\r\n          '',\r\n          isSerializable,\r\n          getEntries,\r\n          ignoredPaths\r\n        )\r\n\r\n        if (foundStateNonSerializableValue) {\r\n          const { keyPath, value } = foundStateNonSerializableValue\r\n\r\n          console.error(\r\n            `A non-serializable value was detected in the state, in the path: \\`${keyPath}\\`. Value:`,\r\n            value,\r\n            `\r\nTake a look at the reducer(s) handling this action type: ${action.type}.\r\n(See https://redux.js.org/faq/organizing-state#can-i-put-functions-promises-or-other-non-serializable-items-in-my-store-state)`\r\n          )\r\n        }\r\n      })\r\n\r\n      measureUtils.warnIfExceeded()\r\n    }\r\n\r\n    return result\r\n  }\r\n}\r\n", "import type { Action } from 'redux'\r\nimport type {\r\n  IsUnknownOrNonInferrable,\r\n  IfMaybeUndefined,\r\n  IfVoid,\r\n  IsAny,\r\n} from './tsHelpers'\r\nimport isPlainObject from './isPlainObject'\r\n\r\n/**\r\n * An action with a string type and an associated payload. This is the\r\n * type of action returned by `createAction()` action creators.\r\n *\r\n * @template P The type of the action's payload.\r\n * @template T the type used for the action type.\r\n * @template M The type of the action's meta (optional)\r\n * @template E The type of the action's error (optional)\r\n *\r\n * @public\r\n */\r\nexport type PayloadAction<\r\n  P = void,\r\n  T extends string = string,\r\n  M = never,\r\n  E = never\r\n> = {\r\n  payload: P\r\n  type: T\r\n} & ([M] extends [never]\r\n  ? {}\r\n  : {\r\n      meta: M\r\n    }) &\r\n  ([E] extends [never]\r\n    ? {}\r\n    : {\r\n        error: E\r\n      })\r\n\r\n/**\r\n * A \"prepare\" method to be used as the second parameter of `createAction`.\r\n * Takes any number of arguments and returns a Flux Standard Action without\r\n * type (will be added later) that *must* contain a payload (might be undefined).\r\n *\r\n * @public\r\n */\r\nexport type PrepareAction<P> =\r\n  | ((...args: any[]) => { payload: P })\r\n  | ((...args: any[]) => { payload: P; meta: any })\r\n  | ((...args: any[]) => { payload: P; error: any })\r\n  | ((...args: any[]) => { payload: P; meta: any; error: any })\r\n\r\n/**\r\n * Internal version of `ActionCreatorWithPreparedPayload`. Not to be used externally.\r\n *\r\n * @internal\r\n */\r\nexport type _ActionCreatorWithPreparedPayload<\r\n  PA extends PrepareAction<any> | void,\r\n  T extends string = string\r\n> = PA extends PrepareAction<infer P>\r\n  ? ActionCreatorWithPreparedPayload<\r\n      Parameters<PA>,\r\n      P,\r\n      T,\r\n      ReturnType<PA> extends {\r\n        error: infer E\r\n      }\r\n        ? E\r\n        : never,\r\n      ReturnType<PA> extends {\r\n        meta: infer M\r\n      }\r\n        ? M\r\n        : never\r\n    >\r\n  : void\r\n\r\n/**\r\n * Basic type for all action creators.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n */\r\nexport interface BaseActionCreator<P, T extends string, M = never, E = never> {\r\n  type: T\r\n  match: (action: Action<unknown>) => action is PayloadAction<P, T, M, E>\r\n}\r\n\r\n/**\r\n * An action creator that takes multiple arguments that are passed\r\n * to a `PrepareAction` method to create the final Action.\r\n * @typeParam Args arguments for the action creator function\r\n * @typeParam P `payload` type\r\n * @typeParam T `type` name\r\n * @typeParam E optional `error` type\r\n * @typeParam M optional `meta` type\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithPreparedPayload<\r\n  Args extends unknown[],\r\n  P,\r\n  T extends string = string,\r\n  E = never,\r\n  M = never\r\n> extends BaseActionCreator<P, T, M, E> {\r\n  /**\r\n   * Calling this {@link redux#ActionCreator} with `Args` will return\r\n   * an Action with a payload of type `P` and (depending on the `PrepareAction`\r\n   * method used) a `meta`- and `error` property of types `M` and `E` respectively.\r\n   */\r\n  (...args: Args): PayloadAction<P, T, M, E>\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that takes an optional payload of type `P`.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithOptionalPayload<P, T extends string = string>\r\n  extends BaseActionCreator<P, T> {\r\n  /**\r\n   * Calling this {@link redux#ActionCreator} with an argument will\r\n   * return a {@link PayloadAction} of type `T` with a payload of `P`.\r\n   * Calling it without an argument will return a PayloadAction with a payload of `undefined`.\r\n   */\r\n  (payload?: P): PayloadAction<P, T>\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that takes no payload.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithoutPayload<T extends string = string>\r\n  extends BaseActionCreator<undefined, T> {\r\n  /**\r\n   * Calling this {@link redux#ActionCreator} will\r\n   * return a {@link PayloadAction} of type `T` with a payload of `undefined`\r\n   */\r\n  (noArgument: void): PayloadAction<undefined, T>\r\n}\r\n\r\n/**\r\n * An action creator of type `T` that requires a payload of type P.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithPayload<P, T extends string = string>\r\n  extends BaseActionCreator<P, T> {\r\n  /**\r\n   * Calling this {@link redux#ActionCreator} with an argument will\r\n   * return a {@link PayloadAction} of type `T` with a payload of `P`\r\n   */\r\n  (payload: P): PayloadAction<P, T>\r\n}\r\n\r\n/**\r\n * An action creator of type `T` whose `payload` type could not be inferred. Accepts everything as `payload`.\r\n *\r\n * @inheritdoc {redux#ActionCreator}\r\n *\r\n * @public\r\n */\r\nexport interface ActionCreatorWithNonInferrablePayload<\r\n  T extends string = string\r\n> extends BaseActionCreator<unknown, T> {\r\n  /**\r\n   * Calling this {@link redux#ActionCreator} with an argument will\r\n   * return a {@link PayloadAction} of type `T` with a payload\r\n   * of exactly the type of the argument.\r\n   */\r\n  <PT extends unknown>(payload: PT): PayloadAction<PT, T>\r\n}\r\n\r\n/**\r\n * An action creator that produces actions with a `payload` attribute.\r\n *\r\n * @typeParam P the `payload` type\r\n * @typeParam T the `type` of the resulting action\r\n * @typeParam PA if the resulting action is preprocessed by a `prepare` method, the signature of said method.\r\n *\r\n * @public\r\n */\r\nexport type PayloadActionCreator<\r\n  P = void,\r\n  T extends string = string,\r\n  PA extends PrepareAction<P> | void = void\r\n> = IfPrepareActionMethodProvided<\r\n  PA,\r\n  _ActionCreatorWithPreparedPayload<PA, T>,\r\n  // else\r\n  IsAny<\r\n    P,\r\n    ActionCreatorWithPayload<any, T>,\r\n    IsUnknownOrNonInferrable<\r\n      P,\r\n      ActionCreatorWithNonInferrablePayload<T>,\r\n      // else\r\n      IfVoid<\r\n        P,\r\n        ActionCreatorWithoutPayload<T>,\r\n        // else\r\n        IfMaybeUndefined<\r\n          P,\r\n          ActionCreatorWithOptionalPayload<P, T>,\r\n          // else\r\n          ActionCreatorWithPayload<P, T>\r\n        >\r\n      >\r\n    >\r\n  >\r\n>\r\n\r\n/**\r\n * A utility function to create an action creator for the given action type\r\n * string. The action creator accepts a single argument, which will be included\r\n * in the action object as a field called payload. The action creator function\r\n * will also have its toString() overriden so that it returns the action type,\r\n * allowing it to be used in reducer logic that is looking for that action type.\r\n *\r\n * @param type The action type to use for created actions.\r\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\r\n *                If this is given, the resulting action creator will pass its arguments to this method to calculate payload & meta.\r\n *\r\n * @public\r\n */\r\nexport function createAction<P = void, T extends string = string>(\r\n  type: T\r\n): PayloadActionCreator<P, T>\r\n\r\n/**\r\n * A utility function to create an action creator for the given action type\r\n * string. The action creator accepts a single argument, which will be included\r\n * in the action object as a field called payload. The action creator function\r\n * will also have its toString() overriden so that it returns the action type,\r\n * allowing it to be used in reducer logic that is looking for that action type.\r\n *\r\n * @param type The action type to use for created actions.\r\n * @param prepare (optional) a method that takes any number of arguments and returns { payload } or { payload, meta }.\r\n *                If this is given, the resulting action creator will pass its arguments to this method to calculate payload & meta.\r\n *\r\n * @public\r\n */\r\nexport function createAction<\r\n  PA extends PrepareAction<any>,\r\n  T extends string = string\r\n>(\r\n  type: T,\r\n  prepareAction: PA\r\n): PayloadActionCreator<ReturnType<PA>['payload'], T, PA>\r\n\r\nexport function createAction(type: string, prepareAction?: Function): any {\r\n  function actionCreator(...args: any[]) {\r\n    if (prepareAction) {\r\n      let prepared = prepareAction(...args)\r\n      if (!prepared) {\r\n        throw new Error('prepareAction did not return an object')\r\n      }\r\n\r\n      return {\r\n        type,\r\n        payload: prepared.payload,\r\n        ...('meta' in prepared && { meta: prepared.meta }),\r\n        ...('error' in prepared && { error: prepared.error }),\r\n      }\r\n    }\r\n    return { type, payload: args[0] }\r\n  }\r\n\r\n  actionCreator.toString = () => `${type}`\r\n\r\n  actionCreator.type = type\r\n\r\n  actionCreator.match = (action: Action<unknown>): action is PayloadAction =>\r\n    action.type === type\r\n\r\n  return actionCreator\r\n}\r\n\r\nexport function isFSA(action: unknown): action is {\r\n  type: string\r\n  payload?: unknown\r\n  error?: unknown\r\n  meta?: unknown\r\n} {\r\n  return (\r\n    isPlainObject(action) &&\r\n    typeof (action as any).type === 'string' &&\r\n    Object.keys(action).every(isValidKey)\r\n  )\r\n}\r\n\r\nfunction isValidKey(key: string) {\r\n  return ['type', 'payload', 'error', 'meta'].indexOf(key) > -1\r\n}\r\n\r\n/**\r\n * Returns the action type of the actions created by the passed\r\n * `createAction()`-generated action creator (arbitrary action creators\r\n * are not supported).\r\n *\r\n * @param action The action creator whose action type to get.\r\n * @returns The action type used by the action creator.\r\n *\r\n * @public\r\n */\r\nexport function getType<T extends string>(\r\n  actionCreator: PayloadActionCreator<any, T>\r\n): T {\r\n  return `${actionCreator}` as T\r\n}\r\n\r\n// helper types for more readable typings\r\n\r\ntype IfPrepareActionMethodProvided<\r\n  PA extends PrepareAction<any> | void,\r\n  True,\r\n  False\r\n> = PA extends (...args: any[]) => any ? True : False\r\n", "import type { Draft } from 'immer'\r\nimport createNextState, { isDraft, isDraftable } from 'immer'\r\nimport type { AnyAction, Action, Reducer } from 'redux'\r\nimport type { ActionReducerMapBuilder } from './mapBuilders'\r\nimport { executeReducerBuilderCallback } from './mapBuilders'\r\nimport type { NoInfer } from './tsHelpers'\r\nimport { freezeDraftable } from './utils'\r\n\r\n/**\r\n * Defines a mapping from action types to corresponding action object shapes.\r\n *\r\n * @deprecated This should not be used manually - it is only used for internal\r\n *             inference purposes and should not have any further value.\r\n *             It might be removed in the future.\r\n * @public\r\n */\r\nexport type Actions<T extends keyof any = string> = Record<T, Action>\r\n\r\n/**\r\n * @deprecated use `TypeGuard` instead\r\n */\r\nexport interface ActionMatcher<A extends AnyAction> {\r\n  (action: AnyAction): action is A\r\n}\r\n\r\nexport type ActionMatcherDescription<S, A extends AnyAction> = {\r\n  matcher: ActionMatcher<A>\r\n  reducer: CaseReducer<S, NoInfer<A>>\r\n}\r\n\r\nexport type ReadonlyActionMatcherDescriptionCollection<S> = ReadonlyArray<\r\n  ActionMatcherDescription<S, any>\r\n>\r\n\r\nexport type ActionMatcherDescriptionCollection<S> = Array<\r\n  ActionMatcherDescription<S, any>\r\n>\r\n\r\n/**\r\n * A *case reducer* is a reducer function for a specific action type. Case\r\n * reducers can be composed to full reducers using `createReducer()`.\r\n *\r\n * Unlike a normal Redux reducer, a case reducer is never called with an\r\n * `undefined` state to determine the initial state. Instead, the initial\r\n * state is explicitly specified as an argument to `createReducer()`.\r\n *\r\n * In addition, a case reducer can choose to mutate the passed-in `state`\r\n * value directly instead of returning a new state. This does not actually\r\n * cause the store state to be mutated directly; instead, thanks to\r\n * [immer](https://github.com/mweststrate/immer), the mutations are\r\n * translated to copy operations that result in a new state.\r\n *\r\n * @public\r\n */\r\nexport type CaseReducer<S = any, A extends Action = AnyAction> = (\r\n  state: Draft<S>,\r\n  action: A\r\n) => S | void | Draft<S>\r\n\r\n/**\r\n * A mapping from action types to case reducers for `createReducer()`.\r\n *\r\n * @deprecated This should not be used manually - it is only used\r\n *             for internal inference purposes and using it manually\r\n *             would lead to type erasure.\r\n *             It might be removed in the future.\r\n * @public\r\n */\r\nexport type CaseReducers<S, AS extends Actions> = {\r\n  [T in keyof AS]: AS[T] extends Action ? CaseReducer<S, AS[T]> : void\r\n}\r\n\r\nexport type NotFunction<T> = T extends Function ? never : T\r\n\r\nfunction isStateFunction<S>(x: unknown): x is () => S {\r\n  return typeof x === 'function'\r\n}\r\n\r\nexport type ReducerWithInitialState<S extends NotFunction<any>> = Reducer<S> & {\r\n  getInitialState: () => S\r\n}\r\n\r\nlet hasWarnedAboutObjectNotation = false\r\n\r\n/**\r\n * A utility function that allows defining a reducer as a mapping from action\r\n * type to *case reducer* functions that handle these action types. The\r\n * reducer's initial state is passed as the first argument.\r\n *\r\n * @remarks\r\n * The body of every case reducer is implicitly wrapped with a call to\r\n * `produce()` from the [immer](https://github.com/mweststrate/immer) library.\r\n * This means that rather than returning a new state object, you can also\r\n * mutate the passed-in state object directly; these mutations will then be\r\n * automatically and efficiently translated into copies, giving you both\r\n * convenience and immutability.\r\n *\r\n * @overloadSummary\r\n * This overload accepts a callback function that receives a `builder` object as its argument.\r\n * That builder provides `addCase`, `addMatcher` and `addDefaultCase` functions that may be\r\n * called to define what actions this reducer will handle.\r\n *\r\n * @param initialState - `State | (() => State)`: The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n * @param builderCallback - `(builder: Builder) => void` A callback that receives a *builder* object to define\r\n *   case reducers via calls to `builder.addCase(actionCreatorOrType, reducer)`.\r\n * @example\r\n```ts\r\nimport {\r\n  createAction,\r\n  createReducer,\r\n  AnyAction,\r\n  PayloadAction,\r\n} from \"@reduxjs/toolkit\";\r\n\r\nconst increment = createAction<number>(\"increment\");\r\nconst decrement = createAction<number>(\"decrement\");\r\n\r\nfunction isActionWithNumberPayload(\r\n  action: AnyAction\r\n): action is PayloadAction<number> {\r\n  return typeof action.payload === \"number\";\r\n}\r\n\r\nconst reducer = createReducer(\r\n  {\r\n    counter: 0,\r\n    sumOfNumberPayloads: 0,\r\n    unhandledActions: 0,\r\n  },\r\n  (builder) => {\r\n    builder\r\n      .addCase(increment, (state, action) => {\r\n        // action is inferred correctly here\r\n        state.counter += action.payload;\r\n      })\r\n      // You can chain calls, or have separate `builder.addCase()` lines each time\r\n      .addCase(decrement, (state, action) => {\r\n        state.counter -= action.payload;\r\n      })\r\n      // You can apply a \"matcher function\" to incoming actions\r\n      .addMatcher(isActionWithNumberPayload, (state, action) => {})\r\n      // and provide a default case if no other handlers matched\r\n      .addDefaultCase((state, action) => {});\r\n  }\r\n);\r\n```\r\n * @public\r\n */\r\nexport function createReducer<S extends NotFunction<any>>(\r\n  initialState: S | (() => S),\r\n  builderCallback: (builder: ActionReducerMapBuilder<S>) => void\r\n): ReducerWithInitialState<S>\r\n\r\n/**\r\n * A utility function that allows defining a reducer as a mapping from action\r\n * type to *case reducer* functions that handle these action types. The\r\n * reducer's initial state is passed as the first argument.\r\n *\r\n * The body of every case reducer is implicitly wrapped with a call to\r\n * `produce()` from the [immer](https://github.com/mweststrate/immer) library.\r\n * This means that rather than returning a new state object, you can also\r\n * mutate the passed-in state object directly; these mutations will then be\r\n * automatically and efficiently translated into copies, giving you both\r\n * convenience and immutability.\r\n * \r\n * @overloadSummary\r\n * This overload accepts an object where the keys are string action types, and the values\r\n * are case reducer functions to handle those action types.\r\n *\r\n * @param initialState - `State | (() => State)`: The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n * @param actionsMap - An object mapping from action types to _case reducers_, each of which handles one specific action type.\r\n * @param actionMatchers - An array of matcher definitions in the form `{matcher, reducer}`.\r\n *   All matching reducers will be executed in order, independently if a case reducer matched or not.\r\n * @param defaultCaseReducer - A \"default case\" reducer that is executed if no case reducer and no matcher\r\n *   reducer was executed for this action.\r\n *\r\n * @example\r\n```js\r\nconst counterReducer = createReducer(0, {\r\n  increment: (state, action) => state + action.payload,\r\n  decrement: (state, action) => state - action.payload\r\n})\r\n\r\n// Alternately, use a \"lazy initializer\" to provide the initial state\r\n// (works with either form of createReducer)\r\nconst initialState = () => 0\r\nconst counterReducer = createReducer(initialState, {\r\n  increment: (state, action) => state + action.payload,\r\n  decrement: (state, action) => state - action.payload\r\n})\r\n```\r\n \r\n * Action creators that were generated using [`createAction`](./createAction) may be used directly as the keys here, using computed property syntax:\r\n\r\n```js\r\nconst increment = createAction('increment')\r\nconst decrement = createAction('decrement')\r\n\r\nconst counterReducer = createReducer(0, {\r\n  [increment]: (state, action) => state + action.payload,\r\n  [decrement.type]: (state, action) => state - action.payload\r\n})\r\n```\r\n * @public\r\n */\r\nexport function createReducer<\r\n  S extends NotFunction<any>,\r\n  CR extends CaseReducers<S, any> = CaseReducers<S, any>\r\n>(\r\n  initialState: S | (() => S),\r\n  actionsMap: CR,\r\n  actionMatchers?: ActionMatcherDescriptionCollection<S>,\r\n  defaultCaseReducer?: CaseReducer<S>\r\n): ReducerWithInitialState<S>\r\n\r\nexport function createReducer<S extends NotFunction<any>>(\r\n  initialState: S | (() => S),\r\n  mapOrBuilderCallback:\r\n    | CaseReducers<S, any>\r\n    | ((builder: ActionReducerMapBuilder<S>) => void),\r\n  actionMatchers: ReadonlyActionMatcherDescriptionCollection<S> = [],\r\n  defaultCaseReducer?: CaseReducer<S>\r\n): ReducerWithInitialState<S> {\r\n  if (process.env.NODE_ENV !== 'production') {\r\n    if (typeof mapOrBuilderCallback === 'object') {\r\n      if (!hasWarnedAboutObjectNotation) {\r\n        hasWarnedAboutObjectNotation = true\r\n        console.warn(\r\n          \"The object notation for `createReducer` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer\"\r\n        )\r\n      }\r\n    }\r\n  }\r\n\r\n  let [actionsMap, finalActionMatchers, finalDefaultCaseReducer] =\r\n    typeof mapOrBuilderCallback === 'function'\r\n      ? executeReducerBuilderCallback(mapOrBuilderCallback)\r\n      : [mapOrBuilderCallback, actionMatchers, defaultCaseReducer]\r\n\r\n  // Ensure the initial state gets frozen either way (if draftable)\r\n  let getInitialState: () => S\r\n  if (isStateFunction(initialState)) {\r\n    getInitialState = () => freezeDraftable(initialState())\r\n  } else {\r\n    const frozenInitialState = freezeDraftable(initialState)\r\n    getInitialState = () => frozenInitialState\r\n  }\r\n\r\n  function reducer(state = getInitialState(), action: any): S {\r\n    let caseReducers = [\r\n      actionsMap[action.type],\r\n      ...finalActionMatchers\r\n        .filter(({ matcher }) => matcher(action))\r\n        .map(({ reducer }) => reducer),\r\n    ]\r\n    if (caseReducers.filter((cr) => !!cr).length === 0) {\r\n      caseReducers = [finalDefaultCaseReducer]\r\n    }\r\n\r\n    return caseReducers.reduce((previousState, caseReducer): S => {\r\n      if (caseReducer) {\r\n        if (isDraft(previousState)) {\r\n          // If it's already a draft, we must already be inside a `createNextState` call,\r\n          // likely because this is being wrapped in `createReducer`, `createSlice`, or nested\r\n          // inside an existing draft. It's safe to just pass the draft to the mutator.\r\n          const draft = previousState as Draft<S> // We can assume this is already a draft\r\n          const result = caseReducer(draft, action)\r\n\r\n          if (result === undefined) {\r\n            return previousState\r\n          }\r\n\r\n          return result as S\r\n        } else if (!isDraftable(previousState)) {\r\n          // If state is not draftable (ex: a primitive, such as 0), we want to directly\r\n          // return the caseReducer func and not wrap it with produce.\r\n          const result = caseReducer(previousState as any, action)\r\n\r\n          if (result === undefined) {\r\n            if (previousState === null) {\r\n              return previousState\r\n            }\r\n            throw Error(\r\n              'A case reducer on a non-draftable value must not return undefined'\r\n            )\r\n          }\r\n\r\n          return result as S\r\n        } else {\r\n          // @ts-ignore createNextState() produces an Immutable<Draft<S>> rather\r\n          // than an Immutable<S>, and TypeScript cannot find out how to reconcile\r\n          // these two types.\r\n          return createNextState(previousState, (draft: Draft<S>) => {\r\n            return caseReducer(draft, action)\r\n          })\r\n        }\r\n      }\r\n\r\n      return previousState\r\n    }, state)\r\n  }\r\n\r\n  reducer.getInitialState = getInitialState\r\n\r\n  return reducer as ReducerWithInitialState<S>\r\n}\r\n", "import type { Action, AnyAction } from 'redux'\r\nimport type {\r\n  CaseReducer,\r\n  CaseReducers,\r\n  ActionMatcherDescriptionCollection,\r\n} from './createReducer'\r\nimport type { TypeGuard } from './tsHelpers'\r\n\r\nexport interface TypedActionCreator<Type extends string> {\r\n  (...args: any[]): Action<Type>\r\n  type: Type\r\n}\r\n\r\n/**\r\n * A builder for an action <-> reducer map.\r\n *\r\n * @public\r\n */\r\nexport interface ActionReducerMapBuilder<State> {\r\n  /**\r\n   * Adds a case reducer to handle a single exact action type.\r\n   * @remarks\r\n   * All calls to `builder.addCase` must come before any calls to `builder.addMatcher` or `builder.addDefaultCase`.\r\n   * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\r\n   * @param reducer - The actual case reducer function.\r\n   */\r\n  addCase<ActionCreator extends TypedActionCreator<string>>(\r\n    actionCreator: ActionCreator,\r\n    reducer: CaseReducer<State, ReturnType<ActionCreator>>\r\n  ): ActionReducerMapBuilder<State>\r\n  /**\r\n   * Adds a case reducer to handle a single exact action type.\r\n   * @remarks\r\n   * All calls to `builder.addCase` must come before any calls to `builder.addMatcher` or `builder.addDefaultCase`.\r\n   * @param actionCreator - Either a plain action type string, or an action creator generated by [`createAction`](./createAction) that can be used to determine the action type.\r\n   * @param reducer - The actual case reducer function.\r\n   */\r\n  addCase<Type extends string, A extends Action<Type>>(\r\n    type: Type,\r\n    reducer: CaseReducer<State, A>\r\n  ): ActionReducerMapBuilder<State>\r\n\r\n  /**\r\n   * Allows you to match your incoming actions against your own filter function instead of only the `action.type` property.\r\n   * @remarks\r\n   * If multiple matcher reducers match, all of them will be executed in the order\r\n   * they were defined in - even if a case reducer already matched.\r\n   * All calls to `builder.addMatcher` must come after any calls to `builder.addCase` and before any calls to `builder.addDefaultCase`.\r\n   * @param matcher - A matcher function. In TypeScript, this should be a [type predicate](https://www.typescriptlang.org/docs/handbook/advanced-types.html#using-type-predicates)\r\n   *   function\r\n   * @param reducer - The actual case reducer function.\r\n   *\r\n   * @example\r\n```ts\r\nimport {\r\n  createAction,\r\n  createReducer,\r\n  AsyncThunk,\r\n  AnyAction,\r\n} from \"@reduxjs/toolkit\";\r\n\r\ntype GenericAsyncThunk = AsyncThunk<unknown, unknown, any>;\r\n\r\ntype PendingAction = ReturnType<GenericAsyncThunk[\"pending\"]>;\r\ntype RejectedAction = ReturnType<GenericAsyncThunk[\"rejected\"]>;\r\ntype FulfilledAction = ReturnType<GenericAsyncThunk[\"fulfilled\"]>;\r\n\r\nconst initialState: Record<string, string> = {};\r\nconst resetAction = createAction(\"reset-tracked-loading-state\");\r\n\r\nfunction isPendingAction(action: AnyAction): action is PendingAction {\r\n  return action.type.endsWith(\"/pending\");\r\n}\r\n\r\nconst reducer = createReducer(initialState, (builder) => {\r\n  builder\r\n    .addCase(resetAction, () => initialState)\r\n    // matcher can be defined outside as a type predicate function\r\n    .addMatcher(isPendingAction, (state, action) => {\r\n      state[action.meta.requestId] = \"pending\";\r\n    })\r\n    .addMatcher(\r\n      // matcher can be defined inline as a type predicate function\r\n      (action): action is RejectedAction => action.type.endsWith(\"/rejected\"),\r\n      (state, action) => {\r\n        state[action.meta.requestId] = \"rejected\";\r\n      }\r\n    )\r\n    // matcher can just return boolean and the matcher can receive a generic argument\r\n    .addMatcher<FulfilledAction>(\r\n      (action) => action.type.endsWith(\"/fulfilled\"),\r\n      (state, action) => {\r\n        state[action.meta.requestId] = \"fulfilled\";\r\n      }\r\n    );\r\n});\r\n```\r\n   */\r\n  addMatcher<A>(\r\n    matcher: TypeGuard<A> | ((action: any) => boolean),\r\n    reducer: CaseReducer<State, A extends AnyAction ? A : A & AnyAction>\r\n  ): Omit<ActionReducerMapBuilder<State>, 'addCase'>\r\n\r\n  /**\r\n   * Adds a \"default case\" reducer that is executed if no case reducer and no matcher\r\n   * reducer was executed for this action.\r\n   * @param reducer - The fallback \"default case\" reducer function.\r\n   *\r\n   * @example\r\n```ts\r\nimport { createReducer } from '@reduxjs/toolkit'\r\nconst initialState = { otherActions: 0 }\r\nconst reducer = createReducer(initialState, builder => {\r\n  builder\r\n    // .addCase(...)\r\n    // .addMatcher(...)\r\n    .addDefaultCase((state, action) => {\r\n      state.otherActions++\r\n    })\r\n})\r\n```\r\n   */\r\n  addDefaultCase(reducer: CaseReducer<State, AnyAction>): {}\r\n}\r\n\r\nexport function executeReducerBuilderCallback<S>(\r\n  builderCallback: (builder: ActionReducerMapBuilder<S>) => void\r\n): [\r\n  CaseReducers<S, any>,\r\n  ActionMatcherDescriptionCollection<S>,\r\n  CaseReducer<S, AnyAction> | undefined\r\n] {\r\n  const actionsMap: CaseReducers<S, any> = {}\r\n  const actionMatchers: ActionMatcherDescriptionCollection<S> = []\r\n  let defaultCaseReducer: CaseReducer<S, AnyAction> | undefined\r\n  const builder = {\r\n    addCase(\r\n      typeOrActionCreator: string | TypedActionCreator<any>,\r\n      reducer: CaseReducer<S>\r\n    ) {\r\n      if (process.env.NODE_ENV !== 'production') {\r\n        /*\r\n         to keep the definition by the user in line with actual behavior, \r\n         we enforce `addCase` to always be called before calling `addMatcher`\r\n         as matching cases take precedence over matchers\r\n         */\r\n        if (actionMatchers.length > 0) {\r\n          throw new Error(\r\n            '`builder.addCase` should only be called before calling `builder.addMatcher`'\r\n          )\r\n        }\r\n        if (defaultCaseReducer) {\r\n          throw new Error(\r\n            '`builder.addCase` should only be called before calling `builder.addDefaultCase`'\r\n          )\r\n        }\r\n      }\r\n      const type =\r\n        typeof typeOrActionCreator === 'string'\r\n          ? typeOrActionCreator\r\n          : typeOrActionCreator.type\r\n      if (type in actionsMap) {\r\n        throw new Error(\r\n          'addCase cannot be called with two reducers for the same action type'\r\n        )\r\n      }\r\n      actionsMap[type] = reducer\r\n      return builder\r\n    },\r\n    addMatcher<A>(\r\n      matcher: TypeGuard<A>,\r\n      reducer: CaseReducer<S, A extends AnyAction ? A : A & AnyAction>\r\n    ) {\r\n      if (process.env.NODE_ENV !== 'production') {\r\n        if (defaultCaseReducer) {\r\n          throw new Error(\r\n            '`builder.addMatcher` should only be called before calling `builder.addDefaultCase`'\r\n          )\r\n        }\r\n      }\r\n      actionMatchers.push({ matcher, reducer })\r\n      return builder\r\n    },\r\n    addDefaultCase(reducer: CaseReducer<S, AnyAction>) {\r\n      if (process.env.NODE_ENV !== 'production') {\r\n        if (defaultCaseReducer) {\r\n          throw new Error('`builder.addDefaultCase` can only be called once')\r\n        }\r\n      }\r\n      defaultCaseReducer = reducer\r\n      return builder\r\n    },\r\n  }\r\n  builderCallback(builder)\r\n  return [actionsMap, actionMatchers, defaultCaseReducer]\r\n}\r\n", "import type { AnyAction, Reducer } from 'redux'\r\nimport { createNextState } from '.'\r\nimport type {\r\n  ActionCreatorWithoutPayload,\r\n  PayloadAction,\r\n  PayloadActionCreator,\r\n  PrepareAction,\r\n  _ActionCreatorWithPreparedPayload,\r\n} from './createAction'\r\nimport { createAction } from './createAction'\r\nimport type {\r\n  CaseReducer,\r\n  CaseReducers,\r\n  ReducerWithInitialState,\r\n} from './createReducer'\r\nimport { createReducer, NotFunction } from './createReducer'\r\nimport type { ActionReducerMapBuilder } from './mapBuilders'\r\nimport { executeReducerBuilderCallback } from './mapBuilders'\r\nimport type { NoInfer } from './tsHelpers'\r\nimport { freezeDraftable } from './utils'\r\n\r\nlet hasWarnedAboutObjectNotation = false\r\n\r\n/**\r\n * An action creator attached to a slice.\r\n *\r\n * @deprecated please use PayloadActionCreator directly\r\n *\r\n * @public\r\n */\r\nexport type SliceActionCreator<P> = PayloadActionCreator<P>\r\n\r\n/**\r\n * The return value of `createSlice`\r\n *\r\n * @public\r\n */\r\nexport interface Slice<\r\n  State = any,\r\n  CaseReducers extends SliceCaseReducers<State> = SliceCaseReducers<State>,\r\n  Name extends string = string\r\n> {\r\n  /**\r\n   * The slice name.\r\n   */\r\n  name: Name\r\n\r\n  /**\r\n   * The slice's reducer.\r\n   */\r\n  reducer: Reducer<State>\r\n\r\n  /**\r\n   * Action creators for the types of actions that are handled by the slice\r\n   * reducer.\r\n   */\r\n  actions: CaseReducerActions<CaseReducers, Name>\r\n\r\n  /**\r\n   * The individual case reducer functions that were passed in the `reducers` parameter.\r\n   * This enables reuse and testing if they were defined inline when calling `createSlice`.\r\n   */\r\n  caseReducers: SliceDefinedCaseReducers<CaseReducers>\r\n\r\n  /**\r\n   * Provides access to the initial state value given to the slice.\r\n   * If a lazy state initializer was provided, it will be called and a fresh value returned.\r\n   */\r\n  getInitialState: () => State\r\n}\r\n\r\n/**\r\n * Options for `createSlice()`.\r\n *\r\n * @public\r\n */\r\nexport interface CreateSliceOptions<\r\n  State = any,\r\n  CR extends SliceCaseReducers<State> = SliceCaseReducers<State>,\r\n  Name extends string = string\r\n> {\r\n  /**\r\n   * The slice's name. Used to namespace the generated action types.\r\n   */\r\n  name: Name\r\n\r\n  /**\r\n   * The initial state that should be used when the reducer is called the first time. This may also be a \"lazy initializer\" function, which should return an initial state value when called. This will be used whenever the reducer is called with `undefined` as its state value, and is primarily useful for cases like reading initial state from `localStorage`.\r\n   */\r\n  initialState: State | (() => State)\r\n\r\n  /**\r\n   * A mapping from action types to action-type-specific *case reducer*\r\n   * functions. For every action type, a matching action creator will be\r\n   * generated using `createAction()`.\r\n   */\r\n  reducers: ValidateSliceCaseReducers<State, CR>\r\n\r\n  /**\r\n   * A callback that receives a *builder* object to define\r\n   * case reducers via calls to `builder.addCase(actionCreatorOrType, reducer)`.\r\n   * \r\n   * Alternatively, a mapping from action types to action-type-specific *case reducer*\r\n   * functions. These reducers should have existing action types used\r\n   * as the keys, and action creators will _not_ be generated.\r\n   * \r\n   * @example\r\n```ts\r\nimport { createAction, createSlice, Action, AnyAction } from '@reduxjs/toolkit'\r\nconst incrementBy = createAction<number>('incrementBy')\r\nconst decrement = createAction('decrement')\r\n\r\ninterface RejectedAction extends Action {\r\n  error: Error\r\n}\r\n\r\nfunction isRejectedAction(action: AnyAction): action is RejectedAction {\r\n  return action.type.endsWith('rejected')\r\n}\r\n\r\ncreateSlice({\r\n  name: 'counter',\r\n  initialState: 0,\r\n  reducers: {},\r\n  extraReducers: builder => {\r\n    builder\r\n      .addCase(incrementBy, (state, action) => {\r\n        // action is inferred correctly here if using TS\r\n      })\r\n      // You can chain calls, or have separate `builder.addCase()` lines each time\r\n      .addCase(decrement, (state, action) => {})\r\n      // You can match a range of action types\r\n      .addMatcher(\r\n        isRejectedAction,\r\n        // `action` will be inferred as a RejectedAction due to isRejectedAction being defined as a type guard\r\n        (state, action) => {}\r\n      )\r\n      // and provide a default case if no other handlers matched\r\n      .addDefaultCase((state, action) => {})\r\n    }\r\n})\r\n```\r\n   */\r\n  extraReducers?:\r\n    | CaseReducers<NoInfer<State>, any>\r\n    | ((builder: ActionReducerMapBuilder<NoInfer<State>>) => void)\r\n}\r\n\r\n/**\r\n * A CaseReducer with a `prepare` method.\r\n *\r\n * @public\r\n */\r\nexport type CaseReducerWithPrepare<State, Action extends PayloadAction> = {\r\n  reducer: CaseReducer<State, Action>\r\n  prepare: PrepareAction<Action['payload']>\r\n}\r\n\r\n/**\r\n * The type describing a slice's `reducers` option.\r\n *\r\n * @public\r\n */\r\nexport type SliceCaseReducers<State> = {\r\n  [K: string]:\r\n    | CaseReducer<State, PayloadAction<any>>\r\n    | CaseReducerWithPrepare<State, PayloadAction<any, string, any, any>>\r\n}\r\n\r\ntype SliceActionType<\r\n  SliceName extends string,\r\n  ActionName extends keyof any\r\n> = ActionName extends string | number ? `${SliceName}/${ActionName}` : string\r\n\r\n/**\r\n * Derives the slice's `actions` property from the `reducers` options\r\n *\r\n * @public\r\n */\r\nexport type CaseReducerActions<\r\n  CaseReducers extends SliceCaseReducers<any>,\r\n  SliceName extends string\r\n> = {\r\n  [Type in keyof CaseReducers]: CaseReducers[Type] extends { prepare: any }\r\n    ? ActionCreatorForCaseReducerWithPrepare<\r\n        CaseReducers[Type],\r\n        SliceActionType<SliceName, Type>\r\n      >\r\n    : ActionCreatorForCaseReducer<\r\n        CaseReducers[Type],\r\n        SliceActionType<SliceName, Type>\r\n      >\r\n}\r\n\r\n/**\r\n * Get a `PayloadActionCreator` type for a passed `CaseReducerWithPrepare`\r\n *\r\n * @internal\r\n */\r\ntype ActionCreatorForCaseReducerWithPrepare<\r\n  CR extends { prepare: any },\r\n  Type extends string\r\n> = _ActionCreatorWithPreparedPayload<CR['prepare'], Type>\r\n\r\n/**\r\n * Get a `PayloadActionCreator` type for a passed `CaseReducer`\r\n *\r\n * @internal\r\n */\r\ntype ActionCreatorForCaseReducer<CR, Type extends string> = CR extends (\r\n  state: any,\r\n  action: infer Action\r\n) => any\r\n  ? Action extends { payload: infer P }\r\n    ? PayloadActionCreator<P, Type>\r\n    : ActionCreatorWithoutPayload<Type>\r\n  : ActionCreatorWithoutPayload<Type>\r\n\r\n/**\r\n * Extracts the CaseReducers out of a `reducers` object, even if they are\r\n * tested into a `CaseReducerWithPrepare`.\r\n *\r\n * @internal\r\n */\r\ntype SliceDefinedCaseReducers<CaseReducers extends SliceCaseReducers<any>> = {\r\n  [Type in keyof CaseReducers]: CaseReducers[Type] extends {\r\n    reducer: infer Reducer\r\n  }\r\n    ? Reducer\r\n    : CaseReducers[Type]\r\n}\r\n\r\n/**\r\n * Used on a SliceCaseReducers object.\r\n * Ensures that if a CaseReducer is a `CaseReducerWithPrepare`, that\r\n * the `reducer` and the `prepare` function use the same type of `payload`.\r\n *\r\n * Might do additional such checks in the future.\r\n *\r\n * This type is only ever useful if you want to write your own wrapper around\r\n * `createSlice`. Please don't use it otherwise!\r\n *\r\n * @public\r\n */\r\nexport type ValidateSliceCaseReducers<\r\n  S,\r\n  ACR extends SliceCaseReducers<S>\r\n> = ACR &\r\n  {\r\n    [T in keyof ACR]: ACR[T] extends {\r\n      reducer(s: S, action?: infer A): any\r\n    }\r\n      ? {\r\n          prepare(...a: never[]): Omit<A, 'type'>\r\n        }\r\n      : {}\r\n  }\r\n\r\nfunction getType(slice: string, actionKey: string): string {\r\n  return `${slice}/${actionKey}`\r\n}\r\n\r\n/**\r\n * A function that accepts an initial state, an object full of reducer\r\n * functions, and a \"slice name\", and automatically generates\r\n * action creators and action types that correspond to the\r\n * reducers and state.\r\n *\r\n * The `reducer` argument is passed to `createReducer()`.\r\n *\r\n * @public\r\n */\r\nexport function createSlice<\r\n  State,\r\n  CaseReducers extends SliceCaseReducers<State>,\r\n  Name extends string = string\r\n>(\r\n  options: CreateSliceOptions<State, CaseReducers, Name>\r\n): Slice<State, CaseReducers, Name> {\r\n  const { name } = options\r\n  if (!name) {\r\n    throw new Error('`name` is a required option for createSlice')\r\n  }\r\n\r\n  if (\r\n    typeof process !== 'undefined' &&\r\n    process.env.NODE_ENV === 'development'\r\n  ) {\r\n    if (options.initialState === undefined) {\r\n      console.error(\r\n        'You must provide an `initialState` value that is not `undefined`. You may have misspelled `initialState`'\r\n      )\r\n    }\r\n  }\r\n\r\n  const initialState =\r\n    typeof options.initialState == 'function'\r\n      ? options.initialState\r\n      : freezeDraftable(options.initialState)\r\n\r\n  const reducers = options.reducers || {}\r\n\r\n  const reducerNames = Object.keys(reducers)\r\n\r\n  const sliceCaseReducersByName: Record<string, CaseReducer> = {}\r\n  const sliceCaseReducersByType: Record<string, CaseReducer> = {}\r\n  const actionCreators: Record<string, Function> = {}\r\n\r\n  reducerNames.forEach((reducerName) => {\r\n    const maybeReducerWithPrepare = reducers[reducerName]\r\n    const type = getType(name, reducerName)\r\n\r\n    let caseReducer: CaseReducer<State, any>\r\n    let prepareCallback: PrepareAction<any> | undefined\r\n\r\n    if ('reducer' in maybeReducerWithPrepare) {\r\n      caseReducer = maybeReducerWithPrepare.reducer\r\n      prepareCallback = maybeReducerWithPrepare.prepare\r\n    } else {\r\n      caseReducer = maybeReducerWithPrepare\r\n    }\r\n\r\n    sliceCaseReducersByName[reducerName] = caseReducer\r\n    sliceCaseReducersByType[type] = caseReducer\r\n    actionCreators[reducerName] = prepareCallback\r\n      ? createAction(type, prepareCallback)\r\n      : createAction(type)\r\n  })\r\n\r\n  function buildReducer() {\r\n    if (process.env.NODE_ENV !== 'production') {\r\n      if (typeof options.extraReducers === 'object') {\r\n        if (!hasWarnedAboutObjectNotation) {\r\n          hasWarnedAboutObjectNotation = true\r\n          console.warn(\r\n            \"The object notation for `createSlice.extraReducers` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice\"\r\n          )\r\n        }\r\n      }\r\n    }\r\n    const [\r\n      extraReducers = {},\r\n      actionMatchers = [],\r\n      defaultCaseReducer = undefined,\r\n    ] =\r\n      typeof options.extraReducers === 'function'\r\n        ? executeReducerBuilderCallback(options.extraReducers)\r\n        : [options.extraReducers]\r\n\r\n    const finalCaseReducers = { ...extraReducers, ...sliceCaseReducersByType }\r\n\r\n    return createReducer(initialState, (builder) => {\r\n      for (let key in finalCaseReducers) {\r\n        builder.addCase(key, finalCaseReducers[key] as CaseReducer<any>)\r\n      }\r\n      for (let m of actionMatchers) {\r\n        builder.addMatcher(m.matcher, m.reducer)\r\n      }\r\n      if (defaultCaseReducer) {\r\n        builder.addDefaultCase(defaultCaseReducer)\r\n      }\r\n    })\r\n  }\r\n\r\n  let _reducer: ReducerWithInitialState<State>\r\n\r\n  return {\r\n    name,\r\n    reducer(state, action) {\r\n      if (!_reducer) _reducer = buildReducer()\r\n\r\n      return _reducer(state, action)\r\n    },\r\n    actions: actionCreators as any,\r\n    caseReducers: sliceCaseReducersByName as any,\r\n    getInitialState() {\r\n      if (!_reducer) _reducer = buildReducer()\r\n\r\n      return _reducer.getInitialState()\r\n    },\r\n  }\r\n}\r\n", "import type { EntityState } from './models'\r\n\r\nexport function getInitialEntityState<V>(): EntityState<V> {\r\n  return {\r\n    ids: [],\r\n    entities: {},\r\n  }\r\n}\r\n\r\nexport function createInitialStateFactory<V>() {\r\n  function getInitialState(): EntityState<V>\r\n  function getInitialState<S extends object>(\r\n    additionalState: S\r\n  ): EntityState<V> & S\r\n  function getInitialState(additionalState: any = {}): any {\r\n    return Object.assign(getInitialEntityState(), additionalState)\r\n  }\r\n\r\n  return { getInitialState }\r\n}\r\n", "import type { Selector } from 'reselect'\r\nimport { createDraftSafeSelector } from '../createDraftSafeSelector'\r\nimport type {\r\n  EntityState,\r\n  EntitySelectors,\r\n  Dictionary,\r\n  EntityId,\r\n} from './models'\r\n\r\nexport function createSelectorsFactory<T>() {\r\n  function getSelectors(): EntitySelectors<T, EntityState<T>>\r\n  function getSelectors<V>(\r\n    selectState: (state: V) => EntityState<T>\r\n  ): EntitySelectors<T, V>\r\n  function getSelectors<V>(\r\n    selectState?: (state: V) => EntityState<T>\r\n  ): EntitySelectors<T, any> {\r\n    const selectIds = (state: EntityState<T>) => state.ids\r\n\r\n    const selectEntities = (state: EntityState<T>) => state.entities\r\n\r\n    const selectAll = createDraftSafeSelector(\r\n      selectIds,\r\n      selectEntities,\r\n      (ids, entities): T[] => ids.map((id) => entities[id]!)\r\n    )\r\n\r\n    const selectId = (_: unknown, id: EntityId) => id\r\n\r\n    const selectById = (entities: Dictionary<T>, id: EntityId) => entities[id]\r\n\r\n    const selectTotal = createDraftSafeSelector(selectIds, (ids) => ids.length)\r\n\r\n    if (!selectState) {\r\n      return {\r\n        selectIds,\r\n        selectEntities,\r\n        selectAll,\r\n        selectTotal,\r\n        selectById: createDraftSafeSelector(\r\n          selectEntities,\r\n          selectId,\r\n          selectById\r\n        ),\r\n      }\r\n    }\r\n\r\n    const selectGlobalizedEntities = createDraftSafeSelector(\r\n      selectState as Selector<V, EntityState<T>>,\r\n      selectEntities\r\n    )\r\n\r\n    return {\r\n      selectIds: createDraftSafeSelector(selectState, selectIds),\r\n      selectEntities: selectGlobalizedEntities,\r\n      selectAll: createDraftSafeSelector(selectState, selectAll),\r\n      selectTotal: createDraftSafeSelector(selectState, selectTotal),\r\n      selectById: createDraftSafeSelector(\r\n        selectGlobalizedEntities,\r\n        selectId,\r\n        selectById\r\n      ),\r\n    }\r\n  }\r\n\r\n  return { getSelectors }\r\n}\r\n", "import createNextState, { isDraft } from 'immer'\r\nimport type { EntityState, PreventAny } from './models'\r\nimport type { PayloadAction } from '../createAction'\r\nimport { isFSA } from '../createAction'\r\nimport { IsAny } from '../tsHelpers'\r\n\r\nexport function createSingleArgumentStateOperator<V>(\r\n  mutator: (state: EntityState<V>) => void\r\n) {\r\n  const operator = createStateOperator((_: undefined, state: EntityState<V>) =>\r\n    mutator(state)\r\n  )\r\n\r\n  return function operation<S extends EntityState<V>>(\r\n    state: PreventAny<S, V>\r\n  ): S {\r\n    return operator(state as S, undefined)\r\n  }\r\n}\r\n\r\nexport function createStateOperator<V, R>(\r\n  mutator: (arg: R, state: EntityState<V>) => void\r\n) {\r\n  return function operation<S extends EntityState<V>>(\r\n    state: S,\r\n    arg: R | PayloadAction<R>\r\n  ): S {\r\n    function isPayloadActionArgument(\r\n      arg: R | PayloadAction<R>\r\n    ): arg is PayloadAction<R> {\r\n      return isFSA(arg)\r\n    }\r\n\r\n    const runMutator = (draft: EntityState<V>) => {\r\n      if (isPayloadActionArgument(arg)) {\r\n        mutator(arg.payload, draft)\r\n      } else {\r\n        mutator(arg, draft)\r\n      }\r\n    }\r\n\r\n    if (isDraft(state)) {\r\n      // we must already be inside a `createNextState` call, likely because\r\n      // this is being wrapped in `createReducer` or `createSlice`.\r\n      // It's safe to just pass the draft to the mutator.\r\n      runMutator(state)\r\n\r\n      // since it's a draft, we'll just return it\r\n      return state\r\n    } else {\r\n      // @ts-ignore createNextState() produces an Immutable<Draft<S>> rather\r\n      // than an Immutable<S>, and TypeScript cannot find out how to reconcile\r\n      // these two types.\r\n      return createNextState(state, runMutator)\r\n    }\r\n  }\r\n}\r\n", "import type { EntityState, IdSelector, Update, EntityId } from './models'\r\n\r\nexport function selectIdValue<T>(entity: T, selectId: IdSelector<T>) {\r\n  const key = selectId(entity)\r\n\r\n  if (process.env.NODE_ENV !== 'production' && key === undefined) {\r\n    console.warn(\r\n      'The entity passed to the `selectId` implementation returned undefined.',\r\n      'You should probably provide your own `selectId` implementation.',\r\n      'The entity that was passed:',\r\n      entity,\r\n      'The `selectId` implementation:',\r\n      selectId.toString()\r\n    )\r\n  }\r\n\r\n  return key\r\n}\r\n\r\nexport function ensureEntitiesArray<T>(\r\n  entities: readonly T[] | Record<EntityId, T>\r\n): readonly T[] {\r\n  if (!Array.isArray(entities)) {\r\n    entities = Object.values(entities)\r\n  }\r\n\r\n  return entities\r\n}\r\n\r\nexport function splitAddedUpdatedEntities<T>(\r\n  newEntities: readonly T[] | Record<EntityId, T>,\r\n  selectId: IdSelector<T>,\r\n  state: EntityState<T>\r\n): [T[], Update<T>[]] {\r\n  newEntities = ensureEntitiesArray(newEntities)\r\n\r\n  const added: T[] = []\r\n  const updated: Update<T>[] = []\r\n\r\n  for (const entity of newEntities) {\r\n    const id = selectIdValue(entity, selectId)\r\n    if (id in state.entities) {\r\n      updated.push({ id, changes: entity })\r\n    } else {\r\n      added.push(entity)\r\n    }\r\n  }\r\n  return [added, updated]\r\n}\r\n", "import type {\r\n  EntityState,\r\n  EntityStateAdapter,\r\n  IdSelector,\r\n  Update,\r\n  EntityId,\r\n} from './models'\r\nimport {\r\n  createStateOperator,\r\n  createSingleArgumentStateOperator,\r\n} from './state_adapter'\r\nimport {\r\n  selectIdValue,\r\n  ensureEntitiesArray,\r\n  splitAddedUpdatedEntities,\r\n} from './utils'\r\n\r\nexport function createUnsortedStateAdapter<T>(\r\n  selectId: IdSelector<T>\r\n): EntityStateAdapter<T> {\r\n  type R = EntityState<T>\r\n\r\n  function addOneMutably(entity: T, state: R): void {\r\n    const key = selectIdValue(entity, selectId)\r\n\r\n    if (key in state.entities) {\r\n      return\r\n    }\r\n\r\n    state.ids.push(key)\r\n    state.entities[key] = entity\r\n  }\r\n\r\n  function addManyMutably(\r\n    newEntities: readonly T[] | Record<EntityId, T>,\r\n    state: R\r\n  ): void {\r\n    newEntities = ensureEntitiesArray(newEntities)\r\n\r\n    for (const entity of newEntities) {\r\n      addOneMutably(entity, state)\r\n    }\r\n  }\r\n\r\n  function setOneMutably(entity: T, state: R): void {\r\n    const key = selectIdValue(entity, selectId)\r\n    if (!(key in state.entities)) {\r\n      state.ids.push(key)\r\n    }\r\n    state.entities[key] = entity\r\n  }\r\n\r\n  function setManyMutably(\r\n    newEntities: readonly T[] | Record<EntityId, T>,\r\n    state: R\r\n  ): void {\r\n    newEntities = ensureEntitiesArray(newEntities)\r\n    for (const entity of newEntities) {\r\n      setOneMutably(entity, state)\r\n    }\r\n  }\r\n\r\n  function setAllMutably(\r\n    newEntities: readonly T[] | Record<EntityId, T>,\r\n    state: R\r\n  ): void {\r\n    newEntities = ensureEntitiesArray(newEntities)\r\n\r\n    state.ids = []\r\n    state.entities = {}\r\n\r\n    addManyMutably(newEntities, state)\r\n  }\r\n\r\n  function removeOneMutably(key: EntityId, state: R): void {\r\n    return removeManyMutably([key], state)\r\n  }\r\n\r\n  function removeManyMutably(keys: readonly EntityId[], state: R): void {\r\n    let didMutate = false\r\n\r\n    keys.forEach((key) => {\r\n      if (key in state.entities) {\r\n        delete state.entities[key]\r\n        didMutate = true\r\n      }\r\n    })\r\n\r\n    if (didMutate) {\r\n      state.ids = state.ids.filter((id) => id in state.entities)\r\n    }\r\n  }\r\n\r\n  function removeAllMutably(state: R): void {\r\n    Object.assign(state, {\r\n      ids: [],\r\n      entities: {},\r\n    })\r\n  }\r\n\r\n  function takeNewKey(\r\n    keys: { [id: string]: EntityId },\r\n    update: Update<T>,\r\n    state: R\r\n  ): boolean {\r\n    const original = state.entities[update.id]\r\n    const updated: T = Object.assign({}, original, update.changes)\r\n    const newKey = selectIdValue(updated, selectId)\r\n    const hasNewKey = newKey !== update.id\r\n\r\n    if (hasNewKey) {\r\n      keys[update.id] = newKey\r\n      delete state.entities[update.id]\r\n    }\r\n\r\n    state.entities[newKey] = updated\r\n\r\n    return hasNewKey\r\n  }\r\n\r\n  function updateOneMutably(update: Update<T>, state: R): void {\r\n    return updateManyMutably([update], state)\r\n  }\r\n\r\n  function updateManyMutably(\r\n    updates: ReadonlyArray<Update<T>>,\r\n    state: R\r\n  ): void {\r\n    const newKeys: { [id: string]: EntityId } = {}\r\n\r\n    const updatesPerEntity: { [id: string]: Update<T> } = {}\r\n\r\n    updates.forEach((update) => {\r\n      // Only apply updates to entities that currently exist\r\n      if (update.id in state.entities) {\r\n        // If there are multiple updates to one entity, merge them together\r\n        updatesPerEntity[update.id] = {\r\n          id: update.id,\r\n          // Spreads ignore falsy values, so this works even if there isn't\r\n          // an existing update already at this key\r\n          changes: {\r\n            ...(updatesPerEntity[update.id]\r\n              ? updatesPerEntity[update.id].changes\r\n              : null),\r\n            ...update.changes,\r\n          },\r\n        }\r\n      }\r\n    })\r\n\r\n    updates = Object.values(updatesPerEntity)\r\n\r\n    const didMutateEntities = updates.length > 0\r\n\r\n    if (didMutateEntities) {\r\n      const didMutateIds =\r\n        updates.filter((update) => takeNewKey(newKeys, update, state)).length >\r\n        0\r\n\r\n      if (didMutateIds) {\r\n        state.ids = Object.keys(state.entities)\r\n      }\r\n    }\r\n  }\r\n\r\n  function upsertOneMutably(entity: T, state: R): void {\r\n    return upsertManyMutably([entity], state)\r\n  }\r\n\r\n  function upsertManyMutably(\r\n    newEntities: readonly T[] | Record<EntityId, T>,\r\n    state: R\r\n  ): void {\r\n    const [added, updated] = splitAddedUpdatedEntities<T>(\r\n      newEntities,\r\n      selectId,\r\n      state\r\n    )\r\n\r\n    updateManyMutably(updated, state)\r\n    addManyMutably(added, state)\r\n  }\r\n\r\n  return {\r\n    removeAll: createSingleArgumentStateOperator(removeAllMutably),\r\n    addOne: createStateOperator(addOneMutably),\r\n    addMany: createStateOperator(addManyMutably),\r\n    setOne: createStateOperator(setOneMutably),\r\n    setMany: createStateOperator(setManyMutably),\r\n    setAll: createStateOperator(setAllMutably),\r\n    updateOne: createStateOperator(updateOneMutably),\r\n    updateMany: createStateOperator(updateManyMutably),\r\n    upsertOne: createStateOperator(upsertOneMutably),\r\n    upsertMany: createStateOperator(upsertManyMutably),\r\n    removeOne: createStateOperator(removeOneMutably),\r\n    removeMany: createStateOperator(removeManyMutably),\r\n  }\r\n}\r\n", "import type {\r\n  EntityState,\r\n  IdSelector,\r\n  Comparer,\r\n  EntityStateAdapter,\r\n  Update,\r\n  EntityId,\r\n} from './models'\r\nimport { createStateOperator } from './state_adapter'\r\nimport { createUnsortedStateAdapter } from './unsorted_state_adapter'\r\nimport {\r\n  selectIdValue,\r\n  ensureEntitiesArray,\r\n  splitAddedUpdatedEntities,\r\n} from './utils'\r\n\r\nexport function createSortedStateAdapter<T>(\r\n  selectId: IdSelector<T>,\r\n  sort: Comparer<T>\r\n): EntityStateAdapter<T> {\r\n  type R = EntityState<T>\r\n\r\n  const { removeOne, removeMany, removeAll } =\r\n    createUnsortedStateAdapter(selectId)\r\n\r\n  function addOneMutably(entity: T, state: R): void {\r\n    return addManyMutably([entity], state)\r\n  }\r\n\r\n  function addManyMutably(\r\n    newEntities: readonly T[] | Record<EntityId, T>,\r\n    state: R\r\n  ): void {\r\n    newEntities = ensureEntitiesArray(newEntities)\r\n\r\n    const models = newEntities.filter(\r\n      (model) => !(selectIdValue(model, selectId) in state.entities)\r\n    )\r\n\r\n    if (models.length !== 0) {\r\n      merge(models, state)\r\n    }\r\n  }\r\n\r\n  function setOneMutably(entity: T, state: R): void {\r\n    return setManyMutably([entity], state)\r\n  }\r\n\r\n  function setManyMutably(\r\n    newEntities: readonly T[] | Record<EntityId, T>,\r\n    state: R\r\n  ): void {\r\n    newEntities = ensureEntitiesArray(newEntities)\r\n    if (newEntities.length !== 0) {\r\n      merge(newEntities, state)\r\n    }\r\n  }\r\n\r\n  function setAllMutably(\r\n    newEntities: readonly T[] | Record<EntityId, T>,\r\n    state: R\r\n  ): void {\r\n    newEntities = ensureEntitiesArray(newEntities)\r\n    state.entities = {}\r\n    state.ids = []\r\n\r\n    addManyMutably(newEntities, state)\r\n  }\r\n\r\n  function updateOneMutably(update: Update<T>, state: R): void {\r\n    return updateManyMutably([update], state)\r\n  }\r\n\r\n  function updateManyMutably(\r\n    updates: ReadonlyArray<Update<T>>,\r\n    state: R\r\n  ): void {\r\n    let appliedUpdates = false\r\n\r\n    for (let update of updates) {\r\n      const entity = state.entities[update.id]\r\n      if (!entity) {\r\n        continue\r\n      }\r\n\r\n      appliedUpdates = true\r\n\r\n      Object.assign(entity, update.changes)\r\n      const newId = selectId(entity)\r\n      if (update.id !== newId) {\r\n        delete state.entities[update.id]\r\n        state.entities[newId] = entity\r\n      }\r\n    }\r\n\r\n    if (appliedUpdates) {\r\n      resortEntities(state)\r\n    }\r\n  }\r\n\r\n  function upsertOneMutably(entity: T, state: R): void {\r\n    return upsertManyMutably([entity], state)\r\n  }\r\n\r\n  function upsertManyMutably(\r\n    newEntities: readonly T[] | Record<EntityId, T>,\r\n    state: R\r\n  ): void {\r\n    const [added, updated] = splitAddedUpdatedEntities<T>(\r\n      newEntities,\r\n      selectId,\r\n      state\r\n    )\r\n\r\n    updateManyMutably(updated, state)\r\n    addManyMutably(added, state)\r\n  }\r\n\r\n  function areArraysEqual(a: readonly unknown[], b: readonly unknown[]) {\r\n    if (a.length !== b.length) {\r\n      return false\r\n    }\r\n\r\n    for (let i = 0; i < a.length && i < b.length; i++) {\r\n      if (a[i] === b[i]) {\r\n        continue\r\n      }\r\n      return false\r\n    }\r\n    return true\r\n  }\r\n\r\n  function merge(models: readonly T[], state: R): void {\r\n    // Insert/overwrite all new/updated\r\n    models.forEach((model) => {\r\n      state.entities[selectId(model)] = model\r\n    })\r\n\r\n    resortEntities(state)\r\n  }\r\n\r\n  function resortEntities(state: R) {\r\n    const allEntities = Object.values(state.entities) as T[]\r\n    allEntities.sort(sort)\r\n\r\n    const newSortedIds = allEntities.map(selectId)\r\n    const { ids } = state\r\n\r\n    if (!areArraysEqual(ids, newSortedIds)) {\r\n      state.ids = newSortedIds\r\n    }\r\n  }\r\n\r\n  return {\r\n    removeOne,\r\n    removeMany,\r\n    removeAll,\r\n    addOne: createStateOperator(addOneMutably),\r\n    updateOne: createStateOperator(updateOneMutably),\r\n    upsertOne: createStateOperator(upsertOneMutably),\r\n    setOne: createStateOperator(setOneMutably),\r\n    setMany: createStateOperator(setManyMutably),\r\n    setAll: createStateOperator(setAllMutably),\r\n    addMany: createStateOperator(addManyMutably),\r\n    updateMany: createStateOperator(updateManyMutably),\r\n    upsertMany: createStateOperator(upsertManyMutably),\r\n  }\r\n}\r\n", "import type {\r\n  EntityDefinition,\r\n  Comparer,\r\n  IdSelector,\r\n  EntityAdapter,\r\n} from './models'\r\nimport { createInitialStateFactory } from './entity_state'\r\nimport { createSelectorsFactory } from './state_selectors'\r\nimport { createSortedStateAdapter } from './sorted_state_adapter'\r\nimport { createUnsortedStateAdapter } from './unsorted_state_adapter'\r\n\r\n/**\r\n *\r\n * @param options\r\n *\r\n * @public\r\n */\r\nexport function createEntityAdapter<T>(\r\n  options: {\r\n    selectId?: IdSelector<T>\r\n    sortComparer?: false | Comparer<T>\r\n  } = {}\r\n): EntityAdapter<T> {\r\n  const { selectId, sortComparer }: EntityDefinition<T> = {\r\n    sortComparer: false,\r\n    selectId: (instance: any) => instance.id,\r\n    ...options,\r\n  }\r\n\r\n  const stateFactory = createInitialStateFactory<T>()\r\n  const selectorsFactory = createSelectorsFactory<T>()\r\n  const stateAdapter = sortComparer\r\n    ? createSortedStateAdapter(selectId, sortComparer)\r\n    : createUnsortedStateAdapter(selectId)\r\n\r\n  return {\r\n    selectId,\r\n    sortComparer,\r\n    ...stateFactory,\r\n    ...selectorsFactory,\r\n    ...stateAdapter,\r\n  }\r\n}\r\n", "// Borrowed from https://github.com/ai/nanoid/blob/3.0.2/non-secure/index.js\r\n// This alphabet uses `A-Za-z0-9_-` symbols. A genetic algorithm helped\r\n// optimize the gzip compression for this alphabet.\r\nlet urlAlphabet =\r\n  'ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW'\r\n\r\n/**\r\n *\r\n * @public\r\n */\r\nexport let nanoid = (size = 21) => {\r\n  let id = ''\r\n  // A compact alternative for `for (var i = 0; i < step; i++)`.\r\n  let i = size\r\n  while (i--) {\r\n    // `| 0` is more compact and faster than `Math.floor()`.\r\n    id += urlAlphabet[(Math.random() * 64) | 0]\r\n  }\r\n  return id\r\n}\r\n", "import type { Dispatch, AnyAction } from 'redux'\r\nimport type {\r\n  PayloadAction,\r\n  ActionCreatorWithPreparedPayload,\r\n} from './createAction'\r\nimport { createAction } from './createAction'\r\nimport type { ThunkDispatch } from 'redux-thunk'\r\nimport type { FallbackIfUnknown, Id, IsAny, IsUnknown } from './tsHelpers'\r\nimport { nanoid } from './nanoid'\r\n\r\n// @ts-ignore we need the import of these types due to a bundling issue.\r\ntype _Keep = PayloadAction | ActionCreatorWithPreparedPayload<any, unknown>\r\n\r\nexport type BaseThunkAPI<\r\n  S,\r\n  E,\r\n  D extends Dispatch = Dispatch,\r\n  RejectedValue = undefined,\r\n  RejectedMeta = unknown,\r\n  FulfilledMeta = unknown\r\n> = {\r\n  dispatch: D\r\n  getState: () => S\r\n  extra: E\r\n  requestId: string\r\n  signal: AbortSignal\r\n  abort: (reason?: string) => void\r\n  rejectWithValue: IsUnknown<\r\n    RejectedMeta,\r\n    (value: RejectedValue) => RejectWithValue<RejectedValue, RejectedMeta>,\r\n    (\r\n      value: RejectedValue,\r\n      meta: RejectedMeta\r\n    ) => RejectWithValue<RejectedValue, RejectedMeta>\r\n  >\r\n  fulfillWithValue: IsUnknown<\r\n    FulfilledMeta,\r\n    <FulfilledValue>(value: FulfilledValue) => FulfilledValue,\r\n    <FulfilledValue>(\r\n      value: FulfilledValue,\r\n      meta: FulfilledMeta\r\n    ) => FulfillWithMeta<FulfilledValue, FulfilledMeta>\r\n  >\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport interface SerializedError {\r\n  name?: string\r\n  message?: string\r\n  stack?: string\r\n  code?: string\r\n}\r\n\r\nconst commonProperties: Array<keyof SerializedError> = [\r\n  'name',\r\n  'message',\r\n  'stack',\r\n  'code',\r\n]\r\n\r\nclass RejectWithValue<Payload, RejectedMeta> {\r\n  /*\r\n  type-only property to distinguish between RejectWithValue and FulfillWithMeta\r\n  does not exist at runtime\r\n  */\r\n  private readonly _type!: 'RejectWithValue'\r\n  constructor(\r\n    public readonly payload: Payload,\r\n    public readonly meta: RejectedMeta\r\n  ) {}\r\n}\r\n\r\nclass FulfillWithMeta<Payload, FulfilledMeta> {\r\n  /*\r\n  type-only property to distinguish between RejectWithValue and FulfillWithMeta\r\n  does not exist at runtime\r\n  */\r\n  private readonly _type!: 'FulfillWithMeta'\r\n  constructor(\r\n    public readonly payload: Payload,\r\n    public readonly meta: FulfilledMeta\r\n  ) {}\r\n}\r\n\r\n/**\r\n * Serializes an error into a plain object.\r\n * Reworked from https://github.com/sindresorhus/serialize-error\r\n *\r\n * @public\r\n */\r\nexport const miniSerializeError = (value: any): SerializedError => {\r\n  if (typeof value === 'object' && value !== null) {\r\n    const simpleError: SerializedError = {}\r\n    for (const property of commonProperties) {\r\n      if (typeof value[property] === 'string') {\r\n        simpleError[property] = value[property]\r\n      }\r\n    }\r\n\r\n    return simpleError\r\n  }\r\n\r\n  return { message: String(value) }\r\n}\r\n\r\ntype AsyncThunkConfig = {\r\n  state?: unknown\r\n  dispatch?: Dispatch\r\n  extra?: unknown\r\n  rejectValue?: unknown\r\n  serializedErrorType?: unknown\r\n  pendingMeta?: unknown\r\n  fulfilledMeta?: unknown\r\n  rejectedMeta?: unknown\r\n}\r\n\r\ntype GetState<ThunkApiConfig> = ThunkApiConfig extends {\r\n  state: infer State\r\n}\r\n  ? State\r\n  : unknown\r\ntype GetExtra<ThunkApiConfig> = ThunkApiConfig extends { extra: infer Extra }\r\n  ? Extra\r\n  : unknown\r\ntype GetDispatch<ThunkApiConfig> = ThunkApiConfig extends {\r\n  dispatch: infer Dispatch\r\n}\r\n  ? FallbackIfUnknown<\r\n      Dispatch,\r\n      ThunkDispatch<\r\n        GetState<ThunkApiConfig>,\r\n        GetExtra<ThunkApiConfig>,\r\n        AnyAction\r\n      >\r\n    >\r\n  : ThunkDispatch<GetState<ThunkApiConfig>, GetExtra<ThunkApiConfig>, AnyAction>\r\n\r\ntype GetThunkAPI<ThunkApiConfig> = BaseThunkAPI<\r\n  GetState<ThunkApiConfig>,\r\n  GetExtra<ThunkApiConfig>,\r\n  GetDispatch<ThunkApiConfig>,\r\n  GetRejectValue<ThunkApiConfig>,\r\n  GetRejectedMeta<ThunkApiConfig>,\r\n  GetFulfilledMeta<ThunkApiConfig>\r\n>\r\n\r\ntype GetRejectValue<ThunkApiConfig> = ThunkApiConfig extends {\r\n  rejectValue: infer RejectValue\r\n}\r\n  ? RejectValue\r\n  : unknown\r\n\r\ntype GetPendingMeta<ThunkApiConfig> = ThunkApiConfig extends {\r\n  pendingMeta: infer PendingMeta\r\n}\r\n  ? PendingMeta\r\n  : unknown\r\n\r\ntype GetFulfilledMeta<ThunkApiConfig> = ThunkApiConfig extends {\r\n  fulfilledMeta: infer FulfilledMeta\r\n}\r\n  ? FulfilledMeta\r\n  : unknown\r\n\r\ntype GetRejectedMeta<ThunkApiConfig> = ThunkApiConfig extends {\r\n  rejectedMeta: infer RejectedMeta\r\n}\r\n  ? RejectedMeta\r\n  : unknown\r\n\r\ntype GetSerializedErrorType<ThunkApiConfig> = ThunkApiConfig extends {\r\n  serializedErrorType: infer GetSerializedErrorType\r\n}\r\n  ? GetSerializedErrorType\r\n  : SerializedError\r\n\r\ntype MaybePromise<T> = T | Promise<T> | (T extends any ? Promise<T> : never)\r\n\r\n/**\r\n * A type describing the return value of the `payloadCreator` argument to `createAsyncThunk`.\r\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkPayloadCreatorReturnValue<\r\n  Returned,\r\n  ThunkApiConfig extends AsyncThunkConfig\r\n> = MaybePromise<\r\n  | IsUnknown<\r\n      GetFulfilledMeta<ThunkApiConfig>,\r\n      Returned,\r\n      FulfillWithMeta<Returned, GetFulfilledMeta<ThunkApiConfig>>\r\n    >\r\n  | RejectWithValue<\r\n      GetRejectValue<ThunkApiConfig>,\r\n      GetRejectedMeta<ThunkApiConfig>\r\n    >\r\n>\r\n/**\r\n * A type describing the `payloadCreator` argument to `createAsyncThunk`.\r\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkPayloadCreator<\r\n  Returned,\r\n  ThunkArg = void,\r\n  ThunkApiConfig extends AsyncThunkConfig = {}\r\n> = (\r\n  arg: ThunkArg,\r\n  thunkAPI: GetThunkAPI<ThunkApiConfig>\r\n) => AsyncThunkPayloadCreatorReturnValue<Returned, ThunkApiConfig>\r\n\r\n/**\r\n * A ThunkAction created by `createAsyncThunk`.\r\n * Dispatching it returns a Promise for either a\r\n * fulfilled or rejected action.\r\n * Also, the returned value contains an `abort()` method\r\n * that allows the asyncAction to be cancelled from the outside.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkAction<\r\n  Returned,\r\n  ThunkArg,\r\n  ThunkApiConfig extends AsyncThunkConfig\r\n> = (\r\n  dispatch: GetDispatch<ThunkApiConfig>,\r\n  getState: () => GetState<ThunkApiConfig>,\r\n  extra: GetExtra<ThunkApiConfig>\r\n) => Promise<\r\n  | ReturnType<AsyncThunkFulfilledActionCreator<Returned, ThunkArg>>\r\n  | ReturnType<AsyncThunkRejectedActionCreator<ThunkArg, ThunkApiConfig>>\r\n> & {\r\n  abort: (reason?: string) => void\r\n  requestId: string\r\n  arg: ThunkArg\r\n  unwrap: () => Promise<Returned>\r\n}\r\n\r\ntype AsyncThunkActionCreator<\r\n  Returned,\r\n  ThunkArg,\r\n  ThunkApiConfig extends AsyncThunkConfig\r\n> = IsAny<\r\n  ThunkArg,\r\n  // any handling\r\n  (arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>,\r\n  // unknown handling\r\n  unknown extends ThunkArg\r\n    ? (arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> // argument not specified or specified as void or undefined\r\n    : [ThunkArg] extends [void] | [undefined]\r\n    ? () => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> // argument contains void\r\n    : [void] extends [ThunkArg] // make optional\r\n    ? (arg?: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> // argument contains undefined\r\n    : [undefined] extends [ThunkArg]\r\n    ? WithStrictNullChecks<\r\n        // with strict nullChecks: make optional\r\n        (\r\n          arg?: ThunkArg\r\n        ) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>,\r\n        // without strict null checks this will match everything, so don't make it optional\r\n        (arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>\r\n      > // default case: normal argument\r\n    : (arg: ThunkArg) => AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig>\r\n>\r\n\r\n/**\r\n * Options object for `createAsyncThunk`.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunkOptions<\r\n  ThunkArg = void,\r\n  ThunkApiConfig extends AsyncThunkConfig = {}\r\n> = {\r\n  /**\r\n   * A method to control whether the asyncThunk should be executed. Has access to the\r\n   * `arg`, `api.getState()` and `api.extra` arguments.\r\n   *\r\n   * @returns `false` if it should be skipped\r\n   */\r\n  condition?(\r\n    arg: ThunkArg,\r\n    api: Pick<GetThunkAPI<ThunkApiConfig>, 'getState' | 'extra'>\r\n  ): MaybePromise<boolean | undefined>\r\n  /**\r\n   * If `condition` returns `false`, the asyncThunk will be skipped.\r\n   * This option allows you to control whether a `rejected` action with `meta.condition == false`\r\n   * will be dispatched or not.\r\n   *\r\n   * @default `false`\r\n   */\r\n  dispatchConditionRejection?: boolean\r\n\r\n  serializeError?: (x: unknown) => GetSerializedErrorType<ThunkApiConfig>\r\n\r\n  /**\r\n   * A function to use when generating the `requestId` for the request sequence.\r\n   *\r\n   * @default `nanoid`\r\n   */\r\n  idGenerator?: (arg: ThunkArg) => string\r\n} & IsUnknown<\r\n  GetPendingMeta<ThunkApiConfig>,\r\n  {\r\n    /**\r\n     * A method to generate additional properties to be added to `meta` of the pending action.\r\n     *\r\n     * Using this optional overload will not modify the types correctly, this overload is only in place to support JavaScript users.\r\n     * Please use the `ThunkApiConfig` parameter `pendingMeta` to get access to a correctly typed overload\r\n     */\r\n    getPendingMeta?(\r\n      base: {\r\n        arg: ThunkArg\r\n        requestId: string\r\n      },\r\n      api: Pick<GetThunkAPI<ThunkApiConfig>, 'getState' | 'extra'>\r\n    ): GetPendingMeta<ThunkApiConfig>\r\n  },\r\n  {\r\n    /**\r\n     * A method to generate additional properties to be added to `meta` of the pending action.\r\n     */\r\n    getPendingMeta(\r\n      base: {\r\n        arg: ThunkArg\r\n        requestId: string\r\n      },\r\n      api: Pick<GetThunkAPI<ThunkApiConfig>, 'getState' | 'extra'>\r\n    ): GetPendingMeta<ThunkApiConfig>\r\n  }\r\n>\r\n\r\nexport type AsyncThunkPendingActionCreator<\r\n  ThunkArg,\r\n  ThunkApiConfig = {}\r\n> = ActionCreatorWithPreparedPayload<\r\n  [string, ThunkArg, GetPendingMeta<ThunkApiConfig>?],\r\n  undefined,\r\n  string,\r\n  never,\r\n  {\r\n    arg: ThunkArg\r\n    requestId: string\r\n    requestStatus: 'pending'\r\n  } & GetPendingMeta<ThunkApiConfig>\r\n>\r\n\r\nexport type AsyncThunkRejectedActionCreator<\r\n  ThunkArg,\r\n  ThunkApiConfig = {}\r\n> = ActionCreatorWithPreparedPayload<\r\n  [\r\n    Error | null,\r\n    string,\r\n    ThunkArg,\r\n    GetRejectValue<ThunkApiConfig>?,\r\n    GetRejectedMeta<ThunkApiConfig>?\r\n  ],\r\n  GetRejectValue<ThunkApiConfig> | undefined,\r\n  string,\r\n  GetSerializedErrorType<ThunkApiConfig>,\r\n  {\r\n    arg: ThunkArg\r\n    requestId: string\r\n    requestStatus: 'rejected'\r\n    aborted: boolean\r\n    condition: boolean\r\n  } & (\r\n    | ({ rejectedWithValue: false } & {\r\n        [K in keyof GetRejectedMeta<ThunkApiConfig>]?: undefined\r\n      })\r\n    | ({ rejectedWithValue: true } & GetRejectedMeta<ThunkApiConfig>)\r\n  )\r\n>\r\n\r\nexport type AsyncThunkFulfilledActionCreator<\r\n  Returned,\r\n  ThunkArg,\r\n  ThunkApiConfig = {}\r\n> = ActionCreatorWithPreparedPayload<\r\n  [Returned, string, ThunkArg, GetFulfilledMeta<ThunkApiConfig>?],\r\n  Returned,\r\n  string,\r\n  never,\r\n  {\r\n    arg: ThunkArg\r\n    requestId: string\r\n    requestStatus: 'fulfilled'\r\n  } & GetFulfilledMeta<ThunkApiConfig>\r\n>\r\n\r\n/**\r\n * A type describing the return value of `createAsyncThunk`.\r\n * Might be useful for wrapping `createAsyncThunk` in custom abstractions.\r\n *\r\n * @public\r\n */\r\nexport type AsyncThunk<\r\n  Returned,\r\n  ThunkArg,\r\n  ThunkApiConfig extends AsyncThunkConfig\r\n> = AsyncThunkActionCreator<Returned, ThunkArg, ThunkApiConfig> & {\r\n  pending: AsyncThunkPendingActionCreator<ThunkArg, ThunkApiConfig>\r\n  rejected: AsyncThunkRejectedActionCreator<ThunkArg, ThunkApiConfig>\r\n  fulfilled: AsyncThunkFulfilledActionCreator<\r\n    Returned,\r\n    ThunkArg,\r\n    ThunkApiConfig\r\n  >\r\n  typePrefix: string\r\n}\r\n\r\ntype OverrideThunkApiConfigs<OldConfig, NewConfig> = Id<\r\n  NewConfig & Omit<OldConfig, keyof NewConfig>\r\n>\r\n\r\ntype CreateAsyncThunk<CurriedThunkApiConfig extends AsyncThunkConfig> = {\r\n  /**\r\n   *\r\n   * @param typePrefix\r\n   * @param payloadCreator\r\n   * @param options\r\n   *\r\n   * @public\r\n   */\r\n  // separate signature without `AsyncThunkConfig` for better inference\r\n  <Returned, ThunkArg = void>(\r\n    typePrefix: string,\r\n    payloadCreator: AsyncThunkPayloadCreator<\r\n      Returned,\r\n      ThunkArg,\r\n      CurriedThunkApiConfig\r\n    >,\r\n    options?: AsyncThunkOptions<ThunkArg, CurriedThunkApiConfig>\r\n  ): AsyncThunk<Returned, ThunkArg, CurriedThunkApiConfig>\r\n\r\n  /**\r\n   *\r\n   * @param typePrefix\r\n   * @param payloadCreator\r\n   * @param options\r\n   *\r\n   * @public\r\n   */\r\n  <Returned, ThunkArg, ThunkApiConfig extends AsyncThunkConfig>(\r\n    typePrefix: string,\r\n    payloadCreator: AsyncThunkPayloadCreator<\r\n      Returned,\r\n      ThunkArg,\r\n      OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>\r\n    >,\r\n    options?: AsyncThunkOptions<\r\n      ThunkArg,\r\n      OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>\r\n    >\r\n  ): AsyncThunk<\r\n    Returned,\r\n    ThunkArg,\r\n    OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>\r\n  >\r\n\r\n  withTypes<ThunkApiConfig extends AsyncThunkConfig>(): CreateAsyncThunk<\r\n    OverrideThunkApiConfigs<CurriedThunkApiConfig, ThunkApiConfig>\r\n  >\r\n}\r\n\r\nexport const createAsyncThunk = (() => {\r\n  function createAsyncThunk<\r\n    Returned,\r\n    ThunkArg,\r\n    ThunkApiConfig extends AsyncThunkConfig\r\n  >(\r\n    typePrefix: string,\r\n    payloadCreator: AsyncThunkPayloadCreator<\r\n      Returned,\r\n      ThunkArg,\r\n      ThunkApiConfig\r\n    >,\r\n    options?: AsyncThunkOptions<ThunkArg, ThunkApiConfig>\r\n  ): AsyncThunk<Returned, ThunkArg, ThunkApiConfig> {\r\n    type RejectedValue = GetRejectValue<ThunkApiConfig>\r\n    type PendingMeta = GetPendingMeta<ThunkApiConfig>\r\n    type FulfilledMeta = GetFulfilledMeta<ThunkApiConfig>\r\n    type RejectedMeta = GetRejectedMeta<ThunkApiConfig>\r\n\r\n    const fulfilled: AsyncThunkFulfilledActionCreator<\r\n      Returned,\r\n      ThunkArg,\r\n      ThunkApiConfig\r\n    > = createAction(\r\n      typePrefix + '/fulfilled',\r\n      (\r\n        payload: Returned,\r\n        requestId: string,\r\n        arg: ThunkArg,\r\n        meta?: FulfilledMeta\r\n      ) => ({\r\n        payload,\r\n        meta: {\r\n          ...((meta as any) || {}),\r\n          arg,\r\n          requestId,\r\n          requestStatus: 'fulfilled' as const,\r\n        },\r\n      })\r\n    )\r\n\r\n    const pending: AsyncThunkPendingActionCreator<ThunkArg, ThunkApiConfig> =\r\n      createAction(\r\n        typePrefix + '/pending',\r\n        (requestId: string, arg: ThunkArg, meta?: PendingMeta) => ({\r\n          payload: undefined,\r\n          meta: {\r\n            ...((meta as any) || {}),\r\n            arg,\r\n            requestId,\r\n            requestStatus: 'pending' as const,\r\n          },\r\n        })\r\n      )\r\n\r\n    const rejected: AsyncThunkRejectedActionCreator<ThunkArg, ThunkApiConfig> =\r\n      createAction(\r\n        typePrefix + '/rejected',\r\n        (\r\n          error: Error | null,\r\n          requestId: string,\r\n          arg: ThunkArg,\r\n          payload?: RejectedValue,\r\n          meta?: RejectedMeta\r\n        ) => ({\r\n          payload,\r\n          error: ((options && options.serializeError) || miniSerializeError)(\r\n            error || 'Rejected'\r\n          ) as GetSerializedErrorType<ThunkApiConfig>,\r\n          meta: {\r\n            ...((meta as any) || {}),\r\n            arg,\r\n            requestId,\r\n            rejectedWithValue: !!payload,\r\n            requestStatus: 'rejected' as const,\r\n            aborted: error?.name === 'AbortError',\r\n            condition: error?.name === 'ConditionError',\r\n          },\r\n        })\r\n      )\r\n\r\n    let displayedWarning = false\r\n\r\n    const AC =\r\n      typeof AbortController !== 'undefined'\r\n        ? AbortController\r\n        : class implements AbortController {\r\n            signal = {\r\n              aborted: false,\r\n              addEventListener() {},\r\n              dispatchEvent() {\r\n                return false\r\n              },\r\n              onabort() {},\r\n              removeEventListener() {},\r\n              reason: undefined,\r\n              throwIfAborted() {},\r\n            }\r\n            abort() {\r\n              if (process.env.NODE_ENV !== 'production') {\r\n                if (!displayedWarning) {\r\n                  displayedWarning = true\r\n                  console.info(\r\n                    `This platform does not implement AbortController. \r\nIf you want to use the AbortController to react to \\`abort\\` events, please consider importing a polyfill like 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only'.`\r\n                  )\r\n                }\r\n              }\r\n            }\r\n          }\r\n\r\n    function actionCreator(\r\n      arg: ThunkArg\r\n    ): AsyncThunkAction<Returned, ThunkArg, ThunkApiConfig> {\r\n      return (dispatch, getState, extra) => {\r\n        const requestId = options?.idGenerator\r\n          ? options.idGenerator(arg)\r\n          : nanoid()\r\n\r\n        const abortController = new AC()\r\n        let abortReason: string | undefined\r\n\r\n        let started = false\r\n        function abort(reason?: string) {\r\n          abortReason = reason\r\n          abortController.abort()\r\n        }\r\n\r\n        const promise = (async function () {\r\n          let finalAction: ReturnType<typeof fulfilled | typeof rejected>\r\n          try {\r\n            let conditionResult = options?.condition?.(arg, { getState, extra })\r\n            if (isThenable(conditionResult)) {\r\n              conditionResult = await conditionResult\r\n            }\r\n\r\n            if (conditionResult === false || abortController.signal.aborted) {\r\n              // eslint-disable-next-line no-throw-literal\r\n              throw {\r\n                name: 'ConditionError',\r\n                message: 'Aborted due to condition callback returning false.',\r\n              }\r\n            }\r\n            started = true\r\n\r\n            const abortedPromise = new Promise<never>((_, reject) =>\r\n              abortController.signal.addEventListener('abort', () =>\r\n                reject({\r\n                  name: 'AbortError',\r\n                  message: abortReason || 'Aborted',\r\n                })\r\n              )\r\n            )\r\n            dispatch(\r\n              pending(\r\n                requestId,\r\n                arg,\r\n                options?.getPendingMeta?.(\r\n                  { requestId, arg },\r\n                  { getState, extra }\r\n                )\r\n              )\r\n            )\r\n            finalAction = await Promise.race([\r\n              abortedPromise,\r\n              Promise.resolve(\r\n                payloadCreator(arg, {\r\n                  dispatch,\r\n                  getState,\r\n                  extra,\r\n                  requestId,\r\n                  signal: abortController.signal,\r\n                  abort,\r\n                  rejectWithValue: ((\r\n                    value: RejectedValue,\r\n                    meta?: RejectedMeta\r\n                  ) => {\r\n                    return new RejectWithValue(value, meta)\r\n                  }) as any,\r\n                  fulfillWithValue: ((value: unknown, meta?: FulfilledMeta) => {\r\n                    return new FulfillWithMeta(value, meta)\r\n                  }) as any,\r\n                })\r\n              ).then((result) => {\r\n                if (result instanceof RejectWithValue) {\r\n                  throw result\r\n                }\r\n                if (result instanceof FulfillWithMeta) {\r\n                  return fulfilled(result.payload, requestId, arg, result.meta)\r\n                }\r\n                return fulfilled(result as any, requestId, arg)\r\n              }),\r\n            ])\r\n          } catch (err) {\r\n            finalAction =\r\n              err instanceof RejectWithValue\r\n                ? rejected(null, requestId, arg, err.payload, err.meta)\r\n                : rejected(err as any, requestId, arg)\r\n          }\r\n          // We dispatch the result action _after_ the catch, to avoid having any errors\r\n          // here get swallowed by the try/catch block,\r\n          // per https://twitter.com/dan_abramov/status/770914221638942720\r\n          // and https://github.com/reduxjs/redux-toolkit/blob/e85eb17b39a2118d859f7b7746e0f3fee523e089/docs/tutorials/advanced-tutorial.md#async-error-handling-logic-in-thunks\r\n\r\n          const skipDispatch =\r\n            options &&\r\n            !options.dispatchConditionRejection &&\r\n            rejected.match(finalAction) &&\r\n            (finalAction as any).meta.condition\r\n\r\n          if (!skipDispatch) {\r\n            dispatch(finalAction)\r\n          }\r\n          return finalAction\r\n        })()\r\n        return Object.assign(promise as Promise<any>, {\r\n          abort,\r\n          requestId,\r\n          arg,\r\n          unwrap() {\r\n            return promise.then<any>(unwrapResult)\r\n          },\r\n        })\r\n      }\r\n    }\r\n\r\n    return Object.assign(\r\n      actionCreator as AsyncThunkActionCreator<\r\n        Returned,\r\n        ThunkArg,\r\n        ThunkApiConfig\r\n      >,\r\n      {\r\n        pending,\r\n        rejected,\r\n        fulfilled,\r\n        typePrefix,\r\n      }\r\n    )\r\n  }\r\n  createAsyncThunk.withTypes = () => createAsyncThunk\r\n\r\n  return createAsyncThunk as CreateAsyncThunk<AsyncThunkConfig>\r\n})()\r\n\r\ninterface UnwrappableAction {\r\n  payload: any\r\n  meta?: any\r\n  error?: any\r\n}\r\n\r\ntype UnwrappedActionPayload<T extends UnwrappableAction> = Exclude<\r\n  T,\r\n  { error: any }\r\n>['payload']\r\n\r\n/**\r\n * @public\r\n */\r\nexport function unwrapResult<R extends UnwrappableAction>(\r\n  action: R\r\n): UnwrappedActionPayload<R> {\r\n  if (action.meta && action.meta.rejectedWithValue) {\r\n    throw action.payload\r\n  }\r\n  if (action.error) {\r\n    throw action.error\r\n  }\r\n  return action.payload\r\n}\r\n\r\ntype WithStrictNullChecks<True, False> = undefined extends boolean\r\n  ? False\r\n  : True\r\n\r\nfunction isThenable(value: any): value is PromiseLike<any> {\r\n  return (\r\n    value !== null &&\r\n    typeof value === 'object' &&\r\n    typeof value.then === 'function'\r\n  )\r\n}\r\n", "import type { Middleware, StoreEnhancer } from 'redux'\r\nimport type { MiddlewareArray } from './utils'\r\n\r\n/**\r\n * return True if T is `any`, otherwise return False\r\n * taken from https://github.com/joonhocho/tsdef\r\n *\r\n * @internal\r\n */\r\nexport type IsAny<T, True, False = never> =\r\n  // test if we are going the left AND right path in the condition\r\n  true | false extends (T extends never ? true : false) ? True : False\r\n\r\n/**\r\n * return True if T is `unknown`, otherwise return False\r\n * taken from https://github.com/joonhocho/tsdef\r\n *\r\n * @internal\r\n */\r\nexport type IsUnknown<T, True, False = never> = unknown extends T\r\n  ? IsAny<T, False, True>\r\n  : False\r\n\r\nexport type FallbackIfUnknown<T, Fallback> = IsUnknown<T, Fallback, T>\r\n\r\n/**\r\n * @internal\r\n */\r\nexport type IfMaybeUndefined<P, True, False> = [undefined] extends [P]\r\n  ? True\r\n  : False\r\n\r\n/**\r\n * @internal\r\n */\r\nexport type IfVoid<P, True, False> = [void] extends [P] ? True : False\r\n\r\n/**\r\n * @internal\r\n */\r\nexport type IsEmptyObj<T, True, False = never> = T extends any\r\n  ? keyof T extends never\r\n    ? IsUnknown<T, False, IfMaybeUndefined<T, False, IfVoid<T, False, True>>>\r\n    : False\r\n  : never\r\n\r\n/**\r\n * returns True if TS version is above 3.5, False if below.\r\n * uses feature detection to detect TS version >= 3.5\r\n * * versions below 3.5 will return `{}` for unresolvable interference\r\n * * versions above will return `unknown`\r\n *\r\n * @internal\r\n */\r\nexport type AtLeastTS35<True, False> = [True, False][IsUnknown<\r\n  ReturnType<<T>() => T>,\r\n  0,\r\n  1\r\n>]\r\n\r\n/**\r\n * @internal\r\n */\r\nexport type IsUnknownOrNonInferrable<T, True, False> = AtLeastTS35<\r\n  IsUnknown<T, True, False>,\r\n  IsEmptyObj<T, True, IsUnknown<T, True, False>>\r\n>\r\n\r\n/**\r\n * Convert a Union type `(A|B)` to an intersection type `(A&B)`\r\n */\r\nexport type UnionToIntersection<U> = (\r\n  U extends any ? (k: U) => void : never\r\n) extends (k: infer I) => void\r\n  ? I\r\n  : never\r\n\r\n// Appears to have a convenient side effect of ignoring `never` even if that's not what you specified\r\nexport type ExcludeFromTuple<T, E, Acc extends unknown[] = []> = T extends [\r\n  infer Head,\r\n  ...infer Tail\r\n]\r\n  ? ExcludeFromTuple<Tail, E, [...Acc, ...([Head] extends [E] ? [] : [Head])]>\r\n  : Acc\r\n\r\ntype ExtractDispatchFromMiddlewareTuple<\r\n  MiddlewareTuple extends any[],\r\n  Acc extends {}\r\n> = MiddlewareTuple extends [infer Head, ...infer Tail]\r\n  ? ExtractDispatchFromMiddlewareTuple<\r\n      Tail,\r\n      Acc & (Head extends Middleware<infer D> ? IsAny<D, {}, D> : {})\r\n    >\r\n  : Acc\r\n\r\nexport type ExtractDispatchExtensions<M> = M extends MiddlewareArray<\r\n  infer MiddlewareTuple\r\n>\r\n  ? ExtractDispatchFromMiddlewareTuple<MiddlewareTuple, {}>\r\n  : M extends ReadonlyArray<Middleware>\r\n  ? ExtractDispatchFromMiddlewareTuple<[...M], {}>\r\n  : never\r\n\r\nexport type ExtractStoreExtensions<E> = E extends any[]\r\n  ? UnionToIntersection<E[number] extends StoreEnhancer<infer Ext> ? Ext extends {} ? Ext : {} : {}>\r\n  : {}\r\n\r\n/**\r\n * Helper type. Passes T out again, but boxes it in a way that it cannot\r\n * \"widen\" the type by accident if it is a generic that should be inferred\r\n * from elsewhere.\r\n *\r\n * @internal\r\n */\r\nexport type NoInfer<T> = [T][T extends any ? 0 : never]\r\n\r\nexport type Omit<T, K extends keyof any> = Pick<T, Exclude<keyof T, K>>\r\n\r\nexport interface TypeGuard<T> {\r\n  (value: any): value is T\r\n}\r\n\r\nexport interface HasMatchFunction<T> {\r\n  match: TypeGuard<T>\r\n}\r\n\r\nexport const hasMatchFunction = <T>(\r\n  v: Matcher<T>\r\n): v is HasMatchFunction<T> => {\r\n  return v && typeof (v as HasMatchFunction<T>).match === 'function'\r\n}\r\n\r\n/** @public */\r\nexport type Matcher<T> = HasMatchFunction<T> | TypeGuard<T>\r\n\r\n/** @public */\r\nexport type ActionFromMatcher<M extends Matcher<any>> = M extends Matcher<\r\n  infer T\r\n>\r\n  ? T\r\n  : never\r\n\r\nexport type Id<T> = { [K in keyof T]: T[K] } & {}\r\n", "import type {\r\n  ActionFromMatcher,\r\n  Matcher,\r\n  UnionToIntersection,\r\n} from './tsHelpers'\r\nimport { hasMatchFunction } from './tsHelpers'\r\nimport type {\r\n  AsyncThunk,\r\n  AsyncThunkFulfilledActionCreator,\r\n  AsyncThunkPendingActionCreator,\r\n  AsyncThunkRejectedActionCreator,\r\n} from './createAsyncThunk'\r\n\r\n/** @public */\r\nexport type ActionMatchingAnyOf<\r\n  Matchers extends [Matcher<any>, ...Matcher<any>[]]\r\n> = ActionFromMatcher<Matchers[number]>\r\n\r\n/** @public */\r\nexport type ActionMatchingAllOf<\r\n  Matchers extends [Matcher<any>, ...Matcher<any>[]]\r\n> = UnionToIntersection<ActionMatchingAnyOf<Matchers>>\r\n\r\nconst matches = (matcher: Matcher<any>, action: any) => {\r\n  if (hasMatchFunction(matcher)) {\r\n    return matcher.match(action)\r\n  } else {\r\n    return matcher(action)\r\n  }\r\n}\r\n\r\n/**\r\n * A higher-order function that returns a function that may be used to check\r\n * whether an action matches any one of the supplied type guards or action\r\n * creators.\r\n *\r\n * @param matchers The type guards or action creators to match against.\r\n *\r\n * @public\r\n */\r\nexport function isAnyOf<Matchers extends [Matcher<any>, ...Matcher<any>[]]>(\r\n  ...matchers: Matchers\r\n) {\r\n  return (action: any): action is ActionMatchingAnyOf<Matchers> => {\r\n    return matchers.some((matcher) => matches(matcher, action))\r\n  }\r\n}\r\n\r\n/**\r\n * A higher-order function that returns a function that may be used to check\r\n * whether an action matches all of the supplied type guards or action\r\n * creators.\r\n *\r\n * @param matchers The type guards or action creators to match against.\r\n *\r\n * @public\r\n */\r\nexport function isAllOf<Matchers extends [Matcher<any>, ...Matcher<any>[]]>(\r\n  ...matchers: Matchers\r\n) {\r\n  return (action: any): action is ActionMatchingAllOf<Matchers> => {\r\n    return matchers.every((matcher) => matches(matcher, action))\r\n  }\r\n}\r\n\r\n/**\r\n * @param action A redux action\r\n * @param validStatus An array of valid meta.requestStatus values\r\n *\r\n * @internal\r\n */\r\nexport function hasExpectedRequestMetadata(\r\n  action: any,\r\n  validStatus: readonly string[]\r\n) {\r\n  if (!action || !action.meta) return false\r\n\r\n  const hasValidRequestId = typeof action.meta.requestId === 'string'\r\n  const hasValidRequestStatus =\r\n    validStatus.indexOf(action.meta.requestStatus) > -1\r\n\r\n  return hasValidRequestId && hasValidRequestStatus\r\n}\r\n\r\nfunction isAsyncThunkArray(a: [any] | AnyAsyncThunk[]): a is AnyAsyncThunk[] {\r\n  return (\r\n    typeof a[0] === 'function' &&\r\n    'pending' in a[0] &&\r\n    'fulfilled' in a[0] &&\r\n    'rejected' in a[0]\r\n  )\r\n}\r\n\r\nexport type UnknownAsyncThunkPendingAction = ReturnType<\r\n  AsyncThunkPendingActionCreator<unknown>\r\n>\r\n\r\nexport type PendingActionFromAsyncThunk<T extends AnyAsyncThunk> =\r\n  ActionFromMatcher<T['pending']>\r\n\r\n/**\r\n * A higher-order function that returns a function that may be used to check\r\n * whether an action was created by an async thunk action creator, and that\r\n * the action is pending.\r\n *\r\n * @public\r\n */\r\nexport function isPending(): (\r\n  action: any\r\n) => action is UnknownAsyncThunkPendingAction\r\n/**\r\n * A higher-order function that returns a function that may be used to check\r\n * whether an action belongs to one of the provided async thunk action creators,\r\n * and that the action is pending.\r\n *\r\n * @param asyncThunks (optional) The async thunk action creators to match against.\r\n *\r\n * @public\r\n */\r\nexport function isPending<\r\n  AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]\r\n>(\r\n  ...asyncThunks: AsyncThunks\r\n): (action: any) => action is PendingActionFromAsyncThunk<AsyncThunks[number]>\r\n/**\r\n * Tests if `action` is a pending thunk action\r\n * @public\r\n */\r\nexport function isPending(action: any): action is UnknownAsyncThunkPendingAction\r\nexport function isPending<\r\n  AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]\r\n>(...asyncThunks: AsyncThunks | [any]) {\r\n  if (asyncThunks.length === 0) {\r\n    return (action: any) => hasExpectedRequestMetadata(action, ['pending'])\r\n  }\r\n\r\n  if (!isAsyncThunkArray(asyncThunks)) {\r\n    return isPending()(asyncThunks[0])\r\n  }\r\n\r\n  return (\r\n    action: any\r\n  ): action is PendingActionFromAsyncThunk<AsyncThunks[number]> => {\r\n    // note: this type will be correct because we have at least 1 asyncThunk\r\n    const matchers: [Matcher<any>, ...Matcher<any>[]] = asyncThunks.map(\r\n      (asyncThunk) => asyncThunk.pending\r\n    ) as any\r\n\r\n    const combinedMatcher = isAnyOf(...matchers)\r\n\r\n    return combinedMatcher(action)\r\n  }\r\n}\r\n\r\nexport type UnknownAsyncThunkRejectedAction = ReturnType<\r\n  AsyncThunkRejectedActionCreator<unknown, unknown>\r\n>\r\n\r\nexport type RejectedActionFromAsyncThunk<T extends AnyAsyncThunk> =\r\n  ActionFromMatcher<T['rejected']>\r\n\r\n/**\r\n * A higher-order function that returns a function that may be used to check\r\n * whether an action was created by an async thunk action creator, and that\r\n * the action is rejected.\r\n *\r\n * @public\r\n */\r\nexport function isRejected(): (\r\n  action: any\r\n) => action is UnknownAsyncThunkRejectedAction\r\n/**\r\n * A higher-order function that returns a function that may be used to check\r\n * whether an action belongs to one of the provided async thunk action creators,\r\n * and that the action is rejected.\r\n *\r\n * @param asyncThunks (optional) The async thunk action creators to match against.\r\n *\r\n * @public\r\n */\r\nexport function isRejected<\r\n  AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]\r\n>(\r\n  ...asyncThunks: AsyncThunks\r\n): (action: any) => action is RejectedActionFromAsyncThunk<AsyncThunks[number]>\r\n/**\r\n * Tests if `action` is a rejected thunk action\r\n * @public\r\n */\r\nexport function isRejected(\r\n  action: any\r\n): action is UnknownAsyncThunkRejectedAction\r\nexport function isRejected<\r\n  AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]\r\n>(...asyncThunks: AsyncThunks | [any]) {\r\n  if (asyncThunks.length === 0) {\r\n    return (action: any) => hasExpectedRequestMetadata(action, ['rejected'])\r\n  }\r\n\r\n  if (!isAsyncThunkArray(asyncThunks)) {\r\n    return isRejected()(asyncThunks[0])\r\n  }\r\n\r\n  return (\r\n    action: any\r\n  ): action is RejectedActionFromAsyncThunk<AsyncThunks[number]> => {\r\n    // note: this type will be correct because we have at least 1 asyncThunk\r\n    const matchers: [Matcher<any>, ...Matcher<any>[]] = asyncThunks.map(\r\n      (asyncThunk) => asyncThunk.rejected\r\n    ) as any\r\n\r\n    const combinedMatcher = isAnyOf(...matchers)\r\n\r\n    return combinedMatcher(action)\r\n  }\r\n}\r\n\r\nexport type UnknownAsyncThunkRejectedWithValueAction = ReturnType<\r\n  AsyncThunkRejectedActionCreator<unknown, unknown>\r\n>\r\n\r\nexport type RejectedWithValueActionFromAsyncThunk<T extends AnyAsyncThunk> =\r\n  ActionFromMatcher<T['rejected']> &\r\n    (T extends AsyncThunk<any, any, { rejectValue: infer RejectedValue }>\r\n      ? { payload: RejectedValue }\r\n      : unknown)\r\n\r\n/**\r\n * A higher-order function that returns a function that may be used to check\r\n * whether an action was created by an async thunk action creator, and that\r\n * the action is rejected with value.\r\n *\r\n * @public\r\n */\r\nexport function isRejectedWithValue(): (\r\n  action: any\r\n) => action is UnknownAsyncThunkRejectedAction\r\n/**\r\n * A higher-order function that returns a function that may be used to check\r\n * whether an action belongs to one of the provided async thunk action creators,\r\n * and that the action is rejected with value.\r\n *\r\n * @param asyncThunks (optional) The async thunk action creators to match against.\r\n *\r\n * @public\r\n */\r\nexport function isRejectedWithValue<\r\n  AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]\r\n>(\r\n  ...asyncThunks: AsyncThunks\r\n): (\r\n  action: any\r\n) => action is RejectedWithValueActionFromAsyncThunk<AsyncThunks[number]>\r\n/**\r\n * Tests if `action` is a rejected thunk action with value\r\n * @public\r\n */\r\nexport function isRejectedWithValue(\r\n  action: any\r\n): action is UnknownAsyncThunkRejectedAction\r\nexport function isRejectedWithValue<\r\n  AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]\r\n>(...asyncThunks: AsyncThunks | [any]) {\r\n  const hasFlag = (action: any): action is any => {\r\n    return action && action.meta && action.meta.rejectedWithValue\r\n  }\r\n\r\n  if (asyncThunks.length === 0) {\r\n    return (action: any) => {\r\n      const combinedMatcher = isAllOf(isRejected(...asyncThunks), hasFlag)\r\n\r\n      return combinedMatcher(action)\r\n    }\r\n  }\r\n\r\n  if (!isAsyncThunkArray(asyncThunks)) {\r\n    return isRejectedWithValue()(asyncThunks[0])\r\n  }\r\n\r\n  return (\r\n    action: any\r\n  ): action is RejectedActionFromAsyncThunk<AsyncThunks[number]> => {\r\n    const combinedMatcher = isAllOf(isRejected(...asyncThunks), hasFlag)\r\n\r\n    return combinedMatcher(action)\r\n  }\r\n}\r\n\r\nexport type UnknownAsyncThunkFulfilledAction = ReturnType<\r\n  AsyncThunkFulfilledActionCreator<unknown, unknown>\r\n>\r\n\r\nexport type FulfilledActionFromAsyncThunk<T extends AnyAsyncThunk> =\r\n  ActionFromMatcher<T['fulfilled']>\r\n\r\n/**\r\n * A higher-order function that returns a function that may be used to check\r\n * whether an action was created by an async thunk action creator, and that\r\n * the action is fulfilled.\r\n *\r\n * @public\r\n */\r\nexport function isFulfilled(): (\r\n  action: any\r\n) => action is UnknownAsyncThunkFulfilledAction\r\n/**\r\n * A higher-order function that returns a function that may be used to check\r\n * whether an action belongs to one of the provided async thunk action creators,\r\n * and that the action is fulfilled.\r\n *\r\n * @param asyncThunks (optional) The async thunk action creators to match against.\r\n *\r\n * @public\r\n */\r\nexport function isFulfilled<\r\n  AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]\r\n>(\r\n  ...asyncThunks: AsyncThunks\r\n): (action: any) => action is FulfilledActionFromAsyncThunk<AsyncThunks[number]>\r\n/**\r\n * Tests if `action` is a fulfilled thunk action\r\n * @public\r\n */\r\nexport function isFulfilled(\r\n  action: any\r\n): action is UnknownAsyncThunkFulfilledAction\r\nexport function isFulfilled<\r\n  AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]\r\n>(...asyncThunks: AsyncThunks | [any]) {\r\n  if (asyncThunks.length === 0) {\r\n    return (action: any) => hasExpectedRequestMetadata(action, ['fulfilled'])\r\n  }\r\n\r\n  if (!isAsyncThunkArray(asyncThunks)) {\r\n    return isFulfilled()(asyncThunks[0])\r\n  }\r\n\r\n  return (\r\n    action: any\r\n  ): action is FulfilledActionFromAsyncThunk<AsyncThunks[number]> => {\r\n    // note: this type will be correct because we have at least 1 asyncThunk\r\n    const matchers: [Matcher<any>, ...Matcher<any>[]] = asyncThunks.map(\r\n      (asyncThunk) => asyncThunk.fulfilled\r\n    ) as any\r\n\r\n    const combinedMatcher = isAnyOf(...matchers)\r\n\r\n    return combinedMatcher(action)\r\n  }\r\n}\r\n\r\nexport type UnknownAsyncThunkAction =\r\n  | UnknownAsyncThunkPendingAction\r\n  | UnknownAsyncThunkRejectedAction\r\n  | UnknownAsyncThunkFulfilledAction\r\n\r\nexport type AnyAsyncThunk = {\r\n  pending: { match: (action: any) => action is any }\r\n  fulfilled: { match: (action: any) => action is any }\r\n  rejected: { match: (action: any) => action is any }\r\n}\r\n\r\nexport type ActionsFromAsyncThunk<T extends AnyAsyncThunk> =\r\n  | ActionFromMatcher<T['pending']>\r\n  | ActionFromMatcher<T['fulfilled']>\r\n  | ActionFromMatcher<T['rejected']>\r\n\r\n/**\r\n * A higher-order function that returns a function that may be used to check\r\n * whether an action was created by an async thunk action creator.\r\n *\r\n * @public\r\n */\r\nexport function isAsyncThunkAction(): (\r\n  action: any\r\n) => action is UnknownAsyncThunkAction\r\n/**\r\n * A higher-order function that returns a function that may be used to check\r\n * whether an action belongs to one of the provided async thunk action creators.\r\n *\r\n * @param asyncThunks (optional) The async thunk action creators to match against.\r\n *\r\n * @public\r\n */\r\nexport function isAsyncThunkAction<\r\n  AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]\r\n>(\r\n  ...asyncThunks: AsyncThunks\r\n): (action: any) => action is ActionsFromAsyncThunk<AsyncThunks[number]>\r\n/**\r\n * Tests if `action` is a thunk action\r\n * @public\r\n */\r\nexport function isAsyncThunkAction(\r\n  action: any\r\n): action is UnknownAsyncThunkAction\r\nexport function isAsyncThunkAction<\r\n  AsyncThunks extends [AnyAsyncThunk, ...AnyAsyncThunk[]]\r\n>(...asyncThunks: AsyncThunks | [any]) {\r\n  if (asyncThunks.length === 0) {\r\n    return (action: any) =>\r\n      hasExpectedRequestMetadata(action, ['pending', 'fulfilled', 'rejected'])\r\n  }\r\n\r\n  if (!isAsyncThunkArray(asyncThunks)) {\r\n    return isAsyncThunkAction()(asyncThunks[0])\r\n  }\r\n\r\n  return (\r\n    action: any\r\n  ): action is ActionsFromAsyncThunk<AsyncThunks[number]> => {\r\n    // note: this type will be correct because we have at least 1 asyncThunk\r\n    const matchers: [Matcher<any>, ...Matcher<any>[]] = [] as any\r\n\r\n    for (const asyncThunk of asyncThunks) {\r\n      matchers.push(\r\n        asyncThunk.pending,\r\n        asyncThunk.rejected,\r\n        asyncThunk.fulfilled\r\n      )\r\n    }\r\n\r\n    const combinedMatcher = isAnyOf(...matchers)\r\n\r\n    return combinedMatcher(action)\r\n  }\r\n}\r\n", "import type { AbortSignalWithReason } from './types'\r\n\r\nexport const assertFunction: (\r\n  func: unknown,\r\n  expected: string\r\n) => asserts func is (...args: unknown[]) => unknown = (\r\n  func: unknown,\r\n  expected: string\r\n) => {\r\n  if (typeof func !== 'function') {\r\n    throw new TypeError(`${expected} is not a function`)\r\n  }\r\n}\r\n\r\nexport const noop = () => {}\r\n\r\nexport const catchRejection = <T>(\r\n  promise: Promise<T>,\r\n  onError = noop\r\n): Promise<T> => {\r\n  promise.catch(onError)\r\n\r\n  return promise\r\n}\r\n\r\nexport const addAbortSignalListener = (\r\n  abortSignal: AbortSignal,\r\n  callback: (evt: Event) => void\r\n) => {\r\n  abortSignal.addEventListener('abort', callback, { once: true })\r\n}\r\n\r\n/**\r\n * Calls `abortController.abort(reason)` and patches `signal.reason`.\r\n * if it is not supported.\r\n *\r\n * At the time of writing `signal.reason` is available in FF chrome, edge node 17 and deno.\r\n * @param abortController\r\n * @param reason\r\n * @returns\r\n * @see https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal/reason\r\n */\r\nexport const abortControllerWithReason = <T>(\r\n  abortController: AbortController,\r\n  reason: T\r\n): void => {\r\n  type Consumer<T> = (val: T) => void\r\n\r\n  const signal = abortController.signal as AbortSignalWithReason<T>\r\n\r\n  if (signal.aborted) {\r\n    return\r\n  }\r\n\r\n  // Patch `reason` if necessary.\r\n  // - We use defineProperty here because reason is a getter of `AbortSignal.__proto__`.\r\n  // - We need to patch 'reason' before calling `.abort()` because listeners to the 'abort'\r\n  // event are are notified immediately.\r\n  if (!('reason' in signal)) {\r\n    Object.defineProperty(signal, 'reason', {\r\n      enumerable: true,\r\n      value: reason,\r\n      configurable: true,\r\n      writable: true,\r\n    })\r\n  }\r\n\r\n  ;(abortController.abort as Consumer<typeof reason>)(reason)\r\n}\r\n", "import type { SerializedError } from '@reduxjs/toolkit'\r\n\r\nconst task = 'task'\r\nconst listener = 'listener'\r\nconst completed = 'completed'\r\nconst cancelled = 'cancelled'\r\n\r\n/* TaskAbortError error codes  */\r\nexport const taskCancelled = `task-${cancelled}` as const\r\nexport const taskCompleted = `task-${completed}` as const\r\nexport const listenerCancelled = `${listener}-${cancelled}` as const\r\nexport const listenerCompleted = `${listener}-${completed}` as const\r\n\r\nexport class TaskAbortError implements SerializedError {\r\n  name = 'TaskAbortError'\r\n  message: string\r\n  constructor(public code: string | undefined) {\r\n    this.message = `${task} ${cancelled} (reason: ${code})`\r\n  }\r\n}\r\n", "import { TaskAbortError } from './exceptions'\r\nimport type { AbortSignalWithReason, TaskResult } from './types'\r\nimport { addAbortSignalListener, catchRejection } from './utils'\r\n\r\n/**\r\n * Synchronously raises {@link TaskAbortError} if the task tied to the input `signal` has been cancelled.\r\n * @param signal\r\n * @param reason\r\n * @see {TaskAbortError}\r\n */\r\nexport const validateActive = (signal: AbortSignal): void => {\r\n  if (signal.aborted) {\r\n    throw new TaskAbortError((signal as AbortSignalWithReason<string>).reason)\r\n  }\r\n}\r\n\r\n/**\r\n * Returns a promise that will reject {@link TaskAbortError} if the task is cancelled.\r\n * @param signal\r\n * @returns\r\n */\r\nexport const promisifyAbortSignal = (\r\n  signal: AbortSignalWithReason<string>\r\n): Promise<never> => {\r\n  return catchRejection(\r\n    new Promise<never>((_, reject) => {\r\n      const notifyRejection = () => reject(new TaskAbortError(signal.reason))\r\n\r\n      if (signal.aborted) {\r\n        notifyRejection()\r\n      } else {\r\n        addAbortSignalListener(signal, notifyRejection)\r\n      }\r\n    })\r\n  )\r\n}\r\n\r\n/**\r\n * Runs a task and returns promise that resolves to {@link TaskResult}.\r\n * Second argument is an optional `cleanUp` function that always runs after task.\r\n *\r\n * **Note:** `runTask` runs the executor in the next microtask.\r\n * @returns\r\n */\r\nexport const runTask = async <T>(\r\n  task: () => Promise<T>,\r\n  cleanUp?: () => void\r\n): Promise<TaskResult<T>> => {\r\n  try {\r\n    await Promise.resolve()\r\n    const value = await task()\r\n    return {\r\n      status: 'ok',\r\n      value,\r\n    }\r\n  } catch (error: any) {\r\n    return {\r\n      status: error instanceof TaskAbortError ? 'cancelled' : 'rejected',\r\n      error,\r\n    }\r\n  } finally {\r\n    cleanUp?.()\r\n  }\r\n}\r\n\r\n/**\r\n * Given an input `AbortSignal` and a promise returns another promise that resolves\r\n * as soon the input promise is provided or rejects as soon as\r\n * `AbortSignal.abort` is `true`.\r\n * @param signal\r\n * @returns\r\n */\r\nexport const createPause = <T>(signal: AbortSignal) => {\r\n  return (promise: Promise<T>): Promise<T> => {\r\n    return catchRejection(\r\n      Promise.race([promisifyAbortSignal(signal), promise]).then((output) => {\r\n        validateActive(signal)\r\n        return output\r\n      })\r\n    )\r\n  }\r\n}\r\n\r\n/**\r\n * Given an input `AbortSignal` and `timeoutMs` returns a promise that resolves\r\n * after `timeoutMs` or rejects as soon as `AbortSignal.abort` is `true`.\r\n * @param signal\r\n * @returns\r\n */\r\nexport const createDelay = (signal: AbortSignal) => {\r\n  const pause = createPause<void>(signal)\r\n  return (timeoutMs: number): Promise<void> => {\r\n    return pause(new Promise<void>((resolve) => setTimeout(resolve, timeoutMs)))\r\n  }\r\n}\r\n", "import type { Dispatch, AnyAction, MiddlewareAPI } from 'redux'\r\nimport type { ThunkDispatch } from 'redux-thunk'\r\nimport { createAction } from '../createAction'\r\nimport { nanoid } from '../nanoid'\r\n\r\nimport type {\r\n  ListenerMiddleware,\r\n  ListenerMiddlewareInstance,\r\n  AddListenerOverloads,\r\n  AnyListenerPredicate,\r\n  CreateListenerMiddlewareOptions,\r\n  TypedAddListener,\r\n  TypedCreateListenerEntry,\r\n  FallbackAddListenerOptions,\r\n  ListenerEntry,\r\n  ListenerErrorHandler,\r\n  UnsubscribeListener,\r\n  TakePattern,\r\n  ListenerErrorInfo,\r\n  ForkedTaskExecutor,\r\n  ForkedTask,\r\n  TypedRemoveListener,\r\n  TaskResult,\r\n  AbortSignalWithReason,\r\n  UnsubscribeListenerOptions,\r\n} from './types'\r\nimport {\r\n  abortControllerWithReason,\r\n  addAbortSignalListener,\r\n  assertFunction,\r\n  catchRejection,\r\n} from './utils'\r\nimport {\r\n  listenerCancelled,\r\n  listenerCompleted,\r\n  TaskAbortError,\r\n  taskCancelled,\r\n  taskCompleted,\r\n} from './exceptions'\r\nimport {\r\n  runTask,\r\n  promisifyAbortSignal,\r\n  validateActive,\r\n  createPause,\r\n  createDelay,\r\n} from './task'\r\nexport { TaskAbortError } from './exceptions'\r\nexport type {\r\n  ListenerEffect,\r\n  ListenerMiddleware,\r\n  ListenerEffectAPI,\r\n  ListenerMiddlewareInstance,\r\n  CreateListenerMiddlewareOptions,\r\n  ListenerErrorHandler,\r\n  TypedStartListening,\r\n  TypedAddListener,\r\n  TypedStopListening,\r\n  TypedRemoveListener,\r\n  UnsubscribeListener,\r\n  UnsubscribeListenerOptions,\r\n  ForkedTaskExecutor,\r\n  ForkedTask,\r\n  ForkedTaskAPI,\r\n  AsyncTaskExecutor,\r\n  SyncTaskExecutor,\r\n  TaskCancelled,\r\n  TaskRejected,\r\n  TaskResolved,\r\n  TaskResult,\r\n} from './types'\r\n\r\n//Overly-aggressive byte-shaving\r\nconst { assign } = Object\r\n/**\r\n * @internal\r\n */\r\nconst INTERNAL_NIL_TOKEN = {} as const\r\n\r\nconst alm = 'listenerMiddleware' as const\r\n\r\nconst createFork = (parentAbortSignal: AbortSignalWithReason<unknown>) => {\r\n  const linkControllers = (controller: AbortController) =>\r\n    addAbortSignalListener(parentAbortSignal, () =>\r\n      abortControllerWithReason(controller, parentAbortSignal.reason)\r\n    )\r\n\r\n  return <T>(taskExecutor: ForkedTaskExecutor<T>): ForkedTask<T> => {\r\n    assertFunction(taskExecutor, 'taskExecutor')\r\n    const childAbortController = new AbortController()\r\n\r\n    linkControllers(childAbortController)\r\n\r\n    const result = runTask<T>(\r\n      async (): Promise<T> => {\r\n        validateActive(parentAbortSignal)\r\n        validateActive(childAbortController.signal)\r\n        const result = (await taskExecutor({\r\n          pause: createPause(childAbortController.signal),\r\n          delay: createDelay(childAbortController.signal),\r\n          signal: childAbortController.signal,\r\n        })) as T\r\n        validateActive(childAbortController.signal)\r\n        return result\r\n      },\r\n      () => abortControllerWithReason(childAbortController, taskCompleted)\r\n    )\r\n\r\n    return {\r\n      result: createPause<TaskResult<T>>(parentAbortSignal)(result),\r\n      cancel() {\r\n        abortControllerWithReason(childAbortController, taskCancelled)\r\n      },\r\n    }\r\n  }\r\n}\r\n\r\nconst createTakePattern = <S>(\r\n  startListening: AddListenerOverloads<\r\n    UnsubscribeListener,\r\n    S,\r\n    Dispatch<AnyAction>\r\n  >,\r\n  signal: AbortSignal\r\n): TakePattern<S> => {\r\n  /**\r\n   * A function that takes a ListenerPredicate and an optional timeout,\r\n   * and resolves when either the predicate returns `true` based on an action\r\n   * state combination or when the timeout expires.\r\n   * If the parent listener is canceled while waiting, this will throw a\r\n   * TaskAbortError.\r\n   */\r\n  const take = async <P extends AnyListenerPredicate<S>>(\r\n    predicate: P,\r\n    timeout: number | undefined\r\n  ) => {\r\n    validateActive(signal)\r\n\r\n    // Placeholder unsubscribe function until the listener is added\r\n    let unsubscribe: UnsubscribeListener = () => {}\r\n\r\n    const tuplePromise = new Promise<[AnyAction, S, S]>((resolve) => {\r\n      // Inside the Promise, we synchronously add the listener.\r\n      unsubscribe = startListening({\r\n        predicate: predicate as any,\r\n        effect: (action, listenerApi): void => {\r\n          // One-shot listener that cleans up as soon as the predicate passes\r\n          listenerApi.unsubscribe()\r\n          // Resolve the promise with the same arguments the predicate saw\r\n          resolve([\r\n            action,\r\n            listenerApi.getState(),\r\n            listenerApi.getOriginalState(),\r\n          ])\r\n        },\r\n      })\r\n    })\r\n\r\n    const promises: (Promise<null> | Promise<[AnyAction, S, S]>)[] = [\r\n      promisifyAbortSignal(signal),\r\n      tuplePromise,\r\n    ]\r\n\r\n    if (timeout != null) {\r\n      promises.push(\r\n        new Promise<null>((resolve) => setTimeout(resolve, timeout, null))\r\n      )\r\n    }\r\n\r\n    try {\r\n      const output = await Promise.race(promises)\r\n\r\n      validateActive(signal)\r\n      return output\r\n    } finally {\r\n      // Always clean up the listener\r\n      unsubscribe()\r\n    }\r\n  }\r\n\r\n  return ((predicate: AnyListenerPredicate<S>, timeout: number | undefined) =>\r\n    catchRejection(take(predicate, timeout))) as TakePattern<S>\r\n}\r\n\r\nconst getListenerEntryPropsFrom = (options: FallbackAddListenerOptions) => {\r\n  let { type, actionCreator, matcher, predicate, effect } = options\r\n\r\n  if (type) {\r\n    predicate = createAction(type).match\r\n  } else if (actionCreator) {\r\n    type = actionCreator!.type\r\n    predicate = actionCreator.match\r\n  } else if (matcher) {\r\n    predicate = matcher\r\n  } else if (predicate) {\r\n    // pass\r\n  } else {\r\n    throw new Error(\r\n      'Creating or removing a listener requires one of the known fields for matching an action'\r\n    )\r\n  }\r\n\r\n  assertFunction(effect, 'options.listener')\r\n\r\n  return { predicate, type, effect }\r\n}\r\n\r\n/** Accepts the possible options for creating a listener, and returns a formatted listener entry */\r\nexport const createListenerEntry: TypedCreateListenerEntry<unknown> = (\r\n  options: FallbackAddListenerOptions\r\n) => {\r\n  const { type, predicate, effect } = getListenerEntryPropsFrom(options)\r\n\r\n  const id = nanoid()\r\n  const entry: ListenerEntry<unknown> = {\r\n    id,\r\n    effect,\r\n    type,\r\n    predicate,\r\n    pending: new Set<AbortController>(),\r\n    unsubscribe: () => {\r\n      throw new Error('Unsubscribe not initialized')\r\n    },\r\n  }\r\n\r\n  return entry\r\n}\r\n\r\nconst createClearListenerMiddleware = (\r\n  listenerMap: Map<string, ListenerEntry>\r\n) => {\r\n  return () => {\r\n    listenerMap.forEach(cancelActiveListeners)\r\n\r\n    listenerMap.clear()\r\n  }\r\n}\r\n\r\n/**\r\n * Safely reports errors to the `errorHandler` provided.\r\n * Errors that occur inside `errorHandler` are notified in a new task.\r\n * Inspired by [rxjs reportUnhandledError](https://github.com/ReactiveX/rxjs/blob/6fafcf53dc9e557439b25debaeadfd224b245a66/src/internal/util/reportUnhandledError.ts)\r\n * @param errorHandler\r\n * @param errorToNotify\r\n */\r\nconst safelyNotifyError = (\r\n  errorHandler: ListenerErrorHandler,\r\n  errorToNotify: unknown,\r\n  errorInfo: ListenerErrorInfo\r\n): void => {\r\n  try {\r\n    errorHandler(errorToNotify, errorInfo)\r\n  } catch (errorHandlerError) {\r\n    // We cannot let an error raised here block the listener queue.\r\n    // The error raised here will be picked up by `window.onerror`, `process.on('error')` etc...\r\n    setTimeout(() => {\r\n      throw errorHandlerError\r\n    }, 0)\r\n  }\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport const addListener = createAction(\r\n  `${alm}/add`\r\n) as TypedAddListener<unknown>\r\n\r\n/**\r\n * @public\r\n */\r\nexport const clearAllListeners = createAction(`${alm}/removeAll`)\r\n\r\n/**\r\n * @public\r\n */\r\nexport const removeListener = createAction(\r\n  `${alm}/remove`\r\n) as TypedRemoveListener<unknown>\r\n\r\nconst defaultErrorHandler: ListenerErrorHandler = (...args: unknown[]) => {\r\n  console.error(`${alm}/error`, ...args)\r\n}\r\n\r\nconst cancelActiveListeners = (\r\n  entry: ListenerEntry<unknown, Dispatch<AnyAction>>\r\n) => {\r\n  entry.pending.forEach((controller) => {\r\n    abortControllerWithReason(controller, listenerCancelled)\r\n  })\r\n}\r\n\r\n/**\r\n * @public\r\n */\r\nexport function createListenerMiddleware<\r\n  S = unknown,\r\n  D extends Dispatch<AnyAction> = ThunkDispatch<S, unknown, AnyAction>,\r\n  ExtraArgument = unknown\r\n>(middlewareOptions: CreateListenerMiddlewareOptions<ExtraArgument> = {}) {\r\n  const listenerMap = new Map<string, ListenerEntry>()\r\n  const { extra, onError = defaultErrorHandler } = middlewareOptions\r\n\r\n  assertFunction(onError, 'onError')\r\n\r\n  const insertEntry = (entry: ListenerEntry) => {\r\n    entry.unsubscribe = () => listenerMap.delete(entry!.id)\r\n\r\n    listenerMap.set(entry.id, entry)\r\n    return (cancelOptions?: UnsubscribeListenerOptions) => {\r\n      entry.unsubscribe()\r\n      if (cancelOptions?.cancelActive) {\r\n        cancelActiveListeners(entry)\r\n      }\r\n    }\r\n  }\r\n\r\n  const findListenerEntry = (\r\n    comparator: (entry: ListenerEntry) => boolean\r\n  ): ListenerEntry | undefined => {\r\n    for (const entry of Array.from(listenerMap.values())) {\r\n      if (comparator(entry)) {\r\n        return entry\r\n      }\r\n    }\r\n\r\n    return undefined\r\n  }\r\n\r\n  const startListening = (options: FallbackAddListenerOptions) => {\r\n    let entry = findListenerEntry(\r\n      (existingEntry) => existingEntry.effect === options.effect\r\n    )\r\n\r\n    if (!entry) {\r\n      entry = createListenerEntry(options as any)\r\n    }\r\n\r\n    return insertEntry(entry)\r\n  }\r\n\r\n  const stopListening = (\r\n    options: FallbackAddListenerOptions & UnsubscribeListenerOptions\r\n  ): boolean => {\r\n    const { type, effect, predicate } = getListenerEntryPropsFrom(options)\r\n\r\n    const entry = findListenerEntry((entry) => {\r\n      const matchPredicateOrType =\r\n        typeof type === 'string'\r\n          ? entry.type === type\r\n          : entry.predicate === predicate\r\n\r\n      return matchPredicateOrType && entry.effect === effect\r\n    })\r\n\r\n    if (entry) {\r\n      entry.unsubscribe()\r\n      if (options.cancelActive) {\r\n        cancelActiveListeners(entry)\r\n      }\r\n    }\r\n\r\n    return !!entry\r\n  }\r\n\r\n  const notifyListener = async (\r\n    entry: ListenerEntry<unknown, Dispatch<AnyAction>>,\r\n    action: AnyAction,\r\n    api: MiddlewareAPI,\r\n    getOriginalState: () => S\r\n  ) => {\r\n    const internalTaskController = new AbortController()\r\n    const take = createTakePattern(\r\n      startListening,\r\n      internalTaskController.signal\r\n    )\r\n\r\n    try {\r\n      entry.pending.add(internalTaskController)\r\n      await Promise.resolve(\r\n        entry.effect(\r\n          action,\r\n          // Use assign() rather than ... to avoid extra helper functions added to bundle\r\n          assign({}, api, {\r\n            getOriginalState,\r\n            condition: (\r\n              predicate: AnyListenerPredicate<any>,\r\n              timeout?: number\r\n            ) => take(predicate, timeout).then(Boolean),\r\n            take,\r\n            delay: createDelay(internalTaskController.signal),\r\n            pause: createPause<any>(internalTaskController.signal),\r\n            extra,\r\n            signal: internalTaskController.signal,\r\n            fork: createFork(internalTaskController.signal),\r\n            unsubscribe: entry.unsubscribe,\r\n            subscribe: () => {\r\n              listenerMap.set(entry.id, entry)\r\n            },\r\n            cancelActiveListeners: () => {\r\n              entry.pending.forEach((controller, _, set) => {\r\n                if (controller !== internalTaskController) {\r\n                  abortControllerWithReason(controller, listenerCancelled)\r\n                  set.delete(controller)\r\n                }\r\n              })\r\n            },\r\n          })\r\n        )\r\n      )\r\n    } catch (listenerError) {\r\n      if (!(listenerError instanceof TaskAbortError)) {\r\n        safelyNotifyError(onError, listenerError, {\r\n          raisedBy: 'effect',\r\n        })\r\n      }\r\n    } finally {\r\n      abortControllerWithReason(internalTaskController, listenerCompleted) // Notify that the task has completed\r\n      entry.pending.delete(internalTaskController)\r\n    }\r\n  }\r\n\r\n  const clearListenerMiddleware = createClearListenerMiddleware(listenerMap)\r\n\r\n  const middleware: ListenerMiddleware<S, D, ExtraArgument> =\r\n    (api) => (next) => (action) => {\r\n      if (addListener.match(action)) {\r\n        return startListening(action.payload)\r\n      }\r\n\r\n      if (clearAllListeners.match(action)) {\r\n        clearListenerMiddleware()\r\n        return\r\n      }\r\n\r\n      if (removeListener.match(action)) {\r\n        return stopListening(action.payload)\r\n      }\r\n\r\n      // Need to get this state _before_ the reducer processes the action\r\n      let originalState: S | typeof INTERNAL_NIL_TOKEN = api.getState()\r\n\r\n      // `getOriginalState` can only be called synchronously.\r\n      // @see https://github.com/reduxjs/redux-toolkit/discussions/1648#discussioncomment-1932820\r\n      const getOriginalState = (): S => {\r\n        if (originalState === INTERNAL_NIL_TOKEN) {\r\n          throw new Error(\r\n            `${alm}: getOriginalState can only be called synchronously`\r\n          )\r\n        }\r\n\r\n        return originalState as S\r\n      }\r\n\r\n      let result: unknown\r\n\r\n      try {\r\n        // Actually forward the action to the reducer before we handle listeners\r\n        result = next(action)\r\n\r\n        if (listenerMap.size > 0) {\r\n          let currentState = api.getState()\r\n          // Work around ESBuild+TS transpilation issue\r\n          const listenerEntries = Array.from(listenerMap.values())\r\n          for (let entry of listenerEntries) {\r\n            let runListener = false\r\n\r\n            try {\r\n              runListener = entry.predicate(action, currentState, originalState)\r\n            } catch (predicateError) {\r\n              runListener = false\r\n\r\n              safelyNotifyError(onError, predicateError, {\r\n                raisedBy: 'predicate',\r\n              })\r\n            }\r\n\r\n            if (!runListener) {\r\n              continue\r\n            }\r\n\r\n            notifyListener(entry, action, api, getOriginalState)\r\n          }\r\n        }\r\n      } finally {\r\n        // Remove `originalState` store from this scope.\r\n        originalState = INTERNAL_NIL_TOKEN\r\n      }\r\n\r\n      return result\r\n    }\r\n\r\n  return {\r\n    middleware,\r\n    startListening,\r\n    stopListening,\r\n    clearListeners: clearListenerMiddleware,\r\n  } as ListenerMiddlewareInstance<S, D, ExtraArgument>\r\n}\r\n", "import type { StoreEnhancer } from 'redux'\r\n\r\nexport const SHOULD_AUTOBATCH = 'RTK_autoBatch'\r\n\r\nexport const prepareAutoBatched =\r\n  <T>() =>\r\n  (payload: T): { payload: T; meta: unknown } => ({\r\n    payload,\r\n    meta: { [SHOULD_AUTOBATCH]: true },\r\n  })\r\n\r\n// TODO Remove this in 2.0\r\n// Copied from https://github.com/feross/queue-microtask\r\nlet promise: Promise<any>\r\nconst queueMicrotaskShim =\r\n  typeof queueMicrotask === 'function'\r\n    ? queueMicrotask.bind(\r\n        typeof window !== 'undefined'\r\n          ? window\r\n          : typeof global !== 'undefined'\r\n          ? global\r\n          : globalThis\r\n      )\r\n    : // reuse resolved promise, and allocate it lazily\r\n      (cb: () => void) =>\r\n        (promise || (promise = Promise.resolve())).then(cb).catch((err: any) =>\r\n          setTimeout(() => {\r\n            throw err\r\n          }, 0)\r\n        )\r\n\r\nconst createQueueWithTimer = (timeout: number) => {\r\n  return (notify: () => void) => {\r\n    setTimeout(notify, timeout)\r\n  }\r\n}\r\n\r\n// requestAnimationFrame won't exist in SSR environments.\r\n// Fall back to a vague approximation just to keep from erroring.\r\nconst rAF =\r\n  typeof window !== 'undefined' && window.requestAnimationFrame\r\n    ? window.requestAnimationFrame\r\n    : createQueueWithTimer(10)\r\n\r\nexport type AutoBatchOptions =\r\n  | { type: 'tick' }\r\n  | { type: 'timer'; timeout: number }\r\n  | { type: 'raf' }\r\n  | { type: 'callback'; queueNotification: (notify: () => void) => void }\r\n\r\n/**\r\n * A Redux store enhancer that watches for \"low-priority\" actions, and delays\r\n * notifying subscribers until either the queued callback executes or the\r\n * next \"standard-priority\" action is dispatched.\r\n *\r\n * This allows dispatching multiple \"low-priority\" actions in a row with only\r\n * a single subscriber notification to the UI after the sequence of actions\r\n * is finished, thus improving UI re-render performance.\r\n *\r\n * Watches for actions with the `action.meta[SHOULD_AUTOBATCH]` attribute.\r\n * This can be added to `action.meta` manually, or by using the\r\n * `prepareAutoBatched` helper.\r\n *\r\n * By default, it will queue a notification for the end of the event loop tick.\r\n * However, you can pass several other options to configure the behavior:\r\n * - `{type: 'tick'}: queues using `queueMicrotask` (default)\r\n * - `{type: 'timer, timeout: number}`: queues using `setTimeout`\r\n * - `{type: 'raf'}`: queues using `requestAnimationFrame`\r\n * - `{type: 'callback', queueNotification: (notify: () => void) => void}: lets you provide your own callback\r\n *\r\n *\r\n */\r\nexport const autoBatchEnhancer =\r\n  (options: AutoBatchOptions = { type: 'raf' }): StoreEnhancer =>\r\n  (next) =>\r\n  (...args) => {\r\n    const store = next(...args)\r\n\r\n    let notifying = true\r\n    let shouldNotifyAtEndOfTick = false\r\n    let notificationQueued = false\r\n\r\n    const listeners = new Set<() => void>()\r\n\r\n    const queueCallback =\r\n      options.type === 'tick'\r\n        ? queueMicrotaskShim\r\n        : options.type === 'raf'\r\n        ? rAF\r\n        : options.type === 'callback'\r\n        ? options.queueNotification\r\n        : createQueueWithTimer(options.timeout)\r\n\r\n    const notifyListeners = () => {\r\n      // We're running at the end of the event loop tick.\r\n      // Run the real listener callbacks to actually update the UI.\r\n      notificationQueued = false\r\n      if (shouldNotifyAtEndOfTick) {\r\n        shouldNotifyAtEndOfTick = false\r\n        listeners.forEach((l) => l())\r\n      }\r\n    }\r\n\r\n    return Object.assign({}, store, {\r\n      // Override the base `store.subscribe` method to keep original listeners\r\n      // from running if we're delaying notifications\r\n      subscribe(listener: () => void) {\r\n        // Each wrapped listener will only call the real listener if\r\n        // the `notifying` flag is currently active when it's called.\r\n        // This lets the base store work as normal, while the actual UI\r\n        // update becomes controlled by this enhancer.\r\n        const wrappedListener: typeof listener = () => notifying && listener()\r\n        const unsubscribe = store.subscribe(wrappedListener)\r\n        listeners.add(listener)\r\n        return () => {\r\n          unsubscribe()\r\n          listeners.delete(listener)\r\n        }\r\n      },\r\n      // Override the base `store.dispatch` method so that we can check actions\r\n      // for the `shouldAutoBatch` flag and determine if batching is active\r\n      dispatch(action: any) {\r\n        try {\r\n          // If the action does _not_ have the `shouldAutoBatch` flag,\r\n          // we resume/continue normal notify-after-each-dispatch behavior\r\n          notifying = !action?.meta?.[SHOULD_AUTOBATCH]\r\n          // If a `notifyListeners` microtask was queued, you can't cancel it.\r\n          // Instead, we set a flag so that it's a no-op when it does run\r\n          shouldNotifyAtEndOfTick = !notifying\r\n          if (shouldNotifyAtEndOfTick) {\r\n            // We've seen at least 1 action with `SHOULD_AUTOBATCH`. Try to queue\r\n            // a microtask to notify listeners at the end of the event loop tick.\r\n            // Make sure we only enqueue this _once_ per tick.\r\n            if (!notificationQueued) {\r\n              notificationQueued = true\r\n              queueCallback(notifyListeners)\r\n            }\r\n          }\r\n          // Go ahead and process the action as usual, including reducers.\r\n          // If normal notification behavior is enabled, the store will notify\r\n          // all of its own listeners, and the wrapper callbacks above will\r\n          // see `notifying` is true and pass on to the real listener callbacks.\r\n          // If we're \"batching\" behavior, then the wrapped callbacks will\r\n          // bail out, causing the base store notification behavior to be no-ops.\r\n          return store.dispatch(action)\r\n        } finally {\r\n          // Assume we're back to normal behavior after each action\r\n          notifying = true\r\n        }\r\n      },\r\n    })\r\n  }\r\n", "var __extends = (this && this.__extends) || (function () {\r\n    var 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    return function (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 __generator = (this && this.__generator) || function (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\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\r\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n        to[j] = from[i];\r\n    return to;\r\n};\r\nvar __create = Object.create;\r\nvar __defProp = Object.defineProperty;\r\nvar __defProps = Object.defineProperties;\r\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\r\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\r\nvar __getOwnPropNames = Object.getOwnPropertyNames;\r\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\r\nvar __getProtoOf = Object.getPrototypeOf;\r\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\r\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\r\nvar __defNormalProp = function (obj, key, value) { return key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value: value }) : obj[key] = value; };\r\nvar __spreadValues = function (a, b) {\r\n    for (var prop in b || (b = {}))\r\n        if (__hasOwnProp.call(b, prop))\r\n            __defNormalProp(a, prop, b[prop]);\r\n    if (__getOwnPropSymbols)\r\n        for (var _i = 0, _c = __getOwnPropSymbols(b); _i < _c.length; _i++) {\r\n            var prop = _c[_i];\r\n            if (__propIsEnum.call(b, prop))\r\n                __defNormalProp(a, prop, b[prop]);\r\n        }\r\n    return a;\r\n};\r\nvar __spreadProps = function (a, b) { return __defProps(a, __getOwnPropDescs(b)); };\r\nvar __markAsModule = function (target) { return __defProp(target, \"__esModule\", { value: true }); };\r\nvar __export = function (target, all) {\r\n    for (var name in all)\r\n        __defProp(target, name, { get: all[name], enumerable: true });\r\n};\r\nvar __reExport = function (target, module2, desc) {\r\n    if (module2 && typeof module2 === \"object\" || typeof module2 === \"function\") {\r\n        var _loop_1 = function (key) {\r\n            if (!__hasOwnProp.call(target, key) && key !== \"default\")\r\n                __defProp(target, key, { get: function () { return module2[key]; }, enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });\r\n        };\r\n        for (var _i = 0, _c = __getOwnPropNames(module2); _i < _c.length; _i++) {\r\n            var key = _c[_i];\r\n            _loop_1(key);\r\n        }\r\n    }\r\n    return target;\r\n};\r\nvar __toModule = function (module2) {\r\n    return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, \"default\", module2 && module2.__esModule && \"default\" in module2 ? { get: function () { return module2.default; }, enumerable: true } : { value: module2, enumerable: true })), module2);\r\n};\r\nvar __async = function (__this, __arguments, generator) {\r\n    return new Promise(function (resolve, reject) {\r\n        var fulfilled = function (value) {\r\n            try {\r\n                step(generator.next(value));\r\n            }\r\n            catch (e) {\r\n                reject(e);\r\n            }\r\n        };\r\n        var rejected = function (value) {\r\n            try {\r\n                step(generator.throw(value));\r\n            }\r\n            catch (e) {\r\n                reject(e);\r\n            }\r\n        };\r\n        var step = function (x) { return x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); };\r\n        step((generator = generator.apply(__this, __arguments)).next());\r\n    });\r\n};\r\n// src/index.ts\r\n__markAsModule(exports);\r\n__export(exports, {\r\n    MiddlewareArray: function () { return MiddlewareArray; },\r\n    SHOULD_AUTOBATCH: function () { return SHOULD_AUTOBATCH; },\r\n    TaskAbortError: function () { return TaskAbortError; },\r\n    addListener: function () { return addListener; },\r\n    autoBatchEnhancer: function () { return autoBatchEnhancer; },\r\n    clearAllListeners: function () { return clearAllListeners; },\r\n    configureStore: function () { return configureStore; },\r\n    createAction: function () { return createAction; },\r\n    createAsyncThunk: function () { return createAsyncThunk; },\r\n    createDraftSafeSelector: function () { return createDraftSafeSelector; },\r\n    createEntityAdapter: function () { return createEntityAdapter; },\r\n    createImmutableStateInvariantMiddleware: function () { return createImmutableStateInvariantMiddleware; },\r\n    createListenerMiddleware: function () { return createListenerMiddleware; },\r\n    createNextState: function () { return import_immer6.default; },\r\n    createReducer: function () { return createReducer; },\r\n    createSelector: function () { return import_reselect2.createSelector; },\r\n    createSerializableStateInvariantMiddleware: function () { return createSerializableStateInvariantMiddleware; },\r\n    createSlice: function () { return createSlice; },\r\n    current: function () { return import_immer6.current; },\r\n    findNonSerializableValue: function () { return findNonSerializableValue; },\r\n    freeze: function () { return import_immer6.freeze; },\r\n    getDefaultMiddleware: function () { return getDefaultMiddleware; },\r\n    getType: function () { return getType; },\r\n    isAllOf: function () { return isAllOf; },\r\n    isAnyOf: function () { return isAnyOf; },\r\n    isAsyncThunkAction: function () { return isAsyncThunkAction; },\r\n    isDraft: function () { return import_immer6.isDraft; },\r\n    isFulfilled: function () { return isFulfilled; },\r\n    isImmutableDefault: function () { return isImmutableDefault; },\r\n    isPending: function () { return isPending; },\r\n    isPlain: function () { return isPlain; },\r\n    isPlainObject: function () { return isPlainObject; },\r\n    isRejected: function () { return isRejected; },\r\n    isRejectedWithValue: function () { return isRejectedWithValue; },\r\n    miniSerializeError: function () { return miniSerializeError; },\r\n    nanoid: function () { return nanoid; },\r\n    original: function () { return import_immer6.original; },\r\n    prepareAutoBatched: function () { return prepareAutoBatched; },\r\n    removeListener: function () { return removeListener; },\r\n    unwrapResult: function () { return unwrapResult; }\r\n});\r\nvar import_immer5 = __toModule(require(\"immer\"));\r\n__reExport(exports, __toModule(require(\"redux\")));\r\nvar import_immer6 = __toModule(require(\"immer\"));\r\nvar import_reselect2 = __toModule(require(\"reselect\"));\r\n// src/createDraftSafeSelector.ts\r\nvar import_immer = __toModule(require(\"immer\"));\r\nvar import_reselect = __toModule(require(\"reselect\"));\r\nvar createDraftSafeSelector = function () {\r\n    var args = [];\r\n    for (var _i = 0; _i < arguments.length; _i++) {\r\n        args[_i] = arguments[_i];\r\n    }\r\n    var selector = (0, import_reselect.createSelector).apply(void 0, args);\r\n    var wrappedSelector = function (value) {\r\n        var rest = [];\r\n        for (var _i = 1; _i < arguments.length; _i++) {\r\n            rest[_i - 1] = arguments[_i];\r\n        }\r\n        return selector.apply(void 0, __spreadArray([(0, import_immer.isDraft)(value) ? (0, import_immer.current)(value) : value], rest));\r\n    };\r\n    return wrappedSelector;\r\n};\r\n// src/configureStore.ts\r\nvar import_redux2 = __toModule(require(\"redux\"));\r\n// src/devtoolsExtension.ts\r\nvar import_redux = __toModule(require(\"redux\"));\r\nvar composeWithDevTools = typeof window !== \"undefined\" && window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ? window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : function () {\r\n    if (arguments.length === 0)\r\n        return void 0;\r\n    if (typeof arguments[0] === \"object\")\r\n        return import_redux.compose;\r\n    return import_redux.compose.apply(null, arguments);\r\n};\r\nvar devToolsEnhancer = typeof window !== \"undefined\" && window.__REDUX_DEVTOOLS_EXTENSION__ ? window.__REDUX_DEVTOOLS_EXTENSION__ : function () {\r\n    return function (noop2) {\r\n        return noop2;\r\n    };\r\n};\r\n// src/isPlainObject.ts\r\nfunction isPlainObject(value) {\r\n    if (typeof value !== \"object\" || value === null)\r\n        return false;\r\n    var proto = Object.getPrototypeOf(value);\r\n    if (proto === null)\r\n        return true;\r\n    var baseProto = proto;\r\n    while (Object.getPrototypeOf(baseProto) !== null) {\r\n        baseProto = Object.getPrototypeOf(baseProto);\r\n    }\r\n    return proto === baseProto;\r\n}\r\n// src/getDefaultMiddleware.ts\r\nvar import_redux_thunk = __toModule(require(\"redux-thunk\"));\r\n// src/utils.ts\r\nvar import_immer2 = __toModule(require(\"immer\"));\r\nfunction getTimeMeasureUtils(maxDelay, fnName) {\r\n    var elapsed = 0;\r\n    return {\r\n        measureTime: function (fn) {\r\n            var started = Date.now();\r\n            try {\r\n                return fn();\r\n            }\r\n            finally {\r\n                var finished = Date.now();\r\n                elapsed += finished - started;\r\n            }\r\n        },\r\n        warnIfExceeded: function () {\r\n            if (elapsed > maxDelay) {\r\n                console.warn(fnName + \" took \" + elapsed + \"ms, which is more than the warning threshold of \" + maxDelay + \"ms. \\nIf your state or actions are very large, you may want to disable the middleware as it might cause too much of a slowdown in development mode. See https://redux-toolkit.js.org/api/getDefaultMiddleware for instructions.\\nIt is disabled in production builds, so you don't need to worry about that.\");\r\n            }\r\n        }\r\n    };\r\n}\r\nvar MiddlewareArray = /** @class */ (function (_super) {\r\n    __extends(MiddlewareArray, _super);\r\n    function MiddlewareArray() {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        var _this = _super.apply(this, args) || this;\r\n        Object.setPrototypeOf(_this, MiddlewareArray.prototype);\r\n        return _this;\r\n    }\r\n    Object.defineProperty(MiddlewareArray, Symbol.species, {\r\n        get: function () {\r\n            return MiddlewareArray;\r\n        },\r\n        enumerable: false,\r\n        configurable: true\r\n    });\r\n    MiddlewareArray.prototype.concat = function () {\r\n        var arr = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            arr[_i] = arguments[_i];\r\n        }\r\n        return _super.prototype.concat.apply(this, arr);\r\n    };\r\n    MiddlewareArray.prototype.prepend = function () {\r\n        var arr = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            arr[_i] = arguments[_i];\r\n        }\r\n        if (arr.length === 1 && Array.isArray(arr[0])) {\r\n            return new (MiddlewareArray.bind.apply(MiddlewareArray, __spreadArray([void 0], arr[0].concat(this))))();\r\n        }\r\n        return new (MiddlewareArray.bind.apply(MiddlewareArray, __spreadArray([void 0], arr.concat(this))))();\r\n    };\r\n    return MiddlewareArray;\r\n}(Array));\r\nfunction freezeDraftable(val) {\r\n    return (0, import_immer2.isDraftable)(val) ? (0, import_immer2.default)(val, function () {\r\n    }) : val;\r\n}\r\n// src/immutableStateInvariantMiddleware.ts\r\nvar isProduction = false;\r\nvar prefix = \"Invariant failed\";\r\nfunction invariant(condition, message) {\r\n    if (condition) {\r\n        return;\r\n    }\r\n    if (isProduction) {\r\n        throw new Error(prefix);\r\n    }\r\n    throw new Error(prefix + \": \" + (message || \"\"));\r\n}\r\nfunction stringify(obj, serializer, indent, decycler) {\r\n    return JSON.stringify(obj, getSerialize(serializer, decycler), indent);\r\n}\r\nfunction getSerialize(serializer, decycler) {\r\n    var stack = [], keys = [];\r\n    if (!decycler)\r\n        decycler = function (_, value) {\r\n            if (stack[0] === value)\r\n                return \"[Circular ~]\";\r\n            return \"[Circular ~.\" + keys.slice(0, stack.indexOf(value)).join(\".\") + \"]\";\r\n        };\r\n    return function (key, value) {\r\n        if (stack.length > 0) {\r\n            var thisPos = stack.indexOf(this);\r\n            ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\r\n            ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\r\n            if (~stack.indexOf(value))\r\n                value = decycler.call(this, key, value);\r\n        }\r\n        else\r\n            stack.push(value);\r\n        return serializer == null ? value : serializer.call(this, key, value);\r\n    };\r\n}\r\nfunction isImmutableDefault(value) {\r\n    return typeof value !== \"object\" || value == null || Object.isFrozen(value);\r\n}\r\nfunction trackForMutations(isImmutable, ignorePaths, obj) {\r\n    var trackedProperties = trackProperties(isImmutable, ignorePaths, obj);\r\n    return {\r\n        detectMutations: function () {\r\n            return detectMutations(isImmutable, ignorePaths, trackedProperties, obj);\r\n        }\r\n    };\r\n}\r\nfunction trackProperties(isImmutable, ignorePaths, obj, path) {\r\n    if (ignorePaths === void 0) { ignorePaths = []; }\r\n    if (path === void 0) { path = \"\"; }\r\n    var tracked = { value: obj };\r\n    if (!isImmutable(obj)) {\r\n        tracked.children = {};\r\n        for (var key in obj) {\r\n            var childPath = path ? path + \".\" + key : key;\r\n            if (ignorePaths.length && ignorePaths.indexOf(childPath) !== -1) {\r\n                continue;\r\n            }\r\n            tracked.children[key] = trackProperties(isImmutable, ignorePaths, obj[key], childPath);\r\n        }\r\n    }\r\n    return tracked;\r\n}\r\nfunction detectMutations(isImmutable, ignorePaths, trackedProperty, obj, sameParentRef, path) {\r\n    if (ignorePaths === void 0) { ignorePaths = []; }\r\n    if (sameParentRef === void 0) { sameParentRef = false; }\r\n    if (path === void 0) { path = \"\"; }\r\n    var prevObj = trackedProperty ? trackedProperty.value : void 0;\r\n    var sameRef = prevObj === obj;\r\n    if (sameParentRef && !sameRef && !Number.isNaN(obj)) {\r\n        return { wasMutated: true, path: path };\r\n    }\r\n    if (isImmutable(prevObj) || isImmutable(obj)) {\r\n        return { wasMutated: false };\r\n    }\r\n    var keysToDetect = {};\r\n    for (var key in trackedProperty.children) {\r\n        keysToDetect[key] = true;\r\n    }\r\n    for (var key in obj) {\r\n        keysToDetect[key] = true;\r\n    }\r\n    for (var key in keysToDetect) {\r\n        var childPath = path ? path + \".\" + key : key;\r\n        if (ignorePaths.length && ignorePaths.indexOf(childPath) !== -1) {\r\n            continue;\r\n        }\r\n        var result = detectMutations(isImmutable, ignorePaths, trackedProperty.children[key], obj[key], sameRef, childPath);\r\n        if (result.wasMutated) {\r\n            return result;\r\n        }\r\n    }\r\n    return { wasMutated: false };\r\n}\r\nfunction createImmutableStateInvariantMiddleware(options) {\r\n    if (options === void 0) { options = {}; }\r\n    if (false) {\r\n        return function () { return function (next) { return function (action) { return next(action); }; }; };\r\n    }\r\n    var _c = options.isImmutable, isImmutable = _c === void 0 ? isImmutableDefault : _c, ignoredPaths = options.ignoredPaths, _d = options.warnAfter, warnAfter = _d === void 0 ? 32 : _d, ignore = options.ignore;\r\n    ignoredPaths = ignoredPaths || ignore;\r\n    var track = trackForMutations.bind(null, isImmutable, ignoredPaths);\r\n    return function (_c) {\r\n        var getState = _c.getState;\r\n        var state = getState();\r\n        var tracker = track(state);\r\n        var result;\r\n        return function (next) { return function (action) {\r\n            var measureUtils = getTimeMeasureUtils(warnAfter, \"ImmutableStateInvariantMiddleware\");\r\n            measureUtils.measureTime(function () {\r\n                state = getState();\r\n                result = tracker.detectMutations();\r\n                tracker = track(state);\r\n                invariant(!result.wasMutated, \"A state mutation was detected between dispatches, in the path '\" + (result.path || \"\") + \"'.  This may cause incorrect behavior. (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)\");\r\n            });\r\n            var dispatchedAction = next(action);\r\n            measureUtils.measureTime(function () {\r\n                state = getState();\r\n                result = tracker.detectMutations();\r\n                tracker = track(state);\r\n                result.wasMutated && invariant(!result.wasMutated, \"A state mutation was detected inside a dispatch, in the path: \" + (result.path || \"\") + \". Take a look at the reducer(s) handling the action \" + stringify(action) + \". (https://redux.js.org/style-guide/style-guide#do-not-mutate-state)\");\r\n            });\r\n            measureUtils.warnIfExceeded();\r\n            return dispatchedAction;\r\n        }; };\r\n    };\r\n}\r\n// src/serializableStateInvariantMiddleware.ts\r\nfunction isPlain(val) {\r\n    var type = typeof val;\r\n    return val == null || type === \"string\" || type === \"boolean\" || type === \"number\" || Array.isArray(val) || isPlainObject(val);\r\n}\r\nfunction findNonSerializableValue(value, path, isSerializable, getEntries, ignoredPaths) {\r\n    if (path === void 0) { path = \"\"; }\r\n    if (isSerializable === void 0) { isSerializable = isPlain; }\r\n    if (ignoredPaths === void 0) { ignoredPaths = []; }\r\n    var foundNestedSerializable;\r\n    if (!isSerializable(value)) {\r\n        return {\r\n            keyPath: path || \"<root>\",\r\n            value: value\r\n        };\r\n    }\r\n    if (typeof value !== \"object\" || value === null) {\r\n        return false;\r\n    }\r\n    var entries = getEntries != null ? getEntries(value) : Object.entries(value);\r\n    var hasIgnoredPaths = ignoredPaths.length > 0;\r\n    for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\r\n        var _c = entries_1[_i], key = _c[0], nestedValue = _c[1];\r\n        var nestedPath = path ? path + \".\" + key : key;\r\n        if (hasIgnoredPaths && ignoredPaths.indexOf(nestedPath) >= 0) {\r\n            continue;\r\n        }\r\n        if (!isSerializable(nestedValue)) {\r\n            return {\r\n                keyPath: nestedPath,\r\n                value: nestedValue\r\n            };\r\n        }\r\n        if (typeof nestedValue === \"object\") {\r\n            foundNestedSerializable = findNonSerializableValue(nestedValue, nestedPath, isSerializable, getEntries, ignoredPaths);\r\n            if (foundNestedSerializable) {\r\n                return foundNestedSerializable;\r\n            }\r\n        }\r\n    }\r\n    return false;\r\n}\r\nfunction createSerializableStateInvariantMiddleware(options) {\r\n    if (options === void 0) { options = {}; }\r\n    if (false) {\r\n        return function () { return function (next) { return function (action) { return next(action); }; }; };\r\n    }\r\n    var _c = options.isSerializable, isSerializable = _c === void 0 ? isPlain : _c, getEntries = options.getEntries, _d = options.ignoredActions, ignoredActions = _d === void 0 ? [] : _d, _e = options.ignoredActionPaths, ignoredActionPaths = _e === void 0 ? [\"meta.arg\", \"meta.baseQueryMeta\"] : _e, _f = options.ignoredPaths, ignoredPaths = _f === void 0 ? [] : _f, _g = options.warnAfter, warnAfter = _g === void 0 ? 32 : _g, _h = options.ignoreState, ignoreState = _h === void 0 ? false : _h, _j = options.ignoreActions, ignoreActions = _j === void 0 ? false : _j;\r\n    return function (storeAPI) { return function (next) { return function (action) {\r\n        var result = next(action);\r\n        var measureUtils = getTimeMeasureUtils(warnAfter, \"SerializableStateInvariantMiddleware\");\r\n        if (!ignoreActions && !(ignoredActions.length && ignoredActions.indexOf(action.type) !== -1)) {\r\n            measureUtils.measureTime(function () {\r\n                var foundActionNonSerializableValue = findNonSerializableValue(action, \"\", isSerializable, getEntries, ignoredActionPaths);\r\n                if (foundActionNonSerializableValue) {\r\n                    var keyPath = foundActionNonSerializableValue.keyPath, value = foundActionNonSerializableValue.value;\r\n                    console.error(\"A non-serializable value was detected in an action, in the path: `\" + keyPath + \"`. Value:\", value, \"\\nTake a look at the logic that dispatched this action: \", action, \"\\n(See https://redux.js.org/faq/actions#why-should-type-be-a-string-or-at-least-serializable-why-should-my-action-types-be-constants)\", \"\\n(To allow non-serializable values see: https://redux-toolkit.js.org/usage/usage-guide#working-with-non-serializable-data)\");\r\n                }\r\n            });\r\n        }\r\n        if (!ignoreState) {\r\n            measureUtils.measureTime(function () {\r\n                var state = storeAPI.getState();\r\n                var foundStateNonSerializableValue = findNonSerializableValue(state, \"\", isSerializable, getEntries, ignoredPaths);\r\n                if (foundStateNonSerializableValue) {\r\n                    var keyPath = foundStateNonSerializableValue.keyPath, value = foundStateNonSerializableValue.value;\r\n                    console.error(\"A non-serializable value was detected in the state, in the path: `\" + keyPath + \"`. Value:\", value, \"\\nTake a look at the reducer(s) handling this action type: \" + action.type + \".\\n(See https://redux.js.org/faq/organizing-state#can-i-put-functions-promises-or-other-non-serializable-items-in-my-store-state)\");\r\n                }\r\n            });\r\n            measureUtils.warnIfExceeded();\r\n        }\r\n        return result;\r\n    }; }; };\r\n}\r\n// src/getDefaultMiddleware.ts\r\nfunction isBoolean(x) {\r\n    return typeof x === \"boolean\";\r\n}\r\nfunction curryGetDefaultMiddleware() {\r\n    return function curriedGetDefaultMiddleware(options) {\r\n        return getDefaultMiddleware(options);\r\n    };\r\n}\r\nfunction getDefaultMiddleware(options) {\r\n    if (options === void 0) { options = {}; }\r\n    var _c = options.thunk, thunk = _c === void 0 ? true : _c, _d = options.immutableCheck, immutableCheck = _d === void 0 ? true : _d, _e = options.serializableCheck, serializableCheck = _e === void 0 ? true : _e;\r\n    var middlewareArray = new MiddlewareArray();\r\n    if (thunk) {\r\n        if (isBoolean(thunk)) {\r\n            middlewareArray.push(import_redux_thunk.default);\r\n        }\r\n        else {\r\n            middlewareArray.push(import_redux_thunk.default.withExtraArgument(thunk.extraArgument));\r\n        }\r\n    }\r\n    if (true) {\r\n        if (immutableCheck) {\r\n            var immutableOptions = {};\r\n            if (!isBoolean(immutableCheck)) {\r\n                immutableOptions = immutableCheck;\r\n            }\r\n            middlewareArray.unshift(createImmutableStateInvariantMiddleware(immutableOptions));\r\n        }\r\n        if (serializableCheck) {\r\n            var serializableOptions = {};\r\n            if (!isBoolean(serializableCheck)) {\r\n                serializableOptions = serializableCheck;\r\n            }\r\n            middlewareArray.push(createSerializableStateInvariantMiddleware(serializableOptions));\r\n        }\r\n    }\r\n    return middlewareArray;\r\n}\r\n// src/configureStore.ts\r\nvar IS_PRODUCTION = false;\r\nfunction configureStore(options) {\r\n    var curriedGetDefaultMiddleware = curryGetDefaultMiddleware();\r\n    var _c = options || {}, _d = _c.reducer, reducer = _d === void 0 ? void 0 : _d, _e = _c.middleware, middleware = _e === void 0 ? curriedGetDefaultMiddleware() : _e, _f = _c.devTools, devTools = _f === void 0 ? true : _f, _g = _c.preloadedState, preloadedState = _g === void 0 ? void 0 : _g, _h = _c.enhancers, enhancers = _h === void 0 ? void 0 : _h;\r\n    var rootReducer;\r\n    if (typeof reducer === \"function\") {\r\n        rootReducer = reducer;\r\n    }\r\n    else if (isPlainObject(reducer)) {\r\n        rootReducer = (0, import_redux2.combineReducers)(reducer);\r\n    }\r\n    else {\r\n        throw new Error('\"reducer\" is a required argument, and must be a function or an object of functions that can be passed to combineReducers');\r\n    }\r\n    var finalMiddleware = middleware;\r\n    if (typeof finalMiddleware === \"function\") {\r\n        finalMiddleware = finalMiddleware(curriedGetDefaultMiddleware);\r\n        if (!IS_PRODUCTION && !Array.isArray(finalMiddleware)) {\r\n            throw new Error(\"when using a middleware builder function, an array of middleware must be returned\");\r\n        }\r\n    }\r\n    if (!IS_PRODUCTION && finalMiddleware.some(function (item) { return typeof item !== \"function\"; })) {\r\n        throw new Error(\"each middleware provided to configureStore must be a function\");\r\n    }\r\n    var middlewareEnhancer = (0, import_redux2.applyMiddleware).apply(void 0, finalMiddleware);\r\n    var finalCompose = import_redux2.compose;\r\n    if (devTools) {\r\n        finalCompose = composeWithDevTools(__spreadValues({\r\n            trace: !IS_PRODUCTION\r\n        }, typeof devTools === \"object\" && devTools));\r\n    }\r\n    var storeEnhancers = [middlewareEnhancer];\r\n    if (Array.isArray(enhancers)) {\r\n        storeEnhancers = __spreadArray([middlewareEnhancer], enhancers);\r\n    }\r\n    else if (typeof enhancers === \"function\") {\r\n        storeEnhancers = enhancers(storeEnhancers);\r\n    }\r\n    var composedEnhancer = finalCompose.apply(void 0, storeEnhancers);\r\n    return (0, import_redux2.createStore)(rootReducer, preloadedState, composedEnhancer);\r\n}\r\n// src/createAction.ts\r\nfunction createAction(type, prepareAction) {\r\n    function actionCreator() {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        if (prepareAction) {\r\n            var prepared = prepareAction.apply(void 0, args);\r\n            if (!prepared) {\r\n                throw new Error(\"prepareAction did not return an object\");\r\n            }\r\n            return __spreadValues(__spreadValues({\r\n                type: type,\r\n                payload: prepared.payload\r\n            }, \"meta\" in prepared && { meta: prepared.meta }), \"error\" in prepared && { error: prepared.error });\r\n        }\r\n        return { type: type, payload: args[0] };\r\n    }\r\n    actionCreator.toString = function () { return \"\" + type; };\r\n    actionCreator.type = type;\r\n    actionCreator.match = function (action) { return action.type === type; };\r\n    return actionCreator;\r\n}\r\nfunction isFSA(action) {\r\n    return isPlainObject(action) && typeof action.type === \"string\" && Object.keys(action).every(isValidKey);\r\n}\r\nfunction isValidKey(key) {\r\n    return [\"type\", \"payload\", \"error\", \"meta\"].indexOf(key) > -1;\r\n}\r\nfunction getType(actionCreator) {\r\n    return \"\" + actionCreator;\r\n}\r\n// src/createReducer.ts\r\nvar import_immer3 = __toModule(require(\"immer\"));\r\n// src/mapBuilders.ts\r\nfunction executeReducerBuilderCallback(builderCallback) {\r\n    var actionsMap = {};\r\n    var actionMatchers = [];\r\n    var defaultCaseReducer;\r\n    var builder = {\r\n        addCase: function (typeOrActionCreator, reducer) {\r\n            if (true) {\r\n                if (actionMatchers.length > 0) {\r\n                    throw new Error(\"`builder.addCase` should only be called before calling `builder.addMatcher`\");\r\n                }\r\n                if (defaultCaseReducer) {\r\n                    throw new Error(\"`builder.addCase` should only be called before calling `builder.addDefaultCase`\");\r\n                }\r\n            }\r\n            var type = typeof typeOrActionCreator === \"string\" ? typeOrActionCreator : typeOrActionCreator.type;\r\n            if (type in actionsMap) {\r\n                throw new Error(\"addCase cannot be called with two reducers for the same action type\");\r\n            }\r\n            actionsMap[type] = reducer;\r\n            return builder;\r\n        },\r\n        addMatcher: function (matcher, reducer) {\r\n            if (true) {\r\n                if (defaultCaseReducer) {\r\n                    throw new Error(\"`builder.addMatcher` should only be called before calling `builder.addDefaultCase`\");\r\n                }\r\n            }\r\n            actionMatchers.push({ matcher: matcher, reducer: reducer });\r\n            return builder;\r\n        },\r\n        addDefaultCase: function (reducer) {\r\n            if (true) {\r\n                if (defaultCaseReducer) {\r\n                    throw new Error(\"`builder.addDefaultCase` can only be called once\");\r\n                }\r\n            }\r\n            defaultCaseReducer = reducer;\r\n            return builder;\r\n        }\r\n    };\r\n    builderCallback(builder);\r\n    return [actionsMap, actionMatchers, defaultCaseReducer];\r\n}\r\n// src/createReducer.ts\r\nfunction isStateFunction(x) {\r\n    return typeof x === \"function\";\r\n}\r\nvar hasWarnedAboutObjectNotation = false;\r\nfunction createReducer(initialState, mapOrBuilderCallback, actionMatchers, defaultCaseReducer) {\r\n    if (actionMatchers === void 0) { actionMatchers = []; }\r\n    if (true) {\r\n        if (typeof mapOrBuilderCallback === \"object\") {\r\n            if (!hasWarnedAboutObjectNotation) {\r\n                hasWarnedAboutObjectNotation = true;\r\n                console.warn(\"The object notation for `createReducer` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createReducer\");\r\n            }\r\n        }\r\n    }\r\n    var _c = typeof mapOrBuilderCallback === \"function\" ? executeReducerBuilderCallback(mapOrBuilderCallback) : [mapOrBuilderCallback, actionMatchers, defaultCaseReducer], actionsMap = _c[0], finalActionMatchers = _c[1], finalDefaultCaseReducer = _c[2];\r\n    var getInitialState;\r\n    if (isStateFunction(initialState)) {\r\n        getInitialState = function () { return freezeDraftable(initialState()); };\r\n    }\r\n    else {\r\n        var frozenInitialState_1 = freezeDraftable(initialState);\r\n        getInitialState = function () { return frozenInitialState_1; };\r\n    }\r\n    function reducer(state, action) {\r\n        if (state === void 0) { state = getInitialState(); }\r\n        var caseReducers = __spreadArray([\r\n            actionsMap[action.type]\r\n        ], finalActionMatchers.filter(function (_c) {\r\n            var matcher = _c.matcher;\r\n            return matcher(action);\r\n        }).map(function (_c) {\r\n            var reducer2 = _c.reducer;\r\n            return reducer2;\r\n        }));\r\n        if (caseReducers.filter(function (cr) { return !!cr; }).length === 0) {\r\n            caseReducers = [finalDefaultCaseReducer];\r\n        }\r\n        return caseReducers.reduce(function (previousState, caseReducer) {\r\n            if (caseReducer) {\r\n                if ((0, import_immer3.isDraft)(previousState)) {\r\n                    var draft = previousState;\r\n                    var result = caseReducer(draft, action);\r\n                    if (result === void 0) {\r\n                        return previousState;\r\n                    }\r\n                    return result;\r\n                }\r\n                else if (!(0, import_immer3.isDraftable)(previousState)) {\r\n                    var result = caseReducer(previousState, action);\r\n                    if (result === void 0) {\r\n                        if (previousState === null) {\r\n                            return previousState;\r\n                        }\r\n                        throw Error(\"A case reducer on a non-draftable value must not return undefined\");\r\n                    }\r\n                    return result;\r\n                }\r\n                else {\r\n                    return (0, import_immer3.default)(previousState, function (draft) {\r\n                        return caseReducer(draft, action);\r\n                    });\r\n                }\r\n            }\r\n            return previousState;\r\n        }, state);\r\n    }\r\n    reducer.getInitialState = getInitialState;\r\n    return reducer;\r\n}\r\n// src/createSlice.ts\r\nvar hasWarnedAboutObjectNotation2 = false;\r\nfunction getType2(slice, actionKey) {\r\n    return slice + \"/\" + actionKey;\r\n}\r\nfunction createSlice(options) {\r\n    var name = options.name;\r\n    if (!name) {\r\n        throw new Error(\"`name` is a required option for createSlice\");\r\n    }\r\n    if (typeof process !== \"undefined\" && true) {\r\n        if (options.initialState === void 0) {\r\n            console.error(\"You must provide an `initialState` value that is not `undefined`. You may have misspelled `initialState`\");\r\n        }\r\n    }\r\n    var initialState = typeof options.initialState == \"function\" ? options.initialState : freezeDraftable(options.initialState);\r\n    var reducers = options.reducers || {};\r\n    var reducerNames = Object.keys(reducers);\r\n    var sliceCaseReducersByName = {};\r\n    var sliceCaseReducersByType = {};\r\n    var actionCreators = {};\r\n    reducerNames.forEach(function (reducerName) {\r\n        var maybeReducerWithPrepare = reducers[reducerName];\r\n        var type = getType2(name, reducerName);\r\n        var caseReducer;\r\n        var prepareCallback;\r\n        if (\"reducer\" in maybeReducerWithPrepare) {\r\n            caseReducer = maybeReducerWithPrepare.reducer;\r\n            prepareCallback = maybeReducerWithPrepare.prepare;\r\n        }\r\n        else {\r\n            caseReducer = maybeReducerWithPrepare;\r\n        }\r\n        sliceCaseReducersByName[reducerName] = caseReducer;\r\n        sliceCaseReducersByType[type] = caseReducer;\r\n        actionCreators[reducerName] = prepareCallback ? createAction(type, prepareCallback) : createAction(type);\r\n    });\r\n    function buildReducer() {\r\n        if (true) {\r\n            if (typeof options.extraReducers === \"object\") {\r\n                if (!hasWarnedAboutObjectNotation2) {\r\n                    hasWarnedAboutObjectNotation2 = true;\r\n                    console.warn(\"The object notation for `createSlice.extraReducers` is deprecated, and will be removed in RTK 2.0. Please use the 'builder callback' notation instead: https://redux-toolkit.js.org/api/createSlice\");\r\n                }\r\n            }\r\n        }\r\n        var _c = typeof options.extraReducers === \"function\" ? executeReducerBuilderCallback(options.extraReducers) : [options.extraReducers], _d = _c[0], extraReducers = _d === void 0 ? {} : _d, _e = _c[1], actionMatchers = _e === void 0 ? [] : _e, _f = _c[2], defaultCaseReducer = _f === void 0 ? void 0 : _f;\r\n        var finalCaseReducers = __spreadValues(__spreadValues({}, extraReducers), sliceCaseReducersByType);\r\n        return createReducer(initialState, function (builder) {\r\n            for (var key in finalCaseReducers) {\r\n                builder.addCase(key, finalCaseReducers[key]);\r\n            }\r\n            for (var _i = 0, actionMatchers_1 = actionMatchers; _i < actionMatchers_1.length; _i++) {\r\n                var m = actionMatchers_1[_i];\r\n                builder.addMatcher(m.matcher, m.reducer);\r\n            }\r\n            if (defaultCaseReducer) {\r\n                builder.addDefaultCase(defaultCaseReducer);\r\n            }\r\n        });\r\n    }\r\n    var _reducer;\r\n    return {\r\n        name: name,\r\n        reducer: function (state, action) {\r\n            if (!_reducer)\r\n                _reducer = buildReducer();\r\n            return _reducer(state, action);\r\n        },\r\n        actions: actionCreators,\r\n        caseReducers: sliceCaseReducersByName,\r\n        getInitialState: function () {\r\n            if (!_reducer)\r\n                _reducer = buildReducer();\r\n            return _reducer.getInitialState();\r\n        }\r\n    };\r\n}\r\n// src/entities/entity_state.ts\r\nfunction getInitialEntityState() {\r\n    return {\r\n        ids: [],\r\n        entities: {}\r\n    };\r\n}\r\nfunction createInitialStateFactory() {\r\n    function getInitialState(additionalState) {\r\n        if (additionalState === void 0) { additionalState = {}; }\r\n        return Object.assign(getInitialEntityState(), additionalState);\r\n    }\r\n    return { getInitialState: getInitialState };\r\n}\r\n// src/entities/state_selectors.ts\r\nfunction createSelectorsFactory() {\r\n    function getSelectors(selectState) {\r\n        var selectIds = function (state) { return state.ids; };\r\n        var selectEntities = function (state) { return state.entities; };\r\n        var selectAll = createDraftSafeSelector(selectIds, selectEntities, function (ids, entities) { return ids.map(function (id) { return entities[id]; }); });\r\n        var selectId = function (_, id) { return id; };\r\n        var selectById = function (entities, id) { return entities[id]; };\r\n        var selectTotal = createDraftSafeSelector(selectIds, function (ids) { return ids.length; });\r\n        if (!selectState) {\r\n            return {\r\n                selectIds: selectIds,\r\n                selectEntities: selectEntities,\r\n                selectAll: selectAll,\r\n                selectTotal: selectTotal,\r\n                selectById: createDraftSafeSelector(selectEntities, selectId, selectById)\r\n            };\r\n        }\r\n        var selectGlobalizedEntities = createDraftSafeSelector(selectState, selectEntities);\r\n        return {\r\n            selectIds: createDraftSafeSelector(selectState, selectIds),\r\n            selectEntities: selectGlobalizedEntities,\r\n            selectAll: createDraftSafeSelector(selectState, selectAll),\r\n            selectTotal: createDraftSafeSelector(selectState, selectTotal),\r\n            selectById: createDraftSafeSelector(selectGlobalizedEntities, selectId, selectById)\r\n        };\r\n    }\r\n    return { getSelectors: getSelectors };\r\n}\r\n// src/entities/state_adapter.ts\r\nvar import_immer4 = __toModule(require(\"immer\"));\r\nfunction createSingleArgumentStateOperator(mutator) {\r\n    var operator = createStateOperator(function (_, state) { return mutator(state); });\r\n    return function operation(state) {\r\n        return operator(state, void 0);\r\n    };\r\n}\r\nfunction createStateOperator(mutator) {\r\n    return function operation(state, arg) {\r\n        function isPayloadActionArgument(arg2) {\r\n            return isFSA(arg2);\r\n        }\r\n        var runMutator = function (draft) {\r\n            if (isPayloadActionArgument(arg)) {\r\n                mutator(arg.payload, draft);\r\n            }\r\n            else {\r\n                mutator(arg, draft);\r\n            }\r\n        };\r\n        if ((0, import_immer4.isDraft)(state)) {\r\n            runMutator(state);\r\n            return state;\r\n        }\r\n        else {\r\n            return (0, import_immer4.default)(state, runMutator);\r\n        }\r\n    };\r\n}\r\n// src/entities/utils.ts\r\nfunction selectIdValue(entity, selectId) {\r\n    var key = selectId(entity);\r\n    if (key === void 0) {\r\n        console.warn(\"The entity passed to the `selectId` implementation returned undefined.\", \"You should probably provide your own `selectId` implementation.\", \"The entity that was passed:\", entity, \"The `selectId` implementation:\", selectId.toString());\r\n    }\r\n    return key;\r\n}\r\nfunction ensureEntitiesArray(entities) {\r\n    if (!Array.isArray(entities)) {\r\n        entities = Object.values(entities);\r\n    }\r\n    return entities;\r\n}\r\nfunction splitAddedUpdatedEntities(newEntities, selectId, state) {\r\n    newEntities = ensureEntitiesArray(newEntities);\r\n    var added = [];\r\n    var updated = [];\r\n    for (var _i = 0, newEntities_1 = newEntities; _i < newEntities_1.length; _i++) {\r\n        var entity = newEntities_1[_i];\r\n        var id = selectIdValue(entity, selectId);\r\n        if (id in state.entities) {\r\n            updated.push({ id: id, changes: entity });\r\n        }\r\n        else {\r\n            added.push(entity);\r\n        }\r\n    }\r\n    return [added, updated];\r\n}\r\n// src/entities/unsorted_state_adapter.ts\r\nfunction createUnsortedStateAdapter(selectId) {\r\n    function addOneMutably(entity, state) {\r\n        var key = selectIdValue(entity, selectId);\r\n        if (key in state.entities) {\r\n            return;\r\n        }\r\n        state.ids.push(key);\r\n        state.entities[key] = entity;\r\n    }\r\n    function addManyMutably(newEntities, state) {\r\n        newEntities = ensureEntitiesArray(newEntities);\r\n        for (var _i = 0, newEntities_2 = newEntities; _i < newEntities_2.length; _i++) {\r\n            var entity = newEntities_2[_i];\r\n            addOneMutably(entity, state);\r\n        }\r\n    }\r\n    function setOneMutably(entity, state) {\r\n        var key = selectIdValue(entity, selectId);\r\n        if (!(key in state.entities)) {\r\n            state.ids.push(key);\r\n        }\r\n        state.entities[key] = entity;\r\n    }\r\n    function setManyMutably(newEntities, state) {\r\n        newEntities = ensureEntitiesArray(newEntities);\r\n        for (var _i = 0, newEntities_3 = newEntities; _i < newEntities_3.length; _i++) {\r\n            var entity = newEntities_3[_i];\r\n            setOneMutably(entity, state);\r\n        }\r\n    }\r\n    function setAllMutably(newEntities, state) {\r\n        newEntities = ensureEntitiesArray(newEntities);\r\n        state.ids = [];\r\n        state.entities = {};\r\n        addManyMutably(newEntities, state);\r\n    }\r\n    function removeOneMutably(key, state) {\r\n        return removeManyMutably([key], state);\r\n    }\r\n    function removeManyMutably(keys, state) {\r\n        var didMutate = false;\r\n        keys.forEach(function (key) {\r\n            if (key in state.entities) {\r\n                delete state.entities[key];\r\n                didMutate = true;\r\n            }\r\n        });\r\n        if (didMutate) {\r\n            state.ids = state.ids.filter(function (id) { return id in state.entities; });\r\n        }\r\n    }\r\n    function removeAllMutably(state) {\r\n        Object.assign(state, {\r\n            ids: [],\r\n            entities: {}\r\n        });\r\n    }\r\n    function takeNewKey(keys, update, state) {\r\n        var original2 = state.entities[update.id];\r\n        var updated = Object.assign({}, original2, update.changes);\r\n        var newKey = selectIdValue(updated, selectId);\r\n        var hasNewKey = newKey !== update.id;\r\n        if (hasNewKey) {\r\n            keys[update.id] = newKey;\r\n            delete state.entities[update.id];\r\n        }\r\n        state.entities[newKey] = updated;\r\n        return hasNewKey;\r\n    }\r\n    function updateOneMutably(update, state) {\r\n        return updateManyMutably([update], state);\r\n    }\r\n    function updateManyMutably(updates, state) {\r\n        var newKeys = {};\r\n        var updatesPerEntity = {};\r\n        updates.forEach(function (update) {\r\n            if (update.id in state.entities) {\r\n                updatesPerEntity[update.id] = {\r\n                    id: update.id,\r\n                    changes: __spreadValues(__spreadValues({}, updatesPerEntity[update.id] ? updatesPerEntity[update.id].changes : null), update.changes)\r\n                };\r\n            }\r\n        });\r\n        updates = Object.values(updatesPerEntity);\r\n        var didMutateEntities = updates.length > 0;\r\n        if (didMutateEntities) {\r\n            var didMutateIds = updates.filter(function (update) { return takeNewKey(newKeys, update, state); }).length > 0;\r\n            if (didMutateIds) {\r\n                state.ids = Object.keys(state.entities);\r\n            }\r\n        }\r\n    }\r\n    function upsertOneMutably(entity, state) {\r\n        return upsertManyMutably([entity], state);\r\n    }\r\n    function upsertManyMutably(newEntities, state) {\r\n        var _c = splitAddedUpdatedEntities(newEntities, selectId, state), added = _c[0], updated = _c[1];\r\n        updateManyMutably(updated, state);\r\n        addManyMutably(added, state);\r\n    }\r\n    return {\r\n        removeAll: createSingleArgumentStateOperator(removeAllMutably),\r\n        addOne: createStateOperator(addOneMutably),\r\n        addMany: createStateOperator(addManyMutably),\r\n        setOne: createStateOperator(setOneMutably),\r\n        setMany: createStateOperator(setManyMutably),\r\n        setAll: createStateOperator(setAllMutably),\r\n        updateOne: createStateOperator(updateOneMutably),\r\n        updateMany: createStateOperator(updateManyMutably),\r\n        upsertOne: createStateOperator(upsertOneMutably),\r\n        upsertMany: createStateOperator(upsertManyMutably),\r\n        removeOne: createStateOperator(removeOneMutably),\r\n        removeMany: createStateOperator(removeManyMutably)\r\n    };\r\n}\r\n// src/entities/sorted_state_adapter.ts\r\nfunction createSortedStateAdapter(selectId, sort) {\r\n    var _c = createUnsortedStateAdapter(selectId), removeOne = _c.removeOne, removeMany = _c.removeMany, removeAll = _c.removeAll;\r\n    function addOneMutably(entity, state) {\r\n        return addManyMutably([entity], state);\r\n    }\r\n    function addManyMutably(newEntities, state) {\r\n        newEntities = ensureEntitiesArray(newEntities);\r\n        var models = newEntities.filter(function (model) { return !(selectIdValue(model, selectId) in state.entities); });\r\n        if (models.length !== 0) {\r\n            merge(models, state);\r\n        }\r\n    }\r\n    function setOneMutably(entity, state) {\r\n        return setManyMutably([entity], state);\r\n    }\r\n    function setManyMutably(newEntities, state) {\r\n        newEntities = ensureEntitiesArray(newEntities);\r\n        if (newEntities.length !== 0) {\r\n            merge(newEntities, state);\r\n        }\r\n    }\r\n    function setAllMutably(newEntities, state) {\r\n        newEntities = ensureEntitiesArray(newEntities);\r\n        state.entities = {};\r\n        state.ids = [];\r\n        addManyMutably(newEntities, state);\r\n    }\r\n    function updateOneMutably(update, state) {\r\n        return updateManyMutably([update], state);\r\n    }\r\n    function updateManyMutably(updates, state) {\r\n        var appliedUpdates = false;\r\n        for (var _i = 0, updates_1 = updates; _i < updates_1.length; _i++) {\r\n            var update = updates_1[_i];\r\n            var entity = state.entities[update.id];\r\n            if (!entity) {\r\n                continue;\r\n            }\r\n            appliedUpdates = true;\r\n            Object.assign(entity, update.changes);\r\n            var newId = selectId(entity);\r\n            if (update.id !== newId) {\r\n                delete state.entities[update.id];\r\n                state.entities[newId] = entity;\r\n            }\r\n        }\r\n        if (appliedUpdates) {\r\n            resortEntities(state);\r\n        }\r\n    }\r\n    function upsertOneMutably(entity, state) {\r\n        return upsertManyMutably([entity], state);\r\n    }\r\n    function upsertManyMutably(newEntities, state) {\r\n        var _c = splitAddedUpdatedEntities(newEntities, selectId, state), added = _c[0], updated = _c[1];\r\n        updateManyMutably(updated, state);\r\n        addManyMutably(added, state);\r\n    }\r\n    function areArraysEqual(a, b) {\r\n        if (a.length !== b.length) {\r\n            return false;\r\n        }\r\n        for (var i = 0; i < a.length && i < b.length; i++) {\r\n            if (a[i] === b[i]) {\r\n                continue;\r\n            }\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n    function merge(models, state) {\r\n        models.forEach(function (model) {\r\n            state.entities[selectId(model)] = model;\r\n        });\r\n        resortEntities(state);\r\n    }\r\n    function resortEntities(state) {\r\n        var allEntities = Object.values(state.entities);\r\n        allEntities.sort(sort);\r\n        var newSortedIds = allEntities.map(selectId);\r\n        var ids = state.ids;\r\n        if (!areArraysEqual(ids, newSortedIds)) {\r\n            state.ids = newSortedIds;\r\n        }\r\n    }\r\n    return {\r\n        removeOne: removeOne,\r\n        removeMany: removeMany,\r\n        removeAll: removeAll,\r\n        addOne: createStateOperator(addOneMutably),\r\n        updateOne: createStateOperator(updateOneMutably),\r\n        upsertOne: createStateOperator(upsertOneMutably),\r\n        setOne: createStateOperator(setOneMutably),\r\n        setMany: createStateOperator(setManyMutably),\r\n        setAll: createStateOperator(setAllMutably),\r\n        addMany: createStateOperator(addManyMutably),\r\n        updateMany: createStateOperator(updateManyMutably),\r\n        upsertMany: createStateOperator(upsertManyMutably)\r\n    };\r\n}\r\n// src/entities/create_adapter.ts\r\nfunction createEntityAdapter(options) {\r\n    if (options === void 0) { options = {}; }\r\n    var _c = __spreadValues({\r\n        sortComparer: false,\r\n        selectId: function (instance) { return instance.id; }\r\n    }, options), selectId = _c.selectId, sortComparer = _c.sortComparer;\r\n    var stateFactory = createInitialStateFactory();\r\n    var selectorsFactory = createSelectorsFactory();\r\n    var stateAdapter = sortComparer ? createSortedStateAdapter(selectId, sortComparer) : createUnsortedStateAdapter(selectId);\r\n    return __spreadValues(__spreadValues(__spreadValues({\r\n        selectId: selectId,\r\n        sortComparer: sortComparer\r\n    }, stateFactory), selectorsFactory), stateAdapter);\r\n}\r\n// src/nanoid.ts\r\nvar urlAlphabet = \"ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW\";\r\nvar nanoid = function (size) {\r\n    if (size === void 0) { size = 21; }\r\n    var id = \"\";\r\n    var i = size;\r\n    while (i--) {\r\n        id += urlAlphabet[Math.random() * 64 | 0];\r\n    }\r\n    return id;\r\n};\r\n// src/createAsyncThunk.ts\r\nvar commonProperties = [\r\n    \"name\",\r\n    \"message\",\r\n    \"stack\",\r\n    \"code\"\r\n];\r\nvar RejectWithValue = /** @class */ (function () {\r\n    function RejectWithValue(payload, meta) {\r\n        this.payload = payload;\r\n        this.meta = meta;\r\n    }\r\n    return RejectWithValue;\r\n}());\r\nvar FulfillWithMeta = /** @class */ (function () {\r\n    function FulfillWithMeta(payload, meta) {\r\n        this.payload = payload;\r\n        this.meta = meta;\r\n    }\r\n    return FulfillWithMeta;\r\n}());\r\nvar miniSerializeError = function (value) {\r\n    if (typeof value === \"object\" && value !== null) {\r\n        var simpleError = {};\r\n        for (var _i = 0, commonProperties_1 = commonProperties; _i < commonProperties_1.length; _i++) {\r\n            var property = commonProperties_1[_i];\r\n            if (typeof value[property] === \"string\") {\r\n                simpleError[property] = value[property];\r\n            }\r\n        }\r\n        return simpleError;\r\n    }\r\n    return { message: String(value) };\r\n};\r\nvar createAsyncThunk = (function () {\r\n    function createAsyncThunk2(typePrefix, payloadCreator, options) {\r\n        var fulfilled = createAction(typePrefix + \"/fulfilled\", function (payload, requestId, arg, meta) { return ({\r\n            payload: payload,\r\n            meta: __spreadProps(__spreadValues({}, meta || {}), {\r\n                arg: arg,\r\n                requestId: requestId,\r\n                requestStatus: \"fulfilled\"\r\n            })\r\n        }); });\r\n        var pending = createAction(typePrefix + \"/pending\", function (requestId, arg, meta) { return ({\r\n            payload: void 0,\r\n            meta: __spreadProps(__spreadValues({}, meta || {}), {\r\n                arg: arg,\r\n                requestId: requestId,\r\n                requestStatus: \"pending\"\r\n            })\r\n        }); });\r\n        var rejected = createAction(typePrefix + \"/rejected\", function (error, requestId, arg, payload, meta) { return ({\r\n            payload: payload,\r\n            error: (options && options.serializeError || miniSerializeError)(error || \"Rejected\"),\r\n            meta: __spreadProps(__spreadValues({}, meta || {}), {\r\n                arg: arg,\r\n                requestId: requestId,\r\n                rejectedWithValue: !!payload,\r\n                requestStatus: \"rejected\",\r\n                aborted: (error == null ? void 0 : error.name) === \"AbortError\",\r\n                condition: (error == null ? void 0 : error.name) === \"ConditionError\"\r\n            })\r\n        }); });\r\n        var displayedWarning = false;\r\n        var AC = typeof AbortController !== \"undefined\" ? AbortController : /** @class */ (function () {\r\n            function class_1() {\r\n                this.signal = {\r\n                    aborted: false,\r\n                    addEventListener: function () {\r\n                    },\r\n                    dispatchEvent: function () {\r\n                        return false;\r\n                    },\r\n                    onabort: function () {\r\n                    },\r\n                    removeEventListener: function () {\r\n                    },\r\n                    reason: void 0,\r\n                    throwIfAborted: function () {\r\n                    }\r\n                };\r\n            }\r\n            class_1.prototype.abort = function () {\r\n                if (true) {\r\n                    if (!displayedWarning) {\r\n                        displayedWarning = true;\r\n                        console.info(\"This platform does not implement AbortController. \\nIf you want to use the AbortController to react to `abort` events, please consider importing a polyfill like 'abortcontroller-polyfill/dist/abortcontroller-polyfill-only'.\");\r\n                    }\r\n                }\r\n            };\r\n            return class_1;\r\n        }());\r\n        function actionCreator(arg) {\r\n            return function (dispatch, getState, extra) {\r\n                var requestId = (options == null ? void 0 : options.idGenerator) ? options.idGenerator(arg) : nanoid();\r\n                var abortController = new AC();\r\n                var abortReason;\r\n                var started = false;\r\n                function abort(reason) {\r\n                    abortReason = reason;\r\n                    abortController.abort();\r\n                }\r\n                var promise2 = function () {\r\n                    return __async(this, null, function () {\r\n                        var _a, _b, finalAction, conditionResult, abortedPromise, err_1, skipDispatch;\r\n                        return __generator(this, function (_c) {\r\n                            switch (_c.label) {\r\n                                case 0:\r\n                                    _c.trys.push([0, 4, , 5]);\r\n                                    conditionResult = (_a = options == null ? void 0 : options.condition) == null ? void 0 : _a.call(options, arg, { getState: getState, extra: extra });\r\n                                    if (!isThenable(conditionResult)) return [3 /*break*/, 2];\r\n                                    return [4 /*yield*/, conditionResult];\r\n                                case 1:\r\n                                    conditionResult = _c.sent();\r\n                                    _c.label = 2;\r\n                                case 2:\r\n                                    if (conditionResult === false || abortController.signal.aborted) {\r\n                                        throw {\r\n                                            name: \"ConditionError\",\r\n                                            message: \"Aborted due to condition callback returning false.\"\r\n                                        };\r\n                                    }\r\n                                    started = true;\r\n                                    abortedPromise = new Promise(function (_, reject) { return abortController.signal.addEventListener(\"abort\", function () { return reject({\r\n                                        name: \"AbortError\",\r\n                                        message: abortReason || \"Aborted\"\r\n                                    }); }); });\r\n                                    dispatch(pending(requestId, arg, (_b = options == null ? void 0 : options.getPendingMeta) == null ? void 0 : _b.call(options, { requestId: requestId, arg: arg }, { getState: getState, extra: extra })));\r\n                                    return [4 /*yield*/, Promise.race([\r\n                                            abortedPromise,\r\n                                            Promise.resolve(payloadCreator(arg, {\r\n                                                dispatch: dispatch,\r\n                                                getState: getState,\r\n                                                extra: extra,\r\n                                                requestId: requestId,\r\n                                                signal: abortController.signal,\r\n                                                abort: abort,\r\n                                                rejectWithValue: function (value, meta) {\r\n                                                    return new RejectWithValue(value, meta);\r\n                                                },\r\n                                                fulfillWithValue: function (value, meta) {\r\n                                                    return new FulfillWithMeta(value, meta);\r\n                                                }\r\n                                            })).then(function (result) {\r\n                                                if (result instanceof RejectWithValue) {\r\n                                                    throw result;\r\n                                                }\r\n                                                if (result instanceof FulfillWithMeta) {\r\n                                                    return fulfilled(result.payload, requestId, arg, result.meta);\r\n                                                }\r\n                                                return fulfilled(result, requestId, arg);\r\n                                            })\r\n                                        ])];\r\n                                case 3:\r\n                                    finalAction = _c.sent();\r\n                                    return [3 /*break*/, 5];\r\n                                case 4:\r\n                                    err_1 = _c.sent();\r\n                                    finalAction = err_1 instanceof RejectWithValue ? rejected(null, requestId, arg, err_1.payload, err_1.meta) : rejected(err_1, requestId, arg);\r\n                                    return [3 /*break*/, 5];\r\n                                case 5:\r\n                                    skipDispatch = options && !options.dispatchConditionRejection && rejected.match(finalAction) && finalAction.meta.condition;\r\n                                    if (!skipDispatch) {\r\n                                        dispatch(finalAction);\r\n                                    }\r\n                                    return [2 /*return*/, finalAction];\r\n                            }\r\n                        });\r\n                    });\r\n                }();\r\n                return Object.assign(promise2, {\r\n                    abort: abort,\r\n                    requestId: requestId,\r\n                    arg: arg,\r\n                    unwrap: function () {\r\n                        return promise2.then(unwrapResult);\r\n                    }\r\n                });\r\n            };\r\n        }\r\n        return Object.assign(actionCreator, {\r\n            pending: pending,\r\n            rejected: rejected,\r\n            fulfilled: fulfilled,\r\n            typePrefix: typePrefix\r\n        });\r\n    }\r\n    createAsyncThunk2.withTypes = function () { return createAsyncThunk2; };\r\n    return createAsyncThunk2;\r\n})();\r\nfunction unwrapResult(action) {\r\n    if (action.meta && action.meta.rejectedWithValue) {\r\n        throw action.payload;\r\n    }\r\n    if (action.error) {\r\n        throw action.error;\r\n    }\r\n    return action.payload;\r\n}\r\nfunction isThenable(value) {\r\n    return value !== null && typeof value === \"object\" && typeof value.then === \"function\";\r\n}\r\n// src/tsHelpers.ts\r\nvar hasMatchFunction = function (v) {\r\n    return v && typeof v.match === \"function\";\r\n};\r\n// src/matchers.ts\r\nvar matches = function (matcher, action) {\r\n    if (hasMatchFunction(matcher)) {\r\n        return matcher.match(action);\r\n    }\r\n    else {\r\n        return matcher(action);\r\n    }\r\n};\r\nfunction isAnyOf() {\r\n    var matchers = [];\r\n    for (var _i = 0; _i < arguments.length; _i++) {\r\n        matchers[_i] = arguments[_i];\r\n    }\r\n    return function (action) {\r\n        return matchers.some(function (matcher) { return matches(matcher, action); });\r\n    };\r\n}\r\nfunction isAllOf() {\r\n    var matchers = [];\r\n    for (var _i = 0; _i < arguments.length; _i++) {\r\n        matchers[_i] = arguments[_i];\r\n    }\r\n    return function (action) {\r\n        return matchers.every(function (matcher) { return matches(matcher, action); });\r\n    };\r\n}\r\nfunction hasExpectedRequestMetadata(action, validStatus) {\r\n    if (!action || !action.meta)\r\n        return false;\r\n    var hasValidRequestId = typeof action.meta.requestId === \"string\";\r\n    var hasValidRequestStatus = validStatus.indexOf(action.meta.requestStatus) > -1;\r\n    return hasValidRequestId && hasValidRequestStatus;\r\n}\r\nfunction isAsyncThunkArray(a) {\r\n    return typeof a[0] === \"function\" && \"pending\" in a[0] && \"fulfilled\" in a[0] && \"rejected\" in a[0];\r\n}\r\nfunction isPending() {\r\n    var asyncThunks = [];\r\n    for (var _i = 0; _i < arguments.length; _i++) {\r\n        asyncThunks[_i] = arguments[_i];\r\n    }\r\n    if (asyncThunks.length === 0) {\r\n        return function (action) { return hasExpectedRequestMetadata(action, [\"pending\"]); };\r\n    }\r\n    if (!isAsyncThunkArray(asyncThunks)) {\r\n        return isPending()(asyncThunks[0]);\r\n    }\r\n    return function (action) {\r\n        var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.pending; });\r\n        var combinedMatcher = isAnyOf.apply(void 0, matchers);\r\n        return combinedMatcher(action);\r\n    };\r\n}\r\nfunction isRejected() {\r\n    var asyncThunks = [];\r\n    for (var _i = 0; _i < arguments.length; _i++) {\r\n        asyncThunks[_i] = arguments[_i];\r\n    }\r\n    if (asyncThunks.length === 0) {\r\n        return function (action) { return hasExpectedRequestMetadata(action, [\"rejected\"]); };\r\n    }\r\n    if (!isAsyncThunkArray(asyncThunks)) {\r\n        return isRejected()(asyncThunks[0]);\r\n    }\r\n    return function (action) {\r\n        var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.rejected; });\r\n        var combinedMatcher = isAnyOf.apply(void 0, matchers);\r\n        return combinedMatcher(action);\r\n    };\r\n}\r\nfunction isRejectedWithValue() {\r\n    var asyncThunks = [];\r\n    for (var _i = 0; _i < arguments.length; _i++) {\r\n        asyncThunks[_i] = arguments[_i];\r\n    }\r\n    var hasFlag = function (action) {\r\n        return action && action.meta && action.meta.rejectedWithValue;\r\n    };\r\n    if (asyncThunks.length === 0) {\r\n        return function (action) {\r\n            var combinedMatcher = isAllOf(isRejected.apply(void 0, asyncThunks), hasFlag);\r\n            return combinedMatcher(action);\r\n        };\r\n    }\r\n    if (!isAsyncThunkArray(asyncThunks)) {\r\n        return isRejectedWithValue()(asyncThunks[0]);\r\n    }\r\n    return function (action) {\r\n        var combinedMatcher = isAllOf(isRejected.apply(void 0, asyncThunks), hasFlag);\r\n        return combinedMatcher(action);\r\n    };\r\n}\r\nfunction isFulfilled() {\r\n    var asyncThunks = [];\r\n    for (var _i = 0; _i < arguments.length; _i++) {\r\n        asyncThunks[_i] = arguments[_i];\r\n    }\r\n    if (asyncThunks.length === 0) {\r\n        return function (action) { return hasExpectedRequestMetadata(action, [\"fulfilled\"]); };\r\n    }\r\n    if (!isAsyncThunkArray(asyncThunks)) {\r\n        return isFulfilled()(asyncThunks[0]);\r\n    }\r\n    return function (action) {\r\n        var matchers = asyncThunks.map(function (asyncThunk) { return asyncThunk.fulfilled; });\r\n        var combinedMatcher = isAnyOf.apply(void 0, matchers);\r\n        return combinedMatcher(action);\r\n    };\r\n}\r\nfunction isAsyncThunkAction() {\r\n    var asyncThunks = [];\r\n    for (var _i = 0; _i < arguments.length; _i++) {\r\n        asyncThunks[_i] = arguments[_i];\r\n    }\r\n    if (asyncThunks.length === 0) {\r\n        return function (action) { return hasExpectedRequestMetadata(action, [\"pending\", \"fulfilled\", \"rejected\"]); };\r\n    }\r\n    if (!isAsyncThunkArray(asyncThunks)) {\r\n        return isAsyncThunkAction()(asyncThunks[0]);\r\n    }\r\n    return function (action) {\r\n        var matchers = [];\r\n        for (var _i = 0, asyncThunks_1 = asyncThunks; _i < asyncThunks_1.length; _i++) {\r\n            var asyncThunk = asyncThunks_1[_i];\r\n            matchers.push(asyncThunk.pending, asyncThunk.rejected, asyncThunk.fulfilled);\r\n        }\r\n        var combinedMatcher = isAnyOf.apply(void 0, matchers);\r\n        return combinedMatcher(action);\r\n    };\r\n}\r\n// src/listenerMiddleware/utils.ts\r\nvar assertFunction = function (func, expected) {\r\n    if (typeof func !== \"function\") {\r\n        throw new TypeError(expected + \" is not a function\");\r\n    }\r\n};\r\nvar noop = function () {\r\n};\r\nvar catchRejection = function (promise2, onError) {\r\n    if (onError === void 0) { onError = noop; }\r\n    promise2.catch(onError);\r\n    return promise2;\r\n};\r\nvar addAbortSignalListener = function (abortSignal, callback) {\r\n    abortSignal.addEventListener(\"abort\", callback, { once: true });\r\n};\r\nvar abortControllerWithReason = function (abortController, reason) {\r\n    var signal = abortController.signal;\r\n    if (signal.aborted) {\r\n        return;\r\n    }\r\n    if (!(\"reason\" in signal)) {\r\n        Object.defineProperty(signal, \"reason\", {\r\n            enumerable: true,\r\n            value: reason,\r\n            configurable: true,\r\n            writable: true\r\n        });\r\n    }\r\n    ;\r\n    abortController.abort(reason);\r\n};\r\n// src/listenerMiddleware/exceptions.ts\r\nvar task = \"task\";\r\nvar listener = \"listener\";\r\nvar completed = \"completed\";\r\nvar cancelled = \"cancelled\";\r\nvar taskCancelled = \"task-\" + cancelled;\r\nvar taskCompleted = \"task-\" + completed;\r\nvar listenerCancelled = listener + \"-\" + cancelled;\r\nvar listenerCompleted = listener + \"-\" + completed;\r\nvar TaskAbortError = /** @class */ (function () {\r\n    function TaskAbortError(code) {\r\n        this.code = code;\r\n        this.name = \"TaskAbortError\";\r\n        this.message = task + \" \" + cancelled + \" (reason: \" + code + \")\";\r\n    }\r\n    return TaskAbortError;\r\n}());\r\n// src/listenerMiddleware/task.ts\r\nvar validateActive = function (signal) {\r\n    if (signal.aborted) {\r\n        throw new TaskAbortError(signal.reason);\r\n    }\r\n};\r\nvar promisifyAbortSignal = function (signal) {\r\n    return catchRejection(new Promise(function (_, reject) {\r\n        var notifyRejection = function () { return reject(new TaskAbortError(signal.reason)); };\r\n        if (signal.aborted) {\r\n            notifyRejection();\r\n        }\r\n        else {\r\n            addAbortSignalListener(signal, notifyRejection);\r\n        }\r\n    }));\r\n};\r\nvar runTask = function (task2, cleanUp) { return __async(void 0, null, function () {\r\n    var value, error_1;\r\n    return __generator(this, function (_c) {\r\n        switch (_c.label) {\r\n            case 0:\r\n                _c.trys.push([0, 3, 4, 5]);\r\n                return [4 /*yield*/, Promise.resolve()];\r\n            case 1:\r\n                _c.sent();\r\n                return [4 /*yield*/, task2()];\r\n            case 2:\r\n                value = _c.sent();\r\n                return [2 /*return*/, {\r\n                        status: \"ok\",\r\n                        value: value\r\n                    }];\r\n            case 3:\r\n                error_1 = _c.sent();\r\n                return [2 /*return*/, {\r\n                        status: error_1 instanceof TaskAbortError ? \"cancelled\" : \"rejected\",\r\n                        error: error_1\r\n                    }];\r\n            case 4:\r\n                cleanUp == null ? void 0 : cleanUp();\r\n                return [7 /*endfinally*/];\r\n            case 5: return [2 /*return*/];\r\n        }\r\n    });\r\n}); };\r\nvar createPause = function (signal) {\r\n    return function (promise2) {\r\n        return catchRejection(Promise.race([promisifyAbortSignal(signal), promise2]).then(function (output) {\r\n            validateActive(signal);\r\n            return output;\r\n        }));\r\n    };\r\n};\r\nvar createDelay = function (signal) {\r\n    var pause = createPause(signal);\r\n    return function (timeoutMs) {\r\n        return pause(new Promise(function (resolve) { return setTimeout(resolve, timeoutMs); }));\r\n    };\r\n};\r\n// src/listenerMiddleware/index.ts\r\nvar assign = Object.assign;\r\nvar INTERNAL_NIL_TOKEN = {};\r\nvar alm = \"listenerMiddleware\";\r\nvar createFork = function (parentAbortSignal) {\r\n    var linkControllers = function (controller) { return addAbortSignalListener(parentAbortSignal, function () { return abortControllerWithReason(controller, parentAbortSignal.reason); }); };\r\n    return function (taskExecutor) {\r\n        assertFunction(taskExecutor, \"taskExecutor\");\r\n        var childAbortController = new AbortController();\r\n        linkControllers(childAbortController);\r\n        var result = runTask(function () { return __async(void 0, null, function () {\r\n            var result2;\r\n            return __generator(this, function (_c) {\r\n                switch (_c.label) {\r\n                    case 0:\r\n                        validateActive(parentAbortSignal);\r\n                        validateActive(childAbortController.signal);\r\n                        return [4 /*yield*/, taskExecutor({\r\n                                pause: createPause(childAbortController.signal),\r\n                                delay: createDelay(childAbortController.signal),\r\n                                signal: childAbortController.signal\r\n                            })];\r\n                    case 1:\r\n                        result2 = _c.sent();\r\n                        validateActive(childAbortController.signal);\r\n                        return [2 /*return*/, result2];\r\n                }\r\n            });\r\n        }); }, function () { return abortControllerWithReason(childAbortController, taskCompleted); });\r\n        return {\r\n            result: createPause(parentAbortSignal)(result),\r\n            cancel: function () {\r\n                abortControllerWithReason(childAbortController, taskCancelled);\r\n            }\r\n        };\r\n    };\r\n};\r\nvar createTakePattern = function (startListening, signal) {\r\n    var take = function (predicate, timeout) { return __async(void 0, null, function () {\r\n        var unsubscribe, tuplePromise, promises, output;\r\n        return __generator(this, function (_c) {\r\n            switch (_c.label) {\r\n                case 0:\r\n                    validateActive(signal);\r\n                    unsubscribe = function () {\r\n                    };\r\n                    tuplePromise = new Promise(function (resolve) {\r\n                        unsubscribe = startListening({\r\n                            predicate: predicate,\r\n                            effect: function (action, listenerApi) {\r\n                                listenerApi.unsubscribe();\r\n                                resolve([\r\n                                    action,\r\n                                    listenerApi.getState(),\r\n                                    listenerApi.getOriginalState()\r\n                                ]);\r\n                            }\r\n                        });\r\n                    });\r\n                    promises = [\r\n                        promisifyAbortSignal(signal),\r\n                        tuplePromise\r\n                    ];\r\n                    if (timeout != null) {\r\n                        promises.push(new Promise(function (resolve) { return setTimeout(resolve, timeout, null); }));\r\n                    }\r\n                    _c.label = 1;\r\n                case 1:\r\n                    _c.trys.push([1, , 3, 4]);\r\n                    return [4 /*yield*/, Promise.race(promises)];\r\n                case 2:\r\n                    output = _c.sent();\r\n                    validateActive(signal);\r\n                    return [2 /*return*/, output];\r\n                case 3:\r\n                    unsubscribe();\r\n                    return [7 /*endfinally*/];\r\n                case 4: return [2 /*return*/];\r\n            }\r\n        });\r\n    }); };\r\n    return function (predicate, timeout) { return catchRejection(take(predicate, timeout)); };\r\n};\r\nvar getListenerEntryPropsFrom = function (options) {\r\n    var type = options.type, actionCreator = options.actionCreator, matcher = options.matcher, predicate = options.predicate, effect = options.effect;\r\n    if (type) {\r\n        predicate = createAction(type).match;\r\n    }\r\n    else if (actionCreator) {\r\n        type = actionCreator.type;\r\n        predicate = actionCreator.match;\r\n    }\r\n    else if (matcher) {\r\n        predicate = matcher;\r\n    }\r\n    else if (predicate) {\r\n    }\r\n    else {\r\n        throw new Error(\"Creating or removing a listener requires one of the known fields for matching an action\");\r\n    }\r\n    assertFunction(effect, \"options.listener\");\r\n    return { predicate: predicate, type: type, effect: effect };\r\n};\r\nvar createListenerEntry = function (options) {\r\n    var _c = getListenerEntryPropsFrom(options), type = _c.type, predicate = _c.predicate, effect = _c.effect;\r\n    var id = nanoid();\r\n    var entry = {\r\n        id: id,\r\n        effect: effect,\r\n        type: type,\r\n        predicate: predicate,\r\n        pending: new Set(),\r\n        unsubscribe: function () {\r\n            throw new Error(\"Unsubscribe not initialized\");\r\n        }\r\n    };\r\n    return entry;\r\n};\r\nvar createClearListenerMiddleware = function (listenerMap) {\r\n    return function () {\r\n        listenerMap.forEach(cancelActiveListeners);\r\n        listenerMap.clear();\r\n    };\r\n};\r\nvar safelyNotifyError = function (errorHandler, errorToNotify, errorInfo) {\r\n    try {\r\n        errorHandler(errorToNotify, errorInfo);\r\n    }\r\n    catch (errorHandlerError) {\r\n        setTimeout(function () {\r\n            throw errorHandlerError;\r\n        }, 0);\r\n    }\r\n};\r\nvar addListener = createAction(alm + \"/add\");\r\nvar clearAllListeners = createAction(alm + \"/removeAll\");\r\nvar removeListener = createAction(alm + \"/remove\");\r\nvar defaultErrorHandler = function () {\r\n    var args = [];\r\n    for (var _i = 0; _i < arguments.length; _i++) {\r\n        args[_i] = arguments[_i];\r\n    }\r\n    console.error.apply(console, __spreadArray([alm + \"/error\"], args));\r\n};\r\nvar cancelActiveListeners = function (entry) {\r\n    entry.pending.forEach(function (controller) {\r\n        abortControllerWithReason(controller, listenerCancelled);\r\n    });\r\n};\r\nfunction createListenerMiddleware(middlewareOptions) {\r\n    var _this = this;\r\n    if (middlewareOptions === void 0) { middlewareOptions = {}; }\r\n    var listenerMap = new Map();\r\n    var extra = middlewareOptions.extra, _c = middlewareOptions.onError, onError = _c === void 0 ? defaultErrorHandler : _c;\r\n    assertFunction(onError, \"onError\");\r\n    var insertEntry = function (entry) {\r\n        entry.unsubscribe = function () { return listenerMap.delete(entry.id); };\r\n        listenerMap.set(entry.id, entry);\r\n        return function (cancelOptions) {\r\n            entry.unsubscribe();\r\n            if (cancelOptions == null ? void 0 : cancelOptions.cancelActive) {\r\n                cancelActiveListeners(entry);\r\n            }\r\n        };\r\n    };\r\n    var findListenerEntry = function (comparator) {\r\n        for (var _i = 0, _c = Array.from(listenerMap.values()); _i < _c.length; _i++) {\r\n            var entry = _c[_i];\r\n            if (comparator(entry)) {\r\n                return entry;\r\n            }\r\n        }\r\n        return void 0;\r\n    };\r\n    var startListening = function (options) {\r\n        var entry = findListenerEntry(function (existingEntry) { return existingEntry.effect === options.effect; });\r\n        if (!entry) {\r\n            entry = createListenerEntry(options);\r\n        }\r\n        return insertEntry(entry);\r\n    };\r\n    var stopListening = function (options) {\r\n        var _c = getListenerEntryPropsFrom(options), type = _c.type, effect = _c.effect, predicate = _c.predicate;\r\n        var entry = findListenerEntry(function (entry2) {\r\n            var matchPredicateOrType = typeof type === \"string\" ? entry2.type === type : entry2.predicate === predicate;\r\n            return matchPredicateOrType && entry2.effect === effect;\r\n        });\r\n        if (entry) {\r\n            entry.unsubscribe();\r\n            if (options.cancelActive) {\r\n                cancelActiveListeners(entry);\r\n            }\r\n        }\r\n        return !!entry;\r\n    };\r\n    var notifyListener = function (entry, action, api, getOriginalState) { return __async(_this, null, function () {\r\n        var internalTaskController, take, listenerError_1;\r\n        return __generator(this, function (_c) {\r\n            switch (_c.label) {\r\n                case 0:\r\n                    internalTaskController = new AbortController();\r\n                    take = createTakePattern(startListening, internalTaskController.signal);\r\n                    _c.label = 1;\r\n                case 1:\r\n                    _c.trys.push([1, 3, 4, 5]);\r\n                    entry.pending.add(internalTaskController);\r\n                    return [4 /*yield*/, Promise.resolve(entry.effect(action, assign({}, api, {\r\n                            getOriginalState: getOriginalState,\r\n                            condition: function (predicate, timeout) { return take(predicate, timeout).then(Boolean); },\r\n                            take: take,\r\n                            delay: createDelay(internalTaskController.signal),\r\n                            pause: createPause(internalTaskController.signal),\r\n                            extra: extra,\r\n                            signal: internalTaskController.signal,\r\n                            fork: createFork(internalTaskController.signal),\r\n                            unsubscribe: entry.unsubscribe,\r\n                            subscribe: function () {\r\n                                listenerMap.set(entry.id, entry);\r\n                            },\r\n                            cancelActiveListeners: function () {\r\n                                entry.pending.forEach(function (controller, _, set) {\r\n                                    if (controller !== internalTaskController) {\r\n                                        abortControllerWithReason(controller, listenerCancelled);\r\n                                        set.delete(controller);\r\n                                    }\r\n                                });\r\n                            }\r\n                        })))];\r\n                case 2:\r\n                    _c.sent();\r\n                    return [3 /*break*/, 5];\r\n                case 3:\r\n                    listenerError_1 = _c.sent();\r\n                    if (!(listenerError_1 instanceof TaskAbortError)) {\r\n                        safelyNotifyError(onError, listenerError_1, {\r\n                            raisedBy: \"effect\"\r\n                        });\r\n                    }\r\n                    return [3 /*break*/, 5];\r\n                case 4:\r\n                    abortControllerWithReason(internalTaskController, listenerCompleted);\r\n                    entry.pending.delete(internalTaskController);\r\n                    return [7 /*endfinally*/];\r\n                case 5: return [2 /*return*/];\r\n            }\r\n        });\r\n    }); };\r\n    var clearListenerMiddleware = createClearListenerMiddleware(listenerMap);\r\n    var middleware = function (api) { return function (next) { return function (action) {\r\n        if (addListener.match(action)) {\r\n            return startListening(action.payload);\r\n        }\r\n        if (clearAllListeners.match(action)) {\r\n            clearListenerMiddleware();\r\n            return;\r\n        }\r\n        if (removeListener.match(action)) {\r\n            return stopListening(action.payload);\r\n        }\r\n        var originalState = api.getState();\r\n        var getOriginalState = function () {\r\n            if (originalState === INTERNAL_NIL_TOKEN) {\r\n                throw new Error(alm + \": getOriginalState can only be called synchronously\");\r\n            }\r\n            return originalState;\r\n        };\r\n        var result;\r\n        try {\r\n            result = next(action);\r\n            if (listenerMap.size > 0) {\r\n                var currentState = api.getState();\r\n                var listenerEntries = Array.from(listenerMap.values());\r\n                for (var _i = 0, listenerEntries_1 = listenerEntries; _i < listenerEntries_1.length; _i++) {\r\n                    var entry = listenerEntries_1[_i];\r\n                    var runListener = false;\r\n                    try {\r\n                        runListener = entry.predicate(action, currentState, originalState);\r\n                    }\r\n                    catch (predicateError) {\r\n                        runListener = false;\r\n                        safelyNotifyError(onError, predicateError, {\r\n                            raisedBy: \"predicate\"\r\n                        });\r\n                    }\r\n                    if (!runListener) {\r\n                        continue;\r\n                    }\r\n                    notifyListener(entry, action, api, getOriginalState);\r\n                }\r\n            }\r\n        }\r\n        finally {\r\n            originalState = INTERNAL_NIL_TOKEN;\r\n        }\r\n        return result;\r\n    }; }; };\r\n    return {\r\n        middleware: middleware,\r\n        startListening: startListening,\r\n        stopListening: stopListening,\r\n        clearListeners: clearListenerMiddleware\r\n    };\r\n}\r\n// src/autoBatchEnhancer.ts\r\nvar SHOULD_AUTOBATCH = \"RTK_autoBatch\";\r\nvar prepareAutoBatched = function () { return function (payload) {\r\n    var _c;\r\n    return ({\r\n        payload: payload,\r\n        meta: (_c = {}, _c[SHOULD_AUTOBATCH] = true, _c)\r\n    });\r\n}; };\r\nvar promise;\r\nvar queueMicrotaskShim = typeof queueMicrotask === \"function\" ? queueMicrotask.bind(typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : globalThis) : function (cb) { return (promise || (promise = Promise.resolve())).then(cb).catch(function (err) { return setTimeout(function () {\r\n    throw err;\r\n}, 0); }); };\r\nvar createQueueWithTimer = function (timeout) {\r\n    return function (notify) {\r\n        setTimeout(notify, timeout);\r\n    };\r\n};\r\nvar rAF = typeof window !== \"undefined\" && window.requestAnimationFrame ? window.requestAnimationFrame : createQueueWithTimer(10);\r\nvar autoBatchEnhancer = function (options) {\r\n    if (options === void 0) { options = { type: \"raf\" }; }\r\n    return function (next) { return function () {\r\n        var args = [];\r\n        for (var _i = 0; _i < arguments.length; _i++) {\r\n            args[_i] = arguments[_i];\r\n        }\r\n        var store = next.apply(void 0, args);\r\n        var notifying = true;\r\n        var shouldNotifyAtEndOfTick = false;\r\n        var notificationQueued = false;\r\n        var listeners = new Set();\r\n        var queueCallback = options.type === \"tick\" ? queueMicrotaskShim : options.type === \"raf\" ? rAF : options.type === \"callback\" ? options.queueNotification : createQueueWithTimer(options.timeout);\r\n        var notifyListeners = function () {\r\n            notificationQueued = false;\r\n            if (shouldNotifyAtEndOfTick) {\r\n                shouldNotifyAtEndOfTick = false;\r\n                listeners.forEach(function (l) { return l(); });\r\n            }\r\n        };\r\n        return Object.assign({}, store, {\r\n            subscribe: function (listener2) {\r\n                var wrappedListener = function () { return notifying && listener2(); };\r\n                var unsubscribe = store.subscribe(wrappedListener);\r\n                listeners.add(listener2);\r\n                return function () {\r\n                    unsubscribe();\r\n                    listeners.delete(listener2);\r\n                };\r\n            },\r\n            dispatch: function (action) {\r\n                var _a;\r\n                try {\r\n                    notifying = !((_a = action == null ? void 0 : action.meta) == null ? void 0 : _a[SHOULD_AUTOBATCH]);\r\n                    shouldNotifyAtEndOfTick = !notifying;\r\n                    if (shouldNotifyAtEndOfTick) {\r\n                        if (!notificationQueued) {\r\n                            notificationQueued = true;\r\n                            queueCallback(notifyListeners);\r\n                        }\r\n                    }\r\n                    return store.dispatch(action);\r\n                }\r\n                finally {\r\n                    notifying = true;\r\n                }\r\n            }\r\n        });\r\n    }; };\r\n};\r\n// src/index.ts\r\n(0, import_immer5.enableES5)();\r\n//# sourceMappingURL=redux-toolkit.cjs.development.js.map", "'use strict'\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./redux-toolkit.cjs.production.min.js')\n} else {\n  module.exports = require('./redux-toolkit.cjs.development.js')\n}", "export { QueryStatus } from './core/apiState'\r\nexport type { Api, Module, ApiModules } from './apiTypes'\r\nexport type {\r\n  BaseQueryApi,\r\n  BaseQueryEnhancer,\r\n  BaseQueryFn,\r\n} from './baseQueryTypes'\r\nexport type {\r\n  EndpointDefinitions,\r\n  EndpointDefinition,\r\n  QueryDefinition,\r\n  MutationDefinition,\r\n  TagDescription,\r\n} from './endpointDefinitions'\r\nexport { fetchBaseQuery } from './fetchBaseQuery'\r\nexport type {\r\n  FetchBaseQueryError,\r\n  FetchBaseQueryMeta,\r\n  FetchArgs,\r\n} from './fetchBaseQuery'\r\nexport { retry } from './retry'\r\nexport { setupListeners } from './core/setupListeners'\r\nexport { skipSelector, skipToken, SkipToken } from './core/buildSelectors'\r\nexport type { CreateApi, CreateApiOptions } from './createApi'\r\nexport { buildCreateApi } from './createApi'\r\nexport { fakeBaseQuery } from './fakeBaseQuery'\r\nexport { copyWithStructuralSharing } from './utils/copyWithStructuralSharing'\r\nexport { createApi, coreModule } from './core'\r\nexport { defaultSerializeQueryArgs } from './defaultSerializeQueryArgs'\r\n", "import type { SerializedError } from '@reduxjs/toolkit'\r\nimport type { BaseQueryError } from '../baseQueryTypes'\r\nimport type {\r\n  QueryDefinition,\r\n  MutationDefinition,\r\n  EndpointDefinitions,\r\n  BaseEndpointDefinition,\r\n  ResultTypeFrom,\r\n  QueryArgFrom,\r\n} from '../endpointDefinitions'\r\nimport type { Id, WithRequiredProp } from '../tsHelpers'\r\n\r\nexport type QueryCacheKey = string & { _type: 'queryCacheKey' }\r\nexport type QuerySubstateIdentifier = { queryCacheKey: QueryCacheKey }\r\nexport type MutationSubstateIdentifier =\r\n  | {\r\n      requestId: string\r\n      fixedCacheKey?: string\r\n    }\r\n  | {\r\n      requestId?: string\r\n      fixedCacheKey: string\r\n    }\r\n\r\nexport type RefetchConfigOptions = {\r\n  refetchOnMountOrArgChange: boolean | number\r\n  refetchOnReconnect: boolean\r\n  refetchOnFocus: boolean\r\n}\r\n\r\n/**\r\n * Strings describing the query state at any given time.\r\n */\r\nexport enum QueryStatus {\r\n  uninitialized = 'uninitialized',\r\n  pending = 'pending',\r\n  fulfilled = 'fulfilled',\r\n  rejected = 'rejected',\r\n}\r\n\r\nexport type RequestStatusFlags =\r\n  | {\r\n      status: QueryStatus.uninitialized\r\n      isUninitialized: true\r\n      isLoading: false\r\n      isSuccess: false\r\n      isError: false\r\n    }\r\n  | {\r\n      status: QueryStatus.pending\r\n      isUninitialized: false\r\n      isLoading: true\r\n      isSuccess: false\r\n      isError: false\r\n    }\r\n  | {\r\n      status: QueryStatus.fulfilled\r\n      isUninitialized: false\r\n      isLoading: false\r\n      isSuccess: true\r\n      isError: false\r\n    }\r\n  | {\r\n      status: QueryStatus.rejected\r\n      isUninitialized: false\r\n      isLoading: false\r\n      isSuccess: false\r\n      isError: true\r\n    }\r\n\r\nexport function getRequestStatusFlags(status: QueryStatus): RequestStatusFlags {\r\n  return {\r\n    status,\r\n    isUninitialized: status === QueryStatus.uninitialized,\r\n    isLoading: status === QueryStatus.pending,\r\n    isSuccess: status === QueryStatus.fulfilled,\r\n    isError: status === QueryStatus.rejected,\r\n  } as any\r\n}\r\n\r\nexport type SubscriptionOptions = {\r\n  /**\r\n   * How frequently to automatically re-fetch data (in milliseconds). Defaults to `0` (off).\r\n   */\r\n  pollingInterval?: number\r\n  /**\r\n   * Defaults to `false`. This setting allows you to control whether RTK Query will try to refetch all subscribed queries after regaining a network connection.\r\n   *\r\n   * If you specify this option alongside `skip: true`, this **will not be evaluated** until `skip` is false.\r\n   *\r\n   * Note: requires [`setupListeners`](./setupListeners) to have been called.\r\n   */\r\n  refetchOnReconnect?: boolean\r\n  /**\r\n   * Defaults to `false`. This setting allows you to control whether RTK Query will try to refetch all subscribed queries after the application window regains focus.\r\n   *\r\n   * If you specify this option alongside `skip: true`, this **will not be evaluated** until `skip` is false.\r\n   *\r\n   * Note: requires [`setupListeners`](./setupListeners) to have been called.\r\n   */\r\n  refetchOnFocus?: boolean\r\n}\r\nexport type Subscribers = { [requestId: string]: SubscriptionOptions }\r\nexport type QueryKeys<Definitions extends EndpointDefinitions> = {\r\n  [K in keyof Definitions]: Definitions[K] extends QueryDefinition<\r\n    any,\r\n    any,\r\n    any,\r\n    any\r\n  >\r\n    ? K\r\n    : never\r\n}[keyof Definitions]\r\nexport type MutationKeys<Definitions extends EndpointDefinitions> = {\r\n  [K in keyof Definitions]: Definitions[K] extends MutationDefinition<\r\n    any,\r\n    any,\r\n    any,\r\n    any\r\n  >\r\n    ? K\r\n    : never\r\n}[keyof Definitions]\r\n\r\ntype BaseQuerySubState<D extends BaseEndpointDefinition<any, any, any>> = {\r\n  /**\r\n   * The argument originally passed into the hook or `initiate` action call\r\n   */\r\n  originalArgs: QueryArgFrom<D>\r\n  /**\r\n   * A unique ID associated with the request\r\n   */\r\n  requestId: string\r\n  /**\r\n   * The received data from the query\r\n   */\r\n  data?: ResultTypeFrom<D>\r\n  /**\r\n   * The received error if applicable\r\n   */\r\n  error?:\r\n    | SerializedError\r\n    | (D extends QueryDefinition<any, infer BaseQuery, any, any>\r\n        ? BaseQueryError<BaseQuery>\r\n        : never)\r\n  /**\r\n   * The name of the endpoint associated with the query\r\n   */\r\n  endpointName: string\r\n  /**\r\n   * Time that the latest query started\r\n   */\r\n  startedTimeStamp: number\r\n  /**\r\n   * Time that the latest query was fulfilled\r\n   */\r\n  fulfilledTimeStamp?: number\r\n}\r\n\r\nexport type QuerySubState<D extends BaseEndpointDefinition<any, any, any>> = Id<\r\n  | ({\r\n      status: QueryStatus.fulfilled\r\n    } & WithRequiredProp<\r\n      BaseQuerySubState<D>,\r\n      'data' | 'fulfilledTimeStamp'\r\n    > & { error: undefined })\r\n  | ({\r\n      status: QueryStatus.pending\r\n    } & BaseQuerySubState<D>)\r\n  | ({\r\n      status: QueryStatus.rejected\r\n    } & WithRequiredProp<BaseQuerySubState<D>, 'error'>)\r\n  | {\r\n      status: QueryStatus.uninitialized\r\n      originalArgs?: undefined\r\n      data?: undefined\r\n      error?: undefined\r\n      requestId?: undefined\r\n      endpointName?: string\r\n      startedTimeStamp?: undefined\r\n      fulfilledTimeStamp?: undefined\r\n    }\r\n>\r\n\r\ntype BaseMutationSubState<D extends BaseEndpointDefinition<any, any, any>> = {\r\n  requestId: string\r\n  data?: ResultTypeFrom<D>\r\n  error?:\r\n    | SerializedError\r\n    | (D extends MutationDefinition<any, infer BaseQuery, any, any>\r\n        ? BaseQueryError<BaseQuery>\r\n        : never)\r\n  endpointName: string\r\n  startedTimeStamp: number\r\n  fulfilledTimeStamp?: number\r\n}\r\n\r\nexport type MutationSubState<D extends BaseEndpointDefinition<any, any, any>> =\r\n  | (({\r\n      status: QueryStatus.fulfilled\r\n    } & WithRequiredProp<\r\n      BaseMutationSubState<D>,\r\n      'data' | 'fulfilledTimeStamp'\r\n    >) & { error: undefined })\r\n  | (({\r\n      status: QueryStatus.pending\r\n    } & BaseMutationSubState<D>) & { data?: undefined })\r\n  | ({\r\n      status: QueryStatus.rejected\r\n    } & WithRequiredProp<BaseMutationSubState<D>, 'error'>)\r\n  | {\r\n      requestId?: undefined\r\n      status: QueryStatus.uninitialized\r\n      data?: undefined\r\n      error?: undefined\r\n      endpointName?: string\r\n      startedTimeStamp?: undefined\r\n      fulfilledTimeStamp?: undefined\r\n    }\r\n\r\nexport type CombinedState<\r\n  D extends EndpointDefinitions,\r\n  E extends string,\r\n  ReducerPath extends string\r\n> = {\r\n  queries: QueryState<D>\r\n  mutations: MutationState<D>\r\n  provided: InvalidationState<E>\r\n  subscriptions: SubscriptionState\r\n  config: ConfigState<ReducerPath>\r\n}\r\n\r\nexport type InvalidationState<TagTypes extends string> = {\r\n  [_ in TagTypes]: {\r\n    [id: string]: Array<QueryCacheKey>\r\n    [id: number]: Array<QueryCacheKey>\r\n  }\r\n}\r\n\r\nexport type QueryState<D extends EndpointDefinitions> = {\r\n  [queryCacheKey: string]: QuerySubState<D[string]> | undefined\r\n}\r\n\r\nexport type SubscriptionState = {\r\n  [queryCacheKey: string]: Subscribers | undefined\r\n}\r\n\r\nexport type ConfigState<ReducerPath> = RefetchConfigOptions & {\r\n  reducerPath: ReducerPath\r\n  online: boolean\r\n  focused: boolean\r\n  middlewareRegistered: boolean | 'conflict'\r\n} & ModifiableConfigState\r\n\r\nexport type ModifiableConfigState = {\r\n  keepUnusedDataFor: number\r\n} & RefetchConfigOptions\r\n\r\nexport type MutationState<D extends EndpointDefinitions> = {\r\n  [requestId: string]: MutationSubState<D[string]> | undefined\r\n}\r\n\r\nexport type RootState<\r\n  Definitions extends EndpointDefinitions,\r\n  TagTypes extends string,\r\n  ReducerPath extends string\r\n> = {\r\n  [P in ReducerPath]: CombinedState<Definitions, TagTypes, P>\r\n}\r\n", "/**\r\n * If either :// or // is present consider it to be an absolute url\r\n *\r\n * @param url string\r\n */\r\n\r\nexport function isAbsoluteUrl(url: string) {\r\n  return new RegExp(`(^|:)//`).test(url)\r\n}\r\n", "import { isAbsoluteUrl } from './isAbsoluteUrl'\r\n\r\nconst withoutTrailingSlash = (url: string) => url.replace(/\\/$/, '')\r\nconst withoutLeadingSlash = (url: string) => url.replace(/^\\//, '')\r\n\r\nexport function joinUrls(\r\n  base: string | undefined,\r\n  url: string | undefined\r\n): string {\r\n  if (!base) {\r\n    return url!\r\n  }\r\n  if (!url) {\r\n    return base\r\n  }\r\n\r\n  if (isAbsoluteUrl(url)) {\r\n    return url\r\n  }\r\n\r\n  const delimiter = base.endsWith('/') || !url.startsWith('?') ? '/' : ''\r\n  base = withoutTrailingSlash(base)\r\n  url = withoutLeadingSlash(url)\r\n\r\n  return `${base}${delimiter}${url}`;\r\n}\r\n", "/**\r\n * Alternative to `Array.flat(1)`\r\n * @param arr An array like [1,2,3,[1,2]]\r\n * @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat\r\n */\r\nexport const flatten = (arr: readonly any[]) => [].concat(...arr)\r\n", "/**\r\n * Assumes a browser is online if `undefined`, otherwise makes a best effort\r\n * @link https://developer.mozilla.org/en-US/docs/Web/API/NavigatorOnLine/onLine\r\n */\r\nexport function isOnline() {\r\n  // We set the default config value in the store, so we'd need to check for this in a SSR env\r\n  return typeof navigator === 'undefined'\r\n    ? true\r\n    : navigator.onLine === undefined\r\n    ? true\r\n    : navigator.onLine\r\n}\r\n", "/**\r\n * Assumes true for a non-browser env, otherwise makes a best effort\r\n * @link https://developer.mozilla.org/en-US/docs/Web/API/Document/visibilityState\r\n */\r\nexport function isDocumentVisible(): boolean {\r\n  // `document` may not exist in non-browser envs (like RN)\r\n  if (typeof document === 'undefined') {\r\n    return true\r\n  }\r\n  // Match true for visible, prerender, undefined\r\n  return document.visibilityState !== 'hidden'\r\n}\r\n", "import { isPlainObject as _iPO } from '@reduxjs/toolkit'\r\n\r\n// remove type guard\r\nconst isPlainObject: (_: any) => boolean = _iPO\r\n\r\nexport function copyWithStructuralSharing<T>(oldObj: any, newObj: T): T\r\nexport function copyWithStructuralSharing(oldObj: any, newObj: any): any {\r\n  if (\r\n    oldObj === newObj ||\r\n    !(\r\n      (isPlainObject(oldObj) && isPlainObject(newObj)) ||\r\n      (Array.isArray(oldObj) && Array.isArray(newObj))\r\n    )\r\n  ) {\r\n    return newObj\r\n  }\r\n  const newKeys = Object.keys(newObj)\r\n  const oldKeys = Object.keys(oldObj)\r\n\r\n  let isSameObject = newKeys.length === oldKeys.length\r\n  const mergeObj: any = Array.isArray(newObj) ? [] : {}\r\n  for (const key of newKeys) {\r\n    mergeObj[key] = copyWithStructuralSharing(oldObj[key], newObj[key])\r\n    if (isSameObject) isSameObject = oldObj[key] === mergeObj[key]\r\n  }\r\n  return isSameObject ? oldObj : mergeObj\r\n}\r\n", "import { joinUrls } from './utils'\r\nimport { isPlainObject } from '@reduxjs/toolkit'\r\nimport type { BaseQueryApi, BaseQueryFn } from './baseQueryTypes'\r\nimport type { MaybePromise, Override } from './tsHelpers'\r\n\r\nexport type ResponseHandler =\r\n  | 'content-type'\r\n  | 'json'\r\n  | 'text'\r\n  | ((response: Response) => Promise<any>)\r\n\r\ntype CustomRequestInit = Override<\r\n  RequestInit,\r\n  {\r\n    headers?:\r\n      | Headers\r\n      | string[][]\r\n      | Record<string, string | undefined>\r\n      | undefined\r\n  }\r\n>\r\n\r\nexport interface FetchArgs extends CustomRequestInit {\r\n  url: string\r\n  params?: Record<string, any>\r\n  body?: any\r\n  responseHandler?: ResponseHandler\r\n  validateStatus?: (response: Response, body: any) => boolean\r\n  /**\r\n   * A number in milliseconds that represents that maximum time a request can take before timing out.\r\n   */\r\n  timeout?: number\r\n}\r\n\r\n/**\r\n * A mini-wrapper that passes arguments straight through to\r\n * {@link [fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)}.\r\n * Avoids storing `fetch` in a closure, in order to permit mocking/monkey-patching.\r\n */\r\nconst defaultFetchFn: typeof fetch = (...args) => fetch(...args)\r\n\r\nconst defaultValidateStatus = (response: Response) =>\r\n  response.status >= 200 && response.status <= 299\r\n\r\nconst defaultIsJsonContentType = (headers: Headers) =>\r\n  /*applicat*/ /ion\\/(vnd\\.api\\+)?json/.test(headers.get('content-type') || '')\r\n\r\nexport type FetchBaseQueryError =\r\n  | {\r\n      /**\r\n       * * `number`:\r\n       *   HTTP status code\r\n       */\r\n      status: number\r\n      data: unknown\r\n    }\r\n  | {\r\n      /**\r\n       * * `\"FETCH_ERROR\"`:\r\n       *   An error that occurred during execution of `fetch` or the `fetchFn` callback option\r\n       **/\r\n      status: 'FETCH_ERROR'\r\n      data?: undefined\r\n      error: string\r\n    }\r\n  | {\r\n      /**\r\n       * * `\"PARSING_ERROR\"`:\r\n       *   An error happened during parsing.\r\n       *   Most likely a non-JSON-response was returned with the default `responseHandler` \"JSON\",\r\n       *   or an error occurred while executing a custom `responseHandler`.\r\n       **/\r\n      status: 'PARSING_ERROR'\r\n      originalStatus: number\r\n      data: string\r\n      error: string\r\n    }\r\n  | {\r\n      /**\r\n       * * `\"TIMEOUT_ERROR\"`:\r\n       *   Request timed out\r\n       **/\r\n      status: 'TIMEOUT_ERROR'\r\n      data?: undefined\r\n      error: string\r\n    }\r\n  | {\r\n      /**\r\n       * * `\"CUSTOM_ERROR\"`:\r\n       *   A custom error type that you can return from your `queryFn` where another error might not make sense.\r\n       **/\r\n      status: 'CUSTOM_ERROR'\r\n      data?: unknown\r\n      error: string\r\n    }\r\n\r\nfunction stripUndefined(obj: any) {\r\n  if (!isPlainObject(obj)) {\r\n    return obj\r\n  }\r\n  const copy: Record<string, any> = { ...obj }\r\n  for (const [k, v] of Object.entries(copy)) {\r\n    if (v === undefined) delete copy[k]\r\n  }\r\n  return copy\r\n}\r\n\r\nexport type FetchBaseQueryArgs = {\r\n  baseUrl?: string\r\n  prepareHeaders?: (\r\n    headers: Headers,\r\n    api: Pick<\r\n      BaseQueryApi,\r\n      'getState' | 'extra' | 'endpoint' | 'type' | 'forced'\r\n    >\r\n  ) => MaybePromise<Headers | void>\r\n  fetchFn?: (\r\n    input: RequestInfo,\r\n    init?: RequestInit | undefined\r\n  ) => Promise<Response>\r\n  paramsSerializer?: (params: Record<string, any>) => string\r\n  /**\r\n   * By default, we only check for 'application/json' and 'application/vnd.api+json' as the content-types for json. If you need to support another format, you can pass\r\n   * in a predicate function for your given api to get the same automatic stringifying behavior\r\n   * @example\r\n   * ```ts\r\n   * const isJsonContentType = (headers: Headers) => [\"application/vnd.api+json\", \"application/json\", \"application/vnd.hal+json\"].includes(headers.get(\"content-type\")?.trim());\r\n   * ```\r\n   */\r\n  isJsonContentType?: (headers: Headers) => boolean\r\n  /**\r\n   * Defaults to `application/json`;\r\n   */\r\n  jsonContentType?: string\r\n} & RequestInit &\r\n  Pick<FetchArgs, 'responseHandler' | 'validateStatus' | 'timeout'>\r\n\r\nexport type FetchBaseQueryMeta = { request: Request; response?: Response }\r\n\r\n/**\r\n * This is a very small wrapper around fetch that aims to simplify requests.\r\n *\r\n * @example\r\n * ```ts\r\n * const baseQuery = fetchBaseQuery({\r\n *   baseUrl: 'https://api.your-really-great-app.com/v1/',\r\n *   prepareHeaders: (headers, { getState }) => {\r\n *     const token = (getState() as RootState).auth.token;\r\n *     // If we have a token set in state, let's assume that we should be passing it.\r\n *     if (token) {\r\n *       headers.set('authorization', `Bearer ${token}`);\r\n *     }\r\n *     return headers;\r\n *   },\r\n * })\r\n * ```\r\n *\r\n * @param {string} baseUrl\r\n * The base URL for an API service.\r\n * Typically in the format of https://example.com/\r\n *\r\n * @param {(headers: Headers, api: { getState: () => unknown; extra: unknown; endpoint: string; type: 'query' | 'mutation'; forced: boolean; }) => Headers} prepareHeaders\r\n * An optional function that can be used to inject headers on requests.\r\n * Provides a Headers object, as well as most of the `BaseQueryApi` (`dispatch` is not available).\r\n * Useful for setting authentication or headers that need to be set conditionally.\r\n *\r\n * @link https://developer.mozilla.org/en-US/docs/Web/API/Headers\r\n *\r\n * @param {(input: RequestInfo, init?: RequestInit | undefined) => Promise<Response>} fetchFn\r\n * Accepts a custom `fetch` function if you do not want to use the default on the window.\r\n * Useful in SSR environments if you need to use a library such as `isomorphic-fetch` or `cross-fetch`\r\n *\r\n * @param {(params: Record<string, unknown>) => string} paramsSerializer\r\n * An optional function that can be used to stringify querystring parameters.\r\n *\r\n * @param {(headers: Headers) => boolean} isJsonContentType\r\n * An optional predicate function to determine if `JSON.stringify()` should be called on the `body` arg of `FetchArgs`\r\n *\r\n * @param {string} jsonContentType Used when automatically setting the content-type header for a request with a jsonifiable body that does not have an explicit content-type header. Defaults to `application/json`.\r\n *\r\n * @param {number} timeout\r\n * A number in milliseconds that represents the maximum time a request can take before timing out.\r\n */\r\nexport function fetchBaseQuery({\r\n  baseUrl,\r\n  prepareHeaders = (x) => x,\r\n  fetchFn = defaultFetchFn,\r\n  paramsSerializer,\r\n  isJsonContentType = defaultIsJsonContentType,\r\n  jsonContentType = 'application/json',\r\n  timeout: defaultTimeout,\r\n  validateStatus: globalValidateStatus,\r\n  ...baseFetchOptions\r\n}: FetchBaseQueryArgs = {}): BaseQueryFn<\r\n  string | FetchArgs,\r\n  unknown,\r\n  FetchBaseQueryError,\r\n  {},\r\n  FetchBaseQueryMeta\r\n> {\r\n  if (typeof fetch === 'undefined' && fetchFn === defaultFetchFn) {\r\n    console.warn(\r\n      'Warning: `fetch` is not available. Please supply a custom `fetchFn` property to use `fetchBaseQuery` on SSR environments.'\r\n    )\r\n  }\r\n  return async (arg, api) => {\r\n    const { signal, getState, extra, endpoint, forced, type } = api\r\n    let meta: FetchBaseQueryMeta | undefined\r\n    let {\r\n      url,\r\n      method = 'GET' as const,\r\n      headers = new Headers(baseFetchOptions.headers),\r\n      body = undefined,\r\n      params = undefined,\r\n      responseHandler = 'json' as const,\r\n      validateStatus = globalValidateStatus ?? defaultValidateStatus,\r\n      timeout = defaultTimeout,\r\n      ...rest\r\n    } = typeof arg == 'string' ? { url: arg } : arg\r\n    let config: RequestInit = {\r\n      ...baseFetchOptions,\r\n      method,\r\n      signal,\r\n      body,\r\n      ...rest,\r\n    }\r\n\r\n    headers = new Headers(stripUndefined(headers))\r\n    config.headers =\r\n      (await prepareHeaders(headers, {\r\n        getState,\r\n        extra,\r\n        endpoint,\r\n        forced,\r\n        type,\r\n      })) || headers\r\n\r\n    // Only set the content-type to json if appropriate. Will not be true for FormData, ArrayBuffer, Blob, etc.\r\n    const isJsonifiable = (body: any) =>\r\n      typeof body === 'object' &&\r\n      (isPlainObject(body) ||\r\n        Array.isArray(body) ||\r\n        typeof body.toJSON === 'function')\r\n\r\n    if (!config.headers.has('content-type') && isJsonifiable(body)) {\r\n      config.headers.set('content-type', jsonContentType)\r\n    }\r\n\r\n    if (isJsonifiable(body) && isJsonContentType(config.headers)) {\r\n      config.body = JSON.stringify(body)\r\n    }\r\n\r\n    if (params) {\r\n      const divider = ~url.indexOf('?') ? '&' : '?'\r\n      const query = paramsSerializer\r\n        ? paramsSerializer(params)\r\n        : new URLSearchParams(stripUndefined(params))\r\n      url += divider + query\r\n    }\r\n\r\n    url = joinUrls(baseUrl, url)\r\n\r\n    const request = new Request(url, config)\r\n    const requestClone = request.clone()\r\n    meta = { request: requestClone }\r\n\r\n    let response,\r\n      timedOut = false,\r\n      timeoutId =\r\n        timeout &&\r\n        setTimeout(() => {\r\n          timedOut = true\r\n          api.abort()\r\n        }, timeout)\r\n    try {\r\n      response = await fetchFn(request)\r\n    } catch (e) {\r\n      return {\r\n        error: {\r\n          status: timedOut ? 'TIMEOUT_ERROR' : 'FETCH_ERROR',\r\n          error: String(e),\r\n        },\r\n        meta,\r\n      }\r\n    } finally {\r\n      if (timeoutId) clearTimeout(timeoutId)\r\n    }\r\n    const responseClone = response.clone()\r\n\r\n    meta.response = responseClone\r\n\r\n    let resultData: any\r\n    let responseText: string = ''\r\n    try {\r\n      let handleResponseError\r\n      await Promise.all([\r\n        handleResponse(response, responseHandler).then(\r\n          (r) => (resultData = r),\r\n          (e) => (handleResponseError = e)\r\n        ),\r\n        // see https://github.com/node-fetch/node-fetch/issues/665#issuecomment-538995182\r\n        // we *have* to \"use up\" both streams at the same time or they will stop running in node-fetch scenarios\r\n        responseClone.text().then(\r\n          (r) => (responseText = r),\r\n          () => {}\r\n        ),\r\n      ])\r\n      if (handleResponseError) throw handleResponseError\r\n    } catch (e) {\r\n      return {\r\n        error: {\r\n          status: 'PARSING_ERROR',\r\n          originalStatus: response.status,\r\n          data: responseText,\r\n          error: String(e),\r\n        },\r\n        meta,\r\n      }\r\n    }\r\n\r\n    return validateStatus(response, resultData)\r\n      ? {\r\n          data: resultData,\r\n          meta,\r\n        }\r\n      : {\r\n          error: {\r\n            status: response.status,\r\n            data: resultData,\r\n          },\r\n          meta,\r\n        }\r\n  }\r\n\r\n  async function handleResponse(\r\n    response: Response,\r\n    responseHandler: ResponseHandler\r\n  ) {\r\n    if (typeof responseHandler === 'function') {\r\n      return responseHandler(response)\r\n    }\r\n\r\n    if (responseHandler === 'content-type') {\r\n      responseHandler = isJsonContentType(response.headers) ? 'json' : 'text'\r\n    }\r\n\r\n    if (responseHandler === 'json') {\r\n      const text = await response.text()\r\n      return text.length ? JSON.parse(text) : null\r\n    }\r\n\r\n    return response.text()\r\n  }\r\n}\r\n", "export class HandledError {\r\n  constructor(\r\n    public readonly value: any,\r\n    public readonly meta: any = undefined\r\n  ) {}\r\n}\r\n", "import type {\r\n  BaseQueryApi,\r\n  BaseQueryArg,\r\n  BaseQueryEnhancer,\r\n  BaseQueryExtraOptions,\r\n  BaseQueryFn,\r\n} from './baseQueryTypes'\r\nimport { FetchBaseQueryError } from './fetchBaseQuery'\r\nimport { HandledError } from './HandledError'\r\n\r\n/**\r\n * Exponential backoff based on the attempt number.\r\n *\r\n * @remarks\r\n * 1. 600ms * random(0.4, 1.4)\r\n * 2. 1200ms * random(0.4, 1.4)\r\n * 3. 2400ms * random(0.4, 1.4)\r\n * 4. 4800ms * random(0.4, 1.4)\r\n * 5. 9600ms * random(0.4, 1.4)\r\n *\r\n * @param attempt - Current attempt\r\n * @param maxRetries - Maximum number of retries\r\n */\r\nasync function defaultBackoff(attempt: number = 0, maxRetries: number = 5) {\r\n  const attempts = Math.min(attempt, maxRetries)\r\n\r\n  const timeout = ~~((Math.random() + 0.4) * (300 << attempts)) // Force a positive int in the case we make this an option\r\n  await new Promise((resolve) =>\r\n    setTimeout((res: any) => resolve(res), timeout)\r\n  )\r\n}\r\n\r\ntype RetryConditionFunction = (\r\n  error: FetchBaseQueryError,\r\n  args: BaseQueryArg<BaseQueryFn>,\r\n  extraArgs: {\r\n    attempt: number\r\n    baseQueryApi: BaseQueryApi\r\n    extraOptions: BaseQueryExtraOptions<BaseQueryFn> & RetryOptions\r\n  }\r\n) => boolean\r\n\r\nexport type RetryOptions = {\r\n  /**\r\n   * Function used to determine delay between retries\r\n   */\r\n  backoff?: (attempt: number, maxRetries: number) => Promise<void>\r\n} & (\r\n  | {\r\n      /**\r\n       * How many times the query will be retried (default: 5)\r\n       */\r\n      maxRetries?: number\r\n      retryCondition?: undefined\r\n    }\r\n  | {\r\n      /**\r\n       * Callback to determine if a retry should be attempted.\r\n       * Return `true` for another retry and `false` to quit trying prematurely.\r\n       */\r\n      retryCondition?: RetryConditionFunction\r\n      maxRetries?: undefined\r\n    }\r\n)\r\n\r\nfunction fail(e: any): never {\r\n  throw Object.assign(new HandledError({ error: e }), {\r\n    throwImmediately: true,\r\n  })\r\n}\r\n\r\nconst EMPTY_OPTIONS = {}\r\n\r\nconst retryWithBackoff: BaseQueryEnhancer<\r\n  unknown,\r\n  RetryOptions,\r\n  RetryOptions | void\r\n> = (baseQuery, defaultOptions) => async (args, api, extraOptions) => {\r\n  // We need to figure out `maxRetries` before we define `defaultRetryCondition.\r\n  // This is probably goofy, but ought to work.\r\n  // Put our defaults in one array, filter out undefineds, grab the last value.\r\n  const possibleMaxRetries: number[] = [\r\n    5,\r\n    ((defaultOptions as any) || EMPTY_OPTIONS).maxRetries,\r\n    ((extraOptions as any) || EMPTY_OPTIONS).maxRetries,\r\n  ].filter(x => x !== undefined)\r\n  const [maxRetries] = possibleMaxRetries.slice(-1)\r\n\r\n  const defaultRetryCondition: RetryConditionFunction = (_, __, { attempt }) =>\r\n    attempt <= maxRetries\r\n\r\n  const options: {\r\n    maxRetries: number\r\n    backoff: typeof defaultBackoff\r\n    retryCondition: typeof defaultRetryCondition\r\n  } = {\r\n    maxRetries,\r\n    backoff: defaultBackoff,\r\n    retryCondition: defaultRetryCondition,\r\n    ...defaultOptions,\r\n    ...extraOptions,\r\n  }\r\n  let retry = 0\r\n\r\n  while (true) {\r\n    try {\r\n      const result = await baseQuery(args, api, extraOptions)\r\n      // baseQueries _should_ return an error property, so we should check for that and throw it to continue retrying\r\n      if (result.error) {\r\n        throw new HandledError(result)\r\n      }\r\n      return result\r\n    } catch (e: any) {\r\n      retry++\r\n\r\n      if (e.throwImmediately) {\r\n        if (e instanceof HandledError) {\r\n          return e.value\r\n        }\r\n\r\n        // We don't know what this is, so we have to rethrow it\r\n        throw e\r\n      }\r\n\r\n      if (\r\n        e instanceof HandledError &&\r\n        !options.retryCondition(e.value.error as FetchBaseQueryError, args, {\r\n          attempt: retry,\r\n          baseQueryApi: api,\r\n          extraOptions,\r\n        })\r\n      ) {\r\n        return e.value\r\n      }\r\n      await options.backoff(retry, options.maxRetries)\r\n    }\r\n  }\r\n}\r\n\r\n/**\r\n * A utility that can wrap `baseQuery` in the API definition to provide retries with a basic exponential backoff.\r\n *\r\n * @example\r\n *\r\n * ```ts\r\n * // codeblock-meta title=\"Retry every request 5 times by default\"\r\n * import { createApi, fetchBaseQuery, retry } from '@reduxjs/toolkit/query/react'\r\n * interface Post {\r\n *   id: number\r\n *   name: string\r\n * }\r\n * type PostsResponse = Post[]\r\n *\r\n * // maxRetries: 5 is the default, and can be omitted. Shown for documentation purposes.\r\n * const staggeredBaseQuery = retry(fetchBaseQuery({ baseUrl: '/' }), { maxRetries: 5 });\r\n * export const api = createApi({\r\n *   baseQuery: staggeredBaseQuery,\r\n *   endpoints: (build) => ({\r\n *     getPosts: build.query<PostsResponse, void>({\r\n *       query: () => ({ url: 'posts' }),\r\n *     }),\r\n *     getPost: build.query<PostsResponse, string>({\r\n *       query: (id) => ({ url: `post/${id}` }),\r\n *       extraOptions: { maxRetries: 8 }, // You can override the retry behavior on each endpoint\r\n *     }),\r\n *   }),\r\n * });\r\n *\r\n * export const { useGetPostsQuery, useGetPostQuery } = api;\r\n * ```\r\n */\r\nexport const retry = /* @__PURE__ */ Object.assign(retryWithBackoff, { fail })\r\n", "import type {\r\n  ThunkDispatch,\r\n  ActionCreatorWithoutPayload, // Workaround for API-Extractor\r\n} from '@reduxjs/toolkit'\r\nimport { createAction } from '@reduxjs/toolkit'\r\n\r\nexport const onFocus = /* @__PURE__ */ createAction('__rtkq/focused')\r\nexport const onFocusLost = /* @__PURE__ */ createAction('__rtkq/unfocused')\r\nexport const onOnline = /* @__PURE__ */ createAction('__rtkq/online')\r\nexport const onOffline = /* @__PURE__ */ createAction('__rtkq/offline')\r\n\r\nlet initialized = false\r\n\r\n/**\r\n * A utility used to enable `refetchOnMount` and `refetchOnReconnect` behaviors.\r\n * It requires the dispatch method from your store.\r\n * Calling `setupListeners(store.dispatch)` will configure listeners with the recommended defaults,\r\n * but you have the option of providing a callback for more granular control.\r\n *\r\n * @example\r\n * ```ts\r\n * setupListeners(store.dispatch)\r\n * ```\r\n *\r\n * @param dispatch - The dispatch method from your store\r\n * @param customHandler - An optional callback for more granular control over listener behavior\r\n * @returns Return value of the handler.\r\n * The default handler returns an `unsubscribe` method that can be called to remove the listeners.\r\n */\r\nexport function setupListeners(\r\n  dispatch: ThunkDispatch<any, any, any>,\r\n  customHandler?: (\r\n    dispatch: ThunkDispatch<any, any, any>,\r\n    actions: {\r\n      onFocus: typeof onFocus\r\n      onFocusLost: typeof onFocusLost\r\n      onOnline: typeof onOnline\r\n      onOffline: typeof onOffline\r\n    }\r\n  ) => () => void\r\n) {\r\n  function defaultHandler() {\r\n    const handleFocus = () => dispatch(onFocus())\r\n    const handleFocusLost = () => dispatch(onFocusLost())\r\n    const handleOnline = () => dispatch(onOnline())\r\n    const handleOffline = () => dispatch(onOffline())\r\n    const handleVisibilityChange = () => {\r\n      if (window.document.visibilityState === 'visible') {\r\n        handleFocus()\r\n      } else {\r\n        handleFocusLost()\r\n      }\r\n    }\r\n\r\n    if (!initialized) {\r\n      if (typeof window !== 'undefined' && window.addEventListener) {\r\n        // Handle focus events\r\n        window.addEventListener(\r\n          'visibilitychange',\r\n          handleVisibilityChange,\r\n          false\r\n        )\r\n        window.addEventListener('focus', handleFocus, false)\r\n\r\n        // Handle connection events\r\n        window.addEventListener('online', handleOnline, false)\r\n        window.addEventListener('offline', handleOffline, false)\r\n        initialized = true\r\n      }\r\n    }\r\n    const unsubscribe = () => {\r\n      window.removeEventListener('focus', handleFocus)\r\n      window.removeEventListener('visibilitychange', handleVisibilityChange)\r\n      window.removeEventListener('online', handleOnline)\r\n      window.removeEventListener('offline', handleOffline)\r\n      initialized = false\r\n    }\r\n    return unsubscribe\r\n  }\r\n\r\n  return customHandler\r\n    ? customHandler(dispatch, { onFocus, onFocusLost, onOffline, onOnline })\r\n    : defaultHandler()\r\n}\r\n", "import { createNextState, createSelector } from '@reduxjs/toolkit'\r\nimport type {\r\n  MutationSubState,\r\n  QuerySubState,\r\n  RootState as _RootState,\r\n  RequestStatusFlags,\r\n  QueryCacheKey,\r\n} from './apiState'\r\nimport { QueryStatus, getRequestStatusFlags } from './apiState'\r\nimport type {\r\n  EndpointDefinitions,\r\n  QueryDefinition,\r\n  MutationDefinition,\r\n  QueryArgFrom,\r\n  TagTypesFrom,\r\n  ReducerPathFrom,\r\n  TagDescription,\r\n} from '../endpointDefinitions'\r\nimport { expandTagDescription } from '../endpointDefinitions'\r\nimport type { InternalSerializeQueryArgs } from '../defaultSerializeQueryArgs'\r\nimport { getMutationCacheKey } from './buildSlice'\r\nimport { flatten } from '../utils'\r\n\r\nexport type SkipToken = typeof skipToken\r\n/**\r\n * Can be passed into `useQuery`, `useQueryState` or `useQuerySubscription`\r\n * instead of the query argument to get the same effect as if setting\r\n * `skip: true` in the query options.\r\n *\r\n * Useful for scenarios where a query should be skipped when `arg` is `undefined`\r\n * and TypeScript complains about it because `arg` is not allowed to be passed\r\n * in as `undefined`, such as\r\n *\r\n * ```ts\r\n * // codeblock-meta title=\"will error if the query argument is not allowed to be undefined\" no-transpile\r\n * useSomeQuery(arg, { skip: !!arg })\r\n * ```\r\n *\r\n * ```ts\r\n * // codeblock-meta title=\"using skipToken instead\" no-transpile\r\n * useSomeQuery(arg ?? skipToken)\r\n * ```\r\n *\r\n * If passed directly into a query or mutation selector, that selector will always\r\n * return an uninitialized state.\r\n */\r\nexport const skipToken = /* @__PURE__ */ Symbol.for('RTKQ/skipToken')\r\n/** @deprecated renamed to `skipToken` */\r\nexport const skipSelector = skipToken\r\n\r\ndeclare module './module' {\r\n  export interface ApiEndpointQuery<\r\n    Definition extends QueryDefinition<any, any, any, any, any>,\r\n    Definitions extends EndpointDefinitions\r\n  > {\r\n    select: QueryResultSelectorFactory<\r\n      Definition,\r\n      _RootState<\r\n        Definitions,\r\n        TagTypesFrom<Definition>,\r\n        ReducerPathFrom<Definition>\r\n      >\r\n    >\r\n  }\r\n\r\n  export interface ApiEndpointMutation<\r\n    Definition extends MutationDefinition<any, any, any, any, any>,\r\n    Definitions extends EndpointDefinitions\r\n  > {\r\n    select: MutationResultSelectorFactory<\r\n      Definition,\r\n      _RootState<\r\n        Definitions,\r\n        TagTypesFrom<Definition>,\r\n        ReducerPathFrom<Definition>\r\n      >\r\n    >\r\n  }\r\n}\r\n\r\ntype QueryResultSelectorFactory<\r\n  Definition extends QueryDefinition<any, any, any, any>,\r\n  RootState\r\n> = (\r\n  queryArg: QueryArgFrom<Definition> | SkipToken\r\n) => (state: RootState) => QueryResultSelectorResult<Definition>\r\n\r\nexport type QueryResultSelectorResult<\r\n  Definition extends QueryDefinition<any, any, any, any>\r\n> = QuerySubState<Definition> & RequestStatusFlags\r\n\r\ntype MutationResultSelectorFactory<\r\n  Definition extends MutationDefinition<any, any, any, any>,\r\n  RootState\r\n> = (\r\n  requestId:\r\n    | string\r\n    | { requestId: string | undefined; fixedCacheKey: string | undefined }\r\n    | SkipToken\r\n) => (state: RootState) => MutationResultSelectorResult<Definition>\r\n\r\nexport type MutationResultSelectorResult<\r\n  Definition extends MutationDefinition<any, any, any, any>\r\n> = MutationSubState<Definition> & RequestStatusFlags\r\n\r\nconst initialSubState: QuerySubState<any> = {\r\n  status: QueryStatus.uninitialized as const,\r\n}\r\n\r\n// abuse immer to freeze default states\r\nconst defaultQuerySubState = /* @__PURE__ */ createNextState(\r\n  initialSubState,\r\n  () => {}\r\n)\r\nconst defaultMutationSubState = /* @__PURE__ */ createNextState(\r\n  initialSubState as MutationSubState<any>,\r\n  () => {}\r\n)\r\n\r\nexport function buildSelectors<\r\n  Definitions extends EndpointDefinitions,\r\n  ReducerPath extends string\r\n>({\r\n  serializeQueryArgs,\r\n  reducerPath,\r\n}: {\r\n  serializeQueryArgs: InternalSerializeQueryArgs\r\n  reducerPath: ReducerPath\r\n}) {\r\n  type RootState = _RootState<Definitions, string, string>\r\n\r\n  const selectSkippedQuery = (state: RootState) => defaultQuerySubState\r\n  const selectSkippedMutation = (state: RootState) => defaultMutationSubState\r\n\r\n  return { buildQuerySelector, buildMutationSelector, selectInvalidatedBy }\r\n\r\n  function withRequestFlags<T extends { status: QueryStatus }>(\r\n    substate: T\r\n  ): T & RequestStatusFlags {\r\n    return {\r\n      ...substate,\r\n      ...getRequestStatusFlags(substate.status),\r\n    }\r\n  }\r\n\r\n  function selectInternalState(rootState: RootState) {\r\n    const state = rootState[reducerPath]\r\n    if (process.env.NODE_ENV !== 'production') {\r\n      if (!state) {\r\n        if ((selectInternalState as any).triggered) return state\r\n        ;(selectInternalState as any).triggered = true\r\n        console.error(\r\n          `Error: No data found at \\`state.${reducerPath}\\`. Did you forget to add the reducer to the store?`\r\n        )\r\n      }\r\n    }\r\n    return state\r\n  }\r\n\r\n  function buildQuerySelector(\r\n    endpointName: string,\r\n    endpointDefinition: QueryDefinition<any, any, any, any>\r\n  ) {\r\n    return ((queryArgs: any) => {\r\n      const serializedArgs = serializeQueryArgs({\r\n        queryArgs,\r\n        endpointDefinition,\r\n        endpointName,\r\n      })\r\n      const selectQuerySubstate = (state: RootState) =>\r\n        selectInternalState(state)?.queries?.[serializedArgs] ??\r\n        defaultQuerySubState\r\n      const finalSelectQuerySubState =\r\n        queryArgs === skipToken ? selectSkippedQuery : selectQuerySubstate\r\n\r\n      return createSelector(finalSelectQuerySubState, withRequestFlags)\r\n    }) as QueryResultSelectorFactory<any, RootState>\r\n  }\r\n\r\n  function buildMutationSelector() {\r\n    return ((id) => {\r\n      let mutationId: string | typeof skipToken\r\n      if (typeof id === 'object') {\r\n        mutationId = getMutationCacheKey(id) ?? skipToken\r\n      } else {\r\n        mutationId = id\r\n      }\r\n      const selectMutationSubstate = (state: RootState) =>\r\n        selectInternalState(state)?.mutations?.[mutationId as string] ??\r\n        defaultMutationSubState\r\n      const finalSelectMutationSubstate =\r\n        mutationId === skipToken\r\n          ? selectSkippedMutation\r\n          : selectMutationSubstate\r\n\r\n      return createSelector(finalSelectMutationSubstate, withRequestFlags)\r\n    }) as MutationResultSelectorFactory<any, RootState>\r\n  }\r\n\r\n  function selectInvalidatedBy(\r\n    state: RootState,\r\n    tags: ReadonlyArray<TagDescription<string>>\r\n  ): Array<{\r\n    endpointName: string\r\n    originalArgs: any\r\n    queryCacheKey: QueryCacheKey\r\n  }> {\r\n    const apiState = state[reducerPath]\r\n    const toInvalidate = new Set<QueryCacheKey>()\r\n    for (const tag of tags.map(expandTagDescription)) {\r\n      const provided = apiState.provided[tag.type]\r\n      if (!provided) {\r\n        continue\r\n      }\r\n\r\n      let invalidateSubscriptions =\r\n        (tag.id !== undefined\r\n          ? // id given: invalidate all queries that provide this type & id\r\n            provided[tag.id]\r\n          : // no id: invalidate all queries that provide this type\r\n            flatten(Object.values(provided))) ?? []\r\n\r\n      for (const invalidate of invalidateSubscriptions) {\r\n        toInvalidate.add(invalidate)\r\n      }\r\n    }\r\n\r\n    return flatten(\r\n      Array.from(toInvalidate.values()).map((queryCacheKey) => {\r\n        const querySubState = apiState.queries[queryCacheKey]\r\n        return querySubState\r\n          ? [\r\n              {\r\n                queryCacheKey,\r\n                endpointName: querySubState.endpointName!,\r\n                originalArgs: querySubState.originalArgs,\r\n              },\r\n            ]\r\n          : []\r\n      })\r\n    )\r\n  }\r\n}\r\n", "import type { AnyAction, ThunkDispatch } from '@reduxjs/toolkit'\r\nimport { SerializeQueryArgs } from './defaultSerializeQueryArgs'\r\nimport type { QuerySubState, RootState } from './core/apiState'\r\nimport type {\r\n  BaseQueryExtraOptions,\r\n  BaseQueryFn,\r\n  BaseQueryResult,\r\n  BaseQueryArg,\r\n  BaseQueryApi,\r\n  QueryReturnValue,\r\n  BaseQueryError,\r\n  BaseQueryMeta,\r\n} from './baseQueryTypes'\r\nimport type {\r\n  HasRequiredProps,\r\n  MaybePromise,\r\n  OmitFromUnion,\r\n  CastAny,\r\n} from './tsHelpers'\r\nimport type { NEVER } from './fakeBaseQuery'\r\n\r\nconst resultType = /* @__PURE__ */ Symbol()\r\nconst baseQuery = /* @__PURE__ */ Symbol()\r\n\r\ninterface EndpointDefinitionWithQuery<\r\n  QueryArg,\r\n  BaseQuery extends BaseQueryFn,\r\n  ResultType\r\n> {\r\n  /**\r\n   * `query` can be a function that returns either a `string` or an `object` which is passed to your `baseQuery`. If you are using [fetchBaseQuery](./fetchBaseQuery), this can return either a `string` or an `object` of properties in `FetchArgs`. If you use your own custom [`baseQuery`](../../rtk-query/usage/customizing-queries), you can customize this behavior to your liking.\r\n   *\r\n   * @example\r\n   *\r\n   * ```ts\r\n   * // codeblock-meta title=\"query example\"\r\n   *\r\n   * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\r\n   * interface Post {\r\n   *   id: number\r\n   *   name: string\r\n   * }\r\n   * type PostsResponse = Post[]\r\n   *\r\n   * const api = createApi({\r\n   *   baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n   *   tagTypes: ['Post'],\r\n   *   endpoints: (build) => ({\r\n   *     getPosts: build.query<PostsResponse, void>({\r\n   *       // highlight-start\r\n   *       query: () => 'posts',\r\n   *       // highlight-end\r\n   *     }),\r\n   *     addPost: build.mutation<Post, Partial<Post>>({\r\n   *      // highlight-start\r\n   *      query: (body) => ({\r\n   *        url: `posts`,\r\n   *        method: 'POST',\r\n   *        body,\r\n   *      }),\r\n   *      // highlight-end\r\n   *      invalidatesTags: [{ type: 'Post', id: 'LIST' }],\r\n   *    }),\r\n   *   })\r\n   * })\r\n   * ```\r\n   */\r\n  query(arg: QueryArg): BaseQueryArg<BaseQuery>\r\n  queryFn?: never\r\n  /**\r\n   * A function to manipulate the data returned by a query or mutation.\r\n   */\r\n  transformResponse?(\r\n    baseQueryReturnValue: BaseQueryResult<BaseQuery>,\r\n    meta: BaseQueryMeta<BaseQuery>,\r\n    arg: QueryArg\r\n  ): ResultType | Promise<ResultType>\r\n  /**\r\n   * A function to manipulate the data returned by a failed query or mutation.\r\n   */\r\n  transformErrorResponse?(\r\n    baseQueryReturnValue: BaseQueryError<BaseQuery>,\r\n    meta: BaseQueryMeta<BaseQuery>,\r\n    arg: QueryArg\r\n  ): unknown\r\n  /**\r\n   * Defaults to `true`.\r\n   *\r\n   * Most apps should leave this setting on. The only time it can be a performance issue\r\n   * is if an API returns extremely large amounts of data (e.g. 10,000 rows per request) and\r\n   * you're unable to paginate it.\r\n   *\r\n   * For details of how this works, please see the below. When it is set to `false`,\r\n   * every request will cause subscribed components to rerender, even when the data has not changed.\r\n   *\r\n   * @see https://redux-toolkit.js.org/api/other-exports#copywithstructuralsharing\r\n   */\r\n  structuralSharing?: boolean\r\n}\r\n\r\ninterface EndpointDefinitionWithQueryFn<\r\n  QueryArg,\r\n  BaseQuery extends BaseQueryFn,\r\n  ResultType\r\n> {\r\n  /**\r\n   * Can be used in place of `query` as an inline function that bypasses `baseQuery` completely for the endpoint.\r\n   *\r\n   * @example\r\n   * ```ts\r\n   * // codeblock-meta title=\"Basic queryFn example\"\r\n   *\r\n   * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\r\n   * interface Post {\r\n   *   id: number\r\n   *   name: string\r\n   * }\r\n   * type PostsResponse = Post[]\r\n   *\r\n   * const api = createApi({\r\n   *   baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n   *   endpoints: (build) => ({\r\n   *     getPosts: build.query<PostsResponse, void>({\r\n   *       query: () => 'posts',\r\n   *     }),\r\n   *     flipCoin: build.query<'heads' | 'tails', void>({\r\n   *       // highlight-start\r\n   *       queryFn(arg, queryApi, extraOptions, baseQuery) {\r\n   *         const randomVal = Math.random()\r\n   *         if (randomVal < 0.45) {\r\n   *           return { data: 'heads' }\r\n   *         }\r\n   *         if (randomVal < 0.9) {\r\n   *           return { data: 'tails' }\r\n   *         }\r\n   *         return { error: { status: 500, statusText: 'Internal Server Error', data: \"Coin landed on it's edge!\" } }\r\n   *       }\r\n   *       // highlight-end\r\n   *     })\r\n   *   })\r\n   * })\r\n   * ```\r\n   */\r\n  queryFn(\r\n    arg: QueryArg,\r\n    api: BaseQueryApi,\r\n    extraOptions: BaseQueryExtraOptions<BaseQuery>,\r\n    baseQuery: (arg: Parameters<BaseQuery>[0]) => ReturnType<BaseQuery>\r\n  ): MaybePromise<QueryReturnValue<ResultType, BaseQueryError<BaseQuery>>>\r\n  query?: never\r\n  transformResponse?: never\r\n  transformErrorResponse?: never\r\n  /**\r\n   * Defaults to `true`.\r\n   *\r\n   * Most apps should leave this setting on. The only time it can be a performance issue\r\n   * is if an API returns extremely large amounts of data (e.g. 10,000 rows per request) and\r\n   * you're unable to paginate it.\r\n   *\r\n   * For details of how this works, please see the below. When it is set to `false`,\r\n   * every request will cause subscribed components to rerender, even when the data has not changed.\r\n   *\r\n   * @see https://redux-toolkit.js.org/api/other-exports#copywithstructuralsharing\r\n   */\r\n  structuralSharing?: boolean\r\n}\r\n\r\nexport interface BaseEndpointTypes<\r\n  QueryArg,\r\n  BaseQuery extends BaseQueryFn,\r\n  ResultType\r\n> {\r\n  QueryArg: QueryArg\r\n  BaseQuery: BaseQuery\r\n  ResultType: ResultType\r\n}\r\n\r\nexport type BaseEndpointDefinition<\r\n  QueryArg,\r\n  BaseQuery extends BaseQueryFn,\r\n  ResultType\r\n> = (\r\n  | ([CastAny<BaseQueryResult<BaseQuery>, {}>] extends [NEVER]\r\n      ? never\r\n      : EndpointDefinitionWithQuery<QueryArg, BaseQuery, ResultType>)\r\n  | EndpointDefinitionWithQueryFn<QueryArg, BaseQuery, ResultType>\r\n) & {\r\n  /* phantom type */\r\n  [resultType]?: ResultType\r\n  /* phantom type */\r\n  [baseQuery]?: BaseQuery\r\n} & HasRequiredProps<\r\n    BaseQueryExtraOptions<BaseQuery>,\r\n    { extraOptions: BaseQueryExtraOptions<BaseQuery> },\r\n    { extraOptions?: BaseQueryExtraOptions<BaseQuery> }\r\n  >\r\n\r\nexport enum DefinitionType {\r\n  query = 'query',\r\n  mutation = 'mutation',\r\n}\r\n\r\nexport type GetResultDescriptionFn<\r\n  TagTypes extends string,\r\n  ResultType,\r\n  QueryArg,\r\n  ErrorType,\r\n  MetaType\r\n> = (\r\n  result: ResultType | undefined,\r\n  error: ErrorType | undefined,\r\n  arg: QueryArg,\r\n  meta: MetaType\r\n) => ReadonlyArray<TagDescription<TagTypes>>\r\n\r\nexport type FullTagDescription<TagType> = {\r\n  type: TagType\r\n  id?: number | string\r\n}\r\nexport type TagDescription<TagType> = TagType | FullTagDescription<TagType>\r\nexport type ResultDescription<\r\n  TagTypes extends string,\r\n  ResultType,\r\n  QueryArg,\r\n  ErrorType,\r\n  MetaType\r\n> =\r\n  | ReadonlyArray<TagDescription<TagTypes>>\r\n  | GetResultDescriptionFn<TagTypes, ResultType, QueryArg, ErrorType, MetaType>\r\n\r\n/** @deprecated please use `onQueryStarted` instead */\r\nexport interface QueryApi<ReducerPath extends string, Context extends {}> {\r\n  /** @deprecated please use `onQueryStarted` instead */\r\n  dispatch: ThunkDispatch<any, any, AnyAction>\r\n  /** @deprecated please use `onQueryStarted` instead */\r\n  getState(): RootState<any, any, ReducerPath>\r\n  /** @deprecated please use `onQueryStarted` instead */\r\n  extra: unknown\r\n  /** @deprecated please use `onQueryStarted` instead */\r\n  requestId: string\r\n  /** @deprecated please use `onQueryStarted` instead */\r\n  context: Context\r\n}\r\n\r\nexport interface QueryTypes<\r\n  QueryArg,\r\n  BaseQuery extends BaseQueryFn,\r\n  TagTypes extends string,\r\n  ResultType,\r\n  ReducerPath extends string = string\r\n> extends BaseEndpointTypes<QueryArg, BaseQuery, ResultType> {\r\n  /**\r\n   * The endpoint definition type. To be used with some internal generic types.\r\n   * @example\r\n   * ```ts\r\n   * const useMyWrappedHook: UseQuery<typeof api.endpoints.query.Types.QueryDefinition> = ...\r\n   * ```\r\n   */\r\n  QueryDefinition: QueryDefinition<\r\n    QueryArg,\r\n    BaseQuery,\r\n    TagTypes,\r\n    ResultType,\r\n    ReducerPath\r\n  >\r\n  TagTypes: TagTypes\r\n  ReducerPath: ReducerPath\r\n}\r\n\r\nexport interface QueryExtraOptions<\r\n  TagTypes extends string,\r\n  ResultType,\r\n  QueryArg,\r\n  BaseQuery extends BaseQueryFn,\r\n  ReducerPath extends string = string\r\n> {\r\n  type: DefinitionType.query\r\n  /**\r\n   * Used by `query` endpoints. Determines which 'tag' is attached to the cached data returned by the query.\r\n   * Expects an array of tag type strings, an array of objects of tag types with ids, or a function that returns such an array.\r\n   * 1.  `['Post']` - equivalent to `2`\r\n   * 2.  `[{ type: 'Post' }]` - equivalent to `1`\r\n   * 3.  `[{ type: 'Post', id: 1 }]`\r\n   * 4.  `(result, error, arg) => ['Post']` - equivalent to `5`\r\n   * 5.  `(result, error, arg) => [{ type: 'Post' }]` - equivalent to `4`\r\n   * 6.  `(result, error, arg) => [{ type: 'Post', id: 1 }]`\r\n   *\r\n   * @example\r\n   *\r\n   * ```ts\r\n   * // codeblock-meta title=\"providesTags example\"\r\n   *\r\n   * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\r\n   * interface Post {\r\n   *   id: number\r\n   *   name: string\r\n   * }\r\n   * type PostsResponse = Post[]\r\n   *\r\n   * const api = createApi({\r\n   *   baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n   *   tagTypes: ['Posts'],\r\n   *   endpoints: (build) => ({\r\n   *     getPosts: build.query<PostsResponse, void>({\r\n   *       query: () => 'posts',\r\n   *       // highlight-start\r\n   *       providesTags: (result) =>\r\n   *         result\r\n   *           ? [\r\n   *               ...result.map(({ id }) => ({ type: 'Posts' as const, id })),\r\n   *               { type: 'Posts', id: 'LIST' },\r\n   *             ]\r\n   *           : [{ type: 'Posts', id: 'LIST' }],\r\n   *       // highlight-end\r\n   *     })\r\n   *   })\r\n   * })\r\n   * ```\r\n   */\r\n  providesTags?: ResultDescription<\r\n    TagTypes,\r\n    ResultType,\r\n    QueryArg,\r\n    BaseQueryError<BaseQuery>,\r\n    BaseQueryMeta<BaseQuery>\r\n  >\r\n  /**\r\n   * Not to be used. A query should not invalidate tags in the cache.\r\n   */\r\n  invalidatesTags?: never\r\n\r\n  /**\r\n   * Can be provided to return a custom cache key value based on the query arguments.\r\n   *\r\n   * This is primarily intended for cases where a non-serializable value is passed as part of the query arg object and should be excluded from the cache key.  It may also be used for cases where an endpoint should only have a single cache entry, such as an infinite loading / pagination implementation.\r\n   *\r\n   * Unlike the `createApi` version which can _only_ return a string, this per-endpoint option can also return an an object, number, or boolean.  If it returns a string, that value will be used as the cache key directly.  If it returns an object / number / boolean, that value will be passed to the built-in `defaultSerializeQueryArgs`.  This simplifies the use case of stripping out args you don't want included in the cache key.\r\n   *\r\n   *\r\n   * @example\r\n   *\r\n   * ```ts\r\n   * // codeblock-meta title=\"serializeQueryArgs : exclude value\"\r\n   *\r\n   * import { createApi, fetchBaseQuery, defaultSerializeQueryArgs } from '@reduxjs/toolkit/query/react'\r\n   * interface Post {\r\n   *   id: number\r\n   *   name: string\r\n   * }\r\n   *\r\n   * interface MyApiClient {\r\n   *   fetchPost: (id: string) => Promise<Post>\r\n   * }\r\n   *\r\n   * createApi({\r\n   *  baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n   *  endpoints: (build) => ({\r\n   *    // Example: an endpoint with an API client passed in as an argument,\r\n   *    // but only the item ID should be used as the cache key\r\n   *    getPost: build.query<Post, { id: string; client: MyApiClient }>({\r\n   *      queryFn: async ({ id, client }) => {\r\n   *        const post = await client.fetchPost(id)\r\n   *        return { data: post }\r\n   *      },\r\n   *      // highlight-start\r\n   *      serializeQueryArgs: ({ queryArgs, endpointDefinition, endpointName }) => {\r\n   *        const { id } = queryArgs\r\n   *        // This can return a string, an object, a number, or a boolean.\r\n   *        // If it returns an object, number or boolean, that value\r\n   *        // will be serialized automatically via `defaultSerializeQueryArgs`\r\n   *        return { id } // omit `client` from the cache key\r\n   *\r\n   *        // Alternately, you can use `defaultSerializeQueryArgs` yourself:\r\n   *        // return defaultSerializeQueryArgs({\r\n   *        //   endpointName,\r\n   *        //   queryArgs: { id },\r\n   *        //   endpointDefinition\r\n   *        // })\r\n   *        // Or  create and return a string yourself:\r\n   *        // return `getPost(${id})`\r\n   *      },\r\n   *      // highlight-end\r\n   *    }),\r\n   *  }),\r\n   *})\r\n   * ```\r\n   */\r\n  serializeQueryArgs?: SerializeQueryArgs<\r\n    QueryArg,\r\n    string | number | boolean | Record<any, any>\r\n  >\r\n\r\n  /**\r\n   * Can be provided to merge an incoming response value into the current cache data.\r\n   * If supplied, no automatic structural sharing will be applied - it's up to\r\n   * you to update the cache appropriately.\r\n   *\r\n   * Since RTKQ normally replaces cache entries with the new response, you will usually\r\n   * need to use this with the `serializeQueryArgs` or `forceRefetch` options to keep\r\n   * an existing cache entry so that it can be updated.\r\n   *\r\n   * Since this is wrapped with Immer, you , you may either mutate the `currentCacheValue` directly,\r\n   * or return a new value, but _not_ both at once.\r\n   *\r\n   * Will only be called if the existing `currentCacheData` is _not_ `undefined` - on first response,\r\n   * the cache entry will just save the response data directly.\r\n   *\r\n   * Useful if you don't want a new request to completely override the current cache value,\r\n   * maybe because you have manually updated it from another source and don't want those\r\n   * updates to get lost.\r\n   *\r\n   *\r\n   * @example\r\n   *\r\n   * ```ts\r\n   * // codeblock-meta title=\"merge: pagination\"\r\n   *\r\n   * import { createApi, fetchBaseQuery, defaultSerializeQueryArgs } from '@reduxjs/toolkit/query/react'\r\n   * interface Post {\r\n   *   id: number\r\n   *   name: string\r\n   * }\r\n   *\r\n   * createApi({\r\n   *  baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n   *  endpoints: (build) => ({\r\n   *    listItems: build.query<string[], number>({\r\n   *      query: (pageNumber) => `/listItems?page=${pageNumber}`,\r\n   *     // Only have one cache entry because the arg always maps to one string\r\n   *     serializeQueryArgs: ({ endpointName }) => {\r\n   *       return endpointName\r\n   *      },\r\n   *      // Always merge incoming data to the cache entry\r\n   *      merge: (currentCache, newItems) => {\r\n   *        currentCache.push(...newItems)\r\n   *      },\r\n   *      // Refetch when the page arg changes\r\n   *      forceRefetch({ currentArg, previousArg }) {\r\n   *        return currentArg !== previousArg\r\n   *      },\r\n   *    }),\r\n   *  }),\r\n   *})\r\n   * ```\r\n   */\r\n  merge?(\r\n    currentCacheData: ResultType,\r\n    responseData: ResultType,\r\n    otherArgs: {\r\n      arg: QueryArg\r\n      baseQueryMeta: BaseQueryMeta<BaseQuery>\r\n      requestId: string\r\n      fulfilledTimeStamp: number\r\n    }\r\n  ): ResultType | void\r\n\r\n  /**\r\n   * Check to see if the endpoint should force a refetch in cases where it normally wouldn't.\r\n   * This is primarily useful for \"infinite scroll\" / pagination use cases where\r\n   * RTKQ is keeping a single cache entry that is added to over time, in combination\r\n   * with `serializeQueryArgs` returning a fixed cache key and a `merge` callback\r\n   * set to add incoming data to the cache entry each time.\r\n   *\r\n   * @example\r\n   *\r\n   * ```ts\r\n   * // codeblock-meta title=\"forceRefresh: pagination\"\r\n   *\r\n   * import { createApi, fetchBaseQuery, defaultSerializeQueryArgs } from '@reduxjs/toolkit/query/react'\r\n   * interface Post {\r\n   *   id: number\r\n   *   name: string\r\n   * }\r\n   *\r\n   * createApi({\r\n   *  baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n   *  endpoints: (build) => ({\r\n   *    listItems: build.query<string[], number>({\r\n   *      query: (pageNumber) => `/listItems?page=${pageNumber}`,\r\n   *     // Only have one cache entry because the arg always maps to one string\r\n   *     serializeQueryArgs: ({ endpointName }) => {\r\n   *       return endpointName\r\n   *      },\r\n   *      // Always merge incoming data to the cache entry\r\n   *      merge: (currentCache, newItems) => {\r\n   *        currentCache.push(...newItems)\r\n   *      },\r\n   *      // Refetch when the page arg changes\r\n   *      forceRefetch({ currentArg, previousArg }) {\r\n   *        return currentArg !== previousArg\r\n   *      },\r\n   *    }),\r\n   *  }),\r\n   *})\r\n   * ```\r\n   */\r\n  forceRefetch?(params: {\r\n    currentArg: QueryArg | undefined\r\n    previousArg: QueryArg | undefined\r\n    state: RootState<any, any, string>\r\n    endpointState?: QuerySubState<any>\r\n  }): boolean\r\n\r\n  /**\r\n   * All of these are `undefined` at runtime, purely to be used in TypeScript declarations!\r\n   */\r\n  Types?: QueryTypes<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>\r\n}\r\n\r\nexport type QueryDefinition<\r\n  QueryArg,\r\n  BaseQuery extends BaseQueryFn,\r\n  TagTypes extends string,\r\n  ResultType,\r\n  ReducerPath extends string = string\r\n> = BaseEndpointDefinition<QueryArg, BaseQuery, ResultType> &\r\n  QueryExtraOptions<TagTypes, ResultType, QueryArg, BaseQuery, ReducerPath>\r\n\r\nexport interface MutationTypes<\r\n  QueryArg,\r\n  BaseQuery extends BaseQueryFn,\r\n  TagTypes extends string,\r\n  ResultType,\r\n  ReducerPath extends string = string\r\n> extends BaseEndpointTypes<QueryArg, BaseQuery, ResultType> {\r\n  /**\r\n   * The endpoint definition type. To be used with some internal generic types.\r\n   * @example\r\n   * ```ts\r\n   * const useMyWrappedHook: UseMutation<typeof api.endpoints.query.Types.MutationDefinition> = ...\r\n   * ```\r\n   */\r\n  MutationDefinition: MutationDefinition<\r\n    QueryArg,\r\n    BaseQuery,\r\n    TagTypes,\r\n    ResultType,\r\n    ReducerPath\r\n  >\r\n  TagTypes: TagTypes\r\n  ReducerPath: ReducerPath\r\n}\r\n\r\nexport interface MutationExtraOptions<\r\n  TagTypes extends string,\r\n  ResultType,\r\n  QueryArg,\r\n  BaseQuery extends BaseQueryFn,\r\n  ReducerPath extends string = string\r\n> {\r\n  type: DefinitionType.mutation\r\n  /**\r\n   * Used by `mutation` endpoints. Determines which cached data should be either re-fetched or removed from the cache.\r\n   * Expects the same shapes as `providesTags`.\r\n   *\r\n   * @example\r\n   *\r\n   * ```ts\r\n   * // codeblock-meta title=\"invalidatesTags example\"\r\n   * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\r\n   * interface Post {\r\n   *   id: number\r\n   *   name: string\r\n   * }\r\n   * type PostsResponse = Post[]\r\n   *\r\n   * const api = createApi({\r\n   *   baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n   *   tagTypes: ['Posts'],\r\n   *   endpoints: (build) => ({\r\n   *     getPosts: build.query<PostsResponse, void>({\r\n   *       query: () => 'posts',\r\n   *       providesTags: (result) =>\r\n   *         result\r\n   *           ? [\r\n   *               ...result.map(({ id }) => ({ type: 'Posts' as const, id })),\r\n   *               { type: 'Posts', id: 'LIST' },\r\n   *             ]\r\n   *           : [{ type: 'Posts', id: 'LIST' }],\r\n   *     }),\r\n   *     addPost: build.mutation<Post, Partial<Post>>({\r\n   *       query(body) {\r\n   *         return {\r\n   *           url: `posts`,\r\n   *           method: 'POST',\r\n   *           body,\r\n   *         }\r\n   *       },\r\n   *       // highlight-start\r\n   *       invalidatesTags: [{ type: 'Posts', id: 'LIST' }],\r\n   *       // highlight-end\r\n   *     }),\r\n   *   })\r\n   * })\r\n   * ```\r\n   */\r\n  invalidatesTags?: ResultDescription<\r\n    TagTypes,\r\n    ResultType,\r\n    QueryArg,\r\n    BaseQueryError<BaseQuery>,\r\n    BaseQueryMeta<BaseQuery>\r\n  >\r\n  /**\r\n   * Not to be used. A mutation should not provide tags to the cache.\r\n   */\r\n  providesTags?: never\r\n\r\n  /**\r\n   * All of these are `undefined` at runtime, purely to be used in TypeScript declarations!\r\n   */\r\n  Types?: MutationTypes<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>\r\n}\r\n\r\nexport type MutationDefinition<\r\n  QueryArg,\r\n  BaseQuery extends BaseQueryFn,\r\n  TagTypes extends string,\r\n  ResultType,\r\n  ReducerPath extends string = string\r\n> = BaseEndpointDefinition<QueryArg, BaseQuery, ResultType> &\r\n  MutationExtraOptions<TagTypes, ResultType, QueryArg, BaseQuery, ReducerPath>\r\n\r\nexport type EndpointDefinition<\r\n  QueryArg,\r\n  BaseQuery extends BaseQueryFn,\r\n  TagTypes extends string,\r\n  ResultType,\r\n  ReducerPath extends string = string\r\n> =\r\n  | QueryDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>\r\n  | MutationDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>\r\n\r\nexport type EndpointDefinitions = Record<\r\n  string,\r\n  EndpointDefinition<any, any, any, any>\r\n>\r\n\r\nexport function isQueryDefinition(\r\n  e: EndpointDefinition<any, any, any, any>\r\n): e is QueryDefinition<any, any, any, any> {\r\n  return e.type === DefinitionType.query\r\n}\r\n\r\nexport function isMutationDefinition(\r\n  e: EndpointDefinition<any, any, any, any>\r\n): e is MutationDefinition<any, any, any, any> {\r\n  return e.type === DefinitionType.mutation\r\n}\r\n\r\nexport type EndpointBuilder<\r\n  BaseQuery extends BaseQueryFn,\r\n  TagTypes extends string,\r\n  ReducerPath extends string\r\n> = {\r\n  /**\r\n   * An endpoint definition that retrieves data, and may provide tags to the cache.\r\n   *\r\n   * @example\r\n   * ```js\r\n   * // codeblock-meta title=\"Example of all query endpoint options\"\r\n   * const api = createApi({\r\n   *  baseQuery,\r\n   *  endpoints: (build) => ({\r\n   *    getPost: build.query({\r\n   *      query: (id) => ({ url: `post/${id}` }),\r\n   *      // Pick out data and prevent nested properties in a hook or selector\r\n   *      transformResponse: (response) => response.data,\r\n   *      // Pick out error and prevent nested properties in a hook or selector\r\n   *      transformErrorResponse: (response) => response.error,\r\n   *      // `result` is the server response\r\n   *      providesTags: (result, error, id) => [{ type: 'Post', id }],\r\n   *      // trigger side effects or optimistic updates\r\n   *      onQueryStarted(id, { dispatch, getState, extra, requestId, queryFulfilled, getCacheEntry, updateCachedData }) {},\r\n   *      // handle subscriptions etc\r\n   *      onCacheEntryAdded(id, { dispatch, getState, extra, requestId, cacheEntryRemoved, cacheDataLoaded, getCacheEntry, updateCachedData }) {},\r\n   *    }),\r\n   *  }),\r\n   *});\r\n   *```\r\n   */\r\n  query<ResultType, QueryArg>(\r\n    definition: OmitFromUnion<\r\n      QueryDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>,\r\n      'type'\r\n    >\r\n  ): QueryDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>\r\n  /**\r\n   * An endpoint definition that alters data on the server or will possibly invalidate the cache.\r\n   *\r\n   * @example\r\n   * ```js\r\n   * // codeblock-meta title=\"Example of all mutation endpoint options\"\r\n   * const api = createApi({\r\n   *   baseQuery,\r\n   *   endpoints: (build) => ({\r\n   *     updatePost: build.mutation({\r\n   *       query: ({ id, ...patch }) => ({ url: `post/${id}`, method: 'PATCH', body: patch }),\r\n   *       // Pick out data and prevent nested properties in a hook or selector\r\n   *       transformResponse: (response) => response.data,\r\n   *       // Pick out error and prevent nested properties in a hook or selector\r\n   *       transformErrorResponse: (response) => response.error,\r\n   *       // `result` is the server response\r\n   *       invalidatesTags: (result, error, id) => [{ type: 'Post', id }],\r\n   *      // trigger side effects or optimistic updates\r\n   *      onQueryStarted(id, { dispatch, getState, extra, requestId, queryFulfilled, getCacheEntry }) {},\r\n   *      // handle subscriptions etc\r\n   *      onCacheEntryAdded(id, { dispatch, getState, extra, requestId, cacheEntryRemoved, cacheDataLoaded, getCacheEntry }) {},\r\n   *     }),\r\n   *   }),\r\n   * });\r\n   * ```\r\n   */\r\n  mutation<ResultType, QueryArg>(\r\n    definition: OmitFromUnion<\r\n      MutationDefinition<\r\n        QueryArg,\r\n        BaseQuery,\r\n        TagTypes,\r\n        ResultType,\r\n        ReducerPath\r\n      >,\r\n      'type'\r\n    >\r\n  ): MutationDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>\r\n}\r\n\r\nexport type AssertTagTypes = <T extends FullTagDescription<string>>(t: T) => T\r\n\r\nexport function calculateProvidedBy<ResultType, QueryArg, ErrorType, MetaType>(\r\n  description:\r\n    | ResultDescription<string, ResultType, QueryArg, ErrorType, MetaType>\r\n    | undefined,\r\n  result: ResultType | undefined,\r\n  error: ErrorType | undefined,\r\n  queryArg: QueryArg,\r\n  meta: MetaType | undefined,\r\n  assertTagTypes: AssertTagTypes\r\n): readonly FullTagDescription<string>[] {\r\n  if (isFunction(description)) {\r\n    return description(\r\n      result as ResultType,\r\n      error as undefined,\r\n      queryArg,\r\n      meta as MetaType\r\n    )\r\n      .map(expandTagDescription)\r\n      .map(assertTagTypes)\r\n  }\r\n  if (Array.isArray(description)) {\r\n    return description.map(expandTagDescription).map(assertTagTypes)\r\n  }\r\n  return []\r\n}\r\n\r\nfunction isFunction<T>(t: T): t is Extract<T, Function> {\r\n  return typeof t === 'function'\r\n}\r\n\r\nexport function expandTagDescription(\r\n  description: TagDescription<string>\r\n): FullTagDescription<string> {\r\n  return typeof description === 'string' ? { type: description } : description\r\n}\r\n\r\nexport type QueryArgFrom<D extends BaseEndpointDefinition<any, any, any>> =\r\n  D extends BaseEndpointDefinition<infer QA, any, any> ? QA : unknown\r\nexport type ResultTypeFrom<D extends BaseEndpointDefinition<any, any, any>> =\r\n  D extends BaseEndpointDefinition<any, any, infer RT> ? RT : unknown\r\n\r\nexport type ReducerPathFrom<\r\n  D extends EndpointDefinition<any, any, any, any, any>\r\n> = D extends EndpointDefinition<any, any, any, any, infer RP> ? RP : unknown\r\n\r\nexport type TagTypesFrom<D extends EndpointDefinition<any, any, any, any>> =\r\n  D extends EndpointDefinition<any, any, infer RP, any> ? RP : unknown\r\n\r\nexport type ReplaceTagTypes<\r\n  Definitions extends EndpointDefinitions,\r\n  NewTagTypes extends string\r\n> = {\r\n  [K in keyof Definitions]: Definitions[K] extends QueryDefinition<\r\n    infer QueryArg,\r\n    infer BaseQuery,\r\n    any,\r\n    infer ResultType,\r\n    infer ReducerPath\r\n  >\r\n    ? QueryDefinition<QueryArg, BaseQuery, NewTagTypes, ResultType, ReducerPath>\r\n    : Definitions[K] extends MutationDefinition<\r\n        infer QueryArg,\r\n        infer BaseQuery,\r\n        any,\r\n        infer ResultType,\r\n        infer ReducerPath\r\n      >\r\n    ? MutationDefinition<\r\n        QueryArg,\r\n        BaseQuery,\r\n        NewTagTypes,\r\n        ResultType,\r\n        ReducerPath\r\n      >\r\n    : never\r\n}\r\n", "import type { AnyAction, PayloadAction } from '@reduxjs/toolkit'\r\nimport {\r\n  combineReducers,\r\n  createAction,\r\n  createSlice,\r\n  isAnyOf,\r\n  isFulfilled,\r\n  isRejectedWithValue,\r\n  createNextState,\r\n  prepareAutoBatched,\r\n} from '@reduxjs/toolkit'\r\nimport type {\r\n  CombinedState as CombinedQueryState,\r\n  QuerySubstateIdentifier,\r\n  QuerySubState,\r\n  MutationSubstateIdentifier,\r\n  MutationSubState,\r\n  MutationState,\r\n  QueryState,\r\n  InvalidationState,\r\n  Subscribers,\r\n  QueryCacheKey,\r\n  SubscriptionState,\r\n  ConfigState,\r\n} from './apiState'\r\nimport { QueryStatus } from './apiState'\r\nimport type { MutationThunk, QueryThunk, RejectedAction } from './buildThunks'\r\nimport { calculateProvidedByThunk } from './buildThunks'\r\nimport type {\r\n  AssertTagTypes,\r\n  EndpointDefinitions,\r\n  QueryDefinition,\r\n} from '../endpointDefinitions'\r\nimport type { Patch } from 'immer'\r\nimport { applyPatches } from 'immer'\r\nimport { onFocus, onFocusLost, onOffline, onOnline } from './setupListeners'\r\nimport {\r\n  isDocumentVisible,\r\n  isOnline,\r\n  copyWithStructuralSharing,\r\n} from '../utils'\r\nimport type { ApiContext } from '../apiTypes'\r\nimport { isUpsertQuery } from './buildInitiate'\r\n\r\nfunction updateQuerySubstateIfExists(\r\n  state: QueryState<any>,\r\n  queryCacheKey: QueryCacheKey,\r\n  update: (substate: QuerySubState<any>) => void\r\n) {\r\n  const substate = state[queryCacheKey]\r\n  if (substate) {\r\n    update(substate)\r\n  }\r\n}\r\n\r\nexport function getMutationCacheKey(\r\n  id:\r\n    | MutationSubstateIdentifier\r\n    | { requestId: string; arg: { fixedCacheKey?: string | undefined } }\r\n): string\r\nexport function getMutationCacheKey(id: {\r\n  fixedCacheKey?: string\r\n  requestId?: string\r\n}): string | undefined\r\n\r\nexport function getMutationCacheKey(\r\n  id:\r\n    | { fixedCacheKey?: string; requestId?: string }\r\n    | MutationSubstateIdentifier\r\n    | { requestId: string; arg: { fixedCacheKey?: string | undefined } }\r\n): string | undefined {\r\n  return ('arg' in id ? id.arg.fixedCacheKey : id.fixedCacheKey) ?? id.requestId\r\n}\r\n\r\nfunction updateMutationSubstateIfExists(\r\n  state: MutationState<any>,\r\n  id:\r\n    | MutationSubstateIdentifier\r\n    | { requestId: string; arg: { fixedCacheKey?: string | undefined } },\r\n  update: (substate: MutationSubState<any>) => void\r\n) {\r\n  const substate = state[getMutationCacheKey(id)]\r\n  if (substate) {\r\n    update(substate)\r\n  }\r\n}\r\n\r\nconst initialState = {} as any\r\n\r\nexport function buildSlice({\r\n  reducerPath,\r\n  queryThunk,\r\n  mutationThunk,\r\n  context: {\r\n    endpointDefinitions: definitions,\r\n    apiUid,\r\n    extractRehydrationInfo,\r\n    hasRehydrationInfo,\r\n  },\r\n  assertTagType,\r\n  config,\r\n}: {\r\n  reducerPath: string\r\n  queryThunk: QueryThunk\r\n  mutationThunk: MutationThunk\r\n  context: ApiContext<EndpointDefinitions>\r\n  assertTagType: AssertTagTypes\r\n  config: Omit<\r\n    ConfigState<string>,\r\n    'online' | 'focused' | 'middlewareRegistered'\r\n  >\r\n}) {\r\n  const resetApiState = createAction(`${reducerPath}/resetApiState`)\r\n  const querySlice = createSlice({\r\n    name: `${reducerPath}/queries`,\r\n    initialState: initialState as QueryState<any>,\r\n    reducers: {\r\n      removeQueryResult: {\r\n        reducer(\r\n          draft,\r\n          { payload: { queryCacheKey } }: PayloadAction<QuerySubstateIdentifier>\r\n        ) {\r\n          delete draft[queryCacheKey]\r\n        },\r\n        prepare: prepareAutoBatched<QuerySubstateIdentifier>(),\r\n      },\r\n      queryResultPatched(\r\n        draft,\r\n        {\r\n          payload: { queryCacheKey, patches },\r\n        }: PayloadAction<\r\n          QuerySubstateIdentifier & { patches: readonly Patch[] }\r\n        >\r\n      ) {\r\n        updateQuerySubstateIfExists(draft, queryCacheKey, (substate) => {\r\n          substate.data = applyPatches(substate.data as any, patches.concat())\r\n        })\r\n      },\r\n    },\r\n    extraReducers(builder) {\r\n      builder\r\n        .addCase(queryThunk.pending, (draft, { meta, meta: { arg } }) => {\r\n          const upserting = isUpsertQuery(arg)\r\n          if (arg.subscribe || upserting) {\r\n            // only initialize substate if we want to subscribe to it\r\n            draft[arg.queryCacheKey] ??= {\r\n              status: QueryStatus.uninitialized,\r\n              endpointName: arg.endpointName,\r\n            }\r\n          }\r\n\r\n          updateQuerySubstateIfExists(draft, arg.queryCacheKey, (substate) => {\r\n            substate.status = QueryStatus.pending\r\n\r\n            substate.requestId =\r\n              upserting && substate.requestId\r\n                ? // for `upsertQuery` **updates**, keep the current `requestId`\r\n                  substate.requestId\r\n                : // for normal queries or `upsertQuery` **inserts** always update the `requestId`\r\n                  meta.requestId\r\n            if (arg.originalArgs !== undefined) {\r\n              substate.originalArgs = arg.originalArgs\r\n            }\r\n            substate.startedTimeStamp = meta.startedTimeStamp\r\n          })\r\n        })\r\n        .addCase(queryThunk.fulfilled, (draft, { meta, payload }) => {\r\n          updateQuerySubstateIfExists(\r\n            draft,\r\n            meta.arg.queryCacheKey,\r\n            (substate) => {\r\n              if (\r\n                substate.requestId !== meta.requestId &&\r\n                !isUpsertQuery(meta.arg)\r\n              )\r\n                return\r\n              const { merge } = definitions[\r\n                meta.arg.endpointName\r\n              ] as QueryDefinition<any, any, any, any>\r\n              substate.status = QueryStatus.fulfilled\r\n\r\n              if (merge) {\r\n                if (substate.data !== undefined) {\r\n                  const { fulfilledTimeStamp, arg, baseQueryMeta, requestId } =\r\n                    meta\r\n                  // There's existing cache data. Let the user merge it in themselves.\r\n                  // We're already inside an Immer-powered reducer, and the user could just mutate `substate.data`\r\n                  // themselves inside of `merge()`. But, they might also want to return a new value.\r\n                  // Try to let Immer figure that part out, save the result, and assign it to `substate.data`.\r\n                  let newData = createNextState(\r\n                    substate.data,\r\n                    (draftSubstateData) => {\r\n                      // As usual with Immer, you can mutate _or_ return inside here, but not both\r\n                      return merge(draftSubstateData, payload, {\r\n                        arg: arg.originalArgs,\r\n                        baseQueryMeta,\r\n                        fulfilledTimeStamp,\r\n                        requestId,\r\n                      })\r\n                    }\r\n                  )\r\n                  substate.data = newData\r\n                } else {\r\n                  // Presumably a fresh request. Just cache the response data.\r\n                  substate.data = payload\r\n                }\r\n              } else {\r\n                // Assign or safely update the cache data.\r\n                substate.data =\r\n                  definitions[meta.arg.endpointName].structuralSharing ?? true\r\n                    ? copyWithStructuralSharing(substate.data, payload)\r\n                    : payload\r\n              }\r\n\r\n              delete substate.error\r\n              substate.fulfilledTimeStamp = meta.fulfilledTimeStamp\r\n            }\r\n          )\r\n        })\r\n        .addCase(\r\n          queryThunk.rejected,\r\n          (draft, { meta: { condition, arg, requestId }, error, payload }) => {\r\n            updateQuerySubstateIfExists(\r\n              draft,\r\n              arg.queryCacheKey,\r\n              (substate) => {\r\n                if (condition) {\r\n                  // request was aborted due to condition (another query already running)\r\n                } else {\r\n                  // request failed\r\n                  if (substate.requestId !== requestId) return\r\n                  substate.status = QueryStatus.rejected\r\n                  substate.error = (payload ?? error) as any\r\n                }\r\n              }\r\n            )\r\n          }\r\n        )\r\n        .addMatcher(hasRehydrationInfo, (draft, action) => {\r\n          const { queries } = extractRehydrationInfo(action)!\r\n          for (const [key, entry] of Object.entries(queries)) {\r\n            if (\r\n              // do not rehydrate entries that were currently in flight.\r\n              entry?.status === QueryStatus.fulfilled ||\r\n              entry?.status === QueryStatus.rejected\r\n            ) {\r\n              draft[key] = entry\r\n            }\r\n          }\r\n        })\r\n    },\r\n  })\r\n  const mutationSlice = createSlice({\r\n    name: `${reducerPath}/mutations`,\r\n    initialState: initialState as MutationState<any>,\r\n    reducers: {\r\n      removeMutationResult: {\r\n        reducer(draft, { payload }: PayloadAction<MutationSubstateIdentifier>) {\r\n          const cacheKey = getMutationCacheKey(payload)\r\n          if (cacheKey in draft) {\r\n            delete draft[cacheKey]\r\n          }\r\n        },\r\n        prepare: prepareAutoBatched<MutationSubstateIdentifier>(),\r\n      },\r\n    },\r\n    extraReducers(builder) {\r\n      builder\r\n        .addCase(\r\n          mutationThunk.pending,\r\n          (draft, { meta, meta: { requestId, arg, startedTimeStamp } }) => {\r\n            if (!arg.track) return\r\n\r\n            draft[getMutationCacheKey(meta)] = {\r\n              requestId,\r\n              status: QueryStatus.pending,\r\n              endpointName: arg.endpointName,\r\n              startedTimeStamp,\r\n            }\r\n          }\r\n        )\r\n        .addCase(mutationThunk.fulfilled, (draft, { payload, meta }) => {\r\n          if (!meta.arg.track) return\r\n\r\n          updateMutationSubstateIfExists(draft, meta, (substate) => {\r\n            if (substate.requestId !== meta.requestId) return\r\n            substate.status = QueryStatus.fulfilled\r\n            substate.data = payload\r\n            substate.fulfilledTimeStamp = meta.fulfilledTimeStamp\r\n          })\r\n        })\r\n        .addCase(mutationThunk.rejected, (draft, { payload, error, meta }) => {\r\n          if (!meta.arg.track) return\r\n\r\n          updateMutationSubstateIfExists(draft, meta, (substate) => {\r\n            if (substate.requestId !== meta.requestId) return\r\n\r\n            substate.status = QueryStatus.rejected\r\n            substate.error = (payload ?? error) as any\r\n          })\r\n        })\r\n        .addMatcher(hasRehydrationInfo, (draft, action) => {\r\n          const { mutations } = extractRehydrationInfo(action)!\r\n          for (const [key, entry] of Object.entries(mutations)) {\r\n            if (\r\n              // do not rehydrate entries that were currently in flight.\r\n              (entry?.status === QueryStatus.fulfilled ||\r\n                entry?.status === QueryStatus.rejected) &&\r\n              // only rehydrate endpoints that were persisted using a `fixedCacheKey`\r\n              key !== entry?.requestId\r\n            ) {\r\n              draft[key] = entry\r\n            }\r\n          }\r\n        })\r\n    },\r\n  })\r\n\r\n  const invalidationSlice = createSlice({\r\n    name: `${reducerPath}/invalidation`,\r\n    initialState: initialState as InvalidationState<string>,\r\n    reducers: {},\r\n    extraReducers(builder) {\r\n      builder\r\n        .addCase(\r\n          querySlice.actions.removeQueryResult,\r\n          (draft, { payload: { queryCacheKey } }) => {\r\n            for (const tagTypeSubscriptions of Object.values(draft)) {\r\n              for (const idSubscriptions of Object.values(\r\n                tagTypeSubscriptions\r\n              )) {\r\n                const foundAt = idSubscriptions.indexOf(queryCacheKey)\r\n                if (foundAt !== -1) {\r\n                  idSubscriptions.splice(foundAt, 1)\r\n                }\r\n              }\r\n            }\r\n          }\r\n        )\r\n        .addMatcher(hasRehydrationInfo, (draft, action) => {\r\n          const { provided } = extractRehydrationInfo(action)!\r\n          for (const [type, incomingTags] of Object.entries(provided)) {\r\n            for (const [id, cacheKeys] of Object.entries(incomingTags)) {\r\n              const subscribedQueries = ((draft[type] ??= {})[\r\n                id || '__internal_without_id'\r\n              ] ??= [])\r\n              for (const queryCacheKey of cacheKeys) {\r\n                const alreadySubscribed =\r\n                  subscribedQueries.includes(queryCacheKey)\r\n                if (!alreadySubscribed) {\r\n                  subscribedQueries.push(queryCacheKey)\r\n                }\r\n              }\r\n            }\r\n          }\r\n        })\r\n        .addMatcher(\r\n          isAnyOf(isFulfilled(queryThunk), isRejectedWithValue(queryThunk)),\r\n          (draft, action) => {\r\n            const providedTags = calculateProvidedByThunk(\r\n              action,\r\n              'providesTags',\r\n              definitions,\r\n              assertTagType\r\n            )\r\n            const { queryCacheKey } = action.meta.arg\r\n\r\n            for (const tagTypeSubscriptions of Object.values(draft)) {\r\n              for (const idSubscriptions of Object.values(\r\n                tagTypeSubscriptions\r\n              )) {\r\n                const foundAt = idSubscriptions.indexOf(queryCacheKey)\r\n                if (foundAt !== -1) {\r\n                  idSubscriptions.splice(foundAt, 1)\r\n                }\r\n              }\r\n            }\r\n\r\n            for (const { type, id } of providedTags) {\r\n              const subscribedQueries = ((draft[type] ??= {})[\r\n                id || '__internal_without_id'\r\n              ] ??= [])\r\n              const alreadySubscribed =\r\n                subscribedQueries.includes(queryCacheKey)\r\n              if (!alreadySubscribed) {\r\n                subscribedQueries.push(queryCacheKey)\r\n              }\r\n            }\r\n          }\r\n        )\r\n    },\r\n  })\r\n\r\n  // Dummy slice to generate actions\r\n  const subscriptionSlice = createSlice({\r\n    name: `${reducerPath}/subscriptions`,\r\n    initialState: initialState as SubscriptionState,\r\n    reducers: {\r\n      updateSubscriptionOptions(\r\n        d,\r\n        a: PayloadAction<\r\n          {\r\n            endpointName: string\r\n            requestId: string\r\n            options: Subscribers[number]\r\n          } & QuerySubstateIdentifier\r\n        >\r\n      ) {\r\n        // Dummy\r\n      },\r\n      unsubscribeQueryResult(\r\n        d,\r\n        a: PayloadAction<{ requestId: string } & QuerySubstateIdentifier>\r\n      ) {\r\n        // Dummy\r\n      },\r\n      internal_probeSubscription(\r\n        d,\r\n        a: PayloadAction<{ queryCacheKey: string; requestId: string }>\r\n      ) {\r\n        // dummy\r\n      },\r\n    },\r\n  })\r\n\r\n  const internalSubscriptionsSlice = createSlice({\r\n    name: `${reducerPath}/internalSubscriptions`,\r\n    initialState: initialState as SubscriptionState,\r\n    reducers: {\r\n      subscriptionsUpdated(state, action: PayloadAction<Patch[]>) {\r\n        return applyPatches(state, action.payload)\r\n      },\r\n    },\r\n  })\r\n\r\n  const configSlice = createSlice({\r\n    name: `${reducerPath}/config`,\r\n    initialState: {\r\n      online: isOnline(),\r\n      focused: isDocumentVisible(),\r\n      middlewareRegistered: false,\r\n      ...config,\r\n    } as ConfigState<string>,\r\n    reducers: {\r\n      middlewareRegistered(state, { payload }: PayloadAction<string>) {\r\n        state.middlewareRegistered =\r\n          state.middlewareRegistered === 'conflict' || apiUid !== payload\r\n            ? 'conflict'\r\n            : true\r\n      },\r\n    },\r\n    extraReducers: (builder) => {\r\n      builder\r\n        .addCase(onOnline, (state) => {\r\n          state.online = true\r\n        })\r\n        .addCase(onOffline, (state) => {\r\n          state.online = false\r\n        })\r\n        .addCase(onFocus, (state) => {\r\n          state.focused = true\r\n        })\r\n        .addCase(onFocusLost, (state) => {\r\n          state.focused = false\r\n        })\r\n        // update the state to be a new object to be picked up as a \"state change\"\r\n        // by redux-persist's `autoMergeLevel2`\r\n        .addMatcher(hasRehydrationInfo, (draft) => ({ ...draft }))\r\n    },\r\n  })\r\n\r\n  const combinedReducer = combineReducers<\r\n    CombinedQueryState<any, string, string>\r\n  >({\r\n    queries: querySlice.reducer,\r\n    mutations: mutationSlice.reducer,\r\n    provided: invalidationSlice.reducer,\r\n    subscriptions: internalSubscriptionsSlice.reducer,\r\n    config: configSlice.reducer,\r\n  })\r\n\r\n  const reducer: typeof combinedReducer = (state, action) =>\r\n    combinedReducer(resetApiState.match(action) ? undefined : state, action)\r\n\r\n  const actions = {\r\n    ...configSlice.actions,\r\n    ...querySlice.actions,\r\n    ...subscriptionSlice.actions,\r\n    ...internalSubscriptionsSlice.actions,\r\n    ...mutationSlice.actions,\r\n    /** @deprecated has been renamed to `removeMutationResult` */\r\n    unsubscribeMutationResult: mutationSlice.actions.removeMutationResult,\r\n    resetApiState,\r\n  }\r\n\r\n  return { reducer, actions }\r\n}\r\nexport type SliceActions = ReturnType<typeof buildSlice>['actions']\r\n", "export function isNotNullish<T>(v: T | null | undefined): v is T {\r\n  return v != null\r\n}\r\n", "import type {\r\n  EndpointDefinitions,\r\n  QueryDefinition,\r\n  MutationDefinition,\r\n  QueryArgFrom,\r\n  ResultTypeFrom,\r\n} from '../endpointDefinitions'\r\nimport { DefinitionType, isQueryDefinition } from '../endpointDefinitions'\r\nimport type { QueryThunk, MutationThunk, QueryThunkArg } from './buildThunks'\r\nimport type { AnyAction, ThunkAction, SerializedError } from '@reduxjs/toolkit'\r\nimport type { SubscriptionOptions, RootState } from './apiState'\r\nimport type { InternalSerializeQueryArgs } from '../defaultSerializeQueryArgs'\r\nimport type { Api, ApiContext } from '../apiTypes'\r\nimport type { ApiEndpointQuery } from './module'\r\nimport type { BaseQueryError, QueryReturnValue } from '../baseQueryTypes'\r\nimport type { QueryResultSelectorResult } from './buildSelectors'\r\nimport type { Dispatch } from 'redux'\r\nimport { isNotNullish } from '../utils/isNotNullish'\r\n\r\ndeclare module './module' {\r\n  export interface ApiEndpointQuery<\r\n    Definition extends QueryDefinition<any, any, any, any, any>,\r\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n    Definitions extends EndpointDefinitions\r\n  > {\r\n    initiate: StartQueryActionCreator<Definition>\r\n  }\r\n\r\n  export interface ApiEndpointMutation<\r\n    Definition extends MutationDefinition<any, any, any, any, any>,\r\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n    Definitions extends EndpointDefinitions\r\n  > {\r\n    initiate: StartMutationActionCreator<Definition>\r\n  }\r\n}\r\n\r\nexport const forceQueryFnSymbol = Symbol('forceQueryFn')\r\nexport const isUpsertQuery = (arg: QueryThunkArg) =>\r\n  typeof arg[forceQueryFnSymbol] === 'function'\r\n\r\nexport interface StartQueryActionCreatorOptions {\r\n  subscribe?: boolean\r\n  forceRefetch?: boolean | number\r\n  subscriptionOptions?: SubscriptionOptions\r\n  [forceQueryFnSymbol]?: () => QueryReturnValue\r\n}\r\n\r\ntype StartQueryActionCreator<\r\n  D extends QueryDefinition<any, any, any, any, any>\r\n> = (\r\n  arg: QueryArgFrom<D>,\r\n  options?: StartQueryActionCreatorOptions\r\n) => ThunkAction<QueryActionCreatorResult<D>, any, any, AnyAction>\r\n\r\nexport type QueryActionCreatorResult<\r\n  D extends QueryDefinition<any, any, any, any>\r\n> = Promise<QueryResultSelectorResult<D>> & {\r\n  arg: QueryArgFrom<D>\r\n  requestId: string\r\n  subscriptionOptions: SubscriptionOptions | undefined\r\n  abort(): void\r\n  unwrap(): Promise<ResultTypeFrom<D>>\r\n  unsubscribe(): void\r\n  refetch(): QueryActionCreatorResult<D>\r\n  updateSubscriptionOptions(options: SubscriptionOptions): void\r\n  queryCacheKey: string\r\n}\r\n\r\ntype StartMutationActionCreator<\r\n  D extends MutationDefinition<any, any, any, any>\r\n> = (\r\n  arg: QueryArgFrom<D>,\r\n  options?: {\r\n    /**\r\n     * If this mutation should be tracked in the store.\r\n     * If you just want to manually trigger this mutation using `dispatch` and don't care about the\r\n     * result, state & potential errors being held in store, you can set this to false.\r\n     * (defaults to `true`)\r\n     */\r\n    track?: boolean\r\n    fixedCacheKey?: string\r\n  }\r\n) => ThunkAction<MutationActionCreatorResult<D>, any, any, AnyAction>\r\n\r\nexport type MutationActionCreatorResult<\r\n  D extends MutationDefinition<any, any, any, any>\r\n> = Promise<\r\n  | { data: ResultTypeFrom<D> }\r\n  | {\r\n      error:\r\n        | Exclude<\r\n            BaseQueryError<\r\n              D extends MutationDefinition<any, infer BaseQuery, any, any>\r\n                ? BaseQuery\r\n                : never\r\n            >,\r\n            undefined\r\n          >\r\n        | SerializedError\r\n    }\r\n> & {\r\n  /** @internal */\r\n  arg: {\r\n    /**\r\n     * The name of the given endpoint for the mutation\r\n     */\r\n    endpointName: string\r\n    /**\r\n     * The original arguments supplied to the mutation call\r\n     */\r\n    originalArgs: QueryArgFrom<D>\r\n    /**\r\n     * Whether the mutation is being tracked in the store.\r\n     */\r\n    track?: boolean\r\n    fixedCacheKey?: string\r\n  }\r\n  /**\r\n   * A unique string generated for the request sequence\r\n   */\r\n  requestId: string\r\n\r\n  /**\r\n   * A method to cancel the mutation promise. Note that this is not intended to prevent the mutation\r\n   * that was fired off from reaching the server, but only to assist in handling the response.\r\n   *\r\n   * Calling `abort()` prior to the promise resolving will force it to reach the error state with\r\n   * the serialized error:\r\n   * `{ name: 'AbortError', message: 'Aborted' }`\r\n   *\r\n   * @example\r\n   * ```ts\r\n   * const [updateUser] = useUpdateUserMutation();\r\n   *\r\n   * useEffect(() => {\r\n   *   const promise = updateUser(id);\r\n   *   promise\r\n   *     .unwrap()\r\n   *     .catch((err) => {\r\n   *       if (err.name === 'AbortError') return;\r\n   *       // else handle the unexpected error\r\n   *     })\r\n   *\r\n   *   return () => {\r\n   *     promise.abort();\r\n   *   }\r\n   * }, [id, updateUser])\r\n   * ```\r\n   */\r\n  abort(): void\r\n  /**\r\n   * Unwraps a mutation call to provide the raw response/error.\r\n   *\r\n   * @remarks\r\n   * If you need to access the error or success payload immediately after a mutation, you can chain .unwrap().\r\n   *\r\n   * @example\r\n   * ```ts\r\n   * // codeblock-meta title=\"Using .unwrap\"\r\n   * addPost({ id: 1, name: 'Example' })\r\n   *   .unwrap()\r\n   *   .then((payload) => console.log('fulfilled', payload))\r\n   *   .catch((error) => console.error('rejected', error));\r\n   * ```\r\n   *\r\n   * @example\r\n   * ```ts\r\n   * // codeblock-meta title=\"Using .unwrap with async await\"\r\n   * try {\r\n   *   const payload = await addPost({ id: 1, name: 'Example' }).unwrap();\r\n   *   console.log('fulfilled', payload)\r\n   * } catch (error) {\r\n   *   console.error('rejected', error);\r\n   * }\r\n   * ```\r\n   */\r\n  unwrap(): Promise<ResultTypeFrom<D>>\r\n  /**\r\n   * A method to manually unsubscribe from the mutation call, meaning it will be removed from cache after the usual caching grace period.\r\n   The value returned by the hook will reset to `isUninitialized` afterwards.\r\n   */\r\n  reset(): void\r\n  /** @deprecated has been renamed to `reset` */\r\n  unsubscribe(): void\r\n}\r\n\r\nexport function buildInitiate({\r\n  serializeQueryArgs,\r\n  queryThunk,\r\n  mutationThunk,\r\n  api,\r\n  context,\r\n}: {\r\n  serializeQueryArgs: InternalSerializeQueryArgs\r\n  queryThunk: QueryThunk\r\n  mutationThunk: MutationThunk\r\n  api: Api<any, EndpointDefinitions, any, any>\r\n  context: ApiContext<EndpointDefinitions>\r\n}) {\r\n  const runningQueries: Map<\r\n    Dispatch,\r\n    Record<string, QueryActionCreatorResult<any> | undefined>\r\n  > = new Map()\r\n  const runningMutations: Map<\r\n    Dispatch,\r\n    Record<string, MutationActionCreatorResult<any> | undefined>\r\n  > = new Map()\r\n\r\n  const {\r\n    unsubscribeQueryResult,\r\n    removeMutationResult,\r\n    updateSubscriptionOptions,\r\n  } = api.internalActions\r\n  return {\r\n    buildInitiateQuery,\r\n    buildInitiateMutation,\r\n    getRunningQueryThunk,\r\n    getRunningMutationThunk,\r\n    getRunningQueriesThunk,\r\n    getRunningMutationsThunk,\r\n    getRunningOperationPromises,\r\n    removalWarning,\r\n  }\r\n\r\n  /** @deprecated to be removed in 2.0 */\r\n  function removalWarning(): never {\r\n    throw new Error(\r\n      `This method had to be removed due to a conceptual bug in RTK.\r\n       Please see https://github.com/reduxjs/redux-toolkit/pull/2481 for details.\r\n       See https://redux-toolkit.js.org/rtk-query/usage/server-side-rendering for new guidance on SSR.`\r\n    )\r\n  }\r\n\r\n  /** @deprecated to be removed in 2.0 */\r\n  function getRunningOperationPromises() {\r\n    if (\r\n      typeof process !== 'undefined' &&\r\n      process.env.NODE_ENV === 'development'\r\n    ) {\r\n      removalWarning()\r\n    } else {\r\n      const extract = <T>(\r\n        v: Map<Dispatch<AnyAction>, Record<string, T | undefined>>\r\n      ) =>\r\n        Array.from(v.values()).flatMap((queriesForStore) =>\r\n          queriesForStore ? Object.values(queriesForStore) : []\r\n        )\r\n      return [...extract(runningQueries), ...extract(runningMutations)].filter(\r\n        isNotNullish\r\n      )\r\n    }\r\n  }\r\n\r\n  function getRunningQueryThunk(endpointName: string, queryArgs: any) {\r\n    return (dispatch: Dispatch) => {\r\n      const endpointDefinition = context.endpointDefinitions[endpointName]\r\n      const queryCacheKey = serializeQueryArgs({\r\n        queryArgs,\r\n        endpointDefinition,\r\n        endpointName,\r\n      })\r\n      return runningQueries.get(dispatch)?.[queryCacheKey] as\r\n        | QueryActionCreatorResult<never>\r\n        | undefined\r\n    }\r\n  }\r\n\r\n  function getRunningMutationThunk(\r\n    /**\r\n     * this is only here to allow TS to infer the result type by input value\r\n     * we could use it to validate the result, but it's probably not necessary\r\n     */\r\n    _endpointName: string,\r\n    fixedCacheKeyOrRequestId: string\r\n  ) {\r\n    return (dispatch: Dispatch) => {\r\n      return runningMutations.get(dispatch)?.[fixedCacheKeyOrRequestId] as\r\n        | MutationActionCreatorResult<never>\r\n        | undefined\r\n    }\r\n  }\r\n\r\n  function getRunningQueriesThunk() {\r\n    return (dispatch: Dispatch) =>\r\n      Object.values(runningQueries.get(dispatch) || {}).filter(isNotNullish)\r\n  }\r\n\r\n  function getRunningMutationsThunk() {\r\n    return (dispatch: Dispatch) =>\r\n      Object.values(runningMutations.get(dispatch) || {}).filter(isNotNullish)\r\n  }\r\n\r\n  function middlewareWarning(dispatch: Dispatch) {\r\n    if (process.env.NODE_ENV !== 'production') {\r\n      if ((middlewareWarning as any).triggered) return\r\n      const registered:\r\n        | ReturnType<typeof api.internalActions.internal_probeSubscription>\r\n        | boolean = dispatch(\r\n        api.internalActions.internal_probeSubscription({\r\n          queryCacheKey: 'DOES_NOT_EXIST',\r\n          requestId: 'DUMMY_REQUEST_ID',\r\n        })\r\n      )\r\n\r\n      ;(middlewareWarning as any).triggered = true\r\n\r\n      // The RTKQ middleware _should_ always return a boolean for `probeSubscription`\r\n      if (typeof registered !== 'boolean') {\r\n        // Otherwise, must not have been added\r\n        throw new Error(\r\n          `Warning: Middleware for RTK-Query API at reducerPath \"${api.reducerPath}\" has not been added to the store.\r\nYou must add the middleware for RTK-Query to function correctly!`\r\n        )\r\n      }\r\n    }\r\n  }\r\n\r\n  function buildInitiateQuery(\r\n    endpointName: string,\r\n    endpointDefinition: QueryDefinition<any, any, any, any>\r\n  ) {\r\n    const queryAction: StartQueryActionCreator<any> =\r\n      (\r\n        arg,\r\n        {\r\n          subscribe = true,\r\n          forceRefetch,\r\n          subscriptionOptions,\r\n          [forceQueryFnSymbol]: forceQueryFn,\r\n        } = {}\r\n      ) =>\r\n      (dispatch, getState) => {\r\n        const queryCacheKey = serializeQueryArgs({\r\n          queryArgs: arg,\r\n          endpointDefinition,\r\n          endpointName,\r\n        })\r\n\r\n        const thunk = queryThunk({\r\n          type: 'query',\r\n          subscribe,\r\n          forceRefetch: forceRefetch,\r\n          subscriptionOptions,\r\n          endpointName,\r\n          originalArgs: arg,\r\n          queryCacheKey,\r\n          [forceQueryFnSymbol]: forceQueryFn,\r\n        })\r\n        const selector = (\r\n          api.endpoints[endpointName] as ApiEndpointQuery<any, any>\r\n        ).select(arg)\r\n\r\n        const thunkResult = dispatch(thunk)\r\n        const stateAfter = selector(getState())\r\n\r\n        middlewareWarning(dispatch)\r\n\r\n        const { requestId, abort } = thunkResult\r\n\r\n        const skippedSynchronously = stateAfter.requestId !== requestId\r\n\r\n        const runningQuery = runningQueries.get(dispatch)?.[queryCacheKey]\r\n        const selectFromState = () => selector(getState())\r\n\r\n        const statePromise: QueryActionCreatorResult<any> = Object.assign(\r\n          forceQueryFn\r\n            ? // a query has been forced (upsertQueryData)\r\n              // -> we want to resolve it once data has been written with the data that will be written\r\n              thunkResult.then(selectFromState)\r\n            : skippedSynchronously && !runningQuery\r\n            ? // a query has been skipped due to a condition and we do not have any currently running query\r\n              // -> we want to resolve it immediately with the current data\r\n              Promise.resolve(stateAfter)\r\n            : // query just started or one is already in flight\r\n              // -> wait for the running query, then resolve with data from after that\r\n              Promise.all([runningQuery, thunkResult]).then(selectFromState),\r\n          {\r\n            arg,\r\n            requestId,\r\n            subscriptionOptions,\r\n            queryCacheKey,\r\n            abort,\r\n            async unwrap() {\r\n              const result = await statePromise\r\n\r\n              if (result.isError) {\r\n                throw result.error\r\n              }\r\n\r\n              return result.data\r\n            },\r\n            refetch: () =>\r\n              dispatch(\r\n                queryAction(arg, { subscribe: false, forceRefetch: true })\r\n              ),\r\n            unsubscribe() {\r\n              if (subscribe)\r\n                dispatch(\r\n                  unsubscribeQueryResult({\r\n                    queryCacheKey,\r\n                    requestId,\r\n                  })\r\n                )\r\n            },\r\n            updateSubscriptionOptions(options: SubscriptionOptions) {\r\n              statePromise.subscriptionOptions = options\r\n              dispatch(\r\n                updateSubscriptionOptions({\r\n                  endpointName,\r\n                  requestId,\r\n                  queryCacheKey,\r\n                  options,\r\n                })\r\n              )\r\n            },\r\n          }\r\n        )\r\n\r\n        if (!runningQuery && !skippedSynchronously && !forceQueryFn) {\r\n          const running = runningQueries.get(dispatch) || {}\r\n          running[queryCacheKey] = statePromise\r\n          runningQueries.set(dispatch, running)\r\n\r\n          statePromise.then(() => {\r\n            delete running[queryCacheKey]\r\n            if (!Object.keys(running).length) {\r\n              runningQueries.delete(dispatch)\r\n            }\r\n          })\r\n        }\r\n\r\n        return statePromise\r\n      }\r\n    return queryAction\r\n  }\r\n\r\n  function buildInitiateMutation(\r\n    endpointName: string\r\n  ): StartMutationActionCreator<any> {\r\n    return (arg, { track = true, fixedCacheKey } = {}) =>\r\n      (dispatch, getState) => {\r\n        const thunk = mutationThunk({\r\n          type: 'mutation',\r\n          endpointName,\r\n          originalArgs: arg,\r\n          track,\r\n          fixedCacheKey,\r\n        })\r\n        const thunkResult = dispatch(thunk)\r\n        middlewareWarning(dispatch)\r\n        const { requestId, abort, unwrap } = thunkResult\r\n        const returnValuePromise = thunkResult\r\n          .unwrap()\r\n          .then((data) => ({ data }))\r\n          .catch((error) => ({ error }))\r\n\r\n        const reset = () => {\r\n          dispatch(removeMutationResult({ requestId, fixedCacheKey }))\r\n        }\r\n\r\n        const ret = Object.assign(returnValuePromise, {\r\n          arg: thunkResult.arg,\r\n          requestId,\r\n          abort,\r\n          unwrap,\r\n          unsubscribe: reset,\r\n          reset,\r\n        })\r\n\r\n        const running = runningMutations.get(dispatch) || {}\r\n        runningMutations.set(dispatch, running)\r\n        running[requestId] = ret\r\n        ret.then(() => {\r\n          delete running[requestId]\r\n          if (!Object.keys(running).length) {\r\n            runningMutations.delete(dispatch)\r\n          }\r\n        })\r\n        if (fixedCacheKey) {\r\n          running[fixedCacheKey] = ret\r\n          ret.then(() => {\r\n            if (running[fixedCacheKey] === ret) {\r\n              delete running[fixedCacheKey]\r\n              if (!Object.keys(running).length) {\r\n                runningMutations.delete(dispatch)\r\n              }\r\n            }\r\n          })\r\n        }\r\n\r\n        return ret\r\n      }\r\n  }\r\n}\r\n", "import type { InternalSerializeQueryArgs } from '../defaultSerializeQueryArgs'\r\nimport type { Api, ApiContext } from '../apiTypes'\r\nimport type {\r\n  BaseQueryFn,\r\n  BaseQueryError,\r\n  QueryReturnValue,\r\n} from '../baseQueryTypes'\r\nimport type { RootState, QueryKeys, QuerySubstateIdentifier } from './apiState'\r\nimport { QueryStatus } from './apiState'\r\nimport type {\r\n  StartQueryActionCreatorOptions,\r\n  QueryActionCreatorResult,\r\n} from './buildInitiate'\r\nimport { forceQueryFnSymbol, isUpsertQuery } from './buildInitiate'\r\nimport {\r\n  AssertTagTypes,\r\n  EndpointDefinition,\r\n  EndpointDefinitions,\r\n  isQueryDefinition,\r\n  MutationDefinition,\r\n  QueryArgFrom,\r\n  QueryDefinition,\r\n  ResultTypeFrom,\r\n} from '../endpointDefinitions'\r\nimport { calculateProvidedBy } from '../endpointDefinitions'\r\nimport type { AsyncThunkPayloadCreator, Draft } from '@reduxjs/toolkit'\r\nimport {\r\n  isAllOf,\r\n  isFulfilled,\r\n  isPending,\r\n  isRejected,\r\n  isRejectedWithValue,\r\n} from '@reduxjs/toolkit'\r\nimport type { Patch } from 'immer'\r\nimport { isDraftable, produceWithPatches } from 'immer'\r\nimport type {\r\n  AnyAction,\r\n  ThunkAction,\r\n  ThunkDispatch,\r\n  AsyncThunk,\r\n} from '@reduxjs/toolkit'\r\nimport { createAsyncThunk, SHOULD_AUTOBATCH } from '@reduxjs/toolkit'\r\n\r\nimport { HandledError } from '../HandledError'\r\n\r\nimport type { ApiEndpointQuery, PrefetchOptions } from './module'\r\nimport type { UnwrapPromise } from '../tsHelpers'\r\n\r\ndeclare module './module' {\r\n  export interface ApiEndpointQuery<\r\n    Definition extends QueryDefinition<any, any, any, any, any>,\r\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n    Definitions extends EndpointDefinitions\r\n  > extends Matchers<QueryThunk, Definition> {}\r\n\r\n  export interface ApiEndpointMutation<\r\n    Definition extends MutationDefinition<any, any, any, any, any>,\r\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n    Definitions extends EndpointDefinitions\r\n  > extends Matchers<MutationThunk, Definition> {}\r\n}\r\n\r\ntype EndpointThunk<\r\n  Thunk extends QueryThunk | MutationThunk,\r\n  Definition extends EndpointDefinition<any, any, any, any>\r\n> = Definition extends EndpointDefinition<\r\n  infer QueryArg,\r\n  infer BaseQueryFn,\r\n  any,\r\n  infer ResultType\r\n>\r\n  ? Thunk extends AsyncThunk<unknown, infer ATArg, infer ATConfig>\r\n    ? AsyncThunk<\r\n        ResultType,\r\n        ATArg & { originalArgs: QueryArg },\r\n        ATConfig & { rejectValue: BaseQueryError<BaseQueryFn> }\r\n      >\r\n    : never\r\n  : never\r\n\r\nexport type PendingAction<\r\n  Thunk extends QueryThunk | MutationThunk,\r\n  Definition extends EndpointDefinition<any, any, any, any>\r\n> = ReturnType<EndpointThunk<Thunk, Definition>['pending']>\r\n\r\nexport type FulfilledAction<\r\n  Thunk extends QueryThunk | MutationThunk,\r\n  Definition extends EndpointDefinition<any, any, any, any>\r\n> = ReturnType<EndpointThunk<Thunk, Definition>['fulfilled']>\r\n\r\nexport type RejectedAction<\r\n  Thunk extends QueryThunk | MutationThunk,\r\n  Definition extends EndpointDefinition<any, any, any, any>\r\n> = ReturnType<EndpointThunk<Thunk, Definition>['rejected']>\r\n\r\nexport type Matcher<M> = (value: any) => value is M\r\n\r\nexport interface Matchers<\r\n  Thunk extends QueryThunk | MutationThunk,\r\n  Definition extends EndpointDefinition<any, any, any, any>\r\n> {\r\n  matchPending: Matcher<PendingAction<Thunk, Definition>>\r\n  matchFulfilled: Matcher<FulfilledAction<Thunk, Definition>>\r\n  matchRejected: Matcher<RejectedAction<Thunk, Definition>>\r\n}\r\n\r\nexport interface QueryThunkArg\r\n  extends QuerySubstateIdentifier,\r\n    StartQueryActionCreatorOptions {\r\n  type: 'query'\r\n  originalArgs: unknown\r\n  endpointName: string\r\n}\r\n\r\nexport interface MutationThunkArg {\r\n  type: 'mutation'\r\n  originalArgs: unknown\r\n  endpointName: string\r\n  track?: boolean\r\n  fixedCacheKey?: string\r\n}\r\n\r\nexport type ThunkResult = unknown\r\n\r\nexport type ThunkApiMetaConfig = {\r\n  pendingMeta: {\r\n    startedTimeStamp: number\r\n    [SHOULD_AUTOBATCH]: true\r\n  }\r\n  fulfilledMeta: {\r\n    fulfilledTimeStamp: number\r\n    baseQueryMeta: unknown\r\n    [SHOULD_AUTOBATCH]: true\r\n  }\r\n  rejectedMeta: {\r\n    baseQueryMeta: unknown\r\n    [SHOULD_AUTOBATCH]: true\r\n  }\r\n}\r\nexport type QueryThunk = AsyncThunk<\r\n  ThunkResult,\r\n  QueryThunkArg,\r\n  ThunkApiMetaConfig\r\n>\r\nexport type MutationThunk = AsyncThunk<\r\n  ThunkResult,\r\n  MutationThunkArg,\r\n  ThunkApiMetaConfig\r\n>\r\n\r\nfunction defaultTransformResponse(baseQueryReturnValue: unknown) {\r\n  return baseQueryReturnValue\r\n}\r\n\r\nexport type MaybeDrafted<T> = T | Draft<T>\r\nexport type Recipe<T> = (data: MaybeDrafted<T>) => void | MaybeDrafted<T>\r\nexport type UpsertRecipe<T> = (\r\n  data: MaybeDrafted<T> | undefined\r\n) => void | MaybeDrafted<T>\r\n\r\nexport type PatchQueryDataThunk<\r\n  Definitions extends EndpointDefinitions,\r\n  PartialState\r\n> = <EndpointName extends QueryKeys<Definitions>>(\r\n  endpointName: EndpointName,\r\n  args: QueryArgFrom<Definitions[EndpointName]>,\r\n  patches: readonly Patch[]\r\n) => ThunkAction<void, PartialState, any, AnyAction>\r\n\r\nexport type UpdateQueryDataThunk<\r\n  Definitions extends EndpointDefinitions,\r\n  PartialState\r\n> = <EndpointName extends QueryKeys<Definitions>>(\r\n  endpointName: EndpointName,\r\n  args: QueryArgFrom<Definitions[EndpointName]>,\r\n  updateRecipe: Recipe<ResultTypeFrom<Definitions[EndpointName]>>\r\n) => ThunkAction<PatchCollection, PartialState, any, AnyAction>\r\n\r\nexport type UpsertQueryDataThunk<\r\n  Definitions extends EndpointDefinitions,\r\n  PartialState\r\n> = <EndpointName extends QueryKeys<Definitions>>(\r\n  endpointName: EndpointName,\r\n  args: QueryArgFrom<Definitions[EndpointName]>,\r\n  value: ResultTypeFrom<Definitions[EndpointName]>\r\n) => ThunkAction<\r\n  QueryActionCreatorResult<\r\n    Definitions[EndpointName] extends QueryDefinition<any, any, any, any>\r\n      ? Definitions[EndpointName]\r\n      : never\r\n  >,\r\n  PartialState,\r\n  any,\r\n  AnyAction\r\n>\r\n\r\n/**\r\n * An object returned from dispatching a `api.util.updateQueryData` call.\r\n */\r\nexport type PatchCollection = {\r\n  /**\r\n   * An `immer` Patch describing the cache update.\r\n   */\r\n  patches: Patch[]\r\n  /**\r\n   * An `immer` Patch to revert the cache update.\r\n   */\r\n  inversePatches: Patch[]\r\n  /**\r\n   * A function that will undo the cache update.\r\n   */\r\n  undo: () => void\r\n}\r\n\r\nexport function buildThunks<\r\n  BaseQuery extends BaseQueryFn,\r\n  ReducerPath extends string,\r\n  Definitions extends EndpointDefinitions\r\n>({\r\n  reducerPath,\r\n  baseQuery,\r\n  context: { endpointDefinitions },\r\n  serializeQueryArgs,\r\n  api,\r\n}: {\r\n  baseQuery: BaseQuery\r\n  reducerPath: ReducerPath\r\n  context: ApiContext<Definitions>\r\n  serializeQueryArgs: InternalSerializeQueryArgs\r\n  api: Api<BaseQuery, Definitions, ReducerPath, any>\r\n}) {\r\n  type State = RootState<any, string, ReducerPath>\r\n\r\n  const patchQueryData: PatchQueryDataThunk<EndpointDefinitions, State> =\r\n    (endpointName, args, patches) => (dispatch) => {\r\n      const endpointDefinition = endpointDefinitions[endpointName]\r\n      dispatch(\r\n        api.internalActions.queryResultPatched({\r\n          queryCacheKey: serializeQueryArgs({\r\n            queryArgs: args,\r\n            endpointDefinition,\r\n            endpointName,\r\n          }),\r\n          patches,\r\n        })\r\n      )\r\n    }\r\n\r\n  const updateQueryData: UpdateQueryDataThunk<EndpointDefinitions, State> =\r\n    (endpointName, args, updateRecipe) => (dispatch, getState) => {\r\n      const currentState = (\r\n        api.endpoints[endpointName] as ApiEndpointQuery<any, any>\r\n      ).select(args)(getState())\r\n      let ret: PatchCollection = {\r\n        patches: [],\r\n        inversePatches: [],\r\n        undo: () =>\r\n          dispatch(\r\n            api.util.patchQueryData(endpointName, args, ret.inversePatches)\r\n          ),\r\n      }\r\n      if (currentState.status === QueryStatus.uninitialized) {\r\n        return ret\r\n      }\r\n      if ('data' in currentState) {\r\n        if (isDraftable(currentState.data)) {\r\n          const [, patches, inversePatches] = produceWithPatches(\r\n            currentState.data,\r\n            updateRecipe\r\n          )\r\n          ret.patches.push(...patches)\r\n          ret.inversePatches.push(...inversePatches)\r\n        } else {\r\n          const value = updateRecipe(currentState.data)\r\n          ret.patches.push({ op: 'replace', path: [], value })\r\n          ret.inversePatches.push({\r\n            op: 'replace',\r\n            path: [],\r\n            value: currentState.data,\r\n          })\r\n        }\r\n      }\r\n\r\n      dispatch(api.util.patchQueryData(endpointName, args, ret.patches))\r\n\r\n      return ret\r\n    }\r\n\r\n  const upsertQueryData: UpsertQueryDataThunk<Definitions, State> =\r\n    (endpointName, args, value) => (dispatch) => {\r\n      return dispatch(\r\n        (\r\n          api.endpoints[endpointName] as ApiEndpointQuery<\r\n            QueryDefinition<any, any, any, any, any>,\r\n            Definitions\r\n          >\r\n        ).initiate(args, {\r\n          subscribe: false,\r\n          forceRefetch: true,\r\n          [forceQueryFnSymbol]: () => ({\r\n            data: value,\r\n          }),\r\n        })\r\n      )\r\n    }\r\n\r\n  const executeEndpoint: AsyncThunkPayloadCreator<\r\n    ThunkResult,\r\n    QueryThunkArg | MutationThunkArg,\r\n    ThunkApiMetaConfig & { state: RootState<any, string, ReducerPath> }\r\n  > = async (\r\n    arg,\r\n    {\r\n      signal,\r\n      abort,\r\n      rejectWithValue,\r\n      fulfillWithValue,\r\n      dispatch,\r\n      getState,\r\n      extra,\r\n    }\r\n  ) => {\r\n    const endpointDefinition = endpointDefinitions[arg.endpointName]\r\n\r\n    try {\r\n      let transformResponse: (\r\n        baseQueryReturnValue: any,\r\n        meta: any,\r\n        arg: any\r\n      ) => any = defaultTransformResponse\r\n      let result: QueryReturnValue\r\n      const baseQueryApi = {\r\n        signal,\r\n        abort,\r\n        dispatch,\r\n        getState,\r\n        extra,\r\n        endpoint: arg.endpointName,\r\n        type: arg.type,\r\n        forced:\r\n          arg.type === 'query' ? isForcedQuery(arg, getState()) : undefined,\r\n      }\r\n\r\n      const forceQueryFn =\r\n        arg.type === 'query' ? arg[forceQueryFnSymbol] : undefined\r\n      if (forceQueryFn) {\r\n        result = forceQueryFn()\r\n      } else if (endpointDefinition.query) {\r\n        result = await baseQuery(\r\n          endpointDefinition.query(arg.originalArgs),\r\n          baseQueryApi,\r\n          endpointDefinition.extraOptions as any\r\n        )\r\n\r\n        if (endpointDefinition.transformResponse) {\r\n          transformResponse = endpointDefinition.transformResponse\r\n        }\r\n      } else {\r\n        result = await endpointDefinition.queryFn(\r\n          arg.originalArgs,\r\n          baseQueryApi,\r\n          endpointDefinition.extraOptions as any,\r\n          (arg) =>\r\n            baseQuery(arg, baseQueryApi, endpointDefinition.extraOptions as any)\r\n        )\r\n      }\r\n      if (\r\n        typeof process !== 'undefined' &&\r\n        process.env.NODE_ENV === 'development'\r\n      ) {\r\n        const what = endpointDefinition.query ? '`baseQuery`' : '`queryFn`'\r\n        let err: undefined | string\r\n        if (!result) {\r\n          err = `${what} did not return anything.`\r\n        } else if (typeof result !== 'object') {\r\n          err = `${what} did not return an object.`\r\n        } else if (result.error && result.data) {\r\n          err = `${what} returned an object containing both \\`error\\` and \\`result\\`.`\r\n        } else if (result.error === undefined && result.data === undefined) {\r\n          err = `${what} returned an object containing neither a valid \\`error\\` and \\`result\\`. At least one of them should not be \\`undefined\\``\r\n        } else {\r\n          for (const key of Object.keys(result)) {\r\n            if (key !== 'error' && key !== 'data' && key !== 'meta') {\r\n              err = `The object returned by ${what} has the unknown property ${key}.`\r\n              break\r\n            }\r\n          }\r\n        }\r\n        if (err) {\r\n          console.error(\r\n            `Error encountered handling the endpoint ${arg.endpointName}.\r\n              ${err}\r\n              It needs to return an object with either the shape \\`{ data: <value> }\\` or \\`{ error: <value> }\\` that may contain an optional \\`meta\\` property.\r\n              Object returned was:`,\r\n            result\r\n          )\r\n        }\r\n      }\r\n\r\n      if (result.error) throw new HandledError(result.error, result.meta)\r\n\r\n      return fulfillWithValue(\r\n        await transformResponse(result.data, result.meta, arg.originalArgs),\r\n        {\r\n          fulfilledTimeStamp: Date.now(),\r\n          baseQueryMeta: result.meta,\r\n          [SHOULD_AUTOBATCH]: true,\r\n        }\r\n      )\r\n    } catch (error) {\r\n      let catchedError = error\r\n      if (catchedError instanceof HandledError) {\r\n        let transformErrorResponse: (\r\n          baseQueryReturnValue: any,\r\n          meta: any,\r\n          arg: any\r\n        ) => any = defaultTransformResponse\r\n\r\n        if (\r\n          endpointDefinition.query &&\r\n          endpointDefinition.transformErrorResponse\r\n        ) {\r\n          transformErrorResponse = endpointDefinition.transformErrorResponse\r\n        }\r\n        try {\r\n          return rejectWithValue(\r\n            await transformErrorResponse(\r\n              catchedError.value,\r\n              catchedError.meta,\r\n              arg.originalArgs\r\n            ),\r\n            { baseQueryMeta: catchedError.meta, [SHOULD_AUTOBATCH]: true }\r\n          )\r\n        } catch (e) {\r\n          catchedError = e\r\n        }\r\n      }\r\n      if (\r\n        typeof process !== 'undefined' &&\r\n        process.env.NODE_ENV !== 'production'\r\n      ) {\r\n        console.error(\r\n          `An unhandled error occurred processing a request for the endpoint \"${arg.endpointName}\".\r\nIn the case of an unhandled error, no tags will be \"provided\" or \"invalidated\".`,\r\n          catchedError\r\n        )\r\n      } else {\r\n        console.error(catchedError)\r\n      }\r\n      throw catchedError\r\n    }\r\n  }\r\n\r\n  function isForcedQuery(\r\n    arg: QueryThunkArg,\r\n    state: RootState<any, string, ReducerPath>\r\n  ) {\r\n    const requestState = state[reducerPath]?.queries?.[arg.queryCacheKey]\r\n    const baseFetchOnMountOrArgChange =\r\n      state[reducerPath]?.config.refetchOnMountOrArgChange\r\n\r\n    const fulfilledVal = requestState?.fulfilledTimeStamp\r\n    const refetchVal =\r\n      arg.forceRefetch ?? (arg.subscribe && baseFetchOnMountOrArgChange)\r\n\r\n    if (refetchVal) {\r\n      // Return if its true or compare the dates because it must be a number\r\n      return (\r\n        refetchVal === true ||\r\n        (Number(new Date()) - Number(fulfilledVal)) / 1000 >= refetchVal\r\n      )\r\n    }\r\n    return false\r\n  }\r\n\r\n  const queryThunk = createAsyncThunk<\r\n    ThunkResult,\r\n    QueryThunkArg,\r\n    ThunkApiMetaConfig & { state: RootState<any, string, ReducerPath> }\r\n  >(`${reducerPath}/executeQuery`, executeEndpoint, {\r\n    getPendingMeta() {\r\n      return { startedTimeStamp: Date.now(), [SHOULD_AUTOBATCH]: true }\r\n    },\r\n    condition(queryThunkArgs, { getState }) {\r\n      const state = getState()\r\n\r\n      const requestState =\r\n        state[reducerPath]?.queries?.[queryThunkArgs.queryCacheKey]\r\n      const fulfilledVal = requestState?.fulfilledTimeStamp\r\n      const currentArg = queryThunkArgs.originalArgs\r\n      const previousArg = requestState?.originalArgs\r\n      const endpointDefinition =\r\n        endpointDefinitions[queryThunkArgs.endpointName]\r\n\r\n      // Order of these checks matters.\r\n      // In order for `upsertQueryData` to successfully run while an existing request is in flight,\r\n      /// we have to check for that first, otherwise `queryThunk` will bail out and not run at all.\r\n      if (isUpsertQuery(queryThunkArgs)) {\r\n        return true\r\n      }\r\n\r\n      // Don't retry a request that's currently in-flight\r\n      if (requestState?.status === 'pending') {\r\n        return false\r\n      }\r\n\r\n      // if this is forced, continue\r\n      if (isForcedQuery(queryThunkArgs, state)) {\r\n        return true\r\n      }\r\n\r\n      if (\r\n        isQueryDefinition(endpointDefinition) &&\r\n        endpointDefinition?.forceRefetch?.({\r\n          currentArg,\r\n          previousArg,\r\n          endpointState: requestState,\r\n          state,\r\n        })\r\n      ) {\r\n        return true\r\n      }\r\n\r\n      // Pull from the cache unless we explicitly force refetch or qualify based on time\r\n      if (fulfilledVal) {\r\n        // Value is cached and we didn't specify to refresh, skip it.\r\n        return false\r\n      }\r\n\r\n      return true\r\n    },\r\n    dispatchConditionRejection: true,\r\n  })\r\n\r\n  const mutationThunk = createAsyncThunk<\r\n    ThunkResult,\r\n    MutationThunkArg,\r\n    ThunkApiMetaConfig & { state: RootState<any, string, ReducerPath> }\r\n  >(`${reducerPath}/executeMutation`, executeEndpoint, {\r\n    getPendingMeta() {\r\n      return { startedTimeStamp: Date.now(), [SHOULD_AUTOBATCH]: true }\r\n    },\r\n  })\r\n\r\n  const hasTheForce = (options: any): options is { force: boolean } =>\r\n    'force' in options\r\n  const hasMaxAge = (\r\n    options: any\r\n  ): options is { ifOlderThan: false | number } => 'ifOlderThan' in options\r\n\r\n  const prefetch =\r\n    <EndpointName extends QueryKeys<Definitions>>(\r\n      endpointName: EndpointName,\r\n      arg: any,\r\n      options: PrefetchOptions\r\n    ): ThunkAction<void, any, any, AnyAction> =>\r\n    (dispatch: ThunkDispatch<any, any, any>, getState: () => any) => {\r\n      const force = hasTheForce(options) && options.force\r\n      const maxAge = hasMaxAge(options) && options.ifOlderThan\r\n\r\n      const queryAction = (force: boolean = true) =>\r\n        (api.endpoints[endpointName] as ApiEndpointQuery<any, any>).initiate(\r\n          arg,\r\n          { forceRefetch: force }\r\n        )\r\n      const latestStateValue = (\r\n        api.endpoints[endpointName] as ApiEndpointQuery<any, any>\r\n      ).select(arg)(getState())\r\n\r\n      if (force) {\r\n        dispatch(queryAction())\r\n      } else if (maxAge) {\r\n        const lastFulfilledTs = latestStateValue?.fulfilledTimeStamp\r\n        if (!lastFulfilledTs) {\r\n          dispatch(queryAction())\r\n          return\r\n        }\r\n        const shouldRetrigger =\r\n          (Number(new Date()) - Number(new Date(lastFulfilledTs))) / 1000 >=\r\n          maxAge\r\n        if (shouldRetrigger) {\r\n          dispatch(queryAction())\r\n        }\r\n      } else {\r\n        // If prefetching with no options, just let it try\r\n        dispatch(queryAction(false))\r\n      }\r\n    }\r\n\r\n  function matchesEndpoint(endpointName: string) {\r\n    return (action: any): action is AnyAction =>\r\n      action?.meta?.arg?.endpointName === endpointName\r\n  }\r\n\r\n  function buildMatchThunkActions<\r\n    Thunk extends\r\n      | AsyncThunk<any, QueryThunkArg, ThunkApiMetaConfig>\r\n      | AsyncThunk<any, MutationThunkArg, ThunkApiMetaConfig>\r\n  >(thunk: Thunk, endpointName: string) {\r\n    return {\r\n      matchPending: isAllOf(isPending(thunk), matchesEndpoint(endpointName)),\r\n      matchFulfilled: isAllOf(\r\n        isFulfilled(thunk),\r\n        matchesEndpoint(endpointName)\r\n      ),\r\n      matchRejected: isAllOf(isRejected(thunk), matchesEndpoint(endpointName)),\r\n    } as Matchers<Thunk, any>\r\n  }\r\n\r\n  return {\r\n    queryThunk,\r\n    mutationThunk,\r\n    prefetch,\r\n    updateQueryData,\r\n    upsertQueryData,\r\n    patchQueryData,\r\n    buildMatchThunkActions,\r\n  }\r\n}\r\n\r\nexport function calculateProvidedByThunk(\r\n  action: UnwrapPromise<\r\n    ReturnType<ReturnType<QueryThunk>> | ReturnType<ReturnType<MutationThunk>>\r\n  >,\r\n  type: 'providesTags' | 'invalidatesTags',\r\n  endpointDefinitions: EndpointDefinitions,\r\n  assertTagType: AssertTagTypes\r\n) {\r\n  return calculateProvidedBy(\r\n    endpointDefinitions[action.meta.arg.endpointName][type],\r\n    isFulfilled(action) ? action.payload : undefined,\r\n    isRejectedWithValue(action) ? action.payload : undefined,\r\n    action.meta.arg.originalArgs,\r\n    'baseQueryMeta' in action.meta ? action.meta.baseQueryMeta : undefined,\r\n    assertTagType\r\n  )\r\n}\r\n", "import type { QueryCacheKey } from './core/apiState'\r\nimport type { EndpointDefinition } from './endpointDefinitions'\r\nimport { isPlainObject } from '@reduxjs/toolkit'\r\n\r\nexport const defaultSerializeQueryArgs: SerializeQueryArgs<any> = ({\r\n  endpointName,\r\n  queryArgs,\r\n}) => {\r\n  // Sort the object keys before stringifying, to prevent useQuery({ a: 1, b: 2 }) having a different cache key than useQuery({ b: 2, a: 1 })\r\n  return `${endpointName}(${JSON.stringify(queryArgs, (key, value) =>\r\n    isPlainObject(value)\r\n      ? Object.keys(value)\r\n          .sort()\r\n          .reduce<any>((acc, key) => {\r\n            acc[key] = (value as any)[key]\r\n            return acc\r\n          }, {})\r\n      : value\r\n  )})`\r\n}\r\n\r\nexport type SerializeQueryArgs<QueryArgs, ReturnType = string> = (_: {\r\n  queryArgs: QueryArgs\r\n  endpointDefinition: EndpointDefinition<any, any, any, any>\r\n  endpointName: string\r\n}) => ReturnType\r\n\r\nexport type InternalSerializeQueryArgs = (_: {\r\n  queryArgs: any\r\n  endpointDefinition: EndpointDefinition<any, any, any, any>\r\n  endpointName: string\r\n}) => QueryCacheKey\r\n", "import type { Api, ApiContext, Module, ModuleName } from './apiTypes'\r\nimport type { CombinedState } from './core/apiState'\r\nimport type { BaseQueryArg, BaseQueryFn } from './baseQueryTypes'\r\nimport {\r\n  defaultSerializeQueryArgs,\r\n  SerializeQueryArgs,\r\n} from './defaultSerializeQueryArgs'\r\nimport type {\r\n  EndpointBuilder,\r\n  EndpointDefinitions,\r\n} from './endpointDefinitions'\r\nimport { DefinitionType, isQueryDefinition } from './endpointDefinitions'\r\nimport { nanoid } from '@reduxjs/toolkit'\r\nimport type { AnyAction } from '@reduxjs/toolkit'\r\nimport type { NoInfer } from './tsHelpers'\r\nimport { defaultMemoize } from 'reselect'\r\n\r\nexport interface CreateApiOptions<\r\n  BaseQuery extends BaseQueryFn,\r\n  Definitions extends EndpointDefinitions,\r\n  ReducerPath extends string = 'api',\r\n  TagTypes extends string = never\r\n> {\r\n  /**\r\n   * The base query used by each endpoint if no `queryFn` option is specified. RTK Query exports a utility called [fetchBaseQuery](./fetchBaseQuery) as a lightweight wrapper around `fetch` for common use-cases. See [Customizing Queries](../../rtk-query/usage/customizing-queries) if `fetchBaseQuery` does not handle your requirements.\r\n   *\r\n   * @example\r\n   *\r\n   * ```ts\r\n   * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query'\r\n   *\r\n   * const api = createApi({\r\n   *   // highlight-start\r\n   *   baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n   *   // highlight-end\r\n   *   endpoints: (build) => ({\r\n   *     // ...endpoints\r\n   *   }),\r\n   * })\r\n   * ```\r\n   */\r\n  baseQuery: BaseQuery\r\n  /**\r\n   * An array of string tag type names. Specifying tag types is optional, but you should define them so that they can be used for caching and invalidation. When defining a tag type, you will be able to [provide](../../rtk-query/usage/automated-refetching#providing-tags) them with `providesTags` and [invalidate](../../rtk-query/usage/automated-refetching#invalidating-tags) them with `invalidatesTags` when configuring [endpoints](#endpoints).\r\n   *\r\n   * @example\r\n   *\r\n   * ```ts\r\n   * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query'\r\n   *\r\n   * const api = createApi({\r\n   *   baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n   *   // highlight-start\r\n   *   tagTypes: ['Post', 'User'],\r\n   *   // highlight-end\r\n   *   endpoints: (build) => ({\r\n   *     // ...endpoints\r\n   *   }),\r\n   * })\r\n   * ```\r\n   */\r\n  tagTypes?: readonly TagTypes[]\r\n  /**\r\n   * The `reducerPath` is a _unique_ key that your service will be mounted to in your store. If you call `createApi` more than once in your application, you will need to provide a unique value each time. Defaults to `'api'`.\r\n   *\r\n   * @example\r\n   *\r\n   * ```ts\r\n   * // codeblock-meta title=\"apis.js\"\r\n   * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query';\r\n   *\r\n   * const apiOne = createApi({\r\n   *   // highlight-start\r\n   *   reducerPath: 'apiOne',\r\n   *   // highlight-end\r\n   *   baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n   *   endpoints: (builder) => ({\r\n   *     // ...endpoints\r\n   *   }),\r\n   * });\r\n   *\r\n   * const apiTwo = createApi({\r\n   *   // highlight-start\r\n   *   reducerPath: 'apiTwo',\r\n   *   // highlight-end\r\n   *   baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n   *   endpoints: (builder) => ({\r\n   *     // ...endpoints\r\n   *   }),\r\n   * });\r\n   * ```\r\n   */\r\n  reducerPath?: ReducerPath\r\n  /**\r\n   * Accepts a custom function if you have a need to change the creation of cache keys for any reason.\r\n   */\r\n  serializeQueryArgs?: SerializeQueryArgs<BaseQueryArg<BaseQuery>>\r\n  /**\r\n   * Endpoints are just a set of operations that you want to perform against your server. You define them as an object using the builder syntax. There are two basic endpoint types: [`query`](../../rtk-query/usage/queries) and [`mutation`](../../rtk-query/usage/mutations).\r\n   */\r\n  endpoints(\r\n    build: EndpointBuilder<BaseQuery, TagTypes, ReducerPath>\r\n  ): Definitions\r\n  /**\r\n   * Defaults to `60` _(this value is in seconds)_. This is how long RTK Query will keep your data cached for **after** the last component unsubscribes. For example, if you query an endpoint, then unmount the component, then mount another component that makes the same request within the given time frame, the most recent value will be served from the cache.\r\n   *\r\n   * ```ts\r\n   * // codeblock-meta title=\"keepUnusedDataFor example\"\r\n   *\r\n   * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\r\n   * interface Post {\r\n   *   id: number\r\n   *   name: string\r\n   * }\r\n   * type PostsResponse = Post[]\r\n   *\r\n   * const api = createApi({\r\n   *   baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n   *   endpoints: (build) => ({\r\n   *     getPosts: build.query<PostsResponse, void>({\r\n   *       query: () => 'posts',\r\n   *       // highlight-start\r\n   *       keepUnusedDataFor: 5\r\n   *       // highlight-end\r\n   *     })\r\n   *   })\r\n   * })\r\n   * ```\r\n   */\r\n  keepUnusedDataFor?: number\r\n  /**\r\n   * Defaults to `false`. This setting allows you to control whether if a cached result is already available RTK Query will only serve a cached result, or if it should `refetch` when set to `true` or if an adequate amount of time has passed since the last successful query result.\r\n   * - `false` - Will not cause a query to be performed _unless_ it does not exist yet.\r\n   * - `true` - Will always refetch when a new subscriber to a query is added. Behaves the same as calling the `refetch` callback or passing `forceRefetch: true` in the action creator.\r\n   * - `number` - **Value is in seconds**. If a number is provided and there is an existing query in the cache, it will compare the current time vs the last fulfilled timestamp, and only refetch if enough time has elapsed.\r\n   *\r\n   * If you specify this option alongside `skip: true`, this **will not be evaluated** until `skip` is false.\r\n   */\r\n  refetchOnMountOrArgChange?: boolean | number\r\n  /**\r\n   * Defaults to `false`. This setting allows you to control whether RTK Query will try to refetch all subscribed queries after the application window regains focus.\r\n   *\r\n   * If you specify this option alongside `skip: true`, this **will not be evaluated** until `skip` is false.\r\n   *\r\n   * Note: requires [`setupListeners`](./setupListeners) to have been called.\r\n   */\r\n  refetchOnFocus?: boolean\r\n  /**\r\n   * Defaults to `false`. This setting allows you to control whether RTK Query will try to refetch all subscribed queries after regaining a network connection.\r\n   *\r\n   * If you specify this option alongside `skip: true`, this **will not be evaluated** until `skip` is false.\r\n   *\r\n   * Note: requires [`setupListeners`](./setupListeners) to have been called.\r\n   */\r\n  refetchOnReconnect?: boolean\r\n  /**\r\n   * A function that is passed every dispatched action. If this returns something other than `undefined`,\r\n   * that return value will be used to rehydrate fulfilled & errored queries.\r\n   *\r\n   * @example\r\n   *\r\n   * ```ts\r\n   * // codeblock-meta title=\"next-redux-wrapper rehydration example\"\r\n   * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\r\n   * import { HYDRATE } from 'next-redux-wrapper'\r\n   *\r\n   * export const api = createApi({\r\n   *   baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n   *   // highlight-start\r\n   *   extractRehydrationInfo(action, { reducerPath }) {\r\n   *     if (action.type === HYDRATE) {\r\n   *       return action.payload[reducerPath]\r\n   *     }\r\n   *   },\r\n   *   // highlight-end\r\n   *   endpoints: (build) => ({\r\n   *     // omitted\r\n   *   }),\r\n   * })\r\n   * ```\r\n   */\r\n  extractRehydrationInfo?: (\r\n    action: AnyAction,\r\n    {\r\n      reducerPath,\r\n    }: {\r\n      reducerPath: ReducerPath\r\n    }\r\n  ) =>\r\n    | undefined\r\n    | CombinedState<\r\n        NoInfer<Definitions>,\r\n        NoInfer<TagTypes>,\r\n        NoInfer<ReducerPath>\r\n      >\r\n}\r\n\r\nexport type CreateApi<Modules extends ModuleName> = {\r\n  /**\r\n   * Creates a service to use in your application. Contains only the basic redux logic (the core module).\r\n   *\r\n   * @link https://rtk-query-docs.netlify.app/api/createApi\r\n   */\r\n  <\r\n    BaseQuery extends BaseQueryFn,\r\n    Definitions extends EndpointDefinitions,\r\n    ReducerPath extends string = 'api',\r\n    TagTypes extends string = never\r\n  >(\r\n    options: CreateApiOptions<BaseQuery, Definitions, ReducerPath, TagTypes>\r\n  ): Api<BaseQuery, Definitions, ReducerPath, TagTypes, Modules>\r\n}\r\n\r\n/**\r\n * Builds a `createApi` method based on the provided `modules`.\r\n *\r\n * @link https://rtk-query-docs.netlify.app/concepts/customizing-create-api\r\n *\r\n * @example\r\n * ```ts\r\n * const MyContext = React.createContext<ReactReduxContextValue>(null as any);\r\n * const customCreateApi = buildCreateApi(\r\n *   coreModule(),\r\n *   reactHooksModule({ useDispatch: createDispatchHook(MyContext) })\r\n * );\r\n * ```\r\n *\r\n * @param modules - A variable number of modules that customize how the `createApi` method handles endpoints\r\n * @returns A `createApi` method using the provided `modules`.\r\n */\r\nexport function buildCreateApi<Modules extends [Module<any>, ...Module<any>[]]>(\r\n  ...modules: Modules\r\n): CreateApi<Modules[number]['name']> {\r\n  return function baseCreateApi(options) {\r\n    const extractRehydrationInfo = defaultMemoize((action: AnyAction) =>\r\n      options.extractRehydrationInfo?.(action, {\r\n        reducerPath: (options.reducerPath ?? 'api') as any,\r\n      })\r\n    )\r\n\r\n    const optionsWithDefaults: CreateApiOptions<any, any, any, any> = {\r\n      reducerPath: 'api',\r\n      keepUnusedDataFor: 60,\r\n      refetchOnMountOrArgChange: false,\r\n      refetchOnFocus: false,\r\n      refetchOnReconnect: false,\r\n      ...options,\r\n      extractRehydrationInfo,\r\n      serializeQueryArgs(queryArgsApi) {\r\n        let finalSerializeQueryArgs = defaultSerializeQueryArgs\r\n        if ('serializeQueryArgs' in queryArgsApi.endpointDefinition) {\r\n          const endpointSQA =\r\n            queryArgsApi.endpointDefinition.serializeQueryArgs!\r\n          finalSerializeQueryArgs = (queryArgsApi) => {\r\n            const initialResult = endpointSQA(queryArgsApi)\r\n            if (typeof initialResult === 'string') {\r\n              // If the user function returned a string, use it as-is\r\n              return initialResult\r\n            } else {\r\n              // Assume they returned an object (such as a subset of the original\r\n              // query args) or a primitive, and serialize it ourselves\r\n              return defaultSerializeQueryArgs({\r\n                ...queryArgsApi,\r\n                queryArgs: initialResult,\r\n              })\r\n            }\r\n          }\r\n        } else if (options.serializeQueryArgs) {\r\n          finalSerializeQueryArgs = options.serializeQueryArgs\r\n        }\r\n\r\n        return finalSerializeQueryArgs(queryArgsApi)\r\n      },\r\n      tagTypes: [...(options.tagTypes || [])],\r\n    }\r\n\r\n    const context: ApiContext<EndpointDefinitions> = {\r\n      endpointDefinitions: {},\r\n      batch(fn) {\r\n        // placeholder \"batch\" method to be overridden by plugins, for example with React.unstable_batchedUpdate\r\n        fn()\r\n      },\r\n      apiUid: nanoid(),\r\n      extractRehydrationInfo,\r\n      hasRehydrationInfo: defaultMemoize(\r\n        (action) => extractRehydrationInfo(action) != null\r\n      ),\r\n    }\r\n\r\n    const api = {\r\n      injectEndpoints,\r\n      enhanceEndpoints({ addTagTypes, endpoints }) {\r\n        if (addTagTypes) {\r\n          for (const eT of addTagTypes) {\r\n            if (!optionsWithDefaults.tagTypes!.includes(eT as any)) {\r\n              ;(optionsWithDefaults.tagTypes as any[]).push(eT)\r\n            }\r\n          }\r\n        }\r\n        if (endpoints) {\r\n          for (const [endpointName, partialDefinition] of Object.entries(\r\n            endpoints\r\n          )) {\r\n            if (typeof partialDefinition === 'function') {\r\n              partialDefinition(context.endpointDefinitions[endpointName])\r\n            } else {\r\n              Object.assign(\r\n                context.endpointDefinitions[endpointName] || {},\r\n                partialDefinition\r\n              )\r\n            }\r\n          }\r\n        }\r\n        return api\r\n      },\r\n    } as Api<BaseQueryFn, {}, string, string, Modules[number]['name']>\r\n\r\n    const initializedModules = modules.map((m) =>\r\n      m.init(api as any, optionsWithDefaults as any, context)\r\n    )\r\n\r\n    function injectEndpoints(\r\n      inject: Parameters<typeof api.injectEndpoints>[0]\r\n    ) {\r\n      const evaluatedEndpoints = inject.endpoints({\r\n        query: (x) => ({ ...x, type: DefinitionType.query } as any),\r\n        mutation: (x) => ({ ...x, type: DefinitionType.mutation } as any),\r\n      })\r\n\r\n      for (const [endpointName, definition] of Object.entries(\r\n        evaluatedEndpoints\r\n      )) {\r\n        if (\r\n          !inject.overrideExisting &&\r\n          endpointName in context.endpointDefinitions\r\n        ) {\r\n          if (\r\n            typeof process !== 'undefined' &&\r\n            process.env.NODE_ENV === 'development'\r\n          ) {\r\n            console.error(\r\n              `called \\`injectEndpoints\\` to override already-existing endpointName ${endpointName} without specifying \\`overrideExisting: true\\``\r\n            )\r\n          }\r\n\r\n          continue\r\n        }\r\n\r\n        context.endpointDefinitions[endpointName] = definition\r\n        for (const m of initializedModules) {\r\n          m.injectEndpoint(endpointName, definition)\r\n        }\r\n      }\r\n\r\n      return api as any\r\n    }\r\n\r\n    return api.injectEndpoints({ endpoints: options.endpoints as any })\r\n  }\r\n}\r\n", "import type { BaseQueryFn } from './baseQueryTypes'\r\n\r\nconst _NEVER = /* @__PURE__ */ Symbol()\r\nexport type NEVER = typeof _NEVER\r\n\r\n/**\r\n * Creates a \"fake\" baseQuery to be used if your api *only* uses the `queryFn` definition syntax.\r\n * This also allows you to specify a specific error type to be shared by all your `queryFn` definitions.\r\n */\r\nexport function fakeBaseQuery<ErrorType>(): BaseQueryFn<\r\n  void,\r\n  NEVER,\r\n  ErrorType,\r\n  {}\r\n> {\r\n  return function () {\r\n    throw new Error(\r\n      'When using `fakeBaseQuery`, all queries & mutations must use the `queryFn` definition syntax.'\r\n    )\r\n  }\r\n}\r\n", "import type { AnyAction, Middleware, ThunkDispatch } from '@reduxjs/toolkit'\r\nimport { createAction } from '@reduxjs/toolkit'\r\n\r\nimport type {\r\n  EndpointDefinitions,\r\n  FullTagDescription,\r\n} from '../../endpointDefinitions'\r\nimport type { QueryStatus, QuerySubState, RootState } from '../apiState'\r\nimport type { QueryThunkArg } from '../buildThunks'\r\nimport { buildCacheCollectionHandler } from './cacheCollection'\r\nimport { buildInvalidationByTagsHandler } from './invalidationByTags'\r\nimport { buildPollingHandler } from './polling'\r\nimport type {\r\n  BuildMiddlewareInput,\r\n  InternalHandlerBuilder,\r\n  InternalMiddlewareState,\r\n} from './types'\r\nimport { buildWindowEventHandler } from './windowEventHandling'\r\nimport { buildCacheLifecycleHandler } from './cacheLifecycle'\r\nimport { buildQueryLifecycleHandler } from './queryLifecycle'\r\nimport { buildDevCheckHandler } from './devMiddleware'\r\nimport { buildBatchedActionsHandler } from './batchActions'\r\n\r\nexport function buildMiddleware<\r\n  Definitions extends EndpointDefinitions,\r\n  ReducerPath extends string,\r\n  TagTypes extends string\r\n>(input: BuildMiddlewareInput<Definitions, ReducerPath, TagTypes>) {\r\n  const { reducerPath, queryThunk, api, context } = input\r\n  const { apiUid } = context\r\n\r\n  const actions = {\r\n    invalidateTags: createAction<\r\n      Array<TagTypes | FullTagDescription<TagTypes>>\r\n    >(`${reducerPath}/invalidateTags`),\r\n  }\r\n\r\n  const isThisApiSliceAction = (action: AnyAction) => {\r\n    return (\r\n      !!action &&\r\n      typeof action.type === 'string' &&\r\n      action.type.startsWith(`${reducerPath}/`)\r\n    )\r\n  }\r\n\r\n  const handlerBuilders: InternalHandlerBuilder[] = [\r\n    buildDevCheckHandler,\r\n    buildCacheCollectionHandler,\r\n    buildInvalidationByTagsHandler,\r\n    buildPollingHandler,\r\n    buildCacheLifecycleHandler,\r\n    buildQueryLifecycleHandler,\r\n  ]\r\n\r\n  const middleware: Middleware<\r\n    {},\r\n    RootState<Definitions, string, ReducerPath>,\r\n    ThunkDispatch<any, any, AnyAction>\r\n  > = (mwApi) => {\r\n    let initialized = false\r\n\r\n    let internalState: InternalMiddlewareState = {\r\n      currentSubscriptions: {},\r\n    }\r\n\r\n    const builderArgs = {\r\n      ...(input as any as BuildMiddlewareInput<\r\n        EndpointDefinitions,\r\n        string,\r\n        string\r\n      >),\r\n      internalState,\r\n      refetchQuery,\r\n    }\r\n\r\n    const handlers = handlerBuilders.map((build) => build(builderArgs))\r\n\r\n    const batchedActionsHandler = buildBatchedActionsHandler(builderArgs)\r\n    const windowEventsHandler = buildWindowEventHandler(builderArgs)\r\n\r\n    return (next) => {\r\n      return (action) => {\r\n        if (!initialized) {\r\n          initialized = true\r\n          // dispatch before any other action\r\n          mwApi.dispatch(api.internalActions.middlewareRegistered(apiUid))\r\n        }\r\n\r\n        const mwApiWithNext = { ...mwApi, next }\r\n\r\n        const stateBefore = mwApi.getState()\r\n\r\n        const [actionShouldContinue, hasSubscription] = batchedActionsHandler(\r\n          action,\r\n          mwApiWithNext,\r\n          stateBefore\r\n        )\r\n\r\n        let res: any\r\n\r\n        if (actionShouldContinue) {\r\n          res = next(action)\r\n        } else {\r\n          res = hasSubscription\r\n        }\r\n\r\n        if (!!mwApi.getState()[reducerPath]) {\r\n          // Only run these checks if the middleware is registered okay\r\n\r\n          // This looks for actions that aren't specific to the API slice\r\n          windowEventsHandler(action, mwApiWithNext, stateBefore)\r\n\r\n          if (\r\n            isThisApiSliceAction(action) ||\r\n            context.hasRehydrationInfo(action)\r\n          ) {\r\n            // Only run these additional checks if the actions are part of the API slice,\r\n            // or the action has hydration-related data\r\n            for (let handler of handlers) {\r\n              handler(action, mwApiWithNext, stateBefore)\r\n            }\r\n          }\r\n        }\r\n\r\n        return res\r\n      }\r\n    }\r\n  }\r\n\r\n  return { middleware, actions }\r\n\r\n  function refetchQuery(\r\n    querySubState: Exclude<\r\n      QuerySubState<any>,\r\n      { status: QueryStatus.uninitialized }\r\n    >,\r\n    queryCacheKey: string,\r\n    override: Partial<QueryThunkArg> = {}\r\n  ) {\r\n    return queryThunk({\r\n      type: 'query',\r\n      endpointName: querySubState.endpointName,\r\n      originalArgs: querySubState.originalArgs,\r\n      subscribe: false,\r\n      forceRefetch: true,\r\n      queryCacheKey: queryCacheKey as any,\r\n      ...override,\r\n    })\r\n  }\r\n}\r\n", "import type { BaseQueryFn } from '../../baseQueryTypes'\r\nimport type { QueryDefinition } from '../../endpointDefinitions'\r\nimport type { ConfigState, QueryCacheKey } from '../apiState'\r\nimport type {\r\n  QueryStateMeta,\r\n  SubMiddlewareApi,\r\n  TimeoutId,\r\n  InternalHandlerBuilder,\r\n  ApiMiddlewareInternalHandler,\r\n  InternalMiddlewareState,\r\n} from './types'\r\n\r\nexport type ReferenceCacheCollection = never\r\n\r\nfunction isObjectEmpty(obj: Record<any, any>) {\r\n  // Apparently a for..in loop is faster than `Object.keys()` here:\r\n  // https://stackoverflow.com/a/59787784/62937\r\n  for (let k in obj) {\r\n    // If there is at least one key, it's not empty\r\n    return false\r\n  }\r\n  return true\r\n}\r\n\r\ndeclare module '../../endpointDefinitions' {\r\n  interface QueryExtraOptions<\r\n    TagTypes extends string,\r\n    ResultType,\r\n    QueryArg,\r\n    BaseQuery extends BaseQueryFn,\r\n    ReducerPath extends string = string\r\n  > {\r\n    /**\r\n     * Overrides the api-wide definition of `keepUnusedDataFor` for this endpoint only. _(This value is in seconds.)_\r\n     *\r\n     * This is how long RTK Query will keep your data cached for **after** the last component unsubscribes. For example, if you query an endpoint, then unmount the component, then mount another component that makes the same request within the given time frame, the most recent value will be served from the cache.\r\n     */\r\n    keepUnusedDataFor?: number\r\n  }\r\n}\r\n\r\n// Per https://developer.mozilla.org/en-US/docs/Web/API/setTimeout#maximum_delay_value , browsers store\r\n// `setTimeout()` timer values in a 32-bit int. If we pass a value in that's larger than that,\r\n// it wraps and ends up executing immediately.\r\n// Our `keepUnusedDataFor` values are in seconds, so adjust the numbers here accordingly.\r\nexport const THIRTY_TWO_BIT_MAX_INT = 2_147_483_647\r\nexport const THIRTY_TWO_BIT_MAX_TIMER_SECONDS = 2_147_483_647 / 1_000 - 1\r\n\r\nexport const buildCacheCollectionHandler: InternalHandlerBuilder = ({\r\n  reducerPath,\r\n  api,\r\n  context,\r\n  internalState,\r\n}) => {\r\n  const { removeQueryResult, unsubscribeQueryResult } = api.internalActions\r\n\r\n  function anySubscriptionsRemainingForKey(queryCacheKey: string) {\r\n    const subscriptions = internalState.currentSubscriptions[queryCacheKey]\r\n    return !!subscriptions && !isObjectEmpty(subscriptions)\r\n  }\r\n\r\n  const currentRemovalTimeouts: QueryStateMeta<TimeoutId> = {}\r\n\r\n  const handler: ApiMiddlewareInternalHandler = (\r\n    action,\r\n    mwApi,\r\n    internalState\r\n  ) => {\r\n    if (unsubscribeQueryResult.match(action)) {\r\n      const state = mwApi.getState()[reducerPath]\r\n      const { queryCacheKey } = action.payload\r\n\r\n      handleUnsubscribe(\r\n        queryCacheKey,\r\n        state.queries[queryCacheKey]?.endpointName,\r\n        mwApi,\r\n        state.config\r\n      )\r\n    }\r\n\r\n    if (api.util.resetApiState.match(action)) {\r\n      for (const [key, timeout] of Object.entries(currentRemovalTimeouts)) {\r\n        if (timeout) clearTimeout(timeout)\r\n        delete currentRemovalTimeouts[key]\r\n      }\r\n    }\r\n\r\n    if (context.hasRehydrationInfo(action)) {\r\n      const state = mwApi.getState()[reducerPath]\r\n      const { queries } = context.extractRehydrationInfo(action)!\r\n      for (const [queryCacheKey, queryState] of Object.entries(queries)) {\r\n        // Gotcha:\r\n        // If rehydrating before the endpoint has been injected,the global `keepUnusedDataFor`\r\n        // will be used instead of the endpoint-specific one.\r\n        handleUnsubscribe(\r\n          queryCacheKey as QueryCacheKey,\r\n          queryState?.endpointName,\r\n          mwApi,\r\n          state.config\r\n        )\r\n      }\r\n    }\r\n  }\r\n\r\n  function handleUnsubscribe(\r\n    queryCacheKey: QueryCacheKey,\r\n    endpointName: string | undefined,\r\n    api: SubMiddlewareApi,\r\n    config: ConfigState<string>\r\n  ) {\r\n    const endpointDefinition = context.endpointDefinitions[\r\n      endpointName!\r\n    ] as QueryDefinition<any, any, any, any>\r\n    const keepUnusedDataFor =\r\n      endpointDefinition?.keepUnusedDataFor ?? config.keepUnusedDataFor\r\n\r\n    if (keepUnusedDataFor === Infinity) {\r\n      // Hey, user said keep this forever!\r\n      return\r\n    }\r\n    // Prevent `setTimeout` timers from overflowing a 32-bit internal int, by\r\n    // clamping the max value to be at most 1000ms less than the 32-bit max.\r\n    // Look, a 24.8-day keepalive ought to be enough for anybody, right? :)\r\n    // Also avoid negative values too.\r\n    const finalKeepUnusedDataFor = Math.max(\r\n      0,\r\n      Math.min(keepUnusedDataFor, THIRTY_TWO_BIT_MAX_TIMER_SECONDS)\r\n    )\r\n\r\n    if (!anySubscriptionsRemainingForKey(queryCacheKey)) {\r\n      const currentTimeout = currentRemovalTimeouts[queryCacheKey]\r\n      if (currentTimeout) {\r\n        clearTimeout(currentTimeout)\r\n      }\r\n      currentRemovalTimeouts[queryCacheKey] = setTimeout(() => {\r\n        if (!anySubscriptionsRemainingForKey(queryCacheKey)) {\r\n          api.dispatch(removeQueryResult({ queryCacheKey }))\r\n        }\r\n        delete currentRemovalTimeouts![queryCacheKey]\r\n      }, finalKeepUnusedDataFor * 1000)\r\n    }\r\n  }\r\n\r\n  return handler\r\n}\r\n", "import { isAnyOf, isFulfilled, isRejectedWithValue } from '@reduxjs/toolkit'\r\n\r\nimport type { FullTagDescription } from '../../endpointDefinitions'\r\nimport { calculateProvidedBy } from '../../endpointDefinitions'\r\nimport type { QueryCacheKey } from '../apiState'\r\nimport { QueryStatus } from '../apiState'\r\nimport { calculateProvidedByThunk } from '../buildThunks'\r\nimport type {\r\n  SubMiddlewareApi,\r\n  InternalHandlerBuilder,\r\n  ApiMiddlewareInternalHandler,\r\n} from './types'\r\n\r\nexport const buildInvalidationByTagsHandler: InternalHandlerBuilder = ({\r\n  reducerPath,\r\n  context,\r\n  context: { endpointDefinitions },\r\n  mutationThunk,\r\n  api,\r\n  assertTagType,\r\n  refetchQuery,\r\n}) => {\r\n  const { removeQueryResult } = api.internalActions\r\n  const isThunkActionWithTags = isAnyOf(\r\n    isFulfilled(mutationThunk),\r\n    isRejectedWithValue(mutationThunk)\r\n  )\r\n\r\n  const handler: ApiMiddlewareInternalHandler = (action, mwApi) => {\r\n    if (isThunkActionWithTags(action)) {\r\n      invalidateTags(\r\n        calculateProvidedByThunk(\r\n          action,\r\n          'invalidatesTags',\r\n          endpointDefinitions,\r\n          assertTagType\r\n        ),\r\n        mwApi\r\n      )\r\n    }\r\n\r\n    if (api.util.invalidateTags.match(action)) {\r\n      invalidateTags(\r\n        calculateProvidedBy(\r\n          action.payload,\r\n          undefined,\r\n          undefined,\r\n          undefined,\r\n          undefined,\r\n          assertTagType\r\n        ),\r\n        mwApi\r\n      )\r\n    }\r\n  }\r\n\r\n  function invalidateTags(\r\n    tags: readonly FullTagDescription<string>[],\r\n    mwApi: SubMiddlewareApi\r\n  ) {\r\n    const rootState = mwApi.getState()\r\n    const state = rootState[reducerPath]\r\n\r\n    const toInvalidate = api.util.selectInvalidatedBy(rootState, tags)\r\n\r\n    context.batch(() => {\r\n      const valuesArray = Array.from(toInvalidate.values())\r\n      for (const { queryCacheKey } of valuesArray) {\r\n        const querySubState = state.queries[queryCacheKey]\r\n        const subscriptionSubState = state.subscriptions[queryCacheKey] ?? {}\r\n\r\n        if (querySubState) {\r\n          if (Object.keys(subscriptionSubState).length === 0) {\r\n            mwApi.dispatch(\r\n              removeQueryResult({\r\n                queryCacheKey: queryCacheKey as QueryCacheKey,\r\n              })\r\n            )\r\n          } else if (querySubState.status !== QueryStatus.uninitialized) {\r\n            mwApi.dispatch(refetchQuery(querySubState, queryCacheKey))\r\n          }\r\n        }\r\n      }\r\n    })\r\n  }\r\n\r\n  return handler\r\n}\r\n", "import type { QuerySubstateIdentifier, Subscribers } from '../apiState'\r\nimport { QueryStatus } from '../apiState'\r\nimport type {\r\n  QueryStateMeta,\r\n  SubMiddlewareApi,\r\n  TimeoutId,\r\n  InternalHandlerBuilder,\r\n  ApiMiddlewareInternalHandler,\r\n  InternalMiddlewareState,\r\n} from './types'\r\n\r\nexport const buildPollingHandler: InternalHandlerBuilder = ({\r\n  reducerPath,\r\n  queryThunk,\r\n  api,\r\n  refetchQuery,\r\n  internalState,\r\n}) => {\r\n  const currentPolls: QueryStateMeta<{\r\n    nextPollTimestamp: number\r\n    timeout?: TimeoutId\r\n    pollingInterval: number\r\n  }> = {}\r\n\r\n  const handler: ApiMiddlewareInternalHandler = (action, mwApi) => {\r\n    if (\r\n      api.internalActions.updateSubscriptionOptions.match(action) ||\r\n      api.internalActions.unsubscribeQueryResult.match(action)\r\n    ) {\r\n      updatePollingInterval(action.payload, mwApi)\r\n    }\r\n\r\n    if (\r\n      queryThunk.pending.match(action) ||\r\n      (queryThunk.rejected.match(action) && action.meta.condition)\r\n    ) {\r\n      updatePollingInterval(action.meta.arg, mwApi)\r\n    }\r\n\r\n    if (\r\n      queryThunk.fulfilled.match(action) ||\r\n      (queryThunk.rejected.match(action) && !action.meta.condition)\r\n    ) {\r\n      startNextPoll(action.meta.arg, mwApi)\r\n    }\r\n\r\n    if (api.util.resetApiState.match(action)) {\r\n      clearPolls()\r\n    }\r\n  }\r\n\r\n  function startNextPoll(\r\n    { queryCacheKey }: QuerySubstateIdentifier,\r\n    api: SubMiddlewareApi\r\n  ) {\r\n    const state = api.getState()[reducerPath]\r\n    const querySubState = state.queries[queryCacheKey]\r\n    const subscriptions = internalState.currentSubscriptions[queryCacheKey]\r\n\r\n    if (!querySubState || querySubState.status === QueryStatus.uninitialized)\r\n      return\r\n\r\n    const lowestPollingInterval = findLowestPollingInterval(subscriptions)\r\n    if (!Number.isFinite(lowestPollingInterval)) return\r\n\r\n    const currentPoll = currentPolls[queryCacheKey]\r\n\r\n    if (currentPoll?.timeout) {\r\n      clearTimeout(currentPoll.timeout)\r\n      currentPoll.timeout = undefined\r\n    }\r\n\r\n    const nextPollTimestamp = Date.now() + lowestPollingInterval\r\n\r\n    const currentInterval: typeof currentPolls[number] = (currentPolls[\r\n      queryCacheKey\r\n    ] = {\r\n      nextPollTimestamp,\r\n      pollingInterval: lowestPollingInterval,\r\n      timeout: setTimeout(() => {\r\n        currentInterval!.timeout = undefined\r\n        api.dispatch(refetchQuery(querySubState, queryCacheKey))\r\n      }, lowestPollingInterval),\r\n    })\r\n  }\r\n\r\n  function updatePollingInterval(\r\n    { queryCacheKey }: QuerySubstateIdentifier,\r\n    api: SubMiddlewareApi\r\n  ) {\r\n    const state = api.getState()[reducerPath]\r\n    const querySubState = state.queries[queryCacheKey]\r\n    const subscriptions = internalState.currentSubscriptions[queryCacheKey]\r\n\r\n    if (!querySubState || querySubState.status === QueryStatus.uninitialized) {\r\n      return\r\n    }\r\n\r\n    const lowestPollingInterval = findLowestPollingInterval(subscriptions)\r\n\r\n    if (!Number.isFinite(lowestPollingInterval)) {\r\n      cleanupPollForKey(queryCacheKey)\r\n      return\r\n    }\r\n\r\n    const currentPoll = currentPolls[queryCacheKey]\r\n    const nextPollTimestamp = Date.now() + lowestPollingInterval\r\n\r\n    if (!currentPoll || nextPollTimestamp < currentPoll.nextPollTimestamp) {\r\n      startNextPoll({ queryCacheKey }, api)\r\n    }\r\n  }\r\n\r\n  function cleanupPollForKey(key: string) {\r\n    const existingPoll = currentPolls[key]\r\n    if (existingPoll?.timeout) {\r\n      clearTimeout(existingPoll.timeout)\r\n    }\r\n    delete currentPolls[key]\r\n  }\r\n\r\n  function clearPolls() {\r\n    for (const key of Object.keys(currentPolls)) {\r\n      cleanupPollForKey(key)\r\n    }\r\n  }\r\n\r\n  function findLowestPollingInterval(subscribers: Subscribers = {}) {\r\n    let lowestPollingInterval = Number.POSITIVE_INFINITY\r\n    for (let key in subscribers) {\r\n      if (!!subscribers[key].pollingInterval) {\r\n        lowestPollingInterval = Math.min(\r\n          subscribers[key].pollingInterval!,\r\n          lowestPollingInterval\r\n        )\r\n      }\r\n    }\r\n\r\n    return lowestPollingInterval\r\n  }\r\n  return handler\r\n}\r\n", "import { QueryStatus } from '../apiState'\r\nimport type { QueryCacheKey } from '../apiState'\r\nimport { onFocus, onOnline } from '../setupListeners'\r\nimport type {\r\n  ApiMiddlewareInternalHandler,\r\n  InternalHandlerBuilder,\r\n  SubMiddlewareApi,\r\n} from './types'\r\n\r\nexport const buildWindowEventHandler: InternalHandlerBuilder = ({\r\n  reducerPath,\r\n  context,\r\n  api,\r\n  refetchQuery,\r\n  internalState,\r\n}) => {\r\n  const { removeQueryResult } = api.internalActions\r\n\r\n  const handler: ApiMiddlewareInternalHandler = (action, mwApi) => {\r\n    if (onFocus.match(action)) {\r\n      refetchValidQueries(mwApi, 'refetchOnFocus')\r\n    }\r\n    if (onOnline.match(action)) {\r\n      refetchValidQueries(mwApi, 'refetchOnReconnect')\r\n    }\r\n  }\r\n\r\n  function refetchValidQueries(\r\n    api: SubMiddlewareApi,\r\n    type: 'refetchOnFocus' | 'refetchOnReconnect'\r\n  ) {\r\n    const state = api.getState()[reducerPath]\r\n    const queries = state.queries\r\n    const subscriptions = internalState.currentSubscriptions\r\n\r\n    context.batch(() => {\r\n      for (const queryCacheKey of Object.keys(subscriptions)) {\r\n        const querySubState = queries[queryCacheKey]\r\n        const subscriptionSubState = subscriptions[queryCacheKey]\r\n\r\n        if (!subscriptionSubState || !querySubState) continue\r\n\r\n        const shouldRefetch =\r\n          Object.values(subscriptionSubState).some(\r\n            (sub) => sub[type] === true\r\n          ) ||\r\n          (Object.values(subscriptionSubState).every(\r\n            (sub) => sub[type] === undefined\r\n          ) &&\r\n            state.config[type])\r\n\r\n        if (shouldRefetch) {\r\n          if (Object.keys(subscriptionSubState).length === 0) {\r\n            api.dispatch(\r\n              removeQueryResult({\r\n                queryCacheKey: queryCacheKey as QueryCacheKey,\r\n              })\r\n            )\r\n          } else if (querySubState.status !== QueryStatus.uninitialized) {\r\n            api.dispatch(refetchQuery(querySubState, queryCacheKey))\r\n          }\r\n        }\r\n      }\r\n    })\r\n  }\r\n\r\n  return handler\r\n}\r\n", "import { isAsyncThunkAction, isFulfilled } from '@reduxjs/toolkit'\r\nimport type { AnyAction } from 'redux'\r\nimport type { ThunkDispatch } from 'redux-thunk'\r\nimport type { BaseQueryFn, BaseQueryMeta } from '../../baseQueryTypes'\r\nimport { DefinitionType } from '../../endpointDefinitions'\r\nimport type { RootState } from '../apiState'\r\nimport type {\r\n  MutationResultSelectorResult,\r\n  QueryResultSelectorResult,\r\n} from '../buildSelectors'\r\nimport { getMutationCacheKey } from '../buildSlice'\r\nimport type { PatchCollection, Recipe } from '../buildThunks'\r\nimport type {\r\n  ApiMiddlewareInternalHandler,\r\n  InternalHandlerBuilder,\r\n  PromiseWithKnownReason,\r\n  SubMiddlewareApi,\r\n} from './types'\r\n\r\nexport type ReferenceCacheLifecycle = never\r\n\r\ndeclare module '../../endpointDefinitions' {\r\n  export interface QueryBaseLifecycleApi<\r\n    QueryArg,\r\n    BaseQuery extends BaseQueryFn,\r\n    ResultType,\r\n    ReducerPath extends string = string\r\n  > extends LifecycleApi<ReducerPath> {\r\n    /**\r\n     * Gets the current value of this cache entry.\r\n     */\r\n    getCacheEntry(): QueryResultSelectorResult<\r\n      { type: DefinitionType.query } & BaseEndpointDefinition<\r\n        QueryArg,\r\n        BaseQuery,\r\n        ResultType\r\n      >\r\n    >\r\n    /**\r\n     * Updates the current cache entry value.\r\n     * For documentation see `api.util.updateQueryData`.\r\n     */\r\n    updateCachedData(updateRecipe: Recipe<ResultType>): PatchCollection\r\n  }\r\n\r\n  export interface MutationBaseLifecycleApi<\r\n    QueryArg,\r\n    BaseQuery extends BaseQueryFn,\r\n    ResultType,\r\n    ReducerPath extends string = string\r\n  > extends LifecycleApi<ReducerPath> {\r\n    /**\r\n     * Gets the current value of this cache entry.\r\n     */\r\n    getCacheEntry(): MutationResultSelectorResult<\r\n      { type: DefinitionType.mutation } & BaseEndpointDefinition<\r\n        QueryArg,\r\n        BaseQuery,\r\n        ResultType\r\n      >\r\n    >\r\n  }\r\n\r\n  export interface LifecycleApi<ReducerPath extends string = string> {\r\n    /**\r\n     * The dispatch method for the store\r\n     */\r\n    dispatch: ThunkDispatch<any, any, AnyAction>\r\n    /**\r\n     * A method to get the current state\r\n     */\r\n    getState(): RootState<any, any, ReducerPath>\r\n    /**\r\n     * `extra` as provided as `thunk.extraArgument` to the `configureStore` `getDefaultMiddleware` option.\r\n     */\r\n    extra: unknown\r\n    /**\r\n     * A unique ID generated for the mutation\r\n     */\r\n    requestId: string\r\n  }\r\n\r\n  export interface CacheLifecyclePromises<\r\n    ResultType = unknown,\r\n    MetaType = unknown\r\n  > {\r\n    /**\r\n     * Promise that will resolve with the first value for this cache key.\r\n     * This allows you to `await` until an actual value is in cache.\r\n     *\r\n     * If the cache entry is removed from the cache before any value has ever\r\n     * been resolved, this Promise will reject with\r\n     * `new Error('Promise never resolved before cacheEntryRemoved.')`\r\n     * to prevent memory leaks.\r\n     * You can just re-throw that error (or not handle it at all) -\r\n     * it will be caught outside of `cacheEntryAdded`.\r\n     *\r\n     * If you don't interact with this promise, it will not throw.\r\n     */\r\n    cacheDataLoaded: PromiseWithKnownReason<\r\n      {\r\n        /**\r\n         * The (transformed) query result.\r\n         */\r\n        data: ResultType\r\n        /**\r\n         * The `meta` returned by the `baseQuery`\r\n         */\r\n        meta: MetaType\r\n      },\r\n      typeof neverResolvedError\r\n    >\r\n    /**\r\n     * Promise that allows you to wait for the point in time when the cache entry\r\n     * has been removed from the cache, by not being used/subscribed to any more\r\n     * in the application for too long or by dispatching `api.util.resetApiState`.\r\n     */\r\n    cacheEntryRemoved: Promise<void>\r\n  }\r\n\r\n  export interface QueryCacheLifecycleApi<\r\n    QueryArg,\r\n    BaseQuery extends BaseQueryFn,\r\n    ResultType,\r\n    ReducerPath extends string = string\r\n  > extends QueryBaseLifecycleApi<QueryArg, BaseQuery, ResultType, ReducerPath>,\r\n      CacheLifecyclePromises<ResultType, BaseQueryMeta<BaseQuery>> {}\r\n\r\n  export interface MutationCacheLifecycleApi<\r\n    QueryArg,\r\n    BaseQuery extends BaseQueryFn,\r\n    ResultType,\r\n    ReducerPath extends string = string\r\n  > extends MutationBaseLifecycleApi<\r\n        QueryArg,\r\n        BaseQuery,\r\n        ResultType,\r\n        ReducerPath\r\n      >,\r\n      CacheLifecyclePromises<ResultType, BaseQueryMeta<BaseQuery>> {}\r\n\r\n  interface QueryExtraOptions<\r\n    TagTypes extends string,\r\n    ResultType,\r\n    QueryArg,\r\n    BaseQuery extends BaseQueryFn,\r\n    ReducerPath extends string = string\r\n  > {\r\n    onCacheEntryAdded?(\r\n      arg: QueryArg,\r\n      api: QueryCacheLifecycleApi<QueryArg, BaseQuery, ResultType, ReducerPath>\r\n    ): Promise<void> | void\r\n  }\r\n\r\n  interface MutationExtraOptions<\r\n    TagTypes extends string,\r\n    ResultType,\r\n    QueryArg,\r\n    BaseQuery extends BaseQueryFn,\r\n    ReducerPath extends string = string\r\n  > {\r\n    onCacheEntryAdded?(\r\n      arg: QueryArg,\r\n      api: MutationCacheLifecycleApi<\r\n        QueryArg,\r\n        BaseQuery,\r\n        ResultType,\r\n        ReducerPath\r\n      >\r\n    ): Promise<void> | void\r\n  }\r\n}\r\n\r\nconst neverResolvedError = new Error(\r\n  'Promise never resolved before cacheEntryRemoved.'\r\n) as Error & {\r\n  message: 'Promise never resolved before cacheEntryRemoved.'\r\n}\r\n\r\nexport const buildCacheLifecycleHandler: InternalHandlerBuilder = ({\r\n  api,\r\n  reducerPath,\r\n  context,\r\n  queryThunk,\r\n  mutationThunk,\r\n  internalState,\r\n}) => {\r\n  const isQueryThunk = isAsyncThunkAction(queryThunk)\r\n  const isMutationThunk = isAsyncThunkAction(mutationThunk)\r\n  const isFulfilledThunk = isFulfilled(queryThunk, mutationThunk)\r\n\r\n  type CacheLifecycle = {\r\n    valueResolved?(value: { data: unknown; meta: unknown }): unknown\r\n    cacheEntryRemoved(): void\r\n  }\r\n  const lifecycleMap: Record<string, CacheLifecycle> = {}\r\n\r\n  const handler: ApiMiddlewareInternalHandler = (\r\n    action,\r\n    mwApi,\r\n    stateBefore\r\n  ) => {\r\n    const cacheKey = getCacheKey(action)\r\n\r\n    if (queryThunk.pending.match(action)) {\r\n      const oldState = stateBefore[reducerPath].queries[cacheKey]\r\n      const state = mwApi.getState()[reducerPath].queries[cacheKey]\r\n      if (!oldState && state) {\r\n        handleNewKey(\r\n          action.meta.arg.endpointName,\r\n          action.meta.arg.originalArgs,\r\n          cacheKey,\r\n          mwApi,\r\n          action.meta.requestId\r\n        )\r\n      }\r\n    } else if (mutationThunk.pending.match(action)) {\r\n      const state = mwApi.getState()[reducerPath].mutations[cacheKey]\r\n      if (state) {\r\n        handleNewKey(\r\n          action.meta.arg.endpointName,\r\n          action.meta.arg.originalArgs,\r\n          cacheKey,\r\n          mwApi,\r\n          action.meta.requestId\r\n        )\r\n      }\r\n    } else if (isFulfilledThunk(action)) {\r\n      const lifecycle = lifecycleMap[cacheKey]\r\n      if (lifecycle?.valueResolved) {\r\n        lifecycle.valueResolved({\r\n          data: action.payload,\r\n          meta: action.meta.baseQueryMeta,\r\n        })\r\n        delete lifecycle.valueResolved\r\n      }\r\n    } else if (\r\n      api.internalActions.removeQueryResult.match(action) ||\r\n      api.internalActions.removeMutationResult.match(action)\r\n    ) {\r\n      const lifecycle = lifecycleMap[cacheKey]\r\n      if (lifecycle) {\r\n        delete lifecycleMap[cacheKey]\r\n        lifecycle.cacheEntryRemoved()\r\n      }\r\n    } else if (api.util.resetApiState.match(action)) {\r\n      for (const [cacheKey, lifecycle] of Object.entries(lifecycleMap)) {\r\n        delete lifecycleMap[cacheKey]\r\n        lifecycle.cacheEntryRemoved()\r\n      }\r\n    }\r\n  }\r\n\r\n  function getCacheKey(action: any) {\r\n    if (isQueryThunk(action)) return action.meta.arg.queryCacheKey\r\n    if (isMutationThunk(action)) return action.meta.requestId\r\n    if (api.internalActions.removeQueryResult.match(action))\r\n      return action.payload.queryCacheKey\r\n    if (api.internalActions.removeMutationResult.match(action))\r\n      return getMutationCacheKey(action.payload)\r\n    return ''\r\n  }\r\n\r\n  function handleNewKey(\r\n    endpointName: string,\r\n    originalArgs: any,\r\n    queryCacheKey: string,\r\n    mwApi: SubMiddlewareApi,\r\n    requestId: string\r\n  ) {\r\n    const endpointDefinition = context.endpointDefinitions[endpointName]\r\n    const onCacheEntryAdded = endpointDefinition?.onCacheEntryAdded\r\n    if (!onCacheEntryAdded) return\r\n\r\n    let lifecycle = {} as CacheLifecycle\r\n\r\n    const cacheEntryRemoved = new Promise<void>((resolve) => {\r\n      lifecycle.cacheEntryRemoved = resolve\r\n    })\r\n    const cacheDataLoaded: PromiseWithKnownReason<\r\n      { data: unknown; meta: unknown },\r\n      typeof neverResolvedError\r\n    > = Promise.race([\r\n      new Promise<{ data: unknown; meta: unknown }>((resolve) => {\r\n        lifecycle.valueResolved = resolve\r\n      }),\r\n      cacheEntryRemoved.then(() => {\r\n        throw neverResolvedError\r\n      }),\r\n    ])\r\n    // prevent uncaught promise rejections from happening.\r\n    // if the original promise is used in any way, that will create a new promise that will throw again\r\n    cacheDataLoaded.catch(() => {})\r\n    lifecycleMap[queryCacheKey] = lifecycle\r\n    const selector = (api.endpoints[endpointName] as any).select(\r\n      endpointDefinition.type === DefinitionType.query\r\n        ? originalArgs\r\n        : queryCacheKey\r\n    )\r\n\r\n    const extra = mwApi.dispatch((_, __, extra) => extra)\r\n    const lifecycleApi = {\r\n      ...mwApi,\r\n      getCacheEntry: () => selector(mwApi.getState()),\r\n      requestId,\r\n      extra,\r\n      updateCachedData: (endpointDefinition.type === DefinitionType.query\r\n        ? (updateRecipe: Recipe<any>) =>\r\n            mwApi.dispatch(\r\n              api.util.updateQueryData(\r\n                endpointName as never,\r\n                originalArgs,\r\n                updateRecipe\r\n              )\r\n            )\r\n        : undefined) as any,\r\n\r\n      cacheDataLoaded,\r\n      cacheEntryRemoved,\r\n    }\r\n\r\n    const runningHandler = onCacheEntryAdded(originalArgs, lifecycleApi)\r\n    // if a `neverResolvedError` was thrown, but not handled in the running handler, do not let it leak out further\r\n    Promise.resolve(runningHandler).catch((e) => {\r\n      if (e === neverResolvedError) return\r\n      throw e\r\n    })\r\n  }\r\n\r\n  return handler\r\n}\r\n", "import { isPending, isRejected, isFulfilled } from '@reduxjs/toolkit'\r\nimport type {\r\n  BaseQueryError,\r\n  BaseQueryFn,\r\n  BaseQueryMeta,\r\n} from '../../baseQueryTypes'\r\nimport { DefinitionType } from '../../endpointDefinitions'\r\nimport type { QueryFulfilledRejectionReason } from '../../endpointDefinitions'\r\nimport type { Recipe } from '../buildThunks'\r\nimport type {\r\n  PromiseWithKnownReason,\r\n  PromiseConstructorWithKnownReason,\r\n  InternalHandlerBuilder,\r\n  ApiMiddlewareInternalHandler,\r\n} from './types'\r\n\r\nexport type ReferenceQueryLifecycle = never\r\n\r\ndeclare module '../../endpointDefinitions' {\r\n  export interface QueryLifecyclePromises<\r\n    ResultType,\r\n    BaseQuery extends BaseQueryFn\r\n  > {\r\n    /**\r\n     * Promise that will resolve with the (transformed) query result.\r\n     *\r\n     * If the query fails, this promise will reject with the error.\r\n     *\r\n     * This allows you to `await` for the query to finish.\r\n     *\r\n     * If you don't interact with this promise, it will not throw.\r\n     */\r\n    queryFulfilled: PromiseWithKnownReason<\r\n      {\r\n        /**\r\n         * The (transformed) query result.\r\n         */\r\n        data: ResultType\r\n        /**\r\n         * The `meta` returned by the `baseQuery`\r\n         */\r\n        meta: BaseQueryMeta<BaseQuery>\r\n      },\r\n      QueryFulfilledRejectionReason<BaseQuery>\r\n    >\r\n  }\r\n\r\n  type QueryFulfilledRejectionReason<BaseQuery extends BaseQueryFn> =\r\n    | {\r\n        error: BaseQueryError<BaseQuery>\r\n        /**\r\n         * If this is `false`, that means this error was returned from the `baseQuery` or `queryFn` in a controlled manner.\r\n         */\r\n        isUnhandledError: false\r\n        /**\r\n         * The `meta` returned by the `baseQuery`\r\n         */\r\n        meta: BaseQueryMeta<BaseQuery>\r\n      }\r\n    | {\r\n        error: unknown\r\n        meta?: undefined\r\n        /**\r\n         * If this is `true`, that means that this error is the result of `baseQueryFn`, `queryFn`, `transformResponse` or `transformErrorResponse` throwing an error instead of handling it properly.\r\n         * There can not be made any assumption about the shape of `error`.\r\n         */\r\n        isUnhandledError: true\r\n      }\r\n\r\n  interface QueryExtraOptions<\r\n    TagTypes extends string,\r\n    ResultType,\r\n    QueryArg,\r\n    BaseQuery extends BaseQueryFn,\r\n    ReducerPath extends string = string\r\n  > {\r\n    /**\r\n     * A function that is called when the individual query is started. The function is called with a lifecycle api object containing properties such as `queryFulfilled`, allowing code to be run when a query is started, when it succeeds, and when it fails (i.e. throughout the lifecycle of an individual query/mutation call).\r\n     *\r\n     * Can be used to perform side-effects throughout the lifecycle of the query.\r\n     *\r\n     * @example\r\n     * ```ts\r\n     * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query'\r\n     * import { messageCreated } from './notificationsSlice\r\n     * export interface Post {\r\n     *   id: number\r\n     *   name: string\r\n     * }\r\n     *\r\n     * const api = createApi({\r\n     *   baseQuery: fetchBaseQuery({\r\n     *     baseUrl: '/',\r\n     *   }),\r\n     *   endpoints: (build) => ({\r\n     *     getPost: build.query<Post, number>({\r\n     *       query: (id) => `post/${id}`,\r\n     *       async onQueryStarted(id, { dispatch, queryFulfilled }) {\r\n     *         // `onStart` side-effect\r\n     *         dispatch(messageCreated('Fetching posts...'))\r\n     *         try {\r\n     *           const { data } = await queryFulfilled\r\n     *           // `onSuccess` side-effect\r\n     *           dispatch(messageCreated('Posts received!'))\r\n     *         } catch (err) {\r\n     *           // `onError` side-effect\r\n     *           dispatch(messageCreated('Error fetching posts!'))\r\n     *         }\r\n     *       }\r\n     *     }),\r\n     *   }),\r\n     * })\r\n     * ```\r\n     */\r\n    onQueryStarted?(\r\n      arg: QueryArg,\r\n      api: QueryLifecycleApi<QueryArg, BaseQuery, ResultType, ReducerPath>\r\n    ): Promise<void> | void\r\n  }\r\n\r\n  interface MutationExtraOptions<\r\n    TagTypes extends string,\r\n    ResultType,\r\n    QueryArg,\r\n    BaseQuery extends BaseQueryFn,\r\n    ReducerPath extends string = string\r\n  > {\r\n    /**\r\n     * A function that is called when the individual mutation is started. The function is called with a lifecycle api object containing properties such as `queryFulfilled`, allowing code to be run when a query is started, when it succeeds, and when it fails (i.e. throughout the lifecycle of an individual query/mutation call).\r\n     *\r\n     * Can be used for `optimistic updates`.\r\n     *\r\n     * @example\r\n     *\r\n     * ```ts\r\n     * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query'\r\n     * export interface Post {\r\n     *   id: number\r\n     *   name: string\r\n     * }\r\n     *\r\n     * const api = createApi({\r\n     *   baseQuery: fetchBaseQuery({\r\n     *     baseUrl: '/',\r\n     *   }),\r\n     *   tagTypes: ['Post'],\r\n     *   endpoints: (build) => ({\r\n     *     getPost: build.query<Post, number>({\r\n     *       query: (id) => `post/${id}`,\r\n     *       providesTags: ['Post'],\r\n     *     }),\r\n     *     updatePost: build.mutation<void, Pick<Post, 'id'> & Partial<Post>>({\r\n     *       query: ({ id, ...patch }) => ({\r\n     *         url: `post/${id}`,\r\n     *         method: 'PATCH',\r\n     *         body: patch,\r\n     *       }),\r\n     *       invalidatesTags: ['Post'],\r\n     *       async onQueryStarted({ id, ...patch }, { dispatch, queryFulfilled }) {\r\n     *         const patchResult = dispatch(\r\n     *           api.util.updateQueryData('getPost', id, (draft) => {\r\n     *             Object.assign(draft, patch)\r\n     *           })\r\n     *         )\r\n     *         try {\r\n     *           await queryFulfilled\r\n     *         } catch {\r\n     *           patchResult.undo()\r\n     *         }\r\n     *       },\r\n     *     }),\r\n     *   }),\r\n     * })\r\n     * ```\r\n     */\r\n    onQueryStarted?(\r\n      arg: QueryArg,\r\n      api: MutationLifecycleApi<QueryArg, BaseQuery, ResultType, ReducerPath>\r\n    ): Promise<void> | void\r\n  }\r\n\r\n  export interface QueryLifecycleApi<\r\n    QueryArg,\r\n    BaseQuery extends BaseQueryFn,\r\n    ResultType,\r\n    ReducerPath extends string = string\r\n  > extends QueryBaseLifecycleApi<QueryArg, BaseQuery, ResultType, ReducerPath>,\r\n      QueryLifecyclePromises<ResultType, BaseQuery> {}\r\n\r\n  export interface MutationLifecycleApi<\r\n    QueryArg,\r\n    BaseQuery extends BaseQueryFn,\r\n    ResultType,\r\n    ReducerPath extends string = string\r\n  > extends MutationBaseLifecycleApi<\r\n        QueryArg,\r\n        BaseQuery,\r\n        ResultType,\r\n        ReducerPath\r\n      >,\r\n      QueryLifecyclePromises<ResultType, BaseQuery> {}\r\n}\r\n\r\nexport const buildQueryLifecycleHandler: InternalHandlerBuilder = ({\r\n  api,\r\n  context,\r\n  queryThunk,\r\n  mutationThunk,\r\n}) => {\r\n  const isPendingThunk = isPending(queryThunk, mutationThunk)\r\n  const isRejectedThunk = isRejected(queryThunk, mutationThunk)\r\n  const isFullfilledThunk = isFulfilled(queryThunk, mutationThunk)\r\n\r\n  type CacheLifecycle = {\r\n    resolve(value: { data: unknown; meta: unknown }): unknown\r\n    reject(value: QueryFulfilledRejectionReason<any>): unknown\r\n  }\r\n  const lifecycleMap: Record<string, CacheLifecycle> = {}\r\n\r\n  const handler: ApiMiddlewareInternalHandler = (action, mwApi) => {\r\n    if (isPendingThunk(action)) {\r\n      const {\r\n        requestId,\r\n        arg: { endpointName, originalArgs },\r\n      } = action.meta\r\n      const endpointDefinition = context.endpointDefinitions[endpointName]\r\n      const onQueryStarted = endpointDefinition?.onQueryStarted\r\n      if (onQueryStarted) {\r\n        const lifecycle = {} as CacheLifecycle\r\n        const queryFulfilled =\r\n          new (Promise as PromiseConstructorWithKnownReason)<\r\n            { data: unknown; meta: unknown },\r\n            QueryFulfilledRejectionReason<any>\r\n          >((resolve, reject) => {\r\n            lifecycle.resolve = resolve\r\n            lifecycle.reject = reject\r\n          })\r\n        // prevent uncaught promise rejections from happening.\r\n        // if the original promise is used in any way, that will create a new promise that will throw again\r\n        queryFulfilled.catch(() => {})\r\n        lifecycleMap[requestId] = lifecycle\r\n        const selector = (api.endpoints[endpointName] as any).select(\r\n          endpointDefinition.type === DefinitionType.query\r\n            ? originalArgs\r\n            : requestId\r\n        )\r\n\r\n        const extra = mwApi.dispatch((_, __, extra) => extra)\r\n        const lifecycleApi = {\r\n          ...mwApi,\r\n          getCacheEntry: () => selector(mwApi.getState()),\r\n          requestId,\r\n          extra,\r\n          updateCachedData: (endpointDefinition.type === DefinitionType.query\r\n            ? (updateRecipe: Recipe<any>) =>\r\n                mwApi.dispatch(\r\n                  api.util.updateQueryData(\r\n                    endpointName as never,\r\n                    originalArgs,\r\n                    updateRecipe\r\n                  )\r\n                )\r\n            : undefined) as any,\r\n          queryFulfilled,\r\n        }\r\n        onQueryStarted(originalArgs, lifecycleApi)\r\n      }\r\n    } else if (isFullfilledThunk(action)) {\r\n      const { requestId, baseQueryMeta } = action.meta\r\n      lifecycleMap[requestId]?.resolve({\r\n        data: action.payload,\r\n        meta: baseQueryMeta,\r\n      })\r\n      delete lifecycleMap[requestId]\r\n    } else if (isRejectedThunk(action)) {\r\n      const { requestId, rejectedWithValue, baseQueryMeta } = action.meta\r\n      lifecycleMap[requestId]?.reject({\r\n        error: action.payload ?? action.error,\r\n        isUnhandledError: !rejectedWithValue,\r\n        meta: baseQueryMeta as any,\r\n      })\r\n      delete lifecycleMap[requestId]\r\n    }\r\n  }\r\n\r\n  return handler\r\n}\r\n", "import type { InternalHandlerBuilder } from './types'\r\n\r\nexport const buildDevCheckHandler: InternalHandlerBuilder = ({\r\n  api,\r\n  context: { apiUid },\r\n  reducerPath,\r\n}) => {\r\n  return (action, mwApi) => {\r\n    if (api.util.resetApiState.match(action)) {\r\n      // dispatch after api reset\r\n      mwApi.dispatch(api.internalActions.middlewareRegistered(apiUid))\r\n    }\r\n\r\n    if (\r\n      typeof process !== 'undefined' &&\r\n      process.env.NODE_ENV === 'development'\r\n    ) {\r\n      if (\r\n        api.internalActions.middlewareRegistered.match(action) &&\r\n        action.payload === apiUid &&\r\n        mwApi.getState()[reducerPath]?.config?.middlewareRegistered ===\r\n          'conflict'\r\n      ) {\r\n        console.warn(`There is a mismatch between slice and middleware for the reducerPath \"${reducerPath}\".\r\nYou can only have one api per reducer path, this will lead to crashes in various situations!${\r\n          reducerPath === 'api'\r\n            ? `\r\nIf you have multiple apis, you *have* to specify the reducerPath option when using createApi!`\r\n            : ''\r\n        }`)\r\n      }\r\n    }\r\n  }\r\n}\r\n", "import type { QueryThunk, RejectedAction } from '../buildThunks'\r\nimport type { InternalHandlerBuilder } from './types'\r\nimport type {\r\n  SubscriptionState,\r\n  QuerySubstateIdentifier,\r\n  Subscribers,\r\n} from '../apiState'\r\nimport { produceWithPatches } from 'immer'\r\nimport { createSlice, PayloadAction, AnyAction } from '@reduxjs/toolkit'\r\n\r\n// Copied from https://github.com/feross/queue-microtask\r\nlet promise: Promise<any>\r\nconst queueMicrotaskShim =\r\n  typeof queueMicrotask === 'function'\r\n    ? queueMicrotask.bind(\r\n        typeof window !== 'undefined'\r\n          ? window\r\n          : typeof global !== 'undefined'\r\n          ? global\r\n          : globalThis\r\n      )\r\n    : // reuse resolved promise, and allocate it lazily\r\n      (cb: () => void) =>\r\n        (promise || (promise = Promise.resolve())).then(cb).catch((err: any) =>\r\n          setTimeout(() => {\r\n            throw err\r\n          }, 0)\r\n        )\r\n\r\nexport const buildBatchedActionsHandler: InternalHandlerBuilder<\r\n  [actionShouldContinue: boolean, subscriptionExists: boolean]\r\n> = ({ api, queryThunk, internalState }) => {\r\n  const subscriptionsPrefix = `${api.reducerPath}/subscriptions`\r\n\r\n  let previousSubscriptions: SubscriptionState =\r\n    null as unknown as SubscriptionState\r\n\r\n  let dispatchQueued = false\r\n\r\n  const { updateSubscriptionOptions, unsubscribeQueryResult } =\r\n    api.internalActions\r\n\r\n  // Actually intentionally mutate the subscriptions state used in the middleware\r\n  // This is done to speed up perf when loading many components\r\n  const actuallyMutateSubscriptions = (\r\n    mutableState: SubscriptionState,\r\n    action: AnyAction\r\n  ) => {\r\n    if (updateSubscriptionOptions.match(action)) {\r\n      const { queryCacheKey, requestId, options } = action.payload\r\n\r\n      if (mutableState?.[queryCacheKey]?.[requestId]) {\r\n        mutableState[queryCacheKey]![requestId] = options\r\n      }\r\n      return true\r\n    }\r\n    if (unsubscribeQueryResult.match(action)) {\r\n      const { queryCacheKey, requestId } = action.payload\r\n      if (mutableState[queryCacheKey]) {\r\n        delete mutableState[queryCacheKey]![requestId]\r\n      }\r\n      return true\r\n    }\r\n    if (api.internalActions.removeQueryResult.match(action)) {\r\n      delete mutableState[action.payload.queryCacheKey]\r\n      return true\r\n    }\r\n    if (queryThunk.pending.match(action)) {\r\n      const {\r\n        meta: { arg, requestId },\r\n      } = action\r\n      if (arg.subscribe) {\r\n        const substate = (mutableState[arg.queryCacheKey] ??= {})\r\n        substate[requestId] =\r\n          arg.subscriptionOptions ?? substate[requestId] ?? {}\r\n\r\n        return true\r\n      }\r\n    }\r\n    if (queryThunk.rejected.match(action)) {\r\n      const {\r\n        meta: { condition, arg, requestId },\r\n      } = action\r\n      if (condition && arg.subscribe) {\r\n        const substate = (mutableState[arg.queryCacheKey] ??= {})\r\n        substate[requestId] =\r\n          arg.subscriptionOptions ?? substate[requestId] ?? {}\r\n\r\n        return true\r\n      }\r\n    }\r\n\r\n    return false\r\n  }\r\n\r\n  return (action, mwApi) => {\r\n    if (!previousSubscriptions) {\r\n      // Initialize it the first time this handler runs\r\n      previousSubscriptions = JSON.parse(\r\n        JSON.stringify(internalState.currentSubscriptions)\r\n      )\r\n    }\r\n\r\n    // Intercept requests by hooks to see if they're subscribed\r\n    // Necessary because we delay updating store state to the end of the tick\r\n    if (api.internalActions.internal_probeSubscription.match(action)) {\r\n      const { queryCacheKey, requestId } = action.payload\r\n      const hasSubscription =\r\n        !!internalState.currentSubscriptions[queryCacheKey]?.[requestId]\r\n      return [false, hasSubscription]\r\n    }\r\n\r\n    // Update subscription data based on this action\r\n    const didMutate = actuallyMutateSubscriptions(\r\n      internalState.currentSubscriptions,\r\n      action\r\n    )\r\n\r\n    if (didMutate) {\r\n      if (!dispatchQueued) {\r\n        queueMicrotaskShim(() => {\r\n          // Deep clone the current subscription data\r\n          const newSubscriptions: SubscriptionState = JSON.parse(\r\n            JSON.stringify(internalState.currentSubscriptions)\r\n          )\r\n          // Figure out a smaller diff between original and current\r\n          const [, patches] = produceWithPatches(\r\n            previousSubscriptions,\r\n            () => newSubscriptions\r\n          )\r\n\r\n          // Sync the store state for visibility\r\n          mwApi.next(api.internalActions.subscriptionsUpdated(patches))\r\n          // Save the cloned state for later reference\r\n          previousSubscriptions = newSubscriptions\r\n          dispatchQueued = false\r\n        })\r\n        dispatchQueued = true\r\n      }\r\n\r\n      const isSubscriptionSliceAction =\r\n        !!action.type?.startsWith(subscriptionsPrefix)\r\n      const isAdditionalSubscriptionAction =\r\n        queryThunk.rejected.match(action) &&\r\n        action.meta.condition &&\r\n        !!action.meta.arg.subscribe\r\n\r\n      const actionShouldContinue =\r\n        !isSubscriptionSliceAction && !isAdditionalSubscriptionAction\r\n\r\n      return [actionShouldContinue, false]\r\n    }\r\n\r\n    return [true, false]\r\n  }\r\n}\r\n", "export type Id<T> = { [K in keyof T]: T[K] } & {}\r\nexport type WithRequiredProp<T, K extends keyof T> = Omit<T, K> &\r\n  Required<Pick<T, K>>\r\nexport type Override<T1, T2> = T2 extends any ? Omit<T1, keyof T2> & T2 : never\r\nexport function assertCast<T>(v: any): asserts v is T {}\r\n\r\nexport function safeAssign<T extends object>(\r\n  target: T,\r\n  ...args: Array<Partial<NoInfer<T>>>\r\n) {\r\n  Object.assign(target, ...args)\r\n}\r\n\r\n/**\r\n * Convert a Union type `(A|B)` to an intersection type `(A&B)`\r\n */\r\nexport type UnionToIntersection<U> = (\r\n  U extends any ? (k: U) => void : never\r\n) extends (k: infer I) => void\r\n  ? I\r\n  : never\r\n\r\nexport type NonOptionalKeys<T> = {\r\n  [K in keyof T]-?: undefined extends T[K] ? never : K\r\n}[keyof T]\r\n\r\nexport type HasRequiredProps<T, True, False> = NonOptionalKeys<T> extends never\r\n  ? False\r\n  : True\r\n\r\nexport type OptionalIfAllPropsOptional<T> = HasRequiredProps<T, T, T | never>\r\n\r\nexport type NoInfer<T> = [T][T extends any ? 0 : never]\r\n\r\nexport type UnwrapPromise<T> = T extends PromiseLike<infer V> ? V : T\r\n\r\nexport type MaybePromise<T> = T | PromiseLike<T>\r\n\r\nexport type OmitFromUnion<T, K extends keyof T> = T extends any\r\n  ? Omit<T, K>\r\n  : never\r\n\r\nexport type IsAny<T, True, False = never> = true | false extends (\r\n  T extends never ? true : false\r\n)\r\n  ? True\r\n  : False\r\n\r\nexport type CastAny<T, CastTo> = IsAny<T, CastTo, T>\r\n", "/**\r\n * Note: this file should import all other files for type discovery and declaration merging\r\n */\r\nimport type {\r\n  PatchQueryDataThunk,\r\n  UpdateQueryDataThunk,\r\n  UpsertQueryDataThunk,\r\n} from './buildThunks'\r\nimport { buildThunks } from './buildThunks'\r\nimport type {\r\n  ActionCreatorWithPayload,\r\n  AnyAction,\r\n  Middleware,\r\n  Reducer,\r\n  ThunkAction,\r\n  ThunkDispatch,\r\n} from '@reduxjs/toolkit'\r\nimport type {\r\n  EndpointDefinitions,\r\n  QueryArgFrom,\r\n  QueryDefinition,\r\n  MutationDefinition,\r\n  AssertTagTypes,\r\n  TagDescription,\r\n} from '../endpointDefinitions'\r\nimport { isQueryDefinition, isMutationDefinition } from '../endpointDefinitions'\r\nimport type {\r\n  CombinedState,\r\n  QueryKeys,\r\n  MutationKeys,\r\n  RootState,\r\n} from './apiState'\r\nimport type { Api, Module } from '../apiTypes'\r\nimport { onFocus, onFocusLost, onOnline, onOffline } from './setupListeners'\r\nimport { buildSlice } from './buildSlice'\r\nimport { buildMiddleware } from './buildMiddleware'\r\nimport { buildSelectors } from './buildSelectors'\r\nimport type {\r\n  MutationActionCreatorResult,\r\n  QueryActionCreatorResult,\r\n} from './buildInitiate'\r\nimport { buildInitiate } from './buildInitiate'\r\nimport { assertCast, safeAssign } from '../tsHelpers'\r\nimport type { InternalSerializeQueryArgs } from '../defaultSerializeQueryArgs'\r\nimport type { SliceActions } from './buildSlice'\r\nimport type { BaseQueryFn } from '../baseQueryTypes'\r\n\r\nimport type { ReferenceCacheLifecycle } from './buildMiddleware/cacheLifecycle'\r\nimport type { ReferenceQueryLifecycle } from './buildMiddleware/queryLifecycle'\r\nimport type { ReferenceCacheCollection } from './buildMiddleware/cacheCollection'\r\nimport { enablePatches } from 'immer'\r\n\r\n/**\r\n * `ifOlderThan` - (default: `false` | `number`) - _number is value in seconds_\r\n * - If specified, it will only run the query if the difference between `new Date()` and the last `fulfilledTimeStamp` is greater than the given value\r\n *\r\n * @overloadSummary\r\n * `force`\r\n * - If `force: true`, it will ignore the `ifOlderThan` value if it is set and the query will be run even if it exists in the cache.\r\n */\r\nexport type PrefetchOptions =\r\n  | {\r\n      ifOlderThan?: false | number\r\n    }\r\n  | { force?: boolean }\r\n\r\nexport const coreModuleName = /* @__PURE__ */ Symbol()\r\nexport type CoreModule =\r\n  | typeof coreModuleName\r\n  | ReferenceCacheLifecycle\r\n  | ReferenceQueryLifecycle\r\n  | ReferenceCacheCollection\r\n\r\ninterface ThunkWithReturnValue<T> extends ThunkAction<T, any, any, AnyAction> {}\r\n\r\ndeclare module '../apiTypes' {\r\n  export interface ApiModules<\r\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n    BaseQuery extends BaseQueryFn,\r\n    Definitions extends EndpointDefinitions,\r\n    ReducerPath extends string,\r\n    TagTypes extends string\r\n  > {\r\n    [coreModuleName]: {\r\n      /**\r\n       * This api's reducer should be mounted at `store[api.reducerPath]`.\r\n       *\r\n       * @example\r\n       * ```ts\r\n       * configureStore({\r\n       *   reducer: {\r\n       *     [api.reducerPath]: api.reducer,\r\n       *   },\r\n       *   middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat(api.middleware),\r\n       * })\r\n       * ```\r\n       */\r\n      reducerPath: ReducerPath\r\n      /**\r\n       * Internal actions not part of the public API. Note: These are subject to change at any given time.\r\n       */\r\n      internalActions: InternalActions\r\n      /**\r\n       *  A standard redux reducer that enables core functionality. Make sure it's included in your store.\r\n       *\r\n       * @example\r\n       * ```ts\r\n       * configureStore({\r\n       *   reducer: {\r\n       *     [api.reducerPath]: api.reducer,\r\n       *   },\r\n       *   middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat(api.middleware),\r\n       * })\r\n       * ```\r\n       */\r\n      reducer: Reducer<\r\n        CombinedState<Definitions, TagTypes, ReducerPath>,\r\n        AnyAction\r\n      >\r\n      /**\r\n       * This is a standard redux middleware and is responsible for things like polling, garbage collection and a handful of other things. Make sure it's included in your store.\r\n       *\r\n       * @example\r\n       * ```ts\r\n       * configureStore({\r\n       *   reducer: {\r\n       *     [api.reducerPath]: api.reducer,\r\n       *   },\r\n       *   middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat(api.middleware),\r\n       * })\r\n       * ```\r\n       */\r\n      middleware: Middleware<\r\n        {},\r\n        RootState<Definitions, string, ReducerPath>,\r\n        ThunkDispatch<any, any, AnyAction>\r\n      >\r\n      /**\r\n       * A collection of utility thunks for various situations.\r\n       */\r\n      util: {\r\n        /**\r\n         * This method had to be removed due to a conceptual bug in RTK.\r\n         *\r\n         * Despite TypeScript errors, it will continue working in the \"buggy\" way it did\r\n         * before in production builds and will be removed in the next major release.\r\n         *\r\n         * Nonetheless, you should immediately replace it with the new recommended approach.\r\n         * See https://redux-toolkit.js.org/rtk-query/usage/server-side-rendering for new guidance on SSR.\r\n         *\r\n         * Please see https://github.com/reduxjs/redux-toolkit/pull/2481 for details.\r\n         * @deprecated\r\n         */\r\n        getRunningOperationPromises: never // this is now types as `never` to immediately throw TS errors on use, but still allow for a comment\r\n\r\n        /**\r\n         * This method had to be removed due to a conceptual bug in RTK.\r\n         * It has been replaced by `api.util.getRunningQueryThunk` and `api.util.getRunningMutationThunk`.\r\n         * Please see https://github.com/reduxjs/redux-toolkit/pull/2481 for details.\r\n         * @deprecated\r\n         */\r\n        getRunningOperationPromise: never // this is now types as `never` to immediately throw TS errors on use, but still allow for a comment\r\n\r\n        /**\r\n         * A thunk that (if dispatched) will return a specific running query, identified\r\n         * by `endpointName` and `args`.\r\n         * If that query is not running, dispatching the thunk will result in `undefined`.\r\n         *\r\n         * Can be used to await a specific query triggered in any way,\r\n         * including via hook calls or manually dispatching `initiate` actions.\r\n         *\r\n         * See https://redux-toolkit.js.org/rtk-query/usage/server-side-rendering for details.\r\n         */\r\n        getRunningQueryThunk<EndpointName extends QueryKeys<Definitions>>(\r\n          endpointName: EndpointName,\r\n          args: QueryArgFrom<Definitions[EndpointName]>\r\n        ): ThunkWithReturnValue<\r\n          | QueryActionCreatorResult<\r\n              Definitions[EndpointName] & { type: 'query' }\r\n            >\r\n          | undefined\r\n        >\r\n\r\n        /**\r\n         * A thunk that (if dispatched) will return a specific running mutation, identified\r\n         * by `endpointName` and `fixedCacheKey` or `requestId`.\r\n         * If that mutation is not running, dispatching the thunk will result in `undefined`.\r\n         *\r\n         * Can be used to await a specific mutation triggered in any way,\r\n         * including via hook trigger functions or manually dispatching `initiate` actions.\r\n         *\r\n         * See https://redux-toolkit.js.org/rtk-query/usage/server-side-rendering for details.\r\n         */\r\n        getRunningMutationThunk<EndpointName extends MutationKeys<Definitions>>(\r\n          endpointName: EndpointName,\r\n          fixedCacheKeyOrRequestId: string\r\n        ): ThunkWithReturnValue<\r\n          | MutationActionCreatorResult<\r\n              Definitions[EndpointName] & { type: 'mutation' }\r\n            >\r\n          | undefined\r\n        >\r\n\r\n        /**\r\n         * A thunk that (if dispatched) will return all running queries.\r\n         *\r\n         * Useful for SSR scenarios to await all running queries triggered in any way,\r\n         * including via hook calls or manually dispatching `initiate` actions.\r\n         *\r\n         * See https://redux-toolkit.js.org/rtk-query/usage/server-side-rendering for details.\r\n         */\r\n        getRunningQueriesThunk(): ThunkWithReturnValue<\r\n          Array<QueryActionCreatorResult<any>>\r\n        >\r\n\r\n        /**\r\n         * A thunk that (if dispatched) will return all running mutations.\r\n         *\r\n         * Useful for SSR scenarios to await all running mutations triggered in any way,\r\n         * including via hook calls or manually dispatching `initiate` actions.\r\n         *\r\n         * See https://redux-toolkit.js.org/rtk-query/usage/server-side-rendering for details.\r\n         */\r\n        getRunningMutationsThunk(): ThunkWithReturnValue<\r\n          Array<MutationActionCreatorResult<any>>\r\n        >\r\n\r\n        /**\r\n         * A Redux thunk that can be used to manually trigger pre-fetching of data.\r\n         *\r\n         * The thunk accepts three arguments: the name of the endpoint we are updating (such as `'getPost'`), the appropriate query arg values to construct the desired cache key, and a set of options used to determine if the data actually should be re-fetched based on cache staleness.\r\n         *\r\n         * React Hooks users will most likely never need to use this directly, as the `usePrefetch` hook will dispatch this thunk internally as needed when you call the prefetching function supplied by the hook.\r\n         *\r\n         * @example\r\n         *\r\n         * ```ts no-transpile\r\n         * dispatch(api.util.prefetch('getPosts', undefined, { force: true }))\r\n         * ```\r\n         */\r\n        prefetch<EndpointName extends QueryKeys<Definitions>>(\r\n          endpointName: EndpointName,\r\n          arg: QueryArgFrom<Definitions[EndpointName]>,\r\n          options: PrefetchOptions\r\n        ): ThunkAction<void, any, any, AnyAction>\r\n        /**\r\n         * A Redux thunk action creator that, when dispatched, creates and applies a set of JSON diff/patch objects to the current state. This immediately updates the Redux state with those changes.\r\n         *\r\n         * The thunk action creator accepts three arguments: the name of the endpoint we are updating (such as `'getPost'`), the appropriate query arg values to construct the desired cache key, and an `updateRecipe` callback function. The callback receives an Immer-wrapped `draft` of the current state, and may modify the draft to match the expected results after the mutation completes successfully.\r\n         *\r\n         * The thunk executes _synchronously_, and returns an object containing `{patches: Patch[], inversePatches: Patch[], undo: () => void}`. The `patches` and `inversePatches` are generated using Immer's [`produceWithPatches` method](https://immerjs.github.io/immer/patches).\r\n         *\r\n         * This is typically used as the first step in implementing optimistic updates. The generated `inversePatches` can be used to revert the updates by calling `dispatch(patchQueryData(endpointName, args, inversePatches))`. Alternatively, the `undo` method can be called directly to achieve the same effect.\r\n         *\r\n         * Note that the first two arguments (`endpointName` and `args`) are used to determine which existing cache entry to update. If no existing cache entry is found, the `updateRecipe` callback will not run.\r\n         *\r\n         * @example\r\n         *\r\n         * ```ts\r\n         * const patchCollection = dispatch(\r\n         *   api.util.updateQueryData('getPosts', undefined, (draftPosts) => {\r\n         *     draftPosts.push({ id: 1, name: 'Teddy' })\r\n         *   })\r\n         * )\r\n         * ```\r\n         */\r\n        updateQueryData: UpdateQueryDataThunk<\r\n          Definitions,\r\n          RootState<Definitions, string, ReducerPath>\r\n        >\r\n        /** @deprecated renamed to `updateQueryData` */\r\n        updateQueryResult: UpdateQueryDataThunk<\r\n          Definitions,\r\n          RootState<Definitions, string, ReducerPath>\r\n        >\r\n        /**\r\n         * A Redux thunk action creator that, when dispatched, acts as an artificial API request to upsert a value into the cache.\r\n         *\r\n         * The thunk action creator accepts three arguments: the name of the endpoint we are updating (such as `'getPost'`), the appropriate query arg values to construct the desired cache key, and the data to upsert.\r\n         *\r\n         * If no cache entry for that cache key exists, a cache entry will be created and the data added. If a cache entry already exists, this will _overwrite_ the existing cache entry data.\r\n         *\r\n         * The thunk executes _asynchronously_, and returns a promise that resolves when the store has been updated.\r\n         *\r\n         * If dispatched while an actual request is in progress, both the upsert and request will be handled as soon as they resolve, resulting in a \"last result wins\" update behavior.\r\n         *\r\n         * @example\r\n         *\r\n         * ```ts\r\n         * await dispatch(\r\n         *   api.util.upsertQueryData('getPost', {id: 1}, {id: 1, text: \"Hello!\"})\r\n         * )\r\n         * ```\r\n         */\r\n        upsertQueryData: UpsertQueryDataThunk<\r\n          Definitions,\r\n          RootState<Definitions, string, ReducerPath>\r\n        >\r\n        /**\r\n         * A Redux thunk that applies a JSON diff/patch array to the cached data for a given query result. This immediately updates the Redux state with those changes.\r\n         *\r\n         * The thunk accepts three arguments: the name of the endpoint we are updating (such as `'getPost'`), the appropriate query arg values to construct the desired cache key, and a JSON diff/patch array as produced by Immer's `produceWithPatches`.\r\n         *\r\n         * This is typically used as the second step in implementing optimistic updates. If a request fails, the optimistically-applied changes can be reverted by dispatching `patchQueryData` with the `inversePatches` that were generated by `updateQueryData` earlier.\r\n         *\r\n         * In cases where it is desired to simply revert the previous changes, it may be preferable to call the `undo` method returned from dispatching `updateQueryData` instead.\r\n         *\r\n         * @example\r\n         * ```ts\r\n         * const patchCollection = dispatch(\r\n         *   api.util.updateQueryData('getPosts', undefined, (draftPosts) => {\r\n         *     draftPosts.push({ id: 1, name: 'Teddy' })\r\n         *   })\r\n         * )\r\n         *\r\n         * // later\r\n         * dispatch(\r\n         *   api.util.patchQueryData('getPosts', undefined, patchCollection.inversePatches)\r\n         * )\r\n         *\r\n         * // or\r\n         * patchCollection.undo()\r\n         * ```\r\n         */\r\n        patchQueryData: PatchQueryDataThunk<\r\n          Definitions,\r\n          RootState<Definitions, string, ReducerPath>\r\n        >\r\n        /** @deprecated renamed to `patchQueryData` */\r\n        patchQueryResult: PatchQueryDataThunk<\r\n          Definitions,\r\n          RootState<Definitions, string, ReducerPath>\r\n        >\r\n        /**\r\n         * A Redux action creator that can be dispatched to manually reset the api state completely. This will immediately remove all existing cache entries, and all queries will be considered 'uninitialized'.\r\n         *\r\n         * @example\r\n         *\r\n         * ```ts\r\n         * dispatch(api.util.resetApiState())\r\n         * ```\r\n         */\r\n        resetApiState: SliceActions['resetApiState']\r\n        /**\r\n         * A Redux action creator that can be used to manually invalidate cache tags for [automated re-fetching](../../usage/automated-refetching.mdx).\r\n         *\r\n         * The action creator accepts one argument: the cache tags to be invalidated. It returns an action with those tags as a payload, and the corresponding `invalidateTags` action type for the api.\r\n         *\r\n         * Dispatching the result of this action creator will [invalidate](../../usage/automated-refetching.mdx#invalidating-cache-data) the given tags, causing queries to automatically re-fetch if they are subscribed to cache data that [provides](../../usage/automated-refetching.mdx#providing-cache-data) the corresponding tags.\r\n         *\r\n         * The array of tags provided to the action creator should be in one of the following formats, where `TagType` is equal to a string provided to the [`tagTypes`](../createApi.mdx#tagtypes) property of the api:\r\n         *\r\n         * - `[TagType]`\r\n         * - `[{ type: TagType }]`\r\n         * - `[{ type: TagType, id: number | string }]`\r\n         *\r\n         * @example\r\n         *\r\n         * ```ts\r\n         * dispatch(api.util.invalidateTags(['Post']))\r\n         * dispatch(api.util.invalidateTags([{ type: 'Post', id: 1 }]))\r\n         * dispatch(\r\n         *   api.util.invalidateTags([\r\n         *     { type: 'Post', id: 1 },\r\n         *     { type: 'Post', id: 'LIST' },\r\n         *   ])\r\n         * )\r\n         * ```\r\n         */\r\n        invalidateTags: ActionCreatorWithPayload<\r\n          Array<TagDescription<TagTypes>>,\r\n          string\r\n        >\r\n\r\n        /**\r\n         * A function to select all `{ endpointName, originalArgs, queryCacheKey }` combinations that would be invalidated by a specific set of tags.\r\n         *\r\n         * Can be used for mutations that want to do optimistic updates instead of invalidating a set of tags, but don't know exactly what they need to update.\r\n         */\r\n        selectInvalidatedBy: (\r\n          state: RootState<Definitions, string, ReducerPath>,\r\n          tags: ReadonlyArray<TagDescription<TagTypes>>\r\n        ) => Array<{\r\n          endpointName: string\r\n          originalArgs: any\r\n          queryCacheKey: string\r\n        }>\r\n      }\r\n      /**\r\n       * Endpoints based on the input endpoints provided to `createApi`, containing `select` and `action matchers`.\r\n       */\r\n      endpoints: {\r\n        [K in keyof Definitions]: Definitions[K] extends QueryDefinition<\r\n          any,\r\n          any,\r\n          any,\r\n          any,\r\n          any\r\n        >\r\n          ? ApiEndpointQuery<Definitions[K], Definitions>\r\n          : Definitions[K] extends MutationDefinition<any, any, any, any, any>\r\n          ? ApiEndpointMutation<Definitions[K], Definitions>\r\n          : never\r\n      }\r\n    }\r\n  }\r\n}\r\n\r\nexport interface ApiEndpointQuery<\r\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n  Definition extends QueryDefinition<any, any, any, any, any>,\r\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n  Definitions extends EndpointDefinitions\r\n> {\r\n  name: string\r\n  /**\r\n   * All of these are `undefined` at runtime, purely to be used in TypeScript declarations!\r\n   */\r\n  Types: NonNullable<Definition['Types']>\r\n}\r\n\r\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\r\nexport interface ApiEndpointMutation<\r\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n  Definition extends MutationDefinition<any, any, any, any, any>,\r\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n  Definitions extends EndpointDefinitions\r\n> {\r\n  name: string\r\n  /**\r\n   * All of these are `undefined` at runtime, purely to be used in TypeScript declarations!\r\n   */\r\n  Types: NonNullable<Definition['Types']>\r\n}\r\n\r\nexport type ListenerActions = {\r\n  /**\r\n   * Will cause the RTK Query middleware to trigger any refetchOnReconnect-related behavior\r\n   * @link https://rtk-query-docs.netlify.app/api/setupListeners\r\n   */\r\n  onOnline: typeof onOnline\r\n  onOffline: typeof onOffline\r\n  /**\r\n   * Will cause the RTK Query middleware to trigger any refetchOnFocus-related behavior\r\n   * @link https://rtk-query-docs.netlify.app/api/setupListeners\r\n   */\r\n  onFocus: typeof onFocus\r\n  onFocusLost: typeof onFocusLost\r\n}\r\n\r\nexport type InternalActions = SliceActions & ListenerActions\r\n\r\n/**\r\n * Creates a module containing the basic redux logic for use with `buildCreateApi`.\r\n *\r\n * @example\r\n * ```ts\r\n * const createBaseApi = buildCreateApi(coreModule());\r\n * ```\r\n */\r\nexport const coreModule = (): Module<CoreModule> => ({\r\n  name: coreModuleName,\r\n  init(\r\n    api,\r\n    {\r\n      baseQuery,\r\n      tagTypes,\r\n      reducerPath,\r\n      serializeQueryArgs,\r\n      keepUnusedDataFor,\r\n      refetchOnMountOrArgChange,\r\n      refetchOnFocus,\r\n      refetchOnReconnect,\r\n    },\r\n    context\r\n  ) {\r\n    enablePatches()\r\n\r\n    assertCast<InternalSerializeQueryArgs>(serializeQueryArgs)\r\n\r\n    const assertTagType: AssertTagTypes = (tag) => {\r\n      if (\r\n        typeof process !== 'undefined' &&\r\n        process.env.NODE_ENV === 'development'\r\n      ) {\r\n        if (!tagTypes.includes(tag.type as any)) {\r\n          console.error(\r\n            `Tag type '${tag.type}' was used, but not specified in \\`tagTypes\\`!`\r\n          )\r\n        }\r\n      }\r\n      return tag\r\n    }\r\n\r\n    Object.assign(api, {\r\n      reducerPath,\r\n      endpoints: {},\r\n      internalActions: {\r\n        onOnline,\r\n        onOffline,\r\n        onFocus,\r\n        onFocusLost,\r\n      },\r\n      util: {},\r\n    })\r\n\r\n    const {\r\n      queryThunk,\r\n      mutationThunk,\r\n      patchQueryData,\r\n      updateQueryData,\r\n      upsertQueryData,\r\n      prefetch,\r\n      buildMatchThunkActions,\r\n    } = buildThunks({\r\n      baseQuery,\r\n      reducerPath,\r\n      context,\r\n      api,\r\n      serializeQueryArgs,\r\n    })\r\n\r\n    const { reducer, actions: sliceActions } = buildSlice({\r\n      context,\r\n      queryThunk,\r\n      mutationThunk,\r\n      reducerPath,\r\n      assertTagType,\r\n      config: {\r\n        refetchOnFocus,\r\n        refetchOnReconnect,\r\n        refetchOnMountOrArgChange,\r\n        keepUnusedDataFor,\r\n        reducerPath,\r\n      },\r\n    })\r\n\r\n    safeAssign(api.util, {\r\n      patchQueryData,\r\n      updateQueryData,\r\n      upsertQueryData,\r\n      prefetch,\r\n      resetApiState: sliceActions.resetApiState,\r\n    })\r\n    safeAssign(api.internalActions, sliceActions)\r\n\r\n    const { middleware, actions: middlewareActions } = buildMiddleware({\r\n      reducerPath,\r\n      context,\r\n      queryThunk,\r\n      mutationThunk,\r\n      api,\r\n      assertTagType,\r\n    })\r\n    safeAssign(api.util, middlewareActions)\r\n\r\n    safeAssign(api, { reducer: reducer as any, middleware })\r\n\r\n    const { buildQuerySelector, buildMutationSelector, selectInvalidatedBy } =\r\n      buildSelectors({\r\n        serializeQueryArgs: serializeQueryArgs as any,\r\n        reducerPath,\r\n      })\r\n\r\n    safeAssign(api.util, { selectInvalidatedBy })\r\n\r\n    const {\r\n      buildInitiateQuery,\r\n      buildInitiateMutation,\r\n      getRunningMutationThunk,\r\n      getRunningMutationsThunk,\r\n      getRunningQueriesThunk,\r\n      getRunningQueryThunk,\r\n      getRunningOperationPromises,\r\n      removalWarning,\r\n    } = buildInitiate({\r\n      queryThunk,\r\n      mutationThunk,\r\n      api,\r\n      serializeQueryArgs: serializeQueryArgs as any,\r\n      context,\r\n    })\r\n\r\n    safeAssign(api.util, {\r\n      getRunningOperationPromises: getRunningOperationPromises as any,\r\n      getRunningOperationPromise: removalWarning as any,\r\n      getRunningMutationThunk,\r\n      getRunningMutationsThunk,\r\n      getRunningQueryThunk,\r\n      getRunningQueriesThunk,\r\n    })\r\n\r\n    return {\r\n      name: coreModuleName,\r\n      injectEndpoint(endpointName, definition) {\r\n        const anyApi = api as any as Api<\r\n          any,\r\n          Record<string, any>,\r\n          string,\r\n          string,\r\n          CoreModule\r\n        >\r\n        anyApi.endpoints[endpointName] ??= {} as any\r\n        if (isQueryDefinition(definition)) {\r\n          safeAssign(\r\n            anyApi.endpoints[endpointName],\r\n            {\r\n              name: endpointName,\r\n              select: buildQuerySelector(endpointName, definition),\r\n              initiate: buildInitiateQuery(endpointName, definition),\r\n            },\r\n            buildMatchThunkActions(queryThunk, endpointName)\r\n          )\r\n        } else if (isMutationDefinition(definition)) {\r\n          safeAssign(\r\n            anyApi.endpoints[endpointName],\r\n            {\r\n              name: endpointName,\r\n              select: buildMutationSelector(),\r\n              initiate: buildInitiateMutation(endpointName),\r\n            },\r\n            buildMatchThunkActions(mutationThunk, endpointName)\r\n          )\r\n        }\r\n      },\r\n    }\r\n  },\r\n})\r\n", "import { buildCreateApi, CreateApi } from '../createApi'\r\nimport { coreModule, coreModuleName } from './module'\r\n\r\nconst createApi = /* @__PURE__ */ buildCreateApi(coreModule())\r\n\r\nexport { createApi, coreModule }\r\n", "var __generator = (this && this.__generator) || function (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\nvar __spreadArray = (this && this.__spreadArray) || function (to, from) {\r\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n        to[j] = from[i];\r\n    return to;\r\n};\r\nvar __create = Object.create;\r\nvar __defProp = Object.defineProperty;\r\nvar __defProps = Object.defineProperties;\r\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\r\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\r\nvar __getOwnPropNames = Object.getOwnPropertyNames;\r\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\r\nvar __getProtoOf = Object.getPrototypeOf;\r\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\r\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\r\nvar __defNormalProp = function (obj, key, value) { return key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value: value }) : obj[key] = value; };\r\nvar __spreadValues = function (a, b) {\r\n    for (var prop in b || (b = {}))\r\n        if (__hasOwnProp.call(b, prop))\r\n            __defNormalProp(a, prop, b[prop]);\r\n    if (__getOwnPropSymbols)\r\n        for (var _j = 0, _k = __getOwnPropSymbols(b); _j < _k.length; _j++) {\r\n            var prop = _k[_j];\r\n            if (__propIsEnum.call(b, prop))\r\n                __defNormalProp(a, prop, b[prop]);\r\n        }\r\n    return a;\r\n};\r\nvar __spreadProps = function (a, b) { return __defProps(a, __getOwnPropDescs(b)); };\r\nvar __markAsModule = function (target) { return __defProp(target, \"__esModule\", { value: true }); };\r\nvar __objRest = function (source, exclude) {\r\n    var target = {};\r\n    for (var prop in source)\r\n        if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)\r\n            target[prop] = source[prop];\r\n    if (source != null && __getOwnPropSymbols)\r\n        for (var _j = 0, _k = __getOwnPropSymbols(source); _j < _k.length; _j++) {\r\n            var prop = _k[_j];\r\n            if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))\r\n                target[prop] = source[prop];\r\n        }\r\n    return target;\r\n};\r\nvar __export = function (target, all) {\r\n    for (var name in all)\r\n        __defProp(target, name, { get: all[name], enumerable: true });\r\n};\r\nvar __reExport = function (target, module2, desc) {\r\n    if (module2 && typeof module2 === \"object\" || typeof module2 === \"function\") {\r\n        var _loop_1 = function (key) {\r\n            if (!__hasOwnProp.call(target, key) && key !== \"default\")\r\n                __defProp(target, key, { get: function () { return module2[key]; }, enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });\r\n        };\r\n        for (var _j = 0, _k = __getOwnPropNames(module2); _j < _k.length; _j++) {\r\n            var key = _k[_j];\r\n            _loop_1(key);\r\n        }\r\n    }\r\n    return target;\r\n};\r\nvar __toModule = function (module2) {\r\n    return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, \"default\", module2 && module2.__esModule && \"default\" in module2 ? { get: function () { return module2.default; }, enumerable: true } : { value: module2, enumerable: true })), module2);\r\n};\r\nvar __async = function (__this, __arguments, generator) {\r\n    return new Promise(function (resolve, reject) {\r\n        var fulfilled = function (value) {\r\n            try {\r\n                step(generator.next(value));\r\n            }\r\n            catch (e) {\r\n                reject(e);\r\n            }\r\n        };\r\n        var rejected = function (value) {\r\n            try {\r\n                step(generator.throw(value));\r\n            }\r\n            catch (e) {\r\n                reject(e);\r\n            }\r\n        };\r\n        var step = function (x) { return x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); };\r\n        step((generator = generator.apply(__this, __arguments)).next());\r\n    });\r\n};\r\n// src/query/index.ts\r\n__markAsModule(exports);\r\n__export(exports, {\r\n    QueryStatus: function () { return QueryStatus; },\r\n    buildCreateApi: function () { return buildCreateApi; },\r\n    copyWithStructuralSharing: function () { return copyWithStructuralSharing; },\r\n    coreModule: function () { return coreModule; },\r\n    createApi: function () { return createApi; },\r\n    defaultSerializeQueryArgs: function () { return defaultSerializeQueryArgs; },\r\n    fakeBaseQuery: function () { return fakeBaseQuery; },\r\n    fetchBaseQuery: function () { return fetchBaseQuery; },\r\n    retry: function () { return retry; },\r\n    setupListeners: function () { return setupListeners; },\r\n    skipSelector: function () { return skipSelector; },\r\n    skipToken: function () { return skipToken; }\r\n});\r\n// src/query/core/apiState.ts\r\nvar QueryStatus;\r\n(function (QueryStatus2) {\r\n    QueryStatus2[\"uninitialized\"] = \"uninitialized\";\r\n    QueryStatus2[\"pending\"] = \"pending\";\r\n    QueryStatus2[\"fulfilled\"] = \"fulfilled\";\r\n    QueryStatus2[\"rejected\"] = \"rejected\";\r\n})(QueryStatus || (QueryStatus = {}));\r\nfunction getRequestStatusFlags(status) {\r\n    return {\r\n        status: status,\r\n        isUninitialized: status === QueryStatus.uninitialized,\r\n        isLoading: status === QueryStatus.pending,\r\n        isSuccess: status === QueryStatus.fulfilled,\r\n        isError: status === QueryStatus.rejected\r\n    };\r\n}\r\n// src/query/utils/isAbsoluteUrl.ts\r\nfunction isAbsoluteUrl(url) {\r\n    return new RegExp(\"(^|:)//\").test(url);\r\n}\r\n// src/query/utils/joinUrls.ts\r\nvar withoutTrailingSlash = function (url) { return url.replace(/\\/$/, \"\"); };\r\nvar withoutLeadingSlash = function (url) { return url.replace(/^\\//, \"\"); };\r\nfunction joinUrls(base, url) {\r\n    if (!base) {\r\n        return url;\r\n    }\r\n    if (!url) {\r\n        return base;\r\n    }\r\n    if (isAbsoluteUrl(url)) {\r\n        return url;\r\n    }\r\n    var delimiter = base.endsWith(\"/\") || !url.startsWith(\"?\") ? \"/\" : \"\";\r\n    base = withoutTrailingSlash(base);\r\n    url = withoutLeadingSlash(url);\r\n    return \"\" + base + delimiter + url;\r\n}\r\n// src/query/utils/flatten.ts\r\nvar flatten = function (arr) { return [].concat.apply([], arr); };\r\n// src/query/utils/isOnline.ts\r\nfunction isOnline() {\r\n    return typeof navigator === \"undefined\" ? true : navigator.onLine === void 0 ? true : navigator.onLine;\r\n}\r\n// src/query/utils/isDocumentVisible.ts\r\nfunction isDocumentVisible() {\r\n    if (typeof document === \"undefined\") {\r\n        return true;\r\n    }\r\n    return document.visibilityState !== \"hidden\";\r\n}\r\n// src/query/utils/copyWithStructuralSharing.ts\r\nvar import_toolkit = __toModule(require(\"@reduxjs/toolkit\"));\r\nvar isPlainObject = import_toolkit.isPlainObject;\r\nfunction copyWithStructuralSharing(oldObj, newObj) {\r\n    if (oldObj === newObj || !(isPlainObject(oldObj) && isPlainObject(newObj) || Array.isArray(oldObj) && Array.isArray(newObj))) {\r\n        return newObj;\r\n    }\r\n    var newKeys = Object.keys(newObj);\r\n    var oldKeys = Object.keys(oldObj);\r\n    var isSameObject = newKeys.length === oldKeys.length;\r\n    var mergeObj = Array.isArray(newObj) ? [] : {};\r\n    for (var _j = 0, newKeys_1 = newKeys; _j < newKeys_1.length; _j++) {\r\n        var key = newKeys_1[_j];\r\n        mergeObj[key] = copyWithStructuralSharing(oldObj[key], newObj[key]);\r\n        if (isSameObject)\r\n            isSameObject = oldObj[key] === mergeObj[key];\r\n    }\r\n    return isSameObject ? oldObj : mergeObj;\r\n}\r\n// src/query/fetchBaseQuery.ts\r\nvar import_toolkit2 = __toModule(require(\"@reduxjs/toolkit\"));\r\nvar defaultFetchFn = function () {\r\n    var args = [];\r\n    for (var _j = 0; _j < arguments.length; _j++) {\r\n        args[_j] = arguments[_j];\r\n    }\r\n    return fetch.apply(void 0, args);\r\n};\r\nvar defaultValidateStatus = function (response) { return response.status >= 200 && response.status <= 299; };\r\nvar defaultIsJsonContentType = function (headers) { return /ion\\/(vnd\\.api\\+)?json/.test(headers.get(\"content-type\") || \"\"); };\r\nfunction stripUndefined(obj) {\r\n    if (!(0, import_toolkit2.isPlainObject)(obj)) {\r\n        return obj;\r\n    }\r\n    var copy = __spreadValues({}, obj);\r\n    for (var _j = 0, _k = Object.entries(copy); _j < _k.length; _j++) {\r\n        var _l = _k[_j], k = _l[0], v = _l[1];\r\n        if (v === void 0)\r\n            delete copy[k];\r\n    }\r\n    return copy;\r\n}\r\nfunction fetchBaseQuery(_a) {\r\n    var _this = this;\r\n    if (_a === void 0) { _a = {}; }\r\n    var _b = _a, baseUrl = _b.baseUrl, _j = _b.prepareHeaders, prepareHeaders = _j === void 0 ? function (x) { return x; } : _j, _k = _b.fetchFn, fetchFn = _k === void 0 ? defaultFetchFn : _k, paramsSerializer = _b.paramsSerializer, _l = _b.isJsonContentType, isJsonContentType = _l === void 0 ? defaultIsJsonContentType : _l, _m = _b.jsonContentType, jsonContentType = _m === void 0 ? \"application/json\" : _m, defaultTimeout = _b.timeout, globalValidateStatus = _b.validateStatus, baseFetchOptions = __objRest(_b, [\r\n        \"baseUrl\",\r\n        \"prepareHeaders\",\r\n        \"fetchFn\",\r\n        \"paramsSerializer\",\r\n        \"isJsonContentType\",\r\n        \"jsonContentType\",\r\n        \"timeout\",\r\n        \"validateStatus\"\r\n    ]);\r\n    if (typeof fetch === \"undefined\" && fetchFn === defaultFetchFn) {\r\n        console.warn(\"Warning: `fetch` is not available. Please supply a custom `fetchFn` property to use `fetchBaseQuery` on SSR environments.\");\r\n    }\r\n    return function (arg, api) { return __async(_this, null, function () {\r\n        var signal, getState, extra, endpoint, forced, type, meta, _a2, url, _j, method, _k, headers, _l, body, _m, params, _o, responseHandler, _p, validateStatus, _q, timeout, rest, config, _r, isJsonifiable, divider, query, request, requestClone, response, timedOut, timeoutId, e_1, responseClone, resultData, responseText, handleResponseError_1, e_2;\r\n        return __generator(this, function (_s) {\r\n            switch (_s.label) {\r\n                case 0:\r\n                    signal = api.signal, getState = api.getState, extra = api.extra, endpoint = api.endpoint, forced = api.forced, type = api.type;\r\n                    _a2 = typeof arg == \"string\" ? { url: arg } : arg, url = _a2.url, _j = _a2.method, method = _j === void 0 ? \"GET\" : _j, _k = _a2.headers, headers = _k === void 0 ? new Headers(baseFetchOptions.headers) : _k, _l = _a2.body, body = _l === void 0 ? void 0 : _l, _m = _a2.params, params = _m === void 0 ? void 0 : _m, _o = _a2.responseHandler, responseHandler = _o === void 0 ? \"json\" : _o, _p = _a2.validateStatus, validateStatus = _p === void 0 ? globalValidateStatus != null ? globalValidateStatus : defaultValidateStatus : _p, _q = _a2.timeout, timeout = _q === void 0 ? defaultTimeout : _q, rest = __objRest(_a2, [\r\n                        \"url\",\r\n                        \"method\",\r\n                        \"headers\",\r\n                        \"body\",\r\n                        \"params\",\r\n                        \"responseHandler\",\r\n                        \"validateStatus\",\r\n                        \"timeout\"\r\n                    ]);\r\n                    config = __spreadValues(__spreadProps(__spreadValues({}, baseFetchOptions), {\r\n                        method: method,\r\n                        signal: signal,\r\n                        body: body\r\n                    }), rest);\r\n                    headers = new Headers(stripUndefined(headers));\r\n                    _r = config;\r\n                    return [4 /*yield*/, prepareHeaders(headers, {\r\n                            getState: getState,\r\n                            extra: extra,\r\n                            endpoint: endpoint,\r\n                            forced: forced,\r\n                            type: type\r\n                        })];\r\n                case 1:\r\n                    _r.headers = (_s.sent()) || headers;\r\n                    isJsonifiable = function (body2) { return typeof body2 === \"object\" && ((0, import_toolkit2.isPlainObject)(body2) || Array.isArray(body2) || typeof body2.toJSON === \"function\"); };\r\n                    if (!config.headers.has(\"content-type\") && isJsonifiable(body)) {\r\n                        config.headers.set(\"content-type\", jsonContentType);\r\n                    }\r\n                    if (isJsonifiable(body) && isJsonContentType(config.headers)) {\r\n                        config.body = JSON.stringify(body);\r\n                    }\r\n                    if (params) {\r\n                        divider = ~url.indexOf(\"?\") ? \"&\" : \"?\";\r\n                        query = paramsSerializer ? paramsSerializer(params) : new URLSearchParams(stripUndefined(params));\r\n                        url += divider + query;\r\n                    }\r\n                    url = joinUrls(baseUrl, url);\r\n                    request = new Request(url, config);\r\n                    requestClone = request.clone();\r\n                    meta = { request: requestClone };\r\n                    timedOut = false, timeoutId = timeout && setTimeout(function () {\r\n                        timedOut = true;\r\n                        api.abort();\r\n                    }, timeout);\r\n                    _s.label = 2;\r\n                case 2:\r\n                    _s.trys.push([2, 4, 5, 6]);\r\n                    return [4 /*yield*/, fetchFn(request)];\r\n                case 3:\r\n                    response = _s.sent();\r\n                    return [3 /*break*/, 6];\r\n                case 4:\r\n                    e_1 = _s.sent();\r\n                    return [2 /*return*/, {\r\n                            error: {\r\n                                status: timedOut ? \"TIMEOUT_ERROR\" : \"FETCH_ERROR\",\r\n                                error: String(e_1)\r\n                            },\r\n                            meta: meta\r\n                        }];\r\n                case 5:\r\n                    if (timeoutId)\r\n                        clearTimeout(timeoutId);\r\n                    return [7 /*endfinally*/];\r\n                case 6:\r\n                    responseClone = response.clone();\r\n                    meta.response = responseClone;\r\n                    responseText = \"\";\r\n                    _s.label = 7;\r\n                case 7:\r\n                    _s.trys.push([7, 9, , 10]);\r\n                    return [4 /*yield*/, Promise.all([\r\n                            handleResponse(response, responseHandler).then(function (r) { return resultData = r; }, function (e) { return handleResponseError_1 = e; }),\r\n                            responseClone.text().then(function (r) { return responseText = r; }, function () {\r\n                            })\r\n                        ])];\r\n                case 8:\r\n                    _s.sent();\r\n                    if (handleResponseError_1)\r\n                        throw handleResponseError_1;\r\n                    return [3 /*break*/, 10];\r\n                case 9:\r\n                    e_2 = _s.sent();\r\n                    return [2 /*return*/, {\r\n                            error: {\r\n                                status: \"PARSING_ERROR\",\r\n                                originalStatus: response.status,\r\n                                data: responseText,\r\n                                error: String(e_2)\r\n                            },\r\n                            meta: meta\r\n                        }];\r\n                case 10: return [2 /*return*/, validateStatus(response, resultData) ? {\r\n                        data: resultData,\r\n                        meta: meta\r\n                    } : {\r\n                        error: {\r\n                            status: response.status,\r\n                            data: resultData\r\n                        },\r\n                        meta: meta\r\n                    }];\r\n            }\r\n        });\r\n    }); };\r\n    function handleResponse(response, responseHandler) {\r\n        return __async(this, null, function () {\r\n            var text;\r\n            return __generator(this, function (_j) {\r\n                switch (_j.label) {\r\n                    case 0:\r\n                        if (typeof responseHandler === \"function\") {\r\n                            return [2 /*return*/, responseHandler(response)];\r\n                        }\r\n                        if (responseHandler === \"content-type\") {\r\n                            responseHandler = isJsonContentType(response.headers) ? \"json\" : \"text\";\r\n                        }\r\n                        if (!(responseHandler === \"json\")) return [3 /*break*/, 2];\r\n                        return [4 /*yield*/, response.text()];\r\n                    case 1:\r\n                        text = _j.sent();\r\n                        return [2 /*return*/, text.length ? JSON.parse(text) : null];\r\n                    case 2: return [2 /*return*/, response.text()];\r\n                }\r\n            });\r\n        });\r\n    }\r\n}\r\n// src/query/HandledError.ts\r\nvar HandledError = /** @class */ (function () {\r\n    function HandledError(value, meta) {\r\n        if (meta === void 0) { meta = void 0; }\r\n        this.value = value;\r\n        this.meta = meta;\r\n    }\r\n    return HandledError;\r\n}());\r\n// src/query/retry.ts\r\nfunction defaultBackoff(attempt, maxRetries) {\r\n    if (attempt === void 0) { attempt = 0; }\r\n    if (maxRetries === void 0) { maxRetries = 5; }\r\n    return __async(this, null, function () {\r\n        var attempts, timeout;\r\n        return __generator(this, function (_j) {\r\n            switch (_j.label) {\r\n                case 0:\r\n                    attempts = Math.min(attempt, maxRetries);\r\n                    timeout = ~~((Math.random() + 0.4) * (300 << attempts));\r\n                    return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(function (res) { return resolve(res); }, timeout); })];\r\n                case 1:\r\n                    _j.sent();\r\n                    return [2 /*return*/];\r\n            }\r\n        });\r\n    });\r\n}\r\nfunction fail(e) {\r\n    throw Object.assign(new HandledError({ error: e }), {\r\n        throwImmediately: true\r\n    });\r\n}\r\nvar EMPTY_OPTIONS = {};\r\nvar retryWithBackoff = function (baseQuery, defaultOptions) { return function (args, api, extraOptions) { return __async(void 0, null, function () {\r\n    var possibleMaxRetries, maxRetries, defaultRetryCondition, options, retry2, result, e_3;\r\n    return __generator(this, function (_j) {\r\n        switch (_j.label) {\r\n            case 0:\r\n                possibleMaxRetries = [\r\n                    5,\r\n                    (defaultOptions || EMPTY_OPTIONS).maxRetries,\r\n                    (extraOptions || EMPTY_OPTIONS).maxRetries\r\n                ].filter(function (x) { return x !== void 0; });\r\n                maxRetries = possibleMaxRetries.slice(-1)[0];\r\n                defaultRetryCondition = function (_, __, _j) {\r\n                    var attempt = _j.attempt;\r\n                    return attempt <= maxRetries;\r\n                };\r\n                options = __spreadValues(__spreadValues({\r\n                    maxRetries: maxRetries,\r\n                    backoff: defaultBackoff,\r\n                    retryCondition: defaultRetryCondition\r\n                }, defaultOptions), extraOptions);\r\n                retry2 = 0;\r\n                _j.label = 1;\r\n            case 1:\r\n                if (!true) return [3 /*break*/, 7];\r\n                _j.label = 2;\r\n            case 2:\r\n                _j.trys.push([2, 4, , 6]);\r\n                return [4 /*yield*/, baseQuery(args, api, extraOptions)];\r\n            case 3:\r\n                result = _j.sent();\r\n                if (result.error) {\r\n                    throw new HandledError(result);\r\n                }\r\n                return [2 /*return*/, result];\r\n            case 4:\r\n                e_3 = _j.sent();\r\n                retry2++;\r\n                if (e_3.throwImmediately) {\r\n                    if (e_3 instanceof HandledError) {\r\n                        return [2 /*return*/, e_3.value];\r\n                    }\r\n                    throw e_3;\r\n                }\r\n                if (e_3 instanceof HandledError && !options.retryCondition(e_3.value.error, args, {\r\n                    attempt: retry2,\r\n                    baseQueryApi: api,\r\n                    extraOptions: extraOptions\r\n                })) {\r\n                    return [2 /*return*/, e_3.value];\r\n                }\r\n                return [4 /*yield*/, options.backoff(retry2, options.maxRetries)];\r\n            case 5:\r\n                _j.sent();\r\n                return [3 /*break*/, 6];\r\n            case 6: return [3 /*break*/, 1];\r\n            case 7: return [2 /*return*/];\r\n        }\r\n    });\r\n}); }; };\r\nvar retry = /* @__PURE__ */ Object.assign(retryWithBackoff, { fail: fail });\r\n// src/query/core/setupListeners.ts\r\nvar import_toolkit3 = __toModule(require(\"@reduxjs/toolkit\"));\r\nvar onFocus = /* @__PURE__ */ (0, import_toolkit3.createAction)(\"__rtkq/focused\");\r\nvar onFocusLost = /* @__PURE__ */ (0, import_toolkit3.createAction)(\"__rtkq/unfocused\");\r\nvar onOnline = /* @__PURE__ */ (0, import_toolkit3.createAction)(\"__rtkq/online\");\r\nvar onOffline = /* @__PURE__ */ (0, import_toolkit3.createAction)(\"__rtkq/offline\");\r\nvar initialized = false;\r\nfunction setupListeners(dispatch, customHandler) {\r\n    function defaultHandler() {\r\n        var handleFocus = function () { return dispatch(onFocus()); };\r\n        var handleFocusLost = function () { return dispatch(onFocusLost()); };\r\n        var handleOnline = function () { return dispatch(onOnline()); };\r\n        var handleOffline = function () { return dispatch(onOffline()); };\r\n        var handleVisibilityChange = function () {\r\n            if (window.document.visibilityState === \"visible\") {\r\n                handleFocus();\r\n            }\r\n            else {\r\n                handleFocusLost();\r\n            }\r\n        };\r\n        if (!initialized) {\r\n            if (typeof window !== \"undefined\" && window.addEventListener) {\r\n                window.addEventListener(\"visibilitychange\", handleVisibilityChange, false);\r\n                window.addEventListener(\"focus\", handleFocus, false);\r\n                window.addEventListener(\"online\", handleOnline, false);\r\n                window.addEventListener(\"offline\", handleOffline, false);\r\n                initialized = true;\r\n            }\r\n        }\r\n        var unsubscribe = function () {\r\n            window.removeEventListener(\"focus\", handleFocus);\r\n            window.removeEventListener(\"visibilitychange\", handleVisibilityChange);\r\n            window.removeEventListener(\"online\", handleOnline);\r\n            window.removeEventListener(\"offline\", handleOffline);\r\n            initialized = false;\r\n        };\r\n        return unsubscribe;\r\n    }\r\n    return customHandler ? customHandler(dispatch, { onFocus: onFocus, onFocusLost: onFocusLost, onOffline: onOffline, onOnline: onOnline }) : defaultHandler();\r\n}\r\n// src/query/core/buildSelectors.ts\r\nvar import_toolkit7 = __toModule(require(\"@reduxjs/toolkit\"));\r\n// src/query/endpointDefinitions.ts\r\nvar DefinitionType;\r\n(function (DefinitionType2) {\r\n    DefinitionType2[\"query\"] = \"query\";\r\n    DefinitionType2[\"mutation\"] = \"mutation\";\r\n})(DefinitionType || (DefinitionType = {}));\r\nfunction isQueryDefinition(e) {\r\n    return e.type === DefinitionType.query;\r\n}\r\nfunction isMutationDefinition(e) {\r\n    return e.type === DefinitionType.mutation;\r\n}\r\nfunction calculateProvidedBy(description, result, error, queryArg, meta, assertTagTypes) {\r\n    if (isFunction(description)) {\r\n        return description(result, error, queryArg, meta).map(expandTagDescription).map(assertTagTypes);\r\n    }\r\n    if (Array.isArray(description)) {\r\n        return description.map(expandTagDescription).map(assertTagTypes);\r\n    }\r\n    return [];\r\n}\r\nfunction isFunction(t) {\r\n    return typeof t === \"function\";\r\n}\r\nfunction expandTagDescription(description) {\r\n    return typeof description === \"string\" ? { type: description } : description;\r\n}\r\n// src/query/core/buildSlice.ts\r\nvar import_toolkit6 = __toModule(require(\"@reduxjs/toolkit\"));\r\n// src/query/utils/isNotNullish.ts\r\nfunction isNotNullish(v) {\r\n    return v != null;\r\n}\r\n// src/query/core/buildInitiate.ts\r\nvar forceQueryFnSymbol = Symbol(\"forceQueryFn\");\r\nvar isUpsertQuery = function (arg) { return typeof arg[forceQueryFnSymbol] === \"function\"; };\r\nfunction buildInitiate(_j) {\r\n    var serializeQueryArgs = _j.serializeQueryArgs, queryThunk = _j.queryThunk, mutationThunk = _j.mutationThunk, api = _j.api, context = _j.context;\r\n    var runningQueries = new Map();\r\n    var runningMutations = new Map();\r\n    var _k = api.internalActions, unsubscribeQueryResult = _k.unsubscribeQueryResult, removeMutationResult = _k.removeMutationResult, updateSubscriptionOptions = _k.updateSubscriptionOptions;\r\n    return {\r\n        buildInitiateQuery: buildInitiateQuery,\r\n        buildInitiateMutation: buildInitiateMutation,\r\n        getRunningQueryThunk: getRunningQueryThunk,\r\n        getRunningMutationThunk: getRunningMutationThunk,\r\n        getRunningQueriesThunk: getRunningQueriesThunk,\r\n        getRunningMutationsThunk: getRunningMutationsThunk,\r\n        getRunningOperationPromises: getRunningOperationPromises,\r\n        removalWarning: removalWarning\r\n    };\r\n    function removalWarning() {\r\n        throw new Error(\"This method had to be removed due to a conceptual bug in RTK.\\n       Please see https://github.com/reduxjs/redux-toolkit/pull/2481 for details.\\n       See https://redux-toolkit.js.org/rtk-query/usage/server-side-rendering for new guidance on SSR.\");\r\n    }\r\n    function getRunningOperationPromises() {\r\n        if (typeof process !== \"undefined\" && true) {\r\n            removalWarning();\r\n        }\r\n        else {\r\n            var extract = function (v) { return Array.from(v.values()).flatMap(function (queriesForStore) { return queriesForStore ? Object.values(queriesForStore) : []; }); };\r\n            return __spreadArray(__spreadArray([], extract(runningQueries)), extract(runningMutations)).filter(isNotNullish);\r\n        }\r\n    }\r\n    function getRunningQueryThunk(endpointName, queryArgs) {\r\n        return function (dispatch) {\r\n            var _a;\r\n            var endpointDefinition = context.endpointDefinitions[endpointName];\r\n            var queryCacheKey = serializeQueryArgs({\r\n                queryArgs: queryArgs,\r\n                endpointDefinition: endpointDefinition,\r\n                endpointName: endpointName\r\n            });\r\n            return (_a = runningQueries.get(dispatch)) == null ? void 0 : _a[queryCacheKey];\r\n        };\r\n    }\r\n    function getRunningMutationThunk(_endpointName, fixedCacheKeyOrRequestId) {\r\n        return function (dispatch) {\r\n            var _a;\r\n            return (_a = runningMutations.get(dispatch)) == null ? void 0 : _a[fixedCacheKeyOrRequestId];\r\n        };\r\n    }\r\n    function getRunningQueriesThunk() {\r\n        return function (dispatch) { return Object.values(runningQueries.get(dispatch) || {}).filter(isNotNullish); };\r\n    }\r\n    function getRunningMutationsThunk() {\r\n        return function (dispatch) { return Object.values(runningMutations.get(dispatch) || {}).filter(isNotNullish); };\r\n    }\r\n    function middlewareWarning(dispatch) {\r\n        if (true) {\r\n            if (middlewareWarning.triggered)\r\n                return;\r\n            var registered = dispatch(api.internalActions.internal_probeSubscription({\r\n                queryCacheKey: \"DOES_NOT_EXIST\",\r\n                requestId: \"DUMMY_REQUEST_ID\"\r\n            }));\r\n            middlewareWarning.triggered = true;\r\n            if (typeof registered !== \"boolean\") {\r\n                throw new Error(\"Warning: Middleware for RTK-Query API at reducerPath \\\"\" + api.reducerPath + \"\\\" has not been added to the store.\\nYou must add the middleware for RTK-Query to function correctly!\");\r\n            }\r\n        }\r\n    }\r\n    function buildInitiateQuery(endpointName, endpointDefinition) {\r\n        var queryAction = function (arg, _j) {\r\n            var _k = _j === void 0 ? {} : _j, _l = _k.subscribe, subscribe = _l === void 0 ? true : _l, forceRefetch = _k.forceRefetch, subscriptionOptions = _k.subscriptionOptions, _m = forceQueryFnSymbol, forceQueryFn = _k[_m];\r\n            return function (dispatch, getState) {\r\n                var _j;\r\n                var _a;\r\n                var queryCacheKey = serializeQueryArgs({\r\n                    queryArgs: arg,\r\n                    endpointDefinition: endpointDefinition,\r\n                    endpointName: endpointName\r\n                });\r\n                var thunk = queryThunk((_j = {\r\n                        type: \"query\",\r\n                        subscribe: subscribe,\r\n                        forceRefetch: forceRefetch,\r\n                        subscriptionOptions: subscriptionOptions,\r\n                        endpointName: endpointName,\r\n                        originalArgs: arg,\r\n                        queryCacheKey: queryCacheKey\r\n                    },\r\n                    _j[forceQueryFnSymbol] = forceQueryFn,\r\n                    _j));\r\n                var selector = api.endpoints[endpointName].select(arg);\r\n                var thunkResult = dispatch(thunk);\r\n                var stateAfter = selector(getState());\r\n                middlewareWarning(dispatch);\r\n                var requestId = thunkResult.requestId, abort = thunkResult.abort;\r\n                var skippedSynchronously = stateAfter.requestId !== requestId;\r\n                var runningQuery = (_a = runningQueries.get(dispatch)) == null ? void 0 : _a[queryCacheKey];\r\n                var selectFromState = function () { return selector(getState()); };\r\n                var statePromise = Object.assign(forceQueryFn ? thunkResult.then(selectFromState) : skippedSynchronously && !runningQuery ? Promise.resolve(stateAfter) : Promise.all([runningQuery, thunkResult]).then(selectFromState), {\r\n                    arg: arg,\r\n                    requestId: requestId,\r\n                    subscriptionOptions: subscriptionOptions,\r\n                    queryCacheKey: queryCacheKey,\r\n                    abort: abort,\r\n                    unwrap: function () {\r\n                        return __async(this, null, function () {\r\n                            var result;\r\n                            return __generator(this, function (_j) {\r\n                                switch (_j.label) {\r\n                                    case 0: return [4 /*yield*/, statePromise];\r\n                                    case 1:\r\n                                        result = _j.sent();\r\n                                        if (result.isError) {\r\n                                            throw result.error;\r\n                                        }\r\n                                        return [2 /*return*/, result.data];\r\n                                }\r\n                            });\r\n                        });\r\n                    },\r\n                    refetch: function () { return dispatch(queryAction(arg, { subscribe: false, forceRefetch: true })); },\r\n                    unsubscribe: function () {\r\n                        if (subscribe)\r\n                            dispatch(unsubscribeQueryResult({\r\n                                queryCacheKey: queryCacheKey,\r\n                                requestId: requestId\r\n                            }));\r\n                    },\r\n                    updateSubscriptionOptions: function (options) {\r\n                        statePromise.subscriptionOptions = options;\r\n                        dispatch(updateSubscriptionOptions({\r\n                            endpointName: endpointName,\r\n                            requestId: requestId,\r\n                            queryCacheKey: queryCacheKey,\r\n                            options: options\r\n                        }));\r\n                    }\r\n                });\r\n                if (!runningQuery && !skippedSynchronously && !forceQueryFn) {\r\n                    var running_1 = runningQueries.get(dispatch) || {};\r\n                    running_1[queryCacheKey] = statePromise;\r\n                    runningQueries.set(dispatch, running_1);\r\n                    statePromise.then(function () {\r\n                        delete running_1[queryCacheKey];\r\n                        if (!Object.keys(running_1).length) {\r\n                            runningQueries.delete(dispatch);\r\n                        }\r\n                    });\r\n                }\r\n                return statePromise;\r\n            };\r\n        };\r\n        return queryAction;\r\n    }\r\n    function buildInitiateMutation(endpointName) {\r\n        return function (arg, _j) {\r\n            var _k = _j === void 0 ? {} : _j, _l = _k.track, track = _l === void 0 ? true : _l, fixedCacheKey = _k.fixedCacheKey;\r\n            return function (dispatch, getState) {\r\n                var thunk = mutationThunk({\r\n                    type: \"mutation\",\r\n                    endpointName: endpointName,\r\n                    originalArgs: arg,\r\n                    track: track,\r\n                    fixedCacheKey: fixedCacheKey\r\n                });\r\n                var thunkResult = dispatch(thunk);\r\n                middlewareWarning(dispatch);\r\n                var requestId = thunkResult.requestId, abort = thunkResult.abort, unwrap = thunkResult.unwrap;\r\n                var returnValuePromise = thunkResult.unwrap().then(function (data) { return ({ data: data }); }).catch(function (error) { return ({ error: error }); });\r\n                var reset = function () {\r\n                    dispatch(removeMutationResult({ requestId: requestId, fixedCacheKey: fixedCacheKey }));\r\n                };\r\n                var ret = Object.assign(returnValuePromise, {\r\n                    arg: thunkResult.arg,\r\n                    requestId: requestId,\r\n                    abort: abort,\r\n                    unwrap: unwrap,\r\n                    unsubscribe: reset,\r\n                    reset: reset\r\n                });\r\n                var running = runningMutations.get(dispatch) || {};\r\n                runningMutations.set(dispatch, running);\r\n                running[requestId] = ret;\r\n                ret.then(function () {\r\n                    delete running[requestId];\r\n                    if (!Object.keys(running).length) {\r\n                        runningMutations.delete(dispatch);\r\n                    }\r\n                });\r\n                if (fixedCacheKey) {\r\n                    running[fixedCacheKey] = ret;\r\n                    ret.then(function () {\r\n                        if (running[fixedCacheKey] === ret) {\r\n                            delete running[fixedCacheKey];\r\n                            if (!Object.keys(running).length) {\r\n                                runningMutations.delete(dispatch);\r\n                            }\r\n                        }\r\n                    });\r\n                }\r\n                return ret;\r\n            };\r\n        };\r\n    }\r\n}\r\n// src/query/core/buildThunks.ts\r\nvar import_toolkit4 = __toModule(require(\"@reduxjs/toolkit\"));\r\nvar import_immer = __toModule(require(\"immer\"));\r\nvar import_toolkit5 = __toModule(require(\"@reduxjs/toolkit\"));\r\nfunction defaultTransformResponse(baseQueryReturnValue) {\r\n    return baseQueryReturnValue;\r\n}\r\nfunction buildThunks(_j) {\r\n    var _this = this;\r\n    var reducerPath = _j.reducerPath, baseQuery = _j.baseQuery, endpointDefinitions = _j.context.endpointDefinitions, serializeQueryArgs = _j.serializeQueryArgs, api = _j.api;\r\n    var patchQueryData = function (endpointName, args, patches) { return function (dispatch) {\r\n        var endpointDefinition = endpointDefinitions[endpointName];\r\n        dispatch(api.internalActions.queryResultPatched({\r\n            queryCacheKey: serializeQueryArgs({\r\n                queryArgs: args,\r\n                endpointDefinition: endpointDefinition,\r\n                endpointName: endpointName\r\n            }),\r\n            patches: patches\r\n        }));\r\n    }; };\r\n    var updateQueryData = function (endpointName, args, updateRecipe) { return function (dispatch, getState) {\r\n        var _j, _k;\r\n        var currentState = api.endpoints[endpointName].select(args)(getState());\r\n        var ret = {\r\n            patches: [],\r\n            inversePatches: [],\r\n            undo: function () { return dispatch(api.util.patchQueryData(endpointName, args, ret.inversePatches)); }\r\n        };\r\n        if (currentState.status === QueryStatus.uninitialized) {\r\n            return ret;\r\n        }\r\n        if (\"data\" in currentState) {\r\n            if ((0, import_immer.isDraftable)(currentState.data)) {\r\n                var _l = (0, import_immer.produceWithPatches)(currentState.data, updateRecipe), patches = _l[1], inversePatches = _l[2];\r\n                (_j = ret.patches).push.apply(_j, patches);\r\n                (_k = ret.inversePatches).push.apply(_k, inversePatches);\r\n            }\r\n            else {\r\n                var value = updateRecipe(currentState.data);\r\n                ret.patches.push({ op: \"replace\", path: [], value: value });\r\n                ret.inversePatches.push({\r\n                    op: \"replace\",\r\n                    path: [],\r\n                    value: currentState.data\r\n                });\r\n            }\r\n        }\r\n        dispatch(api.util.patchQueryData(endpointName, args, ret.patches));\r\n        return ret;\r\n    }; };\r\n    var upsertQueryData = function (endpointName, args, value) { return function (dispatch) {\r\n        var _j;\r\n        return dispatch(api.endpoints[endpointName].initiate(args, (_j = {\r\n                subscribe: false,\r\n                forceRefetch: true\r\n            },\r\n            _j[forceQueryFnSymbol] = function () { return ({\r\n                data: value\r\n            }); },\r\n            _j)));\r\n    }; };\r\n    var executeEndpoint = function (_0, _1) { return __async(_this, [_0, _1], function (arg, _j) {\r\n        var endpointDefinition, transformResponse, result, baseQueryApi_1, forceQueryFn, what, err, _k, _l, key, _m, error_1, catchedError, transformErrorResponse, _o, e_4;\r\n        var _p, _q;\r\n        var signal = _j.signal, abort = _j.abort, rejectWithValue = _j.rejectWithValue, fulfillWithValue = _j.fulfillWithValue, dispatch = _j.dispatch, getState = _j.getState, extra = _j.extra;\r\n        return __generator(this, function (_r) {\r\n            switch (_r.label) {\r\n                case 0:\r\n                    endpointDefinition = endpointDefinitions[arg.endpointName];\r\n                    _r.label = 1;\r\n                case 1:\r\n                    _r.trys.push([1, 8, , 13]);\r\n                    transformResponse = defaultTransformResponse;\r\n                    result = void 0;\r\n                    baseQueryApi_1 = {\r\n                        signal: signal,\r\n                        abort: abort,\r\n                        dispatch: dispatch,\r\n                        getState: getState,\r\n                        extra: extra,\r\n                        endpoint: arg.endpointName,\r\n                        type: arg.type,\r\n                        forced: arg.type === \"query\" ? isForcedQuery(arg, getState()) : void 0\r\n                    };\r\n                    forceQueryFn = arg.type === \"query\" ? arg[forceQueryFnSymbol] : void 0;\r\n                    if (!forceQueryFn) return [3 /*break*/, 2];\r\n                    result = forceQueryFn();\r\n                    return [3 /*break*/, 6];\r\n                case 2:\r\n                    if (!endpointDefinition.query) return [3 /*break*/, 4];\r\n                    return [4 /*yield*/, baseQuery(endpointDefinition.query(arg.originalArgs), baseQueryApi_1, endpointDefinition.extraOptions)];\r\n                case 3:\r\n                    result = _r.sent();\r\n                    if (endpointDefinition.transformResponse) {\r\n                        transformResponse = endpointDefinition.transformResponse;\r\n                    }\r\n                    return [3 /*break*/, 6];\r\n                case 4: return [4 /*yield*/, endpointDefinition.queryFn(arg.originalArgs, baseQueryApi_1, endpointDefinition.extraOptions, function (arg2) { return baseQuery(arg2, baseQueryApi_1, endpointDefinition.extraOptions); })];\r\n                case 5:\r\n                    result = _r.sent();\r\n                    _r.label = 6;\r\n                case 6:\r\n                    if (typeof process !== \"undefined\" && true) {\r\n                        what = endpointDefinition.query ? \"`baseQuery`\" : \"`queryFn`\";\r\n                        err = void 0;\r\n                        if (!result) {\r\n                            err = what + \" did not return anything.\";\r\n                        }\r\n                        else if (typeof result !== \"object\") {\r\n                            err = what + \" did not return an object.\";\r\n                        }\r\n                        else if (result.error && result.data) {\r\n                            err = what + \" returned an object containing both `error` and `result`.\";\r\n                        }\r\n                        else if (result.error === void 0 && result.data === void 0) {\r\n                            err = what + \" returned an object containing neither a valid `error` and `result`. At least one of them should not be `undefined`\";\r\n                        }\r\n                        else {\r\n                            for (_k = 0, _l = Object.keys(result); _k < _l.length; _k++) {\r\n                                key = _l[_k];\r\n                                if (key !== \"error\" && key !== \"data\" && key !== \"meta\") {\r\n                                    err = \"The object returned by \" + what + \" has the unknown property \" + key + \".\";\r\n                                    break;\r\n                                }\r\n                            }\r\n                        }\r\n                        if (err) {\r\n                            console.error(\"Error encountered handling the endpoint \" + arg.endpointName + \".\\n              \" + err + \"\\n              It needs to return an object with either the shape `{ data: <value> }` or `{ error: <value> }` that may contain an optional `meta` property.\\n              Object returned was:\", result);\r\n                        }\r\n                    }\r\n                    if (result.error)\r\n                        throw new HandledError(result.error, result.meta);\r\n                    _m = fulfillWithValue;\r\n                    return [4 /*yield*/, transformResponse(result.data, result.meta, arg.originalArgs)];\r\n                case 7: return [2 /*return*/, _m.apply(void 0, [_r.sent(), (_p = {\r\n                                fulfilledTimeStamp: Date.now(),\r\n                                baseQueryMeta: result.meta\r\n                            },\r\n                            _p[import_toolkit5.SHOULD_AUTOBATCH] = true,\r\n                            _p)])];\r\n                case 8:\r\n                    error_1 = _r.sent();\r\n                    catchedError = error_1;\r\n                    if (!(catchedError instanceof HandledError)) return [3 /*break*/, 12];\r\n                    transformErrorResponse = defaultTransformResponse;\r\n                    if (endpointDefinition.query && endpointDefinition.transformErrorResponse) {\r\n                        transformErrorResponse = endpointDefinition.transformErrorResponse;\r\n                    }\r\n                    _r.label = 9;\r\n                case 9:\r\n                    _r.trys.push([9, 11, , 12]);\r\n                    _o = rejectWithValue;\r\n                    return [4 /*yield*/, transformErrorResponse(catchedError.value, catchedError.meta, arg.originalArgs)];\r\n                case 10: return [2 /*return*/, _o.apply(void 0, [_r.sent(), (_q = { baseQueryMeta: catchedError.meta }, _q[import_toolkit5.SHOULD_AUTOBATCH] = true, _q)])];\r\n                case 11:\r\n                    e_4 = _r.sent();\r\n                    catchedError = e_4;\r\n                    return [3 /*break*/, 12];\r\n                case 12:\r\n                    if (typeof process !== \"undefined\" && true) {\r\n                        console.error(\"An unhandled error occurred processing a request for the endpoint \\\"\" + arg.endpointName + \"\\\".\\nIn the case of an unhandled error, no tags will be \\\"provided\\\" or \\\"invalidated\\\".\", catchedError);\r\n                    }\r\n                    else {\r\n                        console.error(catchedError);\r\n                    }\r\n                    throw catchedError;\r\n                case 13: return [2 /*return*/];\r\n            }\r\n        });\r\n    }); };\r\n    function isForcedQuery(arg, state) {\r\n        var _a, _b, _c, _d;\r\n        var requestState = (_b = (_a = state[reducerPath]) == null ? void 0 : _a.queries) == null ? void 0 : _b[arg.queryCacheKey];\r\n        var baseFetchOnMountOrArgChange = (_c = state[reducerPath]) == null ? void 0 : _c.config.refetchOnMountOrArgChange;\r\n        var fulfilledVal = requestState == null ? void 0 : requestState.fulfilledTimeStamp;\r\n        var refetchVal = (_d = arg.forceRefetch) != null ? _d : arg.subscribe && baseFetchOnMountOrArgChange;\r\n        if (refetchVal) {\r\n            return refetchVal === true || (Number(new Date()) - Number(fulfilledVal)) / 1e3 >= refetchVal;\r\n        }\r\n        return false;\r\n    }\r\n    var queryThunk = (0, import_toolkit5.createAsyncThunk)(reducerPath + \"/executeQuery\", executeEndpoint, {\r\n        getPendingMeta: function () {\r\n            var _j;\r\n            return _j = { startedTimeStamp: Date.now() }, _j[import_toolkit5.SHOULD_AUTOBATCH] = true, _j;\r\n        },\r\n        condition: function (queryThunkArgs, _j) {\r\n            var getState = _j.getState;\r\n            var _a, _b, _c;\r\n            var state = getState();\r\n            var requestState = (_b = (_a = state[reducerPath]) == null ? void 0 : _a.queries) == null ? void 0 : _b[queryThunkArgs.queryCacheKey];\r\n            var fulfilledVal = requestState == null ? void 0 : requestState.fulfilledTimeStamp;\r\n            var currentArg = queryThunkArgs.originalArgs;\r\n            var previousArg = requestState == null ? void 0 : requestState.originalArgs;\r\n            var endpointDefinition = endpointDefinitions[queryThunkArgs.endpointName];\r\n            if (isUpsertQuery(queryThunkArgs)) {\r\n                return true;\r\n            }\r\n            if ((requestState == null ? void 0 : requestState.status) === \"pending\") {\r\n                return false;\r\n            }\r\n            if (isForcedQuery(queryThunkArgs, state)) {\r\n                return true;\r\n            }\r\n            if (isQueryDefinition(endpointDefinition) && ((_c = endpointDefinition == null ? void 0 : endpointDefinition.forceRefetch) == null ? void 0 : _c.call(endpointDefinition, {\r\n                currentArg: currentArg,\r\n                previousArg: previousArg,\r\n                endpointState: requestState,\r\n                state: state\r\n            }))) {\r\n                return true;\r\n            }\r\n            if (fulfilledVal) {\r\n                return false;\r\n            }\r\n            return true;\r\n        },\r\n        dispatchConditionRejection: true\r\n    });\r\n    var mutationThunk = (0, import_toolkit5.createAsyncThunk)(reducerPath + \"/executeMutation\", executeEndpoint, {\r\n        getPendingMeta: function () {\r\n            var _j;\r\n            return _j = { startedTimeStamp: Date.now() }, _j[import_toolkit5.SHOULD_AUTOBATCH] = true, _j;\r\n        }\r\n    });\r\n    var hasTheForce = function (options) { return \"force\" in options; };\r\n    var hasMaxAge = function (options) { return \"ifOlderThan\" in options; };\r\n    var prefetch = function (endpointName, arg, options) { return function (dispatch, getState) {\r\n        var force = hasTheForce(options) && options.force;\r\n        var maxAge = hasMaxAge(options) && options.ifOlderThan;\r\n        var queryAction = function (force2) {\r\n            if (force2 === void 0) { force2 = true; }\r\n            return api.endpoints[endpointName].initiate(arg, { forceRefetch: force2 });\r\n        };\r\n        var latestStateValue = api.endpoints[endpointName].select(arg)(getState());\r\n        if (force) {\r\n            dispatch(queryAction());\r\n        }\r\n        else if (maxAge) {\r\n            var lastFulfilledTs = latestStateValue == null ? void 0 : latestStateValue.fulfilledTimeStamp;\r\n            if (!lastFulfilledTs) {\r\n                dispatch(queryAction());\r\n                return;\r\n            }\r\n            var shouldRetrigger = (Number(new Date()) - Number(new Date(lastFulfilledTs))) / 1e3 >= maxAge;\r\n            if (shouldRetrigger) {\r\n                dispatch(queryAction());\r\n            }\r\n        }\r\n        else {\r\n            dispatch(queryAction(false));\r\n        }\r\n    }; };\r\n    function matchesEndpoint(endpointName) {\r\n        return function (action) {\r\n            var _a, _b;\r\n            return ((_b = (_a = action == null ? void 0 : action.meta) == null ? void 0 : _a.arg) == null ? void 0 : _b.endpointName) === endpointName;\r\n        };\r\n    }\r\n    function buildMatchThunkActions(thunk, endpointName) {\r\n        return {\r\n            matchPending: (0, import_toolkit4.isAllOf)((0, import_toolkit4.isPending)(thunk), matchesEndpoint(endpointName)),\r\n            matchFulfilled: (0, import_toolkit4.isAllOf)((0, import_toolkit4.isFulfilled)(thunk), matchesEndpoint(endpointName)),\r\n            matchRejected: (0, import_toolkit4.isAllOf)((0, import_toolkit4.isRejected)(thunk), matchesEndpoint(endpointName))\r\n        };\r\n    }\r\n    return {\r\n        queryThunk: queryThunk,\r\n        mutationThunk: mutationThunk,\r\n        prefetch: prefetch,\r\n        updateQueryData: updateQueryData,\r\n        upsertQueryData: upsertQueryData,\r\n        patchQueryData: patchQueryData,\r\n        buildMatchThunkActions: buildMatchThunkActions\r\n    };\r\n}\r\nfunction calculateProvidedByThunk(action, type, endpointDefinitions, assertTagType) {\r\n    return calculateProvidedBy(endpointDefinitions[action.meta.arg.endpointName][type], (0, import_toolkit4.isFulfilled)(action) ? action.payload : void 0, (0, import_toolkit4.isRejectedWithValue)(action) ? action.payload : void 0, action.meta.arg.originalArgs, \"baseQueryMeta\" in action.meta ? action.meta.baseQueryMeta : void 0, assertTagType);\r\n}\r\n// src/query/core/buildSlice.ts\r\nvar import_immer2 = __toModule(require(\"immer\"));\r\nfunction updateQuerySubstateIfExists(state, queryCacheKey, update) {\r\n    var substate = state[queryCacheKey];\r\n    if (substate) {\r\n        update(substate);\r\n    }\r\n}\r\nfunction getMutationCacheKey(id) {\r\n    var _a;\r\n    return (_a = \"arg\" in id ? id.arg.fixedCacheKey : id.fixedCacheKey) != null ? _a : id.requestId;\r\n}\r\nfunction updateMutationSubstateIfExists(state, id, update) {\r\n    var substate = state[getMutationCacheKey(id)];\r\n    if (substate) {\r\n        update(substate);\r\n    }\r\n}\r\nvar initialState = {};\r\nfunction buildSlice(_j) {\r\n    var reducerPath = _j.reducerPath, queryThunk = _j.queryThunk, mutationThunk = _j.mutationThunk, _k = _j.context, definitions = _k.endpointDefinitions, apiUid = _k.apiUid, extractRehydrationInfo = _k.extractRehydrationInfo, hasRehydrationInfo = _k.hasRehydrationInfo, assertTagType = _j.assertTagType, config = _j.config;\r\n    var resetApiState = (0, import_toolkit6.createAction)(reducerPath + \"/resetApiState\");\r\n    var querySlice = (0, import_toolkit6.createSlice)({\r\n        name: reducerPath + \"/queries\",\r\n        initialState: initialState,\r\n        reducers: {\r\n            removeQueryResult: {\r\n                reducer: function (draft, _j) {\r\n                    var queryCacheKey = _j.payload.queryCacheKey;\r\n                    delete draft[queryCacheKey];\r\n                },\r\n                prepare: (0, import_toolkit6.prepareAutoBatched)()\r\n            },\r\n            queryResultPatched: function (draft, _j) {\r\n                var _k = _j.payload, queryCacheKey = _k.queryCacheKey, patches = _k.patches;\r\n                updateQuerySubstateIfExists(draft, queryCacheKey, function (substate) {\r\n                    substate.data = (0, import_immer2.applyPatches)(substate.data, patches.concat());\r\n                });\r\n            }\r\n        },\r\n        extraReducers: function (builder) {\r\n            builder.addCase(queryThunk.pending, function (draft, _j) {\r\n                var meta = _j.meta, arg = _j.meta.arg;\r\n                var _a, _b;\r\n                var upserting = isUpsertQuery(arg);\r\n                if (arg.subscribe || upserting) {\r\n                    (_b = draft[_a = arg.queryCacheKey]) != null ? _b : draft[_a] = {\r\n                        status: QueryStatus.uninitialized,\r\n                        endpointName: arg.endpointName\r\n                    };\r\n                }\r\n                updateQuerySubstateIfExists(draft, arg.queryCacheKey, function (substate) {\r\n                    substate.status = QueryStatus.pending;\r\n                    substate.requestId = upserting && substate.requestId ? substate.requestId : meta.requestId;\r\n                    if (arg.originalArgs !== void 0) {\r\n                        substate.originalArgs = arg.originalArgs;\r\n                    }\r\n                    substate.startedTimeStamp = meta.startedTimeStamp;\r\n                });\r\n            }).addCase(queryThunk.fulfilled, function (draft, _j) {\r\n                var meta = _j.meta, payload = _j.payload;\r\n                updateQuerySubstateIfExists(draft, meta.arg.queryCacheKey, function (substate) {\r\n                    var _a;\r\n                    if (substate.requestId !== meta.requestId && !isUpsertQuery(meta.arg))\r\n                        return;\r\n                    var merge = definitions[meta.arg.endpointName].merge;\r\n                    substate.status = QueryStatus.fulfilled;\r\n                    if (merge) {\r\n                        if (substate.data !== void 0) {\r\n                            var fulfilledTimeStamp_1 = meta.fulfilledTimeStamp, arg_1 = meta.arg, baseQueryMeta_1 = meta.baseQueryMeta, requestId_1 = meta.requestId;\r\n                            var newData = (0, import_toolkit6.createNextState)(substate.data, function (draftSubstateData) {\r\n                                return merge(draftSubstateData, payload, {\r\n                                    arg: arg_1.originalArgs,\r\n                                    baseQueryMeta: baseQueryMeta_1,\r\n                                    fulfilledTimeStamp: fulfilledTimeStamp_1,\r\n                                    requestId: requestId_1\r\n                                });\r\n                            });\r\n                            substate.data = newData;\r\n                        }\r\n                        else {\r\n                            substate.data = payload;\r\n                        }\r\n                    }\r\n                    else {\r\n                        substate.data = ((_a = definitions[meta.arg.endpointName].structuralSharing) != null ? _a : true) ? copyWithStructuralSharing(substate.data, payload) : payload;\r\n                    }\r\n                    delete substate.error;\r\n                    substate.fulfilledTimeStamp = meta.fulfilledTimeStamp;\r\n                });\r\n            }).addCase(queryThunk.rejected, function (draft, _j) {\r\n                var _k = _j.meta, condition = _k.condition, arg = _k.arg, requestId = _k.requestId, error = _j.error, payload = _j.payload;\r\n                updateQuerySubstateIfExists(draft, arg.queryCacheKey, function (substate) {\r\n                    if (condition) {\r\n                    }\r\n                    else {\r\n                        if (substate.requestId !== requestId)\r\n                            return;\r\n                        substate.status = QueryStatus.rejected;\r\n                        substate.error = payload != null ? payload : error;\r\n                    }\r\n                });\r\n            }).addMatcher(hasRehydrationInfo, function (draft, action) {\r\n                var queries = extractRehydrationInfo(action).queries;\r\n                for (var _j = 0, _k = Object.entries(queries); _j < _k.length; _j++) {\r\n                    var _l = _k[_j], key = _l[0], entry = _l[1];\r\n                    if ((entry == null ? void 0 : entry.status) === QueryStatus.fulfilled || (entry == null ? void 0 : entry.status) === QueryStatus.rejected) {\r\n                        draft[key] = entry;\r\n                    }\r\n                }\r\n            });\r\n        }\r\n    });\r\n    var mutationSlice = (0, import_toolkit6.createSlice)({\r\n        name: reducerPath + \"/mutations\",\r\n        initialState: initialState,\r\n        reducers: {\r\n            removeMutationResult: {\r\n                reducer: function (draft, _j) {\r\n                    var payload = _j.payload;\r\n                    var cacheKey = getMutationCacheKey(payload);\r\n                    if (cacheKey in draft) {\r\n                        delete draft[cacheKey];\r\n                    }\r\n                },\r\n                prepare: (0, import_toolkit6.prepareAutoBatched)()\r\n            }\r\n        },\r\n        extraReducers: function (builder) {\r\n            builder.addCase(mutationThunk.pending, function (draft, _j) {\r\n                var meta = _j.meta, _k = _j.meta, requestId = _k.requestId, arg = _k.arg, startedTimeStamp = _k.startedTimeStamp;\r\n                if (!arg.track)\r\n                    return;\r\n                draft[getMutationCacheKey(meta)] = {\r\n                    requestId: requestId,\r\n                    status: QueryStatus.pending,\r\n                    endpointName: arg.endpointName,\r\n                    startedTimeStamp: startedTimeStamp\r\n                };\r\n            }).addCase(mutationThunk.fulfilled, function (draft, _j) {\r\n                var payload = _j.payload, meta = _j.meta;\r\n                if (!meta.arg.track)\r\n                    return;\r\n                updateMutationSubstateIfExists(draft, meta, function (substate) {\r\n                    if (substate.requestId !== meta.requestId)\r\n                        return;\r\n                    substate.status = QueryStatus.fulfilled;\r\n                    substate.data = payload;\r\n                    substate.fulfilledTimeStamp = meta.fulfilledTimeStamp;\r\n                });\r\n            }).addCase(mutationThunk.rejected, function (draft, _j) {\r\n                var payload = _j.payload, error = _j.error, meta = _j.meta;\r\n                if (!meta.arg.track)\r\n                    return;\r\n                updateMutationSubstateIfExists(draft, meta, function (substate) {\r\n                    if (substate.requestId !== meta.requestId)\r\n                        return;\r\n                    substate.status = QueryStatus.rejected;\r\n                    substate.error = payload != null ? payload : error;\r\n                });\r\n            }).addMatcher(hasRehydrationInfo, function (draft, action) {\r\n                var mutations = extractRehydrationInfo(action).mutations;\r\n                for (var _j = 0, _k = Object.entries(mutations); _j < _k.length; _j++) {\r\n                    var _l = _k[_j], key = _l[0], entry = _l[1];\r\n                    if (((entry == null ? void 0 : entry.status) === QueryStatus.fulfilled || (entry == null ? void 0 : entry.status) === QueryStatus.rejected) && key !== (entry == null ? void 0 : entry.requestId)) {\r\n                        draft[key] = entry;\r\n                    }\r\n                }\r\n            });\r\n        }\r\n    });\r\n    var invalidationSlice = (0, import_toolkit6.createSlice)({\r\n        name: reducerPath + \"/invalidation\",\r\n        initialState: initialState,\r\n        reducers: {},\r\n        extraReducers: function (builder) {\r\n            builder.addCase(querySlice.actions.removeQueryResult, function (draft, _j) {\r\n                var queryCacheKey = _j.payload.queryCacheKey;\r\n                for (var _k = 0, _l = Object.values(draft); _k < _l.length; _k++) {\r\n                    var tagTypeSubscriptions = _l[_k];\r\n                    for (var _m = 0, _o = Object.values(tagTypeSubscriptions); _m < _o.length; _m++) {\r\n                        var idSubscriptions = _o[_m];\r\n                        var foundAt = idSubscriptions.indexOf(queryCacheKey);\r\n                        if (foundAt !== -1) {\r\n                            idSubscriptions.splice(foundAt, 1);\r\n                        }\r\n                    }\r\n                }\r\n            }).addMatcher(hasRehydrationInfo, function (draft, action) {\r\n                var _a, _b, _c, _d;\r\n                var provided = extractRehydrationInfo(action).provided;\r\n                for (var _j = 0, _k = Object.entries(provided); _j < _k.length; _j++) {\r\n                    var _l = _k[_j], type = _l[0], incomingTags = _l[1];\r\n                    for (var _m = 0, _o = Object.entries(incomingTags); _m < _o.length; _m++) {\r\n                        var _p = _o[_m], id = _p[0], cacheKeys = _p[1];\r\n                        var subscribedQueries = (_d = (_b = (_a = draft[type]) != null ? _a : draft[type] = {})[_c = id || \"__internal_without_id\"]) != null ? _d : _b[_c] = [];\r\n                        for (var _q = 0, cacheKeys_1 = cacheKeys; _q < cacheKeys_1.length; _q++) {\r\n                            var queryCacheKey = cacheKeys_1[_q];\r\n                            var alreadySubscribed = subscribedQueries.includes(queryCacheKey);\r\n                            if (!alreadySubscribed) {\r\n                                subscribedQueries.push(queryCacheKey);\r\n                            }\r\n                        }\r\n                    }\r\n                }\r\n            }).addMatcher((0, import_toolkit6.isAnyOf)((0, import_toolkit6.isFulfilled)(queryThunk), (0, import_toolkit6.isRejectedWithValue)(queryThunk)), function (draft, action) {\r\n                var _a, _b, _c, _d;\r\n                var providedTags = calculateProvidedByThunk(action, \"providesTags\", definitions, assertTagType);\r\n                var queryCacheKey = action.meta.arg.queryCacheKey;\r\n                for (var _j = 0, _k = Object.values(draft); _j < _k.length; _j++) {\r\n                    var tagTypeSubscriptions = _k[_j];\r\n                    for (var _l = 0, _m = Object.values(tagTypeSubscriptions); _l < _m.length; _l++) {\r\n                        var idSubscriptions = _m[_l];\r\n                        var foundAt = idSubscriptions.indexOf(queryCacheKey);\r\n                        if (foundAt !== -1) {\r\n                            idSubscriptions.splice(foundAt, 1);\r\n                        }\r\n                    }\r\n                }\r\n                for (var _o = 0, providedTags_1 = providedTags; _o < providedTags_1.length; _o++) {\r\n                    var _p = providedTags_1[_o], type = _p.type, id = _p.id;\r\n                    var subscribedQueries = (_d = (_b = (_a = draft[type]) != null ? _a : draft[type] = {})[_c = id || \"__internal_without_id\"]) != null ? _d : _b[_c] = [];\r\n                    var alreadySubscribed = subscribedQueries.includes(queryCacheKey);\r\n                    if (!alreadySubscribed) {\r\n                        subscribedQueries.push(queryCacheKey);\r\n                    }\r\n                }\r\n            });\r\n        }\r\n    });\r\n    var subscriptionSlice = (0, import_toolkit6.createSlice)({\r\n        name: reducerPath + \"/subscriptions\",\r\n        initialState: initialState,\r\n        reducers: {\r\n            updateSubscriptionOptions: function (d, a) {\r\n            },\r\n            unsubscribeQueryResult: function (d, a) {\r\n            },\r\n            internal_probeSubscription: function (d, a) {\r\n            }\r\n        }\r\n    });\r\n    var internalSubscriptionsSlice = (0, import_toolkit6.createSlice)({\r\n        name: reducerPath + \"/internalSubscriptions\",\r\n        initialState: initialState,\r\n        reducers: {\r\n            subscriptionsUpdated: function (state, action) {\r\n                return (0, import_immer2.applyPatches)(state, action.payload);\r\n            }\r\n        }\r\n    });\r\n    var configSlice = (0, import_toolkit6.createSlice)({\r\n        name: reducerPath + \"/config\",\r\n        initialState: __spreadValues({\r\n            online: isOnline(),\r\n            focused: isDocumentVisible(),\r\n            middlewareRegistered: false\r\n        }, config),\r\n        reducers: {\r\n            middlewareRegistered: function (state, _j) {\r\n                var payload = _j.payload;\r\n                state.middlewareRegistered = state.middlewareRegistered === \"conflict\" || apiUid !== payload ? \"conflict\" : true;\r\n            }\r\n        },\r\n        extraReducers: function (builder) {\r\n            builder.addCase(onOnline, function (state) {\r\n                state.online = true;\r\n            }).addCase(onOffline, function (state) {\r\n                state.online = false;\r\n            }).addCase(onFocus, function (state) {\r\n                state.focused = true;\r\n            }).addCase(onFocusLost, function (state) {\r\n                state.focused = false;\r\n            }).addMatcher(hasRehydrationInfo, function (draft) { return __spreadValues({}, draft); });\r\n        }\r\n    });\r\n    var combinedReducer = (0, import_toolkit6.combineReducers)({\r\n        queries: querySlice.reducer,\r\n        mutations: mutationSlice.reducer,\r\n        provided: invalidationSlice.reducer,\r\n        subscriptions: internalSubscriptionsSlice.reducer,\r\n        config: configSlice.reducer\r\n    });\r\n    var reducer = function (state, action) { return combinedReducer(resetApiState.match(action) ? void 0 : state, action); };\r\n    var actions = __spreadProps(__spreadValues(__spreadValues(__spreadValues(__spreadValues(__spreadValues({}, configSlice.actions), querySlice.actions), subscriptionSlice.actions), internalSubscriptionsSlice.actions), mutationSlice.actions), {\r\n        unsubscribeMutationResult: mutationSlice.actions.removeMutationResult,\r\n        resetApiState: resetApiState\r\n    });\r\n    return { reducer: reducer, actions: actions };\r\n}\r\n// src/query/core/buildSelectors.ts\r\nvar skipToken = /* @__PURE__ */ Symbol.for(\"RTKQ/skipToken\");\r\nvar skipSelector = skipToken;\r\nvar initialSubState = {\r\n    status: QueryStatus.uninitialized\r\n};\r\nvar defaultQuerySubState = /* @__PURE__ */ (0, import_toolkit7.createNextState)(initialSubState, function () {\r\n});\r\nvar defaultMutationSubState = /* @__PURE__ */ (0, import_toolkit7.createNextState)(initialSubState, function () {\r\n});\r\nfunction buildSelectors(_j) {\r\n    var serializeQueryArgs = _j.serializeQueryArgs, reducerPath = _j.reducerPath;\r\n    var selectSkippedQuery = function (state) { return defaultQuerySubState; };\r\n    var selectSkippedMutation = function (state) { return defaultMutationSubState; };\r\n    return { buildQuerySelector: buildQuerySelector, buildMutationSelector: buildMutationSelector, selectInvalidatedBy: selectInvalidatedBy };\r\n    function withRequestFlags(substate) {\r\n        return __spreadValues(__spreadValues({}, substate), getRequestStatusFlags(substate.status));\r\n    }\r\n    function selectInternalState(rootState) {\r\n        var state = rootState[reducerPath];\r\n        if (true) {\r\n            if (!state) {\r\n                if (selectInternalState.triggered)\r\n                    return state;\r\n                selectInternalState.triggered = true;\r\n                console.error(\"Error: No data found at `state.\" + reducerPath + \"`. Did you forget to add the reducer to the store?\");\r\n            }\r\n        }\r\n        return state;\r\n    }\r\n    function buildQuerySelector(endpointName, endpointDefinition) {\r\n        return function (queryArgs) {\r\n            var serializedArgs = serializeQueryArgs({\r\n                queryArgs: queryArgs,\r\n                endpointDefinition: endpointDefinition,\r\n                endpointName: endpointName\r\n            });\r\n            var selectQuerySubstate = function (state) {\r\n                var _a, _b, _c;\r\n                return (_c = (_b = (_a = selectInternalState(state)) == null ? void 0 : _a.queries) == null ? void 0 : _b[serializedArgs]) != null ? _c : defaultQuerySubState;\r\n            };\r\n            var finalSelectQuerySubState = queryArgs === skipToken ? selectSkippedQuery : selectQuerySubstate;\r\n            return (0, import_toolkit7.createSelector)(finalSelectQuerySubState, withRequestFlags);\r\n        };\r\n    }\r\n    function buildMutationSelector() {\r\n        return function (id) {\r\n            var _a;\r\n            var mutationId;\r\n            if (typeof id === \"object\") {\r\n                mutationId = (_a = getMutationCacheKey(id)) != null ? _a : skipToken;\r\n            }\r\n            else {\r\n                mutationId = id;\r\n            }\r\n            var selectMutationSubstate = function (state) {\r\n                var _a2, _b, _c;\r\n                return (_c = (_b = (_a2 = selectInternalState(state)) == null ? void 0 : _a2.mutations) == null ? void 0 : _b[mutationId]) != null ? _c : defaultMutationSubState;\r\n            };\r\n            var finalSelectMutationSubstate = mutationId === skipToken ? selectSkippedMutation : selectMutationSubstate;\r\n            return (0, import_toolkit7.createSelector)(finalSelectMutationSubstate, withRequestFlags);\r\n        };\r\n    }\r\n    function selectInvalidatedBy(state, tags) {\r\n        var _a;\r\n        var apiState = state[reducerPath];\r\n        var toInvalidate = new Set();\r\n        for (var _j = 0, _k = tags.map(expandTagDescription); _j < _k.length; _j++) {\r\n            var tag = _k[_j];\r\n            var provided = apiState.provided[tag.type];\r\n            if (!provided) {\r\n                continue;\r\n            }\r\n            var invalidateSubscriptions = (_a = tag.id !== void 0 ? provided[tag.id] : flatten(Object.values(provided))) != null ? _a : [];\r\n            for (var _l = 0, invalidateSubscriptions_1 = invalidateSubscriptions; _l < invalidateSubscriptions_1.length; _l++) {\r\n                var invalidate = invalidateSubscriptions_1[_l];\r\n                toInvalidate.add(invalidate);\r\n            }\r\n        }\r\n        return flatten(Array.from(toInvalidate.values()).map(function (queryCacheKey) {\r\n            var querySubState = apiState.queries[queryCacheKey];\r\n            return querySubState ? [\r\n                {\r\n                    queryCacheKey: queryCacheKey,\r\n                    endpointName: querySubState.endpointName,\r\n                    originalArgs: querySubState.originalArgs\r\n                }\r\n            ] : [];\r\n        }));\r\n    }\r\n}\r\n// src/query/defaultSerializeQueryArgs.ts\r\nvar import_toolkit8 = __toModule(require(\"@reduxjs/toolkit\"));\r\nvar defaultSerializeQueryArgs = function (_j) {\r\n    var endpointName = _j.endpointName, queryArgs = _j.queryArgs;\r\n    return endpointName + \"(\" + JSON.stringify(queryArgs, function (key, value) { return (0, import_toolkit8.isPlainObject)(value) ? Object.keys(value).sort().reduce(function (acc, key2) {\r\n        acc[key2] = value[key2];\r\n        return acc;\r\n    }, {}) : value; }) + \")\";\r\n};\r\n// src/query/createApi.ts\r\nvar import_toolkit9 = __toModule(require(\"@reduxjs/toolkit\"));\r\nvar import_reselect = __toModule(require(\"reselect\"));\r\nfunction buildCreateApi() {\r\n    var modules = [];\r\n    for (var _j = 0; _j < arguments.length; _j++) {\r\n        modules[_j] = arguments[_j];\r\n    }\r\n    return function baseCreateApi(options) {\r\n        var extractRehydrationInfo = (0, import_reselect.defaultMemoize)(function (action) {\r\n            var _a, _b;\r\n            return (_b = options.extractRehydrationInfo) == null ? void 0 : _b.call(options, action, {\r\n                reducerPath: (_a = options.reducerPath) != null ? _a : \"api\"\r\n            });\r\n        });\r\n        var optionsWithDefaults = __spreadProps(__spreadValues({\r\n            reducerPath: \"api\",\r\n            keepUnusedDataFor: 60,\r\n            refetchOnMountOrArgChange: false,\r\n            refetchOnFocus: false,\r\n            refetchOnReconnect: false\r\n        }, options), {\r\n            extractRehydrationInfo: extractRehydrationInfo,\r\n            serializeQueryArgs: function (queryArgsApi) {\r\n                var finalSerializeQueryArgs = defaultSerializeQueryArgs;\r\n                if (\"serializeQueryArgs\" in queryArgsApi.endpointDefinition) {\r\n                    var endpointSQA_1 = queryArgsApi.endpointDefinition.serializeQueryArgs;\r\n                    finalSerializeQueryArgs = function (queryArgsApi2) {\r\n                        var initialResult = endpointSQA_1(queryArgsApi2);\r\n                        if (typeof initialResult === \"string\") {\r\n                            return initialResult;\r\n                        }\r\n                        else {\r\n                            return defaultSerializeQueryArgs(__spreadProps(__spreadValues({}, queryArgsApi2), {\r\n                                queryArgs: initialResult\r\n                            }));\r\n                        }\r\n                    };\r\n                }\r\n                else if (options.serializeQueryArgs) {\r\n                    finalSerializeQueryArgs = options.serializeQueryArgs;\r\n                }\r\n                return finalSerializeQueryArgs(queryArgsApi);\r\n            },\r\n            tagTypes: __spreadArray([], options.tagTypes || [])\r\n        });\r\n        var context = {\r\n            endpointDefinitions: {},\r\n            batch: function (fn) {\r\n                fn();\r\n            },\r\n            apiUid: (0, import_toolkit9.nanoid)(),\r\n            extractRehydrationInfo: extractRehydrationInfo,\r\n            hasRehydrationInfo: (0, import_reselect.defaultMemoize)(function (action) { return extractRehydrationInfo(action) != null; })\r\n        };\r\n        var api = {\r\n            injectEndpoints: injectEndpoints,\r\n            enhanceEndpoints: function (_j) {\r\n                var addTagTypes = _j.addTagTypes, endpoints = _j.endpoints;\r\n                if (addTagTypes) {\r\n                    for (var _k = 0, addTagTypes_1 = addTagTypes; _k < addTagTypes_1.length; _k++) {\r\n                        var eT = addTagTypes_1[_k];\r\n                        if (!optionsWithDefaults.tagTypes.includes(eT)) {\r\n                            ;\r\n                            optionsWithDefaults.tagTypes.push(eT);\r\n                        }\r\n                    }\r\n                }\r\n                if (endpoints) {\r\n                    for (var _l = 0, _m = Object.entries(endpoints); _l < _m.length; _l++) {\r\n                        var _o = _m[_l], endpointName = _o[0], partialDefinition = _o[1];\r\n                        if (typeof partialDefinition === \"function\") {\r\n                            partialDefinition(context.endpointDefinitions[endpointName]);\r\n                        }\r\n                        else {\r\n                            Object.assign(context.endpointDefinitions[endpointName] || {}, partialDefinition);\r\n                        }\r\n                    }\r\n                }\r\n                return api;\r\n            }\r\n        };\r\n        var initializedModules = modules.map(function (m) { return m.init(api, optionsWithDefaults, context); });\r\n        function injectEndpoints(inject) {\r\n            var evaluatedEndpoints = inject.endpoints({\r\n                query: function (x) { return __spreadProps(__spreadValues({}, x), { type: DefinitionType.query }); },\r\n                mutation: function (x) { return __spreadProps(__spreadValues({}, x), { type: DefinitionType.mutation }); }\r\n            });\r\n            for (var _j = 0, _k = Object.entries(evaluatedEndpoints); _j < _k.length; _j++) {\r\n                var _l = _k[_j], endpointName = _l[0], definition = _l[1];\r\n                if (!inject.overrideExisting && endpointName in context.endpointDefinitions) {\r\n                    if (typeof process !== \"undefined\" && true) {\r\n                        console.error(\"called `injectEndpoints` to override already-existing endpointName \" + endpointName + \" without specifying `overrideExisting: true`\");\r\n                    }\r\n                    continue;\r\n                }\r\n                context.endpointDefinitions[endpointName] = definition;\r\n                for (var _m = 0, initializedModules_1 = initializedModules; _m < initializedModules_1.length; _m++) {\r\n                    var m = initializedModules_1[_m];\r\n                    m.injectEndpoint(endpointName, definition);\r\n                }\r\n            }\r\n            return api;\r\n        }\r\n        return api.injectEndpoints({ endpoints: options.endpoints });\r\n    };\r\n}\r\n// src/query/fakeBaseQuery.ts\r\nfunction fakeBaseQuery() {\r\n    return function () {\r\n        throw new Error(\"When using `fakeBaseQuery`, all queries & mutations must use the `queryFn` definition syntax.\");\r\n    };\r\n}\r\n// src/query/core/buildMiddleware/index.ts\r\nvar import_toolkit13 = __toModule(require(\"@reduxjs/toolkit\"));\r\n// src/query/core/buildMiddleware/cacheCollection.ts\r\nfunction isObjectEmpty(obj) {\r\n    for (var k in obj) {\r\n        return false;\r\n    }\r\n    return true;\r\n}\r\nvar THIRTY_TWO_BIT_MAX_TIMER_SECONDS = 2147483647 / 1e3 - 1;\r\nvar buildCacheCollectionHandler = function (_j) {\r\n    var reducerPath = _j.reducerPath, api = _j.api, context = _j.context, internalState = _j.internalState;\r\n    var _k = api.internalActions, removeQueryResult = _k.removeQueryResult, unsubscribeQueryResult = _k.unsubscribeQueryResult;\r\n    function anySubscriptionsRemainingForKey(queryCacheKey) {\r\n        var subscriptions = internalState.currentSubscriptions[queryCacheKey];\r\n        return !!subscriptions && !isObjectEmpty(subscriptions);\r\n    }\r\n    var currentRemovalTimeouts = {};\r\n    var handler = function (action, mwApi, internalState2) {\r\n        var _a;\r\n        if (unsubscribeQueryResult.match(action)) {\r\n            var state = mwApi.getState()[reducerPath];\r\n            var queryCacheKey = action.payload.queryCacheKey;\r\n            handleUnsubscribe(queryCacheKey, (_a = state.queries[queryCacheKey]) == null ? void 0 : _a.endpointName, mwApi, state.config);\r\n        }\r\n        if (api.util.resetApiState.match(action)) {\r\n            for (var _j = 0, _k = Object.entries(currentRemovalTimeouts); _j < _k.length; _j++) {\r\n                var _l = _k[_j], key = _l[0], timeout = _l[1];\r\n                if (timeout)\r\n                    clearTimeout(timeout);\r\n                delete currentRemovalTimeouts[key];\r\n            }\r\n        }\r\n        if (context.hasRehydrationInfo(action)) {\r\n            var state = mwApi.getState()[reducerPath];\r\n            var queries = context.extractRehydrationInfo(action).queries;\r\n            for (var _m = 0, _o = Object.entries(queries); _m < _o.length; _m++) {\r\n                var _p = _o[_m], queryCacheKey = _p[0], queryState = _p[1];\r\n                handleUnsubscribe(queryCacheKey, queryState == null ? void 0 : queryState.endpointName, mwApi, state.config);\r\n            }\r\n        }\r\n    };\r\n    function handleUnsubscribe(queryCacheKey, endpointName, api2, config) {\r\n        var _a;\r\n        var endpointDefinition = context.endpointDefinitions[endpointName];\r\n        var keepUnusedDataFor = (_a = endpointDefinition == null ? void 0 : endpointDefinition.keepUnusedDataFor) != null ? _a : config.keepUnusedDataFor;\r\n        if (keepUnusedDataFor === Infinity) {\r\n            return;\r\n        }\r\n        var finalKeepUnusedDataFor = Math.max(0, Math.min(keepUnusedDataFor, THIRTY_TWO_BIT_MAX_TIMER_SECONDS));\r\n        if (!anySubscriptionsRemainingForKey(queryCacheKey)) {\r\n            var currentTimeout = currentRemovalTimeouts[queryCacheKey];\r\n            if (currentTimeout) {\r\n                clearTimeout(currentTimeout);\r\n            }\r\n            currentRemovalTimeouts[queryCacheKey] = setTimeout(function () {\r\n                if (!anySubscriptionsRemainingForKey(queryCacheKey)) {\r\n                    api2.dispatch(removeQueryResult({ queryCacheKey: queryCacheKey }));\r\n                }\r\n                delete currentRemovalTimeouts[queryCacheKey];\r\n            }, finalKeepUnusedDataFor * 1e3);\r\n        }\r\n    }\r\n    return handler;\r\n};\r\n// src/query/core/buildMiddleware/invalidationByTags.ts\r\nvar import_toolkit10 = __toModule(require(\"@reduxjs/toolkit\"));\r\nvar buildInvalidationByTagsHandler = function (_j) {\r\n    var reducerPath = _j.reducerPath, context = _j.context, endpointDefinitions = _j.context.endpointDefinitions, mutationThunk = _j.mutationThunk, api = _j.api, assertTagType = _j.assertTagType, refetchQuery = _j.refetchQuery;\r\n    var removeQueryResult = api.internalActions.removeQueryResult;\r\n    var isThunkActionWithTags = (0, import_toolkit10.isAnyOf)((0, import_toolkit10.isFulfilled)(mutationThunk), (0, import_toolkit10.isRejectedWithValue)(mutationThunk));\r\n    var handler = function (action, mwApi) {\r\n        if (isThunkActionWithTags(action)) {\r\n            invalidateTags(calculateProvidedByThunk(action, \"invalidatesTags\", endpointDefinitions, assertTagType), mwApi);\r\n        }\r\n        if (api.util.invalidateTags.match(action)) {\r\n            invalidateTags(calculateProvidedBy(action.payload, void 0, void 0, void 0, void 0, assertTagType), mwApi);\r\n        }\r\n    };\r\n    function invalidateTags(tags, mwApi) {\r\n        var rootState = mwApi.getState();\r\n        var state = rootState[reducerPath];\r\n        var toInvalidate = api.util.selectInvalidatedBy(rootState, tags);\r\n        context.batch(function () {\r\n            var _a;\r\n            var valuesArray = Array.from(toInvalidate.values());\r\n            for (var _j = 0, valuesArray_1 = valuesArray; _j < valuesArray_1.length; _j++) {\r\n                var queryCacheKey = valuesArray_1[_j].queryCacheKey;\r\n                var querySubState = state.queries[queryCacheKey];\r\n                var subscriptionSubState = (_a = state.subscriptions[queryCacheKey]) != null ? _a : {};\r\n                if (querySubState) {\r\n                    if (Object.keys(subscriptionSubState).length === 0) {\r\n                        mwApi.dispatch(removeQueryResult({\r\n                            queryCacheKey: queryCacheKey\r\n                        }));\r\n                    }\r\n                    else if (querySubState.status !== QueryStatus.uninitialized) {\r\n                        mwApi.dispatch(refetchQuery(querySubState, queryCacheKey));\r\n                    }\r\n                }\r\n            }\r\n        });\r\n    }\r\n    return handler;\r\n};\r\n// src/query/core/buildMiddleware/polling.ts\r\nvar buildPollingHandler = function (_j) {\r\n    var reducerPath = _j.reducerPath, queryThunk = _j.queryThunk, api = _j.api, refetchQuery = _j.refetchQuery, internalState = _j.internalState;\r\n    var currentPolls = {};\r\n    var handler = function (action, mwApi) {\r\n        if (api.internalActions.updateSubscriptionOptions.match(action) || api.internalActions.unsubscribeQueryResult.match(action)) {\r\n            updatePollingInterval(action.payload, mwApi);\r\n        }\r\n        if (queryThunk.pending.match(action) || queryThunk.rejected.match(action) && action.meta.condition) {\r\n            updatePollingInterval(action.meta.arg, mwApi);\r\n        }\r\n        if (queryThunk.fulfilled.match(action) || queryThunk.rejected.match(action) && !action.meta.condition) {\r\n            startNextPoll(action.meta.arg, mwApi);\r\n        }\r\n        if (api.util.resetApiState.match(action)) {\r\n            clearPolls();\r\n        }\r\n    };\r\n    function startNextPoll(_j, api2) {\r\n        var queryCacheKey = _j.queryCacheKey;\r\n        var state = api2.getState()[reducerPath];\r\n        var querySubState = state.queries[queryCacheKey];\r\n        var subscriptions = internalState.currentSubscriptions[queryCacheKey];\r\n        if (!querySubState || querySubState.status === QueryStatus.uninitialized)\r\n            return;\r\n        var lowestPollingInterval = findLowestPollingInterval(subscriptions);\r\n        if (!Number.isFinite(lowestPollingInterval))\r\n            return;\r\n        var currentPoll = currentPolls[queryCacheKey];\r\n        if (currentPoll == null ? void 0 : currentPoll.timeout) {\r\n            clearTimeout(currentPoll.timeout);\r\n            currentPoll.timeout = void 0;\r\n        }\r\n        var nextPollTimestamp = Date.now() + lowestPollingInterval;\r\n        var currentInterval = currentPolls[queryCacheKey] = {\r\n            nextPollTimestamp: nextPollTimestamp,\r\n            pollingInterval: lowestPollingInterval,\r\n            timeout: setTimeout(function () {\r\n                currentInterval.timeout = void 0;\r\n                api2.dispatch(refetchQuery(querySubState, queryCacheKey));\r\n            }, lowestPollingInterval)\r\n        };\r\n    }\r\n    function updatePollingInterval(_j, api2) {\r\n        var queryCacheKey = _j.queryCacheKey;\r\n        var state = api2.getState()[reducerPath];\r\n        var querySubState = state.queries[queryCacheKey];\r\n        var subscriptions = internalState.currentSubscriptions[queryCacheKey];\r\n        if (!querySubState || querySubState.status === QueryStatus.uninitialized) {\r\n            return;\r\n        }\r\n        var lowestPollingInterval = findLowestPollingInterval(subscriptions);\r\n        if (!Number.isFinite(lowestPollingInterval)) {\r\n            cleanupPollForKey(queryCacheKey);\r\n            return;\r\n        }\r\n        var currentPoll = currentPolls[queryCacheKey];\r\n        var nextPollTimestamp = Date.now() + lowestPollingInterval;\r\n        if (!currentPoll || nextPollTimestamp < currentPoll.nextPollTimestamp) {\r\n            startNextPoll({ queryCacheKey: queryCacheKey }, api2);\r\n        }\r\n    }\r\n    function cleanupPollForKey(key) {\r\n        var existingPoll = currentPolls[key];\r\n        if (existingPoll == null ? void 0 : existingPoll.timeout) {\r\n            clearTimeout(existingPoll.timeout);\r\n        }\r\n        delete currentPolls[key];\r\n    }\r\n    function clearPolls() {\r\n        for (var _j = 0, _k = Object.keys(currentPolls); _j < _k.length; _j++) {\r\n            var key = _k[_j];\r\n            cleanupPollForKey(key);\r\n        }\r\n    }\r\n    function findLowestPollingInterval(subscribers) {\r\n        if (subscribers === void 0) { subscribers = {}; }\r\n        var lowestPollingInterval = Number.POSITIVE_INFINITY;\r\n        for (var key in subscribers) {\r\n            if (!!subscribers[key].pollingInterval) {\r\n                lowestPollingInterval = Math.min(subscribers[key].pollingInterval, lowestPollingInterval);\r\n            }\r\n        }\r\n        return lowestPollingInterval;\r\n    }\r\n    return handler;\r\n};\r\n// src/query/core/buildMiddleware/windowEventHandling.ts\r\nvar buildWindowEventHandler = function (_j) {\r\n    var reducerPath = _j.reducerPath, context = _j.context, api = _j.api, refetchQuery = _j.refetchQuery, internalState = _j.internalState;\r\n    var removeQueryResult = api.internalActions.removeQueryResult;\r\n    var handler = function (action, mwApi) {\r\n        if (onFocus.match(action)) {\r\n            refetchValidQueries(mwApi, \"refetchOnFocus\");\r\n        }\r\n        if (onOnline.match(action)) {\r\n            refetchValidQueries(mwApi, \"refetchOnReconnect\");\r\n        }\r\n    };\r\n    function refetchValidQueries(api2, type) {\r\n        var state = api2.getState()[reducerPath];\r\n        var queries = state.queries;\r\n        var subscriptions = internalState.currentSubscriptions;\r\n        context.batch(function () {\r\n            for (var _j = 0, _k = Object.keys(subscriptions); _j < _k.length; _j++) {\r\n                var queryCacheKey = _k[_j];\r\n                var querySubState = queries[queryCacheKey];\r\n                var subscriptionSubState = subscriptions[queryCacheKey];\r\n                if (!subscriptionSubState || !querySubState)\r\n                    continue;\r\n                var shouldRefetch = Object.values(subscriptionSubState).some(function (sub) { return sub[type] === true; }) || Object.values(subscriptionSubState).every(function (sub) { return sub[type] === void 0; }) && state.config[type];\r\n                if (shouldRefetch) {\r\n                    if (Object.keys(subscriptionSubState).length === 0) {\r\n                        api2.dispatch(removeQueryResult({\r\n                            queryCacheKey: queryCacheKey\r\n                        }));\r\n                    }\r\n                    else if (querySubState.status !== QueryStatus.uninitialized) {\r\n                        api2.dispatch(refetchQuery(querySubState, queryCacheKey));\r\n                    }\r\n                }\r\n            }\r\n        });\r\n    }\r\n    return handler;\r\n};\r\n// src/query/core/buildMiddleware/cacheLifecycle.ts\r\nvar import_toolkit11 = __toModule(require(\"@reduxjs/toolkit\"));\r\nvar neverResolvedError = new Error(\"Promise never resolved before cacheEntryRemoved.\");\r\nvar buildCacheLifecycleHandler = function (_j) {\r\n    var api = _j.api, reducerPath = _j.reducerPath, context = _j.context, queryThunk = _j.queryThunk, mutationThunk = _j.mutationThunk, internalState = _j.internalState;\r\n    var isQueryThunk = (0, import_toolkit11.isAsyncThunkAction)(queryThunk);\r\n    var isMutationThunk = (0, import_toolkit11.isAsyncThunkAction)(mutationThunk);\r\n    var isFulfilledThunk = (0, import_toolkit11.isFulfilled)(queryThunk, mutationThunk);\r\n    var lifecycleMap = {};\r\n    var handler = function (action, mwApi, stateBefore) {\r\n        var cacheKey = getCacheKey(action);\r\n        if (queryThunk.pending.match(action)) {\r\n            var oldState = stateBefore[reducerPath].queries[cacheKey];\r\n            var state = mwApi.getState()[reducerPath].queries[cacheKey];\r\n            if (!oldState && state) {\r\n                handleNewKey(action.meta.arg.endpointName, action.meta.arg.originalArgs, cacheKey, mwApi, action.meta.requestId);\r\n            }\r\n        }\r\n        else if (mutationThunk.pending.match(action)) {\r\n            var state = mwApi.getState()[reducerPath].mutations[cacheKey];\r\n            if (state) {\r\n                handleNewKey(action.meta.arg.endpointName, action.meta.arg.originalArgs, cacheKey, mwApi, action.meta.requestId);\r\n            }\r\n        }\r\n        else if (isFulfilledThunk(action)) {\r\n            var lifecycle = lifecycleMap[cacheKey];\r\n            if (lifecycle == null ? void 0 : lifecycle.valueResolved) {\r\n                lifecycle.valueResolved({\r\n                    data: action.payload,\r\n                    meta: action.meta.baseQueryMeta\r\n                });\r\n                delete lifecycle.valueResolved;\r\n            }\r\n        }\r\n        else if (api.internalActions.removeQueryResult.match(action) || api.internalActions.removeMutationResult.match(action)) {\r\n            var lifecycle = lifecycleMap[cacheKey];\r\n            if (lifecycle) {\r\n                delete lifecycleMap[cacheKey];\r\n                lifecycle.cacheEntryRemoved();\r\n            }\r\n        }\r\n        else if (api.util.resetApiState.match(action)) {\r\n            for (var _j = 0, _k = Object.entries(lifecycleMap); _j < _k.length; _j++) {\r\n                var _l = _k[_j], cacheKey2 = _l[0], lifecycle = _l[1];\r\n                delete lifecycleMap[cacheKey2];\r\n                lifecycle.cacheEntryRemoved();\r\n            }\r\n        }\r\n    };\r\n    function getCacheKey(action) {\r\n        if (isQueryThunk(action))\r\n            return action.meta.arg.queryCacheKey;\r\n        if (isMutationThunk(action))\r\n            return action.meta.requestId;\r\n        if (api.internalActions.removeQueryResult.match(action))\r\n            return action.payload.queryCacheKey;\r\n        if (api.internalActions.removeMutationResult.match(action))\r\n            return getMutationCacheKey(action.payload);\r\n        return \"\";\r\n    }\r\n    function handleNewKey(endpointName, originalArgs, queryCacheKey, mwApi, requestId) {\r\n        var endpointDefinition = context.endpointDefinitions[endpointName];\r\n        var onCacheEntryAdded = endpointDefinition == null ? void 0 : endpointDefinition.onCacheEntryAdded;\r\n        if (!onCacheEntryAdded)\r\n            return;\r\n        var lifecycle = {};\r\n        var cacheEntryRemoved = new Promise(function (resolve) {\r\n            lifecycle.cacheEntryRemoved = resolve;\r\n        });\r\n        var cacheDataLoaded = Promise.race([\r\n            new Promise(function (resolve) {\r\n                lifecycle.valueResolved = resolve;\r\n            }),\r\n            cacheEntryRemoved.then(function () {\r\n                throw neverResolvedError;\r\n            })\r\n        ]);\r\n        cacheDataLoaded.catch(function () {\r\n        });\r\n        lifecycleMap[queryCacheKey] = lifecycle;\r\n        var selector = api.endpoints[endpointName].select(endpointDefinition.type === DefinitionType.query ? originalArgs : queryCacheKey);\r\n        var extra = mwApi.dispatch(function (_, __, extra2) { return extra2; });\r\n        var lifecycleApi = __spreadProps(__spreadValues({}, mwApi), {\r\n            getCacheEntry: function () { return selector(mwApi.getState()); },\r\n            requestId: requestId,\r\n            extra: extra,\r\n            updateCachedData: endpointDefinition.type === DefinitionType.query ? function (updateRecipe) { return mwApi.dispatch(api.util.updateQueryData(endpointName, originalArgs, updateRecipe)); } : void 0,\r\n            cacheDataLoaded: cacheDataLoaded,\r\n            cacheEntryRemoved: cacheEntryRemoved\r\n        });\r\n        var runningHandler = onCacheEntryAdded(originalArgs, lifecycleApi);\r\n        Promise.resolve(runningHandler).catch(function (e) {\r\n            if (e === neverResolvedError)\r\n                return;\r\n            throw e;\r\n        });\r\n    }\r\n    return handler;\r\n};\r\n// src/query/core/buildMiddleware/queryLifecycle.ts\r\nvar import_toolkit12 = __toModule(require(\"@reduxjs/toolkit\"));\r\nvar buildQueryLifecycleHandler = function (_j) {\r\n    var api = _j.api, context = _j.context, queryThunk = _j.queryThunk, mutationThunk = _j.mutationThunk;\r\n    var isPendingThunk = (0, import_toolkit12.isPending)(queryThunk, mutationThunk);\r\n    var isRejectedThunk = (0, import_toolkit12.isRejected)(queryThunk, mutationThunk);\r\n    var isFullfilledThunk = (0, import_toolkit12.isFulfilled)(queryThunk, mutationThunk);\r\n    var lifecycleMap = {};\r\n    var handler = function (action, mwApi) {\r\n        var _a, _b, _c;\r\n        if (isPendingThunk(action)) {\r\n            var _j = action.meta, requestId = _j.requestId, _k = _j.arg, endpointName_1 = _k.endpointName, originalArgs_1 = _k.originalArgs;\r\n            var endpointDefinition = context.endpointDefinitions[endpointName_1];\r\n            var onQueryStarted = endpointDefinition == null ? void 0 : endpointDefinition.onQueryStarted;\r\n            if (onQueryStarted) {\r\n                var lifecycle_1 = {};\r\n                var queryFulfilled = new Promise(function (resolve, reject) {\r\n                    lifecycle_1.resolve = resolve;\r\n                    lifecycle_1.reject = reject;\r\n                });\r\n                queryFulfilled.catch(function () {\r\n                });\r\n                lifecycleMap[requestId] = lifecycle_1;\r\n                var selector_1 = api.endpoints[endpointName_1].select(endpointDefinition.type === DefinitionType.query ? originalArgs_1 : requestId);\r\n                var extra = mwApi.dispatch(function (_, __, extra2) { return extra2; });\r\n                var lifecycleApi = __spreadProps(__spreadValues({}, mwApi), {\r\n                    getCacheEntry: function () { return selector_1(mwApi.getState()); },\r\n                    requestId: requestId,\r\n                    extra: extra,\r\n                    updateCachedData: endpointDefinition.type === DefinitionType.query ? function (updateRecipe) { return mwApi.dispatch(api.util.updateQueryData(endpointName_1, originalArgs_1, updateRecipe)); } : void 0,\r\n                    queryFulfilled: queryFulfilled\r\n                });\r\n                onQueryStarted(originalArgs_1, lifecycleApi);\r\n            }\r\n        }\r\n        else if (isFullfilledThunk(action)) {\r\n            var _l = action.meta, requestId = _l.requestId, baseQueryMeta = _l.baseQueryMeta;\r\n            (_a = lifecycleMap[requestId]) == null ? void 0 : _a.resolve({\r\n                data: action.payload,\r\n                meta: baseQueryMeta\r\n            });\r\n            delete lifecycleMap[requestId];\r\n        }\r\n        else if (isRejectedThunk(action)) {\r\n            var _m = action.meta, requestId = _m.requestId, rejectedWithValue = _m.rejectedWithValue, baseQueryMeta = _m.baseQueryMeta;\r\n            (_c = lifecycleMap[requestId]) == null ? void 0 : _c.reject({\r\n                error: (_b = action.payload) != null ? _b : action.error,\r\n                isUnhandledError: !rejectedWithValue,\r\n                meta: baseQueryMeta\r\n            });\r\n            delete lifecycleMap[requestId];\r\n        }\r\n    };\r\n    return handler;\r\n};\r\n// src/query/core/buildMiddleware/devMiddleware.ts\r\nvar buildDevCheckHandler = function (_j) {\r\n    var api = _j.api, apiUid = _j.context.apiUid, reducerPath = _j.reducerPath;\r\n    return function (action, mwApi) {\r\n        var _a, _b;\r\n        if (api.util.resetApiState.match(action)) {\r\n            mwApi.dispatch(api.internalActions.middlewareRegistered(apiUid));\r\n        }\r\n        if (typeof process !== \"undefined\" && true) {\r\n            if (api.internalActions.middlewareRegistered.match(action) && action.payload === apiUid && ((_b = (_a = mwApi.getState()[reducerPath]) == null ? void 0 : _a.config) == null ? void 0 : _b.middlewareRegistered) === \"conflict\") {\r\n                console.warn(\"There is a mismatch between slice and middleware for the reducerPath \\\"\" + reducerPath + \"\\\".\\nYou can only have one api per reducer path, this will lead to crashes in various situations!\" + (reducerPath === \"api\" ? \"\\nIf you have multiple apis, you *have* to specify the reducerPath option when using createApi!\" : \"\"));\r\n            }\r\n        }\r\n    };\r\n};\r\n// src/query/core/buildMiddleware/batchActions.ts\r\nvar import_immer3 = __toModule(require(\"immer\"));\r\nvar promise;\r\nvar queueMicrotaskShim = typeof queueMicrotask === \"function\" ? queueMicrotask.bind(typeof window !== \"undefined\" ? window : typeof global !== \"undefined\" ? global : globalThis) : function (cb) { return (promise || (promise = Promise.resolve())).then(cb).catch(function (err) { return setTimeout(function () {\r\n    throw err;\r\n}, 0); }); };\r\nvar buildBatchedActionsHandler = function (_j) {\r\n    var api = _j.api, queryThunk = _j.queryThunk, internalState = _j.internalState;\r\n    var subscriptionsPrefix = api.reducerPath + \"/subscriptions\";\r\n    var previousSubscriptions = null;\r\n    var dispatchQueued = false;\r\n    var _k = api.internalActions, updateSubscriptionOptions = _k.updateSubscriptionOptions, unsubscribeQueryResult = _k.unsubscribeQueryResult;\r\n    var actuallyMutateSubscriptions = function (mutableState, action) {\r\n        var _a, _b, _c, _d, _e, _f, _g, _h, _i;\r\n        if (updateSubscriptionOptions.match(action)) {\r\n            var _j = action.payload, queryCacheKey = _j.queryCacheKey, requestId = _j.requestId, options = _j.options;\r\n            if ((_a = mutableState == null ? void 0 : mutableState[queryCacheKey]) == null ? void 0 : _a[requestId]) {\r\n                mutableState[queryCacheKey][requestId] = options;\r\n            }\r\n            return true;\r\n        }\r\n        if (unsubscribeQueryResult.match(action)) {\r\n            var _k = action.payload, queryCacheKey = _k.queryCacheKey, requestId = _k.requestId;\r\n            if (mutableState[queryCacheKey]) {\r\n                delete mutableState[queryCacheKey][requestId];\r\n            }\r\n            return true;\r\n        }\r\n        if (api.internalActions.removeQueryResult.match(action)) {\r\n            delete mutableState[action.payload.queryCacheKey];\r\n            return true;\r\n        }\r\n        if (queryThunk.pending.match(action)) {\r\n            var _l = action.meta, arg = _l.arg, requestId = _l.requestId;\r\n            if (arg.subscribe) {\r\n                var substate = (_c = mutableState[_b = arg.queryCacheKey]) != null ? _c : mutableState[_b] = {};\r\n                substate[requestId] = (_e = (_d = arg.subscriptionOptions) != null ? _d : substate[requestId]) != null ? _e : {};\r\n                return true;\r\n            }\r\n        }\r\n        if (queryThunk.rejected.match(action)) {\r\n            var _m = action.meta, condition = _m.condition, arg = _m.arg, requestId = _m.requestId;\r\n            if (condition && arg.subscribe) {\r\n                var substate = (_g = mutableState[_f = arg.queryCacheKey]) != null ? _g : mutableState[_f] = {};\r\n                substate[requestId] = (_i = (_h = arg.subscriptionOptions) != null ? _h : substate[requestId]) != null ? _i : {};\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    };\r\n    return function (action, mwApi) {\r\n        var _a, _b;\r\n        if (!previousSubscriptions) {\r\n            previousSubscriptions = JSON.parse(JSON.stringify(internalState.currentSubscriptions));\r\n        }\r\n        if (api.internalActions.internal_probeSubscription.match(action)) {\r\n            var _j = action.payload, queryCacheKey = _j.queryCacheKey, requestId = _j.requestId;\r\n            var hasSubscription = !!((_a = internalState.currentSubscriptions[queryCacheKey]) == null ? void 0 : _a[requestId]);\r\n            return [false, hasSubscription];\r\n        }\r\n        var didMutate = actuallyMutateSubscriptions(internalState.currentSubscriptions, action);\r\n        if (didMutate) {\r\n            if (!dispatchQueued) {\r\n                queueMicrotaskShim(function () {\r\n                    var newSubscriptions = JSON.parse(JSON.stringify(internalState.currentSubscriptions));\r\n                    var _j = (0, import_immer3.produceWithPatches)(previousSubscriptions, function () { return newSubscriptions; }), patches = _j[1];\r\n                    mwApi.next(api.internalActions.subscriptionsUpdated(patches));\r\n                    previousSubscriptions = newSubscriptions;\r\n                    dispatchQueued = false;\r\n                });\r\n                dispatchQueued = true;\r\n            }\r\n            var isSubscriptionSliceAction = !!((_b = action.type) == null ? void 0 : _b.startsWith(subscriptionsPrefix));\r\n            var isAdditionalSubscriptionAction = queryThunk.rejected.match(action) && action.meta.condition && !!action.meta.arg.subscribe;\r\n            var actionShouldContinue = !isSubscriptionSliceAction && !isAdditionalSubscriptionAction;\r\n            return [actionShouldContinue, false];\r\n        }\r\n        return [true, false];\r\n    };\r\n};\r\n// src/query/core/buildMiddleware/index.ts\r\nfunction buildMiddleware(input) {\r\n    var reducerPath = input.reducerPath, queryThunk = input.queryThunk, api = input.api, context = input.context;\r\n    var apiUid = context.apiUid;\r\n    var actions = {\r\n        invalidateTags: (0, import_toolkit13.createAction)(reducerPath + \"/invalidateTags\")\r\n    };\r\n    var isThisApiSliceAction = function (action) {\r\n        return !!action && typeof action.type === \"string\" && action.type.startsWith(reducerPath + \"/\");\r\n    };\r\n    var handlerBuilders = [\r\n        buildDevCheckHandler,\r\n        buildCacheCollectionHandler,\r\n        buildInvalidationByTagsHandler,\r\n        buildPollingHandler,\r\n        buildCacheLifecycleHandler,\r\n        buildQueryLifecycleHandler\r\n    ];\r\n    var middleware = function (mwApi) {\r\n        var initialized2 = false;\r\n        var internalState = {\r\n            currentSubscriptions: {}\r\n        };\r\n        var builderArgs = __spreadProps(__spreadValues({}, input), {\r\n            internalState: internalState,\r\n            refetchQuery: refetchQuery\r\n        });\r\n        var handlers = handlerBuilders.map(function (build) { return build(builderArgs); });\r\n        var batchedActionsHandler = buildBatchedActionsHandler(builderArgs);\r\n        var windowEventsHandler = buildWindowEventHandler(builderArgs);\r\n        return function (next) {\r\n            return function (action) {\r\n                if (!initialized2) {\r\n                    initialized2 = true;\r\n                    mwApi.dispatch(api.internalActions.middlewareRegistered(apiUid));\r\n                }\r\n                var mwApiWithNext = __spreadProps(__spreadValues({}, mwApi), { next: next });\r\n                var stateBefore = mwApi.getState();\r\n                var _j = batchedActionsHandler(action, mwApiWithNext, stateBefore), actionShouldContinue = _j[0], hasSubscription = _j[1];\r\n                var res;\r\n                if (actionShouldContinue) {\r\n                    res = next(action);\r\n                }\r\n                else {\r\n                    res = hasSubscription;\r\n                }\r\n                if (!!mwApi.getState()[reducerPath]) {\r\n                    windowEventsHandler(action, mwApiWithNext, stateBefore);\r\n                    if (isThisApiSliceAction(action) || context.hasRehydrationInfo(action)) {\r\n                        for (var _k = 0, handlers_1 = handlers; _k < handlers_1.length; _k++) {\r\n                            var handler = handlers_1[_k];\r\n                            handler(action, mwApiWithNext, stateBefore);\r\n                        }\r\n                    }\r\n                }\r\n                return res;\r\n            };\r\n        };\r\n    };\r\n    return { middleware: middleware, actions: actions };\r\n    function refetchQuery(querySubState, queryCacheKey, override) {\r\n        if (override === void 0) { override = {}; }\r\n        return queryThunk(__spreadValues({\r\n            type: \"query\",\r\n            endpointName: querySubState.endpointName,\r\n            originalArgs: querySubState.originalArgs,\r\n            subscribe: false,\r\n            forceRefetch: true,\r\n            queryCacheKey: queryCacheKey\r\n        }, override));\r\n    }\r\n}\r\n// src/query/tsHelpers.ts\r\nfunction assertCast(v) {\r\n}\r\nfunction safeAssign(target) {\r\n    var args = [];\r\n    for (var _j = 1; _j < arguments.length; _j++) {\r\n        args[_j - 1] = arguments[_j];\r\n    }\r\n    Object.assign.apply(Object, __spreadArray([target], args));\r\n}\r\n// src/query/core/module.ts\r\nvar import_immer4 = __toModule(require(\"immer\"));\r\nvar coreModuleName = /* @__PURE__ */ Symbol();\r\nvar coreModule = function () { return ({\r\n    name: coreModuleName,\r\n    init: function (api, _j, context) {\r\n        var baseQuery = _j.baseQuery, tagTypes = _j.tagTypes, reducerPath = _j.reducerPath, serializeQueryArgs = _j.serializeQueryArgs, keepUnusedDataFor = _j.keepUnusedDataFor, refetchOnMountOrArgChange = _j.refetchOnMountOrArgChange, refetchOnFocus = _j.refetchOnFocus, refetchOnReconnect = _j.refetchOnReconnect;\r\n        (0, import_immer4.enablePatches)();\r\n        assertCast(serializeQueryArgs);\r\n        var assertTagType = function (tag) {\r\n            if (typeof process !== \"undefined\" && true) {\r\n                if (!tagTypes.includes(tag.type)) {\r\n                    console.error(\"Tag type '\" + tag.type + \"' was used, but not specified in `tagTypes`!\");\r\n                }\r\n            }\r\n            return tag;\r\n        };\r\n        Object.assign(api, {\r\n            reducerPath: reducerPath,\r\n            endpoints: {},\r\n            internalActions: {\r\n                onOnline: onOnline,\r\n                onOffline: onOffline,\r\n                onFocus: onFocus,\r\n                onFocusLost: onFocusLost\r\n            },\r\n            util: {}\r\n        });\r\n        var _k = buildThunks({\r\n            baseQuery: baseQuery,\r\n            reducerPath: reducerPath,\r\n            context: context,\r\n            api: api,\r\n            serializeQueryArgs: serializeQueryArgs\r\n        }), queryThunk = _k.queryThunk, mutationThunk = _k.mutationThunk, patchQueryData = _k.patchQueryData, updateQueryData = _k.updateQueryData, upsertQueryData = _k.upsertQueryData, prefetch = _k.prefetch, buildMatchThunkActions = _k.buildMatchThunkActions;\r\n        var _l = buildSlice({\r\n            context: context,\r\n            queryThunk: queryThunk,\r\n            mutationThunk: mutationThunk,\r\n            reducerPath: reducerPath,\r\n            assertTagType: assertTagType,\r\n            config: {\r\n                refetchOnFocus: refetchOnFocus,\r\n                refetchOnReconnect: refetchOnReconnect,\r\n                refetchOnMountOrArgChange: refetchOnMountOrArgChange,\r\n                keepUnusedDataFor: keepUnusedDataFor,\r\n                reducerPath: reducerPath\r\n            }\r\n        }), reducer = _l.reducer, sliceActions = _l.actions;\r\n        safeAssign(api.util, {\r\n            patchQueryData: patchQueryData,\r\n            updateQueryData: updateQueryData,\r\n            upsertQueryData: upsertQueryData,\r\n            prefetch: prefetch,\r\n            resetApiState: sliceActions.resetApiState\r\n        });\r\n        safeAssign(api.internalActions, sliceActions);\r\n        var _m = buildMiddleware({\r\n            reducerPath: reducerPath,\r\n            context: context,\r\n            queryThunk: queryThunk,\r\n            mutationThunk: mutationThunk,\r\n            api: api,\r\n            assertTagType: assertTagType\r\n        }), middleware = _m.middleware, middlewareActions = _m.actions;\r\n        safeAssign(api.util, middlewareActions);\r\n        safeAssign(api, { reducer: reducer, middleware: middleware });\r\n        var _o = buildSelectors({\r\n            serializeQueryArgs: serializeQueryArgs,\r\n            reducerPath: reducerPath\r\n        }), buildQuerySelector = _o.buildQuerySelector, buildMutationSelector = _o.buildMutationSelector, selectInvalidatedBy = _o.selectInvalidatedBy;\r\n        safeAssign(api.util, { selectInvalidatedBy: selectInvalidatedBy });\r\n        var _p = buildInitiate({\r\n            queryThunk: queryThunk,\r\n            mutationThunk: mutationThunk,\r\n            api: api,\r\n            serializeQueryArgs: serializeQueryArgs,\r\n            context: context\r\n        }), buildInitiateQuery = _p.buildInitiateQuery, buildInitiateMutation = _p.buildInitiateMutation, getRunningMutationThunk = _p.getRunningMutationThunk, getRunningMutationsThunk = _p.getRunningMutationsThunk, getRunningQueriesThunk = _p.getRunningQueriesThunk, getRunningQueryThunk = _p.getRunningQueryThunk, getRunningOperationPromises = _p.getRunningOperationPromises, removalWarning = _p.removalWarning;\r\n        safeAssign(api.util, {\r\n            getRunningOperationPromises: getRunningOperationPromises,\r\n            getRunningOperationPromise: removalWarning,\r\n            getRunningMutationThunk: getRunningMutationThunk,\r\n            getRunningMutationsThunk: getRunningMutationsThunk,\r\n            getRunningQueryThunk: getRunningQueryThunk,\r\n            getRunningQueriesThunk: getRunningQueriesThunk\r\n        });\r\n        return {\r\n            name: coreModuleName,\r\n            injectEndpoint: function (endpointName, definition) {\r\n                var _a, _b;\r\n                var anyApi = api;\r\n                (_b = (_a = anyApi.endpoints)[endpointName]) != null ? _b : _a[endpointName] = {};\r\n                if (isQueryDefinition(definition)) {\r\n                    safeAssign(anyApi.endpoints[endpointName], {\r\n                        name: endpointName,\r\n                        select: buildQuerySelector(endpointName, definition),\r\n                        initiate: buildInitiateQuery(endpointName, definition)\r\n                    }, buildMatchThunkActions(queryThunk, endpointName));\r\n                }\r\n                else if (isMutationDefinition(definition)) {\r\n                    safeAssign(anyApi.endpoints[endpointName], {\r\n                        name: endpointName,\r\n                        select: buildMutationSelector(),\r\n                        initiate: buildInitiateMutation(endpointName)\r\n                    }, buildMatchThunkActions(mutationThunk, endpointName));\r\n                }\r\n            }\r\n        };\r\n    }\r\n}); };\r\n// src/query/core/index.ts\r\nvar createApi = /* @__PURE__ */ buildCreateApi(coreModule());\r\n//# sourceMappingURL=rtk-query.cjs.development.js.map", "'use strict'\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./rtk-query.cjs.production.min.js')\n} else {\n  module.exports = require('./rtk-query.cjs.development.js')\n}", "import { coreModule, buildCreateApi, CreateApi } from '@reduxjs/toolkit/query'\r\nimport { reactHooksModule, reactHooksModuleName } from './module'\r\n\r\nimport type { MutationHooks, QueryHooks } from './buildHooks'\r\nimport type {\r\n  EndpointDefinitions,\r\n  QueryDefinition,\r\n  MutationDefinition,\r\n  QueryArgFrom,\r\n} from '@reduxjs/toolkit/dist/query/endpointDefinitions'\r\nimport type { BaseQueryFn } from '@reduxjs/toolkit/dist/query/baseQueryTypes'\r\n\r\nimport type { QueryKeys } from '@reduxjs/toolkit/dist/query/core/apiState'\r\nimport type { PrefetchOptions } from '@reduxjs/toolkit/dist/query/core/module'\r\n\r\nexport * from '@reduxjs/toolkit/query'\r\nexport { ApiProvider } from './ApiProvider'\r\n\r\nconst createApi = /* @__PURE__ */ buildCreateApi(\r\n  coreModule(),\r\n  reactHooksModule()\r\n)\r\n\r\nexport type {\r\n  TypedUseQueryHookResult,\r\n  TypedUseQueryStateResult,\r\n  TypedUseQuerySubscriptionResult,\r\n  TypedUseMutationResult,\r\n} from './buildHooks'\r\nexport { createApi, reactHooksModule }\r\n", "import type { AnyAction, ThunkAction, ThunkDispatch } from '@reduxjs/toolkit'\r\nimport { createSelector } from '@reduxjs/toolkit'\r\nimport type { Selector } from '@reduxjs/toolkit'\r\nimport type { DependencyList } from 'react'\r\nimport {\r\n  useCallback,\r\n  useDebugValue,\r\n  useEffect,\r\n  useLayoutEffect,\r\n  useMemo,\r\n  useRef,\r\n  useState,\r\n} from 'react'\r\nimport { QueryStatus, skipToken } from '@reduxjs/toolkit/query'\r\nimport type {\r\n  QuerySubState,\r\n  SubscriptionOptions,\r\n  QueryKeys,\r\n  RootState,\r\n} from '@reduxjs/toolkit/dist/query/core/apiState'\r\nimport type {\r\n  EndpointDefinitions,\r\n  MutationDefinition,\r\n  QueryDefinition,\r\n  QueryArgFrom,\r\n  ResultTypeFrom,\r\n} from '@reduxjs/toolkit/dist/query/endpointDefinitions'\r\nimport type {\r\n  QueryResultSelectorResult,\r\n  MutationResultSelectorResult,\r\n  SkipToken,\r\n} from '@reduxjs/toolkit/dist/query/core/buildSelectors'\r\nimport type {\r\n  QueryActionCreatorResult,\r\n  MutationActionCreatorResult,\r\n} from '@reduxjs/toolkit/dist/query/core/buildInitiate'\r\nimport type { SerializeQueryArgs } from '@reduxjs/toolkit/dist/query/defaultSerializeQueryArgs'\r\nimport { shallowEqual } from 'react-redux'\r\nimport type { Api, ApiContext } from '@reduxjs/toolkit/dist/query/apiTypes'\r\nimport type {\r\n  Id,\r\n  NoInfer,\r\n  Override,\r\n} from '@reduxjs/toolkit/dist/query/tsHelpers'\r\nimport type {\r\n  ApiEndpointMutation,\r\n  ApiEndpointQuery,\r\n  CoreModule,\r\n  PrefetchOptions,\r\n} from '@reduxjs/toolkit/dist/query/core/module'\r\nimport type { ReactHooksModuleOptions } from './module'\r\nimport { useStableQueryArgs } from './useSerializedStableValue'\r\nimport type { UninitializedValue } from './constants'\r\nimport { UNINITIALIZED_VALUE } from './constants'\r\nimport { useShallowStableValue } from './useShallowStableValue'\r\nimport type { BaseQueryFn } from '../baseQueryTypes'\r\nimport { defaultSerializeQueryArgs } from '../defaultSerializeQueryArgs'\r\n\r\n// Copy-pasted from React-Redux\r\nexport const useIsomorphicLayoutEffect =\r\n  typeof window !== 'undefined' &&\r\n  !!window.document &&\r\n  !!window.document.createElement\r\n    ? useLayoutEffect\r\n    : useEffect\r\n\r\nexport interface QueryHooks<\r\n  Definition extends QueryDefinition<any, any, any, any, any>\r\n> {\r\n  useQuery: UseQuery<Definition>\r\n  useLazyQuery: UseLazyQuery<Definition>\r\n  useQuerySubscription: UseQuerySubscription<Definition>\r\n  useLazyQuerySubscription: UseLazyQuerySubscription<Definition>\r\n  useQueryState: UseQueryState<Definition>\r\n}\r\n\r\nexport interface MutationHooks<\r\n  Definition extends MutationDefinition<any, any, any, any, any>\r\n> {\r\n  useMutation: UseMutation<Definition>\r\n}\r\n\r\n/**\r\n * A React hook that automatically triggers fetches of data from an endpoint, 'subscribes' the component to the cached data, and reads the request status and cached data from the Redux store. The component will re-render as the loading status changes and the data becomes available.\r\n *\r\n * The query arg is used as a cache key. Changing the query arg will tell the hook to re-fetch the data if it does not exist in the cache already, and the hook will return the data for that query arg once it's available.\r\n *\r\n * This hook combines the functionality of both [`useQueryState`](#usequerystate) and [`useQuerySubscription`](#usequerysubscription) together, and is intended to be used in the majority of situations.\r\n *\r\n * #### Features\r\n *\r\n * - Automatically triggers requests to retrieve data based on the hook argument and whether cached data exists by default\r\n * - 'Subscribes' the component to keep cached data in the store, and 'unsubscribes' when the component unmounts\r\n * - Accepts polling/re-fetching options to trigger automatic re-fetches when the corresponding criteria is met\r\n * - Returns the latest request status and cached data from the Redux store\r\n * - Re-renders as the request status changes and data becomes available\r\n */\r\nexport type UseQuery<D extends QueryDefinition<any, any, any, any>> = <\r\n  R extends Record<string, any> = UseQueryStateDefaultResult<D>\r\n>(\r\n  arg: QueryArgFrom<D> | SkipToken,\r\n  options?: UseQuerySubscriptionOptions & UseQueryStateOptions<D, R>\r\n) => UseQueryHookResult<D, R>\r\n\r\nexport type UseQueryHookResult<\r\n  D extends QueryDefinition<any, any, any, any>,\r\n  R = UseQueryStateDefaultResult<D>\r\n> = UseQueryStateResult<D, R> & UseQuerySubscriptionResult<D>\r\n\r\n/**\r\n * Helper type to manually type the result\r\n * of the `useQuery` hook in userland code.\r\n */\r\nexport type TypedUseQueryHookResult<\r\n  ResultType,\r\n  QueryArg,\r\n  BaseQuery extends BaseQueryFn,\r\n  R = UseQueryStateDefaultResult<\r\n    QueryDefinition<QueryArg, BaseQuery, string, ResultType, string>\r\n  >\r\n> = TypedUseQueryStateResult<ResultType, QueryArg, BaseQuery, R> &\r\n  TypedUseQuerySubscriptionResult<ResultType, QueryArg, BaseQuery>\r\n\r\ninterface UseQuerySubscriptionOptions extends SubscriptionOptions {\r\n  /**\r\n   * Prevents a query from automatically running.\r\n   *\r\n   * @remarks\r\n   * When `skip` is true (or `skipToken` is passed in as `arg`):\r\n   *\r\n   * - **If the query has cached data:**\r\n   *   * The cached data **will not be used** on the initial load, and will ignore updates from any identical query until the `skip` condition is removed\r\n   *   * The query will have a status of `uninitialized`\r\n   *   * If `skip: false` is set after the initial load, the cached result will be used\r\n   * - **If the query does not have cached data:**\r\n   *   * The query will have a status of `uninitialized`\r\n   *   * The query will not exist in the state when viewed with the dev tools\r\n   *   * The query will not automatically fetch on mount\r\n   *   * The query will not automatically run when additional components with the same query are added that do run\r\n   *\r\n   * @example\r\n   * ```tsx\r\n   * // codeblock-meta title=\"Skip example\"\r\n   * const Pokemon = ({ name, skip }: { name: string; skip: boolean }) => {\r\n   *   const { data, error, status } = useGetPokemonByNameQuery(name, {\r\n   *     skip,\r\n   *   });\r\n   *\r\n   *   return (\r\n   *     <div>\r\n   *       {name} - {status}\r\n   *     </div>\r\n   *   );\r\n   * };\r\n   * ```\r\n   */\r\n  skip?: boolean\r\n  /**\r\n   * Defaults to `false`. This setting allows you to control whether if a cached result is already available, RTK Query will only serve a cached result, or if it should `refetch` when set to `true` or if an adequate amount of time has passed since the last successful query result.\r\n   * - `false` - Will not cause a query to be performed _unless_ it does not exist yet.\r\n   * - `true` - Will always refetch when a new subscriber to a query is added. Behaves the same as calling the `refetch` callback or passing `forceRefetch: true` in the action creator.\r\n   * - `number` - **Value is in seconds**. If a number is provided and there is an existing query in the cache, it will compare the current time vs the last fulfilled timestamp, and only refetch if enough time has elapsed.\r\n   *\r\n   * If you specify this option alongside `skip: true`, this **will not be evaluated** until `skip` is false.\r\n   */\r\n  refetchOnMountOrArgChange?: boolean | number\r\n}\r\n\r\n/**\r\n * A React hook that automatically triggers fetches of data from an endpoint, and 'subscribes' the component to the cached data.\r\n *\r\n * The query arg is used as a cache key. Changing the query arg will tell the hook to re-fetch the data if it does not exist in the cache already.\r\n *\r\n * Note that this hook does not return a request status or cached data. For that use-case, see [`useQuery`](#usequery) or [`useQueryState`](#usequerystate).\r\n *\r\n * #### Features\r\n *\r\n * - Automatically triggers requests to retrieve data based on the hook argument and whether cached data exists by default\r\n * - 'Subscribes' the component to keep cached data in the store, and 'unsubscribes' when the component unmounts\r\n * - Accepts polling/re-fetching options to trigger automatic re-fetches when the corresponding criteria is met\r\n */\r\nexport type UseQuerySubscription<\r\n  D extends QueryDefinition<any, any, any, any>\r\n> = (\r\n  arg: QueryArgFrom<D> | SkipToken,\r\n  options?: UseQuerySubscriptionOptions\r\n) => UseQuerySubscriptionResult<D>\r\n\r\nexport type UseQuerySubscriptionResult<\r\n  D extends QueryDefinition<any, any, any, any>\r\n> = Pick<QueryActionCreatorResult<D>, 'refetch'>\r\n\r\n/**\r\n * Helper type to manually type the result\r\n * of the `useQuerySubscription` hook in userland code.\r\n */\r\nexport type TypedUseQuerySubscriptionResult<\r\n  ResultType,\r\n  QueryArg,\r\n  BaseQuery extends BaseQueryFn\r\n> = UseQuerySubscriptionResult<\r\n  QueryDefinition<QueryArg, BaseQuery, string, ResultType, string>\r\n>\r\n\r\nexport type UseLazyQueryLastPromiseInfo<\r\n  D extends QueryDefinition<any, any, any, any>\r\n> = {\r\n  lastArg: QueryArgFrom<D>\r\n}\r\n\r\n/**\r\n * A React hook similar to [`useQuery`](#usequery), but with manual control over when the data fetching occurs.\r\n *\r\n * This hook includes the functionality of [`useLazyQuerySubscription`](#uselazyquerysubscription).\r\n *\r\n * #### Features\r\n *\r\n * - Manual control over firing a request to retrieve data\r\n * - 'Subscribes' the component to keep cached data in the store, and 'unsubscribes' when the component unmounts\r\n * - Returns the latest request status and cached data from the Redux store\r\n * - Re-renders as the request status changes and data becomes available\r\n * - Accepts polling/re-fetching options to trigger automatic re-fetches when the corresponding criteria is met and the fetch has been manually called at least once\r\n *\r\n * #### Note\r\n *\r\n * When the trigger function returned from a LazyQuery is called, it always initiates a new request to the server even if there is cached data. Set `preferCacheValue`(the second argument to the function) as `true` if you want it to immediately return a cached value if one exists.\r\n */\r\nexport type UseLazyQuery<D extends QueryDefinition<any, any, any, any>> = <\r\n  R extends Record<string, any> = UseQueryStateDefaultResult<D>\r\n>(\r\n  options?: SubscriptionOptions & Omit<UseQueryStateOptions<D, R>, 'skip'>\r\n) => [\r\n  LazyQueryTrigger<D>,\r\n  UseQueryStateResult<D, R>,\r\n  UseLazyQueryLastPromiseInfo<D>\r\n]\r\n\r\nexport type LazyQueryTrigger<D extends QueryDefinition<any, any, any, any>> = {\r\n  /**\r\n   * Triggers a lazy query.\r\n   *\r\n   * By default, this will start a new request even if there is already a value in the cache.\r\n   * If you want to use the cache value and only start a request if there is no cache value, set the second argument to `true`.\r\n   *\r\n   * @remarks\r\n   * If you need to access the error or success payload immediately after a lazy query, you can chain .unwrap().\r\n   *\r\n   * @example\r\n   * ```ts\r\n   * // codeblock-meta title=\"Using .unwrap with async await\"\r\n   * try {\r\n   *   const payload = await getUserById(1).unwrap();\r\n   *   console.log('fulfilled', payload)\r\n   * } catch (error) {\r\n   *   console.error('rejected', error);\r\n   * }\r\n   * ```\r\n   */\r\n  (\r\n    arg: QueryArgFrom<D>,\r\n    preferCacheValue?: boolean\r\n  ): QueryActionCreatorResult<D>\r\n}\r\n\r\n/**\r\n * A React hook similar to [`useQuerySubscription`](#usequerysubscription), but with manual control over when the data fetching occurs.\r\n *\r\n * Note that this hook does not return a request status or cached data. For that use-case, see [`useLazyQuery`](#uselazyquery).\r\n *\r\n * #### Features\r\n *\r\n * - Manual control over firing a request to retrieve data\r\n * - 'Subscribes' the component to keep cached data in the store, and 'unsubscribes' when the component unmounts\r\n * - Accepts polling/re-fetching options to trigger automatic re-fetches when the corresponding criteria is met and the fetch has been manually called at least once\r\n */\r\nexport type UseLazyQuerySubscription<\r\n  D extends QueryDefinition<any, any, any, any>\r\n> = (\r\n  options?: SubscriptionOptions\r\n) => readonly [LazyQueryTrigger<D>, QueryArgFrom<D> | UninitializedValue]\r\n\r\nexport type QueryStateSelector<\r\n  R extends Record<string, any>,\r\n  D extends QueryDefinition<any, any, any, any>\r\n> = (state: UseQueryStateDefaultResult<D>) => R\r\n\r\n/**\r\n * A React hook that reads the request status and cached data from the Redux store. The component will re-render as the loading status changes and the data becomes available.\r\n *\r\n * Note that this hook does not trigger fetching new data. For that use-case, see [`useQuery`](#usequery) or [`useQuerySubscription`](#usequerysubscription).\r\n *\r\n * #### Features\r\n *\r\n * - Returns the latest request status and cached data from the Redux store\r\n * - Re-renders as the request status changes and data becomes available\r\n */\r\nexport type UseQueryState<D extends QueryDefinition<any, any, any, any>> = <\r\n  R extends Record<string, any> = UseQueryStateDefaultResult<D>\r\n>(\r\n  arg: QueryArgFrom<D> | SkipToken,\r\n  options?: UseQueryStateOptions<D, R>\r\n) => UseQueryStateResult<D, R>\r\n\r\nexport type UseQueryStateOptions<\r\n  D extends QueryDefinition<any, any, any, any>,\r\n  R extends Record<string, any>\r\n> = {\r\n  /**\r\n   * Prevents a query from automatically running.\r\n   *\r\n   * @remarks\r\n   * When skip is true:\r\n   *\r\n   * - **If the query has cached data:**\r\n   *   * The cached data **will not be used** on the initial load, and will ignore updates from any identical query until the `skip` condition is removed\r\n   *   * The query will have a status of `uninitialized`\r\n   *   * If `skip: false` is set after skipping the initial load, the cached result will be used\r\n   * - **If the query does not have cached data:**\r\n   *   * The query will have a status of `uninitialized`\r\n   *   * The query will not exist in the state when viewed with the dev tools\r\n   *   * The query will not automatically fetch on mount\r\n   *   * The query will not automatically run when additional components with the same query are added that do run\r\n   *\r\n   * @example\r\n   * ```ts\r\n   * // codeblock-meta title=\"Skip example\"\r\n   * const Pokemon = ({ name, skip }: { name: string; skip: boolean }) => {\r\n   *   const { data, error, status } = useGetPokemonByNameQuery(name, {\r\n   *     skip,\r\n   *   });\r\n   *\r\n   *   return (\r\n   *     <div>\r\n   *       {name} - {status}\r\n   *     </div>\r\n   *   );\r\n   * };\r\n   * ```\r\n   */\r\n  skip?: boolean\r\n  /**\r\n   * `selectFromResult` allows you to get a specific segment from a query result in a performant manner.\r\n   * When using this feature, the component will not rerender unless the underlying data of the selected item has changed.\r\n   * If the selected item is one element in a larger collection, it will disregard changes to elements in the same collection.\r\n   *\r\n   * @example\r\n   * ```ts\r\n   * // codeblock-meta title=\"Using selectFromResult to extract a single result\"\r\n   * function PostsList() {\r\n   *   const { data: posts } = api.useGetPostsQuery();\r\n   *\r\n   *   return (\r\n   *     <ul>\r\n   *       {posts?.data?.map((post) => (\r\n   *         <PostById key={post.id} id={post.id} />\r\n   *       ))}\r\n   *     </ul>\r\n   *   );\r\n   * }\r\n   *\r\n   * function PostById({ id }: { id: number }) {\r\n   *   // Will select the post with the given id, and will only rerender if the given posts data changes\r\n   *   const { post } = api.useGetPostsQuery(undefined, {\r\n   *     selectFromResult: ({ data }) => ({ post: data?.find((post) => post.id === id) }),\r\n   *   });\r\n   *\r\n   *   return <li>{post?.name}</li>;\r\n   * }\r\n   * ```\r\n   */\r\n  selectFromResult?: QueryStateSelector<R, D>\r\n}\r\n\r\nexport type UseQueryStateResult<\r\n  _ extends QueryDefinition<any, any, any, any>,\r\n  R\r\n> = NoInfer<R>\r\n\r\n/**\r\n * Helper type to manually type the result\r\n * of the `useQueryState` hook in userland code.\r\n */\r\nexport type TypedUseQueryStateResult<\r\n  ResultType,\r\n  QueryArg,\r\n  BaseQuery extends BaseQueryFn,\r\n  R = UseQueryStateDefaultResult<\r\n    QueryDefinition<QueryArg, BaseQuery, string, ResultType, string>\r\n  >\r\n> = NoInfer<R>\r\n\r\ntype UseQueryStateBaseResult<D extends QueryDefinition<any, any, any, any>> =\r\n  QuerySubState<D> & {\r\n    /**\r\n     * Where `data` tries to hold data as much as possible, also re-using\r\n     * data from the last arguments passed into the hook, this property\r\n     * will always contain the received data from the query, for the current query arguments.\r\n     */\r\n    currentData?: ResultTypeFrom<D>\r\n    /**\r\n     * Query has not started yet.\r\n     */\r\n    isUninitialized: false\r\n    /**\r\n     * Query is currently loading for the first time. No data yet.\r\n     */\r\n    isLoading: false\r\n    /**\r\n     * Query is currently fetching, but might have data from an earlier request.\r\n     */\r\n    isFetching: false\r\n    /**\r\n     * Query has data from a successful load.\r\n     */\r\n    isSuccess: false\r\n    /**\r\n     * Query is currently in \"error\" state.\r\n     */\r\n    isError: false\r\n  }\r\n\r\ntype UseQueryStateDefaultResult<D extends QueryDefinition<any, any, any, any>> =\r\n  Id<\r\n    | Override<\r\n        Extract<\r\n          UseQueryStateBaseResult<D>,\r\n          { status: QueryStatus.uninitialized }\r\n        >,\r\n        { isUninitialized: true }\r\n      >\r\n    | Override<\r\n        UseQueryStateBaseResult<D>,\r\n        | { isLoading: true; isFetching: boolean; data: undefined }\r\n        | ({\r\n            isSuccess: true\r\n            isFetching: true\r\n            error: undefined\r\n          } & Required<\r\n            Pick<UseQueryStateBaseResult<D>, 'data' | 'fulfilledTimeStamp'>\r\n          >)\r\n        | ({\r\n            isSuccess: true\r\n            isFetching: false\r\n            error: undefined\r\n          } & Required<\r\n            Pick<\r\n              UseQueryStateBaseResult<D>,\r\n              'data' | 'fulfilledTimeStamp' | 'currentData'\r\n            >\r\n          >)\r\n        | ({ isError: true } & Required<\r\n            Pick<UseQueryStateBaseResult<D>, 'error'>\r\n          >)\r\n      >\r\n  > & {\r\n    /**\r\n     * @deprecated will be removed in the next version\r\n     * please use the `isLoading`, `isFetching`, `isSuccess`, `isError`\r\n     * and `isUninitialized` flags instead\r\n     */\r\n    status: QueryStatus\r\n  }\r\n\r\nexport type MutationStateSelector<\r\n  R extends Record<string, any>,\r\n  D extends MutationDefinition<any, any, any, any>\r\n> = (state: MutationResultSelectorResult<D>) => R\r\n\r\nexport type UseMutationStateOptions<\r\n  D extends MutationDefinition<any, any, any, any>,\r\n  R extends Record<string, any>\r\n> = {\r\n  selectFromResult?: MutationStateSelector<R, D>\r\n  fixedCacheKey?: string\r\n}\r\n\r\nexport type UseMutationStateResult<\r\n  D extends MutationDefinition<any, any, any, any>,\r\n  R\r\n> = NoInfer<R> & {\r\n  originalArgs?: QueryArgFrom<D>\r\n  /**\r\n   * Resets the hook state to it's initial `uninitialized` state.\r\n   * This will also remove the last result from the cache.\r\n   */\r\n  reset: () => void\r\n}\r\n\r\n/**\r\n * Helper type to manually type the result\r\n * of the `useMutation` hook in userland code.\r\n */\r\nexport type TypedUseMutationResult<\r\n  ResultType,\r\n  QueryArg,\r\n  BaseQuery extends BaseQueryFn,\r\n  R = MutationResultSelectorResult<\r\n    MutationDefinition<QueryArg, BaseQuery, string, ResultType, string>\r\n  >\r\n> = UseMutationStateResult<\r\n  MutationDefinition<QueryArg, BaseQuery, string, ResultType, string>,\r\n  R\r\n>\r\n\r\n/**\r\n * A React hook that lets you trigger an update request for a given endpoint, and subscribes the component to read the request status from the Redux store. The component will re-render as the loading status changes.\r\n *\r\n * #### Features\r\n *\r\n * - Manual control over firing a request to alter data on the server or possibly invalidate the cache\r\n * - 'Subscribes' the component to keep cached data in the store, and 'unsubscribes' when the component unmounts\r\n * - Returns the latest request status and cached data from the Redux store\r\n * - Re-renders as the request status changes and data becomes available\r\n */\r\nexport type UseMutation<D extends MutationDefinition<any, any, any, any>> = <\r\n  R extends Record<string, any> = MutationResultSelectorResult<D>\r\n>(\r\n  options?: UseMutationStateOptions<D, R>\r\n) => readonly [MutationTrigger<D>, UseMutationStateResult<D, R>]\r\n\r\nexport type MutationTrigger<D extends MutationDefinition<any, any, any, any>> =\r\n  {\r\n    /**\r\n     * Triggers the mutation and returns a Promise.\r\n     * @remarks\r\n     * If you need to access the error or success payload immediately after a mutation, you can chain .unwrap().\r\n     *\r\n     * @example\r\n     * ```ts\r\n     * // codeblock-meta title=\"Using .unwrap with async await\"\r\n     * try {\r\n     *   const payload = await addPost({ id: 1, name: 'Example' }).unwrap();\r\n     *   console.log('fulfilled', payload)\r\n     * } catch (error) {\r\n     *   console.error('rejected', error);\r\n     * }\r\n     * ```\r\n     */\r\n    (arg: QueryArgFrom<D>): MutationActionCreatorResult<D>\r\n  }\r\n\r\nconst defaultQueryStateSelector: QueryStateSelector<any, any> = (x) => x\r\nconst defaultMutationStateSelector: MutationStateSelector<any, any> = (x) => x\r\n\r\n/**\r\n * Wrapper around `defaultQueryStateSelector` to be used in `useQuery`.\r\n * We want the initial render to already come back with\r\n * `{ isUninitialized: false, isFetching: true, isLoading: true }`\r\n * to prevent that the library user has to do an additional check for `isUninitialized`/\r\n */\r\nconst noPendingQueryStateSelector: QueryStateSelector<any, any> = (\r\n  selected\r\n) => {\r\n  if (selected.isUninitialized) {\r\n    return {\r\n      ...selected,\r\n      isUninitialized: false,\r\n      isFetching: true,\r\n      isLoading: selected.data !== undefined ? false : true,\r\n      status: QueryStatus.pending,\r\n    } as any\r\n  }\r\n  return selected\r\n}\r\n\r\ntype GenericPrefetchThunk = (\r\n  endpointName: any,\r\n  arg: any,\r\n  options: PrefetchOptions\r\n) => ThunkAction<void, any, any, AnyAction>\r\n\r\n/**\r\n *\r\n * @param opts.api - An API with defined endpoints to create hooks for\r\n * @param opts.moduleOptions.batch - The version of the `batchedUpdates` function to be used\r\n * @param opts.moduleOptions.useDispatch - The version of the `useDispatch` hook to be used\r\n * @param opts.moduleOptions.useSelector - The version of the `useSelector` hook to be used\r\n * @returns An object containing functions to generate hooks based on an endpoint\r\n */\r\nexport function buildHooks<Definitions extends EndpointDefinitions>({\r\n  api,\r\n  moduleOptions: {\r\n    batch,\r\n    useDispatch,\r\n    useSelector,\r\n    useStore,\r\n    unstable__sideEffectsInRender,\r\n  },\r\n  serializeQueryArgs,\r\n  context,\r\n}: {\r\n  api: Api<any, Definitions, any, any, CoreModule>\r\n  moduleOptions: Required<ReactHooksModuleOptions>\r\n  serializeQueryArgs: SerializeQueryArgs<any>\r\n  context: ApiContext<Definitions>\r\n}) {\r\n  const usePossiblyImmediateEffect: (\r\n    effect: () => void | undefined,\r\n    deps?: DependencyList\r\n  ) => void = unstable__sideEffectsInRender ? (cb) => cb() : useEffect\r\n\r\n  return { buildQueryHooks, buildMutationHook, usePrefetch }\r\n\r\n  function queryStatePreSelector(\r\n    currentState: QueryResultSelectorResult<any>,\r\n    lastResult: UseQueryStateDefaultResult<any> | undefined,\r\n    queryArgs: any\r\n  ): UseQueryStateDefaultResult<any> {\r\n    // if we had a last result and the current result is uninitialized,\r\n    // we might have called `api.util.resetApiState`\r\n    // in this case, reset the hook\r\n    if (lastResult?.endpointName && currentState.isUninitialized) {\r\n      const { endpointName } = lastResult\r\n      const endpointDefinition = context.endpointDefinitions[endpointName]\r\n      if (\r\n        serializeQueryArgs({\r\n          queryArgs: lastResult.originalArgs,\r\n          endpointDefinition,\r\n          endpointName,\r\n        }) ===\r\n        serializeQueryArgs({\r\n          queryArgs,\r\n          endpointDefinition,\r\n          endpointName,\r\n        })\r\n      )\r\n        lastResult = undefined\r\n    }\r\n    if (queryArgs === skipToken) {\r\n      lastResult = undefined\r\n    }\r\n    // data is the last known good request result we have tracked - or if none has been tracked yet the last good result for the current args\r\n    let data = currentState.isSuccess ? currentState.data : lastResult?.data\r\n    if (data === undefined) data = currentState.data\r\n\r\n    const hasData = data !== undefined\r\n\r\n    // isFetching = true any time a request is in flight\r\n    const isFetching = currentState.isLoading\r\n    // isLoading = true only when loading while no data is present yet (initial load with no data in the cache)\r\n    const isLoading = !hasData && isFetching\r\n    // isSuccess = true when data is present\r\n    const isSuccess = currentState.isSuccess || (isFetching && hasData)\r\n\r\n    return {\r\n      ...currentState,\r\n      data,\r\n      currentData: currentState.data,\r\n      isFetching,\r\n      isLoading,\r\n      isSuccess,\r\n    } as UseQueryStateDefaultResult<any>\r\n  }\r\n\r\n  function usePrefetch<EndpointName extends QueryKeys<Definitions>>(\r\n    endpointName: EndpointName,\r\n    defaultOptions?: PrefetchOptions\r\n  ) {\r\n    const dispatch = useDispatch<ThunkDispatch<any, any, AnyAction>>()\r\n    const stableDefaultOptions = useShallowStableValue(defaultOptions)\r\n\r\n    return useCallback(\r\n      (arg: any, options?: PrefetchOptions) =>\r\n        dispatch(\r\n          (api.util.prefetch as GenericPrefetchThunk)(endpointName, arg, {\r\n            ...stableDefaultOptions,\r\n            ...options,\r\n          })\r\n        ),\r\n      [endpointName, dispatch, stableDefaultOptions]\r\n    )\r\n  }\r\n\r\n  function buildQueryHooks(name: string): QueryHooks<any> {\r\n    const useQuerySubscription: UseQuerySubscription<any> = (\r\n      arg: any,\r\n      {\r\n        refetchOnReconnect,\r\n        refetchOnFocus,\r\n        refetchOnMountOrArgChange,\r\n        skip = false,\r\n        pollingInterval = 0,\r\n      } = {}\r\n    ) => {\r\n      const { initiate } = api.endpoints[name] as ApiEndpointQuery<\r\n        QueryDefinition<any, any, any, any, any>,\r\n        Definitions\r\n      >\r\n      const dispatch = useDispatch<ThunkDispatch<any, any, AnyAction>>()\r\n      const stableArg = useStableQueryArgs(\r\n        skip ? skipToken : arg,\r\n        // Even if the user provided a per-endpoint `serializeQueryArgs` with\r\n        // a consistent return value, _here_ we want to use the default behavior\r\n        // so we can tell if _anything_ actually changed. Otherwise, we can end up\r\n        // with a case where the query args did change but the serialization doesn't,\r\n        // and then we never try to initiate a refetch.\r\n        defaultSerializeQueryArgs,\r\n        context.endpointDefinitions[name],\r\n        name\r\n      )\r\n      const stableSubscriptionOptions = useShallowStableValue({\r\n        refetchOnReconnect,\r\n        refetchOnFocus,\r\n        pollingInterval,\r\n      })\r\n\r\n      const lastRenderHadSubscription = useRef(false)\r\n\r\n      const promiseRef = useRef<QueryActionCreatorResult<any>>()\r\n\r\n      let { queryCacheKey, requestId } = promiseRef.current || {}\r\n\r\n      // HACK Because the latest state is in the middleware, we actually\r\n      // dispatch an action that will be intercepted and returned.\r\n      let currentRenderHasSubscription = false\r\n      if (queryCacheKey && requestId) {\r\n        // This _should_ return a boolean, even if the types don't line up\r\n        const returnedValue = dispatch(\r\n          api.internalActions.internal_probeSubscription({\r\n            queryCacheKey,\r\n            requestId,\r\n          })\r\n        )\r\n\r\n        if (process.env.NODE_ENV !== 'production') {\r\n          if (typeof returnedValue !== 'boolean') {\r\n            throw new Error(\r\n              `Warning: Middleware for RTK-Query API at reducerPath \"${api.reducerPath}\" has not been added to the store.\r\n    You must add the middleware for RTK-Query to function correctly!`\r\n            )\r\n          }\r\n        }\r\n\r\n        currentRenderHasSubscription = !!returnedValue\r\n      }\r\n\r\n      const subscriptionRemoved =\r\n        !currentRenderHasSubscription && lastRenderHadSubscription.current\r\n\r\n      usePossiblyImmediateEffect(() => {\r\n        lastRenderHadSubscription.current = currentRenderHasSubscription\r\n      })\r\n\r\n      usePossiblyImmediateEffect((): void | undefined => {\r\n        promiseRef.current = undefined\r\n      }, [subscriptionRemoved])\r\n\r\n      usePossiblyImmediateEffect((): void | undefined => {\r\n        const lastPromise = promiseRef.current\r\n        if (\r\n          typeof process !== 'undefined' &&\r\n          process.env.NODE_ENV === 'removeMeOnCompilation'\r\n        ) {\r\n          // this is only present to enforce the rule of hooks to keep `isSubscribed` in the dependency array\r\n          console.log(subscriptionRemoved)\r\n        }\r\n\r\n        if (stableArg === skipToken) {\r\n          lastPromise?.unsubscribe()\r\n          promiseRef.current = undefined\r\n          return\r\n        }\r\n\r\n        const lastSubscriptionOptions = promiseRef.current?.subscriptionOptions\r\n\r\n        if (!lastPromise || lastPromise.arg !== stableArg) {\r\n          lastPromise?.unsubscribe()\r\n          const promise = dispatch(\r\n            initiate(stableArg, {\r\n              subscriptionOptions: stableSubscriptionOptions,\r\n              forceRefetch: refetchOnMountOrArgChange,\r\n            })\r\n          )\r\n\r\n          promiseRef.current = promise\r\n        } else if (stableSubscriptionOptions !== lastSubscriptionOptions) {\r\n          lastPromise.updateSubscriptionOptions(stableSubscriptionOptions)\r\n        }\r\n      }, [\r\n        dispatch,\r\n        initiate,\r\n        refetchOnMountOrArgChange,\r\n        stableArg,\r\n        stableSubscriptionOptions,\r\n        subscriptionRemoved,\r\n      ])\r\n\r\n      useEffect(() => {\r\n        return () => {\r\n          promiseRef.current?.unsubscribe()\r\n          promiseRef.current = undefined\r\n        }\r\n      }, [])\r\n\r\n      return useMemo(\r\n        () => ({\r\n          /**\r\n           * A method to manually refetch data for the query\r\n           */\r\n          refetch: () => {\r\n            if (!promiseRef.current)\r\n              throw new Error(\r\n                'Cannot refetch a query that has not been started yet.'\r\n              )\r\n            return promiseRef.current?.refetch()\r\n          },\r\n        }),\r\n        []\r\n      )\r\n    }\r\n\r\n    const useLazyQuerySubscription: UseLazyQuerySubscription<any> = ({\r\n      refetchOnReconnect,\r\n      refetchOnFocus,\r\n      pollingInterval = 0,\r\n    } = {}) => {\r\n      const { initiate } = api.endpoints[name] as ApiEndpointQuery<\r\n        QueryDefinition<any, any, any, any, any>,\r\n        Definitions\r\n      >\r\n      const dispatch = useDispatch<ThunkDispatch<any, any, AnyAction>>()\r\n\r\n      const [arg, setArg] = useState<any>(UNINITIALIZED_VALUE)\r\n      const promiseRef = useRef<QueryActionCreatorResult<any> | undefined>()\r\n\r\n      const stableSubscriptionOptions = useShallowStableValue({\r\n        refetchOnReconnect,\r\n        refetchOnFocus,\r\n        pollingInterval,\r\n      })\r\n\r\n      usePossiblyImmediateEffect(() => {\r\n        const lastSubscriptionOptions = promiseRef.current?.subscriptionOptions\r\n\r\n        if (stableSubscriptionOptions !== lastSubscriptionOptions) {\r\n          promiseRef.current?.updateSubscriptionOptions(\r\n            stableSubscriptionOptions\r\n          )\r\n        }\r\n      }, [stableSubscriptionOptions])\r\n\r\n      const subscriptionOptionsRef = useRef(stableSubscriptionOptions)\r\n      usePossiblyImmediateEffect(() => {\r\n        subscriptionOptionsRef.current = stableSubscriptionOptions\r\n      }, [stableSubscriptionOptions])\r\n\r\n      const trigger = useCallback(\r\n        function (arg: any, preferCacheValue = false) {\r\n          let promise: QueryActionCreatorResult<any>\r\n\r\n          batch(() => {\r\n            promiseRef.current?.unsubscribe()\r\n\r\n            promiseRef.current = promise = dispatch(\r\n              initiate(arg, {\r\n                subscriptionOptions: subscriptionOptionsRef.current,\r\n                forceRefetch: !preferCacheValue,\r\n              })\r\n            )\r\n\r\n            setArg(arg)\r\n          })\r\n\r\n          return promise!\r\n        },\r\n        [dispatch, initiate]\r\n      )\r\n\r\n      /* cleanup on unmount */\r\n      useEffect(() => {\r\n        return () => {\r\n          promiseRef?.current?.unsubscribe()\r\n        }\r\n      }, [])\r\n\r\n      /* if \"cleanup on unmount\" was triggered from a fast refresh, we want to reinstate the query */\r\n      useEffect(() => {\r\n        if (arg !== UNINITIALIZED_VALUE && !promiseRef.current) {\r\n          trigger(arg, true)\r\n        }\r\n      }, [arg, trigger])\r\n\r\n      return useMemo(() => [trigger, arg] as const, [trigger, arg])\r\n    }\r\n\r\n    const useQueryState: UseQueryState<any> = (\r\n      arg: any,\r\n      { skip = false, selectFromResult } = {}\r\n    ) => {\r\n      const { select } = api.endpoints[name] as ApiEndpointQuery<\r\n        QueryDefinition<any, any, any, any, any>,\r\n        Definitions\r\n      >\r\n      const stableArg = useStableQueryArgs(\r\n        skip ? skipToken : arg,\r\n        serializeQueryArgs,\r\n        context.endpointDefinitions[name],\r\n        name\r\n      )\r\n\r\n      type ApiRootState = Parameters<ReturnType<typeof select>>[0]\r\n\r\n      const lastValue = useRef<any>()\r\n\r\n      const selectDefaultResult: Selector<ApiRootState, any, [any]> = useMemo(\r\n        () =>\r\n          createSelector(\r\n            [\r\n              select(stableArg),\r\n              (_: ApiRootState, lastResult: any) => lastResult,\r\n              (_: ApiRootState) => stableArg,\r\n            ],\r\n            queryStatePreSelector\r\n          ),\r\n        [select, stableArg]\r\n      )\r\n\r\n      const querySelector: Selector<ApiRootState, any, [any]> = useMemo(\r\n        () =>\r\n          selectFromResult\r\n            ? createSelector([selectDefaultResult], selectFromResult)\r\n            : selectDefaultResult,\r\n        [selectDefaultResult, selectFromResult]\r\n      )\r\n\r\n      const currentState = useSelector(\r\n        (state: RootState<Definitions, any, any>) =>\r\n          querySelector(state, lastValue.current),\r\n        shallowEqual\r\n      )\r\n\r\n      const store = useStore<RootState<Definitions, any, any>>()\r\n      const newLastValue = selectDefaultResult(\r\n        store.getState(),\r\n        lastValue.current\r\n      )\r\n      useIsomorphicLayoutEffect(() => {\r\n        lastValue.current = newLastValue\r\n      }, [newLastValue])\r\n\r\n      return currentState\r\n    }\r\n\r\n    return {\r\n      useQueryState,\r\n      useQuerySubscription,\r\n      useLazyQuerySubscription,\r\n      useLazyQuery(options) {\r\n        const [trigger, arg] = useLazyQuerySubscription(options)\r\n        const queryStateResults = useQueryState(arg, {\r\n          ...options,\r\n          skip: arg === UNINITIALIZED_VALUE,\r\n        })\r\n\r\n        const info = useMemo(() => ({ lastArg: arg }), [arg])\r\n        return useMemo(\r\n          () => [trigger, queryStateResults, info],\r\n          [trigger, queryStateResults, info]\r\n        )\r\n      },\r\n      useQuery(arg, options) {\r\n        const querySubscriptionResults = useQuerySubscription(arg, options)\r\n        const queryStateResults = useQueryState(arg, {\r\n          selectFromResult:\r\n            arg === skipToken || options?.skip\r\n              ? undefined\r\n              : noPendingQueryStateSelector,\r\n          ...options,\r\n        })\r\n\r\n        const { data, status, isLoading, isSuccess, isError, error } =\r\n          queryStateResults\r\n        useDebugValue({ data, status, isLoading, isSuccess, isError, error })\r\n\r\n        return useMemo(\r\n          () => ({ ...queryStateResults, ...querySubscriptionResults }),\r\n          [queryStateResults, querySubscriptionResults]\r\n        )\r\n      },\r\n    }\r\n  }\r\n\r\n  function buildMutationHook(name: string): UseMutation<any> {\r\n    return ({\r\n      selectFromResult = defaultMutationStateSelector,\r\n      fixedCacheKey,\r\n    } = {}) => {\r\n      const { select, initiate } = api.endpoints[name] as ApiEndpointMutation<\r\n        MutationDefinition<any, any, any, any, any>,\r\n        Definitions\r\n      >\r\n      const dispatch = useDispatch<ThunkDispatch<any, any, AnyAction>>()\r\n      const [promise, setPromise] = useState<MutationActionCreatorResult<any>>()\r\n\r\n      useEffect(\r\n        () => () => {\r\n          if (!promise?.arg.fixedCacheKey) {\r\n            promise?.reset()\r\n          }\r\n        },\r\n        [promise]\r\n      )\r\n\r\n      const triggerMutation = useCallback(\r\n        function (arg: Parameters<typeof initiate>['0']) {\r\n          const promise = dispatch(initiate(arg, { fixedCacheKey }))\r\n          setPromise(promise)\r\n          return promise\r\n        },\r\n        [dispatch, initiate, fixedCacheKey]\r\n      )\r\n\r\n      const { requestId } = promise || {}\r\n      const mutationSelector = useMemo(\r\n        () =>\r\n          createSelector(\r\n            [select({ fixedCacheKey, requestId: promise?.requestId })],\r\n            selectFromResult\r\n          ),\r\n        [select, promise, selectFromResult, fixedCacheKey]\r\n      )\r\n\r\n      const currentState = useSelector(mutationSelector, shallowEqual)\r\n      const originalArgs =\r\n        fixedCacheKey == null ? promise?.arg.originalArgs : undefined\r\n      const reset = useCallback(() => {\r\n        batch(() => {\r\n          if (promise) {\r\n            setPromise(undefined)\r\n          }\r\n          if (fixedCacheKey) {\r\n            dispatch(\r\n              api.internalActions.removeMutationResult({\r\n                requestId,\r\n                fixedCacheKey,\r\n              })\r\n            )\r\n          }\r\n        })\r\n      }, [dispatch, fixedCacheKey, promise, requestId])\r\n\r\n      const {\r\n        endpointName,\r\n        data,\r\n        status,\r\n        isLoading,\r\n        isSuccess,\r\n        isError,\r\n        error,\r\n      } = currentState\r\n      useDebugValue({\r\n        endpointName,\r\n        data,\r\n        status,\r\n        isLoading,\r\n        isSuccess,\r\n        isError,\r\n        error,\r\n      })\r\n\r\n      const finalState = useMemo(\r\n        () => ({ ...currentState, originalArgs, reset }),\r\n        [currentState, originalArgs, reset]\r\n      )\r\n\r\n      return useMemo(\r\n        () => [triggerMutation, finalState] as const,\r\n        [triggerMutation, finalState]\r\n      )\r\n    }\r\n  }\r\n}\r\n", "import { useEffect, useRef, useMemo } from 'react'\r\nimport type { SerializeQueryArgs } from '@reduxjs/toolkit/dist/query/defaultSerializeQueryArgs'\r\nimport type { EndpointDefinition } from '@reduxjs/toolkit/dist/query/endpointDefinitions'\r\n\r\nexport function useStableQueryArgs<T>(\r\n  queryArgs: T,\r\n  serialize: SerializeQueryArgs<any>,\r\n  endpointDefinition: EndpointDefinition<any, any, any, any>,\r\n  endpointName: string\r\n) {\r\n  const incoming = useMemo(\r\n    () => ({\r\n      queryArgs,\r\n      serialized:\r\n        typeof queryArgs == 'object'\r\n          ? serialize({ queryArgs, endpointDefinition, endpointName })\r\n          : queryArgs,\r\n    }),\r\n    [queryArgs, serialize, endpointDefinition, endpointName]\r\n  )\r\n  const cache = useRef(incoming)\r\n  useEffect(() => {\r\n    if (cache.current.serialized !== incoming.serialized) {\r\n      cache.current = incoming\r\n    }\r\n  }, [incoming])\r\n\r\n  return cache.current.serialized === incoming.serialized\r\n    ? cache.current.queryArgs\r\n    : queryArgs\r\n}\r\n", "export const UNINITIALIZED_VALUE = Symbol()\r\nexport type UninitializedValue = typeof UNINITIALIZED_VALUE\r\n", "import { useEffect, useRef } from 'react'\r\nimport { shallowEqual } from 'react-redux'\r\n\r\nexport function useShallowStableValue<T>(value: T) {\r\n  const cache = useRef(value)\r\n  useEffect(() => {\r\n    if (!shallowEqual(cache.current, value)) {\r\n      cache.current = value\r\n    }\r\n  }, [value])\r\n\r\n  return shallowEqual(cache.current, value) ? cache.current : value\r\n}\r\n", "import type { QueryCacheKey } from './core/apiState'\r\nimport type { EndpointDefinition } from './endpointDefinitions'\r\nimport { isPlainObject } from '@reduxjs/toolkit'\r\n\r\nexport const defaultSerializeQueryArgs: SerializeQueryArgs<any> = ({\r\n  endpointName,\r\n  queryArgs,\r\n}) => {\r\n  // Sort the object keys before stringifying, to prevent useQuery({ a: 1, b: 2 }) having a different cache key than useQuery({ b: 2, a: 1 })\r\n  return `${endpointName}(${JSON.stringify(queryArgs, (key, value) =>\r\n    isPlainObject(value)\r\n      ? Object.keys(value)\r\n          .sort()\r\n          .reduce<any>((acc, key) => {\r\n            acc[key] = (value as any)[key]\r\n            return acc\r\n          }, {})\r\n      : value\r\n  )})`\r\n}\r\n\r\nexport type SerializeQueryArgs<QueryArgs, ReturnType = string> = (_: {\r\n  queryArgs: QueryArgs\r\n  endpointDefinition: EndpointDefinition<any, any, any, any>\r\n  endpointName: string\r\n}) => ReturnType\r\n\r\nexport type InternalSerializeQueryArgs = (_: {\r\n  queryArgs: any\r\n  endpointDefinition: EndpointDefinition<any, any, any, any>\r\n  endpointName: string\r\n}) => QueryCacheKey\r\n", "import type { AnyAction, ThunkDispatch } from '@reduxjs/toolkit'\r\nimport { SerializeQueryArgs } from './defaultSerializeQueryArgs'\r\nimport type { QuerySubState, RootState } from './core/apiState'\r\nimport type {\r\n  BaseQueryExtraOptions,\r\n  BaseQueryFn,\r\n  BaseQueryResult,\r\n  BaseQueryArg,\r\n  BaseQueryApi,\r\n  QueryReturnValue,\r\n  BaseQueryError,\r\n  BaseQueryMeta,\r\n} from './baseQueryTypes'\r\nimport type {\r\n  HasRequiredProps,\r\n  MaybePromise,\r\n  OmitFromUnion,\r\n  CastAny,\r\n} from './tsHelpers'\r\nimport type { NEVER } from './fakeBaseQuery'\r\n\r\nconst resultType = /* @__PURE__ */ Symbol()\r\nconst baseQuery = /* @__PURE__ */ Symbol()\r\n\r\ninterface EndpointDefinitionWithQuery<\r\n  QueryArg,\r\n  BaseQuery extends BaseQueryFn,\r\n  ResultType\r\n> {\r\n  /**\r\n   * `query` can be a function that returns either a `string` or an `object` which is passed to your `baseQuery`. If you are using [fetchBaseQuery](./fetchBaseQuery), this can return either a `string` or an `object` of properties in `FetchArgs`. If you use your own custom [`baseQuery`](../../rtk-query/usage/customizing-queries), you can customize this behavior to your liking.\r\n   *\r\n   * @example\r\n   *\r\n   * ```ts\r\n   * // codeblock-meta title=\"query example\"\r\n   *\r\n   * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\r\n   * interface Post {\r\n   *   id: number\r\n   *   name: string\r\n   * }\r\n   * type PostsResponse = Post[]\r\n   *\r\n   * const api = createApi({\r\n   *   baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n   *   tagTypes: ['Post'],\r\n   *   endpoints: (build) => ({\r\n   *     getPosts: build.query<PostsResponse, void>({\r\n   *       // highlight-start\r\n   *       query: () => 'posts',\r\n   *       // highlight-end\r\n   *     }),\r\n   *     addPost: build.mutation<Post, Partial<Post>>({\r\n   *      // highlight-start\r\n   *      query: (body) => ({\r\n   *        url: `posts`,\r\n   *        method: 'POST',\r\n   *        body,\r\n   *      }),\r\n   *      // highlight-end\r\n   *      invalidatesTags: [{ type: 'Post', id: 'LIST' }],\r\n   *    }),\r\n   *   })\r\n   * })\r\n   * ```\r\n   */\r\n  query(arg: QueryArg): BaseQueryArg<BaseQuery>\r\n  queryFn?: never\r\n  /**\r\n   * A function to manipulate the data returned by a query or mutation.\r\n   */\r\n  transformResponse?(\r\n    baseQueryReturnValue: BaseQueryResult<BaseQuery>,\r\n    meta: BaseQueryMeta<BaseQuery>,\r\n    arg: QueryArg\r\n  ): ResultType | Promise<ResultType>\r\n  /**\r\n   * A function to manipulate the data returned by a failed query or mutation.\r\n   */\r\n  transformErrorResponse?(\r\n    baseQueryReturnValue: BaseQueryError<BaseQuery>,\r\n    meta: BaseQueryMeta<BaseQuery>,\r\n    arg: QueryArg\r\n  ): unknown\r\n  /**\r\n   * Defaults to `true`.\r\n   *\r\n   * Most apps should leave this setting on. The only time it can be a performance issue\r\n   * is if an API returns extremely large amounts of data (e.g. 10,000 rows per request) and\r\n   * you're unable to paginate it.\r\n   *\r\n   * For details of how this works, please see the below. When it is set to `false`,\r\n   * every request will cause subscribed components to rerender, even when the data has not changed.\r\n   *\r\n   * @see https://redux-toolkit.js.org/api/other-exports#copywithstructuralsharing\r\n   */\r\n  structuralSharing?: boolean\r\n}\r\n\r\ninterface EndpointDefinitionWithQueryFn<\r\n  QueryArg,\r\n  BaseQuery extends BaseQueryFn,\r\n  ResultType\r\n> {\r\n  /**\r\n   * Can be used in place of `query` as an inline function that bypasses `baseQuery` completely for the endpoint.\r\n   *\r\n   * @example\r\n   * ```ts\r\n   * // codeblock-meta title=\"Basic queryFn example\"\r\n   *\r\n   * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\r\n   * interface Post {\r\n   *   id: number\r\n   *   name: string\r\n   * }\r\n   * type PostsResponse = Post[]\r\n   *\r\n   * const api = createApi({\r\n   *   baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n   *   endpoints: (build) => ({\r\n   *     getPosts: build.query<PostsResponse, void>({\r\n   *       query: () => 'posts',\r\n   *     }),\r\n   *     flipCoin: build.query<'heads' | 'tails', void>({\r\n   *       // highlight-start\r\n   *       queryFn(arg, queryApi, extraOptions, baseQuery) {\r\n   *         const randomVal = Math.random()\r\n   *         if (randomVal < 0.45) {\r\n   *           return { data: 'heads' }\r\n   *         }\r\n   *         if (randomVal < 0.9) {\r\n   *           return { data: 'tails' }\r\n   *         }\r\n   *         return { error: { status: 500, statusText: 'Internal Server Error', data: \"Coin landed on it's edge!\" } }\r\n   *       }\r\n   *       // highlight-end\r\n   *     })\r\n   *   })\r\n   * })\r\n   * ```\r\n   */\r\n  queryFn(\r\n    arg: QueryArg,\r\n    api: BaseQueryApi,\r\n    extraOptions: BaseQueryExtraOptions<BaseQuery>,\r\n    baseQuery: (arg: Parameters<BaseQuery>[0]) => ReturnType<BaseQuery>\r\n  ): MaybePromise<QueryReturnValue<ResultType, BaseQueryError<BaseQuery>>>\r\n  query?: never\r\n  transformResponse?: never\r\n  transformErrorResponse?: never\r\n  /**\r\n   * Defaults to `true`.\r\n   *\r\n   * Most apps should leave this setting on. The only time it can be a performance issue\r\n   * is if an API returns extremely large amounts of data (e.g. 10,000 rows per request) and\r\n   * you're unable to paginate it.\r\n   *\r\n   * For details of how this works, please see the below. When it is set to `false`,\r\n   * every request will cause subscribed components to rerender, even when the data has not changed.\r\n   *\r\n   * @see https://redux-toolkit.js.org/api/other-exports#copywithstructuralsharing\r\n   */\r\n  structuralSharing?: boolean\r\n}\r\n\r\nexport interface BaseEndpointTypes<\r\n  QueryArg,\r\n  BaseQuery extends BaseQueryFn,\r\n  ResultType\r\n> {\r\n  QueryArg: QueryArg\r\n  BaseQuery: BaseQuery\r\n  ResultType: ResultType\r\n}\r\n\r\nexport type BaseEndpointDefinition<\r\n  QueryArg,\r\n  BaseQuery extends BaseQueryFn,\r\n  ResultType\r\n> = (\r\n  | ([CastAny<BaseQueryResult<BaseQuery>, {}>] extends [NEVER]\r\n      ? never\r\n      : EndpointDefinitionWithQuery<QueryArg, BaseQuery, ResultType>)\r\n  | EndpointDefinitionWithQueryFn<QueryArg, BaseQuery, ResultType>\r\n) & {\r\n  /* phantom type */\r\n  [resultType]?: ResultType\r\n  /* phantom type */\r\n  [baseQuery]?: BaseQuery\r\n} & HasRequiredProps<\r\n    BaseQueryExtraOptions<BaseQuery>,\r\n    { extraOptions: BaseQueryExtraOptions<BaseQuery> },\r\n    { extraOptions?: BaseQueryExtraOptions<BaseQuery> }\r\n  >\r\n\r\nexport enum DefinitionType {\r\n  query = 'query',\r\n  mutation = 'mutation',\r\n}\r\n\r\nexport type GetResultDescriptionFn<\r\n  TagTypes extends string,\r\n  ResultType,\r\n  QueryArg,\r\n  ErrorType,\r\n  MetaType\r\n> = (\r\n  result: ResultType | undefined,\r\n  error: ErrorType | undefined,\r\n  arg: QueryArg,\r\n  meta: MetaType\r\n) => ReadonlyArray<TagDescription<TagTypes>>\r\n\r\nexport type FullTagDescription<TagType> = {\r\n  type: TagType\r\n  id?: number | string\r\n}\r\nexport type TagDescription<TagType> = TagType | FullTagDescription<TagType>\r\nexport type ResultDescription<\r\n  TagTypes extends string,\r\n  ResultType,\r\n  QueryArg,\r\n  ErrorType,\r\n  MetaType\r\n> =\r\n  | ReadonlyArray<TagDescription<TagTypes>>\r\n  | GetResultDescriptionFn<TagTypes, ResultType, QueryArg, ErrorType, MetaType>\r\n\r\n/** @deprecated please use `onQueryStarted` instead */\r\nexport interface QueryApi<ReducerPath extends string, Context extends {}> {\r\n  /** @deprecated please use `onQueryStarted` instead */\r\n  dispatch: ThunkDispatch<any, any, AnyAction>\r\n  /** @deprecated please use `onQueryStarted` instead */\r\n  getState(): RootState<any, any, ReducerPath>\r\n  /** @deprecated please use `onQueryStarted` instead */\r\n  extra: unknown\r\n  /** @deprecated please use `onQueryStarted` instead */\r\n  requestId: string\r\n  /** @deprecated please use `onQueryStarted` instead */\r\n  context: Context\r\n}\r\n\r\nexport interface QueryTypes<\r\n  QueryArg,\r\n  BaseQuery extends BaseQueryFn,\r\n  TagTypes extends string,\r\n  ResultType,\r\n  ReducerPath extends string = string\r\n> extends BaseEndpointTypes<QueryArg, BaseQuery, ResultType> {\r\n  /**\r\n   * The endpoint definition type. To be used with some internal generic types.\r\n   * @example\r\n   * ```ts\r\n   * const useMyWrappedHook: UseQuery<typeof api.endpoints.query.Types.QueryDefinition> = ...\r\n   * ```\r\n   */\r\n  QueryDefinition: QueryDefinition<\r\n    QueryArg,\r\n    BaseQuery,\r\n    TagTypes,\r\n    ResultType,\r\n    ReducerPath\r\n  >\r\n  TagTypes: TagTypes\r\n  ReducerPath: ReducerPath\r\n}\r\n\r\nexport interface QueryExtraOptions<\r\n  TagTypes extends string,\r\n  ResultType,\r\n  QueryArg,\r\n  BaseQuery extends BaseQueryFn,\r\n  ReducerPath extends string = string\r\n> {\r\n  type: DefinitionType.query\r\n  /**\r\n   * Used by `query` endpoints. Determines which 'tag' is attached to the cached data returned by the query.\r\n   * Expects an array of tag type strings, an array of objects of tag types with ids, or a function that returns such an array.\r\n   * 1.  `['Post']` - equivalent to `2`\r\n   * 2.  `[{ type: 'Post' }]` - equivalent to `1`\r\n   * 3.  `[{ type: 'Post', id: 1 }]`\r\n   * 4.  `(result, error, arg) => ['Post']` - equivalent to `5`\r\n   * 5.  `(result, error, arg) => [{ type: 'Post' }]` - equivalent to `4`\r\n   * 6.  `(result, error, arg) => [{ type: 'Post', id: 1 }]`\r\n   *\r\n   * @example\r\n   *\r\n   * ```ts\r\n   * // codeblock-meta title=\"providesTags example\"\r\n   *\r\n   * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\r\n   * interface Post {\r\n   *   id: number\r\n   *   name: string\r\n   * }\r\n   * type PostsResponse = Post[]\r\n   *\r\n   * const api = createApi({\r\n   *   baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n   *   tagTypes: ['Posts'],\r\n   *   endpoints: (build) => ({\r\n   *     getPosts: build.query<PostsResponse, void>({\r\n   *       query: () => 'posts',\r\n   *       // highlight-start\r\n   *       providesTags: (result) =>\r\n   *         result\r\n   *           ? [\r\n   *               ...result.map(({ id }) => ({ type: 'Posts' as const, id })),\r\n   *               { type: 'Posts', id: 'LIST' },\r\n   *             ]\r\n   *           : [{ type: 'Posts', id: 'LIST' }],\r\n   *       // highlight-end\r\n   *     })\r\n   *   })\r\n   * })\r\n   * ```\r\n   */\r\n  providesTags?: ResultDescription<\r\n    TagTypes,\r\n    ResultType,\r\n    QueryArg,\r\n    BaseQueryError<BaseQuery>,\r\n    BaseQueryMeta<BaseQuery>\r\n  >\r\n  /**\r\n   * Not to be used. A query should not invalidate tags in the cache.\r\n   */\r\n  invalidatesTags?: never\r\n\r\n  /**\r\n   * Can be provided to return a custom cache key value based on the query arguments.\r\n   *\r\n   * This is primarily intended for cases where a non-serializable value is passed as part of the query arg object and should be excluded from the cache key.  It may also be used for cases where an endpoint should only have a single cache entry, such as an infinite loading / pagination implementation.\r\n   *\r\n   * Unlike the `createApi` version which can _only_ return a string, this per-endpoint option can also return an an object, number, or boolean.  If it returns a string, that value will be used as the cache key directly.  If it returns an object / number / boolean, that value will be passed to the built-in `defaultSerializeQueryArgs`.  This simplifies the use case of stripping out args you don't want included in the cache key.\r\n   *\r\n   *\r\n   * @example\r\n   *\r\n   * ```ts\r\n   * // codeblock-meta title=\"serializeQueryArgs : exclude value\"\r\n   *\r\n   * import { createApi, fetchBaseQuery, defaultSerializeQueryArgs } from '@reduxjs/toolkit/query/react'\r\n   * interface Post {\r\n   *   id: number\r\n   *   name: string\r\n   * }\r\n   *\r\n   * interface MyApiClient {\r\n   *   fetchPost: (id: string) => Promise<Post>\r\n   * }\r\n   *\r\n   * createApi({\r\n   *  baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n   *  endpoints: (build) => ({\r\n   *    // Example: an endpoint with an API client passed in as an argument,\r\n   *    // but only the item ID should be used as the cache key\r\n   *    getPost: build.query<Post, { id: string; client: MyApiClient }>({\r\n   *      queryFn: async ({ id, client }) => {\r\n   *        const post = await client.fetchPost(id)\r\n   *        return { data: post }\r\n   *      },\r\n   *      // highlight-start\r\n   *      serializeQueryArgs: ({ queryArgs, endpointDefinition, endpointName }) => {\r\n   *        const { id } = queryArgs\r\n   *        // This can return a string, an object, a number, or a boolean.\r\n   *        // If it returns an object, number or boolean, that value\r\n   *        // will be serialized automatically via `defaultSerializeQueryArgs`\r\n   *        return { id } // omit `client` from the cache key\r\n   *\r\n   *        // Alternately, you can use `defaultSerializeQueryArgs` yourself:\r\n   *        // return defaultSerializeQueryArgs({\r\n   *        //   endpointName,\r\n   *        //   queryArgs: { id },\r\n   *        //   endpointDefinition\r\n   *        // })\r\n   *        // Or  create and return a string yourself:\r\n   *        // return `getPost(${id})`\r\n   *      },\r\n   *      // highlight-end\r\n   *    }),\r\n   *  }),\r\n   *})\r\n   * ```\r\n   */\r\n  serializeQueryArgs?: SerializeQueryArgs<\r\n    QueryArg,\r\n    string | number | boolean | Record<any, any>\r\n  >\r\n\r\n  /**\r\n   * Can be provided to merge an incoming response value into the current cache data.\r\n   * If supplied, no automatic structural sharing will be applied - it's up to\r\n   * you to update the cache appropriately.\r\n   *\r\n   * Since RTKQ normally replaces cache entries with the new response, you will usually\r\n   * need to use this with the `serializeQueryArgs` or `forceRefetch` options to keep\r\n   * an existing cache entry so that it can be updated.\r\n   *\r\n   * Since this is wrapped with Immer, you , you may either mutate the `currentCacheValue` directly,\r\n   * or return a new value, but _not_ both at once.\r\n   *\r\n   * Will only be called if the existing `currentCacheData` is _not_ `undefined` - on first response,\r\n   * the cache entry will just save the response data directly.\r\n   *\r\n   * Useful if you don't want a new request to completely override the current cache value,\r\n   * maybe because you have manually updated it from another source and don't want those\r\n   * updates to get lost.\r\n   *\r\n   *\r\n   * @example\r\n   *\r\n   * ```ts\r\n   * // codeblock-meta title=\"merge: pagination\"\r\n   *\r\n   * import { createApi, fetchBaseQuery, defaultSerializeQueryArgs } from '@reduxjs/toolkit/query/react'\r\n   * interface Post {\r\n   *   id: number\r\n   *   name: string\r\n   * }\r\n   *\r\n   * createApi({\r\n   *  baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n   *  endpoints: (build) => ({\r\n   *    listItems: build.query<string[], number>({\r\n   *      query: (pageNumber) => `/listItems?page=${pageNumber}`,\r\n   *     // Only have one cache entry because the arg always maps to one string\r\n   *     serializeQueryArgs: ({ endpointName }) => {\r\n   *       return endpointName\r\n   *      },\r\n   *      // Always merge incoming data to the cache entry\r\n   *      merge: (currentCache, newItems) => {\r\n   *        currentCache.push(...newItems)\r\n   *      },\r\n   *      // Refetch when the page arg changes\r\n   *      forceRefetch({ currentArg, previousArg }) {\r\n   *        return currentArg !== previousArg\r\n   *      },\r\n   *    }),\r\n   *  }),\r\n   *})\r\n   * ```\r\n   */\r\n  merge?(\r\n    currentCacheData: ResultType,\r\n    responseData: ResultType,\r\n    otherArgs: {\r\n      arg: QueryArg\r\n      baseQueryMeta: BaseQueryMeta<BaseQuery>\r\n      requestId: string\r\n      fulfilledTimeStamp: number\r\n    }\r\n  ): ResultType | void\r\n\r\n  /**\r\n   * Check to see if the endpoint should force a refetch in cases where it normally wouldn't.\r\n   * This is primarily useful for \"infinite scroll\" / pagination use cases where\r\n   * RTKQ is keeping a single cache entry that is added to over time, in combination\r\n   * with `serializeQueryArgs` returning a fixed cache key and a `merge` callback\r\n   * set to add incoming data to the cache entry each time.\r\n   *\r\n   * @example\r\n   *\r\n   * ```ts\r\n   * // codeblock-meta title=\"forceRefresh: pagination\"\r\n   *\r\n   * import { createApi, fetchBaseQuery, defaultSerializeQueryArgs } from '@reduxjs/toolkit/query/react'\r\n   * interface Post {\r\n   *   id: number\r\n   *   name: string\r\n   * }\r\n   *\r\n   * createApi({\r\n   *  baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n   *  endpoints: (build) => ({\r\n   *    listItems: build.query<string[], number>({\r\n   *      query: (pageNumber) => `/listItems?page=${pageNumber}`,\r\n   *     // Only have one cache entry because the arg always maps to one string\r\n   *     serializeQueryArgs: ({ endpointName }) => {\r\n   *       return endpointName\r\n   *      },\r\n   *      // Always merge incoming data to the cache entry\r\n   *      merge: (currentCache, newItems) => {\r\n   *        currentCache.push(...newItems)\r\n   *      },\r\n   *      // Refetch when the page arg changes\r\n   *      forceRefetch({ currentArg, previousArg }) {\r\n   *        return currentArg !== previousArg\r\n   *      },\r\n   *    }),\r\n   *  }),\r\n   *})\r\n   * ```\r\n   */\r\n  forceRefetch?(params: {\r\n    currentArg: QueryArg | undefined\r\n    previousArg: QueryArg | undefined\r\n    state: RootState<any, any, string>\r\n    endpointState?: QuerySubState<any>\r\n  }): boolean\r\n\r\n  /**\r\n   * All of these are `undefined` at runtime, purely to be used in TypeScript declarations!\r\n   */\r\n  Types?: QueryTypes<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>\r\n}\r\n\r\nexport type QueryDefinition<\r\n  QueryArg,\r\n  BaseQuery extends BaseQueryFn,\r\n  TagTypes extends string,\r\n  ResultType,\r\n  ReducerPath extends string = string\r\n> = BaseEndpointDefinition<QueryArg, BaseQuery, ResultType> &\r\n  QueryExtraOptions<TagTypes, ResultType, QueryArg, BaseQuery, ReducerPath>\r\n\r\nexport interface MutationTypes<\r\n  QueryArg,\r\n  BaseQuery extends BaseQueryFn,\r\n  TagTypes extends string,\r\n  ResultType,\r\n  ReducerPath extends string = string\r\n> extends BaseEndpointTypes<QueryArg, BaseQuery, ResultType> {\r\n  /**\r\n   * The endpoint definition type. To be used with some internal generic types.\r\n   * @example\r\n   * ```ts\r\n   * const useMyWrappedHook: UseMutation<typeof api.endpoints.query.Types.MutationDefinition> = ...\r\n   * ```\r\n   */\r\n  MutationDefinition: MutationDefinition<\r\n    QueryArg,\r\n    BaseQuery,\r\n    TagTypes,\r\n    ResultType,\r\n    ReducerPath\r\n  >\r\n  TagTypes: TagTypes\r\n  ReducerPath: ReducerPath\r\n}\r\n\r\nexport interface MutationExtraOptions<\r\n  TagTypes extends string,\r\n  ResultType,\r\n  QueryArg,\r\n  BaseQuery extends BaseQueryFn,\r\n  ReducerPath extends string = string\r\n> {\r\n  type: DefinitionType.mutation\r\n  /**\r\n   * Used by `mutation` endpoints. Determines which cached data should be either re-fetched or removed from the cache.\r\n   * Expects the same shapes as `providesTags`.\r\n   *\r\n   * @example\r\n   *\r\n   * ```ts\r\n   * // codeblock-meta title=\"invalidatesTags example\"\r\n   * import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'\r\n   * interface Post {\r\n   *   id: number\r\n   *   name: string\r\n   * }\r\n   * type PostsResponse = Post[]\r\n   *\r\n   * const api = createApi({\r\n   *   baseQuery: fetchBaseQuery({ baseUrl: '/' }),\r\n   *   tagTypes: ['Posts'],\r\n   *   endpoints: (build) => ({\r\n   *     getPosts: build.query<PostsResponse, void>({\r\n   *       query: () => 'posts',\r\n   *       providesTags: (result) =>\r\n   *         result\r\n   *           ? [\r\n   *               ...result.map(({ id }) => ({ type: 'Posts' as const, id })),\r\n   *               { type: 'Posts', id: 'LIST' },\r\n   *             ]\r\n   *           : [{ type: 'Posts', id: 'LIST' }],\r\n   *     }),\r\n   *     addPost: build.mutation<Post, Partial<Post>>({\r\n   *       query(body) {\r\n   *         return {\r\n   *           url: `posts`,\r\n   *           method: 'POST',\r\n   *           body,\r\n   *         }\r\n   *       },\r\n   *       // highlight-start\r\n   *       invalidatesTags: [{ type: 'Posts', id: 'LIST' }],\r\n   *       // highlight-end\r\n   *     }),\r\n   *   })\r\n   * })\r\n   * ```\r\n   */\r\n  invalidatesTags?: ResultDescription<\r\n    TagTypes,\r\n    ResultType,\r\n    QueryArg,\r\n    BaseQueryError<BaseQuery>,\r\n    BaseQueryMeta<BaseQuery>\r\n  >\r\n  /**\r\n   * Not to be used. A mutation should not provide tags to the cache.\r\n   */\r\n  providesTags?: never\r\n\r\n  /**\r\n   * All of these are `undefined` at runtime, purely to be used in TypeScript declarations!\r\n   */\r\n  Types?: MutationTypes<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>\r\n}\r\n\r\nexport type MutationDefinition<\r\n  QueryArg,\r\n  BaseQuery extends BaseQueryFn,\r\n  TagTypes extends string,\r\n  ResultType,\r\n  ReducerPath extends string = string\r\n> = BaseEndpointDefinition<QueryArg, BaseQuery, ResultType> &\r\n  MutationExtraOptions<TagTypes, ResultType, QueryArg, BaseQuery, ReducerPath>\r\n\r\nexport type EndpointDefinition<\r\n  QueryArg,\r\n  BaseQuery extends BaseQueryFn,\r\n  TagTypes extends string,\r\n  ResultType,\r\n  ReducerPath extends string = string\r\n> =\r\n  | QueryDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>\r\n  | MutationDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>\r\n\r\nexport type EndpointDefinitions = Record<\r\n  string,\r\n  EndpointDefinition<any, any, any, any>\r\n>\r\n\r\nexport function isQueryDefinition(\r\n  e: EndpointDefinition<any, any, any, any>\r\n): e is QueryDefinition<any, any, any, any> {\r\n  return e.type === DefinitionType.query\r\n}\r\n\r\nexport function isMutationDefinition(\r\n  e: EndpointDefinition<any, any, any, any>\r\n): e is MutationDefinition<any, any, any, any> {\r\n  return e.type === DefinitionType.mutation\r\n}\r\n\r\nexport type EndpointBuilder<\r\n  BaseQuery extends BaseQueryFn,\r\n  TagTypes extends string,\r\n  ReducerPath extends string\r\n> = {\r\n  /**\r\n   * An endpoint definition that retrieves data, and may provide tags to the cache.\r\n   *\r\n   * @example\r\n   * ```js\r\n   * // codeblock-meta title=\"Example of all query endpoint options\"\r\n   * const api = createApi({\r\n   *  baseQuery,\r\n   *  endpoints: (build) => ({\r\n   *    getPost: build.query({\r\n   *      query: (id) => ({ url: `post/${id}` }),\r\n   *      // Pick out data and prevent nested properties in a hook or selector\r\n   *      transformResponse: (response) => response.data,\r\n   *      // Pick out error and prevent nested properties in a hook or selector\r\n   *      transformErrorResponse: (response) => response.error,\r\n   *      // `result` is the server response\r\n   *      providesTags: (result, error, id) => [{ type: 'Post', id }],\r\n   *      // trigger side effects or optimistic updates\r\n   *      onQueryStarted(id, { dispatch, getState, extra, requestId, queryFulfilled, getCacheEntry, updateCachedData }) {},\r\n   *      // handle subscriptions etc\r\n   *      onCacheEntryAdded(id, { dispatch, getState, extra, requestId, cacheEntryRemoved, cacheDataLoaded, getCacheEntry, updateCachedData }) {},\r\n   *    }),\r\n   *  }),\r\n   *});\r\n   *```\r\n   */\r\n  query<ResultType, QueryArg>(\r\n    definition: OmitFromUnion<\r\n      QueryDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>,\r\n      'type'\r\n    >\r\n  ): QueryDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>\r\n  /**\r\n   * An endpoint definition that alters data on the server or will possibly invalidate the cache.\r\n   *\r\n   * @example\r\n   * ```js\r\n   * // codeblock-meta title=\"Example of all mutation endpoint options\"\r\n   * const api = createApi({\r\n   *   baseQuery,\r\n   *   endpoints: (build) => ({\r\n   *     updatePost: build.mutation({\r\n   *       query: ({ id, ...patch }) => ({ url: `post/${id}`, method: 'PATCH', body: patch }),\r\n   *       // Pick out data and prevent nested properties in a hook or selector\r\n   *       transformResponse: (response) => response.data,\r\n   *       // Pick out error and prevent nested properties in a hook or selector\r\n   *       transformErrorResponse: (response) => response.error,\r\n   *       // `result` is the server response\r\n   *       invalidatesTags: (result, error, id) => [{ type: 'Post', id }],\r\n   *      // trigger side effects or optimistic updates\r\n   *      onQueryStarted(id, { dispatch, getState, extra, requestId, queryFulfilled, getCacheEntry }) {},\r\n   *      // handle subscriptions etc\r\n   *      onCacheEntryAdded(id, { dispatch, getState, extra, requestId, cacheEntryRemoved, cacheDataLoaded, getCacheEntry }) {},\r\n   *     }),\r\n   *   }),\r\n   * });\r\n   * ```\r\n   */\r\n  mutation<ResultType, QueryArg>(\r\n    definition: OmitFromUnion<\r\n      MutationDefinition<\r\n        QueryArg,\r\n        BaseQuery,\r\n        TagTypes,\r\n        ResultType,\r\n        ReducerPath\r\n      >,\r\n      'type'\r\n    >\r\n  ): MutationDefinition<QueryArg, BaseQuery, TagTypes, ResultType, ReducerPath>\r\n}\r\n\r\nexport type AssertTagTypes = <T extends FullTagDescription<string>>(t: T) => T\r\n\r\nexport function calculateProvidedBy<ResultType, QueryArg, ErrorType, MetaType>(\r\n  description:\r\n    | ResultDescription<string, ResultType, QueryArg, ErrorType, MetaType>\r\n    | undefined,\r\n  result: ResultType | undefined,\r\n  error: ErrorType | undefined,\r\n  queryArg: QueryArg,\r\n  meta: MetaType | undefined,\r\n  assertTagTypes: AssertTagTypes\r\n): readonly FullTagDescription<string>[] {\r\n  if (isFunction(description)) {\r\n    return description(\r\n      result as ResultType,\r\n      error as undefined,\r\n      queryArg,\r\n      meta as MetaType\r\n    )\r\n      .map(expandTagDescription)\r\n      .map(assertTagTypes)\r\n  }\r\n  if (Array.isArray(description)) {\r\n    return description.map(expandTagDescription).map(assertTagTypes)\r\n  }\r\n  return []\r\n}\r\n\r\nfunction isFunction<T>(t: T): t is Extract<T, Function> {\r\n  return typeof t === 'function'\r\n}\r\n\r\nexport function expandTagDescription(\r\n  description: TagDescription<string>\r\n): FullTagDescription<string> {\r\n  return typeof description === 'string' ? { type: description } : description\r\n}\r\n\r\nexport type QueryArgFrom<D extends BaseEndpointDefinition<any, any, any>> =\r\n  D extends BaseEndpointDefinition<infer QA, any, any> ? QA : unknown\r\nexport type ResultTypeFrom<D extends BaseEndpointDefinition<any, any, any>> =\r\n  D extends BaseEndpointDefinition<any, any, infer RT> ? RT : unknown\r\n\r\nexport type ReducerPathFrom<\r\n  D extends EndpointDefinition<any, any, any, any, any>\r\n> = D extends EndpointDefinition<any, any, any, any, infer RP> ? RP : unknown\r\n\r\nexport type TagTypesFrom<D extends EndpointDefinition<any, any, any, any>> =\r\n  D extends EndpointDefinition<any, any, infer RP, any> ? RP : unknown\r\n\r\nexport type ReplaceTagTypes<\r\n  Definitions extends EndpointDefinitions,\r\n  NewTagTypes extends string\r\n> = {\r\n  [K in keyof Definitions]: Definitions[K] extends QueryDefinition<\r\n    infer QueryArg,\r\n    infer BaseQuery,\r\n    any,\r\n    infer ResultType,\r\n    infer ReducerPath\r\n  >\r\n    ? QueryDefinition<QueryArg, BaseQuery, NewTagTypes, ResultType, ReducerPath>\r\n    : Definitions[K] extends MutationDefinition<\r\n        infer QueryArg,\r\n        infer BaseQuery,\r\n        any,\r\n        infer ResultType,\r\n        infer ReducerPath\r\n      >\r\n    ? MutationDefinition<\r\n        QueryArg,\r\n        BaseQuery,\r\n        NewTagTypes,\r\n        ResultType,\r\n        ReducerPath\r\n      >\r\n    : never\r\n}\r\n", "export function capitalize(str: string) {\r\n  return str.replace(str[0], str[0].toUpperCase())\r\n}\r\n", "export type Id<T> = { [K in keyof T]: T[K] } & {}\r\nexport type WithRequiredProp<T, K extends keyof T> = Omit<T, K> &\r\n  Required<Pick<T, K>>\r\nexport type Override<T1, T2> = T2 extends any ? Omit<T1, keyof T2> & T2 : never\r\nexport function assertCast<T>(v: any): asserts v is T {}\r\n\r\nexport function safeAssign<T extends object>(\r\n  target: T,\r\n  ...args: Array<Partial<NoInfer<T>>>\r\n) {\r\n  Object.assign(target, ...args)\r\n}\r\n\r\n/**\r\n * Convert a Union type `(A|B)` to an intersection type `(A&B)`\r\n */\r\nexport type UnionToIntersection<U> = (\r\n  U extends any ? (k: U) => void : never\r\n) extends (k: infer I) => void\r\n  ? I\r\n  : never\r\n\r\nexport type NonOptionalKeys<T> = {\r\n  [K in keyof T]-?: undefined extends T[K] ? never : K\r\n}[keyof T]\r\n\r\nexport type HasRequiredProps<T, True, False> = NonOptionalKeys<T> extends never\r\n  ? False\r\n  : True\r\n\r\nexport type OptionalIfAllPropsOptional<T> = HasRequiredProps<T, T, T | never>\r\n\r\nexport type NoInfer<T> = [T][T extends any ? 0 : never]\r\n\r\nexport type UnwrapPromise<T> = T extends PromiseLike<infer V> ? V : T\r\n\r\nexport type MaybePromise<T> = T | PromiseLike<T>\r\n\r\nexport type OmitFromUnion<T, K extends keyof T> = T extends any\r\n  ? Omit<T, K>\r\n  : never\r\n\r\nexport type IsAny<T, True, False = never> = true | false extends (\r\n  T extends never ? true : false\r\n)\r\n  ? True\r\n  : False\r\n\r\nexport type CastAny<T, CastTo> = IsAny<T, CastTo, T>\r\n", "import type { MutationHooks, QueryHooks } from './buildHooks'\r\nimport { buildHooks } from './buildHooks'\r\nimport { isQueryDefinition, isMutationDefinition } from '../endpointDefinitions'\r\nimport type {\r\n  EndpointDefinitions,\r\n  QueryDefinition,\r\n  MutationDefinition,\r\n  QueryArgFrom,\r\n} from '@reduxjs/toolkit/dist/query/endpointDefinitions'\r\nimport type { Api, Module } from '../apiTypes'\r\nimport { capitalize } from '../utils'\r\nimport { safeAssign } from '../tsHelpers'\r\nimport type { BaseQueryFn } from '@reduxjs/toolkit/dist/query/baseQueryTypes'\r\n\r\nimport type { HooksWithUniqueNames } from './namedHooks'\r\n\r\nimport {\r\n  useDispatch as rrUseDispatch,\r\n  useSelector as rrUseSelector,\r\n  useStore as rrUseStore,\r\n  batch as rrBatch,\r\n} from 'react-redux'\r\nimport type { QueryKeys } from '../core/apiState'\r\nimport type { PrefetchOptions } from '../core/module'\r\n\r\nexport const reactHooksModuleName = /* @__PURE__ */ Symbol()\r\nexport type ReactHooksModule = typeof reactHooksModuleName\r\n\r\ndeclare module '@reduxjs/toolkit/dist/query/apiTypes' {\r\n  export interface ApiModules<\r\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n    BaseQuery extends BaseQueryFn,\r\n    Definitions extends EndpointDefinitions,\r\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n    ReducerPath extends string,\r\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n    TagTypes extends string\r\n  > {\r\n    [reactHooksModuleName]: {\r\n      /**\r\n       *  Endpoints based on the input endpoints provided to `createApi`, containing `select`, `hooks` and `action matchers`.\r\n       */\r\n      endpoints: {\r\n        [K in keyof Definitions]: Definitions[K] extends QueryDefinition<\r\n          any,\r\n          any,\r\n          any,\r\n          any,\r\n          any\r\n        >\r\n          ? QueryHooks<Definitions[K]>\r\n          : Definitions[K] extends MutationDefinition<any, any, any, any, any>\r\n          ? MutationHooks<Definitions[K]>\r\n          : never\r\n      }\r\n      /**\r\n       * A hook that accepts a string endpoint name, and provides a callback that when called, pre-fetches the data for that endpoint.\r\n       */\r\n      usePrefetch<EndpointName extends QueryKeys<Definitions>>(\r\n        endpointName: EndpointName,\r\n        options?: PrefetchOptions\r\n      ): (\r\n        arg: QueryArgFrom<Definitions[EndpointName]>,\r\n        options?: PrefetchOptions\r\n      ) => void\r\n    } & HooksWithUniqueNames<Definitions>\r\n  }\r\n}\r\n\r\ntype RR = typeof import('react-redux')\r\n\r\nexport interface ReactHooksModuleOptions {\r\n  /**\r\n   * The version of the `batchedUpdates` function to be used\r\n   */\r\n  batch?: RR['batch']\r\n  /**\r\n   * The version of the `useDispatch` hook to be used\r\n   */\r\n  useDispatch?: RR['useDispatch']\r\n  /**\r\n   * The version of the `useSelector` hook to be used\r\n   */\r\n  useSelector?: RR['useSelector']\r\n  /**\r\n   * The version of the `useStore` hook to be used\r\n   */\r\n  useStore?: RR['useStore']\r\n  /**\r\n   * Enables performing asynchronous tasks immediately within a render.\r\n   *\r\n   * @example\r\n   *\r\n   * ```ts\r\n   * import {\r\n   *   buildCreateApi,\r\n   *   coreModule,\r\n   *   reactHooksModule\r\n   * } from '@reduxjs/toolkit/query/react'\r\n   *\r\n   * const createApi = buildCreateApi(\r\n   *   coreModule(),\r\n   *   reactHooksModule({ unstable__sideEffectsInRender: true })\r\n   * )\r\n   * ```\r\n   */\r\n  unstable__sideEffectsInRender?: boolean\r\n}\r\n\r\n/**\r\n * Creates a module that generates react hooks from endpoints, for use with `buildCreateApi`.\r\n *\r\n *  @example\r\n * ```ts\r\n * const MyContext = React.createContext<ReactReduxContextValue>(null as any);\r\n * const customCreateApi = buildCreateApi(\r\n *   coreModule(),\r\n *   reactHooksModule({ useDispatch: createDispatchHook(MyContext) })\r\n * );\r\n * ```\r\n *\r\n * @returns A module for use with `buildCreateApi`\r\n */\r\nexport const reactHooksModule = ({\r\n  batch = rrBatch,\r\n  useDispatch = rrUseDispatch,\r\n  useSelector = rrUseSelector,\r\n  useStore = rrUseStore,\r\n  unstable__sideEffectsInRender = false,\r\n}: ReactHooksModuleOptions = {}): Module<ReactHooksModule> => ({\r\n  name: reactHooksModuleName,\r\n  init(api, { serializeQueryArgs }, context) {\r\n    const anyApi = api as any as Api<\r\n      any,\r\n      Record<string, any>,\r\n      string,\r\n      string,\r\n      ReactHooksModule\r\n    >\r\n    const { buildQueryHooks, buildMutationHook, usePrefetch } = buildHooks({\r\n      api,\r\n      moduleOptions: {\r\n        batch,\r\n        useDispatch,\r\n        useSelector,\r\n        useStore,\r\n        unstable__sideEffectsInRender,\r\n      },\r\n      serializeQueryArgs,\r\n      context,\r\n    })\r\n    safeAssign(anyApi, { usePrefetch })\r\n    safeAssign(context, { batch })\r\n\r\n    return {\r\n      injectEndpoint(endpointName, definition) {\r\n        if (isQueryDefinition(definition)) {\r\n          const {\r\n            useQuery,\r\n            useLazyQuery,\r\n            useLazyQuerySubscription,\r\n            useQueryState,\r\n            useQuerySubscription,\r\n          } = buildQueryHooks(endpointName)\r\n          safeAssign(anyApi.endpoints[endpointName], {\r\n            useQuery,\r\n            useLazyQuery,\r\n            useLazyQuerySubscription,\r\n            useQueryState,\r\n            useQuerySubscription,\r\n          })\r\n          ;(api as any)[`use${capitalize(endpointName)}Query`] = useQuery\r\n          ;(api as any)[`useLazy${capitalize(endpointName)}Query`] =\r\n            useLazyQuery\r\n        } else if (isMutationDefinition(definition)) {\r\n          const useMutation = buildMutationHook(endpointName)\r\n          safeAssign(anyApi.endpoints[endpointName], {\r\n            useMutation,\r\n          })\r\n          ;(api as any)[`use${capitalize(endpointName)}Mutation`] = useMutation\r\n        }\r\n      },\r\n    }\r\n  },\r\n})\r\n", "import { configureStore } from '@reduxjs/toolkit'\r\nimport { Context, useEffect } from 'react'\r\nimport React from 'react'\r\nimport type { ReactReduxContextValue } from 'react-redux'\r\nimport { Provider } from 'react-redux'\r\nimport { setupListeners } from '@reduxjs/toolkit/query'\r\nimport type { Api } from '@reduxjs/toolkit/dist/query/apiTypes'\r\n\r\n/**\r\n * Can be used as a `Provider` if you **do not already have a Redux store**.\r\n *\r\n * @example\r\n * ```tsx\r\n * // codeblock-meta title=\"Basic usage - wrap your App with ApiProvider\"\r\n * import * as React from 'react';\r\n * import { ApiProvider } from '@reduxjs/toolkit/query/react';\r\n * import { Pokemon } from './features/Pokemon';\r\n *\r\n * function App() {\r\n *   return (\r\n *     <ApiProvider api={api}>\r\n *       <Pokemon />\r\n *     </ApiProvider>\r\n *   );\r\n * }\r\n * ```\r\n *\r\n * @remarks\r\n * Using this together with an existing redux store, both will\r\n * conflict with each other - please use the traditional redux setup\r\n * in that case.\r\n */\r\nexport function ApiProvider<A extends Api<any, {}, any, any>>(props: {\r\n  children: any\r\n  api: A\r\n  setupListeners?: Parameters<typeof setupListeners>[1] | false\r\n  context?: Context<ReactReduxContextValue>\r\n}) {\r\n  const [store] = React.useState(() =>\r\n    configureStore({\r\n      reducer: {\r\n        [props.api.reducerPath]: props.api.reducer,\r\n      },\r\n      middleware: (gDM) => gDM().concat(props.api.middleware),\r\n    })\r\n  )\r\n  // Adds the event listeners for online/offline/focus/etc\r\n  useEffect(\r\n    (): undefined | (() => void) =>\r\n      props.setupListeners === false\r\n        ? undefined\r\n        : setupListeners(store.dispatch, props.setupListeners),\r\n    [props.setupListeners]\r\n  )\r\n\r\n  return (\r\n    <Provider store={store} context={props.context}>\r\n      {props.children}\r\n    </Provider>\r\n  )\r\n}\r\n", "var __spreadArray = (this && this.__spreadArray) || function (to, from) {\r\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\r\n        to[j] = from[i];\r\n    return to;\r\n};\r\nvar __create = Object.create;\r\nvar __defProp = Object.defineProperty;\r\nvar __defProps = Object.defineProperties;\r\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\r\nvar __getOwnPropDescs = Object.getOwnPropertyDescriptors;\r\nvar __getOwnPropNames = Object.getOwnPropertyNames;\r\nvar __getOwnPropSymbols = Object.getOwnPropertySymbols;\r\nvar __getProtoOf = Object.getPrototypeOf;\r\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\r\nvar __propIsEnum = Object.prototype.propertyIsEnumerable;\r\nvar __defNormalProp = function (obj, key, value) { return key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value: value }) : obj[key] = value; };\r\nvar __spreadValues = function (a, b) {\r\n    for (var prop in b || (b = {}))\r\n        if (__hasOwnProp.call(b, prop))\r\n            __defNormalProp(a, prop, b[prop]);\r\n    if (__getOwnPropSymbols)\r\n        for (var _i = 0, _c = __getOwnPropSymbols(b); _i < _c.length; _i++) {\r\n            var prop = _c[_i];\r\n            if (__propIsEnum.call(b, prop))\r\n                __defNormalProp(a, prop, b[prop]);\r\n        }\r\n    return a;\r\n};\r\nvar __spreadProps = function (a, b) { return __defProps(a, __getOwnPropDescs(b)); };\r\nvar __markAsModule = function (target) { return __defProp(target, \"__esModule\", { value: true }); };\r\nvar __export = function (target, all) {\r\n    for (var name in all)\r\n        __defProp(target, name, { get: all[name], enumerable: true });\r\n};\r\nvar __reExport = function (target, module2, desc) {\r\n    if (module2 && typeof module2 === \"object\" || typeof module2 === \"function\") {\r\n        var _loop_1 = function (key) {\r\n            if (!__hasOwnProp.call(target, key) && key !== \"default\")\r\n                __defProp(target, key, { get: function () { return module2[key]; }, enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });\r\n        };\r\n        for (var _i = 0, _c = __getOwnPropNames(module2); _i < _c.length; _i++) {\r\n            var key = _c[_i];\r\n            _loop_1(key);\r\n        }\r\n    }\r\n    return target;\r\n};\r\nvar __toModule = function (module2) {\r\n    return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, \"default\", module2 && module2.__esModule && \"default\" in module2 ? { get: function () { return module2.default; }, enumerable: true } : { value: module2, enumerable: true })), module2);\r\n};\r\n// src/query/react/index.ts\r\n__markAsModule(exports);\r\n__export(exports, {\r\n    ApiProvider: function () { return ApiProvider; },\r\n    createApi: function () { return createApi; },\r\n    reactHooksModule: function () { return reactHooksModule; }\r\n});\r\nvar import_query3 = __toModule(require(\"@reduxjs/toolkit/query\"));\r\n// src/query/react/buildHooks.ts\r\nvar import_toolkit2 = __toModule(require(\"@reduxjs/toolkit\"));\r\nvar import_react3 = __toModule(require(\"react\"));\r\nvar import_query = __toModule(require(\"@reduxjs/toolkit/query\"));\r\nvar import_react_redux2 = __toModule(require(\"react-redux\"));\r\n// src/query/react/useSerializedStableValue.ts\r\nvar import_react = __toModule(require(\"react\"));\r\nfunction useStableQueryArgs(queryArgs, serialize, endpointDefinition, endpointName) {\r\n    var incoming = (0, import_react.useMemo)(function () { return ({\r\n        queryArgs: queryArgs,\r\n        serialized: typeof queryArgs == \"object\" ? serialize({ queryArgs: queryArgs, endpointDefinition: endpointDefinition, endpointName: endpointName }) : queryArgs\r\n    }); }, [queryArgs, serialize, endpointDefinition, endpointName]);\r\n    var cache = (0, import_react.useRef)(incoming);\r\n    (0, import_react.useEffect)(function () {\r\n        if (cache.current.serialized !== incoming.serialized) {\r\n            cache.current = incoming;\r\n        }\r\n    }, [incoming]);\r\n    return cache.current.serialized === incoming.serialized ? cache.current.queryArgs : queryArgs;\r\n}\r\n// src/query/react/constants.ts\r\nvar UNINITIALIZED_VALUE = Symbol();\r\n// src/query/react/useShallowStableValue.ts\r\nvar import_react2 = __toModule(require(\"react\"));\r\nvar import_react_redux = __toModule(require(\"react-redux\"));\r\nfunction useShallowStableValue(value) {\r\n    var cache = (0, import_react2.useRef)(value);\r\n    (0, import_react2.useEffect)(function () {\r\n        if (!(0, import_react_redux.shallowEqual)(cache.current, value)) {\r\n            cache.current = value;\r\n        }\r\n    }, [value]);\r\n    return (0, import_react_redux.shallowEqual)(cache.current, value) ? cache.current : value;\r\n}\r\n// src/query/defaultSerializeQueryArgs.ts\r\nvar import_toolkit = __toModule(require(\"@reduxjs/toolkit\"));\r\nvar defaultSerializeQueryArgs = function (_c) {\r\n    var endpointName = _c.endpointName, queryArgs = _c.queryArgs;\r\n    return endpointName + \"(\" + JSON.stringify(queryArgs, function (key, value) { return (0, import_toolkit.isPlainObject)(value) ? Object.keys(value).sort().reduce(function (acc, key2) {\r\n        acc[key2] = value[key2];\r\n        return acc;\r\n    }, {}) : value; }) + \")\";\r\n};\r\n// src/query/react/buildHooks.ts\r\nvar useIsomorphicLayoutEffect = typeof window !== \"undefined\" && !!window.document && !!window.document.createElement ? import_react3.useLayoutEffect : import_react3.useEffect;\r\nvar defaultMutationStateSelector = function (x) { return x; };\r\nvar noPendingQueryStateSelector = function (selected) {\r\n    if (selected.isUninitialized) {\r\n        return __spreadProps(__spreadValues({}, selected), {\r\n            isUninitialized: false,\r\n            isFetching: true,\r\n            isLoading: selected.data !== void 0 ? false : true,\r\n            status: import_query.QueryStatus.pending\r\n        });\r\n    }\r\n    return selected;\r\n};\r\nfunction buildHooks(_c) {\r\n    var api = _c.api, _d = _c.moduleOptions, batch = _d.batch, useDispatch = _d.useDispatch, useSelector = _d.useSelector, useStore = _d.useStore, unstable__sideEffectsInRender = _d.unstable__sideEffectsInRender, serializeQueryArgs = _c.serializeQueryArgs, context = _c.context;\r\n    var usePossiblyImmediateEffect = unstable__sideEffectsInRender ? function (cb) { return cb(); } : import_react3.useEffect;\r\n    return { buildQueryHooks: buildQueryHooks, buildMutationHook: buildMutationHook, usePrefetch: usePrefetch };\r\n    function queryStatePreSelector(currentState, lastResult, queryArgs) {\r\n        if ((lastResult == null ? void 0 : lastResult.endpointName) && currentState.isUninitialized) {\r\n            var endpointName = lastResult.endpointName;\r\n            var endpointDefinition = context.endpointDefinitions[endpointName];\r\n            if (serializeQueryArgs({\r\n                queryArgs: lastResult.originalArgs,\r\n                endpointDefinition: endpointDefinition,\r\n                endpointName: endpointName\r\n            }) === serializeQueryArgs({\r\n                queryArgs: queryArgs,\r\n                endpointDefinition: endpointDefinition,\r\n                endpointName: endpointName\r\n            }))\r\n                lastResult = void 0;\r\n        }\r\n        if (queryArgs === import_query.skipToken) {\r\n            lastResult = void 0;\r\n        }\r\n        var data = currentState.isSuccess ? currentState.data : lastResult == null ? void 0 : lastResult.data;\r\n        if (data === void 0)\r\n            data = currentState.data;\r\n        var hasData = data !== void 0;\r\n        var isFetching = currentState.isLoading;\r\n        var isLoading = !hasData && isFetching;\r\n        var isSuccess = currentState.isSuccess || isFetching && hasData;\r\n        return __spreadProps(__spreadValues({}, currentState), {\r\n            data: data,\r\n            currentData: currentState.data,\r\n            isFetching: isFetching,\r\n            isLoading: isLoading,\r\n            isSuccess: isSuccess\r\n        });\r\n    }\r\n    function usePrefetch(endpointName, defaultOptions) {\r\n        var dispatch = useDispatch();\r\n        var stableDefaultOptions = useShallowStableValue(defaultOptions);\r\n        return (0, import_react3.useCallback)(function (arg, options) { return dispatch(api.util.prefetch(endpointName, arg, __spreadValues(__spreadValues({}, stableDefaultOptions), options))); }, [endpointName, dispatch, stableDefaultOptions]);\r\n    }\r\n    function buildQueryHooks(name) {\r\n        var useQuerySubscription = function (arg, _c) {\r\n            var _d = _c === void 0 ? {} : _c, refetchOnReconnect = _d.refetchOnReconnect, refetchOnFocus = _d.refetchOnFocus, refetchOnMountOrArgChange = _d.refetchOnMountOrArgChange, _e = _d.skip, skip = _e === void 0 ? false : _e, _f = _d.pollingInterval, pollingInterval = _f === void 0 ? 0 : _f;\r\n            var initiate = api.endpoints[name].initiate;\r\n            var dispatch = useDispatch();\r\n            var stableArg = useStableQueryArgs(skip ? import_query.skipToken : arg, defaultSerializeQueryArgs, context.endpointDefinitions[name], name);\r\n            var stableSubscriptionOptions = useShallowStableValue({\r\n                refetchOnReconnect: refetchOnReconnect,\r\n                refetchOnFocus: refetchOnFocus,\r\n                pollingInterval: pollingInterval\r\n            });\r\n            var lastRenderHadSubscription = (0, import_react3.useRef)(false);\r\n            var promiseRef = (0, import_react3.useRef)();\r\n            var _g = promiseRef.current || {}, queryCacheKey = _g.queryCacheKey, requestId = _g.requestId;\r\n            var currentRenderHasSubscription = false;\r\n            if (queryCacheKey && requestId) {\r\n                var returnedValue = dispatch(api.internalActions.internal_probeSubscription({\r\n                    queryCacheKey: queryCacheKey,\r\n                    requestId: requestId\r\n                }));\r\n                if (true) {\r\n                    if (typeof returnedValue !== \"boolean\") {\r\n                        throw new Error(\"Warning: Middleware for RTK-Query API at reducerPath \\\"\" + api.reducerPath + \"\\\" has not been added to the store.\\n    You must add the middleware for RTK-Query to function correctly!\");\r\n                    }\r\n                }\r\n                currentRenderHasSubscription = !!returnedValue;\r\n            }\r\n            var subscriptionRemoved = !currentRenderHasSubscription && lastRenderHadSubscription.current;\r\n            usePossiblyImmediateEffect(function () {\r\n                lastRenderHadSubscription.current = currentRenderHasSubscription;\r\n            });\r\n            usePossiblyImmediateEffect(function () {\r\n                promiseRef.current = void 0;\r\n            }, [subscriptionRemoved]);\r\n            usePossiblyImmediateEffect(function () {\r\n                var _a;\r\n                var lastPromise = promiseRef.current;\r\n                if (typeof process !== \"undefined\" && false) {\r\n                    console.log(subscriptionRemoved);\r\n                }\r\n                if (stableArg === import_query.skipToken) {\r\n                    lastPromise == null ? void 0 : lastPromise.unsubscribe();\r\n                    promiseRef.current = void 0;\r\n                    return;\r\n                }\r\n                var lastSubscriptionOptions = (_a = promiseRef.current) == null ? void 0 : _a.subscriptionOptions;\r\n                if (!lastPromise || lastPromise.arg !== stableArg) {\r\n                    lastPromise == null ? void 0 : lastPromise.unsubscribe();\r\n                    var promise = dispatch(initiate(stableArg, {\r\n                        subscriptionOptions: stableSubscriptionOptions,\r\n                        forceRefetch: refetchOnMountOrArgChange\r\n                    }));\r\n                    promiseRef.current = promise;\r\n                }\r\n                else if (stableSubscriptionOptions !== lastSubscriptionOptions) {\r\n                    lastPromise.updateSubscriptionOptions(stableSubscriptionOptions);\r\n                }\r\n            }, [\r\n                dispatch,\r\n                initiate,\r\n                refetchOnMountOrArgChange,\r\n                stableArg,\r\n                stableSubscriptionOptions,\r\n                subscriptionRemoved\r\n            ]);\r\n            (0, import_react3.useEffect)(function () {\r\n                return function () {\r\n                    var _a;\r\n                    (_a = promiseRef.current) == null ? void 0 : _a.unsubscribe();\r\n                    promiseRef.current = void 0;\r\n                };\r\n            }, []);\r\n            return (0, import_react3.useMemo)(function () { return ({\r\n                refetch: function () {\r\n                    var _a;\r\n                    if (!promiseRef.current)\r\n                        throw new Error(\"Cannot refetch a query that has not been started yet.\");\r\n                    return (_a = promiseRef.current) == null ? void 0 : _a.refetch();\r\n                }\r\n            }); }, []);\r\n        };\r\n        var useLazyQuerySubscription = function (_c) {\r\n            var _d = _c === void 0 ? {} : _c, refetchOnReconnect = _d.refetchOnReconnect, refetchOnFocus = _d.refetchOnFocus, _e = _d.pollingInterval, pollingInterval = _e === void 0 ? 0 : _e;\r\n            var initiate = api.endpoints[name].initiate;\r\n            var dispatch = useDispatch();\r\n            var _f = (0, import_react3.useState)(UNINITIALIZED_VALUE), arg = _f[0], setArg = _f[1];\r\n            var promiseRef = (0, import_react3.useRef)();\r\n            var stableSubscriptionOptions = useShallowStableValue({\r\n                refetchOnReconnect: refetchOnReconnect,\r\n                refetchOnFocus: refetchOnFocus,\r\n                pollingInterval: pollingInterval\r\n            });\r\n            usePossiblyImmediateEffect(function () {\r\n                var _a, _b;\r\n                var lastSubscriptionOptions = (_a = promiseRef.current) == null ? void 0 : _a.subscriptionOptions;\r\n                if (stableSubscriptionOptions !== lastSubscriptionOptions) {\r\n                    (_b = promiseRef.current) == null ? void 0 : _b.updateSubscriptionOptions(stableSubscriptionOptions);\r\n                }\r\n            }, [stableSubscriptionOptions]);\r\n            var subscriptionOptionsRef = (0, import_react3.useRef)(stableSubscriptionOptions);\r\n            usePossiblyImmediateEffect(function () {\r\n                subscriptionOptionsRef.current = stableSubscriptionOptions;\r\n            }, [stableSubscriptionOptions]);\r\n            var trigger = (0, import_react3.useCallback)(function (arg2, preferCacheValue) {\r\n                if (preferCacheValue === void 0) { preferCacheValue = false; }\r\n                var promise;\r\n                batch(function () {\r\n                    var _a;\r\n                    (_a = promiseRef.current) == null ? void 0 : _a.unsubscribe();\r\n                    promiseRef.current = promise = dispatch(initiate(arg2, {\r\n                        subscriptionOptions: subscriptionOptionsRef.current,\r\n                        forceRefetch: !preferCacheValue\r\n                    }));\r\n                    setArg(arg2);\r\n                });\r\n                return promise;\r\n            }, [dispatch, initiate]);\r\n            (0, import_react3.useEffect)(function () {\r\n                return function () {\r\n                    var _a;\r\n                    (_a = promiseRef == null ? void 0 : promiseRef.current) == null ? void 0 : _a.unsubscribe();\r\n                };\r\n            }, []);\r\n            (0, import_react3.useEffect)(function () {\r\n                if (arg !== UNINITIALIZED_VALUE && !promiseRef.current) {\r\n                    trigger(arg, true);\r\n                }\r\n            }, [arg, trigger]);\r\n            return (0, import_react3.useMemo)(function () { return [trigger, arg]; }, [trigger, arg]);\r\n        };\r\n        var useQueryState = function (arg, _c) {\r\n            var _d = _c === void 0 ? {} : _c, _e = _d.skip, skip = _e === void 0 ? false : _e, selectFromResult = _d.selectFromResult;\r\n            var select = api.endpoints[name].select;\r\n            var stableArg = useStableQueryArgs(skip ? import_query.skipToken : arg, serializeQueryArgs, context.endpointDefinitions[name], name);\r\n            var lastValue = (0, import_react3.useRef)();\r\n            var selectDefaultResult = (0, import_react3.useMemo)(function () { return (0, import_toolkit2.createSelector)([\r\n                select(stableArg),\r\n                function (_, lastResult) { return lastResult; },\r\n                function (_) { return stableArg; }\r\n            ], queryStatePreSelector); }, [select, stableArg]);\r\n            var querySelector = (0, import_react3.useMemo)(function () { return selectFromResult ? (0, import_toolkit2.createSelector)([selectDefaultResult], selectFromResult) : selectDefaultResult; }, [selectDefaultResult, selectFromResult]);\r\n            var currentState = useSelector(function (state) { return querySelector(state, lastValue.current); }, import_react_redux2.shallowEqual);\r\n            var store = useStore();\r\n            var newLastValue = selectDefaultResult(store.getState(), lastValue.current);\r\n            useIsomorphicLayoutEffect(function () {\r\n                lastValue.current = newLastValue;\r\n            }, [newLastValue]);\r\n            return currentState;\r\n        };\r\n        return {\r\n            useQueryState: useQueryState,\r\n            useQuerySubscription: useQuerySubscription,\r\n            useLazyQuerySubscription: useLazyQuerySubscription,\r\n            useLazyQuery: function (options) {\r\n                var _c = useLazyQuerySubscription(options), trigger = _c[0], arg = _c[1];\r\n                var queryStateResults = useQueryState(arg, __spreadProps(__spreadValues({}, options), {\r\n                    skip: arg === UNINITIALIZED_VALUE\r\n                }));\r\n                var info = (0, import_react3.useMemo)(function () { return ({ lastArg: arg }); }, [arg]);\r\n                return (0, import_react3.useMemo)(function () { return [trigger, queryStateResults, info]; }, [trigger, queryStateResults, info]);\r\n            },\r\n            useQuery: function (arg, options) {\r\n                var querySubscriptionResults = useQuerySubscription(arg, options);\r\n                var queryStateResults = useQueryState(arg, __spreadValues({\r\n                    selectFromResult: arg === import_query.skipToken || (options == null ? void 0 : options.skip) ? void 0 : noPendingQueryStateSelector\r\n                }, options));\r\n                var data = queryStateResults.data, status = queryStateResults.status, isLoading = queryStateResults.isLoading, isSuccess = queryStateResults.isSuccess, isError = queryStateResults.isError, error = queryStateResults.error;\r\n                (0, import_react3.useDebugValue)({ data: data, status: status, isLoading: isLoading, isSuccess: isSuccess, isError: isError, error: error });\r\n                return (0, import_react3.useMemo)(function () { return __spreadValues(__spreadValues({}, queryStateResults), querySubscriptionResults); }, [queryStateResults, querySubscriptionResults]);\r\n            }\r\n        };\r\n    }\r\n    function buildMutationHook(name) {\r\n        return function (_c) {\r\n            var _d = _c === void 0 ? {} : _c, _e = _d.selectFromResult, selectFromResult = _e === void 0 ? defaultMutationStateSelector : _e, fixedCacheKey = _d.fixedCacheKey;\r\n            var _f = api.endpoints[name], select = _f.select, initiate = _f.initiate;\r\n            var dispatch = useDispatch();\r\n            var _g = (0, import_react3.useState)(), promise = _g[0], setPromise = _g[1];\r\n            (0, import_react3.useEffect)(function () { return function () {\r\n                if (!(promise == null ? void 0 : promise.arg.fixedCacheKey)) {\r\n                    promise == null ? void 0 : promise.reset();\r\n                }\r\n            }; }, [promise]);\r\n            var triggerMutation = (0, import_react3.useCallback)(function (arg) {\r\n                var promise2 = dispatch(initiate(arg, { fixedCacheKey: fixedCacheKey }));\r\n                setPromise(promise2);\r\n                return promise2;\r\n            }, [dispatch, initiate, fixedCacheKey]);\r\n            var requestId = (promise || {}).requestId;\r\n            var mutationSelector = (0, import_react3.useMemo)(function () { return (0, import_toolkit2.createSelector)([select({ fixedCacheKey: fixedCacheKey, requestId: promise == null ? void 0 : promise.requestId })], selectFromResult); }, [select, promise, selectFromResult, fixedCacheKey]);\r\n            var currentState = useSelector(mutationSelector, import_react_redux2.shallowEqual);\r\n            var originalArgs = fixedCacheKey == null ? promise == null ? void 0 : promise.arg.originalArgs : void 0;\r\n            var reset = (0, import_react3.useCallback)(function () {\r\n                batch(function () {\r\n                    if (promise) {\r\n                        setPromise(void 0);\r\n                    }\r\n                    if (fixedCacheKey) {\r\n                        dispatch(api.internalActions.removeMutationResult({\r\n                            requestId: requestId,\r\n                            fixedCacheKey: fixedCacheKey\r\n                        }));\r\n                    }\r\n                });\r\n            }, [dispatch, fixedCacheKey, promise, requestId]);\r\n            var endpointName = currentState.endpointName, data = currentState.data, status = currentState.status, isLoading = currentState.isLoading, isSuccess = currentState.isSuccess, isError = currentState.isError, error = currentState.error;\r\n            (0, import_react3.useDebugValue)({\r\n                endpointName: endpointName,\r\n                data: data,\r\n                status: status,\r\n                isLoading: isLoading,\r\n                isSuccess: isSuccess,\r\n                isError: isError,\r\n                error: error\r\n            });\r\n            var finalState = (0, import_react3.useMemo)(function () { return __spreadProps(__spreadValues({}, currentState), { originalArgs: originalArgs, reset: reset }); }, [currentState, originalArgs, reset]);\r\n            return (0, import_react3.useMemo)(function () { return [triggerMutation, finalState]; }, [triggerMutation, finalState]);\r\n        };\r\n    }\r\n}\r\n// src/query/endpointDefinitions.ts\r\nvar DefinitionType;\r\n(function (DefinitionType2) {\r\n    DefinitionType2[\"query\"] = \"query\";\r\n    DefinitionType2[\"mutation\"] = \"mutation\";\r\n})(DefinitionType || (DefinitionType = {}));\r\nfunction isQueryDefinition(e) {\r\n    return e.type === DefinitionType.query;\r\n}\r\nfunction isMutationDefinition(e) {\r\n    return e.type === DefinitionType.mutation;\r\n}\r\n// src/query/utils/capitalize.ts\r\nfunction capitalize(str) {\r\n    return str.replace(str[0], str[0].toUpperCase());\r\n}\r\n// src/query/tsHelpers.ts\r\nfunction safeAssign(target) {\r\n    var args = [];\r\n    for (var _i = 1; _i < arguments.length; _i++) {\r\n        args[_i - 1] = arguments[_i];\r\n    }\r\n    Object.assign.apply(Object, __spreadArray([target], args));\r\n}\r\n// src/query/react/module.ts\r\nvar import_react_redux3 = __toModule(require(\"react-redux\"));\r\nvar reactHooksModuleName = /* @__PURE__ */ Symbol();\r\nvar reactHooksModule = function (_c) {\r\n    var _d = _c === void 0 ? {} : _c, _e = _d.batch, batch = _e === void 0 ? import_react_redux3.batch : _e, _f = _d.useDispatch, useDispatch = _f === void 0 ? import_react_redux3.useDispatch : _f, _g = _d.useSelector, useSelector = _g === void 0 ? import_react_redux3.useSelector : _g, _h = _d.useStore, useStore = _h === void 0 ? import_react_redux3.useStore : _h, _j = _d.unstable__sideEffectsInRender, unstable__sideEffectsInRender = _j === void 0 ? false : _j;\r\n    return ({\r\n        name: reactHooksModuleName,\r\n        init: function (api, _c, context) {\r\n            var serializeQueryArgs = _c.serializeQueryArgs;\r\n            var anyApi = api;\r\n            var _d = buildHooks({\r\n                api: api,\r\n                moduleOptions: {\r\n                    batch: batch,\r\n                    useDispatch: useDispatch,\r\n                    useSelector: useSelector,\r\n                    useStore: useStore,\r\n                    unstable__sideEffectsInRender: unstable__sideEffectsInRender\r\n                },\r\n                serializeQueryArgs: serializeQueryArgs,\r\n                context: context\r\n            }), buildQueryHooks = _d.buildQueryHooks, buildMutationHook = _d.buildMutationHook, usePrefetch = _d.usePrefetch;\r\n            safeAssign(anyApi, { usePrefetch: usePrefetch });\r\n            safeAssign(context, { batch: batch });\r\n            return {\r\n                injectEndpoint: function (endpointName, definition) {\r\n                    if (isQueryDefinition(definition)) {\r\n                        var _c = buildQueryHooks(endpointName), useQuery = _c.useQuery, useLazyQuery = _c.useLazyQuery, useLazyQuerySubscription = _c.useLazyQuerySubscription, useQueryState = _c.useQueryState, useQuerySubscription = _c.useQuerySubscription;\r\n                        safeAssign(anyApi.endpoints[endpointName], {\r\n                            useQuery: useQuery,\r\n                            useLazyQuery: useLazyQuery,\r\n                            useLazyQuerySubscription: useLazyQuerySubscription,\r\n                            useQueryState: useQueryState,\r\n                            useQuerySubscription: useQuerySubscription\r\n                        });\r\n                        api[\"use\" + capitalize(endpointName) + \"Query\"] = useQuery;\r\n                        api[\"useLazy\" + capitalize(endpointName) + \"Query\"] = useLazyQuery;\r\n                    }\r\n                    else if (isMutationDefinition(definition)) {\r\n                        var useMutation = buildMutationHook(endpointName);\r\n                        safeAssign(anyApi.endpoints[endpointName], {\r\n                            useMutation: useMutation\r\n                        });\r\n                        api[\"use\" + capitalize(endpointName) + \"Mutation\"] = useMutation;\r\n                    }\r\n                }\r\n            };\r\n        }\r\n    });\r\n};\r\n// src/query/react/index.ts\r\n__reExport(exports, __toModule(require(\"@reduxjs/toolkit/query\")));\r\n// src/query/react/ApiProvider.tsx\r\nvar import_toolkit3 = __toModule(require(\"@reduxjs/toolkit\"));\r\nvar import_react4 = __toModule(require(\"react\"));\r\nvar import_react5 = __toModule(require(\"react\"));\r\nvar import_react_redux4 = __toModule(require(\"react-redux\"));\r\nvar import_query2 = __toModule(require(\"@reduxjs/toolkit/query\"));\r\nfunction ApiProvider(props) {\r\n    var store = import_react5.default.useState(function () {\r\n        var _c;\r\n        return (0, import_toolkit3.configureStore)({\r\n            reducer: (_c = {},\r\n                _c[props.api.reducerPath] = props.api.reducer,\r\n                _c),\r\n            middleware: function (gDM) { return gDM().concat(props.api.middleware); }\r\n        });\r\n    })[0];\r\n    (0, import_react4.useEffect)(function () { return props.setupListeners === false ? void 0 : (0, import_query2.setupListeners)(store.dispatch, props.setupListeners); }, [props.setupListeners]);\r\n    return /* @__PURE__ */ import_react5.default.createElement(import_react_redux4.Provider, {\r\n        store: store,\r\n        context: props.context\r\n    }, props.children);\r\n}\r\n// src/query/react/index.ts\r\nvar createApi = /* @__PURE__ */ (0, import_query3.buildCreateApi)((0, import_query3.coreModule)(), reactHooksModule());\r\n//# sourceMappingURL=rtk-query-react.cjs.development.js.map", "'use strict'\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./rtk-query-react.cjs.production.min.js')\n} else {\n  module.exports = require('./rtk-query-react.cjs.development.js')\n}", "'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n", "'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher) || [];\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n", "'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n", "'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n", "'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), ':list='].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), ':list=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator' ?\n\t\t\t\t'[]=' :\n\t\t\t\t'=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tcase 'bracket-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[\\])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null ?\n\t\t\t\t\t[] :\n\t\t\t\t\tvalue.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], arrayValue);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n", "'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i]\n  revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n  var len = b64.length\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=')\n  if (validLen === -1) validLen = len\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4)\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp\n  var lens = getLens(b64)\n  var validLen = lens[0]\n  var placeHoldersLen = lens[1]\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n  var curByte = 0\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen\n\n  var i\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)]\n    arr[curByte++] = (tmp >> 16) & 0xFF\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4)\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2)\n    arr[curByte++] = (tmp >> 8) & 0xFF\n    arr[curByte++] = tmp & 0xFF\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp\n  var output = []\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF)\n    output.push(tripletToBase64(tmp))\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp\n  var len = uint8.length\n  var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n  var parts = []\n  var maxChunkLength = 16383 // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    )\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    )\n  }\n\n  return parts.join('')\n}\n", "/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var nBits = -7\n  var i = isLE ? (nBytes - 1) : 0\n  var d = isLE ? -1 : 1\n  var s = buffer[offset + i]\n\n  i += d\n\n  e = s & ((1 << (-nBits)) - 1)\n  s >>= (-nBits)\n  nBits += eLen\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1)\n  e >>= (-nBits)\n  nBits += mLen\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen)\n    e = e - eBias\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c\n  var eLen = (nBytes * 8) - mLen - 1\n  var eMax = (1 << eLen) - 1\n  var eBias = eMax >> 1\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n  var i = isLE ? 0 : (nBytes - 1)\n  var d = isLE ? 1 : -1\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n  value = Math.abs(value)\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0\n    e = eMax\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2)\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--\n      c *= 2\n    }\n    if (e + eBias >= 1) {\n      value += rt / c\n    } else {\n      value += rt * Math.pow(2, 1 - eBias)\n    }\n    if (value * c >= 2) {\n      e++\n      c /= 2\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0\n      e = eMax\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen)\n      e = e + eBias\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n      e = 0\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m\n  eLen += mLen\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128\n}\n", "/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n  (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n    ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n    : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n *   === true    Use Uint8Array implementation (fastest)\n *   === false   Print warning and recommend using `buffer` v4.x which has an Object\n *               implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n    typeof console.error === 'function') {\n  console.error(\n    'This browser lacks typed array (Uint8Array) support which is required by ' +\n    '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n  )\n}\n\nfunction typedArraySupport () {\n  // Can typed array instances can be augmented?\n  try {\n    var arr = new Uint8Array(1)\n    var proto = { foo: function () { return 42 } }\n    Object.setPrototypeOf(proto, Uint8Array.prototype)\n    Object.setPrototypeOf(arr, proto)\n    return arr.foo() === 42\n  } catch (e) {\n    return false\n  }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n  enumerable: true,\n  get: function () {\n    if (!Buffer.isBuffer(this)) return undefined\n    return this.buffer\n  }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n  enumerable: true,\n  get: function () {\n    if (!Buffer.isBuffer(this)) return undefined\n    return this.byteOffset\n  }\n})\n\nfunction createBuffer (length) {\n  if (length > K_MAX_LENGTH) {\n    throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n  }\n  // Return an augmented `Uint8Array` instance\n  var buf = new Uint8Array(length)\n  Object.setPrototypeOf(buf, Buffer.prototype)\n  return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n  // Common case.\n  if (typeof arg === 'number') {\n    if (typeof encodingOrOffset === 'string') {\n      throw new TypeError(\n        'The \"string\" argument must be of type string. Received type number'\n      )\n    }\n    return allocUnsafe(arg)\n  }\n  return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n  if (typeof value === 'string') {\n    return fromString(value, encodingOrOffset)\n  }\n\n  if (ArrayBuffer.isView(value)) {\n    return fromArrayView(value)\n  }\n\n  if (value == null) {\n    throw new TypeError(\n      'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n      'or Array-like Object. Received type ' + (typeof value)\n    )\n  }\n\n  if (isInstance(value, ArrayBuffer) ||\n      (value && isInstance(value.buffer, ArrayBuffer))) {\n    return fromArrayBuffer(value, encodingOrOffset, length)\n  }\n\n  if (typeof SharedArrayBuffer !== 'undefined' &&\n      (isInstance(value, SharedArrayBuffer) ||\n      (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n    return fromArrayBuffer(value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'number') {\n    throw new TypeError(\n      'The \"value\" argument must not be of type number. Received type number'\n    )\n  }\n\n  var valueOf = value.valueOf && value.valueOf()\n  if (valueOf != null && valueOf !== value) {\n    return Buffer.from(valueOf, encodingOrOffset, length)\n  }\n\n  var b = fromObject(value)\n  if (b) return b\n\n  if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n      typeof value[Symbol.toPrimitive] === 'function') {\n    return Buffer.from(\n      value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n    )\n  }\n\n  throw new TypeError(\n    'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n    'or Array-like Object. Received type ' + (typeof value)\n  )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n  return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('\"size\" argument must be of type number')\n  } else if (size < 0) {\n    throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n  }\n}\n\nfunction alloc (size, fill, encoding) {\n  assertSize(size)\n  if (size <= 0) {\n    return createBuffer(size)\n  }\n  if (fill !== undefined) {\n    // Only pay attention to encoding if it's a string. This\n    // prevents accidentally sending in a number that would\n    // be interpreted as a start offset.\n    return typeof encoding === 'string'\n      ? createBuffer(size).fill(fill, encoding)\n      : createBuffer(size).fill(fill)\n  }\n  return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n  return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n  assertSize(size)\n  return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n  return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n  return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('Unknown encoding: ' + encoding)\n  }\n\n  var length = byteLength(string, encoding) | 0\n  var buf = createBuffer(length)\n\n  var actual = buf.write(string, encoding)\n\n  if (actual !== length) {\n    // Writing a hex string, for example, that contains invalid characters will\n    // cause everything after the first invalid character to be ignored. (e.g.\n    // 'abxxcd' will be treated as 'ab')\n    buf = buf.slice(0, actual)\n  }\n\n  return buf\n}\n\nfunction fromArrayLike (array) {\n  var length = array.length < 0 ? 0 : checked(array.length) | 0\n  var buf = createBuffer(length)\n  for (var i = 0; i < length; i += 1) {\n    buf[i] = array[i] & 255\n  }\n  return buf\n}\n\nfunction fromArrayView (arrayView) {\n  if (isInstance(arrayView, Uint8Array)) {\n    var copy = new Uint8Array(arrayView)\n    return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n  }\n  return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n  if (byteOffset < 0 || array.byteLength < byteOffset) {\n    throw new RangeError('\"offset\" is outside of buffer bounds')\n  }\n\n  if (array.byteLength < byteOffset + (length || 0)) {\n    throw new RangeError('\"length\" is outside of buffer bounds')\n  }\n\n  var buf\n  if (byteOffset === undefined && length === undefined) {\n    buf = new Uint8Array(array)\n  } else if (length === undefined) {\n    buf = new Uint8Array(array, byteOffset)\n  } else {\n    buf = new Uint8Array(array, byteOffset, length)\n  }\n\n  // Return an augmented `Uint8Array` instance\n  Object.setPrototypeOf(buf, Buffer.prototype)\n\n  return buf\n}\n\nfunction fromObject (obj) {\n  if (Buffer.isBuffer(obj)) {\n    var len = checked(obj.length) | 0\n    var buf = createBuffer(len)\n\n    if (buf.length === 0) {\n      return buf\n    }\n\n    obj.copy(buf, 0, 0, len)\n    return buf\n  }\n\n  if (obj.length !== undefined) {\n    if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n      return createBuffer(0)\n    }\n    return fromArrayLike(obj)\n  }\n\n  if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n    return fromArrayLike(obj.data)\n  }\n}\n\nfunction checked (length) {\n  // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n  // length is NaN (which is otherwise coerced to zero.)\n  if (length >= K_MAX_LENGTH) {\n    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n                         'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n  }\n  return length | 0\n}\n\nfunction SlowBuffer (length) {\n  if (+length != length) { // eslint-disable-line eqeqeq\n    length = 0\n  }\n  return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n  return b != null && b._isBuffer === true &&\n    b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n  if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n  if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n    throw new TypeError(\n      'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n    )\n  }\n\n  if (a === b) return 0\n\n  var x = a.length\n  var y = b.length\n\n  for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n    if (a[i] !== b[i]) {\n      x = a[i]\n      y = b[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n  switch (String(encoding).toLowerCase()) {\n    case 'hex':\n    case 'utf8':\n    case 'utf-8':\n    case 'ascii':\n    case 'latin1':\n    case 'binary':\n    case 'base64':\n    case 'ucs2':\n    case 'ucs-2':\n    case 'utf16le':\n    case 'utf-16le':\n      return true\n    default:\n      return false\n  }\n}\n\nBuffer.concat = function concat (list, length) {\n  if (!Array.isArray(list)) {\n    throw new TypeError('\"list\" argument must be an Array of Buffers')\n  }\n\n  if (list.length === 0) {\n    return Buffer.alloc(0)\n  }\n\n  var i\n  if (length === undefined) {\n    length = 0\n    for (i = 0; i < list.length; ++i) {\n      length += list[i].length\n    }\n  }\n\n  var buffer = Buffer.allocUnsafe(length)\n  var pos = 0\n  for (i = 0; i < list.length; ++i) {\n    var buf = list[i]\n    if (isInstance(buf, Uint8Array)) {\n      if (pos + buf.length > buffer.length) {\n        Buffer.from(buf).copy(buffer, pos)\n      } else {\n        Uint8Array.prototype.set.call(\n          buffer,\n          buf,\n          pos\n        )\n      }\n    } else if (!Buffer.isBuffer(buf)) {\n      throw new TypeError('\"list\" argument must be an Array of Buffers')\n    } else {\n      buf.copy(buffer, pos)\n    }\n    pos += buf.length\n  }\n  return buffer\n}\n\nfunction byteLength (string, encoding) {\n  if (Buffer.isBuffer(string)) {\n    return string.length\n  }\n  if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n    return string.byteLength\n  }\n  if (typeof string !== 'string') {\n    throw new TypeError(\n      'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n      'Received type ' + typeof string\n    )\n  }\n\n  var len = string.length\n  var mustMatch = (arguments.length > 2 && arguments[2] === true)\n  if (!mustMatch && len === 0) return 0\n\n  // Use a for loop to avoid recursion\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return len\n      case 'utf8':\n      case 'utf-8':\n        return utf8ToBytes(string).length\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return len * 2\n      case 'hex':\n        return len >>> 1\n      case 'base64':\n        return base64ToBytes(string).length\n      default:\n        if (loweredCase) {\n          return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n        }\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n  var loweredCase = false\n\n  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n  // property of a typed array.\n\n  // This behaves neither like String nor Uint8Array in that we set start/end\n  // to their upper/lower bounds if the value passed is out of range.\n  // undefined is handled specially as per ECMA-262 6th Edition,\n  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n  if (start === undefined || start < 0) {\n    start = 0\n  }\n  // Return early if start > this.length. Done here to prevent potential uint32\n  // coercion fail below.\n  if (start > this.length) {\n    return ''\n  }\n\n  if (end === undefined || end > this.length) {\n    end = this.length\n  }\n\n  if (end <= 0) {\n    return ''\n  }\n\n  // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n  end >>>= 0\n  start >>>= 0\n\n  if (end <= start) {\n    return ''\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  while (true) {\n    switch (encoding) {\n      case 'hex':\n        return hexSlice(this, start, end)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Slice(this, start, end)\n\n      case 'ascii':\n        return asciiSlice(this, start, end)\n\n      case 'latin1':\n      case 'binary':\n        return latin1Slice(this, start, end)\n\n      case 'base64':\n        return base64Slice(this, start, end)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return utf16leSlice(this, start, end)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = (encoding + '').toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n  var i = b[n]\n  b[n] = b[m]\n  b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n  var len = this.length\n  if (len % 2 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 16-bits')\n  }\n  for (var i = 0; i < len; i += 2) {\n    swap(this, i, i + 1)\n  }\n  return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n  var len = this.length\n  if (len % 4 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 32-bits')\n  }\n  for (var i = 0; i < len; i += 4) {\n    swap(this, i, i + 3)\n    swap(this, i + 1, i + 2)\n  }\n  return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n  var len = this.length\n  if (len % 8 !== 0) {\n    throw new RangeError('Buffer size must be a multiple of 64-bits')\n  }\n  for (var i = 0; i < len; i += 8) {\n    swap(this, i, i + 7)\n    swap(this, i + 1, i + 6)\n    swap(this, i + 2, i + 5)\n    swap(this, i + 3, i + 4)\n  }\n  return this\n}\n\nBuffer.prototype.toString = function toString () {\n  var length = this.length\n  if (length === 0) return ''\n  if (arguments.length === 0) return utf8Slice(this, 0, length)\n  return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n  if (this === b) return true\n  return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n  var str = ''\n  var max = exports.INSPECT_MAX_BYTES\n  str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n  if (this.length > max) str += ' ... '\n  return '<Buffer ' + str + '>'\n}\nif (customInspectSymbol) {\n  Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n  if (isInstance(target, Uint8Array)) {\n    target = Buffer.from(target, target.offset, target.byteLength)\n  }\n  if (!Buffer.isBuffer(target)) {\n    throw new TypeError(\n      'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n      'Received type ' + (typeof target)\n    )\n  }\n\n  if (start === undefined) {\n    start = 0\n  }\n  if (end === undefined) {\n    end = target ? target.length : 0\n  }\n  if (thisStart === undefined) {\n    thisStart = 0\n  }\n  if (thisEnd === undefined) {\n    thisEnd = this.length\n  }\n\n  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n    throw new RangeError('out of range index')\n  }\n\n  if (thisStart >= thisEnd && start >= end) {\n    return 0\n  }\n  if (thisStart >= thisEnd) {\n    return -1\n  }\n  if (start >= end) {\n    return 1\n  }\n\n  start >>>= 0\n  end >>>= 0\n  thisStart >>>= 0\n  thisEnd >>>= 0\n\n  if (this === target) return 0\n\n  var x = thisEnd - thisStart\n  var y = end - start\n  var len = Math.min(x, y)\n\n  var thisCopy = this.slice(thisStart, thisEnd)\n  var targetCopy = target.slice(start, end)\n\n  for (var i = 0; i < len; ++i) {\n    if (thisCopy[i] !== targetCopy[i]) {\n      x = thisCopy[i]\n      y = targetCopy[i]\n      break\n    }\n  }\n\n  if (x < y) return -1\n  if (y < x) return 1\n  return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n  // Empty buffer means no match\n  if (buffer.length === 0) return -1\n\n  // Normalize byteOffset\n  if (typeof byteOffset === 'string') {\n    encoding = byteOffset\n    byteOffset = 0\n  } else if (byteOffset > 0x7fffffff) {\n    byteOffset = 0x7fffffff\n  } else if (byteOffset < -0x80000000) {\n    byteOffset = -0x80000000\n  }\n  byteOffset = +byteOffset // Coerce to Number.\n  if (numberIsNaN(byteOffset)) {\n    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n    byteOffset = dir ? 0 : (buffer.length - 1)\n  }\n\n  // Normalize byteOffset: negative offsets start from the end of the buffer\n  if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n  if (byteOffset >= buffer.length) {\n    if (dir) return -1\n    else byteOffset = buffer.length - 1\n  } else if (byteOffset < 0) {\n    if (dir) byteOffset = 0\n    else return -1\n  }\n\n  // Normalize val\n  if (typeof val === 'string') {\n    val = Buffer.from(val, encoding)\n  }\n\n  // Finally, search either indexOf (if dir is true) or lastIndexOf\n  if (Buffer.isBuffer(val)) {\n    // Special case: looking for empty string/buffer always fails\n    if (val.length === 0) {\n      return -1\n    }\n    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n  } else if (typeof val === 'number') {\n    val = val & 0xFF // Search for a byte value [0-255]\n    if (typeof Uint8Array.prototype.indexOf === 'function') {\n      if (dir) {\n        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n      } else {\n        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n      }\n    }\n    return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n  }\n\n  throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n  var indexSize = 1\n  var arrLength = arr.length\n  var valLength = val.length\n\n  if (encoding !== undefined) {\n    encoding = String(encoding).toLowerCase()\n    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n        encoding === 'utf16le' || encoding === 'utf-16le') {\n      if (arr.length < 2 || val.length < 2) {\n        return -1\n      }\n      indexSize = 2\n      arrLength /= 2\n      valLength /= 2\n      byteOffset /= 2\n    }\n  }\n\n  function read (buf, i) {\n    if (indexSize === 1) {\n      return buf[i]\n    } else {\n      return buf.readUInt16BE(i * indexSize)\n    }\n  }\n\n  var i\n  if (dir) {\n    var foundIndex = -1\n    for (i = byteOffset; i < arrLength; i++) {\n      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n        if (foundIndex === -1) foundIndex = i\n        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n      } else {\n        if (foundIndex !== -1) i -= i - foundIndex\n        foundIndex = -1\n      }\n    }\n  } else {\n    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n    for (i = byteOffset; i >= 0; i--) {\n      var found = true\n      for (var j = 0; j < valLength; j++) {\n        if (read(arr, i + j) !== read(val, j)) {\n          found = false\n          break\n        }\n      }\n      if (found) return i\n    }\n  }\n\n  return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n  return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n  offset = Number(offset) || 0\n  var remaining = buf.length - offset\n  if (!length) {\n    length = remaining\n  } else {\n    length = Number(length)\n    if (length > remaining) {\n      length = remaining\n    }\n  }\n\n  var strLen = string.length\n\n  if (length > strLen / 2) {\n    length = strLen / 2\n  }\n  for (var i = 0; i < length; ++i) {\n    var parsed = parseInt(string.substr(i * 2, 2), 16)\n    if (numberIsNaN(parsed)) return i\n    buf[offset + i] = parsed\n  }\n  return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n  return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n  return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n  // Buffer#write(string)\n  if (offset === undefined) {\n    encoding = 'utf8'\n    length = this.length\n    offset = 0\n  // Buffer#write(string, encoding)\n  } else if (length === undefined && typeof offset === 'string') {\n    encoding = offset\n    length = this.length\n    offset = 0\n  // Buffer#write(string, offset[, length][, encoding])\n  } else if (isFinite(offset)) {\n    offset = offset >>> 0\n    if (isFinite(length)) {\n      length = length >>> 0\n      if (encoding === undefined) encoding = 'utf8'\n    } else {\n      encoding = length\n      length = undefined\n    }\n  } else {\n    throw new Error(\n      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n    )\n  }\n\n  var remaining = this.length - offset\n  if (length === undefined || length > remaining) length = remaining\n\n  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n    throw new RangeError('Attempt to write outside buffer bounds')\n  }\n\n  if (!encoding) encoding = 'utf8'\n\n  var loweredCase = false\n  for (;;) {\n    switch (encoding) {\n      case 'hex':\n        return hexWrite(this, string, offset, length)\n\n      case 'utf8':\n      case 'utf-8':\n        return utf8Write(this, string, offset, length)\n\n      case 'ascii':\n      case 'latin1':\n      case 'binary':\n        return asciiWrite(this, string, offset, length)\n\n      case 'base64':\n        // Warning: maxLength not taken into account in base64Write\n        return base64Write(this, string, offset, length)\n\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return ucs2Write(this, string, offset, length)\n\n      default:\n        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n        encoding = ('' + encoding).toLowerCase()\n        loweredCase = true\n    }\n  }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n  return {\n    type: 'Buffer',\n    data: Array.prototype.slice.call(this._arr || this, 0)\n  }\n}\n\nfunction base64Slice (buf, start, end) {\n  if (start === 0 && end === buf.length) {\n    return base64.fromByteArray(buf)\n  } else {\n    return base64.fromByteArray(buf.slice(start, end))\n  }\n}\n\nfunction utf8Slice (buf, start, end) {\n  end = Math.min(buf.length, end)\n  var res = []\n\n  var i = start\n  while (i < end) {\n    var firstByte = buf[i]\n    var codePoint = null\n    var bytesPerSequence = (firstByte > 0xEF)\n      ? 4\n      : (firstByte > 0xDF)\n          ? 3\n          : (firstByte > 0xBF)\n              ? 2\n              : 1\n\n    if (i + bytesPerSequence <= end) {\n      var secondByte, thirdByte, fourthByte, tempCodePoint\n\n      switch (bytesPerSequence) {\n        case 1:\n          if (firstByte < 0x80) {\n            codePoint = firstByte\n          }\n          break\n        case 2:\n          secondByte = buf[i + 1]\n          if ((secondByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n            if (tempCodePoint > 0x7F) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 3:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n              codePoint = tempCodePoint\n            }\n          }\n          break\n        case 4:\n          secondByte = buf[i + 1]\n          thirdByte = buf[i + 2]\n          fourthByte = buf[i + 3]\n          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n              codePoint = tempCodePoint\n            }\n          }\n      }\n    }\n\n    if (codePoint === null) {\n      // we did not generate a valid codePoint so insert a\n      // replacement char (U+FFFD) and advance only 1 byte\n      codePoint = 0xFFFD\n      bytesPerSequence = 1\n    } else if (codePoint > 0xFFFF) {\n      // encode to utf16 (surrogate pair dance)\n      codePoint -= 0x10000\n      res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n      codePoint = 0xDC00 | codePoint & 0x3FF\n    }\n\n    res.push(codePoint)\n    i += bytesPerSequence\n  }\n\n  return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n  var len = codePoints.length\n  if (len <= MAX_ARGUMENTS_LENGTH) {\n    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n  }\n\n  // Decode in chunks to avoid \"call stack size exceeded\".\n  var res = ''\n  var i = 0\n  while (i < len) {\n    res += String.fromCharCode.apply(\n      String,\n      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n    )\n  }\n  return res\n}\n\nfunction asciiSlice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i] & 0x7F)\n  }\n  return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n  var ret = ''\n  end = Math.min(buf.length, end)\n\n  for (var i = start; i < end; ++i) {\n    ret += String.fromCharCode(buf[i])\n  }\n  return ret\n}\n\nfunction hexSlice (buf, start, end) {\n  var len = buf.length\n\n  if (!start || start < 0) start = 0\n  if (!end || end < 0 || end > len) end = len\n\n  var out = ''\n  for (var i = start; i < end; ++i) {\n    out += hexSliceLookupTable[buf[i]]\n  }\n  return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n  var bytes = buf.slice(start, end)\n  var res = ''\n  // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n  for (var i = 0; i < bytes.length - 1; i += 2) {\n    res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n  }\n  return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n  var len = this.length\n  start = ~~start\n  end = end === undefined ? len : ~~end\n\n  if (start < 0) {\n    start += len\n    if (start < 0) start = 0\n  } else if (start > len) {\n    start = len\n  }\n\n  if (end < 0) {\n    end += len\n    if (end < 0) end = 0\n  } else if (end > len) {\n    end = len\n  }\n\n  if (end < start) end = start\n\n  var newBuf = this.subarray(start, end)\n  // Return an augmented `Uint8Array` instance\n  Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n  return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    checkOffset(offset, byteLength, this.length)\n  }\n\n  var val = this[offset + --byteLength]\n  var mul = 1\n  while (byteLength > 0 && (mul *= 0x100)) {\n    val += this[offset + --byteLength] * mul\n  }\n\n  return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return ((this[offset]) |\n      (this[offset + 1] << 8) |\n      (this[offset + 2] << 16)) +\n      (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] * 0x1000000) +\n    ((this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var val = this[offset]\n  var mul = 1\n  var i = 0\n  while (++i < byteLength && (mul *= 0x100)) {\n    val += this[offset + i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n  var i = byteLength\n  var mul = 1\n  var val = this[offset + --i]\n  while (i > 0 && (mul *= 0x100)) {\n    val += this[offset + --i] * mul\n  }\n  mul *= 0x80\n\n  if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n  return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 1, this.length)\n  if (!(this[offset] & 0x80)) return (this[offset])\n  return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset] | (this[offset + 1] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 2, this.length)\n  var val = this[offset + 1] | (this[offset] << 8)\n  return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset]) |\n    (this[offset + 1] << 8) |\n    (this[offset + 2] << 16) |\n    (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n\n  return (this[offset] << 24) |\n    (this[offset + 1] << 16) |\n    (this[offset + 2] << 8) |\n    (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 4, this.length)\n  return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n  offset = offset >>> 0\n  if (!noAssert) checkOffset(offset, 8, this.length)\n  return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var mul = 1\n  var i = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  byteLength = byteLength >>> 0\n  if (!noAssert) {\n    var maxBytes = Math.pow(2, 8 * byteLength) - 1\n    checkInt(this, value, offset, byteLength, maxBytes, 0)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    this[offset + i] = (value / mul) & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n  this[offset] = (value >>> 8)\n  this[offset + 1] = (value & 0xff)\n  return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  this[offset + 3] = (value >>> 24)\n  this[offset + 2] = (value >>> 16)\n  this[offset + 1] = (value >>> 8)\n  this[offset] = (value & 0xff)\n  return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n  this[offset] = (value >>> 24)\n  this[offset + 1] = (value >>> 16)\n  this[offset + 2] = (value >>> 8)\n  this[offset + 3] = (value & 0xff)\n  return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    var limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = 0\n  var mul = 1\n  var sub = 0\n  this[offset] = value & 0xFF\n  while (++i < byteLength && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    var limit = Math.pow(2, (8 * byteLength) - 1)\n\n    checkInt(this, value, offset, byteLength, limit - 1, -limit)\n  }\n\n  var i = byteLength - 1\n  var mul = 1\n  var sub = 0\n  this[offset + i] = value & 0xFF\n  while (--i >= 0 && (mul *= 0x100)) {\n    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n      sub = 1\n    }\n    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n  }\n\n  return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n  if (value < 0) value = 0xff + value + 1\n  this[offset] = (value & 0xff)\n  return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n  this[offset] = (value >>> 8)\n  this[offset + 1] = (value & 0xff)\n  return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  this[offset] = (value & 0xff)\n  this[offset + 1] = (value >>> 8)\n  this[offset + 2] = (value >>> 16)\n  this[offset + 3] = (value >>> 24)\n  return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n  if (value < 0) value = 0xffffffff + value + 1\n  this[offset] = (value >>> 24)\n  this[offset + 1] = (value >>> 16)\n  this[offset + 2] = (value >>> 8)\n  this[offset + 3] = (value & 0xff)\n  return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n  if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 23, 4)\n  return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n  return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n  value = +value\n  offset = offset >>> 0\n  if (!noAssert) {\n    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n  }\n  ieee754.write(buf, value, offset, littleEndian, 52, 8)\n  return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n  return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n  if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n  if (!start) start = 0\n  if (!end && end !== 0) end = this.length\n  if (targetStart >= target.length) targetStart = target.length\n  if (!targetStart) targetStart = 0\n  if (end > 0 && end < start) end = start\n\n  // Copy 0 bytes; we're done\n  if (end === start) return 0\n  if (target.length === 0 || this.length === 0) return 0\n\n  // Fatal error conditions\n  if (targetStart < 0) {\n    throw new RangeError('targetStart out of bounds')\n  }\n  if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n  // Are we oob?\n  if (end > this.length) end = this.length\n  if (target.length - targetStart < end - start) {\n    end = target.length - targetStart + start\n  }\n\n  var len = end - start\n\n  if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n    // Use built-in when available, missing from IE11\n    this.copyWithin(targetStart, start, end)\n  } else {\n    Uint8Array.prototype.set.call(\n      target,\n      this.subarray(start, end),\n      targetStart\n    )\n  }\n\n  return len\n}\n\n// Usage:\n//    buffer.fill(number[, offset[, end]])\n//    buffer.fill(buffer[, offset[, end]])\n//    buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n  // Handle string cases:\n  if (typeof val === 'string') {\n    if (typeof start === 'string') {\n      encoding = start\n      start = 0\n      end = this.length\n    } else if (typeof end === 'string') {\n      encoding = end\n      end = this.length\n    }\n    if (encoding !== undefined && typeof encoding !== 'string') {\n      throw new TypeError('encoding must be a string')\n    }\n    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n      throw new TypeError('Unknown encoding: ' + encoding)\n    }\n    if (val.length === 1) {\n      var code = val.charCodeAt(0)\n      if ((encoding === 'utf8' && code < 128) ||\n          encoding === 'latin1') {\n        // Fast path: If `val` fits into a single byte, use that numeric value.\n        val = code\n      }\n    }\n  } else if (typeof val === 'number') {\n    val = val & 255\n  } else if (typeof val === 'boolean') {\n    val = Number(val)\n  }\n\n  // Invalid ranges are not set to a default, so can range check early.\n  if (start < 0 || this.length < start || this.length < end) {\n    throw new RangeError('Out of range index')\n  }\n\n  if (end <= start) {\n    return this\n  }\n\n  start = start >>> 0\n  end = end === undefined ? this.length : end >>> 0\n\n  if (!val) val = 0\n\n  var i\n  if (typeof val === 'number') {\n    for (i = start; i < end; ++i) {\n      this[i] = val\n    }\n  } else {\n    var bytes = Buffer.isBuffer(val)\n      ? val\n      : Buffer.from(val, encoding)\n    var len = bytes.length\n    if (len === 0) {\n      throw new TypeError('The value \"' + val +\n        '\" is invalid for argument \"value\"')\n    }\n    for (i = 0; i < end - start; ++i) {\n      this[i + start] = bytes[i % len]\n    }\n  }\n\n  return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n  // Node takes equal signs as end of the Base64 encoding\n  str = str.split('=')[0]\n  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n  str = str.trim().replace(INVALID_BASE64_RE, '')\n  // Node converts strings with length < 2 to ''\n  if (str.length < 2) return ''\n  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n  while (str.length % 4 !== 0) {\n    str = str + '='\n  }\n  return str\n}\n\nfunction utf8ToBytes (string, units) {\n  units = units || Infinity\n  var codePoint\n  var length = string.length\n  var leadSurrogate = null\n  var bytes = []\n\n  for (var i = 0; i < length; ++i) {\n    codePoint = string.charCodeAt(i)\n\n    // is surrogate component\n    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n      // last char was a lead\n      if (!leadSurrogate) {\n        // no lead yet\n        if (codePoint > 0xDBFF) {\n          // unexpected trail\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        } else if (i + 1 === length) {\n          // unpaired lead\n          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n          continue\n        }\n\n        // valid lead\n        leadSurrogate = codePoint\n\n        continue\n      }\n\n      // 2 leads in a row\n      if (codePoint < 0xDC00) {\n        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n        leadSurrogate = codePoint\n        continue\n      }\n\n      // valid surrogate pair\n      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n    } else if (leadSurrogate) {\n      // valid bmp char, but last char was a lead\n      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n    }\n\n    leadSurrogate = null\n\n    // encode utf8\n    if (codePoint < 0x80) {\n      if ((units -= 1) < 0) break\n      bytes.push(codePoint)\n    } else if (codePoint < 0x800) {\n      if ((units -= 2) < 0) break\n      bytes.push(\n        codePoint >> 0x6 | 0xC0,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x10000) {\n      if ((units -= 3) < 0) break\n      bytes.push(\n        codePoint >> 0xC | 0xE0,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else if (codePoint < 0x110000) {\n      if ((units -= 4) < 0) break\n      bytes.push(\n        codePoint >> 0x12 | 0xF0,\n        codePoint >> 0xC & 0x3F | 0x80,\n        codePoint >> 0x6 & 0x3F | 0x80,\n        codePoint & 0x3F | 0x80\n      )\n    } else {\n      throw new Error('Invalid code point')\n    }\n  }\n\n  return bytes\n}\n\nfunction asciiToBytes (str) {\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    // Node's code seems to be doing this and not & 0x7F..\n    byteArray.push(str.charCodeAt(i) & 0xFF)\n  }\n  return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n  var c, hi, lo\n  var byteArray = []\n  for (var i = 0; i < str.length; ++i) {\n    if ((units -= 2) < 0) break\n\n    c = str.charCodeAt(i)\n    hi = c >> 8\n    lo = c % 256\n    byteArray.push(lo)\n    byteArray.push(hi)\n  }\n\n  return byteArray\n}\n\nfunction base64ToBytes (str) {\n  return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n  for (var i = 0; i < length; ++i) {\n    if ((i + offset >= dst.length) || (i >= src.length)) break\n    dst[i + offset] = src[i]\n  }\n  return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n  return obj instanceof type ||\n    (obj != null && obj.constructor != null && obj.constructor.name != null &&\n      obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n  // For IE11 support\n  return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n  var alphabet = '0123456789abcdef'\n  var table = new Array(256)\n  for (var i = 0; i < 16; ++i) {\n    var i16 = i * 16\n    for (var j = 0; j < 16; ++j) {\n      table[i16 + j] = alphabet[i] + alphabet[j]\n    }\n  }\n  return table\n})()\n", "/**\n * Returns a function, that, as long as it continues to be invoked, will not\n * be triggered. The function will be called after it stops being called for\n * N milliseconds. If `immediate` is passed, trigger the function on the\n * leading edge, instead of the trailing. The function also has a property 'clear' \n * that is a function which will clear the timer to prevent previously scheduled executions. \n *\n * @source underscore.js\n * @see http://unscriptable.com/2009/03/20/debouncing-javascript-methods/\n * @param {Function} function to wrap\n * @param {Number} timeout in ms (`100`)\n * @param {Boolean} whether to execute at the beginning (`false`)\n * @api public\n */\nfunction debounce(func, wait, immediate){\n  var timeout, args, context, timestamp, result;\n  if (null == wait) wait = 100;\n\n  function later() {\n    var last = Date.now() - timestamp;\n\n    if (last < wait && last >= 0) {\n      timeout = setTimeout(later, wait - last);\n    } else {\n      timeout = null;\n      if (!immediate) {\n        result = func.apply(context, args);\n        context = args = null;\n      }\n    }\n  };\n\n  var debounced = function(){\n    context = this;\n    args = arguments;\n    timestamp = Date.now();\n    var callNow = immediate && !timeout;\n    if (!timeout) timeout = setTimeout(later, wait);\n    if (callNow) {\n      result = func.apply(context, args);\n      context = args = null;\n    }\n\n    return result;\n  };\n\n  debounced.clear = function() {\n    if (timeout) {\n      clearTimeout(timeout);\n      timeout = null;\n    }\n  };\n  \n  debounced.flush = function() {\n    if (timeout) {\n      result = func.apply(context, args);\n      context = args = null;\n      \n      clearTimeout(timeout);\n      timeout = null;\n    }\n  };\n\n  return debounced;\n};\n\n// Adds compatibility for ES modules\ndebounce.debounce = debounce;\n\nmodule.exports = debounce;\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\tvar nativeCodeString = '[native code]';\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) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\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", "!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e(require(\"react-dom\"),require(\"react\")):\"function\"==typeof define&&define.amd?define([\"react-dom\",\"react\"],e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).ElementPopper=e(t.ReactDOM,t.React)}(this,(function(t,e){\"use strict\";function r(t){return t&&\"object\"==typeof t&&\"default\"in t?t:{default:t}}var n=r(e);function o(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function i(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?o(Object(r),!0).forEach((function(e){a(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function a(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function l(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var r=null==t?null:\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(null==r)return;var n,o,i=[],a=!0,l=!1;try{for(r=r.call(t);!(a=(n=r.next()).done)&&(i.push(n.value),!e||i.length!==e);a=!0);}catch(t){l=!0,o=t}finally{try{a||null==r.return||r.return()}finally{if(l)throw o}}return i}(t,e)||function(t,e){if(!t)return;if(\"string\"==typeof t)return c(t,e);var r=Object.prototype.toString.call(t).slice(8,-1);\"Object\"===r&&t.constructor&&(r=t.constructor.name);if(\"Map\"===r||\"Set\"===r)return Array.from(t);if(\"Arguments\"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r))return c(t,e)}(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function c(t,e){(null==e||e>t.length)&&(e=t.length);for(var r=0,n=new Array(e);r<e;r++)n[r]=t[r];return n}function u(r,o){var a=r.element,l=r.popper,c=r.position,u=void 0===c?\"bottom-center\":c,s=r.containerStyle,d=r.containerClassName,p=void 0===d?\"\":d,h=r.arrow,m=r.arrowStyle,v=void 0===m?{}:m,b=r.arrowClassName,y=void 0===b?\"\":b,g=r.fixMainPosition,w=r.fixRelativePosition,O=r.offsetY,E=r.offsetX,P=r.animations,x=r.zIndex,j=void 0===x?0:x,M=r.popperShadow,T=r.onChange,S=r.active,C=void 0===S||S,N=r.portal,L=r.portalTarget,R=\"undefined\"!=typeof window,A=R&&L instanceof HTMLElement,z=!0===h,I=l&&!0===C,X=e.useRef(),D=e.useRef(),H=e.useRef(),Y=e.useRef(),k=e.useMemo((function(){return{position:u,fixMainPosition:g,fixRelativePosition:w,offsetY:O,offsetX:E,defaultArrow:z,animations:P,zIndex:j,onChange:T}}),[u,g,w,O,E,z,P,T,j]),V=e.useCallback((function(){H.current&&(H.current.style.transition=\"\"),D.current&&(D.current.parentNode.style.transition=\"\")}),[]),W={element:i({display:\"inline-block\",height:\"max-content\"},s),arrow:i({visibility:\"hidden\",left:\"0\",top:\"0\",position:\"absolute\"},v),popper:{position:\"absolute\",left:\"0\",top:\"0\",willChange:\"transform\",visibility:\"hidden\",zIndex:j}};R&&!Y.current&&(Y.current=document.createElement(\"div\"),Y.current.data={portal:N,isValidPortalTarget:A}),e.useEffect((function(){if(N&&!A){var t=Y.current;return document.body.appendChild(t),function(){return document.body.removeChild(t)}}}),[N,A]),e.useEffect((function(){if(!I)return V(),D.current.parentNode.style.visibility=\"hidden\",void(H.current&&(H.current.style.visibility=\"hidden\"));function t(t){t&&\"resize\"!==t.type&&!t.target.contains(X.current)||(t&&V(),f(X,D,H,k,t))}return t(),document.addEventListener(\"scroll\",t,!0),window.addEventListener(\"resize\",t),function(){document.removeEventListener(\"scroll\",t,!0),window.removeEventListener(\"resize\",t)}}),[I,k,V]),e.useEffect((function(){var t={portal:N,isValidPortalTarget:A},e=Y.current.data;JSON.stringify(t)!==JSON.stringify(e)&&(Y.current.data=t,X.current.refreshPosition())}),[N,A]);var q=n.default.createElement(n.default.Fragment,null,function(){if(!h||!I)return null;var t=n.default.createElement(\"div\",{ref:H,style:W.arrow}),r=e.isValidElement(h)?{children:h}:{className:\"ep-arrow \".concat(M?\"ep-shadow\":\"\",\" \").concat(y)};return e.cloneElement(t,r)}(),n.default.createElement(\"div\",{className:M?\"ep-popper-shadow\":\"\",style:W.popper},n.default.createElement(\"div\",{ref:D},l)));return n.default.createElement(\"div\",{ref:function(t){t&&(t.removeTransition=V,t.refreshPosition=function(){return setTimeout((function(){return f(X,D,H,k,{})}),10)});if(X.current=t,o instanceof Function)return o(t);o&&(o.current=t)},className:p,style:W.element},a,N&&R?t.createPortal(q,A?L:Y.current):q)}function f(t,e,r,n,o){var a=n.position,c=n.fixMainPosition,u=n.fixRelativePosition,f=n.offsetY,h=void 0===f?0:f,m=n.offsetX,v=void 0===m?0:m,b=n.defaultArrow,y=n.animations,g=void 0===y?[]:y,w=n.zIndex,O=n.onChange;if(t.current&&e.current){var E,P,x,j,M=(P=void 0!==window.pageXOffset,x=\"CSS1Compat\"===(document.compatMode||\"\"),{scrollLeft:P?window.pageXOffset:x?document.documentElement.scrollLeft:document.body.scrollLeft,scrollTop:P?window.pageYOffset:x?document.documentElement.scrollTop:document.body.scrollTop}),T=M.scrollLeft,S=M.scrollTop,C=s(t.current,T,S),N=C.top,L=C.left,R=C.height,A=C.width,z=C.right,I=C.bottom,X=s(e.current,T,S),D=X.top,H=X.left,Y=X.height,k=X.width,V=document.documentElement,W=V.clientHeight,q=V.clientWidth,F=e.current.parentNode,J=function(t){if(!t)return[0,0];var e=l((t.style.transform.match(/translate\\((.*?)px,\\s(.*?)px\\)/)||[]).map((function(t){return Number(t)})),3),r=e[1],n=void 0===r?0:r,o=e[2];return[n,void 0===o?0:o]}(F),B=l(J,2),U=B[0],$=B[1],G=function(t){var e=l(t.split(\"-\"),2),r=e[0],n=void 0===r?\"bottom\":r,o=e[1],i=void 0===o?\"center\":o;\"auto\"===n&&(n=\"bottom\");\"auto\"===i&&(i=\"center\");var a=\"top\"===n||\"bottom\"===n,c=\"left\"===n||\"right\"===n;c&&(\"start\"===i&&(i=\"top\"),\"end\"===i&&(i=\"bottom\"));a&&(\"start\"===i&&(i=\"left\"),\"end\"===i&&(i=\"right\"));return[n,i,a,c]}(a),K=l(G,4),Q=K[0],Z=K[1],_=K[2],tt=K[3],et=Q,rt=function(t,e){return\"translate(\".concat(t,\"px, \").concat(e,\"px)\")},nt=A-k,ot=R-Y,it=\"left\"===Z?0:\"right\"===Z?nt:nt/2,at=nt-it,lt=\"top\"===Z?0:\"bottom\"===Z?ot:ot/2,ct=ot-lt,ut=L-H+U,ft=N-D+$,st=0,dt=0,pt=d(t.current),ht=[],mt=r.current,vt=s(mt,T,S)||{},bt=vt.height,yt=void 0===bt?0:bt,gt=vt.width,wt=void 0===gt?0:gt,Ot=ut,Et=ft,Pt={top:\"bottom\",bottom:\"top\",left:\"right\",right:\"left\"};for(_&&(ut+=it,ft+=\"top\"===Q?-Y:R,b&&(yt=11,wt=20)),tt&&(ut+=\"left\"===Q?-k:A,ft+=lt,b&&(yt=20,wt=11));pt;)ht.push(pt),jt(s(pt,T,S)),pt=d(pt.parentNode);if(jt({top:S,bottom:S+W,left:T,right:T+q,height:W,width:q}),_&&(ft+=\"bottom\"===et?h:-h),tt&&(ut+=\"right\"===et?v:-v),ut-=st,ft-=dt,E=Pt[et],mt)_&&((j=A<k)?Ot+=A/2:Ot=ut+k/2,Ot-=wt/2,\"bottom\"===et&&(Et=ft,ft+=yt),\"top\"===et&&(Et=(ft-=yt)+Y),st<0&&st-it<0&&(j?Ot+=(it-st)/2:A-it+st<k&&(Ot+=(A-it+st-k)/2)),st>0&&st+at>0&&(j?Ot-=(st+at)/2:A-st-at<k&&(Ot-=(A-st-at-k)/2))),tt&&((j=R<Y)?Et+=R/2:Et=ft+Y/2,Et-=yt/2,\"left\"===et&&(Ot=(ut-=wt)+k),\"right\"===et&&(Ot=ut,ut+=wt),dt<0&&dt-lt<0&&(j?Et+=(lt-dt)/2:R-lt+dt<Y&&(Et+=(R-lt+dt-Y)/2)),dt>0&&dt+ct>0&&(j?Et-=(dt+ct)/2:R-dt-ct<Y&&(Et-=(R-dt-ct-Y)/2))),mt.setAttribute(\"direction\",E),mt.style.height=yt+\"px\",mt.style.width=wt+\"px\",mt.style.transform=rt(Ot,Et),mt.style.visibility=\"visible\",mt.style.zIndex=w+1;F.style.transform=rt(ut,ft);var xt={popper:{top:ft,bottom:ft+Y,left:ut,right:ut+k,height:Y,width:k},element:{top:N,bottom:I,left:L,right:z,height:R,width:A},arrow:{top:Et,bottom:Et+yt,left:Ot,right:Ot+wt,height:yt,width:wt,direction:E},position:et+\"-\"+(0!==st?\"auto\":Z),scroll:{scrollLeft:T,scrollTop:S},scrollableParents:ht,event:o};o||g.forEach((function(t){t({popper:F,arrow:mt,data:i(i({},xt),{},{getTransform:rt,mirror:Pt})})})),F.style.visibility=\"visible\",\"function\"==typeof O&&O(xt)}function jt(t){var e=t.top,r=t.bottom,n=t.left,o=t.right,i=t.height,a=t.width;if(_){var l=Math.round(N-e+R/2),f=Math.round(i/2);c||(N-(Y+h+yt)<e&&l<=f&&\"top\"===et?(ft+=Y+R,et=\"bottom\"):I+Y+h+yt>i+e&&l>=f&&\"bottom\"===et&&(ft-=Y+R,et=\"top\")),u||(L+it<n&&(st=p(z-wt>n?L+it-n:-A+it+wt,st)),z-at>o&&(st=p(L+wt<o?z-at-o:A-at-wt,st)))}if(tt){var s=Math.round(L-n+A/2),d=Math.round(a/2);c||(L-(k+v+wt)<n&&s<d&&\"left\"===et?(ut+=A+k,et=\"right\"):z+k+v+wt>o&&s>d&&\"right\"===et&&(ut-=A+k,et=\"left\")),u||(N+lt<e&&(dt=p(I-yt>e?N+lt-e:-R+lt+yt,dt)),I-ct>r&&(dt=p(N+yt<r?I-ct-r:R-ct-yt,dt)))}}}function s(t,e,r){if(t){var n=t.getBoundingClientRect(),o=n.top,i=n.left,a=n.width,l=n.height,c=o+r,u=i+e;return{top:c,bottom:c+l,left:u,right:u+a,width:a,height:l}}}function d(t){if(t&&\"HTML\"!==t.tagName){var e=window.getComputedStyle(t),r=function(t){return[\"auto\",\"scroll\"].includes(t)};return t.clientHeight<t.scrollHeight&&r(e.overflowX)||t.clientWidth<t.scrollWidth&&r(e.overflowY)?t:d(t.parentNode)}}function p(t,e){return Math.round(Math.abs(t))>Math.round(Math.abs(e))?t:e}return e.forwardRef(u)}));\n", "\"use strict\";function t(e){return(t=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(e)}function e(t){return function(t){if(Array.isArray(t))return c(t)}(t)||n(t)||h(t)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function n(t){if(\"undefined\"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t[\"@@iterator\"])return Array.from(t)}function r(t,e){var n=\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(!n){if(Array.isArray(t)||(n=h(t))||e&&t&&\"number\"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var s,a=!0,u=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){u=!0,s=t},f:function(){try{a||null==n.return||n.return()}finally{if(u)throw s}}}}function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function s(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?i(Object(n),!0).forEach((function(e){a(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):i(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}function a(t,e,n){return(e=y(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function u(t,e){return l(t)||function(t,e){var n=null==t?null:\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(null!=n){var r,i,s,a,u=[],o=!0,h=!1;try{if(s=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;o=!1}else for(;!(o=(r=s.call(n)).done)&&(u.push(r.value),u.length!==e);o=!0);}catch(t){h=!0,i=t}finally{try{if(!o&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(h)throw i}}return u}}(t,e)||h(t,e)||o()}function o(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}function h(t,e){if(t){if(\"string\"==typeof t)return c(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===n&&t.constructor&&(n=t.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(t):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(t,e):void 0}}function c(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function l(t){if(Array.isArray(t))return t}function f(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,\"value\"in r&&(r.writable=!0),Object.defineProperty(t,y(r.key),r)}}function y(e){var n=function(e,n){if(\"object\"!==t(e)||null===e)return e;var r=e[Symbol.toPrimitive];if(void 0!==r){var i=r.call(e,n||\"default\");if(\"object\"!==t(i))return i;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===n?String:Number)(e)}(e,\"string\");return\"symbol\"===t(n)?n:String(n)}function d(t,e,n){!function(t,e){if(e.has(t))throw new TypeError(\"Cannot initialize the same private elements twice on an object\")}(t,e),e.set(t,n)}function m(t,e){return function(t,e){if(e.get)return e.get.call(t);return e.value}(t,g(t,e,\"get\"))}function v(t,e,n){return function(t,e,n){if(e.set)e.set.call(t,n);else{if(!e.writable)throw new TypeError(\"attempted to set read only private field\");e.value=n}}(t,g(t,e,\"set\"),n),n}function g(t,e,n){if(!e.has(t))throw new TypeError(\"attempted to \"+n+\" private field on non-instance\");return e.get(t)}Object.defineProperty(exports,\"__esModule\",{value:!0});var k={name:\"gregorian_en\",months:[[\"January\",\"Jan\"],[\"February\",\"Feb\"],[\"March\",\"Mar\"],[\"April\",\"Apr\"],[\"May\",\"May\"],[\"June\",\"Jun\"],[\"July\",\"Jul\"],[\"August\",\"Aug\"],[\"September\",\"Sep\"],[\"October\",\"Oct\"],[\"November\",\"Nov\"],[\"December\",\"Dec\"]],weekDays:[[\"Saturday\",\"Sat\"],[\"Sunday\",\"Sun\"],[\"Monday\",\"Mon\"],[\"Tuesday\",\"Tue\"],[\"Wednesday\",\"Wed\"],[\"Thursday\",\"Thu\"],[\"Friday\",\"Fri\"]],digits:[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\",\"9\"],meridiems:[[\"AM\",\"am\"],[\"PM\",\"pm\"]]},p={name:\"gregorian\",startYear:1,yearLength:365,epoch:1721424,century:20,weekStartDayIndex:1,getMonthLengths:function(t){return[31,t?29:28,31,30,31,30,31,31,30,31,30,31]},isLeap:function(t){return t%4==0&&t%100!=0||t%400==0},getLeaps:function(t){if(0!==t){for(var e=t>0?1:-1,n=[];t>0?e<=t:t<=e;)this.isLeap(e)&&n.push(e),t>0?e++:e--;return n}},getDayOfYear:function(t){for(var e=t.year,n=t.month,r=t.day,i=this.getMonthLengths(this.isLeap(e)),s=0;s<n.index;s++)r+=i[s];return r},getAllDays:function(t){var e=t.year;return this.yearLength*(e-1)+this.leapsLength(e)+this.getDayOfYear(t)},leapsLength:function(t){return((t-1)/4|0)+(-(t-1)/100|0)+((t-1)/400|0)},guessYear:function(t,e){return~~(t/365.24)+(e>0?1:-1)}};function b(t){return t&&t.constructor===Object}function w(t){if(!isNaN(t))return parseInt(t)}function D(t){return Array.isArray(t)}function M(t,e,n){return void 0===t||t<e||t>n}var O=new WeakMap,S=new WeakMap,Y=new WeakMap,L=new WeakMap,W=new WeakMap,x=new WeakMap,j=new WeakMap,N=new WeakMap,A=new WeakMap,I=new WeakMap,T=new WeakMap,F=new WeakMap,P=new WeakMap,E=new WeakMap,H=new WeakMap,V=new WeakMap,J=new WeakMap,C=new WeakMap,_=new WeakMap,U=function(){function i(t){var e=this;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,i),d(this,O,{writable:!0,value:void 0}),d(this,S,{writable:!0,value:void 0}),d(this,Y,{writable:!0,value:void 0}),d(this,L,{writable:!0,value:void 0}),d(this,W,{writable:!0,value:void 0}),d(this,x,{writable:!0,value:void 0}),d(this,j,{writable:!0,value:void 0}),d(this,N,{writable:!0,value:void 0}),d(this,A,{writable:!0,value:k}),d(this,I,{writable:!0,value:p}),d(this,T,{writable:!0,value:!1}),d(this,F,{writable:!0,value:{}}),d(this,P,{writable:!0,value:/^\\d{4}-\\d\\d-\\d\\dT\\d\\d:\\d\\d:\\d\\d\\.\\d\\d\\dZ$/}),d(this,E,{writable:!0,value:[]}),d(this,H,{writable:!0,value:!0}),d(this,V,{writable:!0,value:function(t,n){switch(t){case\"YYYY\":return[\"year\",n];case\"YY\":return[\"year\",\"\".concat(m(e,I).century).concat(n)];case\"MMMM\":case\"MMM\":return[\"month\",e.months.findIndex((function(t){var e=t.name,r=t.shortName;return new RegExp(n,\"i\").test(e+r)}))+1];case\"MM\":case\"M\":return[\"month\",n];case\"DD\":case\"D\":return[\"day\",n];case\"HH\":case\"H\":return[\"hour\",n];case\"hh\":case\"h\":var r=w(n);return[\"hour\",r>12?r-12:r];case\"mm\":case\"m\":return[\"minute\",n];case\"ss\":case\"s\":return[\"second\",n];case\"SSS\":case\"SS\":case\"S\":return[\"millisecond\",n];default:return[]}}}),d(this,J,{writable:!0,value:function(){return 0===m(e,O)&&0!==m(e,I).startYear}}),d(this,C,{writable:!0,value:function(){if(m(e,H)&&e.isValid){var t=Math.floor,n=function(e,n){return[(s=e,(s<0?-1:1)*Math.abs(t(e/n))),(r=e,i=n,(r<0&&-0!==t(r%i)?i:0)+t(e%n))];var r,i,s},r=function(){if(m(e,S)<0||m(e,S)>11){var t=m(e,S)<0?-1:1,r=u(n(m(e,S),12),2),i=r[0],s=r[1];v(e,O,m(e,O)+i),v(e,S,s),m(e,J).call(e)&&v(e,O,t)}};for(v(e,H,!1),[[\"millisecond\",\"second\",1e3],[\"second\",\"minute\",60],[\"minute\",\"hour\",60],[\"hour\",\"day\",24]].forEach((function(t){var r=u(t,3),i=r[0],s=r[1],a=r[2];if(function(t,e){return t>=e||t<0}(e[i],a)){var o=u(n(e[i],a),2),h=o[0],c=o[1];e[s]+=h,e[i]=c}})),v(e,H,!0),r();m(e,Y)<-m(e,I).yearLength||m(e,Y)>m(e,I).yearLength;){if(m(e,S)>0){for(var i=m(e,I).getMonthLengths(e.isLeap),s=0;s<m(e,S);s++)v(e,Y,m(e,Y)+i[s]);v(e,S,0)}var a=e.isLeap?e.calendar.yearLength+1:e.calendar.yearLength;v(e,Y,m(e,Y)+a*(m(e,Y)<0?1:-1)),v(e,O,m(e,O)+(m(e,Y)<0?-1:1))}for(;;){var o;for(r();m(e,Y)<1;)v(e,S,m(e,S)-1),r(),v(e,Y,e.month.length+m(e,Y));if(m(e,Y)<=e.month.length||isNaN(m(e,Y)))break;v(e,Y,m(e,Y)-e.month.length),v(e,S,(o=m(e,S),o++,o))}m(e,L)||v(e,L,0),m(e,W)||v(e,W,0),m(e,x)||v(e,x,0),m(e,j)||v(e,j,0)}}}),d(this,_,{writable:!0,value:function(){return(m(e,F).weekDays||m(e,A).weekDays).map((function(t,n){var r=u(t,2),i=r[0],s=r[1],a=n-e.weekStartDayIndex;return a<0&&(a+=7),{name:i,shortName:s,index:a,number:a+1,toString:function(){return this.number.toString()},valueOf:function(){return this.number}}}))}});var n=b(t)?s({},t):t,r=!0;if(n&&\"boolean\"!=typeof n||(n={date:new Date}),b(n)||(n={date:n}),0!==Object.keys(n).length){for(var a in b(n.calendar)&&v(this,I,n.calendar),b(n.locale)&&v(this,A,n.locale),isNaN(n.year)&&isNaN(n.month)&&isNaN(n.day)&&!n.date&&(n.date=new Date),n.date&&(\"string\"==typeof n.date&&n.format&&v(this,N,n.format),this.setDate(n.date),n.calendar&&this.convert(n.calendar),r=!1),delete n.calendar,delete n.locale,delete n.date,n)this.set(a,n[a]);m(this,J).call(this)&&v(this,O,-1),r&&m(this,C).call(this)}}var a,c,y;return a=i,(c=[{key:\"parse\",value:function(t){if(!t)return this;var i,s,a=m(this,N),c=m(this,A).digits,f=r(c);try{for(f.s();!(i=f.n()).done;){var y=i.value;t=t.replace(new RegExp(y,\"g\"),c.indexOf(y))}}catch(t){f.e(t)}finally{f.f()}if(a)for(var d=a.split(/[^\\w\\u0600-\\u06FF]/),g=t.split(/[^\\w\\u0600-\\u06FF]/),k=0;k<d.length;k++)this.set.apply(this,e(m(this,V).call(this,d[k],g[k])));else{var p=t.match(/(-?\\d{2,4})?\\W?([A-z]{3,9}|\\d{1,2})?\\W?(\\d{1,2})?\\W?(\\d{1,2})?\\W?(\\d{1,2})?\\W?(\\d{1,2})?\\W?(\\d{1,3})?\\W?(am|pm)?/),b=(l(s=p)||n(s)||h(s)||o()).slice(1),D=b[1];D&&(D=/\\d+/.test(D)?w(D)-1:this.months.findIndex((function(t){return new RegExp(D,\"i\").test(t.name)}))),b[1]=D;var M=u(b.map(w),7),I=M[0],T=M[1],F=M[2],P=M[3],E=M[4],H=M[5],J=M[6];v(this,O,I),v(this,S,T),v(this,Y,F),v(this,L,P),v(this,W,E),v(this,x,H),v(this,j,J)}var _=u(m(this,A).meridiems[1],2),U=_[0],R=_[1];return m(this,L)<12&&(t.includes(U)||t.includes(R))&&v(this,L,m(this,L)+12),m(this,C).call(this),this}},{key:\"convert\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:p,e=arguments.length>1?arguments[1]:void 0;if(b(e)&&v(this,A,e),!b(t)||t.name===m(this,I).name)return this;var n=this.toJulianDay()-t.epoch,r=new i({calendar:t,year:t.guessYear(n,m(this,O)),month:1,day:1});return r.day+=n-r.toDays(),v(this,O,r.year),v(this,S,r.month.index),v(this,Y,r.day),v(this,I,t),this}},{key:\"format\",value:function(e,n){if(!this.isValid||e&&\"string\"!=typeof e)return\"\";e||(e=m(this,N)||\"YYYY/MM/DD\"),D(n)||(n=[]),n=(n=n.concat(m(this,E))).filter((function(e){return\"string\"==typeof e||(console.warn(\"type of all items in the ignore list must be string, found\",t(e)),!1)})).map((function(t){return t.replace(/[*/+\\-()[\\]{}\\s$^]/g,(function(t){return\"\\\\\"+t}))}));var i,s=new RegExp(\"\".concat(n.join(\"|\")).concat(n.length>0?\"|\":\"\",\"YYYY|YY|MMMM|MMM|MM|M|WW|W|DDDD|DDD|DD|D|dddd|ddd|dd|d|HH|H|hh|h|mm|m|ss|s|SSS|SS|S|A|a|.\"),\"g\"),a=\"\",u=r(e.match(s)||[]);try{for(u.s();!(i=u.n()).done;){var o=i.value,h=this.getValue(o);a+=n.includes(o)?o:0===h?h:h||o}}catch(t){u.e(t)}finally{u.f()}var c=this.digits;return a.replace(/[0-9]/g,(function(t){return c[t]}))}},{key:\"getProperty\",value:function(t){return this.getValue(t)}},{key:\"getValue\",value:function(t){var e=function(t){return t<10?\"0\"+t:t};switch(t){case\"YYYY\":return this.year;case\"YY\":return this.year.toString().substring(2,4);case\"MMMM\":return this.month.name;case\"MMM\":return this.month.shortName;case\"MM\":return e(this.month.number);case\"M\":return this.month.number;case\"WW\":return e(this.weekOfYear);case\"W\":return this.weekOfYear;case\"DDDD\":case\"DDD\":return this.dayOfYear;case\"DD\":return e(this.day);case\"D\":return this.day;case\"HH\":return e(this.hour);case\"H\":return this.hour;case\"dddd\":return this.weekDay.name;case\"ddd\":return this.weekDay.shortName;case\"dd\":return e(this.weekDay.number);case\"d\":return this.weekDay.number;case\"hh\":return e(this.hour>12?this.hour-12:this.hour||12);case\"h\":return this.hour>12?this.hour-12:this.hour||12;case\"mm\":return e(this.minute);case\"m\":return this.minute;case\"ss\":return e(this.second);case\"s\":return this.second;case\"SSS\":return m(this,j)<10?\"00\".concat(m(this,j)):m(this,j)<100?\"0\".concat(m(this,j)):m(this,j);case\"SS\":return m(this,j)<10?\"00\":m(this,j)<100?(\"0\"+m(this,j)).substring(2,0):m(this,j).toString().substring(0,2);case\"S\":return m(this,j)<10||m(this,j)<100?\"0\":m(this,j).toString().substring(0,1);case\"a\":return this.hour>=12?m(this,A).meridiems[1][1]:m(this,A).meridiems[0][1];case\"A\":return this.hour>=12?m(this,A).meridiems[1][0]:m(this,A).meridiems[0][0];default:return\"\"}}},{key:\"setYear\",value:function(t){return this.year=t,this}},{key:\"setMonths\",value:function(t){return this.months=t,this}},{key:\"setMonth\",value:function(t){return this.month=t,this}},{key:\"setWeekDays\",value:function(t){return this.weekDays=t,this}},{key:\"setDigits\",value:function(t){return this.digits=t,this}},{key:\"setDay\",value:function(t){return this.day=t,this}},{key:\"setHour\",value:function(t){return this.hour=t,this}},{key:\"setMinute\",value:function(t){return this.minute=t,this}},{key:\"setSecond\",value:function(t){return this.second=t,this}},{key:\"setMillisecond\",value:function(t){return this.millisecond=t,this}},{key:\"setFormat\",value:function(t){return v(this,N,t),this}},{key:\"setLocale\",value:function(t){return this.locale=t,this}},{key:\"setCalendar\",value:function(t){return this.calendar=t,this}},{key:\"setDate\",value:function(t){if(\"string\"==typeof t){if(!m(this,P).test(t))return this.parse(t);t=new Date(t)}return\"number\"==typeof t&&(t=new Date(t)),t instanceof Date&&(v(this,I,p),v(this,O,t.getFullYear()),v(this,S,t.getMonth()),v(this,Y,t.getDate()),v(this,L,t.getHours()),v(this,W,t.getMinutes()),v(this,x,t.getSeconds()),v(this,j,t.getMilliseconds()),v(this,T,!1)),t instanceof i&&(v(this,O,t.year),v(this,S,t.month.index),v(this,Y,t.day),v(this,L,t.hour),v(this,W,t.minute),v(this,x,t.second),v(this,j,t.millisecond),v(this,A,t.locale),v(this,N,t._format),v(this,I,t.calendar),v(this,T,t.isUTC),v(this,E,t.ignoreList),v(this,F,t.custom)),this}},{key:\"setIgnoreList\",value:function(t){return this.ignoreList=t,this}},{key:\"set\",value:function(t,e){if(null==t)return this;if(b(t)){var n=s({},t);for(var r in n.date&&(this.setDate(n.date),delete n.date),n.calendar&&(this.convert(n.calendar),delete n.calendar),n.locale&&(this.setLocale(n.locale),delete n.locale),v(this,H,!1),n)this.set(r,n[r]);return v(this,H,!0),m(this,C).call(this),this}\"format\"===t&&(t=\"_format\");try{this[t]=e}catch(t){}return this}},{key:\"add\",value:function(t,e){if(!(t=w(t))||!e)return this;switch(e){case\"years\":case\"y\":e=\"year\";break;case\"months\":case\"M\":e=\"month\";break;case\"days\":case\"d\":e=\"day\";break;case\"hours\":case\"h\":e=\"hour\";break;case\"minutes\":case\"m\":e=\"minute\";break;case\"seconds\":case\"s\":e=\"second\";break;case\"milliseconds\":case\"ms\":e=\"millisecond\"}return this[e]+=t,this}},{key:\"subtract\",value:function(t,e){return this.add(-t,e)}},{key:\"toFirstOfYear\",value:function(){return this.month=1,this.day=1,this}},{key:\"toLastOfYear\",value:function(){return this.day>=29&&(this.day=29),this.month=12,this.toLastOfMonth(),this}},{key:\"toFirstOfMonth\",value:function(){return v(this,Y,1),this}},{key:\"toLastOfMonth\",value:function(){return v(this,Y,0),v(this,S,m(this,S)+1),m(this,C).call(this),this}},{key:\"toFirstOfWeek\",value:function(){return this.day-=this.weekDay.index,this}},{key:\"toLastOfWeek\",value:function(){return this.day+=6-this.weekDay.index,this}},{key:\"toFirstWeekOfYear\",value:function(){return this.toFirstOfYear(),0===this.weekDay.index?this:this.toLastOfWeek().setDay(this.day+1)}},{key:\"toLastWeekOfYear\",value:function(){return this.toLastOfYear().toFirstOfWeek()}},{key:\"toString\",value:function(){return this.format()}},{key:\"toDate\",value:function(){var t=new i(this);return\"gregorian\"!==m(this,I).name&&t.convert(p),new Date(t.year,t.month.index,t.day,t.hour,t.minute,t.second,t.millisecond)}},{key:\"toUTC\",value:function(){return m(this,T)||(this.minute+=this.toDate().getTimezoneOffset(),v(this,T,!0)),this}},{key:\"toUnix\",value:function(){return this.unix}},{key:\"toJulianDay\",value:function(){return this.toDays()+m(this,I).epoch}},{key:\"toObject\",value:function(){return{year:m(this,O),month:this.month,day:m(this,Y),weekDay:this.weekDay,hour:m(this,L),minute:m(this,W),second:m(this,x),millisecond:m(this,j),weekOfYear:this.weekOfYear,dayOfYear:this.dayOfYear,daysLeft:this.daysLeft,calendar:m(this,I),locale:m(this,A),format:m(this,N)||\"YYYY/MM/DD\",ignoreList:m(this,E)}}},{key:\"toJSON\",value:function(){return this.valueOf()}},{key:\"valueOf\",value:function(){return this.toDate().valueOf()}},{key:\"toDays\",value:function(){if(this.isValid)return m(this,I).getAllDays(this)}},{key:\"dayOfBeginning\",get:function(){return this.toDays()}},{key:\"dayOfYear\",get:function(){if(this.isValid)return m(this,I).getDayOfYear(this)}},{key:\"weekOfYear\",get:function(){if(this.isValid)return 1+~~(this.dayOfYear/7)}},{key:\"daysLeft\",get:function(){if(this.isValid){var t=m(this,I).yearLength;return(this.isLeap?t+1:t)-this.dayOfYear}}},{key:\"year\",get:function(){return m(this,O)},set:function(t){v(this,O,w(t)),m(this,C).call(this)}},{key:\"month\",get:function(){return this.months[m(this,S)]||{}},set:function(t){var e;t=null!==(e=w(t.valueOf())-1)&&void 0!==e?e:void 0,v(this,S,t),M(t,0,11)&&m(this,C).call(this)}},{key:\"monthIndex\",get:function(){return m(this,S)}},{key:\"day\",get:function(){return m(this,Y)},set:function(t){t=w(t),v(this,Y,t),M(t,1,28)&&m(this,C).call(this)}},{key:\"weekDay\",get:function(){if(!this.isValid)return{};var t=(this.toJulianDay()+3)%7;return m(this,_).call(this)[t]}},{key:\"hour\",get:function(){return m(this,L)},set:function(t){t=w(t),v(this,L,t),M(t,0,23)&&m(this,C).call(this)}},{key:\"minute\",get:function(){return m(this,W)},set:function(t){t=w(t),v(this,W,t),M(t,0,59)&&m(this,C).call(this)}},{key:\"second\",get:function(){return m(this,x)},set:function(t){t=w(t),v(this,x,t),M(t,0,59)&&m(this,C).call(this)}},{key:\"millisecond\",get:function(){return m(this,j)},set:function(t){t=w(t),v(this,j,t),M(t,0,999)&&m(this,C).call(this)}},{key:\"months\",get:function(){var t=m(this,I).getMonthLengths(this.isLeap);return(m(this,F).months||m(this,A).months).map((function(e,n){var r=u(e,2);return{name:r[0],shortName:r[1],length:t[n],index:n,number:n+1,toString:function(){return this.number.toString()},valueOf:function(){return this.number}}}))},set:function(t){if(!t)return delete m(this,F).months;D(t)&&12===t.length&&t.every((function(t){return D(t)&&2===t.length&&t.every((function(t){return\"string\"==typeof t}))}))&&(m(this,F).months=t)}},{key:\"weekDays\",get:function(){return m(this,_).call(this).sort((function(t,e){return t.index-e.index}))},set:function(t){if(!t)return delete m(this,F).weekDays;D(t)&&7===t.length&&t.every((function(t){return D(t)&&2===t.length&&t.every((function(t){return\"string\"==typeof t}))}))&&(m(this,F).weekDays=t)}},{key:\"leaps\",get:function(){return m(this,I).getLeaps(m(this,O))}},{key:\"calendar\",get:function(){return m(this,I)},set:function(t){this.convert(t)}},{key:\"locale\",get:function(){return m(this,A)},set:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:k;b(t)&&v(this,A,t)}},{key:\"custom\",get:function(){return m(this,F)}},{key:\"meridiems\",get:function(){return m(this,A).meridiems}},{key:\"digits\",get:function(){return m(this,F).digits||m(this,A).digits},set:function(t){if(!t)return delete m(this,F).digits;D(t)&&10===t.length&&(m(this,F).digits=t)}},{key:\"_format\",get:function(){return m(this,N)},set:function(t){\"string\"==typeof t&&v(this,N,t)}},{key:\"isLeap\",get:function(){return m(this,I).isLeap(m(this,O))}},{key:\"isValid\",get:function(){return!isNaN(m(this,O))&&!isNaN(m(this,S))&&!isNaN(m(this,Y))}},{key:\"isUTC\",get:function(){return m(this,T)}},{key:\"unix\",get:function(){return(this.valueOf()-this.millisecond)/1e3}},{key:\"ignoreList\",get:function(){return m(this,E)},set:function(t){D(t)&&v(this,E,t)}},{key:\"weekStartDayIndex\",get:function(){return m(this,I).weekStartDayIndex},set:function(t){void 0!==(t=w(t))&&(m(this,I).weekStartDayIndex=Math.abs(t)%7)}},{key:\"date\",set:function(t){this.setDate(t)}}])&&f(a.prototype,c),y&&f(a,y),Object.defineProperty(a,\"prototype\",{writable:!1}),i}();exports.default=U;\n", "\"use strict\";Object.defineProperty(exports,\"__esModule\",{value:!0});var e=require(\"react\"),r=require(\"react-element-popper\"),t=require(\"react-date-object\");function n(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var a=n(e),o=n(r),d=n(t);function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function l(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?i(Object(t),!0).forEach((function(r){u(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function u(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function c(){return(c=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e}).apply(this,arguments)}function s(e,r){if(null==e)return{};var t,n,a=function(e,r){if(null==e)return{};var t,n,a={},o=Object.keys(e);for(n=0;n<o.length;n++)t=o[n],r.indexOf(t)>=0||(a[t]=e[t]);return a}(e,r);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)t=o[n],r.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}function f(e,r){return function(e){if(Array.isArray(e))return e}(e)||function(e,r){var t=null==e?null:\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(null==t)return;var n,a,o=[],d=!0,i=!1;try{for(t=t.call(e);!(d=(n=t.next()).done)&&(o.push(n.value),!r||o.length!==r);d=!0);}catch(e){i=!0,a=e}finally{try{d||null==t.return||t.return()}finally{if(i)throw a}}return o}(e,r)||m(e,r)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function p(e){return function(e){if(Array.isArray(e))return h(e)}(e)||function(e){if(\"undefined\"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e[\"@@iterator\"])return Array.from(e)}(e)||m(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function m(e,r){if(e){if(\"string\"==typeof e)return h(e,r);var t=Object.prototype.toString.call(e).slice(8,-1);return\"Object\"===t&&e.constructor&&(t=e.constructor.name),\"Map\"===t||\"Set\"===t?Array.from(e):\"Arguments\"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?h(e,r):void 0}}function h(e,r){(null==r||r>e.length)&&(r=e.length);for(var t=0,n=new Array(r);t<r;t++)n[t]=e[t];return n}function y(e,r){var t=\"undefined\"!=typeof Symbol&&e[Symbol.iterator]||e[\"@@iterator\"];if(!t){if(Array.isArray(e)||(t=m(e))||r&&e&&\"number\"==typeof e.length){t&&(e=t);var n=0,a=function(){};return{s:a,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:a}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var o,d=!0,i=!1;return{s:function(){t=t.call(e)},n:function(){var e=t.next();return d=e.done,e},e:function(e){i=!0,o=e},f:function(){try{d||null==t.return||t.return()}finally{if(i)throw o}}}}function g(e){return Array.isArray(e)}function b(r){var t=r.state.date,n=t.calendar,o=t.locale,i=r.customWeekDays,l=r.weekStartDayIndex,u=r.displayWeekNumbers,c=r.weekNumber,s=e.useMemo((function(){var e=i;return g(e)&&e.length>=7?(e.length=7,e=e.map((function(e){return g(e)&e.length>1?e=e[1]:g(e)&&(e=e[0]),e}))):e=new d.default({year:1,calendar:n,locale:o}).weekDays.map((function(e){return e.shortName})),e}),[n,o,i]);return s=p(s).slice(l).concat(p(s).splice(0,l)),a.default.createElement(\"div\",{className:\"rmdp-week\"},u&&a.default.createElement(\"div\",{className:\"rmdp-week-day\"},c),s.map((function(e,r){return a.default.createElement(\"div\",{key:r,className:\"rmdp-week-day\"},e)})))}function v(e,r){var t=arguments.length>2&&void 0!==arguments[2]&&arguments[2],n=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!e||!r)return!1;if(e.year===r.year){if(n)return!0;if(e.monthIndex===r.monthIndex)return!!t||e.day===r.day}}function x(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:\"YYYY/MM/DD\";return e.format(r)}function w(e,r,t){var n=t.multiple,a=t.range,o=t.selectedDate,i=t.onlyMonthPicker,l=t.onlyYearPicker,u=t.format,c=t.focused,s=t.weekPicker;e.setFormat(u);var m=new d.default(e);return[o=n&&a?function(){var e=!0;g(o)||(o=[[o]]);var r=o.find((function(e){return 1===e.length})),t=i?\"YYYY/MM\":\"YYYY/MM/DD\",n=o;if(r){var a=r[0];n=n.filter((function(e){if(1===e.length)return!0;var r=f(e,2),n=r[0],o=r[1],d=f([a,m].sort((function(e,r){return e-r})),2),i=f([n,o,d[0],d[1]].map((function(e){return x(e,t)})),4),l=i[0],u=i[1],c=i[2],s=i[3];return!(c<=l&&s>=u||c>=l&&s>=u&&c<=u||c<=l&&s<=u&&s>=l)}))}else n=n.filter((function(e){if(!g(e))return!0;if(0===e.length)return!1;var r=f(e,2),n=f([r[0],r[1],m].map((function(e){return x(e,t)})),3),a=n[0],o=n[1],d=n[2];return!(d>=a&&d<=o)}));n=n.map((function(r){var t;return g(r)?1===r.length?(e=!1,t=r.concat(m)):t=r:(e=!1,t=[r,m]),t.sort((function(e,r){return e-r}))})),e&&(n=[].concat(p(n),[[m]]));return n}():n?function(){var t=o.filter((function(r){return!v(e,r,i,l)}));t.length===o.length?t.push(m):m=t.find((function(e){return v(e,c)}));r&&t.sort((function(e,r){return e-r}));return t}():a?function(){if(s)return[new d.default(m).toFirstOfWeek(),new d.default(m).toLastOfWeek()];if(2===o.length||0===o.length)return[m];if(1===o.length)return[o[0],m].sort((function(e,r){return e-r}))}():m,m]}function k(e,r,t,n){var a=[],o=t?\"YYYY/MM\":\"YYYY/MM/DD\",d=x(e,o);function i(r){var n=r[0],i=r[1];if(1===r.length)v(e,n,t)&&a.push(\"rmdp-range\");else if(2===r.length){var l=f([n,i].map((function(e){return x(e,o)})),2),u=l[0],c=l[1];d>=u&&d<=c&&a.push(\"rmdp-range\"),d===u&&a.push(\"start\"),d===c&&a.push(\"end\")}}return n?(g(r)?r:[[r]]).forEach(i):i(r),a.join(\" \")}function D(e,r,t,n){var a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:\"day\",o=[];if(n&&1===(null==r?void 0:r.length)&&t){var d=\"day\"===a?\"YYYY/MM/DD\":\"YYYY/MM\",i=t.format(d),l=r[0].format(d),u=e.format(d);(u>l&&u<=i||u<l&&u>=i)&&(o.push(\"rmdp-range-hover\"),u===i&&o.push(i>l?\"end\":\"start\"))}return o}var O;function Y(r){var t=r.state,n=r.setState,o=r.onChange,i=r.showOtherDays,s=void 0!==i&&i,p=r.mapDays,m=r.onlyShowInRangeDates,h=r.customWeekDays,y=r.sort,g=r.numberOfMonths,x=r.isRTL,Y=r.weekStartDayIndex,M=r.handleFocusedDate,E=r.hideWeekDays,P=r.fullYear,C=f(r.monthAndYears,1)[0],N=r.displayWeekNumbers,S=r.weekNumber,I=void 0===S?\"\":S,j=r.rangeHover,T=r.highlightToday,R=e.useRef({}),A=e.useRef(),L=t.today,F=t.minDate,W=t.maxDate,B=t.range,_=t.multiple,V=t.date,z=t.selectedDate,H=t.onlyMonthPicker,q=t.onlyYearPicker,J=!H&&!q,K=f(e.useState(),2),U=K[0],$=K[1],G=_||B?(null==z?void 0:z.length)>0:!!z;R.current.date=V;var Q=e.useMemo((function(){return J?function(e,r,t,n){if(!e)return[];for(var a=[],o=0;o<t;o++){var i=(e=new d.default(e).toFirstOfMonth()).monthIndex,l=[];e.toFirstOfWeek().add(n,\"day\"),e.monthIndex===i&&e.day>1&&e.subtract(7,\"days\");for(var u=0;u<6;u++){for(var c=[],s=0;s<7;s++)c.push({date:new d.default(e),day:e.format(\"D\"),current:e.monthIndex===i}),e.day+=1;if(l.push(c),u>2&&e.monthIndex!==i&&!r)break}a.push(l)}return a}(R.current.date,s,g,Y):[]}),[V.monthIndex,V.year,V.calendar,V.locale,J,s,g,Y]);return J&&a.default.createElement(\"div\",{ref:A,className:\"rmdp-day-picker \".concat(P?\"rmdp-full-year\":\"\"),style:{display:P?\"grid\":\"flex\"},onMouseLeave:function(){return j&&$()}},Q.map((function(e,r){return a.default.createElement(\"div\",{key:r,style:u({},x?\"marginLeft\":\"marginRight\",r+(P?0:1)<g?\"10px\":\"\")},P&&a.default.createElement(\"div\",{className:\"rmdp-month-name\"},C[r]),!E&&a.default.createElement(b,{state:t,customWeekDays:h,weekStartDayIndex:Y,displayWeekNumbers:N,weekNumber:I}),e.map((function(e,i){return a.default.createElement(\"div\",{key:i,className:\"rmdp-week\"},N&&a.default.createElement(\"div\",{className:\"rmdp-day rmdp-disabled\"},a.default.createElement(\"span\",null,e[0].date.format(\"WW\"))),e.map((function(e,i){var u=function(e){if(!e.current&&!s)return{};var r={};return p.forEach((function(n){var a,o=n({date:e.date,today:L,currentMonth:t.date.month,selectedDate:t.selectedDate,isSameDate:v});(null===(a=o)||void 0===a?void 0:a.constructor)!==Object&&(o={}),(o.disabled||o.hidden)&&(e.disabled=!0),o.hidden&&(e.hidden=!0),r=l(l({},r),o)})),delete r.disabled,delete r.hidden,r}(e={date:e.date,day:e.day,current:e.current}),h=X(e)&&!e.disabled,b=\"\".concat(h?\"sd\":\"\"),x=u.children;h&&(b=\"\".concat(b,\" \").concat(u.className||\"\")),delete u.className,delete u.children;var Y=function(e,r){var t=[\"rmdp-day\"],n=e.date,a=e.hidden,o=e.current;if(!X(e)||a)t.push(\"rmdp-day-hidden\");else{(F&&n<F||W&&n>W||e.disabled)&&(t.push(\"rmdp-disabled\"),e.disabled||(e.disabled=!0)),o||t.push(\"rmdp-deactive\");var d=r>1&&o||1===r;e.disabled&&m||(v(n,L)&&T&&t.push(\"rmdp-today\"),i=n,[].concat(z).some((function(e){return v(e,i)}))&&d&&!B&&t.push(\"rmdp-selected\")),B&&!e.disabled&&d&&(t.push(k(n,z,void 0,_)),_||(t=t.concat(D(n,z,U,j))))}var i;return t.join(\" \")}(e,g);(e.hidden||e.disabled)&&(b=b.replace(\"sd\",\"\"));var E=G?Y.includes(\"selected\")||Y.includes(\"range\"):Y.includes(\"today\");return a.default.createElement(\"div\",{key:i,tabIndex:E?0:-1,\"aria-label\":\"Choose \".concat(e.date.format(\"dddd MMMM DD of YYYY\")),className:Y,onMouseEnter:function(){return j&&$(e.date)},onKeyDown:function(r){return function(e,r){var a=e.currentTarget,o=e.key,i=e.code,u={ArrowRight:1,ArrowLeft:-1,ArrowUp:-7,ArrowDown:7};if(\"Space\"===i||\" \"===o)e.preventDefault(),a.click();else if(Object.keys(u).includes(o)){var c=function(e){if(!e)return s();var r=e.getAttribute(\"class\");r.includes(\"hidden\")||r.includes(\"disabled\")?s():e.focus()},s=function(){n(l(l({},t),{},{date:p})),clearTimeout(O),O=setTimeout((function(){return c(Z(p))}),100)};e.preventDefault();var f=u[o],p=new d.default(r.date).add(f,\"day\"),m=Z(p);c(m)}}(r,e)},onClick:function(){X(e)&&!e.disabled&&function(e,r,n){var a,i,u,c=e.date,s=e.current,p=t.selectedDate,m=t.focused,h=t.date,g=h,b=g.hour,v=g.minute,x=g.second;c.set({hour:(null===(a=p)||void 0===a?void 0:a.hour)||b,minute:(null===(i=p)||void 0===i?void 0:i.minute)||v,second:(null===(u=p)||void 0===u?void 0:u.second)||x}),1!==n||s?n>1&&!s&&(0===r&&c<h&&(h=new d.default(h).toFirstOfMonth()),r>0&&c.monthIndex>h.monthIndex+r&&r+1===n&&(h=new d.default(h).toFirstOfMonth().add(1,\"month\"))):h=new d.default(h).toFirstOfMonth();var k=f(w(c,y,t),2);p=k[0],m=k[1],o(p,l(l({},t),{},{date:h,focused:m,selectedDate:p})),M(m,c)}(e,r,g)}},a.default.createElement(\"span\",c({className:b},u),X(e)&&!e.hidden?null!=x?x:e.day:\"\"))})))})))})));function X(e){return!!e.current||s}function Z(e){return A.current.querySelector(\"[aria-label*='\".concat(e.format(\"dddd MMMM DD of YYYY\"),\"']\"))}}function M(e){var r=e.direction,t=e.onClick,n=e.disabled;return a.default.createElement(\"button\",{className:\"rmdp-arrow-container \".concat(r,\" \").concat(n?\"disabled\":\"\"),onClick:t,\"aria-roledescription\":\"button to navigate \".concat(r.replace(\"rmdp-\",\"\"))},a.default.createElement(\"i\",{className:\"rmdp-arrow\"}))}function E(r){var t=r.state,n=r.setState,o=r.disableYearPicker,d=r.disableMonthPicker,i=r.buttons,u=r.renderButton,c=r.handleMonthChange,s=r.disabled,p=r.hideMonth,m=r.hideYear,h=r.isRTL,y=r.fullYear,g=f(r.monthAndYears,2),b=g[0],v=g[1],x=r.monthYearSeparator,w=r.formatMonth,k=r.formatYear,D=r.headerOrder,O={},Y=t.date,E=t.onlyMonthPicker,P=t.onlyYearPicker,C=t.mustShowYearPicker,N=t.minDate,S=t.maxDate,I=t.year,j=t.today,T=N&&Y.year<=N.year&&N.monthIndex>Y.monthIndex-1,R=S&&Y.year>=S.year&&S.monthIndex<Y.monthIndex+1,A=j.year+7;if(A-=12*Math.floor((A-I)/12),(p||y)&&m&&!i)return null;if((E||y)&&(N&&N.year>=Y.year&&(T=!0),S&&S.year<=Y.year&&(R=!0)),C||P){var L=A-11;T=N&&N.year>L,R=S&&S.year<A}return s&&(T=!0,R=!0),a.default.createElement(\"div\",{className:\"rmdp-header\"},a.default.createElement(\"div\",{style:{position:\"relative\",display:\"flex\",alignItems:\"center\"}},Array.from(new Set(D)).map((function(r,t){return a.default.createElement(e.Fragment,{key:t},function(r){switch(r){case\"LEFT_BUTTON\":return i&&W(\"left\");case\"RIGHT_BUTTON\":return i&&W(\"right\");case\"MONTH_YEAR\":case\"YEAR_MONTH\":if(y)return a.default.createElement(\"div\",{className:\"rmdp-header-values\",style:O},!m&&Y.format(\"YYYY\"));var t=r.split(\"_\").filter((function(e){return\"MONTH\"===e&&!p||\"YEAR\"===e&&!m}));return t.length>1&&(t=[t[0],F(),t[1]]),b.map((function(r,n){return a.default.createElement(\"div\",{key:n,className:\"rmdp-header-values\",style:O},t.map((function(t,i){return a.default.createElement(e.Fragment,{key:i},function(e,r,t){switch(e){case\"MONTH\":return a.default.createElement(\"span\",{style:{cursor:s||d||E?\"default\":\"pointer\"},onClick:function(){return!d&&_(\"mustShowMonthPicker\")}},function(e,r){return\"function\"==typeof w?w(e,r):e}(r,v[t]));case\"YEAR\":return a.default.createElement(\"span\",{style:{cursor:s||o||P?\"default\":\"pointer\"},onClick:function(){return!o&&_(\"mustShowYearPicker\")}},function(e,r){return\"function\"==typeof w?k(e,r):e}(v[t],r));default:return e}}(t,r,n))})))}));default:return}}(r))}))));function F(){return x?a.default.createElement(\"span\",null,x):h?\"\u060C\":\",\"}function W(r){var t=function(e){e.preventDefault(),B(\"right\"===r?1:-1),function(e){setTimeout((function(){var r=e.target.closest(\".rmdp-calendar\");if(r){var t=r.querySelector(\"div[tabindex='0']\");t&&t.getAttribute(\"class\").includes(\"hidden\")&&(t.setAttribute(\"tabindex\",\"-1\"),t=void 0),t||(t=r.querySelector(\"div[tabindex='-1']:not(.rmdp-day-hidden)\"))&&t.setAttribute(\"tabindex\",\"0\")}}),200)}(e)},n=\"left\"===r&&T||\"right\"===r&&R;return u instanceof Function?u(r,t,n):e.isValidElement(u)?e.cloneElement(u,{direction:r,handleClick:t,disabled:n}):a.default.createElement(M,{direction:\"rmdp-\".concat(r),onClick:t,disabled:n})}function B(e){s||e<0&&T||e>0&&R||(y?Y.year+=e:C||P?(I+=12*e,e<0&&N&&I<N.year&&(I=N.year),e>0&&S&&I>S.year&&(I=S.year)):(Y.toFirstOfMonth(),E?Y.year+=e:(Y.month+=e,c(Y))),n(l(l({},t),{},{date:Y,year:I})))}function _(e){if(!s){var r={mustShowMonthPicker:!1,mustShowYearPicker:!1};r[e]=!t[e],n(l(l({},t),r))}}}function P(e){return g(e)||(e=[]),JSON.stringify(e)}function C(r){var t=r.state,n=r.onChange,o=r.customMonths,i=r.sort,u=r.handleMonthChange,c=r.handleFocusedDate,s=r.rangeHover,p=r.highlightToday,m=r.numberOfMonths,h=t.date,y=t.today,b=t.minDate,x=t.maxDate,O=t.calendar,Y=t.locale,M=t.onlyMonthPicker,E=t.onlyYearPicker,C=t.range,N=t.onlyShowInRangeDates,S=(t.mustShowMonthPicker||M)&&!E,I=f(e.useState(),2),j=I[0],T=I[1];o=o&&P(o);var R=e.useMemo((function(){var e=[],r=M?m:1,n=o&&JSON.parse(o),a=new d.default({calendar:O,locale:Y,format:t.date._format,year:t.date.year,month:1,day:1});g(n)&&n.length>=12?(n.length=12,n=n.map((function(e){return g(e)?e[0]:e}))):n=a.locale.months.map((function(e){return f(e,1)[0]}));for(var i=0;i<r;i++){for(var l=[],u=0,c=0;c<4;c++){for(var s=[],p=0;p<3;p++)s.push({date:new d.default(a),name:n[u]}),u++,a.add(1,\"month\");l.push(s)}e.push(l)}return e}),[O,Y,o,t.date.year,t.date._format,m,M]);return a.default.createElement(\"div\",{className:\"\".concat(M?\"only \":\"\",\"rmdp-month-picker\"),style:{display:S?\"flex\":\"none\"},onMouseLeave:function(){return s&&T()}},R.map((function(e,r){return a.default.createElement(\"div\",{key:r,style:{margin:\"0 5px\",flex:1}},e.map((function(e,r){return a.default.createElement(\"div\",{key:r,className:\"rmdp-ym\"},e.map((function(e,r){var t=e.date,n=e.name;return a.default.createElement(\"div\",{key:r,className:L(t),onClick:function(){return A(t)},onMouseEnter:function(){return s&&T(t)}},a.default.createElement(\"span\",{className:M?\"sd\":\"\"},n))})))})))})));function A(e){var r=t.selectedDate,a=t.focused,o=e.year,d=e.monthIndex;if(!(b&&o<=b.year&&d<b.monthIndex||x&&o>=x.year&&d>x.monthIndex)){if(h.setMonth(d+1),M){var s=f(w(e,i,t),2);r=s[0],a=s[1]}else u(h);n(M?r:void 0,l(l({},t),{},{date:h,focused:a,selectedDate:r,mustShowMonthPicker:!1})),M&&c(a,e)}}function L(e){var r=[\"rmdp-day\"],n=e.year,a=e.monthIndex,o=t.selectedDate,d=t.multiple;if((b&&(n<b.year||n===b.year&&a<b.monthIndex)||x&&(n>x.year||n===x.year&&a>x.monthIndex))&&r.push(\"rmdp-disabled\"),!r.includes(\"rmdp-disabled\")||!N)return v(y,e,!0)&&p&&r.push(\"rmdp-today\"),M?C?(r.push(k(e,o,!0,d)),d||(r=r.concat(D(e,o,j,s,\"month\")))):[].concat(o).some((function(r){return v(r,e,!0)}))&&r.push(\"rmdp-selected\"):h.monthIndex===a&&r.push(\"rmdp-selected\"),r.join(\" \")}}function N(e,r){return e.replace(/[0-9]/g,(function(e){return r[e]}))}function S(r){var t=r.state,n=r.onChange,o=r.sort,i=r.handleFocusedDate,u=r.onYearChange,c=r.rangeHover,s=r.highlightToday,p=t.date,m=t.today,h=t.minDate,y=t.maxDate,b=t.onlyYearPicker,v=t.range,x=t.onlyShowInRangeDates,k=t.year,D=t.mustShowYearPicker||b,O=p.digits,Y=f(e.useState(),2),M=Y[0],E=Y[1],P=m.year-4;P-=12*Math.ceil((P-k)/12);var C=e.useMemo((function(){for(var e=[],r=P,t=0;t<4;t++){for(var n=[],a=0;a<3;a++)n.push(r),r++;e.push(n)}return e}),[P]);return a.default.createElement(\"div\",{className:\"\".concat(b?\"only \":\"\",\"rmdp-year-picker\"),style:{display:D?\"block\":\"none\"}},C.map((function(e,r){return a.default.createElement(\"div\",{key:r,className:\"rmdp-ym\",onMouseLeave:function(){return c&&E()}},e.map((function(e,r){return a.default.createElement(\"div\",{key:r,className:S(e),onClick:function(){return function(e){if(I(e))return;var r=new d.default(t.date).setYear(e),a=t.selectedDate,c=t.focused;if(b){var s=f(w(r,o,t),2);a=s[0],c=s[1]}else h&&r.monthIndex<h.monthIndex?r=r.setMonth(h.monthIndex+1):y&&r.monthIndex>y.monthIndex&&(r=r.setMonth(y.monthIndex+1)),null==u||u(r);n(b?a:void 0,l(l({},t),{},{date:r,focused:c,selectedDate:a,mustShowYearPicker:!1})),b&&i(c,r)}(e)},onMouseEnter:function(){return c&&E(e)}},a.default.createElement(\"span\",{className:b?\"sd\":\"\"},N(e.toString(),O)))})))})));function S(e){var r=[\"rmdp-day\"],n=t.date,a=t.selectedDate,o=t.multiple;if(I(e)&&r.push(\"rmdp-disabled\"),!r.includes(\"rmdp-disabled\")||!x){if(m.year===e&&s&&r.push(\"rmdp-today\"),b)if(v){var d=function(t){var n=t[0],a=t[1];if(1===t.length){if(e===n.year&&r.push(\"rmdp-range\"),c){var o=t[0].year;(e>o&&e<=M||e<o&&e>=M)&&(r.push(\"rmdp-range-hover\"),e===M&&r.push(M>o?\"end\":\"start\"))}}else 2===t.length&&(e>=n.year&&e<=a.year&&r.push(\"rmdp-range\"),e===n.year&&r.push(\"start\"),e===a.year&&r.push(\"end\"))};o?(g(a)?a:[[a]]).forEach((function(e){return d(e)})):d(a)}else[].concat(a).some((function(r){return r&&r.year===e}))&&r.push(\"rmdp-selected\");else e===n.year&&r.push(\"rmdp-selected\");return r.join(\" \")}}function I(e){return h&&e<h.year||y&&e>y.year}}function I(e,r,t){return t||(e?\"MM/YYYY\":r?\"YYYY\":\"YYYY/MM/DD\")}function j(e,r){return e instanceof d.default?e.setCalendar(r):e=new d.default({date:e,calendar:r}),e}function T(e){\"_self\"in a.default.createElement(\"div\")&&console.warn(e.join(\"\\n\"))}var R=new d.default,A=R.calendar,L=R.locale;function F(e,r){return e&&e.constructor!==Object&&(T(W(\"calendar\")),e=void 0),r&&r.constructor!==Object&&(T(W(\"locale\")),r=void 0),[e||A,r||L]}function W(e){return[\"\".concat(e,\" must be an object\"),\"https://shahabyazdi.github.io/react-multi-date-picker/calendars/\"]}function B(e){return e&&e.name?e.name.split(\"_\")[1]:\"\"}function _(e){return[\"fa\",\"ar\"].includes(B(e))}function V(e,r){void 0===r&&(r={});var t=r.insertAt;if(e&&\"undefined\"!=typeof document){var n=document.head||document.getElementsByTagName(\"head\")[0],a=document.createElement(\"style\");a.type=\"text/css\",\"top\"===t&&n.firstChild?n.insertBefore(a,n.firstChild):n.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}}V(\".rmdp-wrapper{background-color:#fff;border-radius:5px;direction:ltr;text-align:center;width:max-content}.rmdp-shadow{box-shadow:0 0 5px #8798ad}.rmdp-border{border:1px solid #cfd8e2}.rmdp-calendar{height:max-content;padding:4px}.rmdp-border-top{border-top:1px solid #cfd8e2}.rmdp-border-bottom{border-bottom:1px solid #cfd8e2}.rmdp-border-left{border-left:1px solid #cfd8e2}.rmdp-border-right{border-right:1px solid #cfd8e2}.rmdp-week,.rmdp-ym{display:flex;justify-content:space-between}.rmdp-ym{height:25%}.rmdp-day,.rmdp-week-day{color:#000;cursor:pointer;height:34px;position:relative;width:34px}.rmdp-week-day{color:#0074d9;cursor:default;font-size:13px;font-weight:500}.rmdp-day span,.rmdp-week-day{display:flex;flex-direction:column;justify-content:center}.rmdp-day span{border-radius:50%;bottom:3px;font-size:14px;left:3px;position:absolute;right:3px;top:3px}.rmdp-day.rmdp-today span{background-color:#7fdbff;color:#fff}.rmdp-day.rmdp-selected span:not(.highlight){background-color:#0074d9;box-shadow:0 0 3px #8798ad;color:#fff}.rmdp-day.rmdp-deactive,.rmdp-day.rmdp-disabled{color:#8798ad}.rmdp-day.rmdp-deactive.rmdp-selected span{background-color:#4ca6f5;box-shadow:0 0 3px #bac5d3}.rmdp-ym .rmdp-day{flex:1;margin:auto}.rmdp-ym .rmdp-day span{border-radius:12px;padding:2px 0}.rmdp-range{background-color:#0074d9;box-shadow:0 0 3px #8798ad;color:#fff}.rmdp-range-hover{background-color:#7ea6f0;color:#fff}.rmdp-range-hover.start,.rmdp-range.start{border-bottom-left-radius:50%;border-top-left-radius:50%}.rmdp-range-hover.end,.rmdp-range.end{border-bottom-right-radius:50%;border-top-right-radius:50%}.rmdp-ym .rmdp-range-hover.start,.rmdp-ym .rmdp-range.start{border-bottom-left-radius:15px;border-top-left-radius:15px}.rmdp-ym .rmdp-range-hover.end,.rmdp-ym .rmdp-range.end{border-bottom-right-radius:15px;border-top-right-radius:15px}.rmdp-day:not(.rmdp-disabled):not(.rmdp-day-hidden) span:hover{background-color:#7ea6f0;color:#fff}.rmdp-day-picker{padding:5px}.rmdp-header{font-size:14px;margin-top:5px;padding:9px 0}.rmdp-month-picker,.rmdp-year-picker{background-color:#fff;border-radius:0 0 5px 5px;bottom:2px;left:2px;position:absolute;right:2px;top:2px}.only.rmdp-month-picker,.only.rmdp-year-picker{height:240px;position:static;width:240px}.rmdp-header-values{color:#000;margin:auto}.rmdp-header-values span{padding:0 0 0 5px}.rmdp-arrow{border:solid #0074d9;border-width:0 2px 2px 0;display:inline-block;height:3px;margin-top:5px;padding:2px;width:3px}.rmdp-right i{margin-right:3px;transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}.rmdp-left i{margin-left:3px;transform:rotate(135deg);-webkit-transform:rotate(135deg)}.rmdp-left{left:0}.rmdp-right{right:0}.rmdp-arrow-container{background:transparent;border:none;border-radius:50%;cursor:pointer;display:flex;height:20px;justify-content:center;margin:0 5px;padding:0;width:20px}.rmdp-arrow-container:hover{background-color:#0074d9;box-shadow:0 0 3px #8798ad}.rmdp-arrow-container:hover .rmdp-arrow{border:solid #fff;border-width:0 2px 2px 0}.rmdp-arrow-container.disabled{cursor:default}.rmdp-arrow-container.disabled:hover{background-color:inherit;box-shadow:inherit}.rmdp-arrow-container.disabled .rmdp-arrow,.rmdp-arrow-container.disabled:hover .rmdp-arrow{border:solid gray;border-width:0 2px 2px 0}.rmdp-rtl{direction:rtl}.rmdp-rtl .rmdp-left i{margin-left:0;margin-right:3px;transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}.rmdp-rtl .rmdp-right i{margin-left:3px;margin-right:0;transform:rotate(135deg);-webkit-transform:rotate(135deg)}.rmdp-rtl .rmdp-right{left:0;right:auto}.rmdp-rtl .rmdp-left{left:auto;right:0}.rmdp-rtl .rmdp-range-hover.start,.rmdp-rtl .rmdp-range.start{border-bottom-left-radius:unset;border-bottom-right-radius:50%;border-top-left-radius:unset;border-top-right-radius:50%}.rmdp-rtl .rmdp-range-hover.end,.rmdp-rtl .rmdp-range.end{border-bottom-left-radius:50%;border-bottom-right-radius:unset;border-top-left-radius:50%;border-top-right-radius:unset}.rmdp-rtl .rmdp-range.start.end{border-radius:50%}.rmdp-rtl .rmdp-ym .rmdp-range-hover.start,.rmdp-rtl .rmdp-ym .rmdp-range.start{border-bottom-right-radius:15px;border-top-right-radius:15px}.rmdp-rtl .rmdp-ym .rmdp-range-hover.end,.rmdp-rtl .rmdp-ym .rmdp-range.end{border-bottom-left-radius:15px;border-top-left-radius:15px}.rmdp-day-hidden,.rmdp-day.rmdp-disabled{cursor:default}.rmdp-selected .highlight{box-shadow:0 0 3px #8798ad}.rmdp-day:not(.rmdp-disabled):not(.rmdp-day-hidden) .highlight-red:hover{background-color:#ff6687}.rmdp-day:not(.rmdp-deactive) .highlight-red{color:#cc0303}.rmdp-day.rmdp-deactive .highlight-red{color:#e08e8e}.rmdp-day.rmdp-selected .highlight-red{background-color:#ea0034;color:#fff}.rmdp-day.rmdp-deactive.rmdp-selected .highlight-red{background-color:#e4b0ba;color:#fff}.rmdp-day:not(.rmdp-disabled):not(.rmdp-day-hidden) .highlight-green:hover{background-color:#4db6ac}.rmdp-day:not(.rmdp-deactive) .highlight-green{color:#00796b}.rmdp-day.rmdp-deactive .highlight-green{color:#7ab3ac}.rmdp-day.rmdp-selected .highlight-green{background-color:#009688;color:#fff}.rmdp-day.rmdp-deactive.rmdp-selected .highlight-green{background-color:#749c98;color:#fff}.rmdp-day-hidden,.rmdp-day-hidden:hover span{background-color:unset;color:transparent}.rmdp-month-name{cursor:default;font-size:14px;margin:3px 0}.rmdp-full-year{grid-template-columns:1fr 1fr 1fr}@media (max-height:450px),(max-width:450px){.rmdp-day,.rmdp-week-day{height:28px;width:28px}.rmdp-day span{font-size:12px;padding-left:.5px}.only.rmdp-month-picker,.only.rmdp-year-picker{height:200px;width:230px}.rmdp-header{padding:3px 0 0}.rmdp-header,.rmdp-month-name{font-size:12px}.rmdp-full-year{grid-template-columns:1fr 1fr}}\");var z=[\"value\",\"calendar\",\"locale\",\"format\",\"onlyMonthPicker\",\"onlyYearPicker\",\"range\",\"multiple\",\"className\",\"role\",\"weekDays\",\"months\",\"children\",\"onChange\",\"showOtherDays\",\"minDate\",\"maxDate\",\"mapDays\",\"disableMonthPicker\",\"disableYearPicker\",\"formattingIgnoreList\",\"onReady\",\"onlyShowInRangeDates\",\"zIndex\",\"plugins\",\"sort\",\"numberOfMonths\",\"currentDate\",\"digits\",\"buttons\",\"renderButton\",\"weekStartDayIndex\",\"disableDayPicker\",\"onPropsChange\",\"onMonthChange\",\"onYearChange\",\"onFocusedDateChange\",\"readOnly\",\"disabled\",\"hideMonth\",\"hideYear\",\"hideWeekDays\",\"shadow\",\"fullYear\",\"displayWeekNumbers\",\"weekNumber\",\"weekPicker\",\"rangeHover\",\"monthYearSeparator\",\"formatMonth\",\"formatYear\",\"highlightToday\",\"headerOrder\",\"style\"],H=[\"datePickerProps\",\"DatePicker\"];function q(r,t){var n,o=r.value,i=r.calendar,u=r.locale,p=r.format,m=r.onlyMonthPicker,h=r.onlyYearPicker,y=r.range,b=void 0!==y&&y,v=r.multiple,x=void 0!==v&&v,w=r.className,k=r.role,D=r.weekDays,O=r.months,M=r.children,j=r.onChange,T=r.showOtherDays,R=r.minDate,A=r.maxDate,L=r.mapDays,W=r.disableMonthPicker,B=r.disableYearPicker,V=r.formattingIgnoreList,q=r.onReady,J=r.onlyShowInRangeDates,$=void 0===J||J,G=r.zIndex,Q=void 0===G?100:G,X=r.plugins,Z=void 0===X?[]:X,ee=r.sort,re=r.numberOfMonths,te=void 0===re?1:re,ne=r.currentDate,ae=r.digits,oe=r.buttons,de=void 0===oe||oe,ie=r.renderButton,le=r.weekStartDayIndex,ue=void 0===le?0:le,ce=r.disableDayPicker,se=r.onPropsChange,fe=r.onMonthChange,pe=r.onYearChange,me=r.onFocusedDateChange,he=r.readOnly,ye=r.disabled,ge=r.hideMonth,be=r.hideYear,ve=r.hideWeekDays,xe=r.shadow,we=void 0===xe||xe,ke=r.fullYear,De=r.displayWeekNumbers,Oe=r.weekNumber,Ye=r.weekPicker,Me=r.rangeHover,Ee=r.monthYearSeparator,Pe=r.formatMonth,Ce=r.formatYear,Ne=r.highlightToday,Se=void 0===Ne||Ne,Ie=r.headerOrder,je=void 0===Ie?[\"LEFT_BUTTON\",\"MONTH_YEAR\",\"RIGHT_BUTTON\"]:Ie,Te=r.style,Re=void 0===Te?{}:Te;s(r,z),!ne||ne instanceof d.default||(console.warn(\"currentDate must be instance of DateObject\"),ne=void 0),(\"number\"!=typeof ue||ue<0||ue>6)&&(ue=0),(\"number\"!=typeof te||te<1||h)&&(te=1),!(x||b||g(o))||b||x||(x=!0),Ye&&(b=!0,x=!1),ke&&(te=12,m=!1,h=!1),h&&!ge&&(ge=!0);var Ae=F(i,u),Le=f(Ae,2);i=Le[0],u=Le[1],p=I(m,h,p),V=P(V),L=[].concat(L).filter(Boolean),Z=[].concat.apply([],Z);var Fe=e.useState({}),We=f(Fe,2),Be=We[0],_e=We[1],Ve={},ze=e.useRef({mustCallOnReady:!0,currentDate:ne});e.useEffect((function(){_e((function(e){var r=ze.current.currentDate,t=e.date,n=e.selectedDate,a=e.initialValue,c=e.focused,s=e.mustSortDates;function f(e){if(e)return e.calendar.name!==i.name&&e.setCalendar(i),e.locale.name!==u.name&&e.setLocale(u),e._format!==p&&e.setFormat(p),e.digits=ae,e.ignoreList=JSON.parse(V),e}function y(e){return new d.default(r||e)}if(o)if(g(n=U(o,i,u,p)))t||(t=y(n.flat()[0]));else if(t&&1!==te){var v=new d.default(t).toFirstOfMonth(),w=new d.default(t).add(te-1,m?\"years\":\"months\").toLastOfMonth();(n<v||n>w)&&(t=new d.default(n))}else t=y(n);else t||(t=y({calendar:i,locale:u,format:p})),a&&(n=void 0);if([].concat(n).flat().forEach(f),f(t),x||b||g(o)){if(n||(n=[]),g(n)||(n=x&&b?[[n]]:[n]),b&&!x&&n.length>2){var k=n[n.length-1];n=[n[0],k],c=k}x&&!b&&ee&&!s?(s=!0,n.sort((function(e,r){return e-r}))):b&&!x&&n.sort((function(e,r){return e-r}))}else g(n)&&(n=n.flat()[n.length-1]);return ke&&t.toFirstOfYear(),delete ze.current.currentDate,l(l({},e),{},{date:t,selectedDate:n,multiple:x,range:b,onlyMonthPicker:m,onlyYearPicker:h,initialValue:e.initialValue||o,value:o,focused:c,calendar:i,locale:u,format:p,mustSortDates:s,year:t.year,today:f(e.today)||new d.default({calendar:i}),weekPicker:Ye})}))}),[o,i,u,p,m,h,b,x,ee,te,ae,V,ke,Ye]),e.useEffect((function(){(R||A)&&_e((function(e){var r=e.calendar,t=e.locale,n=e.format,a=f(K(U(o,r,t,n),R,A,r),3),d=a[0],i=a[1],u=a[2];return l(l({},e),{},{inRangeDates:$?d:e.selectedDate,minDate:i,maxDate:u})}))}),[R,A,$,o]),Be.today&&!ze.current.isReady&&(ze.current.isReady=!0),e.useEffect((function(){ze.current.isReady&&ze.current.mustCallOnReady&&q instanceof Function&&(ze.current.mustCallOnReady=!1,q())}),[ze.current.isReady,q]);var He=\"rmdp-top-class \"+nr([\"top\",\"bottom\"]),qe={top:[],bottom:[],left:[],right:[]},Je=_(null===(n=Be.date)||void 0===n?void 0:n.locale),Ke={state:Be,setState:_e,onChange:Ze,sort:ee,handleFocusedDate:rr,isRTL:Je,fullYear:ke,monthAndYears:dr(),rangeHover:Me,highlightToday:Se,numberOfMonths:te},Ue=arguments[0],$e=Ue.datePickerProps,Ge=Ue.DatePicker,Qe=s(Ue,H);return Xe(),Be.today?a.default.createElement(\"div\",{ref:or,role:k||\"dialog\",className:\"rmdp-wrapper rmdp-\".concat(we?\"shadow\":\"border\",\" \").concat(w||\"\"),style:l({zIndex:Q},Re)},qe.top,a.default.createElement(\"div\",{style:{display:\"flex\"},className:He},qe.left,!ce&&a.default.createElement(\"div\",{className:\"rmdp-calendar \".concat(Je?\"rmdp-rtl\":\"\",\" \").concat(nr([\"left\",\"right\"]))},a.default.createElement(E,l(l({},Ke),{},{disableYearPicker:B,disableMonthPicker:W,buttons:de,renderButton:ie,handleMonthChange:tr,disabled:ye,hideMonth:ge,hideYear:be,monthYearSeparator:Ee,formatMonth:Pe,formatYear:Ce,headerOrder:je})),a.default.createElement(\"div\",{style:{position:\"relative\"}},a.default.createElement(Y,l(l({},Ke),{},{showOtherDays:T,mapDays:L,onlyShowInRangeDates:$,customWeekDays:D,weekStartDayIndex:ue,hideWeekDays:ve,displayWeekNumbers:De,weekNumber:Oe})),!ke&&a.default.createElement(a.default.Fragment,null,!W&&a.default.createElement(C,c({},Ke,{customMonths:O,handleMonthChange:tr})),!B&&a.default.createElement(S,c({},Ke,{onYearChange:pe}))))),qe.right),qe.bottom,M):null;function Xe(){if(ze.current.isReady&&g(Z)){var r={state:Be,setState:_e,registerListener:ar,calendarProps:Qe,datePickerProps:$e,handleChange:Ze,Calendar:ze.current.Calendar,DatePicker:Ge,handlePropsChange:er,handleFocusedDate:function(e){return rr(e)}},t=function(e){return ce?\"bottom\":e.props.position||\"right\"};Z.forEach((function(n,a){if(\"string\"!=typeof n.type){var o={},d=t(n);if(qe[d]&&!n.props.disabled){for(var i=0;i<Z.length;i++)if(\"string\"!=typeof Z[i].type&&!Z[i].props.disabled){if(4===Object.keys(o).length)break;var u=t(Z[i]);[\"top\",\"bottom\"].includes(d)?(u===d&&i>a&&(o.bottom=!0),u===d&&i<a&&(o.top=!0)):(He.includes(\"border-top\")&&(o.top=!0),He.includes(\"border-bottom\")&&(o.bottom=!0),u===d&&i>a&&(o.right=!0),u===d&&i<a&&(o.left=!0))}qe[d].push(e.cloneElement(n,l({key:a,position:d,nodes:o},r)))}}else\"mapDays\"===n.type&&L.push(n.fn(r))}))}}function Ze(e,r){if(!ye){if(e||null===e){if(he)return;Ve.change&&Ve.change.forEach((function(r){return r(e)}))}if(e||null===e){var t=null==j?void 0:j(e);r&&!1!==t&&_e(r)}else r&&_e(r);er({value:e})}}function er(){var e,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!he&&!ye){var t=l(l(l(l({},Qe),$e),r),{},{value:null!==(e=r.value)&&void 0!==e?e:Be.selectedDate});delete t.onPropsChange,null==se||se(t)}}function rr(e,r){he||ye||null==me||me(e,r)}function tr(e){null==fe||fe(e)}function nr(e){return ce||!g(Z)?\"\":Array.from(new Set(Z.map((function(r){if(!r.props)return\"\";var t=r.props.position||\"right\";return e.includes(t)&&!r.props.disabled?\"rmdp-border-\"+t:\"\"})))).join(\" \")}function ar(e,r){Ve[e]||(Ve[e]=[]),Ve[e].push(r)}function or(e){if(e&&(e.date=Be.date,e.set=function(e,r){ye||_e(l(l({},Be),{},{date:new d.default(Be.date.set(e,r))}))}),ze.current.Calendar=e,t instanceof Function)return t(e);t&&(t.current=e)}function dr(){var e=Be.date;if(!e)return[];for(var r=[],t=[],n=e.digits,a=0;a<te;a++){var o=void 0,d=e.year,i=e.monthIndex+a;if(m&&(d+=a),i>11&&(i-=12,m||d++),g(O)&&O.length>=12){var l=O[i];o=g(l)?l[0]:l}else o=e.months[i].name;d=N(d.toString(),n),r.push(o),t.push(d)}return[r,t]}}var J=e.forwardRef(q);function K(e,r,t,n){return r&&(r=j(r,n).set({hour:0,minute:0,second:0,millisecond:0})),t&&(t=j(t,n).set({hour:23,minute:59,second:59,millisecond:999})),g(e)&&(e=e.filter((function(e){return!(r&&e<r)&&!(t&&e>t)}))),[e,r,t]}function U(e,r,t,n){var a=[].concat(e).map((function(e){return g(e)?e.map(o).filter(i):o(e)})).filter(i);return g(e)?a:a.flat()[0];function o(e){return e?e instanceof d.default?e:new d.default({date:e,calendar:r,locale:t,format:n}):{}}function i(e){return g(e)||e.isValid}}V('.rmdp-visible{visibility:visible}.rmdp-invisible{visibility:hidden}.rmdp-input{border:1px solid #c0c4d6;border-radius:5px;height:22px;margin:1px 0;padding:2px 5px}.rmdp-input:focus{border:1px solid #a4b3c5;box-shadow:0 0 2px #a4b3c5;outline:none!important}.rmdp-button{background-color:#0074d9;border:none;border-radius:5px;color:#fff;cursor:pointer;display:inline-block;padding:7px 16px;text-align:center;text-decoration:none;transition:.3s}.rmdp-button:hover{background-color:#143ac5;transition:.4s}.rmdp-button:disabled{background-color:#8798ad}.rmdp-action-button{border-radius:unset;color:#2682d3;float:right;font-weight:700;margin:15px 10px 15px 0}.rmdp-action-button,.rmdp-action-button:hover{background-color:transparent}.rmdp-ep-arrow{overflow:hidden;will-change:transform}.rmdp-ep-arrow:after{background-color:#fff;content:\"\";height:12px;position:absolute;transform:rotate(45deg);width:12px}.rmdp-ep-shadow:after{box-shadow:0 0 6px #8798ad}.rmdp-ep-border:after{border:1px solid #cfd8e2}.rmdp-ep-arrow[direction=top]{border-bottom:1px solid #fff}.rmdp-ep-arrow[direction=left]{border-right:1px solid #fff}.rmdp-ep-arrow[direction=right]{border-left:1px solid #fff;margin-left:-1px}.rmdp-ep-arrow[direction=bottom]{border-top:1px solid #fff;margin-top:-1.5px}.rmdp-ep-arrow[direction=top]:after{left:4px;top:5px}.rmdp-ep-arrow[direction=bottom]:after{left:4px;top:-6px}.rmdp-ep-arrow[direction=left]:after{left:5px;top:3px}.rmdp-ep-arrow[direction=right]:after{left:-6px;top:3px}');var $=[\"value\",\"calendar\",\"locale\",\"format\",\"onlyMonthPicker\",\"onlyYearPicker\",\"onChange\",\"range\",\"multiple\",\"name\",\"id\",\"title\",\"placeholder\",\"required\",\"style\",\"className\",\"inputClass\",\"disabled\",\"render\",\"weekDays\",\"months\",\"children\",\"inputMode\",\"scrollSensitive\",\"hideOnScroll\",\"minDate\",\"maxDate\",\"formattingIgnoreList\",\"containerClassName\",\"calendarPosition\",\"editable\",\"onOpen\",\"onClose\",\"arrowClassName\",\"zIndex\",\"arrow\",\"fixMainPosition\",\"onPositionChange\",\"onPropsChange\",\"digits\",\"readOnly\",\"shadow\",\"onFocusedDateChange\",\"type\",\"weekPicker\",\"mobileLabels\",\"onOpenPickNewDate\",\"mobileButtons\",\"dateSeparator\",\"multipleRangeSeparator\",\"typingTimeout\"],G=[\"label\"];function Q(r,t){var n=r.value,i=r.calendar,u=r.locale,p=r.format,m=r.onlyMonthPicker,h=r.onlyYearPicker,b=r.onChange,v=r.range,x=void 0!==v&&v,w=r.multiple,k=void 0!==w&&w,D=r.name,O=r.id,Y=r.title,M=r.placeholder,E=r.required,C=r.style,S=void 0===C?{}:C,j=r.className,T=void 0===j?\"\":j,R=r.inputClass,A=r.disabled,L=r.render,W=r.weekDays,V=r.months,z=r.children,H=r.inputMode,q=r.scrollSensitive,K=void 0===q||q,U=r.hideOnScroll,Q=r.minDate,X=r.maxDate,re=r.formattingIgnoreList,te=r.containerClassName,ne=void 0===te?\"\":te,ae=r.calendarPosition,oe=void 0===ae?\"bottom-left\":ae,de=r.editable,ie=void 0===de||de,le=r.onOpen,ue=r.onClose,ce=r.arrowClassName,se=void 0===ce?\"\":ce,fe=r.zIndex,pe=void 0===fe?100:fe,me=r.arrow,he=void 0===me||me,ye=r.fixMainPosition,ge=r.onPositionChange,be=r.onPropsChange,ve=r.digits,xe=r.readOnly,we=r.shadow,ke=void 0===we||we,De=r.onFocusedDateChange,Oe=r.type,Ye=r.weekPicker,Me=r.mobileLabels,Ee=r.onOpenPickNewDate,Pe=void 0===Ee||Ee,Ce=r.mobileButtons,Ne=void 0===Ce?[]:Ce,Se=r.dateSeparator,Ie=r.multipleRangeSeparator,je=void 0===Ie?\",\":Ie,Te=r.typingTimeout,Re=void 0===Te?700:Te,Ae=s(r,$),Le=e.useState(),Fe=f(Le,2),We=Fe[0],Be=Fe[1],_e=e.useState(),Ve=f(_e,2),ze=Ve[0],He=Ve[1],qe=e.useState(\"\"),Je=f(qe,2),Ke=Je[0],Ue=Je[1],$e=e.useState(!1),Ge=f($e,2),Qe=Ge[0],Xe=Ge[1],Ze=e.useState(!1),er=f(Ze,2),rr=er[0],tr=er[1],nr=e.useRef(),ar=e.useRef(),or=e.useRef(),dr=e.useRef({isTyping:!1}),ir=Se||(x||Ye?\" ~ \":\", \"),lr=arguments[0],ur=gr(),cr=e.useCallback((function(){if(!1!==(null==ue?void 0:ue())){var e=ee(ar);if(e&&e.forEach((function(e){return e.blur()})),dr.current.mobile){var r=or.current.parentNode.parentNode;r.classList.remove(\"rmdp-calendar-container-mobile\"),r.style.position=\"absolute\",r.style.visibility=\"hidden\"}Xe(!1),tr(!1)}}),[ue]),sr=[{type:\"button\",className:\"rmdp-button rmdp-action-button\",onClick:function(){He(void 0),cr()},label:vr(\"CANCEL\")},{type:\"button\",className:\"rmdp-button rmdp-action-button\",onClick:function(){ze&&(kr(ze,!0),He(void 0)),cr()},label:vr(\"OK\")}];ur&&!dr.current.mobile&&(dr.current=l(l({},dr.current),{},{mobile:!0})),!ur&&dr.current.mobile&&(dr.current=l(l({},dr.current),{},{mobile:!1})),re=P(re),p=I(m,h,p);var fr=F(i,u),pr=f(fr,2);return i=pr[0],u=pr[1],e.useEffect((function(){function e(e){if(Qe&&!dr.current.mobile){var r=[];if([ar.current,or.current].forEach((function(t){var n,a,o;!t||t.contains(e.target)||e.target.classList.contains(\"b-deselect\")||null!==(n=e.target.parentNode)&&void 0!==n&&null!==(a=n.classList)&&void 0!==a&&null!==(o=a.contains)&&void 0!==o&&o.call(a,\"b-deselect\")||r.push(t)})),2===r.length)return cr();or.current&&or.current.contains(e.target)&&(nr.current.removeTransition(),nr.current.refreshPosition())}}function r(){U&&Qe&&cr()}return document.addEventListener(\"click\",e,!1),document.addEventListener(\"scroll\",r,!0),function(){document.removeEventListener(\"click\",e,!1),document.removeEventListener(\"scroll\",r,!0)}}),[cr,t,Qe,U]),e.useEffect((function(){var e=n,r=dr.current,t=r.date,a=r.initialValue,o=function(){return e[e.length-1]};function c(e){if(e)return e instanceof d.default||(e=new d.default({date:e,calendar:i,locale:u,format:p})),e.calendar!==i&&e.setCalendar(i),e.set({weekDays:W,months:V,digits:ve,locale:u,format:p,ignoreList:JSON.parse(re)}),e}n||a||!t?a&&!n&&(a=void 0):e=t;var s=\"\";if(x||k||g(e)){var m=function(e){return e=e.map(c).filter((function(e){return void 0!==e})),x&&e.length>2&&(e=[e[0],o()]),[e,Z(e,ir)]};if(g(e)||(e=x&&k?e?[[e]]:[]:[e]),k&&x)e=e.map((function(r,t){var n=f(m(g(r)?r:[r]),2),a=n[0],o=n[1];return s+=o+(t<e.length-1?\" \".concat(je,\" \"):\"\"),a}));else{var h=f(m(e),2);e=h[0],s=h[1]}s=s.toString().replace(/\\s,\\s$/,\"\")}else g(e)&&(e=o()),(e=c(e))&&(s=e.format());dr.current.isTyping||Ue(s),dr.current=l(l({},dr.current),{},{date:e,separator:ir,initialValue:a||n}),dr.current.mobile&&nr.current.isOpen?He(e):Be(e)}),[n,i,u,p,x,k,ir,m,h,W,V,ve,re]),e.useEffect((function(){var e=dr.current.selection;if(e){var r=ee(ar);0!==r.length&&(r.forEach((function(r){document.activeElement===r&&(r.setSelectionRange(e,e),dr.current.selection=void 0)})),nr.current.refreshPosition())}}),[Ke]),(k||x||g(We)||!ie)&&(H=\"none\"),a.default.createElement(o.default,c({ref:mr,element:hr(),popper:Qe&&yr(),active:!ur&&rr,position:oe,arrow:!ur&&he,fixMainPosition:!K||ye,zIndex:pe,onChange:!ur&&ge,containerClassName:\"rmdp-container \".concat(ne),arrowClassName:[\"rmdp-ep-arrow\",\"rmdp-ep-\".concat(ke?\"shadow\":\"border\"),T,se].join(\" \")},Ae));function mr(e){if(e&&(e.openCalendar=function(){return setTimeout((function(){return xr()}),10)},e.closeCalendar=cr,e.isOpen=Qe&&rr),nr.current=e,t instanceof Function)return t(e);t&&(t.current=e)}function hr(){return L?a.default.createElement(\"div\",{ref:ar},e.isValidElement(L)?e.cloneElement(L,{value:Ke,openCalendar:xr,onFocus:xr,handleValueChange:Dr,onChange:Dr,locale:u,separator:ir}):L instanceof Function?L(Ke,xr,Dr,u,ir):null):a.default.createElement(\"input\",{ref:ar,type:Oe||\"text\",name:D,id:O,title:Y,required:E,onFocus:xr,className:R||\"rmdp-input\",placeholder:M,value:Ke,onChange:Dr,style:S,autoComplete:\"off\",disabled:!!A,inputMode:H||(ur?\"none\":void 0),readOnly:xe})}function yr(){return a.default.createElement(J,c({ref:or,value:ze||We,onChange:kr,range:x,multiple:k,calendar:i,locale:u,format:p,onlyMonthPicker:m,onlyYearPicker:h,className:T+(ur?\" rmdp-mobile\":\"\"),weekDays:W,months:V,digits:ve,minDate:Q,maxDate:X,formattingIgnoreList:JSON.parse(re),onPropsChange:be,shadow:ke,onReady:Or,DatePicker:nr.current,datePickerProps:lr,onFocusedDateChange:Yr,weekPicker:Ye},Ae),z,ur&&br())}function gr(){return\"string\"==typeof T&&T.includes(\"rmdp-mobile\")}function br(){var e=[].concat.apply([],lr.plugins||[]).some((function(e){var r=e.props;return!(void 0===r?{}:r).disabled}));return g(Ne)&&a.default.createElement(\"div\",{className:\"rmdp-action-buttons \".concat(_(u)?\"rmdp-rtl\":\"\",\" \").concat(e?\"rmdp-border-top\":\"\")},Ne.concat(sr).map((function(e,r){var t=e.label,n=s(e,G);return a.default.createElement(\"button\",c({key:r},n),t)})))}function vr(e){var r,t=u||(new d.default).locale;if(\"string\"!=typeof t.name)return e;return(null==Me?void 0:Me[e])||(null===(r={en:{OK:\"OK\",CANCEL:\"CANCEL\"},fa:{OK:\"\u062A\u0623\u06CC\u06CC\u062F\",CANCEL:\"\u0644\u063A\u0648\"},ar:{OK:\"\u062A\u0623\u0643\u064A\u062F\",CANCEL:\"\u0627\u0644\u063A\u0627\u0621\"},hi:{OK:\"\u092A\u0941\u0937\u094D\u091F\u093F\",CANCEL:\"\u0930\u0926\u094D\u0926 \u0915\u0930\u0947\u0902\"}}[B(t)])||void 0===r?void 0:r[e])||e}function xr(){if(!A&&!xe&&!1!==(null==le?void 0:le())){if(wr()){var e=new d.default({calendar:i,locale:u,format:p,months:V,weekDays:W,digits:ve,ignoreList:JSON.parse(re)});(!Q||e>Q)&&(!X||e<X)&&(kr(e),null==be||be(l(l({},lr),{},{value:e})),dr.current.date=e)}var r=ee(ar);ur&&r.length>0&&r.forEach((function(e){return e.blur()})),r.length>0||!Qe?Xe(!0):cr()}}function wr(){return Pe&&!n&&!dr.current.date&&!x&&!k&&!ur}function kr(e,r,t){if(ur&&!r)return He(e);var n=\"\";if(e&&(n=k&&x&&g(e)?e.map((function(e){return Z(e,ir)})).join(\" \".concat(je,\" \")):Z(e,ir)),!1===(null==b?void 0:b(e,{validatedValue:n,input:ar.current,isTyping:!!t})))return Ue(Ke),!1;Be(e),Ue(t||n.toString().replace(/\\s,\\s$/,\"\")),dr.current=l(l({},dr.current),{},{date:e})}function Dr(e){if(ie){dr.current.isTyping=!0,setTimeout((function(){dr.current.isTyping=!1}),Re),dr.current.selection=e.target.selectionStart;var r=e.target.value,t={calendar:i,locale:u,format:p,ignoreList:JSON.parse(re)};if(ve=g(ve)?ve:u.digits,!r)return Ue(\"\"),kr(null);if(ve){var n,a,o=y(ve);try{for(o.s();!(n=o.n()).done;){var c=n.value;r=r.replace(new RegExp(c,\"g\"),ve.indexOf(c))}}catch(e){o.e(e)}finally{o.f()}a=g(We)?k&&x?(r||\"\").split(je).filter(Boolean).map(f):f(r):s(r),kr(g(We)||a.isValid?a:null,void 0,N(r,ve))}}function s(e){return/(?=.*Y)(?=.*M)(?=.*D)/.test(p)?new d.default(l(l({},t),{},{date:e})):new d.default(t).parse(e)}function f(e){return(e||\"\").split(ir).filter(Boolean).map((function(e){return s(e.trim())}))}}function Or(){if(tr(!0),ur){var e=or.current.parentNode.parentNode;e.className=\"rmdp-calendar-container-mobile\",e.style.position=\"fixed\",e.style.transform=\"\",setTimeout((function(){e.style.visibility=\"visible\"}),50)}}function Yr(e,r){g(dr.current.date)||!r||ur||cr(),null==De||De(e,r)}}var X=e.forwardRef(Q);function Z(e,r){var t=[].concat(e).map((function(e){return null!=e&&e.isValid?e.format():\"\"}));return t.toString=function(){return this.filter(Boolean).join(r)},t}function ee(e){return e.current?\"INPUT\"===e.current.tagName?[e.current]:Array.from(e.current.querySelectorAll(\"input\")):[]}Object.defineProperty(exports,\"DateObject\",{enumerable:!0,get:function(){return d.default}}),exports.Calendar=J,exports.default=X,exports.getAllDatesInRange=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],r=arguments.length>1?arguments[1]:void 0;if(!Array.isArray(e))return[];var t=e[0],n=e[e.length-1],a=[];if(!(t instanceof d.default&&n instanceof d.default&&t.isValid&&n.isValid&&!(t>n)))return[];for(t=new d.default(t),n=new d.default(n);t<=n;t.day++)a.push(r?t.toDate():new d.default(t));return a},exports.toDateObject=j;\n", "(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"react\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"MediaQuery\"] = factory(require(\"react\"));\n\telse\n\t\troot[\"MediaQuery\"] = factory(root[\"React\"]);\n})(this, (__WEBPACK_EXTERNAL_MODULE_react__) => {\nreturn ", "/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\n\n'use strict';\n\nexports.match = matchQuery;\nexports.parse = parseQuery;\n\n// -----------------------------------------------------------------------------\n\nvar RE_MEDIA_QUERY     = /(?:(only|not)?\\s*([^\\s\\(\\)]+)(?:\\s*and)?\\s*)?(.+)?/i,\n    RE_MQ_EXPRESSION   = /\\(\\s*([^\\s\\:\\)]+)\\s*(?:\\:\\s*([^\\s\\)]+))?\\s*\\)/,\n    RE_MQ_FEATURE      = /^(?:(min|max)-)?(.+)/,\n    RE_LENGTH_UNIT     = /(em|rem|px|cm|mm|in|pt|pc)?$/,\n    RE_RESOLUTION_UNIT = /(dpi|dpcm|dppx)?$/;\n\nfunction matchQuery(mediaQuery, values) {\n    return parseQuery(mediaQuery).some(function (query) {\n        var inverse = query.inverse;\n\n        // Either the parsed or specified `type` is \"all\", or the types must be\n        // equal for a match.\n        var typeMatch = query.type === 'all' || values.type === query.type;\n\n        // Quit early when `type` doesn't match, but take \"not\" into account.\n        if ((typeMatch && inverse) || !(typeMatch || inverse)) {\n            return false;\n        }\n\n        var expressionsMatch = query.expressions.every(function (expression) {\n            var feature  = expression.feature,\n                modifier = expression.modifier,\n                expValue = expression.value,\n                value    = values[feature];\n\n            // Missing or falsy values don't match.\n            if (!value) { return false; }\n\n            switch (feature) {\n                case 'orientation':\n                case 'scan':\n                    return value.toLowerCase() === expValue.toLowerCase();\n\n                case 'width':\n                case 'height':\n                case 'device-width':\n                case 'device-height':\n                    expValue = toPx(expValue);\n                    value    = toPx(value);\n                    break;\n\n                case 'resolution':\n                    expValue = toDpi(expValue);\n                    value    = toDpi(value);\n                    break;\n\n                case 'aspect-ratio':\n                case 'device-aspect-ratio':\n                case /* Deprecated */ 'device-pixel-ratio':\n                    expValue = toDecimal(expValue);\n                    value    = toDecimal(value);\n                    break;\n\n                case 'grid':\n                case 'color':\n                case 'color-index':\n                case 'monochrome':\n                    expValue = parseInt(expValue, 10) || 1;\n                    value    = parseInt(value, 10) || 0;\n                    break;\n            }\n\n            switch (modifier) {\n                case 'min': return value >= expValue;\n                case 'max': return value <= expValue;\n                default   : return value === expValue;\n            }\n        });\n\n        return (expressionsMatch && !inverse) || (!expressionsMatch && inverse);\n    });\n}\n\nfunction parseQuery(mediaQuery) {\n    return mediaQuery.split(',').map(function (query) {\n        query = query.trim();\n\n        var captures    = query.match(RE_MEDIA_QUERY),\n            modifier    = captures[1],\n            type        = captures[2],\n            expressions = captures[3] || '',\n            parsed      = {};\n\n        parsed.inverse = !!modifier && modifier.toLowerCase() === 'not';\n        parsed.type    = type ? type.toLowerCase() : 'all';\n\n        // Split expressions into a list.\n        expressions = expressions.match(/\\([^\\)]+\\)/g) || [];\n\n        parsed.expressions = expressions.map(function (expression) {\n            var captures = expression.match(RE_MQ_EXPRESSION),\n                feature  = captures[1].toLowerCase().match(RE_MQ_FEATURE);\n\n            return {\n                modifier: feature[1],\n                feature : feature[2],\n                value   : captures[2]\n            };\n        });\n\n        return parsed;\n    });\n}\n\n// -- Utilities ----------------------------------------------------------------\n\nfunction toDecimal(ratio) {\n    var decimal = Number(ratio),\n        numbers;\n\n    if (!decimal) {\n        numbers = ratio.match(/^(\\d+)\\s*\\/\\s*(\\d+)$/);\n        decimal = numbers[1] / numbers[2];\n    }\n\n    return decimal;\n}\n\nfunction toDpi(resolution) {\n    var value = parseFloat(resolution),\n        units = String(resolution).match(RE_RESOLUTION_UNIT)[1];\n\n    switch (units) {\n        case 'dpcm': return value / 2.54;\n        case 'dppx': return value * 96;\n        default    : return value;\n    }\n}\n\nfunction toPx(length) {\n    var value = parseFloat(length),\n        units = String(length).match(RE_LENGTH_UNIT)[1];\n\n    switch (units) {\n        case 'em' : return value * 16;\n        case 'rem': return value * 16;\n        case 'cm' : return value * 96 / 2.54;\n        case 'mm' : return value * 96 / 2.54 / 10;\n        case 'in' : return value * 96;\n        case 'pt' : return value * 72;\n        case 'pc' : return value * 72 / 12;\n        default   : return value;\n    }\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\nexport default hyphenateStyleName\n", "'use strict';\n\nvar staticMatch = require('css-mediaquery').match;\nvar dynamicMatch = typeof window !== 'undefined' ? window.matchMedia : null;\n\n// our fake MediaQueryList\nfunction Mql(query, values, forceStatic){\n  var self = this;\n  if(dynamicMatch && !forceStatic){\n    var mql = dynamicMatch.call(window, query);\n    this.matches = mql.matches;\n    this.media = mql.media;\n    // TODO: is there a time it makes sense to remove this listener?\n    mql.addListener(update);\n  } else {\n    this.matches = staticMatch(query, values);\n    this.media = query;\n  }\n\n  this.addListener = addListener;\n  this.removeListener = removeListener;\n  this.dispose = dispose;\n\n  function addListener(listener){\n    if(mql){\n      mql.addListener(listener);\n    }\n  }\n\n  function removeListener(listener){\n    if(mql){\n      mql.removeListener(listener);\n    }\n  }\n\n  // update ourselves!\n  function update(evt){\n    self.matches = evt.matches;\n    self.media = evt.media;\n  }\n\n  function dispose(){\n    if(mql){\n      mql.removeListener(update);\n    }\n  }\n}\n\nfunction matchMedia(query, values, forceStatic){\n  return new Mql(query, values, forceStatic);\n}\n\nmodule.exports = matchMedia;\n", "/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc');  // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n  var loggedTypeFailures = {};\n  var has = require('./lib/has');\n\n  printWarning = function(text) {\n    var message = 'Warning: ' + text;\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) { /**/ }\n  };\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n  if (process.env.NODE_ENV !== 'production') {\n    for (var typeSpecName in typeSpecs) {\n      if (has(typeSpecs, typeSpecName)) {\n        var error;\n        // Prop type validation may throw. In case they do, we don't want to\n        // fail the render phase where it didn't fail before. So we log it.\n        // After these have been cleaned up, we'll let them throw.\n        try {\n          // This is intentionally an invariant that gets caught. It's the same\n          // behavior as without this statement except with a better message.\n          if (typeof typeSpecs[typeSpecName] !== 'function') {\n            var err = Error(\n              (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +\n              'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +\n              'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'\n            );\n            err.name = 'Invariant Violation';\n            throw err;\n          }\n          error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n        } catch (ex) {\n          error = ex;\n        }\n        if (error && !(error instanceof Error)) {\n          printWarning(\n            (componentName || 'React class') + ': type specification of ' +\n            location + ' `' + typeSpecName + '` is invalid; the type checker ' +\n            'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +\n            'You may have forgotten to pass an argument to the type checker ' +\n            'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +\n            'shape all require an argument).'\n          );\n        }\n        if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n          // Only monitor this failure once because there tends to be a lot of the\n          // same error.\n          loggedTypeFailures[error.message] = true;\n\n          var stack = getStack ? getStack() : '';\n\n          printWarning(\n            'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')\n          );\n        }\n      }\n    }\n  }\n}\n\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\ncheckPropTypes.resetWarningCache = function() {\n  if (process.env.NODE_ENV !== 'production') {\n    loggedTypeFailures = {};\n  }\n}\n\nmodule.exports = checkPropTypes;\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactIs = require('react-is');\nvar assign = require('object-assign');\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\nvar has = require('./lib/has');\nvar checkPropTypes = require('./checkPropTypes');\n\nvar printWarning = function() {};\n\nif (process.env.NODE_ENV !== 'production') {\n  printWarning = function(text) {\n    var message = 'Warning: ' + text;\n    if (typeof console !== 'undefined') {\n      console.error(message);\n    }\n    try {\n      // --- Welcome to debugging React ---\n      // This error was thrown as a convenience so that you can use this stack\n      // to find the callsite that caused this warning to fire.\n      throw new Error(message);\n    } catch (x) {}\n  };\n}\n\nfunction emptyFunctionThatReturnsNull() {\n  return null;\n}\n\nmodule.exports = function(isValidElement, throwOnDirectAccess) {\n  /* global Symbol */\n  var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n  var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n  /**\n   * Returns the iterator method function contained on the iterable object.\n   *\n   * Be sure to invoke the function with the iterable as context:\n   *\n   *     var iteratorFn = getIteratorFn(myIterable);\n   *     if (iteratorFn) {\n   *       var iterator = iteratorFn.call(myIterable);\n   *       ...\n   *     }\n   *\n   * @param {?object} maybeIterable\n   * @return {?function}\n   */\n  function getIteratorFn(maybeIterable) {\n    var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n    if (typeof iteratorFn === 'function') {\n      return iteratorFn;\n    }\n  }\n\n  /**\n   * Collection of methods that allow declaration and validation of props that are\n   * supplied to React components. Example usage:\n   *\n   *   var Props = require('ReactPropTypes');\n   *   var MyArticle = React.createClass({\n   *     propTypes: {\n   *       // An optional string prop named \"description\".\n   *       description: Props.string,\n   *\n   *       // A required enum prop named \"category\".\n   *       category: Props.oneOf(['News','Photos']).isRequired,\n   *\n   *       // A prop named \"dialog\" that requires an instance of Dialog.\n   *       dialog: Props.instanceOf(Dialog).isRequired\n   *     },\n   *     render: function() { ... }\n   *   });\n   *\n   * A more formal specification of how these methods are used:\n   *\n   *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n   *   decl := ReactPropTypes.{type}(.isRequired)?\n   *\n   * Each and every declaration produces a function with the same signature. This\n   * allows the creation of custom validation functions. For example:\n   *\n   *  var MyLink = React.createClass({\n   *    propTypes: {\n   *      // An optional string or URI prop named \"href\".\n   *      href: function(props, propName, componentName) {\n   *        var propValue = props[propName];\n   *        if (propValue != null && typeof propValue !== 'string' &&\n   *            !(propValue instanceof URI)) {\n   *          return new Error(\n   *            'Expected a string or an URI for ' + propName + ' in ' +\n   *            componentName\n   *          );\n   *        }\n   *      }\n   *    },\n   *    render: function() {...}\n   *  });\n   *\n   * @internal\n   */\n\n  var ANONYMOUS = '<<anonymous>>';\n\n  // Important!\n  // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n  var ReactPropTypes = {\n    array: createPrimitiveTypeChecker('array'),\n    bigint: createPrimitiveTypeChecker('bigint'),\n    bool: createPrimitiveTypeChecker('boolean'),\n    func: createPrimitiveTypeChecker('function'),\n    number: createPrimitiveTypeChecker('number'),\n    object: createPrimitiveTypeChecker('object'),\n    string: createPrimitiveTypeChecker('string'),\n    symbol: createPrimitiveTypeChecker('symbol'),\n\n    any: createAnyTypeChecker(),\n    arrayOf: createArrayOfTypeChecker,\n    element: createElementTypeChecker(),\n    elementType: createElementTypeTypeChecker(),\n    instanceOf: createInstanceTypeChecker,\n    node: createNodeChecker(),\n    objectOf: createObjectOfTypeChecker,\n    oneOf: createEnumTypeChecker,\n    oneOfType: createUnionTypeChecker,\n    shape: createShapeTypeChecker,\n    exact: createStrictShapeTypeChecker,\n  };\n\n  /**\n   * inlined Object.is polyfill to avoid requiring consumers ship their own\n   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n   */\n  /*eslint-disable no-self-compare*/\n  function is(x, y) {\n    // SameValue algorithm\n    if (x === y) {\n      // Steps 1-5, 7-10\n      // Steps 6.b-6.e: +0 != -0\n      return x !== 0 || 1 / x === 1 / y;\n    } else {\n      // Step 6.a: NaN == NaN\n      return x !== x && y !== y;\n    }\n  }\n  /*eslint-enable no-self-compare*/\n\n  /**\n   * We use an Error-like object for backward compatibility as people may call\n   * PropTypes directly and inspect their output. However, we don't use real\n   * Errors anymore. We don't inspect their stack anyway, and creating them\n   * is prohibitively expensive if they are created too often, such as what\n   * happens in oneOfType() for any type before the one that matched.\n   */\n  function PropTypeError(message, data) {\n    this.message = message;\n    this.data = data && typeof data === 'object' ? data: {};\n    this.stack = '';\n  }\n  // Make `instanceof Error` still work for returned errors.\n  PropTypeError.prototype = Error.prototype;\n\n  function createChainableTypeChecker(validate) {\n    if (process.env.NODE_ENV !== 'production') {\n      var manualPropTypeCallCache = {};\n      var manualPropTypeWarningCount = 0;\n    }\n    function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n      componentName = componentName || ANONYMOUS;\n      propFullName = propFullName || propName;\n\n      if (secret !== ReactPropTypesSecret) {\n        if (throwOnDirectAccess) {\n          // New behavior only for users of `prop-types` package\n          var err = new Error(\n            'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n            'Use `PropTypes.checkPropTypes()` to call them. ' +\n            'Read more at http://fb.me/use-check-prop-types'\n          );\n          err.name = 'Invariant Violation';\n          throw err;\n        } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n          // Old behavior for people using React.PropTypes\n          var cacheKey = componentName + ':' + propName;\n          if (\n            !manualPropTypeCallCache[cacheKey] &&\n            // Avoid spamming the console because they are often not actionable except for lib authors\n            manualPropTypeWarningCount < 3\n          ) {\n            printWarning(\n              'You are manually calling a React.PropTypes validation ' +\n              'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +\n              'and will throw in the standalone `prop-types` package. ' +\n              'You may be seeing this warning due to a third-party PropTypes ' +\n              'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'\n            );\n            manualPropTypeCallCache[cacheKey] = true;\n            manualPropTypeWarningCount++;\n          }\n        }\n      }\n      if (props[propName] == null) {\n        if (isRequired) {\n          if (props[propName] === null) {\n            return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n          }\n          return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n        }\n        return null;\n      } else {\n        return validate(props, propName, componentName, location, propFullName);\n      }\n    }\n\n    var chainedCheckType = checkType.bind(null, false);\n    chainedCheckType.isRequired = checkType.bind(null, true);\n\n    return chainedCheckType;\n  }\n\n  function createPrimitiveTypeChecker(expectedType) {\n    function validate(props, propName, componentName, location, propFullName, secret) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== expectedType) {\n        // `propValue` being instance of, say, date/regexp, pass the 'object'\n        // check, but we can offer a more precise error message here rather than\n        // 'of type `object`'.\n        var preciseType = getPreciseType(propValue);\n\n        return new PropTypeError(\n          'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),\n          {expectedType: expectedType}\n        );\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createAnyTypeChecker() {\n    return createChainableTypeChecker(emptyFunctionThatReturnsNull);\n  }\n\n  function createArrayOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n      }\n      var propValue = props[propName];\n      if (!Array.isArray(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n      }\n      for (var i = 0; i < propValue.length; i++) {\n        var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n        if (error instanceof Error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createElementTypeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      if (!isValidElement(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createElementTypeTypeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      if (!ReactIs.isValidElementType(propValue)) {\n        var propType = getPropType(propValue);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createInstanceTypeChecker(expectedClass) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!(props[propName] instanceof expectedClass)) {\n        var expectedClassName = expectedClass.name || ANONYMOUS;\n        var actualClassName = getClassName(props[propName]);\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createEnumTypeChecker(expectedValues) {\n    if (!Array.isArray(expectedValues)) {\n      if (process.env.NODE_ENV !== 'production') {\n        if (arguments.length > 1) {\n          printWarning(\n            'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +\n            'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'\n          );\n        } else {\n          printWarning('Invalid argument supplied to oneOf, expected an array.');\n        }\n      }\n      return emptyFunctionThatReturnsNull;\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      for (var i = 0; i < expectedValues.length; i++) {\n        if (is(propValue, expectedValues[i])) {\n          return null;\n        }\n      }\n\n      var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {\n        var type = getPreciseType(value);\n        if (type === 'symbol') {\n          return String(value);\n        }\n        return value;\n      });\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createObjectOfTypeChecker(typeChecker) {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (typeof typeChecker !== 'function') {\n        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n      }\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n      }\n      for (var key in propValue) {\n        if (has(propValue, key)) {\n          var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n          if (error instanceof Error) {\n            return error;\n          }\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createUnionTypeChecker(arrayOfTypeCheckers) {\n    if (!Array.isArray(arrayOfTypeCheckers)) {\n      process.env.NODE_ENV !== 'production' ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n      return emptyFunctionThatReturnsNull;\n    }\n\n    for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n      var checker = arrayOfTypeCheckers[i];\n      if (typeof checker !== 'function') {\n        printWarning(\n          'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +\n          'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'\n        );\n        return emptyFunctionThatReturnsNull;\n      }\n    }\n\n    function validate(props, propName, componentName, location, propFullName) {\n      var expectedTypes = [];\n      for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n        var checker = arrayOfTypeCheckers[i];\n        var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);\n        if (checkerResult == null) {\n          return null;\n        }\n        if (checkerResult.data && has(checkerResult.data, 'expectedType')) {\n          expectedTypes.push(checkerResult.data.expectedType);\n        }\n      }\n      var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';\n      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createNodeChecker() {\n    function validate(props, propName, componentName, location, propFullName) {\n      if (!isNode(props[propName])) {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function invalidValidatorError(componentName, location, propFullName, key, type) {\n    return new PropTypeError(\n      (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +\n      'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'\n    );\n  }\n\n  function createShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      for (var key in shapeTypes) {\n        var checker = shapeTypes[key];\n        if (typeof checker !== 'function') {\n          return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n    return createChainableTypeChecker(validate);\n  }\n\n  function createStrictShapeTypeChecker(shapeTypes) {\n    function validate(props, propName, componentName, location, propFullName) {\n      var propValue = props[propName];\n      var propType = getPropType(propValue);\n      if (propType !== 'object') {\n        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n      }\n      // We need to check all keys in case some are required but missing from props.\n      var allKeys = assign({}, props[propName], shapeTypes);\n      for (var key in allKeys) {\n        var checker = shapeTypes[key];\n        if (has(shapeTypes, key) && typeof checker !== 'function') {\n          return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));\n        }\n        if (!checker) {\n          return new PropTypeError(\n            'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +\n            '\\nBad object: ' + JSON.stringify(props[propName], null, '  ') +\n            '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, '  ')\n          );\n        }\n        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n        if (error) {\n          return error;\n        }\n      }\n      return null;\n    }\n\n    return createChainableTypeChecker(validate);\n  }\n\n  function isNode(propValue) {\n    switch (typeof propValue) {\n      case 'number':\n      case 'string':\n      case 'undefined':\n        return true;\n      case 'boolean':\n        return !propValue;\n      case 'object':\n        if (Array.isArray(propValue)) {\n          return propValue.every(isNode);\n        }\n        if (propValue === null || isValidElement(propValue)) {\n          return true;\n        }\n\n        var iteratorFn = getIteratorFn(propValue);\n        if (iteratorFn) {\n          var iterator = iteratorFn.call(propValue);\n          var step;\n          if (iteratorFn !== propValue.entries) {\n            while (!(step = iterator.next()).done) {\n              if (!isNode(step.value)) {\n                return false;\n              }\n            }\n          } else {\n            // Iterator will provide entry [k,v] tuples rather than values.\n            while (!(step = iterator.next()).done) {\n              var entry = step.value;\n              if (entry) {\n                if (!isNode(entry[1])) {\n                  return false;\n                }\n              }\n            }\n          }\n        } else {\n          return false;\n        }\n\n        return true;\n      default:\n        return false;\n    }\n  }\n\n  function isSymbol(propType, propValue) {\n    // Native Symbol.\n    if (propType === 'symbol') {\n      return true;\n    }\n\n    // falsy value can't be a Symbol\n    if (!propValue) {\n      return false;\n    }\n\n    // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n    if (propValue['@@toStringTag'] === 'Symbol') {\n      return true;\n    }\n\n    // Fallback for non-spec compliant Symbols which are polyfilled.\n    if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n      return true;\n    }\n\n    return false;\n  }\n\n  // Equivalent of `typeof` but with special handling for array and regexp.\n  function getPropType(propValue) {\n    var propType = typeof propValue;\n    if (Array.isArray(propValue)) {\n      return 'array';\n    }\n    if (propValue instanceof RegExp) {\n      // Old webkits (at least until Android 4.0) return 'function' rather than\n      // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n      // passes PropTypes.object.\n      return 'object';\n    }\n    if (isSymbol(propType, propValue)) {\n      return 'symbol';\n    }\n    return propType;\n  }\n\n  // This handles more types than `getPropType`. Only used for error messages.\n  // See `createPrimitiveTypeChecker`.\n  function getPreciseType(propValue) {\n    if (typeof propValue === 'undefined' || propValue === null) {\n      return '' + propValue;\n    }\n    var propType = getPropType(propValue);\n    if (propType === 'object') {\n      if (propValue instanceof Date) {\n        return 'date';\n      } else if (propValue instanceof RegExp) {\n        return 'regexp';\n      }\n    }\n    return propType;\n  }\n\n  // Returns a string that is postfixed to a warning about an invalid type.\n  // For example, \"undefined\" or \"of type array\"\n  function getPostfixForTypeWarning(value) {\n    var type = getPreciseType(value);\n    switch (type) {\n      case 'array':\n      case 'object':\n        return 'an ' + type;\n      case 'boolean':\n      case 'date':\n      case 'regexp':\n        return 'a ' + type;\n      default:\n        return type;\n    }\n  }\n\n  // Returns class name of the object, if any.\n  function getClassName(propValue) {\n    if (!propValue.constructor || !propValue.constructor.name) {\n      return ANONYMOUS;\n    }\n    return propValue.constructor.name;\n  }\n\n  ReactPropTypes.checkPropTypes = checkPropTypes;\n  ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;\n  ReactPropTypes.PropTypes = ReactPropTypes;\n\n  return ReactPropTypes;\n};\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n  var ReactIs = require('react-is');\n\n  // By explicitly using `prop-types` you are opting into new development behavior.\n  // http://fb.me/prop-types-in-prod\n  var throwOnDirectAccess = true;\n  module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n  // By explicitly using `prop-types` you are opting into new production behavior.\n  // http://fb.me/prop-types-in-prod\n  module.exports = require('./factoryWithThrowingShims')();\n}\n", "/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n", "module.exports = Function.call.bind(Object.prototype.hasOwnProperty);\n", "/** @license React v16.13.1\n * react-is.development.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\n'use strict';\n\n\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n'use strict';\n\n// The Symbol used to tag the ReactElement-like types. If there is no native Symbol\n// nor polyfill, then a plain number is used for performance.\nvar hasSymbol = typeof Symbol === 'function' && Symbol.for;\nvar REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;\nvar REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;\nvar REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;\nvar REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;\nvar REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;\nvar REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;\nvar REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary\n// (unstable) APIs that have been removed. Can we remove the symbols?\n\nvar REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;\nvar REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;\nvar REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;\nvar REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;\nvar REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;\nvar REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;\nvar REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;\nvar REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;\nvar REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;\nvar REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;\nvar REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;\n\nfunction isValidElementType(type) {\n  return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.\n  type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);\n}\n\nfunction typeOf(object) {\n  if (typeof object === 'object' && object !== null) {\n    var $$typeof = object.$$typeof;\n\n    switch ($$typeof) {\n      case REACT_ELEMENT_TYPE:\n        var type = object.type;\n\n        switch (type) {\n          case REACT_ASYNC_MODE_TYPE:\n          case REACT_CONCURRENT_MODE_TYPE:\n          case REACT_FRAGMENT_TYPE:\n          case REACT_PROFILER_TYPE:\n          case REACT_STRICT_MODE_TYPE:\n          case REACT_SUSPENSE_TYPE:\n            return type;\n\n          default:\n            var $$typeofType = type && type.$$typeof;\n\n            switch ($$typeofType) {\n              case REACT_CONTEXT_TYPE:\n              case REACT_FORWARD_REF_TYPE:\n              case REACT_LAZY_TYPE:\n              case REACT_MEMO_TYPE:\n              case REACT_PROVIDER_TYPE:\n                return $$typeofType;\n\n              default:\n                return $$typeof;\n            }\n\n        }\n\n      case REACT_PORTAL_TYPE:\n        return $$typeof;\n    }\n  }\n\n  return undefined;\n} // AsyncMode is deprecated along with isAsyncMode\n\nvar AsyncMode = REACT_ASYNC_MODE_TYPE;\nvar ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');\n    }\n  }\n\n  return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;\n}\nfunction isConcurrentMode(object) {\n  return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;\n}\nfunction isContextConsumer(object) {\n  return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n  return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n  return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n  return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n  return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n  return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n  return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n  return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n  return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n  return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\n\nexports.AsyncMode = AsyncMode;\nexports.ConcurrentMode = ConcurrentMode;\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n  })();\n}\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", "function shallowEqualObjects(objA, objB) {\n  if (objA === objB) {\n    return true;\n  }\n\n  if (!objA || !objB) {\n    return false;\n  }\n\n  var aKeys = Object.keys(objA);\n  var bKeys = Object.keys(objB);\n  var len = aKeys.length;\n\n  if (bKeys.length !== len) {\n    return false;\n  }\n\n  for (var i = 0; i < len; i++) {\n    var key = aKeys[i];\n\n    if (objA[key] !== objB[key] || !Object.prototype.hasOwnProperty.call(objB, key)) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nfunction shallowEqualArrays(arrA, arrB) {\n  if (arrA === arrB) {\n    return true;\n  }\n\n  if (!arrA || !arrB) {\n    return false;\n  }\n\n  var len = arrA.length;\n\n  if (arrB.length !== len) {\n    return false;\n  }\n\n  for (var i = 0; i < len; i++) {\n    if (arrA[i] !== arrB[i]) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\nexport { shallowEqualArrays, shallowEqualObjects };\n", "import useMediaQuery from './useMediaQuery';\nimport { ReactNode, ReactElement, FC, CSSProperties } from 'react';\nimport { MediaQueryAllQueryable, MediaQueryMatchers } from './types';\n\ninterface MediaQueryProps extends MediaQueryAllQueryable {\n  component?: ReactNode\n  // eslint-disable-next-line @typescript-eslint/ban-types\n  children?: ReactNode | ((matches: boolean) => ReactNode);\n  query?: string;\n  style?: CSSProperties;\n  className?: string;\n  device?: MediaQueryMatchers;\n  values?: Partial<MediaQueryMatchers>;\n  onBeforeChange?: (_matches: boolean) => void;\n  onChange?: (_matches: boolean) => void;\n}\n\n// ReactNode and ReactElement typings are a little funky for functional components, so the ReactElement cast is needed on the return\nconst MediaQuery: FC<MediaQueryProps> = ({\n  children,\n  device,\n  onChange,\n  ...settings\n}) => {\n  const matches = useMediaQuery(settings, device, onChange);\n\n  if (typeof children === 'function') {\n    return children(matches) as ReactElement;\n  }\n  return matches ? children as ReactElement : null;\n};\n\nexport default MediaQuery;\n", "import { createContext } from 'react'\nimport { MediaQueryAllQueryable } from './types'\n\nconst Context = createContext<Partial<MediaQueryAllQueryable> | undefined>(undefined)\n\nexport default Context\n", "import useMediaQuery from './useMediaQuery'\nimport MediaQuery from './Component'\nimport toQuery from './toQuery'\nimport Context from './Context'\n\nexport {\n  MediaQuery as default,\n  useMediaQuery,\n  toQuery,\n  Context\n}\n\nexport type {\n  MediaQueryTypes,\n  MediaQueryType,\n  MediaQueryFeatures,\n  MediaQueryMatchers,\n  MediaQueryAllQueryable\n} from './types'\n", "import PropTypes from 'prop-types'\n\nconst stringOrNumber = PropTypes.oneOfType([\n  PropTypes.string,\n  PropTypes.number\n])\n\n// media types\nconst types = {\n  all: PropTypes.bool,\n  grid: PropTypes.bool,\n  aural: PropTypes.bool,\n  braille: PropTypes.bool,\n  handheld: PropTypes.bool,\n  print: PropTypes.bool,\n  projection: PropTypes.bool,\n  screen: PropTypes.bool,\n  tty: PropTypes.bool,\n  tv: PropTypes.bool,\n  embossed: PropTypes.bool\n}\n\n// properties that match media queries\nconst matchers = {\n  orientation: PropTypes.oneOf([\n    'portrait',\n    'landscape'\n  ]),\n\n  scan: PropTypes.oneOf([\n    'progressive',\n    'interlace'\n  ]),\n\n  aspectRatio: PropTypes.string,\n  deviceAspectRatio: PropTypes.string,\n\n  height: stringOrNumber,\n  deviceHeight: stringOrNumber,\n\n  width: stringOrNumber,\n  deviceWidth: stringOrNumber,\n\n  color: PropTypes.bool,\n\n  colorIndex: PropTypes.bool,\n\n  monochrome: PropTypes.bool,\n  resolution: stringOrNumber,\n  type: Object.keys(types)\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nconst { type, ...featureMatchers } = matchers\n\n// media features\nconst features = {\n  minAspectRatio: PropTypes.string,\n  maxAspectRatio: PropTypes.string,\n  minDeviceAspectRatio: PropTypes.string,\n  maxDeviceAspectRatio: PropTypes.string,\n\n  minHeight: stringOrNumber,\n  maxHeight: stringOrNumber,\n  minDeviceHeight: stringOrNumber,\n  maxDeviceHeight: stringOrNumber,\n\n  minWidth: stringOrNumber,\n  maxWidth: stringOrNumber,\n  minDeviceWidth: stringOrNumber,\n  maxDeviceWidth: stringOrNumber,\n\n  minColor: PropTypes.number,\n  maxColor: PropTypes.number,\n\n  minColorIndex: PropTypes.number,\n  maxColorIndex: PropTypes.number,\n\n  minMonochrome: PropTypes.number,\n  maxMonochrome: PropTypes.number,\n\n  minResolution: stringOrNumber,\n  maxResolution: stringOrNumber,\n\n  ...featureMatchers\n}\n\nconst all = { ...types, ...features }\n\nexport default {\n  all: all,\n  types: types,\n  matchers: matchers,\n  features: features\n}\n", "import hyphenate from 'hyphenate-style-name'\nimport mq from './mediaQuery'\nimport { MediaQueryAllQueryable } from './types'\n\nconst negate = (cond: string) => `not ${cond}`\n\nconst keyVal = (k: string, v: unknown): string => {\n  const realKey = hyphenate(k)\n\n  // px shorthand\n  if (typeof v === 'number') {\n    v = `${v}px`\n  }\n  if (v === true) {\n    return realKey\n  }\n  if (v === false) {\n    return negate(realKey)\n  }\n  return `(${realKey}: ${v})`\n}\n\nconst join = (conds: string[]): string => conds.join(' and ')\n\nconst toQuery = (obj: Partial<MediaQueryAllQueryable>): string => {\n  const rules: string[] = []\n  Object.keys(mq.all).forEach((k) => {\n    const v = obj[k as keyof MediaQueryAllQueryable]\n    if (v != null) {\n      rules.push(keyVal(k, v))\n    }\n  })\n  return join(rules)\n}\n\nexport default toQuery\n", "import { useRef, useEffect, useContext, useState } from 'react'\nimport matchMedia from 'matchmediaquery'\nimport hyphenate from 'hyphenate-style-name'\nimport { shallowEqualObjects } from 'shallow-equal'\nimport toQuery from './toQuery'\nimport Context from './Context'\nimport { MediaQueryAllQueryable, MediaQueryMatchers } from './types'\n\ntype MediaQuerySettings = Partial<MediaQueryAllQueryable & { query?: string }>\ntype HyphenateKeyTypes = MediaQueryMatchers | MediaQueryAllQueryable;\n\nconst makeQuery = (settings: MediaQuerySettings) => settings.query || toQuery(settings)\n\nconst hyphenateKeys = (obj?: HyphenateKeyTypes)  => {\n  type K = keyof HyphenateKeyTypes;\n\n  if (!obj) return undefined\n  const keys = Object.keys(obj) as K[]\n\n  return keys.reduce((result, key) => {\n    result[hyphenate(key)] = obj[key]\n    return result\n  }, {} as Record<string, typeof obj[K]>)\n}\n\nconst useIsUpdate = () => {\n  const ref = useRef(false)\n\n  useEffect(() => {\n    ref.current = true\n  }, [])\n\n  return ref.current\n}\n\nconst useDevice = (deviceFromProps?: MediaQueryMatchers): Partial<MediaQueryAllQueryable> | undefined => {\n  const deviceFromContext = useContext(Context)\n  const getDevice = () =>\n    hyphenateKeys(deviceFromProps) || hyphenateKeys(deviceFromContext)\n  const [ device, setDevice ] = useState(getDevice)\n\n  useEffect(() => {\n    const newDevice = getDevice()\n    if (!shallowEqualObjects(device, newDevice)) {\n      setDevice(newDevice)\n    }\n  }, [ deviceFromProps, deviceFromContext ])\n\n  return device\n}\n\nconst useQuery = (settings: MediaQuerySettings) => {\n  const getQuery = () => makeQuery(settings)\n  const [ query, setQuery ] = useState(getQuery)\n\n  useEffect(() => {\n    const newQuery = getQuery()\n    if (query !== newQuery) {\n      setQuery(newQuery)\n    }\n  }, [ settings ])\n\n  return query\n}\n\nconst useMatchMedia = (query: string, device?: MediaQueryMatchers) => {\n  const getMatchMedia = () => matchMedia(query, device || {}, !!device)\n  const [ mq, setMq ] = useState(getMatchMedia)\n  const isUpdate = useIsUpdate()\n\n  useEffect(() => {\n    if (isUpdate) {\n      // skip on mounting, it has already been set\n      const newMq = getMatchMedia()\n      setMq(newMq)\n\n      return () => {\n        if (newMq) {\n          newMq.dispose()\n        }\n      }\n    }\n  }, [ query, device ])\n\n  return mq\n}\n\nconst useMatches = (mediaQuery: MediaQueryList): boolean => {\n  const [ matches, setMatches ] = useState<boolean>(mediaQuery.matches)\n\n  useEffect(() => {\n    const updateMatches = (ev: MediaQueryListEvent) => {\n      setMatches(ev.matches)\n    }\n    mediaQuery.addListener(updateMatches)\n    setMatches(mediaQuery.matches)\n\n    return () => {\n      mediaQuery.removeListener(updateMatches)\n    }\n  }, [ mediaQuery ])\n\n  return matches\n}\n\nconst useMediaQuery = (settings: MediaQuerySettings, device?: MediaQueryMatchers, onChange?: (_: boolean) => void) => {\n  const deviceSettings = useDevice(device)\n  const query = useQuery(settings)\n  if (!query) throw new Error('Invalid or missing MediaQuery!')\n  const mq = useMatchMedia(query, deviceSettings)\n  const matches = useMatches(mq as unknown as MediaQueryList)\n  const isUpdate = useIsUpdate()\n\n  useEffect(() => {\n    if (isUpdate && onChange) {\n      onChange(matches)\n    }\n  }, [ matches ])\n\n  useEffect(() => () => {\n    if (mq) {\n      mq.dispose()\n    }\n  }, [])\n\n  return matches\n}\n\nexport default useMediaQuery\n", "module.exports = __WEBPACK_EXTERNAL_MODULE_react__;", "// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n", "// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};", "__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))", "// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};", "", "// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/index.ts\");\n", "", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: ()=>_default\n});\nfunction _default(value) {\n    value = `${value}`;\n    if (value === \"0\") {\n        return \"0\";\n    }\n    // Flip sign of numbers\n    if (/^[+-]?(\\d+|\\d*\\.\\d+)(e[+-]?\\d+)?(%|\\w+)?$/.test(value)) {\n        return value.replace(/^[+-]?/, (sign)=>sign === \"-\" ? \"\" : \"-\");\n    }\n    // What functions we support negating numeric values for\n    // var() isn't inherently a numeric function but we support it anyway\n    // The trigonometric functions are omitted because you'll need to use calc(\u2026) with them _anyway_\n    // to produce generally useful results and that will be covered already\n    let numericFunctions = [\n        \"var\",\n        \"calc\",\n        \"min\",\n        \"max\",\n        \"clamp\"\n    ];\n    for (const fn of numericFunctions){\n        if (value.includes(`${fn}(`)) {\n            return `calc(${value} * -1)`;\n        }\n    }\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: ()=>_default\n});\nconst _default = [\n    \"preflight\",\n    \"container\",\n    \"accessibility\",\n    \"pointerEvents\",\n    \"visibility\",\n    \"position\",\n    \"inset\",\n    \"isolation\",\n    \"zIndex\",\n    \"order\",\n    \"gridColumn\",\n    \"gridColumnStart\",\n    \"gridColumnEnd\",\n    \"gridRow\",\n    \"gridRowStart\",\n    \"gridRowEnd\",\n    \"float\",\n    \"clear\",\n    \"margin\",\n    \"boxSizing\",\n    \"display\",\n    \"aspectRatio\",\n    \"height\",\n    \"maxHeight\",\n    \"minHeight\",\n    \"width\",\n    \"minWidth\",\n    \"maxWidth\",\n    \"flex\",\n    \"flexShrink\",\n    \"flexGrow\",\n    \"flexBasis\",\n    \"tableLayout\",\n    \"borderCollapse\",\n    \"borderSpacing\",\n    \"transformOrigin\",\n    \"translate\",\n    \"rotate\",\n    \"skew\",\n    \"scale\",\n    \"transform\",\n    \"animation\",\n    \"cursor\",\n    \"touchAction\",\n    \"userSelect\",\n    \"resize\",\n    \"scrollSnapType\",\n    \"scrollSnapAlign\",\n    \"scrollSnapStop\",\n    \"scrollMargin\",\n    \"scrollPadding\",\n    \"listStylePosition\",\n    \"listStyleType\",\n    \"appearance\",\n    \"columns\",\n    \"breakBefore\",\n    \"breakInside\",\n    \"breakAfter\",\n    \"gridAutoColumns\",\n    \"gridAutoFlow\",\n    \"gridAutoRows\",\n    \"gridTemplateColumns\",\n    \"gridTemplateRows\",\n    \"flexDirection\",\n    \"flexWrap\",\n    \"placeContent\",\n    \"placeItems\",\n    \"alignContent\",\n    \"alignItems\",\n    \"justifyContent\",\n    \"justifyItems\",\n    \"gap\",\n    \"space\",\n    \"divideWidth\",\n    \"divideStyle\",\n    \"divideColor\",\n    \"divideOpacity\",\n    \"placeSelf\",\n    \"alignSelf\",\n    \"justifySelf\",\n    \"overflow\",\n    \"overscrollBehavior\",\n    \"scrollBehavior\",\n    \"textOverflow\",\n    \"whitespace\",\n    \"wordBreak\",\n    \"borderRadius\",\n    \"borderWidth\",\n    \"borderStyle\",\n    \"borderColor\",\n    \"borderOpacity\",\n    \"backgroundColor\",\n    \"backgroundOpacity\",\n    \"backgroundImage\",\n    \"gradientColorStops\",\n    \"boxDecorationBreak\",\n    \"backgroundSize\",\n    \"backgroundAttachment\",\n    \"backgroundClip\",\n    \"backgroundPosition\",\n    \"backgroundRepeat\",\n    \"backgroundOrigin\",\n    \"fill\",\n    \"stroke\",\n    \"strokeWidth\",\n    \"objectFit\",\n    \"objectPosition\",\n    \"padding\",\n    \"textAlign\",\n    \"textIndent\",\n    \"verticalAlign\",\n    \"fontFamily\",\n    \"fontSize\",\n    \"fontWeight\",\n    \"textTransform\",\n    \"fontStyle\",\n    \"fontVariantNumeric\",\n    \"lineHeight\",\n    \"letterSpacing\",\n    \"textColor\",\n    \"textOpacity\",\n    \"textDecoration\",\n    \"textDecorationColor\",\n    \"textDecorationStyle\",\n    \"textDecorationThickness\",\n    \"textUnderlineOffset\",\n    \"fontSmoothing\",\n    \"placeholderColor\",\n    \"placeholderOpacity\",\n    \"caretColor\",\n    \"accentColor\",\n    \"opacity\",\n    \"backgroundBlendMode\",\n    \"mixBlendMode\",\n    \"boxShadow\",\n    \"boxShadowColor\",\n    \"outlineStyle\",\n    \"outlineWidth\",\n    \"outlineOffset\",\n    \"outlineColor\",\n    \"ringWidth\",\n    \"ringColor\",\n    \"ringOpacity\",\n    \"ringOffsetWidth\",\n    \"ringOffsetColor\",\n    \"blur\",\n    \"brightness\",\n    \"contrast\",\n    \"dropShadow\",\n    \"grayscale\",\n    \"hueRotate\",\n    \"invert\",\n    \"saturate\",\n    \"sepia\",\n    \"filter\",\n    \"backdropBlur\",\n    \"backdropBrightness\",\n    \"backdropContrast\",\n    \"backdropGrayscale\",\n    \"backdropHueRotate\",\n    \"backdropInvert\",\n    \"backdropOpacity\",\n    \"backdropSaturate\",\n    \"backdropSepia\",\n    \"backdropFilter\",\n    \"transitionProperty\",\n    \"transitionDelay\",\n    \"transitionDuration\",\n    \"transitionTimingFunction\",\n    \"willChange\",\n    \"content\"\n];\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: ()=>_default\n});\nfunction _default(pluginConfig, plugins) {\n    if (pluginConfig === undefined) {\n        return plugins;\n    }\n    const pluginNames = Array.isArray(pluginConfig) ? pluginConfig : [\n        ...new Set(plugins.filter((pluginName)=>{\n            return pluginConfig !== false && pluginConfig[pluginName] !== false;\n        }).concat(Object.keys(pluginConfig).filter((pluginName)=>{\n            return pluginConfig[pluginName] !== false;\n        })))\n    ];\n    return pluginNames;\n}\n", "/** @type {import('tailwindcss').Config} */\nmodule.exports = {\n  content: [],\n  presets: [],\n  darkMode: 'media', // or 'class'\n  theme: {\n    screens: {\n      sm: '640px',\n      md: '768px',\n      lg: '1024px',\n      xl: '1280px',\n      '2xl': '1536px',\n    },\n    supports: {},\n    colors: ({ colors }) => ({\n      inherit: colors.inherit,\n      current: colors.current,\n      transparent: colors.transparent,\n      black: colors.black,\n      white: colors.white,\n      slate: colors.slate,\n      gray: colors.gray,\n      zinc: colors.zinc,\n      neutral: colors.neutral,\n      stone: colors.stone,\n      red: colors.red,\n      orange: colors.orange,\n      amber: colors.amber,\n      yellow: colors.yellow,\n      lime: colors.lime,\n      green: colors.green,\n      emerald: colors.emerald,\n      teal: colors.teal,\n      cyan: colors.cyan,\n      sky: colors.sky,\n      blue: colors.blue,\n      indigo: colors.indigo,\n      violet: colors.violet,\n      purple: colors.purple,\n      fuchsia: colors.fuchsia,\n      pink: colors.pink,\n      rose: colors.rose,\n    }),\n    columns: {\n      auto: 'auto',\n      1: '1',\n      2: '2',\n      3: '3',\n      4: '4',\n      5: '5',\n      6: '6',\n      7: '7',\n      8: '8',\n      9: '9',\n      10: '10',\n      11: '11',\n      12: '12',\n      '3xs': '16rem',\n      '2xs': '18rem',\n      xs: '20rem',\n      sm: '24rem',\n      md: '28rem',\n      lg: '32rem',\n      xl: '36rem',\n      '2xl': '42rem',\n      '3xl': '48rem',\n      '4xl': '56rem',\n      '5xl': '64rem',\n      '6xl': '72rem',\n      '7xl': '80rem',\n    },\n    spacing: {\n      px: '1px',\n      0: '0px',\n      0.5: '0.125rem',\n      1: '0.25rem',\n      1.5: '0.375rem',\n      2: '0.5rem',\n      2.5: '0.625rem',\n      3: '0.75rem',\n      3.5: '0.875rem',\n      4: '1rem',\n      5: '1.25rem',\n      6: '1.5rem',\n      7: '1.75rem',\n      8: '2rem',\n      9: '2.25rem',\n      10: '2.5rem',\n      11: '2.75rem',\n      12: '3rem',\n      14: '3.5rem',\n      16: '4rem',\n      20: '5rem',\n      24: '6rem',\n      28: '7rem',\n      32: '8rem',\n      36: '9rem',\n      40: '10rem',\n      44: '11rem',\n      48: '12rem',\n      52: '13rem',\n      56: '14rem',\n      60: '15rem',\n      64: '16rem',\n      72: '18rem',\n      80: '20rem',\n      96: '24rem',\n    },\n    animation: {\n      none: 'none',\n      spin: 'spin 1s linear infinite',\n      ping: 'ping 1s cubic-bezier(0, 0, 0.2, 1) infinite',\n      pulse: 'pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite',\n      bounce: 'bounce 1s infinite',\n    },\n    aria: {\n      checked: 'checked=\"true\"',\n      disabled: 'disabled=\"true\"',\n      expanded: 'expanded=\"true\"',\n      hidden: 'hidden=\"true\"',\n      pressed: 'pressed=\"true\"',\n      readonly: 'readonly=\"true\"',\n      required: 'required=\"true\"',\n      selected: 'selected=\"true\"',\n    },\n    aspectRatio: {\n      auto: 'auto',\n      square: '1 / 1',\n      video: '16 / 9',\n    },\n    backdropBlur: ({ theme }) => theme('blur'),\n    backdropBrightness: ({ theme }) => theme('brightness'),\n    backdropContrast: ({ theme }) => theme('contrast'),\n    backdropGrayscale: ({ theme }) => theme('grayscale'),\n    backdropHueRotate: ({ theme }) => theme('hueRotate'),\n    backdropInvert: ({ theme }) => theme('invert'),\n    backdropOpacity: ({ theme }) => theme('opacity'),\n    backdropSaturate: ({ theme }) => theme('saturate'),\n    backdropSepia: ({ theme }) => theme('sepia'),\n    backgroundColor: ({ theme }) => theme('colors'),\n    backgroundImage: {\n      none: 'none',\n      'gradient-to-t': 'linear-gradient(to top, var(--tw-gradient-stops))',\n      'gradient-to-tr': 'linear-gradient(to top right, var(--tw-gradient-stops))',\n      'gradient-to-r': 'linear-gradient(to right, var(--tw-gradient-stops))',\n      'gradient-to-br': 'linear-gradient(to bottom right, var(--tw-gradient-stops))',\n      'gradient-to-b': 'linear-gradient(to bottom, var(--tw-gradient-stops))',\n      'gradient-to-bl': 'linear-gradient(to bottom left, var(--tw-gradient-stops))',\n      'gradient-to-l': 'linear-gradient(to left, var(--tw-gradient-stops))',\n      'gradient-to-tl': 'linear-gradient(to top left, var(--tw-gradient-stops))',\n    },\n    backgroundOpacity: ({ theme }) => theme('opacity'),\n    backgroundPosition: {\n      bottom: 'bottom',\n      center: 'center',\n      left: 'left',\n      'left-bottom': 'left bottom',\n      'left-top': 'left top',\n      right: 'right',\n      'right-bottom': 'right bottom',\n      'right-top': 'right top',\n      top: 'top',\n    },\n    backgroundSize: {\n      auto: 'auto',\n      cover: 'cover',\n      contain: 'contain',\n    },\n    blur: {\n      0: '0',\n      none: '0',\n      sm: '4px',\n      DEFAULT: '8px',\n      md: '12px',\n      lg: '16px',\n      xl: '24px',\n      '2xl': '40px',\n      '3xl': '64px',\n    },\n    brightness: {\n      0: '0',\n      50: '.5',\n      75: '.75',\n      90: '.9',\n      95: '.95',\n      100: '1',\n      105: '1.05',\n      110: '1.1',\n      125: '1.25',\n      150: '1.5',\n      200: '2',\n    },\n    borderColor: ({ theme }) => ({\n      ...theme('colors'),\n      DEFAULT: theme('colors.gray.200', 'currentColor'),\n    }),\n    borderOpacity: ({ theme }) => theme('opacity'),\n    borderRadius: {\n      none: '0px',\n      sm: '0.125rem',\n      DEFAULT: '0.25rem',\n      md: '0.375rem',\n      lg: '0.5rem',\n      xl: '0.75rem',\n      '2xl': '1rem',\n      '3xl': '1.5rem',\n      full: '9999px',\n    },\n    borderSpacing: ({ theme }) => ({\n      ...theme('spacing'),\n    }),\n    borderWidth: {\n      DEFAULT: '1px',\n      0: '0px',\n      2: '2px',\n      4: '4px',\n      8: '8px',\n    },\n    boxShadow: {\n      sm: '0 1px 2px 0 rgb(0 0 0 / 0.05)',\n      DEFAULT: '0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)',\n      md: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',\n      lg: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',\n      xl: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',\n      '2xl': '0 25px 50px -12px rgb(0 0 0 / 0.25)',\n      inner: 'inset 0 2px 4px 0 rgb(0 0 0 / 0.05)',\n      none: 'none',\n    },\n    boxShadowColor: ({ theme }) => theme('colors'),\n    caretColor: ({ theme }) => theme('colors'),\n    accentColor: ({ theme }) => ({\n      ...theme('colors'),\n      auto: 'auto',\n    }),\n    contrast: {\n      0: '0',\n      50: '.5',\n      75: '.75',\n      100: '1',\n      125: '1.25',\n      150: '1.5',\n      200: '2',\n    },\n    container: {},\n    content: {\n      none: 'none',\n    },\n    cursor: {\n      auto: 'auto',\n      default: 'default',\n      pointer: 'pointer',\n      wait: 'wait',\n      text: 'text',\n      move: 'move',\n      help: 'help',\n      'not-allowed': 'not-allowed',\n      none: 'none',\n      'context-menu': 'context-menu',\n      progress: 'progress',\n      cell: 'cell',\n      crosshair: 'crosshair',\n      'vertical-text': 'vertical-text',\n      alias: 'alias',\n      copy: 'copy',\n      'no-drop': 'no-drop',\n      grab: 'grab',\n      grabbing: 'grabbing',\n      'all-scroll': 'all-scroll',\n      'col-resize': 'col-resize',\n      'row-resize': 'row-resize',\n      'n-resize': 'n-resize',\n      'e-resize': 'e-resize',\n      's-resize': 's-resize',\n      'w-resize': 'w-resize',\n      'ne-resize': 'ne-resize',\n      'nw-resize': 'nw-resize',\n      'se-resize': 'se-resize',\n      'sw-resize': 'sw-resize',\n      'ew-resize': 'ew-resize',\n      'ns-resize': 'ns-resize',\n      'nesw-resize': 'nesw-resize',\n      'nwse-resize': 'nwse-resize',\n      'zoom-in': 'zoom-in',\n      'zoom-out': 'zoom-out',\n    },\n    divideColor: ({ theme }) => theme('borderColor'),\n    divideOpacity: ({ theme }) => theme('borderOpacity'),\n    divideWidth: ({ theme }) => theme('borderWidth'),\n    dropShadow: {\n      sm: '0 1px 1px rgb(0 0 0 / 0.05)',\n      DEFAULT: ['0 1px 2px rgb(0 0 0 / 0.1)', '0 1px 1px rgb(0 0 0 / 0.06)'],\n      md: ['0 4px 3px rgb(0 0 0 / 0.07)', '0 2px 2px rgb(0 0 0 / 0.06)'],\n      lg: ['0 10px 8px rgb(0 0 0 / 0.04)', '0 4px 3px rgb(0 0 0 / 0.1)'],\n      xl: ['0 20px 13px rgb(0 0 0 / 0.03)', '0 8px 5px rgb(0 0 0 / 0.08)'],\n      '2xl': '0 25px 25px rgb(0 0 0 / 0.15)',\n      none: '0 0 #0000',\n    },\n    fill: ({ theme }) => ({\n      none: 'none',\n      ...theme('colors'),\n    }),\n    grayscale: {\n      0: '0',\n      DEFAULT: '100%',\n    },\n    hueRotate: {\n      0: '0deg',\n      15: '15deg',\n      30: '30deg',\n      60: '60deg',\n      90: '90deg',\n      180: '180deg',\n    },\n    invert: {\n      0: '0',\n      DEFAULT: '100%',\n    },\n    flex: {\n      1: '1 1 0%',\n      auto: '1 1 auto',\n      initial: '0 1 auto',\n      none: 'none',\n    },\n    flexBasis: ({ theme }) => ({\n      auto: 'auto',\n      ...theme('spacing'),\n      '1/2': '50%',\n      '1/3': '33.333333%',\n      '2/3': '66.666667%',\n      '1/4': '25%',\n      '2/4': '50%',\n      '3/4': '75%',\n      '1/5': '20%',\n      '2/5': '40%',\n      '3/5': '60%',\n      '4/5': '80%',\n      '1/6': '16.666667%',\n      '2/6': '33.333333%',\n      '3/6': '50%',\n      '4/6': '66.666667%',\n      '5/6': '83.333333%',\n      '1/12': '8.333333%',\n      '2/12': '16.666667%',\n      '3/12': '25%',\n      '4/12': '33.333333%',\n      '5/12': '41.666667%',\n      '6/12': '50%',\n      '7/12': '58.333333%',\n      '8/12': '66.666667%',\n      '9/12': '75%',\n      '10/12': '83.333333%',\n      '11/12': '91.666667%',\n      full: '100%',\n    }),\n    flexGrow: {\n      0: '0',\n      DEFAULT: '1',\n    },\n    flexShrink: {\n      0: '0',\n      DEFAULT: '1',\n    },\n    fontFamily: {\n      sans: [\n        'ui-sans-serif',\n        'system-ui',\n        '-apple-system',\n        'BlinkMacSystemFont',\n        '\"Segoe UI\"',\n        'Roboto',\n        '\"Helvetica Neue\"',\n        'Arial',\n        '\"Noto Sans\"',\n        'sans-serif',\n        '\"Apple Color Emoji\"',\n        '\"Segoe UI Emoji\"',\n        '\"Segoe UI Symbol\"',\n        '\"Noto Color Emoji\"',\n      ],\n      serif: ['ui-serif', 'Georgia', 'Cambria', '\"Times New Roman\"', 'Times', 'serif'],\n      mono: [\n        'ui-monospace',\n        'SFMono-Regular',\n        'Menlo',\n        'Monaco',\n        'Consolas',\n        '\"Liberation Mono\"',\n        '\"Courier New\"',\n        'monospace',\n      ],\n    },\n    fontSize: {\n      xs: ['0.75rem', { lineHeight: '1rem' }],\n      sm: ['0.875rem', { lineHeight: '1.25rem' }],\n      base: ['1rem', { lineHeight: '1.5rem' }],\n      lg: ['1.125rem', { lineHeight: '1.75rem' }],\n      xl: ['1.25rem', { lineHeight: '1.75rem' }],\n      '2xl': ['1.5rem', { lineHeight: '2rem' }],\n      '3xl': ['1.875rem', { lineHeight: '2.25rem' }],\n      '4xl': ['2.25rem', { lineHeight: '2.5rem' }],\n      '5xl': ['3rem', { lineHeight: '1' }],\n      '6xl': ['3.75rem', { lineHeight: '1' }],\n      '7xl': ['4.5rem', { lineHeight: '1' }],\n      '8xl': ['6rem', { lineHeight: '1' }],\n      '9xl': ['8rem', { lineHeight: '1' }],\n    },\n    fontWeight: {\n      thin: '100',\n      extralight: '200',\n      light: '300',\n      normal: '400',\n      medium: '500',\n      semibold: '600',\n      bold: '700',\n      extrabold: '800',\n      black: '900',\n    },\n    gap: ({ theme }) => theme('spacing'),\n    gradientColorStops: ({ theme }) => theme('colors'),\n    gridAutoColumns: {\n      auto: 'auto',\n      min: 'min-content',\n      max: 'max-content',\n      fr: 'minmax(0, 1fr)',\n    },\n    gridAutoRows: {\n      auto: 'auto',\n      min: 'min-content',\n      max: 'max-content',\n      fr: 'minmax(0, 1fr)',\n    },\n    gridColumn: {\n      auto: 'auto',\n      'span-1': 'span 1 / span 1',\n      'span-2': 'span 2 / span 2',\n      'span-3': 'span 3 / span 3',\n      'span-4': 'span 4 / span 4',\n      'span-5': 'span 5 / span 5',\n      'span-6': 'span 6 / span 6',\n      'span-7': 'span 7 / span 7',\n      'span-8': 'span 8 / span 8',\n      'span-9': 'span 9 / span 9',\n      'span-10': 'span 10 / span 10',\n      'span-11': 'span 11 / span 11',\n      'span-12': 'span 12 / span 12',\n      'span-full': '1 / -1',\n    },\n    gridColumnEnd: {\n      auto: 'auto',\n      1: '1',\n      2: '2',\n      3: '3',\n      4: '4',\n      5: '5',\n      6: '6',\n      7: '7',\n      8: '8',\n      9: '9',\n      10: '10',\n      11: '11',\n      12: '12',\n      13: '13',\n    },\n    gridColumnStart: {\n      auto: 'auto',\n      1: '1',\n      2: '2',\n      3: '3',\n      4: '4',\n      5: '5',\n      6: '6',\n      7: '7',\n      8: '8',\n      9: '9',\n      10: '10',\n      11: '11',\n      12: '12',\n      13: '13',\n    },\n    gridRow: {\n      auto: 'auto',\n      'span-1': 'span 1 / span 1',\n      'span-2': 'span 2 / span 2',\n      'span-3': 'span 3 / span 3',\n      'span-4': 'span 4 / span 4',\n      'span-5': 'span 5 / span 5',\n      'span-6': 'span 6 / span 6',\n      'span-full': '1 / -1',\n    },\n    gridRowStart: {\n      auto: 'auto',\n      1: '1',\n      2: '2',\n      3: '3',\n      4: '4',\n      5: '5',\n      6: '6',\n      7: '7',\n    },\n    gridRowEnd: {\n      auto: 'auto',\n      1: '1',\n      2: '2',\n      3: '3',\n      4: '4',\n      5: '5',\n      6: '6',\n      7: '7',\n    },\n    gridTemplateColumns: {\n      none: 'none',\n      1: 'repeat(1, minmax(0, 1fr))',\n      2: 'repeat(2, minmax(0, 1fr))',\n      3: 'repeat(3, minmax(0, 1fr))',\n      4: 'repeat(4, minmax(0, 1fr))',\n      5: 'repeat(5, minmax(0, 1fr))',\n      6: 'repeat(6, minmax(0, 1fr))',\n      7: 'repeat(7, minmax(0, 1fr))',\n      8: 'repeat(8, minmax(0, 1fr))',\n      9: 'repeat(9, minmax(0, 1fr))',\n      10: 'repeat(10, minmax(0, 1fr))',\n      11: 'repeat(11, minmax(0, 1fr))',\n      12: 'repeat(12, minmax(0, 1fr))',\n    },\n    gridTemplateRows: {\n      none: 'none',\n      1: 'repeat(1, minmax(0, 1fr))',\n      2: 'repeat(2, minmax(0, 1fr))',\n      3: 'repeat(3, minmax(0, 1fr))',\n      4: 'repeat(4, minmax(0, 1fr))',\n      5: 'repeat(5, minmax(0, 1fr))',\n      6: 'repeat(6, minmax(0, 1fr))',\n    },\n    height: ({ theme }) => ({\n      auto: 'auto',\n      ...theme('spacing'),\n      '1/2': '50%',\n      '1/3': '33.333333%',\n      '2/3': '66.666667%',\n      '1/4': '25%',\n      '2/4': '50%',\n      '3/4': '75%',\n      '1/5': '20%',\n      '2/5': '40%',\n      '3/5': '60%',\n      '4/5': '80%',\n      '1/6': '16.666667%',\n      '2/6': '33.333333%',\n      '3/6': '50%',\n      '4/6': '66.666667%',\n      '5/6': '83.333333%',\n      full: '100%',\n      screen: '100vh',\n      min: 'min-content',\n      max: 'max-content',\n      fit: 'fit-content',\n    }),\n    inset: ({ theme }) => ({\n      auto: 'auto',\n      ...theme('spacing'),\n      '1/2': '50%',\n      '1/3': '33.333333%',\n      '2/3': '66.666667%',\n      '1/4': '25%',\n      '2/4': '50%',\n      '3/4': '75%',\n      full: '100%',\n    }),\n    keyframes: {\n      spin: {\n        to: {\n          transform: 'rotate(360deg)',\n        },\n      },\n      ping: {\n        '75%, 100%': {\n          transform: 'scale(2)',\n          opacity: '0',\n        },\n      },\n      pulse: {\n        '50%': {\n          opacity: '.5',\n        },\n      },\n      bounce: {\n        '0%, 100%': {\n          transform: 'translateY(-25%)',\n          animationTimingFunction: 'cubic-bezier(0.8,0,1,1)',\n        },\n        '50%': {\n          transform: 'none',\n          animationTimingFunction: 'cubic-bezier(0,0,0.2,1)',\n        },\n      },\n    },\n    letterSpacing: {\n      tighter: '-0.05em',\n      tight: '-0.025em',\n      normal: '0em',\n      wide: '0.025em',\n      wider: '0.05em',\n      widest: '0.1em',\n    },\n    lineHeight: {\n      none: '1',\n      tight: '1.25',\n      snug: '1.375',\n      normal: '1.5',\n      relaxed: '1.625',\n      loose: '2',\n      3: '.75rem',\n      4: '1rem',\n      5: '1.25rem',\n      6: '1.5rem',\n      7: '1.75rem',\n      8: '2rem',\n      9: '2.25rem',\n      10: '2.5rem',\n    },\n    listStyleType: {\n      none: 'none',\n      disc: 'disc',\n      decimal: 'decimal',\n    },\n    margin: ({ theme }) => ({\n      auto: 'auto',\n      ...theme('spacing'),\n    }),\n    maxHeight: ({ theme }) => ({\n      ...theme('spacing'),\n      full: '100%',\n      screen: '100vh',\n      min: 'min-content',\n      max: 'max-content',\n      fit: 'fit-content',\n    }),\n    maxWidth: ({ theme, breakpoints }) => ({\n      none: 'none',\n      0: '0rem',\n      xs: '20rem',\n      sm: '24rem',\n      md: '28rem',\n      lg: '32rem',\n      xl: '36rem',\n      '2xl': '42rem',\n      '3xl': '48rem',\n      '4xl': '56rem',\n      '5xl': '64rem',\n      '6xl': '72rem',\n      '7xl': '80rem',\n      full: '100%',\n      min: 'min-content',\n      max: 'max-content',\n      fit: 'fit-content',\n      prose: '65ch',\n      ...breakpoints(theme('screens')),\n    }),\n    minHeight: {\n      0: '0px',\n      full: '100%',\n      screen: '100vh',\n      min: 'min-content',\n      max: 'max-content',\n      fit: 'fit-content',\n    },\n    minWidth: {\n      0: '0px',\n      full: '100%',\n      min: 'min-content',\n      max: 'max-content',\n      fit: 'fit-content',\n    },\n    objectPosition: {\n      bottom: 'bottom',\n      center: 'center',\n      left: 'left',\n      'left-bottom': 'left bottom',\n      'left-top': 'left top',\n      right: 'right',\n      'right-bottom': 'right bottom',\n      'right-top': 'right top',\n      top: 'top',\n    },\n    opacity: {\n      0: '0',\n      5: '0.05',\n      10: '0.1',\n      20: '0.2',\n      25: '0.25',\n      30: '0.3',\n      40: '0.4',\n      50: '0.5',\n      60: '0.6',\n      70: '0.7',\n      75: '0.75',\n      80: '0.8',\n      90: '0.9',\n      95: '0.95',\n      100: '1',\n    },\n    order: {\n      first: '-9999',\n      last: '9999',\n      none: '0',\n      1: '1',\n      2: '2',\n      3: '3',\n      4: '4',\n      5: '5',\n      6: '6',\n      7: '7',\n      8: '8',\n      9: '9',\n      10: '10',\n      11: '11',\n      12: '12',\n    },\n    padding: ({ theme }) => theme('spacing'),\n    placeholderColor: ({ theme }) => theme('colors'),\n    placeholderOpacity: ({ theme }) => theme('opacity'),\n    outlineColor: ({ theme }) => theme('colors'),\n    outlineOffset: {\n      0: '0px',\n      1: '1px',\n      2: '2px',\n      4: '4px',\n      8: '8px',\n    },\n    outlineWidth: {\n      0: '0px',\n      1: '1px',\n      2: '2px',\n      4: '4px',\n      8: '8px',\n    },\n    ringColor: ({ theme }) => ({\n      DEFAULT: theme('colors.blue.500', '#3b82f6'),\n      ...theme('colors'),\n    }),\n    ringOffsetColor: ({ theme }) => theme('colors'),\n    ringOffsetWidth: {\n      0: '0px',\n      1: '1px',\n      2: '2px',\n      4: '4px',\n      8: '8px',\n    },\n    ringOpacity: ({ theme }) => ({\n      DEFAULT: '0.5',\n      ...theme('opacity'),\n    }),\n    ringWidth: {\n      DEFAULT: '3px',\n      0: '0px',\n      1: '1px',\n      2: '2px',\n      4: '4px',\n      8: '8px',\n    },\n    rotate: {\n      0: '0deg',\n      1: '1deg',\n      2: '2deg',\n      3: '3deg',\n      6: '6deg',\n      12: '12deg',\n      45: '45deg',\n      90: '90deg',\n      180: '180deg',\n    },\n    saturate: {\n      0: '0',\n      50: '.5',\n      100: '1',\n      150: '1.5',\n      200: '2',\n    },\n    scale: {\n      0: '0',\n      50: '.5',\n      75: '.75',\n      90: '.9',\n      95: '.95',\n      100: '1',\n      105: '1.05',\n      110: '1.1',\n      125: '1.25',\n      150: '1.5',\n    },\n    scrollMargin: ({ theme }) => ({\n      ...theme('spacing'),\n    }),\n    scrollPadding: ({ theme }) => theme('spacing'),\n    sepia: {\n      0: '0',\n      DEFAULT: '100%',\n    },\n    skew: {\n      0: '0deg',\n      1: '1deg',\n      2: '2deg',\n      3: '3deg',\n      6: '6deg',\n      12: '12deg',\n    },\n    space: ({ theme }) => ({\n      ...theme('spacing'),\n    }),\n    stroke: ({ theme }) => ({\n      none: 'none',\n      ...theme('colors'),\n    }),\n    strokeWidth: {\n      0: '0',\n      1: '1',\n      2: '2',\n    },\n    textColor: ({ theme }) => theme('colors'),\n    textDecorationColor: ({ theme }) => theme('colors'),\n    textDecorationThickness: {\n      auto: 'auto',\n      'from-font': 'from-font',\n      0: '0px',\n      1: '1px',\n      2: '2px',\n      4: '4px',\n      8: '8px',\n    },\n    textUnderlineOffset: {\n      auto: 'auto',\n      0: '0px',\n      1: '1px',\n      2: '2px',\n      4: '4px',\n      8: '8px',\n    },\n    textIndent: ({ theme }) => ({\n      ...theme('spacing'),\n    }),\n    textOpacity: ({ theme }) => theme('opacity'),\n    transformOrigin: {\n      center: 'center',\n      top: 'top',\n      'top-right': 'top right',\n      right: 'right',\n      'bottom-right': 'bottom right',\n      bottom: 'bottom',\n      'bottom-left': 'bottom left',\n      left: 'left',\n      'top-left': 'top left',\n    },\n    transitionDelay: {\n      75: '75ms',\n      100: '100ms',\n      150: '150ms',\n      200: '200ms',\n      300: '300ms',\n      500: '500ms',\n      700: '700ms',\n      1000: '1000ms',\n    },\n    transitionDuration: {\n      DEFAULT: '150ms',\n      75: '75ms',\n      100: '100ms',\n      150: '150ms',\n      200: '200ms',\n      300: '300ms',\n      500: '500ms',\n      700: '700ms',\n      1000: '1000ms',\n    },\n    transitionProperty: {\n      none: 'none',\n      all: 'all',\n      DEFAULT:\n        'color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter',\n      colors: 'color, background-color, border-color, text-decoration-color, fill, stroke',\n      opacity: 'opacity',\n      shadow: 'box-shadow',\n      transform: 'transform',\n    },\n    transitionTimingFunction: {\n      DEFAULT: 'cubic-bezier(0.4, 0, 0.2, 1)',\n      linear: 'linear',\n      in: 'cubic-bezier(0.4, 0, 1, 1)',\n      out: 'cubic-bezier(0, 0, 0.2, 1)',\n      'in-out': 'cubic-bezier(0.4, 0, 0.2, 1)',\n    },\n    translate: ({ theme }) => ({\n      ...theme('spacing'),\n      '1/2': '50%',\n      '1/3': '33.333333%',\n      '2/3': '66.666667%',\n      '1/4': '25%',\n      '2/4': '50%',\n      '3/4': '75%',\n      full: '100%',\n    }),\n    width: ({ theme }) => ({\n      auto: 'auto',\n      ...theme('spacing'),\n      '1/2': '50%',\n      '1/3': '33.333333%',\n      '2/3': '66.666667%',\n      '1/4': '25%',\n      '2/4': '50%',\n      '3/4': '75%',\n      '1/5': '20%',\n      '2/5': '40%',\n      '3/5': '60%',\n      '4/5': '80%',\n      '1/6': '16.666667%',\n      '2/6': '33.333333%',\n      '3/6': '50%',\n      '4/6': '66.666667%',\n      '5/6': '83.333333%',\n      '1/12': '8.333333%',\n      '2/12': '16.666667%',\n      '3/12': '25%',\n      '4/12': '33.333333%',\n      '5/12': '41.666667%',\n      '6/12': '50%',\n      '7/12': '58.333333%',\n      '8/12': '66.666667%',\n      '9/12': '75%',\n      '10/12': '83.333333%',\n      '11/12': '91.666667%',\n      full: '100%',\n      screen: '100vw',\n      min: 'min-content',\n      max: 'max-content',\n      fit: 'fit-content',\n    }),\n    willChange: {\n      auto: 'auto',\n      scroll: 'scroll-position',\n      contents: 'contents',\n      transform: 'transform',\n    },\n    zIndex: {\n      auto: 'auto',\n      0: '0',\n      10: '10',\n      20: '20',\n      30: '30',\n      40: '40',\n      50: '50',\n    },\n  },\n  variantOrder: [\n    'first',\n    'last',\n    'odd',\n    'even',\n    'visited',\n    'checked',\n    'empty',\n    'read-only',\n    'group-hover',\n    'group-focus',\n    'focus-within',\n    'hover',\n    'focus',\n    'focus-visible',\n    'active',\n    'disabled',\n  ],\n  plugins: [],\n}\n", "var x=String;\nvar create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x}};\nmodule.exports=create();\nmodule.exports.createColors = create;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nfunction _export(target, all) {\n    for(var name in all)Object.defineProperty(target, name, {\n        enumerable: true,\n        get: all[name]\n    });\n}\n_export(exports, {\n    dim: ()=>dim,\n    default: ()=>_default\n});\nconst _picocolors = /*#__PURE__*/ _interopRequireDefault(require(\"picocolors\"));\nfunction _interopRequireDefault(obj) {\n    return obj && obj.__esModule ? obj : {\n        default: obj\n    };\n}\nlet alreadyShown = new Set();\nfunction log(type, messages, key) {\n    if (typeof process !== \"undefined\" && process.env.JEST_WORKER_ID) return;\n    if (key && alreadyShown.has(key)) return;\n    if (key) alreadyShown.add(key);\n    console.warn(\"\");\n    messages.forEach((message)=>console.warn(type, \"-\", message));\n}\nfunction dim(input) {\n    return _picocolors.default.dim(input);\n}\nconst _default = {\n    info (key, messages) {\n        log(_picocolors.default.bold(_picocolors.default.cyan(\"info\")), ...Array.isArray(key) ? [\n            key\n        ] : [\n            messages,\n            key\n        ]);\n    },\n    warn (key, messages) {\n        log(_picocolors.default.bold(_picocolors.default.yellow(\"warn\")), ...Array.isArray(key) ? [\n            key\n        ] : [\n            messages,\n            key\n        ]);\n    },\n    risk (key, messages) {\n        log(_picocolors.default.bold(_picocolors.default.magenta(\"risk\")), ...Array.isArray(key) ? [\n            key\n        ] : [\n            messages,\n            key\n        ]);\n    }\n};\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: ()=>_default\n});\nconst _log = /*#__PURE__*/ _interopRequireDefault(require(\"../util/log\"));\nfunction _interopRequireDefault(obj) {\n    return obj && obj.__esModule ? obj : {\n        default: obj\n    };\n}\nfunction warn({ version , from , to  }) {\n    _log.default.warn(`${from}-color-renamed`, [\n        `As of Tailwind CSS ${version}, \\`${from}\\` has been renamed to \\`${to}\\`.`,\n        \"Update your configuration file to silence this warning.\"\n    ]);\n}\nconst _default = {\n    inherit: \"inherit\",\n    current: \"currentColor\",\n    transparent: \"transparent\",\n    black: \"#000\",\n    white: \"#fff\",\n    slate: {\n        50: \"#f8fafc\",\n        100: \"#f1f5f9\",\n        200: \"#e2e8f0\",\n        300: \"#cbd5e1\",\n        400: \"#94a3b8\",\n        500: \"#64748b\",\n        600: \"#475569\",\n        700: \"#334155\",\n        800: \"#1e293b\",\n        900: \"#0f172a\"\n    },\n    gray: {\n        50: \"#f9fafb\",\n        100: \"#f3f4f6\",\n        200: \"#e5e7eb\",\n        300: \"#d1d5db\",\n        400: \"#9ca3af\",\n        500: \"#6b7280\",\n        600: \"#4b5563\",\n        700: \"#374151\",\n        800: \"#1f2937\",\n        900: \"#111827\"\n    },\n    zinc: {\n        50: \"#fafafa\",\n        100: \"#f4f4f5\",\n        200: \"#e4e4e7\",\n        300: \"#d4d4d8\",\n        400: \"#a1a1aa\",\n        500: \"#71717a\",\n        600: \"#52525b\",\n        700: \"#3f3f46\",\n        800: \"#27272a\",\n        900: \"#18181b\"\n    },\n    neutral: {\n        50: \"#fafafa\",\n        100: \"#f5f5f5\",\n        200: \"#e5e5e5\",\n        300: \"#d4d4d4\",\n        400: \"#a3a3a3\",\n        500: \"#737373\",\n        600: \"#525252\",\n        700: \"#404040\",\n        800: \"#262626\",\n        900: \"#171717\"\n    },\n    stone: {\n        50: \"#fafaf9\",\n        100: \"#f5f5f4\",\n        200: \"#e7e5e4\",\n        300: \"#d6d3d1\",\n        400: \"#a8a29e\",\n        500: \"#78716c\",\n        600: \"#57534e\",\n        700: \"#44403c\",\n        800: \"#292524\",\n        900: \"#1c1917\"\n    },\n    red: {\n        50: \"#fef2f2\",\n        100: \"#fee2e2\",\n        200: \"#fecaca\",\n        300: \"#fca5a5\",\n        400: \"#f87171\",\n        500: \"#ef4444\",\n        600: \"#dc2626\",\n        700: \"#b91c1c\",\n        800: \"#991b1b\",\n        900: \"#7f1d1d\"\n    },\n    orange: {\n        50: \"#fff7ed\",\n        100: \"#ffedd5\",\n        200: \"#fed7aa\",\n        300: \"#fdba74\",\n        400: \"#fb923c\",\n        500: \"#f97316\",\n        600: \"#ea580c\",\n        700: \"#c2410c\",\n        800: \"#9a3412\",\n        900: \"#7c2d12\"\n    },\n    amber: {\n        50: \"#fffbeb\",\n        100: \"#fef3c7\",\n        200: \"#fde68a\",\n        300: \"#fcd34d\",\n        400: \"#fbbf24\",\n        500: \"#f59e0b\",\n        600: \"#d97706\",\n        700: \"#b45309\",\n        800: \"#92400e\",\n        900: \"#78350f\"\n    },\n    yellow: {\n        50: \"#fefce8\",\n        100: \"#fef9c3\",\n        200: \"#fef08a\",\n        300: \"#fde047\",\n        400: \"#facc15\",\n        500: \"#eab308\",\n        600: \"#ca8a04\",\n        700: \"#a16207\",\n        800: \"#854d0e\",\n        900: \"#713f12\"\n    },\n    lime: {\n        50: \"#f7fee7\",\n        100: \"#ecfccb\",\n        200: \"#d9f99d\",\n        300: \"#bef264\",\n        400: \"#a3e635\",\n        500: \"#84cc16\",\n        600: \"#65a30d\",\n        700: \"#4d7c0f\",\n        800: \"#3f6212\",\n        900: \"#365314\"\n    },\n    green: {\n        50: \"#f0fdf4\",\n        100: \"#dcfce7\",\n        200: \"#bbf7d0\",\n        300: \"#86efac\",\n        400: \"#4ade80\",\n        500: \"#22c55e\",\n        600: \"#16a34a\",\n        700: \"#15803d\",\n        800: \"#166534\",\n        900: \"#14532d\"\n    },\n    emerald: {\n        50: \"#ecfdf5\",\n        100: \"#d1fae5\",\n        200: \"#a7f3d0\",\n        300: \"#6ee7b7\",\n        400: \"#34d399\",\n        500: \"#10b981\",\n        600: \"#059669\",\n        700: \"#047857\",\n        800: \"#065f46\",\n        900: \"#064e3b\"\n    },\n    teal: {\n        50: \"#f0fdfa\",\n        100: \"#ccfbf1\",\n        200: \"#99f6e4\",\n        300: \"#5eead4\",\n        400: \"#2dd4bf\",\n        500: \"#14b8a6\",\n        600: \"#0d9488\",\n        700: \"#0f766e\",\n        800: \"#115e59\",\n        900: \"#134e4a\"\n    },\n    cyan: {\n        50: \"#ecfeff\",\n        100: \"#cffafe\",\n        200: \"#a5f3fc\",\n        300: \"#67e8f9\",\n        400: \"#22d3ee\",\n        500: \"#06b6d4\",\n        600: \"#0891b2\",\n        700: \"#0e7490\",\n        800: \"#155e75\",\n        900: \"#164e63\"\n    },\n    sky: {\n        50: \"#f0f9ff\",\n        100: \"#e0f2fe\",\n        200: \"#bae6fd\",\n        300: \"#7dd3fc\",\n        400: \"#38bdf8\",\n        500: \"#0ea5e9\",\n        600: \"#0284c7\",\n        700: \"#0369a1\",\n        800: \"#075985\",\n        900: \"#0c4a6e\"\n    },\n    blue: {\n        50: \"#eff6ff\",\n        100: \"#dbeafe\",\n        200: \"#bfdbfe\",\n        300: \"#93c5fd\",\n        400: \"#60a5fa\",\n        500: \"#3b82f6\",\n        600: \"#2563eb\",\n        700: \"#1d4ed8\",\n        800: \"#1e40af\",\n        900: \"#1e3a8a\"\n    },\n    indigo: {\n        50: \"#eef2ff\",\n        100: \"#e0e7ff\",\n        200: \"#c7d2fe\",\n        300: \"#a5b4fc\",\n        400: \"#818cf8\",\n        500: \"#6366f1\",\n        600: \"#4f46e5\",\n        700: \"#4338ca\",\n        800: \"#3730a3\",\n        900: \"#312e81\"\n    },\n    violet: {\n        50: \"#f5f3ff\",\n        100: \"#ede9fe\",\n        200: \"#ddd6fe\",\n        300: \"#c4b5fd\",\n        400: \"#a78bfa\",\n        500: \"#8b5cf6\",\n        600: \"#7c3aed\",\n        700: \"#6d28d9\",\n        800: \"#5b21b6\",\n        900: \"#4c1d95\"\n    },\n    purple: {\n        50: \"#faf5ff\",\n        100: \"#f3e8ff\",\n        200: \"#e9d5ff\",\n        300: \"#d8b4fe\",\n        400: \"#c084fc\",\n        500: \"#a855f7\",\n        600: \"#9333ea\",\n        700: \"#7e22ce\",\n        800: \"#6b21a8\",\n        900: \"#581c87\"\n    },\n    fuchsia: {\n        50: \"#fdf4ff\",\n        100: \"#fae8ff\",\n        200: \"#f5d0fe\",\n        300: \"#f0abfc\",\n        400: \"#e879f9\",\n        500: \"#d946ef\",\n        600: \"#c026d3\",\n        700: \"#a21caf\",\n        800: \"#86198f\",\n        900: \"#701a75\"\n    },\n    pink: {\n        50: \"#fdf2f8\",\n        100: \"#fce7f3\",\n        200: \"#fbcfe8\",\n        300: \"#f9a8d4\",\n        400: \"#f472b6\",\n        500: \"#ec4899\",\n        600: \"#db2777\",\n        700: \"#be185d\",\n        800: \"#9d174d\",\n        900: \"#831843\"\n    },\n    rose: {\n        50: \"#fff1f2\",\n        100: \"#ffe4e6\",\n        200: \"#fecdd3\",\n        300: \"#fda4af\",\n        400: \"#fb7185\",\n        500: \"#f43f5e\",\n        600: \"#e11d48\",\n        700: \"#be123c\",\n        800: \"#9f1239\",\n        900: \"#881337\"\n    },\n    get lightBlue () {\n        warn({\n            version: \"v2.2\",\n            from: \"lightBlue\",\n            to: \"sky\"\n        });\n        return this.sky;\n    },\n    get warmGray () {\n        warn({\n            version: \"v3.0\",\n            from: \"warmGray\",\n            to: \"stone\"\n        });\n        return this.stone;\n    },\n    get trueGray () {\n        warn({\n            version: \"v3.0\",\n            from: \"trueGray\",\n            to: \"neutral\"\n        });\n        return this.neutral;\n    },\n    get coolGray () {\n        warn({\n            version: \"v3.0\",\n            from: \"coolGray\",\n            to: \"gray\"\n        });\n        return this.gray;\n    },\n    get blueGray () {\n        warn({\n            version: \"v3.0\",\n            from: \"blueGray\",\n            to: \"slate\"\n        });\n        return this.slate;\n    }\n};\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"defaults\", {\n    enumerable: true,\n    get: ()=>defaults\n});\nfunction defaults(target, ...sources) {\n    for (let source of sources){\n        for(let k in source){\n            var ref;\n            if (!(target === null || target === void 0 ? void 0 : (ref = target.hasOwnProperty) === null || ref === void 0 ? void 0 : ref.call(target, k))) {\n                target[k] = source[k];\n            }\n        }\n        for (let k1 of Object.getOwnPropertySymbols(source)){\n            var ref1;\n            if (!(target === null || target === void 0 ? void 0 : (ref1 = target.hasOwnProperty) === null || ref1 === void 0 ? void 0 : ref1.call(target, k1))) {\n                target[k1] = source[k1];\n            }\n        }\n    }\n    return target;\n}\n", "/**\n * Parse a path string into an array of path segments.\n *\n * Square bracket notation `a[b]` may be used to \"escape\" dots that would otherwise be interpreted as path separators.\n *\n * Example:\n * a -> ['a']\n * a.b.c -> ['a', 'b', 'c']\n * a[b].c -> ['a', 'b', 'c']\n * a[b.c].e.f -> ['a', 'b.c', 'e', 'f']\n * a[b][c][d] -> ['a', 'b', 'c', 'd']\n *\n * @param {string|string[]} path\n **/ \"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"toPath\", {\n    enumerable: true,\n    get: ()=>toPath\n});\nfunction toPath(path) {\n    if (Array.isArray(path)) return path;\n    let openBrackets = path.split(\"[\").length - 1;\n    let closedBrackets = path.split(\"]\").length - 1;\n    if (openBrackets !== closedBrackets) {\n        throw new Error(`Path is invalid. Has unbalanced brackets: ${path}`);\n    }\n    return path.split(/\\.(?![^\\[]*\\])|[\\[\\]]/g).filter(Boolean);\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"normalizeConfig\", {\n    enumerable: true,\n    get: ()=>normalizeConfig\n});\nconst _log = /*#__PURE__*/ _interopRequireWildcard(require(\"./log\"));\nfunction _getRequireWildcardCache(nodeInterop) {\n    if (typeof WeakMap !== \"function\") return null;\n    var cacheBabelInterop = new WeakMap();\n    var cacheNodeInterop = new WeakMap();\n    return (_getRequireWildcardCache = function(nodeInterop) {\n        return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n    })(nodeInterop);\n}\nfunction _interopRequireWildcard(obj, nodeInterop) {\n    if (!nodeInterop && obj && obj.__esModule) {\n        return obj;\n    }\n    if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n        return {\n            default: obj\n        };\n    }\n    var cache = _getRequireWildcardCache(nodeInterop);\n    if (cache && cache.has(obj)) {\n        return cache.get(obj);\n    }\n    var newObj = {};\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n    for(var key in obj){\n        if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n            if (desc && (desc.get || desc.set)) {\n                Object.defineProperty(newObj, key, desc);\n            } else {\n                newObj[key] = obj[key];\n            }\n        }\n    }\n    newObj.default = obj;\n    if (cache) {\n        cache.set(obj, newObj);\n    }\n    return newObj;\n}\nfunction normalizeConfig(config) {\n    // Quick structure validation\n    /**\n   * type FilePath = string\n   * type RawFile = { raw: string, extension?: string }\n   * type ExtractorFn = (content: string) => Array<string>\n   * type TransformerFn = (content: string) => string\n   *\n   * type Content =\n   *   | Array<FilePath | RawFile>\n   *   | {\n   *       files: Array<FilePath | RawFile>,\n   *       extract?: ExtractorFn | { [extension: string]: ExtractorFn }\n   *       transform?: TransformerFn | { [extension: string]: TransformerFn }\n   *   }\n   */ let valid = (()=>{\n        // `config.purge` should not exist anymore\n        if (config.purge) {\n            return false;\n        }\n        // `config.content` should exist\n        if (!config.content) {\n            return false;\n        }\n        // `config.content` should be an object or an array\n        if (!Array.isArray(config.content) && !(typeof config.content === \"object\" && config.content !== null)) {\n            return false;\n        }\n        // When `config.content` is an array, it should consist of FilePaths or RawFiles\n        if (Array.isArray(config.content)) {\n            return config.content.every((path)=>{\n                // `path` can be a string\n                if (typeof path === \"string\") return true;\n                // `path` can be an object { raw: string, extension?: string }\n                // `raw` must be a string\n                if (typeof (path === null || path === void 0 ? void 0 : path.raw) !== \"string\") return false;\n                // `extension` (if provided) should also be a string\n                if ((path === null || path === void 0 ? void 0 : path.extension) && typeof (path === null || path === void 0 ? void 0 : path.extension) !== \"string\") {\n                    return false;\n                }\n                return true;\n            });\n        }\n        // When `config.content` is an object\n        if (typeof config.content === \"object\" && config.content !== null) {\n            // Only `files`, `relative`, `extract`, and `transform` can exist in `config.content`\n            if (Object.keys(config.content).some((key)=>![\n                    \"files\",\n                    \"relative\",\n                    \"extract\",\n                    \"transform\"\n                ].includes(key))) {\n                return false;\n            }\n            // `config.content.files` should exist of FilePaths or RawFiles\n            if (Array.isArray(config.content.files)) {\n                if (!config.content.files.every((path)=>{\n                    // `path` can be a string\n                    if (typeof path === \"string\") return true;\n                    // `path` can be an object { raw: string, extension?: string }\n                    // `raw` must be a string\n                    if (typeof (path === null || path === void 0 ? void 0 : path.raw) !== \"string\") return false;\n                    // `extension` (if provided) should also be a string\n                    if ((path === null || path === void 0 ? void 0 : path.extension) && typeof (path === null || path === void 0 ? void 0 : path.extension) !== \"string\") {\n                        return false;\n                    }\n                    return true;\n                })) {\n                    return false;\n                }\n                // `config.content.extract` is optional, and can be a Function or a Record<String, Function>\n                if (typeof config.content.extract === \"object\") {\n                    for (let value of Object.values(config.content.extract)){\n                        if (typeof value !== \"function\") {\n                            return false;\n                        }\n                    }\n                } else if (!(config.content.extract === undefined || typeof config.content.extract === \"function\")) {\n                    return false;\n                }\n                // `config.content.transform` is optional, and can be a Function or a Record<String, Function>\n                if (typeof config.content.transform === \"object\") {\n                    for (let value1 of Object.values(config.content.transform)){\n                        if (typeof value1 !== \"function\") {\n                            return false;\n                        }\n                    }\n                } else if (!(config.content.transform === undefined || typeof config.content.transform === \"function\")) {\n                    return false;\n                }\n                // `config.content.relative` is optional and can be a boolean\n                if (typeof config.content.relative !== \"boolean\" && typeof config.content.relative !== \"undefined\") {\n                    return false;\n                }\n            }\n            return true;\n        }\n        return false;\n    })();\n    if (!valid) {\n        _log.default.warn(\"purge-deprecation\", [\n            \"The `purge`/`content` options have changed in Tailwind CSS v3.0.\",\n            \"Update your configuration file to eliminate this warning.\",\n            \"https://tailwindcss.com/docs/upgrade-guide#configure-content-sources\"\n        ]);\n    }\n    // Normalize the `safelist`\n    config.safelist = (()=>{\n        var ref;\n        let { content , purge , safelist  } = config;\n        if (Array.isArray(safelist)) return safelist;\n        if (Array.isArray(content === null || content === void 0 ? void 0 : content.safelist)) return content.safelist;\n        if (Array.isArray(purge === null || purge === void 0 ? void 0 : purge.safelist)) return purge.safelist;\n        if (Array.isArray(purge === null || purge === void 0 ? void 0 : (ref = purge.options) === null || ref === void 0 ? void 0 : ref.safelist)) return purge.options.safelist;\n        return [];\n    })();\n    // Normalize the `blocklist`\n    config.blocklist = (()=>{\n        let { blocklist  } = config;\n        if (Array.isArray(blocklist)) {\n            if (blocklist.every((item)=>typeof item === \"string\")) {\n                return blocklist;\n            }\n            _log.default.warn(\"blocklist-invalid\", [\n                \"The `blocklist` option must be an array of strings.\",\n                \"https://tailwindcss.com/docs/content-configuration#discarding-classes\"\n            ]);\n        }\n        return [];\n    })();\n    // Normalize prefix option\n    if (typeof config.prefix === \"function\") {\n        _log.default.warn(\"prefix-function\", [\n            \"As of Tailwind CSS v3.0, `prefix` cannot be a function.\",\n            \"Update `prefix` in your configuration to be a string to eliminate this warning.\",\n            \"https://tailwindcss.com/docs/upgrade-guide#prefix-cannot-be-a-function\"\n        ]);\n        config.prefix = \"\";\n    } else {\n        var _prefix;\n        config.prefix = (_prefix = config.prefix) !== null && _prefix !== void 0 ? _prefix : \"\";\n    }\n    // Normalize the `content`\n    config.content = {\n        relative: (()=>{\n            var ref;\n            let { content  } = config;\n            if (content === null || content === void 0 ? void 0 : content.relative) {\n                return content.relative;\n            }\n            var ref1;\n            return (ref1 = (ref = config.future) === null || ref === void 0 ? void 0 : ref.relativeContentPathsByDefault) !== null && ref1 !== void 0 ? ref1 : false;\n        })(),\n        files: (()=>{\n            let { content , purge  } = config;\n            if (Array.isArray(purge)) return purge;\n            if (Array.isArray(purge === null || purge === void 0 ? void 0 : purge.content)) return purge.content;\n            if (Array.isArray(content)) return content;\n            if (Array.isArray(content === null || content === void 0 ? void 0 : content.content)) return content.content;\n            if (Array.isArray(content === null || content === void 0 ? void 0 : content.files)) return content.files;\n            return [];\n        })(),\n        extract: (()=>{\n            let extract = (()=>{\n                var ref, ref1, ref2, ref3, ref4, ref5, ref6, ref7, ref8, ref9;\n                if ((ref = config.purge) === null || ref === void 0 ? void 0 : ref.extract) return config.purge.extract;\n                if ((ref1 = config.content) === null || ref1 === void 0 ? void 0 : ref1.extract) return config.content.extract;\n                if ((ref2 = config.purge) === null || ref2 === void 0 ? void 0 : (ref3 = ref2.extract) === null || ref3 === void 0 ? void 0 : ref3.DEFAULT) return config.purge.extract.DEFAULT;\n                if ((ref4 = config.content) === null || ref4 === void 0 ? void 0 : (ref5 = ref4.extract) === null || ref5 === void 0 ? void 0 : ref5.DEFAULT) return config.content.extract.DEFAULT;\n                if ((ref6 = config.purge) === null || ref6 === void 0 ? void 0 : (ref7 = ref6.options) === null || ref7 === void 0 ? void 0 : ref7.extractors) return config.purge.options.extractors;\n                if ((ref8 = config.content) === null || ref8 === void 0 ? void 0 : (ref9 = ref8.options) === null || ref9 === void 0 ? void 0 : ref9.extractors) return config.content.options.extractors;\n                return {};\n            })();\n            let extractors = {};\n            let defaultExtractor = (()=>{\n                var ref, ref1, ref2, ref3;\n                if ((ref = config.purge) === null || ref === void 0 ? void 0 : (ref1 = ref.options) === null || ref1 === void 0 ? void 0 : ref1.defaultExtractor) {\n                    return config.purge.options.defaultExtractor;\n                }\n                if ((ref2 = config.content) === null || ref2 === void 0 ? void 0 : (ref3 = ref2.options) === null || ref3 === void 0 ? void 0 : ref3.defaultExtractor) {\n                    return config.content.options.defaultExtractor;\n                }\n                return undefined;\n            })();\n            if (defaultExtractor !== undefined) {\n                extractors.DEFAULT = defaultExtractor;\n            }\n            // Functions\n            if (typeof extract === \"function\") {\n                extractors.DEFAULT = extract;\n            } else if (Array.isArray(extract)) {\n                for (let { extensions , extractor  } of extract !== null && extract !== void 0 ? extract : []){\n                    for (let extension of extensions){\n                        extractors[extension] = extractor;\n                    }\n                }\n            } else if (typeof extract === \"object\" && extract !== null) {\n                Object.assign(extractors, extract);\n            }\n            return extractors;\n        })(),\n        transform: (()=>{\n            let transform = (()=>{\n                var ref, ref1, ref2, ref3, ref4, ref5;\n                if ((ref = config.purge) === null || ref === void 0 ? void 0 : ref.transform) return config.purge.transform;\n                if ((ref1 = config.content) === null || ref1 === void 0 ? void 0 : ref1.transform) return config.content.transform;\n                if ((ref2 = config.purge) === null || ref2 === void 0 ? void 0 : (ref3 = ref2.transform) === null || ref3 === void 0 ? void 0 : ref3.DEFAULT) return config.purge.transform.DEFAULT;\n                if ((ref4 = config.content) === null || ref4 === void 0 ? void 0 : (ref5 = ref4.transform) === null || ref5 === void 0 ? void 0 : ref5.DEFAULT) return config.content.transform.DEFAULT;\n                return {};\n            })();\n            let transformers = {};\n            if (typeof transform === \"function\") {\n                transformers.DEFAULT = transform;\n            }\n            if (typeof transform === \"object\" && transform !== null) {\n                Object.assign(transformers, transform);\n            }\n            return transformers;\n        })()\n    };\n    // Validate globs to prevent bogus globs.\n    // E.g.: `./src/*.{html}` is invalid, the `{html}` should just be `html`\n    for (let file of config.content.files){\n        if (typeof file === \"string\" && /{([^,]*?)}/g.test(file)) {\n            _log.default.warn(\"invalid-glob-braces\", [\n                `The glob pattern ${(0, _log.dim)(file)} in your Tailwind CSS configuration is invalid.`,\n                `Update it to ${(0, _log.dim)(file.replace(/{([^,]*?)}/g, \"$1\"))} to silence this warning.`\n            ]);\n            break;\n        }\n    }\n    return config;\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: ()=>isPlainObject\n});\nfunction isPlainObject(value) {\n    if (Object.prototype.toString.call(value) !== \"[object Object]\") {\n        return false;\n    }\n    const prototype = Object.getPrototypeOf(value);\n    return prototype === null || prototype === Object.prototype;\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"cloneDeep\", {\n    enumerable: true,\n    get: ()=>cloneDeep\n});\nfunction cloneDeep(value) {\n    if (Array.isArray(value)) {\n        return value.map((child)=>cloneDeep(child));\n    }\n    if (typeof value === \"object\" && value !== null) {\n        return Object.fromEntries(Object.entries(value).map(([k, v])=>[\n                k,\n                cloneDeep(v)\n            ]));\n    }\n    return value;\n}\n", "\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = unesc;\n\n// Many thanks for this post which made this migration much easier.\n// https://mathiasbynens.be/notes/css-escapes\n\n/**\n * \n * @param {string} str \n * @returns {[string, number]|undefined}\n */\nfunction gobbleHex(str) {\n  var lower = str.toLowerCase();\n  var hex = '';\n  var spaceTerminated = false;\n\n  for (var i = 0; i < 6 && lower[i] !== undefined; i++) {\n    var code = lower.charCodeAt(i); // check to see if we are dealing with a valid hex char [a-f|0-9]\n\n    var valid = code >= 97 && code <= 102 || code >= 48 && code <= 57; // https://drafts.csswg.org/css-syntax/#consume-escaped-code-point\n\n    spaceTerminated = code === 32;\n\n    if (!valid) {\n      break;\n    }\n\n    hex += lower[i];\n  }\n\n  if (hex.length === 0) {\n    return undefined;\n  }\n\n  var codePoint = parseInt(hex, 16);\n  var isSurrogate = codePoint >= 0xD800 && codePoint <= 0xDFFF; // Add special case for\n  // \"If this number is zero, or is for a surrogate, or is greater than the maximum allowed code point\"\n  // https://drafts.csswg.org/css-syntax/#maximum-allowed-code-point\n\n  if (isSurrogate || codePoint === 0x0000 || codePoint > 0x10FFFF) {\n    return [\"\\uFFFD\", hex.length + (spaceTerminated ? 1 : 0)];\n  }\n\n  return [String.fromCodePoint(codePoint), hex.length + (spaceTerminated ? 1 : 0)];\n}\n\nvar CONTAINS_ESCAPE = /\\\\/;\n\nfunction unesc(str) {\n  var needToProcess = CONTAINS_ESCAPE.test(str);\n\n  if (!needToProcess) {\n    return str;\n  }\n\n  var ret = \"\";\n\n  for (var i = 0; i < str.length; i++) {\n    if (str[i] === \"\\\\\") {\n      var gobbled = gobbleHex(str.slice(i + 1, i + 7));\n\n      if (gobbled !== undefined) {\n        ret += gobbled[0];\n        i += gobbled[1];\n        continue;\n      } // Retain a pair of \\\\ if double escaped `\\\\\\\\`\n      // https://github.com/postcss/postcss-selector-parser/commit/268c9a7656fb53f543dc620aa5b73a30ec3ff20e\n\n\n      if (str[i + 1] === \"\\\\\") {\n        ret += \"\\\\\";\n        i++;\n        continue;\n      } // if \\\\ is at the end of the string retain it\n      // https://github.com/postcss/postcss-selector-parser/commit/01a6b346e3612ce1ab20219acc26abdc259ccefb\n\n\n      if (str.length === i + 1) {\n        ret += str[i];\n      }\n\n      continue;\n    }\n\n    ret += str[i];\n  }\n\n  return ret;\n}\n\nmodule.exports = exports.default;", "\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = getProp;\n\nfunction getProp(obj) {\n  for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    props[_key - 1] = arguments[_key];\n  }\n\n  while (props.length > 0) {\n    var prop = props.shift();\n\n    if (!obj[prop]) {\n      return undefined;\n    }\n\n    obj = obj[prop];\n  }\n\n  return obj;\n}\n\nmodule.exports = exports.default;", "\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = ensureObject;\n\nfunction ensureObject(obj) {\n  for (var _len = arguments.length, props = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    props[_key - 1] = arguments[_key];\n  }\n\n  while (props.length > 0) {\n    var prop = props.shift();\n\n    if (!obj[prop]) {\n      obj[prop] = {};\n    }\n\n    obj = obj[prop];\n  }\n}\n\nmodule.exports = exports.default;", "\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = stripComments;\n\nfunction stripComments(str) {\n  var s = \"\";\n  var commentStart = str.indexOf(\"/*\");\n  var lastEnd = 0;\n\n  while (commentStart >= 0) {\n    s = s + str.slice(lastEnd, commentStart);\n    var commentEnd = str.indexOf(\"*/\", commentStart + 2);\n\n    if (commentEnd < 0) {\n      return s;\n    }\n\n    lastEnd = commentEnd + 2;\n    commentStart = str.indexOf(\"/*\", lastEnd);\n  }\n\n  s = s + str.slice(lastEnd);\n  return s;\n}\n\nmodule.exports = exports.default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.stripComments = exports.ensureObject = exports.getProp = exports.unesc = void 0;\n\nvar _unesc = _interopRequireDefault(require(\"./unesc\"));\n\nexports.unesc = _unesc[\"default\"];\n\nvar _getProp = _interopRequireDefault(require(\"./getProp\"));\n\nexports.getProp = _getProp[\"default\"];\n\nvar _ensureObject = _interopRequireDefault(require(\"./ensureObject\"));\n\nexports.ensureObject = _ensureObject[\"default\"];\n\nvar _stripComments = _interopRequireDefault(require(\"./stripComments\"));\n\nexports.stripComments = _stripComments[\"default\"];\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }", "\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _util = require(\"../util\");\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\nvar cloneNode = function cloneNode(obj, parent) {\n  if (typeof obj !== 'object' || obj === null) {\n    return obj;\n  }\n\n  var cloned = new obj.constructor();\n\n  for (var i in obj) {\n    if (!obj.hasOwnProperty(i)) {\n      continue;\n    }\n\n    var value = obj[i];\n    var type = typeof value;\n\n    if (i === 'parent' && type === 'object') {\n      if (parent) {\n        cloned[i] = parent;\n      }\n    } else if (value instanceof Array) {\n      cloned[i] = value.map(function (j) {\n        return cloneNode(j, cloned);\n      });\n    } else {\n      cloned[i] = cloneNode(value, cloned);\n    }\n  }\n\n  return cloned;\n};\n\nvar Node = /*#__PURE__*/function () {\n  function Node(opts) {\n    if (opts === void 0) {\n      opts = {};\n    }\n\n    Object.assign(this, opts);\n    this.spaces = this.spaces || {};\n    this.spaces.before = this.spaces.before || '';\n    this.spaces.after = this.spaces.after || '';\n  }\n\n  var _proto = Node.prototype;\n\n  _proto.remove = function remove() {\n    if (this.parent) {\n      this.parent.removeChild(this);\n    }\n\n    this.parent = undefined;\n    return this;\n  };\n\n  _proto.replaceWith = function replaceWith() {\n    if (this.parent) {\n      for (var index in arguments) {\n        this.parent.insertBefore(this, arguments[index]);\n      }\n\n      this.remove();\n    }\n\n    return this;\n  };\n\n  _proto.next = function next() {\n    return this.parent.at(this.parent.index(this) + 1);\n  };\n\n  _proto.prev = function prev() {\n    return this.parent.at(this.parent.index(this) - 1);\n  };\n\n  _proto.clone = function clone(overrides) {\n    if (overrides === void 0) {\n      overrides = {};\n    }\n\n    var cloned = cloneNode(this);\n\n    for (var name in overrides) {\n      cloned[name] = overrides[name];\n    }\n\n    return cloned;\n  }\n  /**\n   * Some non-standard syntax doesn't follow normal escaping rules for css.\n   * This allows non standard syntax to be appended to an existing property\n   * by specifying the escaped value. By specifying the escaped value,\n   * illegal characters are allowed to be directly inserted into css output.\n   * @param {string} name the property to set\n   * @param {any} value the unescaped value of the property\n   * @param {string} valueEscaped optional. the escaped value of the property.\n   */\n  ;\n\n  _proto.appendToPropertyAndEscape = function appendToPropertyAndEscape(name, value, valueEscaped) {\n    if (!this.raws) {\n      this.raws = {};\n    }\n\n    var originalValue = this[name];\n    var originalEscaped = this.raws[name];\n    this[name] = originalValue + value; // this may trigger a setter that updates raws, so it has to be set first.\n\n    if (originalEscaped || valueEscaped !== value) {\n      this.raws[name] = (originalEscaped || originalValue) + valueEscaped;\n    } else {\n      delete this.raws[name]; // delete any escaped value that was created by the setter.\n    }\n  }\n  /**\n   * Some non-standard syntax doesn't follow normal escaping rules for css.\n   * This allows the escaped value to be specified directly, allowing illegal\n   * characters to be directly inserted into css output.\n   * @param {string} name the property to set\n   * @param {any} value the unescaped value of the property\n   * @param {string} valueEscaped the escaped value of the property.\n   */\n  ;\n\n  _proto.setPropertyAndEscape = function setPropertyAndEscape(name, value, valueEscaped) {\n    if (!this.raws) {\n      this.raws = {};\n    }\n\n    this[name] = value; // this may trigger a setter that updates raws, so it has to be set first.\n\n    this.raws[name] = valueEscaped;\n  }\n  /**\n   * When you want a value to passed through to CSS directly. This method\n   * deletes the corresponding raw value causing the stringifier to fallback\n   * to the unescaped value.\n   * @param {string} name the property to set.\n   * @param {any} value The value that is both escaped and unescaped.\n   */\n  ;\n\n  _proto.setPropertyWithoutEscape = function setPropertyWithoutEscape(name, value) {\n    this[name] = value; // this may trigger a setter that updates raws, so it has to be set first.\n\n    if (this.raws) {\n      delete this.raws[name];\n    }\n  }\n  /**\n   *\n   * @param {number} line The number (starting with 1)\n   * @param {number} column The column number (starting with 1)\n   */\n  ;\n\n  _proto.isAtPosition = function isAtPosition(line, column) {\n    if (this.source && this.source.start && this.source.end) {\n      if (this.source.start.line > line) {\n        return false;\n      }\n\n      if (this.source.end.line < line) {\n        return false;\n      }\n\n      if (this.source.start.line === line && this.source.start.column > column) {\n        return false;\n      }\n\n      if (this.source.end.line === line && this.source.end.column < column) {\n        return false;\n      }\n\n      return true;\n    }\n\n    return undefined;\n  };\n\n  _proto.stringifyProperty = function stringifyProperty(name) {\n    return this.raws && this.raws[name] || this[name];\n  };\n\n  _proto.valueToString = function valueToString() {\n    return String(this.stringifyProperty(\"value\"));\n  };\n\n  _proto.toString = function toString() {\n    return [this.rawSpaceBefore, this.valueToString(), this.rawSpaceAfter].join('');\n  };\n\n  _createClass(Node, [{\n    key: \"rawSpaceBefore\",\n    get: function get() {\n      var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.before;\n\n      if (rawSpace === undefined) {\n        rawSpace = this.spaces && this.spaces.before;\n      }\n\n      return rawSpace || \"\";\n    },\n    set: function set(raw) {\n      (0, _util.ensureObject)(this, \"raws\", \"spaces\");\n      this.raws.spaces.before = raw;\n    }\n  }, {\n    key: \"rawSpaceAfter\",\n    get: function get() {\n      var rawSpace = this.raws && this.raws.spaces && this.raws.spaces.after;\n\n      if (rawSpace === undefined) {\n        rawSpace = this.spaces.after;\n      }\n\n      return rawSpace || \"\";\n    },\n    set: function set(raw) {\n      (0, _util.ensureObject)(this, \"raws\", \"spaces\");\n      this.raws.spaces.after = raw;\n    }\n  }]);\n\n  return Node;\n}();\n\nexports[\"default\"] = Node;\nmodule.exports = exports.default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.UNIVERSAL = exports.ATTRIBUTE = exports.CLASS = exports.COMBINATOR = exports.COMMENT = exports.ID = exports.NESTING = exports.PSEUDO = exports.ROOT = exports.SELECTOR = exports.STRING = exports.TAG = void 0;\nvar TAG = 'tag';\nexports.TAG = TAG;\nvar STRING = 'string';\nexports.STRING = STRING;\nvar SELECTOR = 'selector';\nexports.SELECTOR = SELECTOR;\nvar ROOT = 'root';\nexports.ROOT = ROOT;\nvar PSEUDO = 'pseudo';\nexports.PSEUDO = PSEUDO;\nvar NESTING = 'nesting';\nexports.NESTING = NESTING;\nvar ID = 'id';\nexports.ID = ID;\nvar COMMENT = 'comment';\nexports.COMMENT = COMMENT;\nvar COMBINATOR = 'combinator';\nexports.COMBINATOR = COMBINATOR;\nvar CLASS = 'class';\nexports.CLASS = CLASS;\nvar ATTRIBUTE = 'attribute';\nexports.ATTRIBUTE = ATTRIBUTE;\nvar UNIVERSAL = 'universal';\nexports.UNIVERSAL = UNIVERSAL;", "\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar types = _interopRequireWildcard(require(\"./types\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it; if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } it = o[Symbol.iterator](); return it.next.bind(it); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\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 _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _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\nvar Container = /*#__PURE__*/function (_Node) {\n  _inheritsLoose(Container, _Node);\n\n  function Container(opts) {\n    var _this;\n\n    _this = _Node.call(this, opts) || this;\n\n    if (!_this.nodes) {\n      _this.nodes = [];\n    }\n\n    return _this;\n  }\n\n  var _proto = Container.prototype;\n\n  _proto.append = function append(selector) {\n    selector.parent = this;\n    this.nodes.push(selector);\n    return this;\n  };\n\n  _proto.prepend = function prepend(selector) {\n    selector.parent = this;\n    this.nodes.unshift(selector);\n    return this;\n  };\n\n  _proto.at = function at(index) {\n    return this.nodes[index];\n  };\n\n  _proto.index = function index(child) {\n    if (typeof child === 'number') {\n      return child;\n    }\n\n    return this.nodes.indexOf(child);\n  };\n\n  _proto.removeChild = function removeChild(child) {\n    child = this.index(child);\n    this.at(child).parent = undefined;\n    this.nodes.splice(child, 1);\n    var index;\n\n    for (var id in this.indexes) {\n      index = this.indexes[id];\n\n      if (index >= child) {\n        this.indexes[id] = index - 1;\n      }\n    }\n\n    return this;\n  };\n\n  _proto.removeAll = function removeAll() {\n    for (var _iterator = _createForOfIteratorHelperLoose(this.nodes), _step; !(_step = _iterator()).done;) {\n      var node = _step.value;\n      node.parent = undefined;\n    }\n\n    this.nodes = [];\n    return this;\n  };\n\n  _proto.empty = function empty() {\n    return this.removeAll();\n  };\n\n  _proto.insertAfter = function insertAfter(oldNode, newNode) {\n    newNode.parent = this;\n    var oldIndex = this.index(oldNode);\n    this.nodes.splice(oldIndex + 1, 0, newNode);\n    newNode.parent = this;\n    var index;\n\n    for (var id in this.indexes) {\n      index = this.indexes[id];\n\n      if (oldIndex <= index) {\n        this.indexes[id] = index + 1;\n      }\n    }\n\n    return this;\n  };\n\n  _proto.insertBefore = function insertBefore(oldNode, newNode) {\n    newNode.parent = this;\n    var oldIndex = this.index(oldNode);\n    this.nodes.splice(oldIndex, 0, newNode);\n    newNode.parent = this;\n    var index;\n\n    for (var id in this.indexes) {\n      index = this.indexes[id];\n\n      if (index <= oldIndex) {\n        this.indexes[id] = index + 1;\n      }\n    }\n\n    return this;\n  };\n\n  _proto._findChildAtPosition = function _findChildAtPosition(line, col) {\n    var found = undefined;\n    this.each(function (node) {\n      if (node.atPosition) {\n        var foundChild = node.atPosition(line, col);\n\n        if (foundChild) {\n          found = foundChild;\n          return false;\n        }\n      } else if (node.isAtPosition(line, col)) {\n        found = node;\n        return false;\n      }\n    });\n    return found;\n  }\n  /**\n   * Return the most specific node at the line and column number given.\n   * The source location is based on the original parsed location, locations aren't\n   * updated as selector nodes are mutated.\n   * \n   * Note that this location is relative to the location of the first character\n   * of the selector, and not the location of the selector in the overall document\n   * when used in conjunction with postcss.\n   *\n   * If not found, returns undefined.\n   * @param {number} line The line number of the node to find. (1-based index)\n   * @param {number} col  The column number of the node to find. (1-based index)\n   */\n  ;\n\n  _proto.atPosition = function atPosition(line, col) {\n    if (this.isAtPosition(line, col)) {\n      return this._findChildAtPosition(line, col) || this;\n    } else {\n      return undefined;\n    }\n  };\n\n  _proto._inferEndPosition = function _inferEndPosition() {\n    if (this.last && this.last.source && this.last.source.end) {\n      this.source = this.source || {};\n      this.source.end = this.source.end || {};\n      Object.assign(this.source.end, this.last.source.end);\n    }\n  };\n\n  _proto.each = function each(callback) {\n    if (!this.lastEach) {\n      this.lastEach = 0;\n    }\n\n    if (!this.indexes) {\n      this.indexes = {};\n    }\n\n    this.lastEach++;\n    var id = this.lastEach;\n    this.indexes[id] = 0;\n\n    if (!this.length) {\n      return undefined;\n    }\n\n    var index, result;\n\n    while (this.indexes[id] < this.length) {\n      index = this.indexes[id];\n      result = callback(this.at(index), index);\n\n      if (result === false) {\n        break;\n      }\n\n      this.indexes[id] += 1;\n    }\n\n    delete this.indexes[id];\n\n    if (result === false) {\n      return false;\n    }\n  };\n\n  _proto.walk = function walk(callback) {\n    return this.each(function (node, i) {\n      var result = callback(node, i);\n\n      if (result !== false && node.length) {\n        result = node.walk(callback);\n      }\n\n      if (result === false) {\n        return false;\n      }\n    });\n  };\n\n  _proto.walkAttributes = function walkAttributes(callback) {\n    var _this2 = this;\n\n    return this.walk(function (selector) {\n      if (selector.type === types.ATTRIBUTE) {\n        return callback.call(_this2, selector);\n      }\n    });\n  };\n\n  _proto.walkClasses = function walkClasses(callback) {\n    var _this3 = this;\n\n    return this.walk(function (selector) {\n      if (selector.type === types.CLASS) {\n        return callback.call(_this3, selector);\n      }\n    });\n  };\n\n  _proto.walkCombinators = function walkCombinators(callback) {\n    var _this4 = this;\n\n    return this.walk(function (selector) {\n      if (selector.type === types.COMBINATOR) {\n        return callback.call(_this4, selector);\n      }\n    });\n  };\n\n  _proto.walkComments = function walkComments(callback) {\n    var _this5 = this;\n\n    return this.walk(function (selector) {\n      if (selector.type === types.COMMENT) {\n        return callback.call(_this5, selector);\n      }\n    });\n  };\n\n  _proto.walkIds = function walkIds(callback) {\n    var _this6 = this;\n\n    return this.walk(function (selector) {\n      if (selector.type === types.ID) {\n        return callback.call(_this6, selector);\n      }\n    });\n  };\n\n  _proto.walkNesting = function walkNesting(callback) {\n    var _this7 = this;\n\n    return this.walk(function (selector) {\n      if (selector.type === types.NESTING) {\n        return callback.call(_this7, selector);\n      }\n    });\n  };\n\n  _proto.walkPseudos = function walkPseudos(callback) {\n    var _this8 = this;\n\n    return this.walk(function (selector) {\n      if (selector.type === types.PSEUDO) {\n        return callback.call(_this8, selector);\n      }\n    });\n  };\n\n  _proto.walkTags = function walkTags(callback) {\n    var _this9 = this;\n\n    return this.walk(function (selector) {\n      if (selector.type === types.TAG) {\n        return callback.call(_this9, selector);\n      }\n    });\n  };\n\n  _proto.walkUniversals = function walkUniversals(callback) {\n    var _this10 = this;\n\n    return this.walk(function (selector) {\n      if (selector.type === types.UNIVERSAL) {\n        return callback.call(_this10, selector);\n      }\n    });\n  };\n\n  _proto.split = function split(callback) {\n    var _this11 = this;\n\n    var current = [];\n    return this.reduce(function (memo, node, index) {\n      var split = callback.call(_this11, node);\n      current.push(node);\n\n      if (split) {\n        memo.push(current);\n        current = [];\n      } else if (index === _this11.length - 1) {\n        memo.push(current);\n      }\n\n      return memo;\n    }, []);\n  };\n\n  _proto.map = function map(callback) {\n    return this.nodes.map(callback);\n  };\n\n  _proto.reduce = function reduce(callback, memo) {\n    return this.nodes.reduce(callback, memo);\n  };\n\n  _proto.every = function every(callback) {\n    return this.nodes.every(callback);\n  };\n\n  _proto.some = function some(callback) {\n    return this.nodes.some(callback);\n  };\n\n  _proto.filter = function filter(callback) {\n    return this.nodes.filter(callback);\n  };\n\n  _proto.sort = function sort(callback) {\n    return this.nodes.sort(callback);\n  };\n\n  _proto.toString = function toString() {\n    return this.map(String).join('');\n  };\n\n  _createClass(Container, [{\n    key: \"first\",\n    get: function get() {\n      return this.at(0);\n    }\n  }, {\n    key: \"last\",\n    get: function get() {\n      return this.at(this.length - 1);\n    }\n  }, {\n    key: \"length\",\n    get: function get() {\n      return this.nodes.length;\n    }\n  }]);\n\n  return Container;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Container;\nmodule.exports = exports.default;", "\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\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 _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _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\nvar Root = /*#__PURE__*/function (_Container) {\n  _inheritsLoose(Root, _Container);\n\n  function Root(opts) {\n    var _this;\n\n    _this = _Container.call(this, opts) || this;\n    _this.type = _types.ROOT;\n    return _this;\n  }\n\n  var _proto = Root.prototype;\n\n  _proto.toString = function toString() {\n    var str = this.reduce(function (memo, selector) {\n      memo.push(String(selector));\n      return memo;\n    }, []).join(',');\n    return this.trailingComma ? str + ',' : str;\n  };\n\n  _proto.error = function error(message, options) {\n    if (this._error) {\n      return this._error(message, options);\n    } else {\n      return new Error(message);\n    }\n  };\n\n  _createClass(Root, [{\n    key: \"errorGenerator\",\n    set: function set(handler) {\n      this._error = handler;\n    }\n  }]);\n\n  return Root;\n}(_container[\"default\"]);\n\nexports[\"default\"] = Root;\nmodule.exports = exports.default;", "\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _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\nvar Selector = /*#__PURE__*/function (_Container) {\n  _inheritsLoose(Selector, _Container);\n\n  function Selector(opts) {\n    var _this;\n\n    _this = _Container.call(this, opts) || this;\n    _this.type = _types.SELECTOR;\n    return _this;\n  }\n\n  return Selector;\n}(_container[\"default\"]);\n\nexports[\"default\"] = Selector;\nmodule.exports = exports.default;", "/*! https://mths.be/cssesc v3.0.0 by @mathias */\n'use strict';\n\nvar object = {};\nvar hasOwnProperty = object.hasOwnProperty;\nvar merge = function merge(options, defaults) {\n\tif (!options) {\n\t\treturn defaults;\n\t}\n\tvar result = {};\n\tfor (var key in defaults) {\n\t\t// `if (defaults.hasOwnProperty(key) { \u2026 }` is not needed here, since\n\t\t// only recognized option names are used.\n\t\tresult[key] = hasOwnProperty.call(options, key) ? options[key] : defaults[key];\n\t}\n\treturn result;\n};\n\nvar regexAnySingleEscape = /[ -,\\.\\/:-@\\[-\\^`\\{-~]/;\nvar regexSingleEscape = /[ -,\\.\\/:-@\\[\\]\\^`\\{-~]/;\nvar regexAlwaysEscape = /['\"\\\\]/;\nvar regexExcessiveSpaces = /(^|\\\\+)?(\\\\[A-F0-9]{1,6})\\x20(?![a-fA-F0-9\\x20])/g;\n\n// https://mathiasbynens.be/notes/css-escapes#css\nvar cssesc = function cssesc(string, options) {\n\toptions = merge(options, cssesc.options);\n\tif (options.quotes != 'single' && options.quotes != 'double') {\n\t\toptions.quotes = 'single';\n\t}\n\tvar quote = options.quotes == 'double' ? '\"' : '\\'';\n\tvar isIdentifier = options.isIdentifier;\n\n\tvar firstChar = string.charAt(0);\n\tvar output = '';\n\tvar counter = 0;\n\tvar length = string.length;\n\twhile (counter < length) {\n\t\tvar character = string.charAt(counter++);\n\t\tvar codePoint = character.charCodeAt();\n\t\tvar value = void 0;\n\t\t// If it\u2019s not a printable ASCII character\u2026\n\t\tif (codePoint < 0x20 || codePoint > 0x7E) {\n\t\t\tif (codePoint >= 0xD800 && codePoint <= 0xDBFF && counter < length) {\n\t\t\t\t// It\u2019s a high surrogate, and there is a next character.\n\t\t\t\tvar extra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) {\n\t\t\t\t\t// next character is low surrogate\n\t\t\t\t\tcodePoint = ((codePoint & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000;\n\t\t\t\t} else {\n\t\t\t\t\t// It\u2019s an unmatched surrogate; only append this code unit, in case\n\t\t\t\t\t// the next code unit is the high surrogate of a surrogate pair.\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t} else {\n\t\t\tif (options.escapeEverything) {\n\t\t\t\tif (regexAnySingleEscape.test(character)) {\n\t\t\t\t\tvalue = '\\\\' + character;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t\t\t}\n\t\t\t} else if (/[\\t\\n\\f\\r\\x0B]/.test(character)) {\n\t\t\t\tvalue = '\\\\' + codePoint.toString(16).toUpperCase() + ' ';\n\t\t\t} else if (character == '\\\\' || !isIdentifier && (character == '\"' && quote == character || character == '\\'' && quote == character) || isIdentifier && regexSingleEscape.test(character)) {\n\t\t\t\tvalue = '\\\\' + character;\n\t\t\t} else {\n\t\t\t\tvalue = character;\n\t\t\t}\n\t\t}\n\t\toutput += value;\n\t}\n\n\tif (isIdentifier) {\n\t\tif (/^-[-\\d]/.test(output)) {\n\t\t\toutput = '\\\\-' + output.slice(1);\n\t\t} else if (/\\d/.test(firstChar)) {\n\t\t\toutput = '\\\\3' + firstChar + ' ' + output.slice(1);\n\t\t}\n\t}\n\n\t// Remove spaces after `\\HEX` escapes that are not followed by a hex digit,\n\t// since they\u2019re redundant. Note that this is only possible if the escape\n\t// sequence isn\u2019t preceded by an odd number of backslashes.\n\toutput = output.replace(regexExcessiveSpaces, function ($0, $1, $2) {\n\t\tif ($1 && $1.length % 2) {\n\t\t\t// It\u2019s not safe to remove the space, so don\u2019t.\n\t\t\treturn $0;\n\t\t}\n\t\t// Strip the space.\n\t\treturn ($1 || '') + $2;\n\t});\n\n\tif (!isIdentifier && options.wrap) {\n\t\treturn quote + output + quote;\n\t}\n\treturn output;\n};\n\n// Expose default options (so they can be overridden globally).\ncssesc.options = {\n\t'escapeEverything': false,\n\t'isIdentifier': false,\n\t'quotes': 'single',\n\t'wrap': false\n};\n\ncssesc.version = '3.0.0';\n\nmodule.exports = cssesc;\n", "\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _cssesc = _interopRequireDefault(require(\"cssesc\"));\n\nvar _util = require(\"../util\");\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\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 _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _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\nvar ClassName = /*#__PURE__*/function (_Node) {\n  _inheritsLoose(ClassName, _Node);\n\n  function ClassName(opts) {\n    var _this;\n\n    _this = _Node.call(this, opts) || this;\n    _this.type = _types.CLASS;\n    _this._constructed = true;\n    return _this;\n  }\n\n  var _proto = ClassName.prototype;\n\n  _proto.valueToString = function valueToString() {\n    return '.' + _Node.prototype.valueToString.call(this);\n  };\n\n  _createClass(ClassName, [{\n    key: \"value\",\n    get: function get() {\n      return this._value;\n    },\n    set: function set(v) {\n      if (this._constructed) {\n        var escaped = (0, _cssesc[\"default\"])(v, {\n          isIdentifier: true\n        });\n\n        if (escaped !== v) {\n          (0, _util.ensureObject)(this, \"raws\");\n          this.raws.value = escaped;\n        } else if (this.raws) {\n          delete this.raws.value;\n        }\n      }\n\n      this._value = v;\n    }\n  }]);\n\n  return ClassName;\n}(_node[\"default\"]);\n\nexports[\"default\"] = ClassName;\nmodule.exports = exports.default;", "\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _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\nvar Comment = /*#__PURE__*/function (_Node) {\n  _inheritsLoose(Comment, _Node);\n\n  function Comment(opts) {\n    var _this;\n\n    _this = _Node.call(this, opts) || this;\n    _this.type = _types.COMMENT;\n    return _this;\n  }\n\n  return Comment;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Comment;\nmodule.exports = exports.default;", "\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _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\nvar ID = /*#__PURE__*/function (_Node) {\n  _inheritsLoose(ID, _Node);\n\n  function ID(opts) {\n    var _this;\n\n    _this = _Node.call(this, opts) || this;\n    _this.type = _types.ID;\n    return _this;\n  }\n\n  var _proto = ID.prototype;\n\n  _proto.valueToString = function valueToString() {\n    return '#' + _Node.prototype.valueToString.call(this);\n  };\n\n  return ID;\n}(_node[\"default\"]);\n\nexports[\"default\"] = ID;\nmodule.exports = exports.default;", "\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _cssesc = _interopRequireDefault(require(\"cssesc\"));\n\nvar _util = require(\"../util\");\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\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 _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _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\nvar Namespace = /*#__PURE__*/function (_Node) {\n  _inheritsLoose(Namespace, _Node);\n\n  function Namespace() {\n    return _Node.apply(this, arguments) || this;\n  }\n\n  var _proto = Namespace.prototype;\n\n  _proto.qualifiedName = function qualifiedName(value) {\n    if (this.namespace) {\n      return this.namespaceString + \"|\" + value;\n    } else {\n      return value;\n    }\n  };\n\n  _proto.valueToString = function valueToString() {\n    return this.qualifiedName(_Node.prototype.valueToString.call(this));\n  };\n\n  _createClass(Namespace, [{\n    key: \"namespace\",\n    get: function get() {\n      return this._namespace;\n    },\n    set: function set(namespace) {\n      if (namespace === true || namespace === \"*\" || namespace === \"&\") {\n        this._namespace = namespace;\n\n        if (this.raws) {\n          delete this.raws.namespace;\n        }\n\n        return;\n      }\n\n      var escaped = (0, _cssesc[\"default\"])(namespace, {\n        isIdentifier: true\n      });\n      this._namespace = namespace;\n\n      if (escaped !== namespace) {\n        (0, _util.ensureObject)(this, \"raws\");\n        this.raws.namespace = escaped;\n      } else if (this.raws) {\n        delete this.raws.namespace;\n      }\n    }\n  }, {\n    key: \"ns\",\n    get: function get() {\n      return this._namespace;\n    },\n    set: function set(namespace) {\n      this.namespace = namespace;\n    }\n  }, {\n    key: \"namespaceString\",\n    get: function get() {\n      if (this.namespace) {\n        var ns = this.stringifyProperty(\"namespace\");\n\n        if (ns === true) {\n          return '';\n        } else {\n          return ns;\n        }\n      } else {\n        return '';\n      }\n    }\n  }]);\n\n  return Namespace;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Namespace;\n;\nmodule.exports = exports.default;", "\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _namespace = _interopRequireDefault(require(\"./namespace\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _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\nvar Tag = /*#__PURE__*/function (_Namespace) {\n  _inheritsLoose(Tag, _Namespace);\n\n  function Tag(opts) {\n    var _this;\n\n    _this = _Namespace.call(this, opts) || this;\n    _this.type = _types.TAG;\n    return _this;\n  }\n\n  return Tag;\n}(_namespace[\"default\"]);\n\nexports[\"default\"] = Tag;\nmodule.exports = exports.default;", "\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _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\nvar String = /*#__PURE__*/function (_Node) {\n  _inheritsLoose(String, _Node);\n\n  function String(opts) {\n    var _this;\n\n    _this = _Node.call(this, opts) || this;\n    _this.type = _types.STRING;\n    return _this;\n  }\n\n  return String;\n}(_node[\"default\"]);\n\nexports[\"default\"] = String;\nmodule.exports = exports.default;", "\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _container = _interopRequireDefault(require(\"./container\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _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\nvar Pseudo = /*#__PURE__*/function (_Container) {\n  _inheritsLoose(Pseudo, _Container);\n\n  function Pseudo(opts) {\n    var _this;\n\n    _this = _Container.call(this, opts) || this;\n    _this.type = _types.PSEUDO;\n    return _this;\n  }\n\n  var _proto = Pseudo.prototype;\n\n  _proto.toString = function toString() {\n    var params = this.length ? '(' + this.map(String).join(',') + ')' : '';\n    return [this.rawSpaceBefore, this.stringifyProperty(\"value\"), params, this.rawSpaceAfter].join('');\n  };\n\n  return Pseudo;\n}(_container[\"default\"]);\n\nexports[\"default\"] = Pseudo;\nmodule.exports = exports.default;", "\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n  if (config('noDeprecation')) {\n    return fn;\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (config('throwDeprecation')) {\n        throw new Error(msg);\n      } else if (config('traceDeprecation')) {\n        console.trace(msg);\n      } else {\n        console.warn(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n  // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n  try {\n    if (!global.localStorage) return false;\n  } catch (_) {\n    return false;\n  }\n  var val = global.localStorage[name];\n  if (null == val) return false;\n  return String(val).toLowerCase() === 'true';\n}\n", "\"use strict\";\n\nexports.__esModule = true;\nexports.unescapeValue = unescapeValue;\nexports[\"default\"] = void 0;\n\nvar _cssesc = _interopRequireDefault(require(\"cssesc\"));\n\nvar _unesc = _interopRequireDefault(require(\"../util/unesc\"));\n\nvar _namespace = _interopRequireDefault(require(\"./namespace\"));\n\nvar _types = require(\"./types\");\n\nvar _CSSESC_QUOTE_OPTIONS;\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\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 _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _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\nvar deprecate = require(\"util-deprecate\");\n\nvar WRAPPED_IN_QUOTES = /^('|\")([^]*)\\1$/;\nvar warnOfDeprecatedValueAssignment = deprecate(function () {}, \"Assigning an attribute a value containing characters that might need to be escaped is deprecated. \" + \"Call attribute.setValue() instead.\");\nvar warnOfDeprecatedQuotedAssignment = deprecate(function () {}, \"Assigning attr.quoted is deprecated and has no effect. Assign to attr.quoteMark instead.\");\nvar warnOfDeprecatedConstructor = deprecate(function () {}, \"Constructing an Attribute selector with a value without specifying quoteMark is deprecated. Note: The value should be unescaped now.\");\n\nfunction unescapeValue(value) {\n  var deprecatedUsage = false;\n  var quoteMark = null;\n  var unescaped = value;\n  var m = unescaped.match(WRAPPED_IN_QUOTES);\n\n  if (m) {\n    quoteMark = m[1];\n    unescaped = m[2];\n  }\n\n  unescaped = (0, _unesc[\"default\"])(unescaped);\n\n  if (unescaped !== value) {\n    deprecatedUsage = true;\n  }\n\n  return {\n    deprecatedUsage: deprecatedUsage,\n    unescaped: unescaped,\n    quoteMark: quoteMark\n  };\n}\n\nfunction handleDeprecatedContructorOpts(opts) {\n  if (opts.quoteMark !== undefined) {\n    return opts;\n  }\n\n  if (opts.value === undefined) {\n    return opts;\n  }\n\n  warnOfDeprecatedConstructor();\n\n  var _unescapeValue = unescapeValue(opts.value),\n      quoteMark = _unescapeValue.quoteMark,\n      unescaped = _unescapeValue.unescaped;\n\n  if (!opts.raws) {\n    opts.raws = {};\n  }\n\n  if (opts.raws.value === undefined) {\n    opts.raws.value = opts.value;\n  }\n\n  opts.value = unescaped;\n  opts.quoteMark = quoteMark;\n  return opts;\n}\n\nvar Attribute = /*#__PURE__*/function (_Namespace) {\n  _inheritsLoose(Attribute, _Namespace);\n\n  function Attribute(opts) {\n    var _this;\n\n    if (opts === void 0) {\n      opts = {};\n    }\n\n    _this = _Namespace.call(this, handleDeprecatedContructorOpts(opts)) || this;\n    _this.type = _types.ATTRIBUTE;\n    _this.raws = _this.raws || {};\n    Object.defineProperty(_this.raws, 'unquoted', {\n      get: deprecate(function () {\n        return _this.value;\n      }, \"attr.raws.unquoted is deprecated. Call attr.value instead.\"),\n      set: deprecate(function () {\n        return _this.value;\n      }, \"Setting attr.raws.unquoted is deprecated and has no effect. attr.value is unescaped by default now.\")\n    });\n    _this._constructed = true;\n    return _this;\n  }\n  /**\n   * Returns the Attribute's value quoted such that it would be legal to use\n   * in the value of a css file. The original value's quotation setting\n   * used for stringification is left unchanged. See `setValue(value, options)`\n   * if you want to control the quote settings of a new value for the attribute.\n   *\n   * You can also change the quotation used for the current value by setting quoteMark.\n   *\n   * Options:\n   *   * quoteMark {'\"' | \"'\" | null} - Use this value to quote the value. If this\n   *     option is not set, the original value for quoteMark will be used. If\n   *     indeterminate, a double quote is used. The legal values are:\n   *     * `null` - the value will be unquoted and characters will be escaped as necessary.\n   *     * `'` - the value will be quoted with a single quote and single quotes are escaped.\n   *     * `\"` - the value will be quoted with a double quote and double quotes are escaped.\n   *   * preferCurrentQuoteMark {boolean} - if true, prefer the source quote mark\n   *     over the quoteMark option value.\n   *   * smart {boolean} - if true, will select a quote mark based on the value\n   *     and the other options specified here. See the `smartQuoteMark()`\n   *     method.\n   **/\n\n\n  var _proto = Attribute.prototype;\n\n  _proto.getQuotedValue = function getQuotedValue(options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    var quoteMark = this._determineQuoteMark(options);\n\n    var cssescopts = CSSESC_QUOTE_OPTIONS[quoteMark];\n    var escaped = (0, _cssesc[\"default\"])(this._value, cssescopts);\n    return escaped;\n  };\n\n  _proto._determineQuoteMark = function _determineQuoteMark(options) {\n    return options.smart ? this.smartQuoteMark(options) : this.preferredQuoteMark(options);\n  }\n  /**\n   * Set the unescaped value with the specified quotation options. The value\n   * provided must not include any wrapping quote marks -- those quotes will\n   * be interpreted as part of the value and escaped accordingly.\n   */\n  ;\n\n  _proto.setValue = function setValue(value, options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    this._value = value;\n    this._quoteMark = this._determineQuoteMark(options);\n\n    this._syncRawValue();\n  }\n  /**\n   * Intelligently select a quoteMark value based on the value's contents. If\n   * the value is a legal CSS ident, it will not be quoted. Otherwise a quote\n   * mark will be picked that minimizes the number of escapes.\n   *\n   * If there's no clear winner, the quote mark from these options is used,\n   * then the source quote mark (this is inverted if `preferCurrentQuoteMark` is\n   * true). If the quoteMark is unspecified, a double quote is used.\n   *\n   * @param options This takes the quoteMark and preferCurrentQuoteMark options\n   * from the quoteValue method.\n   */\n  ;\n\n  _proto.smartQuoteMark = function smartQuoteMark(options) {\n    var v = this.value;\n    var numSingleQuotes = v.replace(/[^']/g, '').length;\n    var numDoubleQuotes = v.replace(/[^\"]/g, '').length;\n\n    if (numSingleQuotes + numDoubleQuotes === 0) {\n      var escaped = (0, _cssesc[\"default\"])(v, {\n        isIdentifier: true\n      });\n\n      if (escaped === v) {\n        return Attribute.NO_QUOTE;\n      } else {\n        var pref = this.preferredQuoteMark(options);\n\n        if (pref === Attribute.NO_QUOTE) {\n          // pick a quote mark that isn't none and see if it's smaller\n          var quote = this.quoteMark || options.quoteMark || Attribute.DOUBLE_QUOTE;\n          var opts = CSSESC_QUOTE_OPTIONS[quote];\n          var quoteValue = (0, _cssesc[\"default\"])(v, opts);\n\n          if (quoteValue.length < escaped.length) {\n            return quote;\n          }\n        }\n\n        return pref;\n      }\n    } else if (numDoubleQuotes === numSingleQuotes) {\n      return this.preferredQuoteMark(options);\n    } else if (numDoubleQuotes < numSingleQuotes) {\n      return Attribute.DOUBLE_QUOTE;\n    } else {\n      return Attribute.SINGLE_QUOTE;\n    }\n  }\n  /**\n   * Selects the preferred quote mark based on the options and the current quote mark value.\n   * If you want the quote mark to depend on the attribute value, call `smartQuoteMark(opts)`\n   * instead.\n   */\n  ;\n\n  _proto.preferredQuoteMark = function preferredQuoteMark(options) {\n    var quoteMark = options.preferCurrentQuoteMark ? this.quoteMark : options.quoteMark;\n\n    if (quoteMark === undefined) {\n      quoteMark = options.preferCurrentQuoteMark ? options.quoteMark : this.quoteMark;\n    }\n\n    if (quoteMark === undefined) {\n      quoteMark = Attribute.DOUBLE_QUOTE;\n    }\n\n    return quoteMark;\n  };\n\n  _proto._syncRawValue = function _syncRawValue() {\n    var rawValue = (0, _cssesc[\"default\"])(this._value, CSSESC_QUOTE_OPTIONS[this.quoteMark]);\n\n    if (rawValue === this._value) {\n      if (this.raws) {\n        delete this.raws.value;\n      }\n    } else {\n      this.raws.value = rawValue;\n    }\n  };\n\n  _proto._handleEscapes = function _handleEscapes(prop, value) {\n    if (this._constructed) {\n      var escaped = (0, _cssesc[\"default\"])(value, {\n        isIdentifier: true\n      });\n\n      if (escaped !== value) {\n        this.raws[prop] = escaped;\n      } else {\n        delete this.raws[prop];\n      }\n    }\n  };\n\n  _proto._spacesFor = function _spacesFor(name) {\n    var attrSpaces = {\n      before: '',\n      after: ''\n    };\n    var spaces = this.spaces[name] || {};\n    var rawSpaces = this.raws.spaces && this.raws.spaces[name] || {};\n    return Object.assign(attrSpaces, spaces, rawSpaces);\n  };\n\n  _proto._stringFor = function _stringFor(name, spaceName, concat) {\n    if (spaceName === void 0) {\n      spaceName = name;\n    }\n\n    if (concat === void 0) {\n      concat = defaultAttrConcat;\n    }\n\n    var attrSpaces = this._spacesFor(spaceName);\n\n    return concat(this.stringifyProperty(name), attrSpaces);\n  }\n  /**\n   * returns the offset of the attribute part specified relative to the\n   * start of the node of the output string.\n   *\n   * * \"ns\" - alias for \"namespace\"\n   * * \"namespace\" - the namespace if it exists.\n   * * \"attribute\" - the attribute name\n   * * \"attributeNS\" - the start of the attribute or its namespace\n   * * \"operator\" - the match operator of the attribute\n   * * \"value\" - The value (string or identifier)\n   * * \"insensitive\" - the case insensitivity flag;\n   * @param part One of the possible values inside an attribute.\n   * @returns -1 if the name is invalid or the value doesn't exist in this attribute.\n   */\n  ;\n\n  _proto.offsetOf = function offsetOf(name) {\n    var count = 1;\n\n    var attributeSpaces = this._spacesFor(\"attribute\");\n\n    count += attributeSpaces.before.length;\n\n    if (name === \"namespace\" || name === \"ns\") {\n      return this.namespace ? count : -1;\n    }\n\n    if (name === \"attributeNS\") {\n      return count;\n    }\n\n    count += this.namespaceString.length;\n\n    if (this.namespace) {\n      count += 1;\n    }\n\n    if (name === \"attribute\") {\n      return count;\n    }\n\n    count += this.stringifyProperty(\"attribute\").length;\n    count += attributeSpaces.after.length;\n\n    var operatorSpaces = this._spacesFor(\"operator\");\n\n    count += operatorSpaces.before.length;\n    var operator = this.stringifyProperty(\"operator\");\n\n    if (name === \"operator\") {\n      return operator ? count : -1;\n    }\n\n    count += operator.length;\n    count += operatorSpaces.after.length;\n\n    var valueSpaces = this._spacesFor(\"value\");\n\n    count += valueSpaces.before.length;\n    var value = this.stringifyProperty(\"value\");\n\n    if (name === \"value\") {\n      return value ? count : -1;\n    }\n\n    count += value.length;\n    count += valueSpaces.after.length;\n\n    var insensitiveSpaces = this._spacesFor(\"insensitive\");\n\n    count += insensitiveSpaces.before.length;\n\n    if (name === \"insensitive\") {\n      return this.insensitive ? count : -1;\n    }\n\n    return -1;\n  };\n\n  _proto.toString = function toString() {\n    var _this2 = this;\n\n    var selector = [this.rawSpaceBefore, '['];\n    selector.push(this._stringFor('qualifiedAttribute', 'attribute'));\n\n    if (this.operator && (this.value || this.value === '')) {\n      selector.push(this._stringFor('operator'));\n      selector.push(this._stringFor('value'));\n      selector.push(this._stringFor('insensitiveFlag', 'insensitive', function (attrValue, attrSpaces) {\n        if (attrValue.length > 0 && !_this2.quoted && attrSpaces.before.length === 0 && !(_this2.spaces.value && _this2.spaces.value.after)) {\n          attrSpaces.before = \" \";\n        }\n\n        return defaultAttrConcat(attrValue, attrSpaces);\n      }));\n    }\n\n    selector.push(']');\n    selector.push(this.rawSpaceAfter);\n    return selector.join('');\n  };\n\n  _createClass(Attribute, [{\n    key: \"quoted\",\n    get: function get() {\n      var qm = this.quoteMark;\n      return qm === \"'\" || qm === '\"';\n    },\n    set: function set(value) {\n      warnOfDeprecatedQuotedAssignment();\n    }\n    /**\n     * returns a single (`'`) or double (`\"`) quote character if the value is quoted.\n     * returns `null` if the value is not quoted.\n     * returns `undefined` if the quotation state is unknown (this can happen when\n     * the attribute is constructed without specifying a quote mark.)\n     */\n\n  }, {\n    key: \"quoteMark\",\n    get: function get() {\n      return this._quoteMark;\n    }\n    /**\n     * Set the quote mark to be used by this attribute's value.\n     * If the quote mark changes, the raw (escaped) value at `attr.raws.value` of the attribute\n     * value is updated accordingly.\n     *\n     * @param {\"'\" | '\"' | null} quoteMark The quote mark or `null` if the value should be unquoted.\n     */\n    ,\n    set: function set(quoteMark) {\n      if (!this._constructed) {\n        this._quoteMark = quoteMark;\n        return;\n      }\n\n      if (this._quoteMark !== quoteMark) {\n        this._quoteMark = quoteMark;\n\n        this._syncRawValue();\n      }\n    }\n  }, {\n    key: \"qualifiedAttribute\",\n    get: function get() {\n      return this.qualifiedName(this.raws.attribute || this.attribute);\n    }\n  }, {\n    key: \"insensitiveFlag\",\n    get: function get() {\n      return this.insensitive ? 'i' : '';\n    }\n  }, {\n    key: \"value\",\n    get: function get() {\n      return this._value;\n    },\n    set:\n    /**\n     * Before 3.0, the value had to be set to an escaped value including any wrapped\n     * quote marks. In 3.0, the semantics of `Attribute.value` changed so that the value\n     * is unescaped during parsing and any quote marks are removed.\n     *\n     * Because the ambiguity of this semantic change, if you set `attr.value = newValue`,\n     * a deprecation warning is raised when the new value contains any characters that would\n     * require escaping (including if it contains wrapped quotes).\n     *\n     * Instead, you should call `attr.setValue(newValue, opts)` and pass options that describe\n     * how the new value is quoted.\n     */\n    function set(v) {\n      if (this._constructed) {\n        var _unescapeValue2 = unescapeValue(v),\n            deprecatedUsage = _unescapeValue2.deprecatedUsage,\n            unescaped = _unescapeValue2.unescaped,\n            quoteMark = _unescapeValue2.quoteMark;\n\n        if (deprecatedUsage) {\n          warnOfDeprecatedValueAssignment();\n        }\n\n        if (unescaped === this._value && quoteMark === this._quoteMark) {\n          return;\n        }\n\n        this._value = unescaped;\n        this._quoteMark = quoteMark;\n\n        this._syncRawValue();\n      } else {\n        this._value = v;\n      }\n    }\n  }, {\n    key: \"insensitive\",\n    get: function get() {\n      return this._insensitive;\n    }\n    /**\n     * Set the case insensitive flag.\n     * If the case insensitive flag changes, the raw (escaped) value at `attr.raws.insensitiveFlag`\n     * of the attribute is updated accordingly.\n     *\n     * @param {true | false} insensitive true if the attribute should match case-insensitively.\n     */\n    ,\n    set: function set(insensitive) {\n      if (!insensitive) {\n        this._insensitive = false; // \"i\" and \"I\" can be used in \"this.raws.insensitiveFlag\" to store the original notation.\n        // When setting `attr.insensitive = false` both should be erased to ensure correct serialization.\n\n        if (this.raws && (this.raws.insensitiveFlag === 'I' || this.raws.insensitiveFlag === 'i')) {\n          this.raws.insensitiveFlag = undefined;\n        }\n      }\n\n      this._insensitive = insensitive;\n    }\n  }, {\n    key: \"attribute\",\n    get: function get() {\n      return this._attribute;\n    },\n    set: function set(name) {\n      this._handleEscapes(\"attribute\", name);\n\n      this._attribute = name;\n    }\n  }]);\n\n  return Attribute;\n}(_namespace[\"default\"]);\n\nexports[\"default\"] = Attribute;\nAttribute.NO_QUOTE = null;\nAttribute.SINGLE_QUOTE = \"'\";\nAttribute.DOUBLE_QUOTE = '\"';\nvar CSSESC_QUOTE_OPTIONS = (_CSSESC_QUOTE_OPTIONS = {\n  \"'\": {\n    quotes: 'single',\n    wrap: true\n  },\n  '\"': {\n    quotes: 'double',\n    wrap: true\n  }\n}, _CSSESC_QUOTE_OPTIONS[null] = {\n  isIdentifier: true\n}, _CSSESC_QUOTE_OPTIONS);\n\nfunction defaultAttrConcat(attrValue, attrSpaces) {\n  return \"\" + attrSpaces.before + attrValue + attrSpaces.after;\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _namespace = _interopRequireDefault(require(\"./namespace\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _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\nvar Universal = /*#__PURE__*/function (_Namespace) {\n  _inheritsLoose(Universal, _Namespace);\n\n  function Universal(opts) {\n    var _this;\n\n    _this = _Namespace.call(this, opts) || this;\n    _this.type = _types.UNIVERSAL;\n    _this.value = '*';\n    return _this;\n  }\n\n  return Universal;\n}(_namespace[\"default\"]);\n\nexports[\"default\"] = Universal;\nmodule.exports = exports.default;", "\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _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\nvar Combinator = /*#__PURE__*/function (_Node) {\n  _inheritsLoose(Combinator, _Node);\n\n  function Combinator(opts) {\n    var _this;\n\n    _this = _Node.call(this, opts) || this;\n    _this.type = _types.COMBINATOR;\n    return _this;\n  }\n\n  return Combinator;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Combinator;\nmodule.exports = exports.default;", "\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _node = _interopRequireDefault(require(\"./node\"));\n\nvar _types = require(\"./types\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _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\nvar Nesting = /*#__PURE__*/function (_Node) {\n  _inheritsLoose(Nesting, _Node);\n\n  function Nesting(opts) {\n    var _this;\n\n    _this = _Node.call(this, opts) || this;\n    _this.type = _types.NESTING;\n    _this.value = '&';\n    return _this;\n  }\n\n  return Nesting;\n}(_node[\"default\"]);\n\nexports[\"default\"] = Nesting;\nmodule.exports = exports.default;", "\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = sortAscending;\n\nfunction sortAscending(list) {\n  return list.sort(function (a, b) {\n    return a - b;\n  });\n}\n\n;\nmodule.exports = exports.default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.combinator = exports.word = exports.comment = exports.str = exports.tab = exports.newline = exports.feed = exports.cr = exports.backslash = exports.bang = exports.slash = exports.doubleQuote = exports.singleQuote = exports.space = exports.greaterThan = exports.pipe = exports.equals = exports.plus = exports.caret = exports.tilde = exports.dollar = exports.closeSquare = exports.openSquare = exports.closeParenthesis = exports.openParenthesis = exports.semicolon = exports.colon = exports.comma = exports.at = exports.asterisk = exports.ampersand = void 0;\nvar ampersand = 38; // `&`.charCodeAt(0);\n\nexports.ampersand = ampersand;\nvar asterisk = 42; // `*`.charCodeAt(0);\n\nexports.asterisk = asterisk;\nvar at = 64; // `@`.charCodeAt(0);\n\nexports.at = at;\nvar comma = 44; // `,`.charCodeAt(0);\n\nexports.comma = comma;\nvar colon = 58; // `:`.charCodeAt(0);\n\nexports.colon = colon;\nvar semicolon = 59; // `;`.charCodeAt(0);\n\nexports.semicolon = semicolon;\nvar openParenthesis = 40; // `(`.charCodeAt(0);\n\nexports.openParenthesis = openParenthesis;\nvar closeParenthesis = 41; // `)`.charCodeAt(0);\n\nexports.closeParenthesis = closeParenthesis;\nvar openSquare = 91; // `[`.charCodeAt(0);\n\nexports.openSquare = openSquare;\nvar closeSquare = 93; // `]`.charCodeAt(0);\n\nexports.closeSquare = closeSquare;\nvar dollar = 36; // `$`.charCodeAt(0);\n\nexports.dollar = dollar;\nvar tilde = 126; // `~`.charCodeAt(0);\n\nexports.tilde = tilde;\nvar caret = 94; // `^`.charCodeAt(0);\n\nexports.caret = caret;\nvar plus = 43; // `+`.charCodeAt(0);\n\nexports.plus = plus;\nvar equals = 61; // `=`.charCodeAt(0);\n\nexports.equals = equals;\nvar pipe = 124; // `|`.charCodeAt(0);\n\nexports.pipe = pipe;\nvar greaterThan = 62; // `>`.charCodeAt(0);\n\nexports.greaterThan = greaterThan;\nvar space = 32; // ` `.charCodeAt(0);\n\nexports.space = space;\nvar singleQuote = 39; // `'`.charCodeAt(0);\n\nexports.singleQuote = singleQuote;\nvar doubleQuote = 34; // `\"`.charCodeAt(0);\n\nexports.doubleQuote = doubleQuote;\nvar slash = 47; // `/`.charCodeAt(0);\n\nexports.slash = slash;\nvar bang = 33; // `!`.charCodeAt(0);\n\nexports.bang = bang;\nvar backslash = 92; // '\\\\'.charCodeAt(0);\n\nexports.backslash = backslash;\nvar cr = 13; // '\\r'.charCodeAt(0);\n\nexports.cr = cr;\nvar feed = 12; // '\\f'.charCodeAt(0);\n\nexports.feed = feed;\nvar newline = 10; // '\\n'.charCodeAt(0);\n\nexports.newline = newline;\nvar tab = 9; // '\\t'.charCodeAt(0);\n// Expose aliases primarily for readability.\n\nexports.tab = tab;\nvar str = singleQuote; // No good single character representation!\n\nexports.str = str;\nvar comment = -1;\nexports.comment = comment;\nvar word = -2;\nexports.word = word;\nvar combinator = -3;\nexports.combinator = combinator;", "\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = tokenize;\nexports.FIELDS = void 0;\n\nvar t = _interopRequireWildcard(require(\"./tokenTypes\"));\n\nvar _unescapable, _wordDelimiters;\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar unescapable = (_unescapable = {}, _unescapable[t.tab] = true, _unescapable[t.newline] = true, _unescapable[t.cr] = true, _unescapable[t.feed] = true, _unescapable);\nvar wordDelimiters = (_wordDelimiters = {}, _wordDelimiters[t.space] = true, _wordDelimiters[t.tab] = true, _wordDelimiters[t.newline] = true, _wordDelimiters[t.cr] = true, _wordDelimiters[t.feed] = true, _wordDelimiters[t.ampersand] = true, _wordDelimiters[t.asterisk] = true, _wordDelimiters[t.bang] = true, _wordDelimiters[t.comma] = true, _wordDelimiters[t.colon] = true, _wordDelimiters[t.semicolon] = true, _wordDelimiters[t.openParenthesis] = true, _wordDelimiters[t.closeParenthesis] = true, _wordDelimiters[t.openSquare] = true, _wordDelimiters[t.closeSquare] = true, _wordDelimiters[t.singleQuote] = true, _wordDelimiters[t.doubleQuote] = true, _wordDelimiters[t.plus] = true, _wordDelimiters[t.pipe] = true, _wordDelimiters[t.tilde] = true, _wordDelimiters[t.greaterThan] = true, _wordDelimiters[t.equals] = true, _wordDelimiters[t.dollar] = true, _wordDelimiters[t.caret] = true, _wordDelimiters[t.slash] = true, _wordDelimiters);\nvar hex = {};\nvar hexChars = \"0123456789abcdefABCDEF\";\n\nfor (var i = 0; i < hexChars.length; i++) {\n  hex[hexChars.charCodeAt(i)] = true;\n}\n/**\n *  Returns the last index of the bar css word\n * @param {string} css The string in which the word begins\n * @param {number} start The index into the string where word's first letter occurs\n */\n\n\nfunction consumeWord(css, start) {\n  var next = start;\n  var code;\n\n  do {\n    code = css.charCodeAt(next);\n\n    if (wordDelimiters[code]) {\n      return next - 1;\n    } else if (code === t.backslash) {\n      next = consumeEscape(css, next) + 1;\n    } else {\n      // All other characters are part of the word\n      next++;\n    }\n  } while (next < css.length);\n\n  return next - 1;\n}\n/**\n *  Returns the last index of the escape sequence\n * @param {string} css The string in which the sequence begins\n * @param {number} start The index into the string where escape character (`\\`) occurs.\n */\n\n\nfunction consumeEscape(css, start) {\n  var next = start;\n  var code = css.charCodeAt(next + 1);\n\n  if (unescapable[code]) {// just consume the escape char\n  } else if (hex[code]) {\n    var hexDigits = 0; // consume up to 6 hex chars\n\n    do {\n      next++;\n      hexDigits++;\n      code = css.charCodeAt(next + 1);\n    } while (hex[code] && hexDigits < 6); // if fewer than 6 hex chars, a trailing space ends the escape\n\n\n    if (hexDigits < 6 && code === t.space) {\n      next++;\n    }\n  } else {\n    // the next char is part of the current word\n    next++;\n  }\n\n  return next;\n}\n\nvar FIELDS = {\n  TYPE: 0,\n  START_LINE: 1,\n  START_COL: 2,\n  END_LINE: 3,\n  END_COL: 4,\n  START_POS: 5,\n  END_POS: 6\n};\nexports.FIELDS = FIELDS;\n\nfunction tokenize(input) {\n  var tokens = [];\n  var css = input.css.valueOf();\n  var _css = css,\n      length = _css.length;\n  var offset = -1;\n  var line = 1;\n  var start = 0;\n  var end = 0;\n  var code, content, endColumn, endLine, escaped, escapePos, last, lines, next, nextLine, nextOffset, quote, tokenType;\n\n  function unclosed(what, fix) {\n    if (input.safe) {\n      // fyi: this is never set to true.\n      css += fix;\n      next = css.length - 1;\n    } else {\n      throw input.error('Unclosed ' + what, line, start - offset, start);\n    }\n  }\n\n  while (start < length) {\n    code = css.charCodeAt(start);\n\n    if (code === t.newline) {\n      offset = start;\n      line += 1;\n    }\n\n    switch (code) {\n      case t.space:\n      case t.tab:\n      case t.newline:\n      case t.cr:\n      case t.feed:\n        next = start;\n\n        do {\n          next += 1;\n          code = css.charCodeAt(next);\n\n          if (code === t.newline) {\n            offset = next;\n            line += 1;\n          }\n        } while (code === t.space || code === t.newline || code === t.tab || code === t.cr || code === t.feed);\n\n        tokenType = t.space;\n        endLine = line;\n        endColumn = next - offset - 1;\n        end = next;\n        break;\n\n      case t.plus:\n      case t.greaterThan:\n      case t.tilde:\n      case t.pipe:\n        next = start;\n\n        do {\n          next += 1;\n          code = css.charCodeAt(next);\n        } while (code === t.plus || code === t.greaterThan || code === t.tilde || code === t.pipe);\n\n        tokenType = t.combinator;\n        endLine = line;\n        endColumn = start - offset;\n        end = next;\n        break;\n      // Consume these characters as single tokens.\n\n      case t.asterisk:\n      case t.ampersand:\n      case t.bang:\n      case t.comma:\n      case t.equals:\n      case t.dollar:\n      case t.caret:\n      case t.openSquare:\n      case t.closeSquare:\n      case t.colon:\n      case t.semicolon:\n      case t.openParenthesis:\n      case t.closeParenthesis:\n        next = start;\n        tokenType = code;\n        endLine = line;\n        endColumn = start - offset;\n        end = next + 1;\n        break;\n\n      case t.singleQuote:\n      case t.doubleQuote:\n        quote = code === t.singleQuote ? \"'\" : '\"';\n        next = start;\n\n        do {\n          escaped = false;\n          next = css.indexOf(quote, next + 1);\n\n          if (next === -1) {\n            unclosed('quote', quote);\n          }\n\n          escapePos = next;\n\n          while (css.charCodeAt(escapePos - 1) === t.backslash) {\n            escapePos -= 1;\n            escaped = !escaped;\n          }\n        } while (escaped);\n\n        tokenType = t.str;\n        endLine = line;\n        endColumn = start - offset;\n        end = next + 1;\n        break;\n\n      default:\n        if (code === t.slash && css.charCodeAt(start + 1) === t.asterisk) {\n          next = css.indexOf('*/', start + 2) + 1;\n\n          if (next === 0) {\n            unclosed('comment', '*/');\n          }\n\n          content = css.slice(start, next + 1);\n          lines = content.split('\\n');\n          last = lines.length - 1;\n\n          if (last > 0) {\n            nextLine = line + last;\n            nextOffset = next - lines[last].length;\n          } else {\n            nextLine = line;\n            nextOffset = offset;\n          }\n\n          tokenType = t.comment;\n          line = nextLine;\n          endLine = nextLine;\n          endColumn = next - nextOffset;\n        } else if (code === t.slash) {\n          next = start;\n          tokenType = code;\n          endLine = line;\n          endColumn = start - offset;\n          end = next + 1;\n        } else {\n          next = consumeWord(css, start);\n          tokenType = t.word;\n          endLine = line;\n          endColumn = next - offset;\n        }\n\n        end = next + 1;\n        break;\n    } // Ensure that the token structure remains consistent\n\n\n    tokens.push([tokenType, // [0] Token type\n    line, // [1] Starting line\n    start - offset, // [2] Starting column\n    endLine, // [3] Ending line\n    endColumn, // [4] Ending column\n    start, // [5] Start position / Source index\n    end // [6] End position\n    ]); // Reset offset for the next token\n\n    if (nextOffset) {\n      offset = nextOffset;\n      nextOffset = null;\n    }\n\n    start = end;\n  }\n\n  return tokens;\n}", "\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _root = _interopRequireDefault(require(\"./selectors/root\"));\n\nvar _selector = _interopRequireDefault(require(\"./selectors/selector\"));\n\nvar _className = _interopRequireDefault(require(\"./selectors/className\"));\n\nvar _comment = _interopRequireDefault(require(\"./selectors/comment\"));\n\nvar _id = _interopRequireDefault(require(\"./selectors/id\"));\n\nvar _tag = _interopRequireDefault(require(\"./selectors/tag\"));\n\nvar _string = _interopRequireDefault(require(\"./selectors/string\"));\n\nvar _pseudo = _interopRequireDefault(require(\"./selectors/pseudo\"));\n\nvar _attribute = _interopRequireWildcard(require(\"./selectors/attribute\"));\n\nvar _universal = _interopRequireDefault(require(\"./selectors/universal\"));\n\nvar _combinator = _interopRequireDefault(require(\"./selectors/combinator\"));\n\nvar _nesting = _interopRequireDefault(require(\"./selectors/nesting\"));\n\nvar _sortAscending = _interopRequireDefault(require(\"./sortAscending\"));\n\nvar _tokenize = _interopRequireWildcard(require(\"./tokenize\"));\n\nvar tokens = _interopRequireWildcard(require(\"./tokenTypes\"));\n\nvar types = _interopRequireWildcard(require(\"./selectors/types\"));\n\nvar _util = require(\"./util\");\n\nvar _WHITESPACE_TOKENS, _Object$assign;\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\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\nvar WHITESPACE_TOKENS = (_WHITESPACE_TOKENS = {}, _WHITESPACE_TOKENS[tokens.space] = true, _WHITESPACE_TOKENS[tokens.cr] = true, _WHITESPACE_TOKENS[tokens.feed] = true, _WHITESPACE_TOKENS[tokens.newline] = true, _WHITESPACE_TOKENS[tokens.tab] = true, _WHITESPACE_TOKENS);\nvar WHITESPACE_EQUIV_TOKENS = Object.assign({}, WHITESPACE_TOKENS, (_Object$assign = {}, _Object$assign[tokens.comment] = true, _Object$assign));\n\nfunction tokenStart(token) {\n  return {\n    line: token[_tokenize.FIELDS.START_LINE],\n    column: token[_tokenize.FIELDS.START_COL]\n  };\n}\n\nfunction tokenEnd(token) {\n  return {\n    line: token[_tokenize.FIELDS.END_LINE],\n    column: token[_tokenize.FIELDS.END_COL]\n  };\n}\n\nfunction getSource(startLine, startColumn, endLine, endColumn) {\n  return {\n    start: {\n      line: startLine,\n      column: startColumn\n    },\n    end: {\n      line: endLine,\n      column: endColumn\n    }\n  };\n}\n\nfunction getTokenSource(token) {\n  return getSource(token[_tokenize.FIELDS.START_LINE], token[_tokenize.FIELDS.START_COL], token[_tokenize.FIELDS.END_LINE], token[_tokenize.FIELDS.END_COL]);\n}\n\nfunction getTokenSourceSpan(startToken, endToken) {\n  if (!startToken) {\n    return undefined;\n  }\n\n  return getSource(startToken[_tokenize.FIELDS.START_LINE], startToken[_tokenize.FIELDS.START_COL], endToken[_tokenize.FIELDS.END_LINE], endToken[_tokenize.FIELDS.END_COL]);\n}\n\nfunction unescapeProp(node, prop) {\n  var value = node[prop];\n\n  if (typeof value !== \"string\") {\n    return;\n  }\n\n  if (value.indexOf(\"\\\\\") !== -1) {\n    (0, _util.ensureObject)(node, 'raws');\n    node[prop] = (0, _util.unesc)(value);\n\n    if (node.raws[prop] === undefined) {\n      node.raws[prop] = value;\n    }\n  }\n\n  return node;\n}\n\nfunction indexesOf(array, item) {\n  var i = -1;\n  var indexes = [];\n\n  while ((i = array.indexOf(item, i + 1)) !== -1) {\n    indexes.push(i);\n  }\n\n  return indexes;\n}\n\nfunction uniqs() {\n  var list = Array.prototype.concat.apply([], arguments);\n  return list.filter(function (item, i) {\n    return i === list.indexOf(item);\n  });\n}\n\nvar Parser = /*#__PURE__*/function () {\n  function Parser(rule, options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    this.rule = rule;\n    this.options = Object.assign({\n      lossy: false,\n      safe: false\n    }, options);\n    this.position = 0;\n    this.css = typeof this.rule === 'string' ? this.rule : this.rule.selector;\n    this.tokens = (0, _tokenize[\"default\"])({\n      css: this.css,\n      error: this._errorGenerator(),\n      safe: this.options.safe\n    });\n    var rootSource = getTokenSourceSpan(this.tokens[0], this.tokens[this.tokens.length - 1]);\n    this.root = new _root[\"default\"]({\n      source: rootSource\n    });\n    this.root.errorGenerator = this._errorGenerator();\n    var selector = new _selector[\"default\"]({\n      source: {\n        start: {\n          line: 1,\n          column: 1\n        }\n      }\n    });\n    this.root.append(selector);\n    this.current = selector;\n    this.loop();\n  }\n\n  var _proto = Parser.prototype;\n\n  _proto._errorGenerator = function _errorGenerator() {\n    var _this = this;\n\n    return function (message, errorOptions) {\n      if (typeof _this.rule === 'string') {\n        return new Error(message);\n      }\n\n      return _this.rule.error(message, errorOptions);\n    };\n  };\n\n  _proto.attribute = function attribute() {\n    var attr = [];\n    var startingToken = this.currToken;\n    this.position++;\n\n    while (this.position < this.tokens.length && this.currToken[_tokenize.FIELDS.TYPE] !== tokens.closeSquare) {\n      attr.push(this.currToken);\n      this.position++;\n    }\n\n    if (this.currToken[_tokenize.FIELDS.TYPE] !== tokens.closeSquare) {\n      return this.expected('closing square bracket', this.currToken[_tokenize.FIELDS.START_POS]);\n    }\n\n    var len = attr.length;\n    var node = {\n      source: getSource(startingToken[1], startingToken[2], this.currToken[3], this.currToken[4]),\n      sourceIndex: startingToken[_tokenize.FIELDS.START_POS]\n    };\n\n    if (len === 1 && !~[tokens.word].indexOf(attr[0][_tokenize.FIELDS.TYPE])) {\n      return this.expected('attribute', attr[0][_tokenize.FIELDS.START_POS]);\n    }\n\n    var pos = 0;\n    var spaceBefore = '';\n    var commentBefore = '';\n    var lastAdded = null;\n    var spaceAfterMeaningfulToken = false;\n\n    while (pos < len) {\n      var token = attr[pos];\n      var content = this.content(token);\n      var next = attr[pos + 1];\n\n      switch (token[_tokenize.FIELDS.TYPE]) {\n        case tokens.space:\n          // if (\n          //     len === 1 ||\n          //     pos === 0 && this.content(next) === '|'\n          // ) {\n          //     return this.expected('attribute', token[TOKEN.START_POS], content);\n          // }\n          spaceAfterMeaningfulToken = true;\n\n          if (this.options.lossy) {\n            break;\n          }\n\n          if (lastAdded) {\n            (0, _util.ensureObject)(node, 'spaces', lastAdded);\n            var prevContent = node.spaces[lastAdded].after || '';\n            node.spaces[lastAdded].after = prevContent + content;\n            var existingComment = (0, _util.getProp)(node, 'raws', 'spaces', lastAdded, 'after') || null;\n\n            if (existingComment) {\n              node.raws.spaces[lastAdded].after = existingComment + content;\n            }\n          } else {\n            spaceBefore = spaceBefore + content;\n            commentBefore = commentBefore + content;\n          }\n\n          break;\n\n        case tokens.asterisk:\n          if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {\n            node.operator = content;\n            lastAdded = 'operator';\n          } else if ((!node.namespace || lastAdded === \"namespace\" && !spaceAfterMeaningfulToken) && next) {\n            if (spaceBefore) {\n              (0, _util.ensureObject)(node, 'spaces', 'attribute');\n              node.spaces.attribute.before = spaceBefore;\n              spaceBefore = '';\n            }\n\n            if (commentBefore) {\n              (0, _util.ensureObject)(node, 'raws', 'spaces', 'attribute');\n              node.raws.spaces.attribute.before = spaceBefore;\n              commentBefore = '';\n            }\n\n            node.namespace = (node.namespace || \"\") + content;\n            var rawValue = (0, _util.getProp)(node, 'raws', 'namespace') || null;\n\n            if (rawValue) {\n              node.raws.namespace += content;\n            }\n\n            lastAdded = 'namespace';\n          }\n\n          spaceAfterMeaningfulToken = false;\n          break;\n\n        case tokens.dollar:\n          if (lastAdded === \"value\") {\n            var oldRawValue = (0, _util.getProp)(node, 'raws', 'value');\n            node.value += \"$\";\n\n            if (oldRawValue) {\n              node.raws.value = oldRawValue + \"$\";\n            }\n\n            break;\n          }\n\n        // Falls through\n\n        case tokens.caret:\n          if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {\n            node.operator = content;\n            lastAdded = 'operator';\n          }\n\n          spaceAfterMeaningfulToken = false;\n          break;\n\n        case tokens.combinator:\n          if (content === '~' && next[_tokenize.FIELDS.TYPE] === tokens.equals) {\n            node.operator = content;\n            lastAdded = 'operator';\n          }\n\n          if (content !== '|') {\n            spaceAfterMeaningfulToken = false;\n            break;\n          }\n\n          if (next[_tokenize.FIELDS.TYPE] === tokens.equals) {\n            node.operator = content;\n            lastAdded = 'operator';\n          } else if (!node.namespace && !node.attribute) {\n            node.namespace = true;\n          }\n\n          spaceAfterMeaningfulToken = false;\n          break;\n\n        case tokens.word:\n          if (next && this.content(next) === '|' && attr[pos + 2] && attr[pos + 2][_tokenize.FIELDS.TYPE] !== tokens.equals && // this look-ahead probably fails with comment nodes involved.\n          !node.operator && !node.namespace) {\n            node.namespace = content;\n            lastAdded = 'namespace';\n          } else if (!node.attribute || lastAdded === \"attribute\" && !spaceAfterMeaningfulToken) {\n            if (spaceBefore) {\n              (0, _util.ensureObject)(node, 'spaces', 'attribute');\n              node.spaces.attribute.before = spaceBefore;\n              spaceBefore = '';\n            }\n\n            if (commentBefore) {\n              (0, _util.ensureObject)(node, 'raws', 'spaces', 'attribute');\n              node.raws.spaces.attribute.before = commentBefore;\n              commentBefore = '';\n            }\n\n            node.attribute = (node.attribute || \"\") + content;\n\n            var _rawValue = (0, _util.getProp)(node, 'raws', 'attribute') || null;\n\n            if (_rawValue) {\n              node.raws.attribute += content;\n            }\n\n            lastAdded = 'attribute';\n          } else if (!node.value && node.value !== \"\" || lastAdded === \"value\" && !(spaceAfterMeaningfulToken || node.quoteMark)) {\n            var _unescaped = (0, _util.unesc)(content);\n\n            var _oldRawValue = (0, _util.getProp)(node, 'raws', 'value') || '';\n\n            var oldValue = node.value || '';\n            node.value = oldValue + _unescaped;\n            node.quoteMark = null;\n\n            if (_unescaped !== content || _oldRawValue) {\n              (0, _util.ensureObject)(node, 'raws');\n              node.raws.value = (_oldRawValue || oldValue) + content;\n            }\n\n            lastAdded = 'value';\n          } else {\n            var insensitive = content === 'i' || content === \"I\";\n\n            if ((node.value || node.value === '') && (node.quoteMark || spaceAfterMeaningfulToken)) {\n              node.insensitive = insensitive;\n\n              if (!insensitive || content === \"I\") {\n                (0, _util.ensureObject)(node, 'raws');\n                node.raws.insensitiveFlag = content;\n              }\n\n              lastAdded = 'insensitive';\n\n              if (spaceBefore) {\n                (0, _util.ensureObject)(node, 'spaces', 'insensitive');\n                node.spaces.insensitive.before = spaceBefore;\n                spaceBefore = '';\n              }\n\n              if (commentBefore) {\n                (0, _util.ensureObject)(node, 'raws', 'spaces', 'insensitive');\n                node.raws.spaces.insensitive.before = commentBefore;\n                commentBefore = '';\n              }\n            } else if (node.value || node.value === '') {\n              lastAdded = 'value';\n              node.value += content;\n\n              if (node.raws.value) {\n                node.raws.value += content;\n              }\n            }\n          }\n\n          spaceAfterMeaningfulToken = false;\n          break;\n\n        case tokens.str:\n          if (!node.attribute || !node.operator) {\n            return this.error(\"Expected an attribute followed by an operator preceding the string.\", {\n              index: token[_tokenize.FIELDS.START_POS]\n            });\n          }\n\n          var _unescapeValue = (0, _attribute.unescapeValue)(content),\n              unescaped = _unescapeValue.unescaped,\n              quoteMark = _unescapeValue.quoteMark;\n\n          node.value = unescaped;\n          node.quoteMark = quoteMark;\n          lastAdded = 'value';\n          (0, _util.ensureObject)(node, 'raws');\n          node.raws.value = content;\n          spaceAfterMeaningfulToken = false;\n          break;\n\n        case tokens.equals:\n          if (!node.attribute) {\n            return this.expected('attribute', token[_tokenize.FIELDS.START_POS], content);\n          }\n\n          if (node.value) {\n            return this.error('Unexpected \"=\" found; an operator was already defined.', {\n              index: token[_tokenize.FIELDS.START_POS]\n            });\n          }\n\n          node.operator = node.operator ? node.operator + content : content;\n          lastAdded = 'operator';\n          spaceAfterMeaningfulToken = false;\n          break;\n\n        case tokens.comment:\n          if (lastAdded) {\n            if (spaceAfterMeaningfulToken || next && next[_tokenize.FIELDS.TYPE] === tokens.space || lastAdded === 'insensitive') {\n              var lastComment = (0, _util.getProp)(node, 'spaces', lastAdded, 'after') || '';\n              var rawLastComment = (0, _util.getProp)(node, 'raws', 'spaces', lastAdded, 'after') || lastComment;\n              (0, _util.ensureObject)(node, 'raws', 'spaces', lastAdded);\n              node.raws.spaces[lastAdded].after = rawLastComment + content;\n            } else {\n              var lastValue = node[lastAdded] || '';\n              var rawLastValue = (0, _util.getProp)(node, 'raws', lastAdded) || lastValue;\n              (0, _util.ensureObject)(node, 'raws');\n              node.raws[lastAdded] = rawLastValue + content;\n            }\n          } else {\n            commentBefore = commentBefore + content;\n          }\n\n          break;\n\n        default:\n          return this.error(\"Unexpected \\\"\" + content + \"\\\" found.\", {\n            index: token[_tokenize.FIELDS.START_POS]\n          });\n      }\n\n      pos++;\n    }\n\n    unescapeProp(node, \"attribute\");\n    unescapeProp(node, \"namespace\");\n    this.newNode(new _attribute[\"default\"](node));\n    this.position++;\n  }\n  /**\n   * return a node containing meaningless garbage up to (but not including) the specified token position.\n   * if the token position is negative, all remaining tokens are consumed.\n   *\n   * This returns an array containing a single string node if all whitespace,\n   * otherwise an array of comment nodes with space before and after.\n   *\n   * These tokens are not added to the current selector, the caller can add them or use them to amend\n   * a previous node's space metadata.\n   *\n   * In lossy mode, this returns only comments.\n   */\n  ;\n\n  _proto.parseWhitespaceEquivalentTokens = function parseWhitespaceEquivalentTokens(stopPosition) {\n    if (stopPosition < 0) {\n      stopPosition = this.tokens.length;\n    }\n\n    var startPosition = this.position;\n    var nodes = [];\n    var space = \"\";\n    var lastComment = undefined;\n\n    do {\n      if (WHITESPACE_TOKENS[this.currToken[_tokenize.FIELDS.TYPE]]) {\n        if (!this.options.lossy) {\n          space += this.content();\n        }\n      } else if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.comment) {\n        var spaces = {};\n\n        if (space) {\n          spaces.before = space;\n          space = \"\";\n        }\n\n        lastComment = new _comment[\"default\"]({\n          value: this.content(),\n          source: getTokenSource(this.currToken),\n          sourceIndex: this.currToken[_tokenize.FIELDS.START_POS],\n          spaces: spaces\n        });\n        nodes.push(lastComment);\n      }\n    } while (++this.position < stopPosition);\n\n    if (space) {\n      if (lastComment) {\n        lastComment.spaces.after = space;\n      } else if (!this.options.lossy) {\n        var firstToken = this.tokens[startPosition];\n        var lastToken = this.tokens[this.position - 1];\n        nodes.push(new _string[\"default\"]({\n          value: '',\n          source: getSource(firstToken[_tokenize.FIELDS.START_LINE], firstToken[_tokenize.FIELDS.START_COL], lastToken[_tokenize.FIELDS.END_LINE], lastToken[_tokenize.FIELDS.END_COL]),\n          sourceIndex: firstToken[_tokenize.FIELDS.START_POS],\n          spaces: {\n            before: space,\n            after: ''\n          }\n        }));\n      }\n    }\n\n    return nodes;\n  }\n  /**\n   *\n   * @param {*} nodes\n   */\n  ;\n\n  _proto.convertWhitespaceNodesToSpace = function convertWhitespaceNodesToSpace(nodes, requiredSpace) {\n    var _this2 = this;\n\n    if (requiredSpace === void 0) {\n      requiredSpace = false;\n    }\n\n    var space = \"\";\n    var rawSpace = \"\";\n    nodes.forEach(function (n) {\n      var spaceBefore = _this2.lossySpace(n.spaces.before, requiredSpace);\n\n      var rawSpaceBefore = _this2.lossySpace(n.rawSpaceBefore, requiredSpace);\n\n      space += spaceBefore + _this2.lossySpace(n.spaces.after, requiredSpace && spaceBefore.length === 0);\n      rawSpace += spaceBefore + n.value + _this2.lossySpace(n.rawSpaceAfter, requiredSpace && rawSpaceBefore.length === 0);\n    });\n\n    if (rawSpace === space) {\n      rawSpace = undefined;\n    }\n\n    var result = {\n      space: space,\n      rawSpace: rawSpace\n    };\n    return result;\n  };\n\n  _proto.isNamedCombinator = function isNamedCombinator(position) {\n    if (position === void 0) {\n      position = this.position;\n    }\n\n    return this.tokens[position + 0] && this.tokens[position + 0][_tokenize.FIELDS.TYPE] === tokens.slash && this.tokens[position + 1] && this.tokens[position + 1][_tokenize.FIELDS.TYPE] === tokens.word && this.tokens[position + 2] && this.tokens[position + 2][_tokenize.FIELDS.TYPE] === tokens.slash;\n  };\n\n  _proto.namedCombinator = function namedCombinator() {\n    if (this.isNamedCombinator()) {\n      var nameRaw = this.content(this.tokens[this.position + 1]);\n      var name = (0, _util.unesc)(nameRaw).toLowerCase();\n      var raws = {};\n\n      if (name !== nameRaw) {\n        raws.value = \"/\" + nameRaw + \"/\";\n      }\n\n      var node = new _combinator[\"default\"]({\n        value: \"/\" + name + \"/\",\n        source: getSource(this.currToken[_tokenize.FIELDS.START_LINE], this.currToken[_tokenize.FIELDS.START_COL], this.tokens[this.position + 2][_tokenize.FIELDS.END_LINE], this.tokens[this.position + 2][_tokenize.FIELDS.END_COL]),\n        sourceIndex: this.currToken[_tokenize.FIELDS.START_POS],\n        raws: raws\n      });\n      this.position = this.position + 3;\n      return node;\n    } else {\n      this.unexpected();\n    }\n  };\n\n  _proto.combinator = function combinator() {\n    var _this3 = this;\n\n    if (this.content() === '|') {\n      return this.namespace();\n    } // We need to decide between a space that's a descendant combinator and meaningless whitespace at the end of a selector.\n\n\n    var nextSigTokenPos = this.locateNextMeaningfulToken(this.position);\n\n    if (nextSigTokenPos < 0 || this.tokens[nextSigTokenPos][_tokenize.FIELDS.TYPE] === tokens.comma) {\n      var nodes = this.parseWhitespaceEquivalentTokens(nextSigTokenPos);\n\n      if (nodes.length > 0) {\n        var last = this.current.last;\n\n        if (last) {\n          var _this$convertWhitespa = this.convertWhitespaceNodesToSpace(nodes),\n              space = _this$convertWhitespa.space,\n              rawSpace = _this$convertWhitespa.rawSpace;\n\n          if (rawSpace !== undefined) {\n            last.rawSpaceAfter += rawSpace;\n          }\n\n          last.spaces.after += space;\n        } else {\n          nodes.forEach(function (n) {\n            return _this3.newNode(n);\n          });\n        }\n      }\n\n      return;\n    }\n\n    var firstToken = this.currToken;\n    var spaceOrDescendantSelectorNodes = undefined;\n\n    if (nextSigTokenPos > this.position) {\n      spaceOrDescendantSelectorNodes = this.parseWhitespaceEquivalentTokens(nextSigTokenPos);\n    }\n\n    var node;\n\n    if (this.isNamedCombinator()) {\n      node = this.namedCombinator();\n    } else if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.combinator) {\n      node = new _combinator[\"default\"]({\n        value: this.content(),\n        source: getTokenSource(this.currToken),\n        sourceIndex: this.currToken[_tokenize.FIELDS.START_POS]\n      });\n      this.position++;\n    } else if (WHITESPACE_TOKENS[this.currToken[_tokenize.FIELDS.TYPE]]) {// pass\n    } else if (!spaceOrDescendantSelectorNodes) {\n      this.unexpected();\n    }\n\n    if (node) {\n      if (spaceOrDescendantSelectorNodes) {\n        var _this$convertWhitespa2 = this.convertWhitespaceNodesToSpace(spaceOrDescendantSelectorNodes),\n            _space = _this$convertWhitespa2.space,\n            _rawSpace = _this$convertWhitespa2.rawSpace;\n\n        node.spaces.before = _space;\n        node.rawSpaceBefore = _rawSpace;\n      }\n    } else {\n      // descendant combinator\n      var _this$convertWhitespa3 = this.convertWhitespaceNodesToSpace(spaceOrDescendantSelectorNodes, true),\n          _space2 = _this$convertWhitespa3.space,\n          _rawSpace2 = _this$convertWhitespa3.rawSpace;\n\n      if (!_rawSpace2) {\n        _rawSpace2 = _space2;\n      }\n\n      var spaces = {};\n      var raws = {\n        spaces: {}\n      };\n\n      if (_space2.endsWith(' ') && _rawSpace2.endsWith(' ')) {\n        spaces.before = _space2.slice(0, _space2.length - 1);\n        raws.spaces.before = _rawSpace2.slice(0, _rawSpace2.length - 1);\n      } else if (_space2.startsWith(' ') && _rawSpace2.startsWith(' ')) {\n        spaces.after = _space2.slice(1);\n        raws.spaces.after = _rawSpace2.slice(1);\n      } else {\n        raws.value = _rawSpace2;\n      }\n\n      node = new _combinator[\"default\"]({\n        value: ' ',\n        source: getTokenSourceSpan(firstToken, this.tokens[this.position - 1]),\n        sourceIndex: firstToken[_tokenize.FIELDS.START_POS],\n        spaces: spaces,\n        raws: raws\n      });\n    }\n\n    if (this.currToken && this.currToken[_tokenize.FIELDS.TYPE] === tokens.space) {\n      node.spaces.after = this.optionalSpace(this.content());\n      this.position++;\n    }\n\n    return this.newNode(node);\n  };\n\n  _proto.comma = function comma() {\n    if (this.position === this.tokens.length - 1) {\n      this.root.trailingComma = true;\n      this.position++;\n      return;\n    }\n\n    this.current._inferEndPosition();\n\n    var selector = new _selector[\"default\"]({\n      source: {\n        start: tokenStart(this.tokens[this.position + 1])\n      }\n    });\n    this.current.parent.append(selector);\n    this.current = selector;\n    this.position++;\n  };\n\n  _proto.comment = function comment() {\n    var current = this.currToken;\n    this.newNode(new _comment[\"default\"]({\n      value: this.content(),\n      source: getTokenSource(current),\n      sourceIndex: current[_tokenize.FIELDS.START_POS]\n    }));\n    this.position++;\n  };\n\n  _proto.error = function error(message, opts) {\n    throw this.root.error(message, opts);\n  };\n\n  _proto.missingBackslash = function missingBackslash() {\n    return this.error('Expected a backslash preceding the semicolon.', {\n      index: this.currToken[_tokenize.FIELDS.START_POS]\n    });\n  };\n\n  _proto.missingParenthesis = function missingParenthesis() {\n    return this.expected('opening parenthesis', this.currToken[_tokenize.FIELDS.START_POS]);\n  };\n\n  _proto.missingSquareBracket = function missingSquareBracket() {\n    return this.expected('opening square bracket', this.currToken[_tokenize.FIELDS.START_POS]);\n  };\n\n  _proto.unexpected = function unexpected() {\n    return this.error(\"Unexpected '\" + this.content() + \"'. Escaping special characters with \\\\ may help.\", this.currToken[_tokenize.FIELDS.START_POS]);\n  };\n\n  _proto.namespace = function namespace() {\n    var before = this.prevToken && this.content(this.prevToken) || true;\n\n    if (this.nextToken[_tokenize.FIELDS.TYPE] === tokens.word) {\n      this.position++;\n      return this.word(before);\n    } else if (this.nextToken[_tokenize.FIELDS.TYPE] === tokens.asterisk) {\n      this.position++;\n      return this.universal(before);\n    }\n  };\n\n  _proto.nesting = function nesting() {\n    if (this.nextToken) {\n      var nextContent = this.content(this.nextToken);\n\n      if (nextContent === \"|\") {\n        this.position++;\n        return;\n      }\n    }\n\n    var current = this.currToken;\n    this.newNode(new _nesting[\"default\"]({\n      value: this.content(),\n      source: getTokenSource(current),\n      sourceIndex: current[_tokenize.FIELDS.START_POS]\n    }));\n    this.position++;\n  };\n\n  _proto.parentheses = function parentheses() {\n    var last = this.current.last;\n    var unbalanced = 1;\n    this.position++;\n\n    if (last && last.type === types.PSEUDO) {\n      var selector = new _selector[\"default\"]({\n        source: {\n          start: tokenStart(this.tokens[this.position - 1])\n        }\n      });\n      var cache = this.current;\n      last.append(selector);\n      this.current = selector;\n\n      while (this.position < this.tokens.length && unbalanced) {\n        if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {\n          unbalanced++;\n        }\n\n        if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {\n          unbalanced--;\n        }\n\n        if (unbalanced) {\n          this.parse();\n        } else {\n          this.current.source.end = tokenEnd(this.currToken);\n          this.current.parent.source.end = tokenEnd(this.currToken);\n          this.position++;\n        }\n      }\n\n      this.current = cache;\n    } else {\n      // I think this case should be an error. It's used to implement a basic parse of media queries\n      // but I don't think it's a good idea.\n      var parenStart = this.currToken;\n      var parenValue = \"(\";\n      var parenEnd;\n\n      while (this.position < this.tokens.length && unbalanced) {\n        if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {\n          unbalanced++;\n        }\n\n        if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {\n          unbalanced--;\n        }\n\n        parenEnd = this.currToken;\n        parenValue += this.parseParenthesisToken(this.currToken);\n        this.position++;\n      }\n\n      if (last) {\n        last.appendToPropertyAndEscape(\"value\", parenValue, parenValue);\n      } else {\n        this.newNode(new _string[\"default\"]({\n          value: parenValue,\n          source: getSource(parenStart[_tokenize.FIELDS.START_LINE], parenStart[_tokenize.FIELDS.START_COL], parenEnd[_tokenize.FIELDS.END_LINE], parenEnd[_tokenize.FIELDS.END_COL]),\n          sourceIndex: parenStart[_tokenize.FIELDS.START_POS]\n        }));\n      }\n    }\n\n    if (unbalanced) {\n      return this.expected('closing parenthesis', this.currToken[_tokenize.FIELDS.START_POS]);\n    }\n  };\n\n  _proto.pseudo = function pseudo() {\n    var _this4 = this;\n\n    var pseudoStr = '';\n    var startingToken = this.currToken;\n\n    while (this.currToken && this.currToken[_tokenize.FIELDS.TYPE] === tokens.colon) {\n      pseudoStr += this.content();\n      this.position++;\n    }\n\n    if (!this.currToken) {\n      return this.expected(['pseudo-class', 'pseudo-element'], this.position - 1);\n    }\n\n    if (this.currToken[_tokenize.FIELDS.TYPE] === tokens.word) {\n      this.splitWord(false, function (first, length) {\n        pseudoStr += first;\n\n        _this4.newNode(new _pseudo[\"default\"]({\n          value: pseudoStr,\n          source: getTokenSourceSpan(startingToken, _this4.currToken),\n          sourceIndex: startingToken[_tokenize.FIELDS.START_POS]\n        }));\n\n        if (length > 1 && _this4.nextToken && _this4.nextToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis) {\n          _this4.error('Misplaced parenthesis.', {\n            index: _this4.nextToken[_tokenize.FIELDS.START_POS]\n          });\n        }\n      });\n    } else {\n      return this.expected(['pseudo-class', 'pseudo-element'], this.currToken[_tokenize.FIELDS.START_POS]);\n    }\n  };\n\n  _proto.space = function space() {\n    var content = this.content(); // Handle space before and after the selector\n\n    if (this.position === 0 || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.prevToken[_tokenize.FIELDS.TYPE] === tokens.openParenthesis || this.current.nodes.every(function (node) {\n      return node.type === 'comment';\n    })) {\n      this.spaces = this.optionalSpace(content);\n      this.position++;\n    } else if (this.position === this.tokens.length - 1 || this.nextToken[_tokenize.FIELDS.TYPE] === tokens.comma || this.nextToken[_tokenize.FIELDS.TYPE] === tokens.closeParenthesis) {\n      this.current.last.spaces.after = this.optionalSpace(content);\n      this.position++;\n    } else {\n      this.combinator();\n    }\n  };\n\n  _proto.string = function string() {\n    var current = this.currToken;\n    this.newNode(new _string[\"default\"]({\n      value: this.content(),\n      source: getTokenSource(current),\n      sourceIndex: current[_tokenize.FIELDS.START_POS]\n    }));\n    this.position++;\n  };\n\n  _proto.universal = function universal(namespace) {\n    var nextToken = this.nextToken;\n\n    if (nextToken && this.content(nextToken) === '|') {\n      this.position++;\n      return this.namespace();\n    }\n\n    var current = this.currToken;\n    this.newNode(new _universal[\"default\"]({\n      value: this.content(),\n      source: getTokenSource(current),\n      sourceIndex: current[_tokenize.FIELDS.START_POS]\n    }), namespace);\n    this.position++;\n  };\n\n  _proto.splitWord = function splitWord(namespace, firstCallback) {\n    var _this5 = this;\n\n    var nextToken = this.nextToken;\n    var word = this.content();\n\n    while (nextToken && ~[tokens.dollar, tokens.caret, tokens.equals, tokens.word].indexOf(nextToken[_tokenize.FIELDS.TYPE])) {\n      this.position++;\n      var current = this.content();\n      word += current;\n\n      if (current.lastIndexOf('\\\\') === current.length - 1) {\n        var next = this.nextToken;\n\n        if (next && next[_tokenize.FIELDS.TYPE] === tokens.space) {\n          word += this.requiredSpace(this.content(next));\n          this.position++;\n        }\n      }\n\n      nextToken = this.nextToken;\n    }\n\n    var hasClass = indexesOf(word, '.').filter(function (i) {\n      // Allow escaped dot within class name\n      var escapedDot = word[i - 1] === '\\\\'; // Allow decimal numbers percent in @keyframes\n\n      var isKeyframesPercent = /^\\d+\\.\\d+%$/.test(word);\n      return !escapedDot && !isKeyframesPercent;\n    });\n    var hasId = indexesOf(word, '#').filter(function (i) {\n      return word[i - 1] !== '\\\\';\n    }); // Eliminate Sass interpolations from the list of id indexes\n\n    var interpolations = indexesOf(word, '#{');\n\n    if (interpolations.length) {\n      hasId = hasId.filter(function (hashIndex) {\n        return !~interpolations.indexOf(hashIndex);\n      });\n    }\n\n    var indices = (0, _sortAscending[\"default\"])(uniqs([0].concat(hasClass, hasId)));\n    indices.forEach(function (ind, i) {\n      var index = indices[i + 1] || word.length;\n      var value = word.slice(ind, index);\n\n      if (i === 0 && firstCallback) {\n        return firstCallback.call(_this5, value, indices.length);\n      }\n\n      var node;\n      var current = _this5.currToken;\n      var sourceIndex = current[_tokenize.FIELDS.START_POS] + indices[i];\n      var source = getSource(current[1], current[2] + ind, current[3], current[2] + (index - 1));\n\n      if (~hasClass.indexOf(ind)) {\n        var classNameOpts = {\n          value: value.slice(1),\n          source: source,\n          sourceIndex: sourceIndex\n        };\n        node = new _className[\"default\"](unescapeProp(classNameOpts, \"value\"));\n      } else if (~hasId.indexOf(ind)) {\n        var idOpts = {\n          value: value.slice(1),\n          source: source,\n          sourceIndex: sourceIndex\n        };\n        node = new _id[\"default\"](unescapeProp(idOpts, \"value\"));\n      } else {\n        var tagOpts = {\n          value: value,\n          source: source,\n          sourceIndex: sourceIndex\n        };\n        unescapeProp(tagOpts, \"value\");\n        node = new _tag[\"default\"](tagOpts);\n      }\n\n      _this5.newNode(node, namespace); // Ensure that the namespace is used only once\n\n\n      namespace = null;\n    });\n    this.position++;\n  };\n\n  _proto.word = function word(namespace) {\n    var nextToken = this.nextToken;\n\n    if (nextToken && this.content(nextToken) === '|') {\n      this.position++;\n      return this.namespace();\n    }\n\n    return this.splitWord(namespace);\n  };\n\n  _proto.loop = function loop() {\n    while (this.position < this.tokens.length) {\n      this.parse(true);\n    }\n\n    this.current._inferEndPosition();\n\n    return this.root;\n  };\n\n  _proto.parse = function parse(throwOnParenthesis) {\n    switch (this.currToken[_tokenize.FIELDS.TYPE]) {\n      case tokens.space:\n        this.space();\n        break;\n\n      case tokens.comment:\n        this.comment();\n        break;\n\n      case tokens.openParenthesis:\n        this.parentheses();\n        break;\n\n      case tokens.closeParenthesis:\n        if (throwOnParenthesis) {\n          this.missingParenthesis();\n        }\n\n        break;\n\n      case tokens.openSquare:\n        this.attribute();\n        break;\n\n      case tokens.dollar:\n      case tokens.caret:\n      case tokens.equals:\n      case tokens.word:\n        this.word();\n        break;\n\n      case tokens.colon:\n        this.pseudo();\n        break;\n\n      case tokens.comma:\n        this.comma();\n        break;\n\n      case tokens.asterisk:\n        this.universal();\n        break;\n\n      case tokens.ampersand:\n        this.nesting();\n        break;\n\n      case tokens.slash:\n      case tokens.combinator:\n        this.combinator();\n        break;\n\n      case tokens.str:\n        this.string();\n        break;\n      // These cases throw; no break needed.\n\n      case tokens.closeSquare:\n        this.missingSquareBracket();\n\n      case tokens.semicolon:\n        this.missingBackslash();\n\n      default:\n        this.unexpected();\n    }\n  }\n  /**\n   * Helpers\n   */\n  ;\n\n  _proto.expected = function expected(description, index, found) {\n    if (Array.isArray(description)) {\n      var last = description.pop();\n      description = description.join(', ') + \" or \" + last;\n    }\n\n    var an = /^[aeiou]/.test(description[0]) ? 'an' : 'a';\n\n    if (!found) {\n      return this.error(\"Expected \" + an + \" \" + description + \".\", {\n        index: index\n      });\n    }\n\n    return this.error(\"Expected \" + an + \" \" + description + \", found \\\"\" + found + \"\\\" instead.\", {\n      index: index\n    });\n  };\n\n  _proto.requiredSpace = function requiredSpace(space) {\n    return this.options.lossy ? ' ' : space;\n  };\n\n  _proto.optionalSpace = function optionalSpace(space) {\n    return this.options.lossy ? '' : space;\n  };\n\n  _proto.lossySpace = function lossySpace(space, required) {\n    if (this.options.lossy) {\n      return required ? ' ' : '';\n    } else {\n      return space;\n    }\n  };\n\n  _proto.parseParenthesisToken = function parseParenthesisToken(token) {\n    var content = this.content(token);\n\n    if (token[_tokenize.FIELDS.TYPE] === tokens.space) {\n      return this.requiredSpace(content);\n    } else {\n      return content;\n    }\n  };\n\n  _proto.newNode = function newNode(node, namespace) {\n    if (namespace) {\n      if (/^ +$/.test(namespace)) {\n        if (!this.options.lossy) {\n          this.spaces = (this.spaces || '') + namespace;\n        }\n\n        namespace = true;\n      }\n\n      node.namespace = namespace;\n      unescapeProp(node, \"namespace\");\n    }\n\n    if (this.spaces) {\n      node.spaces.before = this.spaces;\n      this.spaces = '';\n    }\n\n    return this.current.append(node);\n  };\n\n  _proto.content = function content(token) {\n    if (token === void 0) {\n      token = this.currToken;\n    }\n\n    return this.css.slice(token[_tokenize.FIELDS.START_POS], token[_tokenize.FIELDS.END_POS]);\n  };\n\n  /**\n   * returns the index of the next non-whitespace, non-comment token.\n   * returns -1 if no meaningful token is found.\n   */\n  _proto.locateNextMeaningfulToken = function locateNextMeaningfulToken(startPosition) {\n    if (startPosition === void 0) {\n      startPosition = this.position + 1;\n    }\n\n    var searchPosition = startPosition;\n\n    while (searchPosition < this.tokens.length) {\n      if (WHITESPACE_EQUIV_TOKENS[this.tokens[searchPosition][_tokenize.FIELDS.TYPE]]) {\n        searchPosition++;\n        continue;\n      } else {\n        return searchPosition;\n      }\n    }\n\n    return -1;\n  };\n\n  _createClass(Parser, [{\n    key: \"currToken\",\n    get: function get() {\n      return this.tokens[this.position];\n    }\n  }, {\n    key: \"nextToken\",\n    get: function get() {\n      return this.tokens[this.position + 1];\n    }\n  }, {\n    key: \"prevToken\",\n    get: function get() {\n      return this.tokens[this.position - 1];\n    }\n  }]);\n\n  return Parser;\n}();\n\nexports[\"default\"] = Parser;\nmodule.exports = exports.default;", "\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _parser = _interopRequireDefault(require(\"./parser\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar Processor = /*#__PURE__*/function () {\n  function Processor(func, options) {\n    this.func = func || function noop() {};\n\n    this.funcRes = null;\n    this.options = options;\n  }\n\n  var _proto = Processor.prototype;\n\n  _proto._shouldUpdateSelector = function _shouldUpdateSelector(rule, options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    var merged = Object.assign({}, this.options, options);\n\n    if (merged.updateSelector === false) {\n      return false;\n    } else {\n      return typeof rule !== \"string\";\n    }\n  };\n\n  _proto._isLossy = function _isLossy(options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    var merged = Object.assign({}, this.options, options);\n\n    if (merged.lossless === false) {\n      return true;\n    } else {\n      return false;\n    }\n  };\n\n  _proto._root = function _root(rule, options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    var parser = new _parser[\"default\"](rule, this._parseOptions(options));\n    return parser.root;\n  };\n\n  _proto._parseOptions = function _parseOptions(options) {\n    return {\n      lossy: this._isLossy(options)\n    };\n  };\n\n  _proto._run = function _run(rule, options) {\n    var _this = this;\n\n    if (options === void 0) {\n      options = {};\n    }\n\n    return new Promise(function (resolve, reject) {\n      try {\n        var root = _this._root(rule, options);\n\n        Promise.resolve(_this.func(root)).then(function (transform) {\n          var string = undefined;\n\n          if (_this._shouldUpdateSelector(rule, options)) {\n            string = root.toString();\n            rule.selector = string;\n          }\n\n          return {\n            transform: transform,\n            root: root,\n            string: string\n          };\n        }).then(resolve, reject);\n      } catch (e) {\n        reject(e);\n        return;\n      }\n    });\n  };\n\n  _proto._runSync = function _runSync(rule, options) {\n    if (options === void 0) {\n      options = {};\n    }\n\n    var root = this._root(rule, options);\n\n    var transform = this.func(root);\n\n    if (transform && typeof transform.then === \"function\") {\n      throw new Error(\"Selector processor returned a promise to a synchronous call.\");\n    }\n\n    var string = undefined;\n\n    if (options.updateSelector && typeof rule !== \"string\") {\n      string = root.toString();\n      rule.selector = string;\n    }\n\n    return {\n      transform: transform,\n      root: root,\n      string: string\n    };\n  }\n  /**\n   * Process rule into a selector AST.\n   *\n   * @param rule {postcss.Rule | string} The css selector to be processed\n   * @param options The options for processing\n   * @returns {Promise<parser.Root>} The AST of the selector after processing it.\n   */\n  ;\n\n  _proto.ast = function ast(rule, options) {\n    return this._run(rule, options).then(function (result) {\n      return result.root;\n    });\n  }\n  /**\n   * Process rule into a selector AST synchronously.\n   *\n   * @param rule {postcss.Rule | string} The css selector to be processed\n   * @param options The options for processing\n   * @returns {parser.Root} The AST of the selector after processing it.\n   */\n  ;\n\n  _proto.astSync = function astSync(rule, options) {\n    return this._runSync(rule, options).root;\n  }\n  /**\n   * Process a selector into a transformed value asynchronously\n   *\n   * @param rule {postcss.Rule | string} The css selector to be processed\n   * @param options The options for processing\n   * @returns {Promise<any>} The value returned by the processor.\n   */\n  ;\n\n  _proto.transform = function transform(rule, options) {\n    return this._run(rule, options).then(function (result) {\n      return result.transform;\n    });\n  }\n  /**\n   * Process a selector into a transformed value synchronously.\n   *\n   * @param rule {postcss.Rule | string} The css selector to be processed\n   * @param options The options for processing\n   * @returns {any} The value returned by the processor.\n   */\n  ;\n\n  _proto.transformSync = function transformSync(rule, options) {\n    return this._runSync(rule, options).transform;\n  }\n  /**\n   * Process a selector into a new selector string asynchronously.\n   *\n   * @param rule {postcss.Rule | string} The css selector to be processed\n   * @param options The options for processing\n   * @returns {string} the selector after processing.\n   */\n  ;\n\n  _proto.process = function process(rule, options) {\n    return this._run(rule, options).then(function (result) {\n      return result.string || result.root.toString();\n    });\n  }\n  /**\n   * Process a selector into a new selector string synchronously.\n   *\n   * @param rule {postcss.Rule | string} The css selector to be processed\n   * @param options The options for processing\n   * @returns {string} the selector after processing.\n   */\n  ;\n\n  _proto.processSync = function processSync(rule, options) {\n    var result = this._runSync(rule, options);\n\n    return result.string || result.root.toString();\n  };\n\n  return Processor;\n}();\n\nexports[\"default\"] = Processor;\nmodule.exports = exports.default;", "\"use strict\";\n\nexports.__esModule = true;\nexports.universal = exports.tag = exports.string = exports.selector = exports.root = exports.pseudo = exports.nesting = exports.id = exports.comment = exports.combinator = exports.className = exports.attribute = void 0;\n\nvar _attribute = _interopRequireDefault(require(\"./attribute\"));\n\nvar _className = _interopRequireDefault(require(\"./className\"));\n\nvar _combinator = _interopRequireDefault(require(\"./combinator\"));\n\nvar _comment = _interopRequireDefault(require(\"./comment\"));\n\nvar _id = _interopRequireDefault(require(\"./id\"));\n\nvar _nesting = _interopRequireDefault(require(\"./nesting\"));\n\nvar _pseudo = _interopRequireDefault(require(\"./pseudo\"));\n\nvar _root = _interopRequireDefault(require(\"./root\"));\n\nvar _selector = _interopRequireDefault(require(\"./selector\"));\n\nvar _string = _interopRequireDefault(require(\"./string\"));\n\nvar _tag = _interopRequireDefault(require(\"./tag\"));\n\nvar _universal = _interopRequireDefault(require(\"./universal\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar attribute = function attribute(opts) {\n  return new _attribute[\"default\"](opts);\n};\n\nexports.attribute = attribute;\n\nvar className = function className(opts) {\n  return new _className[\"default\"](opts);\n};\n\nexports.className = className;\n\nvar combinator = function combinator(opts) {\n  return new _combinator[\"default\"](opts);\n};\n\nexports.combinator = combinator;\n\nvar comment = function comment(opts) {\n  return new _comment[\"default\"](opts);\n};\n\nexports.comment = comment;\n\nvar id = function id(opts) {\n  return new _id[\"default\"](opts);\n};\n\nexports.id = id;\n\nvar nesting = function nesting(opts) {\n  return new _nesting[\"default\"](opts);\n};\n\nexports.nesting = nesting;\n\nvar pseudo = function pseudo(opts) {\n  return new _pseudo[\"default\"](opts);\n};\n\nexports.pseudo = pseudo;\n\nvar root = function root(opts) {\n  return new _root[\"default\"](opts);\n};\n\nexports.root = root;\n\nvar selector = function selector(opts) {\n  return new _selector[\"default\"](opts);\n};\n\nexports.selector = selector;\n\nvar string = function string(opts) {\n  return new _string[\"default\"](opts);\n};\n\nexports.string = string;\n\nvar tag = function tag(opts) {\n  return new _tag[\"default\"](opts);\n};\n\nexports.tag = tag;\n\nvar universal = function universal(opts) {\n  return new _universal[\"default\"](opts);\n};\n\nexports.universal = universal;", "\"use strict\";\n\nexports.__esModule = true;\nexports.isNode = isNode;\nexports.isPseudoElement = isPseudoElement;\nexports.isPseudoClass = isPseudoClass;\nexports.isContainer = isContainer;\nexports.isNamespace = isNamespace;\nexports.isUniversal = exports.isTag = exports.isString = exports.isSelector = exports.isRoot = exports.isPseudo = exports.isNesting = exports.isIdentifier = exports.isComment = exports.isCombinator = exports.isClassName = exports.isAttribute = void 0;\n\nvar _types = require(\"./types\");\n\nvar _IS_TYPE;\n\nvar IS_TYPE = (_IS_TYPE = {}, _IS_TYPE[_types.ATTRIBUTE] = true, _IS_TYPE[_types.CLASS] = true, _IS_TYPE[_types.COMBINATOR] = true, _IS_TYPE[_types.COMMENT] = true, _IS_TYPE[_types.ID] = true, _IS_TYPE[_types.NESTING] = true, _IS_TYPE[_types.PSEUDO] = true, _IS_TYPE[_types.ROOT] = true, _IS_TYPE[_types.SELECTOR] = true, _IS_TYPE[_types.STRING] = true, _IS_TYPE[_types.TAG] = true, _IS_TYPE[_types.UNIVERSAL] = true, _IS_TYPE);\n\nfunction isNode(node) {\n  return typeof node === \"object\" && IS_TYPE[node.type];\n}\n\nfunction isNodeType(type, node) {\n  return isNode(node) && node.type === type;\n}\n\nvar isAttribute = isNodeType.bind(null, _types.ATTRIBUTE);\nexports.isAttribute = isAttribute;\nvar isClassName = isNodeType.bind(null, _types.CLASS);\nexports.isClassName = isClassName;\nvar isCombinator = isNodeType.bind(null, _types.COMBINATOR);\nexports.isCombinator = isCombinator;\nvar isComment = isNodeType.bind(null, _types.COMMENT);\nexports.isComment = isComment;\nvar isIdentifier = isNodeType.bind(null, _types.ID);\nexports.isIdentifier = isIdentifier;\nvar isNesting = isNodeType.bind(null, _types.NESTING);\nexports.isNesting = isNesting;\nvar isPseudo = isNodeType.bind(null, _types.PSEUDO);\nexports.isPseudo = isPseudo;\nvar isRoot = isNodeType.bind(null, _types.ROOT);\nexports.isRoot = isRoot;\nvar isSelector = isNodeType.bind(null, _types.SELECTOR);\nexports.isSelector = isSelector;\nvar isString = isNodeType.bind(null, _types.STRING);\nexports.isString = isString;\nvar isTag = isNodeType.bind(null, _types.TAG);\nexports.isTag = isTag;\nvar isUniversal = isNodeType.bind(null, _types.UNIVERSAL);\nexports.isUniversal = isUniversal;\n\nfunction isPseudoElement(node) {\n  return isPseudo(node) && node.value && (node.value.startsWith(\"::\") || node.value.toLowerCase() === \":before\" || node.value.toLowerCase() === \":after\" || node.value.toLowerCase() === \":first-letter\" || node.value.toLowerCase() === \":first-line\");\n}\n\nfunction isPseudoClass(node) {\n  return isPseudo(node) && !isPseudoElement(node);\n}\n\nfunction isContainer(node) {\n  return !!(isNode(node) && node.walk);\n}\n\nfunction isNamespace(node) {\n  return isAttribute(node) || isTag(node);\n}", "\"use strict\";\n\nexports.__esModule = true;\n\nvar _types = require(\"./types\");\n\nObject.keys(_types).forEach(function (key) {\n  if (key === \"default\" || key === \"__esModule\") return;\n  if (key in exports && exports[key] === _types[key]) return;\n  exports[key] = _types[key];\n});\n\nvar _constructors = require(\"./constructors\");\n\nObject.keys(_constructors).forEach(function (key) {\n  if (key === \"default\" || key === \"__esModule\") return;\n  if (key in exports && exports[key] === _constructors[key]) return;\n  exports[key] = _constructors[key];\n});\n\nvar _guards = require(\"./guards\");\n\nObject.keys(_guards).forEach(function (key) {\n  if (key === \"default\" || key === \"__esModule\") return;\n  if (key in exports && exports[key] === _guards[key]) return;\n  exports[key] = _guards[key];\n});", "\"use strict\";\n\nexports.__esModule = true;\nexports[\"default\"] = void 0;\n\nvar _processor = _interopRequireDefault(require(\"./processor\"));\n\nvar selectors = _interopRequireWildcard(require(\"./selectors\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nvar parser = function parser(processor) {\n  return new _processor[\"default\"](processor);\n};\n\nObject.assign(parser, selectors);\ndelete parser.__esModule;\nvar _default = parser;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: ()=>escapeCommas\n});\nfunction escapeCommas(className) {\n    return className.replace(/\\\\,/g, \"\\\\2c \");\n}\n", "'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nfunction _export(target, all) {\n    for(var name in all)Object.defineProperty(target, name, {\n        enumerable: true,\n        get: all[name]\n    });\n}\n_export(exports, {\n    parseColor: ()=>parseColor,\n    formatColor: ()=>formatColor\n});\nconst _colorName = /*#__PURE__*/ _interopRequireDefault(require(\"color-name\"));\nfunction _interopRequireDefault(obj) {\n    return obj && obj.__esModule ? obj : {\n        default: obj\n    };\n}\nlet HEX = /^#([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})?$/i;\nlet SHORT_HEX = /^#([a-f\\d])([a-f\\d])([a-f\\d])([a-f\\d])?$/i;\nlet VALUE = /(?:\\d+|\\d*\\.\\d+)%?/;\nlet SEP = /(?:\\s*,\\s*|\\s+)/;\nlet ALPHA_SEP = /\\s*[,/]\\s*/;\nlet CUSTOM_PROPERTY = /var\\(--(?:[^ )]*?)\\)/;\nlet RGB = new RegExp(`^(rgb)a?\\\\(\\\\s*(${VALUE.source}|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\\\s*\\\\)$`);\nlet HSL = new RegExp(`^(hsl)a?\\\\(\\\\s*((?:${VALUE.source})(?:deg|rad|grad|turn)?|${CUSTOM_PROPERTY.source})(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?(?:${ALPHA_SEP.source}(${VALUE.source}|${CUSTOM_PROPERTY.source}))?\\\\s*\\\\)$`);\nfunction parseColor(value, { loose =false  } = {}) {\n    var ref, ref1;\n    if (typeof value !== \"string\") {\n        return null;\n    }\n    value = value.trim();\n    if (value === \"transparent\") {\n        return {\n            mode: \"rgb\",\n            color: [\n                \"0\",\n                \"0\",\n                \"0\"\n            ],\n            alpha: \"0\"\n        };\n    }\n    if (value in _colorName.default) {\n        return {\n            mode: \"rgb\",\n            color: _colorName.default[value].map((v)=>v.toString())\n        };\n    }\n    let hex = value.replace(SHORT_HEX, (_, r, g, b, a)=>[\n            \"#\",\n            r,\n            r,\n            g,\n            g,\n            b,\n            b,\n            a ? a + a : \"\"\n        ].join(\"\")).match(HEX);\n    if (hex !== null) {\n        return {\n            mode: \"rgb\",\n            color: [\n                parseInt(hex[1], 16),\n                parseInt(hex[2], 16),\n                parseInt(hex[3], 16)\n            ].map((v)=>v.toString()),\n            alpha: hex[4] ? (parseInt(hex[4], 16) / 255).toString() : undefined\n        };\n    }\n    var ref2;\n    let match = (ref2 = value.match(RGB)) !== null && ref2 !== void 0 ? ref2 : value.match(HSL);\n    if (match === null) {\n        return null;\n    }\n    let color = [\n        match[2],\n        match[3],\n        match[4]\n    ].filter(Boolean).map((v)=>v.toString());\n    if (!loose && color.length !== 3) {\n        return null;\n    }\n    if (color.length < 3 && !color.some((part)=>/^var\\(.*?\\)$/.test(part))) {\n        return null;\n    }\n    return {\n        mode: match[1],\n        color,\n        alpha: (ref = match[5]) === null || ref === void 0 ? void 0 : (ref1 = ref.toString) === null || ref1 === void 0 ? void 0 : ref1.call(ref)\n    };\n}\nfunction formatColor({ mode , color , alpha  }) {\n    let hasAlpha = alpha !== undefined;\n    return `${mode}(${color.join(\" \")}${hasAlpha ? ` / ${alpha}` : \"\"})`;\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nfunction _export(target, all) {\n    for(var name in all)Object.defineProperty(target, name, {\n        enumerable: true,\n        get: all[name]\n    });\n}\n_export(exports, {\n    withAlphaValue: ()=>withAlphaValue,\n    default: ()=>withAlphaVariable\n});\nconst _color = require(\"./color\");\nfunction withAlphaValue(color, alphaValue, defaultValue) {\n    if (typeof color === \"function\") {\n        return color({\n            opacityValue: alphaValue\n        });\n    }\n    let parsed = (0, _color.parseColor)(color, {\n        loose: true\n    });\n    if (parsed === null) {\n        return defaultValue;\n    }\n    return (0, _color.formatColor)({\n        ...parsed,\n        alpha: alphaValue\n    });\n}\nfunction withAlphaVariable({ color , property , variable  }) {\n    let properties = [].concat(property);\n    if (typeof color === \"function\") {\n        return {\n            [variable]: \"1\",\n            ...Object.fromEntries(properties.map((p)=>{\n                return [\n                    p,\n                    color({\n                        opacityVariable: variable,\n                        opacityValue: `var(${variable})`\n                    })\n                ];\n            }))\n        };\n    }\n    const parsed = (0, _color.parseColor)(color);\n    if (parsed === null) {\n        return Object.fromEntries(properties.map((p)=>[\n                p,\n                color\n            ]));\n    }\n    if (parsed.alpha !== undefined) {\n        // Has an alpha value, return color as-is\n        return Object.fromEntries(properties.map((p)=>[\n                p,\n                color\n            ]));\n    }\n    return {\n        [variable]: \"1\",\n        ...Object.fromEntries(properties.map((p)=>{\n            return [\n                p,\n                (0, _color.formatColor)({\n                    ...parsed,\n                    alpha: `var(${variable})`\n                })\n            ];\n        }))\n    };\n}\n", "/**\n * This splits a string on a top-level character.\n *\n * Regex doesn't support recursion (at least not the JS-flavored version).\n * So we have to use a tiny state machine to keep track of paren placement.\n *\n * Expected behavior using commas:\n * var(--a, 0 0 1px rgb(0, 0, 0)), 0 0 1px rgb(0, 0, 0)\n *       \u2500\u252C\u2500             \u252C  \u252C    \u252C\n *        x              x  x    \u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Split because top-level\n *        \u2570\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Ignored b/c inside >= 1 levels of parens\n *\n * @param {string} input\n * @param {string} separator\n */ \"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"splitAtTopLevelOnly\", {\n    enumerable: true,\n    get: ()=>splitAtTopLevelOnly\n});\nfunction splitAtTopLevelOnly(input, separator) {\n    let stack = [];\n    let parts = [];\n    let lastPos = 0;\n    for(let idx = 0; idx < input.length; idx++){\n        let char = input[idx];\n        if (stack.length === 0 && char === separator[0]) {\n            if (separator.length === 1 || input.slice(idx, idx + separator.length) === separator) {\n                parts.push(input.slice(lastPos, idx));\n                lastPos = idx + separator.length;\n            }\n        }\n        if (char === \"(\" || char === \"[\" || char === \"{\") {\n            stack.push(char);\n        } else if (char === \")\" && stack[stack.length - 1] === \"(\" || char === \"]\" && stack[stack.length - 1] === \"[\" || char === \"}\" && stack[stack.length - 1] === \"{\") {\n            stack.pop();\n        }\n    }\n    parts.push(input.slice(lastPos));\n    return parts;\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nfunction _export(target, all) {\n    for(var name in all)Object.defineProperty(target, name, {\n        enumerable: true,\n        get: all[name]\n    });\n}\n_export(exports, {\n    parseBoxShadowValue: ()=>parseBoxShadowValue,\n    formatBoxShadowValue: ()=>formatBoxShadowValue\n});\nconst _splitAtTopLevelOnly = require(\"./splitAtTopLevelOnly\");\nlet KEYWORDS = new Set([\n    \"inset\",\n    \"inherit\",\n    \"initial\",\n    \"revert\",\n    \"unset\"\n]);\nlet SPACE = /\\ +(?![^(]*\\))/g // Similar to the one above, but with spaces instead.\n;\nlet LENGTH = /^-?(\\d+|\\.\\d+)(.*?)$/g;\nfunction parseBoxShadowValue(input) {\n    let shadows = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(input, \",\");\n    return shadows.map((shadow)=>{\n        let value = shadow.trim();\n        let result = {\n            raw: value\n        };\n        let parts = value.split(SPACE);\n        let seen = new Set();\n        for (let part of parts){\n            // Reset index, since the regex is stateful.\n            LENGTH.lastIndex = 0;\n            // Keyword\n            if (!seen.has(\"KEYWORD\") && KEYWORDS.has(part)) {\n                result.keyword = part;\n                seen.add(\"KEYWORD\");\n            } else if (LENGTH.test(part)) {\n                if (!seen.has(\"X\")) {\n                    result.x = part;\n                    seen.add(\"X\");\n                } else if (!seen.has(\"Y\")) {\n                    result.y = part;\n                    seen.add(\"Y\");\n                } else if (!seen.has(\"BLUR\")) {\n                    result.blur = part;\n                    seen.add(\"BLUR\");\n                } else if (!seen.has(\"SPREAD\")) {\n                    result.spread = part;\n                    seen.add(\"SPREAD\");\n                }\n            } else {\n                if (!result.color) {\n                    result.color = part;\n                } else {\n                    if (!result.unknown) result.unknown = [];\n                    result.unknown.push(part);\n                }\n            }\n        }\n        // Check if valid\n        result.valid = result.x !== undefined && result.y !== undefined;\n        return result;\n    });\n}\nfunction formatBoxShadowValue(shadows) {\n    return shadows.map((shadow)=>{\n        if (!shadow.valid) {\n            return shadow.raw;\n        }\n        return [\n            shadow.keyword,\n            shadow.x,\n            shadow.y,\n            shadow.blur,\n            shadow.spread,\n            shadow.color\n        ].filter(Boolean).join(\" \");\n    }).join(\", \");\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nfunction _export(target, all) {\n    for(var name in all)Object.defineProperty(target, name, {\n        enumerable: true,\n        get: all[name]\n    });\n}\n_export(exports, {\n    normalize: ()=>normalize,\n    url: ()=>url,\n    number: ()=>number,\n    percentage: ()=>percentage,\n    length: ()=>length,\n    lineWidth: ()=>lineWidth,\n    shadow: ()=>shadow,\n    color: ()=>color,\n    image: ()=>image,\n    gradient: ()=>gradient,\n    position: ()=>position,\n    familyName: ()=>familyName,\n    genericName: ()=>genericName,\n    absoluteSize: ()=>absoluteSize,\n    relativeSize: ()=>relativeSize\n});\nconst _color = require(\"./color\");\nconst _parseBoxShadowValue = require(\"./parseBoxShadowValue\");\nconst _splitAtTopLevelOnly = require(\"./splitAtTopLevelOnly\");\nlet cssFunctions = [\n    \"min\",\n    \"max\",\n    \"clamp\",\n    \"calc\"\n];\n// Ref: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Types\nfunction isCSSFunction(value) {\n    return cssFunctions.some((fn)=>new RegExp(`^${fn}\\\\(.*\\\\)`).test(value));\n}\nfunction normalize(value, isRoot = true) {\n    // Keep raw strings if it starts with `url(`\n    if (value.includes(\"url(\")) {\n        return value.split(/(url\\(.*?\\))/g).filter(Boolean).map((part)=>{\n            if (/^url\\(.*?\\)$/.test(part)) {\n                return part;\n            }\n            return normalize(part, false);\n        }).join(\"\");\n    }\n    // Convert `_` to ` `, except for escaped underscores `\\_`\n    value = value.replace(/([^\\\\])_+/g, (fullMatch, characterBefore)=>characterBefore + \" \".repeat(fullMatch.length - 1)).replace(/^_/g, \" \").replace(/\\\\_/g, \"_\");\n    // Remove leftover whitespace\n    if (isRoot) {\n        value = value.trim();\n    }\n    // Add spaces around operators inside math functions like calc() that do not follow an operator\n    // or '('.\n    value = value.replace(/(calc|min|max|clamp)\\(.+\\)/g, (match)=>{\n        return match.replace(/(-?\\d*\\.?\\d(?!\\b-.+[,)](?![^+\\-/*])\\D)(?:%|[a-z]+)?|\\))([+\\-/*])/g, \"$1 $2 \");\n    });\n    return value;\n}\nfunction url(value) {\n    return value.startsWith(\"url(\");\n}\nfunction number(value) {\n    return !isNaN(Number(value)) || isCSSFunction(value);\n}\nfunction percentage(value) {\n    return value.endsWith(\"%\") && number(value.slice(0, -1)) || isCSSFunction(value);\n}\nlet lengthUnits = [\n    \"cm\",\n    \"mm\",\n    \"Q\",\n    \"in\",\n    \"pc\",\n    \"pt\",\n    \"px\",\n    \"em\",\n    \"ex\",\n    \"ch\",\n    \"rem\",\n    \"lh\",\n    \"vw\",\n    \"vh\",\n    \"vmin\",\n    \"vmax\"\n];\nlet lengthUnitsPattern = `(?:${lengthUnits.join(\"|\")})`;\nfunction length(value) {\n    return value === \"0\" || new RegExp(`^[+-]?[0-9]*\\.?[0-9]+(?:[eE][+-]?[0-9]+)?${lengthUnitsPattern}$`).test(value) || isCSSFunction(value);\n}\nlet lineWidths = new Set([\n    \"thin\",\n    \"medium\",\n    \"thick\"\n]);\nfunction lineWidth(value) {\n    return lineWidths.has(value);\n}\nfunction shadow(value) {\n    let parsedShadows = (0, _parseBoxShadowValue.parseBoxShadowValue)(normalize(value));\n    for (let parsedShadow of parsedShadows){\n        if (!parsedShadow.valid) {\n            return false;\n        }\n    }\n    return true;\n}\nfunction color(value) {\n    let colors = 0;\n    let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \"_\").every((part)=>{\n        part = normalize(part);\n        if (part.startsWith(\"var(\")) return true;\n        if ((0, _color.parseColor)(part, {\n            loose: true\n        }) !== null) return colors++, true;\n        return false;\n    });\n    if (!result) return false;\n    return colors > 0;\n}\nfunction image(value) {\n    let images = 0;\n    let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \",\").every((part)=>{\n        part = normalize(part);\n        if (part.startsWith(\"var(\")) return true;\n        if (url(part) || gradient(part) || [\n            \"element(\",\n            \"image(\",\n            \"cross-fade(\",\n            \"image-set(\"\n        ].some((fn)=>part.startsWith(fn))) {\n            images++;\n            return true;\n        }\n        return false;\n    });\n    if (!result) return false;\n    return images > 0;\n}\nlet gradientTypes = new Set([\n    \"linear-gradient\",\n    \"radial-gradient\",\n    \"repeating-linear-gradient\",\n    \"repeating-radial-gradient\",\n    \"conic-gradient\"\n]);\nfunction gradient(value) {\n    value = normalize(value);\n    for (let type of gradientTypes){\n        if (value.startsWith(`${type}(`)) {\n            return true;\n        }\n    }\n    return false;\n}\nlet validPositions = new Set([\n    \"center\",\n    \"top\",\n    \"right\",\n    \"bottom\",\n    \"left\"\n]);\nfunction position(value) {\n    let positions = 0;\n    let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \"_\").every((part)=>{\n        part = normalize(part);\n        if (part.startsWith(\"var(\")) return true;\n        if (validPositions.has(part) || length(part) || percentage(part)) {\n            positions++;\n            return true;\n        }\n        return false;\n    });\n    if (!result) return false;\n    return positions > 0;\n}\nfunction familyName(value) {\n    let fonts = 0;\n    let result = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \",\").every((part)=>{\n        part = normalize(part);\n        if (part.startsWith(\"var(\")) return true;\n        // If it contains spaces, then it should be quoted\n        if (part.includes(\" \")) {\n            if (!/(['\"])([^\"']+)\\1/g.test(part)) {\n                return false;\n            }\n        }\n        // If it starts with a number, it's invalid\n        if (/^\\d/g.test(part)) {\n            return false;\n        }\n        fonts++;\n        return true;\n    });\n    if (!result) return false;\n    return fonts > 0;\n}\nlet genericNames = new Set([\n    \"serif\",\n    \"sans-serif\",\n    \"monospace\",\n    \"cursive\",\n    \"fantasy\",\n    \"system-ui\",\n    \"ui-serif\",\n    \"ui-sans-serif\",\n    \"ui-monospace\",\n    \"ui-rounded\",\n    \"math\",\n    \"emoji\",\n    \"fangsong\"\n]);\nfunction genericName(value) {\n    return genericNames.has(value);\n}\nlet absoluteSizes = new Set([\n    \"xx-small\",\n    \"x-small\",\n    \"small\",\n    \"medium\",\n    \"large\",\n    \"x-large\",\n    \"x-large\",\n    \"xxx-large\"\n]);\nfunction absoluteSize(value) {\n    return absoluteSizes.has(value);\n}\nlet relativeSizes = new Set([\n    \"larger\",\n    \"smaller\"\n]);\nfunction relativeSize(value) {\n    return relativeSizes.has(value);\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"backgroundSize\", {\n    enumerable: true,\n    get: ()=>backgroundSize\n});\nconst _dataTypes = require(\"./dataTypes\");\nconst _splitAtTopLevelOnly = require(\"./splitAtTopLevelOnly\");\nfunction backgroundSize(value) {\n    let keywordValues = [\n        \"cover\",\n        \"contain\"\n    ];\n    // the <length-percentage> type will probably be a css function\n    // so we have to use `splitAtTopLevelOnly`\n    return (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(value, \",\").every((part)=>{\n        let sizes = (0, _splitAtTopLevelOnly.splitAtTopLevelOnly)(part, \"_\").filter(Boolean);\n        if (sizes.length === 1 && keywordValues.includes(sizes[0])) return true;\n        if (sizes.length !== 1 && sizes.length !== 2) return false;\n        return sizes.every((size)=>(0, _dataTypes.length)(size) || (0, _dataTypes.percentage)(size) || size === \"auto\");\n    });\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nfunction _export(target, all) {\n    for(var name in all)Object.defineProperty(target, name, {\n        enumerable: true,\n        get: all[name]\n    });\n}\n_export(exports, {\n    flagEnabled: ()=>flagEnabled,\n    issueFlagNotices: ()=>issueFlagNotices,\n    default: ()=>_default\n});\nconst _picocolors = /*#__PURE__*/ _interopRequireDefault(require(\"picocolors\"));\nconst _log = /*#__PURE__*/ _interopRequireDefault(require(\"./util/log\"));\nfunction _interopRequireDefault(obj) {\n    return obj && obj.__esModule ? obj : {\n        default: obj\n    };\n}\nlet defaults = {\n    optimizeUniversalDefaults: false,\n    generalizedModifiers: true\n};\nlet featureFlags = {\n    future: [\n        \"hoverOnlyWhenSupported\",\n        \"respectDefaultRingColorOpacity\",\n        \"disableColorOpacityUtilitiesByDefault\",\n        \"relativeContentPathsByDefault\"\n    ],\n    experimental: [\n        \"optimizeUniversalDefaults\",\n        \"generalizedModifiers\"\n    ]\n};\nfunction flagEnabled(config, flag) {\n    if (featureFlags.future.includes(flag)) {\n        var ref;\n        var ref1, ref2;\n        return config.future === \"all\" || ((ref2 = (ref1 = config === null || config === void 0 ? void 0 : (ref = config.future) === null || ref === void 0 ? void 0 : ref[flag]) !== null && ref1 !== void 0 ? ref1 : defaults[flag]) !== null && ref2 !== void 0 ? ref2 : false);\n    }\n    if (featureFlags.experimental.includes(flag)) {\n        var ref3;\n        var ref4, ref5;\n        return config.experimental === \"all\" || ((ref5 = (ref4 = config === null || config === void 0 ? void 0 : (ref3 = config.experimental) === null || ref3 === void 0 ? void 0 : ref3[flag]) !== null && ref4 !== void 0 ? ref4 : defaults[flag]) !== null && ref5 !== void 0 ? ref5 : false);\n    }\n    return false;\n}\nfunction experimentalFlagsEnabled(config) {\n    if (config.experimental === \"all\") {\n        return featureFlags.experimental;\n    }\n    var ref;\n    return Object.keys((ref = config === null || config === void 0 ? void 0 : config.experimental) !== null && ref !== void 0 ? ref : {}).filter((flag)=>featureFlags.experimental.includes(flag) && config.experimental[flag]);\n}\nfunction issueFlagNotices(config) {\n    if (process.env.JEST_WORKER_ID !== undefined) {\n        return;\n    }\n    if (experimentalFlagsEnabled(config).length > 0) {\n        let changes = experimentalFlagsEnabled(config).map((s)=>_picocolors.default.yellow(s)).join(\", \");\n        _log.default.warn(\"experimental-flags-enabled\", [\n            `You have enabled experimental features: ${changes}`,\n            \"Experimental features in Tailwind CSS are not covered by semver, may introduce breaking changes, and can change at any time.\"\n        ]);\n    }\n}\nconst _default = featureFlags;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nfunction _export(target, all) {\n    for(var name in all)Object.defineProperty(target, name, {\n        enumerable: true,\n        get: all[name]\n    });\n}\n_export(exports, {\n    updateAllClasses: ()=>updateAllClasses,\n    filterSelectorsForClass: ()=>filterSelectorsForClass,\n    asValue: ()=>asValue,\n    parseColorFormat: ()=>parseColorFormat,\n    asColor: ()=>asColor,\n    asLookupValue: ()=>asLookupValue,\n    typeMap: ()=>typeMap,\n    coerceValue: ()=>coerceValue,\n    getMatchingTypes: ()=>getMatchingTypes\n});\nconst _postcssSelectorParser = /*#__PURE__*/ _interopRequireDefault(require(\"postcss-selector-parser\"));\nconst _escapeCommas = /*#__PURE__*/ _interopRequireDefault(require(\"./escapeCommas\"));\nconst _withAlphaVariable = require(\"./withAlphaVariable\");\nconst _dataTypes = require(\"./dataTypes\");\nconst _negateValue = /*#__PURE__*/ _interopRequireDefault(require(\"./negateValue\"));\nconst _validateFormalSyntax = require(\"./validateFormalSyntax\");\nconst _featureFlagsJs = require(\"../featureFlags.js\");\nfunction _interopRequireDefault(obj) {\n    return obj && obj.__esModule ? obj : {\n        default: obj\n    };\n}\nfunction updateAllClasses(selectors, updateClass) {\n    let parser = (0, _postcssSelectorParser.default)((selectors)=>{\n        selectors.walkClasses((sel)=>{\n            let updatedClass = updateClass(sel.value);\n            sel.value = updatedClass;\n            if (sel.raws && sel.raws.value) {\n                sel.raws.value = (0, _escapeCommas.default)(sel.raws.value);\n            }\n        });\n    });\n    let result = parser.processSync(selectors);\n    return result;\n}\nfunction filterSelectorsForClass(selectors, classCandidate) {\n    let parser = (0, _postcssSelectorParser.default)((selectors)=>{\n        selectors.each((sel)=>{\n            const containsClass = sel.nodes.some((node)=>node.type === \"class\" && node.value === classCandidate);\n            if (!containsClass) {\n                sel.remove();\n            }\n        });\n    });\n    let result = parser.processSync(selectors);\n    return result;\n}\nfunction resolveArbitraryValue(modifier, validate) {\n    if (!isArbitraryValue(modifier)) {\n        return undefined;\n    }\n    let value = modifier.slice(1, -1);\n    if (!validate(value)) {\n        return undefined;\n    }\n    return (0, _dataTypes.normalize)(value);\n}\nfunction asNegativeValue(modifier, lookup = {}, validate) {\n    let positiveValue = lookup[modifier];\n    if (positiveValue !== undefined) {\n        return (0, _negateValue.default)(positiveValue);\n    }\n    if (isArbitraryValue(modifier)) {\n        let resolved = resolveArbitraryValue(modifier, validate);\n        if (resolved === undefined) {\n            return undefined;\n        }\n        return (0, _negateValue.default)(resolved);\n    }\n}\nfunction asValue(modifier, options = {}, { validate =()=>true  } = {}) {\n    var ref;\n    let value = (ref = options.values) === null || ref === void 0 ? void 0 : ref[modifier];\n    if (value !== undefined) {\n        return value;\n    }\n    if (options.supportsNegativeValues && modifier.startsWith(\"-\")) {\n        return asNegativeValue(modifier.slice(1), options.values, validate);\n    }\n    return resolveArbitraryValue(modifier, validate);\n}\nfunction isArbitraryValue(input) {\n    return input.startsWith(\"[\") && input.endsWith(\"]\");\n}\nfunction splitUtilityModifier(modifier) {\n    let slashIdx = modifier.lastIndexOf(\"/\");\n    if (slashIdx === -1 || slashIdx === modifier.length - 1) {\n        return [\n            modifier,\n            undefined\n        ];\n    }\n    let arbitrary = isArbitraryValue(modifier);\n    // The modifier could be of the form `[foo]/[bar]`\n    // We want to handle this case properly\n    // without affecting `[foo/bar]`\n    if (arbitrary && !modifier.includes(\"]/[\")) {\n        return [\n            modifier,\n            undefined\n        ];\n    }\n    return [\n        modifier.slice(0, slashIdx),\n        modifier.slice(slashIdx + 1)\n    ];\n}\nfunction parseColorFormat(value) {\n    if (typeof value === \"string\" && value.includes(\"<alpha-value>\")) {\n        let oldValue = value;\n        return ({ opacityValue =1  })=>oldValue.replace(\"<alpha-value>\", opacityValue);\n    }\n    return value;\n}\nfunction asColor(_, options = {}, { tailwindConfig ={} , utilityModifier , rawModifier  } = {}) {\n    var ref;\n    if (((ref = options.values) === null || ref === void 0 ? void 0 : ref[rawModifier]) !== undefined) {\n        var ref1;\n        return parseColorFormat((ref1 = options.values) === null || ref1 === void 0 ? void 0 : ref1[rawModifier]);\n    }\n    // TODO: Hoist this up to getMatchingTypes or something\n    // We do this here because we need the alpha value (if any)\n    let [color, alpha] = splitUtilityModifier(rawModifier);\n    if (alpha !== undefined) {\n        var ref2, ref3, ref4;\n        var ref5;\n        let normalizedColor = (ref5 = (ref2 = options.values) === null || ref2 === void 0 ? void 0 : ref2[color]) !== null && ref5 !== void 0 ? ref5 : isArbitraryValue(color) ? color.slice(1, -1) : undefined;\n        if (normalizedColor === undefined) {\n            return undefined;\n        }\n        normalizedColor = parseColorFormat(normalizedColor);\n        if (isArbitraryValue(alpha)) {\n            return (0, _withAlphaVariable.withAlphaValue)(normalizedColor, alpha.slice(1, -1));\n        }\n        if (((ref3 = tailwindConfig.theme) === null || ref3 === void 0 ? void 0 : (ref4 = ref3.opacity) === null || ref4 === void 0 ? void 0 : ref4[alpha]) === undefined) {\n            return undefined;\n        }\n        return (0, _withAlphaVariable.withAlphaValue)(normalizedColor, tailwindConfig.theme.opacity[alpha]);\n    }\n    return asValue(rawModifier, options, {\n        rawModifier,\n        utilityModifier,\n        validate: _dataTypes.color\n    });\n}\nfunction asLookupValue(modifier, options = {}) {\n    var ref;\n    return (ref = options.values) === null || ref === void 0 ? void 0 : ref[modifier];\n}\nfunction guess(validate) {\n    return (modifier, options, extras)=>{\n        return asValue(modifier, options, {\n            ...extras,\n            validate\n        });\n    };\n}\nlet typeMap = {\n    any: asValue,\n    color: asColor,\n    url: guess(_dataTypes.url),\n    image: guess(_dataTypes.image),\n    length: guess(_dataTypes.length),\n    percentage: guess(_dataTypes.percentage),\n    position: guess(_dataTypes.position),\n    lookup: asLookupValue,\n    \"generic-name\": guess(_dataTypes.genericName),\n    \"family-name\": guess(_dataTypes.familyName),\n    number: guess(_dataTypes.number),\n    \"line-width\": guess(_dataTypes.lineWidth),\n    \"absolute-size\": guess(_dataTypes.absoluteSize),\n    \"relative-size\": guess(_dataTypes.relativeSize),\n    shadow: guess(_dataTypes.shadow),\n    size: guess(_validateFormalSyntax.backgroundSize)\n};\nlet supportedTypes = Object.keys(typeMap);\nfunction splitAtFirst(input, delim) {\n    let idx = input.indexOf(delim);\n    if (idx === -1) return [\n        undefined,\n        input\n    ];\n    return [\n        input.slice(0, idx),\n        input.slice(idx + 1)\n    ];\n}\nfunction coerceValue(types, modifier, options, tailwindConfig) {\n    if (isArbitraryValue(modifier)) {\n        let arbitraryValue = modifier.slice(1, -1);\n        let [explicitType, value] = splitAtFirst(arbitraryValue, \":\");\n        // It could be that this resolves to `url(https` which is not a valid\n        // identifier. We currently only support \"simple\" words with dashes or\n        // underscores. E.g.: family-name\n        if (!/^[\\w-_]+$/g.test(explicitType)) {\n            value = arbitraryValue;\n        } else if (explicitType !== undefined && !supportedTypes.includes(explicitType)) {\n            return [];\n        }\n        if (value.length > 0 && supportedTypes.includes(explicitType)) {\n            return [\n                asValue(`[${value}]`, options),\n                explicitType,\n                null\n            ];\n        }\n    }\n    let matches = getMatchingTypes(types, modifier, options, tailwindConfig);\n    // Find first matching type\n    for (let match of matches){\n        return match;\n    }\n    return [];\n}\nfunction* getMatchingTypes(types, rawModifier, options, tailwindConfig) {\n    let modifiersEnabled = (0, _featureFlagsJs.flagEnabled)(tailwindConfig, \"generalizedModifiers\");\n    let [modifier, utilityModifier] = splitUtilityModifier(rawModifier);\n    let canUseUtilityModifier = modifiersEnabled && options.modifiers != null && (options.modifiers === \"any\" || typeof options.modifiers === \"object\" && (utilityModifier && isArbitraryValue(utilityModifier) || utilityModifier in options.modifiers));\n    if (!canUseUtilityModifier) {\n        modifier = rawModifier;\n        utilityModifier = undefined;\n    }\n    if (utilityModifier !== undefined && modifier === \"\") {\n        modifier = \"DEFAULT\";\n    }\n    // Check the full value first\n    // TODO: Move to asValue\u2026 somehow\n    if (utilityModifier !== undefined) {\n        if (typeof options.modifiers === \"object\") {\n            var ref;\n            var ref1;\n            let configValue = (ref1 = (ref = options.modifiers) === null || ref === void 0 ? void 0 : ref[utilityModifier]) !== null && ref1 !== void 0 ? ref1 : null;\n            if (configValue !== null) {\n                utilityModifier = configValue;\n            } else if (isArbitraryValue(utilityModifier)) {\n                utilityModifier = utilityModifier.slice(1, -1);\n            }\n        }\n        let result = asValue(rawModifier, options, {\n            rawModifier,\n            utilityModifier,\n            tailwindConfig\n        });\n        if (result !== undefined) {\n            yield [\n                result,\n                \"any\",\n                null\n            ];\n        }\n    }\n    for (const { type  } of types !== null && types !== void 0 ? types : []){\n        let result1 = typeMap[type](modifier, options, {\n            rawModifier,\n            utilityModifier,\n            tailwindConfig\n        });\n        if (result1 === undefined) {\n            continue;\n        }\n        yield [\n            result1,\n            type,\n            utilityModifier !== null && utilityModifier !== void 0 ? utilityModifier : null\n        ];\n    }\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: ()=>toColorValue\n});\nfunction toColorValue(maybeFunction) {\n    return typeof maybeFunction === \"function\" ? maybeFunction({}) : maybeFunction;\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: ()=>resolveConfig\n});\nconst _negateValue = /*#__PURE__*/ _interopRequireDefault(require(\"./negateValue\"));\nconst _corePluginList = /*#__PURE__*/ _interopRequireDefault(require(\"../corePluginList\"));\nconst _configurePlugins = /*#__PURE__*/ _interopRequireDefault(require(\"./configurePlugins\"));\nconst _defaultConfigStub = /*#__PURE__*/ _interopRequireDefault(require(\"../../stubs/defaultConfig.stub\"));\nconst _colors = /*#__PURE__*/ _interopRequireDefault(require(\"../public/colors\"));\nconst _defaults = require(\"./defaults\");\nconst _toPath = require(\"./toPath\");\nconst _normalizeConfig = require(\"./normalizeConfig\");\nconst _isPlainObject = /*#__PURE__*/ _interopRequireDefault(require(\"./isPlainObject\"));\nconst _cloneDeep = require(\"./cloneDeep\");\nconst _pluginUtils = require(\"./pluginUtils\");\nconst _withAlphaVariable = require(\"./withAlphaVariable\");\nconst _toColorValue = /*#__PURE__*/ _interopRequireDefault(require(\"./toColorValue\"));\nfunction _interopRequireDefault(obj) {\n    return obj && obj.__esModule ? obj : {\n        default: obj\n    };\n}\nfunction isFunction(input) {\n    return typeof input === \"function\";\n}\nfunction mergeWith(target, ...sources) {\n    let customizer = sources.pop();\n    for (let source of sources){\n        for(let k in source){\n            let merged = customizer(target[k], source[k]);\n            if (merged === undefined) {\n                if ((0, _isPlainObject.default)(target[k]) && (0, _isPlainObject.default)(source[k])) {\n                    target[k] = mergeWith({}, target[k], source[k], customizer);\n                } else {\n                    target[k] = source[k];\n                }\n            } else {\n                target[k] = merged;\n            }\n        }\n    }\n    return target;\n}\nconst configUtils = {\n    colors: _colors.default,\n    negative (scale) {\n        // TODO: Log that this function isn't really needed anymore?\n        return Object.keys(scale).filter((key)=>scale[key] !== \"0\").reduce((negativeScale, key)=>{\n            let negativeValue = (0, _negateValue.default)(scale[key]);\n            if (negativeValue !== undefined) {\n                negativeScale[`-${key}`] = negativeValue;\n            }\n            return negativeScale;\n        }, {});\n    },\n    breakpoints (screens) {\n        return Object.keys(screens).filter((key)=>typeof screens[key] === \"string\").reduce((breakpoints, key)=>({\n                ...breakpoints,\n                [`screen-${key}`]: screens[key]\n            }), {});\n    }\n};\nfunction value(valueToResolve, ...args) {\n    return isFunction(valueToResolve) ? valueToResolve(...args) : valueToResolve;\n}\nfunction collectExtends(items) {\n    return items.reduce((merged, { extend  })=>{\n        return mergeWith(merged, extend, (mergedValue, extendValue)=>{\n            if (mergedValue === undefined) {\n                return [\n                    extendValue\n                ];\n            }\n            if (Array.isArray(mergedValue)) {\n                return [\n                    extendValue,\n                    ...mergedValue\n                ];\n            }\n            return [\n                extendValue,\n                mergedValue\n            ];\n        });\n    }, {});\n}\nfunction mergeThemes(themes) {\n    return {\n        ...themes.reduce((merged, theme)=>(0, _defaults.defaults)(merged, theme), {}),\n        // In order to resolve n config objects, we combine all of their `extend` properties\n        // into arrays instead of objects so they aren't overridden.\n        extend: collectExtends(themes)\n    };\n}\nfunction mergeExtensionCustomizer(merged, value) {\n    // When we have an array of objects, we do want to merge it\n    if (Array.isArray(merged) && (0, _isPlainObject.default)(merged[0])) {\n        return merged.concat(value);\n    }\n    // When the incoming value is an array, and the existing config is an object, prepend the existing object\n    if (Array.isArray(value) && (0, _isPlainObject.default)(value[0]) && (0, _isPlainObject.default)(merged)) {\n        return [\n            merged,\n            ...value\n        ];\n    }\n    // Override arrays (for example for font-families, box-shadows, ...)\n    if (Array.isArray(value)) {\n        return value;\n    }\n    // Execute default behaviour\n    return undefined;\n}\nfunction mergeExtensions({ extend , ...theme }) {\n    return mergeWith(theme, extend, (themeValue, extensions)=>{\n        // The `extend` property is an array, so we need to check if it contains any functions\n        if (!isFunction(themeValue) && !extensions.some(isFunction)) {\n            return mergeWith({}, themeValue, ...extensions, mergeExtensionCustomizer);\n        }\n        return (resolveThemePath, utils)=>mergeWith({}, ...[\n                themeValue,\n                ...extensions\n            ].map((e)=>value(e, resolveThemePath, utils)), mergeExtensionCustomizer);\n    });\n}\n/**\n *\n * @param {string} key\n * @return {Iterable<string[] & {alpha: string | undefined}>}\n */ function* toPaths(key) {\n    let path = (0, _toPath.toPath)(key);\n    if (path.length === 0) {\n        return;\n    }\n    yield path;\n    if (Array.isArray(key)) {\n        return;\n    }\n    let pattern = /^(.*?)\\s*\\/\\s*([^/]+)$/;\n    let matches = key.match(pattern);\n    if (matches !== null) {\n        let [, prefix, alpha] = matches;\n        let newPath = (0, _toPath.toPath)(prefix);\n        newPath.alpha = alpha;\n        yield newPath;\n    }\n}\nfunction resolveFunctionKeys(object) {\n    // theme('colors.red.500 / 0.5') -> ['colors', 'red', '500 / 0', '5]\n    const resolvePath = (key, defaultValue)=>{\n        for (const path of toPaths(key)){\n            let index = 0;\n            let val = object;\n            while(val !== undefined && val !== null && index < path.length){\n                val = val[path[index++]];\n                let shouldResolveAsFn = isFunction(val) && (path.alpha === undefined || index <= path.length - 1);\n                val = shouldResolveAsFn ? val(resolvePath, configUtils) : val;\n            }\n            if (val !== undefined) {\n                if (path.alpha !== undefined) {\n                    let normalized = (0, _pluginUtils.parseColorFormat)(val);\n                    return (0, _withAlphaVariable.withAlphaValue)(normalized, path.alpha, (0, _toColorValue.default)(normalized));\n                }\n                if ((0, _isPlainObject.default)(val)) {\n                    return (0, _cloneDeep.cloneDeep)(val);\n                }\n                return val;\n            }\n        }\n        return defaultValue;\n    };\n    Object.assign(resolvePath, {\n        theme: resolvePath,\n        ...configUtils\n    });\n    return Object.keys(object).reduce((resolved, key)=>{\n        resolved[key] = isFunction(object[key]) ? object[key](resolvePath, configUtils) : object[key];\n        return resolved;\n    }, {});\n}\nfunction extractPluginConfigs(configs) {\n    let allConfigs = [];\n    configs.forEach((config)=>{\n        allConfigs = [\n            ...allConfigs,\n            config\n        ];\n        var ref;\n        const plugins = (ref = config === null || config === void 0 ? void 0 : config.plugins) !== null && ref !== void 0 ? ref : [];\n        if (plugins.length === 0) {\n            return;\n        }\n        plugins.forEach((plugin)=>{\n            if (plugin.__isOptionsFunction) {\n                plugin = plugin();\n            }\n            var ref;\n            allConfigs = [\n                ...allConfigs,\n                ...extractPluginConfigs([\n                    (ref = plugin === null || plugin === void 0 ? void 0 : plugin.config) !== null && ref !== void 0 ? ref : {}\n                ])\n            ];\n        });\n    });\n    return allConfigs;\n}\nfunction resolveCorePlugins(corePluginConfigs) {\n    const result = [\n        ...corePluginConfigs\n    ].reduceRight((resolved, corePluginConfig)=>{\n        if (isFunction(corePluginConfig)) {\n            return corePluginConfig({\n                corePlugins: resolved\n            });\n        }\n        return (0, _configurePlugins.default)(corePluginConfig, resolved);\n    }, _corePluginList.default);\n    return result;\n}\nfunction resolvePluginLists(pluginLists) {\n    const result = [\n        ...pluginLists\n    ].reduceRight((resolved, pluginList)=>{\n        return [\n            ...resolved,\n            ...pluginList\n        ];\n    }, []);\n    return result;\n}\nfunction resolveConfig(configs) {\n    let allConfigs = [\n        ...extractPluginConfigs(configs),\n        {\n            prefix: \"\",\n            important: false,\n            separator: \":\",\n            variantOrder: _defaultConfigStub.default.variantOrder\n        }\n    ];\n    var ref, ref1;\n    return (0, _normalizeConfig.normalizeConfig)((0, _defaults.defaults)({\n        theme: resolveFunctionKeys(mergeExtensions(mergeThemes(allConfigs.map((t)=>{\n            return (ref = t === null || t === void 0 ? void 0 : t.theme) !== null && ref !== void 0 ? ref : {};\n        })))),\n        corePlugins: resolveCorePlugins(allConfigs.map((c)=>c.corePlugins)),\n        plugins: resolvePluginLists(configs.map((c)=>{\n            return (ref1 = c === null || c === void 0 ? void 0 : c.plugins) !== null && ref1 !== void 0 ? ref1 : [];\n        }))\n    }, ...allConfigs));\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: ()=>getAllConfigs\n});\nconst _defaultConfigStubJs = /*#__PURE__*/ _interopRequireDefault(require(\"../../stubs/defaultConfig.stub.js\"));\nconst _featureFlags = require(\"../featureFlags\");\nfunction _interopRequireDefault(obj) {\n    return obj && obj.__esModule ? obj : {\n        default: obj\n    };\n}\nfunction getAllConfigs(config) {\n    var ref;\n    const configs = ((ref = config === null || config === void 0 ? void 0 : config.presets) !== null && ref !== void 0 ? ref : [\n        _defaultConfigStubJs.default\n    ]).slice().reverse().flatMap((preset)=>getAllConfigs(preset instanceof Function ? preset() : preset));\n    const features = {\n        // Add experimental configs here...\n        respectDefaultRingColorOpacity: {\n            theme: {\n                ringColor: ({ theme  })=>({\n                        DEFAULT: \"#3b82f67f\",\n                        ...theme(\"colors\")\n                    })\n            }\n        },\n        disableColorOpacityUtilitiesByDefault: {\n            corePlugins: {\n                backgroundOpacity: false,\n                borderOpacity: false,\n                divideOpacity: false,\n                placeholderOpacity: false,\n                ringOpacity: false,\n                textOpacity: false\n            }\n        }\n    };\n    const experimentals = Object.keys(features).filter((feature)=>(0, _featureFlags.flagEnabled)(config, feature)).map((feature)=>features[feature]);\n    return [\n        config,\n        ...experimentals,\n        ...configs\n    ];\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: ()=>resolveConfig\n});\nconst _resolveConfig = /*#__PURE__*/ _interopRequireDefault(require(\"../util/resolveConfig\"));\nconst _getAllConfigs = /*#__PURE__*/ _interopRequireDefault(require(\"../util/getAllConfigs\"));\nfunction _interopRequireDefault(obj) {\n    return obj && obj.__esModule ? obj : {\n        default: obj\n    };\n}\nfunction resolveConfig(...configs) {\n    let [, ...defaultConfigs] = (0, _getAllConfigs.default)(configs[0]);\n    return (0, _resolveConfig.default)([\n        ...configs,\n        ...defaultConfigs\n    ]);\n}\n", "let resolveConfig = require('./lib/public/resolve-config')\nmodule.exports = (resolveConfig.__esModule ? resolveConfig : { default: resolveConfig }).default\n", "module.exports = function isArrayish(obj) {\n\tif (!obj || typeof obj === 'string') {\n\t\treturn false;\n\t}\n\n\treturn obj instanceof Array || Array.isArray(obj) ||\n\t\t(obj.length >= 0 && (obj.splice instanceof Function ||\n\t\t\t(Object.getOwnPropertyDescriptor(obj, (obj.length - 1)) && obj.constructor.name !== 'String')));\n};\n", "'use strict';\n\nvar isArrayish = require('is-arrayish');\n\nvar concat = Array.prototype.concat;\nvar slice = Array.prototype.slice;\n\nvar swizzle = module.exports = function swizzle(args) {\n\tvar results = [];\n\n\tfor (var i = 0, len = args.length; i < len; i++) {\n\t\tvar arg = args[i];\n\n\t\tif (isArrayish(arg)) {\n\t\t\t// http://jsperf.com/javascript-array-concat-vs-push/98\n\t\t\tresults = concat.call(results, slice.call(arg));\n\t\t} else {\n\t\t\tresults.push(arg);\n\t\t}\n\t}\n\n\treturn results;\n};\n\nswizzle.wrap = function (fn) {\n\treturn function () {\n\t\treturn fn(swizzle(arguments));\n\t};\n};\n", "/* MIT license */\nvar colorNames = require('color-name');\nvar swizzle = require('simple-swizzle');\nvar hasOwnProperty = Object.hasOwnProperty;\n\nvar reverseNames = Object.create(null);\n\n// create a list of reverse color names\nfor (var name in colorNames) {\n\tif (hasOwnProperty.call(colorNames, name)) {\n\t\treverseNames[colorNames[name]] = name;\n\t}\n}\n\nvar cs = module.exports = {\n\tto: {},\n\tget: {}\n};\n\ncs.get = function (string) {\n\tvar prefix = string.substring(0, 3).toLowerCase();\n\tvar val;\n\tvar model;\n\tswitch (prefix) {\n\t\tcase 'hsl':\n\t\t\tval = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\tcase 'hwb':\n\t\t\tval = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tval = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t}\n\n\tif (!val) {\n\t\treturn null;\n\t}\n\n\treturn {model: model, value: val};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar abbr = /^#([a-f0-9]{3,4})$/i;\n\tvar hex = /^#([a-f0-9]{6})([a-f0-9]{2})?$/i;\n\tvar rgba = /^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar per = /^rgba?\\(\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*,?\\s*([+-]?[\\d\\.]+)\\%\\s*(?:[,|\\/]\\s*([+-]?[\\d\\.]+)(%?)\\s*)?\\)$/;\n\tvar keyword = /^(\\w+)$/;\n\n\tvar rgb = [0, 0, 0, 1];\n\tvar match;\n\tvar i;\n\tvar hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tvar i2 = i * 2;\n\t\t\trgb[i] = parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = parseInt(match[i + 1], 0);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\tif (match[5]) {\n\t\t\t\trgb[3] = parseFloat(match[4]) * 0.01;\n\t\t\t} else {\n\t\t\t\trgb[3] = parseFloat(match[4]);\n\t\t\t}\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!hasOwnProperty.call(colorNames, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb = colorNames[match[1]];\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*,?\\s*([+-]?[\\d\\.]+)%\\s*(?:[,|\\/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hsl);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar s = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar l = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tvar hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*,\\s*([+-]?[\\d\\.]+)%\\s*,\\s*([+-]?[\\d\\.]+)%\\s*(?:,\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tvar match = string.match(hwb);\n\n\tif (match) {\n\t\tvar alpha = parseFloat(match[4]);\n\t\tvar h = ((parseFloat(match[1]) % 360) + 360) % 360;\n\t\tvar w = clamp(parseFloat(match[2]), 0, 100);\n\t\tvar b = clamp(parseFloat(match[3]), 0, 100);\n\t\tvar a = clamp(isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function () {\n\tvar rgba = swizzle(arguments);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function () {\n\tvar rgba = swizzle(arguments);\n\n\tvar r = Math.round(rgba[0] / 255 * 100);\n\tvar g = Math.round(rgba[1] / 255 * 100);\n\tvar b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function () {\n\tvar hsla = swizzle(arguments);\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function () {\n\tvar hwba = swizzle(arguments);\n\n\tvar a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// helpers\nfunction clamp(num, min, max) {\n\treturn Math.min(Math.max(min, num), max);\n}\n\nfunction hexDouble(num) {\n\tvar str = Math.round(num).toString(16).toUpperCase();\n\treturn (str.length < 2) ? '0' + str : str;\n}\n", "/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n//       values that give correct `typeof` results).\n//       do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v;  g = n;  b = wh; break;\n\t\tcase 1: r = n;  g = v;  b = wh; break;\n\t\tcase 2: r = wh; g = v;  b = n; break;\n\t\tcase 3: r = wh; g = n;  b = v; break;\n\t\tcase 4: r = n;  g = wh; b = v; break;\n\t\tcase 5: r = v;  g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n", "const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n", "const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n", "const colorString = require('color-string');\nconst convert = require('color-convert');\n\nconst skippedModels = [\n\t// To be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// Gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// Shouldn't really be in color-convert either...\n\t'hex',\n];\n\nconst hashedModelKeys = {};\nfor (const model of Object.keys(convert)) {\n\thashedModelKeys[[...convert[model].labels].sort().join('')] = model;\n}\n\nconst limiters = {};\n\nfunction Color(object, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(object, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tlet i;\n\tlet channels;\n\n\tif (object == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (object instanceof Color) {\n\t\tthis.model = object.model;\n\t\tthis.color = [...object.color];\n\t\tthis.valpha = object.valpha;\n\t} else if (typeof object === 'string') {\n\t\tconst result = colorString.get(object);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + object);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (object.length > 0) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tconst newArray = Array.prototype.slice.call(object, 0, channels);\n\t\tthis.color = zeroArray(newArray, channels);\n\t\tthis.valpha = typeof object[channels] === 'number' ? object[channels] : 1;\n\t} else if (typeof object === 'number') {\n\t\t// This is always RGB - can be converted later on.\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(object >> 16) & 0xFF,\n\t\t\t(object >> 8) & 0xFF,\n\t\t\tobject & 0xFF,\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tconst keys = Object.keys(object);\n\t\tif ('alpha' in object) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof object.alpha === 'number' ? object.alpha : 0;\n\t\t}\n\n\t\tconst hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(object));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tconst {labels} = convert[this.model];\n\t\tconst color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(object[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// Perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tconst limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString() {\n\t\treturn this.string();\n\t},\n\n\ttoJSON() {\n\t\treturn this[this.model]();\n\t},\n\n\tstring(places) {\n\t\tlet self = this.model in colorString.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tconst args = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn colorString.to[self.model](args);\n\t},\n\n\tpercentString(places) {\n\t\tconst self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tconst args = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn colorString.to.rgb.percent(args);\n\t},\n\n\tarray() {\n\t\treturn this.valpha === 1 ? [...this.color] : [...this.color, this.valpha];\n\t},\n\n\tobject() {\n\t\tconst result = {};\n\t\tconst {channels} = convert[this.model];\n\t\tconst {labels} = convert[this.model];\n\n\t\tfor (let i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray() {\n\t\tconst rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject() {\n\t\tconst rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround(places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color([...this.color.map(roundToPlace(places)), this.valpha], this.model);\n\t},\n\n\talpha(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color([...this.color, Math.max(0, Math.min(1, value))], this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// Rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, value => ((value % 360) + 360) % 360),\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(95.047)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(108.833)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn colorString.to.hex(this.rgb().round().color);\n\t},\n\n\thexa(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\tconst rgbArray = this.rgb().round().color;\n\n\t\tlet alphaHex = Math.round(this.valpha * 255).toString(16).toUpperCase();\n\t\tif (alphaHex.length === 1) {\n\t\t\talphaHex = '0' + alphaHex;\n\t\t}\n\n\t\treturn colorString.to.hex(rgbArray) + alphaHex;\n\t},\n\n\trgbNumber() {\n\t\tconst rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity() {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tconst rgb = this.rgb().color;\n\n\t\tconst lum = [];\n\t\tfor (const [i, element] of rgb.entries()) {\n\t\t\tconst chan = element / 255;\n\t\t\tlum[i] = (chan <= 0.04045) ? chan / 12.92 : ((chan + 0.055) / 1.055) ** 2.4;\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast(color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tconst lum1 = this.luminosity();\n\t\tconst lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel(color2) {\n\t\t// https://www.w3.org/TR/WCAG/#contrast-enhanced\n\t\tconst contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark() {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tconst rgb = this.rgb().color;\n\t\tconst yiq = (rgb[0] * 2126 + rgb[1] * 7152 + rgb[2] * 722) / 10000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight() {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate() {\n\t\tconst rgb = this.rgb();\n\t\tfor (let i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tlighten(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale() {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale\n\t\tconst rgb = this.rgb().color;\n\t\tconst value = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(value, value, value);\n\t},\n\n\tfade(ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer(ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate(degrees) {\n\t\tconst hsl = this.hsl();\n\t\tlet hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix(mixinColor, weight) {\n\t\t// Ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\n\t\tconst color1 = mixinColor.rgb();\n\t\tconst color2 = this.rgb();\n\t\tconst p = weight === undefined ? 0.5 : weight;\n\n\t\tconst w = 2 * p - 1;\n\t\tconst a = color1.alpha() - color2.alpha();\n\n\t\tconst w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2;\n\t\tconst w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n};\n\n// Model conversion methods and static constructors\nfor (const model of Object.keys(convert)) {\n\tif (skippedModels.includes(model)) {\n\t\tcontinue;\n\t}\n\n\tconst {channels} = convert[model];\n\n\t// Conversion methods\n\tColor.prototype[model] = function (...args) {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (args.length > 0) {\n\t\t\treturn new Color(args, model);\n\t\t}\n\n\t\treturn new Color([...assertArray(convert[this.model][model].raw(this.color)), this.valpha], model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (...args) {\n\t\tlet color = args[0];\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(args, channels);\n\t\t}\n\n\t\treturn new Color(color, model);\n\t};\n}\n\nfunction roundTo(number, places) {\n\treturn Number(number.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (number) {\n\t\treturn roundTo(number, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tfor (const m of model) {\n\t\t(limiters[m] || (limiters[m] = []))[channel] = modifier;\n\t}\n\n\tmodel = model[0];\n\n\treturn function (value) {\n\t\tlet result;\n\n\t\tif (value !== undefined) {\n\t\t\tif (modifier) {\n\t\t\t\tvalue = modifier(value);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = value;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(value) {\n\treturn Array.isArray(value) ? value : [value];\n}\n\nfunction zeroArray(array, length) {\n\tfor (let i = 0; i < length; i++) {\n\t\tif (typeof array[i] !== 'number') {\n\t\t\tarray[i] = 0;\n\t\t}\n\t}\n\n\treturn array;\n}\n\nmodule.exports = Color;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: ()=>_default\n});\nfunction createPlugin(plugin, config) {\n    return {\n        handler: plugin,\n        config\n    };\n}\ncreatePlugin.withOptions = function(pluginFunction, configFunction = ()=>({})) {\n    const optionsFunction = function(options) {\n        return {\n            __options: options,\n            handler: pluginFunction(options),\n            config: configFunction(options)\n        };\n    };\n    optionsFunction.__isOptionsFunction = true;\n    // Expose plugin dependencies so that `object-hash` returns a different\n    // value if anything here changes, to ensure a rebuild is triggered.\n    optionsFunction.__pluginFunction = pluginFunction;\n    optionsFunction.__configFunction = configFunction;\n    return optionsFunction;\n};\nconst _default = createPlugin;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nObject.defineProperty(exports, \"default\", {\n    enumerable: true,\n    get: ()=>_default\n});\nconst _createPlugin = /*#__PURE__*/ _interopRequireDefault(require(\"../util/createPlugin\"));\nfunction _interopRequireDefault(obj) {\n    return obj && obj.__esModule ? obj : {\n        default: obj\n    };\n}\nconst _default = _createPlugin.default;\n", "let createPlugin = require('./lib/public/create-plugin')\nmodule.exports = (createPlugin.__esModule ? createPlugin : { default: createPlugin }).default\n", "/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.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\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\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 */\nfunction arrayEach(array, iteratee) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  while (++index < length) {\n    if (iteratee(array[index], index, array) === false) {\n      break;\n    }\n  }\n  return array;\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 */\nfunction 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 * 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 */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\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 * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\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 */\nfunction arrayLikeKeys(value, inherited) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  // Safari 9 makes `arguments.length` enumerable in strict mode.\n  var result = (isArray(value) || isArguments(value))\n    ? baseTimes(value.length, String)\n    : [];\n\n  var length = result.length,\n      skipIndexes = !!length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n      result.push(key);\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 */\nvar baseEach = createBaseEach(baseForOwn);\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 */\nvar baseFor = createBaseFor();\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 */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\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 */\nfunction 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 * 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 */\nfunction 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 */\nfunction 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 * 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 */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\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 */\nfunction 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 * 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 * _([1, 2]).forEach(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, typeof iteratee == 'function' ? iteratee : identity);\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 */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\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 */\nvar isArray = Array.isArray;\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 */\nfunction 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 */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(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 */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\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 */\nfunction 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 */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (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 */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\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 */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\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 */\nfunction identity(value) {\n  return value;\n}\n\nmodule.exports = forEach;\n", "module.exports = flatten\nflatten.flatten = flatten\nflatten.unflatten = unflatten\n\nfunction isBuffer (obj) {\n  return obj &&\n    obj.constructor &&\n    (typeof obj.constructor.isBuffer === 'function') &&\n    obj.constructor.isBuffer(obj)\n}\n\nfunction keyIdentity (key) {\n  return key\n}\n\nfunction flatten (target, opts) {\n  opts = opts || {}\n\n  const delimiter = opts.delimiter || '.'\n  const maxDepth = opts.maxDepth\n  const transformKey = opts.transformKey || keyIdentity\n  const output = {}\n\n  function step (object, prev, currentDepth) {\n    currentDepth = currentDepth || 1\n    Object.keys(object).forEach(function (key) {\n      const value = object[key]\n      const isarray = opts.safe && Array.isArray(value)\n      const type = Object.prototype.toString.call(value)\n      const isbuffer = isBuffer(value)\n      const isobject = (\n        type === '[object Object]' ||\n        type === '[object Array]'\n      )\n\n      const newKey = prev\n        ? prev + delimiter + transformKey(key)\n        : transformKey(key)\n\n      if (!isarray && !isbuffer && isobject && Object.keys(value).length &&\n        (!opts.maxDepth || currentDepth < maxDepth)) {\n        return step(value, newKey, currentDepth + 1)\n      }\n\n      output[newKey] = value\n    })\n  }\n\n  step(target)\n\n  return output\n}\n\nfunction unflatten (target, opts) {\n  opts = opts || {}\n\n  const delimiter = opts.delimiter || '.'\n  const overwrite = opts.overwrite || false\n  const transformKey = opts.transformKey || keyIdentity\n  const result = {}\n\n  const isbuffer = isBuffer(target)\n  if (isbuffer || Object.prototype.toString.call(target) !== '[object Object]') {\n    return target\n  }\n\n  // safely ensure that the key is\n  // an integer.\n  function getkey (key) {\n    const parsedKey = Number(key)\n\n    return (\n      isNaN(parsedKey) ||\n      key.indexOf('.') !== -1 ||\n      opts.object\n    ) ? key\n      : parsedKey\n  }\n\n  function addKeys (keyPrefix, recipient, target) {\n    return Object.keys(target).reduce(function (result, key) {\n      result[keyPrefix + delimiter + key] = target[key]\n\n      return result\n    }, recipient)\n  }\n\n  function isEmpty (val) {\n    const type = Object.prototype.toString.call(val)\n    const isArray = type === '[object Array]'\n    const isObject = type === '[object Object]'\n\n    if (!val) {\n      return true\n    } else if (isArray) {\n      return !val.length\n    } else if (isObject) {\n      return !Object.keys(val).length\n    }\n  }\n\n  target = Object.keys(target).reduce(function (result, key) {\n    const type = Object.prototype.toString.call(target[key])\n    const isObject = (type === '[object Object]' || type === '[object Array]')\n    if (!isObject || isEmpty(target[key])) {\n      result[key] = target[key]\n      return result\n    } else {\n      return addKeys(\n        key,\n        result,\n        flatten(target[key], opts)\n      )\n    }\n  }, {})\n\n  Object.keys(target).forEach(function (key) {\n    const split = key.split(delimiter).map(transformKey)\n    let key1 = getkey(split.shift())\n    let key2 = getkey(split[0])\n    let recipient = result\n\n    while (key2 !== undefined) {\n      if (key1 === '__proto__') {\n        return\n      }\n\n      const type = Object.prototype.toString.call(recipient[key1])\n      const isobject = (\n        type === '[object Object]' ||\n        type === '[object Array]'\n      )\n\n      // do not write over falsey, non-undefined values if overwrite is false\n      if (!overwrite && !isobject && typeof recipient[key1] !== 'undefined') {\n        return\n      }\n\n      if ((overwrite && !isobject) || (!overwrite && recipient[key1] == null)) {\n        recipient[key1] = (\n          typeof key2 === 'number' &&\n          !opts.object ? [] : {}\n        )\n      }\n\n      recipient = recipient[key1]\n      if (split.length > 0) {\n        key1 = getkey(split.shift())\n        key2 = getkey(split[0])\n      }\n    }\n\n    // unflatten again for 'messy objects'\n    recipient[key1] = unflatten(target[key], opts)\n  })\n\n  return result\n}\n", "import Color from 'color';\nimport plugin from 'tailwindcss/plugin';\nimport forEach from 'lodash.foreach';\nimport flatten from 'flat';\n\nconst SCHEME = Symbol('color-scheme');\nconst emptyConfig: TwcConfig = {};\n\ntype NestedColors = { [SCHEME]?: 'light' | 'dark' } & MaybeNested<string, string>;\ntype FlatColors = { [SCHEME]?: 'light' | 'dark' } & Record<string, string>;\ntype TwcObjectConfig<ThemeName extends string> = Record<ThemeName, NestedColors>;\ntype TwcFunctionConfig<ThemeName extends string> = (scheme: {\n   light: typeof light;\n   dark: typeof dark;\n}) => TwcObjectConfig<ThemeName>;\n\ntype ResolvedVariants = Array<{ name: string; definition: string[] }>;\ntype ResolvedUtilities = { [selector: string]: Record<string, string> };\ntype ResolvedColors = {\n   [colorName: string]: ({\n      opacityValue,\n      opacityVariable,\n   }: {\n      opacityValue: string;\n      opacityVariable: string;\n   }) => string;\n};\n\nexport type TwcConfig<ThemeName extends string = string> =\n   | TwcObjectConfig<ThemeName>\n   | TwcFunctionConfig<ThemeName>;\n\nexport interface TwcOptions<ThemeName extends string = string> {\n   produceCssVariable?: (colorName: string) => string;\n   produceThemeClass?: (themeName: ThemeName) => string;\n   produceThemeVariant?: (themeName: ThemeName) => string;\n   defaultTheme?: NoInfer<ThemeName> | (string & {}); // \"| (string & {})\" avoids ts error in case the config is functional\n   strict?: boolean;\n}\n\n/**\n * Resolves the variants, utilities and colors to inject in the plugin\n * Library authors might use this function instead of the createThemes function\n */\nexport const resolveTwcConfig = <ThemeName extends string>(\n   config: TwcConfig<ThemeName> = emptyConfig,\n   {\n      produceCssVariable = defaultProduceCssVariable,\n      produceThemeClass = defaultProduceThemeClass,\n      produceThemeVariant = produceThemeClass,\n      defaultTheme,\n      strict = false,\n   }: TwcOptions<ThemeName> = {},\n) => {\n   const resolved: {\n      variants: ResolvedVariants;\n      utilities: ResolvedUtilities;\n      colors: ResolvedColors;\n   } = {\n      variants: [],\n      utilities: {},\n      colors: {},\n   };\n   const configObject = typeof config === 'function' ? config({ dark, light }) : config;\n   // @ts-ignore forEach types fail to assign themeName\n   forEach(configObject, (colors: NestedColors, themeName: ThemeName) => {\n      const themeClassName = produceThemeClass(themeName);\n      const themeVariant = produceThemeVariant(themeName);\n      const isDefault = themeName === defaultTheme;\n\n      const cssSelector = [\n         `.${themeClassName}`,\n         `[data-theme=\"${themeName}\"]`,\n         isDefault && ':root',\n      ]\n         .filter(Boolean)\n         .join(',');\n\n      const flatColors = flattenColors(colors);\n      // set the resolved.variants\n      resolved.variants.push({\n         name: themeVariant,\n         // tailwind will generate only the first matched definition\n         definition: [\n            `&.${themeClassName}`,\n            `:is(.${themeClassName} > &:not([data-theme]))`,\n            `:is(.${themeClassName} &:not(.${themeClassName} [data-theme]:not(.${themeClassName}) * ))`,\n            `:is(.${themeClassName}:not(:has([data-theme])) &:not([data-theme]))`, // See the browser support: https://caniuse.com/css-has\n            `&[data-theme='${themeName}']`,\n            `:is([data-theme='${themeName}'] > &:not([data-theme]))`,\n            `:is([data-theme='${themeName}'] &:not([data-theme='${themeName}'] [data-theme]:not([data-theme='${themeName}']) * ))`,\n            `:is([data-theme='${themeName}']:not(:has([data-theme])) &:not([data-theme]))`, // See the browser support: https://caniuse.com/css-has\n            ...(isDefault\n               ? [\n                    `&:root`,\n                    `:is(:root > &:not([data-theme]))`,\n                    `:is(:root &:not([data-theme] *):not([data-theme]))`,\n                 ]\n               : []),\n         ],\n      });\n\n      // set the color-scheme css property\n      resolved.utilities[cssSelector] = colors[SCHEME] ? { 'color-scheme': colors[SCHEME] } : {};\n\n      forEach(flatColors, (colorValue, colorName) => {\n         // this case was handled above\n         if ((colorName as any) === SCHEME) return;\n         const safeColorName = escapeChars(colorName, '/');\n         let [h, s, l, defaultAlphaValue]: HslaArray = [0, 0, 0, 1];\n         try {\n            [h, s, l, defaultAlphaValue] = toHslaArray(colorValue);\n         } catch (error: any) {\n            const message = `\\r\\nWarning - In theme \"${themeName}\" color \"${colorName}\". ${error.message}`;\n\n            if (strict) {\n               throw new Error(message);\n            }\n            return console.error(message);\n         }\n         const twcColorVariable = produceCssVariable(safeColorName);\n         const twcOpacityVariable = `${produceCssVariable(safeColorName)}-opacity`;\n         // add the css variable in \"@layer utilities\"\n         resolved.utilities[cssSelector]![twcColorVariable] = `${h} ${s}% ${l}%`;\n         // if an alpha value was provided in the color definition, store it in a css variable\n         if (typeof defaultAlphaValue === 'number') {\n            resolved.utilities[cssSelector]![twcOpacityVariable] = defaultAlphaValue.toFixed(2);\n         }\n         // set the dynamic color in tailwind config theme.colors\n         resolved.colors[colorName] = ({ opacityVariable, opacityValue }) => {\n            // if the opacity is set  with a slash (e.g. bg-primary/90), use the provided value\n            if (!isNaN(+opacityValue)) {\n               return `hsl(var(${twcColorVariable}) / ${opacityValue})`;\n            }\n            // if no opacityValue was provided (=it is not parsable to a number)\n            // the twcOpacityVariable (opacity defined in the color definition rgb(0, 0, 0, 0.5))\n            // should have the priority over the tw class based opacity(e.g. \"bg-opacity-90\")\n            // This is how tailwind behaves as for v3.2.4\n            if (opacityVariable) {\n               return `hsl(var(${twcColorVariable}) / var(${twcOpacityVariable}, var(${opacityVariable})))`;\n            }\n            return `hsl(var(${twcColorVariable}) / var(${twcOpacityVariable}, 1))`;\n         };\n      });\n   });\n\n   return resolved;\n};\n\nexport const createThemes = <ThemeName extends string>(\n   config: TwcConfig<ThemeName> = emptyConfig,\n   options: TwcOptions<ThemeName> = {},\n) => {\n   const resolved = resolveTwcConfig(config, options);\n\n   return plugin(\n      ({ addUtilities, addVariant }) => {\n         // add the css variables to \"@layer utilities\"\n         addUtilities(resolved.utilities);\n         // add the theme as variant e.g. \"theme-[name]:text-2xl\"\n         resolved.variants.forEach(({ name, definition }) => addVariant(name, definition));\n      },\n      // extend the colors config\n      {\n         theme: {\n            extend: {\n               // @ts-ignore tailwind types are broken\n               colors: resolved.colors,\n            },\n         },\n      },\n   );\n};\n\nfunction escapeChars(str: string, ...chars: string[]) {\n   let result = str;\n   for (let char of chars) {\n      const regexp = new RegExp(char, 'g');\n      result = str.replace(regexp, '\\\\' + char);\n   }\n   return result;\n}\n\nfunction flattenColors(colors: NestedColors) {\n   const flatColorsWithDEFAULT: FlatColors = flatten(colors, {\n      safe: true,\n      delimiter: '-',\n   });\n\n   return Object.entries(flatColorsWithDEFAULT).reduce((acc, [key, value]) => {\n      acc[key.replace(/\\-DEFAULT$/, '')] = value;\n      return acc;\n   }, {} as FlatColors);\n}\n\nfunction toHslaArray(colorValue?: string) {\n   return Color(colorValue).hsl().round(1).array() as HslaArray;\n}\n\nfunction defaultProduceCssVariable(themeName: string) {\n   return `--twc-${themeName}`;\n}\n\nfunction defaultProduceThemeClass(themeName: string) {\n   return themeName;\n}\n\nfunction dark(colors: NestedColors): { [SCHEME]: 'dark' } & MaybeNested<string, string> {\n   return {\n      ...colors,\n      [SCHEME]: 'dark',\n   };\n}\n\nfunction light(colors: NestedColors): { [SCHEME]: 'light' } & MaybeNested<string, string> {\n   return {\n      ...colors,\n      [SCHEME]: 'light',\n   };\n}\n\ninterface MaybeNested<K extends keyof any = string, V extends string = string> {\n   [key: string]: V | MaybeNested<K, V>;\n}\n\ntype NoInfer<T> = [T][T extends any ? 0 : never];\n\ntype HslaArray = [number, number, number, number | undefined];\n", "const { createThemes } = require('tw-colors');\n\nmodule.exports = {\n  content: [\n    './app/views/**/*.html.erb',\n    './app/helpers/**/*.rb',\n    './app/assets/stylesheets/**/*.css',\n    './app/javascript/**/*[.tsx|.ts|.js|.jsx]',\n    './node_modules/tailwind-datepicker-react/dist/**/*.js',\n  ],\n  future: {\n    hoverOnlyWhenSupported: true,\n  },\n  theme: {\n    screens: {\n      sm: '376px',\n      md: '769px',\n      lg: '1024px',\n      mobile: { raw: '(max-width: 768px)' },\n      tablet: { raw: '(min-width: 769px) and (max-width: 1023px)' },\n      desktop: { raw: '(min-width: 1024px)' },\n    },\n    fontFamily: {\n      sans: 'inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"',\n    },\n\n    extend: {\n      colors: {\n        background: {\n          icon: '#C3C3D2',\n          light: '#F2F3F5',\n          white: '#FFFFFF',\n        },\n        typography: {\n          black: '#2B2B31',\n          dark: '#5C5C67',\n          white: '#FFFFFF',\n        },\n        stroke: {\n          'grey-300': '#CED2D6',\n          'grey-200': '#DBDFE4',\n          'grey-100': '#E4E7EB',\n        },\n        current: 'currentColor',\n      },\n      fontSize: {\n        'header-lg': ['2.25rem', {\n          lineHeight: '2.25rem',\n          letterSpacing: '-3%',\n          fontWeight: '600',\n        }],\n        'header-md': ['1.625rem', {\n          lineHeight: '1.875rem',\n          fontWeight: '600',\n        }],\n        'header-sm': ['1.25rem', {\n          lineHeight: '1.5rem',\n          fontWeight: '600',\n        }],\n        'header-xs': ['1.125rem', {\n          lineHeight: '1.25rem',\n          fontWeight: '600',\n        }],\n        'title-semibold': ['0.9375rem', {\n          lineHeight: '1.25rem',\n          fontWeight: '600',\n        }],\n        'title-medium': ['0.9375rem', {\n          lineHeight: '1.25rem',\n          fontWeight: '500',\n        }],\n        'text-lg-bold': ['0.875rem', {\n          lineHeight: '1.375rem',\n          fontWeight: '700',\n        }],\n        'text-lg-semibold': ['0.875rem', {\n          lineHeight: '1.375rem',\n          fontWeight: '600',\n        }],\n        'text-lg-medium': ['0.875rem', {\n          lineHeight: '1.375rem',\n          fontWeight: '500',\n        }],\n        'text-md-semibold': ['0.75rem', {\n          lineHeight: '1.375rem',\n          fontWeight: '600',\n        }],\n        'text-md-medium': ['0.75rem', {\n          lineHeight: '1.375rem',\n          fontWeight: '500',\n        }],\n        'text-sm-semibold': ['0.625rem', {\n          lineHeight: '0.75rem',\n          fontWeight: '600',\n        }],\n        'text-sm-medium': ['0.625rem', {\n          lineHeight: '0.75rem',\n          fontWeight: '500',\n        }],\n      },\n      height: {\n        '100svh': '100svh',\n      },\n      maxWidth: {\n        '1/2': '50%',\n        '2/3': '66%',\n        '3/4': '75%',\n        100: '100px',\n      },\n      minWidth: {\n        90: '90px',\n      },\n      minHeight: {\n        headerMobile: '50px',\n        headerTablet: '80px',\n        headerDesktop: '96px',\n        headerDesktopWithSubheader: '128px',\n      },\n      transitionProperty: {\n        height: 'height',\n      },\n      animation: {\n        'spin-slow': 'spin 3s linear infinite',\n      },\n    },\n  },\n  plugins: [\n    createThemes({\n      violet: {\n        main: '#705ACB',\n        secondary: '#2B2B31',\n        additional: '#BCBCD2',\n        'light-300': '#E1DDEE',\n        'light-200': '#F1EFFA',\n        'light-100': '#FCFBFF',\n        stroke: '#D5CEEA',\n        hover: '#674FC3',\n        interactions: {\n          'success-text': '#167B6E',\n          'success-bg': '#E8F3F2',\n          'error-text': '#CF2C30',\n          'error-bg': '#FBECEC',\n          'input-error': '#CF2C30',\n        },\n      },\n      red: {\n        main: '#D43538',\n        secondary: '#2B2B31',\n        additional: '#BCBCD2',\n        'light-300': '#EED8D8',\n        'light-200': '#FBECEC',\n        'light-100': '#FCF7F7',\n        stroke: '#F7D9D9',\n        hover: '#C22529',\n        interactions: {\n          'success-text': '#167B6E',\n          'success-bg': '#E8F3F2',\n          'error-text': '#663c00',\n          'error-bg': '#fff4e5',\n          'input-error': '#B75E1F',\n        },\n      },\n      green: {\n        main: '#178173',\n        secondary: '#2B2B31',\n        additional: '#BCBCD2',\n        'light-300': '#deeedd',\n        'light-200': '#ecfdeb',\n        'light-100': '#f7fff7',\n        stroke: '#E8F3F2',\n        hover: '#197c6f',\n        interactions: {\n          'success-text': '#167B6E',\n          'success-bg': '#E8F3F2',\n          'error-text': '#CF2C30',\n          'error-bg': '#FBECEC',\n          'input-error': '#CF2C30',\n        },\n      },\n    }),\n  ],\n};\n", "/**\n * @param {string} string    The string to parse\n * @returns {Array<number>}  Returns an energetic array.\n */\nfunction parsePart(string) {\n  let res = [];\n  let m;\n\n  for (let str of string.split(\",\").map((str) => str.trim())) {\n    // just a number\n    if (/^-?\\d+$/.test(str)) {\n      res.push(parseInt(str, 10));\n    } else if (\n      (m = str.match(/^(-?\\d+)(-|\\.\\.\\.?|\\u2025|\\u2026|\\u22EF)(-?\\d+)$/))\n    ) {\n      // 1-5 or 1..5 (equivalent) or 1...5 (doesn't include 5)\n      let [_, lhs, sep, rhs] = m;\n\n      if (lhs && rhs) {\n        lhs = parseInt(lhs);\n        rhs = parseInt(rhs);\n        const incr = lhs < rhs ? 1 : -1;\n\n        // Make it inclusive by moving the right 'stop-point' away by one.\n        if (sep === \"-\" || sep === \"..\" || sep === \"\\u2025\") rhs += incr;\n\n        for (let i = lhs; i !== rhs; i += incr) res.push(i);\n      }\n    }\n  }\n\n  return res;\n}\n\nexports.default = parsePart;\nmodule.exports = parsePart;\n", "module.exports = {\n\ttrueFunc: function trueFunc(){\n\t\treturn true;\n\t},\n\tfalseFunc: function falseFunc(){\n\t\treturn false;\n\t}\n};", "// http://www.w3.org/TR/CSS21/grammar.html\n// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027\nvar COMMENT_REGEX = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n\nvar NEWLINE_REGEX = /\\n/g;\nvar WHITESPACE_REGEX = /^\\s*/;\n\n// declaration\nvar PROPERTY_REGEX = /^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/;\nvar COLON_REGEX = /^:\\s*/;\nvar VALUE_REGEX = /^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^)]*?\\)|[^};])+)/;\nvar SEMICOLON_REGEX = /^[;\\s]*/;\n\n// https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String/Trim#Polyfill\nvar TRIM_REGEX = /^\\s+|\\s+$/g;\n\n// strings\nvar NEWLINE = '\\n';\nvar FORWARD_SLASH = '/';\nvar ASTERISK = '*';\nvar EMPTY_STRING = '';\n\n// types\nvar TYPE_COMMENT = 'comment';\nvar TYPE_DECLARATION = 'declaration';\n\n/**\n * @param {String} style\n * @param {Object} [options]\n * @return {Object[]}\n * @throws {TypeError}\n * @throws {Error}\n */\nexport default function (style, options) {\n  if (typeof style !== 'string') {\n    throw new TypeError('First argument must be a string');\n  }\n\n  if (!style) return [];\n\n  options = options || {};\n\n  /**\n   * Positional.\n   */\n  var lineno = 1;\n  var column = 1;\n\n  /**\n   * Update lineno and column based on `str`.\n   *\n   * @param {String} str\n   */\n  function updatePosition(str) {\n    var lines = str.match(NEWLINE_REGEX);\n    if (lines) lineno += lines.length;\n    var i = str.lastIndexOf(NEWLINE);\n    column = ~i ? str.length - i : column + str.length;\n  }\n\n  /**\n   * Mark position and patch `node.position`.\n   *\n   * @return {Function}\n   */\n  function position() {\n    var start = { line: lineno, column: column };\n    return function (node) {\n      node.position = new Position(start);\n      whitespace();\n      return node;\n    };\n  }\n\n  /**\n   * Store position information for a node.\n   *\n   * @constructor\n   * @property {Object} start\n   * @property {Object} end\n   * @property {undefined|String} source\n   */\n  function Position(start) {\n    this.start = start;\n    this.end = { line: lineno, column: column };\n    this.source = options.source;\n  }\n\n  /**\n   * Non-enumerable source string.\n   */\n  Position.prototype.content = style;\n\n  var errorsList = [];\n\n  /**\n   * Error `msg`.\n   *\n   * @param {String} msg\n   * @throws {Error}\n   */\n  function error(msg) {\n    var err = new Error(\n      options.source + ':' + lineno + ':' + column + ': ' + msg\n    );\n    err.reason = msg;\n    err.filename = options.source;\n    err.line = lineno;\n    err.column = column;\n    err.source = style;\n\n    if (options.silent) {\n      errorsList.push(err);\n    } else {\n      throw err;\n    }\n  }\n\n  /**\n   * Match `re` and return captures.\n   *\n   * @param {RegExp} re\n   * @return {undefined|Array}\n   */\n  function match(re) {\n    var m = re.exec(style);\n    if (!m) return;\n    var str = m[0];\n    updatePosition(str);\n    style = style.slice(str.length);\n    return m;\n  }\n\n  /**\n   * Parse whitespace.\n   */\n  function whitespace() {\n    match(WHITESPACE_REGEX);\n  }\n\n  /**\n   * Parse comments.\n   *\n   * @param {Object[]} [rules]\n   * @return {Object[]}\n   */\n  function comments(rules) {\n    var c;\n    rules = rules || [];\n    while ((c = comment())) {\n      if (c !== false) {\n        rules.push(c);\n      }\n    }\n    return rules;\n  }\n\n  /**\n   * Parse comment.\n   *\n   * @return {Object}\n   * @throws {Error}\n   */\n  function comment() {\n    var pos = position();\n    if (FORWARD_SLASH != style.charAt(0) || ASTERISK != style.charAt(1)) return;\n\n    var i = 2;\n    while (\n      EMPTY_STRING != style.charAt(i) &&\n      (ASTERISK != style.charAt(i) || FORWARD_SLASH != style.charAt(i + 1))\n    ) {\n      ++i;\n    }\n    i += 2;\n\n    if (EMPTY_STRING === style.charAt(i - 1)) {\n      return error('End of comment missing');\n    }\n\n    var str = style.slice(2, i - 2);\n    column += 2;\n    updatePosition(str);\n    style = style.slice(i);\n    column += 2;\n\n    return pos({\n      type: TYPE_COMMENT,\n      comment: str\n    });\n  }\n\n  /**\n   * Parse declaration.\n   *\n   * @return {Object}\n   * @throws {Error}\n   */\n  function declaration() {\n    var pos = position();\n\n    // prop\n    var prop = match(PROPERTY_REGEX);\n    if (!prop) return;\n    comment();\n\n    // :\n    if (!match(COLON_REGEX)) return error(\"property missing ':'\");\n\n    // val\n    var val = match(VALUE_REGEX);\n\n    var ret = pos({\n      type: TYPE_DECLARATION,\n      property: trim(prop[0].replace(COMMENT_REGEX, EMPTY_STRING)),\n      value: val\n        ? trim(val[0].replace(COMMENT_REGEX, EMPTY_STRING))\n        : EMPTY_STRING\n    });\n\n    // ;\n    match(SEMICOLON_REGEX);\n\n    return ret;\n  }\n\n  /**\n   * Parse declarations.\n   *\n   * @return {Object[]}\n   */\n  function declarations() {\n    var decls = [];\n\n    comments(decls);\n\n    // declarations\n    var decl;\n    while ((decl = declaration())) {\n      if (decl !== false) {\n        decls.push(decl);\n        comments(decls);\n      }\n    }\n\n    return decls;\n  }\n\n  whitespace();\n  return declarations();\n}\n\n/**\n * Trim `str`.\n *\n * @param {String} str\n * @return {String}\n */\nfunction trim(str) {\n  return str ? str.replace(TRIM_REGEX, EMPTY_STRING) : EMPTY_STRING;\n}\n", "import type { Declaration } from 'inline-style-parser';\nimport parse from 'inline-style-parser';\n\nexport { Declaration };\n\nexport interface StyleObject {\n  [name: string]: string;\n}\n\ntype Iterator = (\n  property: string,\n  value: string,\n  declaration: Declaration,\n) => void;\n\n/**\n * Parses inline style to object.\n *\n * @param style - Inline style.\n * @param iterator - Iterator.\n * @returns - Style object or null.\n *\n * @example Parsing inline style to object:\n *\n * ```js\n * import parse from 'style-to-object';\n * parse('line-height: 42;'); // { 'line-height': '42' }\n * ```\n */\nexport default function StyleToObject(\n  style: string,\n  iterator?: Iterator,\n): StyleObject | null {\n  let styleObject: StyleObject | null = null;\n\n  if (!style || typeof style !== 'string') {\n    return styleObject;\n  }\n\n  const declarations = parse(style);\n  const hasIterator = typeof iterator === 'function';\n\n  declarations.forEach((declaration) => {\n    if (declaration.type !== 'declaration') {\n      return;\n    }\n\n    const { property, value } = declaration;\n\n    if (hasIterator) {\n      iterator(property, value, declaration);\n    } else if (value) {\n      styleObject = styleObject || {};\n      styleObject[property] = value;\n    }\n  });\n\n  return styleObject;\n}\n", "const CUSTOM_PROPERTY_REGEX = /^--[a-zA-Z0-9_-]+$/;\nconst HYPHEN_REGEX = /-([a-z])/g;\nconst NO_HYPHEN_REGEX = /^[^-]+$/;\nconst VENDOR_PREFIX_REGEX = /^-(webkit|moz|ms|o|khtml)-/;\nconst MS_VENDOR_PREFIX_REGEX = /^-(ms)-/;\n\n/**\n * Checks whether to skip camelCase.\n */\nconst skipCamelCase = (property: string) =>\n  !property ||\n  NO_HYPHEN_REGEX.test(property) ||\n  CUSTOM_PROPERTY_REGEX.test(property);\n\n/**\n * Replacer that capitalizes first character.\n */\nconst capitalize = (match: string, character: string) =>\n  character.toUpperCase();\n\n/**\n * Replacer that removes beginning hyphen of vendor prefix property.\n */\nconst trimHyphen = (match: string, prefix: string) => `${prefix}-`;\n\n/**\n * CamelCase options.\n */\nexport interface CamelCaseOptions {\n  reactCompat?: boolean;\n}\n\n/**\n * CamelCases a CSS property.\n */\nexport const camelCase = (property: string, options: CamelCaseOptions = {}) => {\n  if (skipCamelCase(property)) {\n    return property;\n  }\n\n  property = property.toLowerCase();\n\n  if (options.reactCompat) {\n    // `-ms` vendor prefix should not be capitalized\n    property = property.replace(MS_VENDOR_PREFIX_REGEX, trimHyphen);\n  } else {\n    // for non-React, remove first hyphen so vendor prefix is not capitalized\n    property = property.replace(VENDOR_PREFIX_REGEX, trimHyphen);\n  }\n\n  return property.replace(HYPHEN_REGEX, capitalize);\n};\n", "import StyleToObject from 'style-to-object';\n\nimport { camelCase, CamelCaseOptions } from './utilities';\n\ntype StyleObject = Record<string, string>;\n\ninterface StyleToJSOptions extends CamelCaseOptions {}\n\n/**\n * Parses CSS inline style to JavaScript object (camelCased).\n */\nfunction StyleToJS(style: string, options?: StyleToJSOptions): StyleObject {\n  const output: StyleObject = {};\n\n  if (!style || typeof style !== 'string') {\n    return output;\n  }\n\n  StyleToObject(style, (property, value) => {\n    // skip CSS comment\n    if (property && value) {\n      output[camelCase(property, options)] = value;\n    }\n  });\n\n  return output;\n}\n\nStyleToJS.default = StyleToJS;\n\nexport = StyleToJS;\n", "'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) { /**/ }\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\n// If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\nvar setProperty = function setProperty(target, options) {\n\tif (defineProperty && options.name === '__proto__') {\n\t\tdefineProperty(target, options.name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\t\t\tvalue: options.newValue,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\ttarget[options.name] = options.newValue;\n\t}\n};\n\n// Return undefined instead of __proto__ if '__proto__' is not an own property\nvar getProperty = function getProperty(obj, name) {\n\tif (name === '__proto__') {\n\t\tif (!hasOwn.call(obj, name)) {\n\t\t\treturn void 0;\n\t\t} else if (gOPD) {\n\t\t\t// In early versions of node, obj['__proto__'] is buggy when obj has\n\t\t\t// __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n\t\t\treturn gOPD(obj, name).value;\n\t\t}\n\t}\n\n\treturn obj[name];\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone;\n\tvar target = arguments[0];\n\tvar i = 1;\n\tvar length = arguments.length;\n\tvar deep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t}\n\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = getProperty(target, name);\n\t\t\t\tcopy = getProperty(options, name);\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: extend(deep, clone, copy) });\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\tsetProperty(target, { name: name, newValue: copy });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n", "/**\n * *** This styling is an extra step which is likely not required. ***\n * https://github.com/w3c/clipboard-apis/blob/master/explainer.adoc#writing-to-the-clipboard\n * \n * Why is it here? To ensure:\n * \n * 1. the element is able to have focus and selection.\n * 2. if element was to flash render it has minimal visual impact.\n * 3. less flakyness with selection and copying which **might** occur if\n *     the textarea element is not visible.\n *\n *   The likelihood is the element won't even render, not even a flash,\n *   so some of these are just precautions. However in IE the element\n *   is visible whilst the popup box asking the user for permission for\n *   the web page to copy to the clipboard.\n *  \n *   Place in top-left corner of screen regardless of scroll position.\n *\n * @typedef CopyTextToClipboard\n * @property {(text: string, method?: (isCopy: boolean) => void) => void} void\n * @returns {void}\n * \n * @param {string} text \n * @param {CopyTextToClipboard} cb \n */\nexport default function copyTextToClipboard(text, cb) {\n  if (typeof document === \"undefined\") return;\n  const el = document.createElement('textarea');\n  el.value = text;\n  el.setAttribute('readonly', '');\n  el.style = {\n    position: 'absolute',\n    left: '-9999px',\n  }\n  document.body.appendChild(el);\n  const selected = document.getSelection().rangeCount > 0 ? document.getSelection().getRangeAt(0) : false;\n  el.select();\n  let isCopy = false;\n  try {\n    const successful = document.execCommand('copy');\n    isCopy = !!successful;\n  } catch (err) {\n    isCopy = false;\n  }\n  document.body.removeChild(el);\n  if (selected && document.getSelection) {\n    document.getSelection().removeAllRanges();\n    document.getSelection().addRange(selected);\n  }\n  cb && cb(isCopy);\n};\n", "export { default as Headers } from './Headers'\n\nexport { headersToString } from './transformers/headersToString'\nexport { headersToList } from './transformers/headersToList'\nexport { headersToObject } from './transformers/headersToObject'\nexport { stringToHeaders } from './transformers/stringToHeaders'\nexport { listToHeaders } from './transformers/listToHeaders'\nexport { objectToHeaders } from './transformers/objectToHeaders'\n\nexport { reduceHeadersObject } from './transformers/reduceHeadersObject'\nexport { flattenHeadersList } from './transformers/flattenHeadersList'\nexport { flattenHeadersObject } from './transformers/flattenHeadersObject'\n\n/* Typings */\nexport {\n  HeadersList,\n  FlatHeadersList,\n  HeadersObject,\n  FlatHeadersObject,\n} from './glossary'\n", "const HEADERS_INVALID_CHARACTERS = /[^a-z0-9\\-#$%&'*+.^_`|~]/i\n\nexport function normalizeHeaderName(name: string): string {\n  if (typeof name !== 'string') {\n    name = String(name)\n  }\n\n  if (HEADERS_INVALID_CHARACTERS.test(name) || name.trim() === '') {\n    throw new TypeError('Invalid character in header field name')\n  }\n\n  return name.toLowerCase()\n}\n", "export function normalizeHeaderValue(value: string): string {\n  if (typeof value !== 'string') {\n    value = String(value)\n  }\n\n  return value\n}\n", "import { HeadersList, HeadersObject } from './glossary'\nimport { normalizeHeaderName } from './utils/normalizeHeaderName'\nimport { normalizeHeaderValue } from './utils/normalizeHeaderValue'\n\nconst NORMALIZED_HEADERS: unique symbol = Symbol('normalizedHeaders')\nconst RAW_HEADER_NAMES: unique symbol = Symbol('rawHeaderNames')\n\nexport default class HeadersPolyfill {\n  // Normalized header {\"name\":\"a, b\"} storage.\n  private [NORMALIZED_HEADERS]: Record<string, string> = {}\n\n  // Keeps the mapping between the raw header name\n  // and the normalized header name to ease the lookup.\n  private [RAW_HEADER_NAMES]: Map<string, string> = new Map()\n\n  constructor(init?: HeadersInit | HeadersObject | HeadersList) {\n    /**\n     * @note Cannot check if the `init` is an instance of the `Headers`\n     * because that class is only defined in the browser.\n     */\n    if (\n      ['Headers', 'HeadersPolyfill'].includes(init?.constructor.name) ||\n      init instanceof HeadersPolyfill\n    ) {\n      const initialHeaders = init as Headers\n      initialHeaders.forEach((value, name) => {\n        this.append(name, value)\n      }, this)\n    } else if (Array.isArray(init)) {\n      init.forEach(([name, value]) => {\n        this.append(name, Array.isArray(value) ? value.join(', ') : value)\n      })\n    } else if (init) {\n      Object.getOwnPropertyNames(init).forEach((name) => {\n        const value = init[name]\n        this.append(name, Array.isArray(value) ? value.join(', ') : value)\n      })\n    }\n  }\n\n  [Symbol.iterator]() {\n    return this.entries()\n  }\n\n  *keys(): IterableIterator<string> {\n    for (const name of Object.keys(this[NORMALIZED_HEADERS])) {\n      yield name\n    }\n  }\n\n  *values(): IterableIterator<string> {\n    for (const value of Object.values(this[NORMALIZED_HEADERS])) {\n      yield value\n    }\n  }\n\n  *entries(): IterableIterator<[string, string]> {\n    for (const name of Object.keys(this[NORMALIZED_HEADERS])) {\n      yield [name, this.get(name)]\n    }\n  }\n\n  /**\n   * Returns a `ByteString` sequence of all the values of a header with a given name.\n   */\n  get(name: string): string | null {\n    return this[NORMALIZED_HEADERS][normalizeHeaderName(name)] || null\n  }\n\n  /**\n   * Sets a new value for an existing header inside a `Headers` object, or adds the header if it does not already exist.\n   */\n  set(name: string, value: string): void {\n    const normalizedName = normalizeHeaderName(name)\n    this[NORMALIZED_HEADERS][normalizedName] = normalizeHeaderValue(value)\n    this[RAW_HEADER_NAMES].set(normalizedName, name)\n  }\n\n  /**\n   * Appends a new value onto an existing header inside a `Headers` object, or adds the header if it does not already exist.\n   */\n  append(name: string, value: string): void {\n    const normalizedName = normalizeHeaderName(name)\n    let resolvedValue = this.has(normalizedName)\n      ? `${this.get(normalizedName)}, ${value}`\n      : value\n\n    this.set(name, resolvedValue)\n  }\n\n  /**\n   * Deletes a header from the `Headers` object.\n   */\n  delete(name: string): void {\n    if (!this.has(name)) {\n      return\n    }\n\n    const normalizedName = normalizeHeaderName(name)\n    delete this[NORMALIZED_HEADERS][normalizedName]\n    this[RAW_HEADER_NAMES].delete(normalizedName)\n  }\n\n  /**\n   * Returns the object of all the normalized headers.\n   */\n  all(): Record<string, string> {\n    return this[NORMALIZED_HEADERS]\n  }\n\n  /**\n   * Returns the object of all the raw headers.\n   */\n  raw(): Record<string, string> {\n    const rawHeaders: Record<string, string> = {}\n\n    for (const [name, value] of this.entries()) {\n      rawHeaders[this[RAW_HEADER_NAMES].get(name)] = value\n    }\n\n    return rawHeaders\n  }\n\n  /**\n   * Returns a boolean stating whether a `Headers` object contains a certain header.\n   */\n  has(name: string): boolean {\n    return this[NORMALIZED_HEADERS].hasOwnProperty(normalizeHeaderName(name))\n  }\n\n  /**\n   * Traverses the `Headers` object,\n   * calling the given callback for each header.\n   */\n  forEach<ThisArg = this>(\n    callback: (\n      this: ThisArg,\n      value: string,\n      name: string,\n      parent: this\n    ) => void,\n    thisArg?: ThisArg\n  ) {\n    for (const name in this[NORMALIZED_HEADERS]) {\n      if (this[NORMALIZED_HEADERS].hasOwnProperty(name)) {\n        callback.call(thisArg, this[NORMALIZED_HEADERS][name], name, this)\n      }\n    }\n  }\n}\n", "import { HeadersList } from '../glossary'\n\nexport function headersToList(headers: Headers): HeadersList {\n  const headersList: HeadersList = []\n\n  headers.forEach((value, name) => {\n    const resolvedValue = value.includes(',')\n      ? value.split(',').map((value) => value.trim())\n      : value\n\n    headersList.push([name, resolvedValue])\n  })\n\n  return headersList\n}\n", "import { headersToList } from './headersToList'\n\n/**\n * Converts a given `Headers` instance to its string representation.\n */\nexport function headersToString(headers: Headers): string {\n  const list = headersToList(headers)\n  const lines = list.map(([name, value]) => {\n    const values = ([] as string[]).concat(value)\n    return `${name}: ${values.join(', ')}`\n  })\n\n  return lines.join('\\r\\n')\n}\n", "import { HeadersObject } from '../glossary'\n\n// List of headers that cannot have multiple values,\n// while potentially having a comma in their single value.\nconst singleValueHeaders = ['user-agent']\n\n/**\n * Converts a given `Headers` instance into a plain object.\n * Respects headers with multiple values.\n */\nexport function headersToObject(headers: Headers): HeadersObject {\n  const headersObject: HeadersObject = {}\n\n  headers.forEach((value, name) => {\n    const isMultiValue =\n      !singleValueHeaders.includes(name.toLowerCase()) && value.includes(',')\n    headersObject[name] = isMultiValue\n      ? value.split(',').map((s) => s.trim())\n      : value\n  })\n\n  return headersObject\n}\n", "import HeadersPolyfill from '../Headers'\n\n/**\n * Converts a string representation of headers (i.e. from XMLHttpRequest)\n * to a new `Headers` instance.\n */\nexport function stringToHeaders(str: string): HeadersPolyfill {\n  const lines = str.trim().split(/[\\r\\n]+/)\n\n  return lines.reduce((headers, line) => {\n    if (line.trim() === '') {\n      return headers\n    }\n\n    const parts = line.split(': ')\n    const name = parts.shift()\n    const value = parts.join(': ')\n    headers.append(name, value)\n\n    return headers\n  }, new HeadersPolyfill())\n}\n", "import HeadersPolyfill from '../Headers'\nimport { HeadersList } from '../glossary'\n\nexport function listToHeaders(list: HeadersList): HeadersPolyfill {\n  const headers = new HeadersPolyfill()\n\n  list.forEach(([name, value]) => {\n    const values = ([] as string[]).concat(value)\n\n    values.forEach((value) => {\n      headers.append(name, value)\n    })\n  })\n\n  return headers\n}\n", "import { HeadersObject } from '../glossary'\n\n/**\n * Reduces given headers object instnace.\n */\nexport function reduceHeadersObject<R>(\n  headers: HeadersObject,\n  reducer: (headers: R, name: string, value: string | string[]) => R,\n  initialState: R\n): R {\n  return Object.keys(headers).reduce<R>((nextHeaders, name) => {\n    return reducer(nextHeaders, name, headers[name])\n  }, initialState)\n}\n", "import HeadersPolyfill from '../Headers'\nimport { reduceHeadersObject } from './reduceHeadersObject'\n\n/**\n * Converts a given headers object to a new `Headers` instance.\n */\nexport function objectToHeaders(\n  headersObject: Record<string, string | string[] | undefined>\n): HeadersPolyfill {\n  return reduceHeadersObject(\n    headersObject,\n    (headers, name, value) => {\n      const values = ([] as string[]).concat(value).filter(Boolean)\n\n      values.forEach((value) => {\n        headers.append(name, value)\n      })\n\n      return headers\n    },\n    new HeadersPolyfill()\n  )\n}\n", "import { HeadersList, FlatHeadersList } from '../glossary'\n\nexport function flattenHeadersList(list: HeadersList): FlatHeadersList {\n  return list.map(([name, values]) => {\n    return [name, ([] as string[]).concat(values).join(', ')]\n  })\n}\n", "import { HeadersObject, FlatHeadersObject } from '../glossary'\nimport { reduceHeadersObject } from './reduceHeadersObject'\n\nexport function flattenHeadersObject(\n  headersObject: HeadersObject\n): FlatHeadersObject {\n  return reduceHeadersObject<FlatHeadersObject>(\n    headersObject,\n    (headers, name, value) => {\n      headers[name] = ([] as string[]).concat(value).join(', ')\n      return headers\n    },\n    {}\n  )\n}\n", "/*!\n * cookie\n * Copyright(c) 2012-2014 Roman Shtylman\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nexports.parse = parse;\nexports.serialize = serialize;\n\n/**\n * Module variables.\n * @private\n */\n\nvar decode = decodeURIComponent;\nvar encode = encodeURIComponent;\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar   = VCHAR / obs-text\n * obs-text      = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * Parse a cookie header.\n *\n * Parse the given cookie header string into an object\n * The object has the various cookies as keys(names) => values\n *\n * @param {string} str\n * @param {object} [options]\n * @return {object}\n * @public\n */\n\nfunction parse(str, options) {\n  if (typeof str !== 'string') {\n    throw new TypeError('argument str must be a string');\n  }\n\n  var obj = {}\n  var opt = options || {};\n  var pairs = str.split(';')\n  var dec = opt.decode || decode;\n\n  for (var i = 0; i < pairs.length; i++) {\n    var pair = pairs[i];\n    var index = pair.indexOf('=')\n\n    // skip things that don't look like key=value\n    if (index < 0) {\n      continue;\n    }\n\n    var key = pair.substring(0, index).trim()\n\n    // only assign once\n    if (undefined == obj[key]) {\n      var val = pair.substring(index + 1, pair.length).trim()\n\n      // quoted values\n      if (val[0] === '\"') {\n        val = val.slice(1, -1)\n      }\n\n      obj[key] = tryDecode(val, dec);\n    }\n  }\n\n  return obj;\n}\n\n/**\n * Serialize data into a cookie header.\n *\n * Serialize the a name value pair into a cookie string suitable for\n * http headers. An optional options object specified cookie parameters.\n *\n * serialize('foo', 'bar', { httpOnly: true })\n *   => \"foo=bar; httpOnly\"\n *\n * @param {string} name\n * @param {string} val\n * @param {object} [options]\n * @return {string}\n * @public\n */\n\nfunction serialize(name, val, options) {\n  var opt = options || {};\n  var enc = opt.encode || encode;\n\n  if (typeof enc !== 'function') {\n    throw new TypeError('option encode is invalid');\n  }\n\n  if (!fieldContentRegExp.test(name)) {\n    throw new TypeError('argument name is invalid');\n  }\n\n  var value = enc(val);\n\n  if (value && !fieldContentRegExp.test(value)) {\n    throw new TypeError('argument val is invalid');\n  }\n\n  var str = name + '=' + value;\n\n  if (null != opt.maxAge) {\n    var maxAge = opt.maxAge - 0;\n\n    if (isNaN(maxAge) || !isFinite(maxAge)) {\n      throw new TypeError('option maxAge is invalid')\n    }\n\n    str += '; Max-Age=' + Math.floor(maxAge);\n  }\n\n  if (opt.domain) {\n    if (!fieldContentRegExp.test(opt.domain)) {\n      throw new TypeError('option domain is invalid');\n    }\n\n    str += '; Domain=' + opt.domain;\n  }\n\n  if (opt.path) {\n    if (!fieldContentRegExp.test(opt.path)) {\n      throw new TypeError('option path is invalid');\n    }\n\n    str += '; Path=' + opt.path;\n  }\n\n  if (opt.expires) {\n    if (typeof opt.expires.toUTCString !== 'function') {\n      throw new TypeError('option expires is invalid');\n    }\n\n    str += '; Expires=' + opt.expires.toUTCString();\n  }\n\n  if (opt.httpOnly) {\n    str += '; HttpOnly';\n  }\n\n  if (opt.secure) {\n    str += '; Secure';\n  }\n\n  if (opt.sameSite) {\n    var sameSite = typeof opt.sameSite === 'string'\n      ? opt.sameSite.toLowerCase() : opt.sameSite;\n\n    switch (sameSite) {\n      case true:\n        str += '; SameSite=Strict';\n        break;\n      case 'lax':\n        str += '; SameSite=Lax';\n        break;\n      case 'strict':\n        str += '; SameSite=Strict';\n        break;\n      case 'none':\n        str += '; SameSite=None';\n        break;\n      default:\n        throw new TypeError('option sameSite is invalid');\n    }\n  }\n\n  return str;\n}\n\n/**\n * Try decoding a string using a decoding function.\n *\n * @param {string} str\n * @param {function} decode\n * @private\n */\n\nfunction tryDecode(str, decode) {\n  try {\n    return decode(str);\n  } catch (e) {\n    return str;\n  }\n}\n", "(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n  typeof define === 'function' && define.amd ? define(['exports'], factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.IsNodeProcess = {}));\n}(this, (function (exports) { 'use strict';\n\n  /**\r\n   * Determines if the current process is a Node.js process.\r\n   */\r\n  function isNodeProcess() {\r\n      if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\r\n          return true;\r\n      }\r\n      return !!(typeof process !== 'undefined' &&\r\n          process.versions &&\r\n          process.versions.node);\r\n  }\n\n  exports.isNodeProcess = isNodeProcess;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n", "\"use strict\";\n\n// ref: https://github.com/tc39/proposal-global\nvar getGlobal = function () {\n\t// the only reliable means to get the global object is\n\t// `Function('return this')()`\n\t// However, this causes CSP violations in Chrome apps.\n\tif (typeof self !== 'undefined') { return self; }\n\tif (typeof window !== 'undefined') { return window; }\n\tif (typeof global !== 'undefined') { return global; }\n\tthrow new Error('unable to locate global object');\n}\n\nvar globalObject = getGlobal();\n\nmodule.exports = exports = globalObject.fetch;\n\n// Needed for TypeScript and Webpack.\nif (globalObject.fetch) {\n\texports.default = globalObject.fetch.bind(globalObject);\n}\n\nexports.Headers = globalObject.Headers;\nexports.Request = globalObject.Request;\nexports.Response = globalObject.Response;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.format = void 0;\nvar POSITIONALS_EXP = /(%?)(%([sdjo]))/g;\nfunction serializePositional(positional, flag) {\n    switch (flag) {\n        // Strings.\n        case 's':\n            return positional;\n        // Digits.\n        case 'd':\n        case 'i':\n            return Number(positional);\n        // JSON.\n        case 'j':\n            return JSON.stringify(positional);\n        // Objects.\n        case 'o': {\n            // Preserve stings to prevent extra quotes around them.\n            if (typeof positional === 'string') {\n                return positional;\n            }\n            var json = JSON.stringify(positional);\n            // If the positional isn't serializable, return it as-is.\n            if (json === '{}' || json === '[]' || /^\\[object .+?\\]$/.test(json)) {\n                return positional;\n            }\n            return json;\n        }\n    }\n}\nfunction format(message) {\n    var positionals = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        positionals[_i - 1] = arguments[_i];\n    }\n    if (positionals.length === 0) {\n        return message;\n    }\n    var positionalIndex = 0;\n    var formattedMessage = message.replace(POSITIONALS_EXP, function (match, isEscaped, _, flag) {\n        var positional = positionals[positionalIndex];\n        var value = serializePositional(positional, flag);\n        if (!isEscaped) {\n            positionalIndex++;\n            return value;\n        }\n        return match;\n    });\n    // Append unresolved positionals to string as-is.\n    if (positionalIndex < positionals.length) {\n        formattedMessage += \" \" + positionals.slice(positionalIndex).join(' ');\n    }\n    formattedMessage = formattedMessage.replace(/%{2,2}/g, '%');\n    return formattedMessage;\n}\nexports.format = format;\n", "\"use strict\";\nvar __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 __spreadArray = (this && this.__spreadArray) || function (to, from) {\n    for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)\n        to[j] = from[i];\n    return to;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.invariant = exports.createInvariantWith = exports.InvariantError = void 0;\nvar format_1 = require(\"./format\");\nvar STACK_FRAMES_TO_IGNORE = 2;\n/**\n * Remove the \"outvariant\" package trace from the given error.\n * This scopes down the error stack to the relevant parts\n * when used in other applications.\n */\nfunction cleanErrorStack(error) {\n    if (!error.stack) {\n        return;\n    }\n    var nextStack = error.stack.split('\\n');\n    nextStack.splice(1, STACK_FRAMES_TO_IGNORE);\n    error.stack = nextStack.join('\\n');\n}\nvar InvariantError = /** @class */ (function (_super) {\n    __extends(InvariantError, _super);\n    function InvariantError(message) {\n        var positionals = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            positionals[_i - 1] = arguments[_i];\n        }\n        var _this = _super.call(this, message) || this;\n        _this.message = message;\n        _this.name = 'Invariant Violation';\n        _this.message = format_1.format.apply(void 0, __spreadArray([message], positionals));\n        cleanErrorStack(_this);\n        return _this;\n    }\n    return InvariantError;\n}(Error));\nexports.InvariantError = InvariantError;\nfunction createInvariantWith(ErrorConstructor) {\n    var invariant = function (predicate, message) {\n        var positionals = [];\n        for (var _i = 2; _i < arguments.length; _i++) {\n            positionals[_i - 2] = arguments[_i];\n        }\n        if (!predicate) {\n            var resolvedMessage = format_1.format.apply(void 0, __spreadArray([message], positionals));\n            var isConstructor = !!ErrorConstructor.prototype.name;\n            var error = isConstructor\n                ? // @ts-expect-error Construct/call signature too dynamic.\n                    new ErrorConstructor(resolvedMessage)\n                : // @ts-expect-error Construct/call signature too dynamic.\n                    ErrorConstructor(resolvedMessage);\n            cleanErrorStack(error);\n            throw error;\n        }\n    };\n    return invariant;\n}\nexports.createInvariantWith = createInvariantWith;\nfunction polymorphicInvariant(ErrorClass) {\n    var args = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        args[_i - 1] = arguments[_i];\n    }\n    return createInvariantWith(ErrorClass).apply(void 0, args);\n}\nexports.invariant = createInvariantWith(InvariantError);\nexports.invariant.as = polymorphicInvariant;\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./invariant\"), exports);\n__exportStar(require(\"./format\"), exports);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/**\n * Gracefully handles a given Promise factory.\n * @example\n * cosnt [error, data] = await until(() => asyncAction())\n */\nexports.until = async (promise) => {\n    try {\n        const data = await promise().catch((error) => {\n            throw error;\n        });\n        return [null, data];\n    }\n    catch (error) {\n        return [error, null];\n    }\n};\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar until_1 = require(\"./until\");\nexports.until = until_1.until;\n", "import type { HeadersObject, Headers } from 'headers-polyfill'\nimport type { InteractiveIsomorphicRequest } from './InteractiveIsomorphicRequest'\nimport type { IsomorphicRequest } from './IsomorphicRequest'\n\nexport const IS_PATCHED_MODULE: unique symbol = Symbol('isPatchedModule')\n\nexport type RequestCredentials = 'omit' | 'include' | 'same-origin'\n\nexport interface IsomorphicResponse {\n  status: number\n  statusText: string\n  headers: Headers\n  body?: string\n}\n\nexport interface MockedResponse\n  extends Omit<Partial<IsomorphicResponse>, 'headers'> {\n  headers?: HeadersObject\n}\n\nexport type HttpRequestEventMap = {\n  request(request: InteractiveIsomorphicRequest): Promise<void> | void\n  response(\n    request: IsomorphicRequest,\n    response: IsomorphicResponse\n  ): Promise<void> | void\n}\n", "/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n  options = options || {};\n  var type = typeof val;\n  if (type === 'string' && val.length > 0) {\n    return parse(val);\n  } else if (type === 'number' && isFinite(val)) {\n    return options.long ? fmtLong(val) : fmtShort(val);\n  }\n  throw new Error(\n    'val is not a non-empty string or a valid number. val=' +\n      JSON.stringify(val)\n  );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n  str = String(str);\n  if (str.length > 100) {\n    return;\n  }\n  var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n    str\n  );\n  if (!match) {\n    return;\n  }\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n    case 'weeks':\n    case 'week':\n    case 'w':\n      return n * w;\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n    default:\n      return undefined;\n  }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return Math.round(ms / d) + 'd';\n  }\n  if (msAbs >= h) {\n    return Math.round(ms / h) + 'h';\n  }\n  if (msAbs >= m) {\n    return Math.round(ms / m) + 'm';\n  }\n  if (msAbs >= s) {\n    return Math.round(ms / s) + 's';\n  }\n  return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return plural(ms, msAbs, d, 'day');\n  }\n  if (msAbs >= h) {\n    return plural(ms, msAbs, h, 'hour');\n  }\n  if (msAbs >= m) {\n    return plural(ms, msAbs, m, 'minute');\n  }\n  if (msAbs >= s) {\n    return plural(ms, msAbs, s, 'second');\n  }\n  return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n  var isPlural = msAbs >= n * 1.5;\n  return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n", "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n", "/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n  ? R.apply\n  : function ReflectApply(target, receiver, args) {\n    return Function.prototype.apply.call(target, receiver, args);\n  }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n  ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target)\n      .concat(Object.getOwnPropertySymbols(target));\n  };\n} else {\n  ReflectOwnKeys = function ReflectOwnKeys(target) {\n    return Object.getOwnPropertyNames(target);\n  };\n}\n\nfunction ProcessEmitWarning(warning) {\n  if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n  return value !== value;\n}\n\nfunction EventEmitter() {\n  EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n  if (typeof listener !== 'function') {\n    throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n  }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n  enumerable: true,\n  get: function() {\n    return defaultMaxListeners;\n  },\n  set: function(arg) {\n    if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n      throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n    }\n    defaultMaxListeners = arg;\n  }\n});\n\nEventEmitter.init = function() {\n\n  if (this._events === undefined ||\n      this._events === Object.getPrototypeOf(this)._events) {\n    this._events = Object.create(null);\n    this._eventsCount = 0;\n  }\n\n  this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n  if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n    throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n  }\n  this._maxListeners = n;\n  return this;\n};\n\nfunction _getMaxListeners(that) {\n  if (that._maxListeners === undefined)\n    return EventEmitter.defaultMaxListeners;\n  return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n  return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n  var args = [];\n  for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n  var doError = (type === 'error');\n\n  var events = this._events;\n  if (events !== undefined)\n    doError = (doError && events.error === undefined);\n  else if (!doError)\n    return false;\n\n  // If there is no 'error' event listener then throw.\n  if (doError) {\n    var er;\n    if (args.length > 0)\n      er = args[0];\n    if (er instanceof Error) {\n      // Note: The comments on the `throw` lines are intentional, they show\n      // up in Node's output if this results in an unhandled exception.\n      throw er; // Unhandled 'error' event\n    }\n    // At least give some kind of context to the user\n    var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n    err.context = er;\n    throw err; // Unhandled 'error' event\n  }\n\n  var handler = events[type];\n\n  if (handler === undefined)\n    return false;\n\n  if (typeof handler === 'function') {\n    ReflectApply(handler, this, args);\n  } else {\n    var len = handler.length;\n    var listeners = arrayClone(handler, len);\n    for (var i = 0; i < len; ++i)\n      ReflectApply(listeners[i], this, args);\n  }\n\n  return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n  var m;\n  var events;\n  var existing;\n\n  checkListener(listener);\n\n  events = target._events;\n  if (events === undefined) {\n    events = target._events = Object.create(null);\n    target._eventsCount = 0;\n  } else {\n    // To avoid recursion in the case that type === \"newListener\"! Before\n    // adding it to the listeners, first emit \"newListener\".\n    if (events.newListener !== undefined) {\n      target.emit('newListener', type,\n                  listener.listener ? listener.listener : listener);\n\n      // Re-assign `events` because a newListener handler could have caused the\n      // this._events to be assigned to a new object\n      events = target._events;\n    }\n    existing = events[type];\n  }\n\n  if (existing === undefined) {\n    // Optimize the case of one listener. Don't need the extra array object.\n    existing = events[type] = listener;\n    ++target._eventsCount;\n  } else {\n    if (typeof existing === 'function') {\n      // Adding the second element, need to change to array.\n      existing = events[type] =\n        prepend ? [listener, existing] : [existing, listener];\n      // If we've already got an array, just append.\n    } else if (prepend) {\n      existing.unshift(listener);\n    } else {\n      existing.push(listener);\n    }\n\n    // Check for listener leak\n    m = _getMaxListeners(target);\n    if (m > 0 && existing.length > m && !existing.warned) {\n      existing.warned = true;\n      // No error code for this since it is a Warning\n      // eslint-disable-next-line no-restricted-syntax\n      var w = new Error('Possible EventEmitter memory leak detected. ' +\n                          existing.length + ' ' + String(type) + ' listeners ' +\n                          'added. Use emitter.setMaxListeners() to ' +\n                          'increase limit');\n      w.name = 'MaxListenersExceededWarning';\n      w.emitter = target;\n      w.type = type;\n      w.count = existing.length;\n      ProcessEmitWarning(w);\n    }\n  }\n\n  return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n  return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n    function prependListener(type, listener) {\n      return _addListener(this, type, listener, true);\n    };\n\nfunction onceWrapper() {\n  if (!this.fired) {\n    this.target.removeListener(this.type, this.wrapFn);\n    this.fired = true;\n    if (arguments.length === 0)\n      return this.listener.call(this.target);\n    return this.listener.apply(this.target, arguments);\n  }\n}\n\nfunction _onceWrap(target, type, listener) {\n  var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n  var wrapped = onceWrapper.bind(state);\n  wrapped.listener = listener;\n  state.wrapFn = wrapped;\n  return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n  checkListener(listener);\n  this.on(type, _onceWrap(this, type, listener));\n  return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n    function prependOnceListener(type, listener) {\n      checkListener(listener);\n      this.prependListener(type, _onceWrap(this, type, listener));\n      return this;\n    };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n    function removeListener(type, listener) {\n      var list, events, position, i, originalListener;\n\n      checkListener(listener);\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      list = events[type];\n      if (list === undefined)\n        return this;\n\n      if (list === listener || list.listener === listener) {\n        if (--this._eventsCount === 0)\n          this._events = Object.create(null);\n        else {\n          delete events[type];\n          if (events.removeListener)\n            this.emit('removeListener', type, list.listener || listener);\n        }\n      } else if (typeof list !== 'function') {\n        position = -1;\n\n        for (i = list.length - 1; i >= 0; i--) {\n          if (list[i] === listener || list[i].listener === listener) {\n            originalListener = list[i].listener;\n            position = i;\n            break;\n          }\n        }\n\n        if (position < 0)\n          return this;\n\n        if (position === 0)\n          list.shift();\n        else {\n          spliceOne(list, position);\n        }\n\n        if (list.length === 1)\n          events[type] = list[0];\n\n        if (events.removeListener !== undefined)\n          this.emit('removeListener', type, originalListener || listener);\n      }\n\n      return this;\n    };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n    function removeAllListeners(type) {\n      var listeners, events, i;\n\n      events = this._events;\n      if (events === undefined)\n        return this;\n\n      // not listening for removeListener, no need to emit\n      if (events.removeListener === undefined) {\n        if (arguments.length === 0) {\n          this._events = Object.create(null);\n          this._eventsCount = 0;\n        } else if (events[type] !== undefined) {\n          if (--this._eventsCount === 0)\n            this._events = Object.create(null);\n          else\n            delete events[type];\n        }\n        return this;\n      }\n\n      // emit removeListener for all listeners on all events\n      if (arguments.length === 0) {\n        var keys = Object.keys(events);\n        var key;\n        for (i = 0; i < keys.length; ++i) {\n          key = keys[i];\n          if (key === 'removeListener') continue;\n          this.removeAllListeners(key);\n        }\n        this.removeAllListeners('removeListener');\n        this._events = Object.create(null);\n        this._eventsCount = 0;\n        return this;\n      }\n\n      listeners = events[type];\n\n      if (typeof listeners === 'function') {\n        this.removeListener(type, listeners);\n      } else if (listeners !== undefined) {\n        // LIFO order\n        for (i = listeners.length - 1; i >= 0; i--) {\n          this.removeListener(type, listeners[i]);\n        }\n      }\n\n      return this;\n    };\n\nfunction _listeners(target, type, unwrap) {\n  var events = target._events;\n\n  if (events === undefined)\n    return [];\n\n  var evlistener = events[type];\n  if (evlistener === undefined)\n    return [];\n\n  if (typeof evlistener === 'function')\n    return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n  return unwrap ?\n    unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n  return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n  return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  if (typeof emitter.listenerCount === 'function') {\n    return emitter.listenerCount(type);\n  } else {\n    return listenerCount.call(emitter, type);\n  }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n  var events = this._events;\n\n  if (events !== undefined) {\n    var evlistener = events[type];\n\n    if (typeof evlistener === 'function') {\n      return 1;\n    } else if (evlistener !== undefined) {\n      return evlistener.length;\n    }\n  }\n\n  return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n  return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n  var copy = new Array(n);\n  for (var i = 0; i < n; ++i)\n    copy[i] = arr[i];\n  return copy;\n}\n\nfunction spliceOne(list, index) {\n  for (; index + 1 < list.length; index++)\n    list[index] = list[index + 1];\n  list.pop();\n}\n\nfunction unwrapListeners(arr) {\n  var ret = new Array(arr.length);\n  for (var i = 0; i < ret.length; ++i) {\n    ret[i] = arr[i].listener || arr[i];\n  }\n  return ret;\n}\n\nfunction once(emitter, name) {\n  return new Promise(function (resolve, reject) {\n    function errorListener(err) {\n      emitter.removeListener(name, resolver);\n      reject(err);\n    }\n\n    function resolver() {\n      if (typeof emitter.removeListener === 'function') {\n        emitter.removeListener('error', errorListener);\n      }\n      resolve([].slice.call(arguments));\n    };\n\n    eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n    if (name !== 'error') {\n      addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n    }\n  });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n  if (typeof emitter.on === 'function') {\n    eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n  }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n  if (typeof emitter.on === 'function') {\n    if (flags.once) {\n      emitter.once(name, listener);\n    } else {\n      emitter.on(name, listener);\n    }\n  } else if (typeof emitter.addEventListener === 'function') {\n    // EventTarget does not have `error` event semantics like Node\n    // EventEmitters, we do not listen for `error` events here.\n    emitter.addEventListener(name, function wrapListener(arg) {\n      // IE does not have builtin `{ once: true }` support so we\n      // have to do it manually.\n      if (flags.once) {\n        emitter.removeEventListener(name, wrapListener);\n      }\n      listener(arg);\n    });\n  } else {\n    throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n  }\n}\n", "\"use strict\";\nvar __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        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n            r[k] = a[j];\n    return r;\n};\nexports.__esModule = true;\nexports.StrictEventEmitter = void 0;\nvar events_1 = require(\"events\");\nvar StrictEventEmitter = /** @class */ (function (_super) {\n    __extends(StrictEventEmitter, _super);\n    function StrictEventEmitter() {\n        return _super.call(this) || this;\n    }\n    StrictEventEmitter.prototype.on = function (event, listener) {\n        return _super.prototype.on.call(this, event.toString(), listener);\n    };\n    StrictEventEmitter.prototype.once = function (event, listener) {\n        return _super.prototype.once.call(this, event.toString(), listener);\n    };\n    StrictEventEmitter.prototype.off = function (event, listener) {\n        return _super.prototype.off.call(this, event.toString(), listener);\n    };\n    StrictEventEmitter.prototype.emit = function (event) {\n        var data = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            data[_i - 1] = arguments[_i];\n        }\n        return _super.prototype.emit.apply(this, __spreadArrays([event.toString()], data));\n    };\n    StrictEventEmitter.prototype.addListener = function (event, listener) {\n        return _super.prototype.addListener.call(this, event.toString(), listener);\n    };\n    StrictEventEmitter.prototype.prependListener = function (event, listener) {\n        return _super.prototype.prependListener.call(this, event.toString(), listener);\n    };\n    StrictEventEmitter.prototype.prependOnceListener = function (event, listener) {\n        return _super.prototype.prependOnceListener.call(this, event.toString(), listener);\n    };\n    StrictEventEmitter.prototype.removeListener = function (event, listener) {\n        return _super.prototype.removeListener.call(this, event.toString(), listener);\n    };\n    StrictEventEmitter.prototype.removeAllListeners = function (event) {\n        if (event) {\n            return _super.prototype.removeAllListeners.call(this, event.toString());\n        }\n        return _super.prototype.removeAllListeners.call(this);\n    };\n    StrictEventEmitter.prototype.eventNames = function () {\n        return _super.prototype.eventNames.call(this);\n    };\n    StrictEventEmitter.prototype.listeners = function (event) {\n        return _super.prototype.listeners.call(this, event.toString());\n    };\n    StrictEventEmitter.prototype.rawListeners = function (event) {\n        return _super.prototype.rawListeners.call(this, event.toString());\n    };\n    StrictEventEmitter.prototype.listenerCount = function (event) {\n        return _super.prototype.listenerCount.call(this, event.toString());\n    };\n    return StrictEventEmitter;\n}(events_1.EventEmitter));\nexports.StrictEventEmitter = StrictEventEmitter;\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nexports.__esModule = true;\n__exportStar(require(\"./StrictEventEmitter\"), exports);\n", "export function nextTick(callback: () => void) {\n  setTimeout(callback, 0)\n}\n\nexport function nextTickAsync(callback: () => void) {\n  return new Promise((resolve) => {\n    setTimeout(() => {\n      resolve(callback())\n    }, 0)\n  })\n}\n", "import { Debugger, debug } from 'debug'\nimport { StrictEventEmitter, EventMapType } from 'strict-event-emitter'\nimport { nextTick } from './nextTick'\n\nexport interface QueueItem<Args extends any[]> {\n  args: Args\n  done: Promise<void>\n}\n\nexport enum AsyncEventEmitterReadyState {\n  ACTIVE = 'ACTIVE',\n  DEACTIVATED = 'DEACTIVATED',\n}\n\nexport class AsyncEventEmitter<\n  EventMap extends EventMapType\n> extends StrictEventEmitter<EventMap> {\n  public readyState: AsyncEventEmitterReadyState\n\n  private log: Debugger\n  protected queue: Map<\n    keyof EventMap,\n    QueueItem<Parameters<EventMap[keyof EventMap]>>[]\n  >\n\n  constructor() {\n    super()\n\n    this.log = debug('async-event-emitter')\n    this.queue = new Map()\n\n    this.readyState = AsyncEventEmitterReadyState.ACTIVE\n  }\n\n  public on<Event extends keyof EventMap>(\n    event: Event,\n    listener: EventMap[Event]\n  ) {\n    const log = this.log.extend('on')\n\n    log('adding \"%s\" listener...', event)\n\n    if (this.readyState === AsyncEventEmitterReadyState.DEACTIVATED) {\n      log('the emitter is destroyed, skipping!')\n      return this\n    }\n\n    return super.on(event, (async (...args: Parameters<EventMap[Event]>) => {\n      // Event queue is always established when calling \".emit()\".\n      const queue = this.openListenerQueue(event)\n\n      log('awaiting the \"%s\" listener...', event)\n\n      // Whenever a listener is called, create a new Promise\n      // that resolves when that listener function completes its execution.\n      queue.push({\n        args,\n        done: new Promise<void>(async (resolve, reject) => {\n          try {\n            // Treat listeners as potentially asynchronous functions\n            // so they could be awaited.\n            await listener(...args)\n            resolve()\n\n            log('\"%s\" listener has resolved!', event)\n          } catch (error) {\n            log('\"%s\" listener has rejected!', error)\n            reject(error)\n          }\n        }),\n      })\n    }) as EventMap[Event])\n  }\n\n  public emit<Event extends keyof EventMap>(\n    event: Event,\n    ...args: Parameters<EventMap[Event]>\n  ): boolean {\n    const log = this.log.extend('emit')\n\n    log('emitting \"%s\" event...', event)\n\n    if (this.readyState === AsyncEventEmitterReadyState.DEACTIVATED) {\n      log('the emitter is destroyed, skipping!')\n      return false\n    }\n\n    // Establish the Promise queue for this particular event.\n    this.openListenerQueue(event)\n\n    log('appending a one-time cleanup \"%s\" listener...', event)\n\n    // Append a one-time clean up listener.\n    this.once(event, (() => {\n      // Clear the Promise queue for this particular event\n      // in the next tick so the Promise in \"untilIdle\" has\n      // time to properly resolve.\n      nextTick(() => {\n        this.queue.delete(event)\n        log('cleaned up \"%s\" listeners queue!', event)\n      })\n    }) as EventMap[Event])\n\n    return super.emit(event, ...args)\n  }\n\n  /**\n   * Returns a promise that resolves when all the listeners for the given event\n   * has been called. Awaits asynchronous listeners.\n   * If the event has no listeners, resolves immediately.\n   */\n  public async untilIdle<Event extends keyof EventMap>(\n    event: Event,\n    filter: (item: QueueItem<Parameters<EventMap[Event]>>) => boolean = () =>\n      true\n  ): Promise<void> {\n    const listenersQueue = this.queue.get(event) || []\n\n    await Promise.all(\n      listenersQueue.filter(filter).map(({ done }) => done)\n    ).finally(() => {\n      // Clear the queue one the promise settles\n      // so that different events don't share the same queue.\n      this.queue.delete(event)\n    })\n  }\n\n  private openListenerQueue<Event extends keyof EventMap>(\n    event: Event\n  ): QueueItem<Parameters<EventMap[Event]>>[] {\n    const log = this.log.extend('openListenerQueue')\n\n    log('opening \"%s\" listeners queue...', event)\n\n    const queue = this.queue.get(event)\n\n    if (!queue) {\n      log('no queue found, creating one...')\n\n      this.queue.set(event, [])\n      return []\n    }\n\n    log('returning an exising queue:', queue)\n    return queue\n  }\n\n  public removeAllListeners<Event extends keyof EventMap>(event?: Event) {\n    const log = this.log.extend('removeAllListeners')\n    log('event:', event)\n\n    if (event) {\n      this.queue.delete(event)\n      log('cleared the \"%s\" listeners queue!', event, this.queue.get(event))\n    } else {\n      this.queue.clear()\n      log('cleared the listeners queue!', this.queue)\n    }\n\n    return super.removeAllListeners(event)\n  }\n\n  public activate(): void {\n    const log = this.log.extend('activate')\n    this.readyState = AsyncEventEmitterReadyState.ACTIVE\n    log('set state to:', this.readyState)\n  }\n\n  /**\n   * Deactivate this event emitter.\n   * Deactivated emitter can no longer emit and listen to events\n   * and needs to be activated again in order to do so.\n   */\n  public deactivate(): void {\n    const log = this.log.extend('deactivate')\n\n    log('removing all listeners...')\n    this.removeAllListeners()\n\n    this.readyState = AsyncEventEmitterReadyState.DEACTIVATED\n    log('set state to:', this.readyState)\n  }\n}\n", "import { Debugger, debug } from 'debug'\nimport { AsyncEventEmitter } from './utils/AsyncEventEmitter'\nimport { nextTick } from './utils/nextTick'\n\nexport type InterceptorEventMap = Record<string, (...args: any[]) => void>\nexport type InterceptorSubscription = () => void\n\nexport function getGlobalSymbol<V>(symbol: Symbol): V | undefined {\n  return (\n    // @ts-ignore https://github.com/Microsoft/TypeScript/issues/24587\n    globalThis[symbol] || undefined\n  )\n}\n\nfunction setGlobalSymbol(symbol: Symbol, value: any): void {\n  // @ts-ignore\n  globalThis[symbol] = value\n}\n\nexport function deleteGlobalSymbol(symbol: Symbol): void {\n  // @ts-ignore\n  delete globalThis[symbol]\n}\n\nexport enum InterceptorReadyState {\n  IDLE = 'IDLE',\n  APPLYING = 'APPLYING',\n  APPLIED = 'APPLIED',\n  DISPOSING = 'DISPOSING',\n  DISPOSED = 'DISPOSED',\n}\n\nexport type ExtractEventNames<EventMap extends Record<string, any>> =\n  EventMap extends Record<infer EventName, any> ? EventName : never\n\nexport class Interceptor<EventMap extends InterceptorEventMap> {\n  protected emitter: AsyncEventEmitter<EventMap>\n  protected subscriptions: InterceptorSubscription[]\n  protected log: Debugger\n\n  public readyState: InterceptorReadyState\n\n  constructor(private readonly symbol: Symbol) {\n    this.readyState = InterceptorReadyState.IDLE\n\n    this.emitter = new AsyncEventEmitter()\n    this.subscriptions = []\n    this.log = debug(symbol.description!)\n\n    // Do not limit the maximum number of listeners\n    // so not to limit the maximum amount of parallel events emitted.\n    this.emitter.setMaxListeners(0)\n\n    this.log('constructing the interceptor...')\n  }\n\n  /**\n   * Determine if this interceptor can be applied\n   * in the current environment.\n   */\n  protected checkEnvironment(): boolean {\n    return true\n  }\n\n  /**\n   * Apply this interceptor to the current process.\n   * Returns an already running interceptor instance if it's present.\n   */\n  public apply(): void {\n    const log = this.log.extend('apply')\n    log('applying the interceptor...')\n\n    if (this.readyState === InterceptorReadyState.APPLIED) {\n      log('intercepted already applied!')\n      return\n    }\n\n    const shouldApply = this.checkEnvironment()\n\n    if (!shouldApply) {\n      log('the interceptor cannot be applied in this environment!')\n      return\n    }\n\n    this.readyState = InterceptorReadyState.APPLYING\n\n    // Always activate the emitter when applying the interceptor.\n    // This will ensure the interceptor can process events after it's\n    // been disposed and re-applied again (it may be a singleton).\n    this.emitter.activate()\n    log('activated the emiter!', this.emitter.readyState)\n\n    // Whenever applying a new interceptor, check if it hasn't been applied already.\n    // This enables to apply the same interceptor multiple times, for example from a different\n    // interceptor, only proxying events but keeping the stubs in a single place.\n    const runningInstance = this.getInstance()\n\n    if (runningInstance) {\n      log('found a running instance, reusing...')\n\n      // Proxy any listeners you set on this instance to the running instance.\n      this.on = (event, listener) => {\n        log('proxying the \"%s\" listener', event)\n\n        // Add listeners to the running instance so they appear\n        // at the top of the event listeners list and are executed first.\n        runningInstance.emitter.addListener(event, listener)\n\n        // Ensure that once this interceptor instance is disposed,\n        // it removes all listeners it has appended to the running interceptor instance.\n        this.subscriptions.push(() => {\n          runningInstance.emitter.removeListener(event, listener)\n          log('removed proxied \"%s\" listener!', event)\n        })\n      }\n\n      nextTick(() => {\n        this.readyState = InterceptorReadyState.APPLIED\n      })\n\n      return\n    }\n\n    log('no running instance found, setting up a new instance...')\n\n    // Setup the interceptor.\n    this.setup()\n\n    // Store the newly applied interceptor instance globally.\n    this.setInstance()\n\n    nextTick(() => {\n      this.readyState = InterceptorReadyState.APPLIED\n    })\n  }\n\n  /**\n   * Setup the module augments and stubs necessary for this interceptor.\n   * This method is not run if there's a running interceptor instance\n   * to prevent instantiating an interceptor multiple times.\n   */\n  protected setup(): void {}\n\n  /**\n   * Listen to the interceptor's public events.\n   */\n  public on<Event extends ExtractEventNames<EventMap>>(\n    event: Event,\n    listener: EventMap[Event]\n  ): void {\n    const log = this.log.extend('on')\n\n    if (\n      this.readyState === InterceptorReadyState.DISPOSING ||\n      this.readyState === InterceptorReadyState.DISPOSED\n    ) {\n      log('cannot listen to events, already disposed!')\n      return\n    }\n\n    log('adding \"%s\" event listener:', event, listener.name)\n\n    this.emitter.on(event, listener)\n  }\n\n  /**\n   * Disposes of any side-effects this interceptor has introduced.\n   */\n  public dispose(): void {\n    const log = this.log.extend('dispose')\n\n    if (this.readyState === InterceptorReadyState.DISPOSED) {\n      log('cannot dispose, already disposed!')\n      return\n    }\n\n    log('disposing the interceptor...')\n    this.readyState = InterceptorReadyState.DISPOSING\n\n    if (!this.getInstance()) {\n      log('no interceptors running, skipping dispose...')\n      return\n    }\n\n    // Delete the global symbol as soon as possible,\n    // indicating that the interceptor is no longer running.\n    this.clearInstance()\n\n    log('global symbol deleted:', getGlobalSymbol(this.symbol))\n\n    if (this.subscriptions.length > 0) {\n      log('disposing of %d subscriptions...', this.subscriptions.length)\n\n      for (const dispose of this.subscriptions) {\n        dispose()\n      }\n\n      this.subscriptions = []\n\n      log('disposed of all subscriptions!', this.subscriptions.length)\n    }\n\n    this.emitter.deactivate()\n    log('destroyed the listener!')\n\n    nextTick(() => {\n      this.readyState = InterceptorReadyState.DISPOSED\n    })\n  }\n\n  private getInstance(): this | undefined {\n    const instance = getGlobalSymbol<this>(this.symbol)\n    this.log('retrieved global instance:', instance?.constructor?.name)\n    return instance\n  }\n\n  private setInstance(): void {\n    setGlobalSymbol(this.symbol, this)\n    this.log('set global instance!', this.symbol.description)\n  }\n\n  private clearInstance(): void {\n    deleteGlobalSymbol(this.symbol)\n    this.log('cleared global instance!', this.symbol.description)\n  }\n}\n", "import { EventMapType } from 'strict-event-emitter'\nimport { ExtractEventNames, Interceptor } from './Interceptor'\n\nexport interface BatchInterceptorOptions<\n  InterceptorList extends Interceptor<any>[]\n> {\n  name: string\n  interceptors: InterceptorList\n}\n\nexport type ExtractEventMapType<InterceptorList extends Interceptor<any>[]> =\n  InterceptorList extends Array<infer InterceptorType>\n    ? InterceptorType extends Interceptor<infer EventMap>\n      ? EventMap\n      : never\n    : never\n\n/**\n * A batch interceptor that exposes a single interface\n * to apply and operate with multiple interceptors at once.\n */\nexport class BatchInterceptor<\n  InterceptorList extends Interceptor<any>[],\n  EventMap extends EventMapType = ExtractEventMapType<InterceptorList>\n> extends Interceptor<EventMap> {\n  static symbol: Symbol\n\n  private interceptors: InterceptorList\n\n  constructor(options: BatchInterceptorOptions<InterceptorList>) {\n    BatchInterceptor.symbol = Symbol(options.name)\n    super(BatchInterceptor.symbol)\n    this.interceptors = options.interceptors\n  }\n\n  protected setup() {\n    const log = this.log.extend('setup')\n\n    log('applying all %d interceptors...', this.interceptors.length)\n\n    for (const interceptor of this.interceptors) {\n      log('applying \"%s\" interceptor...', interceptor.constructor.name)\n      interceptor.apply()\n\n      log('adding interceptor dispose subscription')\n      this.subscriptions.push(() => interceptor.dispose())\n    }\n  }\n\n  public on<Event extends ExtractEventNames<EventMap>>(\n    event: Event,\n    listener: EventMap[Event]\n  ) {\n    // Instead of adding a listener to the batch interceptor,\n    // propagate the listener to each of the individual interceptors.\n    this.interceptors.forEach((interceptor) => {\n      interceptor.on(event, listener)\n    })\n  }\n}\n", "'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n", "'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n", "'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n", "'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slice.call(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                args.concat(slice.call(arguments))\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        } else {\n            return target.apply(\n                that,\n                args.concat(slice.call(arguments))\n            );\n        }\n    };\n\n    var boundLength = Math.max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs.push('$' + i);\n    }\n\n    bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n    if (target.prototype) {\n        var Empty = function Empty() {};\n        Empty.prototype = target.prototype;\n        bound.prototype = new Empty();\n        Empty.prototype = null;\n    }\n\n    return bound;\n};\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n", "'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n", "'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\nvar $exec = bind.call(Function.call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n", "'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n", "'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n", "'use strict';\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n", "'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n", "'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n    for (var i = 0, len = array.length; i < len; i++) {\n        if (hasOwnProperty.call(array, i)) {\n            if (receiver == null) {\n                iterator(array[i], i, array);\n            } else {\n                iterator.call(receiver, array[i], i, array);\n            }\n        }\n    }\n};\n\nvar forEachString = function forEachString(string, iterator, receiver) {\n    for (var i = 0, len = string.length; i < len; i++) {\n        // no such thing as a sparse string.\n        if (receiver == null) {\n            iterator(string.charAt(i), i, string);\n        } else {\n            iterator.call(receiver, string.charAt(i), i, string);\n        }\n    }\n};\n\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n    for (var k in object) {\n        if (hasOwnProperty.call(object, k)) {\n            if (receiver == null) {\n                iterator(object[k], k, object);\n            } else {\n                iterator.call(receiver, object[k], k, object);\n            }\n        }\n    }\n};\n\nvar forEach = function forEach(list, iterator, thisArg) {\n    if (!isCallable(iterator)) {\n        throw new TypeError('iterator must be a function');\n    }\n\n    var receiver;\n    if (arguments.length >= 3) {\n        receiver = thisArg;\n    }\n\n    if (toStr.call(list) === '[object Array]') {\n        forEachArray(list, iterator, receiver);\n    } else if (typeof list === 'string') {\n        forEachString(list, iterator, receiver);\n    } else {\n        forEachObject(list, iterator, receiver);\n    }\n};\n\nmodule.exports = forEach;\n", "'use strict';\n\nvar possibleNames = [\n\t'BigInt64Array',\n\t'BigUint64Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Int8Array',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray'\n];\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\nmodule.exports = function availableTypedArrays() {\n\tvar out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n", "'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar gOPD = require('gopd');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar anyTrue = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!anyTrue) {\n\t\t\ttry {\n\t\t\t\tanyTrue = getter.call(value) === typedArray;\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t});\n\treturn anyTrue;\n};\n\nmodule.exports = function isTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag || !(Symbol.toStringTag in value)) {\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\treturn $indexOf(typedArrays, tag) > -1;\n\t}\n\tif (!gOPD) { return false; }\n\treturn tryTypedArrays(value);\n};\n", "'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\nvar gOPD = require('gopd');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tif (typeof g[typedArray] === 'function') {\n\t\t\tvar arr = new g[typedArray]();\n\t\t\tif (Symbol.toStringTag in arr) {\n\t\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\t\tif (!descriptor) {\n\t\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t\t}\n\t\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t\t}\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar foundName = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!foundName) {\n\t\t\ttry {\n\t\t\t\tvar name = getter.call(value);\n\t\t\t\tif (name === typedArray) {\n\t\t\t\t\tfoundName = name;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\t\t}\n\t});\n\treturn foundName;\n};\n\nvar isTypedArray = require('is-typed-array');\n\nmodule.exports = function whichTypedArray(value) {\n\tif (!isTypedArray(value)) { return false; }\n\tif (!hasToStringTag || !(Symbol.toStringTag in value)) { return $slice($toString(value), 8, -1); }\n\treturn tryTypedArrays(value);\n};\n", "// Currently in sync with Node.js lib/internal/util/types.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n\n'use strict';\n\nvar isArgumentsObject = require('is-arguments');\nvar isGeneratorFunction = require('is-generator-function');\nvar whichTypedArray = require('which-typed-array');\nvar isTypedArray = require('is-typed-array');\n\nfunction uncurryThis(f) {\n  return f.call.bind(f);\n}\n\nvar BigIntSupported = typeof BigInt !== 'undefined';\nvar SymbolSupported = typeof Symbol !== 'undefined';\n\nvar ObjectToString = uncurryThis(Object.prototype.toString);\n\nvar numberValue = uncurryThis(Number.prototype.valueOf);\nvar stringValue = uncurryThis(String.prototype.valueOf);\nvar booleanValue = uncurryThis(Boolean.prototype.valueOf);\n\nif (BigIntSupported) {\n  var bigIntValue = uncurryThis(BigInt.prototype.valueOf);\n}\n\nif (SymbolSupported) {\n  var symbolValue = uncurryThis(Symbol.prototype.valueOf);\n}\n\nfunction checkBoxedPrimitive(value, prototypeValueOf) {\n  if (typeof value !== 'object') {\n    return false;\n  }\n  try {\n    prototypeValueOf(value);\n    return true;\n  } catch(e) {\n    return false;\n  }\n}\n\nexports.isArgumentsObject = isArgumentsObject;\nexports.isGeneratorFunction = isGeneratorFunction;\nexports.isTypedArray = isTypedArray;\n\n// Taken from here and modified for better browser support\n// https://github.com/sindresorhus/p-is-promise/blob/cda35a513bda03f977ad5cde3a079d237e82d7ef/index.js\nfunction isPromise(input) {\n\treturn (\n\t\t(\n\t\t\ttypeof Promise !== 'undefined' &&\n\t\t\tinput instanceof Promise\n\t\t) ||\n\t\t(\n\t\t\tinput !== null &&\n\t\t\ttypeof input === 'object' &&\n\t\t\ttypeof input.then === 'function' &&\n\t\t\ttypeof input.catch === 'function'\n\t\t)\n\t);\n}\nexports.isPromise = isPromise;\n\nfunction isArrayBufferView(value) {\n  if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n    return ArrayBuffer.isView(value);\n  }\n\n  return (\n    isTypedArray(value) ||\n    isDataView(value)\n  );\n}\nexports.isArrayBufferView = isArrayBufferView;\n\n\nfunction isUint8Array(value) {\n  return whichTypedArray(value) === 'Uint8Array';\n}\nexports.isUint8Array = isUint8Array;\n\nfunction isUint8ClampedArray(value) {\n  return whichTypedArray(value) === 'Uint8ClampedArray';\n}\nexports.isUint8ClampedArray = isUint8ClampedArray;\n\nfunction isUint16Array(value) {\n  return whichTypedArray(value) === 'Uint16Array';\n}\nexports.isUint16Array = isUint16Array;\n\nfunction isUint32Array(value) {\n  return whichTypedArray(value) === 'Uint32Array';\n}\nexports.isUint32Array = isUint32Array;\n\nfunction isInt8Array(value) {\n  return whichTypedArray(value) === 'Int8Array';\n}\nexports.isInt8Array = isInt8Array;\n\nfunction isInt16Array(value) {\n  return whichTypedArray(value) === 'Int16Array';\n}\nexports.isInt16Array = isInt16Array;\n\nfunction isInt32Array(value) {\n  return whichTypedArray(value) === 'Int32Array';\n}\nexports.isInt32Array = isInt32Array;\n\nfunction isFloat32Array(value) {\n  return whichTypedArray(value) === 'Float32Array';\n}\nexports.isFloat32Array = isFloat32Array;\n\nfunction isFloat64Array(value) {\n  return whichTypedArray(value) === 'Float64Array';\n}\nexports.isFloat64Array = isFloat64Array;\n\nfunction isBigInt64Array(value) {\n  return whichTypedArray(value) === 'BigInt64Array';\n}\nexports.isBigInt64Array = isBigInt64Array;\n\nfunction isBigUint64Array(value) {\n  return whichTypedArray(value) === 'BigUint64Array';\n}\nexports.isBigUint64Array = isBigUint64Array;\n\nfunction isMapToString(value) {\n  return ObjectToString(value) === '[object Map]';\n}\nisMapToString.working = (\n  typeof Map !== 'undefined' &&\n  isMapToString(new Map())\n);\n\nfunction isMap(value) {\n  if (typeof Map === 'undefined') {\n    return false;\n  }\n\n  return isMapToString.working\n    ? isMapToString(value)\n    : value instanceof Map;\n}\nexports.isMap = isMap;\n\nfunction isSetToString(value) {\n  return ObjectToString(value) === '[object Set]';\n}\nisSetToString.working = (\n  typeof Set !== 'undefined' &&\n  isSetToString(new Set())\n);\nfunction isSet(value) {\n  if (typeof Set === 'undefined') {\n    return false;\n  }\n\n  return isSetToString.working\n    ? isSetToString(value)\n    : value instanceof Set;\n}\nexports.isSet = isSet;\n\nfunction isWeakMapToString(value) {\n  return ObjectToString(value) === '[object WeakMap]';\n}\nisWeakMapToString.working = (\n  typeof WeakMap !== 'undefined' &&\n  isWeakMapToString(new WeakMap())\n);\nfunction isWeakMap(value) {\n  if (typeof WeakMap === 'undefined') {\n    return false;\n  }\n\n  return isWeakMapToString.working\n    ? isWeakMapToString(value)\n    : value instanceof WeakMap;\n}\nexports.isWeakMap = isWeakMap;\n\nfunction isWeakSetToString(value) {\n  return ObjectToString(value) === '[object WeakSet]';\n}\nisWeakSetToString.working = (\n  typeof WeakSet !== 'undefined' &&\n  isWeakSetToString(new WeakSet())\n);\nfunction isWeakSet(value) {\n  return isWeakSetToString(value);\n}\nexports.isWeakSet = isWeakSet;\n\nfunction isArrayBufferToString(value) {\n  return ObjectToString(value) === '[object ArrayBuffer]';\n}\nisArrayBufferToString.working = (\n  typeof ArrayBuffer !== 'undefined' &&\n  isArrayBufferToString(new ArrayBuffer())\n);\nfunction isArrayBuffer(value) {\n  if (typeof ArrayBuffer === 'undefined') {\n    return false;\n  }\n\n  return isArrayBufferToString.working\n    ? isArrayBufferToString(value)\n    : value instanceof ArrayBuffer;\n}\nexports.isArrayBuffer = isArrayBuffer;\n\nfunction isDataViewToString(value) {\n  return ObjectToString(value) === '[object DataView]';\n}\nisDataViewToString.working = (\n  typeof ArrayBuffer !== 'undefined' &&\n  typeof DataView !== 'undefined' &&\n  isDataViewToString(new DataView(new ArrayBuffer(1), 0, 1))\n);\nfunction isDataView(value) {\n  if (typeof DataView === 'undefined') {\n    return false;\n  }\n\n  return isDataViewToString.working\n    ? isDataViewToString(value)\n    : value instanceof DataView;\n}\nexports.isDataView = isDataView;\n\n// Store a copy of SharedArrayBuffer in case it's deleted elsewhere\nvar SharedArrayBufferCopy = typeof SharedArrayBuffer !== 'undefined' ? SharedArrayBuffer : undefined;\nfunction isSharedArrayBufferToString(value) {\n  return ObjectToString(value) === '[object SharedArrayBuffer]';\n}\nfunction isSharedArrayBuffer(value) {\n  if (typeof SharedArrayBufferCopy === 'undefined') {\n    return false;\n  }\n\n  if (typeof isSharedArrayBufferToString.working === 'undefined') {\n    isSharedArrayBufferToString.working = isSharedArrayBufferToString(new SharedArrayBufferCopy());\n  }\n\n  return isSharedArrayBufferToString.working\n    ? isSharedArrayBufferToString(value)\n    : value instanceof SharedArrayBufferCopy;\n}\nexports.isSharedArrayBuffer = isSharedArrayBuffer;\n\nfunction isAsyncFunction(value) {\n  return ObjectToString(value) === '[object AsyncFunction]';\n}\nexports.isAsyncFunction = isAsyncFunction;\n\nfunction isMapIterator(value) {\n  return ObjectToString(value) === '[object Map Iterator]';\n}\nexports.isMapIterator = isMapIterator;\n\nfunction isSetIterator(value) {\n  return ObjectToString(value) === '[object Set Iterator]';\n}\nexports.isSetIterator = isSetIterator;\n\nfunction isGeneratorObject(value) {\n  return ObjectToString(value) === '[object Generator]';\n}\nexports.isGeneratorObject = isGeneratorObject;\n\nfunction isWebAssemblyCompiledModule(value) {\n  return ObjectToString(value) === '[object WebAssembly.Module]';\n}\nexports.isWebAssemblyCompiledModule = isWebAssemblyCompiledModule;\n\nfunction isNumberObject(value) {\n  return checkBoxedPrimitive(value, numberValue);\n}\nexports.isNumberObject = isNumberObject;\n\nfunction isStringObject(value) {\n  return checkBoxedPrimitive(value, stringValue);\n}\nexports.isStringObject = isStringObject;\n\nfunction isBooleanObject(value) {\n  return checkBoxedPrimitive(value, booleanValue);\n}\nexports.isBooleanObject = isBooleanObject;\n\nfunction isBigIntObject(value) {\n  return BigIntSupported && checkBoxedPrimitive(value, bigIntValue);\n}\nexports.isBigIntObject = isBigIntObject;\n\nfunction isSymbolObject(value) {\n  return SymbolSupported && checkBoxedPrimitive(value, symbolValue);\n}\nexports.isSymbolObject = isSymbolObject;\n\nfunction isBoxedPrimitive(value) {\n  return (\n    isNumberObject(value) ||\n    isStringObject(value) ||\n    isBooleanObject(value) ||\n    isBigIntObject(value) ||\n    isSymbolObject(value)\n  );\n}\nexports.isBoxedPrimitive = isBoxedPrimitive;\n\nfunction isAnyArrayBuffer(value) {\n  return typeof Uint8Array !== 'undefined' && (\n    isArrayBuffer(value) ||\n    isSharedArrayBuffer(value)\n  );\n}\nexports.isAnyArrayBuffer = isAnyArrayBuffer;\n\n['isProxy', 'isExternal', 'isModuleNamespaceObject'].forEach(function(method) {\n  Object.defineProperty(exports, method, {\n    enumerable: false,\n    value: function() {\n      throw new Error(method + ' is not supported in userland');\n    }\n  });\n});\n", "module.exports = function isBuffer(arg) {\n  return arg && typeof arg === 'object'\n    && typeof arg.copy === 'function'\n    && typeof arg.fill === 'function'\n    && typeof arg.readUInt8 === 'function';\n}", "if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      ctor.prototype = Object.create(superCtor.prototype, {\n        constructor: {\n          value: ctor,\n          enumerable: false,\n          writable: true,\n          configurable: true\n        }\n      })\n    }\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      var TempCtor = function () {}\n      TempCtor.prototype = superCtor.prototype\n      ctor.prototype = new TempCtor()\n      ctor.prototype.constructor = ctor\n    }\n  }\n}\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n  function getOwnPropertyDescriptors(obj) {\n    var keys = Object.keys(obj);\n    var descriptors = {};\n    for (var i = 0; i < keys.length; i++) {\n      descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n    }\n    return descriptors;\n  };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n  if (!isString(f)) {\n    var objects = [];\n    for (var i = 0; i < arguments.length; i++) {\n      objects.push(inspect(arguments[i]));\n    }\n    return objects.join(' ');\n  }\n\n  var i = 1;\n  var args = arguments;\n  var len = args.length;\n  var str = String(f).replace(formatRegExp, function(x) {\n    if (x === '%%') return '%';\n    if (i >= len) return x;\n    switch (x) {\n      case '%s': return String(args[i++]);\n      case '%d': return Number(args[i++]);\n      case '%j':\n        try {\n          return JSON.stringify(args[i++]);\n        } catch (_) {\n          return '[Circular]';\n        }\n      default:\n        return x;\n    }\n  });\n  for (var x = args[i]; i < len; x = args[++i]) {\n    if (isNull(x) || !isObject(x)) {\n      str += ' ' + x;\n    } else {\n      str += ' ' + inspect(x);\n    }\n  }\n  return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n  if (typeof process !== 'undefined' && process.noDeprecation === true) {\n    return fn;\n  }\n\n  // Allow for deprecating things in the process of starting up.\n  if (typeof process === 'undefined') {\n    return function() {\n      return exports.deprecate(fn, msg).apply(this, arguments);\n    };\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (process.throwDeprecation) {\n        throw new Error(msg);\n      } else if (process.traceDeprecation) {\n        console.trace(msg);\n      } else {\n        console.error(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnvRegex = /^$/;\n\nif (process.env.NODE_DEBUG) {\n  var debugEnv = process.env.NODE_DEBUG;\n  debugEnv = debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g, '\\\\$&')\n    .replace(/\\*/g, '.*')\n    .replace(/,/g, '$|^')\n    .toUpperCase();\n  debugEnvRegex = new RegExp('^' + debugEnv + '$', 'i');\n}\nexports.debuglog = function(set) {\n  set = set.toUpperCase();\n  if (!debugs[set]) {\n    if (debugEnvRegex.test(set)) {\n      var pid = process.pid;\n      debugs[set] = function() {\n        var msg = exports.format.apply(exports, arguments);\n        console.error('%s %d: %s', set, pid, msg);\n      };\n    } else {\n      debugs[set] = function() {};\n    }\n  }\n  return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n  // default options\n  var ctx = {\n    seen: [],\n    stylize: stylizeNoColor\n  };\n  // legacy...\n  if (arguments.length >= 3) ctx.depth = arguments[2];\n  if (arguments.length >= 4) ctx.colors = arguments[3];\n  if (isBoolean(opts)) {\n    // legacy...\n    ctx.showHidden = opts;\n  } else if (opts) {\n    // got an \"options\" object\n    exports._extend(ctx, opts);\n  }\n  // set default options\n  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n  if (isUndefined(ctx.depth)) ctx.depth = 2;\n  if (isUndefined(ctx.colors)) ctx.colors = false;\n  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n  if (ctx.colors) ctx.stylize = stylizeWithColor;\n  return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n  'bold' : [1, 22],\n  'italic' : [3, 23],\n  'underline' : [4, 24],\n  'inverse' : [7, 27],\n  'white' : [37, 39],\n  'grey' : [90, 39],\n  'black' : [30, 39],\n  'blue' : [34, 39],\n  'cyan' : [36, 39],\n  'green' : [32, 39],\n  'magenta' : [35, 39],\n  'red' : [31, 39],\n  'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n  'special': 'cyan',\n  'number': 'yellow',\n  'boolean': 'yellow',\n  'undefined': 'grey',\n  'null': 'bold',\n  'string': 'green',\n  'date': 'magenta',\n  // \"name\": intentionally not styling\n  'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n  var style = inspect.styles[styleType];\n\n  if (style) {\n    return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n           '\\u001b[' + inspect.colors[style][1] + 'm';\n  } else {\n    return str;\n  }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n  return str;\n}\n\n\nfunction arrayToHash(array) {\n  var hash = {};\n\n  array.forEach(function(val, idx) {\n    hash[val] = true;\n  });\n\n  return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n  // Provide a hook for user-specified inspect functions.\n  // Check that value is an object with an inspect function on it\n  if (ctx.customInspect &&\n      value &&\n      isFunction(value.inspect) &&\n      // Filter out the util module, it's inspect function is special\n      value.inspect !== exports.inspect &&\n      // Also filter out any prototype objects using the circular check.\n      !(value.constructor && value.constructor.prototype === value)) {\n    var ret = value.inspect(recurseTimes, ctx);\n    if (!isString(ret)) {\n      ret = formatValue(ctx, ret, recurseTimes);\n    }\n    return ret;\n  }\n\n  // Primitive types cannot have properties\n  var primitive = formatPrimitive(ctx, value);\n  if (primitive) {\n    return primitive;\n  }\n\n  // Look up the keys of the object.\n  var keys = Object.keys(value);\n  var visibleKeys = arrayToHash(keys);\n\n  if (ctx.showHidden) {\n    keys = Object.getOwnPropertyNames(value);\n  }\n\n  // IE doesn't make error fields non-enumerable\n  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n  if (isError(value)\n      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n    return formatError(value);\n  }\n\n  // Some type of object without properties can be shortcutted.\n  if (keys.length === 0) {\n    if (isFunction(value)) {\n      var name = value.name ? ': ' + value.name : '';\n      return ctx.stylize('[Function' + name + ']', 'special');\n    }\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    }\n    if (isDate(value)) {\n      return ctx.stylize(Date.prototype.toString.call(value), 'date');\n    }\n    if (isError(value)) {\n      return formatError(value);\n    }\n  }\n\n  var base = '', array = false, braces = ['{', '}'];\n\n  // Make Array say that they are Array\n  if (isArray(value)) {\n    array = true;\n    braces = ['[', ']'];\n  }\n\n  // Make functions say that they are functions\n  if (isFunction(value)) {\n    var n = value.name ? ': ' + value.name : '';\n    base = ' [Function' + n + ']';\n  }\n\n  // Make RegExps say that they are RegExps\n  if (isRegExp(value)) {\n    base = ' ' + RegExp.prototype.toString.call(value);\n  }\n\n  // Make dates with properties first say the date\n  if (isDate(value)) {\n    base = ' ' + Date.prototype.toUTCString.call(value);\n  }\n\n  // Make error with message first say the error\n  if (isError(value)) {\n    base = ' ' + formatError(value);\n  }\n\n  if (keys.length === 0 && (!array || value.length == 0)) {\n    return braces[0] + base + braces[1];\n  }\n\n  if (recurseTimes < 0) {\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    } else {\n      return ctx.stylize('[Object]', 'special');\n    }\n  }\n\n  ctx.seen.push(value);\n\n  var output;\n  if (array) {\n    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n  } else {\n    output = keys.map(function(key) {\n      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n    });\n  }\n\n  ctx.seen.pop();\n\n  return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n  if (isUndefined(value))\n    return ctx.stylize('undefined', 'undefined');\n  if (isString(value)) {\n    var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n                                             .replace(/'/g, \"\\\\'\")\n                                             .replace(/\\\\\"/g, '\"') + '\\'';\n    return ctx.stylize(simple, 'string');\n  }\n  if (isNumber(value))\n    return ctx.stylize('' + value, 'number');\n  if (isBoolean(value))\n    return ctx.stylize('' + value, 'boolean');\n  // For some reason typeof null is \"object\", so special case here.\n  if (isNull(value))\n    return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n  return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n  var output = [];\n  for (var i = 0, l = value.length; i < l; ++i) {\n    if (hasOwnProperty(value, String(i))) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          String(i), true));\n    } else {\n      output.push('');\n    }\n  }\n  keys.forEach(function(key) {\n    if (!key.match(/^\\d+$/)) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          key, true));\n    }\n  });\n  return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n  var name, str, desc;\n  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n  if (desc.get) {\n    if (desc.set) {\n      str = ctx.stylize('[Getter/Setter]', 'special');\n    } else {\n      str = ctx.stylize('[Getter]', 'special');\n    }\n  } else {\n    if (desc.set) {\n      str = ctx.stylize('[Setter]', 'special');\n    }\n  }\n  if (!hasOwnProperty(visibleKeys, key)) {\n    name = '[' + key + ']';\n  }\n  if (!str) {\n    if (ctx.seen.indexOf(desc.value) < 0) {\n      if (isNull(recurseTimes)) {\n        str = formatValue(ctx, desc.value, null);\n      } else {\n        str = formatValue(ctx, desc.value, recurseTimes - 1);\n      }\n      if (str.indexOf('\\n') > -1) {\n        if (array) {\n          str = str.split('\\n').map(function(line) {\n            return '  ' + line;\n          }).join('\\n').slice(2);\n        } else {\n          str = '\\n' + str.split('\\n').map(function(line) {\n            return '   ' + line;\n          }).join('\\n');\n        }\n      }\n    } else {\n      str = ctx.stylize('[Circular]', 'special');\n    }\n  }\n  if (isUndefined(name)) {\n    if (array && key.match(/^\\d+$/)) {\n      return str;\n    }\n    name = JSON.stringify('' + key);\n    if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n      name = name.slice(1, -1);\n      name = ctx.stylize(name, 'name');\n    } else {\n      name = name.replace(/'/g, \"\\\\'\")\n                 .replace(/\\\\\"/g, '\"')\n                 .replace(/(^\"|\"$)/g, \"'\");\n      name = ctx.stylize(name, 'string');\n    }\n  }\n\n  return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n  var numLinesEst = 0;\n  var length = output.reduce(function(prev, cur) {\n    numLinesEst++;\n    if (cur.indexOf('\\n') >= 0) numLinesEst++;\n    return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n  }, 0);\n\n  if (length > 60) {\n    return braces[0] +\n           (base === '' ? '' : base + '\\n ') +\n           ' ' +\n           output.join(',\\n  ') +\n           ' ' +\n           braces[1];\n  }\n\n  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nexports.types = require('./support/types');\n\nfunction isArray(ar) {\n  return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\nexports.types.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\nexports.types.isDate = isDate;\n\nfunction isError(e) {\n  return isObject(e) &&\n      (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\nexports.types.isNativeError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n  return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n              'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n  var d = new Date();\n  var time = [pad(d.getHours()),\n              pad(d.getMinutes()),\n              pad(d.getSeconds())].join(':');\n  return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n *     prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n  // Don't do anything if add isn't an object\n  if (!add || !isObject(add)) return origin;\n\n  var keys = Object.keys(add);\n  var i = keys.length;\n  while (i--) {\n    origin[keys[i]] = add[keys[i]];\n  }\n  return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n  if (typeof original !== 'function')\n    throw new TypeError('The \"original\" argument must be of type Function');\n\n  if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n    var fn = original[kCustomPromisifiedSymbol];\n    if (typeof fn !== 'function') {\n      throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n    }\n    Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n      value: fn, enumerable: false, writable: false, configurable: true\n    });\n    return fn;\n  }\n\n  function fn() {\n    var promiseResolve, promiseReject;\n    var promise = new Promise(function (resolve, reject) {\n      promiseResolve = resolve;\n      promiseReject = reject;\n    });\n\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n    args.push(function (err, value) {\n      if (err) {\n        promiseReject(err);\n      } else {\n        promiseResolve(value);\n      }\n    });\n\n    try {\n      original.apply(this, args);\n    } catch (err) {\n      promiseReject(err);\n    }\n\n    return promise;\n  }\n\n  Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n  if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n    value: fn, enumerable: false, writable: false, configurable: true\n  });\n  return Object.defineProperties(\n    fn,\n    getOwnPropertyDescriptors(original)\n  );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n  // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n  // Because `null` is a special error value in callbacks which means \"no error\n  // occurred\", we error-wrap so the callback consumer can distinguish between\n  // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n  if (!reason) {\n    var newReason = new Error('Promise was rejected with a falsy value');\n    newReason.reason = reason;\n    reason = newReason;\n  }\n  return cb(reason);\n}\n\nfunction callbackify(original) {\n  if (typeof original !== 'function') {\n    throw new TypeError('The \"original\" argument must be of type Function');\n  }\n\n  // We DO NOT return the promise as it gives the user a false sense that\n  // the promise is actually somehow related to the callback's execution\n  // and that the callback throwing will reject the promise.\n  function callbackified() {\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n\n    var maybeCb = args.pop();\n    if (typeof maybeCb !== 'function') {\n      throw new TypeError('The last argument must be of type Function');\n    }\n    var self = this;\n    var cb = function() {\n      return maybeCb.apply(self, arguments);\n    };\n    // In true node style we process the callback on `nextTick` with all the\n    // implications (stack, `uncaughtException`, `async_hooks`)\n    original.apply(this, args)\n      .then(function(ret) { process.nextTick(cb.bind(null, null, ret)) },\n            function(rej) { process.nextTick(callbackifyOnRejected.bind(null, rej, cb)) });\n  }\n\n  Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n  Object.defineProperties(callbackified,\n                          getOwnPropertyDescriptors(original));\n  return callbackified;\n}\nexports.callbackify = callbackify;\n", "\"use strict\"\n\nexports.TextEncoder =\n  typeof TextEncoder !== \"undefined\" ? TextEncoder : require(\"util\").TextEncoder\n\nexports.TextDecoder =\n  typeof TextDecoder !== \"undefined\" ? TextDecoder : require(\"util\").TextDecoder\n", "import { TextDecoder, TextEncoder } from 'web-encoding'\n\nexport function encodeBuffer(text: string): ArrayBuffer {\n  const encoder = new TextEncoder()\n  const encoded = encoder.encode(text)\n  return getArrayBuffer(encoded)\n}\n\nexport function decodeBuffer(buffer: ArrayBuffer, encoding?: string): string {\n  const decoder = new TextDecoder(encoding)\n  return decoder.decode(buffer)\n}\n\nexport function getArrayBuffer(array: Uint8Array): ArrayBuffer {\n  return array.buffer.slice(\n    array.byteOffset,\n    array.byteOffset + array.byteLength\n  )\n}\n", "export function uuidv4(): string {\n  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n    const r = (Math.random() * 16) | 0\n    const v = c == 'x' ? r : (r & 0x3) | 0x8\n    return v.toString(16)\n  })\n}\n", "import { Headers } from 'headers-polyfill'\nimport { invariant } from 'outvariant'\nimport { decodeBuffer } from './utils/bufferUtils'\nimport { uuidv4 } from './utils/uuid'\n\nexport interface RequestInit {\n  method?: string\n  headers?: Record<string, string | string[]> | Headers\n  credentials?: RequestCredentials\n  body?: ArrayBuffer\n}\n\nexport class IsomorphicRequest {\n  public id: string\n  public readonly url: URL\n  public readonly method: string\n  public readonly headers: Headers\n  public readonly credentials: RequestCredentials\n\n  private readonly _body: ArrayBuffer\n  private _bodyUsed: boolean\n\n  constructor(url: URL)\n  constructor(url: URL, init: RequestInit)\n  constructor(request: IsomorphicRequest)\n  constructor(input: IsomorphicRequest | URL, init: RequestInit = {}) {\n    const defaultBody = new ArrayBuffer(0)\n    this._bodyUsed = false\n\n    if (input instanceof IsomorphicRequest) {\n      this.id = input.id\n      this.url = input.url\n      this.method = input.method\n      this.headers = input.headers\n      this.credentials = input.credentials\n      this._body = input._body || defaultBody\n      return\n    }\n\n    this.id = uuidv4()\n    this.url = input\n    this.method = init.method || 'GET'\n    this.headers = new Headers(init.headers)\n    this.credentials = init.credentials || 'same-origin'\n    this._body = init.body || defaultBody\n  }\n\n  public get bodyUsed(): boolean {\n    return this._bodyUsed\n  }\n\n  public async text(): Promise<string> {\n    invariant(\n      !this.bodyUsed,\n      'Failed to execute \"text\" on \"IsomorphicRequest\": body buffer already read'\n    )\n\n    this._bodyUsed = true\n    return decodeBuffer(this._body)\n  }\n\n  public async json<T = any>(): Promise<T> {\n    invariant(\n      !this.bodyUsed,\n      'Failed to execute \"json\" on \"IsomorphicRequest\": body buffer already read'\n    )\n\n    this._bodyUsed = true\n    const text = decodeBuffer(this._body)\n    return JSON.parse(text)\n  }\n\n  public async arrayBuffer(): Promise<ArrayBuffer> {\n    invariant(\n      !this.bodyUsed,\n      'Failed to execute \"arrayBuffer\" on \"IsomorphicRequest\": body buffer already read'\n    )\n\n    this._bodyUsed = true\n    return this._body\n  }\n\n  public clone(): IsomorphicRequest {\n    return new IsomorphicRequest(this)\n  }\n}\n", "export type AnyFunction = (...args: any[]) => any\n\nexport type LazyCallbackReturnType<FnType extends AnyFunction> =\n  | Parameters<FnType>\n  | []\n\nexport interface LazyCallback<FnType extends AnyFunction> {\n  (...args: Parameters<FnType>): void\n  invoked(): Promise<LazyCallbackReturnType<FnType>>\n}\n\nexport interface LazyCallbackOptions {\n  maxCalls?: number\n  maxCallsCallback?(): void\n}\n\nexport function createLazyCallback<FnType extends AnyFunction>(\n  options: LazyCallbackOptions = {}\n): LazyCallback<FnType> {\n  let calledTimes = 0\n  let autoResolveTimeout: NodeJS.Timeout\n  let remoteResolve: (args: LazyCallbackReturnType<FnType>) => unknown\n\n  const callPromise = new Promise<LazyCallbackReturnType<FnType>>((resolve) => {\n    remoteResolve = resolve\n  }).finally(() => {\n    clearTimeout(autoResolveTimeout)\n  })\n\n  const fn: LazyCallback<FnType> = function (...args) {\n    if (options.maxCalls && calledTimes >= options.maxCalls) {\n      options.maxCallsCallback?.()\n    }\n\n    remoteResolve(args)\n    calledTimes++\n  }\n\n  fn.invoked = async () => {\n    // Immediately resolve the callback if it hasn't been called already.\n    autoResolveTimeout = setTimeout(() => {\n      remoteResolve([])\n    }, 0)\n\n    return callPromise\n  }\n\n  return fn\n}\n", "import { invariant } from 'outvariant'\nimport { MockedResponse } from './glossary'\nimport { IsomorphicRequest } from './IsomorphicRequest'\nimport { createLazyCallback, LazyCallback } from './utils/createLazyCallback'\n\nexport class InteractiveIsomorphicRequest extends IsomorphicRequest {\n  public respondWith: LazyCallback<(response: MockedResponse) => void>\n\n  constructor(request: IsomorphicRequest) {\n    super(request)\n\n    this.respondWith = createLazyCallback({\n      maxCalls: 1,\n      maxCallsCallback: () => {\n        invariant(\n          false,\n          'Failed to respond to \"%s %s\" request: the \"request\" event has already been responded to.',\n          this.method,\n          this.url.href\n        )\n      },\n    })\n  }\n}\n", "/**\n * Removes query parameters and hashes from a given URL.\n */\nexport function getCleanUrl(url: URL, isAbsolute: boolean = true): string {\n  return [isAbsolute && url.origin, url.pathname].filter(Boolean).join('')\n}\n", "export * from './glossary'\nexport * from './Interceptor'\nexport * from './BatchInterceptor'\nexport * from './IsomorphicRequest'\nexport * from './InteractiveIsomorphicRequest'\n\n/* Utils */\nexport { getCleanUrl } from './utils/getCleanUrl'\nexport { encodeBuffer, decodeBuffer } from './utils/bufferUtils'\n", "\"use strict\";\n\nvar defaultParseOptions = {\n  decodeValues: true,\n  map: false,\n  silent: false,\n};\n\nfunction isNonEmptyString(str) {\n  return typeof str === \"string\" && !!str.trim();\n}\n\nfunction parseString(setCookieValue, options) {\n  var parts = setCookieValue.split(\";\").filter(isNonEmptyString);\n\n  var nameValuePairStr = parts.shift();\n  var parsed = parseNameValuePair(nameValuePairStr);\n  var name = parsed.name;\n  var value = parsed.value;\n\n  options = options\n    ? Object.assign({}, defaultParseOptions, options)\n    : defaultParseOptions;\n\n  try {\n    value = options.decodeValues ? decodeURIComponent(value) : value; // decode cookie value\n  } catch (e) {\n    console.error(\n      \"set-cookie-parser encountered an error while decoding a cookie with value '\" +\n        value +\n        \"'. Set options.decodeValues to false to disable this feature.\",\n      e\n    );\n  }\n\n  var cookie = {\n    name: name,\n    value: value,\n  };\n\n  parts.forEach(function (part) {\n    var sides = part.split(\"=\");\n    var key = sides.shift().trimLeft().toLowerCase();\n    var value = sides.join(\"=\");\n    if (key === \"expires\") {\n      cookie.expires = new Date(value);\n    } else if (key === \"max-age\") {\n      cookie.maxAge = parseInt(value, 10);\n    } else if (key === \"secure\") {\n      cookie.secure = true;\n    } else if (key === \"httponly\") {\n      cookie.httpOnly = true;\n    } else if (key === \"samesite\") {\n      cookie.sameSite = value;\n    } else {\n      cookie[key] = value;\n    }\n  });\n\n  return cookie;\n}\n\nfunction parseNameValuePair(nameValuePairStr) {\n  // Parses name-value-pair according to rfc6265bis draft\n\n  var name = \"\";\n  var value = \"\";\n  var nameValueArr = nameValuePairStr.split(\"=\");\n  if (nameValueArr.length > 1) {\n    name = nameValueArr.shift();\n    value = nameValueArr.join(\"=\"); // everything after the first =, joined by a \"=\" if there was more than one part\n  } else {\n    value = nameValuePairStr;\n  }\n\n  return { name: name, value: value };\n}\n\nfunction parse(input, options) {\n  options = options\n    ? Object.assign({}, defaultParseOptions, options)\n    : defaultParseOptions;\n\n  if (!input) {\n    if (!options.map) {\n      return [];\n    } else {\n      return {};\n    }\n  }\n\n  if (input.headers && input.headers[\"set-cookie\"]) {\n    // fast-path for node.js (which automatically normalizes header names to lower-case\n    input = input.headers[\"set-cookie\"];\n  } else if (input.headers) {\n    // slow-path for other environments - see #25\n    var sch =\n      input.headers[\n        Object.keys(input.headers).find(function (key) {\n          return key.toLowerCase() === \"set-cookie\";\n        })\n      ];\n    // warn if called on a request-like object with a cookie header rather than a set-cookie header - see #34, 36\n    if (!sch && input.headers.cookie && !options.silent) {\n      console.warn(\n        \"Warning: set-cookie-parser appears to have been called on a request object. It is designed to parse Set-Cookie headers from responses, not Cookie headers from requests. Set the option {silent: true} to suppress this warning.\"\n      );\n    }\n    input = sch;\n  }\n  if (!Array.isArray(input)) {\n    input = [input];\n  }\n\n  options = options\n    ? Object.assign({}, defaultParseOptions, options)\n    : defaultParseOptions;\n\n  if (!options.map) {\n    return input.filter(isNonEmptyString).map(function (str) {\n      return parseString(str, options);\n    });\n  } else {\n    var cookies = {};\n    return input.filter(isNonEmptyString).reduce(function (cookies, str) {\n      var cookie = parseString(str, options);\n      cookies[cookie.name] = cookie;\n      return cookies;\n    }, cookies);\n  }\n}\n\n/*\n  Set-Cookie header field-values are sometimes comma joined in one string. This splits them without choking on commas\n  that are within a single set-cookie field-value, such as in the Expires portion.\n\n  This is uncommon, but explicitly allowed - see https://tools.ietf.org/html/rfc2616#section-4.2\n  Node.js does this for every header *except* set-cookie - see https://github.com/nodejs/node/blob/d5e363b77ebaf1caf67cd7528224b651c86815c1/lib/_http_incoming.js#L128\n  React Native's fetch does this for *every* header, including set-cookie.\n\n  Based on: https://github.com/google/j2objc/commit/16820fdbc8f76ca0c33472810ce0cb03d20efe25\n  Credits to: https://github.com/tomball for original and https://github.com/chrusart for JavaScript implementation\n*/\nfunction splitCookiesString(cookiesString) {\n  if (Array.isArray(cookiesString)) {\n    return cookiesString;\n  }\n  if (typeof cookiesString !== \"string\") {\n    return [];\n  }\n\n  var cookiesStrings = [];\n  var pos = 0;\n  var start;\n  var ch;\n  var lastComma;\n  var nextStart;\n  var cookiesSeparatorFound;\n\n  function skipWhitespace() {\n    while (pos < cookiesString.length && /\\s/.test(cookiesString.charAt(pos))) {\n      pos += 1;\n    }\n    return pos < cookiesString.length;\n  }\n\n  function notSpecialChar() {\n    ch = cookiesString.charAt(pos);\n\n    return ch !== \"=\" && ch !== \";\" && ch !== \",\";\n  }\n\n  while (pos < cookiesString.length) {\n    start = pos;\n    cookiesSeparatorFound = false;\n\n    while (skipWhitespace()) {\n      ch = cookiesString.charAt(pos);\n      if (ch === \",\") {\n        // ',' is a cookie separator if we have later first '=', not ';' or ','\n        lastComma = pos;\n        pos += 1;\n\n        skipWhitespace();\n        nextStart = pos;\n\n        while (pos < cookiesString.length && notSpecialChar()) {\n          pos += 1;\n        }\n\n        // currently special character\n        if (pos < cookiesString.length && cookiesString.charAt(pos) === \"=\") {\n          // we found cookies separator\n          cookiesSeparatorFound = true;\n          // pos is inside the next cookie, so back up and return it.\n          pos = nextStart;\n          cookiesStrings.push(cookiesString.substring(start, lastComma));\n          start = pos;\n        } else {\n          // in param ',' or param separator ';',\n          // we continue from that comma\n          pos = lastComma + 1;\n        }\n      } else {\n        pos += 1;\n      }\n    }\n\n    if (!cookiesSeparatorFound || pos >= cookiesString.length) {\n      cookiesStrings.push(cookiesString.substring(start, cookiesString.length));\n    }\n  }\n\n  return cookiesStrings;\n}\n\nmodule.exports = parse;\nmodule.exports.parse = parse;\nmodule.exports.parseString = parseString;\nmodule.exports.splitCookiesString = splitCookiesString;\n", "\"use strict\";\nvar __rest = (this && this.__rest) || function (s, e) {\n    var t = {};\n    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n        t[p] = s[p];\n    if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n                t[p[i]] = s[p[i]];\n        }\n    return t;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.store = exports.PERSISTENCY_KEY = void 0;\nconst set_cookie_parser_1 = require(\"set-cookie-parser\");\nexports.PERSISTENCY_KEY = 'MSW_COOKIE_STORE';\nfunction supportsLocalStorage() {\n    try {\n        if (localStorage == null) {\n            return false;\n        }\n        const testKey = exports.PERSISTENCY_KEY + '_test';\n        localStorage.setItem(testKey, 'test');\n        localStorage.getItem(testKey);\n        localStorage.removeItem(testKey);\n        return true;\n    }\n    catch (error) {\n        return false;\n    }\n}\nclass CookieStore {\n    constructor() {\n        this.store = new Map();\n    }\n    /**\n     * Sets the given request cookies into the store.\n     * Respects the `request.credentials` policy.\n     */\n    add(request, response) {\n        if (request.credentials === 'omit') {\n            return;\n        }\n        const requestUrl = new URL(request.url);\n        const responseCookies = response.headers.get('set-cookie');\n        if (!responseCookies) {\n            return;\n        }\n        const now = Date.now();\n        const parsedResponseCookies = set_cookie_parser_1.parse(responseCookies).map((_a) => {\n            var { maxAge } = _a, cookie = __rest(_a, [\"maxAge\"]);\n            return (Object.assign(Object.assign({}, cookie), { expires: maxAge === undefined ? cookie.expires : new Date(now + maxAge * 1000), maxAge }));\n        });\n        const prevCookies = this.store.get(requestUrl.origin) || new Map();\n        parsedResponseCookies.forEach((cookie) => {\n            this.store.set(requestUrl.origin, prevCookies.set(cookie.name, cookie));\n        });\n    }\n    /**\n     * Returns cookies relevant to the given request\n     * and its `request.credentials` policy.\n     */\n    get(request) {\n        this.deleteExpiredCookies();\n        const requestUrl = new URL(request.url);\n        const originCookies = this.store.get(requestUrl.origin) || new Map();\n        switch (request.credentials) {\n            case 'include': {\n                // Support running this method in Node.js.\n                if (typeof document === 'undefined') {\n                    return originCookies;\n                }\n                const documentCookies = set_cookie_parser_1.parse(document.cookie);\n                documentCookies.forEach((cookie) => {\n                    originCookies.set(cookie.name, cookie);\n                });\n                return originCookies;\n            }\n            case 'same-origin': {\n                return originCookies;\n            }\n            default:\n                return new Map();\n        }\n    }\n    /**\n     * Returns a collection of all stored cookies.\n     */\n    getAll() {\n        this.deleteExpiredCookies();\n        return this.store;\n    }\n    /**\n     * Deletes all cookies associated with the given request.\n     */\n    deleteAll(request) {\n        const requestUrl = new URL(request.url);\n        this.store.delete(requestUrl.origin);\n    }\n    /**\n     * Clears the entire cookie store.\n     */\n    clear() {\n        this.store.clear();\n    }\n    /**\n     * Hydrates the virtual cookie store from the `localStorage` if defined.\n     */\n    hydrate() {\n        if (!supportsLocalStorage()) {\n            return;\n        }\n        const persistedCookies = localStorage.getItem(exports.PERSISTENCY_KEY);\n        if (!persistedCookies) {\n            return;\n        }\n        try {\n            const parsedCookies = JSON.parse(persistedCookies);\n            parsedCookies.forEach(([origin, cookies]) => {\n                this.store.set(origin, new Map(cookies.map((_a) => {\n                    var [token, _b] = _a, { expires } = _b, cookie = __rest(_b, [\"expires\"]);\n                    return [\n                        token,\n                        expires === undefined\n                            ? cookie\n                            : Object.assign(Object.assign({}, cookie), { expires: new Date(expires) }),\n                    ];\n                })));\n            });\n        }\n        catch (error) {\n            console.warn(`\n[virtual-cookie] Failed to parse a stored cookie from the localStorage (key \"${exports.PERSISTENCY_KEY}\").\n\nStored value:\n${localStorage.getItem(exports.PERSISTENCY_KEY)}\n\nThrown exception:\n${error}\n\nInvalid value has been removed from localStorage to prevent subsequent failed parsing attempts.`);\n            localStorage.removeItem(exports.PERSISTENCY_KEY);\n        }\n    }\n    /**\n     * Persists the current virtual cookies into the `localStorage` if defined,\n     * so they are available on the next page load.\n     */\n    persist() {\n        if (!supportsLocalStorage()) {\n            return;\n        }\n        const serializedCookies = Array.from(this.store.entries()).map(([origin, cookies]) => {\n            return [origin, Array.from(cookies.entries())];\n        });\n        localStorage.setItem(exports.PERSISTENCY_KEY, JSON.stringify(serializedCookies));\n    }\n    deleteExpiredCookies() {\n        const now = Date.now();\n        this.store.forEach((originCookies, origin) => {\n            originCookies.forEach(({ expires, name }) => {\n                if (expires !== undefined && expires.getTime() <= now) {\n                    originCookies.delete(name);\n                }\n            });\n            if (originCookies.size === 0) {\n                this.store.delete(origin);\n            }\n        });\n    }\n}\nexports.store = new CookieStore();\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./store\"), exports);\n", "'use strict';\nmodule.exports = (function()\n{\n  function _min(d0, d1, d2, bx, ay)\n  {\n    return d0 < d1 || d2 < d1\n        ? d0 > d2\n            ? d2 + 1\n            : d0 + 1\n        : bx === ay\n            ? d1\n            : d1 + 1;\n  }\n\n  return function(a, b)\n  {\n    if (a === b) {\n      return 0;\n    }\n\n    if (a.length > b.length) {\n      var tmp = a;\n      a = b;\n      b = tmp;\n    }\n\n    var la = a.length;\n    var lb = b.length;\n\n    while (la > 0 && (a.charCodeAt(la - 1) === b.charCodeAt(lb - 1))) {\n      la--;\n      lb--;\n    }\n\n    var offset = 0;\n\n    while (offset < la && (a.charCodeAt(offset) === b.charCodeAt(offset))) {\n      offset++;\n    }\n\n    la -= offset;\n    lb -= offset;\n\n    if (la === 0 || lb < 3) {\n      return lb;\n    }\n\n    var x = 0;\n    var y;\n    var d0;\n    var d1;\n    var d2;\n    var d3;\n    var dd;\n    var dy;\n    var ay;\n    var bx0;\n    var bx1;\n    var bx2;\n    var bx3;\n\n    var vector = [];\n\n    for (y = 0; y < la; y++) {\n      vector.push(y + 1);\n      vector.push(a.charCodeAt(offset + y));\n    }\n\n    var len = vector.length - 1;\n\n    for (; x < lb - 3;) {\n      bx0 = b.charCodeAt(offset + (d0 = x));\n      bx1 = b.charCodeAt(offset + (d1 = x + 1));\n      bx2 = b.charCodeAt(offset + (d2 = x + 2));\n      bx3 = b.charCodeAt(offset + (d3 = x + 3));\n      dd = (x += 4);\n      for (y = 0; y < len; y += 2) {\n        dy = vector[y];\n        ay = vector[y + 1];\n        d0 = _min(dy, d0, d1, bx0, ay);\n        d1 = _min(d0, d1, d2, bx1, ay);\n        d2 = _min(d1, d2, d3, bx2, ay);\n        dd = _min(d2, d3, dd, bx3, ay);\n        vector[y] = dd;\n        d3 = d2;\n        d2 = d1;\n        d1 = d0;\n        d0 = dy;\n      }\n    }\n\n    for (; x < lb;) {\n      bx0 = b.charCodeAt(offset + (d0 = x));\n      dd = ++x;\n      for (y = 0; y < len; y += 2) {\n        dy = vector[y];\n        vector[y] = dd = _min(dy, d0, dd, bx0, vector[y + 1]);\n        d0 = dy;\n      }\n    }\n\n    return dd;\n  };\n})();\n\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.versionInfo = exports.version = void 0;\n// Note: This file is autogenerated using \"resources/gen-version.js\" script and\n// automatically updated by \"npm version\" command.\n\n/**\n * A string containing the version of the GraphQL.js library\n */\nconst version = '16.6.0';\n/**\n * An object containing the components of the GraphQL.js version string\n */\n\nexports.version = version;\nconst versionInfo = Object.freeze({\n  major: 16,\n  minor: 6,\n  patch: 0,\n  preReleaseTag: null,\n});\nexports.versionInfo = versionInfo;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.devAssert = devAssert;\n\nfunction devAssert(condition, message) {\n  const booleanCondition = Boolean(condition);\n\n  if (!booleanCondition) {\n    throw new Error(message);\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.isPromise = isPromise;\n\n/**\n * Returns true if the value acts like a Promise, i.e. has a \"then\" function,\n * otherwise returns false.\n */\nfunction isPromise(value) {\n  return (\n    typeof (value === null || value === void 0 ? void 0 : value.then) ===\n    'function'\n  );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.isObjectLike = isObjectLike;\n\n/**\n * Return true if `value` is object-like. A value is object-like if it's not\n * `null` and has a `typeof` result of \"object\".\n */\nfunction isObjectLike(value) {\n  return typeof value == 'object' && value !== null;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.invariant = invariant;\n\nfunction invariant(condition, message) {\n  const booleanCondition = Boolean(condition);\n\n  if (!booleanCondition) {\n    throw new Error(\n      message != null ? message : 'Unexpected invariant triggered.',\n    );\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.getLocation = getLocation;\n\nvar _invariant = require('../jsutils/invariant.js');\n\nconst LineRegExp = /\\r\\n|[\\n\\r]/g;\n/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nfunction getLocation(source, position) {\n  let lastLineStart = 0;\n  let line = 1;\n\n  for (const match of source.body.matchAll(LineRegExp)) {\n    typeof match.index === 'number' || (0, _invariant.invariant)(false);\n\n    if (match.index >= position) {\n      break;\n    }\n\n    lastLineStart = match.index + match[0].length;\n    line += 1;\n  }\n\n  return {\n    line,\n    column: position + 1 - lastLineStart,\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.printLocation = printLocation;\nexports.printSourceLocation = printSourceLocation;\n\nvar _location = require('./location.js');\n\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\nfunction printLocation(location) {\n  return printSourceLocation(\n    location.source,\n    (0, _location.getLocation)(location.source, location.start),\n  );\n}\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nfunction printSourceLocation(source, sourceLocation) {\n  const firstLineColumnOffset = source.locationOffset.column - 1;\n  const body = ''.padStart(firstLineColumnOffset) + source.body;\n  const lineIndex = sourceLocation.line - 1;\n  const lineOffset = source.locationOffset.line - 1;\n  const lineNum = sourceLocation.line + lineOffset;\n  const columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;\n  const columnNum = sourceLocation.column + columnOffset;\n  const locationStr = `${source.name}:${lineNum}:${columnNum}\\n`;\n  const lines = body.split(/\\r\\n|[\\n\\r]/g);\n  const locationLine = lines[lineIndex]; // Special case for minified documents\n\n  if (locationLine.length > 120) {\n    const subLineIndex = Math.floor(columnNum / 80);\n    const subLineColumnNum = columnNum % 80;\n    const subLines = [];\n\n    for (let i = 0; i < locationLine.length; i += 80) {\n      subLines.push(locationLine.slice(i, i + 80));\n    }\n\n    return (\n      locationStr +\n      printPrefixedLines([\n        [`${lineNum} |`, subLines[0]],\n        ...subLines.slice(1, subLineIndex + 1).map((subLine) => ['|', subLine]),\n        ['|', '^'.padStart(subLineColumnNum)],\n        ['|', subLines[subLineIndex + 1]],\n      ])\n    );\n  }\n\n  return (\n    locationStr +\n    printPrefixedLines([\n      // Lines specified like this: [\"prefix\", \"string\"],\n      [`${lineNum - 1} |`, lines[lineIndex - 1]],\n      [`${lineNum} |`, locationLine],\n      ['|', '^'.padStart(columnNum)],\n      [`${lineNum + 1} |`, lines[lineIndex + 1]],\n    ])\n  );\n}\n\nfunction printPrefixedLines(lines) {\n  const existingLines = lines.filter(([_, line]) => line !== undefined);\n  const padLen = Math.max(...existingLines.map(([prefix]) => prefix.length));\n  return existingLines\n    .map(([prefix, line]) => prefix.padStart(padLen) + (line ? ' ' + line : ''))\n    .join('\\n');\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.GraphQLError = void 0;\nexports.formatError = formatError;\nexports.printError = printError;\n\nvar _isObjectLike = require('../jsutils/isObjectLike.js');\n\nvar _location = require('../language/location.js');\n\nvar _printLocation = require('../language/printLocation.js');\n\nfunction toNormalizedOptions(args) {\n  const firstArg = args[0];\n\n  if (firstArg == null || 'kind' in firstArg || 'length' in firstArg) {\n    return {\n      nodes: firstArg,\n      source: args[1],\n      positions: args[2],\n      path: args[3],\n      originalError: args[4],\n      extensions: args[5],\n    };\n  }\n\n  return firstArg;\n}\n/**\n * A GraphQLError describes an Error found during the parse, validate, or\n * execute phases of performing a GraphQL operation. In addition to a message\n * and stack trace, it also includes information about the locations in a\n * GraphQL document and/or execution result that correspond to the Error.\n */\n\nclass GraphQLError extends Error {\n  /**\n   * An array of `{ line, column }` locations within the source GraphQL document\n   * which correspond to this error.\n   *\n   * Errors during validation often contain multiple locations, for example to\n   * point out two things with the same name. Errors during execution include a\n   * single location, the field which produced the error.\n   *\n   * Enumerable, and appears in the result of JSON.stringify().\n   */\n\n  /**\n   * An array describing the JSON-path into the execution response which\n   * corresponds to this error. Only included for errors during execution.\n   *\n   * Enumerable, and appears in the result of JSON.stringify().\n   */\n\n  /**\n   * An array of GraphQL AST Nodes corresponding to this error.\n   */\n\n  /**\n   * The source GraphQL document for the first location of this error.\n   *\n   * Note that if this Error represents more than one node, the source may not\n   * represent nodes after the first node.\n   */\n\n  /**\n   * An array of character offsets within the source GraphQL document\n   * which correspond to this error.\n   */\n\n  /**\n   * The original error thrown from a field resolver during execution.\n   */\n\n  /**\n   * Extension fields to add to the formatted error.\n   */\n\n  /**\n   * @deprecated Please use the `GraphQLErrorOptions` constructor overload instead.\n   */\n  constructor(message, ...rawArgs) {\n    var _this$nodes, _nodeLocations$, _ref;\n\n    const { nodes, source, positions, path, originalError, extensions } =\n      toNormalizedOptions(rawArgs);\n    super(message);\n    this.name = 'GraphQLError';\n    this.path = path !== null && path !== void 0 ? path : undefined;\n    this.originalError =\n      originalError !== null && originalError !== void 0\n        ? originalError\n        : undefined; // Compute list of blame nodes.\n\n    this.nodes = undefinedIfEmpty(\n      Array.isArray(nodes) ? nodes : nodes ? [nodes] : undefined,\n    );\n    const nodeLocations = undefinedIfEmpty(\n      (_this$nodes = this.nodes) === null || _this$nodes === void 0\n        ? void 0\n        : _this$nodes.map((node) => node.loc).filter((loc) => loc != null),\n    ); // Compute locations in the source for the given nodes/positions.\n\n    this.source =\n      source !== null && source !== void 0\n        ? source\n        : nodeLocations === null || nodeLocations === void 0\n        ? void 0\n        : (_nodeLocations$ = nodeLocations[0]) === null ||\n          _nodeLocations$ === void 0\n        ? void 0\n        : _nodeLocations$.source;\n    this.positions =\n      positions !== null && positions !== void 0\n        ? positions\n        : nodeLocations === null || nodeLocations === void 0\n        ? void 0\n        : nodeLocations.map((loc) => loc.start);\n    this.locations =\n      positions && source\n        ? positions.map((pos) => (0, _location.getLocation)(source, pos))\n        : nodeLocations === null || nodeLocations === void 0\n        ? void 0\n        : nodeLocations.map((loc) =>\n            (0, _location.getLocation)(loc.source, loc.start),\n          );\n    const originalExtensions = (0, _isObjectLike.isObjectLike)(\n      originalError === null || originalError === void 0\n        ? void 0\n        : originalError.extensions,\n    )\n      ? originalError === null || originalError === void 0\n        ? void 0\n        : originalError.extensions\n      : undefined;\n    this.extensions =\n      (_ref =\n        extensions !== null && extensions !== void 0\n          ? extensions\n          : originalExtensions) !== null && _ref !== void 0\n        ? _ref\n        : Object.create(null); // Only properties prescribed by the spec should be enumerable.\n    // Keep the rest as non-enumerable.\n\n    Object.defineProperties(this, {\n      message: {\n        writable: true,\n        enumerable: true,\n      },\n      name: {\n        enumerable: false,\n      },\n      nodes: {\n        enumerable: false,\n      },\n      source: {\n        enumerable: false,\n      },\n      positions: {\n        enumerable: false,\n      },\n      originalError: {\n        enumerable: false,\n      },\n    }); // Include (non-enumerable) stack trace.\n\n    /* c8 ignore start */\n    // FIXME: https://github.com/graphql/graphql-js/issues/2317\n\n    if (\n      originalError !== null &&\n      originalError !== void 0 &&\n      originalError.stack\n    ) {\n      Object.defineProperty(this, 'stack', {\n        value: originalError.stack,\n        writable: true,\n        configurable: true,\n      });\n    } else if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, GraphQLError);\n    } else {\n      Object.defineProperty(this, 'stack', {\n        value: Error().stack,\n        writable: true,\n        configurable: true,\n      });\n    }\n    /* c8 ignore stop */\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLError';\n  }\n\n  toString() {\n    let output = this.message;\n\n    if (this.nodes) {\n      for (const node of this.nodes) {\n        if (node.loc) {\n          output += '\\n\\n' + (0, _printLocation.printLocation)(node.loc);\n        }\n      }\n    } else if (this.source && this.locations) {\n      for (const location of this.locations) {\n        output +=\n          '\\n\\n' +\n          (0, _printLocation.printSourceLocation)(this.source, location);\n      }\n    }\n\n    return output;\n  }\n\n  toJSON() {\n    const formattedError = {\n      message: this.message,\n    };\n\n    if (this.locations != null) {\n      formattedError.locations = this.locations;\n    }\n\n    if (this.path != null) {\n      formattedError.path = this.path;\n    }\n\n    if (this.extensions != null && Object.keys(this.extensions).length > 0) {\n      formattedError.extensions = this.extensions;\n    }\n\n    return formattedError;\n  }\n}\n\nexports.GraphQLError = GraphQLError;\n\nfunction undefinedIfEmpty(array) {\n  return array === undefined || array.length === 0 ? undefined : array;\n}\n/**\n * See: https://spec.graphql.org/draft/#sec-Errors\n */\n\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n *\n * @deprecated Please use `error.toString` instead. Will be removed in v17\n */\nfunction printError(error) {\n  return error.toString();\n}\n/**\n * Given a GraphQLError, format it according to the rules described by the\n * Response Format, Errors section of the GraphQL Specification.\n *\n * @deprecated Please use `error.toJSON` instead. Will be removed in v17\n */\n\nfunction formatError(error) {\n  return error.toJSON();\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.syntaxError = syntaxError;\n\nvar _GraphQLError = require('./GraphQLError.js');\n\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\nfunction syntaxError(source, position, description) {\n  return new _GraphQLError.GraphQLError(`Syntax Error: ${description}`, {\n    source,\n    positions: [position],\n  });\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.Token =\n  exports.QueryDocumentKeys =\n  exports.OperationTypeNode =\n  exports.Location =\n    void 0;\nexports.isNode = isNode;\n\n/**\n * Contains a range of UTF-8 character offsets and token references that\n * identify the region of the source from which the AST derived.\n */\nclass Location {\n  /**\n   * The character offset at which this Node begins.\n   */\n\n  /**\n   * The character offset at which this Node ends.\n   */\n\n  /**\n   * The Token at which this Node begins.\n   */\n\n  /**\n   * The Token at which this Node ends.\n   */\n\n  /**\n   * The Source document the AST represents.\n   */\n  constructor(startToken, endToken, source) {\n    this.start = startToken.start;\n    this.end = endToken.end;\n    this.startToken = startToken;\n    this.endToken = endToken;\n    this.source = source;\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'Location';\n  }\n\n  toJSON() {\n    return {\n      start: this.start,\n      end: this.end,\n    };\n  }\n}\n/**\n * Represents a range of characters represented by a lexical token\n * within a Source.\n */\n\nexports.Location = Location;\n\nclass Token {\n  /**\n   * The kind of Token.\n   */\n\n  /**\n   * The character offset at which this Node begins.\n   */\n\n  /**\n   * The character offset at which this Node ends.\n   */\n\n  /**\n   * The 1-indexed line number on which this Token appears.\n   */\n\n  /**\n   * The 1-indexed column number at which this Token begins.\n   */\n\n  /**\n   * For non-punctuation tokens, represents the interpreted value of the token.\n   *\n   * Note: is undefined for punctuation tokens, but typed as string for\n   * convenience in the parser.\n   */\n\n  /**\n   * Tokens exist as nodes in a double-linked-list amongst all tokens\n   * including ignored tokens. <SOF> is always the first node and <EOF>\n   * the last.\n   */\n  constructor(kind, start, end, line, column, value) {\n    this.kind = kind;\n    this.start = start;\n    this.end = end;\n    this.line = line;\n    this.column = column; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\n    this.value = value;\n    this.prev = null;\n    this.next = null;\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'Token';\n  }\n\n  toJSON() {\n    return {\n      kind: this.kind,\n      value: this.value,\n      line: this.line,\n      column: this.column,\n    };\n  }\n}\n/**\n * The list of all possible AST node types.\n */\n\nexports.Token = Token;\n\n/**\n * @internal\n */\nconst QueryDocumentKeys = {\n  Name: [],\n  Document: ['definitions'],\n  OperationDefinition: [\n    'name',\n    'variableDefinitions',\n    'directives',\n    'selectionSet',\n  ],\n  VariableDefinition: ['variable', 'type', 'defaultValue', 'directives'],\n  Variable: ['name'],\n  SelectionSet: ['selections'],\n  Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n  Argument: ['name', 'value'],\n  FragmentSpread: ['name', 'directives'],\n  InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n  FragmentDefinition: [\n    'name', // Note: fragment variable definitions are deprecated and will removed in v17.0.0\n    'variableDefinitions',\n    'typeCondition',\n    'directives',\n    'selectionSet',\n  ],\n  IntValue: [],\n  FloatValue: [],\n  StringValue: [],\n  BooleanValue: [],\n  NullValue: [],\n  EnumValue: [],\n  ListValue: ['values'],\n  ObjectValue: ['fields'],\n  ObjectField: ['name', 'value'],\n  Directive: ['name', 'arguments'],\n  NamedType: ['name'],\n  ListType: ['type'],\n  NonNullType: ['type'],\n  SchemaDefinition: ['description', 'directives', 'operationTypes'],\n  OperationTypeDefinition: ['type'],\n  ScalarTypeDefinition: ['description', 'name', 'directives'],\n  ObjectTypeDefinition: [\n    'description',\n    'name',\n    'interfaces',\n    'directives',\n    'fields',\n  ],\n  FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n  InputValueDefinition: [\n    'description',\n    'name',\n    'type',\n    'defaultValue',\n    'directives',\n  ],\n  InterfaceTypeDefinition: [\n    'description',\n    'name',\n    'interfaces',\n    'directives',\n    'fields',\n  ],\n  UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n  EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n  EnumValueDefinition: ['description', 'name', 'directives'],\n  InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n  DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n  SchemaExtension: ['directives', 'operationTypes'],\n  ScalarTypeExtension: ['name', 'directives'],\n  ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n  InterfaceTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n  UnionTypeExtension: ['name', 'directives', 'types'],\n  EnumTypeExtension: ['name', 'directives', 'values'],\n  InputObjectTypeExtension: ['name', 'directives', 'fields'],\n};\nexports.QueryDocumentKeys = QueryDocumentKeys;\nconst kindValues = new Set(Object.keys(QueryDocumentKeys));\n/**\n * @internal\n */\n\nfunction isNode(maybeNode) {\n  const maybeKind =\n    maybeNode === null || maybeNode === void 0 ? void 0 : maybeNode.kind;\n  return typeof maybeKind === 'string' && kindValues.has(maybeKind);\n}\n/** Name */\n\nvar OperationTypeNode;\nexports.OperationTypeNode = OperationTypeNode;\n\n(function (OperationTypeNode) {\n  OperationTypeNode['QUERY'] = 'query';\n  OperationTypeNode['MUTATION'] = 'mutation';\n  OperationTypeNode['SUBSCRIPTION'] = 'subscription';\n})(OperationTypeNode || (exports.OperationTypeNode = OperationTypeNode = {}));\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.DirectiveLocation = void 0;\n\n/**\n * The set of allowed directive location values.\n */\nvar DirectiveLocation;\nexports.DirectiveLocation = DirectiveLocation;\n\n(function (DirectiveLocation) {\n  DirectiveLocation['QUERY'] = 'QUERY';\n  DirectiveLocation['MUTATION'] = 'MUTATION';\n  DirectiveLocation['SUBSCRIPTION'] = 'SUBSCRIPTION';\n  DirectiveLocation['FIELD'] = 'FIELD';\n  DirectiveLocation['FRAGMENT_DEFINITION'] = 'FRAGMENT_DEFINITION';\n  DirectiveLocation['FRAGMENT_SPREAD'] = 'FRAGMENT_SPREAD';\n  DirectiveLocation['INLINE_FRAGMENT'] = 'INLINE_FRAGMENT';\n  DirectiveLocation['VARIABLE_DEFINITION'] = 'VARIABLE_DEFINITION';\n  DirectiveLocation['SCHEMA'] = 'SCHEMA';\n  DirectiveLocation['SCALAR'] = 'SCALAR';\n  DirectiveLocation['OBJECT'] = 'OBJECT';\n  DirectiveLocation['FIELD_DEFINITION'] = 'FIELD_DEFINITION';\n  DirectiveLocation['ARGUMENT_DEFINITION'] = 'ARGUMENT_DEFINITION';\n  DirectiveLocation['INTERFACE'] = 'INTERFACE';\n  DirectiveLocation['UNION'] = 'UNION';\n  DirectiveLocation['ENUM'] = 'ENUM';\n  DirectiveLocation['ENUM_VALUE'] = 'ENUM_VALUE';\n  DirectiveLocation['INPUT_OBJECT'] = 'INPUT_OBJECT';\n  DirectiveLocation['INPUT_FIELD_DEFINITION'] = 'INPUT_FIELD_DEFINITION';\n})(DirectiveLocation || (exports.DirectiveLocation = DirectiveLocation = {}));\n/**\n * The enum type representing the directive location values.\n *\n * @deprecated Please use `DirectiveLocation`. Will be remove in v17.\n */\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.Kind = void 0;\n\n/**\n * The set of allowed kind values for AST nodes.\n */\nvar Kind;\nexports.Kind = Kind;\n\n(function (Kind) {\n  Kind['NAME'] = 'Name';\n  Kind['DOCUMENT'] = 'Document';\n  Kind['OPERATION_DEFINITION'] = 'OperationDefinition';\n  Kind['VARIABLE_DEFINITION'] = 'VariableDefinition';\n  Kind['SELECTION_SET'] = 'SelectionSet';\n  Kind['FIELD'] = 'Field';\n  Kind['ARGUMENT'] = 'Argument';\n  Kind['FRAGMENT_SPREAD'] = 'FragmentSpread';\n  Kind['INLINE_FRAGMENT'] = 'InlineFragment';\n  Kind['FRAGMENT_DEFINITION'] = 'FragmentDefinition';\n  Kind['VARIABLE'] = 'Variable';\n  Kind['INT'] = 'IntValue';\n  Kind['FLOAT'] = 'FloatValue';\n  Kind['STRING'] = 'StringValue';\n  Kind['BOOLEAN'] = 'BooleanValue';\n  Kind['NULL'] = 'NullValue';\n  Kind['ENUM'] = 'EnumValue';\n  Kind['LIST'] = 'ListValue';\n  Kind['OBJECT'] = 'ObjectValue';\n  Kind['OBJECT_FIELD'] = 'ObjectField';\n  Kind['DIRECTIVE'] = 'Directive';\n  Kind['NAMED_TYPE'] = 'NamedType';\n  Kind['LIST_TYPE'] = 'ListType';\n  Kind['NON_NULL_TYPE'] = 'NonNullType';\n  Kind['SCHEMA_DEFINITION'] = 'SchemaDefinition';\n  Kind['OPERATION_TYPE_DEFINITION'] = 'OperationTypeDefinition';\n  Kind['SCALAR_TYPE_DEFINITION'] = 'ScalarTypeDefinition';\n  Kind['OBJECT_TYPE_DEFINITION'] = 'ObjectTypeDefinition';\n  Kind['FIELD_DEFINITION'] = 'FieldDefinition';\n  Kind['INPUT_VALUE_DEFINITION'] = 'InputValueDefinition';\n  Kind['INTERFACE_TYPE_DEFINITION'] = 'InterfaceTypeDefinition';\n  Kind['UNION_TYPE_DEFINITION'] = 'UnionTypeDefinition';\n  Kind['ENUM_TYPE_DEFINITION'] = 'EnumTypeDefinition';\n  Kind['ENUM_VALUE_DEFINITION'] = 'EnumValueDefinition';\n  Kind['INPUT_OBJECT_TYPE_DEFINITION'] = 'InputObjectTypeDefinition';\n  Kind['DIRECTIVE_DEFINITION'] = 'DirectiveDefinition';\n  Kind['SCHEMA_EXTENSION'] = 'SchemaExtension';\n  Kind['SCALAR_TYPE_EXTENSION'] = 'ScalarTypeExtension';\n  Kind['OBJECT_TYPE_EXTENSION'] = 'ObjectTypeExtension';\n  Kind['INTERFACE_TYPE_EXTENSION'] = 'InterfaceTypeExtension';\n  Kind['UNION_TYPE_EXTENSION'] = 'UnionTypeExtension';\n  Kind['ENUM_TYPE_EXTENSION'] = 'EnumTypeExtension';\n  Kind['INPUT_OBJECT_TYPE_EXTENSION'] = 'InputObjectTypeExtension';\n})(Kind || (exports.Kind = Kind = {}));\n/**\n * The enum type representing the possible kind values of AST nodes.\n *\n * @deprecated Please use `Kind`. Will be remove in v17.\n */\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.isDigit = isDigit;\nexports.isLetter = isLetter;\nexports.isNameContinue = isNameContinue;\nexports.isNameStart = isNameStart;\nexports.isWhiteSpace = isWhiteSpace;\n\n/**\n * ```\n * WhiteSpace ::\n *   - \"Horizontal Tab (U+0009)\"\n *   - \"Space (U+0020)\"\n * ```\n * @internal\n */\nfunction isWhiteSpace(code) {\n  return code === 0x0009 || code === 0x0020;\n}\n/**\n * ```\n * Digit :: one of\n *   - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`\n * ```\n * @internal\n */\n\nfunction isDigit(code) {\n  return code >= 0x0030 && code <= 0x0039;\n}\n/**\n * ```\n * Letter :: one of\n *   - `A` `B` `C` `D` `E` `F` `G` `H` `I` `J` `K` `L` `M`\n *   - `N` `O` `P` `Q` `R` `S` `T` `U` `V` `W` `X` `Y` `Z`\n *   - `a` `b` `c` `d` `e` `f` `g` `h` `i` `j` `k` `l` `m`\n *   - `n` `o` `p` `q` `r` `s` `t` `u` `v` `w` `x` `y` `z`\n * ```\n * @internal\n */\n\nfunction isLetter(code) {\n  return (\n    (code >= 0x0061 && code <= 0x007a) || // A-Z\n    (code >= 0x0041 && code <= 0x005a) // a-z\n  );\n}\n/**\n * ```\n * NameStart ::\n *   - Letter\n *   - `_`\n * ```\n * @internal\n */\n\nfunction isNameStart(code) {\n  return isLetter(code) || code === 0x005f;\n}\n/**\n * ```\n * NameContinue ::\n *   - Letter\n *   - Digit\n *   - `_`\n * ```\n * @internal\n */\n\nfunction isNameContinue(code) {\n  return isLetter(code) || isDigit(code) || code === 0x005f;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.dedentBlockStringLines = dedentBlockStringLines;\nexports.isPrintableAsBlockString = isPrintableAsBlockString;\nexports.printBlockString = printBlockString;\n\nvar _characterClasses = require('./characterClasses.js');\n\n/**\n * Produces the value of a block string from its parsed raw value, similar to\n * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n *\n * @internal\n */\nfunction dedentBlockStringLines(lines) {\n  var _firstNonEmptyLine2;\n\n  let commonIndent = Number.MAX_SAFE_INTEGER;\n  let firstNonEmptyLine = null;\n  let lastNonEmptyLine = -1;\n\n  for (let i = 0; i < lines.length; ++i) {\n    var _firstNonEmptyLine;\n\n    const line = lines[i];\n    const indent = leadingWhitespace(line);\n\n    if (indent === line.length) {\n      continue; // skip empty lines\n    }\n\n    firstNonEmptyLine =\n      (_firstNonEmptyLine = firstNonEmptyLine) !== null &&\n      _firstNonEmptyLine !== void 0\n        ? _firstNonEmptyLine\n        : i;\n    lastNonEmptyLine = i;\n\n    if (i !== 0 && indent < commonIndent) {\n      commonIndent = indent;\n    }\n  }\n\n  return lines // Remove common indentation from all lines but first.\n    .map((line, i) => (i === 0 ? line : line.slice(commonIndent))) // Remove leading and trailing blank lines.\n    .slice(\n      (_firstNonEmptyLine2 = firstNonEmptyLine) !== null &&\n        _firstNonEmptyLine2 !== void 0\n        ? _firstNonEmptyLine2\n        : 0,\n      lastNonEmptyLine + 1,\n    );\n}\n\nfunction leadingWhitespace(str) {\n  let i = 0;\n\n  while (\n    i < str.length &&\n    (0, _characterClasses.isWhiteSpace)(str.charCodeAt(i))\n  ) {\n    ++i;\n  }\n\n  return i;\n}\n/**\n * @internal\n */\n\nfunction isPrintableAsBlockString(value) {\n  if (value === '') {\n    return true; // empty string is printable\n  }\n\n  let isEmptyLine = true;\n  let hasIndent = false;\n  let hasCommonIndent = true;\n  let seenNonEmptyLine = false;\n\n  for (let i = 0; i < value.length; ++i) {\n    switch (value.codePointAt(i)) {\n      case 0x0000:\n      case 0x0001:\n      case 0x0002:\n      case 0x0003:\n      case 0x0004:\n      case 0x0005:\n      case 0x0006:\n      case 0x0007:\n      case 0x0008:\n      case 0x000b:\n      case 0x000c:\n      case 0x000e:\n      case 0x000f:\n        return false;\n      // Has non-printable characters\n\n      case 0x000d:\n        //  \\r\n        return false;\n      // Has \\r or \\r\\n which will be replaced as \\n\n\n      case 10:\n        //  \\n\n        if (isEmptyLine && !seenNonEmptyLine) {\n          return false; // Has leading new line\n        }\n\n        seenNonEmptyLine = true;\n        isEmptyLine = true;\n        hasIndent = false;\n        break;\n\n      case 9: //   \\t\n\n      case 32:\n        //  <space>\n        hasIndent || (hasIndent = isEmptyLine);\n        break;\n\n      default:\n        hasCommonIndent && (hasCommonIndent = hasIndent);\n        isEmptyLine = false;\n    }\n  }\n\n  if (isEmptyLine) {\n    return false; // Has trailing empty lines\n  }\n\n  if (hasCommonIndent && seenNonEmptyLine) {\n    return false; // Has internal indent\n  }\n\n  return true;\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n *\n * @internal\n */\n\nfunction printBlockString(value, options) {\n  const escapedValue = value.replace(/\"\"\"/g, '\\\\\"\"\"'); // Expand a block string's raw value into independent lines.\n\n  const lines = escapedValue.split(/\\r\\n|[\\n\\r]/g);\n  const isSingleLine = lines.length === 1; // If common indentation is found we can fix some of those cases by adding leading new line\n\n  const forceLeadingNewLine =\n    lines.length > 1 &&\n    lines\n      .slice(1)\n      .every(\n        (line) =>\n          line.length === 0 ||\n          (0, _characterClasses.isWhiteSpace)(line.charCodeAt(0)),\n      ); // Trailing triple quotes just looks confusing but doesn't force trailing new line\n\n  const hasTrailingTripleQuotes = escapedValue.endsWith('\\\\\"\"\"'); // Trailing quote (single or double) or slash forces trailing new line\n\n  const hasTrailingQuote = value.endsWith('\"') && !hasTrailingTripleQuotes;\n  const hasTrailingSlash = value.endsWith('\\\\');\n  const forceTrailingNewline = hasTrailingQuote || hasTrailingSlash;\n  const printAsMultipleLines =\n    !(options !== null && options !== void 0 && options.minimize) && // add leading and trailing new lines only if it improves readability\n    (!isSingleLine ||\n      value.length > 70 ||\n      forceTrailingNewline ||\n      forceLeadingNewLine ||\n      hasTrailingTripleQuotes);\n  let result = ''; // Format a multi-line block quote to account for leading space.\n\n  const skipLeadingNewLine =\n    isSingleLine && (0, _characterClasses.isWhiteSpace)(value.charCodeAt(0));\n\n  if ((printAsMultipleLines && !skipLeadingNewLine) || forceLeadingNewLine) {\n    result += '\\n';\n  }\n\n  result += escapedValue;\n\n  if (printAsMultipleLines || forceTrailingNewline) {\n    result += '\\n';\n  }\n\n  return '\"\"\"' + result + '\"\"\"';\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.TokenKind = void 0;\n\n/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nvar TokenKind;\nexports.TokenKind = TokenKind;\n\n(function (TokenKind) {\n  TokenKind['SOF'] = '<SOF>';\n  TokenKind['EOF'] = '<EOF>';\n  TokenKind['BANG'] = '!';\n  TokenKind['DOLLAR'] = '$';\n  TokenKind['AMP'] = '&';\n  TokenKind['PAREN_L'] = '(';\n  TokenKind['PAREN_R'] = ')';\n  TokenKind['SPREAD'] = '...';\n  TokenKind['COLON'] = ':';\n  TokenKind['EQUALS'] = '=';\n  TokenKind['AT'] = '@';\n  TokenKind['BRACKET_L'] = '[';\n  TokenKind['BRACKET_R'] = ']';\n  TokenKind['BRACE_L'] = '{';\n  TokenKind['PIPE'] = '|';\n  TokenKind['BRACE_R'] = '}';\n  TokenKind['NAME'] = 'Name';\n  TokenKind['INT'] = 'Int';\n  TokenKind['FLOAT'] = 'Float';\n  TokenKind['STRING'] = 'String';\n  TokenKind['BLOCK_STRING'] = 'BlockString';\n  TokenKind['COMMENT'] = 'Comment';\n})(TokenKind || (exports.TokenKind = TokenKind = {}));\n/**\n * The enum type representing the token kinds values.\n *\n * @deprecated Please use `TokenKind`. Will be remove in v17.\n */\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.Lexer = void 0;\nexports.isPunctuatorTokenKind = isPunctuatorTokenKind;\n\nvar _syntaxError = require('../error/syntaxError.js');\n\nvar _ast = require('./ast.js');\n\nvar _blockString = require('./blockString.js');\n\nvar _characterClasses = require('./characterClasses.js');\n\nvar _tokenKind = require('./tokenKind.js');\n\n/**\n * Given a Source object, creates a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\nclass Lexer {\n  /**\n   * The previously focused non-ignored token.\n   */\n\n  /**\n   * The currently focused non-ignored token.\n   */\n\n  /**\n   * The (1-indexed) line containing the current token.\n   */\n\n  /**\n   * The character offset at which the current line begins.\n   */\n  constructor(source) {\n    const startOfFileToken = new _ast.Token(\n      _tokenKind.TokenKind.SOF,\n      0,\n      0,\n      0,\n      0,\n    );\n    this.source = source;\n    this.lastToken = startOfFileToken;\n    this.token = startOfFileToken;\n    this.line = 1;\n    this.lineStart = 0;\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'Lexer';\n  }\n  /**\n   * Advances the token stream to the next non-ignored token.\n   */\n\n  advance() {\n    this.lastToken = this.token;\n    const token = (this.token = this.lookahead());\n    return token;\n  }\n  /**\n   * Looks ahead and returns the next non-ignored token, but does not change\n   * the state of Lexer.\n   */\n\n  lookahead() {\n    let token = this.token;\n\n    if (token.kind !== _tokenKind.TokenKind.EOF) {\n      do {\n        if (token.next) {\n          token = token.next;\n        } else {\n          // Read the next token and form a link in the token linked-list.\n          const nextToken = readNextToken(this, token.end); // @ts-expect-error next is only mutable during parsing.\n\n          token.next = nextToken; // @ts-expect-error prev is only mutable during parsing.\n\n          nextToken.prev = token;\n          token = nextToken;\n        }\n      } while (token.kind === _tokenKind.TokenKind.COMMENT);\n    }\n\n    return token;\n  }\n}\n/**\n * @internal\n */\n\nexports.Lexer = Lexer;\n\nfunction isPunctuatorTokenKind(kind) {\n  return (\n    kind === _tokenKind.TokenKind.BANG ||\n    kind === _tokenKind.TokenKind.DOLLAR ||\n    kind === _tokenKind.TokenKind.AMP ||\n    kind === _tokenKind.TokenKind.PAREN_L ||\n    kind === _tokenKind.TokenKind.PAREN_R ||\n    kind === _tokenKind.TokenKind.SPREAD ||\n    kind === _tokenKind.TokenKind.COLON ||\n    kind === _tokenKind.TokenKind.EQUALS ||\n    kind === _tokenKind.TokenKind.AT ||\n    kind === _tokenKind.TokenKind.BRACKET_L ||\n    kind === _tokenKind.TokenKind.BRACKET_R ||\n    kind === _tokenKind.TokenKind.BRACE_L ||\n    kind === _tokenKind.TokenKind.PIPE ||\n    kind === _tokenKind.TokenKind.BRACE_R\n  );\n}\n/**\n * A Unicode scalar value is any Unicode code point except surrogate code\n * points. In other words, the inclusive ranges of values 0x0000 to 0xD7FF and\n * 0xE000 to 0x10FFFF.\n *\n * SourceCharacter ::\n *   - \"Any Unicode scalar value\"\n */\n\nfunction isUnicodeScalarValue(code) {\n  return (\n    (code >= 0x0000 && code <= 0xd7ff) || (code >= 0xe000 && code <= 0x10ffff)\n  );\n}\n/**\n * The GraphQL specification defines source text as a sequence of unicode scalar\n * values (which Unicode defines to exclude surrogate code points). However\n * JavaScript defines strings as a sequence of UTF-16 code units which may\n * include surrogates. A surrogate pair is a valid source character as it\n * encodes a supplementary code point (above U+FFFF), but unpaired surrogate\n * code points are not valid source characters.\n */\n\nfunction isSupplementaryCodePoint(body, location) {\n  return (\n    isLeadingSurrogate(body.charCodeAt(location)) &&\n    isTrailingSurrogate(body.charCodeAt(location + 1))\n  );\n}\n\nfunction isLeadingSurrogate(code) {\n  return code >= 0xd800 && code <= 0xdbff;\n}\n\nfunction isTrailingSurrogate(code) {\n  return code >= 0xdc00 && code <= 0xdfff;\n}\n/**\n * Prints the code point (or end of file reference) at a given location in a\n * source for use in error messages.\n *\n * Printable ASCII is printed quoted, while other points are printed in Unicode\n * code point form (ie. U+1234).\n */\n\nfunction printCodePointAt(lexer, location) {\n  const code = lexer.source.body.codePointAt(location);\n\n  if (code === undefined) {\n    return _tokenKind.TokenKind.EOF;\n  } else if (code >= 0x0020 && code <= 0x007e) {\n    // Printable ASCII\n    const char = String.fromCodePoint(code);\n    return char === '\"' ? \"'\\\"'\" : `\"${char}\"`;\n  } // Unicode code point\n\n  return 'U+' + code.toString(16).toUpperCase().padStart(4, '0');\n}\n/**\n * Create a token with line and column location information.\n */\n\nfunction createToken(lexer, kind, start, end, value) {\n  const line = lexer.line;\n  const col = 1 + start - lexer.lineStart;\n  return new _ast.Token(kind, start, end, line, col, value);\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace until it finds the next lexable token, then lexes\n * punctuators immediately or calls the appropriate helper function for more\n * complicated tokens.\n */\n\nfunction readNextToken(lexer, start) {\n  const body = lexer.source.body;\n  const bodyLength = body.length;\n  let position = start;\n\n  while (position < bodyLength) {\n    const code = body.charCodeAt(position); // SourceCharacter\n\n    switch (code) {\n      // Ignored ::\n      //   - UnicodeBOM\n      //   - WhiteSpace\n      //   - LineTerminator\n      //   - Comment\n      //   - Comma\n      //\n      // UnicodeBOM :: \"Byte Order Mark (U+FEFF)\"\n      //\n      // WhiteSpace ::\n      //   - \"Horizontal Tab (U+0009)\"\n      //   - \"Space (U+0020)\"\n      //\n      // Comma :: ,\n      case 0xfeff: // <BOM>\n\n      case 0x0009: // \\t\n\n      case 0x0020: // <space>\n\n      case 0x002c:\n        // ,\n        ++position;\n        continue;\n      // LineTerminator ::\n      //   - \"New Line (U+000A)\"\n      //   - \"Carriage Return (U+000D)\" [lookahead != \"New Line (U+000A)\"]\n      //   - \"Carriage Return (U+000D)\" \"New Line (U+000A)\"\n\n      case 0x000a:\n        // \\n\n        ++position;\n        ++lexer.line;\n        lexer.lineStart = position;\n        continue;\n\n      case 0x000d:\n        // \\r\n        if (body.charCodeAt(position + 1) === 0x000a) {\n          position += 2;\n        } else {\n          ++position;\n        }\n\n        ++lexer.line;\n        lexer.lineStart = position;\n        continue;\n      // Comment\n\n      case 0x0023:\n        // #\n        return readComment(lexer, position);\n      // Token ::\n      //   - Punctuator\n      //   - Name\n      //   - IntValue\n      //   - FloatValue\n      //   - StringValue\n      //\n      // Punctuator :: one of ! $ & ( ) ... : = @ [ ] { | }\n\n      case 0x0021:\n        // !\n        return createToken(\n          lexer,\n          _tokenKind.TokenKind.BANG,\n          position,\n          position + 1,\n        );\n\n      case 0x0024:\n        // $\n        return createToken(\n          lexer,\n          _tokenKind.TokenKind.DOLLAR,\n          position,\n          position + 1,\n        );\n\n      case 0x0026:\n        // &\n        return createToken(\n          lexer,\n          _tokenKind.TokenKind.AMP,\n          position,\n          position + 1,\n        );\n\n      case 0x0028:\n        // (\n        return createToken(\n          lexer,\n          _tokenKind.TokenKind.PAREN_L,\n          position,\n          position + 1,\n        );\n\n      case 0x0029:\n        // )\n        return createToken(\n          lexer,\n          _tokenKind.TokenKind.PAREN_R,\n          position,\n          position + 1,\n        );\n\n      case 0x002e:\n        // .\n        if (\n          body.charCodeAt(position + 1) === 0x002e &&\n          body.charCodeAt(position + 2) === 0x002e\n        ) {\n          return createToken(\n            lexer,\n            _tokenKind.TokenKind.SPREAD,\n            position,\n            position + 3,\n          );\n        }\n\n        break;\n\n      case 0x003a:\n        // :\n        return createToken(\n          lexer,\n          _tokenKind.TokenKind.COLON,\n          position,\n          position + 1,\n        );\n\n      case 0x003d:\n        // =\n        return createToken(\n          lexer,\n          _tokenKind.TokenKind.EQUALS,\n          position,\n          position + 1,\n        );\n\n      case 0x0040:\n        // @\n        return createToken(\n          lexer,\n          _tokenKind.TokenKind.AT,\n          position,\n          position + 1,\n        );\n\n      case 0x005b:\n        // [\n        return createToken(\n          lexer,\n          _tokenKind.TokenKind.BRACKET_L,\n          position,\n          position + 1,\n        );\n\n      case 0x005d:\n        // ]\n        return createToken(\n          lexer,\n          _tokenKind.TokenKind.BRACKET_R,\n          position,\n          position + 1,\n        );\n\n      case 0x007b:\n        // {\n        return createToken(\n          lexer,\n          _tokenKind.TokenKind.BRACE_L,\n          position,\n          position + 1,\n        );\n\n      case 0x007c:\n        // |\n        return createToken(\n          lexer,\n          _tokenKind.TokenKind.PIPE,\n          position,\n          position + 1,\n        );\n\n      case 0x007d:\n        // }\n        return createToken(\n          lexer,\n          _tokenKind.TokenKind.BRACE_R,\n          position,\n          position + 1,\n        );\n      // StringValue\n\n      case 0x0022:\n        // \"\n        if (\n          body.charCodeAt(position + 1) === 0x0022 &&\n          body.charCodeAt(position + 2) === 0x0022\n        ) {\n          return readBlockString(lexer, position);\n        }\n\n        return readString(lexer, position);\n    } // IntValue | FloatValue (Digit | -)\n\n    if ((0, _characterClasses.isDigit)(code) || code === 0x002d) {\n      return readNumber(lexer, position, code);\n    } // Name\n\n    if ((0, _characterClasses.isNameStart)(code)) {\n      return readName(lexer, position);\n    }\n\n    throw (0, _syntaxError.syntaxError)(\n      lexer.source,\n      position,\n      code === 0x0027\n        ? 'Unexpected single quote character (\\'), did you mean to use a double quote (\")?'\n        : isUnicodeScalarValue(code) || isSupplementaryCodePoint(body, position)\n        ? `Unexpected character: ${printCodePointAt(lexer, position)}.`\n        : `Invalid character: ${printCodePointAt(lexer, position)}.`,\n    );\n  }\n\n  return createToken(lexer, _tokenKind.TokenKind.EOF, bodyLength, bodyLength);\n}\n/**\n * Reads a comment token from the source file.\n *\n * ```\n * Comment :: # CommentChar* [lookahead != CommentChar]\n *\n * CommentChar :: SourceCharacter but not LineTerminator\n * ```\n */\n\nfunction readComment(lexer, start) {\n  const body = lexer.source.body;\n  const bodyLength = body.length;\n  let position = start + 1;\n\n  while (position < bodyLength) {\n    const code = body.charCodeAt(position); // LineTerminator (\\n | \\r)\n\n    if (code === 0x000a || code === 0x000d) {\n      break;\n    } // SourceCharacter\n\n    if (isUnicodeScalarValue(code)) {\n      ++position;\n    } else if (isSupplementaryCodePoint(body, position)) {\n      position += 2;\n    } else {\n      break;\n    }\n  }\n\n  return createToken(\n    lexer,\n    _tokenKind.TokenKind.COMMENT,\n    start,\n    position,\n    body.slice(start + 1, position),\n  );\n}\n/**\n * Reads a number token from the source file, either a FloatValue or an IntValue\n * depending on whether a FractionalPart or ExponentPart is encountered.\n *\n * ```\n * IntValue :: IntegerPart [lookahead != {Digit, `.`, NameStart}]\n *\n * IntegerPart ::\n *   - NegativeSign? 0\n *   - NegativeSign? NonZeroDigit Digit*\n *\n * NegativeSign :: -\n *\n * NonZeroDigit :: Digit but not `0`\n *\n * FloatValue ::\n *   - IntegerPart FractionalPart ExponentPart [lookahead != {Digit, `.`, NameStart}]\n *   - IntegerPart FractionalPart [lookahead != {Digit, `.`, NameStart}]\n *   - IntegerPart ExponentPart [lookahead != {Digit, `.`, NameStart}]\n *\n * FractionalPart :: . Digit+\n *\n * ExponentPart :: ExponentIndicator Sign? Digit+\n *\n * ExponentIndicator :: one of `e` `E`\n *\n * Sign :: one of + -\n * ```\n */\n\nfunction readNumber(lexer, start, firstCode) {\n  const body = lexer.source.body;\n  let position = start;\n  let code = firstCode;\n  let isFloat = false; // NegativeSign (-)\n\n  if (code === 0x002d) {\n    code = body.charCodeAt(++position);\n  } // Zero (0)\n\n  if (code === 0x0030) {\n    code = body.charCodeAt(++position);\n\n    if ((0, _characterClasses.isDigit)(code)) {\n      throw (0, _syntaxError.syntaxError)(\n        lexer.source,\n        position,\n        `Invalid number, unexpected digit after 0: ${printCodePointAt(\n          lexer,\n          position,\n        )}.`,\n      );\n    }\n  } else {\n    position = readDigits(lexer, position, code);\n    code = body.charCodeAt(position);\n  } // Full stop (.)\n\n  if (code === 0x002e) {\n    isFloat = true;\n    code = body.charCodeAt(++position);\n    position = readDigits(lexer, position, code);\n    code = body.charCodeAt(position);\n  } // E e\n\n  if (code === 0x0045 || code === 0x0065) {\n    isFloat = true;\n    code = body.charCodeAt(++position); // + -\n\n    if (code === 0x002b || code === 0x002d) {\n      code = body.charCodeAt(++position);\n    }\n\n    position = readDigits(lexer, position, code);\n    code = body.charCodeAt(position);\n  } // Numbers cannot be followed by . or NameStart\n\n  if (code === 0x002e || (0, _characterClasses.isNameStart)(code)) {\n    throw (0, _syntaxError.syntaxError)(\n      lexer.source,\n      position,\n      `Invalid number, expected digit but got: ${printCodePointAt(\n        lexer,\n        position,\n      )}.`,\n    );\n  }\n\n  return createToken(\n    lexer,\n    isFloat ? _tokenKind.TokenKind.FLOAT : _tokenKind.TokenKind.INT,\n    start,\n    position,\n    body.slice(start, position),\n  );\n}\n/**\n * Returns the new position in the source after reading one or more digits.\n */\n\nfunction readDigits(lexer, start, firstCode) {\n  if (!(0, _characterClasses.isDigit)(firstCode)) {\n    throw (0, _syntaxError.syntaxError)(\n      lexer.source,\n      start,\n      `Invalid number, expected digit but got: ${printCodePointAt(\n        lexer,\n        start,\n      )}.`,\n    );\n  }\n\n  const body = lexer.source.body;\n  let position = start + 1; // +1 to skip first firstCode\n\n  while ((0, _characterClasses.isDigit)(body.charCodeAt(position))) {\n    ++position;\n  }\n\n  return position;\n}\n/**\n * Reads a single-quote string token from the source file.\n *\n * ```\n * StringValue ::\n *   - `\"\"` [lookahead != `\"`]\n *   - `\"` StringCharacter+ `\"`\n *\n * StringCharacter ::\n *   - SourceCharacter but not `\"` or `\\` or LineTerminator\n *   - `\\u` EscapedUnicode\n *   - `\\` EscapedCharacter\n *\n * EscapedUnicode ::\n *   - `{` HexDigit+ `}`\n *   - HexDigit HexDigit HexDigit HexDigit\n *\n * EscapedCharacter :: one of `\"` `\\` `/` `b` `f` `n` `r` `t`\n * ```\n */\n\nfunction readString(lexer, start) {\n  const body = lexer.source.body;\n  const bodyLength = body.length;\n  let position = start + 1;\n  let chunkStart = position;\n  let value = '';\n\n  while (position < bodyLength) {\n    const code = body.charCodeAt(position); // Closing Quote (\")\n\n    if (code === 0x0022) {\n      value += body.slice(chunkStart, position);\n      return createToken(\n        lexer,\n        _tokenKind.TokenKind.STRING,\n        start,\n        position + 1,\n        value,\n      );\n    } // Escape Sequence (\\)\n\n    if (code === 0x005c) {\n      value += body.slice(chunkStart, position);\n      const escape =\n        body.charCodeAt(position + 1) === 0x0075 // u\n          ? body.charCodeAt(position + 2) === 0x007b // {\n            ? readEscapedUnicodeVariableWidth(lexer, position)\n            : readEscapedUnicodeFixedWidth(lexer, position)\n          : readEscapedCharacter(lexer, position);\n      value += escape.value;\n      position += escape.size;\n      chunkStart = position;\n      continue;\n    } // LineTerminator (\\n | \\r)\n\n    if (code === 0x000a || code === 0x000d) {\n      break;\n    } // SourceCharacter\n\n    if (isUnicodeScalarValue(code)) {\n      ++position;\n    } else if (isSupplementaryCodePoint(body, position)) {\n      position += 2;\n    } else {\n      throw (0, _syntaxError.syntaxError)(\n        lexer.source,\n        position,\n        `Invalid character within String: ${printCodePointAt(\n          lexer,\n          position,\n        )}.`,\n      );\n    }\n  }\n\n  throw (0, _syntaxError.syntaxError)(\n    lexer.source,\n    position,\n    'Unterminated string.',\n  );\n} // The string value and lexed size of an escape sequence.\n\nfunction readEscapedUnicodeVariableWidth(lexer, position) {\n  const body = lexer.source.body;\n  let point = 0;\n  let size = 3; // Cannot be larger than 12 chars (\\u{00000000}).\n\n  while (size < 12) {\n    const code = body.charCodeAt(position + size++); // Closing Brace (})\n\n    if (code === 0x007d) {\n      // Must be at least 5 chars (\\u{0}) and encode a Unicode scalar value.\n      if (size < 5 || !isUnicodeScalarValue(point)) {\n        break;\n      }\n\n      return {\n        value: String.fromCodePoint(point),\n        size,\n      };\n    } // Append this hex digit to the code point.\n\n    point = (point << 4) | readHexDigit(code);\n\n    if (point < 0) {\n      break;\n    }\n  }\n\n  throw (0, _syntaxError.syntaxError)(\n    lexer.source,\n    position,\n    `Invalid Unicode escape sequence: \"${body.slice(\n      position,\n      position + size,\n    )}\".`,\n  );\n}\n\nfunction readEscapedUnicodeFixedWidth(lexer, position) {\n  const body = lexer.source.body;\n  const code = read16BitHexCode(body, position + 2);\n\n  if (isUnicodeScalarValue(code)) {\n    return {\n      value: String.fromCodePoint(code),\n      size: 6,\n    };\n  } // GraphQL allows JSON-style surrogate pair escape sequences, but only when\n  // a valid pair is formed.\n\n  if (isLeadingSurrogate(code)) {\n    // \\u\n    if (\n      body.charCodeAt(position + 6) === 0x005c &&\n      body.charCodeAt(position + 7) === 0x0075\n    ) {\n      const trailingCode = read16BitHexCode(body, position + 8);\n\n      if (isTrailingSurrogate(trailingCode)) {\n        // JavaScript defines strings as a sequence of UTF-16 code units and\n        // encodes Unicode code points above U+FFFF using a surrogate pair of\n        // code units. Since this is a surrogate pair escape sequence, just\n        // include both codes into the JavaScript string value. Had JavaScript\n        // not been internally based on UTF-16, then this surrogate pair would\n        // be decoded to retrieve the supplementary code point.\n        return {\n          value: String.fromCodePoint(code, trailingCode),\n          size: 12,\n        };\n      }\n    }\n  }\n\n  throw (0, _syntaxError.syntaxError)(\n    lexer.source,\n    position,\n    `Invalid Unicode escape sequence: \"${body.slice(position, position + 6)}\".`,\n  );\n}\n/**\n * Reads four hexadecimal characters and returns the positive integer that 16bit\n * hexadecimal string represents. For example, \"000f\" will return 15, and \"dead\"\n * will return 57005.\n *\n * Returns a negative number if any char was not a valid hexadecimal digit.\n */\n\nfunction read16BitHexCode(body, position) {\n  // readHexDigit() returns -1 on error. ORing a negative value with any other\n  // value always produces a negative value.\n  return (\n    (readHexDigit(body.charCodeAt(position)) << 12) |\n    (readHexDigit(body.charCodeAt(position + 1)) << 8) |\n    (readHexDigit(body.charCodeAt(position + 2)) << 4) |\n    readHexDigit(body.charCodeAt(position + 3))\n  );\n}\n/**\n * Reads a hexadecimal character and returns its positive integer value (0-15).\n *\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 if the provided character code was not a valid hexadecimal digit.\n *\n * HexDigit :: one of\n *   - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`\n *   - `A` `B` `C` `D` `E` `F`\n *   - `a` `b` `c` `d` `e` `f`\n */\n\nfunction readHexDigit(code) {\n  return code >= 0x0030 && code <= 0x0039 // 0-9\n    ? code - 0x0030\n    : code >= 0x0041 && code <= 0x0046 // A-F\n    ? code - 0x0037\n    : code >= 0x0061 && code <= 0x0066 // a-f\n    ? code - 0x0057\n    : -1;\n}\n/**\n * | Escaped Character | Code Point | Character Name               |\n * | ----------------- | ---------- | ---------------------------- |\n * | `\"`               | U+0022     | double quote                 |\n * | `\\`               | U+005C     | reverse solidus (back slash) |\n * | `/`               | U+002F     | solidus (forward slash)      |\n * | `b`               | U+0008     | backspace                    |\n * | `f`               | U+000C     | form feed                    |\n * | `n`               | U+000A     | line feed (new line)         |\n * | `r`               | U+000D     | carriage return              |\n * | `t`               | U+0009     | horizontal tab               |\n */\n\nfunction readEscapedCharacter(lexer, position) {\n  const body = lexer.source.body;\n  const code = body.charCodeAt(position + 1);\n\n  switch (code) {\n    case 0x0022:\n      // \"\n      return {\n        value: '\\u0022',\n        size: 2,\n      };\n\n    case 0x005c:\n      // \\\n      return {\n        value: '\\u005c',\n        size: 2,\n      };\n\n    case 0x002f:\n      // /\n      return {\n        value: '\\u002f',\n        size: 2,\n      };\n\n    case 0x0062:\n      // b\n      return {\n        value: '\\u0008',\n        size: 2,\n      };\n\n    case 0x0066:\n      // f\n      return {\n        value: '\\u000c',\n        size: 2,\n      };\n\n    case 0x006e:\n      // n\n      return {\n        value: '\\u000a',\n        size: 2,\n      };\n\n    case 0x0072:\n      // r\n      return {\n        value: '\\u000d',\n        size: 2,\n      };\n\n    case 0x0074:\n      // t\n      return {\n        value: '\\u0009',\n        size: 2,\n      };\n  }\n\n  throw (0, _syntaxError.syntaxError)(\n    lexer.source,\n    position,\n    `Invalid character escape sequence: \"${body.slice(\n      position,\n      position + 2,\n    )}\".`,\n  );\n}\n/**\n * Reads a block string token from the source file.\n *\n * ```\n * StringValue ::\n *   - `\"\"\"` BlockStringCharacter* `\"\"\"`\n *\n * BlockStringCharacter ::\n *   - SourceCharacter but not `\"\"\"` or `\\\"\"\"`\n *   - `\\\"\"\"`\n * ```\n */\n\nfunction readBlockString(lexer, start) {\n  const body = lexer.source.body;\n  const bodyLength = body.length;\n  let lineStart = lexer.lineStart;\n  let position = start + 3;\n  let chunkStart = position;\n  let currentLine = '';\n  const blockLines = [];\n\n  while (position < bodyLength) {\n    const code = body.charCodeAt(position); // Closing Triple-Quote (\"\"\")\n\n    if (\n      code === 0x0022 &&\n      body.charCodeAt(position + 1) === 0x0022 &&\n      body.charCodeAt(position + 2) === 0x0022\n    ) {\n      currentLine += body.slice(chunkStart, position);\n      blockLines.push(currentLine);\n      const token = createToken(\n        lexer,\n        _tokenKind.TokenKind.BLOCK_STRING,\n        start,\n        position + 3, // Return a string of the lines joined with U+000A.\n        (0, _blockString.dedentBlockStringLines)(blockLines).join('\\n'),\n      );\n      lexer.line += blockLines.length - 1;\n      lexer.lineStart = lineStart;\n      return token;\n    } // Escaped Triple-Quote (\\\"\"\")\n\n    if (\n      code === 0x005c &&\n      body.charCodeAt(position + 1) === 0x0022 &&\n      body.charCodeAt(position + 2) === 0x0022 &&\n      body.charCodeAt(position + 3) === 0x0022\n    ) {\n      currentLine += body.slice(chunkStart, position);\n      chunkStart = position + 1; // skip only slash\n\n      position += 4;\n      continue;\n    } // LineTerminator\n\n    if (code === 0x000a || code === 0x000d) {\n      currentLine += body.slice(chunkStart, position);\n      blockLines.push(currentLine);\n\n      if (code === 0x000d && body.charCodeAt(position + 1) === 0x000a) {\n        position += 2;\n      } else {\n        ++position;\n      }\n\n      currentLine = '';\n      chunkStart = position;\n      lineStart = position;\n      continue;\n    } // SourceCharacter\n\n    if (isUnicodeScalarValue(code)) {\n      ++position;\n    } else if (isSupplementaryCodePoint(body, position)) {\n      position += 2;\n    } else {\n      throw (0, _syntaxError.syntaxError)(\n        lexer.source,\n        position,\n        `Invalid character within String: ${printCodePointAt(\n          lexer,\n          position,\n        )}.`,\n      );\n    }\n  }\n\n  throw (0, _syntaxError.syntaxError)(\n    lexer.source,\n    position,\n    'Unterminated string.',\n  );\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * ```\n * Name ::\n *   - NameStart NameContinue* [lookahead != NameContinue]\n * ```\n */\n\nfunction readName(lexer, start) {\n  const body = lexer.source.body;\n  const bodyLength = body.length;\n  let position = start + 1;\n\n  while (position < bodyLength) {\n    const code = body.charCodeAt(position);\n\n    if ((0, _characterClasses.isNameContinue)(code)) {\n      ++position;\n    } else {\n      break;\n    }\n  }\n\n  return createToken(\n    lexer,\n    _tokenKind.TokenKind.NAME,\n    start,\n    position,\n    body.slice(start, position),\n  );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.inspect = inspect;\nconst MAX_ARRAY_LENGTH = 10;\nconst MAX_RECURSIVE_DEPTH = 2;\n/**\n * Used to print values in error messages.\n */\n\nfunction inspect(value) {\n  return formatValue(value, []);\n}\n\nfunction formatValue(value, seenValues) {\n  switch (typeof value) {\n    case 'string':\n      return JSON.stringify(value);\n\n    case 'function':\n      return value.name ? `[function ${value.name}]` : '[function]';\n\n    case 'object':\n      return formatObjectValue(value, seenValues);\n\n    default:\n      return String(value);\n  }\n}\n\nfunction formatObjectValue(value, previouslySeenValues) {\n  if (value === null) {\n    return 'null';\n  }\n\n  if (previouslySeenValues.includes(value)) {\n    return '[Circular]';\n  }\n\n  const seenValues = [...previouslySeenValues, value];\n\n  if (isJSONable(value)) {\n    const jsonValue = value.toJSON(); // check for infinite recursion\n\n    if (jsonValue !== value) {\n      return typeof jsonValue === 'string'\n        ? jsonValue\n        : formatValue(jsonValue, seenValues);\n    }\n  } else if (Array.isArray(value)) {\n    return formatArray(value, seenValues);\n  }\n\n  return formatObject(value, seenValues);\n}\n\nfunction isJSONable(value) {\n  return typeof value.toJSON === 'function';\n}\n\nfunction formatObject(object, seenValues) {\n  const entries = Object.entries(object);\n\n  if (entries.length === 0) {\n    return '{}';\n  }\n\n  if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n    return '[' + getObjectTag(object) + ']';\n  }\n\n  const properties = entries.map(\n    ([key, value]) => key + ': ' + formatValue(value, seenValues),\n  );\n  return '{ ' + properties.join(', ') + ' }';\n}\n\nfunction formatArray(array, seenValues) {\n  if (array.length === 0) {\n    return '[]';\n  }\n\n  if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n    return '[Array]';\n  }\n\n  const len = Math.min(MAX_ARRAY_LENGTH, array.length);\n  const remaining = array.length - len;\n  const items = [];\n\n  for (let i = 0; i < len; ++i) {\n    items.push(formatValue(array[i], seenValues));\n  }\n\n  if (remaining === 1) {\n    items.push('... 1 more item');\n  } else if (remaining > 1) {\n    items.push(`... ${remaining} more items`);\n  }\n\n  return '[' + items.join(', ') + ']';\n}\n\nfunction getObjectTag(object) {\n  const tag = Object.prototype.toString\n    .call(object)\n    .replace(/^\\[object /, '')\n    .replace(/]$/, '');\n\n  if (tag === 'Object' && typeof object.constructor === 'function') {\n    const name = object.constructor.name;\n\n    if (typeof name === 'string' && name !== '') {\n      return name;\n    }\n  }\n\n  return tag;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.instanceOf = void 0;\n\nvar _inspect = require('./inspect.js');\n\n/**\n * A replacement for instanceof which includes an error warning when multi-realm\n * constructors are detected.\n * See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production\n * See: https://webpack.js.org/guides/production/\n */\nconst instanceOf =\n  /* c8 ignore next 6 */\n  // FIXME: https://github.com/graphql/graphql-js/issues/2317\n  // eslint-disable-next-line no-undef\n  process.env.NODE_ENV === 'production'\n    ? function instanceOf(value, constructor) {\n        return value instanceof constructor;\n      }\n    : function instanceOf(value, constructor) {\n        if (value instanceof constructor) {\n          return true;\n        }\n\n        if (typeof value === 'object' && value !== null) {\n          var _value$constructor;\n\n          // Prefer Symbol.toStringTag since it is immune to minification.\n          const className = constructor.prototype[Symbol.toStringTag];\n          const valueClassName = // We still need to support constructor's name to detect conflicts with older versions of this library.\n            Symbol.toStringTag in value // @ts-expect-error TS bug see, https://github.com/microsoft/TypeScript/issues/38009\n              ? value[Symbol.toStringTag]\n              : (_value$constructor = value.constructor) === null ||\n                _value$constructor === void 0\n              ? void 0\n              : _value$constructor.name;\n\n          if (className === valueClassName) {\n            const stringifiedValue = (0, _inspect.inspect)(value);\n            throw new Error(`Cannot use ${className} \"${stringifiedValue}\" from another module or realm.\n\nEnsure that there is only one instance of \"graphql\" in the node_modules\ndirectory. If different versions of \"graphql\" are the dependencies of other\nrelied on modules, use \"resolutions\" to ensure only one version is installed.\n\nhttps://yarnpkg.com/en/docs/selective-version-resolutions\n\nDuplicate \"graphql\" modules cannot be used at the same time since different\nversions may have different capabilities and behavior. The data from one\nversion used in the function from another could produce confusing and\nspurious results.`);\n          }\n        }\n\n        return false;\n      };\nexports.instanceOf = instanceOf;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.Source = void 0;\nexports.isSource = isSource;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _instanceOf = require('../jsutils/instanceOf.js');\n\n/**\n * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are\n * optional, but they are useful for clients who store GraphQL documents in source files.\n * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might\n * be useful for `name` to be `\"Foo.graphql\"` and location to be `{ line: 40, column: 1 }`.\n * The `line` and `column` properties in `locationOffset` are 1-indexed.\n */\nclass Source {\n  constructor(\n    body,\n    name = 'GraphQL request',\n    locationOffset = {\n      line: 1,\n      column: 1,\n    },\n  ) {\n    typeof body === 'string' ||\n      (0, _devAssert.devAssert)(\n        false,\n        `Body must be a string. Received: ${(0, _inspect.inspect)(body)}.`,\n      );\n    this.body = body;\n    this.name = name;\n    this.locationOffset = locationOffset;\n    this.locationOffset.line > 0 ||\n      (0, _devAssert.devAssert)(\n        false,\n        'line in locationOffset is 1-indexed and must be positive.',\n      );\n    this.locationOffset.column > 0 ||\n      (0, _devAssert.devAssert)(\n        false,\n        'column in locationOffset is 1-indexed and must be positive.',\n      );\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'Source';\n  }\n}\n/**\n * Test if the given value is a Source object.\n *\n * @internal\n */\n\nexports.Source = Source;\n\nfunction isSource(source) {\n  return (0, _instanceOf.instanceOf)(source, Source);\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.Parser = void 0;\nexports.parse = parse;\nexports.parseConstValue = parseConstValue;\nexports.parseType = parseType;\nexports.parseValue = parseValue;\n\nvar _syntaxError = require('../error/syntaxError.js');\n\nvar _ast = require('./ast.js');\n\nvar _directiveLocation = require('./directiveLocation.js');\n\nvar _kinds = require('./kinds.js');\n\nvar _lexer = require('./lexer.js');\n\nvar _source = require('./source.js');\n\nvar _tokenKind = require('./tokenKind.js');\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nfunction parse(source, options) {\n  const parser = new Parser(source, options);\n  return parser.parseDocument();\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\nfunction parseValue(source, options) {\n  const parser = new Parser(source, options);\n  parser.expectToken(_tokenKind.TokenKind.SOF);\n  const value = parser.parseValueLiteral(false);\n  parser.expectToken(_tokenKind.TokenKind.EOF);\n  return value;\n}\n/**\n * Similar to parseValue(), but raises a parse error if it encounters a\n * variable. The return type will be a constant value.\n */\n\nfunction parseConstValue(source, options) {\n  const parser = new Parser(source, options);\n  parser.expectToken(_tokenKind.TokenKind.SOF);\n  const value = parser.parseConstValueLiteral();\n  parser.expectToken(_tokenKind.TokenKind.EOF);\n  return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\nfunction parseType(source, options) {\n  const parser = new Parser(source, options);\n  parser.expectToken(_tokenKind.TokenKind.SOF);\n  const type = parser.parseTypeReference();\n  parser.expectToken(_tokenKind.TokenKind.EOF);\n  return type;\n}\n/**\n * This class is exported only to assist people in implementing their own parsers\n * without duplicating too much code and should be used only as last resort for cases\n * such as experimental syntax or if certain features could not be contributed upstream.\n *\n * It is still part of the internal API and is versioned, so any changes to it are never\n * considered breaking changes. If you still need to support multiple versions of the\n * library, please use the `versionInfo` variable for version detection.\n *\n * @internal\n */\n\nclass Parser {\n  constructor(source, options = {}) {\n    const sourceObj = (0, _source.isSource)(source)\n      ? source\n      : new _source.Source(source);\n    this._lexer = new _lexer.Lexer(sourceObj);\n    this._options = options;\n    this._tokenCounter = 0;\n  }\n  /**\n   * Converts a name lex token into a name parse node.\n   */\n\n  parseName() {\n    const token = this.expectToken(_tokenKind.TokenKind.NAME);\n    return this.node(token, {\n      kind: _kinds.Kind.NAME,\n      value: token.value,\n    });\n  } // Implements the parsing rules in the Document section.\n\n  /**\n   * Document : Definition+\n   */\n\n  parseDocument() {\n    return this.node(this._lexer.token, {\n      kind: _kinds.Kind.DOCUMENT,\n      definitions: this.many(\n        _tokenKind.TokenKind.SOF,\n        this.parseDefinition,\n        _tokenKind.TokenKind.EOF,\n      ),\n    });\n  }\n  /**\n   * Definition :\n   *   - ExecutableDefinition\n   *   - TypeSystemDefinition\n   *   - TypeSystemExtension\n   *\n   * ExecutableDefinition :\n   *   - OperationDefinition\n   *   - FragmentDefinition\n   *\n   * TypeSystemDefinition :\n   *   - SchemaDefinition\n   *   - TypeDefinition\n   *   - DirectiveDefinition\n   *\n   * TypeDefinition :\n   *   - ScalarTypeDefinition\n   *   - ObjectTypeDefinition\n   *   - InterfaceTypeDefinition\n   *   - UnionTypeDefinition\n   *   - EnumTypeDefinition\n   *   - InputObjectTypeDefinition\n   */\n\n  parseDefinition() {\n    if (this.peek(_tokenKind.TokenKind.BRACE_L)) {\n      return this.parseOperationDefinition();\n    } // Many definitions begin with a description and require a lookahead.\n\n    const hasDescription = this.peekDescription();\n    const keywordToken = hasDescription\n      ? this._lexer.lookahead()\n      : this._lexer.token;\n\n    if (keywordToken.kind === _tokenKind.TokenKind.NAME) {\n      switch (keywordToken.value) {\n        case 'schema':\n          return this.parseSchemaDefinition();\n\n        case 'scalar':\n          return this.parseScalarTypeDefinition();\n\n        case 'type':\n          return this.parseObjectTypeDefinition();\n\n        case 'interface':\n          return this.parseInterfaceTypeDefinition();\n\n        case 'union':\n          return this.parseUnionTypeDefinition();\n\n        case 'enum':\n          return this.parseEnumTypeDefinition();\n\n        case 'input':\n          return this.parseInputObjectTypeDefinition();\n\n        case 'directive':\n          return this.parseDirectiveDefinition();\n      }\n\n      if (hasDescription) {\n        throw (0, _syntaxError.syntaxError)(\n          this._lexer.source,\n          this._lexer.token.start,\n          'Unexpected description, descriptions are supported only on type definitions.',\n        );\n      }\n\n      switch (keywordToken.value) {\n        case 'query':\n        case 'mutation':\n        case 'subscription':\n          return this.parseOperationDefinition();\n\n        case 'fragment':\n          return this.parseFragmentDefinition();\n\n        case 'extend':\n          return this.parseTypeSystemExtension();\n      }\n    }\n\n    throw this.unexpected(keywordToken);\n  } // Implements the parsing rules in the Operations section.\n\n  /**\n   * OperationDefinition :\n   *  - SelectionSet\n   *  - OperationType Name? VariableDefinitions? Directives? SelectionSet\n   */\n\n  parseOperationDefinition() {\n    const start = this._lexer.token;\n\n    if (this.peek(_tokenKind.TokenKind.BRACE_L)) {\n      return this.node(start, {\n        kind: _kinds.Kind.OPERATION_DEFINITION,\n        operation: _ast.OperationTypeNode.QUERY,\n        name: undefined,\n        variableDefinitions: [],\n        directives: [],\n        selectionSet: this.parseSelectionSet(),\n      });\n    }\n\n    const operation = this.parseOperationType();\n    let name;\n\n    if (this.peek(_tokenKind.TokenKind.NAME)) {\n      name = this.parseName();\n    }\n\n    return this.node(start, {\n      kind: _kinds.Kind.OPERATION_DEFINITION,\n      operation,\n      name,\n      variableDefinitions: this.parseVariableDefinitions(),\n      directives: this.parseDirectives(false),\n      selectionSet: this.parseSelectionSet(),\n    });\n  }\n  /**\n   * OperationType : one of query mutation subscription\n   */\n\n  parseOperationType() {\n    const operationToken = this.expectToken(_tokenKind.TokenKind.NAME);\n\n    switch (operationToken.value) {\n      case 'query':\n        return _ast.OperationTypeNode.QUERY;\n\n      case 'mutation':\n        return _ast.OperationTypeNode.MUTATION;\n\n      case 'subscription':\n        return _ast.OperationTypeNode.SUBSCRIPTION;\n    }\n\n    throw this.unexpected(operationToken);\n  }\n  /**\n   * VariableDefinitions : ( VariableDefinition+ )\n   */\n\n  parseVariableDefinitions() {\n    return this.optionalMany(\n      _tokenKind.TokenKind.PAREN_L,\n      this.parseVariableDefinition,\n      _tokenKind.TokenKind.PAREN_R,\n    );\n  }\n  /**\n   * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n   */\n\n  parseVariableDefinition() {\n    return this.node(this._lexer.token, {\n      kind: _kinds.Kind.VARIABLE_DEFINITION,\n      variable: this.parseVariable(),\n      type:\n        (this.expectToken(_tokenKind.TokenKind.COLON),\n        this.parseTypeReference()),\n      defaultValue: this.expectOptionalToken(_tokenKind.TokenKind.EQUALS)\n        ? this.parseConstValueLiteral()\n        : undefined,\n      directives: this.parseConstDirectives(),\n    });\n  }\n  /**\n   * Variable : $ Name\n   */\n\n  parseVariable() {\n    const start = this._lexer.token;\n    this.expectToken(_tokenKind.TokenKind.DOLLAR);\n    return this.node(start, {\n      kind: _kinds.Kind.VARIABLE,\n      name: this.parseName(),\n    });\n  }\n  /**\n   * ```\n   * SelectionSet : { Selection+ }\n   * ```\n   */\n\n  parseSelectionSet() {\n    return this.node(this._lexer.token, {\n      kind: _kinds.Kind.SELECTION_SET,\n      selections: this.many(\n        _tokenKind.TokenKind.BRACE_L,\n        this.parseSelection,\n        _tokenKind.TokenKind.BRACE_R,\n      ),\n    });\n  }\n  /**\n   * Selection :\n   *   - Field\n   *   - FragmentSpread\n   *   - InlineFragment\n   */\n\n  parseSelection() {\n    return this.peek(_tokenKind.TokenKind.SPREAD)\n      ? this.parseFragment()\n      : this.parseField();\n  }\n  /**\n   * Field : Alias? Name Arguments? Directives? SelectionSet?\n   *\n   * Alias : Name :\n   */\n\n  parseField() {\n    const start = this._lexer.token;\n    const nameOrAlias = this.parseName();\n    let alias;\n    let name;\n\n    if (this.expectOptionalToken(_tokenKind.TokenKind.COLON)) {\n      alias = nameOrAlias;\n      name = this.parseName();\n    } else {\n      name = nameOrAlias;\n    }\n\n    return this.node(start, {\n      kind: _kinds.Kind.FIELD,\n      alias,\n      name,\n      arguments: this.parseArguments(false),\n      directives: this.parseDirectives(false),\n      selectionSet: this.peek(_tokenKind.TokenKind.BRACE_L)\n        ? this.parseSelectionSet()\n        : undefined,\n    });\n  }\n  /**\n   * Arguments[Const] : ( Argument[?Const]+ )\n   */\n\n  parseArguments(isConst) {\n    const item = isConst ? this.parseConstArgument : this.parseArgument;\n    return this.optionalMany(\n      _tokenKind.TokenKind.PAREN_L,\n      item,\n      _tokenKind.TokenKind.PAREN_R,\n    );\n  }\n  /**\n   * Argument[Const] : Name : Value[?Const]\n   */\n\n  parseArgument(isConst = false) {\n    const start = this._lexer.token;\n    const name = this.parseName();\n    this.expectToken(_tokenKind.TokenKind.COLON);\n    return this.node(start, {\n      kind: _kinds.Kind.ARGUMENT,\n      name,\n      value: this.parseValueLiteral(isConst),\n    });\n  }\n\n  parseConstArgument() {\n    return this.parseArgument(true);\n  } // Implements the parsing rules in the Fragments section.\n\n  /**\n   * Corresponds to both FragmentSpread and InlineFragment in the spec.\n   *\n   * FragmentSpread : ... FragmentName Directives?\n   *\n   * InlineFragment : ... TypeCondition? Directives? SelectionSet\n   */\n\n  parseFragment() {\n    const start = this._lexer.token;\n    this.expectToken(_tokenKind.TokenKind.SPREAD);\n    const hasTypeCondition = this.expectOptionalKeyword('on');\n\n    if (!hasTypeCondition && this.peek(_tokenKind.TokenKind.NAME)) {\n      return this.node(start, {\n        kind: _kinds.Kind.FRAGMENT_SPREAD,\n        name: this.parseFragmentName(),\n        directives: this.parseDirectives(false),\n      });\n    }\n\n    return this.node(start, {\n      kind: _kinds.Kind.INLINE_FRAGMENT,\n      typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n      directives: this.parseDirectives(false),\n      selectionSet: this.parseSelectionSet(),\n    });\n  }\n  /**\n   * FragmentDefinition :\n   *   - fragment FragmentName on TypeCondition Directives? SelectionSet\n   *\n   * TypeCondition : NamedType\n   */\n\n  parseFragmentDefinition() {\n    const start = this._lexer.token;\n    this.expectKeyword('fragment'); // Legacy support for defining variables within fragments changes\n    // the grammar of FragmentDefinition:\n    //   - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n    if (this._options.allowLegacyFragmentVariables === true) {\n      return this.node(start, {\n        kind: _kinds.Kind.FRAGMENT_DEFINITION,\n        name: this.parseFragmentName(),\n        variableDefinitions: this.parseVariableDefinitions(),\n        typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n        directives: this.parseDirectives(false),\n        selectionSet: this.parseSelectionSet(),\n      });\n    }\n\n    return this.node(start, {\n      kind: _kinds.Kind.FRAGMENT_DEFINITION,\n      name: this.parseFragmentName(),\n      typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n      directives: this.parseDirectives(false),\n      selectionSet: this.parseSelectionSet(),\n    });\n  }\n  /**\n   * FragmentName : Name but not `on`\n   */\n\n  parseFragmentName() {\n    if (this._lexer.token.value === 'on') {\n      throw this.unexpected();\n    }\n\n    return this.parseName();\n  } // Implements the parsing rules in the Values section.\n\n  /**\n   * Value[Const] :\n   *   - [~Const] Variable\n   *   - IntValue\n   *   - FloatValue\n   *   - StringValue\n   *   - BooleanValue\n   *   - NullValue\n   *   - EnumValue\n   *   - ListValue[?Const]\n   *   - ObjectValue[?Const]\n   *\n   * BooleanValue : one of `true` `false`\n   *\n   * NullValue : `null`\n   *\n   * EnumValue : Name but not `true`, `false` or `null`\n   */\n\n  parseValueLiteral(isConst) {\n    const token = this._lexer.token;\n\n    switch (token.kind) {\n      case _tokenKind.TokenKind.BRACKET_L:\n        return this.parseList(isConst);\n\n      case _tokenKind.TokenKind.BRACE_L:\n        return this.parseObject(isConst);\n\n      case _tokenKind.TokenKind.INT:\n        this.advanceLexer();\n        return this.node(token, {\n          kind: _kinds.Kind.INT,\n          value: token.value,\n        });\n\n      case _tokenKind.TokenKind.FLOAT:\n        this.advanceLexer();\n        return this.node(token, {\n          kind: _kinds.Kind.FLOAT,\n          value: token.value,\n        });\n\n      case _tokenKind.TokenKind.STRING:\n      case _tokenKind.TokenKind.BLOCK_STRING:\n        return this.parseStringLiteral();\n\n      case _tokenKind.TokenKind.NAME:\n        this.advanceLexer();\n\n        switch (token.value) {\n          case 'true':\n            return this.node(token, {\n              kind: _kinds.Kind.BOOLEAN,\n              value: true,\n            });\n\n          case 'false':\n            return this.node(token, {\n              kind: _kinds.Kind.BOOLEAN,\n              value: false,\n            });\n\n          case 'null':\n            return this.node(token, {\n              kind: _kinds.Kind.NULL,\n            });\n\n          default:\n            return this.node(token, {\n              kind: _kinds.Kind.ENUM,\n              value: token.value,\n            });\n        }\n\n      case _tokenKind.TokenKind.DOLLAR:\n        if (isConst) {\n          this.expectToken(_tokenKind.TokenKind.DOLLAR);\n\n          if (this._lexer.token.kind === _tokenKind.TokenKind.NAME) {\n            const varName = this._lexer.token.value;\n            throw (0, _syntaxError.syntaxError)(\n              this._lexer.source,\n              token.start,\n              `Unexpected variable \"$${varName}\" in constant value.`,\n            );\n          } else {\n            throw this.unexpected(token);\n          }\n        }\n\n        return this.parseVariable();\n\n      default:\n        throw this.unexpected();\n    }\n  }\n\n  parseConstValueLiteral() {\n    return this.parseValueLiteral(true);\n  }\n\n  parseStringLiteral() {\n    const token = this._lexer.token;\n    this.advanceLexer();\n    return this.node(token, {\n      kind: _kinds.Kind.STRING,\n      value: token.value,\n      block: token.kind === _tokenKind.TokenKind.BLOCK_STRING,\n    });\n  }\n  /**\n   * ListValue[Const] :\n   *   - [ ]\n   *   - [ Value[?Const]+ ]\n   */\n\n  parseList(isConst) {\n    const item = () => this.parseValueLiteral(isConst);\n\n    return this.node(this._lexer.token, {\n      kind: _kinds.Kind.LIST,\n      values: this.any(\n        _tokenKind.TokenKind.BRACKET_L,\n        item,\n        _tokenKind.TokenKind.BRACKET_R,\n      ),\n    });\n  }\n  /**\n   * ```\n   * ObjectValue[Const] :\n   *   - { }\n   *   - { ObjectField[?Const]+ }\n   * ```\n   */\n\n  parseObject(isConst) {\n    const item = () => this.parseObjectField(isConst);\n\n    return this.node(this._lexer.token, {\n      kind: _kinds.Kind.OBJECT,\n      fields: this.any(\n        _tokenKind.TokenKind.BRACE_L,\n        item,\n        _tokenKind.TokenKind.BRACE_R,\n      ),\n    });\n  }\n  /**\n   * ObjectField[Const] : Name : Value[?Const]\n   */\n\n  parseObjectField(isConst) {\n    const start = this._lexer.token;\n    const name = this.parseName();\n    this.expectToken(_tokenKind.TokenKind.COLON);\n    return this.node(start, {\n      kind: _kinds.Kind.OBJECT_FIELD,\n      name,\n      value: this.parseValueLiteral(isConst),\n    });\n  } // Implements the parsing rules in the Directives section.\n\n  /**\n   * Directives[Const] : Directive[?Const]+\n   */\n\n  parseDirectives(isConst) {\n    const directives = [];\n\n    while (this.peek(_tokenKind.TokenKind.AT)) {\n      directives.push(this.parseDirective(isConst));\n    }\n\n    return directives;\n  }\n\n  parseConstDirectives() {\n    return this.parseDirectives(true);\n  }\n  /**\n   * ```\n   * Directive[Const] : @ Name Arguments[?Const]?\n   * ```\n   */\n\n  parseDirective(isConst) {\n    const start = this._lexer.token;\n    this.expectToken(_tokenKind.TokenKind.AT);\n    return this.node(start, {\n      kind: _kinds.Kind.DIRECTIVE,\n      name: this.parseName(),\n      arguments: this.parseArguments(isConst),\n    });\n  } // Implements the parsing rules in the Types section.\n\n  /**\n   * Type :\n   *   - NamedType\n   *   - ListType\n   *   - NonNullType\n   */\n\n  parseTypeReference() {\n    const start = this._lexer.token;\n    let type;\n\n    if (this.expectOptionalToken(_tokenKind.TokenKind.BRACKET_L)) {\n      const innerType = this.parseTypeReference();\n      this.expectToken(_tokenKind.TokenKind.BRACKET_R);\n      type = this.node(start, {\n        kind: _kinds.Kind.LIST_TYPE,\n        type: innerType,\n      });\n    } else {\n      type = this.parseNamedType();\n    }\n\n    if (this.expectOptionalToken(_tokenKind.TokenKind.BANG)) {\n      return this.node(start, {\n        kind: _kinds.Kind.NON_NULL_TYPE,\n        type,\n      });\n    }\n\n    return type;\n  }\n  /**\n   * NamedType : Name\n   */\n\n  parseNamedType() {\n    return this.node(this._lexer.token, {\n      kind: _kinds.Kind.NAMED_TYPE,\n      name: this.parseName(),\n    });\n  } // Implements the parsing rules in the Type Definition section.\n\n  peekDescription() {\n    return (\n      this.peek(_tokenKind.TokenKind.STRING) ||\n      this.peek(_tokenKind.TokenKind.BLOCK_STRING)\n    );\n  }\n  /**\n   * Description : StringValue\n   */\n\n  parseDescription() {\n    if (this.peekDescription()) {\n      return this.parseStringLiteral();\n    }\n  }\n  /**\n   * ```\n   * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ }\n   * ```\n   */\n\n  parseSchemaDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('schema');\n    const directives = this.parseConstDirectives();\n    const operationTypes = this.many(\n      _tokenKind.TokenKind.BRACE_L,\n      this.parseOperationTypeDefinition,\n      _tokenKind.TokenKind.BRACE_R,\n    );\n    return this.node(start, {\n      kind: _kinds.Kind.SCHEMA_DEFINITION,\n      description,\n      directives,\n      operationTypes,\n    });\n  }\n  /**\n   * OperationTypeDefinition : OperationType : NamedType\n   */\n\n  parseOperationTypeDefinition() {\n    const start = this._lexer.token;\n    const operation = this.parseOperationType();\n    this.expectToken(_tokenKind.TokenKind.COLON);\n    const type = this.parseNamedType();\n    return this.node(start, {\n      kind: _kinds.Kind.OPERATION_TYPE_DEFINITION,\n      operation,\n      type,\n    });\n  }\n  /**\n   * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n   */\n\n  parseScalarTypeDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('scalar');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n    return this.node(start, {\n      kind: _kinds.Kind.SCALAR_TYPE_DEFINITION,\n      description,\n      name,\n      directives,\n    });\n  }\n  /**\n   * ObjectTypeDefinition :\n   *   Description?\n   *   type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n   */\n\n  parseObjectTypeDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('type');\n    const name = this.parseName();\n    const interfaces = this.parseImplementsInterfaces();\n    const directives = this.parseConstDirectives();\n    const fields = this.parseFieldsDefinition();\n    return this.node(start, {\n      kind: _kinds.Kind.OBJECT_TYPE_DEFINITION,\n      description,\n      name,\n      interfaces,\n      directives,\n      fields,\n    });\n  }\n  /**\n   * ImplementsInterfaces :\n   *   - implements `&`? NamedType\n   *   - ImplementsInterfaces & NamedType\n   */\n\n  parseImplementsInterfaces() {\n    return this.expectOptionalKeyword('implements')\n      ? this.delimitedMany(_tokenKind.TokenKind.AMP, this.parseNamedType)\n      : [];\n  }\n  /**\n   * ```\n   * FieldsDefinition : { FieldDefinition+ }\n   * ```\n   */\n\n  parseFieldsDefinition() {\n    return this.optionalMany(\n      _tokenKind.TokenKind.BRACE_L,\n      this.parseFieldDefinition,\n      _tokenKind.TokenKind.BRACE_R,\n    );\n  }\n  /**\n   * FieldDefinition :\n   *   - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n   */\n\n  parseFieldDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    const name = this.parseName();\n    const args = this.parseArgumentDefs();\n    this.expectToken(_tokenKind.TokenKind.COLON);\n    const type = this.parseTypeReference();\n    const directives = this.parseConstDirectives();\n    return this.node(start, {\n      kind: _kinds.Kind.FIELD_DEFINITION,\n      description,\n      name,\n      arguments: args,\n      type,\n      directives,\n    });\n  }\n  /**\n   * ArgumentsDefinition : ( InputValueDefinition+ )\n   */\n\n  parseArgumentDefs() {\n    return this.optionalMany(\n      _tokenKind.TokenKind.PAREN_L,\n      this.parseInputValueDef,\n      _tokenKind.TokenKind.PAREN_R,\n    );\n  }\n  /**\n   * InputValueDefinition :\n   *   - Description? Name : Type DefaultValue? Directives[Const]?\n   */\n\n  parseInputValueDef() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    const name = this.parseName();\n    this.expectToken(_tokenKind.TokenKind.COLON);\n    const type = this.parseTypeReference();\n    let defaultValue;\n\n    if (this.expectOptionalToken(_tokenKind.TokenKind.EQUALS)) {\n      defaultValue = this.parseConstValueLiteral();\n    }\n\n    const directives = this.parseConstDirectives();\n    return this.node(start, {\n      kind: _kinds.Kind.INPUT_VALUE_DEFINITION,\n      description,\n      name,\n      type,\n      defaultValue,\n      directives,\n    });\n  }\n  /**\n   * InterfaceTypeDefinition :\n   *   - Description? interface Name Directives[Const]? FieldsDefinition?\n   */\n\n  parseInterfaceTypeDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('interface');\n    const name = this.parseName();\n    const interfaces = this.parseImplementsInterfaces();\n    const directives = this.parseConstDirectives();\n    const fields = this.parseFieldsDefinition();\n    return this.node(start, {\n      kind: _kinds.Kind.INTERFACE_TYPE_DEFINITION,\n      description,\n      name,\n      interfaces,\n      directives,\n      fields,\n    });\n  }\n  /**\n   * UnionTypeDefinition :\n   *   - Description? union Name Directives[Const]? UnionMemberTypes?\n   */\n\n  parseUnionTypeDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('union');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n    const types = this.parseUnionMemberTypes();\n    return this.node(start, {\n      kind: _kinds.Kind.UNION_TYPE_DEFINITION,\n      description,\n      name,\n      directives,\n      types,\n    });\n  }\n  /**\n   * UnionMemberTypes :\n   *   - = `|`? NamedType\n   *   - UnionMemberTypes | NamedType\n   */\n\n  parseUnionMemberTypes() {\n    return this.expectOptionalToken(_tokenKind.TokenKind.EQUALS)\n      ? this.delimitedMany(_tokenKind.TokenKind.PIPE, this.parseNamedType)\n      : [];\n  }\n  /**\n   * EnumTypeDefinition :\n   *   - Description? enum Name Directives[Const]? EnumValuesDefinition?\n   */\n\n  parseEnumTypeDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('enum');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n    const values = this.parseEnumValuesDefinition();\n    return this.node(start, {\n      kind: _kinds.Kind.ENUM_TYPE_DEFINITION,\n      description,\n      name,\n      directives,\n      values,\n    });\n  }\n  /**\n   * ```\n   * EnumValuesDefinition : { EnumValueDefinition+ }\n   * ```\n   */\n\n  parseEnumValuesDefinition() {\n    return this.optionalMany(\n      _tokenKind.TokenKind.BRACE_L,\n      this.parseEnumValueDefinition,\n      _tokenKind.TokenKind.BRACE_R,\n    );\n  }\n  /**\n   * EnumValueDefinition : Description? EnumValue Directives[Const]?\n   */\n\n  parseEnumValueDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    const name = this.parseEnumValueName();\n    const directives = this.parseConstDirectives();\n    return this.node(start, {\n      kind: _kinds.Kind.ENUM_VALUE_DEFINITION,\n      description,\n      name,\n      directives,\n    });\n  }\n  /**\n   * EnumValue : Name but not `true`, `false` or `null`\n   */\n\n  parseEnumValueName() {\n    if (\n      this._lexer.token.value === 'true' ||\n      this._lexer.token.value === 'false' ||\n      this._lexer.token.value === 'null'\n    ) {\n      throw (0, _syntaxError.syntaxError)(\n        this._lexer.source,\n        this._lexer.token.start,\n        `${getTokenDesc(\n          this._lexer.token,\n        )} is reserved and cannot be used for an enum value.`,\n      );\n    }\n\n    return this.parseName();\n  }\n  /**\n   * InputObjectTypeDefinition :\n   *   - Description? input Name Directives[Const]? InputFieldsDefinition?\n   */\n\n  parseInputObjectTypeDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('input');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n    const fields = this.parseInputFieldsDefinition();\n    return this.node(start, {\n      kind: _kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION,\n      description,\n      name,\n      directives,\n      fields,\n    });\n  }\n  /**\n   * ```\n   * InputFieldsDefinition : { InputValueDefinition+ }\n   * ```\n   */\n\n  parseInputFieldsDefinition() {\n    return this.optionalMany(\n      _tokenKind.TokenKind.BRACE_L,\n      this.parseInputValueDef,\n      _tokenKind.TokenKind.BRACE_R,\n    );\n  }\n  /**\n   * TypeSystemExtension :\n   *   - SchemaExtension\n   *   - TypeExtension\n   *\n   * TypeExtension :\n   *   - ScalarTypeExtension\n   *   - ObjectTypeExtension\n   *   - InterfaceTypeExtension\n   *   - UnionTypeExtension\n   *   - EnumTypeExtension\n   *   - InputObjectTypeDefinition\n   */\n\n  parseTypeSystemExtension() {\n    const keywordToken = this._lexer.lookahead();\n\n    if (keywordToken.kind === _tokenKind.TokenKind.NAME) {\n      switch (keywordToken.value) {\n        case 'schema':\n          return this.parseSchemaExtension();\n\n        case 'scalar':\n          return this.parseScalarTypeExtension();\n\n        case 'type':\n          return this.parseObjectTypeExtension();\n\n        case 'interface':\n          return this.parseInterfaceTypeExtension();\n\n        case 'union':\n          return this.parseUnionTypeExtension();\n\n        case 'enum':\n          return this.parseEnumTypeExtension();\n\n        case 'input':\n          return this.parseInputObjectTypeExtension();\n      }\n    }\n\n    throw this.unexpected(keywordToken);\n  }\n  /**\n   * ```\n   * SchemaExtension :\n   *  - extend schema Directives[Const]? { OperationTypeDefinition+ }\n   *  - extend schema Directives[Const]\n   * ```\n   */\n\n  parseSchemaExtension() {\n    const start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('schema');\n    const directives = this.parseConstDirectives();\n    const operationTypes = this.optionalMany(\n      _tokenKind.TokenKind.BRACE_L,\n      this.parseOperationTypeDefinition,\n      _tokenKind.TokenKind.BRACE_R,\n    );\n\n    if (directives.length === 0 && operationTypes.length === 0) {\n      throw this.unexpected();\n    }\n\n    return this.node(start, {\n      kind: _kinds.Kind.SCHEMA_EXTENSION,\n      directives,\n      operationTypes,\n    });\n  }\n  /**\n   * ScalarTypeExtension :\n   *   - extend scalar Name Directives[Const]\n   */\n\n  parseScalarTypeExtension() {\n    const start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('scalar');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n\n    if (directives.length === 0) {\n      throw this.unexpected();\n    }\n\n    return this.node(start, {\n      kind: _kinds.Kind.SCALAR_TYPE_EXTENSION,\n      name,\n      directives,\n    });\n  }\n  /**\n   * ObjectTypeExtension :\n   *  - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n   *  - extend type Name ImplementsInterfaces? Directives[Const]\n   *  - extend type Name ImplementsInterfaces\n   */\n\n  parseObjectTypeExtension() {\n    const start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('type');\n    const name = this.parseName();\n    const interfaces = this.parseImplementsInterfaces();\n    const directives = this.parseConstDirectives();\n    const fields = this.parseFieldsDefinition();\n\n    if (\n      interfaces.length === 0 &&\n      directives.length === 0 &&\n      fields.length === 0\n    ) {\n      throw this.unexpected();\n    }\n\n    return this.node(start, {\n      kind: _kinds.Kind.OBJECT_TYPE_EXTENSION,\n      name,\n      interfaces,\n      directives,\n      fields,\n    });\n  }\n  /**\n   * InterfaceTypeExtension :\n   *  - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n   *  - extend interface Name ImplementsInterfaces? Directives[Const]\n   *  - extend interface Name ImplementsInterfaces\n   */\n\n  parseInterfaceTypeExtension() {\n    const start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('interface');\n    const name = this.parseName();\n    const interfaces = this.parseImplementsInterfaces();\n    const directives = this.parseConstDirectives();\n    const fields = this.parseFieldsDefinition();\n\n    if (\n      interfaces.length === 0 &&\n      directives.length === 0 &&\n      fields.length === 0\n    ) {\n      throw this.unexpected();\n    }\n\n    return this.node(start, {\n      kind: _kinds.Kind.INTERFACE_TYPE_EXTENSION,\n      name,\n      interfaces,\n      directives,\n      fields,\n    });\n  }\n  /**\n   * UnionTypeExtension :\n   *   - extend union Name Directives[Const]? UnionMemberTypes\n   *   - extend union Name Directives[Const]\n   */\n\n  parseUnionTypeExtension() {\n    const start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('union');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n    const types = this.parseUnionMemberTypes();\n\n    if (directives.length === 0 && types.length === 0) {\n      throw this.unexpected();\n    }\n\n    return this.node(start, {\n      kind: _kinds.Kind.UNION_TYPE_EXTENSION,\n      name,\n      directives,\n      types,\n    });\n  }\n  /**\n   * EnumTypeExtension :\n   *   - extend enum Name Directives[Const]? EnumValuesDefinition\n   *   - extend enum Name Directives[Const]\n   */\n\n  parseEnumTypeExtension() {\n    const start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('enum');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n    const values = this.parseEnumValuesDefinition();\n\n    if (directives.length === 0 && values.length === 0) {\n      throw this.unexpected();\n    }\n\n    return this.node(start, {\n      kind: _kinds.Kind.ENUM_TYPE_EXTENSION,\n      name,\n      directives,\n      values,\n    });\n  }\n  /**\n   * InputObjectTypeExtension :\n   *   - extend input Name Directives[Const]? InputFieldsDefinition\n   *   - extend input Name Directives[Const]\n   */\n\n  parseInputObjectTypeExtension() {\n    const start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('input');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n    const fields = this.parseInputFieldsDefinition();\n\n    if (directives.length === 0 && fields.length === 0) {\n      throw this.unexpected();\n    }\n\n    return this.node(start, {\n      kind: _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION,\n      name,\n      directives,\n      fields,\n    });\n  }\n  /**\n   * ```\n   * DirectiveDefinition :\n   *   - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n   * ```\n   */\n\n  parseDirectiveDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('directive');\n    this.expectToken(_tokenKind.TokenKind.AT);\n    const name = this.parseName();\n    const args = this.parseArgumentDefs();\n    const repeatable = this.expectOptionalKeyword('repeatable');\n    this.expectKeyword('on');\n    const locations = this.parseDirectiveLocations();\n    return this.node(start, {\n      kind: _kinds.Kind.DIRECTIVE_DEFINITION,\n      description,\n      name,\n      arguments: args,\n      repeatable,\n      locations,\n    });\n  }\n  /**\n   * DirectiveLocations :\n   *   - `|`? DirectiveLocation\n   *   - DirectiveLocations | DirectiveLocation\n   */\n\n  parseDirectiveLocations() {\n    return this.delimitedMany(\n      _tokenKind.TokenKind.PIPE,\n      this.parseDirectiveLocation,\n    );\n  }\n  /*\n   * DirectiveLocation :\n   *   - ExecutableDirectiveLocation\n   *   - TypeSystemDirectiveLocation\n   *\n   * ExecutableDirectiveLocation : one of\n   *   `QUERY`\n   *   `MUTATION`\n   *   `SUBSCRIPTION`\n   *   `FIELD`\n   *   `FRAGMENT_DEFINITION`\n   *   `FRAGMENT_SPREAD`\n   *   `INLINE_FRAGMENT`\n   *\n   * TypeSystemDirectiveLocation : one of\n   *   `SCHEMA`\n   *   `SCALAR`\n   *   `OBJECT`\n   *   `FIELD_DEFINITION`\n   *   `ARGUMENT_DEFINITION`\n   *   `INTERFACE`\n   *   `UNION`\n   *   `ENUM`\n   *   `ENUM_VALUE`\n   *   `INPUT_OBJECT`\n   *   `INPUT_FIELD_DEFINITION`\n   */\n\n  parseDirectiveLocation() {\n    const start = this._lexer.token;\n    const name = this.parseName();\n\n    if (\n      Object.prototype.hasOwnProperty.call(\n        _directiveLocation.DirectiveLocation,\n        name.value,\n      )\n    ) {\n      return name;\n    }\n\n    throw this.unexpected(start);\n  } // Core parsing utility functions\n\n  /**\n   * Returns a node that, if configured to do so, sets a \"loc\" field as a\n   * location object, used to identify the place in the source that created a\n   * given parsed object.\n   */\n\n  node(startToken, node) {\n    if (this._options.noLocation !== true) {\n      node.loc = new _ast.Location(\n        startToken,\n        this._lexer.lastToken,\n        this._lexer.source,\n      );\n    }\n\n    return node;\n  }\n  /**\n   * Determines if the next token is of a given kind\n   */\n\n  peek(kind) {\n    return this._lexer.token.kind === kind;\n  }\n  /**\n   * If the next token is of the given kind, return that token after advancing the lexer.\n   * Otherwise, do not change the parser state and throw an error.\n   */\n\n  expectToken(kind) {\n    const token = this._lexer.token;\n\n    if (token.kind === kind) {\n      this.advanceLexer();\n      return token;\n    }\n\n    throw (0, _syntaxError.syntaxError)(\n      this._lexer.source,\n      token.start,\n      `Expected ${getTokenKindDesc(kind)}, found ${getTokenDesc(token)}.`,\n    );\n  }\n  /**\n   * If the next token is of the given kind, return \"true\" after advancing the lexer.\n   * Otherwise, do not change the parser state and return \"false\".\n   */\n\n  expectOptionalToken(kind) {\n    const token = this._lexer.token;\n\n    if (token.kind === kind) {\n      this.advanceLexer();\n      return true;\n    }\n\n    return false;\n  }\n  /**\n   * If the next token is a given keyword, advance the lexer.\n   * Otherwise, do not change the parser state and throw an error.\n   */\n\n  expectKeyword(value) {\n    const token = this._lexer.token;\n\n    if (token.kind === _tokenKind.TokenKind.NAME && token.value === value) {\n      this.advanceLexer();\n    } else {\n      throw (0, _syntaxError.syntaxError)(\n        this._lexer.source,\n        token.start,\n        `Expected \"${value}\", found ${getTokenDesc(token)}.`,\n      );\n    }\n  }\n  /**\n   * If the next token is a given keyword, return \"true\" after advancing the lexer.\n   * Otherwise, do not change the parser state and return \"false\".\n   */\n\n  expectOptionalKeyword(value) {\n    const token = this._lexer.token;\n\n    if (token.kind === _tokenKind.TokenKind.NAME && token.value === value) {\n      this.advanceLexer();\n      return true;\n    }\n\n    return false;\n  }\n  /**\n   * Helper function for creating an error when an unexpected lexed token is encountered.\n   */\n\n  unexpected(atToken) {\n    const token =\n      atToken !== null && atToken !== void 0 ? atToken : this._lexer.token;\n    return (0, _syntaxError.syntaxError)(\n      this._lexer.source,\n      token.start,\n      `Unexpected ${getTokenDesc(token)}.`,\n    );\n  }\n  /**\n   * Returns a possibly empty list of parse nodes, determined by the parseFn.\n   * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n   * Advances the parser to the next lex token after the closing token.\n   */\n\n  any(openKind, parseFn, closeKind) {\n    this.expectToken(openKind);\n    const nodes = [];\n\n    while (!this.expectOptionalToken(closeKind)) {\n      nodes.push(parseFn.call(this));\n    }\n\n    return nodes;\n  }\n  /**\n   * Returns a list of parse nodes, determined by the parseFn.\n   * It can be empty only if open token is missing otherwise it will always return non-empty list\n   * that begins with a lex token of openKind and ends with a lex token of closeKind.\n   * Advances the parser to the next lex token after the closing token.\n   */\n\n  optionalMany(openKind, parseFn, closeKind) {\n    if (this.expectOptionalToken(openKind)) {\n      const nodes = [];\n\n      do {\n        nodes.push(parseFn.call(this));\n      } while (!this.expectOptionalToken(closeKind));\n\n      return nodes;\n    }\n\n    return [];\n  }\n  /**\n   * Returns a non-empty list of parse nodes, determined by the parseFn.\n   * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n   * Advances the parser to the next lex token after the closing token.\n   */\n\n  many(openKind, parseFn, closeKind) {\n    this.expectToken(openKind);\n    const nodes = [];\n\n    do {\n      nodes.push(parseFn.call(this));\n    } while (!this.expectOptionalToken(closeKind));\n\n    return nodes;\n  }\n  /**\n   * Returns a non-empty list of parse nodes, determined by the parseFn.\n   * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind.\n   * Advances the parser to the next lex token after last item in the list.\n   */\n\n  delimitedMany(delimiterKind, parseFn) {\n    this.expectOptionalToken(delimiterKind);\n    const nodes = [];\n\n    do {\n      nodes.push(parseFn.call(this));\n    } while (this.expectOptionalToken(delimiterKind));\n\n    return nodes;\n  }\n\n  advanceLexer() {\n    const { maxTokens } = this._options;\n\n    const token = this._lexer.advance();\n\n    if (maxTokens !== undefined && token.kind !== _tokenKind.TokenKind.EOF) {\n      ++this._tokenCounter;\n\n      if (this._tokenCounter > maxTokens) {\n        throw (0, _syntaxError.syntaxError)(\n          this._lexer.source,\n          token.start,\n          `Document contains more that ${maxTokens} tokens. Parsing aborted.`,\n        );\n      }\n    }\n  }\n}\n/**\n * A helper function to describe a token as a string for debugging.\n */\n\nexports.Parser = Parser;\n\nfunction getTokenDesc(token) {\n  const value = token.value;\n  return getTokenKindDesc(token.kind) + (value != null ? ` \"${value}\"` : '');\n}\n/**\n * A helper function to describe a token kind as a string for debugging.\n */\n\nfunction getTokenKindDesc(kind) {\n  return (0, _lexer.isPunctuatorTokenKind)(kind) ? `\"${kind}\"` : kind;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.didYouMean = didYouMean;\nconst MAX_SUGGESTIONS = 5;\n/**\n * Given [ A, B, C ] return ' Did you mean A, B, or C?'.\n */\n\nfunction didYouMean(firstArg, secondArg) {\n  const [subMessage, suggestionsArg] = secondArg\n    ? [firstArg, secondArg]\n    : [undefined, firstArg];\n  let message = ' Did you mean ';\n\n  if (subMessage) {\n    message += subMessage + ' ';\n  }\n\n  const suggestions = suggestionsArg.map((x) => `\"${x}\"`);\n\n  switch (suggestions.length) {\n    case 0:\n      return '';\n\n    case 1:\n      return message + suggestions[0] + '?';\n\n    case 2:\n      return message + suggestions[0] + ' or ' + suggestions[1] + '?';\n  }\n\n  const selected = suggestions.slice(0, MAX_SUGGESTIONS);\n  const lastItem = selected.pop();\n  return message + selected.join(', ') + ', or ' + lastItem + '?';\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.identityFunc = identityFunc;\n\n/**\n * Returns the first argument it receives.\n */\nfunction identityFunc(x) {\n  return x;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.keyMap = keyMap;\n\n/**\n * Creates a keyed JS object from an array, given a function to produce the keys\n * for each value in the array.\n *\n * This provides a convenient lookup for the array items if the key function\n * produces unique results.\n * ```ts\n * const phoneBook = [\n *   { name: 'Jon', num: '555-1234' },\n *   { name: 'Jenny', num: '867-5309' }\n * ]\n *\n * const entriesByName = keyMap(\n *   phoneBook,\n *   entry => entry.name\n * )\n *\n * // {\n * //   Jon: { name: 'Jon', num: '555-1234' },\n * //   Jenny: { name: 'Jenny', num: '867-5309' }\n * // }\n *\n * const jennyEntry = entriesByName['Jenny']\n *\n * // { name: 'Jenny', num: '857-6309' }\n * ```\n */\nfunction keyMap(list, keyFn) {\n  const result = Object.create(null);\n\n  for (const item of list) {\n    result[keyFn(item)] = item;\n  }\n\n  return result;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.keyValMap = keyValMap;\n\n/**\n * Creates a keyed JS object from an array, given a function to produce the keys\n * and a function to produce the values from each item in the array.\n * ```ts\n * const phoneBook = [\n *   { name: 'Jon', num: '555-1234' },\n *   { name: 'Jenny', num: '867-5309' }\n * ]\n *\n * // { Jon: '555-1234', Jenny: '867-5309' }\n * const phonesByName = keyValMap(\n *   phoneBook,\n *   entry => entry.name,\n *   entry => entry.num\n * )\n * ```\n */\nfunction keyValMap(list, keyFn, valFn) {\n  const result = Object.create(null);\n\n  for (const item of list) {\n    result[keyFn(item)] = valFn(item);\n  }\n\n  return result;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.mapValue = mapValue;\n\n/**\n * Creates an object map with the same keys as `map` and values generated by\n * running each value of `map` thru `fn`.\n */\nfunction mapValue(map, fn) {\n  const result = Object.create(null);\n\n  for (const key of Object.keys(map)) {\n    result[key] = fn(map[key], key);\n  }\n\n  return result;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.naturalCompare = naturalCompare;\n\n/**\n * Returns a number indicating whether a reference string comes before, or after,\n * or is the same as the given string in natural sort order.\n *\n * See: https://en.wikipedia.org/wiki/Natural_sort_order\n *\n */\nfunction naturalCompare(aStr, bStr) {\n  let aIndex = 0;\n  let bIndex = 0;\n\n  while (aIndex < aStr.length && bIndex < bStr.length) {\n    let aChar = aStr.charCodeAt(aIndex);\n    let bChar = bStr.charCodeAt(bIndex);\n\n    if (isDigit(aChar) && isDigit(bChar)) {\n      let aNum = 0;\n\n      do {\n        ++aIndex;\n        aNum = aNum * 10 + aChar - DIGIT_0;\n        aChar = aStr.charCodeAt(aIndex);\n      } while (isDigit(aChar) && aNum > 0);\n\n      let bNum = 0;\n\n      do {\n        ++bIndex;\n        bNum = bNum * 10 + bChar - DIGIT_0;\n        bChar = bStr.charCodeAt(bIndex);\n      } while (isDigit(bChar) && bNum > 0);\n\n      if (aNum < bNum) {\n        return -1;\n      }\n\n      if (aNum > bNum) {\n        return 1;\n      }\n    } else {\n      if (aChar < bChar) {\n        return -1;\n      }\n\n      if (aChar > bChar) {\n        return 1;\n      }\n\n      ++aIndex;\n      ++bIndex;\n    }\n  }\n\n  return aStr.length - bStr.length;\n}\n\nconst DIGIT_0 = 48;\nconst DIGIT_9 = 57;\n\nfunction isDigit(code) {\n  return !isNaN(code) && DIGIT_0 <= code && code <= DIGIT_9;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.suggestionList = suggestionList;\n\nvar _naturalCompare = require('./naturalCompare.js');\n\n/**\n * Given an invalid input string and a list of valid options, returns a filtered\n * list of valid options sorted based on their similarity with the input.\n */\nfunction suggestionList(input, options) {\n  const optionsByDistance = Object.create(null);\n  const lexicalDistance = new LexicalDistance(input);\n  const threshold = Math.floor(input.length * 0.4) + 1;\n\n  for (const option of options) {\n    const distance = lexicalDistance.measure(option, threshold);\n\n    if (distance !== undefined) {\n      optionsByDistance[option] = distance;\n    }\n  }\n\n  return Object.keys(optionsByDistance).sort((a, b) => {\n    const distanceDiff = optionsByDistance[a] - optionsByDistance[b];\n    return distanceDiff !== 0\n      ? distanceDiff\n      : (0, _naturalCompare.naturalCompare)(a, b);\n  });\n}\n/**\n * Computes the lexical distance between strings A and B.\n *\n * The \"distance\" between two strings is given by counting the minimum number\n * of edits needed to transform string A into string B. An edit can be an\n * insertion, deletion, or substitution of a single character, or a swap of two\n * adjacent characters.\n *\n * Includes a custom alteration from Damerau-Levenshtein to treat case changes\n * as a single edit which helps identify mis-cased values with an edit distance\n * of 1.\n *\n * This distance can be useful for detecting typos in input or sorting\n */\n\nclass LexicalDistance {\n  constructor(input) {\n    this._input = input;\n    this._inputLowerCase = input.toLowerCase();\n    this._inputArray = stringToArray(this._inputLowerCase);\n    this._rows = [\n      new Array(input.length + 1).fill(0),\n      new Array(input.length + 1).fill(0),\n      new Array(input.length + 1).fill(0),\n    ];\n  }\n\n  measure(option, threshold) {\n    if (this._input === option) {\n      return 0;\n    }\n\n    const optionLowerCase = option.toLowerCase(); // Any case change counts as a single edit\n\n    if (this._inputLowerCase === optionLowerCase) {\n      return 1;\n    }\n\n    let a = stringToArray(optionLowerCase);\n    let b = this._inputArray;\n\n    if (a.length < b.length) {\n      const tmp = a;\n      a = b;\n      b = tmp;\n    }\n\n    const aLength = a.length;\n    const bLength = b.length;\n\n    if (aLength - bLength > threshold) {\n      return undefined;\n    }\n\n    const rows = this._rows;\n\n    for (let j = 0; j <= bLength; j++) {\n      rows[0][j] = j;\n    }\n\n    for (let i = 1; i <= aLength; i++) {\n      const upRow = rows[(i - 1) % 3];\n      const currentRow = rows[i % 3];\n      let smallestCell = (currentRow[0] = i);\n\n      for (let j = 1; j <= bLength; j++) {\n        const cost = a[i - 1] === b[j - 1] ? 0 : 1;\n        let currentCell = Math.min(\n          upRow[j] + 1, // delete\n          currentRow[j - 1] + 1, // insert\n          upRow[j - 1] + cost, // substitute\n        );\n\n        if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {\n          // transposition\n          const doubleDiagonalCell = rows[(i - 2) % 3][j - 2];\n          currentCell = Math.min(currentCell, doubleDiagonalCell + 1);\n        }\n\n        if (currentCell < smallestCell) {\n          smallestCell = currentCell;\n        }\n\n        currentRow[j] = currentCell;\n      } // Early exit, since distance can't go smaller than smallest element of the previous row.\n\n      if (smallestCell > threshold) {\n        return undefined;\n      }\n    }\n\n    const distance = rows[aLength % 3][bLength];\n    return distance <= threshold ? distance : undefined;\n  }\n}\n\nfunction stringToArray(str) {\n  const strLength = str.length;\n  const array = new Array(strLength);\n\n  for (let i = 0; i < strLength; ++i) {\n    array[i] = str.charCodeAt(i);\n  }\n\n  return array;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.toObjMap = toObjMap;\n\nfunction toObjMap(obj) {\n  if (obj == null) {\n    return Object.create(null);\n  }\n\n  if (Object.getPrototypeOf(obj) === null) {\n    return obj;\n  }\n\n  const map = Object.create(null);\n\n  for (const [key, value] of Object.entries(obj)) {\n    map[key] = value;\n  }\n\n  return map;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.printString = printString;\n\n/**\n * Prints a string as a GraphQL StringValue literal. Replaces control characters\n * and excluded characters (\" U+0022 and \\\\ U+005C) with escape sequences.\n */\nfunction printString(str) {\n  return `\"${str.replace(escapedRegExp, escapedReplacer)}\"`;\n} // eslint-disable-next-line no-control-regex\n\nconst escapedRegExp = /[\\x00-\\x1f\\x22\\x5c\\x7f-\\x9f]/g;\n\nfunction escapedReplacer(str) {\n  return escapeSequences[str.charCodeAt(0)];\n} // prettier-ignore\n\nconst escapeSequences = [\n  '\\\\u0000',\n  '\\\\u0001',\n  '\\\\u0002',\n  '\\\\u0003',\n  '\\\\u0004',\n  '\\\\u0005',\n  '\\\\u0006',\n  '\\\\u0007',\n  '\\\\b',\n  '\\\\t',\n  '\\\\n',\n  '\\\\u000B',\n  '\\\\f',\n  '\\\\r',\n  '\\\\u000E',\n  '\\\\u000F',\n  '\\\\u0010',\n  '\\\\u0011',\n  '\\\\u0012',\n  '\\\\u0013',\n  '\\\\u0014',\n  '\\\\u0015',\n  '\\\\u0016',\n  '\\\\u0017',\n  '\\\\u0018',\n  '\\\\u0019',\n  '\\\\u001A',\n  '\\\\u001B',\n  '\\\\u001C',\n  '\\\\u001D',\n  '\\\\u001E',\n  '\\\\u001F',\n  '',\n  '',\n  '\\\\\"',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '', // 2F\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '', // 3F\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '', // 4F\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '\\\\\\\\',\n  '',\n  '',\n  '', // 5F\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '', // 6F\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '\\\\u007F',\n  '\\\\u0080',\n  '\\\\u0081',\n  '\\\\u0082',\n  '\\\\u0083',\n  '\\\\u0084',\n  '\\\\u0085',\n  '\\\\u0086',\n  '\\\\u0087',\n  '\\\\u0088',\n  '\\\\u0089',\n  '\\\\u008A',\n  '\\\\u008B',\n  '\\\\u008C',\n  '\\\\u008D',\n  '\\\\u008E',\n  '\\\\u008F',\n  '\\\\u0090',\n  '\\\\u0091',\n  '\\\\u0092',\n  '\\\\u0093',\n  '\\\\u0094',\n  '\\\\u0095',\n  '\\\\u0096',\n  '\\\\u0097',\n  '\\\\u0098',\n  '\\\\u0099',\n  '\\\\u009A',\n  '\\\\u009B',\n  '\\\\u009C',\n  '\\\\u009D',\n  '\\\\u009E',\n  '\\\\u009F',\n];\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.BREAK = void 0;\nexports.getEnterLeaveForKind = getEnterLeaveForKind;\nexports.getVisitFn = getVisitFn;\nexports.visit = visit;\nexports.visitInParallel = visitInParallel;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _ast = require('./ast.js');\n\nvar _kinds = require('./kinds.js');\n\nconst BREAK = Object.freeze({});\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * ```ts\n * const editedAST = visit(ast, {\n *   enter(node, key, parent, path, ancestors) {\n *     // @return\n *     //   undefined: no action\n *     //   false: skip visiting this node\n *     //   visitor.BREAK: stop visiting altogether\n *     //   null: delete this node\n *     //   any value: replace this node with the returned value\n *   },\n *   leave(node, key, parent, path, ancestors) {\n *     // @return\n *     //   undefined: no action\n *     //   false: no action\n *     //   visitor.BREAK: stop visiting altogether\n *     //   null: delete this node\n *     //   any value: replace this node with the returned value\n *   }\n * });\n * ```\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to three permutations of the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n *   Kind(node) {\n *     // enter the \"Kind\" node\n *   }\n * })\n * ```\n *\n * 2) Named visitors that trigger upon entering and leaving a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n *   Kind: {\n *     enter(node) {\n *       // enter the \"Kind\" node\n *     }\n *     leave(node) {\n *       // leave the \"Kind\" node\n *     }\n *   }\n * })\n * ```\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * ```ts\n * visit(ast, {\n *   enter(node) {\n *     // enter any node\n *   },\n *   leave(node) {\n *     // leave any node\n *   }\n * })\n * ```\n */\n\nexports.BREAK = BREAK;\n\nfunction visit(root, visitor, visitorKeys = _ast.QueryDocumentKeys) {\n  const enterLeaveMap = new Map();\n\n  for (const kind of Object.values(_kinds.Kind)) {\n    enterLeaveMap.set(kind, getEnterLeaveForKind(visitor, kind));\n  }\n  /* eslint-disable no-undef-init */\n\n  let stack = undefined;\n  let inArray = Array.isArray(root);\n  let keys = [root];\n  let index = -1;\n  let edits = [];\n  let node = root;\n  let key = undefined;\n  let parent = undefined;\n  const path = [];\n  const ancestors = [];\n  /* eslint-enable no-undef-init */\n\n  do {\n    index++;\n    const isLeaving = index === keys.length;\n    const isEdited = isLeaving && edits.length !== 0;\n\n    if (isLeaving) {\n      key = ancestors.length === 0 ? undefined : path[path.length - 1];\n      node = parent;\n      parent = ancestors.pop();\n\n      if (isEdited) {\n        if (inArray) {\n          node = node.slice();\n          let editOffset = 0;\n\n          for (const [editKey, editValue] of edits) {\n            const arrayKey = editKey - editOffset;\n\n            if (editValue === null) {\n              node.splice(arrayKey, 1);\n              editOffset++;\n            } else {\n              node[arrayKey] = editValue;\n            }\n          }\n        } else {\n          node = Object.defineProperties(\n            {},\n            Object.getOwnPropertyDescriptors(node),\n          );\n\n          for (const [editKey, editValue] of edits) {\n            node[editKey] = editValue;\n          }\n        }\n      }\n\n      index = stack.index;\n      keys = stack.keys;\n      edits = stack.edits;\n      inArray = stack.inArray;\n      stack = stack.prev;\n    } else if (parent) {\n      key = inArray ? index : keys[index];\n      node = parent[key];\n\n      if (node === null || node === undefined) {\n        continue;\n      }\n\n      path.push(key);\n    }\n\n    let result;\n\n    if (!Array.isArray(node)) {\n      var _enterLeaveMap$get, _enterLeaveMap$get2;\n\n      (0, _ast.isNode)(node) ||\n        (0, _devAssert.devAssert)(\n          false,\n          `Invalid AST Node: ${(0, _inspect.inspect)(node)}.`,\n        );\n      const visitFn = isLeaving\n        ? (_enterLeaveMap$get = enterLeaveMap.get(node.kind)) === null ||\n          _enterLeaveMap$get === void 0\n          ? void 0\n          : _enterLeaveMap$get.leave\n        : (_enterLeaveMap$get2 = enterLeaveMap.get(node.kind)) === null ||\n          _enterLeaveMap$get2 === void 0\n        ? void 0\n        : _enterLeaveMap$get2.enter;\n      result =\n        visitFn === null || visitFn === void 0\n          ? void 0\n          : visitFn.call(visitor, node, key, parent, path, ancestors);\n\n      if (result === BREAK) {\n        break;\n      }\n\n      if (result === false) {\n        if (!isLeaving) {\n          path.pop();\n          continue;\n        }\n      } else if (result !== undefined) {\n        edits.push([key, result]);\n\n        if (!isLeaving) {\n          if ((0, _ast.isNode)(result)) {\n            node = result;\n          } else {\n            path.pop();\n            continue;\n          }\n        }\n      }\n    }\n\n    if (result === undefined && isEdited) {\n      edits.push([key, node]);\n    }\n\n    if (isLeaving) {\n      path.pop();\n    } else {\n      var _node$kind;\n\n      stack = {\n        inArray,\n        index,\n        keys,\n        edits,\n        prev: stack,\n      };\n      inArray = Array.isArray(node);\n      keys = inArray\n        ? node\n        : (_node$kind = visitorKeys[node.kind]) !== null &&\n          _node$kind !== void 0\n        ? _node$kind\n        : [];\n      index = -1;\n      edits = [];\n\n      if (parent) {\n        ancestors.push(parent);\n      }\n\n      parent = node;\n    }\n  } while (stack !== undefined);\n\n  if (edits.length !== 0) {\n    // New root\n    return edits[edits.length - 1][1];\n  }\n\n  return root;\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\nfunction visitInParallel(visitors) {\n  const skipping = new Array(visitors.length).fill(null);\n  const mergedVisitor = Object.create(null);\n\n  for (const kind of Object.values(_kinds.Kind)) {\n    let hasVisitor = false;\n    const enterList = new Array(visitors.length).fill(undefined);\n    const leaveList = new Array(visitors.length).fill(undefined);\n\n    for (let i = 0; i < visitors.length; ++i) {\n      const { enter, leave } = getEnterLeaveForKind(visitors[i], kind);\n      hasVisitor || (hasVisitor = enter != null || leave != null);\n      enterList[i] = enter;\n      leaveList[i] = leave;\n    }\n\n    if (!hasVisitor) {\n      continue;\n    }\n\n    const mergedEnterLeave = {\n      enter(...args) {\n        const node = args[0];\n\n        for (let i = 0; i < visitors.length; i++) {\n          if (skipping[i] === null) {\n            var _enterList$i;\n\n            const result =\n              (_enterList$i = enterList[i]) === null || _enterList$i === void 0\n                ? void 0\n                : _enterList$i.apply(visitors[i], args);\n\n            if (result === false) {\n              skipping[i] = node;\n            } else if (result === BREAK) {\n              skipping[i] = BREAK;\n            } else if (result !== undefined) {\n              return result;\n            }\n          }\n        }\n      },\n\n      leave(...args) {\n        const node = args[0];\n\n        for (let i = 0; i < visitors.length; i++) {\n          if (skipping[i] === null) {\n            var _leaveList$i;\n\n            const result =\n              (_leaveList$i = leaveList[i]) === null || _leaveList$i === void 0\n                ? void 0\n                : _leaveList$i.apply(visitors[i], args);\n\n            if (result === BREAK) {\n              skipping[i] = BREAK;\n            } else if (result !== undefined && result !== false) {\n              return result;\n            }\n          } else if (skipping[i] === node) {\n            skipping[i] = null;\n          }\n        }\n      },\n    };\n    mergedVisitor[kind] = mergedEnterLeave;\n  }\n\n  return mergedVisitor;\n}\n/**\n * Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind.\n */\n\nfunction getEnterLeaveForKind(visitor, kind) {\n  const kindVisitor = visitor[kind];\n\n  if (typeof kindVisitor === 'object') {\n    // { Kind: { enter() {}, leave() {} } }\n    return kindVisitor;\n  } else if (typeof kindVisitor === 'function') {\n    // { Kind() {} }\n    return {\n      enter: kindVisitor,\n      leave: undefined,\n    };\n  } // { enter() {}, leave() {} }\n\n  return {\n    enter: visitor.enter,\n    leave: visitor.leave,\n  };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n *\n * @deprecated Please use `getEnterLeaveForKind` instead. Will be removed in v17\n */\n\n/* c8 ignore next 8 */\n\nfunction getVisitFn(visitor, kind, isLeaving) {\n  const { enter, leave } = getEnterLeaveForKind(visitor, kind);\n  return isLeaving ? leave : enter;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.print = print;\n\nvar _blockString = require('./blockString.js');\n\nvar _printString = require('./printString.js');\n\nvar _visitor = require('./visitor.js');\n\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\nfunction print(ast) {\n  return (0, _visitor.visit)(ast, printDocASTReducer);\n}\n\nconst MAX_LINE_LENGTH = 80;\nconst printDocASTReducer = {\n  Name: {\n    leave: (node) => node.value,\n  },\n  Variable: {\n    leave: (node) => '$' + node.name,\n  },\n  // Document\n  Document: {\n    leave: (node) => join(node.definitions, '\\n\\n'),\n  },\n  OperationDefinition: {\n    leave(node) {\n      const varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n      const prefix = join(\n        [\n          node.operation,\n          join([node.name, varDefs]),\n          join(node.directives, ' '),\n        ],\n        ' ',\n      ); // Anonymous queries with no directives or variable definitions can use\n      // the query short form.\n\n      return (prefix === 'query' ? '' : prefix + ' ') + node.selectionSet;\n    },\n  },\n  VariableDefinition: {\n    leave: ({ variable, type, defaultValue, directives }) =>\n      variable +\n      ': ' +\n      type +\n      wrap(' = ', defaultValue) +\n      wrap(' ', join(directives, ' ')),\n  },\n  SelectionSet: {\n    leave: ({ selections }) => block(selections),\n  },\n  Field: {\n    leave({ alias, name, arguments: args, directives, selectionSet }) {\n      const prefix = wrap('', alias, ': ') + name;\n      let argsLine = prefix + wrap('(', join(args, ', '), ')');\n\n      if (argsLine.length > MAX_LINE_LENGTH) {\n        argsLine = prefix + wrap('(\\n', indent(join(args, '\\n')), '\\n)');\n      }\n\n      return join([argsLine, join(directives, ' '), selectionSet], ' ');\n    },\n  },\n  Argument: {\n    leave: ({ name, value }) => name + ': ' + value,\n  },\n  // Fragments\n  FragmentSpread: {\n    leave: ({ name, directives }) =>\n      '...' + name + wrap(' ', join(directives, ' ')),\n  },\n  InlineFragment: {\n    leave: ({ typeCondition, directives, selectionSet }) =>\n      join(\n        [\n          '...',\n          wrap('on ', typeCondition),\n          join(directives, ' '),\n          selectionSet,\n        ],\n        ' ',\n      ),\n  },\n  FragmentDefinition: {\n    leave: (\n      { name, typeCondition, variableDefinitions, directives, selectionSet }, // Note: fragment variable definitions are experimental and may be changed\n    ) =>\n      // or removed in the future.\n      `fragment ${name}${wrap('(', join(variableDefinitions, ', '), ')')} ` +\n      `on ${typeCondition} ${wrap('', join(directives, ' '), ' ')}` +\n      selectionSet,\n  },\n  // Value\n  IntValue: {\n    leave: ({ value }) => value,\n  },\n  FloatValue: {\n    leave: ({ value }) => value,\n  },\n  StringValue: {\n    leave: ({ value, block: isBlockString }) =>\n      isBlockString\n        ? (0, _blockString.printBlockString)(value)\n        : (0, _printString.printString)(value),\n  },\n  BooleanValue: {\n    leave: ({ value }) => (value ? 'true' : 'false'),\n  },\n  NullValue: {\n    leave: () => 'null',\n  },\n  EnumValue: {\n    leave: ({ value }) => value,\n  },\n  ListValue: {\n    leave: ({ values }) => '[' + join(values, ', ') + ']',\n  },\n  ObjectValue: {\n    leave: ({ fields }) => '{' + join(fields, ', ') + '}',\n  },\n  ObjectField: {\n    leave: ({ name, value }) => name + ': ' + value,\n  },\n  // Directive\n  Directive: {\n    leave: ({ name, arguments: args }) =>\n      '@' + name + wrap('(', join(args, ', '), ')'),\n  },\n  // Type\n  NamedType: {\n    leave: ({ name }) => name,\n  },\n  ListType: {\n    leave: ({ type }) => '[' + type + ']',\n  },\n  NonNullType: {\n    leave: ({ type }) => type + '!',\n  },\n  // Type System Definitions\n  SchemaDefinition: {\n    leave: ({ description, directives, operationTypes }) =>\n      wrap('', description, '\\n') +\n      join(['schema', join(directives, ' '), block(operationTypes)], ' '),\n  },\n  OperationTypeDefinition: {\n    leave: ({ operation, type }) => operation + ': ' + type,\n  },\n  ScalarTypeDefinition: {\n    leave: ({ description, name, directives }) =>\n      wrap('', description, '\\n') +\n      join(['scalar', name, join(directives, ' ')], ' '),\n  },\n  ObjectTypeDefinition: {\n    leave: ({ description, name, interfaces, directives, fields }) =>\n      wrap('', description, '\\n') +\n      join(\n        [\n          'type',\n          name,\n          wrap('implements ', join(interfaces, ' & ')),\n          join(directives, ' '),\n          block(fields),\n        ],\n        ' ',\n      ),\n  },\n  FieldDefinition: {\n    leave: ({ description, name, arguments: args, type, directives }) =>\n      wrap('', description, '\\n') +\n      name +\n      (hasMultilineItems(args)\n        ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n        : wrap('(', join(args, ', '), ')')) +\n      ': ' +\n      type +\n      wrap(' ', join(directives, ' ')),\n  },\n  InputValueDefinition: {\n    leave: ({ description, name, type, defaultValue, directives }) =>\n      wrap('', description, '\\n') +\n      join(\n        [name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')],\n        ' ',\n      ),\n  },\n  InterfaceTypeDefinition: {\n    leave: ({ description, name, interfaces, directives, fields }) =>\n      wrap('', description, '\\n') +\n      join(\n        [\n          'interface',\n          name,\n          wrap('implements ', join(interfaces, ' & ')),\n          join(directives, ' '),\n          block(fields),\n        ],\n        ' ',\n      ),\n  },\n  UnionTypeDefinition: {\n    leave: ({ description, name, directives, types }) =>\n      wrap('', description, '\\n') +\n      join(\n        ['union', name, join(directives, ' '), wrap('= ', join(types, ' | '))],\n        ' ',\n      ),\n  },\n  EnumTypeDefinition: {\n    leave: ({ description, name, directives, values }) =>\n      wrap('', description, '\\n') +\n      join(['enum', name, join(directives, ' '), block(values)], ' '),\n  },\n  EnumValueDefinition: {\n    leave: ({ description, name, directives }) =>\n      wrap('', description, '\\n') + join([name, join(directives, ' ')], ' '),\n  },\n  InputObjectTypeDefinition: {\n    leave: ({ description, name, directives, fields }) =>\n      wrap('', description, '\\n') +\n      join(['input', name, join(directives, ' '), block(fields)], ' '),\n  },\n  DirectiveDefinition: {\n    leave: ({ description, name, arguments: args, repeatable, locations }) =>\n      wrap('', description, '\\n') +\n      'directive @' +\n      name +\n      (hasMultilineItems(args)\n        ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n        : wrap('(', join(args, ', '), ')')) +\n      (repeatable ? ' repeatable' : '') +\n      ' on ' +\n      join(locations, ' | '),\n  },\n  SchemaExtension: {\n    leave: ({ directives, operationTypes }) =>\n      join(\n        ['extend schema', join(directives, ' '), block(operationTypes)],\n        ' ',\n      ),\n  },\n  ScalarTypeExtension: {\n    leave: ({ name, directives }) =>\n      join(['extend scalar', name, join(directives, ' ')], ' '),\n  },\n  ObjectTypeExtension: {\n    leave: ({ name, interfaces, directives, fields }) =>\n      join(\n        [\n          'extend type',\n          name,\n          wrap('implements ', join(interfaces, ' & ')),\n          join(directives, ' '),\n          block(fields),\n        ],\n        ' ',\n      ),\n  },\n  InterfaceTypeExtension: {\n    leave: ({ name, interfaces, directives, fields }) =>\n      join(\n        [\n          'extend interface',\n          name,\n          wrap('implements ', join(interfaces, ' & ')),\n          join(directives, ' '),\n          block(fields),\n        ],\n        ' ',\n      ),\n  },\n  UnionTypeExtension: {\n    leave: ({ name, directives, types }) =>\n      join(\n        [\n          'extend union',\n          name,\n          join(directives, ' '),\n          wrap('= ', join(types, ' | ')),\n        ],\n        ' ',\n      ),\n  },\n  EnumTypeExtension: {\n    leave: ({ name, directives, values }) =>\n      join(['extend enum', name, join(directives, ' '), block(values)], ' '),\n  },\n  InputObjectTypeExtension: {\n    leave: ({ name, directives, fields }) =>\n      join(['extend input', name, join(directives, ' '), block(fields)], ' '),\n  },\n};\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\nfunction join(maybeArray, separator = '') {\n  var _maybeArray$filter$jo;\n\n  return (_maybeArray$filter$jo =\n    maybeArray === null || maybeArray === void 0\n      ? void 0\n      : maybeArray.filter((x) => x).join(separator)) !== null &&\n    _maybeArray$filter$jo !== void 0\n    ? _maybeArray$filter$jo\n    : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an indented `{ }` block.\n */\n\nfunction block(array) {\n  return wrap('{\\n', indent(join(array, '\\n')), '\\n}');\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string.\n */\n\nfunction wrap(start, maybeString, end = '') {\n  return maybeString != null && maybeString !== ''\n    ? start + maybeString + end\n    : '';\n}\n\nfunction indent(str) {\n  return wrap('  ', str.replace(/\\n/g, '\\n  '));\n}\n\nfunction hasMultilineItems(maybeArray) {\n  var _maybeArray$some;\n\n  // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n  /* c8 ignore next */\n  return (_maybeArray$some =\n    maybeArray === null || maybeArray === void 0\n      ? void 0\n      : maybeArray.some((str) => str.includes('\\n'))) !== null &&\n    _maybeArray$some !== void 0\n    ? _maybeArray$some\n    : false;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.valueFromASTUntyped = valueFromASTUntyped;\n\nvar _keyValMap = require('../jsutils/keyValMap.js');\n\nvar _kinds = require('../language/kinds.js');\n\n/**\n * Produces a JavaScript value given a GraphQL Value AST.\n *\n * Unlike `valueFromAST()`, no type is provided. The resulting JavaScript value\n * will reflect the provided GraphQL value AST.\n *\n * | GraphQL Value        | JavaScript Value |\n * | -------------------- | ---------------- |\n * | Input Object         | Object           |\n * | List                 | Array            |\n * | Boolean              | Boolean          |\n * | String / Enum        | String           |\n * | Int / Float          | Number           |\n * | Null                 | null             |\n *\n */\nfunction valueFromASTUntyped(valueNode, variables) {\n  switch (valueNode.kind) {\n    case _kinds.Kind.NULL:\n      return null;\n\n    case _kinds.Kind.INT:\n      return parseInt(valueNode.value, 10);\n\n    case _kinds.Kind.FLOAT:\n      return parseFloat(valueNode.value);\n\n    case _kinds.Kind.STRING:\n    case _kinds.Kind.ENUM:\n    case _kinds.Kind.BOOLEAN:\n      return valueNode.value;\n\n    case _kinds.Kind.LIST:\n      return valueNode.values.map((node) =>\n        valueFromASTUntyped(node, variables),\n      );\n\n    case _kinds.Kind.OBJECT:\n      return (0, _keyValMap.keyValMap)(\n        valueNode.fields,\n        (field) => field.name.value,\n        (field) => valueFromASTUntyped(field.value, variables),\n      );\n\n    case _kinds.Kind.VARIABLE:\n      return variables === null || variables === void 0\n        ? void 0\n        : variables[valueNode.name.value];\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.assertEnumValueName = assertEnumValueName;\nexports.assertName = assertName;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _characterClasses = require('../language/characterClasses.js');\n\n/**\n * Upholds the spec rules about naming.\n */\nfunction assertName(name) {\n  name != null || (0, _devAssert.devAssert)(false, 'Must provide name.');\n  typeof name === 'string' ||\n    (0, _devAssert.devAssert)(false, 'Expected name to be a string.');\n\n  if (name.length === 0) {\n    throw new _GraphQLError.GraphQLError(\n      'Expected name to be a non-empty string.',\n    );\n  }\n\n  for (let i = 1; i < name.length; ++i) {\n    if (!(0, _characterClasses.isNameContinue)(name.charCodeAt(i))) {\n      throw new _GraphQLError.GraphQLError(\n        `Names must only contain [_a-zA-Z0-9] but \"${name}\" does not.`,\n      );\n    }\n  }\n\n  if (!(0, _characterClasses.isNameStart)(name.charCodeAt(0))) {\n    throw new _GraphQLError.GraphQLError(\n      `Names must start with [_a-zA-Z] but \"${name}\" does not.`,\n    );\n  }\n\n  return name;\n}\n/**\n * Upholds the spec rules about naming enum values.\n *\n * @internal\n */\n\nfunction assertEnumValueName(name) {\n  if (name === 'true' || name === 'false' || name === 'null') {\n    throw new _GraphQLError.GraphQLError(\n      `Enum values cannot be named: ${name}`,\n    );\n  }\n\n  return assertName(name);\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.GraphQLUnionType =\n  exports.GraphQLScalarType =\n  exports.GraphQLObjectType =\n  exports.GraphQLNonNull =\n  exports.GraphQLList =\n  exports.GraphQLInterfaceType =\n  exports.GraphQLInputObjectType =\n  exports.GraphQLEnumType =\n    void 0;\nexports.argsToArgsConfig = argsToArgsConfig;\nexports.assertAbstractType = assertAbstractType;\nexports.assertCompositeType = assertCompositeType;\nexports.assertEnumType = assertEnumType;\nexports.assertInputObjectType = assertInputObjectType;\nexports.assertInputType = assertInputType;\nexports.assertInterfaceType = assertInterfaceType;\nexports.assertLeafType = assertLeafType;\nexports.assertListType = assertListType;\nexports.assertNamedType = assertNamedType;\nexports.assertNonNullType = assertNonNullType;\nexports.assertNullableType = assertNullableType;\nexports.assertObjectType = assertObjectType;\nexports.assertOutputType = assertOutputType;\nexports.assertScalarType = assertScalarType;\nexports.assertType = assertType;\nexports.assertUnionType = assertUnionType;\nexports.assertWrappingType = assertWrappingType;\nexports.defineArguments = defineArguments;\nexports.getNamedType = getNamedType;\nexports.getNullableType = getNullableType;\nexports.isAbstractType = isAbstractType;\nexports.isCompositeType = isCompositeType;\nexports.isEnumType = isEnumType;\nexports.isInputObjectType = isInputObjectType;\nexports.isInputType = isInputType;\nexports.isInterfaceType = isInterfaceType;\nexports.isLeafType = isLeafType;\nexports.isListType = isListType;\nexports.isNamedType = isNamedType;\nexports.isNonNullType = isNonNullType;\nexports.isNullableType = isNullableType;\nexports.isObjectType = isObjectType;\nexports.isOutputType = isOutputType;\nexports.isRequiredArgument = isRequiredArgument;\nexports.isRequiredInputField = isRequiredInputField;\nexports.isScalarType = isScalarType;\nexports.isType = isType;\nexports.isUnionType = isUnionType;\nexports.isWrappingType = isWrappingType;\nexports.resolveObjMapThunk = resolveObjMapThunk;\nexports.resolveReadonlyArrayThunk = resolveReadonlyArrayThunk;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _didYouMean = require('../jsutils/didYouMean.js');\n\nvar _identityFunc = require('../jsutils/identityFunc.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _instanceOf = require('../jsutils/instanceOf.js');\n\nvar _isObjectLike = require('../jsutils/isObjectLike.js');\n\nvar _keyMap = require('../jsutils/keyMap.js');\n\nvar _keyValMap = require('../jsutils/keyValMap.js');\n\nvar _mapValue = require('../jsutils/mapValue.js');\n\nvar _suggestionList = require('../jsutils/suggestionList.js');\n\nvar _toObjMap = require('../jsutils/toObjMap.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _printer = require('../language/printer.js');\n\nvar _valueFromASTUntyped = require('../utilities/valueFromASTUntyped.js');\n\nvar _assertName = require('./assertName.js');\n\nfunction isType(type) {\n  return (\n    isScalarType(type) ||\n    isObjectType(type) ||\n    isInterfaceType(type) ||\n    isUnionType(type) ||\n    isEnumType(type) ||\n    isInputObjectType(type) ||\n    isListType(type) ||\n    isNonNullType(type)\n  );\n}\n\nfunction assertType(type) {\n  if (!isType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL type.`,\n    );\n  }\n\n  return type;\n}\n/**\n * There are predicates for each kind of GraphQL type.\n */\n\nfunction isScalarType(type) {\n  return (0, _instanceOf.instanceOf)(type, GraphQLScalarType);\n}\n\nfunction assertScalarType(type) {\n  if (!isScalarType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL Scalar type.`,\n    );\n  }\n\n  return type;\n}\n\nfunction isObjectType(type) {\n  return (0, _instanceOf.instanceOf)(type, GraphQLObjectType);\n}\n\nfunction assertObjectType(type) {\n  if (!isObjectType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL Object type.`,\n    );\n  }\n\n  return type;\n}\n\nfunction isInterfaceType(type) {\n  return (0, _instanceOf.instanceOf)(type, GraphQLInterfaceType);\n}\n\nfunction assertInterfaceType(type) {\n  if (!isInterfaceType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL Interface type.`,\n    );\n  }\n\n  return type;\n}\n\nfunction isUnionType(type) {\n  return (0, _instanceOf.instanceOf)(type, GraphQLUnionType);\n}\n\nfunction assertUnionType(type) {\n  if (!isUnionType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL Union type.`,\n    );\n  }\n\n  return type;\n}\n\nfunction isEnumType(type) {\n  return (0, _instanceOf.instanceOf)(type, GraphQLEnumType);\n}\n\nfunction assertEnumType(type) {\n  if (!isEnumType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL Enum type.`,\n    );\n  }\n\n  return type;\n}\n\nfunction isInputObjectType(type) {\n  return (0, _instanceOf.instanceOf)(type, GraphQLInputObjectType);\n}\n\nfunction assertInputObjectType(type) {\n  if (!isInputObjectType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(\n        type,\n      )} to be a GraphQL Input Object type.`,\n    );\n  }\n\n  return type;\n}\n\nfunction isListType(type) {\n  return (0, _instanceOf.instanceOf)(type, GraphQLList);\n}\n\nfunction assertListType(type) {\n  if (!isListType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL List type.`,\n    );\n  }\n\n  return type;\n}\n\nfunction isNonNullType(type) {\n  return (0, _instanceOf.instanceOf)(type, GraphQLNonNull);\n}\n\nfunction assertNonNullType(type) {\n  if (!isNonNullType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL Non-Null type.`,\n    );\n  }\n\n  return type;\n}\n/**\n * These types may be used as input types for arguments and directives.\n */\n\nfunction isInputType(type) {\n  return (\n    isScalarType(type) ||\n    isEnumType(type) ||\n    isInputObjectType(type) ||\n    (isWrappingType(type) && isInputType(type.ofType))\n  );\n}\n\nfunction assertInputType(type) {\n  if (!isInputType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL input type.`,\n    );\n  }\n\n  return type;\n}\n/**\n * These types may be used as output types as the result of fields.\n */\n\nfunction isOutputType(type) {\n  return (\n    isScalarType(type) ||\n    isObjectType(type) ||\n    isInterfaceType(type) ||\n    isUnionType(type) ||\n    isEnumType(type) ||\n    (isWrappingType(type) && isOutputType(type.ofType))\n  );\n}\n\nfunction assertOutputType(type) {\n  if (!isOutputType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL output type.`,\n    );\n  }\n\n  return type;\n}\n/**\n * These types may describe types which may be leaf values.\n */\n\nfunction isLeafType(type) {\n  return isScalarType(type) || isEnumType(type);\n}\n\nfunction assertLeafType(type) {\n  if (!isLeafType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL leaf type.`,\n    );\n  }\n\n  return type;\n}\n/**\n * These types may describe the parent context of a selection set.\n */\n\nfunction isCompositeType(type) {\n  return isObjectType(type) || isInterfaceType(type) || isUnionType(type);\n}\n\nfunction assertCompositeType(type) {\n  if (!isCompositeType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL composite type.`,\n    );\n  }\n\n  return type;\n}\n/**\n * These types may describe the parent context of a selection set.\n */\n\nfunction isAbstractType(type) {\n  return isInterfaceType(type) || isUnionType(type);\n}\n\nfunction assertAbstractType(type) {\n  if (!isAbstractType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL abstract type.`,\n    );\n  }\n\n  return type;\n}\n/**\n * List Type Wrapper\n *\n * A list is a wrapping type which points to another type.\n * Lists are often created within the context of defining the fields of\n * an object type.\n *\n * Example:\n *\n * ```ts\n * const PersonType = new GraphQLObjectType({\n *   name: 'Person',\n *   fields: () => ({\n *     parents: { type: new GraphQLList(PersonType) },\n *     children: { type: new GraphQLList(PersonType) },\n *   })\n * })\n * ```\n */\n\nclass GraphQLList {\n  constructor(ofType) {\n    isType(ofType) ||\n      (0, _devAssert.devAssert)(\n        false,\n        `Expected ${(0, _inspect.inspect)(ofType)} to be a GraphQL type.`,\n      );\n    this.ofType = ofType;\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLList';\n  }\n\n  toString() {\n    return '[' + String(this.ofType) + ']';\n  }\n\n  toJSON() {\n    return this.toString();\n  }\n}\n/**\n * Non-Null Type Wrapper\n *\n * A non-null is a wrapping type which points to another type.\n * Non-null types enforce that their values are never null and can ensure\n * an error is raised if this ever occurs during a request. It is useful for\n * fields which you can make a strong guarantee on non-nullability, for example\n * usually the id field of a database row will never be null.\n *\n * Example:\n *\n * ```ts\n * const RowType = new GraphQLObjectType({\n *   name: 'Row',\n *   fields: () => ({\n *     id: { type: new GraphQLNonNull(GraphQLString) },\n *   })\n * })\n * ```\n * Note: the enforcement of non-nullability occurs within the executor.\n */\n\nexports.GraphQLList = GraphQLList;\n\nclass GraphQLNonNull {\n  constructor(ofType) {\n    isNullableType(ofType) ||\n      (0, _devAssert.devAssert)(\n        false,\n        `Expected ${(0, _inspect.inspect)(\n          ofType,\n        )} to be a GraphQL nullable type.`,\n      );\n    this.ofType = ofType;\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLNonNull';\n  }\n\n  toString() {\n    return String(this.ofType) + '!';\n  }\n\n  toJSON() {\n    return this.toString();\n  }\n}\n/**\n * These types wrap and modify other types\n */\n\nexports.GraphQLNonNull = GraphQLNonNull;\n\nfunction isWrappingType(type) {\n  return isListType(type) || isNonNullType(type);\n}\n\nfunction assertWrappingType(type) {\n  if (!isWrappingType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL wrapping type.`,\n    );\n  }\n\n  return type;\n}\n/**\n * These types can all accept null as a value.\n */\n\nfunction isNullableType(type) {\n  return isType(type) && !isNonNullType(type);\n}\n\nfunction assertNullableType(type) {\n  if (!isNullableType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL nullable type.`,\n    );\n  }\n\n  return type;\n}\n\nfunction getNullableType(type) {\n  if (type) {\n    return isNonNullType(type) ? type.ofType : type;\n  }\n}\n/**\n * These named types do not include modifiers like List or NonNull.\n */\n\nfunction isNamedType(type) {\n  return (\n    isScalarType(type) ||\n    isObjectType(type) ||\n    isInterfaceType(type) ||\n    isUnionType(type) ||\n    isEnumType(type) ||\n    isInputObjectType(type)\n  );\n}\n\nfunction assertNamedType(type) {\n  if (!isNamedType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL named type.`,\n    );\n  }\n\n  return type;\n}\n\nfunction getNamedType(type) {\n  if (type) {\n    let unwrappedType = type;\n\n    while (isWrappingType(unwrappedType)) {\n      unwrappedType = unwrappedType.ofType;\n    }\n\n    return unwrappedType;\n  }\n}\n/**\n * Used while defining GraphQL types to allow for circular references in\n * otherwise immutable type definitions.\n */\n\nfunction resolveReadonlyArrayThunk(thunk) {\n  return typeof thunk === 'function' ? thunk() : thunk;\n}\n\nfunction resolveObjMapThunk(thunk) {\n  return typeof thunk === 'function' ? thunk() : thunk;\n}\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\n\n/**\n * Scalar Type Definition\n *\n * The leaf values of any request and input values to arguments are\n * Scalars (or Enums) and are defined with a name and a series of functions\n * used to parse input from ast or variables and to ensure validity.\n *\n * If a type's serialize function returns `null` or does not return a value\n * (i.e. it returns `undefined`) then an error will be raised and a `null`\n * value will be returned in the response. It is always better to validate\n *\n * Example:\n *\n * ```ts\n * const OddType = new GraphQLScalarType({\n *   name: 'Odd',\n *   serialize(value) {\n *     if (!Number.isFinite(value)) {\n *       throw new Error(\n *         `Scalar \"Odd\" cannot represent \"${value}\" since it is not a finite number.`,\n *       );\n *     }\n *\n *     if (value % 2 === 0) {\n *       throw new Error(`Scalar \"Odd\" cannot represent \"${value}\" since it is even.`);\n *     }\n *     return value;\n *   }\n * });\n * ```\n */\nclass GraphQLScalarType {\n  constructor(config) {\n    var _config$parseValue,\n      _config$serialize,\n      _config$parseLiteral,\n      _config$extensionASTN;\n\n    const parseValue =\n      (_config$parseValue = config.parseValue) !== null &&\n      _config$parseValue !== void 0\n        ? _config$parseValue\n        : _identityFunc.identityFunc;\n    this.name = (0, _assertName.assertName)(config.name);\n    this.description = config.description;\n    this.specifiedByURL = config.specifiedByURL;\n    this.serialize =\n      (_config$serialize = config.serialize) !== null &&\n      _config$serialize !== void 0\n        ? _config$serialize\n        : _identityFunc.identityFunc;\n    this.parseValue = parseValue;\n    this.parseLiteral =\n      (_config$parseLiteral = config.parseLiteral) !== null &&\n      _config$parseLiteral !== void 0\n        ? _config$parseLiteral\n        : (node, variables) =>\n            parseValue(\n              (0, _valueFromASTUntyped.valueFromASTUntyped)(node, variables),\n            );\n    this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n    this.astNode = config.astNode;\n    this.extensionASTNodes =\n      (_config$extensionASTN = config.extensionASTNodes) !== null &&\n      _config$extensionASTN !== void 0\n        ? _config$extensionASTN\n        : [];\n    config.specifiedByURL == null ||\n      typeof config.specifiedByURL === 'string' ||\n      (0, _devAssert.devAssert)(\n        false,\n        `${this.name} must provide \"specifiedByURL\" as a string, ` +\n          `but got: ${(0, _inspect.inspect)(config.specifiedByURL)}.`,\n      );\n    config.serialize == null ||\n      typeof config.serialize === 'function' ||\n      (0, _devAssert.devAssert)(\n        false,\n        `${this.name} must provide \"serialize\" function. If this custom Scalar is also used as an input type, ensure \"parseValue\" and \"parseLiteral\" functions are also provided.`,\n      );\n\n    if (config.parseLiteral) {\n      (typeof config.parseValue === 'function' &&\n        typeof config.parseLiteral === 'function') ||\n        (0, _devAssert.devAssert)(\n          false,\n          `${this.name} must provide both \"parseValue\" and \"parseLiteral\" functions.`,\n        );\n    }\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLScalarType';\n  }\n\n  toConfig() {\n    return {\n      name: this.name,\n      description: this.description,\n      specifiedByURL: this.specifiedByURL,\n      serialize: this.serialize,\n      parseValue: this.parseValue,\n      parseLiteral: this.parseLiteral,\n      extensions: this.extensions,\n      astNode: this.astNode,\n      extensionASTNodes: this.extensionASTNodes,\n    };\n  }\n\n  toString() {\n    return this.name;\n  }\n\n  toJSON() {\n    return this.toString();\n  }\n}\n\nexports.GraphQLScalarType = GraphQLScalarType;\n\n/**\n * Object Type Definition\n *\n * Almost all of the GraphQL types you define will be object types. Object types\n * have a name, but most importantly describe their fields.\n *\n * Example:\n *\n * ```ts\n * const AddressType = new GraphQLObjectType({\n *   name: 'Address',\n *   fields: {\n *     street: { type: GraphQLString },\n *     number: { type: GraphQLInt },\n *     formatted: {\n *       type: GraphQLString,\n *       resolve(obj) {\n *         return obj.number + ' ' + obj.street\n *       }\n *     }\n *   }\n * });\n * ```\n *\n * When two types need to refer to each other, or a type needs to refer to\n * itself in a field, you can use a function expression (aka a closure or a\n * thunk) to supply the fields lazily.\n *\n * Example:\n *\n * ```ts\n * const PersonType = new GraphQLObjectType({\n *   name: 'Person',\n *   fields: () => ({\n *     name: { type: GraphQLString },\n *     bestFriend: { type: PersonType },\n *   })\n * });\n * ```\n */\nclass GraphQLObjectType {\n  constructor(config) {\n    var _config$extensionASTN2;\n\n    this.name = (0, _assertName.assertName)(config.name);\n    this.description = config.description;\n    this.isTypeOf = config.isTypeOf;\n    this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n    this.astNode = config.astNode;\n    this.extensionASTNodes =\n      (_config$extensionASTN2 = config.extensionASTNodes) !== null &&\n      _config$extensionASTN2 !== void 0\n        ? _config$extensionASTN2\n        : [];\n\n    this._fields = () => defineFieldMap(config);\n\n    this._interfaces = () => defineInterfaces(config);\n\n    config.isTypeOf == null ||\n      typeof config.isTypeOf === 'function' ||\n      (0, _devAssert.devAssert)(\n        false,\n        `${this.name} must provide \"isTypeOf\" as a function, ` +\n          `but got: ${(0, _inspect.inspect)(config.isTypeOf)}.`,\n      );\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLObjectType';\n  }\n\n  getFields() {\n    if (typeof this._fields === 'function') {\n      this._fields = this._fields();\n    }\n\n    return this._fields;\n  }\n\n  getInterfaces() {\n    if (typeof this._interfaces === 'function') {\n      this._interfaces = this._interfaces();\n    }\n\n    return this._interfaces;\n  }\n\n  toConfig() {\n    return {\n      name: this.name,\n      description: this.description,\n      interfaces: this.getInterfaces(),\n      fields: fieldsToFieldsConfig(this.getFields()),\n      isTypeOf: this.isTypeOf,\n      extensions: this.extensions,\n      astNode: this.astNode,\n      extensionASTNodes: this.extensionASTNodes,\n    };\n  }\n\n  toString() {\n    return this.name;\n  }\n\n  toJSON() {\n    return this.toString();\n  }\n}\n\nexports.GraphQLObjectType = GraphQLObjectType;\n\nfunction defineInterfaces(config) {\n  var _config$interfaces;\n\n  const interfaces = resolveReadonlyArrayThunk(\n    (_config$interfaces = config.interfaces) !== null &&\n      _config$interfaces !== void 0\n      ? _config$interfaces\n      : [],\n  );\n  Array.isArray(interfaces) ||\n    (0, _devAssert.devAssert)(\n      false,\n      `${config.name} interfaces must be an Array or a function which returns an Array.`,\n    );\n  return interfaces;\n}\n\nfunction defineFieldMap(config) {\n  const fieldMap = resolveObjMapThunk(config.fields);\n  isPlainObj(fieldMap) ||\n    (0, _devAssert.devAssert)(\n      false,\n      `${config.name} fields must be an object with field names as keys or a function which returns such an object.`,\n    );\n  return (0, _mapValue.mapValue)(fieldMap, (fieldConfig, fieldName) => {\n    var _fieldConfig$args;\n\n    isPlainObj(fieldConfig) ||\n      (0, _devAssert.devAssert)(\n        false,\n        `${config.name}.${fieldName} field config must be an object.`,\n      );\n    fieldConfig.resolve == null ||\n      typeof fieldConfig.resolve === 'function' ||\n      (0, _devAssert.devAssert)(\n        false,\n        `${config.name}.${fieldName} field resolver must be a function if ` +\n          `provided, but got: ${(0, _inspect.inspect)(fieldConfig.resolve)}.`,\n      );\n    const argsConfig =\n      (_fieldConfig$args = fieldConfig.args) !== null &&\n      _fieldConfig$args !== void 0\n        ? _fieldConfig$args\n        : {};\n    isPlainObj(argsConfig) ||\n      (0, _devAssert.devAssert)(\n        false,\n        `${config.name}.${fieldName} args must be an object with argument names as keys.`,\n      );\n    return {\n      name: (0, _assertName.assertName)(fieldName),\n      description: fieldConfig.description,\n      type: fieldConfig.type,\n      args: defineArguments(argsConfig),\n      resolve: fieldConfig.resolve,\n      subscribe: fieldConfig.subscribe,\n      deprecationReason: fieldConfig.deprecationReason,\n      extensions: (0, _toObjMap.toObjMap)(fieldConfig.extensions),\n      astNode: fieldConfig.astNode,\n    };\n  });\n}\n\nfunction defineArguments(config) {\n  return Object.entries(config).map(([argName, argConfig]) => ({\n    name: (0, _assertName.assertName)(argName),\n    description: argConfig.description,\n    type: argConfig.type,\n    defaultValue: argConfig.defaultValue,\n    deprecationReason: argConfig.deprecationReason,\n    extensions: (0, _toObjMap.toObjMap)(argConfig.extensions),\n    astNode: argConfig.astNode,\n  }));\n}\n\nfunction isPlainObj(obj) {\n  return (0, _isObjectLike.isObjectLike)(obj) && !Array.isArray(obj);\n}\n\nfunction fieldsToFieldsConfig(fields) {\n  return (0, _mapValue.mapValue)(fields, (field) => ({\n    description: field.description,\n    type: field.type,\n    args: argsToArgsConfig(field.args),\n    resolve: field.resolve,\n    subscribe: field.subscribe,\n    deprecationReason: field.deprecationReason,\n    extensions: field.extensions,\n    astNode: field.astNode,\n  }));\n}\n/**\n * @internal\n */\n\nfunction argsToArgsConfig(args) {\n  return (0, _keyValMap.keyValMap)(\n    args,\n    (arg) => arg.name,\n    (arg) => ({\n      description: arg.description,\n      type: arg.type,\n      defaultValue: arg.defaultValue,\n      deprecationReason: arg.deprecationReason,\n      extensions: arg.extensions,\n      astNode: arg.astNode,\n    }),\n  );\n}\n\nfunction isRequiredArgument(arg) {\n  return isNonNullType(arg.type) && arg.defaultValue === undefined;\n}\n\n/**\n * Interface Type Definition\n *\n * When a field can return one of a heterogeneous set of types, a Interface type\n * is used to describe what types are possible, what fields are in common across\n * all types, as well as a function to determine which type is actually used\n * when the field is resolved.\n *\n * Example:\n *\n * ```ts\n * const EntityType = new GraphQLInterfaceType({\n *   name: 'Entity',\n *   fields: {\n *     name: { type: GraphQLString }\n *   }\n * });\n * ```\n */\nclass GraphQLInterfaceType {\n  constructor(config) {\n    var _config$extensionASTN3;\n\n    this.name = (0, _assertName.assertName)(config.name);\n    this.description = config.description;\n    this.resolveType = config.resolveType;\n    this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n    this.astNode = config.astNode;\n    this.extensionASTNodes =\n      (_config$extensionASTN3 = config.extensionASTNodes) !== null &&\n      _config$extensionASTN3 !== void 0\n        ? _config$extensionASTN3\n        : [];\n    this._fields = defineFieldMap.bind(undefined, config);\n    this._interfaces = defineInterfaces.bind(undefined, config);\n    config.resolveType == null ||\n      typeof config.resolveType === 'function' ||\n      (0, _devAssert.devAssert)(\n        false,\n        `${this.name} must provide \"resolveType\" as a function, ` +\n          `but got: ${(0, _inspect.inspect)(config.resolveType)}.`,\n      );\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLInterfaceType';\n  }\n\n  getFields() {\n    if (typeof this._fields === 'function') {\n      this._fields = this._fields();\n    }\n\n    return this._fields;\n  }\n\n  getInterfaces() {\n    if (typeof this._interfaces === 'function') {\n      this._interfaces = this._interfaces();\n    }\n\n    return this._interfaces;\n  }\n\n  toConfig() {\n    return {\n      name: this.name,\n      description: this.description,\n      interfaces: this.getInterfaces(),\n      fields: fieldsToFieldsConfig(this.getFields()),\n      resolveType: this.resolveType,\n      extensions: this.extensions,\n      astNode: this.astNode,\n      extensionASTNodes: this.extensionASTNodes,\n    };\n  }\n\n  toString() {\n    return this.name;\n  }\n\n  toJSON() {\n    return this.toString();\n  }\n}\n\nexports.GraphQLInterfaceType = GraphQLInterfaceType;\n\n/**\n * Union Type Definition\n *\n * When a field can return one of a heterogeneous set of types, a Union type\n * is used to describe what types are possible as well as providing a function\n * to determine which type is actually used when the field is resolved.\n *\n * Example:\n *\n * ```ts\n * const PetType = new GraphQLUnionType({\n *   name: 'Pet',\n *   types: [ DogType, CatType ],\n *   resolveType(value) {\n *     if (value instanceof Dog) {\n *       return DogType;\n *     }\n *     if (value instanceof Cat) {\n *       return CatType;\n *     }\n *   }\n * });\n * ```\n */\nclass GraphQLUnionType {\n  constructor(config) {\n    var _config$extensionASTN4;\n\n    this.name = (0, _assertName.assertName)(config.name);\n    this.description = config.description;\n    this.resolveType = config.resolveType;\n    this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n    this.astNode = config.astNode;\n    this.extensionASTNodes =\n      (_config$extensionASTN4 = config.extensionASTNodes) !== null &&\n      _config$extensionASTN4 !== void 0\n        ? _config$extensionASTN4\n        : [];\n    this._types = defineTypes.bind(undefined, config);\n    config.resolveType == null ||\n      typeof config.resolveType === 'function' ||\n      (0, _devAssert.devAssert)(\n        false,\n        `${this.name} must provide \"resolveType\" as a function, ` +\n          `but got: ${(0, _inspect.inspect)(config.resolveType)}.`,\n      );\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLUnionType';\n  }\n\n  getTypes() {\n    if (typeof this._types === 'function') {\n      this._types = this._types();\n    }\n\n    return this._types;\n  }\n\n  toConfig() {\n    return {\n      name: this.name,\n      description: this.description,\n      types: this.getTypes(),\n      resolveType: this.resolveType,\n      extensions: this.extensions,\n      astNode: this.astNode,\n      extensionASTNodes: this.extensionASTNodes,\n    };\n  }\n\n  toString() {\n    return this.name;\n  }\n\n  toJSON() {\n    return this.toString();\n  }\n}\n\nexports.GraphQLUnionType = GraphQLUnionType;\n\nfunction defineTypes(config) {\n  const types = resolveReadonlyArrayThunk(config.types);\n  Array.isArray(types) ||\n    (0, _devAssert.devAssert)(\n      false,\n      `Must provide Array of types or a function which returns such an array for Union ${config.name}.`,\n    );\n  return types;\n}\n\n/**\n * Enum Type Definition\n *\n * Some leaf values of requests and input values are Enums. GraphQL serializes\n * Enum values as strings, however internally Enums can be represented by any\n * kind of type, often integers.\n *\n * Example:\n *\n * ```ts\n * const RGBType = new GraphQLEnumType({\n *   name: 'RGB',\n *   values: {\n *     RED: { value: 0 },\n *     GREEN: { value: 1 },\n *     BLUE: { value: 2 }\n *   }\n * });\n * ```\n *\n * Note: If a value is not provided in a definition, the name of the enum value\n * will be used as its internal value.\n */\nclass GraphQLEnumType {\n  /* <T> */\n  constructor(config) {\n    var _config$extensionASTN5;\n\n    this.name = (0, _assertName.assertName)(config.name);\n    this.description = config.description;\n    this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n    this.astNode = config.astNode;\n    this.extensionASTNodes =\n      (_config$extensionASTN5 = config.extensionASTNodes) !== null &&\n      _config$extensionASTN5 !== void 0\n        ? _config$extensionASTN5\n        : [];\n    this._values = defineEnumValues(this.name, config.values);\n    this._valueLookup = new Map(\n      this._values.map((enumValue) => [enumValue.value, enumValue]),\n    );\n    this._nameLookup = (0, _keyMap.keyMap)(this._values, (value) => value.name);\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLEnumType';\n  }\n\n  getValues() {\n    return this._values;\n  }\n\n  getValue(name) {\n    return this._nameLookup[name];\n  }\n\n  serialize(outputValue) {\n    const enumValue = this._valueLookup.get(outputValue);\n\n    if (enumValue === undefined) {\n      throw new _GraphQLError.GraphQLError(\n        `Enum \"${this.name}\" cannot represent value: ${(0, _inspect.inspect)(\n          outputValue,\n        )}`,\n      );\n    }\n\n    return enumValue.name;\n  }\n\n  parseValue(inputValue) /* T */\n  {\n    if (typeof inputValue !== 'string') {\n      const valueStr = (0, _inspect.inspect)(inputValue);\n      throw new _GraphQLError.GraphQLError(\n        `Enum \"${this.name}\" cannot represent non-string value: ${valueStr}.` +\n          didYouMeanEnumValue(this, valueStr),\n      );\n    }\n\n    const enumValue = this.getValue(inputValue);\n\n    if (enumValue == null) {\n      throw new _GraphQLError.GraphQLError(\n        `Value \"${inputValue}\" does not exist in \"${this.name}\" enum.` +\n          didYouMeanEnumValue(this, inputValue),\n      );\n    }\n\n    return enumValue.value;\n  }\n\n  parseLiteral(valueNode, _variables) /* T */\n  {\n    // Note: variables will be resolved to a value before calling this function.\n    if (valueNode.kind !== _kinds.Kind.ENUM) {\n      const valueStr = (0, _printer.print)(valueNode);\n      throw new _GraphQLError.GraphQLError(\n        `Enum \"${this.name}\" cannot represent non-enum value: ${valueStr}.` +\n          didYouMeanEnumValue(this, valueStr),\n        {\n          nodes: valueNode,\n        },\n      );\n    }\n\n    const enumValue = this.getValue(valueNode.value);\n\n    if (enumValue == null) {\n      const valueStr = (0, _printer.print)(valueNode);\n      throw new _GraphQLError.GraphQLError(\n        `Value \"${valueStr}\" does not exist in \"${this.name}\" enum.` +\n          didYouMeanEnumValue(this, valueStr),\n        {\n          nodes: valueNode,\n        },\n      );\n    }\n\n    return enumValue.value;\n  }\n\n  toConfig() {\n    const values = (0, _keyValMap.keyValMap)(\n      this.getValues(),\n      (value) => value.name,\n      (value) => ({\n        description: value.description,\n        value: value.value,\n        deprecationReason: value.deprecationReason,\n        extensions: value.extensions,\n        astNode: value.astNode,\n      }),\n    );\n    return {\n      name: this.name,\n      description: this.description,\n      values,\n      extensions: this.extensions,\n      astNode: this.astNode,\n      extensionASTNodes: this.extensionASTNodes,\n    };\n  }\n\n  toString() {\n    return this.name;\n  }\n\n  toJSON() {\n    return this.toString();\n  }\n}\n\nexports.GraphQLEnumType = GraphQLEnumType;\n\nfunction didYouMeanEnumValue(enumType, unknownValueStr) {\n  const allNames = enumType.getValues().map((value) => value.name);\n  const suggestedValues = (0, _suggestionList.suggestionList)(\n    unknownValueStr,\n    allNames,\n  );\n  return (0, _didYouMean.didYouMean)('the enum value', suggestedValues);\n}\n\nfunction defineEnumValues(typeName, valueMap) {\n  isPlainObj(valueMap) ||\n    (0, _devAssert.devAssert)(\n      false,\n      `${typeName} values must be an object with value names as keys.`,\n    );\n  return Object.entries(valueMap).map(([valueName, valueConfig]) => {\n    isPlainObj(valueConfig) ||\n      (0, _devAssert.devAssert)(\n        false,\n        `${typeName}.${valueName} must refer to an object with a \"value\" key ` +\n          `representing an internal value but got: ${(0, _inspect.inspect)(\n            valueConfig,\n          )}.`,\n      );\n    return {\n      name: (0, _assertName.assertEnumValueName)(valueName),\n      description: valueConfig.description,\n      value: valueConfig.value !== undefined ? valueConfig.value : valueName,\n      deprecationReason: valueConfig.deprecationReason,\n      extensions: (0, _toObjMap.toObjMap)(valueConfig.extensions),\n      astNode: valueConfig.astNode,\n    };\n  });\n}\n\n/**\n * Input Object Type Definition\n *\n * An input object defines a structured collection of fields which may be\n * supplied to a field argument.\n *\n * Using `NonNull` will ensure that a value must be provided by the query\n *\n * Example:\n *\n * ```ts\n * const GeoPoint = new GraphQLInputObjectType({\n *   name: 'GeoPoint',\n *   fields: {\n *     lat: { type: new GraphQLNonNull(GraphQLFloat) },\n *     lon: { type: new GraphQLNonNull(GraphQLFloat) },\n *     alt: { type: GraphQLFloat, defaultValue: 0 },\n *   }\n * });\n * ```\n */\nclass GraphQLInputObjectType {\n  constructor(config) {\n    var _config$extensionASTN6;\n\n    this.name = (0, _assertName.assertName)(config.name);\n    this.description = config.description;\n    this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n    this.astNode = config.astNode;\n    this.extensionASTNodes =\n      (_config$extensionASTN6 = config.extensionASTNodes) !== null &&\n      _config$extensionASTN6 !== void 0\n        ? _config$extensionASTN6\n        : [];\n    this._fields = defineInputFieldMap.bind(undefined, config);\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLInputObjectType';\n  }\n\n  getFields() {\n    if (typeof this._fields === 'function') {\n      this._fields = this._fields();\n    }\n\n    return this._fields;\n  }\n\n  toConfig() {\n    const fields = (0, _mapValue.mapValue)(this.getFields(), (field) => ({\n      description: field.description,\n      type: field.type,\n      defaultValue: field.defaultValue,\n      deprecationReason: field.deprecationReason,\n      extensions: field.extensions,\n      astNode: field.astNode,\n    }));\n    return {\n      name: this.name,\n      description: this.description,\n      fields,\n      extensions: this.extensions,\n      astNode: this.astNode,\n      extensionASTNodes: this.extensionASTNodes,\n    };\n  }\n\n  toString() {\n    return this.name;\n  }\n\n  toJSON() {\n    return this.toString();\n  }\n}\n\nexports.GraphQLInputObjectType = GraphQLInputObjectType;\n\nfunction defineInputFieldMap(config) {\n  const fieldMap = resolveObjMapThunk(config.fields);\n  isPlainObj(fieldMap) ||\n    (0, _devAssert.devAssert)(\n      false,\n      `${config.name} fields must be an object with field names as keys or a function which returns such an object.`,\n    );\n  return (0, _mapValue.mapValue)(fieldMap, (fieldConfig, fieldName) => {\n    !('resolve' in fieldConfig) ||\n      (0, _devAssert.devAssert)(\n        false,\n        `${config.name}.${fieldName} field has a resolve property, but Input Types cannot define resolvers.`,\n      );\n    return {\n      name: (0, _assertName.assertName)(fieldName),\n      description: fieldConfig.description,\n      type: fieldConfig.type,\n      defaultValue: fieldConfig.defaultValue,\n      deprecationReason: fieldConfig.deprecationReason,\n      extensions: (0, _toObjMap.toObjMap)(fieldConfig.extensions),\n      astNode: fieldConfig.astNode,\n    };\n  });\n}\n\nfunction isRequiredInputField(field) {\n  return isNonNullType(field.type) && field.defaultValue === undefined;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.doTypesOverlap = doTypesOverlap;\nexports.isEqualType = isEqualType;\nexports.isTypeSubTypeOf = isTypeSubTypeOf;\n\nvar _definition = require('../type/definition.js');\n\n/**\n * Provided two types, return true if the types are equal (invariant).\n */\nfunction isEqualType(typeA, typeB) {\n  // Equivalent types are equal.\n  if (typeA === typeB) {\n    return true;\n  } // If either type is non-null, the other must also be non-null.\n\n  if (\n    (0, _definition.isNonNullType)(typeA) &&\n    (0, _definition.isNonNullType)(typeB)\n  ) {\n    return isEqualType(typeA.ofType, typeB.ofType);\n  } // If either type is a list, the other must also be a list.\n\n  if (\n    (0, _definition.isListType)(typeA) &&\n    (0, _definition.isListType)(typeB)\n  ) {\n    return isEqualType(typeA.ofType, typeB.ofType);\n  } // Otherwise the types are not equal.\n\n  return false;\n}\n/**\n * Provided a type and a super type, return true if the first type is either\n * equal or a subset of the second super type (covariant).\n */\n\nfunction isTypeSubTypeOf(schema, maybeSubType, superType) {\n  // Equivalent type is a valid subtype\n  if (maybeSubType === superType) {\n    return true;\n  } // If superType is non-null, maybeSubType must also be non-null.\n\n  if ((0, _definition.isNonNullType)(superType)) {\n    if ((0, _definition.isNonNullType)(maybeSubType)) {\n      return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);\n    }\n\n    return false;\n  }\n\n  if ((0, _definition.isNonNullType)(maybeSubType)) {\n    // If superType is nullable, maybeSubType may be non-null or nullable.\n    return isTypeSubTypeOf(schema, maybeSubType.ofType, superType);\n  } // If superType type is a list, maybeSubType type must also be a list.\n\n  if ((0, _definition.isListType)(superType)) {\n    if ((0, _definition.isListType)(maybeSubType)) {\n      return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);\n    }\n\n    return false;\n  }\n\n  if ((0, _definition.isListType)(maybeSubType)) {\n    // If superType is not a list, maybeSubType must also be not a list.\n    return false;\n  } // If superType type is an abstract type, check if it is super type of maybeSubType.\n  // Otherwise, the child type is not a valid subtype of the parent type.\n\n  return (\n    (0, _definition.isAbstractType)(superType) &&\n    ((0, _definition.isInterfaceType)(maybeSubType) ||\n      (0, _definition.isObjectType)(maybeSubType)) &&\n    schema.isSubType(superType, maybeSubType)\n  );\n}\n/**\n * Provided two composite types, determine if they \"overlap\". Two composite\n * types overlap when the Sets of possible concrete types for each intersect.\n *\n * This is often used to determine if a fragment of a given type could possibly\n * be visited in a context of another type.\n *\n * This function is commutative.\n */\n\nfunction doTypesOverlap(schema, typeA, typeB) {\n  // Equivalent types overlap\n  if (typeA === typeB) {\n    return true;\n  }\n\n  if ((0, _definition.isAbstractType)(typeA)) {\n    if ((0, _definition.isAbstractType)(typeB)) {\n      // If both types are abstract, then determine if there is any intersection\n      // between possible concrete types of each.\n      return schema\n        .getPossibleTypes(typeA)\n        .some((type) => schema.isSubType(typeB, type));\n    } // Determine if the latter type is a possible concrete type of the former.\n\n    return schema.isSubType(typeA, typeB);\n  }\n\n  if ((0, _definition.isAbstractType)(typeB)) {\n    // Determine if the former type is a possible concrete type of the latter.\n    return schema.isSubType(typeB, typeA);\n  } // Otherwise the types do not overlap.\n\n  return false;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.GraphQLString =\n  exports.GraphQLInt =\n  exports.GraphQLID =\n  exports.GraphQLFloat =\n  exports.GraphQLBoolean =\n  exports.GRAPHQL_MIN_INT =\n  exports.GRAPHQL_MAX_INT =\n    void 0;\nexports.isSpecifiedScalarType = isSpecifiedScalarType;\nexports.specifiedScalarTypes = void 0;\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _isObjectLike = require('../jsutils/isObjectLike.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _printer = require('../language/printer.js');\n\nvar _definition = require('./definition.js');\n\n/**\n * Maximum possible Int value as per GraphQL Spec (32-bit signed integer).\n * n.b. This differs from JavaScript's numbers that are IEEE 754 doubles safe up-to 2^53 - 1\n * */\nconst GRAPHQL_MAX_INT = 2147483647;\n/**\n * Minimum possible Int value as per GraphQL Spec (32-bit signed integer).\n * n.b. This differs from JavaScript's numbers that are IEEE 754 doubles safe starting at -(2^53 - 1)\n * */\n\nexports.GRAPHQL_MAX_INT = GRAPHQL_MAX_INT;\nconst GRAPHQL_MIN_INT = -2147483648;\nexports.GRAPHQL_MIN_INT = GRAPHQL_MIN_INT;\nconst GraphQLInt = new _definition.GraphQLScalarType({\n  name: 'Int',\n  description:\n    'The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.',\n\n  serialize(outputValue) {\n    const coercedValue = serializeObject(outputValue);\n\n    if (typeof coercedValue === 'boolean') {\n      return coercedValue ? 1 : 0;\n    }\n\n    let num = coercedValue;\n\n    if (typeof coercedValue === 'string' && coercedValue !== '') {\n      num = Number(coercedValue);\n    }\n\n    if (typeof num !== 'number' || !Number.isInteger(num)) {\n      throw new _GraphQLError.GraphQLError(\n        `Int cannot represent non-integer value: ${(0, _inspect.inspect)(\n          coercedValue,\n        )}`,\n      );\n    }\n\n    if (num > GRAPHQL_MAX_INT || num < GRAPHQL_MIN_INT) {\n      throw new _GraphQLError.GraphQLError(\n        'Int cannot represent non 32-bit signed integer value: ' +\n          (0, _inspect.inspect)(coercedValue),\n      );\n    }\n\n    return num;\n  },\n\n  parseValue(inputValue) {\n    if (typeof inputValue !== 'number' || !Number.isInteger(inputValue)) {\n      throw new _GraphQLError.GraphQLError(\n        `Int cannot represent non-integer value: ${(0, _inspect.inspect)(\n          inputValue,\n        )}`,\n      );\n    }\n\n    if (inputValue > GRAPHQL_MAX_INT || inputValue < GRAPHQL_MIN_INT) {\n      throw new _GraphQLError.GraphQLError(\n        `Int cannot represent non 32-bit signed integer value: ${inputValue}`,\n      );\n    }\n\n    return inputValue;\n  },\n\n  parseLiteral(valueNode) {\n    if (valueNode.kind !== _kinds.Kind.INT) {\n      throw new _GraphQLError.GraphQLError(\n        `Int cannot represent non-integer value: ${(0, _printer.print)(\n          valueNode,\n        )}`,\n        {\n          nodes: valueNode,\n        },\n      );\n    }\n\n    const num = parseInt(valueNode.value, 10);\n\n    if (num > GRAPHQL_MAX_INT || num < GRAPHQL_MIN_INT) {\n      throw new _GraphQLError.GraphQLError(\n        `Int cannot represent non 32-bit signed integer value: ${valueNode.value}`,\n        {\n          nodes: valueNode,\n        },\n      );\n    }\n\n    return num;\n  },\n});\nexports.GraphQLInt = GraphQLInt;\nconst GraphQLFloat = new _definition.GraphQLScalarType({\n  name: 'Float',\n  description:\n    'The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point).',\n\n  serialize(outputValue) {\n    const coercedValue = serializeObject(outputValue);\n\n    if (typeof coercedValue === 'boolean') {\n      return coercedValue ? 1 : 0;\n    }\n\n    let num = coercedValue;\n\n    if (typeof coercedValue === 'string' && coercedValue !== '') {\n      num = Number(coercedValue);\n    }\n\n    if (typeof num !== 'number' || !Number.isFinite(num)) {\n      throw new _GraphQLError.GraphQLError(\n        `Float cannot represent non numeric value: ${(0, _inspect.inspect)(\n          coercedValue,\n        )}`,\n      );\n    }\n\n    return num;\n  },\n\n  parseValue(inputValue) {\n    if (typeof inputValue !== 'number' || !Number.isFinite(inputValue)) {\n      throw new _GraphQLError.GraphQLError(\n        `Float cannot represent non numeric value: ${(0, _inspect.inspect)(\n          inputValue,\n        )}`,\n      );\n    }\n\n    return inputValue;\n  },\n\n  parseLiteral(valueNode) {\n    if (\n      valueNode.kind !== _kinds.Kind.FLOAT &&\n      valueNode.kind !== _kinds.Kind.INT\n    ) {\n      throw new _GraphQLError.GraphQLError(\n        `Float cannot represent non numeric value: ${(0, _printer.print)(\n          valueNode,\n        )}`,\n        valueNode,\n      );\n    }\n\n    return parseFloat(valueNode.value);\n  },\n});\nexports.GraphQLFloat = GraphQLFloat;\nconst GraphQLString = new _definition.GraphQLScalarType({\n  name: 'String',\n  description:\n    'The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.',\n\n  serialize(outputValue) {\n    const coercedValue = serializeObject(outputValue); // Serialize string, boolean and number values to a string, but do not\n    // attempt to coerce object, function, symbol, or other types as strings.\n\n    if (typeof coercedValue === 'string') {\n      return coercedValue;\n    }\n\n    if (typeof coercedValue === 'boolean') {\n      return coercedValue ? 'true' : 'false';\n    }\n\n    if (typeof coercedValue === 'number' && Number.isFinite(coercedValue)) {\n      return coercedValue.toString();\n    }\n\n    throw new _GraphQLError.GraphQLError(\n      `String cannot represent value: ${(0, _inspect.inspect)(outputValue)}`,\n    );\n  },\n\n  parseValue(inputValue) {\n    if (typeof inputValue !== 'string') {\n      throw new _GraphQLError.GraphQLError(\n        `String cannot represent a non string value: ${(0, _inspect.inspect)(\n          inputValue,\n        )}`,\n      );\n    }\n\n    return inputValue;\n  },\n\n  parseLiteral(valueNode) {\n    if (valueNode.kind !== _kinds.Kind.STRING) {\n      throw new _GraphQLError.GraphQLError(\n        `String cannot represent a non string value: ${(0, _printer.print)(\n          valueNode,\n        )}`,\n        {\n          nodes: valueNode,\n        },\n      );\n    }\n\n    return valueNode.value;\n  },\n});\nexports.GraphQLString = GraphQLString;\nconst GraphQLBoolean = new _definition.GraphQLScalarType({\n  name: 'Boolean',\n  description: 'The `Boolean` scalar type represents `true` or `false`.',\n\n  serialize(outputValue) {\n    const coercedValue = serializeObject(outputValue);\n\n    if (typeof coercedValue === 'boolean') {\n      return coercedValue;\n    }\n\n    if (Number.isFinite(coercedValue)) {\n      return coercedValue !== 0;\n    }\n\n    throw new _GraphQLError.GraphQLError(\n      `Boolean cannot represent a non boolean value: ${(0, _inspect.inspect)(\n        coercedValue,\n      )}`,\n    );\n  },\n\n  parseValue(inputValue) {\n    if (typeof inputValue !== 'boolean') {\n      throw new _GraphQLError.GraphQLError(\n        `Boolean cannot represent a non boolean value: ${(0, _inspect.inspect)(\n          inputValue,\n        )}`,\n      );\n    }\n\n    return inputValue;\n  },\n\n  parseLiteral(valueNode) {\n    if (valueNode.kind !== _kinds.Kind.BOOLEAN) {\n      throw new _GraphQLError.GraphQLError(\n        `Boolean cannot represent a non boolean value: ${(0, _printer.print)(\n          valueNode,\n        )}`,\n        {\n          nodes: valueNode,\n        },\n      );\n    }\n\n    return valueNode.value;\n  },\n});\nexports.GraphQLBoolean = GraphQLBoolean;\nconst GraphQLID = new _definition.GraphQLScalarType({\n  name: 'ID',\n  description:\n    'The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `\"4\"`) or integer (such as `4`) input value will be accepted as an ID.',\n\n  serialize(outputValue) {\n    const coercedValue = serializeObject(outputValue);\n\n    if (typeof coercedValue === 'string') {\n      return coercedValue;\n    }\n\n    if (Number.isInteger(coercedValue)) {\n      return String(coercedValue);\n    }\n\n    throw new _GraphQLError.GraphQLError(\n      `ID cannot represent value: ${(0, _inspect.inspect)(outputValue)}`,\n    );\n  },\n\n  parseValue(inputValue) {\n    if (typeof inputValue === 'string') {\n      return inputValue;\n    }\n\n    if (typeof inputValue === 'number' && Number.isInteger(inputValue)) {\n      return inputValue.toString();\n    }\n\n    throw new _GraphQLError.GraphQLError(\n      `ID cannot represent value: ${(0, _inspect.inspect)(inputValue)}`,\n    );\n  },\n\n  parseLiteral(valueNode) {\n    if (\n      valueNode.kind !== _kinds.Kind.STRING &&\n      valueNode.kind !== _kinds.Kind.INT\n    ) {\n      throw new _GraphQLError.GraphQLError(\n        'ID cannot represent a non-string and non-integer value: ' +\n          (0, _printer.print)(valueNode),\n        {\n          nodes: valueNode,\n        },\n      );\n    }\n\n    return valueNode.value;\n  },\n});\nexports.GraphQLID = GraphQLID;\nconst specifiedScalarTypes = Object.freeze([\n  GraphQLString,\n  GraphQLInt,\n  GraphQLFloat,\n  GraphQLBoolean,\n  GraphQLID,\n]);\nexports.specifiedScalarTypes = specifiedScalarTypes;\n\nfunction isSpecifiedScalarType(type) {\n  return specifiedScalarTypes.some(({ name }) => type.name === name);\n} // Support serializing objects with custom valueOf() or toJSON() functions -\n// a common way to represent a complex value which can be represented as\n// a string (ex: MongoDB id objects).\n\nfunction serializeObject(outputValue) {\n  if ((0, _isObjectLike.isObjectLike)(outputValue)) {\n    if (typeof outputValue.valueOf === 'function') {\n      const valueOfResult = outputValue.valueOf();\n\n      if (!(0, _isObjectLike.isObjectLike)(valueOfResult)) {\n        return valueOfResult;\n      }\n    }\n\n    if (typeof outputValue.toJSON === 'function') {\n      return outputValue.toJSON();\n    }\n  }\n\n  return outputValue;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.GraphQLSpecifiedByDirective =\n  exports.GraphQLSkipDirective =\n  exports.GraphQLIncludeDirective =\n  exports.GraphQLDirective =\n  exports.GraphQLDeprecatedDirective =\n  exports.DEFAULT_DEPRECATION_REASON =\n    void 0;\nexports.assertDirective = assertDirective;\nexports.isDirective = isDirective;\nexports.isSpecifiedDirective = isSpecifiedDirective;\nexports.specifiedDirectives = void 0;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _instanceOf = require('../jsutils/instanceOf.js');\n\nvar _isObjectLike = require('../jsutils/isObjectLike.js');\n\nvar _toObjMap = require('../jsutils/toObjMap.js');\n\nvar _directiveLocation = require('../language/directiveLocation.js');\n\nvar _assertName = require('./assertName.js');\n\nvar _definition = require('./definition.js');\n\nvar _scalars = require('./scalars.js');\n\n/**\n * Test if the given value is a GraphQL directive.\n */\nfunction isDirective(directive) {\n  return (0, _instanceOf.instanceOf)(directive, GraphQLDirective);\n}\n\nfunction assertDirective(directive) {\n  if (!isDirective(directive)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(directive)} to be a GraphQL directive.`,\n    );\n  }\n\n  return directive;\n}\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\n\n/**\n * Directives are used by the GraphQL runtime as a way of modifying execution\n * behavior. Type system creators will usually not create these directly.\n */\nclass GraphQLDirective {\n  constructor(config) {\n    var _config$isRepeatable, _config$args;\n\n    this.name = (0, _assertName.assertName)(config.name);\n    this.description = config.description;\n    this.locations = config.locations;\n    this.isRepeatable =\n      (_config$isRepeatable = config.isRepeatable) !== null &&\n      _config$isRepeatable !== void 0\n        ? _config$isRepeatable\n        : false;\n    this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n    this.astNode = config.astNode;\n    Array.isArray(config.locations) ||\n      (0, _devAssert.devAssert)(\n        false,\n        `@${config.name} locations must be an Array.`,\n      );\n    const args =\n      (_config$args = config.args) !== null && _config$args !== void 0\n        ? _config$args\n        : {};\n    ((0, _isObjectLike.isObjectLike)(args) && !Array.isArray(args)) ||\n      (0, _devAssert.devAssert)(\n        false,\n        `@${config.name} args must be an object with argument names as keys.`,\n      );\n    this.args = (0, _definition.defineArguments)(args);\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLDirective';\n  }\n\n  toConfig() {\n    return {\n      name: this.name,\n      description: this.description,\n      locations: this.locations,\n      args: (0, _definition.argsToArgsConfig)(this.args),\n      isRepeatable: this.isRepeatable,\n      extensions: this.extensions,\n      astNode: this.astNode,\n    };\n  }\n\n  toString() {\n    return '@' + this.name;\n  }\n\n  toJSON() {\n    return this.toString();\n  }\n}\n\nexports.GraphQLDirective = GraphQLDirective;\n\n/**\n * Used to conditionally include fields or fragments.\n */\nconst GraphQLIncludeDirective = new GraphQLDirective({\n  name: 'include',\n  description:\n    'Directs the executor to include this field or fragment only when the `if` argument is true.',\n  locations: [\n    _directiveLocation.DirectiveLocation.FIELD,\n    _directiveLocation.DirectiveLocation.FRAGMENT_SPREAD,\n    _directiveLocation.DirectiveLocation.INLINE_FRAGMENT,\n  ],\n  args: {\n    if: {\n      type: new _definition.GraphQLNonNull(_scalars.GraphQLBoolean),\n      description: 'Included when true.',\n    },\n  },\n});\n/**\n * Used to conditionally skip (exclude) fields or fragments.\n */\n\nexports.GraphQLIncludeDirective = GraphQLIncludeDirective;\nconst GraphQLSkipDirective = new GraphQLDirective({\n  name: 'skip',\n  description:\n    'Directs the executor to skip this field or fragment when the `if` argument is true.',\n  locations: [\n    _directiveLocation.DirectiveLocation.FIELD,\n    _directiveLocation.DirectiveLocation.FRAGMENT_SPREAD,\n    _directiveLocation.DirectiveLocation.INLINE_FRAGMENT,\n  ],\n  args: {\n    if: {\n      type: new _definition.GraphQLNonNull(_scalars.GraphQLBoolean),\n      description: 'Skipped when true.',\n    },\n  },\n});\n/**\n * Constant string used for default reason for a deprecation.\n */\n\nexports.GraphQLSkipDirective = GraphQLSkipDirective;\nconst DEFAULT_DEPRECATION_REASON = 'No longer supported';\n/**\n * Used to declare element of a GraphQL schema as deprecated.\n */\n\nexports.DEFAULT_DEPRECATION_REASON = DEFAULT_DEPRECATION_REASON;\nconst GraphQLDeprecatedDirective = new GraphQLDirective({\n  name: 'deprecated',\n  description: 'Marks an element of a GraphQL schema as no longer supported.',\n  locations: [\n    _directiveLocation.DirectiveLocation.FIELD_DEFINITION,\n    _directiveLocation.DirectiveLocation.ARGUMENT_DEFINITION,\n    _directiveLocation.DirectiveLocation.INPUT_FIELD_DEFINITION,\n    _directiveLocation.DirectiveLocation.ENUM_VALUE,\n  ],\n  args: {\n    reason: {\n      type: _scalars.GraphQLString,\n      description:\n        'Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted using the Markdown syntax, as specified by [CommonMark](https://commonmark.org/).',\n      defaultValue: DEFAULT_DEPRECATION_REASON,\n    },\n  },\n});\n/**\n * Used to provide a URL for specifying the behavior of custom scalar definitions.\n */\n\nexports.GraphQLDeprecatedDirective = GraphQLDeprecatedDirective;\nconst GraphQLSpecifiedByDirective = new GraphQLDirective({\n  name: 'specifiedBy',\n  description: 'Exposes a URL that specifies the behavior of this scalar.',\n  locations: [_directiveLocation.DirectiveLocation.SCALAR],\n  args: {\n    url: {\n      type: new _definition.GraphQLNonNull(_scalars.GraphQLString),\n      description: 'The URL that specifies the behavior of this scalar.',\n    },\n  },\n});\n/**\n * The full list of specified directives.\n */\n\nexports.GraphQLSpecifiedByDirective = GraphQLSpecifiedByDirective;\nconst specifiedDirectives = Object.freeze([\n  GraphQLIncludeDirective,\n  GraphQLSkipDirective,\n  GraphQLDeprecatedDirective,\n  GraphQLSpecifiedByDirective,\n]);\nexports.specifiedDirectives = specifiedDirectives;\n\nfunction isSpecifiedDirective(directive) {\n  return specifiedDirectives.some(({ name }) => name === directive.name);\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.isIterableObject = isIterableObject;\n\n/**\n * Returns true if the provided object is an Object (i.e. not a string literal)\n * and implements the Iterator protocol.\n *\n * This may be used in place of [Array.isArray()][isArray] to determine if\n * an object should be iterated-over e.g. Array, Map, Set, Int8Array,\n * TypedArray, etc. but excludes string literals.\n *\n * @example\n * ```ts\n * isIterableObject([ 1, 2, 3 ]) // true\n * isIterableObject(new Map()) // true\n * isIterableObject('ABC') // false\n * isIterableObject({ key: 'value' }) // false\n * isIterableObject({ length: 1, 0: 'Alpha' }) // false\n * ```\n */\nfunction isIterableObject(maybeIterable) {\n  return (\n    typeof maybeIterable === 'object' &&\n    typeof (maybeIterable === null || maybeIterable === void 0\n      ? void 0\n      : maybeIterable[Symbol.iterator]) === 'function'\n  );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.astFromValue = astFromValue;\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _isIterableObject = require('../jsutils/isIterableObject.js');\n\nvar _isObjectLike = require('../jsutils/isObjectLike.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _scalars = require('../type/scalars.js');\n\n/**\n * Produces a GraphQL Value AST given a JavaScript object.\n * Function will match JavaScript/JSON values to GraphQL AST schema format\n * by using suggested GraphQLInputType. For example:\n *\n *     astFromValue(\"value\", GraphQLString)\n *\n * A GraphQL type must be provided, which will be used to interpret different\n * JavaScript values.\n *\n * | JSON Value    | GraphQL Value        |\n * | ------------- | -------------------- |\n * | Object        | Input Object         |\n * | Array         | List                 |\n * | Boolean       | Boolean              |\n * | String        | String / Enum Value  |\n * | Number        | Int / Float          |\n * | Unknown       | Enum Value           |\n * | null          | NullValue            |\n *\n */\nfunction astFromValue(value, type) {\n  if ((0, _definition.isNonNullType)(type)) {\n    const astValue = astFromValue(value, type.ofType);\n\n    if (\n      (astValue === null || astValue === void 0 ? void 0 : astValue.kind) ===\n      _kinds.Kind.NULL\n    ) {\n      return null;\n    }\n\n    return astValue;\n  } // only explicit null, not undefined, NaN\n\n  if (value === null) {\n    return {\n      kind: _kinds.Kind.NULL,\n    };\n  } // undefined\n\n  if (value === undefined) {\n    return null;\n  } // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but\n  // the value is not an array, convert the value using the list's item type.\n\n  if ((0, _definition.isListType)(type)) {\n    const itemType = type.ofType;\n\n    if ((0, _isIterableObject.isIterableObject)(value)) {\n      const valuesNodes = [];\n\n      for (const item of value) {\n        const itemNode = astFromValue(item, itemType);\n\n        if (itemNode != null) {\n          valuesNodes.push(itemNode);\n        }\n      }\n\n      return {\n        kind: _kinds.Kind.LIST,\n        values: valuesNodes,\n      };\n    }\n\n    return astFromValue(value, itemType);\n  } // Populate the fields of the input object by creating ASTs from each value\n  // in the JavaScript object according to the fields in the input type.\n\n  if ((0, _definition.isInputObjectType)(type)) {\n    if (!(0, _isObjectLike.isObjectLike)(value)) {\n      return null;\n    }\n\n    const fieldNodes = [];\n\n    for (const field of Object.values(type.getFields())) {\n      const fieldValue = astFromValue(value[field.name], field.type);\n\n      if (fieldValue) {\n        fieldNodes.push({\n          kind: _kinds.Kind.OBJECT_FIELD,\n          name: {\n            kind: _kinds.Kind.NAME,\n            value: field.name,\n          },\n          value: fieldValue,\n        });\n      }\n    }\n\n    return {\n      kind: _kinds.Kind.OBJECT,\n      fields: fieldNodes,\n    };\n  }\n\n  if ((0, _definition.isLeafType)(type)) {\n    // Since value is an internally represented value, it must be serialized\n    // to an externally represented value before converting into an AST.\n    const serialized = type.serialize(value);\n\n    if (serialized == null) {\n      return null;\n    } // Others serialize based on their corresponding JavaScript scalar types.\n\n    if (typeof serialized === 'boolean') {\n      return {\n        kind: _kinds.Kind.BOOLEAN,\n        value: serialized,\n      };\n    } // JavaScript numbers can be Int or Float values.\n\n    if (typeof serialized === 'number' && Number.isFinite(serialized)) {\n      const stringNum = String(serialized);\n      return integerStringRegExp.test(stringNum)\n        ? {\n            kind: _kinds.Kind.INT,\n            value: stringNum,\n          }\n        : {\n            kind: _kinds.Kind.FLOAT,\n            value: stringNum,\n          };\n    }\n\n    if (typeof serialized === 'string') {\n      // Enum types use Enum literals.\n      if ((0, _definition.isEnumType)(type)) {\n        return {\n          kind: _kinds.Kind.ENUM,\n          value: serialized,\n        };\n      } // ID types can use Int literals.\n\n      if (type === _scalars.GraphQLID && integerStringRegExp.test(serialized)) {\n        return {\n          kind: _kinds.Kind.INT,\n          value: serialized,\n        };\n      }\n\n      return {\n        kind: _kinds.Kind.STRING,\n        value: serialized,\n      };\n    }\n\n    throw new TypeError(\n      `Cannot convert value to AST: ${(0, _inspect.inspect)(serialized)}.`,\n    );\n  }\n  /* c8 ignore next 3 */\n  // Not reachable, all possible types have been considered.\n\n  false ||\n    (0, _invariant.invariant)(\n      false,\n      'Unexpected input type: ' + (0, _inspect.inspect)(type),\n    );\n}\n/**\n * IntValue:\n *   - NegativeSign? 0\n *   - NegativeSign? NonZeroDigit ( Digit+ )?\n */\n\nconst integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.introspectionTypes =\n  exports.__TypeKind =\n  exports.__Type =\n  exports.__Schema =\n  exports.__InputValue =\n  exports.__Field =\n  exports.__EnumValue =\n  exports.__DirectiveLocation =\n  exports.__Directive =\n  exports.TypeNameMetaFieldDef =\n  exports.TypeMetaFieldDef =\n  exports.TypeKind =\n  exports.SchemaMetaFieldDef =\n    void 0;\nexports.isIntrospectionType = isIntrospectionType;\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _directiveLocation = require('../language/directiveLocation.js');\n\nvar _printer = require('../language/printer.js');\n\nvar _astFromValue = require('../utilities/astFromValue.js');\n\nvar _definition = require('./definition.js');\n\nvar _scalars = require('./scalars.js');\n\nconst __Schema = new _definition.GraphQLObjectType({\n  name: '__Schema',\n  description:\n    'A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.',\n  fields: () => ({\n    description: {\n      type: _scalars.GraphQLString,\n      resolve: (schema) => schema.description,\n    },\n    types: {\n      description: 'A list of all types supported by this server.',\n      type: new _definition.GraphQLNonNull(\n        new _definition.GraphQLList(new _definition.GraphQLNonNull(__Type)),\n      ),\n\n      resolve(schema) {\n        return Object.values(schema.getTypeMap());\n      },\n    },\n    queryType: {\n      description: 'The type that query operations will be rooted at.',\n      type: new _definition.GraphQLNonNull(__Type),\n      resolve: (schema) => schema.getQueryType(),\n    },\n    mutationType: {\n      description:\n        'If this server supports mutation, the type that mutation operations will be rooted at.',\n      type: __Type,\n      resolve: (schema) => schema.getMutationType(),\n    },\n    subscriptionType: {\n      description:\n        'If this server support subscription, the type that subscription operations will be rooted at.',\n      type: __Type,\n      resolve: (schema) => schema.getSubscriptionType(),\n    },\n    directives: {\n      description: 'A list of all directives supported by this server.',\n      type: new _definition.GraphQLNonNull(\n        new _definition.GraphQLList(\n          new _definition.GraphQLNonNull(__Directive),\n        ),\n      ),\n      resolve: (schema) => schema.getDirectives(),\n    },\n  }),\n});\n\nexports.__Schema = __Schema;\n\nconst __Directive = new _definition.GraphQLObjectType({\n  name: '__Directive',\n  description:\n    \"A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\\n\\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.\",\n  fields: () => ({\n    name: {\n      type: new _definition.GraphQLNonNull(_scalars.GraphQLString),\n      resolve: (directive) => directive.name,\n    },\n    description: {\n      type: _scalars.GraphQLString,\n      resolve: (directive) => directive.description,\n    },\n    isRepeatable: {\n      type: new _definition.GraphQLNonNull(_scalars.GraphQLBoolean),\n      resolve: (directive) => directive.isRepeatable,\n    },\n    locations: {\n      type: new _definition.GraphQLNonNull(\n        new _definition.GraphQLList(\n          new _definition.GraphQLNonNull(__DirectiveLocation),\n        ),\n      ),\n      resolve: (directive) => directive.locations,\n    },\n    args: {\n      type: new _definition.GraphQLNonNull(\n        new _definition.GraphQLList(\n          new _definition.GraphQLNonNull(__InputValue),\n        ),\n      ),\n      args: {\n        includeDeprecated: {\n          type: _scalars.GraphQLBoolean,\n          defaultValue: false,\n        },\n      },\n\n      resolve(field, { includeDeprecated }) {\n        return includeDeprecated\n          ? field.args\n          : field.args.filter((arg) => arg.deprecationReason == null);\n      },\n    },\n  }),\n});\n\nexports.__Directive = __Directive;\n\nconst __DirectiveLocation = new _definition.GraphQLEnumType({\n  name: '__DirectiveLocation',\n  description:\n    'A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.',\n  values: {\n    QUERY: {\n      value: _directiveLocation.DirectiveLocation.QUERY,\n      description: 'Location adjacent to a query operation.',\n    },\n    MUTATION: {\n      value: _directiveLocation.DirectiveLocation.MUTATION,\n      description: 'Location adjacent to a mutation operation.',\n    },\n    SUBSCRIPTION: {\n      value: _directiveLocation.DirectiveLocation.SUBSCRIPTION,\n      description: 'Location adjacent to a subscription operation.',\n    },\n    FIELD: {\n      value: _directiveLocation.DirectiveLocation.FIELD,\n      description: 'Location adjacent to a field.',\n    },\n    FRAGMENT_DEFINITION: {\n      value: _directiveLocation.DirectiveLocation.FRAGMENT_DEFINITION,\n      description: 'Location adjacent to a fragment definition.',\n    },\n    FRAGMENT_SPREAD: {\n      value: _directiveLocation.DirectiveLocation.FRAGMENT_SPREAD,\n      description: 'Location adjacent to a fragment spread.',\n    },\n    INLINE_FRAGMENT: {\n      value: _directiveLocation.DirectiveLocation.INLINE_FRAGMENT,\n      description: 'Location adjacent to an inline fragment.',\n    },\n    VARIABLE_DEFINITION: {\n      value: _directiveLocation.DirectiveLocation.VARIABLE_DEFINITION,\n      description: 'Location adjacent to a variable definition.',\n    },\n    SCHEMA: {\n      value: _directiveLocation.DirectiveLocation.SCHEMA,\n      description: 'Location adjacent to a schema definition.',\n    },\n    SCALAR: {\n      value: _directiveLocation.DirectiveLocation.SCALAR,\n      description: 'Location adjacent to a scalar definition.',\n    },\n    OBJECT: {\n      value: _directiveLocation.DirectiveLocation.OBJECT,\n      description: 'Location adjacent to an object type definition.',\n    },\n    FIELD_DEFINITION: {\n      value: _directiveLocation.DirectiveLocation.FIELD_DEFINITION,\n      description: 'Location adjacent to a field definition.',\n    },\n    ARGUMENT_DEFINITION: {\n      value: _directiveLocation.DirectiveLocation.ARGUMENT_DEFINITION,\n      description: 'Location adjacent to an argument definition.',\n    },\n    INTERFACE: {\n      value: _directiveLocation.DirectiveLocation.INTERFACE,\n      description: 'Location adjacent to an interface definition.',\n    },\n    UNION: {\n      value: _directiveLocation.DirectiveLocation.UNION,\n      description: 'Location adjacent to a union definition.',\n    },\n    ENUM: {\n      value: _directiveLocation.DirectiveLocation.ENUM,\n      description: 'Location adjacent to an enum definition.',\n    },\n    ENUM_VALUE: {\n      value: _directiveLocation.DirectiveLocation.ENUM_VALUE,\n      description: 'Location adjacent to an enum value definition.',\n    },\n    INPUT_OBJECT: {\n      value: _directiveLocation.DirectiveLocation.INPUT_OBJECT,\n      description: 'Location adjacent to an input object type definition.',\n    },\n    INPUT_FIELD_DEFINITION: {\n      value: _directiveLocation.DirectiveLocation.INPUT_FIELD_DEFINITION,\n      description: 'Location adjacent to an input object field definition.',\n    },\n  },\n});\n\nexports.__DirectiveLocation = __DirectiveLocation;\n\nconst __Type = new _definition.GraphQLObjectType({\n  name: '__Type',\n  description:\n    'The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\\n\\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name, description and optional `specifiedByURL`, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.',\n  fields: () => ({\n    kind: {\n      type: new _definition.GraphQLNonNull(__TypeKind),\n\n      resolve(type) {\n        if ((0, _definition.isScalarType)(type)) {\n          return TypeKind.SCALAR;\n        }\n\n        if ((0, _definition.isObjectType)(type)) {\n          return TypeKind.OBJECT;\n        }\n\n        if ((0, _definition.isInterfaceType)(type)) {\n          return TypeKind.INTERFACE;\n        }\n\n        if ((0, _definition.isUnionType)(type)) {\n          return TypeKind.UNION;\n        }\n\n        if ((0, _definition.isEnumType)(type)) {\n          return TypeKind.ENUM;\n        }\n\n        if ((0, _definition.isInputObjectType)(type)) {\n          return TypeKind.INPUT_OBJECT;\n        }\n\n        if ((0, _definition.isListType)(type)) {\n          return TypeKind.LIST;\n        }\n\n        if ((0, _definition.isNonNullType)(type)) {\n          return TypeKind.NON_NULL;\n        }\n        /* c8 ignore next 3 */\n        // Not reachable, all possible types have been considered)\n\n        false ||\n          (0, _invariant.invariant)(\n            false,\n            `Unexpected type: \"${(0, _inspect.inspect)(type)}\".`,\n          );\n      },\n    },\n    name: {\n      type: _scalars.GraphQLString,\n      resolve: (type) => ('name' in type ? type.name : undefined),\n    },\n    description: {\n      type: _scalars.GraphQLString,\n      resolve: (\n        type, // FIXME: add test case\n      ) =>\n        /* c8 ignore next */\n        'description' in type ? type.description : undefined,\n    },\n    specifiedByURL: {\n      type: _scalars.GraphQLString,\n      resolve: (obj) =>\n        'specifiedByURL' in obj ? obj.specifiedByURL : undefined,\n    },\n    fields: {\n      type: new _definition.GraphQLList(\n        new _definition.GraphQLNonNull(__Field),\n      ),\n      args: {\n        includeDeprecated: {\n          type: _scalars.GraphQLBoolean,\n          defaultValue: false,\n        },\n      },\n\n      resolve(type, { includeDeprecated }) {\n        if (\n          (0, _definition.isObjectType)(type) ||\n          (0, _definition.isInterfaceType)(type)\n        ) {\n          const fields = Object.values(type.getFields());\n          return includeDeprecated\n            ? fields\n            : fields.filter((field) => field.deprecationReason == null);\n        }\n      },\n    },\n    interfaces: {\n      type: new _definition.GraphQLList(new _definition.GraphQLNonNull(__Type)),\n\n      resolve(type) {\n        if (\n          (0, _definition.isObjectType)(type) ||\n          (0, _definition.isInterfaceType)(type)\n        ) {\n          return type.getInterfaces();\n        }\n      },\n    },\n    possibleTypes: {\n      type: new _definition.GraphQLList(new _definition.GraphQLNonNull(__Type)),\n\n      resolve(type, _args, _context, { schema }) {\n        if ((0, _definition.isAbstractType)(type)) {\n          return schema.getPossibleTypes(type);\n        }\n      },\n    },\n    enumValues: {\n      type: new _definition.GraphQLList(\n        new _definition.GraphQLNonNull(__EnumValue),\n      ),\n      args: {\n        includeDeprecated: {\n          type: _scalars.GraphQLBoolean,\n          defaultValue: false,\n        },\n      },\n\n      resolve(type, { includeDeprecated }) {\n        if ((0, _definition.isEnumType)(type)) {\n          const values = type.getValues();\n          return includeDeprecated\n            ? values\n            : values.filter((field) => field.deprecationReason == null);\n        }\n      },\n    },\n    inputFields: {\n      type: new _definition.GraphQLList(\n        new _definition.GraphQLNonNull(__InputValue),\n      ),\n      args: {\n        includeDeprecated: {\n          type: _scalars.GraphQLBoolean,\n          defaultValue: false,\n        },\n      },\n\n      resolve(type, { includeDeprecated }) {\n        if ((0, _definition.isInputObjectType)(type)) {\n          const values = Object.values(type.getFields());\n          return includeDeprecated\n            ? values\n            : values.filter((field) => field.deprecationReason == null);\n        }\n      },\n    },\n    ofType: {\n      type: __Type,\n      resolve: (type) => ('ofType' in type ? type.ofType : undefined),\n    },\n  }),\n});\n\nexports.__Type = __Type;\n\nconst __Field = new _definition.GraphQLObjectType({\n  name: '__Field',\n  description:\n    'Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.',\n  fields: () => ({\n    name: {\n      type: new _definition.GraphQLNonNull(_scalars.GraphQLString),\n      resolve: (field) => field.name,\n    },\n    description: {\n      type: _scalars.GraphQLString,\n      resolve: (field) => field.description,\n    },\n    args: {\n      type: new _definition.GraphQLNonNull(\n        new _definition.GraphQLList(\n          new _definition.GraphQLNonNull(__InputValue),\n        ),\n      ),\n      args: {\n        includeDeprecated: {\n          type: _scalars.GraphQLBoolean,\n          defaultValue: false,\n        },\n      },\n\n      resolve(field, { includeDeprecated }) {\n        return includeDeprecated\n          ? field.args\n          : field.args.filter((arg) => arg.deprecationReason == null);\n      },\n    },\n    type: {\n      type: new _definition.GraphQLNonNull(__Type),\n      resolve: (field) => field.type,\n    },\n    isDeprecated: {\n      type: new _definition.GraphQLNonNull(_scalars.GraphQLBoolean),\n      resolve: (field) => field.deprecationReason != null,\n    },\n    deprecationReason: {\n      type: _scalars.GraphQLString,\n      resolve: (field) => field.deprecationReason,\n    },\n  }),\n});\n\nexports.__Field = __Field;\n\nconst __InputValue = new _definition.GraphQLObjectType({\n  name: '__InputValue',\n  description:\n    'Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.',\n  fields: () => ({\n    name: {\n      type: new _definition.GraphQLNonNull(_scalars.GraphQLString),\n      resolve: (inputValue) => inputValue.name,\n    },\n    description: {\n      type: _scalars.GraphQLString,\n      resolve: (inputValue) => inputValue.description,\n    },\n    type: {\n      type: new _definition.GraphQLNonNull(__Type),\n      resolve: (inputValue) => inputValue.type,\n    },\n    defaultValue: {\n      type: _scalars.GraphQLString,\n      description:\n        'A GraphQL-formatted string representing the default value for this input value.',\n\n      resolve(inputValue) {\n        const { type, defaultValue } = inputValue;\n        const valueAST = (0, _astFromValue.astFromValue)(defaultValue, type);\n        return valueAST ? (0, _printer.print)(valueAST) : null;\n      },\n    },\n    isDeprecated: {\n      type: new _definition.GraphQLNonNull(_scalars.GraphQLBoolean),\n      resolve: (field) => field.deprecationReason != null,\n    },\n    deprecationReason: {\n      type: _scalars.GraphQLString,\n      resolve: (obj) => obj.deprecationReason,\n    },\n  }),\n});\n\nexports.__InputValue = __InputValue;\n\nconst __EnumValue = new _definition.GraphQLObjectType({\n  name: '__EnumValue',\n  description:\n    'One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.',\n  fields: () => ({\n    name: {\n      type: new _definition.GraphQLNonNull(_scalars.GraphQLString),\n      resolve: (enumValue) => enumValue.name,\n    },\n    description: {\n      type: _scalars.GraphQLString,\n      resolve: (enumValue) => enumValue.description,\n    },\n    isDeprecated: {\n      type: new _definition.GraphQLNonNull(_scalars.GraphQLBoolean),\n      resolve: (enumValue) => enumValue.deprecationReason != null,\n    },\n    deprecationReason: {\n      type: _scalars.GraphQLString,\n      resolve: (enumValue) => enumValue.deprecationReason,\n    },\n  }),\n});\n\nexports.__EnumValue = __EnumValue;\nvar TypeKind;\nexports.TypeKind = TypeKind;\n\n(function (TypeKind) {\n  TypeKind['SCALAR'] = 'SCALAR';\n  TypeKind['OBJECT'] = 'OBJECT';\n  TypeKind['INTERFACE'] = 'INTERFACE';\n  TypeKind['UNION'] = 'UNION';\n  TypeKind['ENUM'] = 'ENUM';\n  TypeKind['INPUT_OBJECT'] = 'INPUT_OBJECT';\n  TypeKind['LIST'] = 'LIST';\n  TypeKind['NON_NULL'] = 'NON_NULL';\n})(TypeKind || (exports.TypeKind = TypeKind = {}));\n\nconst __TypeKind = new _definition.GraphQLEnumType({\n  name: '__TypeKind',\n  description: 'An enum describing what kind of type a given `__Type` is.',\n  values: {\n    SCALAR: {\n      value: TypeKind.SCALAR,\n      description: 'Indicates this type is a scalar.',\n    },\n    OBJECT: {\n      value: TypeKind.OBJECT,\n      description:\n        'Indicates this type is an object. `fields` and `interfaces` are valid fields.',\n    },\n    INTERFACE: {\n      value: TypeKind.INTERFACE,\n      description:\n        'Indicates this type is an interface. `fields`, `interfaces`, and `possibleTypes` are valid fields.',\n    },\n    UNION: {\n      value: TypeKind.UNION,\n      description:\n        'Indicates this type is a union. `possibleTypes` is a valid field.',\n    },\n    ENUM: {\n      value: TypeKind.ENUM,\n      description:\n        'Indicates this type is an enum. `enumValues` is a valid field.',\n    },\n    INPUT_OBJECT: {\n      value: TypeKind.INPUT_OBJECT,\n      description:\n        'Indicates this type is an input object. `inputFields` is a valid field.',\n    },\n    LIST: {\n      value: TypeKind.LIST,\n      description: 'Indicates this type is a list. `ofType` is a valid field.',\n    },\n    NON_NULL: {\n      value: TypeKind.NON_NULL,\n      description:\n        'Indicates this type is a non-null. `ofType` is a valid field.',\n    },\n  },\n});\n/**\n * Note that these are GraphQLField and not GraphQLFieldConfig,\n * so the format for args is different.\n */\n\nexports.__TypeKind = __TypeKind;\nconst SchemaMetaFieldDef = {\n  name: '__schema',\n  type: new _definition.GraphQLNonNull(__Schema),\n  description: 'Access the current type schema of this server.',\n  args: [],\n  resolve: (_source, _args, _context, { schema }) => schema,\n  deprecationReason: undefined,\n  extensions: Object.create(null),\n  astNode: undefined,\n};\nexports.SchemaMetaFieldDef = SchemaMetaFieldDef;\nconst TypeMetaFieldDef = {\n  name: '__type',\n  type: __Type,\n  description: 'Request the type information of a single type.',\n  args: [\n    {\n      name: 'name',\n      description: undefined,\n      type: new _definition.GraphQLNonNull(_scalars.GraphQLString),\n      defaultValue: undefined,\n      deprecationReason: undefined,\n      extensions: Object.create(null),\n      astNode: undefined,\n    },\n  ],\n  resolve: (_source, { name }, _context, { schema }) => schema.getType(name),\n  deprecationReason: undefined,\n  extensions: Object.create(null),\n  astNode: undefined,\n};\nexports.TypeMetaFieldDef = TypeMetaFieldDef;\nconst TypeNameMetaFieldDef = {\n  name: '__typename',\n  type: new _definition.GraphQLNonNull(_scalars.GraphQLString),\n  description: 'The name of the current Object type at runtime.',\n  args: [],\n  resolve: (_source, _args, _context, { parentType }) => parentType.name,\n  deprecationReason: undefined,\n  extensions: Object.create(null),\n  astNode: undefined,\n};\nexports.TypeNameMetaFieldDef = TypeNameMetaFieldDef;\nconst introspectionTypes = Object.freeze([\n  __Schema,\n  __Directive,\n  __DirectiveLocation,\n  __Type,\n  __Field,\n  __InputValue,\n  __EnumValue,\n  __TypeKind,\n]);\nexports.introspectionTypes = introspectionTypes;\n\nfunction isIntrospectionType(type) {\n  return introspectionTypes.some(({ name }) => type.name === name);\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.GraphQLSchema = void 0;\nexports.assertSchema = assertSchema;\nexports.isSchema = isSchema;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _instanceOf = require('../jsutils/instanceOf.js');\n\nvar _isObjectLike = require('../jsutils/isObjectLike.js');\n\nvar _toObjMap = require('../jsutils/toObjMap.js');\n\nvar _ast = require('../language/ast.js');\n\nvar _definition = require('./definition.js');\n\nvar _directives = require('./directives.js');\n\nvar _introspection = require('./introspection.js');\n\n/**\n * Test if the given value is a GraphQL schema.\n */\nfunction isSchema(schema) {\n  return (0, _instanceOf.instanceOf)(schema, GraphQLSchema);\n}\n\nfunction assertSchema(schema) {\n  if (!isSchema(schema)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(schema)} to be a GraphQL schema.`,\n    );\n  }\n\n  return schema;\n}\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\n\n/**\n * Schema Definition\n *\n * A Schema is created by supplying the root types of each type of operation,\n * query and mutation (optional). A schema definition is then supplied to the\n * validator and executor.\n *\n * Example:\n *\n * ```ts\n * const MyAppSchema = new GraphQLSchema({\n *   query: MyAppQueryRootType,\n *   mutation: MyAppMutationRootType,\n * })\n * ```\n *\n * Note: When the schema is constructed, by default only the types that are\n * reachable by traversing the root types are included, other types must be\n * explicitly referenced.\n *\n * Example:\n *\n * ```ts\n * const characterInterface = new GraphQLInterfaceType({\n *   name: 'Character',\n *   ...\n * });\n *\n * const humanType = new GraphQLObjectType({\n *   name: 'Human',\n *   interfaces: [characterInterface],\n *   ...\n * });\n *\n * const droidType = new GraphQLObjectType({\n *   name: 'Droid',\n *   interfaces: [characterInterface],\n *   ...\n * });\n *\n * const schema = new GraphQLSchema({\n *   query: new GraphQLObjectType({\n *     name: 'Query',\n *     fields: {\n *       hero: { type: characterInterface, ... },\n *     }\n *   }),\n *   ...\n *   // Since this schema references only the `Character` interface it's\n *   // necessary to explicitly list the types that implement it if\n *   // you want them to be included in the final schema.\n *   types: [humanType, droidType],\n * })\n * ```\n *\n * Note: If an array of `directives` are provided to GraphQLSchema, that will be\n * the exact list of directives represented and allowed. If `directives` is not\n * provided then a default set of the specified directives (e.g. `@include` and\n * `@skip`) will be used. If you wish to provide *additional* directives to these\n * specified directives, you must explicitly declare them. Example:\n *\n * ```ts\n * const MyAppSchema = new GraphQLSchema({\n *   ...\n *   directives: specifiedDirectives.concat([ myCustomDirective ]),\n * })\n * ```\n */\nclass GraphQLSchema {\n  // Used as a cache for validateSchema().\n  constructor(config) {\n    var _config$extensionASTN, _config$directives;\n\n    // If this schema was built from a source known to be valid, then it may be\n    // marked with assumeValid to avoid an additional type system validation.\n    this.__validationErrors = config.assumeValid === true ? [] : undefined; // Check for common mistakes during construction to produce early errors.\n\n    (0, _isObjectLike.isObjectLike)(config) ||\n      (0, _devAssert.devAssert)(false, 'Must provide configuration object.');\n    !config.types ||\n      Array.isArray(config.types) ||\n      (0, _devAssert.devAssert)(\n        false,\n        `\"types\" must be Array if provided but got: ${(0, _inspect.inspect)(\n          config.types,\n        )}.`,\n      );\n    !config.directives ||\n      Array.isArray(config.directives) ||\n      (0, _devAssert.devAssert)(\n        false,\n        '\"directives\" must be Array if provided but got: ' +\n          `${(0, _inspect.inspect)(config.directives)}.`,\n      );\n    this.description = config.description;\n    this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n    this.astNode = config.astNode;\n    this.extensionASTNodes =\n      (_config$extensionASTN = config.extensionASTNodes) !== null &&\n      _config$extensionASTN !== void 0\n        ? _config$extensionASTN\n        : [];\n    this._queryType = config.query;\n    this._mutationType = config.mutation;\n    this._subscriptionType = config.subscription; // Provide specified directives (e.g. @include and @skip) by default.\n\n    this._directives =\n      (_config$directives = config.directives) !== null &&\n      _config$directives !== void 0\n        ? _config$directives\n        : _directives.specifiedDirectives; // To preserve order of user-provided types, we add first to add them to\n    // the set of \"collected\" types, so `collectReferencedTypes` ignore them.\n\n    const allReferencedTypes = new Set(config.types);\n\n    if (config.types != null) {\n      for (const type of config.types) {\n        // When we ready to process this type, we remove it from \"collected\" types\n        // and then add it together with all dependent types in the correct position.\n        allReferencedTypes.delete(type);\n        collectReferencedTypes(type, allReferencedTypes);\n      }\n    }\n\n    if (this._queryType != null) {\n      collectReferencedTypes(this._queryType, allReferencedTypes);\n    }\n\n    if (this._mutationType != null) {\n      collectReferencedTypes(this._mutationType, allReferencedTypes);\n    }\n\n    if (this._subscriptionType != null) {\n      collectReferencedTypes(this._subscriptionType, allReferencedTypes);\n    }\n\n    for (const directive of this._directives) {\n      // Directives are not validated until validateSchema() is called.\n      if ((0, _directives.isDirective)(directive)) {\n        for (const arg of directive.args) {\n          collectReferencedTypes(arg.type, allReferencedTypes);\n        }\n      }\n    }\n\n    collectReferencedTypes(_introspection.__Schema, allReferencedTypes); // Storing the resulting map for reference by the schema.\n\n    this._typeMap = Object.create(null);\n    this._subTypeMap = Object.create(null); // Keep track of all implementations by interface name.\n\n    this._implementationsMap = Object.create(null);\n\n    for (const namedType of allReferencedTypes) {\n      if (namedType == null) {\n        continue;\n      }\n\n      const typeName = namedType.name;\n      typeName ||\n        (0, _devAssert.devAssert)(\n          false,\n          'One of the provided types for building the Schema is missing a name.',\n        );\n\n      if (this._typeMap[typeName] !== undefined) {\n        throw new Error(\n          `Schema must contain uniquely named types but contains multiple types named \"${typeName}\".`,\n        );\n      }\n\n      this._typeMap[typeName] = namedType;\n\n      if ((0, _definition.isInterfaceType)(namedType)) {\n        // Store implementations by interface.\n        for (const iface of namedType.getInterfaces()) {\n          if ((0, _definition.isInterfaceType)(iface)) {\n            let implementations = this._implementationsMap[iface.name];\n\n            if (implementations === undefined) {\n              implementations = this._implementationsMap[iface.name] = {\n                objects: [],\n                interfaces: [],\n              };\n            }\n\n            implementations.interfaces.push(namedType);\n          }\n        }\n      } else if ((0, _definition.isObjectType)(namedType)) {\n        // Store implementations by objects.\n        for (const iface of namedType.getInterfaces()) {\n          if ((0, _definition.isInterfaceType)(iface)) {\n            let implementations = this._implementationsMap[iface.name];\n\n            if (implementations === undefined) {\n              implementations = this._implementationsMap[iface.name] = {\n                objects: [],\n                interfaces: [],\n              };\n            }\n\n            implementations.objects.push(namedType);\n          }\n        }\n      }\n    }\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLSchema';\n  }\n\n  getQueryType() {\n    return this._queryType;\n  }\n\n  getMutationType() {\n    return this._mutationType;\n  }\n\n  getSubscriptionType() {\n    return this._subscriptionType;\n  }\n\n  getRootType(operation) {\n    switch (operation) {\n      case _ast.OperationTypeNode.QUERY:\n        return this.getQueryType();\n\n      case _ast.OperationTypeNode.MUTATION:\n        return this.getMutationType();\n\n      case _ast.OperationTypeNode.SUBSCRIPTION:\n        return this.getSubscriptionType();\n    }\n  }\n\n  getTypeMap() {\n    return this._typeMap;\n  }\n\n  getType(name) {\n    return this.getTypeMap()[name];\n  }\n\n  getPossibleTypes(abstractType) {\n    return (0, _definition.isUnionType)(abstractType)\n      ? abstractType.getTypes()\n      : this.getImplementations(abstractType).objects;\n  }\n\n  getImplementations(interfaceType) {\n    const implementations = this._implementationsMap[interfaceType.name];\n    return implementations !== null && implementations !== void 0\n      ? implementations\n      : {\n          objects: [],\n          interfaces: [],\n        };\n  }\n\n  isSubType(abstractType, maybeSubType) {\n    let map = this._subTypeMap[abstractType.name];\n\n    if (map === undefined) {\n      map = Object.create(null);\n\n      if ((0, _definition.isUnionType)(abstractType)) {\n        for (const type of abstractType.getTypes()) {\n          map[type.name] = true;\n        }\n      } else {\n        const implementations = this.getImplementations(abstractType);\n\n        for (const type of implementations.objects) {\n          map[type.name] = true;\n        }\n\n        for (const type of implementations.interfaces) {\n          map[type.name] = true;\n        }\n      }\n\n      this._subTypeMap[abstractType.name] = map;\n    }\n\n    return map[maybeSubType.name] !== undefined;\n  }\n\n  getDirectives() {\n    return this._directives;\n  }\n\n  getDirective(name) {\n    return this.getDirectives().find((directive) => directive.name === name);\n  }\n\n  toConfig() {\n    return {\n      description: this.description,\n      query: this.getQueryType(),\n      mutation: this.getMutationType(),\n      subscription: this.getSubscriptionType(),\n      types: Object.values(this.getTypeMap()),\n      directives: this.getDirectives(),\n      extensions: this.extensions,\n      astNode: this.astNode,\n      extensionASTNodes: this.extensionASTNodes,\n      assumeValid: this.__validationErrors !== undefined,\n    };\n  }\n}\n\nexports.GraphQLSchema = GraphQLSchema;\n\nfunction collectReferencedTypes(type, typeSet) {\n  const namedType = (0, _definition.getNamedType)(type);\n\n  if (!typeSet.has(namedType)) {\n    typeSet.add(namedType);\n\n    if ((0, _definition.isUnionType)(namedType)) {\n      for (const memberType of namedType.getTypes()) {\n        collectReferencedTypes(memberType, typeSet);\n      }\n    } else if (\n      (0, _definition.isObjectType)(namedType) ||\n      (0, _definition.isInterfaceType)(namedType)\n    ) {\n      for (const interfaceType of namedType.getInterfaces()) {\n        collectReferencedTypes(interfaceType, typeSet);\n      }\n\n      for (const field of Object.values(namedType.getFields())) {\n        collectReferencedTypes(field.type, typeSet);\n\n        for (const arg of field.args) {\n          collectReferencedTypes(arg.type, typeSet);\n        }\n      }\n    } else if ((0, _definition.isInputObjectType)(namedType)) {\n      for (const field of Object.values(namedType.getFields())) {\n        collectReferencedTypes(field.type, typeSet);\n      }\n    }\n  }\n\n  return typeSet;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.assertValidSchema = assertValidSchema;\nexports.validateSchema = validateSchema;\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _ast = require('../language/ast.js');\n\nvar _typeComparators = require('../utilities/typeComparators.js');\n\nvar _definition = require('./definition.js');\n\nvar _directives = require('./directives.js');\n\nvar _introspection = require('./introspection.js');\n\nvar _schema = require('./schema.js');\n\n/**\n * Implements the \"Type Validation\" sub-sections of the specification's\n * \"Type System\" section.\n *\n * Validation runs synchronously, returning an array of encountered errors, or\n * an empty array if no errors were encountered and the Schema is valid.\n */\nfunction validateSchema(schema) {\n  // First check to ensure the provided value is in fact a GraphQLSchema.\n  (0, _schema.assertSchema)(schema); // If this Schema has already been validated, return the previous results.\n\n  if (schema.__validationErrors) {\n    return schema.__validationErrors;\n  } // Validate the schema, producing a list of errors.\n\n  const context = new SchemaValidationContext(schema);\n  validateRootTypes(context);\n  validateDirectives(context);\n  validateTypes(context); // Persist the results of validation before returning to ensure validation\n  // does not run multiple times for this schema.\n\n  const errors = context.getErrors();\n  schema.__validationErrors = errors;\n  return errors;\n}\n/**\n * Utility function which asserts a schema is valid by throwing an error if\n * it is invalid.\n */\n\nfunction assertValidSchema(schema) {\n  const errors = validateSchema(schema);\n\n  if (errors.length !== 0) {\n    throw new Error(errors.map((error) => error.message).join('\\n\\n'));\n  }\n}\n\nclass SchemaValidationContext {\n  constructor(schema) {\n    this._errors = [];\n    this.schema = schema;\n  }\n\n  reportError(message, nodes) {\n    const _nodes = Array.isArray(nodes) ? nodes.filter(Boolean) : nodes;\n\n    this._errors.push(\n      new _GraphQLError.GraphQLError(message, {\n        nodes: _nodes,\n      }),\n    );\n  }\n\n  getErrors() {\n    return this._errors;\n  }\n}\n\nfunction validateRootTypes(context) {\n  const schema = context.schema;\n  const queryType = schema.getQueryType();\n\n  if (!queryType) {\n    context.reportError('Query root type must be provided.', schema.astNode);\n  } else if (!(0, _definition.isObjectType)(queryType)) {\n    var _getOperationTypeNode;\n\n    context.reportError(\n      `Query root type must be Object type, it cannot be ${(0,\n      _inspect.inspect)(queryType)}.`,\n      (_getOperationTypeNode = getOperationTypeNode(\n        schema,\n        _ast.OperationTypeNode.QUERY,\n      )) !== null && _getOperationTypeNode !== void 0\n        ? _getOperationTypeNode\n        : queryType.astNode,\n    );\n  }\n\n  const mutationType = schema.getMutationType();\n\n  if (mutationType && !(0, _definition.isObjectType)(mutationType)) {\n    var _getOperationTypeNode2;\n\n    context.reportError(\n      'Mutation root type must be Object type if provided, it cannot be ' +\n        `${(0, _inspect.inspect)(mutationType)}.`,\n      (_getOperationTypeNode2 = getOperationTypeNode(\n        schema,\n        _ast.OperationTypeNode.MUTATION,\n      )) !== null && _getOperationTypeNode2 !== void 0\n        ? _getOperationTypeNode2\n        : mutationType.astNode,\n    );\n  }\n\n  const subscriptionType = schema.getSubscriptionType();\n\n  if (subscriptionType && !(0, _definition.isObjectType)(subscriptionType)) {\n    var _getOperationTypeNode3;\n\n    context.reportError(\n      'Subscription root type must be Object type if provided, it cannot be ' +\n        `${(0, _inspect.inspect)(subscriptionType)}.`,\n      (_getOperationTypeNode3 = getOperationTypeNode(\n        schema,\n        _ast.OperationTypeNode.SUBSCRIPTION,\n      )) !== null && _getOperationTypeNode3 !== void 0\n        ? _getOperationTypeNode3\n        : subscriptionType.astNode,\n    );\n  }\n}\n\nfunction getOperationTypeNode(schema, operation) {\n  var _flatMap$find;\n\n  return (_flatMap$find = [schema.astNode, ...schema.extensionASTNodes]\n    .flatMap(\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n      (schemaNode) => {\n        var _schemaNode$operation;\n\n        return (\n          /* c8 ignore next */\n          (_schemaNode$operation =\n            schemaNode === null || schemaNode === void 0\n              ? void 0\n              : schemaNode.operationTypes) !== null &&\n            _schemaNode$operation !== void 0\n            ? _schemaNode$operation\n            : []\n        );\n      },\n    )\n    .find((operationNode) => operationNode.operation === operation)) === null ||\n    _flatMap$find === void 0\n    ? void 0\n    : _flatMap$find.type;\n}\n\nfunction validateDirectives(context) {\n  for (const directive of context.schema.getDirectives()) {\n    // Ensure all directives are in fact GraphQL directives.\n    if (!(0, _directives.isDirective)(directive)) {\n      context.reportError(\n        `Expected directive but got: ${(0, _inspect.inspect)(directive)}.`,\n        directive === null || directive === void 0 ? void 0 : directive.astNode,\n      );\n      continue;\n    } // Ensure they are named correctly.\n\n    validateName(context, directive); // TODO: Ensure proper locations.\n    // Ensure the arguments are valid.\n\n    for (const arg of directive.args) {\n      // Ensure they are named correctly.\n      validateName(context, arg); // Ensure the type is an input type.\n\n      if (!(0, _definition.isInputType)(arg.type)) {\n        context.reportError(\n          `The type of @${directive.name}(${arg.name}:) must be Input Type ` +\n            `but got: ${(0, _inspect.inspect)(arg.type)}.`,\n          arg.astNode,\n        );\n      }\n\n      if (\n        (0, _definition.isRequiredArgument)(arg) &&\n        arg.deprecationReason != null\n      ) {\n        var _arg$astNode;\n\n        context.reportError(\n          `Required argument @${directive.name}(${arg.name}:) cannot be deprecated.`,\n          [\n            getDeprecatedDirectiveNode(arg.astNode),\n            (_arg$astNode = arg.astNode) === null || _arg$astNode === void 0\n              ? void 0\n              : _arg$astNode.type,\n          ],\n        );\n      }\n    }\n  }\n}\n\nfunction validateName(context, node) {\n  // Ensure names are valid, however introspection types opt out.\n  if (node.name.startsWith('__')) {\n    context.reportError(\n      `Name \"${node.name}\" must not begin with \"__\", which is reserved by GraphQL introspection.`,\n      node.astNode,\n    );\n  }\n}\n\nfunction validateTypes(context) {\n  const validateInputObjectCircularRefs =\n    createInputObjectCircularRefsValidator(context);\n  const typeMap = context.schema.getTypeMap();\n\n  for (const type of Object.values(typeMap)) {\n    // Ensure all provided types are in fact GraphQL type.\n    if (!(0, _definition.isNamedType)(type)) {\n      context.reportError(\n        `Expected GraphQL named type but got: ${(0, _inspect.inspect)(type)}.`,\n        type.astNode,\n      );\n      continue;\n    } // Ensure it is named correctly (excluding introspection types).\n\n    if (!(0, _introspection.isIntrospectionType)(type)) {\n      validateName(context, type);\n    }\n\n    if ((0, _definition.isObjectType)(type)) {\n      // Ensure fields are valid\n      validateFields(context, type); // Ensure objects implement the interfaces they claim to.\n\n      validateInterfaces(context, type);\n    } else if ((0, _definition.isInterfaceType)(type)) {\n      // Ensure fields are valid.\n      validateFields(context, type); // Ensure interfaces implement the interfaces they claim to.\n\n      validateInterfaces(context, type);\n    } else if ((0, _definition.isUnionType)(type)) {\n      // Ensure Unions include valid member types.\n      validateUnionMembers(context, type);\n    } else if ((0, _definition.isEnumType)(type)) {\n      // Ensure Enums have valid values.\n      validateEnumValues(context, type);\n    } else if ((0, _definition.isInputObjectType)(type)) {\n      // Ensure Input Object fields are valid.\n      validateInputFields(context, type); // Ensure Input Objects do not contain non-nullable circular references\n\n      validateInputObjectCircularRefs(type);\n    }\n  }\n}\n\nfunction validateFields(context, type) {\n  const fields = Object.values(type.getFields()); // Objects and Interfaces both must define one or more fields.\n\n  if (fields.length === 0) {\n    context.reportError(`Type ${type.name} must define one or more fields.`, [\n      type.astNode,\n      ...type.extensionASTNodes,\n    ]);\n  }\n\n  for (const field of fields) {\n    // Ensure they are named correctly.\n    validateName(context, field); // Ensure the type is an output type\n\n    if (!(0, _definition.isOutputType)(field.type)) {\n      var _field$astNode;\n\n      context.reportError(\n        `The type of ${type.name}.${field.name} must be Output Type ` +\n          `but got: ${(0, _inspect.inspect)(field.type)}.`,\n        (_field$astNode = field.astNode) === null || _field$astNode === void 0\n          ? void 0\n          : _field$astNode.type,\n      );\n    } // Ensure the arguments are valid\n\n    for (const arg of field.args) {\n      const argName = arg.name; // Ensure they are named correctly.\n\n      validateName(context, arg); // Ensure the type is an input type\n\n      if (!(0, _definition.isInputType)(arg.type)) {\n        var _arg$astNode2;\n\n        context.reportError(\n          `The type of ${type.name}.${field.name}(${argName}:) must be Input ` +\n            `Type but got: ${(0, _inspect.inspect)(arg.type)}.`,\n          (_arg$astNode2 = arg.astNode) === null || _arg$astNode2 === void 0\n            ? void 0\n            : _arg$astNode2.type,\n        );\n      }\n\n      if (\n        (0, _definition.isRequiredArgument)(arg) &&\n        arg.deprecationReason != null\n      ) {\n        var _arg$astNode3;\n\n        context.reportError(\n          `Required argument ${type.name}.${field.name}(${argName}:) cannot be deprecated.`,\n          [\n            getDeprecatedDirectiveNode(arg.astNode),\n            (_arg$astNode3 = arg.astNode) === null || _arg$astNode3 === void 0\n              ? void 0\n              : _arg$astNode3.type,\n          ],\n        );\n      }\n    }\n  }\n}\n\nfunction validateInterfaces(context, type) {\n  const ifaceTypeNames = Object.create(null);\n\n  for (const iface of type.getInterfaces()) {\n    if (!(0, _definition.isInterfaceType)(iface)) {\n      context.reportError(\n        `Type ${(0, _inspect.inspect)(\n          type,\n        )} must only implement Interface types, ` +\n          `it cannot implement ${(0, _inspect.inspect)(iface)}.`,\n        getAllImplementsInterfaceNodes(type, iface),\n      );\n      continue;\n    }\n\n    if (type === iface) {\n      context.reportError(\n        `Type ${type.name} cannot implement itself because it would create a circular reference.`,\n        getAllImplementsInterfaceNodes(type, iface),\n      );\n      continue;\n    }\n\n    if (ifaceTypeNames[iface.name]) {\n      context.reportError(\n        `Type ${type.name} can only implement ${iface.name} once.`,\n        getAllImplementsInterfaceNodes(type, iface),\n      );\n      continue;\n    }\n\n    ifaceTypeNames[iface.name] = true;\n    validateTypeImplementsAncestors(context, type, iface);\n    validateTypeImplementsInterface(context, type, iface);\n  }\n}\n\nfunction validateTypeImplementsInterface(context, type, iface) {\n  const typeFieldMap = type.getFields(); // Assert each interface field is implemented.\n\n  for (const ifaceField of Object.values(iface.getFields())) {\n    const fieldName = ifaceField.name;\n    const typeField = typeFieldMap[fieldName]; // Assert interface field exists on type.\n\n    if (!typeField) {\n      context.reportError(\n        `Interface field ${iface.name}.${fieldName} expected but ${type.name} does not provide it.`,\n        [ifaceField.astNode, type.astNode, ...type.extensionASTNodes],\n      );\n      continue;\n    } // Assert interface field type is satisfied by type field type, by being\n    // a valid subtype. (covariant)\n\n    if (\n      !(0, _typeComparators.isTypeSubTypeOf)(\n        context.schema,\n        typeField.type,\n        ifaceField.type,\n      )\n    ) {\n      var _ifaceField$astNode, _typeField$astNode;\n\n      context.reportError(\n        `Interface field ${iface.name}.${fieldName} expects type ` +\n          `${(0, _inspect.inspect)(ifaceField.type)} but ${\n            type.name\n          }.${fieldName} ` +\n          `is type ${(0, _inspect.inspect)(typeField.type)}.`,\n        [\n          (_ifaceField$astNode = ifaceField.astNode) === null ||\n          _ifaceField$astNode === void 0\n            ? void 0\n            : _ifaceField$astNode.type,\n          (_typeField$astNode = typeField.astNode) === null ||\n          _typeField$astNode === void 0\n            ? void 0\n            : _typeField$astNode.type,\n        ],\n      );\n    } // Assert each interface field arg is implemented.\n\n    for (const ifaceArg of ifaceField.args) {\n      const argName = ifaceArg.name;\n      const typeArg = typeField.args.find((arg) => arg.name === argName); // Assert interface field arg exists on object field.\n\n      if (!typeArg) {\n        context.reportError(\n          `Interface field argument ${iface.name}.${fieldName}(${argName}:) expected but ${type.name}.${fieldName} does not provide it.`,\n          [ifaceArg.astNode, typeField.astNode],\n        );\n        continue;\n      } // Assert interface field arg type matches object field arg type.\n      // (invariant)\n      // TODO: change to contravariant?\n\n      if (!(0, _typeComparators.isEqualType)(ifaceArg.type, typeArg.type)) {\n        var _ifaceArg$astNode, _typeArg$astNode;\n\n        context.reportError(\n          `Interface field argument ${iface.name}.${fieldName}(${argName}:) ` +\n            `expects type ${(0, _inspect.inspect)(ifaceArg.type)} but ` +\n            `${type.name}.${fieldName}(${argName}:) is type ` +\n            `${(0, _inspect.inspect)(typeArg.type)}.`,\n          [\n            (_ifaceArg$astNode = ifaceArg.astNode) === null ||\n            _ifaceArg$astNode === void 0\n              ? void 0\n              : _ifaceArg$astNode.type,\n            (_typeArg$astNode = typeArg.astNode) === null ||\n            _typeArg$astNode === void 0\n              ? void 0\n              : _typeArg$astNode.type,\n          ],\n        );\n      } // TODO: validate default values?\n    } // Assert additional arguments must not be required.\n\n    for (const typeArg of typeField.args) {\n      const argName = typeArg.name;\n      const ifaceArg = ifaceField.args.find((arg) => arg.name === argName);\n\n      if (!ifaceArg && (0, _definition.isRequiredArgument)(typeArg)) {\n        context.reportError(\n          `Object field ${type.name}.${fieldName} includes required argument ${argName} that is missing from the Interface field ${iface.name}.${fieldName}.`,\n          [typeArg.astNode, ifaceField.astNode],\n        );\n      }\n    }\n  }\n}\n\nfunction validateTypeImplementsAncestors(context, type, iface) {\n  const ifaceInterfaces = type.getInterfaces();\n\n  for (const transitive of iface.getInterfaces()) {\n    if (!ifaceInterfaces.includes(transitive)) {\n      context.reportError(\n        transitive === type\n          ? `Type ${type.name} cannot implement ${iface.name} because it would create a circular reference.`\n          : `Type ${type.name} must implement ${transitive.name} because it is implemented by ${iface.name}.`,\n        [\n          ...getAllImplementsInterfaceNodes(iface, transitive),\n          ...getAllImplementsInterfaceNodes(type, iface),\n        ],\n      );\n    }\n  }\n}\n\nfunction validateUnionMembers(context, union) {\n  const memberTypes = union.getTypes();\n\n  if (memberTypes.length === 0) {\n    context.reportError(\n      `Union type ${union.name} must define one or more member types.`,\n      [union.astNode, ...union.extensionASTNodes],\n    );\n  }\n\n  const includedTypeNames = Object.create(null);\n\n  for (const memberType of memberTypes) {\n    if (includedTypeNames[memberType.name]) {\n      context.reportError(\n        `Union type ${union.name} can only include type ${memberType.name} once.`,\n        getUnionMemberTypeNodes(union, memberType.name),\n      );\n      continue;\n    }\n\n    includedTypeNames[memberType.name] = true;\n\n    if (!(0, _definition.isObjectType)(memberType)) {\n      context.reportError(\n        `Union type ${union.name} can only include Object types, ` +\n          `it cannot include ${(0, _inspect.inspect)(memberType)}.`,\n        getUnionMemberTypeNodes(union, String(memberType)),\n      );\n    }\n  }\n}\n\nfunction validateEnumValues(context, enumType) {\n  const enumValues = enumType.getValues();\n\n  if (enumValues.length === 0) {\n    context.reportError(\n      `Enum type ${enumType.name} must define one or more values.`,\n      [enumType.astNode, ...enumType.extensionASTNodes],\n    );\n  }\n\n  for (const enumValue of enumValues) {\n    // Ensure valid name.\n    validateName(context, enumValue);\n  }\n}\n\nfunction validateInputFields(context, inputObj) {\n  const fields = Object.values(inputObj.getFields());\n\n  if (fields.length === 0) {\n    context.reportError(\n      `Input Object type ${inputObj.name} must define one or more fields.`,\n      [inputObj.astNode, ...inputObj.extensionASTNodes],\n    );\n  } // Ensure the arguments are valid\n\n  for (const field of fields) {\n    // Ensure they are named correctly.\n    validateName(context, field); // Ensure the type is an input type\n\n    if (!(0, _definition.isInputType)(field.type)) {\n      var _field$astNode2;\n\n      context.reportError(\n        `The type of ${inputObj.name}.${field.name} must be Input Type ` +\n          `but got: ${(0, _inspect.inspect)(field.type)}.`,\n        (_field$astNode2 = field.astNode) === null || _field$astNode2 === void 0\n          ? void 0\n          : _field$astNode2.type,\n      );\n    }\n\n    if (\n      (0, _definition.isRequiredInputField)(field) &&\n      field.deprecationReason != null\n    ) {\n      var _field$astNode3;\n\n      context.reportError(\n        `Required input field ${inputObj.name}.${field.name} cannot be deprecated.`,\n        [\n          getDeprecatedDirectiveNode(field.astNode),\n          (_field$astNode3 = field.astNode) === null ||\n          _field$astNode3 === void 0\n            ? void 0\n            : _field$astNode3.type,\n        ],\n      );\n    }\n  }\n}\n\nfunction createInputObjectCircularRefsValidator(context) {\n  // Modified copy of algorithm from 'src/validation/rules/NoFragmentCycles.js'.\n  // Tracks already visited types to maintain O(N) and to ensure that cycles\n  // are not redundantly reported.\n  const visitedTypes = Object.create(null); // Array of types nodes used to produce meaningful errors\n\n  const fieldPath = []; // Position in the type path\n\n  const fieldPathIndexByTypeName = Object.create(null);\n  return detectCycleRecursive; // This does a straight-forward DFS to find cycles.\n  // It does not terminate when a cycle was found but continues to explore\n  // the graph to find all possible cycles.\n\n  function detectCycleRecursive(inputObj) {\n    if (visitedTypes[inputObj.name]) {\n      return;\n    }\n\n    visitedTypes[inputObj.name] = true;\n    fieldPathIndexByTypeName[inputObj.name] = fieldPath.length;\n    const fields = Object.values(inputObj.getFields());\n\n    for (const field of fields) {\n      if (\n        (0, _definition.isNonNullType)(field.type) &&\n        (0, _definition.isInputObjectType)(field.type.ofType)\n      ) {\n        const fieldType = field.type.ofType;\n        const cycleIndex = fieldPathIndexByTypeName[fieldType.name];\n        fieldPath.push(field);\n\n        if (cycleIndex === undefined) {\n          detectCycleRecursive(fieldType);\n        } else {\n          const cyclePath = fieldPath.slice(cycleIndex);\n          const pathStr = cyclePath.map((fieldObj) => fieldObj.name).join('.');\n          context.reportError(\n            `Cannot reference Input Object \"${fieldType.name}\" within itself through a series of non-null fields: \"${pathStr}\".`,\n            cyclePath.map((fieldObj) => fieldObj.astNode),\n          );\n        }\n\n        fieldPath.pop();\n      }\n    }\n\n    fieldPathIndexByTypeName[inputObj.name] = undefined;\n  }\n}\n\nfunction getAllImplementsInterfaceNodes(type, iface) {\n  const { astNode, extensionASTNodes } = type;\n  const nodes =\n    astNode != null ? [astNode, ...extensionASTNodes] : extensionASTNodes; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n  return nodes\n    .flatMap((typeNode) => {\n      var _typeNode$interfaces;\n\n      return (\n        /* c8 ignore next */\n        (_typeNode$interfaces = typeNode.interfaces) !== null &&\n          _typeNode$interfaces !== void 0\n          ? _typeNode$interfaces\n          : []\n      );\n    })\n    .filter((ifaceNode) => ifaceNode.name.value === iface.name);\n}\n\nfunction getUnionMemberTypeNodes(union, typeName) {\n  const { astNode, extensionASTNodes } = union;\n  const nodes =\n    astNode != null ? [astNode, ...extensionASTNodes] : extensionASTNodes; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n  return nodes\n    .flatMap((unionNode) => {\n      var _unionNode$types;\n\n      return (\n        /* c8 ignore next */\n        (_unionNode$types = unionNode.types) !== null &&\n          _unionNode$types !== void 0\n          ? _unionNode$types\n          : []\n      );\n    })\n    .filter((typeNode) => typeNode.name.value === typeName);\n}\n\nfunction getDeprecatedDirectiveNode(definitionNode) {\n  var _definitionNode$direc;\n\n  return definitionNode === null || definitionNode === void 0\n    ? void 0\n    : (_definitionNode$direc = definitionNode.directives) === null ||\n      _definitionNode$direc === void 0\n    ? void 0\n    : _definitionNode$direc.find(\n        (node) =>\n          node.name.value === _directives.GraphQLDeprecatedDirective.name,\n      );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.typeFromAST = typeFromAST;\n\nvar _kinds = require('../language/kinds.js');\n\nvar _definition = require('../type/definition.js');\n\nfunction typeFromAST(schema, typeNode) {\n  switch (typeNode.kind) {\n    case _kinds.Kind.LIST_TYPE: {\n      const innerType = typeFromAST(schema, typeNode.type);\n      return innerType && new _definition.GraphQLList(innerType);\n    }\n\n    case _kinds.Kind.NON_NULL_TYPE: {\n      const innerType = typeFromAST(schema, typeNode.type);\n      return innerType && new _definition.GraphQLNonNull(innerType);\n    }\n\n    case _kinds.Kind.NAMED_TYPE:\n      return schema.getType(typeNode.name.value);\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.TypeInfo = void 0;\nexports.visitWithTypeInfo = visitWithTypeInfo;\n\nvar _ast = require('../language/ast.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _visitor = require('../language/visitor.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _introspection = require('../type/introspection.js');\n\nvar _typeFromAST = require('./typeFromAST.js');\n\n/**\n * TypeInfo is a utility class which, given a GraphQL schema, can keep track\n * of the current field and type definitions at any point in a GraphQL document\n * AST during a recursive descent by calling `enter(node)` and `leave(node)`.\n */\nclass TypeInfo {\n  constructor(\n    schema,\n    /**\n     * Initial type may be provided in rare cases to facilitate traversals\n     *  beginning somewhere other than documents.\n     */\n    initialType,\n    /** @deprecated will be removed in 17.0.0 */\n    getFieldDefFn,\n  ) {\n    this._schema = schema;\n    this._typeStack = [];\n    this._parentTypeStack = [];\n    this._inputTypeStack = [];\n    this._fieldDefStack = [];\n    this._defaultValueStack = [];\n    this._directive = null;\n    this._argument = null;\n    this._enumValue = null;\n    this._getFieldDef =\n      getFieldDefFn !== null && getFieldDefFn !== void 0\n        ? getFieldDefFn\n        : getFieldDef;\n\n    if (initialType) {\n      if ((0, _definition.isInputType)(initialType)) {\n        this._inputTypeStack.push(initialType);\n      }\n\n      if ((0, _definition.isCompositeType)(initialType)) {\n        this._parentTypeStack.push(initialType);\n      }\n\n      if ((0, _definition.isOutputType)(initialType)) {\n        this._typeStack.push(initialType);\n      }\n    }\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'TypeInfo';\n  }\n\n  getType() {\n    if (this._typeStack.length > 0) {\n      return this._typeStack[this._typeStack.length - 1];\n    }\n  }\n\n  getParentType() {\n    if (this._parentTypeStack.length > 0) {\n      return this._parentTypeStack[this._parentTypeStack.length - 1];\n    }\n  }\n\n  getInputType() {\n    if (this._inputTypeStack.length > 0) {\n      return this._inputTypeStack[this._inputTypeStack.length - 1];\n    }\n  }\n\n  getParentInputType() {\n    if (this._inputTypeStack.length > 1) {\n      return this._inputTypeStack[this._inputTypeStack.length - 2];\n    }\n  }\n\n  getFieldDef() {\n    if (this._fieldDefStack.length > 0) {\n      return this._fieldDefStack[this._fieldDefStack.length - 1];\n    }\n  }\n\n  getDefaultValue() {\n    if (this._defaultValueStack.length > 0) {\n      return this._defaultValueStack[this._defaultValueStack.length - 1];\n    }\n  }\n\n  getDirective() {\n    return this._directive;\n  }\n\n  getArgument() {\n    return this._argument;\n  }\n\n  getEnumValue() {\n    return this._enumValue;\n  }\n\n  enter(node) {\n    const schema = this._schema; // Note: many of the types below are explicitly typed as \"unknown\" to drop\n    // any assumptions of a valid schema to ensure runtime types are properly\n    // checked before continuing since TypeInfo is used as part of validation\n    // which occurs before guarantees of schema and document validity.\n\n    switch (node.kind) {\n      case _kinds.Kind.SELECTION_SET: {\n        const namedType = (0, _definition.getNamedType)(this.getType());\n\n        this._parentTypeStack.push(\n          (0, _definition.isCompositeType)(namedType) ? namedType : undefined,\n        );\n\n        break;\n      }\n\n      case _kinds.Kind.FIELD: {\n        const parentType = this.getParentType();\n        let fieldDef;\n        let fieldType;\n\n        if (parentType) {\n          fieldDef = this._getFieldDef(schema, parentType, node);\n\n          if (fieldDef) {\n            fieldType = fieldDef.type;\n          }\n        }\n\n        this._fieldDefStack.push(fieldDef);\n\n        this._typeStack.push(\n          (0, _definition.isOutputType)(fieldType) ? fieldType : undefined,\n        );\n\n        break;\n      }\n\n      case _kinds.Kind.DIRECTIVE:\n        this._directive = schema.getDirective(node.name.value);\n        break;\n\n      case _kinds.Kind.OPERATION_DEFINITION: {\n        const rootType = schema.getRootType(node.operation);\n\n        this._typeStack.push(\n          (0, _definition.isObjectType)(rootType) ? rootType : undefined,\n        );\n\n        break;\n      }\n\n      case _kinds.Kind.INLINE_FRAGMENT:\n      case _kinds.Kind.FRAGMENT_DEFINITION: {\n        const typeConditionAST = node.typeCondition;\n        const outputType = typeConditionAST\n          ? (0, _typeFromAST.typeFromAST)(schema, typeConditionAST)\n          : (0, _definition.getNamedType)(this.getType());\n\n        this._typeStack.push(\n          (0, _definition.isOutputType)(outputType) ? outputType : undefined,\n        );\n\n        break;\n      }\n\n      case _kinds.Kind.VARIABLE_DEFINITION: {\n        const inputType = (0, _typeFromAST.typeFromAST)(schema, node.type);\n\n        this._inputTypeStack.push(\n          (0, _definition.isInputType)(inputType) ? inputType : undefined,\n        );\n\n        break;\n      }\n\n      case _kinds.Kind.ARGUMENT: {\n        var _this$getDirective;\n\n        let argDef;\n        let argType;\n        const fieldOrDirective =\n          (_this$getDirective = this.getDirective()) !== null &&\n          _this$getDirective !== void 0\n            ? _this$getDirective\n            : this.getFieldDef();\n\n        if (fieldOrDirective) {\n          argDef = fieldOrDirective.args.find(\n            (arg) => arg.name === node.name.value,\n          );\n\n          if (argDef) {\n            argType = argDef.type;\n          }\n        }\n\n        this._argument = argDef;\n\n        this._defaultValueStack.push(argDef ? argDef.defaultValue : undefined);\n\n        this._inputTypeStack.push(\n          (0, _definition.isInputType)(argType) ? argType : undefined,\n        );\n\n        break;\n      }\n\n      case _kinds.Kind.LIST: {\n        const listType = (0, _definition.getNullableType)(this.getInputType());\n        const itemType = (0, _definition.isListType)(listType)\n          ? listType.ofType\n          : listType; // List positions never have a default value.\n\n        this._defaultValueStack.push(undefined);\n\n        this._inputTypeStack.push(\n          (0, _definition.isInputType)(itemType) ? itemType : undefined,\n        );\n\n        break;\n      }\n\n      case _kinds.Kind.OBJECT_FIELD: {\n        const objectType = (0, _definition.getNamedType)(this.getInputType());\n        let inputFieldType;\n        let inputField;\n\n        if ((0, _definition.isInputObjectType)(objectType)) {\n          inputField = objectType.getFields()[node.name.value];\n\n          if (inputField) {\n            inputFieldType = inputField.type;\n          }\n        }\n\n        this._defaultValueStack.push(\n          inputField ? inputField.defaultValue : undefined,\n        );\n\n        this._inputTypeStack.push(\n          (0, _definition.isInputType)(inputFieldType)\n            ? inputFieldType\n            : undefined,\n        );\n\n        break;\n      }\n\n      case _kinds.Kind.ENUM: {\n        const enumType = (0, _definition.getNamedType)(this.getInputType());\n        let enumValue;\n\n        if ((0, _definition.isEnumType)(enumType)) {\n          enumValue = enumType.getValue(node.value);\n        }\n\n        this._enumValue = enumValue;\n        break;\n      }\n\n      default: // Ignore other nodes\n    }\n  }\n\n  leave(node) {\n    switch (node.kind) {\n      case _kinds.Kind.SELECTION_SET:\n        this._parentTypeStack.pop();\n\n        break;\n\n      case _kinds.Kind.FIELD:\n        this._fieldDefStack.pop();\n\n        this._typeStack.pop();\n\n        break;\n\n      case _kinds.Kind.DIRECTIVE:\n        this._directive = null;\n        break;\n\n      case _kinds.Kind.OPERATION_DEFINITION:\n      case _kinds.Kind.INLINE_FRAGMENT:\n      case _kinds.Kind.FRAGMENT_DEFINITION:\n        this._typeStack.pop();\n\n        break;\n\n      case _kinds.Kind.VARIABLE_DEFINITION:\n        this._inputTypeStack.pop();\n\n        break;\n\n      case _kinds.Kind.ARGUMENT:\n        this._argument = null;\n\n        this._defaultValueStack.pop();\n\n        this._inputTypeStack.pop();\n\n        break;\n\n      case _kinds.Kind.LIST:\n      case _kinds.Kind.OBJECT_FIELD:\n        this._defaultValueStack.pop();\n\n        this._inputTypeStack.pop();\n\n        break;\n\n      case _kinds.Kind.ENUM:\n        this._enumValue = null;\n        break;\n\n      default: // Ignore other nodes\n    }\n  }\n}\n\nexports.TypeInfo = TypeInfo;\n\n/**\n * Not exactly the same as the executor's definition of getFieldDef, in this\n * statically evaluated environment we do not always have an Object type,\n * and need to handle Interface and Union types.\n */\nfunction getFieldDef(schema, parentType, fieldNode) {\n  const name = fieldNode.name.value;\n\n  if (\n    name === _introspection.SchemaMetaFieldDef.name &&\n    schema.getQueryType() === parentType\n  ) {\n    return _introspection.SchemaMetaFieldDef;\n  }\n\n  if (\n    name === _introspection.TypeMetaFieldDef.name &&\n    schema.getQueryType() === parentType\n  ) {\n    return _introspection.TypeMetaFieldDef;\n  }\n\n  if (\n    name === _introspection.TypeNameMetaFieldDef.name &&\n    (0, _definition.isCompositeType)(parentType)\n  ) {\n    return _introspection.TypeNameMetaFieldDef;\n  }\n\n  if (\n    (0, _definition.isObjectType)(parentType) ||\n    (0, _definition.isInterfaceType)(parentType)\n  ) {\n    return parentType.getFields()[name];\n  }\n}\n/**\n * Creates a new visitor instance which maintains a provided TypeInfo instance\n * along with visiting visitor.\n */\n\nfunction visitWithTypeInfo(typeInfo, visitor) {\n  return {\n    enter(...args) {\n      const node = args[0];\n      typeInfo.enter(node);\n      const fn = (0, _visitor.getEnterLeaveForKind)(visitor, node.kind).enter;\n\n      if (fn) {\n        const result = fn.apply(visitor, args);\n\n        if (result !== undefined) {\n          typeInfo.leave(node);\n\n          if ((0, _ast.isNode)(result)) {\n            typeInfo.enter(result);\n          }\n        }\n\n        return result;\n      }\n    },\n\n    leave(...args) {\n      const node = args[0];\n      const fn = (0, _visitor.getEnterLeaveForKind)(visitor, node.kind).leave;\n      let result;\n\n      if (fn) {\n        result = fn.apply(visitor, args);\n      }\n\n      typeInfo.leave(node);\n      return result;\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.isConstValueNode = isConstValueNode;\nexports.isDefinitionNode = isDefinitionNode;\nexports.isExecutableDefinitionNode = isExecutableDefinitionNode;\nexports.isSelectionNode = isSelectionNode;\nexports.isTypeDefinitionNode = isTypeDefinitionNode;\nexports.isTypeExtensionNode = isTypeExtensionNode;\nexports.isTypeNode = isTypeNode;\nexports.isTypeSystemDefinitionNode = isTypeSystemDefinitionNode;\nexports.isTypeSystemExtensionNode = isTypeSystemExtensionNode;\nexports.isValueNode = isValueNode;\n\nvar _kinds = require('./kinds.js');\n\nfunction isDefinitionNode(node) {\n  return (\n    isExecutableDefinitionNode(node) ||\n    isTypeSystemDefinitionNode(node) ||\n    isTypeSystemExtensionNode(node)\n  );\n}\n\nfunction isExecutableDefinitionNode(node) {\n  return (\n    node.kind === _kinds.Kind.OPERATION_DEFINITION ||\n    node.kind === _kinds.Kind.FRAGMENT_DEFINITION\n  );\n}\n\nfunction isSelectionNode(node) {\n  return (\n    node.kind === _kinds.Kind.FIELD ||\n    node.kind === _kinds.Kind.FRAGMENT_SPREAD ||\n    node.kind === _kinds.Kind.INLINE_FRAGMENT\n  );\n}\n\nfunction isValueNode(node) {\n  return (\n    node.kind === _kinds.Kind.VARIABLE ||\n    node.kind === _kinds.Kind.INT ||\n    node.kind === _kinds.Kind.FLOAT ||\n    node.kind === _kinds.Kind.STRING ||\n    node.kind === _kinds.Kind.BOOLEAN ||\n    node.kind === _kinds.Kind.NULL ||\n    node.kind === _kinds.Kind.ENUM ||\n    node.kind === _kinds.Kind.LIST ||\n    node.kind === _kinds.Kind.OBJECT\n  );\n}\n\nfunction isConstValueNode(node) {\n  return (\n    isValueNode(node) &&\n    (node.kind === _kinds.Kind.LIST\n      ? node.values.some(isConstValueNode)\n      : node.kind === _kinds.Kind.OBJECT\n      ? node.fields.some((field) => isConstValueNode(field.value))\n      : node.kind !== _kinds.Kind.VARIABLE)\n  );\n}\n\nfunction isTypeNode(node) {\n  return (\n    node.kind === _kinds.Kind.NAMED_TYPE ||\n    node.kind === _kinds.Kind.LIST_TYPE ||\n    node.kind === _kinds.Kind.NON_NULL_TYPE\n  );\n}\n\nfunction isTypeSystemDefinitionNode(node) {\n  return (\n    node.kind === _kinds.Kind.SCHEMA_DEFINITION ||\n    isTypeDefinitionNode(node) ||\n    node.kind === _kinds.Kind.DIRECTIVE_DEFINITION\n  );\n}\n\nfunction isTypeDefinitionNode(node) {\n  return (\n    node.kind === _kinds.Kind.SCALAR_TYPE_DEFINITION ||\n    node.kind === _kinds.Kind.OBJECT_TYPE_DEFINITION ||\n    node.kind === _kinds.Kind.INTERFACE_TYPE_DEFINITION ||\n    node.kind === _kinds.Kind.UNION_TYPE_DEFINITION ||\n    node.kind === _kinds.Kind.ENUM_TYPE_DEFINITION ||\n    node.kind === _kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION\n  );\n}\n\nfunction isTypeSystemExtensionNode(node) {\n  return (\n    node.kind === _kinds.Kind.SCHEMA_EXTENSION || isTypeExtensionNode(node)\n  );\n}\n\nfunction isTypeExtensionNode(node) {\n  return (\n    node.kind === _kinds.Kind.SCALAR_TYPE_EXTENSION ||\n    node.kind === _kinds.Kind.OBJECT_TYPE_EXTENSION ||\n    node.kind === _kinds.Kind.INTERFACE_TYPE_EXTENSION ||\n    node.kind === _kinds.Kind.UNION_TYPE_EXTENSION ||\n    node.kind === _kinds.Kind.ENUM_TYPE_EXTENSION ||\n    node.kind === _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION\n  );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.ExecutableDefinitionsRule = ExecutableDefinitionsRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _kinds = require('../../language/kinds.js');\n\nvar _predicates = require('../../language/predicates.js');\n\n/**\n * Executable definitions\n *\n * A GraphQL document is only valid for execution if all definitions are either\n * operation or fragment definitions.\n *\n * See https://spec.graphql.org/draft/#sec-Executable-Definitions\n */\nfunction ExecutableDefinitionsRule(context) {\n  return {\n    Document(node) {\n      for (const definition of node.definitions) {\n        if (!(0, _predicates.isExecutableDefinitionNode)(definition)) {\n          const defName =\n            definition.kind === _kinds.Kind.SCHEMA_DEFINITION ||\n            definition.kind === _kinds.Kind.SCHEMA_EXTENSION\n              ? 'schema'\n              : '\"' + definition.name.value + '\"';\n          context.reportError(\n            new _GraphQLError.GraphQLError(\n              `The ${defName} definition is not executable.`,\n              {\n                nodes: definition,\n              },\n            ),\n          );\n        }\n      }\n\n      return false;\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.FieldsOnCorrectTypeRule = FieldsOnCorrectTypeRule;\n\nvar _didYouMean = require('../../jsutils/didYouMean.js');\n\nvar _naturalCompare = require('../../jsutils/naturalCompare.js');\n\nvar _suggestionList = require('../../jsutils/suggestionList.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _definition = require('../../type/definition.js');\n\n/**\n * Fields on correct type\n *\n * A GraphQL document is only valid if all fields selected are defined by the\n * parent type, or are an allowed meta field such as __typename.\n *\n * See https://spec.graphql.org/draft/#sec-Field-Selections\n */\nfunction FieldsOnCorrectTypeRule(context) {\n  return {\n    Field(node) {\n      const type = context.getParentType();\n\n      if (type) {\n        const fieldDef = context.getFieldDef();\n\n        if (!fieldDef) {\n          // This field doesn't exist, lets look for suggestions.\n          const schema = context.getSchema();\n          const fieldName = node.name.value; // First determine if there are any suggested types to condition on.\n\n          let suggestion = (0, _didYouMean.didYouMean)(\n            'to use an inline fragment on',\n            getSuggestedTypeNames(schema, type, fieldName),\n          ); // If there are no suggested types, then perhaps this was a typo?\n\n          if (suggestion === '') {\n            suggestion = (0, _didYouMean.didYouMean)(\n              getSuggestedFieldNames(type, fieldName),\n            );\n          } // Report an error, including helpful suggestions.\n\n          context.reportError(\n            new _GraphQLError.GraphQLError(\n              `Cannot query field \"${fieldName}\" on type \"${type.name}\".` +\n                suggestion,\n              {\n                nodes: node,\n              },\n            ),\n          );\n        }\n      }\n    },\n  };\n}\n/**\n * Go through all of the implementations of type, as well as the interfaces that\n * they implement. If any of those types include the provided field, suggest them,\n * sorted by how often the type is referenced.\n */\n\nfunction getSuggestedTypeNames(schema, type, fieldName) {\n  if (!(0, _definition.isAbstractType)(type)) {\n    // Must be an Object type, which does not have possible fields.\n    return [];\n  }\n\n  const suggestedTypes = new Set();\n  const usageCount = Object.create(null);\n\n  for (const possibleType of schema.getPossibleTypes(type)) {\n    if (!possibleType.getFields()[fieldName]) {\n      continue;\n    } // This object type defines this field.\n\n    suggestedTypes.add(possibleType);\n    usageCount[possibleType.name] = 1;\n\n    for (const possibleInterface of possibleType.getInterfaces()) {\n      var _usageCount$possibleI;\n\n      if (!possibleInterface.getFields()[fieldName]) {\n        continue;\n      } // This interface type defines this field.\n\n      suggestedTypes.add(possibleInterface);\n      usageCount[possibleInterface.name] =\n        ((_usageCount$possibleI = usageCount[possibleInterface.name]) !==\n          null && _usageCount$possibleI !== void 0\n          ? _usageCount$possibleI\n          : 0) + 1;\n    }\n  }\n\n  return [...suggestedTypes]\n    .sort((typeA, typeB) => {\n      // Suggest both interface and object types based on how common they are.\n      const usageCountDiff = usageCount[typeB.name] - usageCount[typeA.name];\n\n      if (usageCountDiff !== 0) {\n        return usageCountDiff;\n      } // Suggest super types first followed by subtypes\n\n      if (\n        (0, _definition.isInterfaceType)(typeA) &&\n        schema.isSubType(typeA, typeB)\n      ) {\n        return -1;\n      }\n\n      if (\n        (0, _definition.isInterfaceType)(typeB) &&\n        schema.isSubType(typeB, typeA)\n      ) {\n        return 1;\n      }\n\n      return (0, _naturalCompare.naturalCompare)(typeA.name, typeB.name);\n    })\n    .map((x) => x.name);\n}\n/**\n * For the field name provided, determine if there are any similar field names\n * that may be the result of a typo.\n */\n\nfunction getSuggestedFieldNames(type, fieldName) {\n  if (\n    (0, _definition.isObjectType)(type) ||\n    (0, _definition.isInterfaceType)(type)\n  ) {\n    const possibleFieldNames = Object.keys(type.getFields());\n    return (0, _suggestionList.suggestionList)(fieldName, possibleFieldNames);\n  } // Otherwise, must be a Union type, which does not define fields.\n\n  return [];\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.FragmentsOnCompositeTypesRule = FragmentsOnCompositeTypesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _printer = require('../../language/printer.js');\n\nvar _definition = require('../../type/definition.js');\n\nvar _typeFromAST = require('../../utilities/typeFromAST.js');\n\n/**\n * Fragments on composite type\n *\n * Fragments use a type condition to determine if they apply, since fragments\n * can only be spread into a composite type (object, interface, or union), the\n * type condition must also be a composite type.\n *\n * See https://spec.graphql.org/draft/#sec-Fragments-On-Composite-Types\n */\nfunction FragmentsOnCompositeTypesRule(context) {\n  return {\n    InlineFragment(node) {\n      const typeCondition = node.typeCondition;\n\n      if (typeCondition) {\n        const type = (0, _typeFromAST.typeFromAST)(\n          context.getSchema(),\n          typeCondition,\n        );\n\n        if (type && !(0, _definition.isCompositeType)(type)) {\n          const typeStr = (0, _printer.print)(typeCondition);\n          context.reportError(\n            new _GraphQLError.GraphQLError(\n              `Fragment cannot condition on non composite type \"${typeStr}\".`,\n              {\n                nodes: typeCondition,\n              },\n            ),\n          );\n        }\n      }\n    },\n\n    FragmentDefinition(node) {\n      const type = (0, _typeFromAST.typeFromAST)(\n        context.getSchema(),\n        node.typeCondition,\n      );\n\n      if (type && !(0, _definition.isCompositeType)(type)) {\n        const typeStr = (0, _printer.print)(node.typeCondition);\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Fragment \"${node.name.value}\" cannot condition on non composite type \"${typeStr}\".`,\n            {\n              nodes: node.typeCondition,\n            },\n          ),\n        );\n      }\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.KnownArgumentNamesOnDirectivesRule = KnownArgumentNamesOnDirectivesRule;\nexports.KnownArgumentNamesRule = KnownArgumentNamesRule;\n\nvar _didYouMean = require('../../jsutils/didYouMean.js');\n\nvar _suggestionList = require('../../jsutils/suggestionList.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _kinds = require('../../language/kinds.js');\n\nvar _directives = require('../../type/directives.js');\n\n/**\n * Known argument names\n *\n * A GraphQL field is only valid if all supplied arguments are defined by\n * that field.\n *\n * See https://spec.graphql.org/draft/#sec-Argument-Names\n * See https://spec.graphql.org/draft/#sec-Directives-Are-In-Valid-Locations\n */\nfunction KnownArgumentNamesRule(context) {\n  return {\n    // eslint-disable-next-line new-cap\n    ...KnownArgumentNamesOnDirectivesRule(context),\n\n    Argument(argNode) {\n      const argDef = context.getArgument();\n      const fieldDef = context.getFieldDef();\n      const parentType = context.getParentType();\n\n      if (!argDef && fieldDef && parentType) {\n        const argName = argNode.name.value;\n        const knownArgsNames = fieldDef.args.map((arg) => arg.name);\n        const suggestions = (0, _suggestionList.suggestionList)(\n          argName,\n          knownArgsNames,\n        );\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Unknown argument \"${argName}\" on field \"${parentType.name}.${fieldDef.name}\".` +\n              (0, _didYouMean.didYouMean)(suggestions),\n            {\n              nodes: argNode,\n            },\n          ),\n        );\n      }\n    },\n  };\n}\n/**\n * @internal\n */\n\nfunction KnownArgumentNamesOnDirectivesRule(context) {\n  const directiveArgs = Object.create(null);\n  const schema = context.getSchema();\n  const definedDirectives = schema\n    ? schema.getDirectives()\n    : _directives.specifiedDirectives;\n\n  for (const directive of definedDirectives) {\n    directiveArgs[directive.name] = directive.args.map((arg) => arg.name);\n  }\n\n  const astDefinitions = context.getDocument().definitions;\n\n  for (const def of astDefinitions) {\n    if (def.kind === _kinds.Kind.DIRECTIVE_DEFINITION) {\n      var _def$arguments;\n\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n      /* c8 ignore next */\n      const argsNodes =\n        (_def$arguments = def.arguments) !== null && _def$arguments !== void 0\n          ? _def$arguments\n          : [];\n      directiveArgs[def.name.value] = argsNodes.map((arg) => arg.name.value);\n    }\n  }\n\n  return {\n    Directive(directiveNode) {\n      const directiveName = directiveNode.name.value;\n      const knownArgs = directiveArgs[directiveName];\n\n      if (directiveNode.arguments && knownArgs) {\n        for (const argNode of directiveNode.arguments) {\n          const argName = argNode.name.value;\n\n          if (!knownArgs.includes(argName)) {\n            const suggestions = (0, _suggestionList.suggestionList)(\n              argName,\n              knownArgs,\n            );\n            context.reportError(\n              new _GraphQLError.GraphQLError(\n                `Unknown argument \"${argName}\" on directive \"@${directiveName}\".` +\n                  (0, _didYouMean.didYouMean)(suggestions),\n                {\n                  nodes: argNode,\n                },\n              ),\n            );\n          }\n        }\n      }\n\n      return false;\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.KnownDirectivesRule = KnownDirectivesRule;\n\nvar _inspect = require('../../jsutils/inspect.js');\n\nvar _invariant = require('../../jsutils/invariant.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _ast = require('../../language/ast.js');\n\nvar _directiveLocation = require('../../language/directiveLocation.js');\n\nvar _kinds = require('../../language/kinds.js');\n\nvar _directives = require('../../type/directives.js');\n\n/**\n * Known directives\n *\n * A GraphQL document is only valid if all `@directives` are known by the\n * schema and legally positioned.\n *\n * See https://spec.graphql.org/draft/#sec-Directives-Are-Defined\n */\nfunction KnownDirectivesRule(context) {\n  const locationsMap = Object.create(null);\n  const schema = context.getSchema();\n  const definedDirectives = schema\n    ? schema.getDirectives()\n    : _directives.specifiedDirectives;\n\n  for (const directive of definedDirectives) {\n    locationsMap[directive.name] = directive.locations;\n  }\n\n  const astDefinitions = context.getDocument().definitions;\n\n  for (const def of astDefinitions) {\n    if (def.kind === _kinds.Kind.DIRECTIVE_DEFINITION) {\n      locationsMap[def.name.value] = def.locations.map((name) => name.value);\n    }\n  }\n\n  return {\n    Directive(node, _key, _parent, _path, ancestors) {\n      const name = node.name.value;\n      const locations = locationsMap[name];\n\n      if (!locations) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(`Unknown directive \"@${name}\".`, {\n            nodes: node,\n          }),\n        );\n        return;\n      }\n\n      const candidateLocation = getDirectiveLocationForASTPath(ancestors);\n\n      if (candidateLocation && !locations.includes(candidateLocation)) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Directive \"@${name}\" may not be used on ${candidateLocation}.`,\n            {\n              nodes: node,\n            },\n          ),\n        );\n      }\n    },\n  };\n}\n\nfunction getDirectiveLocationForASTPath(ancestors) {\n  const appliedTo = ancestors[ancestors.length - 1];\n  'kind' in appliedTo || (0, _invariant.invariant)(false);\n\n  switch (appliedTo.kind) {\n    case _kinds.Kind.OPERATION_DEFINITION:\n      return getDirectiveLocationForOperation(appliedTo.operation);\n\n    case _kinds.Kind.FIELD:\n      return _directiveLocation.DirectiveLocation.FIELD;\n\n    case _kinds.Kind.FRAGMENT_SPREAD:\n      return _directiveLocation.DirectiveLocation.FRAGMENT_SPREAD;\n\n    case _kinds.Kind.INLINE_FRAGMENT:\n      return _directiveLocation.DirectiveLocation.INLINE_FRAGMENT;\n\n    case _kinds.Kind.FRAGMENT_DEFINITION:\n      return _directiveLocation.DirectiveLocation.FRAGMENT_DEFINITION;\n\n    case _kinds.Kind.VARIABLE_DEFINITION:\n      return _directiveLocation.DirectiveLocation.VARIABLE_DEFINITION;\n\n    case _kinds.Kind.SCHEMA_DEFINITION:\n    case _kinds.Kind.SCHEMA_EXTENSION:\n      return _directiveLocation.DirectiveLocation.SCHEMA;\n\n    case _kinds.Kind.SCALAR_TYPE_DEFINITION:\n    case _kinds.Kind.SCALAR_TYPE_EXTENSION:\n      return _directiveLocation.DirectiveLocation.SCALAR;\n\n    case _kinds.Kind.OBJECT_TYPE_DEFINITION:\n    case _kinds.Kind.OBJECT_TYPE_EXTENSION:\n      return _directiveLocation.DirectiveLocation.OBJECT;\n\n    case _kinds.Kind.FIELD_DEFINITION:\n      return _directiveLocation.DirectiveLocation.FIELD_DEFINITION;\n\n    case _kinds.Kind.INTERFACE_TYPE_DEFINITION:\n    case _kinds.Kind.INTERFACE_TYPE_EXTENSION:\n      return _directiveLocation.DirectiveLocation.INTERFACE;\n\n    case _kinds.Kind.UNION_TYPE_DEFINITION:\n    case _kinds.Kind.UNION_TYPE_EXTENSION:\n      return _directiveLocation.DirectiveLocation.UNION;\n\n    case _kinds.Kind.ENUM_TYPE_DEFINITION:\n    case _kinds.Kind.ENUM_TYPE_EXTENSION:\n      return _directiveLocation.DirectiveLocation.ENUM;\n\n    case _kinds.Kind.ENUM_VALUE_DEFINITION:\n      return _directiveLocation.DirectiveLocation.ENUM_VALUE;\n\n    case _kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION:\n    case _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION:\n      return _directiveLocation.DirectiveLocation.INPUT_OBJECT;\n\n    case _kinds.Kind.INPUT_VALUE_DEFINITION: {\n      const parentNode = ancestors[ancestors.length - 3];\n      'kind' in parentNode || (0, _invariant.invariant)(false);\n      return parentNode.kind === _kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION\n        ? _directiveLocation.DirectiveLocation.INPUT_FIELD_DEFINITION\n        : _directiveLocation.DirectiveLocation.ARGUMENT_DEFINITION;\n    }\n    // Not reachable, all possible types have been considered.\n\n    /* c8 ignore next */\n\n    default:\n      false ||\n        (0, _invariant.invariant)(\n          false,\n          'Unexpected kind: ' + (0, _inspect.inspect)(appliedTo.kind),\n        );\n  }\n}\n\nfunction getDirectiveLocationForOperation(operation) {\n  switch (operation) {\n    case _ast.OperationTypeNode.QUERY:\n      return _directiveLocation.DirectiveLocation.QUERY;\n\n    case _ast.OperationTypeNode.MUTATION:\n      return _directiveLocation.DirectiveLocation.MUTATION;\n\n    case _ast.OperationTypeNode.SUBSCRIPTION:\n      return _directiveLocation.DirectiveLocation.SUBSCRIPTION;\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.KnownFragmentNamesRule = KnownFragmentNamesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Known fragment names\n *\n * A GraphQL document is only valid if all `...Fragment` fragment spreads refer\n * to fragments defined in the same document.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-spread-target-defined\n */\nfunction KnownFragmentNamesRule(context) {\n  return {\n    FragmentSpread(node) {\n      const fragmentName = node.name.value;\n      const fragment = context.getFragment(fragmentName);\n\n      if (!fragment) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Unknown fragment \"${fragmentName}\".`,\n            {\n              nodes: node.name,\n            },\n          ),\n        );\n      }\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.KnownTypeNamesRule = KnownTypeNamesRule;\n\nvar _didYouMean = require('../../jsutils/didYouMean.js');\n\nvar _suggestionList = require('../../jsutils/suggestionList.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _predicates = require('../../language/predicates.js');\n\nvar _introspection = require('../../type/introspection.js');\n\nvar _scalars = require('../../type/scalars.js');\n\n/**\n * Known type names\n *\n * A GraphQL document is only valid if referenced types (specifically\n * variable definitions and fragment conditions) are defined by the type schema.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-Spread-Type-Existence\n */\nfunction KnownTypeNamesRule(context) {\n  const schema = context.getSchema();\n  const existingTypesMap = schema ? schema.getTypeMap() : Object.create(null);\n  const definedTypes = Object.create(null);\n\n  for (const def of context.getDocument().definitions) {\n    if ((0, _predicates.isTypeDefinitionNode)(def)) {\n      definedTypes[def.name.value] = true;\n    }\n  }\n\n  const typeNames = [\n    ...Object.keys(existingTypesMap),\n    ...Object.keys(definedTypes),\n  ];\n  return {\n    NamedType(node, _1, parent, _2, ancestors) {\n      const typeName = node.name.value;\n\n      if (!existingTypesMap[typeName] && !definedTypes[typeName]) {\n        var _ancestors$;\n\n        const definitionNode =\n          (_ancestors$ = ancestors[2]) !== null && _ancestors$ !== void 0\n            ? _ancestors$\n            : parent;\n        const isSDL = definitionNode != null && isSDLNode(definitionNode);\n\n        if (isSDL && standardTypeNames.includes(typeName)) {\n          return;\n        }\n\n        const suggestedTypes = (0, _suggestionList.suggestionList)(\n          typeName,\n          isSDL ? standardTypeNames.concat(typeNames) : typeNames,\n        );\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Unknown type \"${typeName}\".` +\n              (0, _didYouMean.didYouMean)(suggestedTypes),\n            {\n              nodes: node,\n            },\n          ),\n        );\n      }\n    },\n  };\n}\n\nconst standardTypeNames = [\n  ..._scalars.specifiedScalarTypes,\n  ..._introspection.introspectionTypes,\n].map((type) => type.name);\n\nfunction isSDLNode(value) {\n  return (\n    'kind' in value &&\n    ((0, _predicates.isTypeSystemDefinitionNode)(value) ||\n      (0, _predicates.isTypeSystemExtensionNode)(value))\n  );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.LoneAnonymousOperationRule = LoneAnonymousOperationRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _kinds = require('../../language/kinds.js');\n\n/**\n * Lone anonymous operation\n *\n * A GraphQL document is only valid if when it contains an anonymous operation\n * (the query short-hand) that it contains only that one operation definition.\n *\n * See https://spec.graphql.org/draft/#sec-Lone-Anonymous-Operation\n */\nfunction LoneAnonymousOperationRule(context) {\n  let operationCount = 0;\n  return {\n    Document(node) {\n      operationCount = node.definitions.filter(\n        (definition) => definition.kind === _kinds.Kind.OPERATION_DEFINITION,\n      ).length;\n    },\n\n    OperationDefinition(node) {\n      if (!node.name && operationCount > 1) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            'This anonymous operation must be the only defined operation.',\n            {\n              nodes: node,\n            },\n          ),\n        );\n      }\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.LoneSchemaDefinitionRule = LoneSchemaDefinitionRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Lone Schema definition\n *\n * A GraphQL document is only valid if it contains only one schema definition.\n */\nfunction LoneSchemaDefinitionRule(context) {\n  var _ref, _ref2, _oldSchema$astNode;\n\n  const oldSchema = context.getSchema();\n  const alreadyDefined =\n    (_ref =\n      (_ref2 =\n        (_oldSchema$astNode =\n          oldSchema === null || oldSchema === void 0\n            ? void 0\n            : oldSchema.astNode) !== null && _oldSchema$astNode !== void 0\n          ? _oldSchema$astNode\n          : oldSchema === null || oldSchema === void 0\n          ? void 0\n          : oldSchema.getQueryType()) !== null && _ref2 !== void 0\n        ? _ref2\n        : oldSchema === null || oldSchema === void 0\n        ? void 0\n        : oldSchema.getMutationType()) !== null && _ref !== void 0\n      ? _ref\n      : oldSchema === null || oldSchema === void 0\n      ? void 0\n      : oldSchema.getSubscriptionType();\n  let schemaDefinitionsCount = 0;\n  return {\n    SchemaDefinition(node) {\n      if (alreadyDefined) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            'Cannot define a new schema within a schema extension.',\n            {\n              nodes: node,\n            },\n          ),\n        );\n        return;\n      }\n\n      if (schemaDefinitionsCount > 0) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            'Must provide only one schema definition.',\n            {\n              nodes: node,\n            },\n          ),\n        );\n      }\n\n      ++schemaDefinitionsCount;\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.NoFragmentCyclesRule = NoFragmentCyclesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * No fragment cycles\n *\n * The graph of fragment spreads must not form any cycles including spreading itself.\n * Otherwise an operation could infinitely spread or infinitely execute on cycles in the underlying data.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-spreads-must-not-form-cycles\n */\nfunction NoFragmentCyclesRule(context) {\n  // Tracks already visited fragments to maintain O(N) and to ensure that cycles\n  // are not redundantly reported.\n  const visitedFrags = Object.create(null); // Array of AST nodes used to produce meaningful errors\n\n  const spreadPath = []; // Position in the spread path\n\n  const spreadPathIndexByName = Object.create(null);\n  return {\n    OperationDefinition: () => false,\n\n    FragmentDefinition(node) {\n      detectCycleRecursive(node);\n      return false;\n    },\n  }; // This does a straight-forward DFS to find cycles.\n  // It does not terminate when a cycle was found but continues to explore\n  // the graph to find all possible cycles.\n\n  function detectCycleRecursive(fragment) {\n    if (visitedFrags[fragment.name.value]) {\n      return;\n    }\n\n    const fragmentName = fragment.name.value;\n    visitedFrags[fragmentName] = true;\n    const spreadNodes = context.getFragmentSpreads(fragment.selectionSet);\n\n    if (spreadNodes.length === 0) {\n      return;\n    }\n\n    spreadPathIndexByName[fragmentName] = spreadPath.length;\n\n    for (const spreadNode of spreadNodes) {\n      const spreadName = spreadNode.name.value;\n      const cycleIndex = spreadPathIndexByName[spreadName];\n      spreadPath.push(spreadNode);\n\n      if (cycleIndex === undefined) {\n        const spreadFragment = context.getFragment(spreadName);\n\n        if (spreadFragment) {\n          detectCycleRecursive(spreadFragment);\n        }\n      } else {\n        const cyclePath = spreadPath.slice(cycleIndex);\n        const viaPath = cyclePath\n          .slice(0, -1)\n          .map((s) => '\"' + s.name.value + '\"')\n          .join(', ');\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Cannot spread fragment \"${spreadName}\" within itself` +\n              (viaPath !== '' ? ` via ${viaPath}.` : '.'),\n            {\n              nodes: cyclePath,\n            },\n          ),\n        );\n      }\n\n      spreadPath.pop();\n    }\n\n    spreadPathIndexByName[fragmentName] = undefined;\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.NoUndefinedVariablesRule = NoUndefinedVariablesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * No undefined variables\n *\n * A GraphQL operation is only valid if all variables encountered, both directly\n * and via fragment spreads, are defined by that operation.\n *\n * See https://spec.graphql.org/draft/#sec-All-Variable-Uses-Defined\n */\nfunction NoUndefinedVariablesRule(context) {\n  let variableNameDefined = Object.create(null);\n  return {\n    OperationDefinition: {\n      enter() {\n        variableNameDefined = Object.create(null);\n      },\n\n      leave(operation) {\n        const usages = context.getRecursiveVariableUsages(operation);\n\n        for (const { node } of usages) {\n          const varName = node.name.value;\n\n          if (variableNameDefined[varName] !== true) {\n            context.reportError(\n              new _GraphQLError.GraphQLError(\n                operation.name\n                  ? `Variable \"$${varName}\" is not defined by operation \"${operation.name.value}\".`\n                  : `Variable \"$${varName}\" is not defined.`,\n                {\n                  nodes: [node, operation],\n                },\n              ),\n            );\n          }\n        }\n      },\n    },\n\n    VariableDefinition(node) {\n      variableNameDefined[node.variable.name.value] = true;\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.NoUnusedFragmentsRule = NoUnusedFragmentsRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * No unused fragments\n *\n * A GraphQL document is only valid if all fragment definitions are spread\n * within operations, or spread within other fragments spread within operations.\n *\n * See https://spec.graphql.org/draft/#sec-Fragments-Must-Be-Used\n */\nfunction NoUnusedFragmentsRule(context) {\n  const operationDefs = [];\n  const fragmentDefs = [];\n  return {\n    OperationDefinition(node) {\n      operationDefs.push(node);\n      return false;\n    },\n\n    FragmentDefinition(node) {\n      fragmentDefs.push(node);\n      return false;\n    },\n\n    Document: {\n      leave() {\n        const fragmentNameUsed = Object.create(null);\n\n        for (const operation of operationDefs) {\n          for (const fragment of context.getRecursivelyReferencedFragments(\n            operation,\n          )) {\n            fragmentNameUsed[fragment.name.value] = true;\n          }\n        }\n\n        for (const fragmentDef of fragmentDefs) {\n          const fragName = fragmentDef.name.value;\n\n          if (fragmentNameUsed[fragName] !== true) {\n            context.reportError(\n              new _GraphQLError.GraphQLError(\n                `Fragment \"${fragName}\" is never used.`,\n                {\n                  nodes: fragmentDef,\n                },\n              ),\n            );\n          }\n        }\n      },\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.NoUnusedVariablesRule = NoUnusedVariablesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * No unused variables\n *\n * A GraphQL operation is only valid if all variables defined by an operation\n * are used, either directly or within a spread fragment.\n *\n * See https://spec.graphql.org/draft/#sec-All-Variables-Used\n */\nfunction NoUnusedVariablesRule(context) {\n  let variableDefs = [];\n  return {\n    OperationDefinition: {\n      enter() {\n        variableDefs = [];\n      },\n\n      leave(operation) {\n        const variableNameUsed = Object.create(null);\n        const usages = context.getRecursiveVariableUsages(operation);\n\n        for (const { node } of usages) {\n          variableNameUsed[node.name.value] = true;\n        }\n\n        for (const variableDef of variableDefs) {\n          const variableName = variableDef.variable.name.value;\n\n          if (variableNameUsed[variableName] !== true) {\n            context.reportError(\n              new _GraphQLError.GraphQLError(\n                operation.name\n                  ? `Variable \"$${variableName}\" is never used in operation \"${operation.name.value}\".`\n                  : `Variable \"$${variableName}\" is never used.`,\n                {\n                  nodes: variableDef,\n                },\n              ),\n            );\n          }\n        }\n      },\n    },\n\n    VariableDefinition(def) {\n      variableDefs.push(def);\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.sortValueNode = sortValueNode;\n\nvar _naturalCompare = require('../jsutils/naturalCompare.js');\n\nvar _kinds = require('../language/kinds.js');\n\n/**\n * Sort ValueNode.\n *\n * This function returns a sorted copy of the given ValueNode.\n *\n * @internal\n */\nfunction sortValueNode(valueNode) {\n  switch (valueNode.kind) {\n    case _kinds.Kind.OBJECT:\n      return { ...valueNode, fields: sortFields(valueNode.fields) };\n\n    case _kinds.Kind.LIST:\n      return { ...valueNode, values: valueNode.values.map(sortValueNode) };\n\n    case _kinds.Kind.INT:\n    case _kinds.Kind.FLOAT:\n    case _kinds.Kind.STRING:\n    case _kinds.Kind.BOOLEAN:\n    case _kinds.Kind.NULL:\n    case _kinds.Kind.ENUM:\n    case _kinds.Kind.VARIABLE:\n      return valueNode;\n  }\n}\n\nfunction sortFields(fields) {\n  return fields\n    .map((fieldNode) => ({\n      ...fieldNode,\n      value: sortValueNode(fieldNode.value),\n    }))\n    .sort((fieldA, fieldB) =>\n      (0, _naturalCompare.naturalCompare)(fieldA.name.value, fieldB.name.value),\n    );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.OverlappingFieldsCanBeMergedRule = OverlappingFieldsCanBeMergedRule;\n\nvar _inspect = require('../../jsutils/inspect.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _kinds = require('../../language/kinds.js');\n\nvar _printer = require('../../language/printer.js');\n\nvar _definition = require('../../type/definition.js');\n\nvar _sortValueNode = require('../../utilities/sortValueNode.js');\n\nvar _typeFromAST = require('../../utilities/typeFromAST.js');\n\nfunction reasonMessage(reason) {\n  if (Array.isArray(reason)) {\n    return reason\n      .map(\n        ([responseName, subReason]) =>\n          `subfields \"${responseName}\" conflict because ` +\n          reasonMessage(subReason),\n      )\n      .join(' and ');\n  }\n\n  return reason;\n}\n/**\n * Overlapping fields can be merged\n *\n * A selection set is only valid if all fields (including spreading any\n * fragments) either correspond to distinct response names or can be merged\n * without ambiguity.\n *\n * See https://spec.graphql.org/draft/#sec-Field-Selection-Merging\n */\n\nfunction OverlappingFieldsCanBeMergedRule(context) {\n  // A memoization for when two fragments are compared \"between\" each other for\n  // conflicts. Two fragments may be compared many times, so memoizing this can\n  // dramatically improve the performance of this validator.\n  const comparedFragmentPairs = new PairSet(); // A cache for the \"field map\" and list of fragment names found in any given\n  // selection set. Selection sets may be asked for this information multiple\n  // times, so this improves the performance of this validator.\n\n  const cachedFieldsAndFragmentNames = new Map();\n  return {\n    SelectionSet(selectionSet) {\n      const conflicts = findConflictsWithinSelectionSet(\n        context,\n        cachedFieldsAndFragmentNames,\n        comparedFragmentPairs,\n        context.getParentType(),\n        selectionSet,\n      );\n\n      for (const [[responseName, reason], fields1, fields2] of conflicts) {\n        const reasonMsg = reasonMessage(reason);\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Fields \"${responseName}\" conflict because ${reasonMsg}. Use different aliases on the fields to fetch both if this was intentional.`,\n            {\n              nodes: fields1.concat(fields2),\n            },\n          ),\n        );\n      }\n    },\n  };\n}\n\n/**\n * Algorithm:\n *\n * Conflicts occur when two fields exist in a query which will produce the same\n * response name, but represent differing values, thus creating a conflict.\n * The algorithm below finds all conflicts via making a series of comparisons\n * between fields. In order to compare as few fields as possible, this makes\n * a series of comparisons \"within\" sets of fields and \"between\" sets of fields.\n *\n * Given any selection set, a collection produces both a set of fields by\n * also including all inline fragments, as well as a list of fragments\n * referenced by fragment spreads.\n *\n * A) Each selection set represented in the document first compares \"within\" its\n * collected set of fields, finding any conflicts between every pair of\n * overlapping fields.\n * Note: This is the *only time* that a the fields \"within\" a set are compared\n * to each other. After this only fields \"between\" sets are compared.\n *\n * B) Also, if any fragment is referenced in a selection set, then a\n * comparison is made \"between\" the original set of fields and the\n * referenced fragment.\n *\n * C) Also, if multiple fragments are referenced, then comparisons\n * are made \"between\" each referenced fragment.\n *\n * D) When comparing \"between\" a set of fields and a referenced fragment, first\n * a comparison is made between each field in the original set of fields and\n * each field in the the referenced set of fields.\n *\n * E) Also, if any fragment is referenced in the referenced selection set,\n * then a comparison is made \"between\" the original set of fields and the\n * referenced fragment (recursively referring to step D).\n *\n * F) When comparing \"between\" two fragments, first a comparison is made between\n * each field in the first referenced set of fields and each field in the the\n * second referenced set of fields.\n *\n * G) Also, any fragments referenced by the first must be compared to the\n * second, and any fragments referenced by the second must be compared to the\n * first (recursively referring to step F).\n *\n * H) When comparing two fields, if both have selection sets, then a comparison\n * is made \"between\" both selection sets, first comparing the set of fields in\n * the first selection set with the set of fields in the second.\n *\n * I) Also, if any fragment is referenced in either selection set, then a\n * comparison is made \"between\" the other set of fields and the\n * referenced fragment.\n *\n * J) Also, if two fragments are referenced in both selection sets, then a\n * comparison is made \"between\" the two fragments.\n *\n */\n// Find all conflicts found \"within\" a selection set, including those found\n// via spreading in fragments. Called when visiting each SelectionSet in the\n// GraphQL Document.\nfunction findConflictsWithinSelectionSet(\n  context,\n  cachedFieldsAndFragmentNames,\n  comparedFragmentPairs,\n  parentType,\n  selectionSet,\n) {\n  const conflicts = [];\n  const [fieldMap, fragmentNames] = getFieldsAndFragmentNames(\n    context,\n    cachedFieldsAndFragmentNames,\n    parentType,\n    selectionSet,\n  ); // (A) Find find all conflicts \"within\" the fields of this selection set.\n  // Note: this is the *only place* `collectConflictsWithin` is called.\n\n  collectConflictsWithin(\n    context,\n    conflicts,\n    cachedFieldsAndFragmentNames,\n    comparedFragmentPairs,\n    fieldMap,\n  );\n\n  if (fragmentNames.length !== 0) {\n    // (B) Then collect conflicts between these fields and those represented by\n    // each spread fragment name found.\n    for (let i = 0; i < fragmentNames.length; i++) {\n      collectConflictsBetweenFieldsAndFragment(\n        context,\n        conflicts,\n        cachedFieldsAndFragmentNames,\n        comparedFragmentPairs,\n        false,\n        fieldMap,\n        fragmentNames[i],\n      ); // (C) Then compare this fragment with all other fragments found in this\n      // selection set to collect conflicts between fragments spread together.\n      // This compares each item in the list of fragment names to every other\n      // item in that same list (except for itself).\n\n      for (let j = i + 1; j < fragmentNames.length; j++) {\n        collectConflictsBetweenFragments(\n          context,\n          conflicts,\n          cachedFieldsAndFragmentNames,\n          comparedFragmentPairs,\n          false,\n          fragmentNames[i],\n          fragmentNames[j],\n        );\n      }\n    }\n  }\n\n  return conflicts;\n} // Collect all conflicts found between a set of fields and a fragment reference\n// including via spreading in any nested fragments.\n\nfunction collectConflictsBetweenFieldsAndFragment(\n  context,\n  conflicts,\n  cachedFieldsAndFragmentNames,\n  comparedFragmentPairs,\n  areMutuallyExclusive,\n  fieldMap,\n  fragmentName,\n) {\n  const fragment = context.getFragment(fragmentName);\n\n  if (!fragment) {\n    return;\n  }\n\n  const [fieldMap2, referencedFragmentNames] =\n    getReferencedFieldsAndFragmentNames(\n      context,\n      cachedFieldsAndFragmentNames,\n      fragment,\n    ); // Do not compare a fragment's fieldMap to itself.\n\n  if (fieldMap === fieldMap2) {\n    return;\n  } // (D) First collect any conflicts between the provided collection of fields\n  // and the collection of fields represented by the given fragment.\n\n  collectConflictsBetween(\n    context,\n    conflicts,\n    cachedFieldsAndFragmentNames,\n    comparedFragmentPairs,\n    areMutuallyExclusive,\n    fieldMap,\n    fieldMap2,\n  ); // (E) Then collect any conflicts between the provided collection of fields\n  // and any fragment names found in the given fragment.\n\n  for (const referencedFragmentName of referencedFragmentNames) {\n    // Memoize so two fragments are not compared for conflicts more than once.\n    if (\n      comparedFragmentPairs.has(\n        referencedFragmentName,\n        fragmentName,\n        areMutuallyExclusive,\n      )\n    ) {\n      continue;\n    }\n\n    comparedFragmentPairs.add(\n      referencedFragmentName,\n      fragmentName,\n      areMutuallyExclusive,\n    );\n    collectConflictsBetweenFieldsAndFragment(\n      context,\n      conflicts,\n      cachedFieldsAndFragmentNames,\n      comparedFragmentPairs,\n      areMutuallyExclusive,\n      fieldMap,\n      referencedFragmentName,\n    );\n  }\n} // Collect all conflicts found between two fragments, including via spreading in\n// any nested fragments.\n\nfunction collectConflictsBetweenFragments(\n  context,\n  conflicts,\n  cachedFieldsAndFragmentNames,\n  comparedFragmentPairs,\n  areMutuallyExclusive,\n  fragmentName1,\n  fragmentName2,\n) {\n  // No need to compare a fragment to itself.\n  if (fragmentName1 === fragmentName2) {\n    return;\n  } // Memoize so two fragments are not compared for conflicts more than once.\n\n  if (\n    comparedFragmentPairs.has(\n      fragmentName1,\n      fragmentName2,\n      areMutuallyExclusive,\n    )\n  ) {\n    return;\n  }\n\n  comparedFragmentPairs.add(fragmentName1, fragmentName2, areMutuallyExclusive);\n  const fragment1 = context.getFragment(fragmentName1);\n  const fragment2 = context.getFragment(fragmentName2);\n\n  if (!fragment1 || !fragment2) {\n    return;\n  }\n\n  const [fieldMap1, referencedFragmentNames1] =\n    getReferencedFieldsAndFragmentNames(\n      context,\n      cachedFieldsAndFragmentNames,\n      fragment1,\n    );\n  const [fieldMap2, referencedFragmentNames2] =\n    getReferencedFieldsAndFragmentNames(\n      context,\n      cachedFieldsAndFragmentNames,\n      fragment2,\n    ); // (F) First, collect all conflicts between these two collections of fields\n  // (not including any nested fragments).\n\n  collectConflictsBetween(\n    context,\n    conflicts,\n    cachedFieldsAndFragmentNames,\n    comparedFragmentPairs,\n    areMutuallyExclusive,\n    fieldMap1,\n    fieldMap2,\n  ); // (G) Then collect conflicts between the first fragment and any nested\n  // fragments spread in the second fragment.\n\n  for (const referencedFragmentName2 of referencedFragmentNames2) {\n    collectConflictsBetweenFragments(\n      context,\n      conflicts,\n      cachedFieldsAndFragmentNames,\n      comparedFragmentPairs,\n      areMutuallyExclusive,\n      fragmentName1,\n      referencedFragmentName2,\n    );\n  } // (G) Then collect conflicts between the second fragment and any nested\n  // fragments spread in the first fragment.\n\n  for (const referencedFragmentName1 of referencedFragmentNames1) {\n    collectConflictsBetweenFragments(\n      context,\n      conflicts,\n      cachedFieldsAndFragmentNames,\n      comparedFragmentPairs,\n      areMutuallyExclusive,\n      referencedFragmentName1,\n      fragmentName2,\n    );\n  }\n} // Find all conflicts found between two selection sets, including those found\n// via spreading in fragments. Called when determining if conflicts exist\n// between the sub-fields of two overlapping fields.\n\nfunction findConflictsBetweenSubSelectionSets(\n  context,\n  cachedFieldsAndFragmentNames,\n  comparedFragmentPairs,\n  areMutuallyExclusive,\n  parentType1,\n  selectionSet1,\n  parentType2,\n  selectionSet2,\n) {\n  const conflicts = [];\n  const [fieldMap1, fragmentNames1] = getFieldsAndFragmentNames(\n    context,\n    cachedFieldsAndFragmentNames,\n    parentType1,\n    selectionSet1,\n  );\n  const [fieldMap2, fragmentNames2] = getFieldsAndFragmentNames(\n    context,\n    cachedFieldsAndFragmentNames,\n    parentType2,\n    selectionSet2,\n  ); // (H) First, collect all conflicts between these two collections of field.\n\n  collectConflictsBetween(\n    context,\n    conflicts,\n    cachedFieldsAndFragmentNames,\n    comparedFragmentPairs,\n    areMutuallyExclusive,\n    fieldMap1,\n    fieldMap2,\n  ); // (I) Then collect conflicts between the first collection of fields and\n  // those referenced by each fragment name associated with the second.\n\n  for (const fragmentName2 of fragmentNames2) {\n    collectConflictsBetweenFieldsAndFragment(\n      context,\n      conflicts,\n      cachedFieldsAndFragmentNames,\n      comparedFragmentPairs,\n      areMutuallyExclusive,\n      fieldMap1,\n      fragmentName2,\n    );\n  } // (I) Then collect conflicts between the second collection of fields and\n  // those referenced by each fragment name associated with the first.\n\n  for (const fragmentName1 of fragmentNames1) {\n    collectConflictsBetweenFieldsAndFragment(\n      context,\n      conflicts,\n      cachedFieldsAndFragmentNames,\n      comparedFragmentPairs,\n      areMutuallyExclusive,\n      fieldMap2,\n      fragmentName1,\n    );\n  } // (J) Also collect conflicts between any fragment names by the first and\n  // fragment names by the second. This compares each item in the first set of\n  // names to each item in the second set of names.\n\n  for (const fragmentName1 of fragmentNames1) {\n    for (const fragmentName2 of fragmentNames2) {\n      collectConflictsBetweenFragments(\n        context,\n        conflicts,\n        cachedFieldsAndFragmentNames,\n        comparedFragmentPairs,\n        areMutuallyExclusive,\n        fragmentName1,\n        fragmentName2,\n      );\n    }\n  }\n\n  return conflicts;\n} // Collect all Conflicts \"within\" one collection of fields.\n\nfunction collectConflictsWithin(\n  context,\n  conflicts,\n  cachedFieldsAndFragmentNames,\n  comparedFragmentPairs,\n  fieldMap,\n) {\n  // A field map is a keyed collection, where each key represents a response\n  // name and the value at that key is a list of all fields which provide that\n  // response name. For every response name, if there are multiple fields, they\n  // must be compared to find a potential conflict.\n  for (const [responseName, fields] of Object.entries(fieldMap)) {\n    // This compares every field in the list to every other field in this list\n    // (except to itself). If the list only has one item, nothing needs to\n    // be compared.\n    if (fields.length > 1) {\n      for (let i = 0; i < fields.length; i++) {\n        for (let j = i + 1; j < fields.length; j++) {\n          const conflict = findConflict(\n            context,\n            cachedFieldsAndFragmentNames,\n            comparedFragmentPairs,\n            false, // within one collection is never mutually exclusive\n            responseName,\n            fields[i],\n            fields[j],\n          );\n\n          if (conflict) {\n            conflicts.push(conflict);\n          }\n        }\n      }\n    }\n  }\n} // Collect all Conflicts between two collections of fields. This is similar to,\n// but different from the `collectConflictsWithin` function above. This check\n// assumes that `collectConflictsWithin` has already been called on each\n// provided collection of fields. This is true because this validator traverses\n// each individual selection set.\n\nfunction collectConflictsBetween(\n  context,\n  conflicts,\n  cachedFieldsAndFragmentNames,\n  comparedFragmentPairs,\n  parentFieldsAreMutuallyExclusive,\n  fieldMap1,\n  fieldMap2,\n) {\n  // A field map is a keyed collection, where each key represents a response\n  // name and the value at that key is a list of all fields which provide that\n  // response name. For any response name which appears in both provided field\n  // maps, each field from the first field map must be compared to every field\n  // in the second field map to find potential conflicts.\n  for (const [responseName, fields1] of Object.entries(fieldMap1)) {\n    const fields2 = fieldMap2[responseName];\n\n    if (fields2) {\n      for (const field1 of fields1) {\n        for (const field2 of fields2) {\n          const conflict = findConflict(\n            context,\n            cachedFieldsAndFragmentNames,\n            comparedFragmentPairs,\n            parentFieldsAreMutuallyExclusive,\n            responseName,\n            field1,\n            field2,\n          );\n\n          if (conflict) {\n            conflicts.push(conflict);\n          }\n        }\n      }\n    }\n  }\n} // Determines if there is a conflict between two particular fields, including\n// comparing their sub-fields.\n\nfunction findConflict(\n  context,\n  cachedFieldsAndFragmentNames,\n  comparedFragmentPairs,\n  parentFieldsAreMutuallyExclusive,\n  responseName,\n  field1,\n  field2,\n) {\n  const [parentType1, node1, def1] = field1;\n  const [parentType2, node2, def2] = field2; // If it is known that two fields could not possibly apply at the same\n  // time, due to the parent types, then it is safe to permit them to diverge\n  // in aliased field or arguments used as they will not present any ambiguity\n  // by differing.\n  // It is known that two parent types could never overlap if they are\n  // different Object types. Interface or Union types might overlap - if not\n  // in the current state of the schema, then perhaps in some future version,\n  // thus may not safely diverge.\n\n  const areMutuallyExclusive =\n    parentFieldsAreMutuallyExclusive ||\n    (parentType1 !== parentType2 &&\n      (0, _definition.isObjectType)(parentType1) &&\n      (0, _definition.isObjectType)(parentType2));\n\n  if (!areMutuallyExclusive) {\n    // Two aliases must refer to the same field.\n    const name1 = node1.name.value;\n    const name2 = node2.name.value;\n\n    if (name1 !== name2) {\n      return [\n        [responseName, `\"${name1}\" and \"${name2}\" are different fields`],\n        [node1],\n        [node2],\n      ];\n    } // Two field calls must have the same arguments.\n\n    if (stringifyArguments(node1) !== stringifyArguments(node2)) {\n      return [\n        [responseName, 'they have differing arguments'],\n        [node1],\n        [node2],\n      ];\n    }\n  } // The return type for each field.\n\n  const type1 = def1 === null || def1 === void 0 ? void 0 : def1.type;\n  const type2 = def2 === null || def2 === void 0 ? void 0 : def2.type;\n\n  if (type1 && type2 && doTypesConflict(type1, type2)) {\n    return [\n      [\n        responseName,\n        `they return conflicting types \"${(0, _inspect.inspect)(\n          type1,\n        )}\" and \"${(0, _inspect.inspect)(type2)}\"`,\n      ],\n      [node1],\n      [node2],\n    ];\n  } // Collect and compare sub-fields. Use the same \"visited fragment names\" list\n  // for both collections so fields in a fragment reference are never\n  // compared to themselves.\n\n  const selectionSet1 = node1.selectionSet;\n  const selectionSet2 = node2.selectionSet;\n\n  if (selectionSet1 && selectionSet2) {\n    const conflicts = findConflictsBetweenSubSelectionSets(\n      context,\n      cachedFieldsAndFragmentNames,\n      comparedFragmentPairs,\n      areMutuallyExclusive,\n      (0, _definition.getNamedType)(type1),\n      selectionSet1,\n      (0, _definition.getNamedType)(type2),\n      selectionSet2,\n    );\n    return subfieldConflicts(conflicts, responseName, node1, node2);\n  }\n}\n\nfunction stringifyArguments(fieldNode) {\n  var _fieldNode$arguments;\n\n  // FIXME https://github.com/graphql/graphql-js/issues/2203\n  const args =\n    /* c8 ignore next */\n    (_fieldNode$arguments = fieldNode.arguments) !== null &&\n    _fieldNode$arguments !== void 0\n      ? _fieldNode$arguments\n      : [];\n  const inputObjectWithArgs = {\n    kind: _kinds.Kind.OBJECT,\n    fields: args.map((argNode) => ({\n      kind: _kinds.Kind.OBJECT_FIELD,\n      name: argNode.name,\n      value: argNode.value,\n    })),\n  };\n  return (0, _printer.print)(\n    (0, _sortValueNode.sortValueNode)(inputObjectWithArgs),\n  );\n} // Two types conflict if both types could not apply to a value simultaneously.\n// Composite types are ignored as their individual field types will be compared\n// later recursively. However List and Non-Null types must match.\n\nfunction doTypesConflict(type1, type2) {\n  if ((0, _definition.isListType)(type1)) {\n    return (0, _definition.isListType)(type2)\n      ? doTypesConflict(type1.ofType, type2.ofType)\n      : true;\n  }\n\n  if ((0, _definition.isListType)(type2)) {\n    return true;\n  }\n\n  if ((0, _definition.isNonNullType)(type1)) {\n    return (0, _definition.isNonNullType)(type2)\n      ? doTypesConflict(type1.ofType, type2.ofType)\n      : true;\n  }\n\n  if ((0, _definition.isNonNullType)(type2)) {\n    return true;\n  }\n\n  if (\n    (0, _definition.isLeafType)(type1) ||\n    (0, _definition.isLeafType)(type2)\n  ) {\n    return type1 !== type2;\n  }\n\n  return false;\n} // Given a selection set, return the collection of fields (a mapping of response\n// name to field nodes and definitions) as well as a list of fragment names\n// referenced via fragment spreads.\n\nfunction getFieldsAndFragmentNames(\n  context,\n  cachedFieldsAndFragmentNames,\n  parentType,\n  selectionSet,\n) {\n  const cached = cachedFieldsAndFragmentNames.get(selectionSet);\n\n  if (cached) {\n    return cached;\n  }\n\n  const nodeAndDefs = Object.create(null);\n  const fragmentNames = Object.create(null);\n\n  _collectFieldsAndFragmentNames(\n    context,\n    parentType,\n    selectionSet,\n    nodeAndDefs,\n    fragmentNames,\n  );\n\n  const result = [nodeAndDefs, Object.keys(fragmentNames)];\n  cachedFieldsAndFragmentNames.set(selectionSet, result);\n  return result;\n} // Given a reference to a fragment, return the represented collection of fields\n// as well as a list of nested fragment names referenced via fragment spreads.\n\nfunction getReferencedFieldsAndFragmentNames(\n  context,\n  cachedFieldsAndFragmentNames,\n  fragment,\n) {\n  // Short-circuit building a type from the node if possible.\n  const cached = cachedFieldsAndFragmentNames.get(fragment.selectionSet);\n\n  if (cached) {\n    return cached;\n  }\n\n  const fragmentType = (0, _typeFromAST.typeFromAST)(\n    context.getSchema(),\n    fragment.typeCondition,\n  );\n  return getFieldsAndFragmentNames(\n    context,\n    cachedFieldsAndFragmentNames,\n    fragmentType,\n    fragment.selectionSet,\n  );\n}\n\nfunction _collectFieldsAndFragmentNames(\n  context,\n  parentType,\n  selectionSet,\n  nodeAndDefs,\n  fragmentNames,\n) {\n  for (const selection of selectionSet.selections) {\n    switch (selection.kind) {\n      case _kinds.Kind.FIELD: {\n        const fieldName = selection.name.value;\n        let fieldDef;\n\n        if (\n          (0, _definition.isObjectType)(parentType) ||\n          (0, _definition.isInterfaceType)(parentType)\n        ) {\n          fieldDef = parentType.getFields()[fieldName];\n        }\n\n        const responseName = selection.alias\n          ? selection.alias.value\n          : fieldName;\n\n        if (!nodeAndDefs[responseName]) {\n          nodeAndDefs[responseName] = [];\n        }\n\n        nodeAndDefs[responseName].push([parentType, selection, fieldDef]);\n        break;\n      }\n\n      case _kinds.Kind.FRAGMENT_SPREAD:\n        fragmentNames[selection.name.value] = true;\n        break;\n\n      case _kinds.Kind.INLINE_FRAGMENT: {\n        const typeCondition = selection.typeCondition;\n        const inlineFragmentType = typeCondition\n          ? (0, _typeFromAST.typeFromAST)(context.getSchema(), typeCondition)\n          : parentType;\n\n        _collectFieldsAndFragmentNames(\n          context,\n          inlineFragmentType,\n          selection.selectionSet,\n          nodeAndDefs,\n          fragmentNames,\n        );\n\n        break;\n      }\n    }\n  }\n} // Given a series of Conflicts which occurred between two sub-fields, generate\n// a single Conflict.\n\nfunction subfieldConflicts(conflicts, responseName, node1, node2) {\n  if (conflicts.length > 0) {\n    return [\n      [responseName, conflicts.map(([reason]) => reason)],\n      [node1, ...conflicts.map(([, fields1]) => fields1).flat()],\n      [node2, ...conflicts.map(([, , fields2]) => fields2).flat()],\n    ];\n  }\n}\n/**\n * A way to keep track of pairs of things when the ordering of the pair does not matter.\n */\n\nclass PairSet {\n  constructor() {\n    this._data = new Map();\n  }\n\n  has(a, b, areMutuallyExclusive) {\n    var _this$_data$get;\n\n    const [key1, key2] = a < b ? [a, b] : [b, a];\n    const result =\n      (_this$_data$get = this._data.get(key1)) === null ||\n      _this$_data$get === void 0\n        ? void 0\n        : _this$_data$get.get(key2);\n\n    if (result === undefined) {\n      return false;\n    } // areMutuallyExclusive being false is a superset of being true, hence if\n    // we want to know if this PairSet \"has\" these two with no exclusivity,\n    // we have to ensure it was added as such.\n\n    return areMutuallyExclusive ? true : areMutuallyExclusive === result;\n  }\n\n  add(a, b, areMutuallyExclusive) {\n    const [key1, key2] = a < b ? [a, b] : [b, a];\n\n    const map = this._data.get(key1);\n\n    if (map === undefined) {\n      this._data.set(key1, new Map([[key2, areMutuallyExclusive]]));\n    } else {\n      map.set(key2, areMutuallyExclusive);\n    }\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.PossibleFragmentSpreadsRule = PossibleFragmentSpreadsRule;\n\nvar _inspect = require('../../jsutils/inspect.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _definition = require('../../type/definition.js');\n\nvar _typeComparators = require('../../utilities/typeComparators.js');\n\nvar _typeFromAST = require('../../utilities/typeFromAST.js');\n\n/**\n * Possible fragment spread\n *\n * A fragment spread is only valid if the type condition could ever possibly\n * be true: if there is a non-empty intersection of the possible parent types,\n * and possible types which pass the type condition.\n */\nfunction PossibleFragmentSpreadsRule(context) {\n  return {\n    InlineFragment(node) {\n      const fragType = context.getType();\n      const parentType = context.getParentType();\n\n      if (\n        (0, _definition.isCompositeType)(fragType) &&\n        (0, _definition.isCompositeType)(parentType) &&\n        !(0, _typeComparators.doTypesOverlap)(\n          context.getSchema(),\n          fragType,\n          parentType,\n        )\n      ) {\n        const parentTypeStr = (0, _inspect.inspect)(parentType);\n        const fragTypeStr = (0, _inspect.inspect)(fragType);\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Fragment cannot be spread here as objects of type \"${parentTypeStr}\" can never be of type \"${fragTypeStr}\".`,\n            {\n              nodes: node,\n            },\n          ),\n        );\n      }\n    },\n\n    FragmentSpread(node) {\n      const fragName = node.name.value;\n      const fragType = getFragmentType(context, fragName);\n      const parentType = context.getParentType();\n\n      if (\n        fragType &&\n        parentType &&\n        !(0, _typeComparators.doTypesOverlap)(\n          context.getSchema(),\n          fragType,\n          parentType,\n        )\n      ) {\n        const parentTypeStr = (0, _inspect.inspect)(parentType);\n        const fragTypeStr = (0, _inspect.inspect)(fragType);\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Fragment \"${fragName}\" cannot be spread here as objects of type \"${parentTypeStr}\" can never be of type \"${fragTypeStr}\".`,\n            {\n              nodes: node,\n            },\n          ),\n        );\n      }\n    },\n  };\n}\n\nfunction getFragmentType(context, name) {\n  const frag = context.getFragment(name);\n\n  if (frag) {\n    const type = (0, _typeFromAST.typeFromAST)(\n      context.getSchema(),\n      frag.typeCondition,\n    );\n\n    if ((0, _definition.isCompositeType)(type)) {\n      return type;\n    }\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.PossibleTypeExtensionsRule = PossibleTypeExtensionsRule;\n\nvar _didYouMean = require('../../jsutils/didYouMean.js');\n\nvar _inspect = require('../../jsutils/inspect.js');\n\nvar _invariant = require('../../jsutils/invariant.js');\n\nvar _suggestionList = require('../../jsutils/suggestionList.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _kinds = require('../../language/kinds.js');\n\nvar _predicates = require('../../language/predicates.js');\n\nvar _definition = require('../../type/definition.js');\n\n/**\n * Possible type extension\n *\n * A type extension is only valid if the type is defined and has the same kind.\n */\nfunction PossibleTypeExtensionsRule(context) {\n  const schema = context.getSchema();\n  const definedTypes = Object.create(null);\n\n  for (const def of context.getDocument().definitions) {\n    if ((0, _predicates.isTypeDefinitionNode)(def)) {\n      definedTypes[def.name.value] = def;\n    }\n  }\n\n  return {\n    ScalarTypeExtension: checkExtension,\n    ObjectTypeExtension: checkExtension,\n    InterfaceTypeExtension: checkExtension,\n    UnionTypeExtension: checkExtension,\n    EnumTypeExtension: checkExtension,\n    InputObjectTypeExtension: checkExtension,\n  };\n\n  function checkExtension(node) {\n    const typeName = node.name.value;\n    const defNode = definedTypes[typeName];\n    const existingType =\n      schema === null || schema === void 0 ? void 0 : schema.getType(typeName);\n    let expectedKind;\n\n    if (defNode) {\n      expectedKind = defKindToExtKind[defNode.kind];\n    } else if (existingType) {\n      expectedKind = typeToExtKind(existingType);\n    }\n\n    if (expectedKind) {\n      if (expectedKind !== node.kind) {\n        const kindStr = extensionKindToTypeName(node.kind);\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Cannot extend non-${kindStr} type \"${typeName}\".`,\n            {\n              nodes: defNode ? [defNode, node] : node,\n            },\n          ),\n        );\n      }\n    } else {\n      const allTypeNames = Object.keys({\n        ...definedTypes,\n        ...(schema === null || schema === void 0\n          ? void 0\n          : schema.getTypeMap()),\n      });\n      const suggestedTypes = (0, _suggestionList.suggestionList)(\n        typeName,\n        allTypeNames,\n      );\n      context.reportError(\n        new _GraphQLError.GraphQLError(\n          `Cannot extend type \"${typeName}\" because it is not defined.` +\n            (0, _didYouMean.didYouMean)(suggestedTypes),\n          {\n            nodes: node.name,\n          },\n        ),\n      );\n    }\n  }\n}\n\nconst defKindToExtKind = {\n  [_kinds.Kind.SCALAR_TYPE_DEFINITION]: _kinds.Kind.SCALAR_TYPE_EXTENSION,\n  [_kinds.Kind.OBJECT_TYPE_DEFINITION]: _kinds.Kind.OBJECT_TYPE_EXTENSION,\n  [_kinds.Kind.INTERFACE_TYPE_DEFINITION]: _kinds.Kind.INTERFACE_TYPE_EXTENSION,\n  [_kinds.Kind.UNION_TYPE_DEFINITION]: _kinds.Kind.UNION_TYPE_EXTENSION,\n  [_kinds.Kind.ENUM_TYPE_DEFINITION]: _kinds.Kind.ENUM_TYPE_EXTENSION,\n  [_kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION]:\n    _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION,\n};\n\nfunction typeToExtKind(type) {\n  if ((0, _definition.isScalarType)(type)) {\n    return _kinds.Kind.SCALAR_TYPE_EXTENSION;\n  }\n\n  if ((0, _definition.isObjectType)(type)) {\n    return _kinds.Kind.OBJECT_TYPE_EXTENSION;\n  }\n\n  if ((0, _definition.isInterfaceType)(type)) {\n    return _kinds.Kind.INTERFACE_TYPE_EXTENSION;\n  }\n\n  if ((0, _definition.isUnionType)(type)) {\n    return _kinds.Kind.UNION_TYPE_EXTENSION;\n  }\n\n  if ((0, _definition.isEnumType)(type)) {\n    return _kinds.Kind.ENUM_TYPE_EXTENSION;\n  }\n\n  if ((0, _definition.isInputObjectType)(type)) {\n    return _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION;\n  }\n  /* c8 ignore next 3 */\n  // Not reachable. All possible types have been considered\n\n  false ||\n    (0, _invariant.invariant)(\n      false,\n      'Unexpected type: ' + (0, _inspect.inspect)(type),\n    );\n}\n\nfunction extensionKindToTypeName(kind) {\n  switch (kind) {\n    case _kinds.Kind.SCALAR_TYPE_EXTENSION:\n      return 'scalar';\n\n    case _kinds.Kind.OBJECT_TYPE_EXTENSION:\n      return 'object';\n\n    case _kinds.Kind.INTERFACE_TYPE_EXTENSION:\n      return 'interface';\n\n    case _kinds.Kind.UNION_TYPE_EXTENSION:\n      return 'union';\n\n    case _kinds.Kind.ENUM_TYPE_EXTENSION:\n      return 'enum';\n\n    case _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION:\n      return 'input object';\n    // Not reachable. All possible types have been considered\n\n    /* c8 ignore next */\n\n    default:\n      false ||\n        (0, _invariant.invariant)(\n          false,\n          'Unexpected kind: ' + (0, _inspect.inspect)(kind),\n        );\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.ProvidedRequiredArgumentsOnDirectivesRule =\n  ProvidedRequiredArgumentsOnDirectivesRule;\nexports.ProvidedRequiredArgumentsRule = ProvidedRequiredArgumentsRule;\n\nvar _inspect = require('../../jsutils/inspect.js');\n\nvar _keyMap = require('../../jsutils/keyMap.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _kinds = require('../../language/kinds.js');\n\nvar _printer = require('../../language/printer.js');\n\nvar _definition = require('../../type/definition.js');\n\nvar _directives = require('../../type/directives.js');\n\n/**\n * Provided required arguments\n *\n * A field or directive is only valid if all required (non-null without a\n * default value) field arguments have been provided.\n */\nfunction ProvidedRequiredArgumentsRule(context) {\n  return {\n    // eslint-disable-next-line new-cap\n    ...ProvidedRequiredArgumentsOnDirectivesRule(context),\n    Field: {\n      // Validate on leave to allow for deeper errors to appear first.\n      leave(fieldNode) {\n        var _fieldNode$arguments;\n\n        const fieldDef = context.getFieldDef();\n\n        if (!fieldDef) {\n          return false;\n        }\n\n        const providedArgs = new Set( // FIXME: https://github.com/graphql/graphql-js/issues/2203\n          /* c8 ignore next */\n          (_fieldNode$arguments = fieldNode.arguments) === null ||\n          _fieldNode$arguments === void 0\n            ? void 0\n            : _fieldNode$arguments.map((arg) => arg.name.value),\n        );\n\n        for (const argDef of fieldDef.args) {\n          if (\n            !providedArgs.has(argDef.name) &&\n            (0, _definition.isRequiredArgument)(argDef)\n          ) {\n            const argTypeStr = (0, _inspect.inspect)(argDef.type);\n            context.reportError(\n              new _GraphQLError.GraphQLError(\n                `Field \"${fieldDef.name}\" argument \"${argDef.name}\" of type \"${argTypeStr}\" is required, but it was not provided.`,\n                {\n                  nodes: fieldNode,\n                },\n              ),\n            );\n          }\n        }\n      },\n    },\n  };\n}\n/**\n * @internal\n */\n\nfunction ProvidedRequiredArgumentsOnDirectivesRule(context) {\n  var _schema$getDirectives;\n\n  const requiredArgsMap = Object.create(null);\n  const schema = context.getSchema();\n  const definedDirectives =\n    (_schema$getDirectives =\n      schema === null || schema === void 0\n        ? void 0\n        : schema.getDirectives()) !== null && _schema$getDirectives !== void 0\n      ? _schema$getDirectives\n      : _directives.specifiedDirectives;\n\n  for (const directive of definedDirectives) {\n    requiredArgsMap[directive.name] = (0, _keyMap.keyMap)(\n      directive.args.filter(_definition.isRequiredArgument),\n      (arg) => arg.name,\n    );\n  }\n\n  const astDefinitions = context.getDocument().definitions;\n\n  for (const def of astDefinitions) {\n    if (def.kind === _kinds.Kind.DIRECTIVE_DEFINITION) {\n      var _def$arguments;\n\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n      /* c8 ignore next */\n      const argNodes =\n        (_def$arguments = def.arguments) !== null && _def$arguments !== void 0\n          ? _def$arguments\n          : [];\n      requiredArgsMap[def.name.value] = (0, _keyMap.keyMap)(\n        argNodes.filter(isRequiredArgumentNode),\n        (arg) => arg.name.value,\n      );\n    }\n  }\n\n  return {\n    Directive: {\n      // Validate on leave to allow for deeper errors to appear first.\n      leave(directiveNode) {\n        const directiveName = directiveNode.name.value;\n        const requiredArgs = requiredArgsMap[directiveName];\n\n        if (requiredArgs) {\n          var _directiveNode$argume;\n\n          // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n          /* c8 ignore next */\n          const argNodes =\n            (_directiveNode$argume = directiveNode.arguments) !== null &&\n            _directiveNode$argume !== void 0\n              ? _directiveNode$argume\n              : [];\n          const argNodeMap = new Set(argNodes.map((arg) => arg.name.value));\n\n          for (const [argName, argDef] of Object.entries(requiredArgs)) {\n            if (!argNodeMap.has(argName)) {\n              const argType = (0, _definition.isType)(argDef.type)\n                ? (0, _inspect.inspect)(argDef.type)\n                : (0, _printer.print)(argDef.type);\n              context.reportError(\n                new _GraphQLError.GraphQLError(\n                  `Directive \"@${directiveName}\" argument \"${argName}\" of type \"${argType}\" is required, but it was not provided.`,\n                  {\n                    nodes: directiveNode,\n                  },\n                ),\n              );\n            }\n          }\n        }\n      },\n    },\n  };\n}\n\nfunction isRequiredArgumentNode(arg) {\n  return (\n    arg.type.kind === _kinds.Kind.NON_NULL_TYPE && arg.defaultValue == null\n  );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.ScalarLeafsRule = ScalarLeafsRule;\n\nvar _inspect = require('../../jsutils/inspect.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _definition = require('../../type/definition.js');\n\n/**\n * Scalar leafs\n *\n * A GraphQL document is valid only if all leaf fields (fields without\n * sub selections) are of scalar or enum types.\n */\nfunction ScalarLeafsRule(context) {\n  return {\n    Field(node) {\n      const type = context.getType();\n      const selectionSet = node.selectionSet;\n\n      if (type) {\n        if ((0, _definition.isLeafType)((0, _definition.getNamedType)(type))) {\n          if (selectionSet) {\n            const fieldName = node.name.value;\n            const typeStr = (0, _inspect.inspect)(type);\n            context.reportError(\n              new _GraphQLError.GraphQLError(\n                `Field \"${fieldName}\" must not have a selection since type \"${typeStr}\" has no subfields.`,\n                {\n                  nodes: selectionSet,\n                },\n              ),\n            );\n          }\n        } else if (!selectionSet) {\n          const fieldName = node.name.value;\n          const typeStr = (0, _inspect.inspect)(type);\n          context.reportError(\n            new _GraphQLError.GraphQLError(\n              `Field \"${fieldName}\" of type \"${typeStr}\" must have a selection of subfields. Did you mean \"${fieldName} { ... }\"?`,\n              {\n                nodes: node,\n              },\n            ),\n          );\n        }\n      }\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.printPathArray = printPathArray;\n\n/**\n * Build a string describing the path.\n */\nfunction printPathArray(path) {\n  return path\n    .map((key) =>\n      typeof key === 'number' ? '[' + key.toString() + ']' : '.' + key,\n    )\n    .join('');\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.addPath = addPath;\nexports.pathToArray = pathToArray;\n\n/**\n * Given a Path and a key, return a new Path containing the new key.\n */\nfunction addPath(prev, key, typename) {\n  return {\n    prev,\n    key,\n    typename,\n  };\n}\n/**\n * Given a Path, return an Array of the path keys.\n */\n\nfunction pathToArray(path) {\n  const flattened = [];\n  let curr = path;\n\n  while (curr) {\n    flattened.push(curr.key);\n    curr = curr.prev;\n  }\n\n  return flattened.reverse();\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.coerceInputValue = coerceInputValue;\n\nvar _didYouMean = require('../jsutils/didYouMean.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _isIterableObject = require('../jsutils/isIterableObject.js');\n\nvar _isObjectLike = require('../jsutils/isObjectLike.js');\n\nvar _Path = require('../jsutils/Path.js');\n\nvar _printPathArray = require('../jsutils/printPathArray.js');\n\nvar _suggestionList = require('../jsutils/suggestionList.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _definition = require('../type/definition.js');\n\n/**\n * Coerces a JavaScript value given a GraphQL Input Type.\n */\nfunction coerceInputValue(inputValue, type, onError = defaultOnError) {\n  return coerceInputValueImpl(inputValue, type, onError, undefined);\n}\n\nfunction defaultOnError(path, invalidValue, error) {\n  let errorPrefix = 'Invalid value ' + (0, _inspect.inspect)(invalidValue);\n\n  if (path.length > 0) {\n    errorPrefix += ` at \"value${(0, _printPathArray.printPathArray)(path)}\"`;\n  }\n\n  error.message = errorPrefix + ': ' + error.message;\n  throw error;\n}\n\nfunction coerceInputValueImpl(inputValue, type, onError, path) {\n  if ((0, _definition.isNonNullType)(type)) {\n    if (inputValue != null) {\n      return coerceInputValueImpl(inputValue, type.ofType, onError, path);\n    }\n\n    onError(\n      (0, _Path.pathToArray)(path),\n      inputValue,\n      new _GraphQLError.GraphQLError(\n        `Expected non-nullable type \"${(0, _inspect.inspect)(\n          type,\n        )}\" not to be null.`,\n      ),\n    );\n    return;\n  }\n\n  if (inputValue == null) {\n    // Explicitly return the value null.\n    return null;\n  }\n\n  if ((0, _definition.isListType)(type)) {\n    const itemType = type.ofType;\n\n    if ((0, _isIterableObject.isIterableObject)(inputValue)) {\n      return Array.from(inputValue, (itemValue, index) => {\n        const itemPath = (0, _Path.addPath)(path, index, undefined);\n        return coerceInputValueImpl(itemValue, itemType, onError, itemPath);\n      });\n    } // Lists accept a non-list value as a list of one.\n\n    return [coerceInputValueImpl(inputValue, itemType, onError, path)];\n  }\n\n  if ((0, _definition.isInputObjectType)(type)) {\n    if (!(0, _isObjectLike.isObjectLike)(inputValue)) {\n      onError(\n        (0, _Path.pathToArray)(path),\n        inputValue,\n        new _GraphQLError.GraphQLError(\n          `Expected type \"${type.name}\" to be an object.`,\n        ),\n      );\n      return;\n    }\n\n    const coercedValue = {};\n    const fieldDefs = type.getFields();\n\n    for (const field of Object.values(fieldDefs)) {\n      const fieldValue = inputValue[field.name];\n\n      if (fieldValue === undefined) {\n        if (field.defaultValue !== undefined) {\n          coercedValue[field.name] = field.defaultValue;\n        } else if ((0, _definition.isNonNullType)(field.type)) {\n          const typeStr = (0, _inspect.inspect)(field.type);\n          onError(\n            (0, _Path.pathToArray)(path),\n            inputValue,\n            new _GraphQLError.GraphQLError(\n              `Field \"${field.name}\" of required type \"${typeStr}\" was not provided.`,\n            ),\n          );\n        }\n\n        continue;\n      }\n\n      coercedValue[field.name] = coerceInputValueImpl(\n        fieldValue,\n        field.type,\n        onError,\n        (0, _Path.addPath)(path, field.name, type.name),\n      );\n    } // Ensure every provided field is defined.\n\n    for (const fieldName of Object.keys(inputValue)) {\n      if (!fieldDefs[fieldName]) {\n        const suggestions = (0, _suggestionList.suggestionList)(\n          fieldName,\n          Object.keys(type.getFields()),\n        );\n        onError(\n          (0, _Path.pathToArray)(path),\n          inputValue,\n          new _GraphQLError.GraphQLError(\n            `Field \"${fieldName}\" is not defined by type \"${type.name}\".` +\n              (0, _didYouMean.didYouMean)(suggestions),\n          ),\n        );\n      }\n    }\n\n    return coercedValue;\n  }\n\n  if ((0, _definition.isLeafType)(type)) {\n    let parseResult; // Scalars and Enums determine if a input value is valid via parseValue(),\n    // which can throw to indicate failure. If it throws, maintain a reference\n    // to the original error.\n\n    try {\n      parseResult = type.parseValue(inputValue);\n    } catch (error) {\n      if (error instanceof _GraphQLError.GraphQLError) {\n        onError((0, _Path.pathToArray)(path), inputValue, error);\n      } else {\n        onError(\n          (0, _Path.pathToArray)(path),\n          inputValue,\n          new _GraphQLError.GraphQLError(\n            `Expected type \"${type.name}\". ` + error.message,\n            {\n              originalError: error,\n            },\n          ),\n        );\n      }\n\n      return;\n    }\n\n    if (parseResult === undefined) {\n      onError(\n        (0, _Path.pathToArray)(path),\n        inputValue,\n        new _GraphQLError.GraphQLError(`Expected type \"${type.name}\".`),\n      );\n    }\n\n    return parseResult;\n  }\n  /* c8 ignore next 3 */\n  // Not reachable, all possible types have been considered.\n\n  false ||\n    (0, _invariant.invariant)(\n      false,\n      'Unexpected input type: ' + (0, _inspect.inspect)(type),\n    );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.valueFromAST = valueFromAST;\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _keyMap = require('../jsutils/keyMap.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _definition = require('../type/definition.js');\n\n/**\n * Produces a JavaScript value given a GraphQL Value AST.\n *\n * A GraphQL type must be provided, which will be used to interpret different\n * GraphQL Value literals.\n *\n * Returns `undefined` when the value could not be validly coerced according to\n * the provided type.\n *\n * | GraphQL Value        | JSON Value    |\n * | -------------------- | ------------- |\n * | Input Object         | Object        |\n * | List                 | Array         |\n * | Boolean              | Boolean       |\n * | String               | String        |\n * | Int / Float          | Number        |\n * | Enum Value           | Unknown       |\n * | NullValue            | null          |\n *\n */\nfunction valueFromAST(valueNode, type, variables) {\n  if (!valueNode) {\n    // When there is no node, then there is also no value.\n    // Importantly, this is different from returning the value null.\n    return;\n  }\n\n  if (valueNode.kind === _kinds.Kind.VARIABLE) {\n    const variableName = valueNode.name.value;\n\n    if (variables == null || variables[variableName] === undefined) {\n      // No valid return value.\n      return;\n    }\n\n    const variableValue = variables[variableName];\n\n    if (variableValue === null && (0, _definition.isNonNullType)(type)) {\n      return; // Invalid: intentionally return no value.\n    } // Note: This does no further checking that this variable is correct.\n    // This assumes that this query has been validated and the variable\n    // usage here is of the correct type.\n\n    return variableValue;\n  }\n\n  if ((0, _definition.isNonNullType)(type)) {\n    if (valueNode.kind === _kinds.Kind.NULL) {\n      return; // Invalid: intentionally return no value.\n    }\n\n    return valueFromAST(valueNode, type.ofType, variables);\n  }\n\n  if (valueNode.kind === _kinds.Kind.NULL) {\n    // This is explicitly returning the value null.\n    return null;\n  }\n\n  if ((0, _definition.isListType)(type)) {\n    const itemType = type.ofType;\n\n    if (valueNode.kind === _kinds.Kind.LIST) {\n      const coercedValues = [];\n\n      for (const itemNode of valueNode.values) {\n        if (isMissingVariable(itemNode, variables)) {\n          // If an array contains a missing variable, it is either coerced to\n          // null or if the item type is non-null, it considered invalid.\n          if ((0, _definition.isNonNullType)(itemType)) {\n            return; // Invalid: intentionally return no value.\n          }\n\n          coercedValues.push(null);\n        } else {\n          const itemValue = valueFromAST(itemNode, itemType, variables);\n\n          if (itemValue === undefined) {\n            return; // Invalid: intentionally return no value.\n          }\n\n          coercedValues.push(itemValue);\n        }\n      }\n\n      return coercedValues;\n    }\n\n    const coercedValue = valueFromAST(valueNode, itemType, variables);\n\n    if (coercedValue === undefined) {\n      return; // Invalid: intentionally return no value.\n    }\n\n    return [coercedValue];\n  }\n\n  if ((0, _definition.isInputObjectType)(type)) {\n    if (valueNode.kind !== _kinds.Kind.OBJECT) {\n      return; // Invalid: intentionally return no value.\n    }\n\n    const coercedObj = Object.create(null);\n    const fieldNodes = (0, _keyMap.keyMap)(\n      valueNode.fields,\n      (field) => field.name.value,\n    );\n\n    for (const field of Object.values(type.getFields())) {\n      const fieldNode = fieldNodes[field.name];\n\n      if (!fieldNode || isMissingVariable(fieldNode.value, variables)) {\n        if (field.defaultValue !== undefined) {\n          coercedObj[field.name] = field.defaultValue;\n        } else if ((0, _definition.isNonNullType)(field.type)) {\n          return; // Invalid: intentionally return no value.\n        }\n\n        continue;\n      }\n\n      const fieldValue = valueFromAST(fieldNode.value, field.type, variables);\n\n      if (fieldValue === undefined) {\n        return; // Invalid: intentionally return no value.\n      }\n\n      coercedObj[field.name] = fieldValue;\n    }\n\n    return coercedObj;\n  }\n\n  if ((0, _definition.isLeafType)(type)) {\n    // Scalars and Enums fulfill parsing a literal value via parseLiteral().\n    // Invalid values represent a failure to parse correctly, in which case\n    // no value is returned.\n    let result;\n\n    try {\n      result = type.parseLiteral(valueNode, variables);\n    } catch (_error) {\n      return; // Invalid: intentionally return no value.\n    }\n\n    if (result === undefined) {\n      return; // Invalid: intentionally return no value.\n    }\n\n    return result;\n  }\n  /* c8 ignore next 3 */\n  // Not reachable, all possible input types have been considered.\n\n  false ||\n    (0, _invariant.invariant)(\n      false,\n      'Unexpected input type: ' + (0, _inspect.inspect)(type),\n    );\n} // Returns true if the provided valueNode is a variable which is not defined\n// in the set of variables.\n\nfunction isMissingVariable(valueNode, variables) {\n  return (\n    valueNode.kind === _kinds.Kind.VARIABLE &&\n    (variables == null || variables[valueNode.name.value] === undefined)\n  );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.getArgumentValues = getArgumentValues;\nexports.getDirectiveValues = getDirectiveValues;\nexports.getVariableValues = getVariableValues;\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _keyMap = require('../jsutils/keyMap.js');\n\nvar _printPathArray = require('../jsutils/printPathArray.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _printer = require('../language/printer.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _coerceInputValue = require('../utilities/coerceInputValue.js');\n\nvar _typeFromAST = require('../utilities/typeFromAST.js');\n\nvar _valueFromAST = require('../utilities/valueFromAST.js');\n\n/**\n * Prepares an object map of variableValues of the correct type based on the\n * provided variable definitions and arbitrary input. If the input cannot be\n * parsed to match the variable definitions, a GraphQLError will be thrown.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\nfunction getVariableValues(schema, varDefNodes, inputs, options) {\n  const errors = [];\n  const maxErrors =\n    options === null || options === void 0 ? void 0 : options.maxErrors;\n\n  try {\n    const coerced = coerceVariableValues(\n      schema,\n      varDefNodes,\n      inputs,\n      (error) => {\n        if (maxErrors != null && errors.length >= maxErrors) {\n          throw new _GraphQLError.GraphQLError(\n            'Too many errors processing variables, error limit reached. Execution aborted.',\n          );\n        }\n\n        errors.push(error);\n      },\n    );\n\n    if (errors.length === 0) {\n      return {\n        coerced,\n      };\n    }\n  } catch (error) {\n    errors.push(error);\n  }\n\n  return {\n    errors,\n  };\n}\n\nfunction coerceVariableValues(schema, varDefNodes, inputs, onError) {\n  const coercedValues = {};\n\n  for (const varDefNode of varDefNodes) {\n    const varName = varDefNode.variable.name.value;\n    const varType = (0, _typeFromAST.typeFromAST)(schema, varDefNode.type);\n\n    if (!(0, _definition.isInputType)(varType)) {\n      // Must use input types for variables. This should be caught during\n      // validation, however is checked again here for safety.\n      const varTypeStr = (0, _printer.print)(varDefNode.type);\n      onError(\n        new _GraphQLError.GraphQLError(\n          `Variable \"$${varName}\" expected value of type \"${varTypeStr}\" which cannot be used as an input type.`,\n          {\n            nodes: varDefNode.type,\n          },\n        ),\n      );\n      continue;\n    }\n\n    if (!hasOwnProperty(inputs, varName)) {\n      if (varDefNode.defaultValue) {\n        coercedValues[varName] = (0, _valueFromAST.valueFromAST)(\n          varDefNode.defaultValue,\n          varType,\n        );\n      } else if ((0, _definition.isNonNullType)(varType)) {\n        const varTypeStr = (0, _inspect.inspect)(varType);\n        onError(\n          new _GraphQLError.GraphQLError(\n            `Variable \"$${varName}\" of required type \"${varTypeStr}\" was not provided.`,\n            {\n              nodes: varDefNode,\n            },\n          ),\n        );\n      }\n\n      continue;\n    }\n\n    const value = inputs[varName];\n\n    if (value === null && (0, _definition.isNonNullType)(varType)) {\n      const varTypeStr = (0, _inspect.inspect)(varType);\n      onError(\n        new _GraphQLError.GraphQLError(\n          `Variable \"$${varName}\" of non-null type \"${varTypeStr}\" must not be null.`,\n          {\n            nodes: varDefNode,\n          },\n        ),\n      );\n      continue;\n    }\n\n    coercedValues[varName] = (0, _coerceInputValue.coerceInputValue)(\n      value,\n      varType,\n      (path, invalidValue, error) => {\n        let prefix =\n          `Variable \"$${varName}\" got invalid value ` +\n          (0, _inspect.inspect)(invalidValue);\n\n        if (path.length > 0) {\n          prefix += ` at \"${varName}${(0, _printPathArray.printPathArray)(\n            path,\n          )}\"`;\n        }\n\n        onError(\n          new _GraphQLError.GraphQLError(prefix + '; ' + error.message, {\n            nodes: varDefNode,\n            originalError: error.originalError,\n          }),\n        );\n      },\n    );\n  }\n\n  return coercedValues;\n}\n/**\n * Prepares an object map of argument values given a list of argument\n * definitions and list of argument AST nodes.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\n\nfunction getArgumentValues(def, node, variableValues) {\n  var _node$arguments;\n\n  const coercedValues = {}; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n  /* c8 ignore next */\n\n  const argumentNodes =\n    (_node$arguments = node.arguments) !== null && _node$arguments !== void 0\n      ? _node$arguments\n      : [];\n  const argNodeMap = (0, _keyMap.keyMap)(\n    argumentNodes,\n    (arg) => arg.name.value,\n  );\n\n  for (const argDef of def.args) {\n    const name = argDef.name;\n    const argType = argDef.type;\n    const argumentNode = argNodeMap[name];\n\n    if (!argumentNode) {\n      if (argDef.defaultValue !== undefined) {\n        coercedValues[name] = argDef.defaultValue;\n      } else if ((0, _definition.isNonNullType)(argType)) {\n        throw new _GraphQLError.GraphQLError(\n          `Argument \"${name}\" of required type \"${(0, _inspect.inspect)(\n            argType,\n          )}\" ` + 'was not provided.',\n          {\n            nodes: node,\n          },\n        );\n      }\n\n      continue;\n    }\n\n    const valueNode = argumentNode.value;\n    let isNull = valueNode.kind === _kinds.Kind.NULL;\n\n    if (valueNode.kind === _kinds.Kind.VARIABLE) {\n      const variableName = valueNode.name.value;\n\n      if (\n        variableValues == null ||\n        !hasOwnProperty(variableValues, variableName)\n      ) {\n        if (argDef.defaultValue !== undefined) {\n          coercedValues[name] = argDef.defaultValue;\n        } else if ((0, _definition.isNonNullType)(argType)) {\n          throw new _GraphQLError.GraphQLError(\n            `Argument \"${name}\" of required type \"${(0, _inspect.inspect)(\n              argType,\n            )}\" ` +\n              `was provided the variable \"$${variableName}\" which was not provided a runtime value.`,\n            {\n              nodes: valueNode,\n            },\n          );\n        }\n\n        continue;\n      }\n\n      isNull = variableValues[variableName] == null;\n    }\n\n    if (isNull && (0, _definition.isNonNullType)(argType)) {\n      throw new _GraphQLError.GraphQLError(\n        `Argument \"${name}\" of non-null type \"${(0, _inspect.inspect)(\n          argType,\n        )}\" ` + 'must not be null.',\n        {\n          nodes: valueNode,\n        },\n      );\n    }\n\n    const coercedValue = (0, _valueFromAST.valueFromAST)(\n      valueNode,\n      argType,\n      variableValues,\n    );\n\n    if (coercedValue === undefined) {\n      // Note: ValuesOfCorrectTypeRule validation should catch this before\n      // execution. This is a runtime check to ensure execution does not\n      // continue with an invalid argument value.\n      throw new _GraphQLError.GraphQLError(\n        `Argument \"${name}\" has invalid value ${(0, _printer.print)(\n          valueNode,\n        )}.`,\n        {\n          nodes: valueNode,\n        },\n      );\n    }\n\n    coercedValues[name] = coercedValue;\n  }\n\n  return coercedValues;\n}\n/**\n * Prepares an object map of argument values given a directive definition\n * and a AST node which may contain directives. Optionally also accepts a map\n * of variable values.\n *\n * If the directive does not exist on the node, returns undefined.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\n\nfunction getDirectiveValues(directiveDef, node, variableValues) {\n  var _node$directives;\n\n  const directiveNode =\n    (_node$directives = node.directives) === null || _node$directives === void 0\n      ? void 0\n      : _node$directives.find(\n          (directive) => directive.name.value === directiveDef.name,\n        );\n\n  if (directiveNode) {\n    return getArgumentValues(directiveDef, directiveNode, variableValues);\n  }\n}\n\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.collectFields = collectFields;\nexports.collectSubfields = collectSubfields;\n\nvar _kinds = require('../language/kinds.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _directives = require('../type/directives.js');\n\nvar _typeFromAST = require('../utilities/typeFromAST.js');\n\nvar _values = require('./values.js');\n\n/**\n * Given a selectionSet, collects all of the fields and returns them.\n *\n * CollectFields requires the \"runtime type\" of an object. For a field that\n * returns an Interface or Union type, the \"runtime type\" will be the actual\n * object type returned by that field.\n *\n * @internal\n */\nfunction collectFields(\n  schema,\n  fragments,\n  variableValues,\n  runtimeType,\n  selectionSet,\n) {\n  const fields = new Map();\n  collectFieldsImpl(\n    schema,\n    fragments,\n    variableValues,\n    runtimeType,\n    selectionSet,\n    fields,\n    new Set(),\n  );\n  return fields;\n}\n/**\n * Given an array of field nodes, collects all of the subfields of the passed\n * in fields, and returns them at the end.\n *\n * CollectSubFields requires the \"return type\" of an object. For a field that\n * returns an Interface or Union type, the \"return type\" will be the actual\n * object type returned by that field.\n *\n * @internal\n */\n\nfunction collectSubfields(\n  schema,\n  fragments,\n  variableValues,\n  returnType,\n  fieldNodes,\n) {\n  const subFieldNodes = new Map();\n  const visitedFragmentNames = new Set();\n\n  for (const node of fieldNodes) {\n    if (node.selectionSet) {\n      collectFieldsImpl(\n        schema,\n        fragments,\n        variableValues,\n        returnType,\n        node.selectionSet,\n        subFieldNodes,\n        visitedFragmentNames,\n      );\n    }\n  }\n\n  return subFieldNodes;\n}\n\nfunction collectFieldsImpl(\n  schema,\n  fragments,\n  variableValues,\n  runtimeType,\n  selectionSet,\n  fields,\n  visitedFragmentNames,\n) {\n  for (const selection of selectionSet.selections) {\n    switch (selection.kind) {\n      case _kinds.Kind.FIELD: {\n        if (!shouldIncludeNode(variableValues, selection)) {\n          continue;\n        }\n\n        const name = getFieldEntryKey(selection);\n        const fieldList = fields.get(name);\n\n        if (fieldList !== undefined) {\n          fieldList.push(selection);\n        } else {\n          fields.set(name, [selection]);\n        }\n\n        break;\n      }\n\n      case _kinds.Kind.INLINE_FRAGMENT: {\n        if (\n          !shouldIncludeNode(variableValues, selection) ||\n          !doesFragmentConditionMatch(schema, selection, runtimeType)\n        ) {\n          continue;\n        }\n\n        collectFieldsImpl(\n          schema,\n          fragments,\n          variableValues,\n          runtimeType,\n          selection.selectionSet,\n          fields,\n          visitedFragmentNames,\n        );\n        break;\n      }\n\n      case _kinds.Kind.FRAGMENT_SPREAD: {\n        const fragName = selection.name.value;\n\n        if (\n          visitedFragmentNames.has(fragName) ||\n          !shouldIncludeNode(variableValues, selection)\n        ) {\n          continue;\n        }\n\n        visitedFragmentNames.add(fragName);\n        const fragment = fragments[fragName];\n\n        if (\n          !fragment ||\n          !doesFragmentConditionMatch(schema, fragment, runtimeType)\n        ) {\n          continue;\n        }\n\n        collectFieldsImpl(\n          schema,\n          fragments,\n          variableValues,\n          runtimeType,\n          fragment.selectionSet,\n          fields,\n          visitedFragmentNames,\n        );\n        break;\n      }\n    }\n  }\n}\n/**\n * Determines if a field should be included based on the `@include` and `@skip`\n * directives, where `@skip` has higher precedence than `@include`.\n */\n\nfunction shouldIncludeNode(variableValues, node) {\n  const skip = (0, _values.getDirectiveValues)(\n    _directives.GraphQLSkipDirective,\n    node,\n    variableValues,\n  );\n\n  if ((skip === null || skip === void 0 ? void 0 : skip.if) === true) {\n    return false;\n  }\n\n  const include = (0, _values.getDirectiveValues)(\n    _directives.GraphQLIncludeDirective,\n    node,\n    variableValues,\n  );\n\n  if (\n    (include === null || include === void 0 ? void 0 : include.if) === false\n  ) {\n    return false;\n  }\n\n  return true;\n}\n/**\n * Determines if a fragment is applicable to the given type.\n */\n\nfunction doesFragmentConditionMatch(schema, fragment, type) {\n  const typeConditionNode = fragment.typeCondition;\n\n  if (!typeConditionNode) {\n    return true;\n  }\n\n  const conditionalType = (0, _typeFromAST.typeFromAST)(\n    schema,\n    typeConditionNode,\n  );\n\n  if (conditionalType === type) {\n    return true;\n  }\n\n  if ((0, _definition.isAbstractType)(conditionalType)) {\n    return schema.isSubType(conditionalType, type);\n  }\n\n  return false;\n}\n/**\n * Implements the logic to compute the key of a given field's entry\n */\n\nfunction getFieldEntryKey(node) {\n  return node.alias ? node.alias.value : node.name.value;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.SingleFieldSubscriptionsRule = SingleFieldSubscriptionsRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _kinds = require('../../language/kinds.js');\n\nvar _collectFields = require('../../execution/collectFields.js');\n\n/**\n * Subscriptions must only include a non-introspection field.\n *\n * A GraphQL subscription is valid only if it contains a single root field and\n * that root field is not an introspection field.\n *\n * See https://spec.graphql.org/draft/#sec-Single-root-field\n */\nfunction SingleFieldSubscriptionsRule(context) {\n  return {\n    OperationDefinition(node) {\n      if (node.operation === 'subscription') {\n        const schema = context.getSchema();\n        const subscriptionType = schema.getSubscriptionType();\n\n        if (subscriptionType) {\n          const operationName = node.name ? node.name.value : null;\n          const variableValues = Object.create(null);\n          const document = context.getDocument();\n          const fragments = Object.create(null);\n\n          for (const definition of document.definitions) {\n            if (definition.kind === _kinds.Kind.FRAGMENT_DEFINITION) {\n              fragments[definition.name.value] = definition;\n            }\n          }\n\n          const fields = (0, _collectFields.collectFields)(\n            schema,\n            fragments,\n            variableValues,\n            subscriptionType,\n            node.selectionSet,\n          );\n\n          if (fields.size > 1) {\n            const fieldSelectionLists = [...fields.values()];\n            const extraFieldSelectionLists = fieldSelectionLists.slice(1);\n            const extraFieldSelections = extraFieldSelectionLists.flat();\n            context.reportError(\n              new _GraphQLError.GraphQLError(\n                operationName != null\n                  ? `Subscription \"${operationName}\" must select only one top level field.`\n                  : 'Anonymous Subscription must select only one top level field.',\n                {\n                  nodes: extraFieldSelections,\n                },\n              ),\n            );\n          }\n\n          for (const fieldNodes of fields.values()) {\n            const field = fieldNodes[0];\n            const fieldName = field.name.value;\n\n            if (fieldName.startsWith('__')) {\n              context.reportError(\n                new _GraphQLError.GraphQLError(\n                  operationName != null\n                    ? `Subscription \"${operationName}\" must not select an introspection top level field.`\n                    : 'Anonymous Subscription must not select an introspection top level field.',\n                  {\n                    nodes: fieldNodes,\n                  },\n                ),\n              );\n            }\n          }\n        }\n      }\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.groupBy = groupBy;\n\n/**\n * Groups array items into a Map, given a function to produce grouping key.\n */\nfunction groupBy(list, keyFn) {\n  const result = new Map();\n\n  for (const item of list) {\n    const key = keyFn(item);\n    const group = result.get(key);\n\n    if (group === undefined) {\n      result.set(key, [item]);\n    } else {\n      group.push(item);\n    }\n  }\n\n  return result;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.UniqueArgumentDefinitionNamesRule = UniqueArgumentDefinitionNamesRule;\n\nvar _groupBy = require('../../jsutils/groupBy.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Unique argument definition names\n *\n * A GraphQL Object or Interface type is only valid if all its fields have uniquely named arguments.\n * A GraphQL Directive is only valid if all its arguments are uniquely named.\n */\nfunction UniqueArgumentDefinitionNamesRule(context) {\n  return {\n    DirectiveDefinition(directiveNode) {\n      var _directiveNode$argume;\n\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n      /* c8 ignore next */\n      const argumentNodes =\n        (_directiveNode$argume = directiveNode.arguments) !== null &&\n        _directiveNode$argume !== void 0\n          ? _directiveNode$argume\n          : [];\n      return checkArgUniqueness(`@${directiveNode.name.value}`, argumentNodes);\n    },\n\n    InterfaceTypeDefinition: checkArgUniquenessPerField,\n    InterfaceTypeExtension: checkArgUniquenessPerField,\n    ObjectTypeDefinition: checkArgUniquenessPerField,\n    ObjectTypeExtension: checkArgUniquenessPerField,\n  };\n\n  function checkArgUniquenessPerField(typeNode) {\n    var _typeNode$fields;\n\n    const typeName = typeNode.name.value; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n    /* c8 ignore next */\n\n    const fieldNodes =\n      (_typeNode$fields = typeNode.fields) !== null &&\n      _typeNode$fields !== void 0\n        ? _typeNode$fields\n        : [];\n\n    for (const fieldDef of fieldNodes) {\n      var _fieldDef$arguments;\n\n      const fieldName = fieldDef.name.value; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n      /* c8 ignore next */\n\n      const argumentNodes =\n        (_fieldDef$arguments = fieldDef.arguments) !== null &&\n        _fieldDef$arguments !== void 0\n          ? _fieldDef$arguments\n          : [];\n      checkArgUniqueness(`${typeName}.${fieldName}`, argumentNodes);\n    }\n\n    return false;\n  }\n\n  function checkArgUniqueness(parentName, argumentNodes) {\n    const seenArgs = (0, _groupBy.groupBy)(\n      argumentNodes,\n      (arg) => arg.name.value,\n    );\n\n    for (const [argName, argNodes] of seenArgs) {\n      if (argNodes.length > 1) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Argument \"${parentName}(${argName}:)\" can only be defined once.`,\n            {\n              nodes: argNodes.map((node) => node.name),\n            },\n          ),\n        );\n      }\n    }\n\n    return false;\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.UniqueArgumentNamesRule = UniqueArgumentNamesRule;\n\nvar _groupBy = require('../../jsutils/groupBy.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Unique argument names\n *\n * A GraphQL field or directive is only valid if all supplied arguments are\n * uniquely named.\n *\n * See https://spec.graphql.org/draft/#sec-Argument-Names\n */\nfunction UniqueArgumentNamesRule(context) {\n  return {\n    Field: checkArgUniqueness,\n    Directive: checkArgUniqueness,\n  };\n\n  function checkArgUniqueness(parentNode) {\n    var _parentNode$arguments;\n\n    // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n    /* c8 ignore next */\n    const argumentNodes =\n      (_parentNode$arguments = parentNode.arguments) !== null &&\n      _parentNode$arguments !== void 0\n        ? _parentNode$arguments\n        : [];\n    const seenArgs = (0, _groupBy.groupBy)(\n      argumentNodes,\n      (arg) => arg.name.value,\n    );\n\n    for (const [argName, argNodes] of seenArgs) {\n      if (argNodes.length > 1) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `There can be only one argument named \"${argName}\".`,\n            {\n              nodes: argNodes.map((node) => node.name),\n            },\n          ),\n        );\n      }\n    }\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.UniqueDirectiveNamesRule = UniqueDirectiveNamesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Unique directive names\n *\n * A GraphQL document is only valid if all defined directives have unique names.\n */\nfunction UniqueDirectiveNamesRule(context) {\n  const knownDirectiveNames = Object.create(null);\n  const schema = context.getSchema();\n  return {\n    DirectiveDefinition(node) {\n      const directiveName = node.name.value;\n\n      if (\n        schema !== null &&\n        schema !== void 0 &&\n        schema.getDirective(directiveName)\n      ) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Directive \"@${directiveName}\" already exists in the schema. It cannot be redefined.`,\n            {\n              nodes: node.name,\n            },\n          ),\n        );\n        return;\n      }\n\n      if (knownDirectiveNames[directiveName]) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `There can be only one directive named \"@${directiveName}\".`,\n            {\n              nodes: [knownDirectiveNames[directiveName], node.name],\n            },\n          ),\n        );\n      } else {\n        knownDirectiveNames[directiveName] = node.name;\n      }\n\n      return false;\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.UniqueDirectivesPerLocationRule = UniqueDirectivesPerLocationRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _kinds = require('../../language/kinds.js');\n\nvar _predicates = require('../../language/predicates.js');\n\nvar _directives = require('../../type/directives.js');\n\n/**\n * Unique directive names per location\n *\n * A GraphQL document is only valid if all non-repeatable directives at\n * a given location are uniquely named.\n *\n * See https://spec.graphql.org/draft/#sec-Directives-Are-Unique-Per-Location\n */\nfunction UniqueDirectivesPerLocationRule(context) {\n  const uniqueDirectiveMap = Object.create(null);\n  const schema = context.getSchema();\n  const definedDirectives = schema\n    ? schema.getDirectives()\n    : _directives.specifiedDirectives;\n\n  for (const directive of definedDirectives) {\n    uniqueDirectiveMap[directive.name] = !directive.isRepeatable;\n  }\n\n  const astDefinitions = context.getDocument().definitions;\n\n  for (const def of astDefinitions) {\n    if (def.kind === _kinds.Kind.DIRECTIVE_DEFINITION) {\n      uniqueDirectiveMap[def.name.value] = !def.repeatable;\n    }\n  }\n\n  const schemaDirectives = Object.create(null);\n  const typeDirectivesMap = Object.create(null);\n  return {\n    // Many different AST nodes may contain directives. Rather than listing\n    // them all, just listen for entering any node, and check to see if it\n    // defines any directives.\n    enter(node) {\n      if (!('directives' in node) || !node.directives) {\n        return;\n      }\n\n      let seenDirectives;\n\n      if (\n        node.kind === _kinds.Kind.SCHEMA_DEFINITION ||\n        node.kind === _kinds.Kind.SCHEMA_EXTENSION\n      ) {\n        seenDirectives = schemaDirectives;\n      } else if (\n        (0, _predicates.isTypeDefinitionNode)(node) ||\n        (0, _predicates.isTypeExtensionNode)(node)\n      ) {\n        const typeName = node.name.value;\n        seenDirectives = typeDirectivesMap[typeName];\n\n        if (seenDirectives === undefined) {\n          typeDirectivesMap[typeName] = seenDirectives = Object.create(null);\n        }\n      } else {\n        seenDirectives = Object.create(null);\n      }\n\n      for (const directive of node.directives) {\n        const directiveName = directive.name.value;\n\n        if (uniqueDirectiveMap[directiveName]) {\n          if (seenDirectives[directiveName]) {\n            context.reportError(\n              new _GraphQLError.GraphQLError(\n                `The directive \"@${directiveName}\" can only be used once at this location.`,\n                {\n                  nodes: [seenDirectives[directiveName], directive],\n                },\n              ),\n            );\n          } else {\n            seenDirectives[directiveName] = directive;\n          }\n        }\n      }\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.UniqueEnumValueNamesRule = UniqueEnumValueNamesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _definition = require('../../type/definition.js');\n\n/**\n * Unique enum value names\n *\n * A GraphQL enum type is only valid if all its values are uniquely named.\n */\nfunction UniqueEnumValueNamesRule(context) {\n  const schema = context.getSchema();\n  const existingTypeMap = schema ? schema.getTypeMap() : Object.create(null);\n  const knownValueNames = Object.create(null);\n  return {\n    EnumTypeDefinition: checkValueUniqueness,\n    EnumTypeExtension: checkValueUniqueness,\n  };\n\n  function checkValueUniqueness(node) {\n    var _node$values;\n\n    const typeName = node.name.value;\n\n    if (!knownValueNames[typeName]) {\n      knownValueNames[typeName] = Object.create(null);\n    } // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n    /* c8 ignore next */\n\n    const valueNodes =\n      (_node$values = node.values) !== null && _node$values !== void 0\n        ? _node$values\n        : [];\n    const valueNames = knownValueNames[typeName];\n\n    for (const valueDef of valueNodes) {\n      const valueName = valueDef.name.value;\n      const existingType = existingTypeMap[typeName];\n\n      if (\n        (0, _definition.isEnumType)(existingType) &&\n        existingType.getValue(valueName)\n      ) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Enum value \"${typeName}.${valueName}\" already exists in the schema. It cannot also be defined in this type extension.`,\n            {\n              nodes: valueDef.name,\n            },\n          ),\n        );\n      } else if (valueNames[valueName]) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Enum value \"${typeName}.${valueName}\" can only be defined once.`,\n            {\n              nodes: [valueNames[valueName], valueDef.name],\n            },\n          ),\n        );\n      } else {\n        valueNames[valueName] = valueDef.name;\n      }\n    }\n\n    return false;\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.UniqueFieldDefinitionNamesRule = UniqueFieldDefinitionNamesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _definition = require('../../type/definition.js');\n\n/**\n * Unique field definition names\n *\n * A GraphQL complex type is only valid if all its fields are uniquely named.\n */\nfunction UniqueFieldDefinitionNamesRule(context) {\n  const schema = context.getSchema();\n  const existingTypeMap = schema ? schema.getTypeMap() : Object.create(null);\n  const knownFieldNames = Object.create(null);\n  return {\n    InputObjectTypeDefinition: checkFieldUniqueness,\n    InputObjectTypeExtension: checkFieldUniqueness,\n    InterfaceTypeDefinition: checkFieldUniqueness,\n    InterfaceTypeExtension: checkFieldUniqueness,\n    ObjectTypeDefinition: checkFieldUniqueness,\n    ObjectTypeExtension: checkFieldUniqueness,\n  };\n\n  function checkFieldUniqueness(node) {\n    var _node$fields;\n\n    const typeName = node.name.value;\n\n    if (!knownFieldNames[typeName]) {\n      knownFieldNames[typeName] = Object.create(null);\n    } // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n    /* c8 ignore next */\n\n    const fieldNodes =\n      (_node$fields = node.fields) !== null && _node$fields !== void 0\n        ? _node$fields\n        : [];\n    const fieldNames = knownFieldNames[typeName];\n\n    for (const fieldDef of fieldNodes) {\n      const fieldName = fieldDef.name.value;\n\n      if (hasField(existingTypeMap[typeName], fieldName)) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Field \"${typeName}.${fieldName}\" already exists in the schema. It cannot also be defined in this type extension.`,\n            {\n              nodes: fieldDef.name,\n            },\n          ),\n        );\n      } else if (fieldNames[fieldName]) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Field \"${typeName}.${fieldName}\" can only be defined once.`,\n            {\n              nodes: [fieldNames[fieldName], fieldDef.name],\n            },\n          ),\n        );\n      } else {\n        fieldNames[fieldName] = fieldDef.name;\n      }\n    }\n\n    return false;\n  }\n}\n\nfunction hasField(type, fieldName) {\n  if (\n    (0, _definition.isObjectType)(type) ||\n    (0, _definition.isInterfaceType)(type) ||\n    (0, _definition.isInputObjectType)(type)\n  ) {\n    return type.getFields()[fieldName] != null;\n  }\n\n  return false;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.UniqueFragmentNamesRule = UniqueFragmentNamesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Unique fragment names\n *\n * A GraphQL document is only valid if all defined fragments have unique names.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-Name-Uniqueness\n */\nfunction UniqueFragmentNamesRule(context) {\n  const knownFragmentNames = Object.create(null);\n  return {\n    OperationDefinition: () => false,\n\n    FragmentDefinition(node) {\n      const fragmentName = node.name.value;\n\n      if (knownFragmentNames[fragmentName]) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `There can be only one fragment named \"${fragmentName}\".`,\n            {\n              nodes: [knownFragmentNames[fragmentName], node.name],\n            },\n          ),\n        );\n      } else {\n        knownFragmentNames[fragmentName] = node.name;\n      }\n\n      return false;\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.UniqueInputFieldNamesRule = UniqueInputFieldNamesRule;\n\nvar _invariant = require('../../jsutils/invariant.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Unique input field names\n *\n * A GraphQL input object value is only valid if all supplied fields are\n * uniquely named.\n *\n * See https://spec.graphql.org/draft/#sec-Input-Object-Field-Uniqueness\n */\nfunction UniqueInputFieldNamesRule(context) {\n  const knownNameStack = [];\n  let knownNames = Object.create(null);\n  return {\n    ObjectValue: {\n      enter() {\n        knownNameStack.push(knownNames);\n        knownNames = Object.create(null);\n      },\n\n      leave() {\n        const prevKnownNames = knownNameStack.pop();\n        prevKnownNames || (0, _invariant.invariant)(false);\n        knownNames = prevKnownNames;\n      },\n    },\n\n    ObjectField(node) {\n      const fieldName = node.name.value;\n\n      if (knownNames[fieldName]) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `There can be only one input field named \"${fieldName}\".`,\n            {\n              nodes: [knownNames[fieldName], node.name],\n            },\n          ),\n        );\n      } else {\n        knownNames[fieldName] = node.name;\n      }\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.UniqueOperationNamesRule = UniqueOperationNamesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Unique operation names\n *\n * A GraphQL document is only valid if all defined operations have unique names.\n *\n * See https://spec.graphql.org/draft/#sec-Operation-Name-Uniqueness\n */\nfunction UniqueOperationNamesRule(context) {\n  const knownOperationNames = Object.create(null);\n  return {\n    OperationDefinition(node) {\n      const operationName = node.name;\n\n      if (operationName) {\n        if (knownOperationNames[operationName.value]) {\n          context.reportError(\n            new _GraphQLError.GraphQLError(\n              `There can be only one operation named \"${operationName.value}\".`,\n              {\n                nodes: [\n                  knownOperationNames[operationName.value],\n                  operationName,\n                ],\n              },\n            ),\n          );\n        } else {\n          knownOperationNames[operationName.value] = operationName;\n        }\n      }\n\n      return false;\n    },\n\n    FragmentDefinition: () => false,\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.UniqueOperationTypesRule = UniqueOperationTypesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Unique operation types\n *\n * A GraphQL document is only valid if it has only one type per operation.\n */\nfunction UniqueOperationTypesRule(context) {\n  const schema = context.getSchema();\n  const definedOperationTypes = Object.create(null);\n  const existingOperationTypes = schema\n    ? {\n        query: schema.getQueryType(),\n        mutation: schema.getMutationType(),\n        subscription: schema.getSubscriptionType(),\n      }\n    : {};\n  return {\n    SchemaDefinition: checkOperationTypes,\n    SchemaExtension: checkOperationTypes,\n  };\n\n  function checkOperationTypes(node) {\n    var _node$operationTypes;\n\n    // See: https://github.com/graphql/graphql-js/issues/2203\n\n    /* c8 ignore next */\n    const operationTypesNodes =\n      (_node$operationTypes = node.operationTypes) !== null &&\n      _node$operationTypes !== void 0\n        ? _node$operationTypes\n        : [];\n\n    for (const operationType of operationTypesNodes) {\n      const operation = operationType.operation;\n      const alreadyDefinedOperationType = definedOperationTypes[operation];\n\n      if (existingOperationTypes[operation]) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Type for ${operation} already defined in the schema. It cannot be redefined.`,\n            {\n              nodes: operationType,\n            },\n          ),\n        );\n      } else if (alreadyDefinedOperationType) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `There can be only one ${operation} type in schema.`,\n            {\n              nodes: [alreadyDefinedOperationType, operationType],\n            },\n          ),\n        );\n      } else {\n        definedOperationTypes[operation] = operationType;\n      }\n    }\n\n    return false;\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.UniqueTypeNamesRule = UniqueTypeNamesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Unique type names\n *\n * A GraphQL document is only valid if all defined types have unique names.\n */\nfunction UniqueTypeNamesRule(context) {\n  const knownTypeNames = Object.create(null);\n  const schema = context.getSchema();\n  return {\n    ScalarTypeDefinition: checkTypeName,\n    ObjectTypeDefinition: checkTypeName,\n    InterfaceTypeDefinition: checkTypeName,\n    UnionTypeDefinition: checkTypeName,\n    EnumTypeDefinition: checkTypeName,\n    InputObjectTypeDefinition: checkTypeName,\n  };\n\n  function checkTypeName(node) {\n    const typeName = node.name.value;\n\n    if (schema !== null && schema !== void 0 && schema.getType(typeName)) {\n      context.reportError(\n        new _GraphQLError.GraphQLError(\n          `Type \"${typeName}\" already exists in the schema. It cannot also be defined in this type definition.`,\n          {\n            nodes: node.name,\n          },\n        ),\n      );\n      return;\n    }\n\n    if (knownTypeNames[typeName]) {\n      context.reportError(\n        new _GraphQLError.GraphQLError(\n          `There can be only one type named \"${typeName}\".`,\n          {\n            nodes: [knownTypeNames[typeName], node.name],\n          },\n        ),\n      );\n    } else {\n      knownTypeNames[typeName] = node.name;\n    }\n\n    return false;\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.UniqueVariableNamesRule = UniqueVariableNamesRule;\n\nvar _groupBy = require('../../jsutils/groupBy.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Unique variable names\n *\n * A GraphQL operation is only valid if all its variables are uniquely named.\n */\nfunction UniqueVariableNamesRule(context) {\n  return {\n    OperationDefinition(operationNode) {\n      var _operationNode$variab;\n\n      // See: https://github.com/graphql/graphql-js/issues/2203\n\n      /* c8 ignore next */\n      const variableDefinitions =\n        (_operationNode$variab = operationNode.variableDefinitions) !== null &&\n        _operationNode$variab !== void 0\n          ? _operationNode$variab\n          : [];\n      const seenVariableDefinitions = (0, _groupBy.groupBy)(\n        variableDefinitions,\n        (node) => node.variable.name.value,\n      );\n\n      for (const [variableName, variableNodes] of seenVariableDefinitions) {\n        if (variableNodes.length > 1) {\n          context.reportError(\n            new _GraphQLError.GraphQLError(\n              `There can be only one variable named \"$${variableName}\".`,\n              {\n                nodes: variableNodes.map((node) => node.variable.name),\n              },\n            ),\n          );\n        }\n      }\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.ValuesOfCorrectTypeRule = ValuesOfCorrectTypeRule;\n\nvar _didYouMean = require('../../jsutils/didYouMean.js');\n\nvar _inspect = require('../../jsutils/inspect.js');\n\nvar _keyMap = require('../../jsutils/keyMap.js');\n\nvar _suggestionList = require('../../jsutils/suggestionList.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _printer = require('../../language/printer.js');\n\nvar _definition = require('../../type/definition.js');\n\n/**\n * Value literals of correct type\n *\n * A GraphQL document is only valid if all value literals are of the type\n * expected at their position.\n *\n * See https://spec.graphql.org/draft/#sec-Values-of-Correct-Type\n */\nfunction ValuesOfCorrectTypeRule(context) {\n  return {\n    ListValue(node) {\n      // Note: TypeInfo will traverse into a list's item type, so look to the\n      // parent input type to check if it is a list.\n      const type = (0, _definition.getNullableType)(\n        context.getParentInputType(),\n      );\n\n      if (!(0, _definition.isListType)(type)) {\n        isValidValueNode(context, node);\n        return false; // Don't traverse further.\n      }\n    },\n\n    ObjectValue(node) {\n      const type = (0, _definition.getNamedType)(context.getInputType());\n\n      if (!(0, _definition.isInputObjectType)(type)) {\n        isValidValueNode(context, node);\n        return false; // Don't traverse further.\n      } // Ensure every required field exists.\n\n      const fieldNodeMap = (0, _keyMap.keyMap)(\n        node.fields,\n        (field) => field.name.value,\n      );\n\n      for (const fieldDef of Object.values(type.getFields())) {\n        const fieldNode = fieldNodeMap[fieldDef.name];\n\n        if (!fieldNode && (0, _definition.isRequiredInputField)(fieldDef)) {\n          const typeStr = (0, _inspect.inspect)(fieldDef.type);\n          context.reportError(\n            new _GraphQLError.GraphQLError(\n              `Field \"${type.name}.${fieldDef.name}\" of required type \"${typeStr}\" was not provided.`,\n              {\n                nodes: node,\n              },\n            ),\n          );\n        }\n      }\n    },\n\n    ObjectField(node) {\n      const parentType = (0, _definition.getNamedType)(\n        context.getParentInputType(),\n      );\n      const fieldType = context.getInputType();\n\n      if (!fieldType && (0, _definition.isInputObjectType)(parentType)) {\n        const suggestions = (0, _suggestionList.suggestionList)(\n          node.name.value,\n          Object.keys(parentType.getFields()),\n        );\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Field \"${node.name.value}\" is not defined by type \"${parentType.name}\".` +\n              (0, _didYouMean.didYouMean)(suggestions),\n            {\n              nodes: node,\n            },\n          ),\n        );\n      }\n    },\n\n    NullValue(node) {\n      const type = context.getInputType();\n\n      if ((0, _definition.isNonNullType)(type)) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Expected value of type \"${(0, _inspect.inspect)(\n              type,\n            )}\", found ${(0, _printer.print)(node)}.`,\n            {\n              nodes: node,\n            },\n          ),\n        );\n      }\n    },\n\n    EnumValue: (node) => isValidValueNode(context, node),\n    IntValue: (node) => isValidValueNode(context, node),\n    FloatValue: (node) => isValidValueNode(context, node),\n    StringValue: (node) => isValidValueNode(context, node),\n    BooleanValue: (node) => isValidValueNode(context, node),\n  };\n}\n/**\n * Any value literal may be a valid representation of a Scalar, depending on\n * that scalar type.\n */\n\nfunction isValidValueNode(context, node) {\n  // Report any error at the full type expected by the location.\n  const locationType = context.getInputType();\n\n  if (!locationType) {\n    return;\n  }\n\n  const type = (0, _definition.getNamedType)(locationType);\n\n  if (!(0, _definition.isLeafType)(type)) {\n    const typeStr = (0, _inspect.inspect)(locationType);\n    context.reportError(\n      new _GraphQLError.GraphQLError(\n        `Expected value of type \"${typeStr}\", found ${(0, _printer.print)(\n          node,\n        )}.`,\n        {\n          nodes: node,\n        },\n      ),\n    );\n    return;\n  } // Scalars and Enums determine if a literal value is valid via parseLiteral(),\n  // which may throw or return an invalid value to indicate failure.\n\n  try {\n    const parseResult = type.parseLiteral(\n      node,\n      undefined,\n      /* variables */\n    );\n\n    if (parseResult === undefined) {\n      const typeStr = (0, _inspect.inspect)(locationType);\n      context.reportError(\n        new _GraphQLError.GraphQLError(\n          `Expected value of type \"${typeStr}\", found ${(0, _printer.print)(\n            node,\n          )}.`,\n          {\n            nodes: node,\n          },\n        ),\n      );\n    }\n  } catch (error) {\n    const typeStr = (0, _inspect.inspect)(locationType);\n\n    if (error instanceof _GraphQLError.GraphQLError) {\n      context.reportError(error);\n    } else {\n      context.reportError(\n        new _GraphQLError.GraphQLError(\n          `Expected value of type \"${typeStr}\", found ${(0, _printer.print)(\n            node,\n          )}; ` + error.message,\n          {\n            nodes: node,\n            originalError: error,\n          },\n        ),\n      );\n    }\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.VariablesAreInputTypesRule = VariablesAreInputTypesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _printer = require('../../language/printer.js');\n\nvar _definition = require('../../type/definition.js');\n\nvar _typeFromAST = require('../../utilities/typeFromAST.js');\n\n/**\n * Variables are input types\n *\n * A GraphQL operation is only valid if all the variables it defines are of\n * input types (scalar, enum, or input object).\n *\n * See https://spec.graphql.org/draft/#sec-Variables-Are-Input-Types\n */\nfunction VariablesAreInputTypesRule(context) {\n  return {\n    VariableDefinition(node) {\n      const type = (0, _typeFromAST.typeFromAST)(\n        context.getSchema(),\n        node.type,\n      );\n\n      if (type !== undefined && !(0, _definition.isInputType)(type)) {\n        const variableName = node.variable.name.value;\n        const typeName = (0, _printer.print)(node.type);\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Variable \"$${variableName}\" cannot be non-input type \"${typeName}\".`,\n            {\n              nodes: node.type,\n            },\n          ),\n        );\n      }\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.VariablesInAllowedPositionRule = VariablesInAllowedPositionRule;\n\nvar _inspect = require('../../jsutils/inspect.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _kinds = require('../../language/kinds.js');\n\nvar _definition = require('../../type/definition.js');\n\nvar _typeComparators = require('../../utilities/typeComparators.js');\n\nvar _typeFromAST = require('../../utilities/typeFromAST.js');\n\n/**\n * Variables in allowed position\n *\n * Variable usages must be compatible with the arguments they are passed to.\n *\n * See https://spec.graphql.org/draft/#sec-All-Variable-Usages-are-Allowed\n */\nfunction VariablesInAllowedPositionRule(context) {\n  let varDefMap = Object.create(null);\n  return {\n    OperationDefinition: {\n      enter() {\n        varDefMap = Object.create(null);\n      },\n\n      leave(operation) {\n        const usages = context.getRecursiveVariableUsages(operation);\n\n        for (const { node, type, defaultValue } of usages) {\n          const varName = node.name.value;\n          const varDef = varDefMap[varName];\n\n          if (varDef && type) {\n            // A var type is allowed if it is the same or more strict (e.g. is\n            // a subtype of) than the expected type. It can be more strict if\n            // the variable type is non-null when the expected type is nullable.\n            // If both are list types, the variable item type can be more strict\n            // than the expected item type (contravariant).\n            const schema = context.getSchema();\n            const varType = (0, _typeFromAST.typeFromAST)(schema, varDef.type);\n\n            if (\n              varType &&\n              !allowedVariableUsage(\n                schema,\n                varType,\n                varDef.defaultValue,\n                type,\n                defaultValue,\n              )\n            ) {\n              const varTypeStr = (0, _inspect.inspect)(varType);\n              const typeStr = (0, _inspect.inspect)(type);\n              context.reportError(\n                new _GraphQLError.GraphQLError(\n                  `Variable \"$${varName}\" of type \"${varTypeStr}\" used in position expecting type \"${typeStr}\".`,\n                  {\n                    nodes: [varDef, node],\n                  },\n                ),\n              );\n            }\n          }\n        }\n      },\n    },\n\n    VariableDefinition(node) {\n      varDefMap[node.variable.name.value] = node;\n    },\n  };\n}\n/**\n * Returns true if the variable is allowed in the location it was found,\n * which includes considering if default values exist for either the variable\n * or the location at which it is located.\n */\n\nfunction allowedVariableUsage(\n  schema,\n  varType,\n  varDefaultValue,\n  locationType,\n  locationDefaultValue,\n) {\n  if (\n    (0, _definition.isNonNullType)(locationType) &&\n    !(0, _definition.isNonNullType)(varType)\n  ) {\n    const hasNonNullVariableDefaultValue =\n      varDefaultValue != null && varDefaultValue.kind !== _kinds.Kind.NULL;\n    const hasLocationDefaultValue = locationDefaultValue !== undefined;\n\n    if (!hasNonNullVariableDefaultValue && !hasLocationDefaultValue) {\n      return false;\n    }\n\n    const nullableLocationType = locationType.ofType;\n    return (0, _typeComparators.isTypeSubTypeOf)(\n      schema,\n      varType,\n      nullableLocationType,\n    );\n  }\n\n  return (0, _typeComparators.isTypeSubTypeOf)(schema, varType, locationType);\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.specifiedSDLRules = exports.specifiedRules = void 0;\n\nvar _ExecutableDefinitionsRule = require('./rules/ExecutableDefinitionsRule.js');\n\nvar _FieldsOnCorrectTypeRule = require('./rules/FieldsOnCorrectTypeRule.js');\n\nvar _FragmentsOnCompositeTypesRule = require('./rules/FragmentsOnCompositeTypesRule.js');\n\nvar _KnownArgumentNamesRule = require('./rules/KnownArgumentNamesRule.js');\n\nvar _KnownDirectivesRule = require('./rules/KnownDirectivesRule.js');\n\nvar _KnownFragmentNamesRule = require('./rules/KnownFragmentNamesRule.js');\n\nvar _KnownTypeNamesRule = require('./rules/KnownTypeNamesRule.js');\n\nvar _LoneAnonymousOperationRule = require('./rules/LoneAnonymousOperationRule.js');\n\nvar _LoneSchemaDefinitionRule = require('./rules/LoneSchemaDefinitionRule.js');\n\nvar _NoFragmentCyclesRule = require('./rules/NoFragmentCyclesRule.js');\n\nvar _NoUndefinedVariablesRule = require('./rules/NoUndefinedVariablesRule.js');\n\nvar _NoUnusedFragmentsRule = require('./rules/NoUnusedFragmentsRule.js');\n\nvar _NoUnusedVariablesRule = require('./rules/NoUnusedVariablesRule.js');\n\nvar _OverlappingFieldsCanBeMergedRule = require('./rules/OverlappingFieldsCanBeMergedRule.js');\n\nvar _PossibleFragmentSpreadsRule = require('./rules/PossibleFragmentSpreadsRule.js');\n\nvar _PossibleTypeExtensionsRule = require('./rules/PossibleTypeExtensionsRule.js');\n\nvar _ProvidedRequiredArgumentsRule = require('./rules/ProvidedRequiredArgumentsRule.js');\n\nvar _ScalarLeafsRule = require('./rules/ScalarLeafsRule.js');\n\nvar _SingleFieldSubscriptionsRule = require('./rules/SingleFieldSubscriptionsRule.js');\n\nvar _UniqueArgumentDefinitionNamesRule = require('./rules/UniqueArgumentDefinitionNamesRule.js');\n\nvar _UniqueArgumentNamesRule = require('./rules/UniqueArgumentNamesRule.js');\n\nvar _UniqueDirectiveNamesRule = require('./rules/UniqueDirectiveNamesRule.js');\n\nvar _UniqueDirectivesPerLocationRule = require('./rules/UniqueDirectivesPerLocationRule.js');\n\nvar _UniqueEnumValueNamesRule = require('./rules/UniqueEnumValueNamesRule.js');\n\nvar _UniqueFieldDefinitionNamesRule = require('./rules/UniqueFieldDefinitionNamesRule.js');\n\nvar _UniqueFragmentNamesRule = require('./rules/UniqueFragmentNamesRule.js');\n\nvar _UniqueInputFieldNamesRule = require('./rules/UniqueInputFieldNamesRule.js');\n\nvar _UniqueOperationNamesRule = require('./rules/UniqueOperationNamesRule.js');\n\nvar _UniqueOperationTypesRule = require('./rules/UniqueOperationTypesRule.js');\n\nvar _UniqueTypeNamesRule = require('./rules/UniqueTypeNamesRule.js');\n\nvar _UniqueVariableNamesRule = require('./rules/UniqueVariableNamesRule.js');\n\nvar _ValuesOfCorrectTypeRule = require('./rules/ValuesOfCorrectTypeRule.js');\n\nvar _VariablesAreInputTypesRule = require('./rules/VariablesAreInputTypesRule.js');\n\nvar _VariablesInAllowedPositionRule = require('./rules/VariablesInAllowedPositionRule.js');\n\n// Spec Section: \"Executable Definitions\"\n// Spec Section: \"Field Selections on Objects, Interfaces, and Unions Types\"\n// Spec Section: \"Fragments on Composite Types\"\n// Spec Section: \"Argument Names\"\n// Spec Section: \"Directives Are Defined\"\n// Spec Section: \"Fragment spread target defined\"\n// Spec Section: \"Fragment Spread Type Existence\"\n// Spec Section: \"Lone Anonymous Operation\"\n// SDL-specific validation rules\n// Spec Section: \"Fragments must not form cycles\"\n// Spec Section: \"All Variable Used Defined\"\n// Spec Section: \"Fragments must be used\"\n// Spec Section: \"All Variables Used\"\n// Spec Section: \"Field Selection Merging\"\n// Spec Section: \"Fragment spread is possible\"\n// Spec Section: \"Argument Optionality\"\n// Spec Section: \"Leaf Field Selections\"\n// Spec Section: \"Subscriptions with Single Root Field\"\n// Spec Section: \"Argument Uniqueness\"\n// Spec Section: \"Directives Are Unique Per Location\"\n// Spec Section: \"Fragment Name Uniqueness\"\n// Spec Section: \"Input Object Field Uniqueness\"\n// Spec Section: \"Operation Name Uniqueness\"\n// Spec Section: \"Variable Uniqueness\"\n// Spec Section: \"Value Type Correctness\"\n// Spec Section: \"Variables are Input Types\"\n// Spec Section: \"All Variable Usages Are Allowed\"\n\n/**\n * This set includes all validation rules defined by the GraphQL spec.\n *\n * The order of the rules in this list has been adjusted to lead to the\n * most clear output when encountering multiple validation errors.\n */\nconst specifiedRules = Object.freeze([\n  _ExecutableDefinitionsRule.ExecutableDefinitionsRule,\n  _UniqueOperationNamesRule.UniqueOperationNamesRule,\n  _LoneAnonymousOperationRule.LoneAnonymousOperationRule,\n  _SingleFieldSubscriptionsRule.SingleFieldSubscriptionsRule,\n  _KnownTypeNamesRule.KnownTypeNamesRule,\n  _FragmentsOnCompositeTypesRule.FragmentsOnCompositeTypesRule,\n  _VariablesAreInputTypesRule.VariablesAreInputTypesRule,\n  _ScalarLeafsRule.ScalarLeafsRule,\n  _FieldsOnCorrectTypeRule.FieldsOnCorrectTypeRule,\n  _UniqueFragmentNamesRule.UniqueFragmentNamesRule,\n  _KnownFragmentNamesRule.KnownFragmentNamesRule,\n  _NoUnusedFragmentsRule.NoUnusedFragmentsRule,\n  _PossibleFragmentSpreadsRule.PossibleFragmentSpreadsRule,\n  _NoFragmentCyclesRule.NoFragmentCyclesRule,\n  _UniqueVariableNamesRule.UniqueVariableNamesRule,\n  _NoUndefinedVariablesRule.NoUndefinedVariablesRule,\n  _NoUnusedVariablesRule.NoUnusedVariablesRule,\n  _KnownDirectivesRule.KnownDirectivesRule,\n  _UniqueDirectivesPerLocationRule.UniqueDirectivesPerLocationRule,\n  _KnownArgumentNamesRule.KnownArgumentNamesRule,\n  _UniqueArgumentNamesRule.UniqueArgumentNamesRule,\n  _ValuesOfCorrectTypeRule.ValuesOfCorrectTypeRule,\n  _ProvidedRequiredArgumentsRule.ProvidedRequiredArgumentsRule,\n  _VariablesInAllowedPositionRule.VariablesInAllowedPositionRule,\n  _OverlappingFieldsCanBeMergedRule.OverlappingFieldsCanBeMergedRule,\n  _UniqueInputFieldNamesRule.UniqueInputFieldNamesRule,\n]);\n/**\n * @internal\n */\n\nexports.specifiedRules = specifiedRules;\nconst specifiedSDLRules = Object.freeze([\n  _LoneSchemaDefinitionRule.LoneSchemaDefinitionRule,\n  _UniqueOperationTypesRule.UniqueOperationTypesRule,\n  _UniqueTypeNamesRule.UniqueTypeNamesRule,\n  _UniqueEnumValueNamesRule.UniqueEnumValueNamesRule,\n  _UniqueFieldDefinitionNamesRule.UniqueFieldDefinitionNamesRule,\n  _UniqueArgumentDefinitionNamesRule.UniqueArgumentDefinitionNamesRule,\n  _UniqueDirectiveNamesRule.UniqueDirectiveNamesRule,\n  _KnownTypeNamesRule.KnownTypeNamesRule,\n  _KnownDirectivesRule.KnownDirectivesRule,\n  _UniqueDirectivesPerLocationRule.UniqueDirectivesPerLocationRule,\n  _PossibleTypeExtensionsRule.PossibleTypeExtensionsRule,\n  _KnownArgumentNamesRule.KnownArgumentNamesOnDirectivesRule,\n  _UniqueArgumentNamesRule.UniqueArgumentNamesRule,\n  _UniqueInputFieldNamesRule.UniqueInputFieldNamesRule,\n  _ProvidedRequiredArgumentsRule.ProvidedRequiredArgumentsOnDirectivesRule,\n]);\nexports.specifiedSDLRules = specifiedSDLRules;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.ValidationContext =\n  exports.SDLValidationContext =\n  exports.ASTValidationContext =\n    void 0;\n\nvar _kinds = require('../language/kinds.js');\n\nvar _visitor = require('../language/visitor.js');\n\nvar _TypeInfo = require('../utilities/TypeInfo.js');\n\n/**\n * An instance of this class is passed as the \"this\" context to all validators,\n * allowing access to commonly useful contextual information from within a\n * validation rule.\n */\nclass ASTValidationContext {\n  constructor(ast, onError) {\n    this._ast = ast;\n    this._fragments = undefined;\n    this._fragmentSpreads = new Map();\n    this._recursivelyReferencedFragments = new Map();\n    this._onError = onError;\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'ASTValidationContext';\n  }\n\n  reportError(error) {\n    this._onError(error);\n  }\n\n  getDocument() {\n    return this._ast;\n  }\n\n  getFragment(name) {\n    let fragments;\n\n    if (this._fragments) {\n      fragments = this._fragments;\n    } else {\n      fragments = Object.create(null);\n\n      for (const defNode of this.getDocument().definitions) {\n        if (defNode.kind === _kinds.Kind.FRAGMENT_DEFINITION) {\n          fragments[defNode.name.value] = defNode;\n        }\n      }\n\n      this._fragments = fragments;\n    }\n\n    return fragments[name];\n  }\n\n  getFragmentSpreads(node) {\n    let spreads = this._fragmentSpreads.get(node);\n\n    if (!spreads) {\n      spreads = [];\n      const setsToVisit = [node];\n      let set;\n\n      while ((set = setsToVisit.pop())) {\n        for (const selection of set.selections) {\n          if (selection.kind === _kinds.Kind.FRAGMENT_SPREAD) {\n            spreads.push(selection);\n          } else if (selection.selectionSet) {\n            setsToVisit.push(selection.selectionSet);\n          }\n        }\n      }\n\n      this._fragmentSpreads.set(node, spreads);\n    }\n\n    return spreads;\n  }\n\n  getRecursivelyReferencedFragments(operation) {\n    let fragments = this._recursivelyReferencedFragments.get(operation);\n\n    if (!fragments) {\n      fragments = [];\n      const collectedNames = Object.create(null);\n      const nodesToVisit = [operation.selectionSet];\n      let node;\n\n      while ((node = nodesToVisit.pop())) {\n        for (const spread of this.getFragmentSpreads(node)) {\n          const fragName = spread.name.value;\n\n          if (collectedNames[fragName] !== true) {\n            collectedNames[fragName] = true;\n            const fragment = this.getFragment(fragName);\n\n            if (fragment) {\n              fragments.push(fragment);\n              nodesToVisit.push(fragment.selectionSet);\n            }\n          }\n        }\n      }\n\n      this._recursivelyReferencedFragments.set(operation, fragments);\n    }\n\n    return fragments;\n  }\n}\n\nexports.ASTValidationContext = ASTValidationContext;\n\nclass SDLValidationContext extends ASTValidationContext {\n  constructor(ast, schema, onError) {\n    super(ast, onError);\n    this._schema = schema;\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'SDLValidationContext';\n  }\n\n  getSchema() {\n    return this._schema;\n  }\n}\n\nexports.SDLValidationContext = SDLValidationContext;\n\nclass ValidationContext extends ASTValidationContext {\n  constructor(schema, ast, typeInfo, onError) {\n    super(ast, onError);\n    this._schema = schema;\n    this._typeInfo = typeInfo;\n    this._variableUsages = new Map();\n    this._recursiveVariableUsages = new Map();\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'ValidationContext';\n  }\n\n  getSchema() {\n    return this._schema;\n  }\n\n  getVariableUsages(node) {\n    let usages = this._variableUsages.get(node);\n\n    if (!usages) {\n      const newUsages = [];\n      const typeInfo = new _TypeInfo.TypeInfo(this._schema);\n      (0, _visitor.visit)(\n        node,\n        (0, _TypeInfo.visitWithTypeInfo)(typeInfo, {\n          VariableDefinition: () => false,\n\n          Variable(variable) {\n            newUsages.push({\n              node: variable,\n              type: typeInfo.getInputType(),\n              defaultValue: typeInfo.getDefaultValue(),\n            });\n          },\n        }),\n      );\n      usages = newUsages;\n\n      this._variableUsages.set(node, usages);\n    }\n\n    return usages;\n  }\n\n  getRecursiveVariableUsages(operation) {\n    let usages = this._recursiveVariableUsages.get(operation);\n\n    if (!usages) {\n      usages = this.getVariableUsages(operation);\n\n      for (const frag of this.getRecursivelyReferencedFragments(operation)) {\n        usages = usages.concat(this.getVariableUsages(frag));\n      }\n\n      this._recursiveVariableUsages.set(operation, usages);\n    }\n\n    return usages;\n  }\n\n  getType() {\n    return this._typeInfo.getType();\n  }\n\n  getParentType() {\n    return this._typeInfo.getParentType();\n  }\n\n  getInputType() {\n    return this._typeInfo.getInputType();\n  }\n\n  getParentInputType() {\n    return this._typeInfo.getParentInputType();\n  }\n\n  getFieldDef() {\n    return this._typeInfo.getFieldDef();\n  }\n\n  getDirective() {\n    return this._typeInfo.getDirective();\n  }\n\n  getArgument() {\n    return this._typeInfo.getArgument();\n  }\n\n  getEnumValue() {\n    return this._typeInfo.getEnumValue();\n  }\n}\n\nexports.ValidationContext = ValidationContext;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.assertValidSDL = assertValidSDL;\nexports.assertValidSDLExtension = assertValidSDLExtension;\nexports.validate = validate;\nexports.validateSDL = validateSDL;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _visitor = require('../language/visitor.js');\n\nvar _validate = require('../type/validate.js');\n\nvar _TypeInfo = require('../utilities/TypeInfo.js');\n\nvar _specifiedRules = require('./specifiedRules.js');\n\nvar _ValidationContext = require('./ValidationContext.js');\n\n/**\n * Implements the \"Validation\" section of the spec.\n *\n * Validation runs synchronously, returning an array of encountered errors, or\n * an empty array if no errors were encountered and the document is valid.\n *\n * A list of specific validation rules may be provided. If not provided, the\n * default list of rules defined by the GraphQL specification will be used.\n *\n * Each validation rules is a function which returns a visitor\n * (see the language/visitor API). Visitor methods are expected to return\n * GraphQLErrors, or Arrays of GraphQLErrors when invalid.\n *\n * Validate will stop validation after a `maxErrors` limit has been reached.\n * Attackers can send pathologically invalid queries to induce a DoS attack,\n * so by default `maxErrors` set to 100 errors.\n *\n * Optionally a custom TypeInfo instance may be provided. If not provided, one\n * will be created from the provided schema.\n */\nfunction validate(\n  schema,\n  documentAST,\n  rules = _specifiedRules.specifiedRules,\n  options,\n  /** @deprecated will be removed in 17.0.0 */\n  typeInfo = new _TypeInfo.TypeInfo(schema),\n) {\n  var _options$maxErrors;\n\n  const maxErrors =\n    (_options$maxErrors =\n      options === null || options === void 0 ? void 0 : options.maxErrors) !==\n      null && _options$maxErrors !== void 0\n      ? _options$maxErrors\n      : 100;\n  documentAST || (0, _devAssert.devAssert)(false, 'Must provide document.'); // If the schema used for validation is invalid, throw an error.\n\n  (0, _validate.assertValidSchema)(schema);\n  const abortObj = Object.freeze({});\n  const errors = [];\n  const context = new _ValidationContext.ValidationContext(\n    schema,\n    documentAST,\n    typeInfo,\n    (error) => {\n      if (errors.length >= maxErrors) {\n        errors.push(\n          new _GraphQLError.GraphQLError(\n            'Too many validation errors, error limit reached. Validation aborted.',\n          ),\n        ); // eslint-disable-next-line @typescript-eslint/no-throw-literal\n\n        throw abortObj;\n      }\n\n      errors.push(error);\n    },\n  ); // This uses a specialized visitor which runs multiple visitors in parallel,\n  // while maintaining the visitor skip and break API.\n\n  const visitor = (0, _visitor.visitInParallel)(\n    rules.map((rule) => rule(context)),\n  ); // Visit the whole document with each instance of all provided rules.\n\n  try {\n    (0, _visitor.visit)(\n      documentAST,\n      (0, _TypeInfo.visitWithTypeInfo)(typeInfo, visitor),\n    );\n  } catch (e) {\n    if (e !== abortObj) {\n      throw e;\n    }\n  }\n\n  return errors;\n}\n/**\n * @internal\n */\n\nfunction validateSDL(\n  documentAST,\n  schemaToExtend,\n  rules = _specifiedRules.specifiedSDLRules,\n) {\n  const errors = [];\n  const context = new _ValidationContext.SDLValidationContext(\n    documentAST,\n    schemaToExtend,\n    (error) => {\n      errors.push(error);\n    },\n  );\n  const visitors = rules.map((rule) => rule(context));\n  (0, _visitor.visit)(documentAST, (0, _visitor.visitInParallel)(visitors));\n  return errors;\n}\n/**\n * Utility function which asserts a SDL document is valid by throwing an error\n * if it is invalid.\n *\n * @internal\n */\n\nfunction assertValidSDL(documentAST) {\n  const errors = validateSDL(documentAST);\n\n  if (errors.length !== 0) {\n    throw new Error(errors.map((error) => error.message).join('\\n\\n'));\n  }\n}\n/**\n * Utility function which asserts a SDL document is valid by throwing an error\n * if it is invalid.\n *\n * @internal\n */\n\nfunction assertValidSDLExtension(documentAST, schema) {\n  const errors = validateSDL(documentAST, schema);\n\n  if (errors.length !== 0) {\n    throw new Error(errors.map((error) => error.message).join('\\n\\n'));\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.memoize3 = memoize3;\n\n/**\n * Memoizes the provided three-argument function.\n */\nfunction memoize3(fn) {\n  let cache0;\n  return function memoized(a1, a2, a3) {\n    if (cache0 === undefined) {\n      cache0 = new WeakMap();\n    }\n\n    let cache1 = cache0.get(a1);\n\n    if (cache1 === undefined) {\n      cache1 = new WeakMap();\n      cache0.set(a1, cache1);\n    }\n\n    let cache2 = cache1.get(a2);\n\n    if (cache2 === undefined) {\n      cache2 = new WeakMap();\n      cache1.set(a2, cache2);\n    }\n\n    let fnResult = cache2.get(a3);\n\n    if (fnResult === undefined) {\n      fnResult = fn(a1, a2, a3);\n      cache2.set(a3, fnResult);\n    }\n\n    return fnResult;\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.promiseForObject = promiseForObject;\n\n/**\n * This function transforms a JS object `ObjMap<Promise<T>>` into\n * a `Promise<ObjMap<T>>`\n *\n * This is akin to bluebird's `Promise.props`, but implemented only using\n * `Promise.all` so it will work with any implementation of ES6 promises.\n */\nfunction promiseForObject(object) {\n  return Promise.all(Object.values(object)).then((resolvedValues) => {\n    const resolvedObject = Object.create(null);\n\n    for (const [i, key] of Object.keys(object).entries()) {\n      resolvedObject[key] = resolvedValues[i];\n    }\n\n    return resolvedObject;\n  });\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.promiseReduce = promiseReduce;\n\nvar _isPromise = require('./isPromise.js');\n\n/**\n * Similar to Array.prototype.reduce(), however the reducing callback may return\n * a Promise, in which case reduction will continue after each promise resolves.\n *\n * If the callback does not return a Promise, then this function will also not\n * return a Promise.\n */\nfunction promiseReduce(values, callbackFn, initialValue) {\n  let accumulator = initialValue;\n\n  for (const value of values) {\n    accumulator = (0, _isPromise.isPromise)(accumulator)\n      ? accumulator.then((resolved) => callbackFn(resolved, value))\n      : callbackFn(accumulator, value);\n  }\n\n  return accumulator;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.toError = toError;\n\nvar _inspect = require('./inspect.js');\n\n/**\n * Sometimes a non-error is thrown, wrap it as an Error instance to ensure a consistent Error interface.\n */\nfunction toError(thrownValue) {\n  return thrownValue instanceof Error\n    ? thrownValue\n    : new NonErrorThrown(thrownValue);\n}\n\nclass NonErrorThrown extends Error {\n  constructor(thrownValue) {\n    super('Unexpected error value: ' + (0, _inspect.inspect)(thrownValue));\n    this.name = 'NonErrorThrown';\n    this.thrownValue = thrownValue;\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.locatedError = locatedError;\n\nvar _toError = require('../jsutils/toError.js');\n\nvar _GraphQLError = require('./GraphQLError.js');\n\n/**\n * Given an arbitrary value, presumably thrown while attempting to execute a\n * GraphQL operation, produce a new GraphQLError aware of the location in the\n * document responsible for the original Error.\n */\nfunction locatedError(rawOriginalError, nodes, path) {\n  var _nodes;\n\n  const originalError = (0, _toError.toError)(rawOriginalError); // Note: this uses a brand-check to support GraphQL errors originating from other contexts.\n\n  if (isLocatedGraphQLError(originalError)) {\n    return originalError;\n  }\n\n  return new _GraphQLError.GraphQLError(originalError.message, {\n    nodes:\n      (_nodes = originalError.nodes) !== null && _nodes !== void 0\n        ? _nodes\n        : nodes,\n    source: originalError.source,\n    positions: originalError.positions,\n    path,\n    originalError,\n  });\n}\n\nfunction isLocatedGraphQLError(error) {\n  return Array.isArray(error.path);\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.assertValidExecutionArguments = assertValidExecutionArguments;\nexports.buildExecutionContext = buildExecutionContext;\nexports.buildResolveInfo = buildResolveInfo;\nexports.defaultTypeResolver = exports.defaultFieldResolver = void 0;\nexports.execute = execute;\nexports.executeSync = executeSync;\nexports.getFieldDef = getFieldDef;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _isIterableObject = require('../jsutils/isIterableObject.js');\n\nvar _isObjectLike = require('../jsutils/isObjectLike.js');\n\nvar _isPromise = require('../jsutils/isPromise.js');\n\nvar _memoize = require('../jsutils/memoize3.js');\n\nvar _Path = require('../jsutils/Path.js');\n\nvar _promiseForObject = require('../jsutils/promiseForObject.js');\n\nvar _promiseReduce = require('../jsutils/promiseReduce.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _locatedError = require('../error/locatedError.js');\n\nvar _ast = require('../language/ast.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _introspection = require('../type/introspection.js');\n\nvar _validate = require('../type/validate.js');\n\nvar _collectFields = require('./collectFields.js');\n\nvar _values = require('./values.js');\n\n/**\n * A memoized collection of relevant subfields with regard to the return\n * type. Memoizing ensures the subfields are not repeatedly calculated, which\n * saves overhead when resolving lists of values.\n */\nconst collectSubfields = (0, _memoize.memoize3)(\n  (exeContext, returnType, fieldNodes) =>\n    (0, _collectFields.collectSubfields)(\n      exeContext.schema,\n      exeContext.fragments,\n      exeContext.variableValues,\n      returnType,\n      fieldNodes,\n    ),\n);\n/**\n * Terminology\n *\n * \"Definitions\" are the generic name for top-level statements in the document.\n * Examples of this include:\n * 1) Operations (such as a query)\n * 2) Fragments\n *\n * \"Operations\" are a generic name for requests in the document.\n * Examples of this include:\n * 1) query,\n * 2) mutation\n *\n * \"Selections\" are the definitions that can appear legally and at\n * single level of the query. These include:\n * 1) field references e.g `a`\n * 2) fragment \"spreads\" e.g. `...c`\n * 3) inline fragment \"spreads\" e.g. `...on Type { a }`\n */\n\n/**\n * Data that must be available at all points during query execution.\n *\n * Namely, schema of the type system that is currently executing,\n * and the fragments defined in the query document\n */\n\n/**\n * Implements the \"Executing requests\" section of the GraphQL specification.\n *\n * Returns either a synchronous ExecutionResult (if all encountered resolvers\n * are synchronous), or a Promise of an ExecutionResult that will eventually be\n * resolved and never rejected.\n *\n * If the arguments to this function do not result in a legal execution context,\n * a GraphQLError will be thrown immediately explaining the invalid input.\n */\nfunction execute(args) {\n  // Temporary for v15 to v16 migration. Remove in v17\n  arguments.length < 2 ||\n    (0, _devAssert.devAssert)(\n      false,\n      'graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.',\n    );\n  const { schema, document, variableValues, rootValue } = args; // If arguments are missing or incorrect, throw an error.\n\n  assertValidExecutionArguments(schema, document, variableValues); // If a valid execution context cannot be created due to incorrect arguments,\n  // a \"Response\" with only errors is returned.\n\n  const exeContext = buildExecutionContext(args); // Return early errors if execution context failed.\n\n  if (!('schema' in exeContext)) {\n    return {\n      errors: exeContext,\n    };\n  } // Return a Promise that will eventually resolve to the data described by\n  // The \"Response\" section of the GraphQL specification.\n  //\n  // If errors are encountered while executing a GraphQL field, only that\n  // field and its descendants will be omitted, and sibling fields will still\n  // be executed. An execution which encounters errors will still result in a\n  // resolved Promise.\n  //\n  // Errors from sub-fields of a NonNull type may propagate to the top level,\n  // at which point we still log the error and null the parent field, which\n  // in this case is the entire response.\n\n  try {\n    const { operation } = exeContext;\n    const result = executeOperation(exeContext, operation, rootValue);\n\n    if ((0, _isPromise.isPromise)(result)) {\n      return result.then(\n        (data) => buildResponse(data, exeContext.errors),\n        (error) => {\n          exeContext.errors.push(error);\n          return buildResponse(null, exeContext.errors);\n        },\n      );\n    }\n\n    return buildResponse(result, exeContext.errors);\n  } catch (error) {\n    exeContext.errors.push(error);\n    return buildResponse(null, exeContext.errors);\n  }\n}\n/**\n * Also implements the \"Executing requests\" section of the GraphQL specification.\n * However, it guarantees to complete synchronously (or throw an error) assuming\n * that all field resolvers are also synchronous.\n */\n\nfunction executeSync(args) {\n  const result = execute(args); // Assert that the execution was synchronous.\n\n  if ((0, _isPromise.isPromise)(result)) {\n    throw new Error('GraphQL execution failed to complete synchronously.');\n  }\n\n  return result;\n}\n/**\n * Given a completed execution context and data, build the `{ errors, data }`\n * response defined by the \"Response\" section of the GraphQL specification.\n */\n\nfunction buildResponse(data, errors) {\n  return errors.length === 0\n    ? {\n        data,\n      }\n    : {\n        errors,\n        data,\n      };\n}\n/**\n * Essential assertions before executing to provide developer feedback for\n * improper use of the GraphQL library.\n *\n * @internal\n */\n\nfunction assertValidExecutionArguments(schema, document, rawVariableValues) {\n  document || (0, _devAssert.devAssert)(false, 'Must provide document.'); // If the schema used for execution is invalid, throw an error.\n\n  (0, _validate.assertValidSchema)(schema); // Variables, if provided, must be an object.\n\n  rawVariableValues == null ||\n    (0, _isObjectLike.isObjectLike)(rawVariableValues) ||\n    (0, _devAssert.devAssert)(\n      false,\n      'Variables must be provided as an Object where each property is a variable value. Perhaps look to see if an unparsed JSON string was provided.',\n    );\n}\n/**\n * Constructs a ExecutionContext object from the arguments passed to\n * execute, which we will pass throughout the other execution methods.\n *\n * Throws a GraphQLError if a valid execution context cannot be created.\n *\n * @internal\n */\n\nfunction buildExecutionContext(args) {\n  var _definition$name, _operation$variableDe;\n\n  const {\n    schema,\n    document,\n    rootValue,\n    contextValue,\n    variableValues: rawVariableValues,\n    operationName,\n    fieldResolver,\n    typeResolver,\n    subscribeFieldResolver,\n  } = args;\n  let operation;\n  const fragments = Object.create(null);\n\n  for (const definition of document.definitions) {\n    switch (definition.kind) {\n      case _kinds.Kind.OPERATION_DEFINITION:\n        if (operationName == null) {\n          if (operation !== undefined) {\n            return [\n              new _GraphQLError.GraphQLError(\n                'Must provide operation name if query contains multiple operations.',\n              ),\n            ];\n          }\n\n          operation = definition;\n        } else if (\n          ((_definition$name = definition.name) === null ||\n          _definition$name === void 0\n            ? void 0\n            : _definition$name.value) === operationName\n        ) {\n          operation = definition;\n        }\n\n        break;\n\n      case _kinds.Kind.FRAGMENT_DEFINITION:\n        fragments[definition.name.value] = definition;\n        break;\n\n      default: // ignore non-executable definitions\n    }\n  }\n\n  if (!operation) {\n    if (operationName != null) {\n      return [\n        new _GraphQLError.GraphQLError(\n          `Unknown operation named \"${operationName}\".`,\n        ),\n      ];\n    }\n\n    return [new _GraphQLError.GraphQLError('Must provide an operation.')];\n  } // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n  /* c8 ignore next */\n\n  const variableDefinitions =\n    (_operation$variableDe = operation.variableDefinitions) !== null &&\n    _operation$variableDe !== void 0\n      ? _operation$variableDe\n      : [];\n  const coercedVariableValues = (0, _values.getVariableValues)(\n    schema,\n    variableDefinitions,\n    rawVariableValues !== null && rawVariableValues !== void 0\n      ? rawVariableValues\n      : {},\n    {\n      maxErrors: 50,\n    },\n  );\n\n  if (coercedVariableValues.errors) {\n    return coercedVariableValues.errors;\n  }\n\n  return {\n    schema,\n    fragments,\n    rootValue,\n    contextValue,\n    operation,\n    variableValues: coercedVariableValues.coerced,\n    fieldResolver:\n      fieldResolver !== null && fieldResolver !== void 0\n        ? fieldResolver\n        : defaultFieldResolver,\n    typeResolver:\n      typeResolver !== null && typeResolver !== void 0\n        ? typeResolver\n        : defaultTypeResolver,\n    subscribeFieldResolver:\n      subscribeFieldResolver !== null && subscribeFieldResolver !== void 0\n        ? subscribeFieldResolver\n        : defaultFieldResolver,\n    errors: [],\n  };\n}\n/**\n * Implements the \"Executing operations\" section of the spec.\n */\n\nfunction executeOperation(exeContext, operation, rootValue) {\n  const rootType = exeContext.schema.getRootType(operation.operation);\n\n  if (rootType == null) {\n    throw new _GraphQLError.GraphQLError(\n      `Schema is not configured to execute ${operation.operation} operation.`,\n      {\n        nodes: operation,\n      },\n    );\n  }\n\n  const rootFields = (0, _collectFields.collectFields)(\n    exeContext.schema,\n    exeContext.fragments,\n    exeContext.variableValues,\n    rootType,\n    operation.selectionSet,\n  );\n  const path = undefined;\n\n  switch (operation.operation) {\n    case _ast.OperationTypeNode.QUERY:\n      return executeFields(exeContext, rootType, rootValue, path, rootFields);\n\n    case _ast.OperationTypeNode.MUTATION:\n      return executeFieldsSerially(\n        exeContext,\n        rootType,\n        rootValue,\n        path,\n        rootFields,\n      );\n\n    case _ast.OperationTypeNode.SUBSCRIPTION:\n      // TODO: deprecate `subscribe` and move all logic here\n      // Temporary solution until we finish merging execute and subscribe together\n      return executeFields(exeContext, rootType, rootValue, path, rootFields);\n  }\n}\n/**\n * Implements the \"Executing selection sets\" section of the spec\n * for fields that must be executed serially.\n */\n\nfunction executeFieldsSerially(\n  exeContext,\n  parentType,\n  sourceValue,\n  path,\n  fields,\n) {\n  return (0, _promiseReduce.promiseReduce)(\n    fields.entries(),\n    (results, [responseName, fieldNodes]) => {\n      const fieldPath = (0, _Path.addPath)(path, responseName, parentType.name);\n      const result = executeField(\n        exeContext,\n        parentType,\n        sourceValue,\n        fieldNodes,\n        fieldPath,\n      );\n\n      if (result === undefined) {\n        return results;\n      }\n\n      if ((0, _isPromise.isPromise)(result)) {\n        return result.then((resolvedResult) => {\n          results[responseName] = resolvedResult;\n          return results;\n        });\n      }\n\n      results[responseName] = result;\n      return results;\n    },\n    Object.create(null),\n  );\n}\n/**\n * Implements the \"Executing selection sets\" section of the spec\n * for fields that may be executed in parallel.\n */\n\nfunction executeFields(exeContext, parentType, sourceValue, path, fields) {\n  const results = Object.create(null);\n  let containsPromise = false;\n\n  for (const [responseName, fieldNodes] of fields.entries()) {\n    const fieldPath = (0, _Path.addPath)(path, responseName, parentType.name);\n    const result = executeField(\n      exeContext,\n      parentType,\n      sourceValue,\n      fieldNodes,\n      fieldPath,\n    );\n\n    if (result !== undefined) {\n      results[responseName] = result;\n\n      if ((0, _isPromise.isPromise)(result)) {\n        containsPromise = true;\n      }\n    }\n  } // If there are no promises, we can just return the object\n\n  if (!containsPromise) {\n    return results;\n  } // Otherwise, results is a map from field name to the result of resolving that\n  // field, which is possibly a promise. Return a promise that will return this\n  // same map, but with any promises replaced with the values they resolved to.\n\n  return (0, _promiseForObject.promiseForObject)(results);\n}\n/**\n * Implements the \"Executing fields\" section of the spec\n * In particular, this function figures out the value that the field returns by\n * calling its resolve function, then calls completeValue to complete promises,\n * serialize scalars, or execute the sub-selection-set for objects.\n */\n\nfunction executeField(exeContext, parentType, source, fieldNodes, path) {\n  var _fieldDef$resolve;\n\n  const fieldDef = getFieldDef(exeContext.schema, parentType, fieldNodes[0]);\n\n  if (!fieldDef) {\n    return;\n  }\n\n  const returnType = fieldDef.type;\n  const resolveFn =\n    (_fieldDef$resolve = fieldDef.resolve) !== null &&\n    _fieldDef$resolve !== void 0\n      ? _fieldDef$resolve\n      : exeContext.fieldResolver;\n  const info = buildResolveInfo(\n    exeContext,\n    fieldDef,\n    fieldNodes,\n    parentType,\n    path,\n  ); // Get the resolve function, regardless of if its result is normal or abrupt (error).\n\n  try {\n    // Build a JS object of arguments from the field.arguments AST, using the\n    // variables scope to fulfill any variable references.\n    // TODO: find a way to memoize, in case this field is within a List type.\n    const args = (0, _values.getArgumentValues)(\n      fieldDef,\n      fieldNodes[0],\n      exeContext.variableValues,\n    ); // The resolve function's optional third argument is a context value that\n    // is provided to every resolve function within an execution. It is commonly\n    // used to represent an authenticated user, or request-specific caches.\n\n    const contextValue = exeContext.contextValue;\n    const result = resolveFn(source, args, contextValue, info);\n    let completed;\n\n    if ((0, _isPromise.isPromise)(result)) {\n      completed = result.then((resolved) =>\n        completeValue(exeContext, returnType, fieldNodes, info, path, resolved),\n      );\n    } else {\n      completed = completeValue(\n        exeContext,\n        returnType,\n        fieldNodes,\n        info,\n        path,\n        result,\n      );\n    }\n\n    if ((0, _isPromise.isPromise)(completed)) {\n      // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n      // to take a second callback for the error case.\n      return completed.then(undefined, (rawError) => {\n        const error = (0, _locatedError.locatedError)(\n          rawError,\n          fieldNodes,\n          (0, _Path.pathToArray)(path),\n        );\n        return handleFieldError(error, returnType, exeContext);\n      });\n    }\n\n    return completed;\n  } catch (rawError) {\n    const error = (0, _locatedError.locatedError)(\n      rawError,\n      fieldNodes,\n      (0, _Path.pathToArray)(path),\n    );\n    return handleFieldError(error, returnType, exeContext);\n  }\n}\n/**\n * @internal\n */\n\nfunction buildResolveInfo(exeContext, fieldDef, fieldNodes, parentType, path) {\n  // The resolve function's optional fourth argument is a collection of\n  // information about the current execution state.\n  return {\n    fieldName: fieldDef.name,\n    fieldNodes,\n    returnType: fieldDef.type,\n    parentType,\n    path,\n    schema: exeContext.schema,\n    fragments: exeContext.fragments,\n    rootValue: exeContext.rootValue,\n    operation: exeContext.operation,\n    variableValues: exeContext.variableValues,\n  };\n}\n\nfunction handleFieldError(error, returnType, exeContext) {\n  // If the field type is non-nullable, then it is resolved without any\n  // protection from errors, however it still properly locates the error.\n  if ((0, _definition.isNonNullType)(returnType)) {\n    throw error;\n  } // Otherwise, error protection is applied, logging the error and resolving\n  // a null value for this field if one is encountered.\n\n  exeContext.errors.push(error);\n  return null;\n}\n/**\n * Implements the instructions for completeValue as defined in the\n * \"Value Completion\" section of the spec.\n *\n * If the field type is Non-Null, then this recursively completes the value\n * for the inner type. It throws a field error if that completion returns null,\n * as per the \"Nullability\" section of the spec.\n *\n * If the field type is a List, then this recursively completes the value\n * for the inner type on each item in the list.\n *\n * If the field type is a Scalar or Enum, ensures the completed value is a legal\n * value of the type by calling the `serialize` method of GraphQL type\n * definition.\n *\n * If the field is an abstract type, determine the runtime type of the value\n * and then complete based on that type\n *\n * Otherwise, the field type expects a sub-selection set, and will complete the\n * value by executing all sub-selections.\n */\n\nfunction completeValue(exeContext, returnType, fieldNodes, info, path, result) {\n  // If result is an Error, throw a located error.\n  if (result instanceof Error) {\n    throw result;\n  } // If field type is NonNull, complete for inner type, and throw field error\n  // if result is null.\n\n  if ((0, _definition.isNonNullType)(returnType)) {\n    const completed = completeValue(\n      exeContext,\n      returnType.ofType,\n      fieldNodes,\n      info,\n      path,\n      result,\n    );\n\n    if (completed === null) {\n      throw new Error(\n        `Cannot return null for non-nullable field ${info.parentType.name}.${info.fieldName}.`,\n      );\n    }\n\n    return completed;\n  } // If result value is null or undefined then return null.\n\n  if (result == null) {\n    return null;\n  } // If field type is List, complete each item in the list with the inner type\n\n  if ((0, _definition.isListType)(returnType)) {\n    return completeListValue(\n      exeContext,\n      returnType,\n      fieldNodes,\n      info,\n      path,\n      result,\n    );\n  } // If field type is a leaf type, Scalar or Enum, serialize to a valid value,\n  // returning null if serialization is not possible.\n\n  if ((0, _definition.isLeafType)(returnType)) {\n    return completeLeafValue(returnType, result);\n  } // If field type is an abstract type, Interface or Union, determine the\n  // runtime Object type and complete for that type.\n\n  if ((0, _definition.isAbstractType)(returnType)) {\n    return completeAbstractValue(\n      exeContext,\n      returnType,\n      fieldNodes,\n      info,\n      path,\n      result,\n    );\n  } // If field type is Object, execute and complete all sub-selections.\n\n  if ((0, _definition.isObjectType)(returnType)) {\n    return completeObjectValue(\n      exeContext,\n      returnType,\n      fieldNodes,\n      info,\n      path,\n      result,\n    );\n  }\n  /* c8 ignore next 6 */\n  // Not reachable, all possible output types have been considered.\n\n  false ||\n    (0, _invariant.invariant)(\n      false,\n      'Cannot complete value of unexpected output type: ' +\n        (0, _inspect.inspect)(returnType),\n    );\n}\n/**\n * Complete a list value by completing each item in the list with the\n * inner type\n */\n\nfunction completeListValue(\n  exeContext,\n  returnType,\n  fieldNodes,\n  info,\n  path,\n  result,\n) {\n  if (!(0, _isIterableObject.isIterableObject)(result)) {\n    throw new _GraphQLError.GraphQLError(\n      `Expected Iterable, but did not find one for field \"${info.parentType.name}.${info.fieldName}\".`,\n    );\n  } // This is specified as a simple map, however we're optimizing the path\n  // where the list contains no Promises by avoiding creating another Promise.\n\n  const itemType = returnType.ofType;\n  let containsPromise = false;\n  const completedResults = Array.from(result, (item, index) => {\n    // No need to modify the info object containing the path,\n    // since from here on it is not ever accessed by resolver functions.\n    const itemPath = (0, _Path.addPath)(path, index, undefined);\n\n    try {\n      let completedItem;\n\n      if ((0, _isPromise.isPromise)(item)) {\n        completedItem = item.then((resolved) =>\n          completeValue(\n            exeContext,\n            itemType,\n            fieldNodes,\n            info,\n            itemPath,\n            resolved,\n          ),\n        );\n      } else {\n        completedItem = completeValue(\n          exeContext,\n          itemType,\n          fieldNodes,\n          info,\n          itemPath,\n          item,\n        );\n      }\n\n      if ((0, _isPromise.isPromise)(completedItem)) {\n        containsPromise = true; // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n        // to take a second callback for the error case.\n\n        return completedItem.then(undefined, (rawError) => {\n          const error = (0, _locatedError.locatedError)(\n            rawError,\n            fieldNodes,\n            (0, _Path.pathToArray)(itemPath),\n          );\n          return handleFieldError(error, itemType, exeContext);\n        });\n      }\n\n      return completedItem;\n    } catch (rawError) {\n      const error = (0, _locatedError.locatedError)(\n        rawError,\n        fieldNodes,\n        (0, _Path.pathToArray)(itemPath),\n      );\n      return handleFieldError(error, itemType, exeContext);\n    }\n  });\n  return containsPromise ? Promise.all(completedResults) : completedResults;\n}\n/**\n * Complete a Scalar or Enum by serializing to a valid value, returning\n * null if serialization is not possible.\n */\n\nfunction completeLeafValue(returnType, result) {\n  const serializedResult = returnType.serialize(result);\n\n  if (serializedResult == null) {\n    throw new Error(\n      `Expected \\`${(0, _inspect.inspect)(returnType)}.serialize(${(0,\n      _inspect.inspect)(result)})\\` to ` +\n        `return non-nullable value, returned: ${(0, _inspect.inspect)(\n          serializedResult,\n        )}`,\n    );\n  }\n\n  return serializedResult;\n}\n/**\n * Complete a value of an abstract type by determining the runtime object type\n * of that value, then complete the value for that type.\n */\n\nfunction completeAbstractValue(\n  exeContext,\n  returnType,\n  fieldNodes,\n  info,\n  path,\n  result,\n) {\n  var _returnType$resolveTy;\n\n  const resolveTypeFn =\n    (_returnType$resolveTy = returnType.resolveType) !== null &&\n    _returnType$resolveTy !== void 0\n      ? _returnType$resolveTy\n      : exeContext.typeResolver;\n  const contextValue = exeContext.contextValue;\n  const runtimeType = resolveTypeFn(result, contextValue, info, returnType);\n\n  if ((0, _isPromise.isPromise)(runtimeType)) {\n    return runtimeType.then((resolvedRuntimeType) =>\n      completeObjectValue(\n        exeContext,\n        ensureValidRuntimeType(\n          resolvedRuntimeType,\n          exeContext,\n          returnType,\n          fieldNodes,\n          info,\n          result,\n        ),\n        fieldNodes,\n        info,\n        path,\n        result,\n      ),\n    );\n  }\n\n  return completeObjectValue(\n    exeContext,\n    ensureValidRuntimeType(\n      runtimeType,\n      exeContext,\n      returnType,\n      fieldNodes,\n      info,\n      result,\n    ),\n    fieldNodes,\n    info,\n    path,\n    result,\n  );\n}\n\nfunction ensureValidRuntimeType(\n  runtimeTypeName,\n  exeContext,\n  returnType,\n  fieldNodes,\n  info,\n  result,\n) {\n  if (runtimeTypeName == null) {\n    throw new _GraphQLError.GraphQLError(\n      `Abstract type \"${returnType.name}\" must resolve to an Object type at runtime for field \"${info.parentType.name}.${info.fieldName}\". Either the \"${returnType.name}\" type should provide a \"resolveType\" function or each possible type should provide an \"isTypeOf\" function.`,\n      fieldNodes,\n    );\n  } // releases before 16.0.0 supported returning `GraphQLObjectType` from `resolveType`\n  // TODO: remove in 17.0.0 release\n\n  if ((0, _definition.isObjectType)(runtimeTypeName)) {\n    throw new _GraphQLError.GraphQLError(\n      'Support for returning GraphQLObjectType from resolveType was removed in graphql-js@16.0.0 please return type name instead.',\n    );\n  }\n\n  if (typeof runtimeTypeName !== 'string') {\n    throw new _GraphQLError.GraphQLError(\n      `Abstract type \"${returnType.name}\" must resolve to an Object type at runtime for field \"${info.parentType.name}.${info.fieldName}\" with ` +\n        `value ${(0, _inspect.inspect)(result)}, received \"${(0,\n        _inspect.inspect)(runtimeTypeName)}\".`,\n    );\n  }\n\n  const runtimeType = exeContext.schema.getType(runtimeTypeName);\n\n  if (runtimeType == null) {\n    throw new _GraphQLError.GraphQLError(\n      `Abstract type \"${returnType.name}\" was resolved to a type \"${runtimeTypeName}\" that does not exist inside the schema.`,\n      {\n        nodes: fieldNodes,\n      },\n    );\n  }\n\n  if (!(0, _definition.isObjectType)(runtimeType)) {\n    throw new _GraphQLError.GraphQLError(\n      `Abstract type \"${returnType.name}\" was resolved to a non-object type \"${runtimeTypeName}\".`,\n      {\n        nodes: fieldNodes,\n      },\n    );\n  }\n\n  if (!exeContext.schema.isSubType(returnType, runtimeType)) {\n    throw new _GraphQLError.GraphQLError(\n      `Runtime Object type \"${runtimeType.name}\" is not a possible type for \"${returnType.name}\".`,\n      {\n        nodes: fieldNodes,\n      },\n    );\n  }\n\n  return runtimeType;\n}\n/**\n * Complete an Object value by executing all sub-selections.\n */\n\nfunction completeObjectValue(\n  exeContext,\n  returnType,\n  fieldNodes,\n  info,\n  path,\n  result,\n) {\n  // Collect sub-fields to execute to complete this value.\n  const subFieldNodes = collectSubfields(exeContext, returnType, fieldNodes); // If there is an isTypeOf predicate function, call it with the\n  // current result. If isTypeOf returns false, then raise an error rather\n  // than continuing execution.\n\n  if (returnType.isTypeOf) {\n    const isTypeOf = returnType.isTypeOf(result, exeContext.contextValue, info);\n\n    if ((0, _isPromise.isPromise)(isTypeOf)) {\n      return isTypeOf.then((resolvedIsTypeOf) => {\n        if (!resolvedIsTypeOf) {\n          throw invalidReturnTypeError(returnType, result, fieldNodes);\n        }\n\n        return executeFields(\n          exeContext,\n          returnType,\n          result,\n          path,\n          subFieldNodes,\n        );\n      });\n    }\n\n    if (!isTypeOf) {\n      throw invalidReturnTypeError(returnType, result, fieldNodes);\n    }\n  }\n\n  return executeFields(exeContext, returnType, result, path, subFieldNodes);\n}\n\nfunction invalidReturnTypeError(returnType, result, fieldNodes) {\n  return new _GraphQLError.GraphQLError(\n    `Expected value of type \"${returnType.name}\" but got: ${(0,\n    _inspect.inspect)(result)}.`,\n    {\n      nodes: fieldNodes,\n    },\n  );\n}\n/**\n * If a resolveType function is not given, then a default resolve behavior is\n * used which attempts two strategies:\n *\n * First, See if the provided value has a `__typename` field defined, if so, use\n * that value as name of the resolved type.\n *\n * Otherwise, test each possible type for the abstract type by calling\n * isTypeOf for the object being coerced, returning the first type that matches.\n */\n\nconst defaultTypeResolver = function (value, contextValue, info, abstractType) {\n  // First, look for `__typename`.\n  if (\n    (0, _isObjectLike.isObjectLike)(value) &&\n    typeof value.__typename === 'string'\n  ) {\n    return value.__typename;\n  } // Otherwise, test each possible type.\n\n  const possibleTypes = info.schema.getPossibleTypes(abstractType);\n  const promisedIsTypeOfResults = [];\n\n  for (let i = 0; i < possibleTypes.length; i++) {\n    const type = possibleTypes[i];\n\n    if (type.isTypeOf) {\n      const isTypeOfResult = type.isTypeOf(value, contextValue, info);\n\n      if ((0, _isPromise.isPromise)(isTypeOfResult)) {\n        promisedIsTypeOfResults[i] = isTypeOfResult;\n      } else if (isTypeOfResult) {\n        return type.name;\n      }\n    }\n  }\n\n  if (promisedIsTypeOfResults.length) {\n    return Promise.all(promisedIsTypeOfResults).then((isTypeOfResults) => {\n      for (let i = 0; i < isTypeOfResults.length; i++) {\n        if (isTypeOfResults[i]) {\n          return possibleTypes[i].name;\n        }\n      }\n    });\n  }\n};\n/**\n * If a resolve function is not given, then a default resolve behavior is used\n * which takes the property of the source object of the same name as the field\n * and returns it as the result, or if it's a function, returns the result\n * of calling that function while passing along args and context value.\n */\n\nexports.defaultTypeResolver = defaultTypeResolver;\n\nconst defaultFieldResolver = function (source, args, contextValue, info) {\n  // ensure source is a value for which property access is acceptable.\n  if ((0, _isObjectLike.isObjectLike)(source) || typeof source === 'function') {\n    const property = source[info.fieldName];\n\n    if (typeof property === 'function') {\n      return source[info.fieldName](args, contextValue, info);\n    }\n\n    return property;\n  }\n};\n/**\n * This method looks up the field on the given type definition.\n * It has special casing for the three introspection fields,\n * __schema, __type and __typename. __typename is special because\n * it can always be queried as a field, even in situations where no\n * other fields are allowed, like on a Union. __schema and __type\n * could get automatically added to the query type, but that would\n * require mutating type definitions, which would cause issues.\n *\n * @internal\n */\n\nexports.defaultFieldResolver = defaultFieldResolver;\n\nfunction getFieldDef(schema, parentType, fieldNode) {\n  const fieldName = fieldNode.name.value;\n\n  if (\n    fieldName === _introspection.SchemaMetaFieldDef.name &&\n    schema.getQueryType() === parentType\n  ) {\n    return _introspection.SchemaMetaFieldDef;\n  } else if (\n    fieldName === _introspection.TypeMetaFieldDef.name &&\n    schema.getQueryType() === parentType\n  ) {\n    return _introspection.TypeMetaFieldDef;\n  } else if (fieldName === _introspection.TypeNameMetaFieldDef.name) {\n    return _introspection.TypeNameMetaFieldDef;\n  }\n\n  return parentType.getFields()[fieldName];\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.graphql = graphql;\nexports.graphqlSync = graphqlSync;\n\nvar _devAssert = require('./jsutils/devAssert.js');\n\nvar _isPromise = require('./jsutils/isPromise.js');\n\nvar _parser = require('./language/parser.js');\n\nvar _validate = require('./type/validate.js');\n\nvar _validate2 = require('./validation/validate.js');\n\nvar _execute = require('./execution/execute.js');\n\nfunction graphql(args) {\n  // Always return a Promise for a consistent API.\n  return new Promise((resolve) => resolve(graphqlImpl(args)));\n}\n/**\n * The graphqlSync function also fulfills GraphQL operations by parsing,\n * validating, and executing a GraphQL document along side a GraphQL schema.\n * However, it guarantees to complete synchronously (or throw an error) assuming\n * that all field resolvers are also synchronous.\n */\n\nfunction graphqlSync(args) {\n  const result = graphqlImpl(args); // Assert that the execution was synchronous.\n\n  if ((0, _isPromise.isPromise)(result)) {\n    throw new Error('GraphQL execution failed to complete synchronously.');\n  }\n\n  return result;\n}\n\nfunction graphqlImpl(args) {\n  // Temporary for v15 to v16 migration. Remove in v17\n  arguments.length < 2 ||\n    (0, _devAssert.devAssert)(\n      false,\n      'graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.',\n    );\n  const {\n    schema,\n    source,\n    rootValue,\n    contextValue,\n    variableValues,\n    operationName,\n    fieldResolver,\n    typeResolver,\n  } = args; // Validate Schema\n\n  const schemaValidationErrors = (0, _validate.validateSchema)(schema);\n\n  if (schemaValidationErrors.length > 0) {\n    return {\n      errors: schemaValidationErrors,\n    };\n  } // Parse\n\n  let document;\n\n  try {\n    document = (0, _parser.parse)(source);\n  } catch (syntaxError) {\n    return {\n      errors: [syntaxError],\n    };\n  } // Validate\n\n  const validationErrors = (0, _validate2.validate)(schema, document);\n\n  if (validationErrors.length > 0) {\n    return {\n      errors: validationErrors,\n    };\n  } // Execute\n\n  return (0, _execute.execute)({\n    schema,\n    document,\n    rootValue,\n    contextValue,\n    variableValues,\n    operationName,\n    fieldResolver,\n    typeResolver,\n  });\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nObject.defineProperty(exports, 'DEFAULT_DEPRECATION_REASON', {\n  enumerable: true,\n  get: function () {\n    return _directives.DEFAULT_DEPRECATION_REASON;\n  },\n});\nObject.defineProperty(exports, 'GRAPHQL_MAX_INT', {\n  enumerable: true,\n  get: function () {\n    return _scalars.GRAPHQL_MAX_INT;\n  },\n});\nObject.defineProperty(exports, 'GRAPHQL_MIN_INT', {\n  enumerable: true,\n  get: function () {\n    return _scalars.GRAPHQL_MIN_INT;\n  },\n});\nObject.defineProperty(exports, 'GraphQLBoolean', {\n  enumerable: true,\n  get: function () {\n    return _scalars.GraphQLBoolean;\n  },\n});\nObject.defineProperty(exports, 'GraphQLDeprecatedDirective', {\n  enumerable: true,\n  get: function () {\n    return _directives.GraphQLDeprecatedDirective;\n  },\n});\nObject.defineProperty(exports, 'GraphQLDirective', {\n  enumerable: true,\n  get: function () {\n    return _directives.GraphQLDirective;\n  },\n});\nObject.defineProperty(exports, 'GraphQLEnumType', {\n  enumerable: true,\n  get: function () {\n    return _definition.GraphQLEnumType;\n  },\n});\nObject.defineProperty(exports, 'GraphQLFloat', {\n  enumerable: true,\n  get: function () {\n    return _scalars.GraphQLFloat;\n  },\n});\nObject.defineProperty(exports, 'GraphQLID', {\n  enumerable: true,\n  get: function () {\n    return _scalars.GraphQLID;\n  },\n});\nObject.defineProperty(exports, 'GraphQLIncludeDirective', {\n  enumerable: true,\n  get: function () {\n    return _directives.GraphQLIncludeDirective;\n  },\n});\nObject.defineProperty(exports, 'GraphQLInputObjectType', {\n  enumerable: true,\n  get: function () {\n    return _definition.GraphQLInputObjectType;\n  },\n});\nObject.defineProperty(exports, 'GraphQLInt', {\n  enumerable: true,\n  get: function () {\n    return _scalars.GraphQLInt;\n  },\n});\nObject.defineProperty(exports, 'GraphQLInterfaceType', {\n  enumerable: true,\n  get: function () {\n    return _definition.GraphQLInterfaceType;\n  },\n});\nObject.defineProperty(exports, 'GraphQLList', {\n  enumerable: true,\n  get: function () {\n    return _definition.GraphQLList;\n  },\n});\nObject.defineProperty(exports, 'GraphQLNonNull', {\n  enumerable: true,\n  get: function () {\n    return _definition.GraphQLNonNull;\n  },\n});\nObject.defineProperty(exports, 'GraphQLObjectType', {\n  enumerable: true,\n  get: function () {\n    return _definition.GraphQLObjectType;\n  },\n});\nObject.defineProperty(exports, 'GraphQLScalarType', {\n  enumerable: true,\n  get: function () {\n    return _definition.GraphQLScalarType;\n  },\n});\nObject.defineProperty(exports, 'GraphQLSchema', {\n  enumerable: true,\n  get: function () {\n    return _schema.GraphQLSchema;\n  },\n});\nObject.defineProperty(exports, 'GraphQLSkipDirective', {\n  enumerable: true,\n  get: function () {\n    return _directives.GraphQLSkipDirective;\n  },\n});\nObject.defineProperty(exports, 'GraphQLSpecifiedByDirective', {\n  enumerable: true,\n  get: function () {\n    return _directives.GraphQLSpecifiedByDirective;\n  },\n});\nObject.defineProperty(exports, 'GraphQLString', {\n  enumerable: true,\n  get: function () {\n    return _scalars.GraphQLString;\n  },\n});\nObject.defineProperty(exports, 'GraphQLUnionType', {\n  enumerable: true,\n  get: function () {\n    return _definition.GraphQLUnionType;\n  },\n});\nObject.defineProperty(exports, 'SchemaMetaFieldDef', {\n  enumerable: true,\n  get: function () {\n    return _introspection.SchemaMetaFieldDef;\n  },\n});\nObject.defineProperty(exports, 'TypeKind', {\n  enumerable: true,\n  get: function () {\n    return _introspection.TypeKind;\n  },\n});\nObject.defineProperty(exports, 'TypeMetaFieldDef', {\n  enumerable: true,\n  get: function () {\n    return _introspection.TypeMetaFieldDef;\n  },\n});\nObject.defineProperty(exports, 'TypeNameMetaFieldDef', {\n  enumerable: true,\n  get: function () {\n    return _introspection.TypeNameMetaFieldDef;\n  },\n});\nObject.defineProperty(exports, '__Directive', {\n  enumerable: true,\n  get: function () {\n    return _introspection.__Directive;\n  },\n});\nObject.defineProperty(exports, '__DirectiveLocation', {\n  enumerable: true,\n  get: function () {\n    return _introspection.__DirectiveLocation;\n  },\n});\nObject.defineProperty(exports, '__EnumValue', {\n  enumerable: true,\n  get: function () {\n    return _introspection.__EnumValue;\n  },\n});\nObject.defineProperty(exports, '__Field', {\n  enumerable: true,\n  get: function () {\n    return _introspection.__Field;\n  },\n});\nObject.defineProperty(exports, '__InputValue', {\n  enumerable: true,\n  get: function () {\n    return _introspection.__InputValue;\n  },\n});\nObject.defineProperty(exports, '__Schema', {\n  enumerable: true,\n  get: function () {\n    return _introspection.__Schema;\n  },\n});\nObject.defineProperty(exports, '__Type', {\n  enumerable: true,\n  get: function () {\n    return _introspection.__Type;\n  },\n});\nObject.defineProperty(exports, '__TypeKind', {\n  enumerable: true,\n  get: function () {\n    return _introspection.__TypeKind;\n  },\n});\nObject.defineProperty(exports, 'assertAbstractType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertAbstractType;\n  },\n});\nObject.defineProperty(exports, 'assertCompositeType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertCompositeType;\n  },\n});\nObject.defineProperty(exports, 'assertDirective', {\n  enumerable: true,\n  get: function () {\n    return _directives.assertDirective;\n  },\n});\nObject.defineProperty(exports, 'assertEnumType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertEnumType;\n  },\n});\nObject.defineProperty(exports, 'assertEnumValueName', {\n  enumerable: true,\n  get: function () {\n    return _assertName.assertEnumValueName;\n  },\n});\nObject.defineProperty(exports, 'assertInputObjectType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertInputObjectType;\n  },\n});\nObject.defineProperty(exports, 'assertInputType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertInputType;\n  },\n});\nObject.defineProperty(exports, 'assertInterfaceType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertInterfaceType;\n  },\n});\nObject.defineProperty(exports, 'assertLeafType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertLeafType;\n  },\n});\nObject.defineProperty(exports, 'assertListType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertListType;\n  },\n});\nObject.defineProperty(exports, 'assertName', {\n  enumerable: true,\n  get: function () {\n    return _assertName.assertName;\n  },\n});\nObject.defineProperty(exports, 'assertNamedType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertNamedType;\n  },\n});\nObject.defineProperty(exports, 'assertNonNullType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertNonNullType;\n  },\n});\nObject.defineProperty(exports, 'assertNullableType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertNullableType;\n  },\n});\nObject.defineProperty(exports, 'assertObjectType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertObjectType;\n  },\n});\nObject.defineProperty(exports, 'assertOutputType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertOutputType;\n  },\n});\nObject.defineProperty(exports, 'assertScalarType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertScalarType;\n  },\n});\nObject.defineProperty(exports, 'assertSchema', {\n  enumerable: true,\n  get: function () {\n    return _schema.assertSchema;\n  },\n});\nObject.defineProperty(exports, 'assertType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertType;\n  },\n});\nObject.defineProperty(exports, 'assertUnionType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertUnionType;\n  },\n});\nObject.defineProperty(exports, 'assertValidSchema', {\n  enumerable: true,\n  get: function () {\n    return _validate.assertValidSchema;\n  },\n});\nObject.defineProperty(exports, 'assertWrappingType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertWrappingType;\n  },\n});\nObject.defineProperty(exports, 'getNamedType', {\n  enumerable: true,\n  get: function () {\n    return _definition.getNamedType;\n  },\n});\nObject.defineProperty(exports, 'getNullableType', {\n  enumerable: true,\n  get: function () {\n    return _definition.getNullableType;\n  },\n});\nObject.defineProperty(exports, 'introspectionTypes', {\n  enumerable: true,\n  get: function () {\n    return _introspection.introspectionTypes;\n  },\n});\nObject.defineProperty(exports, 'isAbstractType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isAbstractType;\n  },\n});\nObject.defineProperty(exports, 'isCompositeType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isCompositeType;\n  },\n});\nObject.defineProperty(exports, 'isDirective', {\n  enumerable: true,\n  get: function () {\n    return _directives.isDirective;\n  },\n});\nObject.defineProperty(exports, 'isEnumType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isEnumType;\n  },\n});\nObject.defineProperty(exports, 'isInputObjectType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isInputObjectType;\n  },\n});\nObject.defineProperty(exports, 'isInputType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isInputType;\n  },\n});\nObject.defineProperty(exports, 'isInterfaceType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isInterfaceType;\n  },\n});\nObject.defineProperty(exports, 'isIntrospectionType', {\n  enumerable: true,\n  get: function () {\n    return _introspection.isIntrospectionType;\n  },\n});\nObject.defineProperty(exports, 'isLeafType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isLeafType;\n  },\n});\nObject.defineProperty(exports, 'isListType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isListType;\n  },\n});\nObject.defineProperty(exports, 'isNamedType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isNamedType;\n  },\n});\nObject.defineProperty(exports, 'isNonNullType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isNonNullType;\n  },\n});\nObject.defineProperty(exports, 'isNullableType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isNullableType;\n  },\n});\nObject.defineProperty(exports, 'isObjectType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isObjectType;\n  },\n});\nObject.defineProperty(exports, 'isOutputType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isOutputType;\n  },\n});\nObject.defineProperty(exports, 'isRequiredArgument', {\n  enumerable: true,\n  get: function () {\n    return _definition.isRequiredArgument;\n  },\n});\nObject.defineProperty(exports, 'isRequiredInputField', {\n  enumerable: true,\n  get: function () {\n    return _definition.isRequiredInputField;\n  },\n});\nObject.defineProperty(exports, 'isScalarType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isScalarType;\n  },\n});\nObject.defineProperty(exports, 'isSchema', {\n  enumerable: true,\n  get: function () {\n    return _schema.isSchema;\n  },\n});\nObject.defineProperty(exports, 'isSpecifiedDirective', {\n  enumerable: true,\n  get: function () {\n    return _directives.isSpecifiedDirective;\n  },\n});\nObject.defineProperty(exports, 'isSpecifiedScalarType', {\n  enumerable: true,\n  get: function () {\n    return _scalars.isSpecifiedScalarType;\n  },\n});\nObject.defineProperty(exports, 'isType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isType;\n  },\n});\nObject.defineProperty(exports, 'isUnionType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isUnionType;\n  },\n});\nObject.defineProperty(exports, 'isWrappingType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isWrappingType;\n  },\n});\nObject.defineProperty(exports, 'resolveObjMapThunk', {\n  enumerable: true,\n  get: function () {\n    return _definition.resolveObjMapThunk;\n  },\n});\nObject.defineProperty(exports, 'resolveReadonlyArrayThunk', {\n  enumerable: true,\n  get: function () {\n    return _definition.resolveReadonlyArrayThunk;\n  },\n});\nObject.defineProperty(exports, 'specifiedDirectives', {\n  enumerable: true,\n  get: function () {\n    return _directives.specifiedDirectives;\n  },\n});\nObject.defineProperty(exports, 'specifiedScalarTypes', {\n  enumerable: true,\n  get: function () {\n    return _scalars.specifiedScalarTypes;\n  },\n});\nObject.defineProperty(exports, 'validateSchema', {\n  enumerable: true,\n  get: function () {\n    return _validate.validateSchema;\n  },\n});\n\nvar _schema = require('./schema.js');\n\nvar _definition = require('./definition.js');\n\nvar _directives = require('./directives.js');\n\nvar _scalars = require('./scalars.js');\n\nvar _introspection = require('./introspection.js');\n\nvar _validate = require('./validate.js');\n\nvar _assertName = require('./assertName.js');\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nObject.defineProperty(exports, 'BREAK', {\n  enumerable: true,\n  get: function () {\n    return _visitor.BREAK;\n  },\n});\nObject.defineProperty(exports, 'DirectiveLocation', {\n  enumerable: true,\n  get: function () {\n    return _directiveLocation.DirectiveLocation;\n  },\n});\nObject.defineProperty(exports, 'Kind', {\n  enumerable: true,\n  get: function () {\n    return _kinds.Kind;\n  },\n});\nObject.defineProperty(exports, 'Lexer', {\n  enumerable: true,\n  get: function () {\n    return _lexer.Lexer;\n  },\n});\nObject.defineProperty(exports, 'Location', {\n  enumerable: true,\n  get: function () {\n    return _ast.Location;\n  },\n});\nObject.defineProperty(exports, 'OperationTypeNode', {\n  enumerable: true,\n  get: function () {\n    return _ast.OperationTypeNode;\n  },\n});\nObject.defineProperty(exports, 'Source', {\n  enumerable: true,\n  get: function () {\n    return _source.Source;\n  },\n});\nObject.defineProperty(exports, 'Token', {\n  enumerable: true,\n  get: function () {\n    return _ast.Token;\n  },\n});\nObject.defineProperty(exports, 'TokenKind', {\n  enumerable: true,\n  get: function () {\n    return _tokenKind.TokenKind;\n  },\n});\nObject.defineProperty(exports, 'getEnterLeaveForKind', {\n  enumerable: true,\n  get: function () {\n    return _visitor.getEnterLeaveForKind;\n  },\n});\nObject.defineProperty(exports, 'getLocation', {\n  enumerable: true,\n  get: function () {\n    return _location.getLocation;\n  },\n});\nObject.defineProperty(exports, 'getVisitFn', {\n  enumerable: true,\n  get: function () {\n    return _visitor.getVisitFn;\n  },\n});\nObject.defineProperty(exports, 'isConstValueNode', {\n  enumerable: true,\n  get: function () {\n    return _predicates.isConstValueNode;\n  },\n});\nObject.defineProperty(exports, 'isDefinitionNode', {\n  enumerable: true,\n  get: function () {\n    return _predicates.isDefinitionNode;\n  },\n});\nObject.defineProperty(exports, 'isExecutableDefinitionNode', {\n  enumerable: true,\n  get: function () {\n    return _predicates.isExecutableDefinitionNode;\n  },\n});\nObject.defineProperty(exports, 'isSelectionNode', {\n  enumerable: true,\n  get: function () {\n    return _predicates.isSelectionNode;\n  },\n});\nObject.defineProperty(exports, 'isTypeDefinitionNode', {\n  enumerable: true,\n  get: function () {\n    return _predicates.isTypeDefinitionNode;\n  },\n});\nObject.defineProperty(exports, 'isTypeExtensionNode', {\n  enumerable: true,\n  get: function () {\n    return _predicates.isTypeExtensionNode;\n  },\n});\nObject.defineProperty(exports, 'isTypeNode', {\n  enumerable: true,\n  get: function () {\n    return _predicates.isTypeNode;\n  },\n});\nObject.defineProperty(exports, 'isTypeSystemDefinitionNode', {\n  enumerable: true,\n  get: function () {\n    return _predicates.isTypeSystemDefinitionNode;\n  },\n});\nObject.defineProperty(exports, 'isTypeSystemExtensionNode', {\n  enumerable: true,\n  get: function () {\n    return _predicates.isTypeSystemExtensionNode;\n  },\n});\nObject.defineProperty(exports, 'isValueNode', {\n  enumerable: true,\n  get: function () {\n    return _predicates.isValueNode;\n  },\n});\nObject.defineProperty(exports, 'parse', {\n  enumerable: true,\n  get: function () {\n    return _parser.parse;\n  },\n});\nObject.defineProperty(exports, 'parseConstValue', {\n  enumerable: true,\n  get: function () {\n    return _parser.parseConstValue;\n  },\n});\nObject.defineProperty(exports, 'parseType', {\n  enumerable: true,\n  get: function () {\n    return _parser.parseType;\n  },\n});\nObject.defineProperty(exports, 'parseValue', {\n  enumerable: true,\n  get: function () {\n    return _parser.parseValue;\n  },\n});\nObject.defineProperty(exports, 'print', {\n  enumerable: true,\n  get: function () {\n    return _printer.print;\n  },\n});\nObject.defineProperty(exports, 'printLocation', {\n  enumerable: true,\n  get: function () {\n    return _printLocation.printLocation;\n  },\n});\nObject.defineProperty(exports, 'printSourceLocation', {\n  enumerable: true,\n  get: function () {\n    return _printLocation.printSourceLocation;\n  },\n});\nObject.defineProperty(exports, 'visit', {\n  enumerable: true,\n  get: function () {\n    return _visitor.visit;\n  },\n});\nObject.defineProperty(exports, 'visitInParallel', {\n  enumerable: true,\n  get: function () {\n    return _visitor.visitInParallel;\n  },\n});\n\nvar _source = require('./source.js');\n\nvar _location = require('./location.js');\n\nvar _printLocation = require('./printLocation.js');\n\nvar _kinds = require('./kinds.js');\n\nvar _tokenKind = require('./tokenKind.js');\n\nvar _lexer = require('./lexer.js');\n\nvar _parser = require('./parser.js');\n\nvar _printer = require('./printer.js');\n\nvar _visitor = require('./visitor.js');\n\nvar _ast = require('./ast.js');\n\nvar _predicates = require('./predicates.js');\n\nvar _directiveLocation = require('./directiveLocation.js');\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.isAsyncIterable = isAsyncIterable;\n\n/**\n * Returns true if the provided object implements the AsyncIterator protocol via\n * implementing a `Symbol.asyncIterator` method.\n */\nfunction isAsyncIterable(maybeAsyncIterable) {\n  return (\n    typeof (maybeAsyncIterable === null || maybeAsyncIterable === void 0\n      ? void 0\n      : maybeAsyncIterable[Symbol.asyncIterator]) === 'function'\n  );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.mapAsyncIterator = mapAsyncIterator;\n\n/**\n * Given an AsyncIterable and a callback function, return an AsyncIterator\n * which produces values mapped via calling the callback function.\n */\nfunction mapAsyncIterator(iterable, callback) {\n  const iterator = iterable[Symbol.asyncIterator]();\n\n  async function mapResult(result) {\n    if (result.done) {\n      return result;\n    }\n\n    try {\n      return {\n        value: await callback(result.value),\n        done: false,\n      };\n    } catch (error) {\n      /* c8 ignore start */\n      // FIXME: add test case\n      if (typeof iterator.return === 'function') {\n        try {\n          await iterator.return();\n        } catch (_e) {\n          /* ignore error */\n        }\n      }\n\n      throw error;\n      /* c8 ignore stop */\n    }\n  }\n\n  return {\n    async next() {\n      return mapResult(await iterator.next());\n    },\n\n    async return() {\n      // If iterator.return() does not exist, then type R must be undefined.\n      return typeof iterator.return === 'function'\n        ? mapResult(await iterator.return())\n        : {\n            value: undefined,\n            done: true,\n          };\n    },\n\n    async throw(error) {\n      if (typeof iterator.throw === 'function') {\n        return mapResult(await iterator.throw(error));\n      }\n\n      throw error;\n    },\n\n    [Symbol.asyncIterator]() {\n      return this;\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.createSourceEventStream = createSourceEventStream;\nexports.subscribe = subscribe;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _isAsyncIterable = require('../jsutils/isAsyncIterable.js');\n\nvar _Path = require('../jsutils/Path.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _locatedError = require('../error/locatedError.js');\n\nvar _collectFields = require('./collectFields.js');\n\nvar _execute = require('./execute.js');\n\nvar _mapAsyncIterator = require('./mapAsyncIterator.js');\n\nvar _values = require('./values.js');\n\n/**\n * Implements the \"Subscribe\" algorithm described in the GraphQL specification.\n *\n * Returns a Promise which resolves to either an AsyncIterator (if successful)\n * or an ExecutionResult (error). The promise will be rejected if the schema or\n * other arguments to this function are invalid, or if the resolved event stream\n * is not an async iterable.\n *\n * If the client-provided arguments to this function do not result in a\n * compliant subscription, a GraphQL Response (ExecutionResult) with\n * descriptive errors and no data will be returned.\n *\n * If the source stream could not be created due to faulty subscription\n * resolver logic or underlying systems, the promise will resolve to a single\n * ExecutionResult containing `errors` and no `data`.\n *\n * If the operation succeeded, the promise resolves to an AsyncIterator, which\n * yields a stream of ExecutionResults representing the response stream.\n *\n * Accepts either an object with named arguments, or individual arguments.\n */\nasync function subscribe(args) {\n  // Temporary for v15 to v16 migration. Remove in v17\n  arguments.length < 2 ||\n    (0, _devAssert.devAssert)(\n      false,\n      'graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.',\n    );\n  const resultOrStream = await createSourceEventStream(args);\n\n  if (!(0, _isAsyncIterable.isAsyncIterable)(resultOrStream)) {\n    return resultOrStream;\n  } // For each payload yielded from a subscription, map it over the normal\n  // GraphQL `execute` function, with `payload` as the rootValue.\n  // This implements the \"MapSourceToResponseEvent\" algorithm described in\n  // the GraphQL specification. The `execute` function provides the\n  // \"ExecuteSubscriptionEvent\" algorithm, as it is nearly identical to the\n  // \"ExecuteQuery\" algorithm, for which `execute` is also used.\n\n  const mapSourceToResponse = (payload) =>\n    (0, _execute.execute)({ ...args, rootValue: payload }); // Map every source value to a ExecutionResult value as described above.\n\n  return (0, _mapAsyncIterator.mapAsyncIterator)(\n    resultOrStream,\n    mapSourceToResponse,\n  );\n}\n\nfunction toNormalizedArgs(args) {\n  const firstArg = args[0];\n\n  if (firstArg && 'document' in firstArg) {\n    return firstArg;\n  }\n\n  return {\n    schema: firstArg,\n    // FIXME: when underlying TS bug fixed, see https://github.com/microsoft/TypeScript/issues/31613\n    document: args[1],\n    rootValue: args[2],\n    contextValue: args[3],\n    variableValues: args[4],\n    operationName: args[5],\n    subscribeFieldResolver: args[6],\n  };\n}\n/**\n * Implements the \"CreateSourceEventStream\" algorithm described in the\n * GraphQL specification, resolving the subscription source event stream.\n *\n * Returns a Promise which resolves to either an AsyncIterable (if successful)\n * or an ExecutionResult (error). The promise will be rejected if the schema or\n * other arguments to this function are invalid, or if the resolved event stream\n * is not an async iterable.\n *\n * If the client-provided arguments to this function do not result in a\n * compliant subscription, a GraphQL Response (ExecutionResult) with\n * descriptive errors and no data will be returned.\n *\n * If the the source stream could not be created due to faulty subscription\n * resolver logic or underlying systems, the promise will resolve to a single\n * ExecutionResult containing `errors` and no `data`.\n *\n * If the operation succeeded, the promise resolves to the AsyncIterable for the\n * event stream returned by the resolver.\n *\n * A Source Event Stream represents a sequence of events, each of which triggers\n * a GraphQL execution for that event.\n *\n * This may be useful when hosting the stateful subscription service in a\n * different process or machine than the stateless GraphQL execution engine,\n * or otherwise separating these two steps. For more on this, see the\n * \"Supporting Subscriptions at Scale\" information in the GraphQL specification.\n */\n\nasync function createSourceEventStream(...rawArgs) {\n  const args = toNormalizedArgs(rawArgs);\n  const { schema, document, variableValues } = args; // If arguments are missing or incorrectly typed, this is an internal\n  // developer mistake which should throw an early error.\n\n  (0, _execute.assertValidExecutionArguments)(schema, document, variableValues); // If a valid execution context cannot be created due to incorrect arguments,\n  // a \"Response\" with only errors is returned.\n\n  const exeContext = (0, _execute.buildExecutionContext)(args); // Return early errors if execution context failed.\n\n  if (!('schema' in exeContext)) {\n    return {\n      errors: exeContext,\n    };\n  }\n\n  try {\n    const eventStream = await executeSubscription(exeContext); // Assert field returned an event stream, otherwise yield an error.\n\n    if (!(0, _isAsyncIterable.isAsyncIterable)(eventStream)) {\n      throw new Error(\n        'Subscription field must return Async Iterable. ' +\n          `Received: ${(0, _inspect.inspect)(eventStream)}.`,\n      );\n    }\n\n    return eventStream;\n  } catch (error) {\n    // If it GraphQLError, report it as an ExecutionResult, containing only errors and no data.\n    // Otherwise treat the error as a system-class error and re-throw it.\n    if (error instanceof _GraphQLError.GraphQLError) {\n      return {\n        errors: [error],\n      };\n    }\n\n    throw error;\n  }\n}\n\nasync function executeSubscription(exeContext) {\n  const { schema, fragments, operation, variableValues, rootValue } =\n    exeContext;\n  const rootType = schema.getSubscriptionType();\n\n  if (rootType == null) {\n    throw new _GraphQLError.GraphQLError(\n      'Schema is not configured to execute subscription operation.',\n      {\n        nodes: operation,\n      },\n    );\n  }\n\n  const rootFields = (0, _collectFields.collectFields)(\n    schema,\n    fragments,\n    variableValues,\n    rootType,\n    operation.selectionSet,\n  );\n  const [responseName, fieldNodes] = [...rootFields.entries()][0];\n  const fieldDef = (0, _execute.getFieldDef)(schema, rootType, fieldNodes[0]);\n\n  if (!fieldDef) {\n    const fieldName = fieldNodes[0].name.value;\n    throw new _GraphQLError.GraphQLError(\n      `The subscription field \"${fieldName}\" is not defined.`,\n      {\n        nodes: fieldNodes,\n      },\n    );\n  }\n\n  const path = (0, _Path.addPath)(undefined, responseName, rootType.name);\n  const info = (0, _execute.buildResolveInfo)(\n    exeContext,\n    fieldDef,\n    fieldNodes,\n    rootType,\n    path,\n  );\n\n  try {\n    var _fieldDef$subscribe;\n\n    // Implements the \"ResolveFieldEventStream\" algorithm from GraphQL specification.\n    // It differs from \"ResolveFieldValue\" due to providing a different `resolveFn`.\n    // Build a JS object of arguments from the field.arguments AST, using the\n    // variables scope to fulfill any variable references.\n    const args = (0, _values.getArgumentValues)(\n      fieldDef,\n      fieldNodes[0],\n      variableValues,\n    ); // The resolve function's optional third argument is a context value that\n    // is provided to every resolve function within an execution. It is commonly\n    // used to represent an authenticated user, or request-specific caches.\n\n    const contextValue = exeContext.contextValue; // Call the `subscribe()` resolver or the default resolver to produce an\n    // AsyncIterable yielding raw payloads.\n\n    const resolveFn =\n      (_fieldDef$subscribe = fieldDef.subscribe) !== null &&\n      _fieldDef$subscribe !== void 0\n        ? _fieldDef$subscribe\n        : exeContext.subscribeFieldResolver;\n    const eventStream = await resolveFn(rootValue, args, contextValue, info);\n\n    if (eventStream instanceof Error) {\n      throw eventStream;\n    }\n\n    return eventStream;\n  } catch (error) {\n    throw (0, _locatedError.locatedError)(\n      error,\n      fieldNodes,\n      (0, _Path.pathToArray)(path),\n    );\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nObject.defineProperty(exports, 'createSourceEventStream', {\n  enumerable: true,\n  get: function () {\n    return _subscribe.createSourceEventStream;\n  },\n});\nObject.defineProperty(exports, 'defaultFieldResolver', {\n  enumerable: true,\n  get: function () {\n    return _execute.defaultFieldResolver;\n  },\n});\nObject.defineProperty(exports, 'defaultTypeResolver', {\n  enumerable: true,\n  get: function () {\n    return _execute.defaultTypeResolver;\n  },\n});\nObject.defineProperty(exports, 'execute', {\n  enumerable: true,\n  get: function () {\n    return _execute.execute;\n  },\n});\nObject.defineProperty(exports, 'executeSync', {\n  enumerable: true,\n  get: function () {\n    return _execute.executeSync;\n  },\n});\nObject.defineProperty(exports, 'getArgumentValues', {\n  enumerable: true,\n  get: function () {\n    return _values.getArgumentValues;\n  },\n});\nObject.defineProperty(exports, 'getDirectiveValues', {\n  enumerable: true,\n  get: function () {\n    return _values.getDirectiveValues;\n  },\n});\nObject.defineProperty(exports, 'getVariableValues', {\n  enumerable: true,\n  get: function () {\n    return _values.getVariableValues;\n  },\n});\nObject.defineProperty(exports, 'responsePathAsArray', {\n  enumerable: true,\n  get: function () {\n    return _Path.pathToArray;\n  },\n});\nObject.defineProperty(exports, 'subscribe', {\n  enumerable: true,\n  get: function () {\n    return _subscribe.subscribe;\n  },\n});\n\nvar _Path = require('../jsutils/Path.js');\n\nvar _execute = require('./execute.js');\n\nvar _subscribe = require('./subscribe.js');\n\nvar _values = require('./values.js');\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.NoDeprecatedCustomRule = NoDeprecatedCustomRule;\n\nvar _invariant = require('../../../jsutils/invariant.js');\n\nvar _GraphQLError = require('../../../error/GraphQLError.js');\n\nvar _definition = require('../../../type/definition.js');\n\n/**\n * No deprecated\n *\n * A GraphQL document is only valid if all selected fields and all used enum values have not been\n * deprecated.\n *\n * Note: This rule is optional and is not part of the Validation section of the GraphQL\n * Specification. The main purpose of this rule is detection of deprecated usages and not\n * necessarily to forbid their use when querying a service.\n */\nfunction NoDeprecatedCustomRule(context) {\n  return {\n    Field(node) {\n      const fieldDef = context.getFieldDef();\n      const deprecationReason =\n        fieldDef === null || fieldDef === void 0\n          ? void 0\n          : fieldDef.deprecationReason;\n\n      if (fieldDef && deprecationReason != null) {\n        const parentType = context.getParentType();\n        parentType != null || (0, _invariant.invariant)(false);\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `The field ${parentType.name}.${fieldDef.name} is deprecated. ${deprecationReason}`,\n            {\n              nodes: node,\n            },\n          ),\n        );\n      }\n    },\n\n    Argument(node) {\n      const argDef = context.getArgument();\n      const deprecationReason =\n        argDef === null || argDef === void 0\n          ? void 0\n          : argDef.deprecationReason;\n\n      if (argDef && deprecationReason != null) {\n        const directiveDef = context.getDirective();\n\n        if (directiveDef != null) {\n          context.reportError(\n            new _GraphQLError.GraphQLError(\n              `Directive \"@${directiveDef.name}\" argument \"${argDef.name}\" is deprecated. ${deprecationReason}`,\n              {\n                nodes: node,\n              },\n            ),\n          );\n        } else {\n          const parentType = context.getParentType();\n          const fieldDef = context.getFieldDef();\n          (parentType != null && fieldDef != null) ||\n            (0, _invariant.invariant)(false);\n          context.reportError(\n            new _GraphQLError.GraphQLError(\n              `Field \"${parentType.name}.${fieldDef.name}\" argument \"${argDef.name}\" is deprecated. ${deprecationReason}`,\n              {\n                nodes: node,\n              },\n            ),\n          );\n        }\n      }\n    },\n\n    ObjectField(node) {\n      const inputObjectDef = (0, _definition.getNamedType)(\n        context.getParentInputType(),\n      );\n\n      if ((0, _definition.isInputObjectType)(inputObjectDef)) {\n        const inputFieldDef = inputObjectDef.getFields()[node.name.value];\n        const deprecationReason =\n          inputFieldDef === null || inputFieldDef === void 0\n            ? void 0\n            : inputFieldDef.deprecationReason;\n\n        if (deprecationReason != null) {\n          context.reportError(\n            new _GraphQLError.GraphQLError(\n              `The input field ${inputObjectDef.name}.${inputFieldDef.name} is deprecated. ${deprecationReason}`,\n              {\n                nodes: node,\n              },\n            ),\n          );\n        }\n      }\n    },\n\n    EnumValue(node) {\n      const enumValueDef = context.getEnumValue();\n      const deprecationReason =\n        enumValueDef === null || enumValueDef === void 0\n          ? void 0\n          : enumValueDef.deprecationReason;\n\n      if (enumValueDef && deprecationReason != null) {\n        const enumTypeDef = (0, _definition.getNamedType)(\n          context.getInputType(),\n        );\n        enumTypeDef != null || (0, _invariant.invariant)(false);\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `The enum value \"${enumTypeDef.name}.${enumValueDef.name}\" is deprecated. ${deprecationReason}`,\n            {\n              nodes: node,\n            },\n          ),\n        );\n      }\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.NoSchemaIntrospectionCustomRule = NoSchemaIntrospectionCustomRule;\n\nvar _GraphQLError = require('../../../error/GraphQLError.js');\n\nvar _definition = require('../../../type/definition.js');\n\nvar _introspection = require('../../../type/introspection.js');\n\n/**\n * Prohibit introspection queries\n *\n * A GraphQL document is only valid if all fields selected are not fields that\n * return an introspection type.\n *\n * Note: This rule is optional and is not part of the Validation section of the\n * GraphQL Specification. This rule effectively disables introspection, which\n * does not reflect best practices and should only be done if absolutely necessary.\n */\nfunction NoSchemaIntrospectionCustomRule(context) {\n  return {\n    Field(node) {\n      const type = (0, _definition.getNamedType)(context.getType());\n\n      if (type && (0, _introspection.isIntrospectionType)(type)) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `GraphQL introspection has been disabled, but the requested query contained the field \"${node.name.value}\".`,\n            {\n              nodes: node,\n            },\n          ),\n        );\n      }\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nObject.defineProperty(exports, 'ExecutableDefinitionsRule', {\n  enumerable: true,\n  get: function () {\n    return _ExecutableDefinitionsRule.ExecutableDefinitionsRule;\n  },\n});\nObject.defineProperty(exports, 'FieldsOnCorrectTypeRule', {\n  enumerable: true,\n  get: function () {\n    return _FieldsOnCorrectTypeRule.FieldsOnCorrectTypeRule;\n  },\n});\nObject.defineProperty(exports, 'FragmentsOnCompositeTypesRule', {\n  enumerable: true,\n  get: function () {\n    return _FragmentsOnCompositeTypesRule.FragmentsOnCompositeTypesRule;\n  },\n});\nObject.defineProperty(exports, 'KnownArgumentNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _KnownArgumentNamesRule.KnownArgumentNamesRule;\n  },\n});\nObject.defineProperty(exports, 'KnownDirectivesRule', {\n  enumerable: true,\n  get: function () {\n    return _KnownDirectivesRule.KnownDirectivesRule;\n  },\n});\nObject.defineProperty(exports, 'KnownFragmentNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _KnownFragmentNamesRule.KnownFragmentNamesRule;\n  },\n});\nObject.defineProperty(exports, 'KnownTypeNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _KnownTypeNamesRule.KnownTypeNamesRule;\n  },\n});\nObject.defineProperty(exports, 'LoneAnonymousOperationRule', {\n  enumerable: true,\n  get: function () {\n    return _LoneAnonymousOperationRule.LoneAnonymousOperationRule;\n  },\n});\nObject.defineProperty(exports, 'LoneSchemaDefinitionRule', {\n  enumerable: true,\n  get: function () {\n    return _LoneSchemaDefinitionRule.LoneSchemaDefinitionRule;\n  },\n});\nObject.defineProperty(exports, 'NoDeprecatedCustomRule', {\n  enumerable: true,\n  get: function () {\n    return _NoDeprecatedCustomRule.NoDeprecatedCustomRule;\n  },\n});\nObject.defineProperty(exports, 'NoFragmentCyclesRule', {\n  enumerable: true,\n  get: function () {\n    return _NoFragmentCyclesRule.NoFragmentCyclesRule;\n  },\n});\nObject.defineProperty(exports, 'NoSchemaIntrospectionCustomRule', {\n  enumerable: true,\n  get: function () {\n    return _NoSchemaIntrospectionCustomRule.NoSchemaIntrospectionCustomRule;\n  },\n});\nObject.defineProperty(exports, 'NoUndefinedVariablesRule', {\n  enumerable: true,\n  get: function () {\n    return _NoUndefinedVariablesRule.NoUndefinedVariablesRule;\n  },\n});\nObject.defineProperty(exports, 'NoUnusedFragmentsRule', {\n  enumerable: true,\n  get: function () {\n    return _NoUnusedFragmentsRule.NoUnusedFragmentsRule;\n  },\n});\nObject.defineProperty(exports, 'NoUnusedVariablesRule', {\n  enumerable: true,\n  get: function () {\n    return _NoUnusedVariablesRule.NoUnusedVariablesRule;\n  },\n});\nObject.defineProperty(exports, 'OverlappingFieldsCanBeMergedRule', {\n  enumerable: true,\n  get: function () {\n    return _OverlappingFieldsCanBeMergedRule.OverlappingFieldsCanBeMergedRule;\n  },\n});\nObject.defineProperty(exports, 'PossibleFragmentSpreadsRule', {\n  enumerable: true,\n  get: function () {\n    return _PossibleFragmentSpreadsRule.PossibleFragmentSpreadsRule;\n  },\n});\nObject.defineProperty(exports, 'PossibleTypeExtensionsRule', {\n  enumerable: true,\n  get: function () {\n    return _PossibleTypeExtensionsRule.PossibleTypeExtensionsRule;\n  },\n});\nObject.defineProperty(exports, 'ProvidedRequiredArgumentsRule', {\n  enumerable: true,\n  get: function () {\n    return _ProvidedRequiredArgumentsRule.ProvidedRequiredArgumentsRule;\n  },\n});\nObject.defineProperty(exports, 'ScalarLeafsRule', {\n  enumerable: true,\n  get: function () {\n    return _ScalarLeafsRule.ScalarLeafsRule;\n  },\n});\nObject.defineProperty(exports, 'SingleFieldSubscriptionsRule', {\n  enumerable: true,\n  get: function () {\n    return _SingleFieldSubscriptionsRule.SingleFieldSubscriptionsRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueArgumentDefinitionNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _UniqueArgumentDefinitionNamesRule.UniqueArgumentDefinitionNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueArgumentNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _UniqueArgumentNamesRule.UniqueArgumentNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueDirectiveNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _UniqueDirectiveNamesRule.UniqueDirectiveNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueDirectivesPerLocationRule', {\n  enumerable: true,\n  get: function () {\n    return _UniqueDirectivesPerLocationRule.UniqueDirectivesPerLocationRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueEnumValueNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _UniqueEnumValueNamesRule.UniqueEnumValueNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueFieldDefinitionNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _UniqueFieldDefinitionNamesRule.UniqueFieldDefinitionNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueFragmentNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _UniqueFragmentNamesRule.UniqueFragmentNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueInputFieldNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _UniqueInputFieldNamesRule.UniqueInputFieldNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueOperationNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _UniqueOperationNamesRule.UniqueOperationNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueOperationTypesRule', {\n  enumerable: true,\n  get: function () {\n    return _UniqueOperationTypesRule.UniqueOperationTypesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueTypeNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _UniqueTypeNamesRule.UniqueTypeNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueVariableNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _UniqueVariableNamesRule.UniqueVariableNamesRule;\n  },\n});\nObject.defineProperty(exports, 'ValidationContext', {\n  enumerable: true,\n  get: function () {\n    return _ValidationContext.ValidationContext;\n  },\n});\nObject.defineProperty(exports, 'ValuesOfCorrectTypeRule', {\n  enumerable: true,\n  get: function () {\n    return _ValuesOfCorrectTypeRule.ValuesOfCorrectTypeRule;\n  },\n});\nObject.defineProperty(exports, 'VariablesAreInputTypesRule', {\n  enumerable: true,\n  get: function () {\n    return _VariablesAreInputTypesRule.VariablesAreInputTypesRule;\n  },\n});\nObject.defineProperty(exports, 'VariablesInAllowedPositionRule', {\n  enumerable: true,\n  get: function () {\n    return _VariablesInAllowedPositionRule.VariablesInAllowedPositionRule;\n  },\n});\nObject.defineProperty(exports, 'specifiedRules', {\n  enumerable: true,\n  get: function () {\n    return _specifiedRules.specifiedRules;\n  },\n});\nObject.defineProperty(exports, 'validate', {\n  enumerable: true,\n  get: function () {\n    return _validate.validate;\n  },\n});\n\nvar _validate = require('./validate.js');\n\nvar _ValidationContext = require('./ValidationContext.js');\n\nvar _specifiedRules = require('./specifiedRules.js');\n\nvar _ExecutableDefinitionsRule = require('./rules/ExecutableDefinitionsRule.js');\n\nvar _FieldsOnCorrectTypeRule = require('./rules/FieldsOnCorrectTypeRule.js');\n\nvar _FragmentsOnCompositeTypesRule = require('./rules/FragmentsOnCompositeTypesRule.js');\n\nvar _KnownArgumentNamesRule = require('./rules/KnownArgumentNamesRule.js');\n\nvar _KnownDirectivesRule = require('./rules/KnownDirectivesRule.js');\n\nvar _KnownFragmentNamesRule = require('./rules/KnownFragmentNamesRule.js');\n\nvar _KnownTypeNamesRule = require('./rules/KnownTypeNamesRule.js');\n\nvar _LoneAnonymousOperationRule = require('./rules/LoneAnonymousOperationRule.js');\n\nvar _NoFragmentCyclesRule = require('./rules/NoFragmentCyclesRule.js');\n\nvar _NoUndefinedVariablesRule = require('./rules/NoUndefinedVariablesRule.js');\n\nvar _NoUnusedFragmentsRule = require('./rules/NoUnusedFragmentsRule.js');\n\nvar _NoUnusedVariablesRule = require('./rules/NoUnusedVariablesRule.js');\n\nvar _OverlappingFieldsCanBeMergedRule = require('./rules/OverlappingFieldsCanBeMergedRule.js');\n\nvar _PossibleFragmentSpreadsRule = require('./rules/PossibleFragmentSpreadsRule.js');\n\nvar _ProvidedRequiredArgumentsRule = require('./rules/ProvidedRequiredArgumentsRule.js');\n\nvar _ScalarLeafsRule = require('./rules/ScalarLeafsRule.js');\n\nvar _SingleFieldSubscriptionsRule = require('./rules/SingleFieldSubscriptionsRule.js');\n\nvar _UniqueArgumentNamesRule = require('./rules/UniqueArgumentNamesRule.js');\n\nvar _UniqueDirectivesPerLocationRule = require('./rules/UniqueDirectivesPerLocationRule.js');\n\nvar _UniqueFragmentNamesRule = require('./rules/UniqueFragmentNamesRule.js');\n\nvar _UniqueInputFieldNamesRule = require('./rules/UniqueInputFieldNamesRule.js');\n\nvar _UniqueOperationNamesRule = require('./rules/UniqueOperationNamesRule.js');\n\nvar _UniqueVariableNamesRule = require('./rules/UniqueVariableNamesRule.js');\n\nvar _ValuesOfCorrectTypeRule = require('./rules/ValuesOfCorrectTypeRule.js');\n\nvar _VariablesAreInputTypesRule = require('./rules/VariablesAreInputTypesRule.js');\n\nvar _VariablesInAllowedPositionRule = require('./rules/VariablesInAllowedPositionRule.js');\n\nvar _LoneSchemaDefinitionRule = require('./rules/LoneSchemaDefinitionRule.js');\n\nvar _UniqueOperationTypesRule = require('./rules/UniqueOperationTypesRule.js');\n\nvar _UniqueTypeNamesRule = require('./rules/UniqueTypeNamesRule.js');\n\nvar _UniqueEnumValueNamesRule = require('./rules/UniqueEnumValueNamesRule.js');\n\nvar _UniqueFieldDefinitionNamesRule = require('./rules/UniqueFieldDefinitionNamesRule.js');\n\nvar _UniqueArgumentDefinitionNamesRule = require('./rules/UniqueArgumentDefinitionNamesRule.js');\n\nvar _UniqueDirectiveNamesRule = require('./rules/UniqueDirectiveNamesRule.js');\n\nvar _PossibleTypeExtensionsRule = require('./rules/PossibleTypeExtensionsRule.js');\n\nvar _NoDeprecatedCustomRule = require('./rules/custom/NoDeprecatedCustomRule.js');\n\nvar _NoSchemaIntrospectionCustomRule = require('./rules/custom/NoSchemaIntrospectionCustomRule.js');\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nObject.defineProperty(exports, 'GraphQLError', {\n  enumerable: true,\n  get: function () {\n    return _GraphQLError.GraphQLError;\n  },\n});\nObject.defineProperty(exports, 'formatError', {\n  enumerable: true,\n  get: function () {\n    return _GraphQLError.formatError;\n  },\n});\nObject.defineProperty(exports, 'locatedError', {\n  enumerable: true,\n  get: function () {\n    return _locatedError.locatedError;\n  },\n});\nObject.defineProperty(exports, 'printError', {\n  enumerable: true,\n  get: function () {\n    return _GraphQLError.printError;\n  },\n});\nObject.defineProperty(exports, 'syntaxError', {\n  enumerable: true,\n  get: function () {\n    return _syntaxError.syntaxError;\n  },\n});\n\nvar _GraphQLError = require('./GraphQLError.js');\n\nvar _syntaxError = require('./syntaxError.js');\n\nvar _locatedError = require('./locatedError.js');\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.getIntrospectionQuery = getIntrospectionQuery;\n\n/**\n * Produce the GraphQL query recommended for a full schema introspection.\n * Accepts optional IntrospectionOptions.\n */\nfunction getIntrospectionQuery(options) {\n  const optionsWithDefault = {\n    descriptions: true,\n    specifiedByUrl: false,\n    directiveIsRepeatable: false,\n    schemaDescription: false,\n    inputValueDeprecation: false,\n    ...options,\n  };\n  const descriptions = optionsWithDefault.descriptions ? 'description' : '';\n  const specifiedByUrl = optionsWithDefault.specifiedByUrl\n    ? 'specifiedByURL'\n    : '';\n  const directiveIsRepeatable = optionsWithDefault.directiveIsRepeatable\n    ? 'isRepeatable'\n    : '';\n  const schemaDescription = optionsWithDefault.schemaDescription\n    ? descriptions\n    : '';\n\n  function inputDeprecation(str) {\n    return optionsWithDefault.inputValueDeprecation ? str : '';\n  }\n\n  return `\n    query IntrospectionQuery {\n      __schema {\n        ${schemaDescription}\n        queryType { name }\n        mutationType { name }\n        subscriptionType { name }\n        types {\n          ...FullType\n        }\n        directives {\n          name\n          ${descriptions}\n          ${directiveIsRepeatable}\n          locations\n          args${inputDeprecation('(includeDeprecated: true)')} {\n            ...InputValue\n          }\n        }\n      }\n    }\n\n    fragment FullType on __Type {\n      kind\n      name\n      ${descriptions}\n      ${specifiedByUrl}\n      fields(includeDeprecated: true) {\n        name\n        ${descriptions}\n        args${inputDeprecation('(includeDeprecated: true)')} {\n          ...InputValue\n        }\n        type {\n          ...TypeRef\n        }\n        isDeprecated\n        deprecationReason\n      }\n      inputFields${inputDeprecation('(includeDeprecated: true)')} {\n        ...InputValue\n      }\n      interfaces {\n        ...TypeRef\n      }\n      enumValues(includeDeprecated: true) {\n        name\n        ${descriptions}\n        isDeprecated\n        deprecationReason\n      }\n      possibleTypes {\n        ...TypeRef\n      }\n    }\n\n    fragment InputValue on __InputValue {\n      name\n      ${descriptions}\n      type { ...TypeRef }\n      defaultValue\n      ${inputDeprecation('isDeprecated')}\n      ${inputDeprecation('deprecationReason')}\n    }\n\n    fragment TypeRef on __Type {\n      kind\n      name\n      ofType {\n        kind\n        name\n        ofType {\n          kind\n          name\n          ofType {\n            kind\n            name\n            ofType {\n              kind\n              name\n              ofType {\n                kind\n                name\n                ofType {\n                  kind\n                  name\n                  ofType {\n                    kind\n                    name\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  `;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.getOperationAST = getOperationAST;\n\nvar _kinds = require('../language/kinds.js');\n\n/**\n * Returns an operation AST given a document AST and optionally an operation\n * name. If a name is not provided, an operation is only returned if only one is\n * provided in the document.\n */\nfunction getOperationAST(documentAST, operationName) {\n  let operation = null;\n\n  for (const definition of documentAST.definitions) {\n    if (definition.kind === _kinds.Kind.OPERATION_DEFINITION) {\n      var _definition$name;\n\n      if (operationName == null) {\n        // If no operation name was provided, only return an Operation if there\n        // is one defined in the document. Upon encountering the second, return\n        // null.\n        if (operation) {\n          return null;\n        }\n\n        operation = definition;\n      } else if (\n        ((_definition$name = definition.name) === null ||\n        _definition$name === void 0\n          ? void 0\n          : _definition$name.value) === operationName\n      ) {\n        return definition;\n      }\n    }\n  }\n\n  return operation;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.getOperationRootType = getOperationRootType;\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\n/**\n * Extracts the root type of the operation from the schema.\n *\n * @deprecated Please use `GraphQLSchema.getRootType` instead. Will be removed in v17\n */\nfunction getOperationRootType(schema, operation) {\n  if (operation.operation === 'query') {\n    const queryType = schema.getQueryType();\n\n    if (!queryType) {\n      throw new _GraphQLError.GraphQLError(\n        'Schema does not define the required query root type.',\n        {\n          nodes: operation,\n        },\n      );\n    }\n\n    return queryType;\n  }\n\n  if (operation.operation === 'mutation') {\n    const mutationType = schema.getMutationType();\n\n    if (!mutationType) {\n      throw new _GraphQLError.GraphQLError(\n        'Schema is not configured for mutations.',\n        {\n          nodes: operation,\n        },\n      );\n    }\n\n    return mutationType;\n  }\n\n  if (operation.operation === 'subscription') {\n    const subscriptionType = schema.getSubscriptionType();\n\n    if (!subscriptionType) {\n      throw new _GraphQLError.GraphQLError(\n        'Schema is not configured for subscriptions.',\n        {\n          nodes: operation,\n        },\n      );\n    }\n\n    return subscriptionType;\n  }\n\n  throw new _GraphQLError.GraphQLError(\n    'Can only have query, mutation and subscription operations.',\n    {\n      nodes: operation,\n    },\n  );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.introspectionFromSchema = introspectionFromSchema;\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _parser = require('../language/parser.js');\n\nvar _execute = require('../execution/execute.js');\n\nvar _getIntrospectionQuery = require('./getIntrospectionQuery.js');\n\n/**\n * Build an IntrospectionQuery from a GraphQLSchema\n *\n * IntrospectionQuery is useful for utilities that care about type and field\n * relationships, but do not need to traverse through those relationships.\n *\n * This is the inverse of buildClientSchema. The primary use case is outside\n * of the server context, for instance when doing schema comparisons.\n */\nfunction introspectionFromSchema(schema, options) {\n  const optionsWithDefaults = {\n    specifiedByUrl: true,\n    directiveIsRepeatable: true,\n    schemaDescription: true,\n    inputValueDeprecation: true,\n    ...options,\n  };\n  const document = (0, _parser.parse)(\n    (0, _getIntrospectionQuery.getIntrospectionQuery)(optionsWithDefaults),\n  );\n  const result = (0, _execute.executeSync)({\n    schema,\n    document,\n  });\n  (!result.errors && result.data) || (0, _invariant.invariant)(false);\n  return result.data;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.buildClientSchema = buildClientSchema;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _isObjectLike = require('../jsutils/isObjectLike.js');\n\nvar _keyValMap = require('../jsutils/keyValMap.js');\n\nvar _parser = require('../language/parser.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _directives = require('../type/directives.js');\n\nvar _introspection = require('../type/introspection.js');\n\nvar _scalars = require('../type/scalars.js');\n\nvar _schema = require('../type/schema.js');\n\nvar _valueFromAST = require('./valueFromAST.js');\n\n/**\n * Build a GraphQLSchema for use by client tools.\n *\n * Given the result of a client running the introspection query, creates and\n * returns a GraphQLSchema instance which can be then used with all graphql-js\n * tools, but cannot be used to execute a query, as introspection does not\n * represent the \"resolver\", \"parse\" or \"serialize\" functions or any other\n * server-internal mechanisms.\n *\n * This function expects a complete introspection result. Don't forget to check\n * the \"errors\" field of a server response before calling this function.\n */\nfunction buildClientSchema(introspection, options) {\n  ((0, _isObjectLike.isObjectLike)(introspection) &&\n    (0, _isObjectLike.isObjectLike)(introspection.__schema)) ||\n    (0, _devAssert.devAssert)(\n      false,\n      `Invalid or incomplete introspection result. Ensure that you are passing \"data\" property of introspection response and no \"errors\" was returned alongside: ${(0,\n      _inspect.inspect)(introspection)}.`,\n    ); // Get the schema from the introspection result.\n\n  const schemaIntrospection = introspection.__schema; // Iterate through all types, getting the type definition for each.\n\n  const typeMap = (0, _keyValMap.keyValMap)(\n    schemaIntrospection.types,\n    (typeIntrospection) => typeIntrospection.name,\n    (typeIntrospection) => buildType(typeIntrospection),\n  ); // Include standard types only if they are used.\n\n  for (const stdType of [\n    ..._scalars.specifiedScalarTypes,\n    ..._introspection.introspectionTypes,\n  ]) {\n    if (typeMap[stdType.name]) {\n      typeMap[stdType.name] = stdType;\n    }\n  } // Get the root Query, Mutation, and Subscription types.\n\n  const queryType = schemaIntrospection.queryType\n    ? getObjectType(schemaIntrospection.queryType)\n    : null;\n  const mutationType = schemaIntrospection.mutationType\n    ? getObjectType(schemaIntrospection.mutationType)\n    : null;\n  const subscriptionType = schemaIntrospection.subscriptionType\n    ? getObjectType(schemaIntrospection.subscriptionType)\n    : null; // Get the directives supported by Introspection, assuming empty-set if\n  // directives were not queried for.\n\n  const directives = schemaIntrospection.directives\n    ? schemaIntrospection.directives.map(buildDirective)\n    : []; // Then produce and return a Schema with these types.\n\n  return new _schema.GraphQLSchema({\n    description: schemaIntrospection.description,\n    query: queryType,\n    mutation: mutationType,\n    subscription: subscriptionType,\n    types: Object.values(typeMap),\n    directives,\n    assumeValid:\n      options === null || options === void 0 ? void 0 : options.assumeValid,\n  }); // Given a type reference in introspection, return the GraphQLType instance.\n  // preferring cached instances before building new instances.\n\n  function getType(typeRef) {\n    if (typeRef.kind === _introspection.TypeKind.LIST) {\n      const itemRef = typeRef.ofType;\n\n      if (!itemRef) {\n        throw new Error('Decorated type deeper than introspection query.');\n      }\n\n      return new _definition.GraphQLList(getType(itemRef));\n    }\n\n    if (typeRef.kind === _introspection.TypeKind.NON_NULL) {\n      const nullableRef = typeRef.ofType;\n\n      if (!nullableRef) {\n        throw new Error('Decorated type deeper than introspection query.');\n      }\n\n      const nullableType = getType(nullableRef);\n      return new _definition.GraphQLNonNull(\n        (0, _definition.assertNullableType)(nullableType),\n      );\n    }\n\n    return getNamedType(typeRef);\n  }\n\n  function getNamedType(typeRef) {\n    const typeName = typeRef.name;\n\n    if (!typeName) {\n      throw new Error(\n        `Unknown type reference: ${(0, _inspect.inspect)(typeRef)}.`,\n      );\n    }\n\n    const type = typeMap[typeName];\n\n    if (!type) {\n      throw new Error(\n        `Invalid or incomplete schema, unknown type: ${typeName}. Ensure that a full introspection query is used in order to build a client schema.`,\n      );\n    }\n\n    return type;\n  }\n\n  function getObjectType(typeRef) {\n    return (0, _definition.assertObjectType)(getNamedType(typeRef));\n  }\n\n  function getInterfaceType(typeRef) {\n    return (0, _definition.assertInterfaceType)(getNamedType(typeRef));\n  } // Given a type's introspection result, construct the correct\n  // GraphQLType instance.\n\n  function buildType(type) {\n    // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n    if (type != null && type.name != null && type.kind != null) {\n      // FIXME: Properly type IntrospectionType, it's a breaking change so fix in v17\n      // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n      switch (type.kind) {\n        case _introspection.TypeKind.SCALAR:\n          return buildScalarDef(type);\n\n        case _introspection.TypeKind.OBJECT:\n          return buildObjectDef(type);\n\n        case _introspection.TypeKind.INTERFACE:\n          return buildInterfaceDef(type);\n\n        case _introspection.TypeKind.UNION:\n          return buildUnionDef(type);\n\n        case _introspection.TypeKind.ENUM:\n          return buildEnumDef(type);\n\n        case _introspection.TypeKind.INPUT_OBJECT:\n          return buildInputObjectDef(type);\n      }\n    }\n\n    const typeStr = (0, _inspect.inspect)(type);\n    throw new Error(\n      `Invalid or incomplete introspection result. Ensure that a full introspection query is used in order to build a client schema: ${typeStr}.`,\n    );\n  }\n\n  function buildScalarDef(scalarIntrospection) {\n    return new _definition.GraphQLScalarType({\n      name: scalarIntrospection.name,\n      description: scalarIntrospection.description,\n      specifiedByURL: scalarIntrospection.specifiedByURL,\n    });\n  }\n\n  function buildImplementationsList(implementingIntrospection) {\n    // TODO: Temporary workaround until GraphQL ecosystem will fully support\n    // 'interfaces' on interface types.\n    if (\n      implementingIntrospection.interfaces === null &&\n      implementingIntrospection.kind === _introspection.TypeKind.INTERFACE\n    ) {\n      return [];\n    }\n\n    if (!implementingIntrospection.interfaces) {\n      const implementingIntrospectionStr = (0, _inspect.inspect)(\n        implementingIntrospection,\n      );\n      throw new Error(\n        `Introspection result missing interfaces: ${implementingIntrospectionStr}.`,\n      );\n    }\n\n    return implementingIntrospection.interfaces.map(getInterfaceType);\n  }\n\n  function buildObjectDef(objectIntrospection) {\n    return new _definition.GraphQLObjectType({\n      name: objectIntrospection.name,\n      description: objectIntrospection.description,\n      interfaces: () => buildImplementationsList(objectIntrospection),\n      fields: () => buildFieldDefMap(objectIntrospection),\n    });\n  }\n\n  function buildInterfaceDef(interfaceIntrospection) {\n    return new _definition.GraphQLInterfaceType({\n      name: interfaceIntrospection.name,\n      description: interfaceIntrospection.description,\n      interfaces: () => buildImplementationsList(interfaceIntrospection),\n      fields: () => buildFieldDefMap(interfaceIntrospection),\n    });\n  }\n\n  function buildUnionDef(unionIntrospection) {\n    if (!unionIntrospection.possibleTypes) {\n      const unionIntrospectionStr = (0, _inspect.inspect)(unionIntrospection);\n      throw new Error(\n        `Introspection result missing possibleTypes: ${unionIntrospectionStr}.`,\n      );\n    }\n\n    return new _definition.GraphQLUnionType({\n      name: unionIntrospection.name,\n      description: unionIntrospection.description,\n      types: () => unionIntrospection.possibleTypes.map(getObjectType),\n    });\n  }\n\n  function buildEnumDef(enumIntrospection) {\n    if (!enumIntrospection.enumValues) {\n      const enumIntrospectionStr = (0, _inspect.inspect)(enumIntrospection);\n      throw new Error(\n        `Introspection result missing enumValues: ${enumIntrospectionStr}.`,\n      );\n    }\n\n    return new _definition.GraphQLEnumType({\n      name: enumIntrospection.name,\n      description: enumIntrospection.description,\n      values: (0, _keyValMap.keyValMap)(\n        enumIntrospection.enumValues,\n        (valueIntrospection) => valueIntrospection.name,\n        (valueIntrospection) => ({\n          description: valueIntrospection.description,\n          deprecationReason: valueIntrospection.deprecationReason,\n        }),\n      ),\n    });\n  }\n\n  function buildInputObjectDef(inputObjectIntrospection) {\n    if (!inputObjectIntrospection.inputFields) {\n      const inputObjectIntrospectionStr = (0, _inspect.inspect)(\n        inputObjectIntrospection,\n      );\n      throw new Error(\n        `Introspection result missing inputFields: ${inputObjectIntrospectionStr}.`,\n      );\n    }\n\n    return new _definition.GraphQLInputObjectType({\n      name: inputObjectIntrospection.name,\n      description: inputObjectIntrospection.description,\n      fields: () => buildInputValueDefMap(inputObjectIntrospection.inputFields),\n    });\n  }\n\n  function buildFieldDefMap(typeIntrospection) {\n    if (!typeIntrospection.fields) {\n      throw new Error(\n        `Introspection result missing fields: ${(0, _inspect.inspect)(\n          typeIntrospection,\n        )}.`,\n      );\n    }\n\n    return (0, _keyValMap.keyValMap)(\n      typeIntrospection.fields,\n      (fieldIntrospection) => fieldIntrospection.name,\n      buildField,\n    );\n  }\n\n  function buildField(fieldIntrospection) {\n    const type = getType(fieldIntrospection.type);\n\n    if (!(0, _definition.isOutputType)(type)) {\n      const typeStr = (0, _inspect.inspect)(type);\n      throw new Error(\n        `Introspection must provide output type for fields, but received: ${typeStr}.`,\n      );\n    }\n\n    if (!fieldIntrospection.args) {\n      const fieldIntrospectionStr = (0, _inspect.inspect)(fieldIntrospection);\n      throw new Error(\n        `Introspection result missing field args: ${fieldIntrospectionStr}.`,\n      );\n    }\n\n    return {\n      description: fieldIntrospection.description,\n      deprecationReason: fieldIntrospection.deprecationReason,\n      type,\n      args: buildInputValueDefMap(fieldIntrospection.args),\n    };\n  }\n\n  function buildInputValueDefMap(inputValueIntrospections) {\n    return (0, _keyValMap.keyValMap)(\n      inputValueIntrospections,\n      (inputValue) => inputValue.name,\n      buildInputValue,\n    );\n  }\n\n  function buildInputValue(inputValueIntrospection) {\n    const type = getType(inputValueIntrospection.type);\n\n    if (!(0, _definition.isInputType)(type)) {\n      const typeStr = (0, _inspect.inspect)(type);\n      throw new Error(\n        `Introspection must provide input type for arguments, but received: ${typeStr}.`,\n      );\n    }\n\n    const defaultValue =\n      inputValueIntrospection.defaultValue != null\n        ? (0, _valueFromAST.valueFromAST)(\n            (0, _parser.parseValue)(inputValueIntrospection.defaultValue),\n            type,\n          )\n        : undefined;\n    return {\n      description: inputValueIntrospection.description,\n      type,\n      defaultValue,\n      deprecationReason: inputValueIntrospection.deprecationReason,\n    };\n  }\n\n  function buildDirective(directiveIntrospection) {\n    if (!directiveIntrospection.args) {\n      const directiveIntrospectionStr = (0, _inspect.inspect)(\n        directiveIntrospection,\n      );\n      throw new Error(\n        `Introspection result missing directive args: ${directiveIntrospectionStr}.`,\n      );\n    }\n\n    if (!directiveIntrospection.locations) {\n      const directiveIntrospectionStr = (0, _inspect.inspect)(\n        directiveIntrospection,\n      );\n      throw new Error(\n        `Introspection result missing directive locations: ${directiveIntrospectionStr}.`,\n      );\n    }\n\n    return new _directives.GraphQLDirective({\n      name: directiveIntrospection.name,\n      description: directiveIntrospection.description,\n      isRepeatable: directiveIntrospection.isRepeatable,\n      locations: directiveIntrospection.locations.slice(),\n      args: buildInputValueDefMap(directiveIntrospection.args),\n    });\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.extendSchema = extendSchema;\nexports.extendSchemaImpl = extendSchemaImpl;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _keyMap = require('../jsutils/keyMap.js');\n\nvar _mapValue = require('../jsutils/mapValue.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _predicates = require('../language/predicates.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _directives = require('../type/directives.js');\n\nvar _introspection = require('../type/introspection.js');\n\nvar _scalars = require('../type/scalars.js');\n\nvar _schema = require('../type/schema.js');\n\nvar _validate = require('../validation/validate.js');\n\nvar _values = require('../execution/values.js');\n\nvar _valueFromAST = require('./valueFromAST.js');\n\n/**\n * Produces a new schema given an existing schema and a document which may\n * contain GraphQL type extensions and definitions. The original schema will\n * remain unaltered.\n *\n * Because a schema represents a graph of references, a schema cannot be\n * extended without effectively making an entire copy. We do not know until it's\n * too late if subgraphs remain unchanged.\n *\n * This algorithm copies the provided schema, applying extensions while\n * producing the copy. The original schema remains unaltered.\n */\nfunction extendSchema(schema, documentAST, options) {\n  (0, _schema.assertSchema)(schema);\n  (documentAST != null && documentAST.kind === _kinds.Kind.DOCUMENT) ||\n    (0, _devAssert.devAssert)(false, 'Must provide valid Document AST.');\n\n  if (\n    (options === null || options === void 0 ? void 0 : options.assumeValid) !==\n      true &&\n    (options === null || options === void 0\n      ? void 0\n      : options.assumeValidSDL) !== true\n  ) {\n    (0, _validate.assertValidSDLExtension)(documentAST, schema);\n  }\n\n  const schemaConfig = schema.toConfig();\n  const extendedConfig = extendSchemaImpl(schemaConfig, documentAST, options);\n  return schemaConfig === extendedConfig\n    ? schema\n    : new _schema.GraphQLSchema(extendedConfig);\n}\n/**\n * @internal\n */\n\nfunction extendSchemaImpl(schemaConfig, documentAST, options) {\n  var _schemaDef, _schemaDef$descriptio, _schemaDef2, _options$assumeValid;\n\n  // Collect the type definitions and extensions found in the document.\n  const typeDefs = [];\n  const typeExtensionsMap = Object.create(null); // New directives and types are separate because a directives and types can\n  // have the same name. For example, a type named \"skip\".\n\n  const directiveDefs = [];\n  let schemaDef; // Schema extensions are collected which may add additional operation types.\n\n  const schemaExtensions = [];\n\n  for (const def of documentAST.definitions) {\n    if (def.kind === _kinds.Kind.SCHEMA_DEFINITION) {\n      schemaDef = def;\n    } else if (def.kind === _kinds.Kind.SCHEMA_EXTENSION) {\n      schemaExtensions.push(def);\n    } else if ((0, _predicates.isTypeDefinitionNode)(def)) {\n      typeDefs.push(def);\n    } else if ((0, _predicates.isTypeExtensionNode)(def)) {\n      const extendedTypeName = def.name.value;\n      const existingTypeExtensions = typeExtensionsMap[extendedTypeName];\n      typeExtensionsMap[extendedTypeName] = existingTypeExtensions\n        ? existingTypeExtensions.concat([def])\n        : [def];\n    } else if (def.kind === _kinds.Kind.DIRECTIVE_DEFINITION) {\n      directiveDefs.push(def);\n    }\n  } // If this document contains no new types, extensions, or directives then\n  // return the same unmodified GraphQLSchema instance.\n\n  if (\n    Object.keys(typeExtensionsMap).length === 0 &&\n    typeDefs.length === 0 &&\n    directiveDefs.length === 0 &&\n    schemaExtensions.length === 0 &&\n    schemaDef == null\n  ) {\n    return schemaConfig;\n  }\n\n  const typeMap = Object.create(null);\n\n  for (const existingType of schemaConfig.types) {\n    typeMap[existingType.name] = extendNamedType(existingType);\n  }\n\n  for (const typeNode of typeDefs) {\n    var _stdTypeMap$name;\n\n    const name = typeNode.name.value;\n    typeMap[name] =\n      (_stdTypeMap$name = stdTypeMap[name]) !== null &&\n      _stdTypeMap$name !== void 0\n        ? _stdTypeMap$name\n        : buildType(typeNode);\n  }\n\n  const operationTypes = {\n    // Get the extended root operation types.\n    query: schemaConfig.query && replaceNamedType(schemaConfig.query),\n    mutation: schemaConfig.mutation && replaceNamedType(schemaConfig.mutation),\n    subscription:\n      schemaConfig.subscription && replaceNamedType(schemaConfig.subscription),\n    // Then, incorporate schema definition and all schema extensions.\n    ...(schemaDef && getOperationTypes([schemaDef])),\n    ...getOperationTypes(schemaExtensions),\n  }; // Then produce and return a Schema config with these types.\n\n  return {\n    description:\n      (_schemaDef = schemaDef) === null || _schemaDef === void 0\n        ? void 0\n        : (_schemaDef$descriptio = _schemaDef.description) === null ||\n          _schemaDef$descriptio === void 0\n        ? void 0\n        : _schemaDef$descriptio.value,\n    ...operationTypes,\n    types: Object.values(typeMap),\n    directives: [\n      ...schemaConfig.directives.map(replaceDirective),\n      ...directiveDefs.map(buildDirective),\n    ],\n    extensions: Object.create(null),\n    astNode:\n      (_schemaDef2 = schemaDef) !== null && _schemaDef2 !== void 0\n        ? _schemaDef2\n        : schemaConfig.astNode,\n    extensionASTNodes: schemaConfig.extensionASTNodes.concat(schemaExtensions),\n    assumeValid:\n      (_options$assumeValid =\n        options === null || options === void 0\n          ? void 0\n          : options.assumeValid) !== null && _options$assumeValid !== void 0\n        ? _options$assumeValid\n        : false,\n  }; // Below are functions used for producing this schema that have closed over\n  // this scope and have access to the schema, cache, and newly defined types.\n\n  function replaceType(type) {\n    if ((0, _definition.isListType)(type)) {\n      // @ts-expect-error\n      return new _definition.GraphQLList(replaceType(type.ofType));\n    }\n\n    if ((0, _definition.isNonNullType)(type)) {\n      // @ts-expect-error\n      return new _definition.GraphQLNonNull(replaceType(type.ofType));\n    } // @ts-expect-error FIXME\n\n    return replaceNamedType(type);\n  }\n\n  function replaceNamedType(type) {\n    // Note: While this could make early assertions to get the correctly\n    // typed values, that would throw immediately while type system\n    // validation with validateSchema() will produce more actionable results.\n    return typeMap[type.name];\n  }\n\n  function replaceDirective(directive) {\n    const config = directive.toConfig();\n    return new _directives.GraphQLDirective({\n      ...config,\n      args: (0, _mapValue.mapValue)(config.args, extendArg),\n    });\n  }\n\n  function extendNamedType(type) {\n    if (\n      (0, _introspection.isIntrospectionType)(type) ||\n      (0, _scalars.isSpecifiedScalarType)(type)\n    ) {\n      // Builtin types are not extended.\n      return type;\n    }\n\n    if ((0, _definition.isScalarType)(type)) {\n      return extendScalarType(type);\n    }\n\n    if ((0, _definition.isObjectType)(type)) {\n      return extendObjectType(type);\n    }\n\n    if ((0, _definition.isInterfaceType)(type)) {\n      return extendInterfaceType(type);\n    }\n\n    if ((0, _definition.isUnionType)(type)) {\n      return extendUnionType(type);\n    }\n\n    if ((0, _definition.isEnumType)(type)) {\n      return extendEnumType(type);\n    }\n\n    if ((0, _definition.isInputObjectType)(type)) {\n      return extendInputObjectType(type);\n    }\n    /* c8 ignore next 3 */\n    // Not reachable, all possible type definition nodes have been considered.\n\n    false ||\n      (0, _invariant.invariant)(\n        false,\n        'Unexpected type: ' + (0, _inspect.inspect)(type),\n      );\n  }\n\n  function extendInputObjectType(type) {\n    var _typeExtensionsMap$co;\n\n    const config = type.toConfig();\n    const extensions =\n      (_typeExtensionsMap$co = typeExtensionsMap[config.name]) !== null &&\n      _typeExtensionsMap$co !== void 0\n        ? _typeExtensionsMap$co\n        : [];\n    return new _definition.GraphQLInputObjectType({\n      ...config,\n      fields: () => ({\n        ...(0, _mapValue.mapValue)(config.fields, (field) => ({\n          ...field,\n          type: replaceType(field.type),\n        })),\n        ...buildInputFieldMap(extensions),\n      }),\n      extensionASTNodes: config.extensionASTNodes.concat(extensions),\n    });\n  }\n\n  function extendEnumType(type) {\n    var _typeExtensionsMap$ty;\n\n    const config = type.toConfig();\n    const extensions =\n      (_typeExtensionsMap$ty = typeExtensionsMap[type.name]) !== null &&\n      _typeExtensionsMap$ty !== void 0\n        ? _typeExtensionsMap$ty\n        : [];\n    return new _definition.GraphQLEnumType({\n      ...config,\n      values: { ...config.values, ...buildEnumValueMap(extensions) },\n      extensionASTNodes: config.extensionASTNodes.concat(extensions),\n    });\n  }\n\n  function extendScalarType(type) {\n    var _typeExtensionsMap$co2;\n\n    const config = type.toConfig();\n    const extensions =\n      (_typeExtensionsMap$co2 = typeExtensionsMap[config.name]) !== null &&\n      _typeExtensionsMap$co2 !== void 0\n        ? _typeExtensionsMap$co2\n        : [];\n    let specifiedByURL = config.specifiedByURL;\n\n    for (const extensionNode of extensions) {\n      var _getSpecifiedByURL;\n\n      specifiedByURL =\n        (_getSpecifiedByURL = getSpecifiedByURL(extensionNode)) !== null &&\n        _getSpecifiedByURL !== void 0\n          ? _getSpecifiedByURL\n          : specifiedByURL;\n    }\n\n    return new _definition.GraphQLScalarType({\n      ...config,\n      specifiedByURL,\n      extensionASTNodes: config.extensionASTNodes.concat(extensions),\n    });\n  }\n\n  function extendObjectType(type) {\n    var _typeExtensionsMap$co3;\n\n    const config = type.toConfig();\n    const extensions =\n      (_typeExtensionsMap$co3 = typeExtensionsMap[config.name]) !== null &&\n      _typeExtensionsMap$co3 !== void 0\n        ? _typeExtensionsMap$co3\n        : [];\n    return new _definition.GraphQLObjectType({\n      ...config,\n      interfaces: () => [\n        ...type.getInterfaces().map(replaceNamedType),\n        ...buildInterfaces(extensions),\n      ],\n      fields: () => ({\n        ...(0, _mapValue.mapValue)(config.fields, extendField),\n        ...buildFieldMap(extensions),\n      }),\n      extensionASTNodes: config.extensionASTNodes.concat(extensions),\n    });\n  }\n\n  function extendInterfaceType(type) {\n    var _typeExtensionsMap$co4;\n\n    const config = type.toConfig();\n    const extensions =\n      (_typeExtensionsMap$co4 = typeExtensionsMap[config.name]) !== null &&\n      _typeExtensionsMap$co4 !== void 0\n        ? _typeExtensionsMap$co4\n        : [];\n    return new _definition.GraphQLInterfaceType({\n      ...config,\n      interfaces: () => [\n        ...type.getInterfaces().map(replaceNamedType),\n        ...buildInterfaces(extensions),\n      ],\n      fields: () => ({\n        ...(0, _mapValue.mapValue)(config.fields, extendField),\n        ...buildFieldMap(extensions),\n      }),\n      extensionASTNodes: config.extensionASTNodes.concat(extensions),\n    });\n  }\n\n  function extendUnionType(type) {\n    var _typeExtensionsMap$co5;\n\n    const config = type.toConfig();\n    const extensions =\n      (_typeExtensionsMap$co5 = typeExtensionsMap[config.name]) !== null &&\n      _typeExtensionsMap$co5 !== void 0\n        ? _typeExtensionsMap$co5\n        : [];\n    return new _definition.GraphQLUnionType({\n      ...config,\n      types: () => [\n        ...type.getTypes().map(replaceNamedType),\n        ...buildUnionTypes(extensions),\n      ],\n      extensionASTNodes: config.extensionASTNodes.concat(extensions),\n    });\n  }\n\n  function extendField(field) {\n    return {\n      ...field,\n      type: replaceType(field.type),\n      args: field.args && (0, _mapValue.mapValue)(field.args, extendArg),\n    };\n  }\n\n  function extendArg(arg) {\n    return { ...arg, type: replaceType(arg.type) };\n  }\n\n  function getOperationTypes(nodes) {\n    const opTypes = {};\n\n    for (const node of nodes) {\n      var _node$operationTypes;\n\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n      const operationTypesNodes =\n        /* c8 ignore next */\n        (_node$operationTypes = node.operationTypes) !== null &&\n        _node$operationTypes !== void 0\n          ? _node$operationTypes\n          : [];\n\n      for (const operationType of operationTypesNodes) {\n        // Note: While this could make early assertions to get the correctly\n        // typed values below, that would throw immediately while type system\n        // validation with validateSchema() will produce more actionable results.\n        // @ts-expect-error\n        opTypes[operationType.operation] = getNamedType(operationType.type);\n      }\n    }\n\n    return opTypes;\n  }\n\n  function getNamedType(node) {\n    var _stdTypeMap$name2;\n\n    const name = node.name.value;\n    const type =\n      (_stdTypeMap$name2 = stdTypeMap[name]) !== null &&\n      _stdTypeMap$name2 !== void 0\n        ? _stdTypeMap$name2\n        : typeMap[name];\n\n    if (type === undefined) {\n      throw new Error(`Unknown type: \"${name}\".`);\n    }\n\n    return type;\n  }\n\n  function getWrappedType(node) {\n    if (node.kind === _kinds.Kind.LIST_TYPE) {\n      return new _definition.GraphQLList(getWrappedType(node.type));\n    }\n\n    if (node.kind === _kinds.Kind.NON_NULL_TYPE) {\n      return new _definition.GraphQLNonNull(getWrappedType(node.type));\n    }\n\n    return getNamedType(node);\n  }\n\n  function buildDirective(node) {\n    var _node$description;\n\n    return new _directives.GraphQLDirective({\n      name: node.name.value,\n      description:\n        (_node$description = node.description) === null ||\n        _node$description === void 0\n          ? void 0\n          : _node$description.value,\n      // @ts-expect-error\n      locations: node.locations.map(({ value }) => value),\n      isRepeatable: node.repeatable,\n      args: buildArgumentMap(node.arguments),\n      astNode: node,\n    });\n  }\n\n  function buildFieldMap(nodes) {\n    const fieldConfigMap = Object.create(null);\n\n    for (const node of nodes) {\n      var _node$fields;\n\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n      const nodeFields =\n        /* c8 ignore next */\n        (_node$fields = node.fields) !== null && _node$fields !== void 0\n          ? _node$fields\n          : [];\n\n      for (const field of nodeFields) {\n        var _field$description;\n\n        fieldConfigMap[field.name.value] = {\n          // Note: While this could make assertions to get the correctly typed\n          // value, that would throw immediately while type system validation\n          // with validateSchema() will produce more actionable results.\n          type: getWrappedType(field.type),\n          description:\n            (_field$description = field.description) === null ||\n            _field$description === void 0\n              ? void 0\n              : _field$description.value,\n          args: buildArgumentMap(field.arguments),\n          deprecationReason: getDeprecationReason(field),\n          astNode: field,\n        };\n      }\n    }\n\n    return fieldConfigMap;\n  }\n\n  function buildArgumentMap(args) {\n    // FIXME: https://github.com/graphql/graphql-js/issues/2203\n    const argsNodes =\n      /* c8 ignore next */\n      args !== null && args !== void 0 ? args : [];\n    const argConfigMap = Object.create(null);\n\n    for (const arg of argsNodes) {\n      var _arg$description;\n\n      // Note: While this could make assertions to get the correctly typed\n      // value, that would throw immediately while type system validation\n      // with validateSchema() will produce more actionable results.\n      const type = getWrappedType(arg.type);\n      argConfigMap[arg.name.value] = {\n        type,\n        description:\n          (_arg$description = arg.description) === null ||\n          _arg$description === void 0\n            ? void 0\n            : _arg$description.value,\n        defaultValue: (0, _valueFromAST.valueFromAST)(arg.defaultValue, type),\n        deprecationReason: getDeprecationReason(arg),\n        astNode: arg,\n      };\n    }\n\n    return argConfigMap;\n  }\n\n  function buildInputFieldMap(nodes) {\n    const inputFieldMap = Object.create(null);\n\n    for (const node of nodes) {\n      var _node$fields2;\n\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n      const fieldsNodes =\n        /* c8 ignore next */\n        (_node$fields2 = node.fields) !== null && _node$fields2 !== void 0\n          ? _node$fields2\n          : [];\n\n      for (const field of fieldsNodes) {\n        var _field$description2;\n\n        // Note: While this could make assertions to get the correctly typed\n        // value, that would throw immediately while type system validation\n        // with validateSchema() will produce more actionable results.\n        const type = getWrappedType(field.type);\n        inputFieldMap[field.name.value] = {\n          type,\n          description:\n            (_field$description2 = field.description) === null ||\n            _field$description2 === void 0\n              ? void 0\n              : _field$description2.value,\n          defaultValue: (0, _valueFromAST.valueFromAST)(\n            field.defaultValue,\n            type,\n          ),\n          deprecationReason: getDeprecationReason(field),\n          astNode: field,\n        };\n      }\n    }\n\n    return inputFieldMap;\n  }\n\n  function buildEnumValueMap(nodes) {\n    const enumValueMap = Object.create(null);\n\n    for (const node of nodes) {\n      var _node$values;\n\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n      const valuesNodes =\n        /* c8 ignore next */\n        (_node$values = node.values) !== null && _node$values !== void 0\n          ? _node$values\n          : [];\n\n      for (const value of valuesNodes) {\n        var _value$description;\n\n        enumValueMap[value.name.value] = {\n          description:\n            (_value$description = value.description) === null ||\n            _value$description === void 0\n              ? void 0\n              : _value$description.value,\n          deprecationReason: getDeprecationReason(value),\n          astNode: value,\n        };\n      }\n    }\n\n    return enumValueMap;\n  }\n\n  function buildInterfaces(nodes) {\n    // Note: While this could make assertions to get the correctly typed\n    // values below, that would throw immediately while type system\n    // validation with validateSchema() will produce more actionable results.\n    // @ts-expect-error\n    return nodes.flatMap(\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n      (node) => {\n        var _node$interfaces$map, _node$interfaces;\n\n        return (\n          /* c8 ignore next */\n          (_node$interfaces$map =\n            (_node$interfaces = node.interfaces) === null ||\n            _node$interfaces === void 0\n              ? void 0\n              : _node$interfaces.map(getNamedType)) !== null &&\n            _node$interfaces$map !== void 0\n            ? _node$interfaces$map\n            : []\n        );\n      },\n    );\n  }\n\n  function buildUnionTypes(nodes) {\n    // Note: While this could make assertions to get the correctly typed\n    // values below, that would throw immediately while type system\n    // validation with validateSchema() will produce more actionable results.\n    // @ts-expect-error\n    return nodes.flatMap(\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n      (node) => {\n        var _node$types$map, _node$types;\n\n        return (\n          /* c8 ignore next */\n          (_node$types$map =\n            (_node$types = node.types) === null || _node$types === void 0\n              ? void 0\n              : _node$types.map(getNamedType)) !== null &&\n            _node$types$map !== void 0\n            ? _node$types$map\n            : []\n        );\n      },\n    );\n  }\n\n  function buildType(astNode) {\n    var _typeExtensionsMap$na;\n\n    const name = astNode.name.value;\n    const extensionASTNodes =\n      (_typeExtensionsMap$na = typeExtensionsMap[name]) !== null &&\n      _typeExtensionsMap$na !== void 0\n        ? _typeExtensionsMap$na\n        : [];\n\n    switch (astNode.kind) {\n      case _kinds.Kind.OBJECT_TYPE_DEFINITION: {\n        var _astNode$description;\n\n        const allNodes = [astNode, ...extensionASTNodes];\n        return new _definition.GraphQLObjectType({\n          name,\n          description:\n            (_astNode$description = astNode.description) === null ||\n            _astNode$description === void 0\n              ? void 0\n              : _astNode$description.value,\n          interfaces: () => buildInterfaces(allNodes),\n          fields: () => buildFieldMap(allNodes),\n          astNode,\n          extensionASTNodes,\n        });\n      }\n\n      case _kinds.Kind.INTERFACE_TYPE_DEFINITION: {\n        var _astNode$description2;\n\n        const allNodes = [astNode, ...extensionASTNodes];\n        return new _definition.GraphQLInterfaceType({\n          name,\n          description:\n            (_astNode$description2 = astNode.description) === null ||\n            _astNode$description2 === void 0\n              ? void 0\n              : _astNode$description2.value,\n          interfaces: () => buildInterfaces(allNodes),\n          fields: () => buildFieldMap(allNodes),\n          astNode,\n          extensionASTNodes,\n        });\n      }\n\n      case _kinds.Kind.ENUM_TYPE_DEFINITION: {\n        var _astNode$description3;\n\n        const allNodes = [astNode, ...extensionASTNodes];\n        return new _definition.GraphQLEnumType({\n          name,\n          description:\n            (_astNode$description3 = astNode.description) === null ||\n            _astNode$description3 === void 0\n              ? void 0\n              : _astNode$description3.value,\n          values: buildEnumValueMap(allNodes),\n          astNode,\n          extensionASTNodes,\n        });\n      }\n\n      case _kinds.Kind.UNION_TYPE_DEFINITION: {\n        var _astNode$description4;\n\n        const allNodes = [astNode, ...extensionASTNodes];\n        return new _definition.GraphQLUnionType({\n          name,\n          description:\n            (_astNode$description4 = astNode.description) === null ||\n            _astNode$description4 === void 0\n              ? void 0\n              : _astNode$description4.value,\n          types: () => buildUnionTypes(allNodes),\n          astNode,\n          extensionASTNodes,\n        });\n      }\n\n      case _kinds.Kind.SCALAR_TYPE_DEFINITION: {\n        var _astNode$description5;\n\n        return new _definition.GraphQLScalarType({\n          name,\n          description:\n            (_astNode$description5 = astNode.description) === null ||\n            _astNode$description5 === void 0\n              ? void 0\n              : _astNode$description5.value,\n          specifiedByURL: getSpecifiedByURL(astNode),\n          astNode,\n          extensionASTNodes,\n        });\n      }\n\n      case _kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION: {\n        var _astNode$description6;\n\n        const allNodes = [astNode, ...extensionASTNodes];\n        return new _definition.GraphQLInputObjectType({\n          name,\n          description:\n            (_astNode$description6 = astNode.description) === null ||\n            _astNode$description6 === void 0\n              ? void 0\n              : _astNode$description6.value,\n          fields: () => buildInputFieldMap(allNodes),\n          astNode,\n          extensionASTNodes,\n        });\n      }\n    }\n  }\n}\n\nconst stdTypeMap = (0, _keyMap.keyMap)(\n  [..._scalars.specifiedScalarTypes, ..._introspection.introspectionTypes],\n  (type) => type.name,\n);\n/**\n * Given a field or enum value node, returns the string value for the\n * deprecation reason.\n */\n\nfunction getDeprecationReason(node) {\n  const deprecated = (0, _values.getDirectiveValues)(\n    _directives.GraphQLDeprecatedDirective,\n    node,\n  ); // @ts-expect-error validated by `getDirectiveValues`\n\n  return deprecated === null || deprecated === void 0\n    ? void 0\n    : deprecated.reason;\n}\n/**\n * Given a scalar node, returns the string value for the specifiedByURL.\n */\n\nfunction getSpecifiedByURL(node) {\n  const specifiedBy = (0, _values.getDirectiveValues)(\n    _directives.GraphQLSpecifiedByDirective,\n    node,\n  ); // @ts-expect-error validated by `getDirectiveValues`\n\n  return specifiedBy === null || specifiedBy === void 0\n    ? void 0\n    : specifiedBy.url;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.buildASTSchema = buildASTSchema;\nexports.buildSchema = buildSchema;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _parser = require('../language/parser.js');\n\nvar _directives = require('../type/directives.js');\n\nvar _schema = require('../type/schema.js');\n\nvar _validate = require('../validation/validate.js');\n\nvar _extendSchema = require('./extendSchema.js');\n\n/**\n * This takes the ast of a schema document produced by the parse function in\n * src/language/parser.js.\n *\n * If no schema definition is provided, then it will look for types named Query,\n * Mutation and Subscription.\n *\n * Given that AST it constructs a GraphQLSchema. The resulting schema\n * has no resolve methods, so execution will use default resolvers.\n */\nfunction buildASTSchema(documentAST, options) {\n  (documentAST != null && documentAST.kind === _kinds.Kind.DOCUMENT) ||\n    (0, _devAssert.devAssert)(false, 'Must provide valid Document AST.');\n\n  if (\n    (options === null || options === void 0 ? void 0 : options.assumeValid) !==\n      true &&\n    (options === null || options === void 0\n      ? void 0\n      : options.assumeValidSDL) !== true\n  ) {\n    (0, _validate.assertValidSDL)(documentAST);\n  }\n\n  const emptySchemaConfig = {\n    description: undefined,\n    types: [],\n    directives: [],\n    extensions: Object.create(null),\n    extensionASTNodes: [],\n    assumeValid: false,\n  };\n  const config = (0, _extendSchema.extendSchemaImpl)(\n    emptySchemaConfig,\n    documentAST,\n    options,\n  );\n\n  if (config.astNode == null) {\n    for (const type of config.types) {\n      switch (type.name) {\n        // Note: While this could make early assertions to get the correctly\n        // typed values below, that would throw immediately while type system\n        // validation with validateSchema() will produce more actionable results.\n        case 'Query':\n          // @ts-expect-error validated in `validateSchema`\n          config.query = type;\n          break;\n\n        case 'Mutation':\n          // @ts-expect-error validated in `validateSchema`\n          config.mutation = type;\n          break;\n\n        case 'Subscription':\n          // @ts-expect-error validated in `validateSchema`\n          config.subscription = type;\n          break;\n      }\n    }\n  }\n\n  const directives = [\n    ...config.directives, // If specified directives were not explicitly declared, add them.\n    ..._directives.specifiedDirectives.filter((stdDirective) =>\n      config.directives.every(\n        (directive) => directive.name !== stdDirective.name,\n      ),\n    ),\n  ];\n  return new _schema.GraphQLSchema({ ...config, directives });\n}\n/**\n * A helper function to build a GraphQLSchema directly from a source\n * document.\n */\n\nfunction buildSchema(source, options) {\n  const document = (0, _parser.parse)(source, {\n    noLocation:\n      options === null || options === void 0 ? void 0 : options.noLocation,\n    allowLegacyFragmentVariables:\n      options === null || options === void 0\n        ? void 0\n        : options.allowLegacyFragmentVariables,\n  });\n  return buildASTSchema(document, {\n    assumeValidSDL:\n      options === null || options === void 0 ? void 0 : options.assumeValidSDL,\n    assumeValid:\n      options === null || options === void 0 ? void 0 : options.assumeValid,\n  });\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.lexicographicSortSchema = lexicographicSortSchema;\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _keyValMap = require('../jsutils/keyValMap.js');\n\nvar _naturalCompare = require('../jsutils/naturalCompare.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _directives = require('../type/directives.js');\n\nvar _introspection = require('../type/introspection.js');\n\nvar _schema = require('../type/schema.js');\n\n/**\n * Sort GraphQLSchema.\n *\n * This function returns a sorted copy of the given GraphQLSchema.\n */\nfunction lexicographicSortSchema(schema) {\n  const schemaConfig = schema.toConfig();\n  const typeMap = (0, _keyValMap.keyValMap)(\n    sortByName(schemaConfig.types),\n    (type) => type.name,\n    sortNamedType,\n  );\n  return new _schema.GraphQLSchema({\n    ...schemaConfig,\n    types: Object.values(typeMap),\n    directives: sortByName(schemaConfig.directives).map(sortDirective),\n    query: replaceMaybeType(schemaConfig.query),\n    mutation: replaceMaybeType(schemaConfig.mutation),\n    subscription: replaceMaybeType(schemaConfig.subscription),\n  });\n\n  function replaceType(type) {\n    if ((0, _definition.isListType)(type)) {\n      // @ts-expect-error\n      return new _definition.GraphQLList(replaceType(type.ofType));\n    } else if ((0, _definition.isNonNullType)(type)) {\n      // @ts-expect-error\n      return new _definition.GraphQLNonNull(replaceType(type.ofType));\n    } // @ts-expect-error FIXME: TS Conversion\n\n    return replaceNamedType(type);\n  }\n\n  function replaceNamedType(type) {\n    return typeMap[type.name];\n  }\n\n  function replaceMaybeType(maybeType) {\n    return maybeType && replaceNamedType(maybeType);\n  }\n\n  function sortDirective(directive) {\n    const config = directive.toConfig();\n    return new _directives.GraphQLDirective({\n      ...config,\n      locations: sortBy(config.locations, (x) => x),\n      args: sortArgs(config.args),\n    });\n  }\n\n  function sortArgs(args) {\n    return sortObjMap(args, (arg) => ({ ...arg, type: replaceType(arg.type) }));\n  }\n\n  function sortFields(fieldsMap) {\n    return sortObjMap(fieldsMap, (field) => ({\n      ...field,\n      type: replaceType(field.type),\n      args: field.args && sortArgs(field.args),\n    }));\n  }\n\n  function sortInputFields(fieldsMap) {\n    return sortObjMap(fieldsMap, (field) => ({\n      ...field,\n      type: replaceType(field.type),\n    }));\n  }\n\n  function sortTypes(array) {\n    return sortByName(array).map(replaceNamedType);\n  }\n\n  function sortNamedType(type) {\n    if (\n      (0, _definition.isScalarType)(type) ||\n      (0, _introspection.isIntrospectionType)(type)\n    ) {\n      return type;\n    }\n\n    if ((0, _definition.isObjectType)(type)) {\n      const config = type.toConfig();\n      return new _definition.GraphQLObjectType({\n        ...config,\n        interfaces: () => sortTypes(config.interfaces),\n        fields: () => sortFields(config.fields),\n      });\n    }\n\n    if ((0, _definition.isInterfaceType)(type)) {\n      const config = type.toConfig();\n      return new _definition.GraphQLInterfaceType({\n        ...config,\n        interfaces: () => sortTypes(config.interfaces),\n        fields: () => sortFields(config.fields),\n      });\n    }\n\n    if ((0, _definition.isUnionType)(type)) {\n      const config = type.toConfig();\n      return new _definition.GraphQLUnionType({\n        ...config,\n        types: () => sortTypes(config.types),\n      });\n    }\n\n    if ((0, _definition.isEnumType)(type)) {\n      const config = type.toConfig();\n      return new _definition.GraphQLEnumType({\n        ...config,\n        values: sortObjMap(config.values, (value) => value),\n      });\n    }\n\n    if ((0, _definition.isInputObjectType)(type)) {\n      const config = type.toConfig();\n      return new _definition.GraphQLInputObjectType({\n        ...config,\n        fields: () => sortInputFields(config.fields),\n      });\n    }\n    /* c8 ignore next 3 */\n    // Not reachable, all possible types have been considered.\n\n    false ||\n      (0, _invariant.invariant)(\n        false,\n        'Unexpected type: ' + (0, _inspect.inspect)(type),\n      );\n  }\n}\n\nfunction sortObjMap(map, sortValueFn) {\n  const sortedMap = Object.create(null);\n\n  for (const key of Object.keys(map).sort(_naturalCompare.naturalCompare)) {\n    sortedMap[key] = sortValueFn(map[key]);\n  }\n\n  return sortedMap;\n}\n\nfunction sortByName(array) {\n  return sortBy(array, (obj) => obj.name);\n}\n\nfunction sortBy(array, mapToKey) {\n  return array.slice().sort((obj1, obj2) => {\n    const key1 = mapToKey(obj1);\n    const key2 = mapToKey(obj2);\n    return (0, _naturalCompare.naturalCompare)(key1, key2);\n  });\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.printIntrospectionSchema = printIntrospectionSchema;\nexports.printSchema = printSchema;\nexports.printType = printType;\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _blockString = require('../language/blockString.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _printer = require('../language/printer.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _directives = require('../type/directives.js');\n\nvar _introspection = require('../type/introspection.js');\n\nvar _scalars = require('../type/scalars.js');\n\nvar _astFromValue = require('./astFromValue.js');\n\nfunction printSchema(schema) {\n  return printFilteredSchema(\n    schema,\n    (n) => !(0, _directives.isSpecifiedDirective)(n),\n    isDefinedType,\n  );\n}\n\nfunction printIntrospectionSchema(schema) {\n  return printFilteredSchema(\n    schema,\n    _directives.isSpecifiedDirective,\n    _introspection.isIntrospectionType,\n  );\n}\n\nfunction isDefinedType(type) {\n  return (\n    !(0, _scalars.isSpecifiedScalarType)(type) &&\n    !(0, _introspection.isIntrospectionType)(type)\n  );\n}\n\nfunction printFilteredSchema(schema, directiveFilter, typeFilter) {\n  const directives = schema.getDirectives().filter(directiveFilter);\n  const types = Object.values(schema.getTypeMap()).filter(typeFilter);\n  return [\n    printSchemaDefinition(schema),\n    ...directives.map((directive) => printDirective(directive)),\n    ...types.map((type) => printType(type)),\n  ]\n    .filter(Boolean)\n    .join('\\n\\n');\n}\n\nfunction printSchemaDefinition(schema) {\n  if (schema.description == null && isSchemaOfCommonNames(schema)) {\n    return;\n  }\n\n  const operationTypes = [];\n  const queryType = schema.getQueryType();\n\n  if (queryType) {\n    operationTypes.push(`  query: ${queryType.name}`);\n  }\n\n  const mutationType = schema.getMutationType();\n\n  if (mutationType) {\n    operationTypes.push(`  mutation: ${mutationType.name}`);\n  }\n\n  const subscriptionType = schema.getSubscriptionType();\n\n  if (subscriptionType) {\n    operationTypes.push(`  subscription: ${subscriptionType.name}`);\n  }\n\n  return printDescription(schema) + `schema {\\n${operationTypes.join('\\n')}\\n}`;\n}\n/**\n * GraphQL schema define root types for each type of operation. These types are\n * the same as any other type and can be named in any manner, however there is\n * a common naming convention:\n *\n * ```graphql\n *   schema {\n *     query: Query\n *     mutation: Mutation\n *     subscription: Subscription\n *   }\n * ```\n *\n * When using this naming convention, the schema description can be omitted.\n */\n\nfunction isSchemaOfCommonNames(schema) {\n  const queryType = schema.getQueryType();\n\n  if (queryType && queryType.name !== 'Query') {\n    return false;\n  }\n\n  const mutationType = schema.getMutationType();\n\n  if (mutationType && mutationType.name !== 'Mutation') {\n    return false;\n  }\n\n  const subscriptionType = schema.getSubscriptionType();\n\n  if (subscriptionType && subscriptionType.name !== 'Subscription') {\n    return false;\n  }\n\n  return true;\n}\n\nfunction printType(type) {\n  if ((0, _definition.isScalarType)(type)) {\n    return printScalar(type);\n  }\n\n  if ((0, _definition.isObjectType)(type)) {\n    return printObject(type);\n  }\n\n  if ((0, _definition.isInterfaceType)(type)) {\n    return printInterface(type);\n  }\n\n  if ((0, _definition.isUnionType)(type)) {\n    return printUnion(type);\n  }\n\n  if ((0, _definition.isEnumType)(type)) {\n    return printEnum(type);\n  }\n\n  if ((0, _definition.isInputObjectType)(type)) {\n    return printInputObject(type);\n  }\n  /* c8 ignore next 3 */\n  // Not reachable, all possible types have been considered.\n\n  false ||\n    (0, _invariant.invariant)(\n      false,\n      'Unexpected type: ' + (0, _inspect.inspect)(type),\n    );\n}\n\nfunction printScalar(type) {\n  return (\n    printDescription(type) + `scalar ${type.name}` + printSpecifiedByURL(type)\n  );\n}\n\nfunction printImplementedInterfaces(type) {\n  const interfaces = type.getInterfaces();\n  return interfaces.length\n    ? ' implements ' + interfaces.map((i) => i.name).join(' & ')\n    : '';\n}\n\nfunction printObject(type) {\n  return (\n    printDescription(type) +\n    `type ${type.name}` +\n    printImplementedInterfaces(type) +\n    printFields(type)\n  );\n}\n\nfunction printInterface(type) {\n  return (\n    printDescription(type) +\n    `interface ${type.name}` +\n    printImplementedInterfaces(type) +\n    printFields(type)\n  );\n}\n\nfunction printUnion(type) {\n  const types = type.getTypes();\n  const possibleTypes = types.length ? ' = ' + types.join(' | ') : '';\n  return printDescription(type) + 'union ' + type.name + possibleTypes;\n}\n\nfunction printEnum(type) {\n  const values = type\n    .getValues()\n    .map(\n      (value, i) =>\n        printDescription(value, '  ', !i) +\n        '  ' +\n        value.name +\n        printDeprecated(value.deprecationReason),\n    );\n  return printDescription(type) + `enum ${type.name}` + printBlock(values);\n}\n\nfunction printInputObject(type) {\n  const fields = Object.values(type.getFields()).map(\n    (f, i) => printDescription(f, '  ', !i) + '  ' + printInputValue(f),\n  );\n  return printDescription(type) + `input ${type.name}` + printBlock(fields);\n}\n\nfunction printFields(type) {\n  const fields = Object.values(type.getFields()).map(\n    (f, i) =>\n      printDescription(f, '  ', !i) +\n      '  ' +\n      f.name +\n      printArgs(f.args, '  ') +\n      ': ' +\n      String(f.type) +\n      printDeprecated(f.deprecationReason),\n  );\n  return printBlock(fields);\n}\n\nfunction printBlock(items) {\n  return items.length !== 0 ? ' {\\n' + items.join('\\n') + '\\n}' : '';\n}\n\nfunction printArgs(args, indentation = '') {\n  if (args.length === 0) {\n    return '';\n  } // If every arg does not have a description, print them on one line.\n\n  if (args.every((arg) => !arg.description)) {\n    return '(' + args.map(printInputValue).join(', ') + ')';\n  }\n\n  return (\n    '(\\n' +\n    args\n      .map(\n        (arg, i) =>\n          printDescription(arg, '  ' + indentation, !i) +\n          '  ' +\n          indentation +\n          printInputValue(arg),\n      )\n      .join('\\n') +\n    '\\n' +\n    indentation +\n    ')'\n  );\n}\n\nfunction printInputValue(arg) {\n  const defaultAST = (0, _astFromValue.astFromValue)(\n    arg.defaultValue,\n    arg.type,\n  );\n  let argDecl = arg.name + ': ' + String(arg.type);\n\n  if (defaultAST) {\n    argDecl += ` = ${(0, _printer.print)(defaultAST)}`;\n  }\n\n  return argDecl + printDeprecated(arg.deprecationReason);\n}\n\nfunction printDirective(directive) {\n  return (\n    printDescription(directive) +\n    'directive @' +\n    directive.name +\n    printArgs(directive.args) +\n    (directive.isRepeatable ? ' repeatable' : '') +\n    ' on ' +\n    directive.locations.join(' | ')\n  );\n}\n\nfunction printDeprecated(reason) {\n  if (reason == null) {\n    return '';\n  }\n\n  if (reason !== _directives.DEFAULT_DEPRECATION_REASON) {\n    const astValue = (0, _printer.print)({\n      kind: _kinds.Kind.STRING,\n      value: reason,\n    });\n    return ` @deprecated(reason: ${astValue})`;\n  }\n\n  return ' @deprecated';\n}\n\nfunction printSpecifiedByURL(scalar) {\n  if (scalar.specifiedByURL == null) {\n    return '';\n  }\n\n  const astValue = (0, _printer.print)({\n    kind: _kinds.Kind.STRING,\n    value: scalar.specifiedByURL,\n  });\n  return ` @specifiedBy(url: ${astValue})`;\n}\n\nfunction printDescription(def, indentation = '', firstInBlock = true) {\n  const { description } = def;\n\n  if (description == null) {\n    return '';\n  }\n\n  const blockString = (0, _printer.print)({\n    kind: _kinds.Kind.STRING,\n    value: description,\n    block: (0, _blockString.isPrintableAsBlockString)(description),\n  });\n  const prefix =\n    indentation && !firstInBlock ? '\\n' + indentation : indentation;\n  return prefix + blockString.replace(/\\n/g, '\\n' + indentation) + '\\n';\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.concatAST = concatAST;\n\nvar _kinds = require('../language/kinds.js');\n\n/**\n * Provided a collection of ASTs, presumably each from different files,\n * concatenate the ASTs together into batched AST, useful for validating many\n * GraphQL source files which together represent one conceptual application.\n */\nfunction concatAST(documents) {\n  const definitions = [];\n\n  for (const doc of documents) {\n    definitions.push(...doc.definitions);\n  }\n\n  return {\n    kind: _kinds.Kind.DOCUMENT,\n    definitions,\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.separateOperations = separateOperations;\n\nvar _kinds = require('../language/kinds.js');\n\nvar _visitor = require('../language/visitor.js');\n\n/**\n * separateOperations accepts a single AST document which may contain many\n * operations and fragments and returns a collection of AST documents each of\n * which contains a single operation as well the fragment definitions it\n * refers to.\n */\nfunction separateOperations(documentAST) {\n  const operations = [];\n  const depGraph = Object.create(null); // Populate metadata and build a dependency graph.\n\n  for (const definitionNode of documentAST.definitions) {\n    switch (definitionNode.kind) {\n      case _kinds.Kind.OPERATION_DEFINITION:\n        operations.push(definitionNode);\n        break;\n\n      case _kinds.Kind.FRAGMENT_DEFINITION:\n        depGraph[definitionNode.name.value] = collectDependencies(\n          definitionNode.selectionSet,\n        );\n        break;\n\n      default: // ignore non-executable definitions\n    }\n  } // For each operation, produce a new synthesized AST which includes only what\n  // is necessary for completing that operation.\n\n  const separatedDocumentASTs = Object.create(null);\n\n  for (const operation of operations) {\n    const dependencies = new Set();\n\n    for (const fragmentName of collectDependencies(operation.selectionSet)) {\n      collectTransitiveDependencies(dependencies, depGraph, fragmentName);\n    } // Provides the empty string for anonymous operations.\n\n    const operationName = operation.name ? operation.name.value : ''; // The list of definition nodes to be included for this operation, sorted\n    // to retain the same order as the original document.\n\n    separatedDocumentASTs[operationName] = {\n      kind: _kinds.Kind.DOCUMENT,\n      definitions: documentAST.definitions.filter(\n        (node) =>\n          node === operation ||\n          (node.kind === _kinds.Kind.FRAGMENT_DEFINITION &&\n            dependencies.has(node.name.value)),\n      ),\n    };\n  }\n\n  return separatedDocumentASTs;\n}\n\n// From a dependency graph, collects a list of transitive dependencies by\n// recursing through a dependency graph.\nfunction collectTransitiveDependencies(collected, depGraph, fromName) {\n  if (!collected.has(fromName)) {\n    collected.add(fromName);\n    const immediateDeps = depGraph[fromName];\n\n    if (immediateDeps !== undefined) {\n      for (const toName of immediateDeps) {\n        collectTransitiveDependencies(collected, depGraph, toName);\n      }\n    }\n  }\n}\n\nfunction collectDependencies(selectionSet) {\n  const dependencies = [];\n  (0, _visitor.visit)(selectionSet, {\n    FragmentSpread(node) {\n      dependencies.push(node.name.value);\n    },\n  });\n  return dependencies;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.stripIgnoredCharacters = stripIgnoredCharacters;\n\nvar _blockString = require('../language/blockString.js');\n\nvar _lexer = require('../language/lexer.js');\n\nvar _source = require('../language/source.js');\n\nvar _tokenKind = require('../language/tokenKind.js');\n\n/**\n * Strips characters that are not significant to the validity or execution\n * of a GraphQL document:\n *   - UnicodeBOM\n *   - WhiteSpace\n *   - LineTerminator\n *   - Comment\n *   - Comma\n *   - BlockString indentation\n *\n * Note: It is required to have a delimiter character between neighboring\n * non-punctuator tokens and this function always uses single space as delimiter.\n *\n * It is guaranteed that both input and output documents if parsed would result\n * in the exact same AST except for nodes location.\n *\n * Warning: It is guaranteed that this function will always produce stable results.\n * However, it's not guaranteed that it will stay the same between different\n * releases due to bugfixes or changes in the GraphQL specification.\n *\n * Query example:\n *\n * ```graphql\n * query SomeQuery($foo: String!, $bar: String) {\n *   someField(foo: $foo, bar: $bar) {\n *     a\n *     b {\n *       c\n *       d\n *     }\n *   }\n * }\n * ```\n *\n * Becomes:\n *\n * ```graphql\n * query SomeQuery($foo:String!$bar:String){someField(foo:$foo bar:$bar){a b{c d}}}\n * ```\n *\n * SDL example:\n *\n * ```graphql\n * \"\"\"\n * Type description\n * \"\"\"\n * type Foo {\n *   \"\"\"\n *   Field description\n *   \"\"\"\n *   bar: String\n * }\n * ```\n *\n * Becomes:\n *\n * ```graphql\n * \"\"\"Type description\"\"\" type Foo{\"\"\"Field description\"\"\" bar:String}\n * ```\n */\nfunction stripIgnoredCharacters(source) {\n  const sourceObj = (0, _source.isSource)(source)\n    ? source\n    : new _source.Source(source);\n  const body = sourceObj.body;\n  const lexer = new _lexer.Lexer(sourceObj);\n  let strippedBody = '';\n  let wasLastAddedTokenNonPunctuator = false;\n\n  while (lexer.advance().kind !== _tokenKind.TokenKind.EOF) {\n    const currentToken = lexer.token;\n    const tokenKind = currentToken.kind;\n    /**\n     * Every two non-punctuator tokens should have space between them.\n     * Also prevent case of non-punctuator token following by spread resulting\n     * in invalid token (e.g. `1...` is invalid Float token).\n     */\n\n    const isNonPunctuator = !(0, _lexer.isPunctuatorTokenKind)(\n      currentToken.kind,\n    );\n\n    if (wasLastAddedTokenNonPunctuator) {\n      if (\n        isNonPunctuator ||\n        currentToken.kind === _tokenKind.TokenKind.SPREAD\n      ) {\n        strippedBody += ' ';\n      }\n    }\n\n    const tokenBody = body.slice(currentToken.start, currentToken.end);\n\n    if (tokenKind === _tokenKind.TokenKind.BLOCK_STRING) {\n      strippedBody += (0, _blockString.printBlockString)(currentToken.value, {\n        minimize: true,\n      });\n    } else {\n      strippedBody += tokenBody;\n    }\n\n    wasLastAddedTokenNonPunctuator = isNonPunctuator;\n  }\n\n  return strippedBody;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.assertValidName = assertValidName;\nexports.isValidNameError = isValidNameError;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _assertName = require('../type/assertName.js');\n\n/* c8 ignore start */\n\n/**\n * Upholds the spec rules about naming.\n * @deprecated Please use `assertName` instead. Will be removed in v17\n */\nfunction assertValidName(name) {\n  const error = isValidNameError(name);\n\n  if (error) {\n    throw error;\n  }\n\n  return name;\n}\n/**\n * Returns an Error if a name is invalid.\n * @deprecated Please use `assertName` instead. Will be removed in v17\n */\n\nfunction isValidNameError(name) {\n  typeof name === 'string' ||\n    (0, _devAssert.devAssert)(false, 'Expected name to be a string.');\n\n  if (name.startsWith('__')) {\n    return new _GraphQLError.GraphQLError(\n      `Name \"${name}\" must not begin with \"__\", which is reserved by GraphQL introspection.`,\n    );\n  }\n\n  try {\n    (0, _assertName.assertName)(name);\n  } catch (error) {\n    return error;\n  }\n}\n/* c8 ignore stop */\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.DangerousChangeType = exports.BreakingChangeType = void 0;\nexports.findBreakingChanges = findBreakingChanges;\nexports.findDangerousChanges = findDangerousChanges;\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _keyMap = require('../jsutils/keyMap.js');\n\nvar _printer = require('../language/printer.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _scalars = require('../type/scalars.js');\n\nvar _astFromValue = require('./astFromValue.js');\n\nvar _sortValueNode = require('./sortValueNode.js');\n\nvar BreakingChangeType;\nexports.BreakingChangeType = BreakingChangeType;\n\n(function (BreakingChangeType) {\n  BreakingChangeType['TYPE_REMOVED'] = 'TYPE_REMOVED';\n  BreakingChangeType['TYPE_CHANGED_KIND'] = 'TYPE_CHANGED_KIND';\n  BreakingChangeType['TYPE_REMOVED_FROM_UNION'] = 'TYPE_REMOVED_FROM_UNION';\n  BreakingChangeType['VALUE_REMOVED_FROM_ENUM'] = 'VALUE_REMOVED_FROM_ENUM';\n  BreakingChangeType['REQUIRED_INPUT_FIELD_ADDED'] =\n    'REQUIRED_INPUT_FIELD_ADDED';\n  BreakingChangeType['IMPLEMENTED_INTERFACE_REMOVED'] =\n    'IMPLEMENTED_INTERFACE_REMOVED';\n  BreakingChangeType['FIELD_REMOVED'] = 'FIELD_REMOVED';\n  BreakingChangeType['FIELD_CHANGED_KIND'] = 'FIELD_CHANGED_KIND';\n  BreakingChangeType['REQUIRED_ARG_ADDED'] = 'REQUIRED_ARG_ADDED';\n  BreakingChangeType['ARG_REMOVED'] = 'ARG_REMOVED';\n  BreakingChangeType['ARG_CHANGED_KIND'] = 'ARG_CHANGED_KIND';\n  BreakingChangeType['DIRECTIVE_REMOVED'] = 'DIRECTIVE_REMOVED';\n  BreakingChangeType['DIRECTIVE_ARG_REMOVED'] = 'DIRECTIVE_ARG_REMOVED';\n  BreakingChangeType['REQUIRED_DIRECTIVE_ARG_ADDED'] =\n    'REQUIRED_DIRECTIVE_ARG_ADDED';\n  BreakingChangeType['DIRECTIVE_REPEATABLE_REMOVED'] =\n    'DIRECTIVE_REPEATABLE_REMOVED';\n  BreakingChangeType['DIRECTIVE_LOCATION_REMOVED'] =\n    'DIRECTIVE_LOCATION_REMOVED';\n})(\n  BreakingChangeType || (exports.BreakingChangeType = BreakingChangeType = {}),\n);\n\nvar DangerousChangeType;\nexports.DangerousChangeType = DangerousChangeType;\n\n(function (DangerousChangeType) {\n  DangerousChangeType['VALUE_ADDED_TO_ENUM'] = 'VALUE_ADDED_TO_ENUM';\n  DangerousChangeType['TYPE_ADDED_TO_UNION'] = 'TYPE_ADDED_TO_UNION';\n  DangerousChangeType['OPTIONAL_INPUT_FIELD_ADDED'] =\n    'OPTIONAL_INPUT_FIELD_ADDED';\n  DangerousChangeType['OPTIONAL_ARG_ADDED'] = 'OPTIONAL_ARG_ADDED';\n  DangerousChangeType['IMPLEMENTED_INTERFACE_ADDED'] =\n    'IMPLEMENTED_INTERFACE_ADDED';\n  DangerousChangeType['ARG_DEFAULT_VALUE_CHANGE'] = 'ARG_DEFAULT_VALUE_CHANGE';\n})(\n  DangerousChangeType ||\n    (exports.DangerousChangeType = DangerousChangeType = {}),\n);\n\n/**\n * Given two schemas, returns an Array containing descriptions of all the types\n * of breaking changes covered by the other functions down below.\n */\nfunction findBreakingChanges(oldSchema, newSchema) {\n  // @ts-expect-error\n  return findSchemaChanges(oldSchema, newSchema).filter(\n    (change) => change.type in BreakingChangeType,\n  );\n}\n/**\n * Given two schemas, returns an Array containing descriptions of all the types\n * of potentially dangerous changes covered by the other functions down below.\n */\n\nfunction findDangerousChanges(oldSchema, newSchema) {\n  // @ts-expect-error\n  return findSchemaChanges(oldSchema, newSchema).filter(\n    (change) => change.type in DangerousChangeType,\n  );\n}\n\nfunction findSchemaChanges(oldSchema, newSchema) {\n  return [\n    ...findTypeChanges(oldSchema, newSchema),\n    ...findDirectiveChanges(oldSchema, newSchema),\n  ];\n}\n\nfunction findDirectiveChanges(oldSchema, newSchema) {\n  const schemaChanges = [];\n  const directivesDiff = diff(\n    oldSchema.getDirectives(),\n    newSchema.getDirectives(),\n  );\n\n  for (const oldDirective of directivesDiff.removed) {\n    schemaChanges.push({\n      type: BreakingChangeType.DIRECTIVE_REMOVED,\n      description: `${oldDirective.name} was removed.`,\n    });\n  }\n\n  for (const [oldDirective, newDirective] of directivesDiff.persisted) {\n    const argsDiff = diff(oldDirective.args, newDirective.args);\n\n    for (const newArg of argsDiff.added) {\n      if ((0, _definition.isRequiredArgument)(newArg)) {\n        schemaChanges.push({\n          type: BreakingChangeType.REQUIRED_DIRECTIVE_ARG_ADDED,\n          description: `A required arg ${newArg.name} on directive ${oldDirective.name} was added.`,\n        });\n      }\n    }\n\n    for (const oldArg of argsDiff.removed) {\n      schemaChanges.push({\n        type: BreakingChangeType.DIRECTIVE_ARG_REMOVED,\n        description: `${oldArg.name} was removed from ${oldDirective.name}.`,\n      });\n    }\n\n    if (oldDirective.isRepeatable && !newDirective.isRepeatable) {\n      schemaChanges.push({\n        type: BreakingChangeType.DIRECTIVE_REPEATABLE_REMOVED,\n        description: `Repeatable flag was removed from ${oldDirective.name}.`,\n      });\n    }\n\n    for (const location of oldDirective.locations) {\n      if (!newDirective.locations.includes(location)) {\n        schemaChanges.push({\n          type: BreakingChangeType.DIRECTIVE_LOCATION_REMOVED,\n          description: `${location} was removed from ${oldDirective.name}.`,\n        });\n      }\n    }\n  }\n\n  return schemaChanges;\n}\n\nfunction findTypeChanges(oldSchema, newSchema) {\n  const schemaChanges = [];\n  const typesDiff = diff(\n    Object.values(oldSchema.getTypeMap()),\n    Object.values(newSchema.getTypeMap()),\n  );\n\n  for (const oldType of typesDiff.removed) {\n    schemaChanges.push({\n      type: BreakingChangeType.TYPE_REMOVED,\n      description: (0, _scalars.isSpecifiedScalarType)(oldType)\n        ? `Standard scalar ${oldType.name} was removed because it is not referenced anymore.`\n        : `${oldType.name} was removed.`,\n    });\n  }\n\n  for (const [oldType, newType] of typesDiff.persisted) {\n    if (\n      (0, _definition.isEnumType)(oldType) &&\n      (0, _definition.isEnumType)(newType)\n    ) {\n      schemaChanges.push(...findEnumTypeChanges(oldType, newType));\n    } else if (\n      (0, _definition.isUnionType)(oldType) &&\n      (0, _definition.isUnionType)(newType)\n    ) {\n      schemaChanges.push(...findUnionTypeChanges(oldType, newType));\n    } else if (\n      (0, _definition.isInputObjectType)(oldType) &&\n      (0, _definition.isInputObjectType)(newType)\n    ) {\n      schemaChanges.push(...findInputObjectTypeChanges(oldType, newType));\n    } else if (\n      (0, _definition.isObjectType)(oldType) &&\n      (0, _definition.isObjectType)(newType)\n    ) {\n      schemaChanges.push(\n        ...findFieldChanges(oldType, newType),\n        ...findImplementedInterfacesChanges(oldType, newType),\n      );\n    } else if (\n      (0, _definition.isInterfaceType)(oldType) &&\n      (0, _definition.isInterfaceType)(newType)\n    ) {\n      schemaChanges.push(\n        ...findFieldChanges(oldType, newType),\n        ...findImplementedInterfacesChanges(oldType, newType),\n      );\n    } else if (oldType.constructor !== newType.constructor) {\n      schemaChanges.push({\n        type: BreakingChangeType.TYPE_CHANGED_KIND,\n        description:\n          `${oldType.name} changed from ` +\n          `${typeKindName(oldType)} to ${typeKindName(newType)}.`,\n      });\n    }\n  }\n\n  return schemaChanges;\n}\n\nfunction findInputObjectTypeChanges(oldType, newType) {\n  const schemaChanges = [];\n  const fieldsDiff = diff(\n    Object.values(oldType.getFields()),\n    Object.values(newType.getFields()),\n  );\n\n  for (const newField of fieldsDiff.added) {\n    if ((0, _definition.isRequiredInputField)(newField)) {\n      schemaChanges.push({\n        type: BreakingChangeType.REQUIRED_INPUT_FIELD_ADDED,\n        description: `A required field ${newField.name} on input type ${oldType.name} was added.`,\n      });\n    } else {\n      schemaChanges.push({\n        type: DangerousChangeType.OPTIONAL_INPUT_FIELD_ADDED,\n        description: `An optional field ${newField.name} on input type ${oldType.name} was added.`,\n      });\n    }\n  }\n\n  for (const oldField of fieldsDiff.removed) {\n    schemaChanges.push({\n      type: BreakingChangeType.FIELD_REMOVED,\n      description: `${oldType.name}.${oldField.name} was removed.`,\n    });\n  }\n\n  for (const [oldField, newField] of fieldsDiff.persisted) {\n    const isSafe = isChangeSafeForInputObjectFieldOrFieldArg(\n      oldField.type,\n      newField.type,\n    );\n\n    if (!isSafe) {\n      schemaChanges.push({\n        type: BreakingChangeType.FIELD_CHANGED_KIND,\n        description:\n          `${oldType.name}.${oldField.name} changed type from ` +\n          `${String(oldField.type)} to ${String(newField.type)}.`,\n      });\n    }\n  }\n\n  return schemaChanges;\n}\n\nfunction findUnionTypeChanges(oldType, newType) {\n  const schemaChanges = [];\n  const possibleTypesDiff = diff(oldType.getTypes(), newType.getTypes());\n\n  for (const newPossibleType of possibleTypesDiff.added) {\n    schemaChanges.push({\n      type: DangerousChangeType.TYPE_ADDED_TO_UNION,\n      description: `${newPossibleType.name} was added to union type ${oldType.name}.`,\n    });\n  }\n\n  for (const oldPossibleType of possibleTypesDiff.removed) {\n    schemaChanges.push({\n      type: BreakingChangeType.TYPE_REMOVED_FROM_UNION,\n      description: `${oldPossibleType.name} was removed from union type ${oldType.name}.`,\n    });\n  }\n\n  return schemaChanges;\n}\n\nfunction findEnumTypeChanges(oldType, newType) {\n  const schemaChanges = [];\n  const valuesDiff = diff(oldType.getValues(), newType.getValues());\n\n  for (const newValue of valuesDiff.added) {\n    schemaChanges.push({\n      type: DangerousChangeType.VALUE_ADDED_TO_ENUM,\n      description: `${newValue.name} was added to enum type ${oldType.name}.`,\n    });\n  }\n\n  for (const oldValue of valuesDiff.removed) {\n    schemaChanges.push({\n      type: BreakingChangeType.VALUE_REMOVED_FROM_ENUM,\n      description: `${oldValue.name} was removed from enum type ${oldType.name}.`,\n    });\n  }\n\n  return schemaChanges;\n}\n\nfunction findImplementedInterfacesChanges(oldType, newType) {\n  const schemaChanges = [];\n  const interfacesDiff = diff(oldType.getInterfaces(), newType.getInterfaces());\n\n  for (const newInterface of interfacesDiff.added) {\n    schemaChanges.push({\n      type: DangerousChangeType.IMPLEMENTED_INTERFACE_ADDED,\n      description: `${newInterface.name} added to interfaces implemented by ${oldType.name}.`,\n    });\n  }\n\n  for (const oldInterface of interfacesDiff.removed) {\n    schemaChanges.push({\n      type: BreakingChangeType.IMPLEMENTED_INTERFACE_REMOVED,\n      description: `${oldType.name} no longer implements interface ${oldInterface.name}.`,\n    });\n  }\n\n  return schemaChanges;\n}\n\nfunction findFieldChanges(oldType, newType) {\n  const schemaChanges = [];\n  const fieldsDiff = diff(\n    Object.values(oldType.getFields()),\n    Object.values(newType.getFields()),\n  );\n\n  for (const oldField of fieldsDiff.removed) {\n    schemaChanges.push({\n      type: BreakingChangeType.FIELD_REMOVED,\n      description: `${oldType.name}.${oldField.name} was removed.`,\n    });\n  }\n\n  for (const [oldField, newField] of fieldsDiff.persisted) {\n    schemaChanges.push(...findArgChanges(oldType, oldField, newField));\n    const isSafe = isChangeSafeForObjectOrInterfaceField(\n      oldField.type,\n      newField.type,\n    );\n\n    if (!isSafe) {\n      schemaChanges.push({\n        type: BreakingChangeType.FIELD_CHANGED_KIND,\n        description:\n          `${oldType.name}.${oldField.name} changed type from ` +\n          `${String(oldField.type)} to ${String(newField.type)}.`,\n      });\n    }\n  }\n\n  return schemaChanges;\n}\n\nfunction findArgChanges(oldType, oldField, newField) {\n  const schemaChanges = [];\n  const argsDiff = diff(oldField.args, newField.args);\n\n  for (const oldArg of argsDiff.removed) {\n    schemaChanges.push({\n      type: BreakingChangeType.ARG_REMOVED,\n      description: `${oldType.name}.${oldField.name} arg ${oldArg.name} was removed.`,\n    });\n  }\n\n  for (const [oldArg, newArg] of argsDiff.persisted) {\n    const isSafe = isChangeSafeForInputObjectFieldOrFieldArg(\n      oldArg.type,\n      newArg.type,\n    );\n\n    if (!isSafe) {\n      schemaChanges.push({\n        type: BreakingChangeType.ARG_CHANGED_KIND,\n        description:\n          `${oldType.name}.${oldField.name} arg ${oldArg.name} has changed type from ` +\n          `${String(oldArg.type)} to ${String(newArg.type)}.`,\n      });\n    } else if (oldArg.defaultValue !== undefined) {\n      if (newArg.defaultValue === undefined) {\n        schemaChanges.push({\n          type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,\n          description: `${oldType.name}.${oldField.name} arg ${oldArg.name} defaultValue was removed.`,\n        });\n      } else {\n        // Since we looking only for client's observable changes we should\n        // compare default values in the same representation as they are\n        // represented inside introspection.\n        const oldValueStr = stringifyValue(oldArg.defaultValue, oldArg.type);\n        const newValueStr = stringifyValue(newArg.defaultValue, newArg.type);\n\n        if (oldValueStr !== newValueStr) {\n          schemaChanges.push({\n            type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,\n            description: `${oldType.name}.${oldField.name} arg ${oldArg.name} has changed defaultValue from ${oldValueStr} to ${newValueStr}.`,\n          });\n        }\n      }\n    }\n  }\n\n  for (const newArg of argsDiff.added) {\n    if ((0, _definition.isRequiredArgument)(newArg)) {\n      schemaChanges.push({\n        type: BreakingChangeType.REQUIRED_ARG_ADDED,\n        description: `A required arg ${newArg.name} on ${oldType.name}.${oldField.name} was added.`,\n      });\n    } else {\n      schemaChanges.push({\n        type: DangerousChangeType.OPTIONAL_ARG_ADDED,\n        description: `An optional arg ${newArg.name} on ${oldType.name}.${oldField.name} was added.`,\n      });\n    }\n  }\n\n  return schemaChanges;\n}\n\nfunction isChangeSafeForObjectOrInterfaceField(oldType, newType) {\n  if ((0, _definition.isListType)(oldType)) {\n    return (\n      // if they're both lists, make sure the underlying types are compatible\n      ((0, _definition.isListType)(newType) &&\n        isChangeSafeForObjectOrInterfaceField(\n          oldType.ofType,\n          newType.ofType,\n        )) || // moving from nullable to non-null of the same underlying type is safe\n      ((0, _definition.isNonNullType)(newType) &&\n        isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType))\n    );\n  }\n\n  if ((0, _definition.isNonNullType)(oldType)) {\n    // if they're both non-null, make sure the underlying types are compatible\n    return (\n      (0, _definition.isNonNullType)(newType) &&\n      isChangeSafeForObjectOrInterfaceField(oldType.ofType, newType.ofType)\n    );\n  }\n\n  return (\n    // if they're both named types, see if their names are equivalent\n    ((0, _definition.isNamedType)(newType) && oldType.name === newType.name) || // moving from nullable to non-null of the same underlying type is safe\n    ((0, _definition.isNonNullType)(newType) &&\n      isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType))\n  );\n}\n\nfunction isChangeSafeForInputObjectFieldOrFieldArg(oldType, newType) {\n  if ((0, _definition.isListType)(oldType)) {\n    // if they're both lists, make sure the underlying types are compatible\n    return (\n      (0, _definition.isListType)(newType) &&\n      isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType.ofType)\n    );\n  }\n\n  if ((0, _definition.isNonNullType)(oldType)) {\n    return (\n      // if they're both non-null, make sure the underlying types are\n      // compatible\n      ((0, _definition.isNonNullType)(newType) &&\n        isChangeSafeForInputObjectFieldOrFieldArg(\n          oldType.ofType,\n          newType.ofType,\n        )) || // moving from non-null to nullable of the same underlying type is safe\n      (!(0, _definition.isNonNullType)(newType) &&\n        isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType))\n    );\n  } // if they're both named types, see if their names are equivalent\n\n  return (0, _definition.isNamedType)(newType) && oldType.name === newType.name;\n}\n\nfunction typeKindName(type) {\n  if ((0, _definition.isScalarType)(type)) {\n    return 'a Scalar type';\n  }\n\n  if ((0, _definition.isObjectType)(type)) {\n    return 'an Object type';\n  }\n\n  if ((0, _definition.isInterfaceType)(type)) {\n    return 'an Interface type';\n  }\n\n  if ((0, _definition.isUnionType)(type)) {\n    return 'a Union type';\n  }\n\n  if ((0, _definition.isEnumType)(type)) {\n    return 'an Enum type';\n  }\n\n  if ((0, _definition.isInputObjectType)(type)) {\n    return 'an Input type';\n  }\n  /* c8 ignore next 3 */\n  // Not reachable, all possible types have been considered.\n\n  false ||\n    (0, _invariant.invariant)(\n      false,\n      'Unexpected type: ' + (0, _inspect.inspect)(type),\n    );\n}\n\nfunction stringifyValue(value, type) {\n  const ast = (0, _astFromValue.astFromValue)(value, type);\n  ast != null || (0, _invariant.invariant)(false);\n  return (0, _printer.print)((0, _sortValueNode.sortValueNode)(ast));\n}\n\nfunction diff(oldArray, newArray) {\n  const added = [];\n  const removed = [];\n  const persisted = [];\n  const oldMap = (0, _keyMap.keyMap)(oldArray, ({ name }) => name);\n  const newMap = (0, _keyMap.keyMap)(newArray, ({ name }) => name);\n\n  for (const oldItem of oldArray) {\n    const newItem = newMap[oldItem.name];\n\n    if (newItem === undefined) {\n      removed.push(oldItem);\n    } else {\n      persisted.push([oldItem, newItem]);\n    }\n  }\n\n  for (const newItem of newArray) {\n    if (oldMap[newItem.name] === undefined) {\n      added.push(newItem);\n    }\n  }\n\n  return {\n    added,\n    persisted,\n    removed,\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nObject.defineProperty(exports, 'BreakingChangeType', {\n  enumerable: true,\n  get: function () {\n    return _findBreakingChanges.BreakingChangeType;\n  },\n});\nObject.defineProperty(exports, 'DangerousChangeType', {\n  enumerable: true,\n  get: function () {\n    return _findBreakingChanges.DangerousChangeType;\n  },\n});\nObject.defineProperty(exports, 'TypeInfo', {\n  enumerable: true,\n  get: function () {\n    return _TypeInfo.TypeInfo;\n  },\n});\nObject.defineProperty(exports, 'assertValidName', {\n  enumerable: true,\n  get: function () {\n    return _assertValidName.assertValidName;\n  },\n});\nObject.defineProperty(exports, 'astFromValue', {\n  enumerable: true,\n  get: function () {\n    return _astFromValue.astFromValue;\n  },\n});\nObject.defineProperty(exports, 'buildASTSchema', {\n  enumerable: true,\n  get: function () {\n    return _buildASTSchema.buildASTSchema;\n  },\n});\nObject.defineProperty(exports, 'buildClientSchema', {\n  enumerable: true,\n  get: function () {\n    return _buildClientSchema.buildClientSchema;\n  },\n});\nObject.defineProperty(exports, 'buildSchema', {\n  enumerable: true,\n  get: function () {\n    return _buildASTSchema.buildSchema;\n  },\n});\nObject.defineProperty(exports, 'coerceInputValue', {\n  enumerable: true,\n  get: function () {\n    return _coerceInputValue.coerceInputValue;\n  },\n});\nObject.defineProperty(exports, 'concatAST', {\n  enumerable: true,\n  get: function () {\n    return _concatAST.concatAST;\n  },\n});\nObject.defineProperty(exports, 'doTypesOverlap', {\n  enumerable: true,\n  get: function () {\n    return _typeComparators.doTypesOverlap;\n  },\n});\nObject.defineProperty(exports, 'extendSchema', {\n  enumerable: true,\n  get: function () {\n    return _extendSchema.extendSchema;\n  },\n});\nObject.defineProperty(exports, 'findBreakingChanges', {\n  enumerable: true,\n  get: function () {\n    return _findBreakingChanges.findBreakingChanges;\n  },\n});\nObject.defineProperty(exports, 'findDangerousChanges', {\n  enumerable: true,\n  get: function () {\n    return _findBreakingChanges.findDangerousChanges;\n  },\n});\nObject.defineProperty(exports, 'getIntrospectionQuery', {\n  enumerable: true,\n  get: function () {\n    return _getIntrospectionQuery.getIntrospectionQuery;\n  },\n});\nObject.defineProperty(exports, 'getOperationAST', {\n  enumerable: true,\n  get: function () {\n    return _getOperationAST.getOperationAST;\n  },\n});\nObject.defineProperty(exports, 'getOperationRootType', {\n  enumerable: true,\n  get: function () {\n    return _getOperationRootType.getOperationRootType;\n  },\n});\nObject.defineProperty(exports, 'introspectionFromSchema', {\n  enumerable: true,\n  get: function () {\n    return _introspectionFromSchema.introspectionFromSchema;\n  },\n});\nObject.defineProperty(exports, 'isEqualType', {\n  enumerable: true,\n  get: function () {\n    return _typeComparators.isEqualType;\n  },\n});\nObject.defineProperty(exports, 'isTypeSubTypeOf', {\n  enumerable: true,\n  get: function () {\n    return _typeComparators.isTypeSubTypeOf;\n  },\n});\nObject.defineProperty(exports, 'isValidNameError', {\n  enumerable: true,\n  get: function () {\n    return _assertValidName.isValidNameError;\n  },\n});\nObject.defineProperty(exports, 'lexicographicSortSchema', {\n  enumerable: true,\n  get: function () {\n    return _lexicographicSortSchema.lexicographicSortSchema;\n  },\n});\nObject.defineProperty(exports, 'printIntrospectionSchema', {\n  enumerable: true,\n  get: function () {\n    return _printSchema.printIntrospectionSchema;\n  },\n});\nObject.defineProperty(exports, 'printSchema', {\n  enumerable: true,\n  get: function () {\n    return _printSchema.printSchema;\n  },\n});\nObject.defineProperty(exports, 'printType', {\n  enumerable: true,\n  get: function () {\n    return _printSchema.printType;\n  },\n});\nObject.defineProperty(exports, 'separateOperations', {\n  enumerable: true,\n  get: function () {\n    return _separateOperations.separateOperations;\n  },\n});\nObject.defineProperty(exports, 'stripIgnoredCharacters', {\n  enumerable: true,\n  get: function () {\n    return _stripIgnoredCharacters.stripIgnoredCharacters;\n  },\n});\nObject.defineProperty(exports, 'typeFromAST', {\n  enumerable: true,\n  get: function () {\n    return _typeFromAST.typeFromAST;\n  },\n});\nObject.defineProperty(exports, 'valueFromAST', {\n  enumerable: true,\n  get: function () {\n    return _valueFromAST.valueFromAST;\n  },\n});\nObject.defineProperty(exports, 'valueFromASTUntyped', {\n  enumerable: true,\n  get: function () {\n    return _valueFromASTUntyped.valueFromASTUntyped;\n  },\n});\nObject.defineProperty(exports, 'visitWithTypeInfo', {\n  enumerable: true,\n  get: function () {\n    return _TypeInfo.visitWithTypeInfo;\n  },\n});\n\nvar _getIntrospectionQuery = require('./getIntrospectionQuery.js');\n\nvar _getOperationAST = require('./getOperationAST.js');\n\nvar _getOperationRootType = require('./getOperationRootType.js');\n\nvar _introspectionFromSchema = require('./introspectionFromSchema.js');\n\nvar _buildClientSchema = require('./buildClientSchema.js');\n\nvar _buildASTSchema = require('./buildASTSchema.js');\n\nvar _extendSchema = require('./extendSchema.js');\n\nvar _lexicographicSortSchema = require('./lexicographicSortSchema.js');\n\nvar _printSchema = require('./printSchema.js');\n\nvar _typeFromAST = require('./typeFromAST.js');\n\nvar _valueFromAST = require('./valueFromAST.js');\n\nvar _valueFromASTUntyped = require('./valueFromASTUntyped.js');\n\nvar _astFromValue = require('./astFromValue.js');\n\nvar _TypeInfo = require('./TypeInfo.js');\n\nvar _coerceInputValue = require('./coerceInputValue.js');\n\nvar _concatAST = require('./concatAST.js');\n\nvar _separateOperations = require('./separateOperations.js');\n\nvar _stripIgnoredCharacters = require('./stripIgnoredCharacters.js');\n\nvar _typeComparators = require('./typeComparators.js');\n\nvar _assertValidName = require('./assertValidName.js');\n\nvar _findBreakingChanges = require('./findBreakingChanges.js');\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nObject.defineProperty(exports, 'BREAK', {\n  enumerable: true,\n  get: function () {\n    return _index2.BREAK;\n  },\n});\nObject.defineProperty(exports, 'BreakingChangeType', {\n  enumerable: true,\n  get: function () {\n    return _index6.BreakingChangeType;\n  },\n});\nObject.defineProperty(exports, 'DEFAULT_DEPRECATION_REASON', {\n  enumerable: true,\n  get: function () {\n    return _index.DEFAULT_DEPRECATION_REASON;\n  },\n});\nObject.defineProperty(exports, 'DangerousChangeType', {\n  enumerable: true,\n  get: function () {\n    return _index6.DangerousChangeType;\n  },\n});\nObject.defineProperty(exports, 'DirectiveLocation', {\n  enumerable: true,\n  get: function () {\n    return _index2.DirectiveLocation;\n  },\n});\nObject.defineProperty(exports, 'ExecutableDefinitionsRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.ExecutableDefinitionsRule;\n  },\n});\nObject.defineProperty(exports, 'FieldsOnCorrectTypeRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.FieldsOnCorrectTypeRule;\n  },\n});\nObject.defineProperty(exports, 'FragmentsOnCompositeTypesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.FragmentsOnCompositeTypesRule;\n  },\n});\nObject.defineProperty(exports, 'GRAPHQL_MAX_INT', {\n  enumerable: true,\n  get: function () {\n    return _index.GRAPHQL_MAX_INT;\n  },\n});\nObject.defineProperty(exports, 'GRAPHQL_MIN_INT', {\n  enumerable: true,\n  get: function () {\n    return _index.GRAPHQL_MIN_INT;\n  },\n});\nObject.defineProperty(exports, 'GraphQLBoolean', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLBoolean;\n  },\n});\nObject.defineProperty(exports, 'GraphQLDeprecatedDirective', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLDeprecatedDirective;\n  },\n});\nObject.defineProperty(exports, 'GraphQLDirective', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLDirective;\n  },\n});\nObject.defineProperty(exports, 'GraphQLEnumType', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLEnumType;\n  },\n});\nObject.defineProperty(exports, 'GraphQLError', {\n  enumerable: true,\n  get: function () {\n    return _index5.GraphQLError;\n  },\n});\nObject.defineProperty(exports, 'GraphQLFloat', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLFloat;\n  },\n});\nObject.defineProperty(exports, 'GraphQLID', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLID;\n  },\n});\nObject.defineProperty(exports, 'GraphQLIncludeDirective', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLIncludeDirective;\n  },\n});\nObject.defineProperty(exports, 'GraphQLInputObjectType', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLInputObjectType;\n  },\n});\nObject.defineProperty(exports, 'GraphQLInt', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLInt;\n  },\n});\nObject.defineProperty(exports, 'GraphQLInterfaceType', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLInterfaceType;\n  },\n});\nObject.defineProperty(exports, 'GraphQLList', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLList;\n  },\n});\nObject.defineProperty(exports, 'GraphQLNonNull', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLNonNull;\n  },\n});\nObject.defineProperty(exports, 'GraphQLObjectType', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLObjectType;\n  },\n});\nObject.defineProperty(exports, 'GraphQLScalarType', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLScalarType;\n  },\n});\nObject.defineProperty(exports, 'GraphQLSchema', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLSchema;\n  },\n});\nObject.defineProperty(exports, 'GraphQLSkipDirective', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLSkipDirective;\n  },\n});\nObject.defineProperty(exports, 'GraphQLSpecifiedByDirective', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLSpecifiedByDirective;\n  },\n});\nObject.defineProperty(exports, 'GraphQLString', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLString;\n  },\n});\nObject.defineProperty(exports, 'GraphQLUnionType', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLUnionType;\n  },\n});\nObject.defineProperty(exports, 'Kind', {\n  enumerable: true,\n  get: function () {\n    return _index2.Kind;\n  },\n});\nObject.defineProperty(exports, 'KnownArgumentNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.KnownArgumentNamesRule;\n  },\n});\nObject.defineProperty(exports, 'KnownDirectivesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.KnownDirectivesRule;\n  },\n});\nObject.defineProperty(exports, 'KnownFragmentNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.KnownFragmentNamesRule;\n  },\n});\nObject.defineProperty(exports, 'KnownTypeNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.KnownTypeNamesRule;\n  },\n});\nObject.defineProperty(exports, 'Lexer', {\n  enumerable: true,\n  get: function () {\n    return _index2.Lexer;\n  },\n});\nObject.defineProperty(exports, 'Location', {\n  enumerable: true,\n  get: function () {\n    return _index2.Location;\n  },\n});\nObject.defineProperty(exports, 'LoneAnonymousOperationRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.LoneAnonymousOperationRule;\n  },\n});\nObject.defineProperty(exports, 'LoneSchemaDefinitionRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.LoneSchemaDefinitionRule;\n  },\n});\nObject.defineProperty(exports, 'NoDeprecatedCustomRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.NoDeprecatedCustomRule;\n  },\n});\nObject.defineProperty(exports, 'NoFragmentCyclesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.NoFragmentCyclesRule;\n  },\n});\nObject.defineProperty(exports, 'NoSchemaIntrospectionCustomRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.NoSchemaIntrospectionCustomRule;\n  },\n});\nObject.defineProperty(exports, 'NoUndefinedVariablesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.NoUndefinedVariablesRule;\n  },\n});\nObject.defineProperty(exports, 'NoUnusedFragmentsRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.NoUnusedFragmentsRule;\n  },\n});\nObject.defineProperty(exports, 'NoUnusedVariablesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.NoUnusedVariablesRule;\n  },\n});\nObject.defineProperty(exports, 'OperationTypeNode', {\n  enumerable: true,\n  get: function () {\n    return _index2.OperationTypeNode;\n  },\n});\nObject.defineProperty(exports, 'OverlappingFieldsCanBeMergedRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.OverlappingFieldsCanBeMergedRule;\n  },\n});\nObject.defineProperty(exports, 'PossibleFragmentSpreadsRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.PossibleFragmentSpreadsRule;\n  },\n});\nObject.defineProperty(exports, 'PossibleTypeExtensionsRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.PossibleTypeExtensionsRule;\n  },\n});\nObject.defineProperty(exports, 'ProvidedRequiredArgumentsRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.ProvidedRequiredArgumentsRule;\n  },\n});\nObject.defineProperty(exports, 'ScalarLeafsRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.ScalarLeafsRule;\n  },\n});\nObject.defineProperty(exports, 'SchemaMetaFieldDef', {\n  enumerable: true,\n  get: function () {\n    return _index.SchemaMetaFieldDef;\n  },\n});\nObject.defineProperty(exports, 'SingleFieldSubscriptionsRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.SingleFieldSubscriptionsRule;\n  },\n});\nObject.defineProperty(exports, 'Source', {\n  enumerable: true,\n  get: function () {\n    return _index2.Source;\n  },\n});\nObject.defineProperty(exports, 'Token', {\n  enumerable: true,\n  get: function () {\n    return _index2.Token;\n  },\n});\nObject.defineProperty(exports, 'TokenKind', {\n  enumerable: true,\n  get: function () {\n    return _index2.TokenKind;\n  },\n});\nObject.defineProperty(exports, 'TypeInfo', {\n  enumerable: true,\n  get: function () {\n    return _index6.TypeInfo;\n  },\n});\nObject.defineProperty(exports, 'TypeKind', {\n  enumerable: true,\n  get: function () {\n    return _index.TypeKind;\n  },\n});\nObject.defineProperty(exports, 'TypeMetaFieldDef', {\n  enumerable: true,\n  get: function () {\n    return _index.TypeMetaFieldDef;\n  },\n});\nObject.defineProperty(exports, 'TypeNameMetaFieldDef', {\n  enumerable: true,\n  get: function () {\n    return _index.TypeNameMetaFieldDef;\n  },\n});\nObject.defineProperty(exports, 'UniqueArgumentDefinitionNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.UniqueArgumentDefinitionNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueArgumentNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.UniqueArgumentNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueDirectiveNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.UniqueDirectiveNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueDirectivesPerLocationRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.UniqueDirectivesPerLocationRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueEnumValueNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.UniqueEnumValueNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueFieldDefinitionNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.UniqueFieldDefinitionNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueFragmentNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.UniqueFragmentNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueInputFieldNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.UniqueInputFieldNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueOperationNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.UniqueOperationNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueOperationTypesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.UniqueOperationTypesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueTypeNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.UniqueTypeNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueVariableNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.UniqueVariableNamesRule;\n  },\n});\nObject.defineProperty(exports, 'ValidationContext', {\n  enumerable: true,\n  get: function () {\n    return _index4.ValidationContext;\n  },\n});\nObject.defineProperty(exports, 'ValuesOfCorrectTypeRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.ValuesOfCorrectTypeRule;\n  },\n});\nObject.defineProperty(exports, 'VariablesAreInputTypesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.VariablesAreInputTypesRule;\n  },\n});\nObject.defineProperty(exports, 'VariablesInAllowedPositionRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.VariablesInAllowedPositionRule;\n  },\n});\nObject.defineProperty(exports, '__Directive', {\n  enumerable: true,\n  get: function () {\n    return _index.__Directive;\n  },\n});\nObject.defineProperty(exports, '__DirectiveLocation', {\n  enumerable: true,\n  get: function () {\n    return _index.__DirectiveLocation;\n  },\n});\nObject.defineProperty(exports, '__EnumValue', {\n  enumerable: true,\n  get: function () {\n    return _index.__EnumValue;\n  },\n});\nObject.defineProperty(exports, '__Field', {\n  enumerable: true,\n  get: function () {\n    return _index.__Field;\n  },\n});\nObject.defineProperty(exports, '__InputValue', {\n  enumerable: true,\n  get: function () {\n    return _index.__InputValue;\n  },\n});\nObject.defineProperty(exports, '__Schema', {\n  enumerable: true,\n  get: function () {\n    return _index.__Schema;\n  },\n});\nObject.defineProperty(exports, '__Type', {\n  enumerable: true,\n  get: function () {\n    return _index.__Type;\n  },\n});\nObject.defineProperty(exports, '__TypeKind', {\n  enumerable: true,\n  get: function () {\n    return _index.__TypeKind;\n  },\n});\nObject.defineProperty(exports, 'assertAbstractType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertAbstractType;\n  },\n});\nObject.defineProperty(exports, 'assertCompositeType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertCompositeType;\n  },\n});\nObject.defineProperty(exports, 'assertDirective', {\n  enumerable: true,\n  get: function () {\n    return _index.assertDirective;\n  },\n});\nObject.defineProperty(exports, 'assertEnumType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertEnumType;\n  },\n});\nObject.defineProperty(exports, 'assertEnumValueName', {\n  enumerable: true,\n  get: function () {\n    return _index.assertEnumValueName;\n  },\n});\nObject.defineProperty(exports, 'assertInputObjectType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertInputObjectType;\n  },\n});\nObject.defineProperty(exports, 'assertInputType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertInputType;\n  },\n});\nObject.defineProperty(exports, 'assertInterfaceType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertInterfaceType;\n  },\n});\nObject.defineProperty(exports, 'assertLeafType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertLeafType;\n  },\n});\nObject.defineProperty(exports, 'assertListType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertListType;\n  },\n});\nObject.defineProperty(exports, 'assertName', {\n  enumerable: true,\n  get: function () {\n    return _index.assertName;\n  },\n});\nObject.defineProperty(exports, 'assertNamedType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertNamedType;\n  },\n});\nObject.defineProperty(exports, 'assertNonNullType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertNonNullType;\n  },\n});\nObject.defineProperty(exports, 'assertNullableType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertNullableType;\n  },\n});\nObject.defineProperty(exports, 'assertObjectType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertObjectType;\n  },\n});\nObject.defineProperty(exports, 'assertOutputType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertOutputType;\n  },\n});\nObject.defineProperty(exports, 'assertScalarType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertScalarType;\n  },\n});\nObject.defineProperty(exports, 'assertSchema', {\n  enumerable: true,\n  get: function () {\n    return _index.assertSchema;\n  },\n});\nObject.defineProperty(exports, 'assertType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertType;\n  },\n});\nObject.defineProperty(exports, 'assertUnionType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertUnionType;\n  },\n});\nObject.defineProperty(exports, 'assertValidName', {\n  enumerable: true,\n  get: function () {\n    return _index6.assertValidName;\n  },\n});\nObject.defineProperty(exports, 'assertValidSchema', {\n  enumerable: true,\n  get: function () {\n    return _index.assertValidSchema;\n  },\n});\nObject.defineProperty(exports, 'assertWrappingType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertWrappingType;\n  },\n});\nObject.defineProperty(exports, 'astFromValue', {\n  enumerable: true,\n  get: function () {\n    return _index6.astFromValue;\n  },\n});\nObject.defineProperty(exports, 'buildASTSchema', {\n  enumerable: true,\n  get: function () {\n    return _index6.buildASTSchema;\n  },\n});\nObject.defineProperty(exports, 'buildClientSchema', {\n  enumerable: true,\n  get: function () {\n    return _index6.buildClientSchema;\n  },\n});\nObject.defineProperty(exports, 'buildSchema', {\n  enumerable: true,\n  get: function () {\n    return _index6.buildSchema;\n  },\n});\nObject.defineProperty(exports, 'coerceInputValue', {\n  enumerable: true,\n  get: function () {\n    return _index6.coerceInputValue;\n  },\n});\nObject.defineProperty(exports, 'concatAST', {\n  enumerable: true,\n  get: function () {\n    return _index6.concatAST;\n  },\n});\nObject.defineProperty(exports, 'createSourceEventStream', {\n  enumerable: true,\n  get: function () {\n    return _index3.createSourceEventStream;\n  },\n});\nObject.defineProperty(exports, 'defaultFieldResolver', {\n  enumerable: true,\n  get: function () {\n    return _index3.defaultFieldResolver;\n  },\n});\nObject.defineProperty(exports, 'defaultTypeResolver', {\n  enumerable: true,\n  get: function () {\n    return _index3.defaultTypeResolver;\n  },\n});\nObject.defineProperty(exports, 'doTypesOverlap', {\n  enumerable: true,\n  get: function () {\n    return _index6.doTypesOverlap;\n  },\n});\nObject.defineProperty(exports, 'execute', {\n  enumerable: true,\n  get: function () {\n    return _index3.execute;\n  },\n});\nObject.defineProperty(exports, 'executeSync', {\n  enumerable: true,\n  get: function () {\n    return _index3.executeSync;\n  },\n});\nObject.defineProperty(exports, 'extendSchema', {\n  enumerable: true,\n  get: function () {\n    return _index6.extendSchema;\n  },\n});\nObject.defineProperty(exports, 'findBreakingChanges', {\n  enumerable: true,\n  get: function () {\n    return _index6.findBreakingChanges;\n  },\n});\nObject.defineProperty(exports, 'findDangerousChanges', {\n  enumerable: true,\n  get: function () {\n    return _index6.findDangerousChanges;\n  },\n});\nObject.defineProperty(exports, 'formatError', {\n  enumerable: true,\n  get: function () {\n    return _index5.formatError;\n  },\n});\nObject.defineProperty(exports, 'getArgumentValues', {\n  enumerable: true,\n  get: function () {\n    return _index3.getArgumentValues;\n  },\n});\nObject.defineProperty(exports, 'getDirectiveValues', {\n  enumerable: true,\n  get: function () {\n    return _index3.getDirectiveValues;\n  },\n});\nObject.defineProperty(exports, 'getEnterLeaveForKind', {\n  enumerable: true,\n  get: function () {\n    return _index2.getEnterLeaveForKind;\n  },\n});\nObject.defineProperty(exports, 'getIntrospectionQuery', {\n  enumerable: true,\n  get: function () {\n    return _index6.getIntrospectionQuery;\n  },\n});\nObject.defineProperty(exports, 'getLocation', {\n  enumerable: true,\n  get: function () {\n    return _index2.getLocation;\n  },\n});\nObject.defineProperty(exports, 'getNamedType', {\n  enumerable: true,\n  get: function () {\n    return _index.getNamedType;\n  },\n});\nObject.defineProperty(exports, 'getNullableType', {\n  enumerable: true,\n  get: function () {\n    return _index.getNullableType;\n  },\n});\nObject.defineProperty(exports, 'getOperationAST', {\n  enumerable: true,\n  get: function () {\n    return _index6.getOperationAST;\n  },\n});\nObject.defineProperty(exports, 'getOperationRootType', {\n  enumerable: true,\n  get: function () {\n    return _index6.getOperationRootType;\n  },\n});\nObject.defineProperty(exports, 'getVariableValues', {\n  enumerable: true,\n  get: function () {\n    return _index3.getVariableValues;\n  },\n});\nObject.defineProperty(exports, 'getVisitFn', {\n  enumerable: true,\n  get: function () {\n    return _index2.getVisitFn;\n  },\n});\nObject.defineProperty(exports, 'graphql', {\n  enumerable: true,\n  get: function () {\n    return _graphql.graphql;\n  },\n});\nObject.defineProperty(exports, 'graphqlSync', {\n  enumerable: true,\n  get: function () {\n    return _graphql.graphqlSync;\n  },\n});\nObject.defineProperty(exports, 'introspectionFromSchema', {\n  enumerable: true,\n  get: function () {\n    return _index6.introspectionFromSchema;\n  },\n});\nObject.defineProperty(exports, 'introspectionTypes', {\n  enumerable: true,\n  get: function () {\n    return _index.introspectionTypes;\n  },\n});\nObject.defineProperty(exports, 'isAbstractType', {\n  enumerable: true,\n  get: function () {\n    return _index.isAbstractType;\n  },\n});\nObject.defineProperty(exports, 'isCompositeType', {\n  enumerable: true,\n  get: function () {\n    return _index.isCompositeType;\n  },\n});\nObject.defineProperty(exports, 'isConstValueNode', {\n  enumerable: true,\n  get: function () {\n    return _index2.isConstValueNode;\n  },\n});\nObject.defineProperty(exports, 'isDefinitionNode', {\n  enumerable: true,\n  get: function () {\n    return _index2.isDefinitionNode;\n  },\n});\nObject.defineProperty(exports, 'isDirective', {\n  enumerable: true,\n  get: function () {\n    return _index.isDirective;\n  },\n});\nObject.defineProperty(exports, 'isEnumType', {\n  enumerable: true,\n  get: function () {\n    return _index.isEnumType;\n  },\n});\nObject.defineProperty(exports, 'isEqualType', {\n  enumerable: true,\n  get: function () {\n    return _index6.isEqualType;\n  },\n});\nObject.defineProperty(exports, 'isExecutableDefinitionNode', {\n  enumerable: true,\n  get: function () {\n    return _index2.isExecutableDefinitionNode;\n  },\n});\nObject.defineProperty(exports, 'isInputObjectType', {\n  enumerable: true,\n  get: function () {\n    return _index.isInputObjectType;\n  },\n});\nObject.defineProperty(exports, 'isInputType', {\n  enumerable: true,\n  get: function () {\n    return _index.isInputType;\n  },\n});\nObject.defineProperty(exports, 'isInterfaceType', {\n  enumerable: true,\n  get: function () {\n    return _index.isInterfaceType;\n  },\n});\nObject.defineProperty(exports, 'isIntrospectionType', {\n  enumerable: true,\n  get: function () {\n    return _index.isIntrospectionType;\n  },\n});\nObject.defineProperty(exports, 'isLeafType', {\n  enumerable: true,\n  get: function () {\n    return _index.isLeafType;\n  },\n});\nObject.defineProperty(exports, 'isListType', {\n  enumerable: true,\n  get: function () {\n    return _index.isListType;\n  },\n});\nObject.defineProperty(exports, 'isNamedType', {\n  enumerable: true,\n  get: function () {\n    return _index.isNamedType;\n  },\n});\nObject.defineProperty(exports, 'isNonNullType', {\n  enumerable: true,\n  get: function () {\n    return _index.isNonNullType;\n  },\n});\nObject.defineProperty(exports, 'isNullableType', {\n  enumerable: true,\n  get: function () {\n    return _index.isNullableType;\n  },\n});\nObject.defineProperty(exports, 'isObjectType', {\n  enumerable: true,\n  get: function () {\n    return _index.isObjectType;\n  },\n});\nObject.defineProperty(exports, 'isOutputType', {\n  enumerable: true,\n  get: function () {\n    return _index.isOutputType;\n  },\n});\nObject.defineProperty(exports, 'isRequiredArgument', {\n  enumerable: true,\n  get: function () {\n    return _index.isRequiredArgument;\n  },\n});\nObject.defineProperty(exports, 'isRequiredInputField', {\n  enumerable: true,\n  get: function () {\n    return _index.isRequiredInputField;\n  },\n});\nObject.defineProperty(exports, 'isScalarType', {\n  enumerable: true,\n  get: function () {\n    return _index.isScalarType;\n  },\n});\nObject.defineProperty(exports, 'isSchema', {\n  enumerable: true,\n  get: function () {\n    return _index.isSchema;\n  },\n});\nObject.defineProperty(exports, 'isSelectionNode', {\n  enumerable: true,\n  get: function () {\n    return _index2.isSelectionNode;\n  },\n});\nObject.defineProperty(exports, 'isSpecifiedDirective', {\n  enumerable: true,\n  get: function () {\n    return _index.isSpecifiedDirective;\n  },\n});\nObject.defineProperty(exports, 'isSpecifiedScalarType', {\n  enumerable: true,\n  get: function () {\n    return _index.isSpecifiedScalarType;\n  },\n});\nObject.defineProperty(exports, 'isType', {\n  enumerable: true,\n  get: function () {\n    return _index.isType;\n  },\n});\nObject.defineProperty(exports, 'isTypeDefinitionNode', {\n  enumerable: true,\n  get: function () {\n    return _index2.isTypeDefinitionNode;\n  },\n});\nObject.defineProperty(exports, 'isTypeExtensionNode', {\n  enumerable: true,\n  get: function () {\n    return _index2.isTypeExtensionNode;\n  },\n});\nObject.defineProperty(exports, 'isTypeNode', {\n  enumerable: true,\n  get: function () {\n    return _index2.isTypeNode;\n  },\n});\nObject.defineProperty(exports, 'isTypeSubTypeOf', {\n  enumerable: true,\n  get: function () {\n    return _index6.isTypeSubTypeOf;\n  },\n});\nObject.defineProperty(exports, 'isTypeSystemDefinitionNode', {\n  enumerable: true,\n  get: function () {\n    return _index2.isTypeSystemDefinitionNode;\n  },\n});\nObject.defineProperty(exports, 'isTypeSystemExtensionNode', {\n  enumerable: true,\n  get: function () {\n    return _index2.isTypeSystemExtensionNode;\n  },\n});\nObject.defineProperty(exports, 'isUnionType', {\n  enumerable: true,\n  get: function () {\n    return _index.isUnionType;\n  },\n});\nObject.defineProperty(exports, 'isValidNameError', {\n  enumerable: true,\n  get: function () {\n    return _index6.isValidNameError;\n  },\n});\nObject.defineProperty(exports, 'isValueNode', {\n  enumerable: true,\n  get: function () {\n    return _index2.isValueNode;\n  },\n});\nObject.defineProperty(exports, 'isWrappingType', {\n  enumerable: true,\n  get: function () {\n    return _index.isWrappingType;\n  },\n});\nObject.defineProperty(exports, 'lexicographicSortSchema', {\n  enumerable: true,\n  get: function () {\n    return _index6.lexicographicSortSchema;\n  },\n});\nObject.defineProperty(exports, 'locatedError', {\n  enumerable: true,\n  get: function () {\n    return _index5.locatedError;\n  },\n});\nObject.defineProperty(exports, 'parse', {\n  enumerable: true,\n  get: function () {\n    return _index2.parse;\n  },\n});\nObject.defineProperty(exports, 'parseConstValue', {\n  enumerable: true,\n  get: function () {\n    return _index2.parseConstValue;\n  },\n});\nObject.defineProperty(exports, 'parseType', {\n  enumerable: true,\n  get: function () {\n    return _index2.parseType;\n  },\n});\nObject.defineProperty(exports, 'parseValue', {\n  enumerable: true,\n  get: function () {\n    return _index2.parseValue;\n  },\n});\nObject.defineProperty(exports, 'print', {\n  enumerable: true,\n  get: function () {\n    return _index2.print;\n  },\n});\nObject.defineProperty(exports, 'printError', {\n  enumerable: true,\n  get: function () {\n    return _index5.printError;\n  },\n});\nObject.defineProperty(exports, 'printIntrospectionSchema', {\n  enumerable: true,\n  get: function () {\n    return _index6.printIntrospectionSchema;\n  },\n});\nObject.defineProperty(exports, 'printLocation', {\n  enumerable: true,\n  get: function () {\n    return _index2.printLocation;\n  },\n});\nObject.defineProperty(exports, 'printSchema', {\n  enumerable: true,\n  get: function () {\n    return _index6.printSchema;\n  },\n});\nObject.defineProperty(exports, 'printSourceLocation', {\n  enumerable: true,\n  get: function () {\n    return _index2.printSourceLocation;\n  },\n});\nObject.defineProperty(exports, 'printType', {\n  enumerable: true,\n  get: function () {\n    return _index6.printType;\n  },\n});\nObject.defineProperty(exports, 'resolveObjMapThunk', {\n  enumerable: true,\n  get: function () {\n    return _index.resolveObjMapThunk;\n  },\n});\nObject.defineProperty(exports, 'resolveReadonlyArrayThunk', {\n  enumerable: true,\n  get: function () {\n    return _index.resolveReadonlyArrayThunk;\n  },\n});\nObject.defineProperty(exports, 'responsePathAsArray', {\n  enumerable: true,\n  get: function () {\n    return _index3.responsePathAsArray;\n  },\n});\nObject.defineProperty(exports, 'separateOperations', {\n  enumerable: true,\n  get: function () {\n    return _index6.separateOperations;\n  },\n});\nObject.defineProperty(exports, 'specifiedDirectives', {\n  enumerable: true,\n  get: function () {\n    return _index.specifiedDirectives;\n  },\n});\nObject.defineProperty(exports, 'specifiedRules', {\n  enumerable: true,\n  get: function () {\n    return _index4.specifiedRules;\n  },\n});\nObject.defineProperty(exports, 'specifiedScalarTypes', {\n  enumerable: true,\n  get: function () {\n    return _index.specifiedScalarTypes;\n  },\n});\nObject.defineProperty(exports, 'stripIgnoredCharacters', {\n  enumerable: true,\n  get: function () {\n    return _index6.stripIgnoredCharacters;\n  },\n});\nObject.defineProperty(exports, 'subscribe', {\n  enumerable: true,\n  get: function () {\n    return _index3.subscribe;\n  },\n});\nObject.defineProperty(exports, 'syntaxError', {\n  enumerable: true,\n  get: function () {\n    return _index5.syntaxError;\n  },\n});\nObject.defineProperty(exports, 'typeFromAST', {\n  enumerable: true,\n  get: function () {\n    return _index6.typeFromAST;\n  },\n});\nObject.defineProperty(exports, 'validate', {\n  enumerable: true,\n  get: function () {\n    return _index4.validate;\n  },\n});\nObject.defineProperty(exports, 'validateSchema', {\n  enumerable: true,\n  get: function () {\n    return _index.validateSchema;\n  },\n});\nObject.defineProperty(exports, 'valueFromAST', {\n  enumerable: true,\n  get: function () {\n    return _index6.valueFromAST;\n  },\n});\nObject.defineProperty(exports, 'valueFromASTUntyped', {\n  enumerable: true,\n  get: function () {\n    return _index6.valueFromASTUntyped;\n  },\n});\nObject.defineProperty(exports, 'version', {\n  enumerable: true,\n  get: function () {\n    return _version.version;\n  },\n});\nObject.defineProperty(exports, 'versionInfo', {\n  enumerable: true,\n  get: function () {\n    return _version.versionInfo;\n  },\n});\nObject.defineProperty(exports, 'visit', {\n  enumerable: true,\n  get: function () {\n    return _index2.visit;\n  },\n});\nObject.defineProperty(exports, 'visitInParallel', {\n  enumerable: true,\n  get: function () {\n    return _index2.visitInParallel;\n  },\n});\nObject.defineProperty(exports, 'visitWithTypeInfo', {\n  enumerable: true,\n  get: function () {\n    return _index6.visitWithTypeInfo;\n  },\n});\n\nvar _version = require('./version.js');\n\nvar _graphql = require('./graphql.js');\n\nvar _index = require('./type/index.js');\n\nvar _index2 = require('./language/index.js');\n\nvar _index3 = require('./execution/index.js');\n\nvar _index4 = require('./validation/index.js');\n\nvar _index5 = require('./error/index.js');\n\nvar _index6 = require('./utilities/index.js');\n", "/**\n * Tokenizer results.\n */\ninterface LexToken {\n  type:\n    | \"OPEN\"\n    | \"CLOSE\"\n    | \"PATTERN\"\n    | \"NAME\"\n    | \"CHAR\"\n    | \"ESCAPED_CHAR\"\n    | \"MODIFIER\"\n    | \"END\";\n  index: number;\n  value: string;\n}\n\n/**\n * Tokenize input string.\n */\nfunction lexer(str: string): LexToken[] {\n  const tokens: LexToken[] = [];\n  let i = 0;\n\n  while (i < str.length) {\n    const char = str[i];\n\n    if (char === \"*\" || char === \"+\" || char === \"?\") {\n      tokens.push({ type: \"MODIFIER\", index: i, value: str[i++] });\n      continue;\n    }\n\n    if (char === \"\\\\\") {\n      tokens.push({ type: \"ESCAPED_CHAR\", index: i++, value: str[i++] });\n      continue;\n    }\n\n    if (char === \"{\") {\n      tokens.push({ type: \"OPEN\", index: i, value: str[i++] });\n      continue;\n    }\n\n    if (char === \"}\") {\n      tokens.push({ type: \"CLOSE\", index: i, value: str[i++] });\n      continue;\n    }\n\n    if (char === \":\") {\n      let name = \"\";\n      let j = i + 1;\n\n      while (j < str.length) {\n        const code = str.charCodeAt(j);\n\n        if (\n          // `0-9`\n          (code >= 48 && code <= 57) ||\n          // `A-Z`\n          (code >= 65 && code <= 90) ||\n          // `a-z`\n          (code >= 97 && code <= 122) ||\n          // `_`\n          code === 95\n        ) {\n          name += str[j++];\n          continue;\n        }\n\n        break;\n      }\n\n      if (!name) throw new TypeError(`Missing parameter name at ${i}`);\n\n      tokens.push({ type: \"NAME\", index: i, value: name });\n      i = j;\n      continue;\n    }\n\n    if (char === \"(\") {\n      let count = 1;\n      let pattern = \"\";\n      let j = i + 1;\n\n      if (str[j] === \"?\") {\n        throw new TypeError(`Pattern cannot start with \"?\" at ${j}`);\n      }\n\n      while (j < str.length) {\n        if (str[j] === \"\\\\\") {\n          pattern += str[j++] + str[j++];\n          continue;\n        }\n\n        if (str[j] === \")\") {\n          count--;\n          if (count === 0) {\n            j++;\n            break;\n          }\n        } else if (str[j] === \"(\") {\n          count++;\n          if (str[j + 1] !== \"?\") {\n            throw new TypeError(`Capturing groups are not allowed at ${j}`);\n          }\n        }\n\n        pattern += str[j++];\n      }\n\n      if (count) throw new TypeError(`Unbalanced pattern at ${i}`);\n      if (!pattern) throw new TypeError(`Missing pattern at ${i}`);\n\n      tokens.push({ type: \"PATTERN\", index: i, value: pattern });\n      i = j;\n      continue;\n    }\n\n    tokens.push({ type: \"CHAR\", index: i, value: str[i++] });\n  }\n\n  tokens.push({ type: \"END\", index: i, value: \"\" });\n\n  return tokens;\n}\n\nexport interface ParseOptions {\n  /**\n   * Set the default delimiter for repeat parameters. (default: `'/'`)\n   */\n  delimiter?: string;\n  /**\n   * List of characters to automatically consider prefixes when parsing.\n   */\n  prefixes?: string;\n}\n\n/**\n * Parse a string for the raw tokens.\n */\nexport function parse(str: string, options: ParseOptions = {}): Token[] {\n  const tokens = lexer(str);\n  const { prefixes = \"./\" } = options;\n  const defaultPattern = `[^${escapeString(options.delimiter || \"/#?\")}]+?`;\n  const result: Token[] = [];\n  let key = 0;\n  let i = 0;\n  let path = \"\";\n\n  const tryConsume = (type: LexToken[\"type\"]): string | undefined => {\n    if (i < tokens.length && tokens[i].type === type) return tokens[i++].value;\n  };\n\n  const mustConsume = (type: LexToken[\"type\"]): string => {\n    const value = tryConsume(type);\n    if (value !== undefined) return value;\n    const { type: nextType, index } = tokens[i];\n    throw new TypeError(`Unexpected ${nextType} at ${index}, expected ${type}`);\n  };\n\n  const consumeText = (): string => {\n    let result = \"\";\n    let value: string | undefined;\n    while ((value = tryConsume(\"CHAR\") || tryConsume(\"ESCAPED_CHAR\"))) {\n      result += value;\n    }\n    return result;\n  };\n\n  while (i < tokens.length) {\n    const char = tryConsume(\"CHAR\");\n    const name = tryConsume(\"NAME\");\n    const pattern = tryConsume(\"PATTERN\");\n\n    if (name || pattern) {\n      let prefix = char || \"\";\n\n      if (prefixes.indexOf(prefix) === -1) {\n        path += prefix;\n        prefix = \"\";\n      }\n\n      if (path) {\n        result.push(path);\n        path = \"\";\n      }\n\n      result.push({\n        name: name || key++,\n        prefix,\n        suffix: \"\",\n        pattern: pattern || defaultPattern,\n        modifier: tryConsume(\"MODIFIER\") || \"\",\n      });\n      continue;\n    }\n\n    const value = char || tryConsume(\"ESCAPED_CHAR\");\n    if (value) {\n      path += value;\n      continue;\n    }\n\n    if (path) {\n      result.push(path);\n      path = \"\";\n    }\n\n    const open = tryConsume(\"OPEN\");\n    if (open) {\n      const prefix = consumeText();\n      const name = tryConsume(\"NAME\") || \"\";\n      const pattern = tryConsume(\"PATTERN\") || \"\";\n      const suffix = consumeText();\n\n      mustConsume(\"CLOSE\");\n\n      result.push({\n        name: name || (pattern ? key++ : \"\"),\n        pattern: name && !pattern ? defaultPattern : pattern,\n        prefix,\n        suffix,\n        modifier: tryConsume(\"MODIFIER\") || \"\",\n      });\n      continue;\n    }\n\n    mustConsume(\"END\");\n  }\n\n  return result;\n}\n\nexport interface TokensToFunctionOptions {\n  /**\n   * When `true` the regexp will be case sensitive. (default: `false`)\n   */\n  sensitive?: boolean;\n  /**\n   * Function for encoding input strings for output.\n   */\n  encode?: (value: string, token: Key) => string;\n  /**\n   * When `false` the function can produce an invalid (unmatched) path. (default: `true`)\n   */\n  validate?: boolean;\n}\n\n/**\n * Compile a string to a template function for the path.\n */\nexport function compile<P extends object = object>(\n  str: string,\n  options?: ParseOptions & TokensToFunctionOptions\n) {\n  return tokensToFunction<P>(parse(str, options), options);\n}\n\nexport type PathFunction<P extends object = object> = (data?: P) => string;\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nexport function tokensToFunction<P extends object = object>(\n  tokens: Token[],\n  options: TokensToFunctionOptions = {}\n): PathFunction<P> {\n  const reFlags = flags(options);\n  const { encode = (x: string) => x, validate = true } = options;\n\n  // Compile all the tokens into regexps.\n  const matches = tokens.map((token) => {\n    if (typeof token === \"object\") {\n      return new RegExp(`^(?:${token.pattern})$`, reFlags);\n    }\n  });\n\n  return (data: Record<string, any> | null | undefined) => {\n    let path = \"\";\n\n    for (let i = 0; i < tokens.length; i++) {\n      const token = tokens[i];\n\n      if (typeof token === \"string\") {\n        path += token;\n        continue;\n      }\n\n      const value = data ? data[token.name] : undefined;\n      const optional = token.modifier === \"?\" || token.modifier === \"*\";\n      const repeat = token.modifier === \"*\" || token.modifier === \"+\";\n\n      if (Array.isArray(value)) {\n        if (!repeat) {\n          throw new TypeError(\n            `Expected \"${token.name}\" to not repeat, but got an array`\n          );\n        }\n\n        if (value.length === 0) {\n          if (optional) continue;\n\n          throw new TypeError(`Expected \"${token.name}\" to not be empty`);\n        }\n\n        for (let j = 0; j < value.length; j++) {\n          const segment = encode(value[j], token);\n\n          if (validate && !(matches[i] as RegExp).test(segment)) {\n            throw new TypeError(\n              `Expected all \"${token.name}\" to match \"${token.pattern}\", but got \"${segment}\"`\n            );\n          }\n\n          path += token.prefix + segment + token.suffix;\n        }\n\n        continue;\n      }\n\n      if (typeof value === \"string\" || typeof value === \"number\") {\n        const segment = encode(String(value), token);\n\n        if (validate && !(matches[i] as RegExp).test(segment)) {\n          throw new TypeError(\n            `Expected \"${token.name}\" to match \"${token.pattern}\", but got \"${segment}\"`\n          );\n        }\n\n        path += token.prefix + segment + token.suffix;\n        continue;\n      }\n\n      if (optional) continue;\n\n      const typeOfMessage = repeat ? \"an array\" : \"a string\";\n      throw new TypeError(`Expected \"${token.name}\" to be ${typeOfMessage}`);\n    }\n\n    return path;\n  };\n}\n\nexport interface RegexpToFunctionOptions {\n  /**\n   * Function for decoding strings for params.\n   */\n  decode?: (value: string, token: Key) => string;\n}\n\n/**\n * A match result contains data about the path match.\n */\nexport interface MatchResult<P extends object = object> {\n  path: string;\n  index: number;\n  params: P;\n}\n\n/**\n * A match is either `false` (no match) or a match result.\n */\nexport type Match<P extends object = object> = false | MatchResult<P>;\n\n/**\n * The match function takes a string and returns whether it matched the path.\n */\nexport type MatchFunction<P extends object = object> = (\n  path: string\n) => Match<P>;\n\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nexport function match<P extends object = object>(\n  str: Path,\n  options?: ParseOptions & TokensToRegexpOptions & RegexpToFunctionOptions\n) {\n  const keys: Key[] = [];\n  const re = pathToRegexp(str, keys, options);\n  return regexpToFunction<P>(re, keys, options);\n}\n\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nexport function regexpToFunction<P extends object = object>(\n  re: RegExp,\n  keys: Key[],\n  options: RegexpToFunctionOptions = {}\n): MatchFunction<P> {\n  const { decode = (x: string) => x } = options;\n\n  return function (pathname: string) {\n    const m = re.exec(pathname);\n    if (!m) return false;\n\n    const { 0: path, index } = m;\n    const params = Object.create(null);\n\n    for (let i = 1; i < m.length; i++) {\n      if (m[i] === undefined) continue;\n\n      const key = keys[i - 1];\n\n      if (key.modifier === \"*\" || key.modifier === \"+\") {\n        params[key.name] = m[i].split(key.prefix + key.suffix).map((value) => {\n          return decode(value, key);\n        });\n      } else {\n        params[key.name] = decode(m[i], key);\n      }\n    }\n\n    return { path, index, params };\n  };\n}\n\n/**\n * Escape a regular expression string.\n */\nfunction escapeString(str: string) {\n  return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\n\n/**\n * Get the flags for a regexp from the options.\n */\nfunction flags(options?: { sensitive?: boolean }) {\n  return options && options.sensitive ? \"\" : \"i\";\n}\n\n/**\n * Metadata about a key.\n */\nexport interface Key {\n  name: string | number;\n  prefix: string;\n  suffix: string;\n  pattern: string;\n  modifier: string;\n}\n\n/**\n * A token is a string (nothing special) or key metadata (capture group).\n */\nexport type Token = string | Key;\n\n/**\n * Pull out keys from a regexp.\n */\nfunction regexpToRegexp(path: RegExp, keys?: Key[]): RegExp {\n  if (!keys) return path;\n\n  const groupsRegex = /\\((?:\\?<(.*?)>)?(?!\\?)/g;\n\n  let index = 0;\n  let execResult = groupsRegex.exec(path.source);\n  while (execResult) {\n    keys.push({\n      // Use parenthesized substring match if available, index otherwise\n      name: execResult[1] || index++,\n      prefix: \"\",\n      suffix: \"\",\n      modifier: \"\",\n      pattern: \"\",\n    });\n    execResult = groupsRegex.exec(path.source);\n  }\n\n  return path;\n}\n\n/**\n * Transform an array into a regexp.\n */\nfunction arrayToRegexp(\n  paths: Array<string | RegExp>,\n  keys?: Key[],\n  options?: TokensToRegexpOptions & ParseOptions\n): RegExp {\n  const parts = paths.map((path) => pathToRegexp(path, keys, options).source);\n  return new RegExp(`(?:${parts.join(\"|\")})`, flags(options));\n}\n\n/**\n * Create a path regexp from string input.\n */\nfunction stringToRegexp(\n  path: string,\n  keys?: Key[],\n  options?: TokensToRegexpOptions & ParseOptions\n) {\n  return tokensToRegexp(parse(path, options), keys, options);\n}\n\nexport interface TokensToRegexpOptions {\n  /**\n   * When `true` the regexp will be case sensitive. (default: `false`)\n   */\n  sensitive?: boolean;\n  /**\n   * When `true` the regexp won't allow an optional trailing delimiter to match. (default: `false`)\n   */\n  strict?: boolean;\n  /**\n   * When `true` the regexp will match to the end of the string. (default: `true`)\n   */\n  end?: boolean;\n  /**\n   * When `true` the regexp will match from the beginning of the string. (default: `true`)\n   */\n  start?: boolean;\n  /**\n   * Sets the final character for non-ending optimistic matches. (default: `/`)\n   */\n  delimiter?: string;\n  /**\n   * List of characters that can also be \"end\" characters.\n   */\n  endsWith?: string;\n  /**\n   * Encode path tokens for use in the `RegExp`.\n   */\n  encode?: (value: string) => string;\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n */\nexport function tokensToRegexp(\n  tokens: Token[],\n  keys?: Key[],\n  options: TokensToRegexpOptions = {}\n) {\n  const {\n    strict = false,\n    start = true,\n    end = true,\n    encode = (x: string) => x,\n    delimiter = \"/#?\",\n    endsWith = \"\",\n  } = options;\n  const endsWithRe = `[${escapeString(endsWith)}]|$`;\n  const delimiterRe = `[${escapeString(delimiter)}]`;\n  let route = start ? \"^\" : \"\";\n\n  // Iterate over the tokens and create our regexp string.\n  for (const token of tokens) {\n    if (typeof token === \"string\") {\n      route += escapeString(encode(token));\n    } else {\n      const prefix = escapeString(encode(token.prefix));\n      const suffix = escapeString(encode(token.suffix));\n\n      if (token.pattern) {\n        if (keys) keys.push(token);\n\n        if (prefix || suffix) {\n          if (token.modifier === \"+\" || token.modifier === \"*\") {\n            const mod = token.modifier === \"*\" ? \"?\" : \"\";\n            route += `(?:${prefix}((?:${token.pattern})(?:${suffix}${prefix}(?:${token.pattern}))*)${suffix})${mod}`;\n          } else {\n            route += `(?:${prefix}(${token.pattern})${suffix})${token.modifier}`;\n          }\n        } else {\n          if (token.modifier === \"+\" || token.modifier === \"*\") {\n            route += `((?:${token.pattern})${token.modifier})`;\n          } else {\n            route += `(${token.pattern})${token.modifier}`;\n          }\n        }\n      } else {\n        route += `(?:${prefix}${suffix})${token.modifier}`;\n      }\n    }\n  }\n\n  if (end) {\n    if (!strict) route += `${delimiterRe}?`;\n\n    route += !options.endsWith ? \"$\" : `(?=${endsWithRe})`;\n  } else {\n    const endToken = tokens[tokens.length - 1];\n    const isEndDelimited =\n      typeof endToken === \"string\"\n        ? delimiterRe.indexOf(endToken[endToken.length - 1]) > -1\n        : endToken === undefined;\n\n    if (!strict) {\n      route += `(?:${delimiterRe}(?=${endsWithRe}))?`;\n    }\n\n    if (!isEndDelimited) {\n      route += `(?=${delimiterRe}|${endsWithRe})`;\n    }\n  }\n\n  return new RegExp(route, flags(options));\n}\n\n/**\n * Supported `path-to-regexp` input types.\n */\nexport type Path = string | RegExp | Array<string | RegExp>;\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n */\nexport function pathToRegexp(\n  path: Path,\n  keys?: Key[],\n  options?: TokensToRegexpOptions & ParseOptions\n) {\n  if (path instanceof RegExp) return regexpToRegexp(path, keys);\n  if (Array.isArray(path)) return arrayToRegexp(path, keys, options);\n  return stringToRegexp(path, keys, options);\n}\n", "import { objectToHeaders } from 'headers-polyfill'\nimport { IsomorphicResponse, MockedResponse } from '../glossary'\n\n/**\n * Converts a given mocked response object into an isomorphic response.\n */\nexport function toIsoResponse(response: MockedResponse): IsomorphicResponse {\n  return {\n    status: response.status ?? 200,\n    statusText: response.statusText || 'OK',\n    headers: objectToHeaders(response.headers || {}),\n    body: response.body,\n  }\n}\n", "import {\n  Headers,\n  flattenHeadersObject,\n  objectToHeaders,\n  headersToObject,\n} from 'headers-polyfill'\nimport { invariant } from 'outvariant'\nimport { IsomorphicRequest } from '../../IsomorphicRequest'\nimport {\n  HttpRequestEventMap,\n  IsomorphicResponse,\n  IS_PATCHED_MODULE,\n} from '../../glossary'\nimport { Interceptor } from '../../Interceptor'\nimport { toIsoResponse } from '../../utils/toIsoResponse'\nimport { InteractiveIsomorphicRequest } from '../../InteractiveIsomorphicRequest'\n\nexport class FetchInterceptor extends Interceptor<HttpRequestEventMap> {\n  static symbol = Symbol('fetch')\n\n  constructor() {\n    super(FetchInterceptor.symbol)\n  }\n\n  protected checkEnvironment() {\n    return (\n      typeof globalThis !== 'undefined' &&\n      typeof globalThis.fetch !== 'undefined'\n    )\n  }\n\n  protected setup() {\n    const pureFetch = globalThis.fetch\n\n    invariant(\n      !(pureFetch as any)[IS_PATCHED_MODULE],\n      'Failed to patch the \"fetch\" module: already patched.'\n    )\n\n    globalThis.fetch = async (input, init) => {\n      const request = new Request(input, init)\n\n      const url = typeof input === 'string' ? input : input.url\n      const method = request.method\n\n      this.log('[%s] %s', method, url)\n\n      const body = await request.clone().arrayBuffer()\n      const isomorphicRequest = new IsomorphicRequest(\n        new URL(url, location.origin),\n        {\n          body,\n          method,\n          headers: new Headers(request.headers),\n          credentials: request.credentials,\n        }\n      )\n\n      const interactiveIsomorphicRequest = new InteractiveIsomorphicRequest(\n        isomorphicRequest\n      )\n\n      this.log('isomorphic request', interactiveIsomorphicRequest)\n\n      this.log(\n        'emitting the \"request\" event for %d listener(s)...',\n        this.emitter.listenerCount('request')\n      )\n      this.emitter.emit('request', interactiveIsomorphicRequest)\n\n      this.log('awaiting for the mocked response...')\n\n      await this.emitter.untilIdle('request', ({ args: [request] }) => {\n        return request.id === interactiveIsomorphicRequest.id\n      })\n      this.log('all request listeners have been resolved!')\n\n      const [mockedResponse] =\n        await interactiveIsomorphicRequest.respondWith.invoked()\n      this.log('event.respondWith called with:', mockedResponse)\n\n      if (mockedResponse) {\n        this.log('received mocked response:', mockedResponse)\n\n        const isomorphicResponse = toIsoResponse(mockedResponse)\n        this.log('derived isomorphic response:', isomorphicResponse)\n\n        this.emitter.emit(\n          'response',\n          interactiveIsomorphicRequest,\n          isomorphicResponse\n        )\n\n        const response = new Response(mockedResponse.body, {\n          ...isomorphicResponse,\n          // `Response.headers` cannot be instantiated with the `Headers` polyfill.\n          // Apparently, it halts if the `Headers` class contains unknown properties\n          // (i.e. the internal `Headers.map`).\n          headers: flattenHeadersObject(mockedResponse.headers || {}),\n        })\n\n        // Set the \"response.url\" property to equal the intercepted request URL.\n        Object.defineProperty(response, 'url', {\n          writable: false,\n          enumerable: true,\n          configurable: false,\n          value: interactiveIsomorphicRequest.url.href,\n        })\n\n        return response\n      }\n\n      this.log('no mocked response received!')\n\n      return pureFetch(request).then(async (response) => {\n        const cloneResponse = response.clone()\n        this.log('original fetch performed', cloneResponse)\n\n        this.emitter.emit(\n          'response',\n          interactiveIsomorphicRequest,\n          await normalizeFetchResponse(cloneResponse)\n        )\n        return response\n      })\n    }\n\n    Object.defineProperty(globalThis.fetch, IS_PATCHED_MODULE, {\n      enumerable: true,\n      configurable: true,\n      value: true,\n    })\n\n    this.subscriptions.push(() => {\n      Object.defineProperty(globalThis.fetch, IS_PATCHED_MODULE, {\n        value: undefined,\n      })\n\n      globalThis.fetch = pureFetch\n\n      this.log('restored native \"globalThis.fetch\"!', globalThis.fetch.name)\n    })\n  }\n}\n\nasync function normalizeFetchResponse(\n  response: Response\n): Promise<IsomorphicResponse> {\n  return {\n    status: response.status,\n    statusText: response.statusText,\n    headers: objectToHeaders(headersToObject(response.headers)),\n    body: await response.text(),\n  }\n}\n", "'use strict'\n\n/**\n * Ponyfill for `Array.prototype.find` which is only available in ES6 runtimes.\n *\n * Works with anything that has a `length` property and index access properties, including NodeList.\n *\n * @template {unknown} T\n * @param {Array<T> | ({length:number, [number]: T})} list\n * @param {function (item: T, index: number, list:Array<T> | ({length:number, [number]: T})):boolean} predicate\n * @param {Partial<Pick<ArrayConstructor['prototype'], 'find'>>?} ac `Array.prototype` by default,\n * \t\t\t\tallows injecting a custom implementation in tests\n * @returns {T | undefined}\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\n * @see https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.find\n */\nfunction find(list, predicate, ac) {\n\tif (ac === undefined) {\n\t\tac = Array.prototype;\n\t}\n\tif (list && typeof ac.find === 'function') {\n\t\treturn ac.find.call(list, predicate);\n\t}\n\tfor (var i = 0; i < list.length; i++) {\n\t\tif (Object.prototype.hasOwnProperty.call(list, i)) {\n\t\t\tvar item = list[i];\n\t\t\tif (predicate.call(undefined, item, i, list)) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * \"Shallow freezes\" an object to render it immutable.\n * Uses `Object.freeze` if available,\n * otherwise the immutability is only in the type.\n *\n * Is used to create \"enum like\" objects.\n *\n * @template T\n * @param {T} object the object to freeze\n * @param {Pick<ObjectConstructor, 'freeze'> = Object} oc `Object` by default,\n * \t\t\t\tallows to inject custom object constructor for tests\n * @returns {Readonly<T>}\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/freeze\n */\nfunction freeze(object, oc) {\n\tif (oc === undefined) {\n\t\toc = Object\n\t}\n\treturn oc && typeof oc.freeze === 'function' ? oc.freeze(object) : object\n}\n\n/**\n * Since we can not rely on `Object.assign` we provide a simplified version\n * that is sufficient for our needs.\n *\n * @param {Object} target\n * @param {Object | null | undefined} source\n *\n * @returns {Object} target\n * @throws TypeError if target is not an object\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n * @see https://tc39.es/ecma262/multipage/fundamental-objects.html#sec-object.assign\n */\nfunction assign(target, source) {\n\tif (target === null || typeof target !== 'object') {\n\t\tthrow new TypeError('target is not an object')\n\t}\n\tfor (var key in source) {\n\t\tif (Object.prototype.hasOwnProperty.call(source, key)) {\n\t\t\ttarget[key] = source[key]\n\t\t}\n\t}\n\treturn target\n}\n\n/**\n * All mime types that are allowed as input to `DOMParser.parseFromString`\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString#Argument02 MDN\n * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#domparsersupportedtype WHATWG HTML Spec\n * @see DOMParser.prototype.parseFromString\n */\nvar MIME_TYPE = freeze({\n\t/**\n\t * `text/html`, the only mime type that triggers treating an XML document as HTML.\n\t *\n\t * @see DOMParser.SupportedType.isHTML\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring WHATWG HTML Spec\n\t */\n\tHTML: 'text/html',\n\n\t/**\n\t * Helper method to check a mime type if it indicates an HTML document\n\t *\n\t * @param {string} [value]\n\t * @returns {boolean}\n\t *\n\t * @see https://www.iana.org/assignments/media-types/text/html IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/HTML Wikipedia\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser/parseFromString MDN\n\t * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-domparser-parsefromstring \t */\n\tisHTML: function (value) {\n\t\treturn value === MIME_TYPE.HTML\n\t},\n\n\t/**\n\t * `application/xml`, the standard mime type for XML documents.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xml IANA MimeType registration\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.1 RFC 7303\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_APPLICATION: 'application/xml',\n\n\t/**\n\t * `text/html`, an alias for `application/xml`.\n\t *\n\t * @see https://tools.ietf.org/html/rfc7303#section-9.2 RFC 7303\n\t * @see https://www.iana.org/assignments/media-types/text/xml IANA MimeType registration\n\t * @see https://en.wikipedia.org/wiki/XML_and_MIME Wikipedia\n\t */\n\tXML_TEXT: 'text/xml',\n\n\t/**\n\t * `application/xhtml+xml`, indicates an XML document that has the default HTML namespace,\n\t * but is parsed as an XML document.\n\t *\n\t * @see https://www.iana.org/assignments/media-types/application/xhtml+xml IANA MimeType registration\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument WHATWG DOM Spec\n\t * @see https://en.wikipedia.org/wiki/XHTML Wikipedia\n\t */\n\tXML_XHTML_APPLICATION: 'application/xhtml+xml',\n\n\t/**\n\t * `image/svg+xml`,\n\t *\n\t * @see https://www.iana.org/assignments/media-types/image/svg+xml IANA MimeType registration\n\t * @see https://www.w3.org/TR/SVG11/ W3C SVG 1.1\n\t * @see https://en.wikipedia.org/wiki/Scalable_Vector_Graphics Wikipedia\n\t */\n\tXML_SVG_IMAGE: 'image/svg+xml',\n})\n\n/**\n * Namespaces that are used in this code base.\n *\n * @see http://www.w3.org/TR/REC-xml-names\n */\nvar NAMESPACE = freeze({\n\t/**\n\t * The XHTML namespace.\n\t *\n\t * @see http://www.w3.org/1999/xhtml\n\t */\n\tHTML: 'http://www.w3.org/1999/xhtml',\n\n\t/**\n\t * Checks if `uri` equals `NAMESPACE.HTML`.\n\t *\n\t * @param {string} [uri]\n\t *\n\t * @see NAMESPACE.HTML\n\t */\n\tisHTML: function (uri) {\n\t\treturn uri === NAMESPACE.HTML\n\t},\n\n\t/**\n\t * The SVG namespace.\n\t *\n\t * @see http://www.w3.org/2000/svg\n\t */\n\tSVG: 'http://www.w3.org/2000/svg',\n\n\t/**\n\t * The `xml:` namespace.\n\t *\n\t * @see http://www.w3.org/XML/1998/namespace\n\t */\n\tXML: 'http://www.w3.org/XML/1998/namespace',\n\n\t/**\n\t * The `xmlns:` namespace\n\t *\n\t * @see https://www.w3.org/2000/xmlns/\n\t */\n\tXMLNS: 'http://www.w3.org/2000/xmlns/',\n})\n\nexports.assign = assign;\nexports.find = find;\nexports.freeze = freeze;\nexports.MIME_TYPE = MIME_TYPE;\nexports.NAMESPACE = NAMESPACE;\n", "var conventions = require(\"./conventions\");\n\nvar find = conventions.find;\nvar NAMESPACE = conventions.NAMESPACE;\n\n/**\n * A prerequisite for `[].filter`, to drop elements that are empty\n * @param {string} input\n * @returns {boolean}\n */\nfunction notEmptyString (input) {\n\treturn input !== ''\n}\n/**\n * @see https://infra.spec.whatwg.org/#split-on-ascii-whitespace\n * @see https://infra.spec.whatwg.org/#ascii-whitespace\n *\n * @param {string} input\n * @returns {string[]} (can be empty)\n */\nfunction splitOnASCIIWhitespace(input) {\n\t// U+0009 TAB, U+000A LF, U+000C FF, U+000D CR, U+0020 SPACE\n\treturn input ? input.split(/[\\t\\n\\f\\r ]+/).filter(notEmptyString) : []\n}\n\n/**\n * Adds element as a key to current if it is not already present.\n *\n * @param {Record<string, boolean | undefined>} current\n * @param {string} element\n * @returns {Record<string, boolean | undefined>}\n */\nfunction orderedSetReducer (current, element) {\n\tif (!current.hasOwnProperty(element)) {\n\t\tcurrent[element] = true;\n\t}\n\treturn current;\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#ordered-set\n * @param {string} input\n * @returns {string[]}\n */\nfunction toOrderedSet(input) {\n\tif (!input) return [];\n\tvar list = splitOnASCIIWhitespace(input);\n\treturn Object.keys(list.reduce(orderedSetReducer, {}))\n}\n\n/**\n * Uses `list.indexOf` to implement something like `Array.prototype.includes`,\n * which we can not rely on being available.\n *\n * @param {any[]} list\n * @returns {function(any): boolean}\n */\nfunction arrayIncludes (list) {\n\treturn function(element) {\n\t\treturn list && list.indexOf(element) !== -1;\n\t}\n}\n\nfunction copy(src,dest){\n\tfor(var p in src){\n\t\tif (Object.prototype.hasOwnProperty.call(src, p)) {\n\t\t\tdest[p] = src[p];\n\t\t}\n\t}\n}\n\n/**\n^\\w+\\.prototype\\.([_\\w]+)\\s*=\\s*((?:.*\\{\\s*?[\\r\\n][\\s\\S]*?^})|\\S.*?(?=[;\\r\\n]));?\n^\\w+\\.prototype\\.([_\\w]+)\\s*=\\s*(\\S.*?(?=[;\\r\\n]));?\n */\nfunction _extends(Class,Super){\n\tvar pt = Class.prototype;\n\tif(!(pt instanceof Super)){\n\t\tfunction t(){};\n\t\tt.prototype = Super.prototype;\n\t\tt = new t();\n\t\tcopy(pt,t);\n\t\tClass.prototype = pt = t;\n\t}\n\tif(pt.constructor != Class){\n\t\tif(typeof Class != 'function'){\n\t\t\tconsole.error(\"unknown Class:\"+Class)\n\t\t}\n\t\tpt.constructor = Class\n\t}\n}\n\n// Node Types\nvar NodeType = {}\nvar ELEMENT_NODE                = NodeType.ELEMENT_NODE                = 1;\nvar ATTRIBUTE_NODE              = NodeType.ATTRIBUTE_NODE              = 2;\nvar TEXT_NODE                   = NodeType.TEXT_NODE                   = 3;\nvar CDATA_SECTION_NODE          = NodeType.CDATA_SECTION_NODE          = 4;\nvar ENTITY_REFERENCE_NODE       = NodeType.ENTITY_REFERENCE_NODE       = 5;\nvar ENTITY_NODE                 = NodeType.ENTITY_NODE                 = 6;\nvar PROCESSING_INSTRUCTION_NODE = NodeType.PROCESSING_INSTRUCTION_NODE = 7;\nvar COMMENT_NODE                = NodeType.COMMENT_NODE                = 8;\nvar DOCUMENT_NODE               = NodeType.DOCUMENT_NODE               = 9;\nvar DOCUMENT_TYPE_NODE          = NodeType.DOCUMENT_TYPE_NODE          = 10;\nvar DOCUMENT_FRAGMENT_NODE      = NodeType.DOCUMENT_FRAGMENT_NODE      = 11;\nvar NOTATION_NODE               = NodeType.NOTATION_NODE               = 12;\n\n// ExceptionCode\nvar ExceptionCode = {}\nvar ExceptionMessage = {};\nvar INDEX_SIZE_ERR              = ExceptionCode.INDEX_SIZE_ERR              = ((ExceptionMessage[1]=\"Index size error\"),1);\nvar DOMSTRING_SIZE_ERR          = ExceptionCode.DOMSTRING_SIZE_ERR          = ((ExceptionMessage[2]=\"DOMString size error\"),2);\nvar HIERARCHY_REQUEST_ERR       = ExceptionCode.HIERARCHY_REQUEST_ERR       = ((ExceptionMessage[3]=\"Hierarchy request error\"),3);\nvar WRONG_DOCUMENT_ERR          = ExceptionCode.WRONG_DOCUMENT_ERR          = ((ExceptionMessage[4]=\"Wrong document\"),4);\nvar INVALID_CHARACTER_ERR       = ExceptionCode.INVALID_CHARACTER_ERR       = ((ExceptionMessage[5]=\"Invalid character\"),5);\nvar NO_DATA_ALLOWED_ERR         = ExceptionCode.NO_DATA_ALLOWED_ERR         = ((ExceptionMessage[6]=\"No data allowed\"),6);\nvar NO_MODIFICATION_ALLOWED_ERR = ExceptionCode.NO_MODIFICATION_ALLOWED_ERR = ((ExceptionMessage[7]=\"No modification allowed\"),7);\nvar NOT_FOUND_ERR               = ExceptionCode.NOT_FOUND_ERR               = ((ExceptionMessage[8]=\"Not found\"),8);\nvar NOT_SUPPORTED_ERR           = ExceptionCode.NOT_SUPPORTED_ERR           = ((ExceptionMessage[9]=\"Not supported\"),9);\nvar INUSE_ATTRIBUTE_ERR         = ExceptionCode.INUSE_ATTRIBUTE_ERR         = ((ExceptionMessage[10]=\"Attribute in use\"),10);\n//level2\nvar INVALID_STATE_ERR        \t= ExceptionCode.INVALID_STATE_ERR        \t= ((ExceptionMessage[11]=\"Invalid state\"),11);\nvar SYNTAX_ERR               \t= ExceptionCode.SYNTAX_ERR               \t= ((ExceptionMessage[12]=\"Syntax error\"),12);\nvar INVALID_MODIFICATION_ERR \t= ExceptionCode.INVALID_MODIFICATION_ERR \t= ((ExceptionMessage[13]=\"Invalid modification\"),13);\nvar NAMESPACE_ERR            \t= ExceptionCode.NAMESPACE_ERR           \t= ((ExceptionMessage[14]=\"Invalid namespace\"),14);\nvar INVALID_ACCESS_ERR       \t= ExceptionCode.INVALID_ACCESS_ERR      \t= ((ExceptionMessage[15]=\"Invalid access\"),15);\n\n/**\n * DOM Level 2\n * Object DOMException\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/ecma-script-binding.html\n * @see http://www.w3.org/TR/REC-DOM-Level-1/ecma-script-language-binding.html\n */\nfunction DOMException(code, message) {\n\tif(message instanceof Error){\n\t\tvar error = message;\n\t}else{\n\t\terror = this;\n\t\tError.call(this, ExceptionMessage[code]);\n\t\tthis.message = ExceptionMessage[code];\n\t\tif(Error.captureStackTrace) Error.captureStackTrace(this, DOMException);\n\t}\n\terror.code = code;\n\tif(message) this.message = this.message + \": \" + message;\n\treturn error;\n};\nDOMException.prototype = Error.prototype;\ncopy(ExceptionCode,DOMException)\n\n/**\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-536297177\n * The NodeList interface provides the abstraction of an ordered collection of nodes, without defining or constraining how this collection is implemented. NodeList objects in the DOM are live.\n * The items in the NodeList are accessible via an integral index, starting from 0.\n */\nfunction NodeList() {\n};\nNodeList.prototype = {\n\t/**\n\t * The number of nodes in the list. The range of valid child node indices is 0 to length-1 inclusive.\n\t * @standard level1\n\t */\n\tlength:0,\n\t/**\n\t * Returns the indexth item in the collection. If index is greater than or equal to the number of nodes in the list, this returns null.\n\t * @standard level1\n\t * @param index  unsigned long\n\t *   Index into the collection.\n\t * @return Node\n\t * \tThe node at the indexth position in the NodeList, or null if that is not a valid index.\n\t */\n\titem: function(index) {\n\t\treturn this[index] || null;\n\t},\n\ttoString:function(isHTML,nodeFilter){\n\t\tfor(var buf = [], i = 0;i<this.length;i++){\n\t\t\tserializeToString(this[i],buf,isHTML,nodeFilter);\n\t\t}\n\t\treturn buf.join('');\n\t},\n\t/**\n\t * @private\n\t * @param {function (Node):boolean} predicate\n\t * @returns {Node[]}\n\t */\n\tfilter: function (predicate) {\n\t\treturn Array.prototype.filter.call(this, predicate);\n\t},\n\t/**\n\t * @private\n\t * @param {Node} item\n\t * @returns {number}\n\t */\n\tindexOf: function (item) {\n\t\treturn Array.prototype.indexOf.call(this, item);\n\t},\n};\n\nfunction LiveNodeList(node,refresh){\n\tthis._node = node;\n\tthis._refresh = refresh\n\t_updateLiveList(this);\n}\nfunction _updateLiveList(list){\n\tvar inc = list._node._inc || list._node.ownerDocument._inc;\n\tif(list._inc != inc){\n\t\tvar ls = list._refresh(list._node);\n\t\t//console.log(ls.length)\n\t\t__set__(list,'length',ls.length);\n\t\tcopy(ls,list);\n\t\tlist._inc = inc;\n\t}\n}\nLiveNodeList.prototype.item = function(i){\n\t_updateLiveList(this);\n\treturn this[i];\n}\n\n_extends(LiveNodeList,NodeList);\n\n/**\n * Objects implementing the NamedNodeMap interface are used\n * to represent collections of nodes that can be accessed by name.\n * Note that NamedNodeMap does not inherit from NodeList;\n * NamedNodeMaps are not maintained in any particular order.\n * Objects contained in an object implementing NamedNodeMap may also be accessed by an ordinal index,\n * but this is simply to allow convenient enumeration of the contents of a NamedNodeMap,\n * and does not imply that the DOM specifies an order to these Nodes.\n * NamedNodeMap objects in the DOM are live.\n * used for attributes or DocumentType entities\n */\nfunction NamedNodeMap() {\n};\n\nfunction _findNodeIndex(list,node){\n\tvar i = list.length;\n\twhile(i--){\n\t\tif(list[i] === node){return i}\n\t}\n}\n\nfunction _addNamedNode(el,list,newAttr,oldAttr){\n\tif(oldAttr){\n\t\tlist[_findNodeIndex(list,oldAttr)] = newAttr;\n\t}else{\n\t\tlist[list.length++] = newAttr;\n\t}\n\tif(el){\n\t\tnewAttr.ownerElement = el;\n\t\tvar doc = el.ownerDocument;\n\t\tif(doc){\n\t\t\toldAttr && _onRemoveAttribute(doc,el,oldAttr);\n\t\t\t_onAddAttribute(doc,el,newAttr);\n\t\t}\n\t}\n}\nfunction _removeNamedNode(el,list,attr){\n\t//console.log('remove attr:'+attr)\n\tvar i = _findNodeIndex(list,attr);\n\tif(i>=0){\n\t\tvar lastIndex = list.length-1\n\t\twhile(i<lastIndex){\n\t\t\tlist[i] = list[++i]\n\t\t}\n\t\tlist.length = lastIndex;\n\t\tif(el){\n\t\t\tvar doc = el.ownerDocument;\n\t\t\tif(doc){\n\t\t\t\t_onRemoveAttribute(doc,el,attr);\n\t\t\t\tattr.ownerElement = null;\n\t\t\t}\n\t\t}\n\t}else{\n\t\tthrow new DOMException(NOT_FOUND_ERR,new Error(el.tagName+'@'+attr))\n\t}\n}\nNamedNodeMap.prototype = {\n\tlength:0,\n\titem:NodeList.prototype.item,\n\tgetNamedItem: function(key) {\n//\t\tif(key.indexOf(':')>0 || key == 'xmlns'){\n//\t\t\treturn null;\n//\t\t}\n\t\t//console.log()\n\t\tvar i = this.length;\n\t\twhile(i--){\n\t\t\tvar attr = this[i];\n\t\t\t//console.log(attr.nodeName,key)\n\t\t\tif(attr.nodeName == key){\n\t\t\t\treturn attr;\n\t\t\t}\n\t\t}\n\t},\n\tsetNamedItem: function(attr) {\n\t\tvar el = attr.ownerElement;\n\t\tif(el && el!=this._ownerElement){\n\t\t\tthrow new DOMException(INUSE_ATTRIBUTE_ERR);\n\t\t}\n\t\tvar oldAttr = this.getNamedItem(attr.nodeName);\n\t\t_addNamedNode(this._ownerElement,this,attr,oldAttr);\n\t\treturn oldAttr;\n\t},\n\t/* returns Node */\n\tsetNamedItemNS: function(attr) {// raises: WRONG_DOCUMENT_ERR,NO_MODIFICATION_ALLOWED_ERR,INUSE_ATTRIBUTE_ERR\n\t\tvar el = attr.ownerElement, oldAttr;\n\t\tif(el && el!=this._ownerElement){\n\t\t\tthrow new DOMException(INUSE_ATTRIBUTE_ERR);\n\t\t}\n\t\toldAttr = this.getNamedItemNS(attr.namespaceURI,attr.localName);\n\t\t_addNamedNode(this._ownerElement,this,attr,oldAttr);\n\t\treturn oldAttr;\n\t},\n\n\t/* returns Node */\n\tremoveNamedItem: function(key) {\n\t\tvar attr = this.getNamedItem(key);\n\t\t_removeNamedNode(this._ownerElement,this,attr);\n\t\treturn attr;\n\n\n\t},// raises: NOT_FOUND_ERR,NO_MODIFICATION_ALLOWED_ERR\n\n\t//for level2\n\tremoveNamedItemNS:function(namespaceURI,localName){\n\t\tvar attr = this.getNamedItemNS(namespaceURI,localName);\n\t\t_removeNamedNode(this._ownerElement,this,attr);\n\t\treturn attr;\n\t},\n\tgetNamedItemNS: function(namespaceURI, localName) {\n\t\tvar i = this.length;\n\t\twhile(i--){\n\t\t\tvar node = this[i];\n\t\t\tif(node.localName == localName && node.namespaceURI == namespaceURI){\n\t\t\t\treturn node;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n};\n\n/**\n * The DOMImplementation interface represents an object providing methods\n * which are not dependent on any particular document.\n * Such an object is returned by the `Document.implementation` property.\n *\n * __The individual methods describe the differences compared to the specs.__\n *\n * @constructor\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation MDN\n * @see https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-102161490 DOM Level 1 Core (Initial)\n * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-102161490 DOM Level 2 Core\n * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-102161490 DOM Level 3 Core\n * @see https://dom.spec.whatwg.org/#domimplementation DOM Living Standard\n */\nfunction DOMImplementation() {\n}\n\nDOMImplementation.prototype = {\n\t/**\n\t * The DOMImplementation.hasFeature() method returns a Boolean flag indicating if a given feature is supported.\n\t * The different implementations fairly diverged in what kind of features were reported.\n\t * The latest version of the spec settled to force this method to always return true, where the functionality was accurate and in use.\n\t *\n\t * @deprecated It is deprecated and modern browsers return true in all cases.\n\t *\n\t * @param {string} feature\n\t * @param {string} [version]\n\t * @returns {boolean} always true\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/hasFeature MDN\n\t * @see https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-5CED94D7 DOM Level 1 Core\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-hasfeature DOM Living Standard\n\t */\n\thasFeature: function(feature, version) {\n\t\t\treturn true;\n\t},\n\t/**\n\t * Creates an XML Document object of the specified type with its document element.\n\t *\n\t * __It behaves slightly different from the description in the living standard__:\n\t * - There is no interface/class `XMLDocument`, it returns a `Document` instance.\n\t * - `contentType`, `encoding`, `mode`, `origin`, `url` fields are currently not declared.\n\t * - this implementation is not validating names or qualified names\n\t *   (when parsing XML strings, the SAX parser takes care of that)\n\t *\n\t * @param {string|null} namespaceURI\n\t * @param {string} qualifiedName\n\t * @param {DocumentType=null} doctype\n\t * @returns {Document}\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocument MDN\n\t * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocument DOM Level 2 Core (initial)\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocument  DOM Level 2 Core\n\t *\n\t * @see https://dom.spec.whatwg.org/#validate-and-extract DOM: Validate and extract\n\t * @see https://www.w3.org/TR/xml/#NT-NameStartChar XML Spec: Names\n\t * @see https://www.w3.org/TR/xml-names/#ns-qualnames XML Namespaces: Qualified names\n\t */\n\tcreateDocument: function(namespaceURI,  qualifiedName, doctype){\n\t\tvar doc = new Document();\n\t\tdoc.implementation = this;\n\t\tdoc.childNodes = new NodeList();\n\t\tdoc.doctype = doctype || null;\n\t\tif (doctype){\n\t\t\tdoc.appendChild(doctype);\n\t\t}\n\t\tif (qualifiedName){\n\t\t\tvar root = doc.createElementNS(namespaceURI, qualifiedName);\n\t\t\tdoc.appendChild(root);\n\t\t}\n\t\treturn doc;\n\t},\n\t/**\n\t * Returns a doctype, with the given `qualifiedName`, `publicId`, and `systemId`.\n\t *\n\t * __This behavior is slightly different from the in the specs__:\n\t * - this implementation is not validating names or qualified names\n\t *   (when parsing XML strings, the SAX parser takes care of that)\n\t *\n\t * @param {string} qualifiedName\n\t * @param {string} [publicId]\n\t * @param {string} [systemId]\n\t * @returns {DocumentType} which can either be used with `DOMImplementation.createDocument` upon document creation\n\t * \t\t\t\t  or can be put into the document via methods like `Node.insertBefore()` or `Node.replaceChild()`\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation/createDocumentType MDN\n\t * @see https://www.w3.org/TR/DOM-Level-2-Core/core.html#Level-2-Core-DOM-createDocType DOM Level 2 Core\n\t * @see https://dom.spec.whatwg.org/#dom-domimplementation-createdocumenttype DOM Living Standard\n\t *\n\t * @see https://dom.spec.whatwg.org/#validate-and-extract DOM: Validate and extract\n\t * @see https://www.w3.org/TR/xml/#NT-NameStartChar XML Spec: Names\n\t * @see https://www.w3.org/TR/xml-names/#ns-qualnames XML Namespaces: Qualified names\n\t */\n\tcreateDocumentType: function(qualifiedName, publicId, systemId){\n\t\tvar node = new DocumentType();\n\t\tnode.name = qualifiedName;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.publicId = publicId || '';\n\t\tnode.systemId = systemId || '';\n\n\t\treturn node;\n\t}\n};\n\n\n/**\n * @see http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113/core.html#ID-1950641247\n */\n\nfunction Node() {\n};\n\nNode.prototype = {\n\tfirstChild : null,\n\tlastChild : null,\n\tpreviousSibling : null,\n\tnextSibling : null,\n\tattributes : null,\n\tparentNode : null,\n\tchildNodes : null,\n\townerDocument : null,\n\tnodeValue : null,\n\tnamespaceURI : null,\n\tprefix : null,\n\tlocalName : null,\n\t// Modified in DOM Level 2:\n\tinsertBefore:function(newChild, refChild){//raises\n\t\treturn _insertBefore(this,newChild,refChild);\n\t},\n\treplaceChild:function(newChild, oldChild){//raises\n\t\t_insertBefore(this, newChild,oldChild, assertPreReplacementValidityInDocument);\n\t\tif(oldChild){\n\t\t\tthis.removeChild(oldChild);\n\t\t}\n\t},\n\tremoveChild:function(oldChild){\n\t\treturn _removeChild(this,oldChild);\n\t},\n\tappendChild:function(newChild){\n\t\treturn this.insertBefore(newChild,null);\n\t},\n\thasChildNodes:function(){\n\t\treturn this.firstChild != null;\n\t},\n\tcloneNode:function(deep){\n\t\treturn cloneNode(this.ownerDocument||this,this,deep);\n\t},\n\t// Modified in DOM Level 2:\n\tnormalize:function(){\n\t\tvar child = this.firstChild;\n\t\twhile(child){\n\t\t\tvar next = child.nextSibling;\n\t\t\tif(next && next.nodeType == TEXT_NODE && child.nodeType == TEXT_NODE){\n\t\t\t\tthis.removeChild(next);\n\t\t\t\tchild.appendData(next.data);\n\t\t\t}else{\n\t\t\t\tchild.normalize();\n\t\t\t\tchild = next;\n\t\t\t}\n\t\t}\n\t},\n  \t// Introduced in DOM Level 2:\n\tisSupported:function(feature, version){\n\t\treturn this.ownerDocument.implementation.hasFeature(feature,version);\n\t},\n    // Introduced in DOM Level 2:\n    hasAttributes:function(){\n    \treturn this.attributes.length>0;\n    },\n\t/**\n\t * Look up the prefix associated to the given namespace URI, starting from this node.\n\t * **The default namespace declarations are ignored by this method.**\n\t * See Namespace Prefix Lookup for details on the algorithm used by this method.\n\t *\n\t * _Note: The implementation seems to be incomplete when compared to the algorithm described in the specs._\n\t *\n\t * @param {string | null} namespaceURI\n\t * @returns {string | null}\n\t * @see https://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-lookupNamespacePrefix\n\t * @see https://www.w3.org/TR/DOM-Level-3-Core/namespaces-algorithms.html#lookupNamespacePrefixAlgo\n\t * @see https://dom.spec.whatwg.org/#dom-node-lookupprefix\n\t * @see https://github.com/xmldom/xmldom/issues/322\n\t */\n    lookupPrefix:function(namespaceURI){\n    \tvar el = this;\n    \twhile(el){\n    \t\tvar map = el._nsMap;\n    \t\t//console.dir(map)\n    \t\tif(map){\n    \t\t\tfor(var n in map){\n\t\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(map, n) && map[n] === namespaceURI) {\n\t\t\t\t\t\t\treturn n;\n\t\t\t\t\t\t}\n    \t\t\t}\n    \t\t}\n    \t\tel = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode;\n    \t}\n    \treturn null;\n    },\n    // Introduced in DOM Level 3:\n    lookupNamespaceURI:function(prefix){\n    \tvar el = this;\n    \twhile(el){\n    \t\tvar map = el._nsMap;\n    \t\t//console.dir(map)\n    \t\tif(map){\n    \t\t\tif(Object.prototype.hasOwnProperty.call(map, prefix)){\n    \t\t\t\treturn map[prefix] ;\n    \t\t\t}\n    \t\t}\n    \t\tel = el.nodeType == ATTRIBUTE_NODE?el.ownerDocument : el.parentNode;\n    \t}\n    \treturn null;\n    },\n    // Introduced in DOM Level 3:\n    isDefaultNamespace:function(namespaceURI){\n    \tvar prefix = this.lookupPrefix(namespaceURI);\n    \treturn prefix == null;\n    }\n};\n\n\nfunction _xmlEncoder(c){\n\treturn c == '<' && '&lt;' ||\n         c == '>' && '&gt;' ||\n         c == '&' && '&amp;' ||\n         c == '\"' && '&quot;' ||\n         '&#'+c.charCodeAt()+';'\n}\n\n\ncopy(NodeType,Node);\ncopy(NodeType,Node.prototype);\n\n/**\n * @param callback return true for continue,false for break\n * @return boolean true: break visit;\n */\nfunction _visitNode(node,callback){\n\tif(callback(node)){\n\t\treturn true;\n\t}\n\tif(node = node.firstChild){\n\t\tdo{\n\t\t\tif(_visitNode(node,callback)){return true}\n        }while(node=node.nextSibling)\n    }\n}\n\n\n\nfunction Document(){\n\tthis.ownerDocument = this;\n}\n\nfunction _onAddAttribute(doc,el,newAttr){\n\tdoc && doc._inc++;\n\tvar ns = newAttr.namespaceURI ;\n\tif(ns === NAMESPACE.XMLNS){\n\t\t//update namespace\n\t\tel._nsMap[newAttr.prefix?newAttr.localName:''] = newAttr.value\n\t}\n}\n\nfunction _onRemoveAttribute(doc,el,newAttr,remove){\n\tdoc && doc._inc++;\n\tvar ns = newAttr.namespaceURI ;\n\tif(ns === NAMESPACE.XMLNS){\n\t\t//update namespace\n\t\tdelete el._nsMap[newAttr.prefix?newAttr.localName:'']\n\t}\n}\n\n/**\n * Updates `el.childNodes`, updating the indexed items and it's `length`.\n * Passing `newChild` means it will be appended.\n * Otherwise it's assumed that an item has been removed,\n * and `el.firstNode` and it's `.nextSibling` are used\n * to walk the current list of child nodes.\n *\n * @param {Document} doc\n * @param {Node} el\n * @param {Node} [newChild]\n * @private\n */\nfunction _onUpdateChild (doc, el, newChild) {\n\tif(doc && doc._inc){\n\t\tdoc._inc++;\n\t\t//update childNodes\n\t\tvar cs = el.childNodes;\n\t\tif (newChild) {\n\t\t\tcs[cs.length++] = newChild;\n\t\t} else {\n\t\t\tvar child = el.firstChild;\n\t\t\tvar i = 0;\n\t\t\twhile (child) {\n\t\t\t\tcs[i++] = child;\n\t\t\t\tchild = child.nextSibling;\n\t\t\t}\n\t\t\tcs.length = i;\n\t\t\tdelete cs[cs.length];\n\t\t}\n\t}\n}\n\n/**\n * Removes the connections between `parentNode` and `child`\n * and any existing `child.previousSibling` or `child.nextSibling`.\n *\n * @see https://github.com/xmldom/xmldom/issues/135\n * @see https://github.com/xmldom/xmldom/issues/145\n *\n * @param {Node} parentNode\n * @param {Node} child\n * @returns {Node} the child that was removed.\n * @private\n */\nfunction _removeChild (parentNode, child) {\n\tvar previous = child.previousSibling;\n\tvar next = child.nextSibling;\n\tif (previous) {\n\t\tprevious.nextSibling = next;\n\t} else {\n\t\tparentNode.firstChild = next;\n\t}\n\tif (next) {\n\t\tnext.previousSibling = previous;\n\t} else {\n\t\tparentNode.lastChild = previous;\n\t}\n\tchild.parentNode = null;\n\tchild.previousSibling = null;\n\tchild.nextSibling = null;\n\t_onUpdateChild(parentNode.ownerDocument, parentNode);\n\treturn child;\n}\n\n/**\n * Returns `true` if `node` can be a parent for insertion.\n * @param {Node} node\n * @returns {boolean}\n */\nfunction hasValidParentNodeType(node) {\n\treturn (\n\t\tnode &&\n\t\t(node.nodeType === Node.DOCUMENT_NODE || node.nodeType === Node.DOCUMENT_FRAGMENT_NODE || node.nodeType === Node.ELEMENT_NODE)\n\t);\n}\n\n/**\n * Returns `true` if `node` can be inserted according to it's `nodeType`.\n * @param {Node} node\n * @returns {boolean}\n */\nfunction hasInsertableNodeType(node) {\n\treturn (\n\t\tnode &&\n\t\t(isElementNode(node) ||\n\t\t\tisTextNode(node) ||\n\t\t\tisDocTypeNode(node) ||\n\t\t\tnode.nodeType === Node.DOCUMENT_FRAGMENT_NODE ||\n\t\t\tnode.nodeType === Node.COMMENT_NODE ||\n\t\t\tnode.nodeType === Node.PROCESSING_INSTRUCTION_NODE)\n\t);\n}\n\n/**\n * Returns true if `node` is a DOCTYPE node\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isDocTypeNode(node) {\n\treturn node && node.nodeType === Node.DOCUMENT_TYPE_NODE;\n}\n\n/**\n * Returns true if the node is an element\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isElementNode(node) {\n\treturn node && node.nodeType === Node.ELEMENT_NODE;\n}\n/**\n * Returns true if `node` is a text node\n * @param {Node} node\n * @returns {boolean}\n */\nfunction isTextNode(node) {\n\treturn node && node.nodeType === Node.TEXT_NODE;\n}\n\n/**\n * Check if en element node can be inserted before `child`, or at the end if child is falsy,\n * according to the presence and position of a doctype node on the same level.\n *\n * @param {Document} doc The document node\n * @param {Node} child the node that would become the nextSibling if the element would be inserted\n * @returns {boolean} `true` if an element can be inserted before child\n * @private\n * https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n */\nfunction isElementInsertionPossible(doc, child) {\n\tvar parentChildNodes = doc.childNodes || [];\n\tif (find(parentChildNodes, isElementNode) || isDocTypeNode(child)) {\n\t\treturn false;\n\t}\n\tvar docTypeNode = find(parentChildNodes, isDocTypeNode);\n\treturn !(child && docTypeNode && parentChildNodes.indexOf(docTypeNode) > parentChildNodes.indexOf(child));\n}\n\n/**\n * Check if en element node can be inserted before `child`, or at the end if child is falsy,\n * according to the presence and position of a doctype node on the same level.\n *\n * @param {Node} doc The document node\n * @param {Node} child the node that would become the nextSibling if the element would be inserted\n * @returns {boolean} `true` if an element can be inserted before child\n * @private\n * https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n */\nfunction isElementReplacementPossible(doc, child) {\n\tvar parentChildNodes = doc.childNodes || [];\n\n\tfunction hasElementChildThatIsNotChild(node) {\n\t\treturn isElementNode(node) && node !== child;\n\t}\n\n\tif (find(parentChildNodes, hasElementChildThatIsNotChild)) {\n\t\treturn false;\n\t}\n\tvar docTypeNode = find(parentChildNodes, isDocTypeNode);\n\treturn !(child && docTypeNode && parentChildNodes.indexOf(docTypeNode) > parentChildNodes.indexOf(child));\n}\n\n/**\n * @private\n * Steps 1-5 of the checks before inserting and before replacing a child are the same.\n *\n * @param {Node} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node=} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreInsertionValidity1to5(parent, node, child) {\n\t// 1. If `parent` is not a Document, DocumentFragment, or Element node, then throw a \"HierarchyRequestError\" DOMException.\n\tif (!hasValidParentNodeType(parent)) {\n\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Unexpected parent node type ' + parent.nodeType);\n\t}\n\t// 2. If `node` is a host-including inclusive ancestor of `parent`, then throw a \"HierarchyRequestError\" DOMException.\n\t// not implemented!\n\t// 3. If `child` is non-null and its parent is not `parent`, then throw a \"NotFoundError\" DOMException.\n\tif (child && child.parentNode !== parent) {\n\t\tthrow new DOMException(NOT_FOUND_ERR, 'child not in parent');\n\t}\n\tif (\n\t\t// 4. If `node` is not a DocumentFragment, DocumentType, Element, or CharacterData node, then throw a \"HierarchyRequestError\" DOMException.\n\t\t!hasInsertableNodeType(node) ||\n\t\t// 5. If either `node` is a Text node and `parent` is a document,\n\t\t// the sax parser currently adds top level text nodes, this will be fixed in 0.9.0\n\t\t// || (node.nodeType === Node.TEXT_NODE && parent.nodeType === Node.DOCUMENT_NODE)\n\t\t// or `node` is a doctype and `parent` is not a document, then throw a \"HierarchyRequestError\" DOMException.\n\t\t(isDocTypeNode(node) && parent.nodeType !== Node.DOCUMENT_NODE)\n\t) {\n\t\tthrow new DOMException(\n\t\t\tHIERARCHY_REQUEST_ERR,\n\t\t\t'Unexpected node type ' + node.nodeType + ' for parent node type ' + parent.nodeType\n\t\t);\n\t}\n}\n\n/**\n * @private\n * Step 6 of the checks before inserting and before replacing a child are different.\n *\n * @param {Document} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node | undefined} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreInsertionValidityInDocument(parent, node, child) {\n\tvar parentChildNodes = parent.childNodes || [];\n\tvar nodeChildNodes = node.childNodes || [];\n\n\t// DocumentFragment\n\tif (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n\t\tvar nodeChildElements = nodeChildNodes.filter(isElementNode);\n\t\t// If node has more than one element child or has a Text node child.\n\t\tif (nodeChildElements.length > 1 || find(nodeChildNodes, isTextNode)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'More than one element or text in fragment');\n\t\t}\n\t\t// Otherwise, if `node` has one element child and either `parent` has an element child,\n\t\t// `child` is a doctype, or `child` is non-null and a doctype is following `child`.\n\t\tif (nodeChildElements.length === 1 && !isElementInsertionPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Element in fragment can not be inserted before doctype');\n\t\t}\n\t}\n\t// Element\n\tif (isElementNode(node)) {\n\t\t// `parent` has an element child, `child` is a doctype,\n\t\t// or `child` is non-null and a doctype is following `child`.\n\t\tif (!isElementInsertionPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one element can be added and only after doctype');\n\t\t}\n\t}\n\t// DocumentType\n\tif (isDocTypeNode(node)) {\n\t\t// `parent` has a doctype child,\n\t\tif (find(parentChildNodes, isDocTypeNode)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one doctype is allowed');\n\t\t}\n\t\tvar parentElementChild = find(parentChildNodes, isElementNode);\n\t\t// `child` is non-null and an element is preceding `child`,\n\t\tif (child && parentChildNodes.indexOf(parentElementChild) < parentChildNodes.indexOf(child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can only be inserted before an element');\n\t\t}\n\t\t// or `child` is null and `parent` has an element child.\n\t\tif (!child && parentElementChild) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can not be appended since element is present');\n\t\t}\n\t}\n}\n\n/**\n * @private\n * Step 6 of the checks before inserting and before replacing a child are different.\n *\n * @param {Document} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node | undefined} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n * @see https://dom.spec.whatwg.org/#concept-node-replace\n */\nfunction assertPreReplacementValidityInDocument(parent, node, child) {\n\tvar parentChildNodes = parent.childNodes || [];\n\tvar nodeChildNodes = node.childNodes || [];\n\n\t// DocumentFragment\n\tif (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {\n\t\tvar nodeChildElements = nodeChildNodes.filter(isElementNode);\n\t\t// If `node` has more than one element child or has a Text node child.\n\t\tif (nodeChildElements.length > 1 || find(nodeChildNodes, isTextNode)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'More than one element or text in fragment');\n\t\t}\n\t\t// Otherwise, if `node` has one element child and either `parent` has an element child that is not `child` or a doctype is following `child`.\n\t\tif (nodeChildElements.length === 1 && !isElementReplacementPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Element in fragment can not be inserted before doctype');\n\t\t}\n\t}\n\t// Element\n\tif (isElementNode(node)) {\n\t\t// `parent` has an element child that is not `child` or a doctype is following `child`.\n\t\tif (!isElementReplacementPossible(parent, child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one element can be added and only after doctype');\n\t\t}\n\t}\n\t// DocumentType\n\tif (isDocTypeNode(node)) {\n\t\tfunction hasDoctypeChildThatIsNotChild(node) {\n\t\t\treturn isDocTypeNode(node) && node !== child;\n\t\t}\n\n\t\t// `parent` has a doctype child that is not `child`,\n\t\tif (find(parentChildNodes, hasDoctypeChildThatIsNotChild)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Only one doctype is allowed');\n\t\t}\n\t\tvar parentElementChild = find(parentChildNodes, isElementNode);\n\t\t// or an element is preceding `child`.\n\t\tif (child && parentChildNodes.indexOf(parentElementChild) < parentChildNodes.indexOf(child)) {\n\t\t\tthrow new DOMException(HIERARCHY_REQUEST_ERR, 'Doctype can only be inserted before an element');\n\t\t}\n\t}\n}\n\n/**\n * @private\n * @param {Node} parent the parent node to insert `node` into\n * @param {Node} node the node to insert\n * @param {Node=} child the node that should become the `nextSibling` of `node`\n * @returns {Node}\n * @throws DOMException for several node combinations that would create a DOM that is not well-formed.\n * @throws DOMException if `child` is provided but is not a child of `parent`.\n * @see https://dom.spec.whatwg.org/#concept-node-ensure-pre-insertion-validity\n */\nfunction _insertBefore(parent, node, child, _inDocumentAssertion) {\n\t// To ensure pre-insertion validity of a node into a parent before a child, run these steps:\n\tassertPreInsertionValidity1to5(parent, node, child);\n\n\t// If parent is a document, and any of the statements below, switched on the interface node implements,\n\t// are true, then throw a \"HierarchyRequestError\" DOMException.\n\tif (parent.nodeType === Node.DOCUMENT_NODE) {\n\t\t(_inDocumentAssertion || assertPreInsertionValidityInDocument)(parent, node, child);\n\t}\n\n\tvar cp = node.parentNode;\n\tif(cp){\n\t\tcp.removeChild(node);//remove and update\n\t}\n\tif(node.nodeType === DOCUMENT_FRAGMENT_NODE){\n\t\tvar newFirst = node.firstChild;\n\t\tif (newFirst == null) {\n\t\t\treturn node;\n\t\t}\n\t\tvar newLast = node.lastChild;\n\t}else{\n\t\tnewFirst = newLast = node;\n\t}\n\tvar pre = child ? child.previousSibling : parent.lastChild;\n\n\tnewFirst.previousSibling = pre;\n\tnewLast.nextSibling = child;\n\n\n\tif(pre){\n\t\tpre.nextSibling = newFirst;\n\t}else{\n\t\tparent.firstChild = newFirst;\n\t}\n\tif(child == null){\n\t\tparent.lastChild = newLast;\n\t}else{\n\t\tchild.previousSibling = newLast;\n\t}\n\tdo{\n\t\tnewFirst.parentNode = parent;\n\t}while(newFirst !== newLast && (newFirst= newFirst.nextSibling))\n\t_onUpdateChild(parent.ownerDocument||parent, parent);\n\t//console.log(parent.lastChild.nextSibling == null)\n\tif (node.nodeType == DOCUMENT_FRAGMENT_NODE) {\n\t\tnode.firstChild = node.lastChild = null;\n\t}\n\treturn node;\n}\n\n/**\n * Appends `newChild` to `parentNode`.\n * If `newChild` is already connected to a `parentNode` it is first removed from it.\n *\n * @see https://github.com/xmldom/xmldom/issues/135\n * @see https://github.com/xmldom/xmldom/issues/145\n * @param {Node} parentNode\n * @param {Node} newChild\n * @returns {Node}\n * @private\n */\nfunction _appendSingleChild (parentNode, newChild) {\n\tif (newChild.parentNode) {\n\t\tnewChild.parentNode.removeChild(newChild);\n\t}\n\tnewChild.parentNode = parentNode;\n\tnewChild.previousSibling = parentNode.lastChild;\n\tnewChild.nextSibling = null;\n\tif (newChild.previousSibling) {\n\t\tnewChild.previousSibling.nextSibling = newChild;\n\t} else {\n\t\tparentNode.firstChild = newChild;\n\t}\n\tparentNode.lastChild = newChild;\n\t_onUpdateChild(parentNode.ownerDocument, parentNode, newChild);\n\treturn newChild;\n}\n\nDocument.prototype = {\n\t//implementation : null,\n\tnodeName :  '#document',\n\tnodeType :  DOCUMENT_NODE,\n\t/**\n\t * The DocumentType node of the document.\n\t *\n\t * @readonly\n\t * @type DocumentType\n\t */\n\tdoctype :  null,\n\tdocumentElement :  null,\n\t_inc : 1,\n\n\tinsertBefore :  function(newChild, refChild){//raises\n\t\tif(newChild.nodeType == DOCUMENT_FRAGMENT_NODE){\n\t\t\tvar child = newChild.firstChild;\n\t\t\twhile(child){\n\t\t\t\tvar next = child.nextSibling;\n\t\t\t\tthis.insertBefore(child,refChild);\n\t\t\t\tchild = next;\n\t\t\t}\n\t\t\treturn newChild;\n\t\t}\n\t\t_insertBefore(this, newChild, refChild);\n\t\tnewChild.ownerDocument = this;\n\t\tif (this.documentElement === null && newChild.nodeType === ELEMENT_NODE) {\n\t\t\tthis.documentElement = newChild;\n\t\t}\n\n\t\treturn newChild;\n\t},\n\tremoveChild :  function(oldChild){\n\t\tif(this.documentElement == oldChild){\n\t\t\tthis.documentElement = null;\n\t\t}\n\t\treturn _removeChild(this,oldChild);\n\t},\n\treplaceChild: function (newChild, oldChild) {\n\t\t//raises\n\t\t_insertBefore(this, newChild, oldChild, assertPreReplacementValidityInDocument);\n\t\tnewChild.ownerDocument = this;\n\t\tif (oldChild) {\n\t\t\tthis.removeChild(oldChild);\n\t\t}\n\t\tif (isElementNode(newChild)) {\n\t\t\tthis.documentElement = newChild;\n\t\t}\n\t},\n\t// Introduced in DOM Level 2:\n\timportNode : function(importedNode,deep){\n\t\treturn importNode(this,importedNode,deep);\n\t},\n\t// Introduced in DOM Level 2:\n\tgetElementById :\tfunction(id){\n\t\tvar rtv = null;\n\t\t_visitNode(this.documentElement,function(node){\n\t\t\tif(node.nodeType == ELEMENT_NODE){\n\t\t\t\tif(node.getAttribute('id') == id){\n\t\t\t\t\trtv = node;\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\treturn rtv;\n\t},\n\n\t/**\n\t * The `getElementsByClassName` method of `Document` interface returns an array-like object\n\t * of all child elements which have **all** of the given class name(s).\n\t *\n\t * Returns an empty list if `classeNames` is an empty string or only contains HTML white space characters.\n\t *\n\t *\n\t * Warning: This is a live LiveNodeList.\n\t * Changes in the DOM will reflect in the array as the changes occur.\n\t * If an element selected by this array no longer qualifies for the selector,\n\t * it will automatically be removed. Be aware of this for iteration purposes.\n\t *\n\t * @param {string} classNames is a string representing the class name(s) to match; multiple class names are separated by (ASCII-)whitespace\n\t *\n\t * @see https://developer.mozilla.org/en-US/docs/Web/API/Document/getElementsByClassName\n\t * @see https://dom.spec.whatwg.org/#concept-getelementsbyclassname\n\t */\n\tgetElementsByClassName: function(classNames) {\n\t\tvar classNamesSet = toOrderedSet(classNames)\n\t\treturn new LiveNodeList(this, function(base) {\n\t\t\tvar ls = [];\n\t\t\tif (classNamesSet.length > 0) {\n\t\t\t\t_visitNode(base.documentElement, function(node) {\n\t\t\t\t\tif(node !== base && node.nodeType === ELEMENT_NODE) {\n\t\t\t\t\t\tvar nodeClassNames = node.getAttribute('class')\n\t\t\t\t\t\t// can be null if the attribute does not exist\n\t\t\t\t\t\tif (nodeClassNames) {\n\t\t\t\t\t\t\t// before splitting and iterating just compare them for the most common case\n\t\t\t\t\t\t\tvar matches = classNames === nodeClassNames;\n\t\t\t\t\t\t\tif (!matches) {\n\t\t\t\t\t\t\t\tvar nodeClassNamesSet = toOrderedSet(nodeClassNames)\n\t\t\t\t\t\t\t\tmatches = classNamesSet.every(arrayIncludes(nodeClassNamesSet))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif(matches) {\n\t\t\t\t\t\t\t\tls.push(node);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn ls;\n\t\t});\n\t},\n\n\t//document factory method:\n\tcreateElement :\tfunction(tagName){\n\t\tvar node = new Element();\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = tagName;\n\t\tnode.tagName = tagName;\n\t\tnode.localName = tagName;\n\t\tnode.childNodes = new NodeList();\n\t\tvar attrs\t= node.attributes = new NamedNodeMap();\n\t\tattrs._ownerElement = node;\n\t\treturn node;\n\t},\n\tcreateDocumentFragment :\tfunction(){\n\t\tvar node = new DocumentFragment();\n\t\tnode.ownerDocument = this;\n\t\tnode.childNodes = new NodeList();\n\t\treturn node;\n\t},\n\tcreateTextNode :\tfunction(data){\n\t\tvar node = new Text();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateComment :\tfunction(data){\n\t\tvar node = new Comment();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateCDATASection :\tfunction(data){\n\t\tvar node = new CDATASection();\n\t\tnode.ownerDocument = this;\n\t\tnode.appendData(data)\n\t\treturn node;\n\t},\n\tcreateProcessingInstruction :\tfunction(target,data){\n\t\tvar node = new ProcessingInstruction();\n\t\tnode.ownerDocument = this;\n\t\tnode.tagName = node.target = target;\n\t\tnode.nodeValue= node.data = data;\n\t\treturn node;\n\t},\n\tcreateAttribute :\tfunction(name){\n\t\tvar node = new Attr();\n\t\tnode.ownerDocument\t= this;\n\t\tnode.name = name;\n\t\tnode.nodeName\t= name;\n\t\tnode.localName = name;\n\t\tnode.specified = true;\n\t\treturn node;\n\t},\n\tcreateEntityReference :\tfunction(name){\n\t\tvar node = new EntityReference();\n\t\tnode.ownerDocument\t= this;\n\t\tnode.nodeName\t= name;\n\t\treturn node;\n\t},\n\t// Introduced in DOM Level 2:\n\tcreateElementNS :\tfunction(namespaceURI,qualifiedName){\n\t\tvar node = new Element();\n\t\tvar pl = qualifiedName.split(':');\n\t\tvar attrs\t= node.attributes = new NamedNodeMap();\n\t\tnode.childNodes = new NodeList();\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.tagName = qualifiedName;\n\t\tnode.namespaceURI = namespaceURI;\n\t\tif(pl.length == 2){\n\t\t\tnode.prefix = pl[0];\n\t\t\tnode.localName = pl[1];\n\t\t}else{\n\t\t\t//el.prefix = null;\n\t\t\tnode.localName = qualifiedName;\n\t\t}\n\t\tattrs._ownerElement = node;\n\t\treturn node;\n\t},\n\t// Introduced in DOM Level 2:\n\tcreateAttributeNS :\tfunction(namespaceURI,qualifiedName){\n\t\tvar node = new Attr();\n\t\tvar pl = qualifiedName.split(':');\n\t\tnode.ownerDocument = this;\n\t\tnode.nodeName = qualifiedName;\n\t\tnode.name = qualifiedName;\n\t\tnode.namespaceURI = namespaceURI;\n\t\tnode.specified = true;\n\t\tif(pl.length == 2){\n\t\t\tnode.prefix = pl[0];\n\t\t\tnode.localName = pl[1];\n\t\t}else{\n\t\t\t//el.prefix = null;\n\t\t\tnode.localName = qualifiedName;\n\t\t}\n\t\treturn node;\n\t}\n};\n_extends(Document,Node);\n\n\nfunction Element() {\n\tthis._nsMap = {};\n};\nElement.prototype = {\n\tnodeType : ELEMENT_NODE,\n\thasAttribute : function(name){\n\t\treturn this.getAttributeNode(name)!=null;\n\t},\n\tgetAttribute : function(name){\n\t\tvar attr = this.getAttributeNode(name);\n\t\treturn attr && attr.value || '';\n\t},\n\tgetAttributeNode : function(name){\n\t\treturn this.attributes.getNamedItem(name);\n\t},\n\tsetAttribute : function(name, value){\n\t\tvar attr = this.ownerDocument.createAttribute(name);\n\t\tattr.value = attr.nodeValue = \"\" + value;\n\t\tthis.setAttributeNode(attr)\n\t},\n\tremoveAttribute : function(name){\n\t\tvar attr = this.getAttributeNode(name)\n\t\tattr && this.removeAttributeNode(attr);\n\t},\n\n\t//four real opeartion method\n\tappendChild:function(newChild){\n\t\tif(newChild.nodeType === DOCUMENT_FRAGMENT_NODE){\n\t\t\treturn this.insertBefore(newChild,null);\n\t\t}else{\n\t\t\treturn _appendSingleChild(this,newChild);\n\t\t}\n\t},\n\tsetAttributeNode : function(newAttr){\n\t\treturn this.attributes.setNamedItem(newAttr);\n\t},\n\tsetAttributeNodeNS : function(newAttr){\n\t\treturn this.attributes.setNamedItemNS(newAttr);\n\t},\n\tremoveAttributeNode : function(oldAttr){\n\t\t//console.log(this == oldAttr.ownerElement)\n\t\treturn this.attributes.removeNamedItem(oldAttr.nodeName);\n\t},\n\t//get real attribute name,and remove it by removeAttributeNode\n\tremoveAttributeNS : function(namespaceURI, localName){\n\t\tvar old = this.getAttributeNodeNS(namespaceURI, localName);\n\t\told && this.removeAttributeNode(old);\n\t},\n\n\thasAttributeNS : function(namespaceURI, localName){\n\t\treturn this.getAttributeNodeNS(namespaceURI, localName)!=null;\n\t},\n\tgetAttributeNS : function(namespaceURI, localName){\n\t\tvar attr = this.getAttributeNodeNS(namespaceURI, localName);\n\t\treturn attr && attr.value || '';\n\t},\n\tsetAttributeNS : function(namespaceURI, qualifiedName, value){\n\t\tvar attr = this.ownerDocument.createAttributeNS(namespaceURI, qualifiedName);\n\t\tattr.value = attr.nodeValue = \"\" + value;\n\t\tthis.setAttributeNode(attr)\n\t},\n\tgetAttributeNodeNS : function(namespaceURI, localName){\n\t\treturn this.attributes.getNamedItemNS(namespaceURI, localName);\n\t},\n\n\tgetElementsByTagName : function(tagName){\n\t\treturn new LiveNodeList(this,function(base){\n\t\t\tvar ls = [];\n\t\t\t_visitNode(base,function(node){\n\t\t\t\tif(node !== base && node.nodeType == ELEMENT_NODE && (tagName === '*' || node.tagName == tagName)){\n\t\t\t\t\tls.push(node);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn ls;\n\t\t});\n\t},\n\tgetElementsByTagNameNS : function(namespaceURI, localName){\n\t\treturn new LiveNodeList(this,function(base){\n\t\t\tvar ls = [];\n\t\t\t_visitNode(base,function(node){\n\t\t\t\tif(node !== base && node.nodeType === ELEMENT_NODE && (namespaceURI === '*' || node.namespaceURI === namespaceURI) && (localName === '*' || node.localName == localName)){\n\t\t\t\t\tls.push(node);\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn ls;\n\n\t\t});\n\t}\n};\nDocument.prototype.getElementsByTagName = Element.prototype.getElementsByTagName;\nDocument.prototype.getElementsByTagNameNS = Element.prototype.getElementsByTagNameNS;\n\n\n_extends(Element,Node);\nfunction Attr() {\n};\nAttr.prototype.nodeType = ATTRIBUTE_NODE;\n_extends(Attr,Node);\n\n\nfunction CharacterData() {\n};\nCharacterData.prototype = {\n\tdata : '',\n\tsubstringData : function(offset, count) {\n\t\treturn this.data.substring(offset, offset+count);\n\t},\n\tappendData: function(text) {\n\t\ttext = this.data+text;\n\t\tthis.nodeValue = this.data = text;\n\t\tthis.length = text.length;\n\t},\n\tinsertData: function(offset,text) {\n\t\tthis.replaceData(offset,0,text);\n\n\t},\n\tappendChild:function(newChild){\n\t\tthrow new Error(ExceptionMessage[HIERARCHY_REQUEST_ERR])\n\t},\n\tdeleteData: function(offset, count) {\n\t\tthis.replaceData(offset,count,\"\");\n\t},\n\treplaceData: function(offset, count, text) {\n\t\tvar start = this.data.substring(0,offset);\n\t\tvar end = this.data.substring(offset+count);\n\t\ttext = start + text + end;\n\t\tthis.nodeValue = this.data = text;\n\t\tthis.length = text.length;\n\t}\n}\n_extends(CharacterData,Node);\nfunction Text() {\n};\nText.prototype = {\n\tnodeName : \"#text\",\n\tnodeType : TEXT_NODE,\n\tsplitText : function(offset) {\n\t\tvar text = this.data;\n\t\tvar newText = text.substring(offset);\n\t\ttext = text.substring(0, offset);\n\t\tthis.data = this.nodeValue = text;\n\t\tthis.length = text.length;\n\t\tvar newNode = this.ownerDocument.createTextNode(newText);\n\t\tif(this.parentNode){\n\t\t\tthis.parentNode.insertBefore(newNode, this.nextSibling);\n\t\t}\n\t\treturn newNode;\n\t}\n}\n_extends(Text,CharacterData);\nfunction Comment() {\n};\nComment.prototype = {\n\tnodeName : \"#comment\",\n\tnodeType : COMMENT_NODE\n}\n_extends(Comment,CharacterData);\n\nfunction CDATASection() {\n};\nCDATASection.prototype = {\n\tnodeName : \"#cdata-section\",\n\tnodeType : CDATA_SECTION_NODE\n}\n_extends(CDATASection,CharacterData);\n\n\nfunction DocumentType() {\n};\nDocumentType.prototype.nodeType = DOCUMENT_TYPE_NODE;\n_extends(DocumentType,Node);\n\nfunction Notation() {\n};\nNotation.prototype.nodeType = NOTATION_NODE;\n_extends(Notation,Node);\n\nfunction Entity() {\n};\nEntity.prototype.nodeType = ENTITY_NODE;\n_extends(Entity,Node);\n\nfunction EntityReference() {\n};\nEntityReference.prototype.nodeType = ENTITY_REFERENCE_NODE;\n_extends(EntityReference,Node);\n\nfunction DocumentFragment() {\n};\nDocumentFragment.prototype.nodeName =\t\"#document-fragment\";\nDocumentFragment.prototype.nodeType =\tDOCUMENT_FRAGMENT_NODE;\n_extends(DocumentFragment,Node);\n\n\nfunction ProcessingInstruction() {\n}\nProcessingInstruction.prototype.nodeType = PROCESSING_INSTRUCTION_NODE;\n_extends(ProcessingInstruction,Node);\nfunction XMLSerializer(){}\nXMLSerializer.prototype.serializeToString = function(node,isHtml,nodeFilter){\n\treturn nodeSerializeToString.call(node,isHtml,nodeFilter);\n}\nNode.prototype.toString = nodeSerializeToString;\nfunction nodeSerializeToString(isHtml,nodeFilter){\n\tvar buf = [];\n\tvar refNode = this.nodeType == 9 && this.documentElement || this;\n\tvar prefix = refNode.prefix;\n\tvar uri = refNode.namespaceURI;\n\n\tif(uri && prefix == null){\n\t\t//console.log(prefix)\n\t\tvar prefix = refNode.lookupPrefix(uri);\n\t\tif(prefix == null){\n\t\t\t//isHTML = true;\n\t\t\tvar visibleNamespaces=[\n\t\t\t{namespace:uri,prefix:null}\n\t\t\t//{namespace:uri,prefix:''}\n\t\t\t]\n\t\t}\n\t}\n\tserializeToString(this,buf,isHtml,nodeFilter,visibleNamespaces);\n\t//console.log('###',this.nodeType,uri,prefix,buf.join(''))\n\treturn buf.join('');\n}\n\nfunction needNamespaceDefine(node, isHTML, visibleNamespaces) {\n\tvar prefix = node.prefix || '';\n\tvar uri = node.namespaceURI;\n\t// According to [Namespaces in XML 1.0](https://www.w3.org/TR/REC-xml-names/#ns-using) ,\n\t// and more specifically https://www.w3.org/TR/REC-xml-names/#nsc-NoPrefixUndecl :\n\t// > In a namespace declaration for a prefix [...], the attribute value MUST NOT be empty.\n\t// in a similar manner [Namespaces in XML 1.1](https://www.w3.org/TR/xml-names11/#ns-using)\n\t// and more specifically https://www.w3.org/TR/xml-names11/#nsc-NSDeclared :\n\t// > [...] Furthermore, the attribute value [...] must not be an empty string.\n\t// so serializing empty namespace value like xmlns:ds=\"\" would produce an invalid XML document.\n\tif (!uri) {\n\t\treturn false;\n\t}\n\tif (prefix === \"xml\" && uri === NAMESPACE.XML || uri === NAMESPACE.XMLNS) {\n\t\treturn false;\n\t}\n\n\tvar i = visibleNamespaces.length\n\twhile (i--) {\n\t\tvar ns = visibleNamespaces[i];\n\t\t// get namespace prefix\n\t\tif (ns.prefix === prefix) {\n\t\t\treturn ns.namespace !== uri;\n\t\t}\n\t}\n\treturn true;\n}\n/**\n * Well-formed constraint: No < in Attribute Values\n * > The replacement text of any entity referred to directly or indirectly\n * > in an attribute value must not contain a <.\n * @see https://www.w3.org/TR/xml11/#CleanAttrVals\n * @see https://www.w3.org/TR/xml11/#NT-AttValue\n *\n * Literal whitespace other than space that appear in attribute values\n * are serialized as their entity references, so they will be preserved.\n * (In contrast to whitespace literals in the input which are normalized to spaces)\n * @see https://www.w3.org/TR/xml11/#AVNormalize\n * @see https://w3c.github.io/DOM-Parsing/#serializing-an-element-s-attributes\n */\nfunction addSerializedAttribute(buf, qualifiedName, value) {\n\tbuf.push(' ', qualifiedName, '=\"', value.replace(/[<>&\"\\t\\n\\r]/g, _xmlEncoder), '\"')\n}\n\nfunction serializeToString(node,buf,isHTML,nodeFilter,visibleNamespaces){\n\tif (!visibleNamespaces) {\n\t\tvisibleNamespaces = [];\n\t}\n\n\tif(nodeFilter){\n\t\tnode = nodeFilter(node);\n\t\tif(node){\n\t\t\tif(typeof node == 'string'){\n\t\t\t\tbuf.push(node);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}else{\n\t\t\treturn;\n\t\t}\n\t\t//buf.sort.apply(attrs, attributeSorter);\n\t}\n\n\tswitch(node.nodeType){\n\tcase ELEMENT_NODE:\n\t\tvar attrs = node.attributes;\n\t\tvar len = attrs.length;\n\t\tvar child = node.firstChild;\n\t\tvar nodeName = node.tagName;\n\n\t\tisHTML = NAMESPACE.isHTML(node.namespaceURI) || isHTML\n\n\t\tvar prefixedNodeName = nodeName\n\t\tif (!isHTML && !node.prefix && node.namespaceURI) {\n\t\t\tvar defaultNS\n\t\t\t// lookup current default ns from `xmlns` attribute\n\t\t\tfor (var ai = 0; ai < attrs.length; ai++) {\n\t\t\t\tif (attrs.item(ai).name === 'xmlns') {\n\t\t\t\t\tdefaultNS = attrs.item(ai).value\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!defaultNS) {\n\t\t\t\t// lookup current default ns in visibleNamespaces\n\t\t\t\tfor (var nsi = visibleNamespaces.length - 1; nsi >= 0; nsi--) {\n\t\t\t\t\tvar namespace = visibleNamespaces[nsi]\n\t\t\t\t\tif (namespace.prefix === '' && namespace.namespace === node.namespaceURI) {\n\t\t\t\t\t\tdefaultNS = namespace.namespace\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (defaultNS !== node.namespaceURI) {\n\t\t\t\tfor (var nsi = visibleNamespaces.length - 1; nsi >= 0; nsi--) {\n\t\t\t\t\tvar namespace = visibleNamespaces[nsi]\n\t\t\t\t\tif (namespace.namespace === node.namespaceURI) {\n\t\t\t\t\t\tif (namespace.prefix) {\n\t\t\t\t\t\t\tprefixedNodeName = namespace.prefix + ':' + nodeName\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tbuf.push('<', prefixedNodeName);\n\n\t\tfor(var i=0;i<len;i++){\n\t\t\t// add namespaces for attributes\n\t\t\tvar attr = attrs.item(i);\n\t\t\tif (attr.prefix == 'xmlns') {\n\t\t\t\tvisibleNamespaces.push({ prefix: attr.localName, namespace: attr.value });\n\t\t\t}else if(attr.nodeName == 'xmlns'){\n\t\t\t\tvisibleNamespaces.push({ prefix: '', namespace: attr.value });\n\t\t\t}\n\t\t}\n\n\t\tfor(var i=0;i<len;i++){\n\t\t\tvar attr = attrs.item(i);\n\t\t\tif (needNamespaceDefine(attr,isHTML, visibleNamespaces)) {\n\t\t\t\tvar prefix = attr.prefix||'';\n\t\t\t\tvar uri = attr.namespaceURI;\n\t\t\t\taddSerializedAttribute(buf, prefix ? 'xmlns:' + prefix : \"xmlns\", uri);\n\t\t\t\tvisibleNamespaces.push({ prefix: prefix, namespace:uri });\n\t\t\t}\n\t\t\tserializeToString(attr,buf,isHTML,nodeFilter,visibleNamespaces);\n\t\t}\n\n\t\t// add namespace for current node\n\t\tif (nodeName === prefixedNodeName && needNamespaceDefine(node, isHTML, visibleNamespaces)) {\n\t\t\tvar prefix = node.prefix||'';\n\t\t\tvar uri = node.namespaceURI;\n\t\t\taddSerializedAttribute(buf, prefix ? 'xmlns:' + prefix : \"xmlns\", uri);\n\t\t\tvisibleNamespaces.push({ prefix: prefix, namespace:uri });\n\t\t}\n\n\t\tif(child || isHTML && !/^(?:meta|link|img|br|hr|input)$/i.test(nodeName)){\n\t\t\tbuf.push('>');\n\t\t\t//if is cdata child node\n\t\t\tif(isHTML && /^script$/i.test(nodeName)){\n\t\t\t\twhile(child){\n\t\t\t\t\tif(child.data){\n\t\t\t\t\t\tbuf.push(child.data);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\t\t\t}\n\t\t\t\t\tchild = child.nextSibling;\n\t\t\t\t}\n\t\t\t}else\n\t\t\t{\n\t\t\t\twhile(child){\n\t\t\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\t\t\tchild = child.nextSibling;\n\t\t\t\t}\n\t\t\t}\n\t\t\tbuf.push('</',prefixedNodeName,'>');\n\t\t}else{\n\t\t\tbuf.push('/>');\n\t\t}\n\t\t// remove added visible namespaces\n\t\t//visibleNamespaces.length = startVisibleNamespaces;\n\t\treturn;\n\tcase DOCUMENT_NODE:\n\tcase DOCUMENT_FRAGMENT_NODE:\n\t\tvar child = node.firstChild;\n\t\twhile(child){\n\t\t\tserializeToString(child, buf, isHTML, nodeFilter, visibleNamespaces.slice());\n\t\t\tchild = child.nextSibling;\n\t\t}\n\t\treturn;\n\tcase ATTRIBUTE_NODE:\n\t\treturn addSerializedAttribute(buf, node.name, node.value);\n\tcase TEXT_NODE:\n\t\t/**\n\t\t * The ampersand character (&) and the left angle bracket (<) must not appear in their literal form,\n\t\t * except when used as markup delimiters, or within a comment, a processing instruction, or a CDATA section.\n\t\t * If they are needed elsewhere, they must be escaped using either numeric character references or the strings\n\t\t * `&amp;` and `&lt;` respectively.\n\t\t * The right angle bracket (>) may be represented using the string \" &gt; \", and must, for compatibility,\n\t\t * be escaped using either `&gt;` or a character reference when it appears in the string `]]>` in content,\n\t\t * when that string is not marking the end of a CDATA section.\n\t\t *\n\t\t * In the content of elements, character data is any string of characters\n\t\t * which does not contain the start-delimiter of any markup\n\t\t * and does not include the CDATA-section-close delimiter, `]]>`.\n\t\t *\n\t\t * @see https://www.w3.org/TR/xml/#NT-CharData\n\t\t * @see https://w3c.github.io/DOM-Parsing/#xml-serializing-a-text-node\n\t\t */\n\t\treturn buf.push(node.data\n\t\t\t.replace(/[<&>]/g,_xmlEncoder)\n\t\t);\n\tcase CDATA_SECTION_NODE:\n\t\treturn buf.push( '<![CDATA[',node.data,']]>');\n\tcase COMMENT_NODE:\n\t\treturn buf.push( \"<!--\",node.data,\"-->\");\n\tcase DOCUMENT_TYPE_NODE:\n\t\tvar pubid = node.publicId;\n\t\tvar sysid = node.systemId;\n\t\tbuf.push('<!DOCTYPE ',node.name);\n\t\tif(pubid){\n\t\t\tbuf.push(' PUBLIC ', pubid);\n\t\t\tif (sysid && sysid!='.') {\n\t\t\t\tbuf.push(' ', sysid);\n\t\t\t}\n\t\t\tbuf.push('>');\n\t\t}else if(sysid && sysid!='.'){\n\t\t\tbuf.push(' SYSTEM ', sysid, '>');\n\t\t}else{\n\t\t\tvar sub = node.internalSubset;\n\t\t\tif(sub){\n\t\t\t\tbuf.push(\" [\",sub,\"]\");\n\t\t\t}\n\t\t\tbuf.push(\">\");\n\t\t}\n\t\treturn;\n\tcase PROCESSING_INSTRUCTION_NODE:\n\t\treturn buf.push( \"<?\",node.target,\" \",node.data,\"?>\");\n\tcase ENTITY_REFERENCE_NODE:\n\t\treturn buf.push( '&',node.nodeName,';');\n\t//case ENTITY_NODE:\n\t//case NOTATION_NODE:\n\tdefault:\n\t\tbuf.push('??',node.nodeName);\n\t}\n}\nfunction importNode(doc,node,deep){\n\tvar node2;\n\tswitch (node.nodeType) {\n\tcase ELEMENT_NODE:\n\t\tnode2 = node.cloneNode(false);\n\t\tnode2.ownerDocument = doc;\n\t\t//var attrs = node2.attributes;\n\t\t//var len = attrs.length;\n\t\t//for(var i=0;i<len;i++){\n\t\t\t//node2.setAttributeNodeNS(importNode(doc,attrs.item(i),deep));\n\t\t//}\n\tcase DOCUMENT_FRAGMENT_NODE:\n\t\tbreak;\n\tcase ATTRIBUTE_NODE:\n\t\tdeep = true;\n\t\tbreak;\n\t//case ENTITY_REFERENCE_NODE:\n\t//case PROCESSING_INSTRUCTION_NODE:\n\t////case TEXT_NODE:\n\t//case CDATA_SECTION_NODE:\n\t//case COMMENT_NODE:\n\t//\tdeep = false;\n\t//\tbreak;\n\t//case DOCUMENT_NODE:\n\t//case DOCUMENT_TYPE_NODE:\n\t//cannot be imported.\n\t//case ENTITY_NODE:\n\t//case NOTATION_NODE\uFF1A\n\t//can not hit in level3\n\t//default:throw e;\n\t}\n\tif(!node2){\n\t\tnode2 = node.cloneNode(false);//false\n\t}\n\tnode2.ownerDocument = doc;\n\tnode2.parentNode = null;\n\tif(deep){\n\t\tvar child = node.firstChild;\n\t\twhile(child){\n\t\t\tnode2.appendChild(importNode(doc,child,deep));\n\t\t\tchild = child.nextSibling;\n\t\t}\n\t}\n\treturn node2;\n}\n//\n//var _relationMap = {firstChild:1,lastChild:1,previousSibling:1,nextSibling:1,\n//\t\t\t\t\tattributes:1,childNodes:1,parentNode:1,documentElement:1,doctype,};\nfunction cloneNode(doc,node,deep){\n\tvar node2 = new node.constructor();\n\tfor (var n in node) {\n\t\tif (Object.prototype.hasOwnProperty.call(node, n)) {\n\t\t\tvar v = node[n];\n\t\t\tif (typeof v != \"object\") {\n\t\t\t\tif (v != node2[n]) {\n\t\t\t\t\tnode2[n] = v;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tif(node.childNodes){\n\t\tnode2.childNodes = new NodeList();\n\t}\n\tnode2.ownerDocument = doc;\n\tswitch (node2.nodeType) {\n\tcase ELEMENT_NODE:\n\t\tvar attrs\t= node.attributes;\n\t\tvar attrs2\t= node2.attributes = new NamedNodeMap();\n\t\tvar len = attrs.length\n\t\tattrs2._ownerElement = node2;\n\t\tfor(var i=0;i<len;i++){\n\t\t\tnode2.setAttributeNode(cloneNode(doc,attrs.item(i),true));\n\t\t}\n\t\tbreak;;\n\tcase ATTRIBUTE_NODE:\n\t\tdeep = true;\n\t}\n\tif(deep){\n\t\tvar child = node.firstChild;\n\t\twhile(child){\n\t\t\tnode2.appendChild(cloneNode(doc,child,deep));\n\t\t\tchild = child.nextSibling;\n\t\t}\n\t}\n\treturn node2;\n}\n\nfunction __set__(object,key,value){\n\tobject[key] = value\n}\n//do dynamic\ntry{\n\tif(Object.defineProperty){\n\t\tObject.defineProperty(LiveNodeList.prototype,'length',{\n\t\t\tget:function(){\n\t\t\t\t_updateLiveList(this);\n\t\t\t\treturn this.$$length;\n\t\t\t}\n\t\t});\n\n\t\tObject.defineProperty(Node.prototype,'textContent',{\n\t\t\tget:function(){\n\t\t\t\treturn getTextContent(this);\n\t\t\t},\n\n\t\t\tset:function(data){\n\t\t\t\tswitch(this.nodeType){\n\t\t\t\tcase ELEMENT_NODE:\n\t\t\t\tcase DOCUMENT_FRAGMENT_NODE:\n\t\t\t\t\twhile(this.firstChild){\n\t\t\t\t\t\tthis.removeChild(this.firstChild);\n\t\t\t\t\t}\n\t\t\t\t\tif(data || String(data)){\n\t\t\t\t\t\tthis.appendChild(this.ownerDocument.createTextNode(data));\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\n\t\t\t\tdefault:\n\t\t\t\t\tthis.data = data;\n\t\t\t\t\tthis.value = data;\n\t\t\t\t\tthis.nodeValue = data;\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\tfunction getTextContent(node){\n\t\t\tswitch(node.nodeType){\n\t\t\tcase ELEMENT_NODE:\n\t\t\tcase DOCUMENT_FRAGMENT_NODE:\n\t\t\t\tvar buf = [];\n\t\t\t\tnode = node.firstChild;\n\t\t\t\twhile(node){\n\t\t\t\t\tif(node.nodeType!==7 && node.nodeType !==8){\n\t\t\t\t\t\tbuf.push(getTextContent(node));\n\t\t\t\t\t}\n\t\t\t\t\tnode = node.nextSibling;\n\t\t\t\t}\n\t\t\t\treturn buf.join('');\n\t\t\tdefault:\n\t\t\t\treturn node.nodeValue;\n\t\t\t}\n\t\t}\n\n\t\t__set__ = function(object,key,value){\n\t\t\t//console.log(value)\n\t\t\tobject['$$'+key] = value\n\t\t}\n\t}\n}catch(e){//ie8\n}\n\n//if(typeof require == 'function'){\n\texports.DocumentType = DocumentType;\n\texports.DOMException = DOMException;\n\texports.DOMImplementation = DOMImplementation;\n\texports.Element = Element;\n\texports.Node = Node;\n\texports.NodeList = NodeList;\n\texports.XMLSerializer = XMLSerializer;\n//}\n", "var freeze = require('./conventions').freeze;\n\n/**\n * The entities that are predefined in every XML document.\n *\n * @see https://www.w3.org/TR/2006/REC-xml11-20060816/#sec-predefined-ent W3C XML 1.1\n * @see https://www.w3.org/TR/2008/REC-xml-20081126/#sec-predefined-ent W3C XML 1.0\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Predefined_entities_in_XML Wikipedia\n */\nexports.XML_ENTITIES = freeze({amp:'&', apos:\"'\", gt:'>', lt:'<', quot:'\"'})\n\n/**\n * A map of currently 241 entities that are detected in an HTML document.\n * They contain all entries from `XML_ENTITIES`.\n *\n * @see XML_ENTITIES\n * @see DOMParser.parseFromString\n * @see DOMImplementation.prototype.createHTMLDocument\n * @see https://html.spec.whatwg.org/#named-character-references WHATWG HTML(5) Spec\n * @see https://www.w3.org/TR/xml-entity-names/ W3C XML Entity Names\n * @see https://www.w3.org/TR/html4/sgml/entities.html W3C HTML4/SGML\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Character_entity_references_in_HTML Wikipedia (HTML)\n * @see https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Entities_representing_special_characters_in_XHTML Wikpedia (XHTML)\n */\nexports.HTML_ENTITIES = freeze({\n       lt: '<',\n       gt: '>',\n       amp: '&',\n       quot: '\"',\n       apos: \"'\",\n       Agrave: \"\u00C0\",\n       Aacute: \"\u00C1\",\n       Acirc: \"\u00C2\",\n       Atilde: \"\u00C3\",\n       Auml: \"\u00C4\",\n       Aring: \"\u00C5\",\n       AElig: \"\u00C6\",\n       Ccedil: \"\u00C7\",\n       Egrave: \"\u00C8\",\n       Eacute: \"\u00C9\",\n       Ecirc: \"\u00CA\",\n       Euml: \"\u00CB\",\n       Igrave: \"\u00CC\",\n       Iacute: \"\u00CD\",\n       Icirc: \"\u00CE\",\n       Iuml: \"\u00CF\",\n       ETH: \"\u00D0\",\n       Ntilde: \"\u00D1\",\n       Ograve: \"\u00D2\",\n       Oacute: \"\u00D3\",\n       Ocirc: \"\u00D4\",\n       Otilde: \"\u00D5\",\n       Ouml: \"\u00D6\",\n       Oslash: \"\u00D8\",\n       Ugrave: \"\u00D9\",\n       Uacute: \"\u00DA\",\n       Ucirc: \"\u00DB\",\n       Uuml: \"\u00DC\",\n       Yacute: \"\u00DD\",\n       THORN: \"\u00DE\",\n       szlig: \"\u00DF\",\n       agrave: \"\u00E0\",\n       aacute: \"\u00E1\",\n       acirc: \"\u00E2\",\n       atilde: \"\u00E3\",\n       auml: \"\u00E4\",\n       aring: \"\u00E5\",\n       aelig: \"\u00E6\",\n       ccedil: \"\u00E7\",\n       egrave: \"\u00E8\",\n       eacute: \"\u00E9\",\n       ecirc: \"\u00EA\",\n       euml: \"\u00EB\",\n       igrave: \"\u00EC\",\n       iacute: \"\u00ED\",\n       icirc: \"\u00EE\",\n       iuml: \"\u00EF\",\n       eth: \"\u00F0\",\n       ntilde: \"\u00F1\",\n       ograve: \"\u00F2\",\n       oacute: \"\u00F3\",\n       ocirc: \"\u00F4\",\n       otilde: \"\u00F5\",\n       ouml: \"\u00F6\",\n       oslash: \"\u00F8\",\n       ugrave: \"\u00F9\",\n       uacute: \"\u00FA\",\n       ucirc: \"\u00FB\",\n       uuml: \"\u00FC\",\n       yacute: \"\u00FD\",\n       thorn: \"\u00FE\",\n       yuml: \"\u00FF\",\n       nbsp: \"\\u00a0\",\n       iexcl: \"\u00A1\",\n       cent: \"\u00A2\",\n       pound: \"\u00A3\",\n       curren: \"\u00A4\",\n       yen: \"\u00A5\",\n       brvbar: \"\u00A6\",\n       sect: \"\u00A7\",\n       uml: \"\u00A8\",\n       copy: \"\u00A9\",\n       ordf: \"\u00AA\",\n       laquo: \"\u00AB\",\n       not: \"\u00AC\",\n       shy: \"\u00AD\u00AD\",\n       reg: \"\u00AE\",\n       macr: \"\u00AF\",\n       deg: \"\u00B0\",\n       plusmn: \"\u00B1\",\n       sup2: \"\u00B2\",\n       sup3: \"\u00B3\",\n       acute: \"\u00B4\",\n       micro: \"\u00B5\",\n       para: \"\u00B6\",\n       middot: \"\u00B7\",\n       cedil: \"\u00B8\",\n       sup1: \"\u00B9\",\n       ordm: \"\u00BA\",\n       raquo: \"\u00BB\",\n       frac14: \"\u00BC\",\n       frac12: \"\u00BD\",\n       frac34: \"\u00BE\",\n       iquest: \"\u00BF\",\n       times: \"\u00D7\",\n       divide: \"\u00F7\",\n       forall: \"\u2200\",\n       part: \"\u2202\",\n       exist: \"\u2203\",\n       empty: \"\u2205\",\n       nabla: \"\u2207\",\n       isin: \"\u2208\",\n       notin: \"\u2209\",\n       ni: \"\u220B\",\n       prod: \"\u220F\",\n       sum: \"\u2211\",\n       minus: \"\u2212\",\n       lowast: \"\u2217\",\n       radic: \"\u221A\",\n       prop: \"\u221D\",\n       infin: \"\u221E\",\n       ang: \"\u2220\",\n       and: \"\u2227\",\n       or: \"\u2228\",\n       cap: \"\u2229\",\n       cup: \"\u222A\",\n       'int': \"\u222B\",\n       there4: \"\u2234\",\n       sim: \"\u223C\",\n       cong: \"\u2245\",\n       asymp: \"\u2248\",\n       ne: \"\u2260\",\n       equiv: \"\u2261\",\n       le: \"\u2264\",\n       ge: \"\u2265\",\n       sub: \"\u2282\",\n       sup: \"\u2283\",\n       nsub: \"\u2284\",\n       sube: \"\u2286\",\n       supe: \"\u2287\",\n       oplus: \"\u2295\",\n       otimes: \"\u2297\",\n       perp: \"\u22A5\",\n       sdot: \"\u22C5\",\n       Alpha: \"\u0391\",\n       Beta: \"\u0392\",\n       Gamma: \"\u0393\",\n       Delta: \"\u0394\",\n       Epsilon: \"\u0395\",\n       Zeta: \"\u0396\",\n       Eta: \"\u0397\",\n       Theta: \"\u0398\",\n       Iota: \"\u0399\",\n       Kappa: \"\u039A\",\n       Lambda: \"\u039B\",\n       Mu: \"\u039C\",\n       Nu: \"\u039D\",\n       Xi: \"\u039E\",\n       Omicron: \"\u039F\",\n       Pi: \"\u03A0\",\n       Rho: \"\u03A1\",\n       Sigma: \"\u03A3\",\n       Tau: \"\u03A4\",\n       Upsilon: \"\u03A5\",\n       Phi: \"\u03A6\",\n       Chi: \"\u03A7\",\n       Psi: \"\u03A8\",\n       Omega: \"\u03A9\",\n       alpha: \"\u03B1\",\n       beta: \"\u03B2\",\n       gamma: \"\u03B3\",\n       delta: \"\u03B4\",\n       epsilon: \"\u03B5\",\n       zeta: \"\u03B6\",\n       eta: \"\u03B7\",\n       theta: \"\u03B8\",\n       iota: \"\u03B9\",\n       kappa: \"\u03BA\",\n       lambda: \"\u03BB\",\n       mu: \"\u03BC\",\n       nu: \"\u03BD\",\n       xi: \"\u03BE\",\n       omicron: \"\u03BF\",\n       pi: \"\u03C0\",\n       rho: \"\u03C1\",\n       sigmaf: \"\u03C2\",\n       sigma: \"\u03C3\",\n       tau: \"\u03C4\",\n       upsilon: \"\u03C5\",\n       phi: \"\u03C6\",\n       chi: \"\u03C7\",\n       psi: \"\u03C8\",\n       omega: \"\u03C9\",\n       thetasym: \"\u03D1\",\n       upsih: \"\u03D2\",\n       piv: \"\u03D6\",\n       OElig: \"\u0152\",\n       oelig: \"\u0153\",\n       Scaron: \"\u0160\",\n       scaron: \"\u0161\",\n       Yuml: \"\u0178\",\n       fnof: \"\u0192\",\n       circ: \"\u02C6\",\n       tilde: \"\u02DC\",\n       ensp: \"\u2002\",\n       emsp: \"\u2003\",\n       thinsp: \"\u2009\",\n       zwnj: \"\u200C\",\n       zwj: \"\u200D\",\n       lrm: \"\u200E\",\n       rlm: \"\u200F\",\n       ndash: \"\u2013\",\n       mdash: \"\u2014\",\n       lsquo: \"\u2018\",\n       rsquo: \"\u2019\",\n       sbquo: \"\u201A\",\n       ldquo: \"\u201C\",\n       rdquo: \"\u201D\",\n       bdquo: \"\u201E\",\n       dagger: \"\u2020\",\n       Dagger: \"\u2021\",\n       bull: \"\u2022\",\n       hellip: \"\u2026\",\n       permil: \"\u2030\",\n       prime: \"\u2032\",\n       Prime: \"\u2033\",\n       lsaquo: \"\u2039\",\n       rsaquo: \"\u203A\",\n       oline: \"\u203E\",\n       euro: \"\u20AC\",\n       trade: \"\u2122\",\n       larr: \"\u2190\",\n       uarr: \"\u2191\",\n       rarr: \"\u2192\",\n       darr: \"\u2193\",\n       harr: \"\u2194\",\n       crarr: \"\u21B5\",\n       lceil: \"\u2308\",\n       rceil: \"\u2309\",\n       lfloor: \"\u230A\",\n       rfloor: \"\u230B\",\n       loz: \"\u25CA\",\n       spades: \"\u2660\",\n       clubs: \"\u2663\",\n       hearts: \"\u2665\",\n       diams: \"\u2666\"\n});\n\n/**\n * @deprecated use `HTML_ENTITIES` instead\n * @see HTML_ENTITIES\n */\nexports.entityMap = exports.HTML_ENTITIES\n", "var NAMESPACE = require(\"./conventions\").NAMESPACE;\n\n//[4]   \tNameStartChar\t   ::=   \t\":\" | [A-Z] | \"_\" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n//[4a]   \tNameChar\t   ::=   \tNameStartChar | \"-\" | \".\" | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]\n//[5]   \tName\t   ::=   \tNameStartChar (NameChar)*\nvar nameStartChar = /[A-Z_a-z\\xC0-\\xD6\\xD8-\\xF6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]///\\u10000-\\uEFFFF\nvar nameChar = new RegExp(\"[\\\\-\\\\.0-9\"+nameStartChar.source.slice(1,-1)+\"\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040]\");\nvar tagNamePattern = new RegExp('^'+nameStartChar.source+nameChar.source+'*(?:\\:'+nameStartChar.source+nameChar.source+'*)?$');\n//var tagNamePattern = /^[a-zA-Z_][\\w\\-\\.]*(?:\\:[a-zA-Z_][\\w\\-\\.]*)?$/\n//var handlers = 'resolveEntity,getExternalSubset,characters,endDocument,endElement,endPrefixMapping,ignorableWhitespace,processingInstruction,setDocumentLocator,skippedEntity,startDocument,startElement,startPrefixMapping,notationDecl,unparsedEntityDecl,error,fatalError,warning,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,comment,endCDATA,endDTD,endEntity,startCDATA,startDTD,startEntity'.split(',')\n\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\nvar S_TAG = 0;//tag name offerring\nvar S_ATTR = 1;//attr name offerring\nvar S_ATTR_SPACE=2;//attr name end and space offer\nvar S_EQ = 3;//=space?\nvar S_ATTR_NOQUOT_VALUE = 4;//attr value(no quot value only)\nvar S_ATTR_END = 5;//attr value end and no space(quot end)\nvar S_TAG_SPACE = 6;//(attr value end || tag end ) && (space offer)\nvar S_TAG_CLOSE = 7;//closed el<el />\n\n/**\n * Creates an error that will not be caught by XMLReader aka the SAX parser.\n *\n * @param {string} message\n * @param {any?} locator Optional, can provide details about the location in the source\n * @constructor\n */\nfunction ParseError(message, locator) {\n\tthis.message = message\n\tthis.locator = locator\n\tif(Error.captureStackTrace) Error.captureStackTrace(this, ParseError);\n}\nParseError.prototype = new Error();\nParseError.prototype.name = ParseError.name\n\nfunction XMLReader(){\n\n}\n\nXMLReader.prototype = {\n\tparse:function(source,defaultNSMap,entityMap){\n\t\tvar domBuilder = this.domBuilder;\n\t\tdomBuilder.startDocument();\n\t\t_copy(defaultNSMap ,defaultNSMap = {})\n\t\tparse(source,defaultNSMap,entityMap,\n\t\t\t\tdomBuilder,this.errorHandler);\n\t\tdomBuilder.endDocument();\n\t}\n}\nfunction parse(source,defaultNSMapCopy,entityMap,domBuilder,errorHandler){\n\tfunction fixedFromCharCode(code) {\n\t\t// String.prototype.fromCharCode does not supports\n\t\t// > 2 bytes unicode chars directly\n\t\tif (code > 0xffff) {\n\t\t\tcode -= 0x10000;\n\t\t\tvar surrogate1 = 0xd800 + (code >> 10)\n\t\t\t\t, surrogate2 = 0xdc00 + (code & 0x3ff);\n\n\t\t\treturn String.fromCharCode(surrogate1, surrogate2);\n\t\t} else {\n\t\t\treturn String.fromCharCode(code);\n\t\t}\n\t}\n\tfunction entityReplacer(a){\n\t\tvar k = a.slice(1,-1);\n\t\tif (Object.hasOwnProperty.call(entityMap, k)) {\n\t\t\treturn entityMap[k];\n\t\t}else if(k.charAt(0) === '#'){\n\t\t\treturn fixedFromCharCode(parseInt(k.substr(1).replace('x','0x')))\n\t\t}else{\n\t\t\terrorHandler.error('entity not found:'+a);\n\t\t\treturn a;\n\t\t}\n\t}\n\tfunction appendText(end){//has some bugs\n\t\tif(end>start){\n\t\t\tvar xt = source.substring(start,end).replace(/&#?\\w+;/g,entityReplacer);\n\t\t\tlocator&&position(start);\n\t\t\tdomBuilder.characters(xt,0,end-start);\n\t\t\tstart = end\n\t\t}\n\t}\n\tfunction position(p,m){\n\t\twhile(p>=lineEnd && (m = linePattern.exec(source))){\n\t\t\tlineStart = m.index;\n\t\t\tlineEnd = lineStart + m[0].length;\n\t\t\tlocator.lineNumber++;\n\t\t\t//console.log('line++:',locator,startPos,endPos)\n\t\t}\n\t\tlocator.columnNumber = p-lineStart+1;\n\t}\n\tvar lineStart = 0;\n\tvar lineEnd = 0;\n\tvar linePattern = /.*(?:\\r\\n?|\\n)|.*$/g\n\tvar locator = domBuilder.locator;\n\n\tvar parseStack = [{currentNSMap:defaultNSMapCopy}]\n\tvar closeMap = {};\n\tvar start = 0;\n\twhile(true){\n\t\ttry{\n\t\t\tvar tagStart = source.indexOf('<',start);\n\t\t\tif(tagStart<0){\n\t\t\t\tif(!source.substr(start).match(/^\\s*$/)){\n\t\t\t\t\tvar doc = domBuilder.doc;\n\t    \t\t\tvar text = doc.createTextNode(source.substr(start));\n\t    \t\t\tdoc.appendChild(text);\n\t    \t\t\tdomBuilder.currentElement = text;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(tagStart>start){\n\t\t\t\tappendText(tagStart);\n\t\t\t}\n\t\t\tswitch(source.charAt(tagStart+1)){\n\t\t\tcase '/':\n\t\t\t\tvar end = source.indexOf('>',tagStart+3);\n\t\t\t\tvar tagName = source.substring(tagStart + 2, end).replace(/[ \\t\\n\\r]+$/g, '');\n\t\t\t\tvar config = parseStack.pop();\n\t\t\t\tif(end<0){\n\n\t        \t\ttagName = source.substring(tagStart+2).replace(/[\\s<].*/,'');\n\t        \t\terrorHandler.error(\"end tag name: \"+tagName+' is not complete:'+config.tagName);\n\t        \t\tend = tagStart+1+tagName.length;\n\t        \t}else if(tagName.match(/\\s</)){\n\t        \t\ttagName = tagName.replace(/[\\s<].*/,'');\n\t        \t\terrorHandler.error(\"end tag name: \"+tagName+' maybe not complete');\n\t        \t\tend = tagStart+1+tagName.length;\n\t\t\t\t}\n\t\t\t\tvar localNSMap = config.localNSMap;\n\t\t\t\tvar endMatch = config.tagName == tagName;\n\t\t\t\tvar endIgnoreCaseMach = endMatch || config.tagName&&config.tagName.toLowerCase() == tagName.toLowerCase()\n\t\t        if(endIgnoreCaseMach){\n\t\t        \tdomBuilder.endElement(config.uri,config.localName,tagName);\n\t\t\t\t\tif(localNSMap){\n\t\t\t\t\t\tfor (var prefix in localNSMap) {\n\t\t\t\t\t\t\tif (Object.prototype.hasOwnProperty.call(localNSMap, prefix)) {\n\t\t\t\t\t\t\t\tdomBuilder.endPrefixMapping(prefix);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif(!endMatch){\n\t\t            \terrorHandler.fatalError(\"end tag name: \"+tagName+' is not match the current start tagName:'+config.tagName ); // No known test case\n\t\t\t\t\t}\n\t\t        }else{\n\t\t        \tparseStack.push(config)\n\t\t        }\n\n\t\t\t\tend++;\n\t\t\t\tbreak;\n\t\t\t\t// end elment\n\t\t\tcase '?':// <?...?>\n\t\t\t\tlocator&&position(tagStart);\n\t\t\t\tend = parseInstruction(source,tagStart,domBuilder);\n\t\t\t\tbreak;\n\t\t\tcase '!':// <!doctype,<![CDATA,<!--\n\t\t\t\tlocator&&position(tagStart);\n\t\t\t\tend = parseDCC(source,tagStart,domBuilder,errorHandler);\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tlocator&&position(tagStart);\n\t\t\t\tvar el = new ElementAttributes();\n\t\t\t\tvar currentNSMap = parseStack[parseStack.length-1].currentNSMap;\n\t\t\t\t//elStartEnd\n\t\t\t\tvar end = parseElementStartPart(source,tagStart,el,currentNSMap,entityReplacer,errorHandler);\n\t\t\t\tvar len = el.length;\n\n\n\t\t\t\tif(!el.closed && fixSelfClosed(source,end,el.tagName,closeMap)){\n\t\t\t\t\tel.closed = true;\n\t\t\t\t\tif(!entityMap.nbsp){\n\t\t\t\t\t\terrorHandler.warning('unclosed xml attribute');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(locator && len){\n\t\t\t\t\tvar locator2 = copyLocator(locator,{});\n\t\t\t\t\t//try{//attribute position fixed\n\t\t\t\t\tfor(var i = 0;i<len;i++){\n\t\t\t\t\t\tvar a = el[i];\n\t\t\t\t\t\tposition(a.offset);\n\t\t\t\t\t\ta.locator = copyLocator(locator,{});\n\t\t\t\t\t}\n\t\t\t\t\tdomBuilder.locator = locator2\n\t\t\t\t\tif(appendElement(el,domBuilder,currentNSMap)){\n\t\t\t\t\t\tparseStack.push(el)\n\t\t\t\t\t}\n\t\t\t\t\tdomBuilder.locator = locator;\n\t\t\t\t}else{\n\t\t\t\t\tif(appendElement(el,domBuilder,currentNSMap)){\n\t\t\t\t\t\tparseStack.push(el)\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (NAMESPACE.isHTML(el.uri) && !el.closed) {\n\t\t\t\t\tend = parseHtmlSpecialContent(source,end,el.tagName,entityReplacer,domBuilder)\n\t\t\t\t} else {\n\t\t\t\t\tend++;\n\t\t\t\t}\n\t\t\t}\n\t\t}catch(e){\n\t\t\tif (e instanceof ParseError) {\n\t\t\t\tthrow e;\n\t\t\t}\n\t\t\terrorHandler.error('element parse error: '+e)\n\t\t\tend = -1;\n\t\t}\n\t\tif(end>start){\n\t\t\tstart = end;\n\t\t}else{\n\t\t\t//TODO: \u8FD9\u91CC\u6709\u53EF\u80FDsax\u56DE\u9000\uFF0C\u6709\u4F4D\u7F6E\u9519\u8BEF\u98CE\u9669\n\t\t\tappendText(Math.max(tagStart,start)+1);\n\t\t}\n\t}\n}\nfunction copyLocator(f,t){\n\tt.lineNumber = f.lineNumber;\n\tt.columnNumber = f.columnNumber;\n\treturn t;\n}\n\n/**\n * @see #appendElement(source,elStartEnd,el,selfClosed,entityReplacer,domBuilder,parseStack);\n * @return end of the elementStartPart(end of elementEndPart for selfClosed el)\n */\nfunction parseElementStartPart(source,start,el,currentNSMap,entityReplacer,errorHandler){\n\n\t/**\n\t * @param {string} qname\n\t * @param {string} value\n\t * @param {number} startIndex\n\t */\n\tfunction addAttribute(qname, value, startIndex) {\n\t\tif (el.attributeNames.hasOwnProperty(qname)) {\n\t\t\terrorHandler.fatalError('Attribute ' + qname + ' redefined')\n\t\t}\n\t\tel.addValue(\n\t\t\tqname,\n\t\t\t// @see https://www.w3.org/TR/xml/#AVNormalize\n\t\t\t// since the xmldom sax parser does not \"interpret\" DTD the following is not implemented:\n\t\t\t// - recursive replacement of (DTD) entity references\n\t\t\t// - trimming and collapsing multiple spaces into a single one for attributes that are not of type CDATA\n\t\t\tvalue.replace(/[\\t\\n\\r]/g, ' ').replace(/&#?\\w+;/g, entityReplacer),\n\t\t\tstartIndex\n\t\t)\n\t}\n\tvar attrName;\n\tvar value;\n\tvar p = ++start;\n\tvar s = S_TAG;//status\n\twhile(true){\n\t\tvar c = source.charAt(p);\n\t\tswitch(c){\n\t\tcase '=':\n\t\t\tif(s === S_ATTR){//attrName\n\t\t\t\tattrName = source.slice(start,p);\n\t\t\t\ts = S_EQ;\n\t\t\t}else if(s === S_ATTR_SPACE){\n\t\t\t\ts = S_EQ;\n\t\t\t}else{\n\t\t\t\t//fatalError: equal must after attrName or space after attrName\n\t\t\t\tthrow new Error('attribute equal must after attrName'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '\\'':\n\t\tcase '\"':\n\t\t\tif(s === S_EQ || s === S_ATTR //|| s == S_ATTR_SPACE\n\t\t\t\t){//equal\n\t\t\t\tif(s === S_ATTR){\n\t\t\t\t\terrorHandler.warning('attribute value must after \"=\"')\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t}\n\t\t\t\tstart = p+1;\n\t\t\t\tp = source.indexOf(c,start)\n\t\t\t\tif(p>0){\n\t\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\t\taddAttribute(attrName, value, start-1);\n\t\t\t\t\ts = S_ATTR_END;\n\t\t\t\t}else{\n\t\t\t\t\t//fatalError: no end quot match\n\t\t\t\t\tthrow new Error('attribute value no end \\''+c+'\\' match');\n\t\t\t\t}\n\t\t\t}else if(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\tvalue = source.slice(start, p);\n\t\t\t\taddAttribute(attrName, value, start);\n\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed start quot('+c+')!!');\n\t\t\t\tstart = p+1;\n\t\t\t\ts = S_ATTR_END\n\t\t\t}else{\n\t\t\t\t//fatalError: no equal before\n\t\t\t\tthrow new Error('attribute value must after \"=\"'); // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase '/':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\ts =S_TAG_CLOSE;\n\t\t\t\tel.closed = true;\n\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\tcase S_ATTR:\n\t\t\tcase S_ATTR_SPACE:\n\t\t\t\tbreak;\n\t\t\t//case S_EQ:\n\t\t\tdefault:\n\t\t\t\tthrow new Error(\"attribute invalid close char('/')\") // No known test case\n\t\t\t}\n\t\t\tbreak;\n\t\tcase ''://end document\n\t\t\terrorHandler.error('unexpected end of input');\n\t\t\tif(s == S_TAG){\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\t}\n\t\t\treturn p;\n\t\tcase '>':\n\t\t\tswitch(s){\n\t\t\tcase S_TAG:\n\t\t\t\tel.setTagName(source.slice(start,p));\n\t\t\tcase S_ATTR_END:\n\t\t\tcase S_TAG_SPACE:\n\t\t\tcase S_TAG_CLOSE:\n\t\t\t\tbreak;//normal\n\t\t\tcase S_ATTR_NOQUOT_VALUE://Compatible state\n\t\t\tcase S_ATTR:\n\t\t\t\tvalue = source.slice(start,p);\n\t\t\t\tif(value.slice(-1) === '/'){\n\t\t\t\t\tel.closed  = true;\n\t\t\t\t\tvalue = value.slice(0,-1)\n\t\t\t\t}\n\t\t\tcase S_ATTR_SPACE:\n\t\t\t\tif(s === S_ATTR_SPACE){\n\t\t\t\t\tvalue = attrName;\n\t\t\t\t}\n\t\t\t\tif(s == S_ATTR_NOQUOT_VALUE){\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\t}else{\n\t\t\t\t\tif(!NAMESPACE.isHTML(currentNSMap['']) || !value.match(/^(?:disabled|checked|selected)$/i)){\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed value!! \"'+value+'\" instead!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(value, value, start)\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase S_EQ:\n\t\t\t\tthrow new Error('attribute value missed!!');\n\t\t\t}\n//\t\t\tconsole.log(tagName,tagNamePattern,tagNamePattern.test(tagName))\n\t\t\treturn p;\n\t\t/*xml space '\\x20' | #x9 | #xD | #xA; */\n\t\tcase '\\u0080':\n\t\t\tc = ' ';\n\t\tdefault:\n\t\t\tif(c<= ' '){//space\n\t\t\t\tswitch(s){\n\t\t\t\tcase S_TAG:\n\t\t\t\t\tel.setTagName(source.slice(start,p));//tagName\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR:\n\t\t\t\t\tattrName = source.slice(start,p)\n\t\t\t\t\ts = S_ATTR_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_NOQUOT_VALUE:\n\t\t\t\t\tvar value = source.slice(start, p);\n\t\t\t\t\terrorHandler.warning('attribute \"'+value+'\" missed quot(\")!!');\n\t\t\t\t\taddAttribute(attrName, value, start)\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\ts = S_TAG_SPACE;\n\t\t\t\t\tbreak;\n\t\t\t\t//case S_TAG_SPACE:\n\t\t\t\t//case S_EQ:\n\t\t\t\t//case S_ATTR_SPACE:\n\t\t\t\t//\tvoid();break;\n\t\t\t\t//case S_TAG_CLOSE:\n\t\t\t\t\t//ignore warning\n\t\t\t\t}\n\t\t\t}else{//not space\n//S_TAG,\tS_ATTR,\tS_EQ,\tS_ATTR_NOQUOT_VALUE\n//S_ATTR_SPACE,\tS_ATTR_END,\tS_TAG_SPACE, S_TAG_CLOSE\n\t\t\t\tswitch(s){\n\t\t\t\t//case S_TAG:void();break;\n\t\t\t\t//case S_ATTR:void();break;\n\t\t\t\t//case S_ATTR_NOQUOT_VALUE:void();break;\n\t\t\t\tcase S_ATTR_SPACE:\n\t\t\t\t\tvar tagName =  el.tagName;\n\t\t\t\t\tif (!NAMESPACE.isHTML(currentNSMap['']) || !attrName.match(/^(?:disabled|checked|selected)$/i)) {\n\t\t\t\t\t\terrorHandler.warning('attribute \"'+attrName+'\" missed value!! \"'+attrName+'\" instead2!!')\n\t\t\t\t\t}\n\t\t\t\t\taddAttribute(attrName, attrName, start);\n\t\t\t\t\tstart = p;\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_ATTR_END:\n\t\t\t\t\terrorHandler.warning('attribute space is required\"'+attrName+'\"!!')\n\t\t\t\tcase S_TAG_SPACE:\n\t\t\t\t\ts = S_ATTR;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_EQ:\n\t\t\t\t\ts = S_ATTR_NOQUOT_VALUE;\n\t\t\t\t\tstart = p;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S_TAG_CLOSE:\n\t\t\t\t\tthrow new Error(\"elements closed character '/' and '>' must be connected to\");\n\t\t\t\t}\n\t\t\t}\n\t\t}//end outer switch\n\t\t//console.log('p++',p)\n\t\tp++;\n\t}\n}\n/**\n * @return true if has new namespace define\n */\nfunction appendElement(el,domBuilder,currentNSMap){\n\tvar tagName = el.tagName;\n\tvar localNSMap = null;\n\t//var currentNSMap = parseStack[parseStack.length-1].currentNSMap;\n\tvar i = el.length;\n\twhile(i--){\n\t\tvar a = el[i];\n\t\tvar qName = a.qName;\n\t\tvar value = a.value;\n\t\tvar nsp = qName.indexOf(':');\n\t\tif(nsp>0){\n\t\t\tvar prefix = a.prefix = qName.slice(0,nsp);\n\t\t\tvar localName = qName.slice(nsp+1);\n\t\t\tvar nsPrefix = prefix === 'xmlns' && localName\n\t\t}else{\n\t\t\tlocalName = qName;\n\t\t\tprefix = null\n\t\t\tnsPrefix = qName === 'xmlns' && ''\n\t\t}\n\t\t//can not set prefix,because prefix !== ''\n\t\ta.localName = localName ;\n\t\t//prefix == null for no ns prefix attribute\n\t\tif(nsPrefix !== false){//hack!!\n\t\t\tif(localNSMap == null){\n\t\t\t\tlocalNSMap = {}\n\t\t\t\t//console.log(currentNSMap,0)\n\t\t\t\t_copy(currentNSMap,currentNSMap={})\n\t\t\t\t//console.log(currentNSMap,1)\n\t\t\t}\n\t\t\tcurrentNSMap[nsPrefix] = localNSMap[nsPrefix] = value;\n\t\t\ta.uri = NAMESPACE.XMLNS\n\t\t\tdomBuilder.startPrefixMapping(nsPrefix, value)\n\t\t}\n\t}\n\tvar i = el.length;\n\twhile(i--){\n\t\ta = el[i];\n\t\tvar prefix = a.prefix;\n\t\tif(prefix){//no prefix attribute has no namespace\n\t\t\tif(prefix === 'xml'){\n\t\t\t\ta.uri = NAMESPACE.XML;\n\t\t\t}if(prefix !== 'xmlns'){\n\t\t\t\ta.uri = currentNSMap[prefix || '']\n\n\t\t\t\t//{console.log('###'+a.qName,domBuilder.locator.systemId+'',currentNSMap,a.uri)}\n\t\t\t}\n\t\t}\n\t}\n\tvar nsp = tagName.indexOf(':');\n\tif(nsp>0){\n\t\tprefix = el.prefix = tagName.slice(0,nsp);\n\t\tlocalName = el.localName = tagName.slice(nsp+1);\n\t}else{\n\t\tprefix = null;//important!!\n\t\tlocalName = el.localName = tagName;\n\t}\n\t//no prefix element has default namespace\n\tvar ns = el.uri = currentNSMap[prefix || ''];\n\tdomBuilder.startElement(ns,localName,tagName,el);\n\t//endPrefixMapping and startPrefixMapping have not any help for dom builder\n\t//localNSMap = null\n\tif(el.closed){\n\t\tdomBuilder.endElement(ns,localName,tagName);\n\t\tif(localNSMap){\n\t\t\tfor (prefix in localNSMap) {\n\t\t\t\tif (Object.prototype.hasOwnProperty.call(localNSMap, prefix)) {\n\t\t\t\t\tdomBuilder.endPrefixMapping(prefix);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}else{\n\t\tel.currentNSMap = currentNSMap;\n\t\tel.localNSMap = localNSMap;\n\t\t//parseStack.push(el);\n\t\treturn true;\n\t}\n}\nfunction parseHtmlSpecialContent(source,elStartEnd,tagName,entityReplacer,domBuilder){\n\tif(/^(?:script|textarea)$/i.test(tagName)){\n\t\tvar elEndStart =  source.indexOf('</'+tagName+'>',elStartEnd);\n\t\tvar text = source.substring(elStartEnd+1,elEndStart);\n\t\tif(/[&<]/.test(text)){\n\t\t\tif(/^script$/i.test(tagName)){\n\t\t\t\t//if(!/\\]\\]>/.test(text)){\n\t\t\t\t\t//lexHandler.startCDATA();\n\t\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\t\t//lexHandler.endCDATA();\n\t\t\t\t\treturn elEndStart;\n\t\t\t\t//}\n\t\t\t}//}else{//text area\n\t\t\t\ttext = text.replace(/&#?\\w+;/g,entityReplacer);\n\t\t\t\tdomBuilder.characters(text,0,text.length);\n\t\t\t\treturn elEndStart;\n\t\t\t//}\n\n\t\t}\n\t}\n\treturn elStartEnd+1;\n}\nfunction fixSelfClosed(source,elStartEnd,tagName,closeMap){\n\t//if(tagName in closeMap){\n\tvar pos = closeMap[tagName];\n\tif(pos == null){\n\t\t//console.log(tagName)\n\t\tpos =  source.lastIndexOf('</'+tagName+'>')\n\t\tif(pos<elStartEnd){//\u5FD8\u8BB0\u95ED\u5408\n\t\t\tpos = source.lastIndexOf('</'+tagName)\n\t\t}\n\t\tcloseMap[tagName] =pos\n\t}\n\treturn pos<elStartEnd;\n\t//}\n}\n\nfunction _copy (source, target) {\n\tfor (var n in source) {\n\t\tif (Object.prototype.hasOwnProperty.call(source, n)) {\n\t\t\ttarget[n] = source[n];\n\t\t}\n\t}\n}\n\nfunction parseDCC(source,start,domBuilder,errorHandler){//sure start with '<!'\n\tvar next= source.charAt(start+2)\n\tswitch(next){\n\tcase '-':\n\t\tif(source.charAt(start + 3) === '-'){\n\t\t\tvar end = source.indexOf('-->',start+4);\n\t\t\t//append comment source.substring(4,end)//<!--\n\t\t\tif(end>start){\n\t\t\t\tdomBuilder.comment(source,start+4,end-start-4);\n\t\t\t\treturn end+3;\n\t\t\t}else{\n\t\t\t\terrorHandler.error(\"Unclosed comment\");\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}else{\n\t\t\t//error\n\t\t\treturn -1;\n\t\t}\n\tdefault:\n\t\tif(source.substr(start+3,6) == 'CDATA['){\n\t\t\tvar end = source.indexOf(']]>',start+9);\n\t\t\tdomBuilder.startCDATA();\n\t\t\tdomBuilder.characters(source,start+9,end-start-9);\n\t\t\tdomBuilder.endCDATA()\n\t\t\treturn end+3;\n\t\t}\n\t\t//<!DOCTYPE\n\t\t//startDTD(java.lang.String name, java.lang.String publicId, java.lang.String systemId)\n\t\tvar matchs = split(source,start);\n\t\tvar len = matchs.length;\n\t\tif(len>1 && /!doctype/i.test(matchs[0][0])){\n\t\t\tvar name = matchs[1][0];\n\t\t\tvar pubid = false;\n\t\t\tvar sysid = false;\n\t\t\tif(len>3){\n\t\t\t\tif(/^public$/i.test(matchs[2][0])){\n\t\t\t\t\tpubid = matchs[3][0];\n\t\t\t\t\tsysid = len>4 && matchs[4][0];\n\t\t\t\t}else if(/^system$/i.test(matchs[2][0])){\n\t\t\t\t\tsysid = matchs[3][0];\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar lastMatch = matchs[len-1]\n\t\t\tdomBuilder.startDTD(name, pubid, sysid);\n\t\t\tdomBuilder.endDTD();\n\n\t\t\treturn lastMatch.index+lastMatch[0].length\n\t\t}\n\t}\n\treturn -1;\n}\n\n\n\nfunction parseInstruction(source,start,domBuilder){\n\tvar end = source.indexOf('?>',start);\n\tif(end){\n\t\tvar match = source.substring(start,end).match(/^<\\?(\\S*)\\s*([\\s\\S]*?)\\s*$/);\n\t\tif(match){\n\t\t\tvar len = match[0].length;\n\t\t\tdomBuilder.processingInstruction(match[1], match[2]) ;\n\t\t\treturn end+2;\n\t\t}else{//error\n\t\t\treturn -1;\n\t\t}\n\t}\n\treturn -1;\n}\n\nfunction ElementAttributes(){\n\tthis.attributeNames = {}\n}\nElementAttributes.prototype = {\n\tsetTagName:function(tagName){\n\t\tif(!tagNamePattern.test(tagName)){\n\t\t\tthrow new Error('invalid tagName:'+tagName)\n\t\t}\n\t\tthis.tagName = tagName\n\t},\n\taddValue:function(qName, value, offset) {\n\t\tif(!tagNamePattern.test(qName)){\n\t\t\tthrow new Error('invalid attribute:'+qName)\n\t\t}\n\t\tthis.attributeNames[qName] = this.length;\n\t\tthis[this.length++] = {qName:qName,value:value,offset:offset}\n\t},\n\tlength:0,\n\tgetLocalName:function(i){return this[i].localName},\n\tgetLocator:function(i){return this[i].locator},\n\tgetQName:function(i){return this[i].qName},\n\tgetURI:function(i){return this[i].uri},\n\tgetValue:function(i){return this[i].value}\n//\t,getIndex:function(uri, localName)){\n//\t\tif(localName){\n//\n//\t\t}else{\n//\t\t\tvar qName = uri\n//\t\t}\n//\t},\n//\tgetValue:function(){return this.getValue(this.getIndex.apply(this,arguments))},\n//\tgetType:function(uri,localName){}\n//\tgetType:function(i){},\n}\n\n\n\nfunction split(source,start){\n\tvar match;\n\tvar buf = [];\n\tvar reg = /'[^']+'|\"[^\"]+\"|[^\\s<>\\/=]+=?|(\\/?\\s*>|<)/g;\n\treg.lastIndex = start;\n\treg.exec(source);//skip <\n\twhile(match = reg.exec(source)){\n\t\tbuf.push(match);\n\t\tif(match[1])return buf;\n\t}\n}\n\nexports.XMLReader = XMLReader;\nexports.ParseError = ParseError;\n", "var conventions = require(\"./conventions\");\nvar dom = require('./dom')\nvar entities = require('./entities');\nvar sax = require('./sax');\n\nvar DOMImplementation = dom.DOMImplementation;\n\nvar NAMESPACE = conventions.NAMESPACE;\n\nvar ParseError = sax.ParseError;\nvar XMLReader = sax.XMLReader;\n\n/**\n * Normalizes line ending according to https://www.w3.org/TR/xml11/#sec-line-ends:\n *\n * > XML parsed entities are often stored in computer files which,\n * > for editing convenience, are organized into lines.\n * > These lines are typically separated by some combination\n * > of the characters CARRIAGE RETURN (#xD) and LINE FEED (#xA).\n * >\n * > To simplify the tasks of applications, the XML processor must behave\n * > as if it normalized all line breaks in external parsed entities (including the document entity)\n * > on input, before parsing, by translating all of the following to a single #xA character:\n * >\n * > 1. the two-character sequence #xD #xA\n * > 2. the two-character sequence #xD #x85\n * > 3. the single character #x85\n * > 4. the single character #x2028\n * > 5. any #xD character that is not immediately followed by #xA or #x85.\n *\n * @param {string} input\n * @returns {string}\n */\nfunction normalizeLineEndings(input) {\n\treturn input\n\t\t.replace(/\\r[\\n\\u0085]/g, '\\n')\n\t\t.replace(/[\\r\\u0085\\u2028]/g, '\\n')\n}\n\n/**\n * @typedef Locator\n * @property {number} [columnNumber]\n * @property {number} [lineNumber]\n */\n\n/**\n * @typedef DOMParserOptions\n * @property {DOMHandler} [domBuilder]\n * @property {Function} [errorHandler]\n * @property {(string) => string} [normalizeLineEndings] used to replace line endings before parsing\n * \t\t\t\t\t\tdefaults to `normalizeLineEndings`\n * @property {Locator} [locator]\n * @property {Record<string, string>} [xmlns]\n *\n * @see normalizeLineEndings\n */\n\n/**\n * The DOMParser interface provides the ability to parse XML or HTML source code\n * from a string into a DOM `Document`.\n *\n * _xmldom is different from the spec in that it allows an `options` parameter,\n * to override the default behavior._\n *\n * @param {DOMParserOptions} [options]\n * @constructor\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/DOMParser\n * @see https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-parsing-and-serialization\n */\nfunction DOMParser(options){\n\tthis.options = options ||{locator:{}};\n}\n\nDOMParser.prototype.parseFromString = function(source,mimeType){\n\tvar options = this.options;\n\tvar sax =  new XMLReader();\n\tvar domBuilder = options.domBuilder || new DOMHandler();//contentHandler and LexicalHandler\n\tvar errorHandler = options.errorHandler;\n\tvar locator = options.locator;\n\tvar defaultNSMap = options.xmlns||{};\n\tvar isHTML = /\\/x?html?$/.test(mimeType);//mimeType.toLowerCase().indexOf('html') > -1;\n  \tvar entityMap = isHTML ? entities.HTML_ENTITIES : entities.XML_ENTITIES;\n\tif(locator){\n\t\tdomBuilder.setDocumentLocator(locator)\n\t}\n\n\tsax.errorHandler = buildErrorHandler(errorHandler,domBuilder,locator);\n\tsax.domBuilder = options.domBuilder || domBuilder;\n\tif(isHTML){\n\t\tdefaultNSMap[''] = NAMESPACE.HTML;\n\t}\n\tdefaultNSMap.xml = defaultNSMap.xml || NAMESPACE.XML;\n\tvar normalize = options.normalizeLineEndings || normalizeLineEndings;\n\tif (source && typeof source === 'string') {\n\t\tsax.parse(\n\t\t\tnormalize(source),\n\t\t\tdefaultNSMap,\n\t\t\tentityMap\n\t\t)\n\t} else {\n\t\tsax.errorHandler.error('invalid doc source')\n\t}\n\treturn domBuilder.doc;\n}\nfunction buildErrorHandler(errorImpl,domBuilder,locator){\n\tif(!errorImpl){\n\t\tif(domBuilder instanceof DOMHandler){\n\t\t\treturn domBuilder;\n\t\t}\n\t\terrorImpl = domBuilder ;\n\t}\n\tvar errorHandler = {}\n\tvar isCallback = errorImpl instanceof Function;\n\tlocator = locator||{}\n\tfunction build(key){\n\t\tvar fn = errorImpl[key];\n\t\tif(!fn && isCallback){\n\t\t\tfn = errorImpl.length == 2?function(msg){errorImpl(key,msg)}:errorImpl;\n\t\t}\n\t\terrorHandler[key] = fn && function(msg){\n\t\t\tfn('[xmldom '+key+']\\t'+msg+_locator(locator));\n\t\t}||function(){};\n\t}\n\tbuild('warning');\n\tbuild('error');\n\tbuild('fatalError');\n\treturn errorHandler;\n}\n\n//console.log('#\\n\\n\\n\\n\\n\\n\\n####')\n/**\n * +ContentHandler+ErrorHandler\n * +LexicalHandler+EntityResolver2\n * -DeclHandler-DTDHandler\n *\n * DefaultHandler:EntityResolver, DTDHandler, ContentHandler, ErrorHandler\n * DefaultHandler2:DefaultHandler,LexicalHandler, DeclHandler, EntityResolver2\n * @link http://www.saxproject.org/apidoc/org/xml/sax/helpers/DefaultHandler.html\n */\nfunction DOMHandler() {\n    this.cdata = false;\n}\nfunction position(locator,node){\n\tnode.lineNumber = locator.lineNumber;\n\tnode.columnNumber = locator.columnNumber;\n}\n/**\n * @see org.xml.sax.ContentHandler#startDocument\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ContentHandler.html\n */\nDOMHandler.prototype = {\n\tstartDocument : function() {\n    \tthis.doc = new DOMImplementation().createDocument(null, null, null);\n    \tif (this.locator) {\n        \tthis.doc.documentURI = this.locator.systemId;\n    \t}\n\t},\n\tstartElement:function(namespaceURI, localName, qName, attrs) {\n\t\tvar doc = this.doc;\n\t    var el = doc.createElementNS(namespaceURI, qName||localName);\n\t    var len = attrs.length;\n\t    appendElement(this, el);\n\t    this.currentElement = el;\n\n\t\tthis.locator && position(this.locator,el)\n\t    for (var i = 0 ; i < len; i++) {\n\t        var namespaceURI = attrs.getURI(i);\n\t        var value = attrs.getValue(i);\n\t        var qName = attrs.getQName(i);\n\t\t\tvar attr = doc.createAttributeNS(namespaceURI, qName);\n\t\t\tthis.locator &&position(attrs.getLocator(i),attr);\n\t\t\tattr.value = attr.nodeValue = value;\n\t\t\tel.setAttributeNode(attr)\n\t    }\n\t},\n\tendElement:function(namespaceURI, localName, qName) {\n\t\tvar current = this.currentElement\n\t\tvar tagName = current.tagName;\n\t\tthis.currentElement = current.parentNode;\n\t},\n\tstartPrefixMapping:function(prefix, uri) {\n\t},\n\tendPrefixMapping:function(prefix) {\n\t},\n\tprocessingInstruction:function(target, data) {\n\t    var ins = this.doc.createProcessingInstruction(target, data);\n\t    this.locator && position(this.locator,ins)\n\t    appendElement(this, ins);\n\t},\n\tignorableWhitespace:function(ch, start, length) {\n\t},\n\tcharacters:function(chars, start, length) {\n\t\tchars = _toString.apply(this,arguments)\n\t\t//console.log(chars)\n\t\tif(chars){\n\t\t\tif (this.cdata) {\n\t\t\t\tvar charNode = this.doc.createCDATASection(chars);\n\t\t\t} else {\n\t\t\t\tvar charNode = this.doc.createTextNode(chars);\n\t\t\t}\n\t\t\tif(this.currentElement){\n\t\t\t\tthis.currentElement.appendChild(charNode);\n\t\t\t}else if(/^\\s*$/.test(chars)){\n\t\t\t\tthis.doc.appendChild(charNode);\n\t\t\t\t//process xml\n\t\t\t}\n\t\t\tthis.locator && position(this.locator,charNode)\n\t\t}\n\t},\n\tskippedEntity:function(name) {\n\t},\n\tendDocument:function() {\n\t\tthis.doc.normalize();\n\t},\n\tsetDocumentLocator:function (locator) {\n\t    if(this.locator = locator){// && !('lineNumber' in locator)){\n\t    \tlocator.lineNumber = 0;\n\t    }\n\t},\n\t//LexicalHandler\n\tcomment:function(chars, start, length) {\n\t\tchars = _toString.apply(this,arguments)\n\t    var comm = this.doc.createComment(chars);\n\t    this.locator && position(this.locator,comm)\n\t    appendElement(this, comm);\n\t},\n\n\tstartCDATA:function() {\n\t    //used in characters() methods\n\t    this.cdata = true;\n\t},\n\tendCDATA:function() {\n\t    this.cdata = false;\n\t},\n\n\tstartDTD:function(name, publicId, systemId) {\n\t\tvar impl = this.doc.implementation;\n\t    if (impl && impl.createDocumentType) {\n\t        var dt = impl.createDocumentType(name, publicId, systemId);\n\t        this.locator && position(this.locator,dt)\n\t        appendElement(this, dt);\n\t\t\t\t\tthis.doc.doctype = dt;\n\t    }\n\t},\n\t/**\n\t * @see org.xml.sax.ErrorHandler\n\t * @link http://www.saxproject.org/apidoc/org/xml/sax/ErrorHandler.html\n\t */\n\twarning:function(error) {\n\t\tconsole.warn('[xmldom warning]\\t'+error,_locator(this.locator));\n\t},\n\terror:function(error) {\n\t\tconsole.error('[xmldom error]\\t'+error,_locator(this.locator));\n\t},\n\tfatalError:function(error) {\n\t\tthrow new ParseError(error, this.locator);\n\t}\n}\nfunction _locator(l){\n\tif(l){\n\t\treturn '\\n@'+(l.systemId ||'')+'#[line:'+l.lineNumber+',col:'+l.columnNumber+']'\n\t}\n}\nfunction _toString(chars,start,length){\n\tif(typeof chars == 'string'){\n\t\treturn chars.substr(start,length)\n\t}else{//java sax connect width xmldom on rhino(what about: \"? && !(chars instanceof String)\")\n\t\tif(chars.length >= start+length || start){\n\t\t\treturn new java.lang.String(chars,start,length)+'';\n\t\t}\n\t\treturn chars;\n\t}\n}\n\n/*\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/LexicalHandler.html\n * used method of org.xml.sax.ext.LexicalHandler:\n *  #comment(chars, start, length)\n *  #startCDATA()\n *  #endCDATA()\n *  #startDTD(name, publicId, systemId)\n *\n *\n * IGNORED method of org.xml.sax.ext.LexicalHandler:\n *  #endDTD()\n *  #startEntity(name)\n *  #endEntity(name)\n *\n *\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/DeclHandler.html\n * IGNORED method of org.xml.sax.ext.DeclHandler\n * \t#attributeDecl(eName, aName, type, mode, value)\n *  #elementDecl(name, model)\n *  #externalEntityDecl(name, publicId, systemId)\n *  #internalEntityDecl(name, value)\n * @link http://www.saxproject.org/apidoc/org/xml/sax/ext/EntityResolver2.html\n * IGNORED method of org.xml.sax.EntityResolver2\n *  #resolveEntity(String name,String publicId,String baseURI,String systemId)\n *  #resolveEntity(publicId, systemId)\n *  #getExternalSubset(name, baseURI)\n * @link http://www.saxproject.org/apidoc/org/xml/sax/DTDHandler.html\n * IGNORED method of org.xml.sax.DTDHandler\n *  #notationDecl(name, publicId, systemId) {};\n *  #unparsedEntityDecl(name, publicId, systemId, notationName) {};\n */\n\"endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl\".replace(/\\w+/g,function(key){\n\tDOMHandler.prototype[key] = function(){return null}\n})\n\n/* Private static helpers treated below as private instance methods, so don't need to add these to the public API; we might use a Relator to also get rid of non-standard public properties */\nfunction appendElement (hander,node) {\n    if (!hander.currentElement) {\n        hander.doc.appendChild(node);\n    } else {\n        hander.currentElement.appendChild(node);\n    }\n}//appendChild and setAttributeNS are preformance key\n\nexports.__DOMHandler = DOMHandler;\nexports.normalizeLineEndings = normalizeLineEndings;\nexports.DOMParser = DOMParser;\n", "var dom = require('./dom')\nexports.DOMImplementation = dom.DOMImplementation\nexports.XMLSerializer = dom.XMLSerializer\nexports.DOMParser = require('./dom-parser').DOMParser\n", "/**\n * Parses a given string into JSON.\n * Gracefully handles invalid JSON by returning `null`.\n */\nexport function parseJson(data: string): Record<string, any> | null {\n  try {\n    const json = JSON.parse(data)\n    return json\n  } catch (_) {\n    return null\n  }\n}\n", "/**\n * Convert a given string into a `Uint8Array`.\n * We don't use `TextEncoder` because it's unavailable in some environments.\n */\nexport function bufferFrom(init: string): Uint8Array {\n  const encodedString = encodeURIComponent(init)\n  const binaryString = encodedString.replace(/%([0-9A-F]{2})/g, (_, char) => {\n    return String.fromCharCode(('0x' + char) as any)\n  })\n  const buffer = new Uint8Array(binaryString.length)\n  Array.prototype.forEach.call(binaryString, (char, index) => {\n    buffer[index] = char.charCodeAt(0)\n  })\n\n  return buffer\n}\n", "export class EventPolyfill implements Event {\n  readonly AT_TARGET: number = 0\n  readonly BUBBLING_PHASE: number = 0\n  readonly CAPTURING_PHASE: number = 0\n  readonly NONE: number = 0\n\n  public type: string = ''\n  public srcElement: EventTarget | null = null\n  public target: EventTarget | null\n  public currentTarget: EventTarget | null = null\n  public eventPhase: number = 0\n  public timeStamp: number\n  public isTrusted: boolean = true\n  public composed: boolean = false\n  public cancelable: boolean = true\n  public defaultPrevented: boolean = false\n  public bubbles: boolean = true\n  public lengthComputable: boolean = true\n  public loaded: number = 0\n  public total: number = 0\n\n  cancelBubble: boolean = false\n  returnValue: boolean = true\n\n  constructor(\n    type: string,\n    options?: { target: EventTarget; currentTarget: EventTarget }\n  ) {\n    this.type = type\n    this.target = options?.target || null\n    this.currentTarget = options?.currentTarget || null\n    this.timeStamp = Date.now()\n  }\n\n  public composedPath(): EventTarget[] {\n    return []\n  }\n\n  public initEvent(type: string, bubbles?: boolean, cancelable?: boolean) {\n    this.type = type\n    this.bubbles = !!bubbles\n    this.cancelable = !!cancelable\n  }\n\n  public preventDefault() {\n    this.defaultPrevented = true\n  }\n\n  public stopPropagation() {}\n  public stopImmediatePropagation() {}\n}\n", "import { EventPolyfill } from './EventPolyfill'\n\nexport class ProgressEventPolyfill extends EventPolyfill {\n  readonly lengthComputable: boolean\n  readonly composed: boolean\n  readonly loaded: number\n  readonly total: number\n\n  constructor(type: string, init?: ProgressEventInit) {\n    super(type)\n\n    this.lengthComputable = init?.lengthComputable || false\n    this.composed = init?.composed || false\n    this.loaded = init?.loaded || 0\n    this.total = init?.total || 0\n  }\n}\n", "import { EventPolyfill } from '../polyfills/EventPolyfill'\nimport { ProgressEventPolyfill } from '../polyfills/ProgressEventPolyfill'\n\nconst SUPPORTS_PROGRESS_EVENT = typeof ProgressEvent !== 'undefined'\n\nexport function createEvent(\n  target: XMLHttpRequest,\n  type: string,\n  init?: ProgressEventInit\n): EventPolyfill {\n  const progressEvents = [\n    'error',\n    'progress',\n    'loadstart',\n    'loadend',\n    'load',\n    'timeout',\n    'abort',\n  ]\n\n  /**\n   * `ProgressEvent` is not supported in React Native.\n   * @see https://github.com/mswjs/interceptors/issues/40\n   */\n  const ProgressEventClass = SUPPORTS_PROGRESS_EVENT\n    ? ProgressEvent\n    : ProgressEventPolyfill\n\n  const event = progressEvents.includes(type)\n    ? new ProgressEventClass(type, {\n        lengthComputable: true,\n        loaded: init?.loaded || 0,\n        total: init?.total || 0,\n      })\n    : new EventPolyfill(type, {\n        target,\n        currentTarget: target,\n      })\n\n  return event\n}\n", "/**\n * XMLHttpRequest override class.\n * Inspired by https://github.com/marvinhagemeister/xhr-mocklet.\n */\nimport type { Debugger } from 'debug'\nimport { until } from '@open-draft/until'\nimport {\n  Headers,\n  stringToHeaders,\n  objectToHeaders,\n  headersToString,\n} from 'headers-polyfill'\nimport { DOMParser } from '@xmldom/xmldom'\nimport { parseJson } from '../../utils/parseJson'\nimport { toIsoResponse } from '../../utils/toIsoResponse'\nimport { bufferFrom } from './utils/bufferFrom'\nimport { createEvent } from './utils/createEvent'\nimport type { XMLHttpRequestEmitter } from '.'\nimport { IsomorphicRequest } from '../../IsomorphicRequest'\nimport { encodeBuffer } from '../../utils/bufferUtils'\nimport { InteractiveIsomorphicRequest } from '../../InteractiveIsomorphicRequest'\n\ntype XMLHttpRequestEventHandler = (\n  this: XMLHttpRequest,\n  event: Event | ProgressEvent<any>\n) => void\n\ninterface XMLHttpRequestEvent<EventMap extends any> {\n  name: keyof EventMap\n  listener: XMLHttpRequestEventHandler\n}\n\ninterface CreateXMLHttpRequestOverrideOptions {\n  XMLHttpRequest: typeof window.XMLHttpRequest\n  emitter: XMLHttpRequestEmitter\n  log: Debugger\n}\n\ninterface InternalXMLHttpRequestEventTargetEventMap\n  extends XMLHttpRequestEventTargetEventMap {\n  readystatechange: Event\n}\n\nexport type ExtractCallbacks<Key extends string> = Key extends\n  | 'abort'\n  | `on${infer _CallbackName}`\n  ? Key\n  : never\n\nexport const createXMLHttpRequestOverride = (\n  options: CreateXMLHttpRequestOverrideOptions\n) => {\n  const { XMLHttpRequest, emitter, log } = options\n\n  return class XMLHttpRequestOverride implements XMLHttpRequest {\n    _requestHeaders: Headers\n    _responseHeaders: Headers\n\n    // Collection of events modified by `addEventListener`/`removeEventListener` calls.\n    _events: XMLHttpRequestEvent<InternalXMLHttpRequestEventTargetEventMap>[] =\n      []\n\n    log: Debugger = log\n\n    /* Request state */\n    public static readonly UNSENT = 0\n    public static readonly OPENED = 1\n    public static readonly HEADERS_RECEIVED = 2\n    public static readonly LOADING = 3\n    public static readonly DONE = 4\n    public readonly UNSENT = 0\n    public readonly OPENED = 1\n    public readonly HEADERS_RECEIVED = 2\n    public readonly LOADING = 3\n    public readonly DONE = 4\n\n    /* Custom public properties */\n    public method: string\n    public url: string\n\n    /* XHR public properties */\n    public withCredentials: boolean\n    public status: number\n    public statusText: string\n    public user?: string\n    public password?: string\n    public async?: boolean\n    public response: any\n    public responseText: string\n    public responseType: XMLHttpRequestResponseType\n    public responseXML: Document | null\n    public responseURL: string\n    public upload: XMLHttpRequestUpload\n    public readyState: number\n    public onreadystatechange: (this: XMLHttpRequest, ev: Event) => any =\n      null as any\n    public timeout: number\n\n    /* Events */\n    public onabort: (\n      this: XMLHttpRequestEventTarget,\n      event: ProgressEvent\n    ) => any = null as any\n    public onerror: (this: XMLHttpRequestEventTarget, event: Event) => any =\n      null as any\n    public onload: (\n      this: XMLHttpRequestEventTarget,\n      event: ProgressEvent\n    ) => any = null as any\n    public onloadend: (\n      this: XMLHttpRequestEventTarget,\n      event: ProgressEvent\n    ) => any = null as any\n    public onloadstart: (\n      this: XMLHttpRequestEventTarget,\n      event: ProgressEvent\n    ) => any = null as any\n    public onprogress: (\n      this: XMLHttpRequestEventTarget,\n      event: ProgressEvent\n    ) => any = null as any\n    public ontimeout: (\n      this: XMLHttpRequestEventTarget,\n      event: ProgressEvent\n    ) => any = null as any\n\n    constructor() {\n      this.url = ''\n      this.method = 'GET'\n      this.readyState = this.UNSENT\n      this.withCredentials = false\n      this.status = 200\n      this.statusText = 'OK'\n      this.response = ''\n      this.responseType = 'text'\n      this.responseText = ''\n      this.responseXML = null\n      this.responseURL = ''\n      this.upload = {} as any\n      this.timeout = 0\n\n      this._requestHeaders = new Headers()\n      this._responseHeaders = new Headers()\n    }\n\n    setReadyState(nextState: number): void {\n      if (nextState === this.readyState) {\n        return\n      }\n\n      this.log('readyState change %d -> %d', this.readyState, nextState)\n      this.readyState = nextState\n\n      if (nextState !== this.UNSENT) {\n        this.log('triggering readystate change...')\n        this.trigger('readystatechange')\n      }\n    }\n\n    /**\n     * Triggers both direct callback and attached event listeners\n     * for the given event.\n     */\n    trigger<\n      K extends keyof (XMLHttpRequestEventTargetEventMap & {\n        readystatechange: ProgressEvent<XMLHttpRequestEventTarget>\n      })\n    >(eventName: K, options?: ProgressEventInit) {\n      this.log('trigger \"%s\" (%d)', eventName, this.readyState)\n      this.log('resolve listener for event \"%s\"', eventName)\n\n      // @ts-expect-error XMLHttpRequest class has no index signature.\n      const callback = this[`on${eventName}`] as XMLHttpRequestEventHandler\n      callback?.call(this, createEvent(this, eventName, options))\n\n      for (const event of this._events) {\n        if (event.name === eventName) {\n          log(\n            'calling mock event listener \"%s\" (%d)',\n            eventName,\n            this.readyState\n          )\n          event.listener.call(this, createEvent(this, eventName, options))\n        }\n      }\n\n      return this\n    }\n\n    reset() {\n      this.log('reset')\n\n      this.setReadyState(this.UNSENT)\n      this.status = 200\n      this.statusText = 'OK'\n      this.response = null as any\n      this.responseText = null as any\n      this.responseXML = null as any\n\n      this._requestHeaders = new Headers()\n      this._responseHeaders = new Headers()\n    }\n\n    public async open(\n      method: string,\n      url: string,\n      async: boolean = true,\n      user?: string,\n      password?: string\n    ) {\n      this.log = this.log.extend(`request ${method} ${url}`)\n      this.log('open', { method, url, async, user, password })\n\n      this.reset()\n      this.setReadyState(this.OPENED)\n\n      if (typeof url === 'undefined') {\n        this.url = method\n        this.method = 'GET'\n      } else {\n        this.url = url\n        this.method = method\n        this.async = async\n        this.user = user\n        this.password = password\n      }\n    }\n\n    public send(data?: string | ArrayBuffer) {\n      this.log('send %s %s', this.method, this.url)\n      let buffer: ArrayBuffer\n      if (typeof data === 'string') {\n        buffer = encodeBuffer(data)\n      } else {\n        buffer = data || new ArrayBuffer(0)\n      }\n\n      let url: URL\n\n      try {\n        url = new URL(this.url)\n      } catch (error) {\n        // Assume a relative URL, if construction of a new `URL` instance fails.\n        // Since `XMLHttpRequest` always executed in a DOM-like environment,\n        // resolve the relative request URL against the current window location.\n        url = new URL(this.url, window.location.href)\n      }\n\n      this.log('request headers', this._requestHeaders)\n\n      // Create an intercepted request instance exposed to the request intercepting middleware.\n      const isomorphicRequest = new IsomorphicRequest(url, {\n        body: buffer,\n        method: this.method,\n        headers: this._requestHeaders,\n        credentials: this.withCredentials ? 'include' : 'omit',\n      })\n\n      const interactiveIsomorphicRequest = new InteractiveIsomorphicRequest(\n        isomorphicRequest\n      )\n\n      this.log(\n        'emitting the \"request\" event for %d listener(s)...',\n        emitter.listenerCount('request')\n      )\n      emitter.emit('request', interactiveIsomorphicRequest)\n\n      this.log('awaiting mocked response...')\n\n      Promise.resolve(\n        until(async () => {\n          await emitter.untilIdle('request', ({ args: [request] }) => {\n            return request.id === interactiveIsomorphicRequest.id\n          })\n          this.log('all request listeners have been resolved!')\n\n          const [mockedResponse] =\n            await interactiveIsomorphicRequest.respondWith.invoked()\n          this.log('event.respondWith called with:', mockedResponse)\n\n          return mockedResponse\n        })\n      ).then(([middlewareException, mockedResponse]) => {\n        // When the request middleware throws an exception, error the request.\n        // This cancels the request and is similar to a network error.\n        if (middlewareException) {\n          this.log(\n            'middleware function threw an exception!',\n            middlewareException\n          )\n\n          // No way to propagate the actual error message.\n          this.trigger('error')\n          this.abort()\n\n          return\n        }\n\n        // Return a mocked response, if provided in the middleware.\n        if (mockedResponse) {\n          this.log('received mocked response', mockedResponse)\n\n          // Trigger a loadstart event to indicate the initialization of the fetch.\n          this.trigger('loadstart')\n\n          this.status = mockedResponse.status ?? 200\n          this.statusText = mockedResponse.statusText || 'OK'\n          this._responseHeaders = mockedResponse.headers\n            ? objectToHeaders(mockedResponse.headers)\n            : new Headers()\n\n          this.log('set response status', this.status, this.statusText)\n          this.log('set response headers', this._responseHeaders)\n\n          // Mark that response headers has been received\n          // and trigger a ready state event to reflect received headers\n          // in a custom `onreadystatechange` callback.\n          this.setReadyState(this.HEADERS_RECEIVED)\n\n          this.log('response type', this.responseType)\n          this.response = this.getResponseBody(mockedResponse.body)\n          this.responseURL = this.url\n          this.responseText = mockedResponse.body || ''\n          this.responseXML = this.getResponseXML()\n\n          this.log('set response body', this.response)\n\n          if (mockedResponse.body && this.response) {\n            this.setReadyState(this.LOADING)\n\n            // Presence of the mocked response implies a response body (not null).\n            // Presence of the coerced `this.response` implies the mocked body is valid.\n            const bodyBuffer = bufferFrom(mockedResponse.body)\n\n            // Trigger a progress event based on the mocked response body.\n            this.trigger('progress', {\n              loaded: bodyBuffer.length,\n              total: bodyBuffer.length,\n            })\n          }\n\n          /**\n           * Explicitly mark the request as done so its response never hangs.\n           * @see https://github.com/mswjs/interceptors/issues/13\n           */\n          this.setReadyState(this.DONE)\n\n          // Trigger a load event to indicate the fetch has succeeded.\n          this.trigger('load')\n          // Trigger a loadend event to indicate the fetch has completed.\n          this.trigger('loadend')\n\n          emitter.emit(\n            'response',\n            isomorphicRequest,\n            toIsoResponse(mockedResponse)\n          )\n        } else {\n          this.log('no mocked response received!')\n\n          // Perform an original request, when the request middleware returned no mocked response.\n          const originalRequest = new XMLHttpRequest()\n\n          this.log('opening an original request %s %s', this.method, this.url)\n          originalRequest.open(\n            this.method,\n            this.url,\n            this.async ?? true,\n            this.user,\n            this.password\n          )\n\n          // Reflect a successful state of the original request\n          // on the patched instance.\n          originalRequest.addEventListener('load', () => {\n            this.log('original \"onload\"')\n\n            this.status = originalRequest.status\n            this.statusText = originalRequest.statusText\n            this.responseURL = originalRequest.responseURL\n            this.responseType = originalRequest.responseType\n            this.response = originalRequest.response\n            this.responseText = originalRequest.responseText\n            this.responseXML = originalRequest.responseXML\n\n            this.log('set mock request readyState to DONE')\n\n            // Explicitly mark the mocked request instance as done\n            // so the response never hangs.\n            /**\n             * @note `readystatechange` listener is called TWICE\n             * in the case of unhandled request.\n             */\n            this.setReadyState(this.DONE)\n\n            this.log('received original response', this.status, this.statusText)\n            this.log('original response body:', this.response)\n\n            const responseHeaders = originalRequest.getAllResponseHeaders()\n            this.log('original response headers:\\n', responseHeaders)\n\n            this._responseHeaders = stringToHeaders(responseHeaders)\n            this.log(\n              'original response headers (normalized)',\n              this._responseHeaders\n            )\n\n            this.log('original response finished')\n\n            emitter.emit('response', isomorphicRequest, {\n              status: originalRequest.status,\n              statusText: originalRequest.statusText,\n              headers: this._responseHeaders,\n              body: originalRequest.response,\n            })\n          })\n\n          // Assign callbacks and event listeners from the intercepted XHR instance\n          // to the original XHR instance.\n          this.propagateCallbacks(originalRequest)\n          this.propagateListeners(originalRequest)\n          this.propagateHeaders(originalRequest, this._requestHeaders)\n\n          if (this.async) {\n            originalRequest.timeout = this.timeout\n          }\n\n          this.log('send', data)\n          originalRequest.send(data)\n        }\n      })\n    }\n\n    public abort() {\n      this.log('abort')\n\n      if (this.readyState > this.UNSENT && this.readyState < this.DONE) {\n        this.setReadyState(this.UNSENT)\n        this.trigger('abort')\n      }\n    }\n\n    dispatchEvent() {\n      return false\n    }\n\n    public setRequestHeader(name: string, value: string) {\n      this.log('set request header \"%s\" to \"%s\"', name, value)\n      this._requestHeaders.append(name, value)\n    }\n\n    public getResponseHeader(name: string): string | null {\n      this.log('get response header \"%s\"', name)\n\n      if (this.readyState < this.HEADERS_RECEIVED) {\n        this.log(\n          'cannot return a header: headers not received (state: %s)',\n          this.readyState\n        )\n        return null\n      }\n\n      const headerValue = this._responseHeaders.get(name)\n\n      this.log(\n        'resolved response header \"%s\" to \"%s\"',\n        name,\n        headerValue,\n        this._responseHeaders\n      )\n\n      return headerValue\n    }\n\n    public getAllResponseHeaders(): string {\n      this.log('get all response headers')\n\n      if (this.readyState < this.HEADERS_RECEIVED) {\n        this.log(\n          'cannot return headers: headers not received (state: %s)',\n          this.readyState\n        )\n        return ''\n      }\n\n      return headersToString(this._responseHeaders)\n    }\n\n    public addEventListener<\n      K extends keyof InternalXMLHttpRequestEventTargetEventMap\n    >(name: K, listener: XMLHttpRequestEventHandler) {\n      this.log('addEventListener', name, listener)\n      this._events.push({\n        name,\n        listener,\n      })\n    }\n\n    public removeEventListener<K extends keyof XMLHttpRequestEventMap>(\n      name: K,\n      listener: (event?: XMLHttpRequestEventMap[K]) => void\n    ): void {\n      this.log('removeEventListener', name, listener)\n      this._events = this._events.filter((storedEvent) => {\n        return storedEvent.name !== name && storedEvent.listener !== listener\n      })\n    }\n\n    public overrideMimeType() {}\n\n    /**\n     * Resolves the response based on the `responseType` value.\n     */\n    getResponseBody(body: string | undefined) {\n      // Handle an improperly set \"null\" value of the mocked response body.\n      const textBody = body ?? ''\n      this.log('coerced response body to', textBody)\n\n      switch (this.responseType) {\n        case 'json': {\n          this.log('resolving response body as JSON')\n          return parseJson(textBody)\n        }\n\n        case 'blob': {\n          const blobType =\n            this.getResponseHeader('content-type') || 'text/plain'\n          this.log('resolving response body as Blob', { type: blobType })\n\n          return new Blob([textBody], {\n            type: blobType,\n          })\n        }\n\n        case 'arraybuffer': {\n          this.log('resolving response body as ArrayBuffer')\n          const arrayBuffer = bufferFrom(textBody)\n          return arrayBuffer\n        }\n\n        default:\n          return textBody\n      }\n    }\n\n    getResponseXML() {\n      const contentType = this.getResponseHeader('Content-Type')\n      if (contentType === 'application/xml' || contentType === 'text/xml') {\n        return new DOMParser().parseFromString(this.responseText, contentType)\n      }\n      return null\n    }\n\n    /**\n     * Propagates mock XMLHttpRequest instance callbacks\n     * to the given XMLHttpRequest instance.\n     */\n    propagateCallbacks(request: XMLHttpRequest) {\n      this.log('propagating request callbacks to the original request')\n      const callbackNames: Array<ExtractCallbacks<keyof XMLHttpRequest>> = [\n        'abort',\n        'onerror',\n        'ontimeout',\n        'onload',\n        'onloadstart',\n        'onloadend',\n        'onprogress',\n        'onreadystatechange',\n      ]\n\n      for (const callbackName of callbackNames) {\n        const callback = this[callbackName]\n\n        if (callback) {\n          request[callbackName] = this[callbackName] as any\n\n          this.log('propagated the \"%s\" callback', callbackName, callback)\n        }\n      }\n\n      request.onabort = this.abort\n      request.onerror = this.onerror\n      request.ontimeout = this.ontimeout\n      request.onload = this.onload\n      request.onloadstart = this.onloadstart\n      request.onloadend = this.onloadend\n      request.onprogress = this.onprogress\n      request.onreadystatechange = this.onreadystatechange\n    }\n\n    /**\n     * Propagates the mock XMLHttpRequest instance listeners\n     * to the given XMLHttpRequest instance.\n     */\n    propagateListeners(request: XMLHttpRequest) {\n      this.log(\n        'propagating request listeners (%d) to the original request',\n        this._events.length,\n        this._events\n      )\n\n      this._events.forEach(({ name, listener }) => {\n        request.addEventListener(name, listener)\n      })\n    }\n\n    propagateHeaders(request: XMLHttpRequest, headers: Headers) {\n      this.log('propagating request headers to the original request', headers)\n\n      // Preserve the request headers casing.\n      Object.entries(headers.raw()).forEach(([name, value]) => {\n        this.log(\n          'setting \"%s\" (%s) header on the original request',\n          name,\n          value\n        )\n        request.setRequestHeader(name, value)\n      })\n    }\n  }\n}\n", "import { invariant } from 'outvariant'\nimport { HttpRequestEventMap, IS_PATCHED_MODULE } from '../../glossary'\nimport { InteractiveIsomorphicRequest } from '../../InteractiveIsomorphicRequest'\nimport { Interceptor } from '../../Interceptor'\nimport { AsyncEventEmitter } from '../../utils/AsyncEventEmitter'\nimport { createXMLHttpRequestOverride } from './XMLHttpRequestOverride'\n\nexport type XMLHttpRequestEventListener = (\n  request: InteractiveIsomorphicRequest\n) => Promise<void> | void\n\nexport type XMLHttpRequestEmitter = AsyncEventEmitter<HttpRequestEventMap>\n\nexport class XMLHttpRequestInterceptor extends Interceptor<HttpRequestEventMap> {\n  static symbol = Symbol('xhr')\n\n  constructor() {\n    super(XMLHttpRequestInterceptor.symbol)\n  }\n\n  protected checkEnvironment() {\n    return (\n      typeof window !== 'undefined' &&\n      typeof window.XMLHttpRequest !== 'undefined'\n    )\n  }\n\n  protected setup() {\n    const log = this.log.extend('setup')\n\n    log('patching \"XMLHttpRequest\" module...')\n\n    const PureXMLHttpRequest = window.XMLHttpRequest\n\n    invariant(\n      !(PureXMLHttpRequest as any)[IS_PATCHED_MODULE],\n      'Failed to patch the \"XMLHttpRequest\" module: already patched.'\n    )\n\n    window.XMLHttpRequest = createXMLHttpRequestOverride({\n      XMLHttpRequest: PureXMLHttpRequest,\n      emitter: this.emitter,\n      log: this.log,\n    })\n\n    log('native \"XMLHttpRequest\" module patched!', window.XMLHttpRequest.name)\n\n    Object.defineProperty(window.XMLHttpRequest, IS_PATCHED_MODULE, {\n      enumerable: true,\n      configurable: true,\n      value: true,\n    })\n\n    this.subscriptions.push(() => {\n      Object.defineProperty(window.XMLHttpRequest, IS_PATCHED_MODULE, {\n        value: undefined,\n      })\n\n      window.XMLHttpRequest = PureXMLHttpRequest\n      log(\n        'native \"XMLHttpRequest\" module restored!',\n        window.XMLHttpRequest.name\n      )\n    })\n  }\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MemoryLeakError = void 0;\nclass MemoryLeakError extends Error {\n    emitter;\n    type;\n    count;\n    constructor(emitter, type, count) {\n        super(`Possible EventEmitter memory leak detected. ${count} ${type.toString()} listeners added. Use emitter.setMaxListeners() to increase limit`);\n        this.emitter = emitter;\n        this.type = type;\n        this.count = count;\n        this.name = 'MaxListenersExceededWarning';\n    }\n}\nexports.MemoryLeakError = MemoryLeakError;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Emitter = void 0;\nconst MemoryLeakError_1 = require(\"./MemoryLeakError\");\n/**\n * Node.js-compatible implementation of `EventEmitter`.\n *\n * @example\n * const emitter = new Emitter<{ hello: [string] }>()\n * emitter.on('hello', (name) => console.log(name))\n * emitter.emit('hello', 'John')\n */\nclass Emitter {\n    events;\n    maxListeners;\n    hasWarnedAboutPotentialMemortyLeak;\n    static defaultMaxListeners = 10;\n    static listenerCount(emitter, eventName) {\n        return emitter.listenerCount(eventName);\n    }\n    constructor() {\n        this.events = new Map();\n        this.maxListeners = Emitter.defaultMaxListeners;\n        this.hasWarnedAboutPotentialMemortyLeak = false;\n    }\n    _emitInternalEvent(internalEventName, eventName, listener) {\n        this.emit(internalEventName, \n        // Anything to make TypeScript happy.\n        ...[eventName, listener]);\n    }\n    _getListeners(eventName) {\n        return this.events.get(eventName) || [];\n    }\n    _removeListener(listeners, listener) {\n        const index = listeners.indexOf(listener);\n        if (index > -1) {\n            listeners.splice(index, 1);\n        }\n        return [];\n    }\n    _wrapOnceListener(eventName, listener) {\n        const onceListener = (...data) => {\n            this.removeListener(eventName, onceListener);\n            listener.apply(this, data);\n        };\n        return onceListener;\n    }\n    setMaxListeners(maxListeners) {\n        this.maxListeners = maxListeners;\n        return this;\n    }\n    /**\n     * Returns the current max listener value for the `Emitter` which is\n     * either set by `emitter.setMaxListeners(n)` or defaults to\n     * `Emitteer.defaultMaxListeners`.\n     */\n    getMaxListeners() {\n        return this.maxListeners;\n    }\n    /**\n     * Returns an array listing the events for which the emitter has registered listeners.\n     * The values in the array will be strings or Symbols.\n     */\n    eventNames() {\n        return Array.from(this.events.keys());\n    }\n    /**\n     * Synchronously calls each of the listeners registered for the event named `eventName`,\n     * in the order they were registered, passing the supplied arguments to each.\n     * Returns `true` if the event has listeners, `false` otherwise.\n     *\n     * @example\n     * const emitter = new Emitter<{ hello: [string] }>()\n     * emitter.emit('hello', 'John')\n     */\n    emit(eventName, ...data) {\n        const listeners = this._getListeners(eventName);\n        listeners.forEach((listener) => {\n            listener.apply(this, data);\n        });\n        return listeners.length > 0;\n    }\n    addListener(eventName, listener) {\n        // Emit the `newListener` event before adding the listener.\n        this._emitInternalEvent('newListener', eventName, listener);\n        const nextListeners = this._getListeners(eventName).concat(listener);\n        this.events.set(eventName, nextListeners);\n        if (this.maxListeners > 0 &&\n            this.listenerCount(eventName) > this.maxListeners &&\n            !this.hasWarnedAboutPotentialMemortyLeak) {\n            this.hasWarnedAboutPotentialMemortyLeak = true;\n            const memoryLeakWarning = new MemoryLeakError_1.MemoryLeakError(this, eventName, this.listenerCount(eventName));\n            console.warn(memoryLeakWarning);\n        }\n        return this;\n    }\n    on(eventName, listener) {\n        return this.addListener(eventName, listener);\n    }\n    once(eventName, listener) {\n        return this.addListener(eventName, this._wrapOnceListener(eventName, listener));\n    }\n    prependListener(eventName, listener) {\n        const listeners = this._getListeners(eventName);\n        if (listeners.length > 0) {\n            const nextListeners = [listener].concat(listeners);\n            this.events.set(eventName, nextListeners);\n        }\n        else {\n            this.events.set(eventName, listeners.concat(listener));\n        }\n        return this;\n    }\n    prependOnceListener(eventName, listener) {\n        return this.prependListener(eventName, this._wrapOnceListener(eventName, listener));\n    }\n    removeListener(eventName, listener) {\n        const listeners = this._getListeners(eventName);\n        if (listeners.length > 0) {\n            this._removeListener(listeners, listener);\n            this.events.set(eventName, listeners);\n            // Emit the `removeListener` event after removing the listener.\n            this._emitInternalEvent('removeListener', eventName, listener);\n        }\n        return this;\n    }\n    /**\n     * Alias for `emitter.removeListener()`.\n     *\n     * @example\n     * emitter.off('hello', listener)\n     */\n    off(eventName, listener) {\n        return this.removeListener(eventName, listener);\n    }\n    removeAllListeners(eventName) {\n        if (eventName) {\n            this.events.delete(eventName);\n        }\n        else {\n            this.events.clear();\n        }\n        return this;\n    }\n    /**\n     * Returns a copy of the array of listeners for the event named `eventName`.\n     */\n    listeners(eventName) {\n        return Array.from(this._getListeners(eventName));\n    }\n    /**\n     * Returns the number of listeners listening to the event named `eventName`.\n     */\n    listenerCount(eventName) {\n        return this._getListeners(eventName).length;\n    }\n    rawListeners(eventName) {\n        return this.listeners(eventName);\n    }\n}\nexports.Emitter = Emitter;\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./Emitter\"), exports);\n__exportStar(require(\"./MemoryLeakError\"), exports);\n", "import * as context from './context'\nimport { checkGlobals } from './utils/internal/checkGlobals'\nexport { context }\n\nexport { setupWorker } from './setupWorker/setupWorker'\n\nexport { SetupApi } from './SetupApi'\n\nexport {\n  response,\n  defaultResponse,\n  createResponseComposition,\n} from './response'\n\n/* Request handlers */\nexport { RequestHandler, defaultContext } from './handlers/RequestHandler'\nexport { rest } from './rest'\nexport { RestHandler, RESTMethods, restContext } from './handlers/RestHandler'\nexport { graphql } from './graphql'\nexport { GraphQLHandler, graphqlContext } from './handlers/GraphQLHandler'\n\n/* Utils */\nexport { matchRequestUrl } from './utils/matching/matchRequestUrl'\nexport { compose } from './utils/internal/compose'\nexport * from './utils/handleRequest'\nexport { cleanUrl } from './utils/url/cleanUrl'\n\n/**\n * Type definitions.\n */\nexport type { SetupWorker, StartOptions } from './setupWorker/glossary'\nexport { SetupWorkerApi } from './setupWorker/setupWorker'\nexport type { SharedOptions } from './sharedOptions'\n\nexport * from './utils/request/MockedRequest'\nexport type {\n  ResponseResolver,\n  ResponseResolverReturnType,\n  AsyncResponseResolverReturnType,\n  DefaultBodyType,\n  DefaultRequestMultipartBody,\n} from './handlers/RequestHandler'\n\nexport type {\n  MockedResponse,\n  ResponseTransformer,\n  ResponseComposition,\n  ResponseCompositionOptions,\n  ResponseFunction,\n} from './response'\n\nexport type {\n  RestRequest,\n  RestContext,\n  RequestQuery,\n  ParsedRestRequest,\n} from './handlers/RestHandler'\n\nexport type {\n  GraphQLContext,\n  GraphQLVariables,\n  GraphQLRequest,\n  GraphQLRequestBody,\n  GraphQLJsonRequestBody,\n} from './handlers/GraphQLHandler'\n\nexport type { Path, PathParams, Match } from './utils/matching/matchRequestUrl'\nexport type { DelayMode } from './context/delay'\nexport { ParsedGraphQLRequest } from './utils/internal/parseGraphQLRequest'\n\n// Validate environmental globals before executing any code.\n// This ensures that the library gives user-friendly errors\n// when ran in the environments that require additional polyfills\n// from the end user.\ncheckGlobals()\n", "export { status } from './status'\nexport { set } from './set'\nexport { cookie } from './cookie'\nexport { body } from './body'\nexport { data } from './data'\nexport { extensions } from './extensions'\nexport { delay } from './delay'\nexport { errors } from './errors'\nexport { fetch } from './fetch'\nexport { json } from './json'\nexport { text } from './text'\nexport { xml } from './xml'\n", "import statuses from 'statuses/codes.json'\nimport { ResponseTransformer } from '../response'\n\n/**\n * Sets a response status code and text.\n * @example\n * res(ctx.status(301))\n * res(ctx.status(400, 'Custom status text'))\n * @see {@link https://mswjs.io/docs/api/context/status `ctx.status()`}\n */\nexport const status = (\n  statusCode: number,\n  statusText?: string,\n): ResponseTransformer => {\n  return (res) => {\n    res.status = statusCode\n    res.statusText =\n      statusText || statuses[String(statusCode) as keyof typeof statuses]\n\n    return res\n  }\n}\n", "import { objectToHeaders } from 'headers-polyfill'\nimport { ResponseTransformer } from '../response'\n\nexport type HeadersObject<KeyType extends string = string> = Record<\n  KeyType,\n  string | string[]\n>\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name\n */\nexport type ForbiddenHeaderNames =\n  | 'cookie'\n  | 'cookie2'\n  | 'set-cookie'\n  | 'set-cookie2'\n\nexport type ForbiddenHeaderError<HeaderName extends string> =\n  `SafeResponseHeader: the '${HeaderName}' header cannot be set on the response. Please use the 'ctx.cookie()' function instead.`\n\n/**\n * Sets one or multiple response headers.\n * @example\n * ctx.set('Content-Type', 'text/plain')\n * ctx.set({\n *   'Accept': 'application/javascript',\n *   'Content-Type': \"text/plain\"\n * })\n * @see {@link https://mswjs.io/docs/api/context/set `ctx.set()`}\n */\nexport function set<N extends string | HeadersObject>(\n  ...args: N extends string\n    ? Lowercase<N> extends ForbiddenHeaderNames\n      ? [ForbiddenHeaderError<N>]\n      : [N, string]\n    : N extends HeadersObject<infer CookieName>\n    ? Lowercase<CookieName> extends ForbiddenHeaderNames\n      ? [ForbiddenHeaderError<CookieName>]\n      : [N]\n    : [N]\n): ResponseTransformer {\n  return (res) => {\n    const [name, value] = args\n\n    if (typeof name === 'string') {\n      res.headers.append(name, value as string)\n    } else {\n      const headers = objectToHeaders(name)\n      headers.forEach((value, name) => {\n        res.headers.append(name, value)\n      })\n    }\n\n    return res\n  }\n}\n", "import * as cookieUtils from 'cookie'\nimport { ResponseTransformer } from '../response'\n\n/**\n * Sets a given cookie on the mocked response.\n * @example res(ctx.cookie('name', 'value'))\n */\nexport const cookie = (\n  name: string,\n  value: string,\n  options?: cookieUtils.CookieSerializeOptions,\n): ResponseTransformer => {\n  return (res) => {\n    const serializedCookie = cookieUtils.serialize(name, value, options)\n    res.headers.append('Set-Cookie', serializedCookie)\n\n    if (typeof document !== 'undefined') {\n      document.cookie = serializedCookie\n    }\n\n    return res\n  }\n}\n", "import { ResponseTransformer } from '../response'\n\n/**\n * Sets a raw response body. Does not append any `Content-Type` headers.\n * @example\n * res(ctx.body('Successful response'))\n * res(ctx.body(JSON.stringify({ key: 'value' })))\n * @see {@link https://mswjs.io/docs/api/context/body `ctx.body()`}\n */\nexport const body = <\n  BodyType extends string | Blob | BufferSource | ReadableStream | FormData,\n>(\n  value: BodyType,\n): ResponseTransformer<BodyType> => {\n  return (res) => {\n    res.body = value\n    return res\n  }\n}\n", "/**\n * Parses a given value into a JSON.\n * Does not throw an exception on an invalid JSON string.\n */\nexport function jsonParse<ValueType extends Record<string, any>>(\n  value: any,\n): ValueType | undefined {\n  try {\n    return JSON.parse(value)\n  } catch (error) {\n    return undefined\n  }\n}\n", "/**\n * Determines if the given value is an object.\n */\nexport function isObject(value: any): boolean {\n  return value != null && typeof value === 'object' && !Array.isArray(value)\n}\n", "import { isObject } from './isObject'\n\n/**\n * Deeply merges two given objects with the right one\n * having a priority during property assignment.\n */\nexport function mergeRight(\n  left: Record<string, any>,\n  right: Record<string, any>,\n) {\n  return Object.entries(right).reduce((result, [key, rightValue]) => {\n    const leftValue = result[key]\n\n    if (Array.isArray(leftValue) && Array.isArray(rightValue)) {\n      result[key] = leftValue.concat(rightValue)\n      return result\n    }\n\n    if (isObject(leftValue) && isObject(rightValue)) {\n      result[key] = mergeRight(leftValue, rightValue)\n      return result\n    }\n\n    result[key] = rightValue\n    return result\n  }, Object.assign({}, left))\n}\n", "import { ResponseTransformer } from '../response'\n\n/**\n * Sets the given value as the JSON body of the response.\n * Appends a `Content-Type: application/json` header on the\n * mocked response.\n * @example\n * res(ctx.json('Some string'))\n * res(ctx.json({ key: 'value' }))\n * res(ctx.json([1, '2', false, { ok: true }]))\n * @see {@link https://mswjs.io/docs/api/context/json `ctx.json()`}\n */\nexport const json = <BodyTypeJSON>(\n  body: BodyTypeJSON,\n): ResponseTransformer<BodyTypeJSON> => {\n  return (res) => {\n    res.headers.set('Content-Type', 'application/json')\n    res.body = JSON.stringify(body) as any\n\n    return res\n  }\n}\n", "import { jsonParse } from '../utils/internal/jsonParse'\nimport { mergeRight } from '../utils/internal/mergeRight'\nimport { json } from './json'\nimport { GraphQLPayloadContext } from '../typeUtils'\n\n/**\n * Sets a given payload as a GraphQL response body.\n * @example\n * res(ctx.data({ user: { firstName: 'John' }}))\n * @see {@link https://mswjs.io/docs/api/context/data `ctx.data()`}\n */\nexport const data: GraphQLPayloadContext<Record<string, unknown>> = (\n  payload,\n) => {\n  return (res) => {\n    const prevBody = jsonParse(res.body) || {}\n    const nextBody = mergeRight(prevBody, { data: payload })\n\n    return json(nextBody)(res)\n  }\n}\n", "import { jsonParse } from '../utils/internal/jsonParse'\nimport { mergeRight } from '../utils/internal/mergeRight'\nimport { json } from './json'\nimport { GraphQLPayloadContext } from '../typeUtils'\n\n/**\n * Sets the GraphQL extensions on a given response.\n * @example\n * res(ctx.extensions({ tracing: { version: 1 }}))\n * @see {@link https://mswjs.io/docs/api/context/extensions `ctx.extensions()`}\n */\nexport const extensions: GraphQLPayloadContext<Record<string, unknown>> = (\n  payload,\n) => {\n  return (res) => {\n    const prevBody = jsonParse(res.body) || {}\n    const nextBody = mergeRight(prevBody, { extensions: payload })\n    return json(nextBody)(res)\n  }\n}\n", "import { isNodeProcess } from 'is-node-process'\nimport { ResponseTransformer } from '../response'\n\nexport const SET_TIMEOUT_MAX_ALLOWED_INT = 2147483647\nexport const MIN_SERVER_RESPONSE_TIME = 100\nexport const MAX_SERVER_RESPONSE_TIME = 400\nexport const NODE_SERVER_RESPONSE_TIME = 5\n\nconst getRandomServerResponseTime = () => {\n  if (isNodeProcess()) {\n    return NODE_SERVER_RESPONSE_TIME\n  }\n\n  return Math.floor(\n    Math.random() * (MAX_SERVER_RESPONSE_TIME - MIN_SERVER_RESPONSE_TIME) +\n      MIN_SERVER_RESPONSE_TIME,\n  )\n}\n\nexport type DelayMode = 'real' | 'infinite'\n\n/**\n * Delays the response by the given duration (ms).\n * @example\n * res(ctx.delay(1200)) // delay response by 1200ms\n * res(ctx.delay()) // emulate realistic server response time\n * res(ctx.delay('infinite')) // delay response infinitely\n * @see {@link https://mswjs.io/docs/api/context/delay `ctx.delay()`}\n */\nexport const delay = (\n  durationOrMode?: DelayMode | number,\n): ResponseTransformer => {\n  return (res) => {\n    let delayTime: number\n\n    if (typeof durationOrMode === 'string') {\n      switch (durationOrMode) {\n        case 'infinite': {\n          // Using `Infinity` as a delay value executes the response timeout immediately.\n          // Instead, use the maximum allowed integer for `setTimeout`.\n          delayTime = SET_TIMEOUT_MAX_ALLOWED_INT\n          break\n        }\n        case 'real': {\n          delayTime = getRandomServerResponseTime()\n          break\n        }\n        default: {\n          throw new Error(\n            `Failed to delay a response: unknown delay mode \"${durationOrMode}\". Please make sure you provide one of the supported modes (\"real\", \"infinite\") or a number to \"ctx.delay\".`,\n          )\n        }\n      }\n    } else if (typeof durationOrMode === 'undefined') {\n      // Use random realistic server response time when no explicit delay duration was provided.\n      delayTime = getRandomServerResponseTime()\n    } else {\n      // Guard against passing values like `Infinity` or `Number.MAX_VALUE`\n      // as the response delay duration. They don't produce the result you may expect.\n      if (durationOrMode > SET_TIMEOUT_MAX_ALLOWED_INT) {\n        throw new Error(\n          `Failed to delay a response: provided delay duration (${durationOrMode}) exceeds the maximum allowed duration for \"setTimeout\" (${SET_TIMEOUT_MAX_ALLOWED_INT}). This will cause the response to be returned immediately. Please use a number within the allowed range to delay the response by exact duration, or consider the \"infinite\" delay mode to delay the response indefinitely.`,\n        )\n      }\n\n      delayTime = durationOrMode\n    }\n\n    res.delay = delayTime\n    return res\n  }\n}\n", "import type { GraphQLError } from 'graphql'\nimport { ResponseTransformer } from '../response'\nimport { jsonParse } from '../utils/internal/jsonParse'\nimport { mergeRight } from '../utils/internal/mergeRight'\nimport { json } from './json'\n\n/**\n * Sets a given list of GraphQL errors on the mocked response.\n * @example res(ctx.errors([{ message: 'Unauthorized' }]))\n * @see {@link https://mswjs.io/docs/api/context/errors}\n */\nexport const errors = <\n  ErrorsType extends readonly Partial<GraphQLError>[] | null | undefined,\n>(\n  errorsList: ErrorsType,\n): ResponseTransformer<string> => {\n  return (res) => {\n    if (errorsList == null) {\n      return res\n    }\n\n    const prevBody = jsonParse(res.body) || {}\n    const nextBody = mergeRight(prevBody, { errors: errorsList })\n\n    return json(nextBody)(res as any) as any\n  }\n}\n", "import { isNodeProcess } from 'is-node-process'\nimport { Headers } from 'headers-polyfill'\nimport { MockedRequest } from '../utils/request/MockedRequest'\n\nconst useFetch: (input: RequestInfo, init?: RequestInit) => Promise<Response> =\n  isNodeProcess()\n    ? (input, init) =>\n        import('node-fetch').then(({ default: nodeFetch }) =>\n          (nodeFetch as unknown as typeof window.fetch)(input, init),\n        )\n    : globalThis.fetch\n\nexport const augmentRequestInit = (requestInit: RequestInit): RequestInit => {\n  const headers = new Headers(requestInit.headers)\n  headers.set('x-msw-bypass', 'true')\n\n  return {\n    ...requestInit,\n    headers: headers.all(),\n  }\n}\n\nconst createFetchRequestParameters = (input: MockedRequest): RequestInit => {\n  const { body, method } = input\n  const requestParameters: RequestInit = {\n    ...input,\n    body: undefined,\n  }\n\n  if (['GET', 'HEAD'].includes(method)) {\n    return requestParameters\n  }\n\n  if (\n    typeof body === 'object' ||\n    typeof body === 'number' ||\n    typeof body === 'boolean'\n  ) {\n    requestParameters.body = JSON.stringify(body)\n  } else {\n    requestParameters.body = body\n  }\n\n  return requestParameters\n}\n\n/**\n * Performs a bypassed request inside a request handler.\n * @example\n * const originalResponse = await ctx.fetch(req)\n * @see {@link https://mswjs.io/docs/api/context/fetch `ctx.fetch()`}\n */\nexport const fetch = (\n  input: string | MockedRequest,\n  requestInit: RequestInit = {},\n): Promise<Response> => {\n  if (typeof input === 'string') {\n    return useFetch(input, augmentRequestInit(requestInit))\n  }\n\n  const requestParameters = createFetchRequestParameters(input)\n  const derivedRequestInit = augmentRequestInit(requestParameters)\n\n  return useFetch(input.url.href, derivedRequestInit)\n}\n", "import { ResponseTransformer } from '../response'\n\n/**\n * Sets a textual response body. Appends a `Content-Type: text/plain`\n * header on the mocked response.\n * @example res(ctx.text('Successful response'))\n * @see {@link https://mswjs.io/docs/api/context/text `ctx.text()`}\n */\nexport const text = <BodyType extends string>(\n  body: BodyType,\n): ResponseTransformer<BodyType> => {\n  return (res) => {\n    res.headers.set('Content-Type', 'text/plain')\n    res.body = body\n    return res\n  }\n}\n", "import { ResponseTransformer } from '../response'\n\n/**\n * Sets an XML response body. Appends a `Content-Type: text/xml` header\n * on the mocked response.\n * @example\n * res(ctx.xml('<node key=\"value\">Content</node>'))\n * @see {@link https://mswjs.io/docs/api/context/xml `ctx.xml()`}\n */\nexport const xml = <BodyType extends string>(\n  body: BodyType,\n): ResponseTransformer<BodyType> => {\n  return (res) => {\n    res.headers.set('Content-Type', 'text/xml')\n    res.body = body\n    return res\n  }\n}\n", "import { invariant } from 'outvariant'\nimport { devUtils } from './devUtils'\n\nexport function checkGlobals() {\n  /**\n   * MSW expects the \"URL\" constructor to be defined.\n   * It's not present in React Native so suggest a polyfill\n   * instead of failing silently.\n   * @see https://github.com/mswjs/msw/issues/1408\n   */\n  invariant(\n    typeof URL !== 'undefined',\n    devUtils.formatMessage(\n      `Global \"URL\" class is not defined. This likely means that you're running MSW in an environment that doesn't support all Node.js standard API (e.g. React Native). If that's the case, please use an appropriate polyfill for the \"URL\" class, like \"react-native-url-polyfill\".`,\n    ),\n  )\n}\n", "import { format } from 'outvariant'\n\nconst LIBRARY_PREFIX = '[MSW]'\n\n/**\n * Formats a given message by appending the library's prefix string.\n */\nfunction formatMessage(message: string, ...positionals: any[]): string {\n  const interpolatedMessage = format(message, ...positionals)\n  return `${LIBRARY_PREFIX} ${interpolatedMessage}`\n}\n\n/**\n * Prints a library-specific warning.\n */\nfunction warn(message: string, ...positionals: any[]): void {\n  console.warn(formatMessage(message, ...positionals))\n}\n\n/**\n * Prints a library-specific error.\n */\nfunction error(message: string, ...positionals: any[]): void {\n  console.error(formatMessage(message, ...positionals))\n}\n\nexport const devUtils = {\n  formatMessage,\n  warn,\n  error,\n}\n", "import { invariant } from 'outvariant'\nimport { isNodeProcess } from 'is-node-process'\nimport {\n  SetupWorkerInternalContext,\n  ServiceWorkerIncomingEventsMap,\n  WorkerLifecycleEventsMap,\n  StartReturnType,\n  StopHandler,\n  StartHandler,\n  StartOptions,\n} from './glossary'\nimport { createStartHandler } from './start/createStartHandler'\nimport { createStop } from './stop/createStop'\nimport { ServiceWorkerMessage } from './start/utils/createMessageChannel'\nimport { RequestHandler } from '../handlers/RequestHandler'\nimport { DEFAULT_START_OPTIONS } from './start/utils/prepareStartHandler'\nimport { createFallbackStart } from './start/createFallbackStart'\nimport { createFallbackStop } from './stop/createFallbackStop'\nimport { devUtils } from '../utils/internal/devUtils'\nimport { SetupApi } from '../SetupApi'\nimport { mergeRight } from '../utils/internal/mergeRight'\nimport { SetupWorker } from './glossary'\n\ninterface Listener {\n  target: EventTarget\n  eventType: string\n  callback: EventListener\n}\n\nexport class SetupWorkerApi\n  extends SetupApi<WorkerLifecycleEventsMap>\n  implements SetupWorker\n{\n  private context: SetupWorkerInternalContext\n  private startHandler: StartHandler = null as any\n  private stopHandler: StopHandler = null as any\n  private listeners: Array<Listener>\n\n  constructor(...handlers: Array<RequestHandler>) {\n    super(...handlers)\n\n    invariant(\n      !isNodeProcess(),\n      devUtils.formatMessage(\n        'Failed to execute `setupWorker` in a non-browser environment. Consider using `setupServer` for Node.js environment instead.',\n      ),\n    )\n\n    this.listeners = []\n    this.context = this.createWorkerContext()\n  }\n\n  private createWorkerContext(): SetupWorkerInternalContext {\n    const context = {\n      // Mocking is not considered enabled until the worker\n      // signals back the successful activation event.\n      isMockingEnabled: false,\n      startOptions: null as any,\n      worker: null,\n      registration: null,\n      requestHandlers: this.currentHandlers,\n      emitter: this.emitter,\n      workerChannel: {\n        on: <EventType extends keyof ServiceWorkerIncomingEventsMap>(\n          eventType: EventType,\n          callback: (\n            event: MessageEvent,\n            message: ServiceWorkerMessage<\n              EventType,\n              ServiceWorkerIncomingEventsMap[EventType]\n            >,\n          ) => void,\n        ) => {\n          this.context.events.addListener(\n            navigator.serviceWorker,\n            'message',\n            (event: MessageEvent) => {\n              // Avoid messages broadcasted from unrelated workers.\n              if (event.source !== this.context.worker) {\n                return\n              }\n\n              const message = event.data as ServiceWorkerMessage<\n                typeof eventType,\n                any\n              >\n\n              if (!message) {\n                return\n              }\n\n              if (message.type === eventType) {\n                callback(event, message)\n              }\n            },\n          )\n        },\n        send: (type: any) => {\n          this.context.worker?.postMessage(type)\n        },\n      },\n      events: {\n        addListener: (\n          target: EventTarget,\n          eventType: string,\n          callback: EventListener,\n        ) => {\n          target.addEventListener(eventType, callback)\n          this.listeners.push({ eventType, target, callback })\n\n          return () => {\n            target.removeEventListener(eventType, callback)\n          }\n        },\n        removeAllListeners: () => {\n          for (const { target, eventType, callback } of this.listeners) {\n            target.removeEventListener(eventType, callback)\n          }\n          this.listeners = []\n        },\n        once: <EventType extends keyof ServiceWorkerIncomingEventsMap>(\n          eventType: EventType,\n        ) => {\n          const bindings: Array<() => void> = []\n\n          return new Promise<\n            ServiceWorkerMessage<\n              typeof eventType,\n              ServiceWorkerIncomingEventsMap[typeof eventType]\n            >\n          >((resolve, reject) => {\n            const handleIncomingMessage = (event: MessageEvent) => {\n              try {\n                const message = event.data\n\n                if (message.type === eventType) {\n                  resolve(message)\n                }\n              } catch (error) {\n                reject(error)\n              }\n            }\n\n            bindings.push(\n              this.context.events.addListener(\n                navigator.serviceWorker,\n                'message',\n                handleIncomingMessage,\n              ),\n              this.context.events.addListener(\n                navigator.serviceWorker,\n                'messageerror',\n                reject,\n              ),\n            )\n          }).finally(() => {\n            bindings.forEach((unbind) => unbind())\n          })\n        },\n      },\n      useFallbackMode:\n        !('serviceWorker' in navigator) || location.protocol === 'file:',\n    }\n\n    /**\n     * @todo Not sure I like this but \"this.currentHandlers\"\n     * updates never bubble to \"this.context.requestHandlers\".\n     */\n    Object.defineProperties(context, {\n      requestHandlers: {\n        get: () => this.currentHandlers,\n      },\n    })\n\n    this.startHandler = context.useFallbackMode\n      ? createFallbackStart(context)\n      : createStartHandler(context)\n\n    this.stopHandler = context.useFallbackMode\n      ? createFallbackStop(context)\n      : createStop(context)\n\n    return context\n  }\n\n  public async start(options: StartOptions = {}): StartReturnType {\n    this.context.startOptions = mergeRight(\n      DEFAULT_START_OPTIONS,\n      options,\n    ) as SetupWorkerInternalContext['startOptions']\n\n    return await this.startHandler(this.context.startOptions, options)\n  }\n\n  public printHandlers(): void {\n    const handlers = this.listHandlers()\n\n    handlers.forEach((handler) => {\n      const { header, callFrame } = handler.info\n      const pragma = handler.info.hasOwnProperty('operationType')\n        ? '[graphql]'\n        : '[rest]'\n\n      console.groupCollapsed(`${pragma} ${header}`)\n\n      if (callFrame) {\n        console.log(`Declaration: ${callFrame}`)\n      }\n\n      console.log('Handler:', handler)\n      console.groupEnd()\n    })\n  }\n\n  public stop(): void {\n    super.dispose()\n    this.context.events.removeAllListeners()\n    this.context.emitter.removeAllListeners()\n    this.stopHandler()\n  }\n}\n\n/**\n * Sets up a requests interception in the browser with the given request handlers.\n * @param {RequestHandler[]} handlers List of request handlers.\n * @see {@link https://mswjs.io/docs/api/setup-worker `setupWorker`}\n */\nexport function setupWorker(\n  ...handlers: Array<RequestHandler>\n): SetupWorkerApi {\n  return new SetupWorkerApi(...handlers)\n}\n", "import { until } from '@open-draft/until'\nimport { getWorkerInstance } from './utils/getWorkerInstance'\nimport { enableMocking } from './utils/enableMocking'\nimport { SetupWorkerInternalContext, StartHandler } from '../glossary'\nimport { createRequestListener } from './createRequestListener'\nimport { requestIntegrityCheck } from '../../utils/internal/requestIntegrityCheck'\nimport { deferNetworkRequestsUntil } from '../../utils/deferNetworkRequestsUntil'\nimport { createResponseListener } from './createResponseListener'\nimport { validateWorkerScope } from './utils/validateWorkerScope'\nimport { devUtils } from '../../utils/internal/devUtils'\n\nexport const createStartHandler = (\n  context: SetupWorkerInternalContext,\n): StartHandler => {\n  return function start(options, customOptions) {\n    const startWorkerInstance = async () => {\n      // Remove all previously existing event listeners.\n      // This way none of the listeners persists between Fast refresh\n      // of the application's code.\n      context.events.removeAllListeners()\n\n      // Handle requests signaled by the worker.\n      context.workerChannel.on(\n        'REQUEST',\n        createRequestListener(context, options),\n      )\n\n      // Handle responses signaled by the worker.\n      context.workerChannel.on('RESPONSE', createResponseListener(context))\n\n      const instance = await getWorkerInstance(\n        options.serviceWorker.url,\n        options.serviceWorker.options,\n        options.findWorker,\n      )\n\n      const [worker, registration] = instance\n\n      if (!worker) {\n        const missingWorkerMessage = customOptions?.findWorker\n          ? devUtils.formatMessage(\n              `Failed to locate the Service Worker registration using a custom \"findWorker\" predicate.\n\nPlease ensure that the custom predicate properly locates the Service Worker registration at \"%s\".\nMore details: https://mswjs.io/docs/api/setup-worker/start#findworker\n`,\n              options.serviceWorker.url,\n            )\n          : devUtils.formatMessage(\n              `Failed to locate the Service Worker registration.\n\nThis most likely means that the worker script URL \"%s\" cannot resolve against the actual public hostname (%s). This may happen if your application runs behind a proxy, or has a dynamic hostname.\n\nPlease consider using a custom \"serviceWorker.url\" option to point to the actual worker script location, or a custom \"findWorker\" option to resolve the Service Worker registration manually. More details: https://mswjs.io/docs/api/setup-worker/start`,\n              options.serviceWorker.url,\n              location.host,\n            )\n\n        throw new Error(missingWorkerMessage)\n      }\n\n      context.worker = worker\n      context.registration = registration\n\n      context.events.addListener(window, 'beforeunload', () => {\n        if (worker.state !== 'redundant') {\n          // Notify the Service Worker that this client has closed.\n          // Internally, it's similar to disabling the mocking, only\n          // client close event has a handler that self-terminates\n          // the Service Worker when there are no open clients.\n          context.workerChannel.send('CLIENT_CLOSED')\n        }\n        // Make sure we're always clearing the interval - there are reports that not doing this can\n        // cause memory leaks in headless browser environments.\n        window.clearInterval(context.keepAliveInterval)\n      })\n\n      // Check if the active Service Worker is the latest published one\n      const [integrityError] = await until(() =>\n        requestIntegrityCheck(context, worker),\n      )\n\n      if (integrityError) {\n        devUtils.error(`\\\nDetected outdated Service Worker: ${integrityError.message}\n\nThe mocking is still enabled, but it's highly recommended that you update your Service Worker by running:\n\n$ npx msw init <PUBLIC_DIR>\n\nThis is necessary to ensure that the Service Worker is in sync with the library to guarantee its stability.\nIf this message still persists after updating, please report an issue: https://github.com/open-draft/msw/issues\\\n      `)\n      }\n\n      context.keepAliveInterval = window.setInterval(\n        () => context.workerChannel.send('KEEPALIVE_REQUEST'),\n        5000,\n      )\n\n      // Warn the user when loading the page that lies outside\n      // of the worker's scope.\n      validateWorkerScope(registration, context.startOptions)\n\n      return registration\n    }\n\n    const workerRegistration = startWorkerInstance().then(\n      async (registration) => {\n        const pendingInstance = registration.installing || registration.waiting\n\n        // Wait until the worker is activated.\n        // Assume the worker is already activated if there's no pending registration\n        // (i.e. when reloading the page after a successful activation).\n        if (pendingInstance) {\n          await new Promise<void>((resolve) => {\n            pendingInstance.addEventListener('statechange', () => {\n              if (pendingInstance.state === 'activated') {\n                return resolve()\n              }\n            })\n          })\n        }\n\n        // Print the activation message only after the worker has been activated.\n        await enableMocking(context, options).catch((error) => {\n          throw new Error(`Failed to enable mocking: ${error?.message}`)\n        })\n\n        return registration\n      },\n    )\n\n    // Defer any network requests until the Service Worker instance is ready.\n    // This prevents a race condition between the Service Worker registration\n    // and application's runtime requests (i.e. requests on mount).\n    if (options.waitUntilReady) {\n      deferNetworkRequestsUntil(workerRegistration)\n    }\n\n    return workerRegistration\n  }\n}\n", "import { until } from '@open-draft/until'\nimport { getWorkerByRegistration } from './getWorkerByRegistration'\nimport { ServiceWorkerInstanceTuple, FindWorker } from '../../glossary'\nimport { getAbsoluteWorkerUrl } from '../../../utils/url/getAbsoluteWorkerUrl'\nimport { devUtils } from '../../../utils/internal/devUtils'\n\n/**\n * Returns an active Service Worker instance.\n * When not found, registers a new Service Worker.\n */\nexport const getWorkerInstance = async (\n  url: string,\n  options: RegistrationOptions = {},\n  findWorker: FindWorker,\n): Promise<ServiceWorkerInstanceTuple> => {\n  // Resolve the absolute Service Worker URL.\n  const absoluteWorkerUrl = getAbsoluteWorkerUrl(url)\n\n  const mockRegistrations = await navigator.serviceWorker\n    .getRegistrations()\n    .then((registrations) =>\n      registrations.filter((registration) =>\n        getWorkerByRegistration(registration, absoluteWorkerUrl, findWorker),\n      ),\n    )\n  if (!navigator.serviceWorker.controller && mockRegistrations.length > 0) {\n    // Reload the page when it has associated workers, but no active controller.\n    // The absence of a controller can mean either:\n    // - page has no Service Worker associated with it\n    // - page has been hard-reloaded and its workers won't be used until the next reload.\n    // Since we've checked that there are registrations associated with this page,\n    // at this point we are sure it's hard reload that falls into this clause.\n    location.reload()\n  }\n\n  const [existingRegistration] = mockRegistrations\n\n  if (existingRegistration) {\n    // When the Service Worker is registered, update it and return the reference.\n    return existingRegistration.update().then(() => {\n      return [\n        getWorkerByRegistration(\n          existingRegistration,\n          absoluteWorkerUrl,\n          findWorker,\n        ),\n        existingRegistration,\n      ]\n    })\n  }\n\n  // When the Service Worker wasn't found, register it anew and return the reference.\n  const [error, instance] = await until<ServiceWorkerInstanceTuple>(\n    async () => {\n      const registration = await navigator.serviceWorker.register(url, options)\n      return [\n        // Compare existing worker registration by its worker URL,\n        // to prevent irrelevant workers to resolve here (such as Codesandbox worker).\n        getWorkerByRegistration(registration, absoluteWorkerUrl, findWorker),\n        registration,\n      ]\n    },\n  )\n\n  // Handle Service Worker registration errors.\n  if (error) {\n    const isWorkerMissing = error.message.includes('(404)')\n\n    // Produce a custom error message when given a non-existing Service Worker url.\n    // Suggest developers to check their setup.\n    if (isWorkerMissing) {\n      const scopeUrl = new URL(options?.scope || '/', location.href)\n\n      throw new Error(\n        devUtils.formatMessage(`\\\nFailed to register a Service Worker for scope ('${scopeUrl.href}') with script ('${absoluteWorkerUrl}'): Service Worker script does not exist at the given path.\n\nDid you forget to run \"npx msw init <PUBLIC_DIR>\"?\n\nLearn more about creating the Service Worker script: https://mswjs.io/docs/cli/init`),\n      )\n    }\n\n    // Fallback error message for any other registration errors.\n    throw new Error(\n      devUtils.formatMessage(\n        'Failed to register the Service Worker:\\n\\n%s',\n        error.message,\n      ),\n    )\n  }\n\n  return instance\n}\n", "import { FindWorker } from '../../glossary'\n\n/**\n * Attempts to resolve a Service Worker instance from a given registration,\n * regardless of its state (active, installing, waiting).\n */\nexport const getWorkerByRegistration = (\n  registration: ServiceWorkerRegistration,\n  absoluteWorkerUrl: string,\n  findWorker: FindWorker,\n): ServiceWorker | null => {\n  const allStates = [\n    registration.active,\n    registration.installing,\n    registration.waiting,\n  ]\n  const existingStates = allStates.filter(Boolean) as ServiceWorker[]\n  const mockWorker = existingStates.find((worker) => {\n    return findWorker(worker.scriptURL, absoluteWorkerUrl)\n  })\n\n  return mockWorker || null\n}\n", "/**\n * Returns an absolute Service Worker URL based on the given\n * relative URL (known during the registration).\n */\nexport function getAbsoluteWorkerUrl(workerUrl: string): string {\n  return new URL(workerUrl, location.href).href\n}\n", "import { devUtils } from '../../../utils/internal/devUtils'\n\nexport interface PrintStartMessageArgs {\n  quiet?: boolean\n  message?: string\n  workerUrl?: string\n  workerScope?: string\n}\n\n/**\n * Prints a worker activation message in the browser's console.\n */\nexport function printStartMessage(args: PrintStartMessageArgs = {}) {\n  if (args.quiet) {\n    return\n  }\n\n  const message = args.message || 'Mocking enabled.'\n\n  console.groupCollapsed(\n    `%c${devUtils.formatMessage(message)}`,\n    'color:orangered;font-weight:bold;',\n  )\n  console.log(\n    '%cDocumentation: %chttps://mswjs.io/docs',\n    'font-weight:bold',\n    'font-weight:normal',\n  )\n  console.log('Found an issue? https://github.com/mswjs/msw/issues')\n\n  if (args.workerUrl) {\n    console.log('Worker script URL:', args.workerUrl)\n  }\n\n  if (args.workerScope) {\n    console.log('Worker scope:', args.workerScope)\n  }\n\n  console.groupEnd()\n}\n", "import { devUtils } from '../../../utils/internal/devUtils'\nimport { StartOptions, SetupWorkerInternalContext } from '../../glossary'\nimport { printStartMessage } from './printStartMessage'\n\n/**\n * Signals the worker to enable the interception of requests.\n */\nexport async function enableMocking(\n  context: SetupWorkerInternalContext,\n  options: StartOptions,\n) {\n  context.workerChannel.send('MOCK_ACTIVATE')\n  await context.events.once('MOCKING_ENABLED')\n\n  // Warn the developer on multiple \"worker.start()\" calls.\n  // While this will not affect the worker in any way,\n  // it likely indicates an issue with the developer's code.\n  if (context.isMockingEnabled) {\n    devUtils.warn(\n      `Found a redundant \"worker.start()\" call. Note that starting the worker while mocking is already enabled will have no effect. Consider removing this \"worker.start()\" call.`,\n    )\n    return\n  }\n\n  context.isMockingEnabled = true\n\n  printStartMessage({\n    quiet: options.quiet,\n    workerScope: context.registration?.scope,\n    workerUrl: context.worker?.scriptURL,\n  })\n}\n", "import {\n  SerializedResponse,\n  ServiceWorkerIncomingEventsMap,\n} from '../../glossary'\n\nexport interface ServiceWorkerMessage<\n  EventType extends keyof ServiceWorkerIncomingEventsMap,\n  EventPayload,\n> {\n  type: EventType\n  payload: EventPayload\n}\n\ninterface WorkerChannelEventsMap {\n  MOCK_RESPONSE: [data: SerializedResponse<any>, body?: [ArrayBuffer]]\n  NOT_FOUND: []\n  NETWORK_ERROR: [data: { name: string; message: string }]\n}\n\nexport class WorkerChannel {\n  constructor(private readonly port: MessagePort) {}\n\n  public postMessage<Event extends keyof WorkerChannelEventsMap>(\n    event: Event,\n    ...rest: WorkerChannelEventsMap[Event]\n  ): void {\n    const [data, transfer] = rest\n    this.port.postMessage({ type: event, data }, { transfer })\n  }\n}\n", "export class NetworkError extends Error {\n  constructor(message: string) {\n    super(message)\n    this.name = 'NetworkError'\n  }\n}\n", "import { encodeBuffer } from '@mswjs/interceptors'\nimport { Headers } from 'headers-polyfill'\nimport { ServiceWorkerIncomingRequest } from '../../setupWorker/glossary'\nimport { MockedRequest } from './MockedRequest'\n\n/**\n * Converts a given request received from the Service Worker\n * into a `MockedRequest` instance.\n */\nexport function parseWorkerRequest(\n  rawRequest: ServiceWorkerIncomingRequest,\n): MockedRequest {\n  const url = new URL(rawRequest.url)\n  const headers = new Headers(rawRequest.headers)\n\n  return new MockedRequest(url, {\n    ...rawRequest,\n    body: encodeBuffer(rawRequest.body || ''),\n    headers,\n  })\n}\n", "import * as cookieUtils from 'cookie'\nimport { store } from '@mswjs/cookies'\nimport { IsomorphicRequest, RequestInit } from '@mswjs/interceptors'\nimport { decodeBuffer } from '@mswjs/interceptors/lib/utils/bufferUtils.js'\nimport { Headers } from 'headers-polyfill'\nimport { DefaultBodyType } from '../../handlers/RequestHandler'\nimport { MockedResponse } from '../../response'\nimport { getRequestCookies } from './getRequestCookies'\nimport { parseBody } from './parseBody'\nimport { isStringEqual } from '../internal/isStringEqual'\n\nexport type RequestCache =\n  | 'default'\n  | 'no-store'\n  | 'reload'\n  | 'no-cache'\n  | 'force-cache'\n  | 'only-if-cached'\n\nexport type RequestMode = 'navigate' | 'same-origin' | 'no-cors' | 'cors'\n\nexport type RequestRedirect = 'follow' | 'error' | 'manual'\n\nexport type RequestDestination =\n  | ''\n  | 'audio'\n  | 'audioworklet'\n  | 'document'\n  | 'embed'\n  | 'font'\n  | 'frame'\n  | 'iframe'\n  | 'image'\n  | 'manifest'\n  | 'object'\n  | 'paintworklet'\n  | 'report'\n  | 'script'\n  | 'sharedworker'\n  | 'style'\n  | 'track'\n  | 'video'\n  | 'xslt'\n  | 'worker'\n\nexport type RequestPriority = 'high' | 'low' | 'auto'\n\nexport type RequestReferrerPolicy =\n  | ''\n  | 'no-referrer'\n  | 'no-referrer-when-downgrade'\n  | 'origin'\n  | 'origin-when-cross-origin'\n  | 'same-origin'\n  | 'strict-origin'\n  | 'strict-origin-when-cross-origin'\n  | 'unsafe-url'\n\nexport interface MockedRequestInit extends RequestInit {\n  id?: string\n  cache?: RequestCache\n  redirect?: RequestRedirect\n  integrity?: string\n  keepalive?: boolean\n  mode?: RequestMode\n  priority?: RequestPriority\n  destination?: RequestDestination\n  referrer?: string\n  referrerPolicy?: RequestReferrerPolicy\n  cookies?: Record<string, string>\n}\n\nexport class MockedRequest<\n  RequestBody extends DefaultBodyType = DefaultBodyType,\n> extends IsomorphicRequest {\n  public readonly cache: RequestCache\n  public readonly cookies: Record<string, string>\n  public readonly destination: RequestDestination\n  public readonly integrity: string\n  public readonly keepalive: boolean\n  public readonly mode: RequestMode\n  public readonly priority: RequestPriority\n  public readonly redirect: RequestRedirect\n  public readonly referrer: string\n  public readonly referrerPolicy: RequestReferrerPolicy\n\n  constructor(url: URL, init: MockedRequestInit = {}) {\n    super(url, init)\n    if (init.id) {\n      this.id = init.id\n    }\n    this.cache = init.cache || 'default'\n    this.destination = init.destination || ''\n    this.integrity = init.integrity || ''\n    this.keepalive = init.keepalive || false\n    this.mode = init.mode || 'cors'\n    this.priority = init.priority || 'auto'\n    this.redirect = init.redirect || 'follow'\n    this.referrer = init.referrer || ''\n    this.referrerPolicy = init.referrerPolicy || 'no-referrer'\n    this.cookies = init.cookies || this.getCookies()\n  }\n\n  /**\n   * Get parsed request body. The type is inferred from the content type.\n   *\n   * @deprecated - Use `req.text()`, `req.json()` or `req.arrayBuffer()`\n   * to read the request body as a plain text, JSON, or ArrayBuffer.\n   */\n  public get body(): RequestBody {\n    const text = decodeBuffer(this['_body'])\n\n    /**\n     * @deprecated https://github.com/mswjs/msw/issues/1318\n     * @fixme Remove this assumption and let the users read\n     * request body explicitly using \".json()\"/\".text()\"/\".arrayBuffer()\".\n     */\n    // Parse the request's body based on the \"Content-Type\" header.\n    const body = parseBody(text, this.headers)\n\n    if (isStringEqual(this.method, 'GET') && body === '') {\n      return undefined as RequestBody\n    }\n\n    return body as RequestBody\n  }\n\n  /**\n   * Bypass the intercepted request.\n   * This will make a call to the actual endpoint requested.\n   */\n  public passthrough(): MockedResponse<null> {\n    return {\n      // Constructing a dummy \"101 Continue\" mocked response\n      // to keep the return type of the resolver consistent.\n      status: 101,\n      statusText: 'Continue',\n      headers: new Headers(),\n      body: null,\n      // Setting \"passthrough\" to true will signal the response pipeline\n      // to perform this intercepted request as-is.\n      passthrough: true,\n      once: false,\n    }\n  }\n\n  private getCookies(): Record<string, string> {\n    // Parse the cookies passed in the original request \"cookie\" header.\n    const requestCookiesString = this.headers.get('cookie')\n    const ownCookies = requestCookiesString\n      ? cookieUtils.parse(requestCookiesString)\n      : {}\n\n    store.hydrate()\n\n    const cookiesFromStore = Array.from(\n      store.get({ ...this, url: this.url.href })?.entries(),\n    ).reduce((cookies, [name, { value }]) => {\n      return Object.assign(cookies, { [name.trim()]: value })\n    }, {})\n\n    // Get existing document cookies that are applicable\n    // to this request based on its \"credentials\" policy.\n    const cookiesFromDocument = getRequestCookies(this)\n\n    const forwardedCookies = {\n      ...cookiesFromDocument,\n      ...cookiesFromStore,\n    }\n\n    for (const [name, value] of Object.entries(forwardedCookies)) {\n      this.headers.append('cookie', `${name}=${value}`)\n    }\n\n    return {\n      ...forwardedCookies,\n      ...ownCookies,\n    }\n  }\n}\n", "import * as cookieUtils from 'cookie'\nimport { MockedRequest } from './MockedRequest'\n\nfunction getAllCookies() {\n  return cookieUtils.parse(document.cookie)\n}\n\n/**\n * Returns relevant document cookies based on the request `credentials` option.\n */\nexport function getRequestCookies(request: MockedRequest) {\n  /**\n   * @note No cookies persist on the document in Node.js: no document.\n   */\n  if (typeof document === 'undefined' || typeof location === 'undefined') {\n    return {}\n  }\n\n  switch (request.credentials) {\n    case 'same-origin': {\n      // Return document cookies only when requested a resource\n      // from the same origin as the current document.\n      return location.origin === request.url.origin ? getAllCookies() : {}\n    }\n\n    case 'include': {\n      // Return all document cookies.\n      return getAllCookies()\n    }\n\n    default: {\n      return {}\n    }\n  }\n}\n", "import { stringToHeaders } from 'headers-polyfill'\nimport { DefaultRequestMultipartBody } from '../../handlers/RequestHandler'\n\ninterface ParsedContentHeaders {\n  name: string\n  filename?: string\n  contentType: string\n}\n\ninterface ContentDispositionDirective {\n  [key: string]: string | undefined\n  name: string\n  filename?: string\n  'form-data': string\n}\n\nfunction parseContentHeaders(headersString: string): ParsedContentHeaders {\n  const headers = stringToHeaders(headersString)\n  const contentType = headers.get('content-type') || 'text/plain'\n  const disposition = headers.get('content-disposition')\n\n  if (!disposition) {\n    throw new Error('\"Content-Disposition\" header is required.')\n  }\n\n  const directives = disposition.split(';').reduce((acc, chunk) => {\n    const [name, ...rest] = chunk.trim().split('=')\n    acc[name] = rest.join('=')\n    return acc\n  }, {} as ContentDispositionDirective)\n\n  const name = directives.name?.slice(1, -1)\n  const filename = directives.filename?.slice(1, -1)\n\n  return {\n    name,\n    filename,\n    contentType,\n  }\n}\n\n/**\n * Parses a given string as a multipart/form-data.\n * Does not throw an exception on an invalid multipart string.\n */\nexport function parseMultipartData<T extends DefaultRequestMultipartBody>(\n  data: string,\n  headers?: Headers,\n): T | undefined {\n  const contentType = headers?.get('content-type')\n\n  if (!contentType) {\n    return undefined\n  }\n\n  const [, ...directives] = contentType.split(/; */)\n  const boundary = directives\n    .filter((d) => d.startsWith('boundary='))\n    .map((s) => s.replace(/^boundary=/, ''))[0]\n\n  if (!boundary) {\n    return undefined\n  }\n\n  const boundaryRegExp = new RegExp(`--+${boundary}`)\n  const fields = data\n    .split(boundaryRegExp)\n    .filter((chunk) => chunk.startsWith('\\r\\n') && chunk.endsWith('\\r\\n'))\n    .map((chunk) => chunk.trimStart().replace(/\\r\\n$/, ''))\n\n  if (!fields.length) {\n    return undefined\n  }\n\n  const parsedBody: DefaultRequestMultipartBody = {}\n\n  try {\n    for (const field of fields) {\n      const [contentHeaders, ...rest] = field.split('\\r\\n\\r\\n')\n      const contentBody = rest.join('\\r\\n\\r\\n')\n      const { contentType, filename, name } =\n        parseContentHeaders(contentHeaders)\n\n      const value =\n        filename === undefined\n          ? contentBody\n          : new File([contentBody], filename, { type: contentType })\n\n      const parsedValue = parsedBody[name]\n\n      if (parsedValue === undefined) {\n        parsedBody[name] = value\n      } else if (Array.isArray(parsedValue)) {\n        parsedBody[name] = [...parsedValue, value]\n      } else {\n        parsedBody[name] = [parsedValue, value]\n      }\n    }\n\n    return parsedBody as T\n  } catch (error) {\n    return undefined\n  }\n}\n", "import { jsonParse } from '../internal/jsonParse'\nimport { parseMultipartData } from '../internal/parseMultipartData'\nimport { MockedRequest } from './MockedRequest'\n\n/**\n * Parses a given request/response body based on the \"Content-Type\" header.\n */\nexport function parseBody(body?: MockedRequest['body'], headers?: Headers) {\n  // Return whatever falsey body value is given.\n  if (!body) {\n    return body\n  }\n\n  const contentType = headers?.get('content-type')?.toLowerCase() || ''\n\n  // If the body has a Multipart Content-Type\n  // parse it into an object.\n  const hasMultipartContent = contentType.startsWith('multipart/form-data')\n  if (hasMultipartContent && typeof body !== 'object') {\n    return parseMultipartData(body.toString(), headers) || body\n  }\n\n  // If the intercepted request's body has a JSON Content-Type\n  // parse it into an object.\n  const hasJsonContent = contentType.includes('json')\n\n  if (hasJsonContent && typeof body !== 'object') {\n    return jsonParse(body.toString()) || body\n  }\n\n  // Otherwise leave as-is.\n  return body\n}\n", "/**\n * Performs a case-insensitive comparison of two given strings.\n */\nexport function isStringEqual(actual: string, expected: string): boolean {\n  return actual.toLowerCase() === expected.toLowerCase()\n}\n", "import { until } from '@open-draft/until'\nimport { Emitter } from 'strict-event-emitter'\nimport { RequestHandler } from '../handlers/RequestHandler'\nimport { ServerLifecycleEventsMap } from '../node/glossary'\nimport { MockedResponse } from '../response'\nimport { SharedOptions } from '../sharedOptions'\nimport { RequiredDeep } from '../typeUtils'\nimport { ResponseLookupResult, getResponse } from './getResponse'\nimport { devUtils } from './internal/devUtils'\nimport { MockedRequest } from './request/MockedRequest'\nimport { onUnhandledRequest } from './request/onUnhandledRequest'\nimport { readResponseCookies } from './request/readResponseCookies'\n\nexport interface HandleRequestOptions<ResponseType> {\n  /**\n   * Options for the response resolution process.\n   */\n  resolutionContext?: {\n    baseUrl?: string\n  }\n\n  /**\n   * Transforms a `MockedResponse` instance returned from a handler\n   * to a response instance supported by the lower tooling (i.e. interceptors).\n   */\n  transformResponse?(response: MockedResponse<string>): ResponseType\n\n  /**\n   * Invoked whenever a request is performed as-is.\n   */\n  onPassthroughResponse?(request: MockedRequest): void\n\n  /**\n   * Invoked when the mocked response is ready to be sent.\n   */\n  onMockedResponse?(\n    response: ResponseType,\n    handler: RequiredDeep<ResponseLookupResult>,\n  ): void\n}\n\nexport async function handleRequest<\n  ResponseType extends Record<string, any> = MockedResponse<string>,\n>(\n  request: MockedRequest,\n  handlers: RequestHandler[],\n  options: RequiredDeep<SharedOptions>,\n  emitter: Emitter<ServerLifecycleEventsMap>,\n  handleRequestOptions?: HandleRequestOptions<ResponseType>,\n): Promise<ResponseType | undefined> {\n  emitter.emit('request:start', request)\n\n  // Perform bypassed requests (i.e. issued via \"ctx.fetch\") as-is.\n  if (request.headers.get('x-msw-bypass') === 'true') {\n    emitter.emit('request:end', request)\n    handleRequestOptions?.onPassthroughResponse?.(request)\n    return\n  }\n\n  // Resolve a mocked response from the list of request handlers.\n  const [lookupError, lookupResult] = await until(() => {\n    return getResponse(\n      request,\n      handlers,\n      handleRequestOptions?.resolutionContext,\n    )\n  })\n\n  if (lookupError) {\n    // Allow developers to react to unhandled exceptions in request handlers.\n    emitter.emit('unhandledException', lookupError, request)\n    throw lookupError\n  }\n\n  const { handler, response } = lookupResult\n\n  // When there's no handler for the request, consider it unhandled.\n  // Allow the developer to react to such cases.\n  if (!handler) {\n    onUnhandledRequest(request, handlers, options.onUnhandledRequest)\n    emitter.emit('request:unhandled', request)\n    emitter.emit('request:end', request)\n    handleRequestOptions?.onPassthroughResponse?.(request)\n    return\n  }\n\n  // When the handled request returned no mocked response, warn the developer,\n  // as it may be an oversight on their part. Perform the request as-is.\n  if (!response) {\n    devUtils.warn(\n      `\\\nExpected response resolver to return a mocked response Object, but got %s. The original response is going to be used instead.\\\n\\n\n  \\u2022 %s\n    %s\\\n`,\n      response,\n      handler.info.header,\n      handler.info.callFrame,\n    )\n\n    emitter.emit('request:end', request)\n    handleRequestOptions?.onPassthroughResponse?.(request)\n    return\n  }\n\n  // When the developer explicitly returned \"req.passthrough()\" do not warn them.\n  // Perform the request as-is.\n  if (response.passthrough) {\n    emitter.emit('request:end', request)\n    handleRequestOptions?.onPassthroughResponse?.(request)\n    return\n  }\n\n  // Store all the received response cookies in the virtual cookie store.\n  readResponseCookies(request, response)\n\n  emitter.emit('request:match', request)\n\n  const requiredLookupResult =\n    lookupResult as RequiredDeep<ResponseLookupResult>\n\n  const transformedResponse =\n    handleRequestOptions?.transformResponse?.(response) ||\n    (response as any as ResponseType)\n\n  handleRequestOptions?.onMockedResponse?.(\n    transformedResponse,\n    requiredLookupResult,\n  )\n\n  emitter.emit('request:end', request)\n\n  return transformedResponse\n}\n", "import { MockedResponse } from '../response'\nimport {\n  RequestHandler,\n  RequestHandlerExecutionResult,\n} from '../handlers/RequestHandler'\nimport { MockedRequest } from './request/MockedRequest'\n\nexport interface ResponseLookupResult {\n  handler?: RequestHandler\n  publicRequest?: any\n  parsedRequest?: any\n  response?: MockedResponse\n}\n\nexport interface ResponseResolutionContext {\n  baseUrl?: string\n}\n\n/**\n * Returns a mocked response for a given request using following request handlers.\n */\nexport const getResponse = async <\n  Request extends MockedRequest,\n  Handler extends RequestHandler[],\n>(\n  request: Request,\n  handlers: Handler,\n  resolutionContext?: ResponseResolutionContext,\n): Promise<ResponseLookupResult> => {\n  const relevantHandlers = handlers.filter((handler) => {\n    return handler.test(request, resolutionContext)\n  })\n\n  if (relevantHandlers.length === 0) {\n    return {\n      handler: undefined,\n      response: undefined,\n    }\n  }\n\n  const result = await relevantHandlers.reduce<\n    Promise<RequestHandlerExecutionResult<any> | null>\n  >(async (executionResult, handler) => {\n    const previousResults = await executionResult\n\n    if (!!previousResults?.response) {\n      return executionResult\n    }\n\n    const result = await handler.run(request, resolutionContext)\n\n    if (result === null || result.handler.shouldSkip) {\n      return null\n    }\n\n    if (!result.response) {\n      return {\n        request: result.request,\n        handler: result.handler,\n        response: undefined,\n        parsedResult: result.parsedResult,\n      }\n    }\n\n    if (result.response.once) {\n      handler.markAsSkipped(true)\n    }\n\n    return result\n  }, Promise.resolve(null))\n\n  // Although reducing a list of relevant request handlers, it's possible\n  // that in the end there will be no handler associted with the request\n  // (i.e. if relevant handlers are fall-through).\n  if (!result) {\n    return {\n      handler: undefined,\n      response: undefined,\n    }\n  }\n\n  return {\n    handler: result.handler,\n    publicRequest: result.request,\n    parsedRequest: result.parsedResult,\n    response: result.response,\n  }\n}\n", "import getStringMatchScore from 'js-levenshtein'\nimport {\n  ParsedGraphQLQuery,\n  parseGraphQLRequest,\n} from '../internal/parseGraphQLRequest'\nimport { getPublicUrlFromRequest } from './getPublicUrlFromRequest'\nimport { isStringEqual } from '../internal/isStringEqual'\nimport { RestHandler } from '../../handlers/RestHandler'\nimport { GraphQLHandler } from '../../handlers/GraphQLHandler'\nimport { RequestHandler } from '../../handlers/RequestHandler'\nimport { tryCatch } from '../internal/tryCatch'\nimport { devUtils } from '../internal/devUtils'\nimport { MockedRequest } from './MockedRequest'\n\nconst MAX_MATCH_SCORE = 3\nconst MAX_SUGGESTION_COUNT = 4\nconst TYPE_MATCH_DELTA = 0.5\n\nexport interface UnhandledRequestPrint {\n  warning(): void\n  error(): void\n}\n\nexport type UnhandledRequestCallback = (\n  request: MockedRequest,\n  print: UnhandledRequestPrint,\n) => void\n\nexport type UnhandledRequestStrategy =\n  | 'bypass'\n  | 'warn'\n  | 'error'\n  | UnhandledRequestCallback\n\ninterface RequestHandlerGroups {\n  rest: RestHandler[]\n  graphql: GraphQLHandler[]\n}\n\nfunction groupHandlersByType(handlers: RequestHandler[]): RequestHandlerGroups {\n  return handlers.reduce<RequestHandlerGroups>(\n    (groups, handler) => {\n      if (handler instanceof RestHandler) {\n        groups.rest.push(handler)\n      }\n\n      if (handler instanceof GraphQLHandler) {\n        groups.graphql.push(handler)\n      }\n\n      return groups\n    },\n    {\n      rest: [],\n      graphql: [],\n    },\n  )\n}\n\ntype RequestHandlerSuggestion = [number, RequestHandler]\n\ntype ScoreGetterFn<RequestHandlerType extends RequestHandler> = (\n  request: MockedRequest,\n  handler: RequestHandlerType,\n) => number\n\nfunction getRestHandlerScore(): ScoreGetterFn<RestHandler> {\n  return (request, handler) => {\n    const { path, method } = handler.info\n\n    if (path instanceof RegExp || method instanceof RegExp) {\n      return Infinity\n    }\n\n    const hasSameMethod = isStringEqual(request.method, method)\n\n    // Always treat a handler with the same method as a more similar one.\n    const methodScoreDelta = hasSameMethod ? TYPE_MATCH_DELTA : 0\n    const requestPublicUrl = getPublicUrlFromRequest(request)\n    const score = getStringMatchScore(requestPublicUrl, path)\n\n    return score - methodScoreDelta\n  }\n}\n\nfunction getGraphQLHandlerScore(\n  parsedQuery: ParsedGraphQLQuery,\n): ScoreGetterFn<GraphQLHandler> {\n  return (_, handler) => {\n    if (typeof parsedQuery.operationName === 'undefined') {\n      return Infinity\n    }\n\n    const { operationType, operationName } = handler.info\n\n    if (typeof operationName !== 'string') {\n      return Infinity\n    }\n\n    const hasSameOperationType = parsedQuery.operationType === operationType\n    // Always treat a handler with the same operation type as a more similar one.\n    const operationTypeScoreDelta = hasSameOperationType ? TYPE_MATCH_DELTA : 0\n    const score = getStringMatchScore(parsedQuery.operationName, operationName)\n\n    return score - operationTypeScoreDelta\n  }\n}\n\nfunction getSuggestedHandler(\n  request: MockedRequest,\n  handlers: RestHandler[] | GraphQLHandler[],\n  getScore: ScoreGetterFn<RestHandler> | ScoreGetterFn<GraphQLHandler>,\n): RequestHandler[] {\n  const suggestedHandlers = (handlers as RequestHandler[])\n    .reduce<RequestHandlerSuggestion[]>((suggestions, handler) => {\n      const score = getScore(request, handler as any)\n      return suggestions.concat([[score, handler]])\n    }, [])\n    .sort(([leftScore], [rightScore]) => leftScore - rightScore)\n    .filter(([score]) => score <= MAX_MATCH_SCORE)\n    .slice(0, MAX_SUGGESTION_COUNT)\n    .map(([, handler]) => handler)\n\n  return suggestedHandlers\n}\n\nfunction getSuggestedHandlersMessage(handlers: RequestHandler[]) {\n  if (handlers.length > 1) {\n    return `\\\nDid you mean to request one of the following resources instead?\n\n${handlers.map((handler) => `  • ${handler.info.header}`).join('\\n')}`\n  }\n\n  return `Did you mean to request \"${handlers[0].info.header}\" instead?`\n}\n\nexport function onUnhandledRequest(\n  request: MockedRequest,\n  handlers: RequestHandler[],\n  strategy: UnhandledRequestStrategy = 'warn',\n): void {\n  const parsedGraphQLQuery = tryCatch(() => parseGraphQLRequest(request))\n\n  function generateHandlerSuggestion(): string {\n    /**\n     * @note Ignore exceptions during GraphQL request parsing because at this point\n     * we cannot assume the unhandled request is a valid GraphQL request.\n     * If the GraphQL parsing fails, just don't treat it as a GraphQL request.\n     */\n    const handlerGroups = groupHandlersByType(handlers)\n    const relevantHandlers = parsedGraphQLQuery\n      ? handlerGroups.graphql\n      : handlerGroups.rest\n\n    const suggestedHandlers = getSuggestedHandler(\n      request,\n      relevantHandlers,\n      parsedGraphQLQuery\n        ? getGraphQLHandlerScore(parsedGraphQLQuery)\n        : getRestHandlerScore(),\n    )\n\n    return suggestedHandlers.length > 0\n      ? getSuggestedHandlersMessage(suggestedHandlers)\n      : ''\n  }\n\n  function generateUnhandledRequestMessage(): string {\n    const publicUrl = getPublicUrlFromRequest(request)\n    const requestHeader = parsedGraphQLQuery\n      ? `${parsedGraphQLQuery.operationType} ${parsedGraphQLQuery.operationName} (${request.method} ${publicUrl})`\n      : `${request.method} ${publicUrl}`\n    const handlerSuggestion = generateHandlerSuggestion()\n\n    const messageTemplate = [\n      `captured a request without a matching request handler:`,\n      `  \\u2022 ${requestHeader}`,\n      handlerSuggestion,\n      `\\\nIf you still wish to intercept this unhandled request, please create a request handler for it.\nRead more: https://mswjs.io/docs/getting-started/mocks\\\n`,\n    ].filter(Boolean)\n    return messageTemplate.join('\\n\\n')\n  }\n\n  function applyStrategy(strategy: UnhandledRequestStrategy) {\n    // Generate handler suggestions only when applying the strategy.\n    // This saves bandwidth for scenarios when developers opt-out\n    // from the default unhandled request handling strategy.\n    const message = generateUnhandledRequestMessage()\n\n    switch (strategy) {\n      case 'error': {\n        // Print a developer-friendly error.\n        devUtils.error('Error: %s', message)\n\n        // Throw an exception to halt request processing and not perform the original request.\n        throw new Error(\n          devUtils.formatMessage(\n            'Cannot bypass a request when using the \"error\" strategy for the \"onUnhandledRequest\" option.',\n          ),\n        )\n      }\n\n      case 'warn': {\n        devUtils.warn('Warning: %s', message)\n        break\n      }\n\n      case 'bypass':\n        break\n\n      default:\n        throw new Error(\n          devUtils.formatMessage(\n            'Failed to react to an unhandled request: unknown strategy \"%s\". Please provide one of the supported strategies (\"bypass\", \"warn\", \"error\") or a custom callback function as the value of the \"onUnhandledRequest\" option.',\n            strategy,\n          ),\n        )\n    }\n  }\n\n  if (typeof strategy === 'function') {\n    strategy(request, {\n      warning: applyStrategy.bind(null, 'warn'),\n      error: applyStrategy.bind(null, 'error'),\n    })\n    return\n  }\n\n  applyStrategy(strategy)\n}\n", "import type {\n  DocumentNode,\n  OperationDefinitionNode,\n  OperationTypeNode,\n} from 'graphql'\nimport { parse } from 'graphql'\nimport { GraphQLVariables } from '../../handlers/GraphQLHandler'\nimport { getPublicUrlFromRequest } from '../request/getPublicUrlFromRequest'\nimport { MockedRequest } from '../request/MockedRequest'\nimport { devUtils } from './devUtils'\nimport { jsonParse } from './jsonParse'\n\ninterface GraphQLInput {\n  query: string | null\n  variables?: GraphQLVariables\n}\n\nexport interface ParsedGraphQLQuery {\n  operationType: OperationTypeNode\n  operationName?: string\n}\n\nexport type ParsedGraphQLRequest<\n  VariablesType extends GraphQLVariables = GraphQLVariables,\n> =\n  | (ParsedGraphQLQuery & {\n      variables?: VariablesType\n    })\n  | undefined\n\nexport function parseDocumentNode(node: DocumentNode): ParsedGraphQLQuery {\n  const operationDef = node.definitions.find((def) => {\n    return def.kind === 'OperationDefinition'\n  }) as OperationDefinitionNode\n\n  return {\n    operationType: operationDef?.operation,\n    operationName: operationDef?.name?.value,\n  }\n}\n\nfunction parseQuery(query: string): ParsedGraphQLQuery | Error {\n  try {\n    const ast = parse(query)\n    return parseDocumentNode(ast)\n  } catch (error) {\n    return error as Error\n  }\n}\n\nexport type GraphQLParsedOperationsMap = Record<string, string[]>\nexport type GraphQLMultipartRequestBody = {\n  operations: string\n  map?: string\n} & {\n  [fileName: string]: File\n}\n\nfunction extractMultipartVariables<VariablesType extends GraphQLVariables>(\n  variables: VariablesType,\n  map: GraphQLParsedOperationsMap,\n  files: Record<string, File>,\n) {\n  const operations = { variables }\n  for (const [key, pathArray] of Object.entries(map)) {\n    if (!(key in files)) {\n      throw new Error(`Given files do not have a key '${key}' .`)\n    }\n\n    for (const dotPath of pathArray) {\n      const [lastPath, ...reversedPaths] = dotPath.split('.').reverse()\n      const paths = reversedPaths.reverse()\n      let target: Record<string, any> = operations\n\n      for (const path of paths) {\n        if (!(path in target)) {\n          throw new Error(`Property '${paths}' is not in operations.`)\n        }\n\n        target = target[path]\n      }\n\n      target[lastPath] = files[key]\n    }\n  }\n  return operations.variables\n}\n\nfunction getGraphQLInput(request: MockedRequest<any>): GraphQLInput | null {\n  switch (request.method) {\n    case 'GET': {\n      const query = request.url.searchParams.get('query')\n      const variables = request.url.searchParams.get('variables') || ''\n\n      return {\n        query,\n        variables: jsonParse(variables),\n      }\n    }\n\n    case 'POST': {\n      if (request.body?.query) {\n        const { query, variables } = request.body\n\n        return {\n          query,\n          variables,\n        }\n      }\n\n      // Handle multipart body operations.\n      if (request.body?.operations) {\n        const { operations, map, ...files } =\n          request.body as GraphQLMultipartRequestBody\n        const parsedOperations =\n          jsonParse<{ query?: string; variables?: GraphQLVariables }>(\n            operations,\n          ) || {}\n\n        if (!parsedOperations.query) {\n          return null\n        }\n\n        const parsedMap = jsonParse<GraphQLParsedOperationsMap>(map || '') || {}\n        const variables = parsedOperations.variables\n          ? extractMultipartVariables(\n              parsedOperations.variables,\n              parsedMap,\n              files,\n            )\n          : {}\n\n        return {\n          query: parsedOperations.query,\n          variables,\n        }\n      }\n    }\n\n    default:\n      return null\n  }\n}\n\n/**\n * Determines if a given request can be considered a GraphQL request.\n * Does not parse the query and does not guarantee its validity.\n */\nexport function parseGraphQLRequest(\n  request: MockedRequest<any>,\n): ParsedGraphQLRequest {\n  const input = getGraphQLInput(request)\n\n  if (!input || !input.query) {\n    return undefined\n  }\n\n  const { query, variables } = input\n  const parsedResult = parseQuery(query)\n\n  if (parsedResult instanceof Error) {\n    const requestPublicUrl = getPublicUrlFromRequest(request)\n\n    throw new Error(\n      devUtils.formatMessage(\n        'Failed to intercept a GraphQL request to \"%s %s\": cannot parse query. See the error message from the parser below.\\n\\n%s',\n        request.method,\n        requestPublicUrl,\n        parsedResult.message,\n      ),\n    )\n  }\n\n  return {\n    operationType: parsedResult.operationType,\n    operationName: parsedResult.operationName,\n    variables,\n  }\n}\n", "import { MockedRequest } from './MockedRequest'\n\n/**\n * Returns a relative URL if the given request URL is relative to the current origin.\n * Otherwise returns an absolute URL.\n */\nexport const getPublicUrlFromRequest = (request: MockedRequest) => {\n  return request.referrer.startsWith(request.url.origin)\n    ? request.url.pathname\n    : new URL(\n        request.url.pathname,\n        `${request.url.protocol}//${request.url.host}`,\n      ).href\n}\n", "export enum StatusCodeColor {\n  Success = '#69AB32',\n  Warning = '#F0BB4B',\n  Danger = '#E95F5D',\n}\n\n/**\n * Returns a HEX color for a given response status code number.\n */\nexport function getStatusCodeColor(status: number): StatusCodeColor {\n  if (status < 300) {\n    return StatusCodeColor.Success\n  }\n\n  if (status < 400) {\n    return StatusCodeColor.Warning\n  }\n\n  return StatusCodeColor.Danger\n}\n", "/**\n * Returns a timestamp string in a \"HH:MM:SS\" format.\n */\nexport function getTimestamp(): string {\n  const now = new Date()\n\n  return [now.getHours(), now.getMinutes(), now.getSeconds()]\n    .map(String)\n    .map((chunk) => chunk.slice(0, 2))\n    .map((chunk) => chunk.padStart(2, '0'))\n    .join(':')\n}\n", "import type { DefaultBodyType } from '../../handlers/RequestHandler.js'\nimport type { MockedRequest } from '../request/MockedRequest.js'\n\nexport interface LoggedRequest {\n  id: string\n  url: URL\n  method: string\n  headers: Record<string, string>\n  cookies: Record<string, string>\n  body: DefaultBodyType\n}\n\n/**\n * Formats a mocked request for introspection in browser's console.\n */\nexport function prepareRequest(request: MockedRequest): LoggedRequest {\n  return {\n    ...request,\n    body: request.body,\n    headers: request.headers.all(),\n  }\n}\n", "import { objectToHeaders } from 'headers-polyfill'\nimport { SerializedResponse } from '../../setupWorker/glossary'\nimport { parseBody } from '../request/parseBody'\n\n/**\n * Formats a mocked response for introspection in the browser's console.\n */\nexport function prepareResponse(res: SerializedResponse<any>) {\n  const responseHeaders = objectToHeaders(res.headers)\n\n  return {\n    ...res,\n    // Parse a response JSON body for preview in the logs\n    body: parseBody(res.body, responseHeaders),\n  }\n}\n", "import { match } from 'path-to-regexp'\nimport { getCleanUrl } from '@mswjs/interceptors/lib/utils/getCleanUrl.js'\nimport { normalizePath } from './normalizePath'\n\nexport type Path = string | RegExp\nexport type PathParams<KeyType extends keyof any = string> = {\n  [ParamName in KeyType]: string | ReadonlyArray<string>\n}\n\nexport interface Match {\n  matches: boolean\n  params?: PathParams\n}\n\n/**\n * Coerce a path supported by MSW into a path\n * supported by \"path-to-regexp\".\n */\nexport function coercePath(path: string): string {\n  return (\n    path\n      /**\n       * Replace wildcards (\"*\") with unnamed capturing groups\n       * because \"path-to-regexp\" doesn't support wildcards.\n       * Ignore path parameter' modifiers (i.e. \":name*\").\n       */\n      .replace(\n        /([:a-zA-Z_-]*)(\\*{1,2})+/g,\n        (_, parameterName: string | undefined, wildcard: string) => {\n          const expression = '(.*)'\n\n          if (!parameterName) {\n            return expression\n          }\n\n          return parameterName.startsWith(':')\n            ? `${parameterName}${wildcard}`\n            : `${parameterName}${expression}`\n        },\n      )\n      /**\n       * Escape the port so that \"path-to-regexp\" can match\n       * absolute URLs including port numbers.\n       */\n      .replace(/([^\\/])(:)(?=\\d+)/, '$1\\\\$2')\n      /**\n       * Escape the protocol so that \"path-to-regexp\" could match\n       * absolute URL.\n       * @see https://github.com/pillarjs/path-to-regexp/issues/259\n       */\n      .replace(/^([^\\/]+)(:)(?=\\/\\/)/, '$1\\\\$2')\n  )\n}\n\n/**\n * Returns the result of matching given request URL against a mask.\n */\nexport function matchRequestUrl(url: URL, path: Path, baseUrl?: string): Match {\n  const normalizedPath = normalizePath(path, baseUrl)\n  const cleanPath =\n    typeof normalizedPath === 'string'\n      ? coercePath(normalizedPath)\n      : normalizedPath\n\n  const cleanUrl = getCleanUrl(url)\n  const result = match(cleanPath, { decode: decodeURIComponent })(cleanUrl)\n  const params = (result && (result.params as PathParams)) || {}\n\n  return {\n    matches: result !== false,\n    params,\n  }\n}\n", "const REDUNDANT_CHARACTERS_EXP = /[\\?|#].*$/g\n\nexport function getSearchParams(path: string) {\n  return new URL(`/${path}`, 'http://localhost').searchParams\n}\n\n/**\n * Removes query parameters and hashes from a given URL string.\n */\nexport function cleanUrl(path: string): string {\n  return path.replace(REDUNDANT_CHARACTERS_EXP, '')\n}\n", "/**\n * Determines if the given URL string is an absolute URL.\n */\nexport function isAbsoluteUrl(url: string): boolean {\n  return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url)\n}\n", "import { isAbsoluteUrl } from './isAbsoluteUrl'\n\n/**\n * Returns an absolute URL based on the given path.\n */\nexport function getAbsoluteUrl(path: string, baseUrl?: string): string {\n  // already absolute URL\n  if (isAbsoluteUrl(path)) {\n    return path\n  }\n\n  // Ignore path with pattern start with *\n  if (path.startsWith('*')) {\n    return path\n  }\n\n  // Resolve a relative request URL against a given custom \"baseUrl\"\n  // or the document baseURI (in the case of browser/browser-like environments).\n  const origin =\n    baseUrl || (typeof document !== 'undefined' && document.baseURI)\n\n  return origin\n    ? // Encode and decode the path to preserve escaped characters.\n      decodeURI(new URL(encodeURI(path), origin).href)\n    : path\n}\n", "import type { Path } from './matchRequestUrl'\nimport { cleanUrl } from '../url/cleanUrl'\nimport { getAbsoluteUrl } from '../url/getAbsoluteUrl'\n\n/**\n * Normalizes a given request handler path:\n * - Preserves RegExp.\n * - Removes query parameters and hashes.\n * - Rebases relative URLs against the \"baseUrl\" or the current location.\n * - Preserves relative URLs in Node.js, unless specified otherwise.\n */\nexport function normalizePath(path: Path, baseUrl?: string): Path {\n  // RegExp paths do not need normalization.\n  if (path instanceof RegExp) {\n    return path\n  }\n\n  const maybeAbsoluteUrl = getAbsoluteUrl(path, baseUrl)\n\n  return cleanUrl(maybeAbsoluteUrl)\n}\n", "import { Headers } from 'headers-polyfill'\nimport {\n  MaybePromise,\n  MockedResponse,\n  response,\n  ResponseComposition,\n} from '../response'\nimport { getCallFrame } from '../utils/internal/getCallFrame'\nimport { isIterable } from '../utils/internal/isIterable'\nimport { status } from '../context/status'\nimport { set } from '../context/set'\nimport { delay } from '../context/delay'\nimport { fetch } from '../context/fetch'\nimport { ResponseResolutionContext } from '../utils/getResponse'\nimport { SerializedResponse } from '../setupWorker/glossary'\nimport { MockedRequest } from '../utils/request/MockedRequest'\n\nexport type DefaultContext = {\n  status: typeof status\n  set: typeof set\n  delay: typeof delay\n  fetch: typeof fetch\n}\n\nexport const defaultContext: DefaultContext = {\n  status,\n  set,\n  delay,\n  fetch,\n}\n\nexport type DefaultRequestMultipartBody = Record<\n  string,\n  string | File | (string | File)[]\n>\n\nexport type DefaultBodyType =\n  | Record<string, any>\n  | DefaultRequestMultipartBody\n  | string\n  | number\n  | boolean\n  | null\n  | undefined\n\nexport interface RequestHandlerDefaultInfo {\n  header: string\n}\n\nexport interface RequestHandlerInternalInfo {\n  callFrame?: string\n}\n\ntype ContextMap = Record<string, (...args: any[]) => any>\n\nexport type ResponseResolverReturnType<ReturnType> =\n  | ReturnType\n  | undefined\n  | void\n\nexport type MaybeAsyncResponseResolverReturnType<ReturnType> = MaybePromise<\n  ResponseResolverReturnType<ReturnType>\n>\n\nexport type AsyncResponseResolverReturnType<ReturnType> =\n  | MaybeAsyncResponseResolverReturnType<ReturnType>\n  | Generator<\n      MaybeAsyncResponseResolverReturnType<ReturnType>,\n      MaybeAsyncResponseResolverReturnType<ReturnType>,\n      MaybeAsyncResponseResolverReturnType<ReturnType>\n    >\n\nexport type ResponseResolver<\n  RequestType = MockedRequest,\n  ContextType = typeof defaultContext,\n  BodyType extends DefaultBodyType = any,\n> = (\n  req: RequestType,\n  res: ResponseComposition<BodyType>,\n  context: ContextType,\n) => AsyncResponseResolverReturnType<MockedResponse<BodyType>>\n\nexport interface RequestHandlerOptions<HandlerInfo> {\n  info: HandlerInfo\n  resolver: ResponseResolver<any, any>\n  ctx?: ContextMap\n}\n\nexport interface RequestHandlerExecutionResult<PublicRequestType> {\n  handler: RequestHandler\n  parsedResult: any\n  request: PublicRequestType\n  response?: MockedResponse\n}\n\nexport abstract class RequestHandler<\n  HandlerInfo extends RequestHandlerDefaultInfo = RequestHandlerDefaultInfo,\n  Request extends MockedRequest = MockedRequest,\n  ParsedResult = any,\n  PublicRequest extends MockedRequest = Request,\n> {\n  public info: HandlerInfo & RequestHandlerInternalInfo\n  public shouldSkip: boolean\n\n  private ctx: ContextMap\n  private resolverGenerator?: Generator<\n    MaybeAsyncResponseResolverReturnType<any>,\n    MaybeAsyncResponseResolverReturnType<any>,\n    MaybeAsyncResponseResolverReturnType<any>\n  >\n  private resolverGeneratorResult?: MaybeAsyncResponseResolverReturnType<any>\n\n  protected resolver: ResponseResolver<any, any>\n\n  constructor(options: RequestHandlerOptions<HandlerInfo>) {\n    this.shouldSkip = false\n    this.ctx = options.ctx || defaultContext\n    this.resolver = options.resolver\n\n    const callFrame = getCallFrame(new Error())\n\n    this.info = {\n      ...options.info,\n      callFrame,\n    }\n  }\n\n  /**\n   * Determine if the captured request should be mocked.\n   */\n  abstract predicate(\n    request: MockedRequest,\n    parsedResult: ParsedResult,\n    resolutionContext?: ResponseResolutionContext,\n  ): boolean\n\n  /**\n   * Print out the successfully handled request.\n   */\n  abstract log(\n    request: Request,\n    response: SerializedResponse<any>,\n    parsedResult: ParsedResult,\n  ): void\n\n  /**\n   * Parse the captured request to extract additional information from it.\n   * Parsed result is then exposed to other methods of this request handler.\n   */\n  parse(\n    _request: MockedRequest,\n    _resolutionContext?: ResponseResolutionContext,\n  ): ParsedResult {\n    return null as any\n  }\n\n  /**\n   * Test if this handler matches the given request.\n   */\n  public test(\n    request: MockedRequest,\n    resolutionContext?: ResponseResolutionContext,\n  ): boolean {\n    return this.predicate(\n      request,\n      this.parse(request, resolutionContext),\n      resolutionContext,\n    )\n  }\n\n  /**\n   * Derive the publicly exposed request (`req`) instance of the response resolver\n   * from the captured request and its parsed result.\n   */\n  protected getPublicRequest(\n    request: MockedRequest,\n    _parsedResult: ParsedResult,\n  ) {\n    return request as PublicRequest\n  }\n\n  public markAsSkipped(shouldSkip = true) {\n    this.shouldSkip = shouldSkip\n  }\n\n  /**\n   * Execute this request handler and produce a mocked response\n   * using the given resolver function.\n   */\n  public async run(\n    request: MockedRequest,\n    resolutionContext?: ResponseResolutionContext,\n  ): Promise<RequestHandlerExecutionResult<PublicRequest> | null> {\n    if (this.shouldSkip) {\n      return null\n    }\n\n    const parsedResult = this.parse(request, resolutionContext)\n    const shouldIntercept = this.predicate(\n      request,\n      parsedResult,\n      resolutionContext,\n    )\n\n    if (!shouldIntercept) {\n      return null\n    }\n\n    const publicRequest = this.getPublicRequest(request, parsedResult)\n\n    // Create a response extraction wrapper around the resolver\n    // since it can be both an async function and a generator.\n    const executeResolver = this.wrapResolver(this.resolver)\n    const mockedResponse = await executeResolver(\n      publicRequest,\n      response,\n      this.ctx,\n    )\n\n    return this.createExecutionResult(\n      parsedResult,\n      publicRequest,\n      mockedResponse,\n    )\n  }\n\n  private wrapResolver(\n    resolver: ResponseResolver<any, any>,\n  ): ResponseResolver<AsyncResponseResolverReturnType<any>, any> {\n    return async (req, res, ctx) => {\n      const result = this.resolverGenerator || (await resolver(req, res, ctx))\n\n      if (isIterable<AsyncResponseResolverReturnType<any>>(result)) {\n        const { value, done } = result[Symbol.iterator]().next()\n        const nextResponse = await value\n\n        // If the generator is done and there is no next value,\n        // return the previous generator's value.\n        if (!nextResponse && done) {\n          return this.resolverGeneratorResult\n        }\n\n        if (!this.resolverGenerator) {\n          this.resolverGenerator = result\n        }\n\n        this.resolverGeneratorResult = nextResponse\n        return nextResponse\n      }\n\n      return result\n    }\n  }\n\n  private createExecutionResult(\n    parsedResult: ParsedResult,\n    request: PublicRequest,\n    response: any,\n  ): RequestHandlerExecutionResult<PublicRequest> {\n    return {\n      handler: this,\n      parsedResult: parsedResult || null,\n      request,\n      response: response || null,\n    }\n  }\n}\n\n/**\n * Bypass this intercepted request.\n * This will make a call to the actual endpoint requested.\n */\nexport function passthrough(): MockedResponse<null> {\n  // Constructing a dummy \"101 Continue\" mocked response\n  // to keep the return type of the resolver consistent.\n  return {\n    status: 101,\n    statusText: 'Continue',\n    headers: new Headers(),\n    body: null,\n    // Setting \"passthrough\" to true will signal the response pipeline\n    // to perform this intercepted request as-is.\n    passthrough: true,\n    once: false,\n  }\n}\n", "import { Headers } from 'headers-polyfill'\nimport { DefaultBodyType } from './handlers/RequestHandler'\nimport { compose } from './utils/internal/compose'\nimport { NetworkError } from './utils/NetworkError'\n\nexport type MaybePromise<ValueType = any> = ValueType | Promise<ValueType>\n\n/**\n * Internal representation of a mocked response instance.\n */\nexport interface MockedResponse<BodyType extends DefaultBodyType = any> {\n  body: BodyType\n  status: number\n  statusText: string\n  headers: Headers\n  once: boolean\n  passthrough: boolean\n  delay?: number\n}\n\nexport type ResponseTransformer<\n  BodyType extends TransformerBodyType = any,\n  TransformerBodyType extends DefaultBodyType = any,\n> = (\n  res: MockedResponse<TransformerBodyType>,\n) => MaybePromise<MockedResponse<BodyType>>\n\nexport type ResponseFunction<BodyType extends DefaultBodyType = any> = (\n  ...transformers: ResponseTransformer<BodyType>[]\n) => MaybePromise<MockedResponse<BodyType>>\n\nexport type ResponseComposition<BodyType extends DefaultBodyType = any> =\n  ResponseFunction<BodyType> & {\n    /**\n     * Respond using a given mocked response to the first captured request.\n     * Does not affect any subsequent captured requests.\n     */\n    once: ResponseFunction<BodyType>\n    networkError: (message: string) => void\n  }\n\nexport const defaultResponse: Omit<MockedResponse, 'headers'> = {\n  status: 200,\n  statusText: 'OK',\n  body: null,\n  delay: 0,\n  once: false,\n  passthrough: false,\n}\n\nexport type ResponseCompositionOptions<BodyType> = {\n  defaultTransformers?: ResponseTransformer<BodyType>[]\n  mockedResponseOverrides?: Partial<MockedResponse>\n}\n\nexport const defaultResponseTransformers: ResponseTransformer<any>[] = []\n\nexport function createResponseComposition<BodyType extends DefaultBodyType>(\n  responseOverrides?: Partial<MockedResponse<BodyType>>,\n  defaultTransformers: ResponseTransformer<BodyType>[] = defaultResponseTransformers,\n): ResponseFunction {\n  return async (...transformers) => {\n    const initialResponse: MockedResponse = Object.assign(\n      {},\n      defaultResponse,\n      {\n        headers: new Headers({\n          'x-powered-by': 'msw',\n        }),\n      },\n      responseOverrides,\n    )\n\n    const resolvedTransformers = [\n      ...defaultTransformers,\n      ...transformers,\n    ].filter(Boolean)\n\n    const resolvedResponse =\n      resolvedTransformers.length > 0\n        ? compose(...resolvedTransformers)(initialResponse)\n        : initialResponse\n\n    return resolvedResponse\n  }\n}\n\nexport const response = Object.assign(createResponseComposition(), {\n  once: createResponseComposition({ once: true }),\n  networkError(message: string) {\n    throw new NetworkError(message)\n  },\n})\n", "type ArityOneFunction = (arg: any) => any\n\ntype LengthOfTuple<Tuple extends any[]> = Tuple extends { length: infer L }\n  ? L\n  : never\n\ntype DropFirstInTuple<Tuple extends any[]> = ((...args: Tuple) => any) extends (\n  arg: any,\n  ...rest: infer LastArg\n) => any\n  ? LastArg\n  : Tuple\n\ntype LastInTuple<Tuple extends any[]> = Tuple[LengthOfTuple<\n  DropFirstInTuple<Tuple>\n>]\n\ntype FirstFnParameterType<Functions extends ArityOneFunction[]> = Parameters<\n  LastInTuple<Functions>\n>[any]\n\ntype LastFnParameterType<Functions extends ArityOneFunction[]> = ReturnType<\n  Functions[0]\n>\n\n/**\n * Composes a given list of functions into a new function that\n * executes from right to left.\n */\nexport function compose<\n  Functions extends ArityOneFunction[],\n  LeftReturnType extends FirstFnParameterType<Functions>,\n  RightReturnType extends LastFnParameterType<Functions>,\n>(\n  ...fns: Functions\n): (\n  ...args: [LeftReturnType] extends [never] ? never[] : [LeftReturnType]\n) => RightReturnType {\n  return (...args) => {\n    return fns.reduceRight((leftFn: any, rightFn) => {\n      return leftFn instanceof Promise\n        ? Promise.resolve(leftFn).then(rightFn)\n        : rightFn(leftFn)\n    }, args[0])\n  }\n}\n", "// Ignore the source files traces for local testing.\nconst SOURCE_FRAME = /[\\/\\\\]msw[\\/\\\\]src[\\/\\\\](.+)/\n\nconst BUILD_FRAME =\n  /(node_modules)?[\\/\\\\]lib[\\/\\\\](umd|esm|iief|cjs)[\\/\\\\]|^[^\\/\\\\]*$/\n\n/**\n * Return the stack trace frame of a function's invocation.\n */\nexport function getCallFrame(error: Error) {\n  // In <IE11, new Error may return an undefined stack\n  const stack = error.stack\n\n  if (!stack) {\n    return\n  }\n\n  const frames: string[] = stack.split('\\n').slice(1)\n\n  // Get the first frame that doesn't reference the library's internal trace.\n  // Assume that frame is the invocation frame.\n  const declarationFrame = frames.find((frame) => {\n    return !(SOURCE_FRAME.test(frame) || BUILD_FRAME.test(frame))\n  })\n\n  if (!declarationFrame) {\n    return\n  }\n\n  // Extract file reference from the stack frame.\n  const declarationPath = declarationFrame\n    .replace(/\\s*at [^()]*\\(([^)]+)\\)/, '$1')\n    .replace(/^@/, '')\n  return declarationPath\n}\n", "/**\n * Determines if the given function is an iterator.\n */\nexport function isIterable<IteratorType>(\n  fn: any,\n): fn is Generator<IteratorType, IteratorType, IteratorType> {\n  if (!fn) {\n    return false\n  }\n\n  return typeof (fn as Generator<unknown>)[Symbol.iterator] == 'function'\n}\n", "import { body, cookie, json, text, xml } from '../context'\nimport type { SerializedResponse } from '../setupWorker/glossary'\nimport { ResponseResolutionContext } from '../utils/getResponse'\nimport { devUtils } from '../utils/internal/devUtils'\nimport { isStringEqual } from '../utils/internal/isStringEqual'\nimport { getStatusCodeColor } from '../utils/logging/getStatusCodeColor'\nimport { getTimestamp } from '../utils/logging/getTimestamp'\nimport { prepareRequest } from '../utils/logging/prepareRequest'\nimport { prepareResponse } from '../utils/logging/prepareResponse'\nimport {\n  Match,\n  matchRequestUrl,\n  Path,\n  PathParams,\n} from '../utils/matching/matchRequestUrl'\nimport { getPublicUrlFromRequest } from '../utils/request/getPublicUrlFromRequest'\nimport { MockedRequest } from '../utils/request/MockedRequest'\nimport { cleanUrl, getSearchParams } from '../utils/url/cleanUrl'\nimport {\n  DefaultBodyType,\n  defaultContext,\n  DefaultContext,\n  RequestHandler,\n  RequestHandlerDefaultInfo,\n  ResponseResolver,\n} from './RequestHandler'\n\ntype RestHandlerMethod = string | RegExp\n\nexport interface RestHandlerInfo extends RequestHandlerDefaultInfo {\n  method: RestHandlerMethod\n  path: Path\n}\n\nexport enum RESTMethods {\n  HEAD = 'HEAD',\n  GET = 'GET',\n  POST = 'POST',\n  PUT = 'PUT',\n  PATCH = 'PATCH',\n  OPTIONS = 'OPTIONS',\n  DELETE = 'DELETE',\n}\n\n// Declaring a context interface infers\n// JSDoc description of the referenced utils.\nexport type RestContext = DefaultContext & {\n  cookie: typeof cookie\n  text: typeof text\n  body: typeof body\n  json: typeof json\n  xml: typeof xml\n}\n\nexport const restContext: RestContext = {\n  ...defaultContext,\n  cookie,\n  body,\n  text,\n  json,\n  xml,\n}\n\nexport type RequestQuery = {\n  [queryName: string]: string\n}\n\nexport type ParsedRestRequest = Match\n\nexport class RestRequest<\n  RequestBody extends DefaultBodyType = DefaultBodyType,\n  RequestParams extends PathParams = PathParams,\n> extends MockedRequest<RequestBody> {\n  constructor(\n    request: MockedRequest<RequestBody>,\n    public readonly params: RequestParams,\n  ) {\n    super(request.url, {\n      ...request,\n      /**\n       * @deprecated https://github.com/mswjs/msw/issues/1318\n       * @note Use internal request body buffer as the body init\n       * because \"request.body\" is a getter that will trigger\n       * request body parsing at this step.\n       */\n      body: request['_body'],\n    })\n    this.id = request.id\n  }\n}\n\n/**\n * Request handler for REST API requests.\n * Provides request matching based on method and URL.\n */\nexport class RestHandler<\n  RequestType extends MockedRequest<DefaultBodyType> = MockedRequest<DefaultBodyType>,\n> extends RequestHandler<\n  RestHandlerInfo,\n  RequestType,\n  ParsedRestRequest,\n  RestRequest<\n    RequestType extends MockedRequest<infer RequestBodyType>\n      ? RequestBodyType\n      : any,\n    PathParams\n  >\n> {\n  constructor(\n    method: RestHandlerMethod,\n    path: Path,\n    resolver: ResponseResolver<any, any>,\n  ) {\n    super({\n      info: {\n        header: `${method} ${path}`,\n        path,\n        method,\n      },\n      ctx: restContext,\n      resolver,\n    })\n\n    this.checkRedundantQueryParameters()\n  }\n\n  private checkRedundantQueryParameters() {\n    const { method, path } = this.info\n\n    if (path instanceof RegExp) {\n      return\n    }\n\n    const url = cleanUrl(path)\n\n    // Bypass request handler URLs that have no redundant characters.\n    if (url === path) {\n      return\n    }\n\n    const searchParams = getSearchParams(path)\n    const queryParams: string[] = []\n\n    searchParams.forEach((_, paramName) => {\n      queryParams.push(paramName)\n    })\n\n    devUtils.warn(\n      `Found a redundant usage of query parameters in the request handler URL for \"${method} ${path}\". Please match against a path instead and access query parameters in the response resolver function using \"req.url.searchParams\".`,\n    )\n  }\n\n  parse(request: RequestType, resolutionContext?: ResponseResolutionContext) {\n    return matchRequestUrl(\n      request.url,\n      this.info.path,\n      resolutionContext?.baseUrl,\n    )\n  }\n\n  protected getPublicRequest(\n    request: RequestType,\n    parsedResult: ParsedRestRequest,\n  ): RestRequest<any, PathParams> {\n    return new RestRequest(request, parsedResult.params || {})\n  }\n\n  predicate(request: RequestType, parsedResult: ParsedRestRequest) {\n    const matchesMethod =\n      this.info.method instanceof RegExp\n        ? this.info.method.test(request.method)\n        : isStringEqual(this.info.method, request.method)\n\n    return matchesMethod && parsedResult.matches\n  }\n\n  log(request: RequestType, response: SerializedResponse<any>) {\n    const publicUrl = getPublicUrlFromRequest(request)\n    const loggedRequest = prepareRequest(request)\n    const loggedResponse = prepareResponse(response)\n    const statusColor = getStatusCodeColor(response.status)\n\n    console.groupCollapsed(\n      devUtils.formatMessage('%s %s %s (%c%s%c)'),\n      getTimestamp(),\n      request.method,\n      publicUrl,\n      `color:${statusColor}`,\n      `${response.status} ${response.statusText}`,\n      'color:inherit',\n    )\n    console.log('Request', loggedRequest)\n    console.log('Handler:', this)\n    console.log('Response', loggedResponse)\n    console.groupEnd()\n  }\n}\n", "import { invariant } from 'outvariant'\nimport { ResponseTransformer } from '../response'\nimport { devUtils } from '../utils/internal/devUtils'\nimport { jsonParse } from '../utils/internal/jsonParse'\nimport { mergeRight } from '../utils/internal/mergeRight'\nimport { json } from './json'\n\ntype ForbiddenFieldNames = '' | 'data' | 'errors' | 'extensions'\n\n/**\n * Set a custom field on the GraphQL mocked response.\n * @example res(ctx.fields('customField', value))\n * @see {@link https://mswjs.io/docs/api/context/field}\n */\nexport const field = <FieldNameType extends string, FieldValueType>(\n  fieldName: FieldNameType extends ForbiddenFieldNames ? never : FieldNameType,\n  fieldValue: FieldValueType,\n): ResponseTransformer<string> => {\n  return (res) => {\n    validateFieldName(fieldName)\n\n    const prevBody = jsonParse(res.body) || {}\n    const nextBody = mergeRight(prevBody, { [fieldName]: fieldValue })\n\n    return json(nextBody)(res as any) as any\n  }\n}\n\nfunction validateFieldName(fieldName: string) {\n  invariant(\n    fieldName.trim() !== '',\n    devUtils.formatMessage(\n      'Failed to set a custom field on a GraphQL response: field name cannot be empty.',\n    ),\n  )\n\n  invariant(\n    fieldName !== 'data',\n    devUtils.formatMessage(\n      'Failed to set a custom \"%s\" field on a mocked GraphQL response: forbidden field name. Did you mean to call \"ctx.data()\" instead?',\n      fieldName,\n    ),\n  )\n\n  invariant(\n    fieldName !== 'errors',\n    devUtils.formatMessage(\n      'Failed to set a custom \"%s\" field on a mocked GraphQL response: forbidden field name. Did you mean to call \"ctx.errors()\" instead?',\n      fieldName,\n    ),\n  )\n\n  invariant(\n    fieldName !== 'extensions',\n    devUtils.formatMessage(\n      'Failed to set a custom \"%s\" field on a mocked GraphQL response: forbidden field name. Did you mean to call \"ctx.extensions()\" instead?',\n      fieldName,\n    ),\n  )\n}\n", "export function tryCatch<Fn extends (...args: any[]) => any>(\n  fn: Fn,\n  onException?: (error: Error) => void,\n): ReturnType<Fn> | undefined {\n  try {\n    const result = fn()\n    return result\n  } catch (error) {\n    onException?.(error as Error)\n  }\n}\n", "import type { DocumentNode, OperationTypeNode } from 'graphql'\nimport { SerializedResponse } from '../setupWorker/glossary'\nimport { data } from '../context/data'\nimport { extensions } from '../context/extensions'\nimport { errors } from '../context/errors'\nimport { field } from '../context/field'\nimport { GraphQLPayloadContext } from '../typeUtils'\nimport { cookie } from '../context/cookie'\nimport {\n  defaultContext,\n  DefaultContext,\n  RequestHandler,\n  RequestHandlerDefaultInfo,\n  ResponseResolver,\n} from './RequestHandler'\nimport { getTimestamp } from '../utils/logging/getTimestamp'\nimport { getStatusCodeColor } from '../utils/logging/getStatusCodeColor'\nimport { prepareRequest } from '../utils/logging/prepareRequest'\nimport { prepareResponse } from '../utils/logging/prepareResponse'\nimport { matchRequestUrl, Path } from '../utils/matching/matchRequestUrl'\nimport {\n  ParsedGraphQLRequest,\n  GraphQLMultipartRequestBody,\n  parseGraphQLRequest,\n  parseDocumentNode,\n} from '../utils/internal/parseGraphQLRequest'\nimport { getPublicUrlFromRequest } from '../utils/request/getPublicUrlFromRequest'\nimport { tryCatch } from '../utils/internal/tryCatch'\nimport { devUtils } from '../utils/internal/devUtils'\nimport { MockedRequest } from '../utils/request/MockedRequest'\n\nexport type ExpectedOperationTypeNode = OperationTypeNode | 'all'\nexport type GraphQLHandlerNameSelector = DocumentNode | RegExp | string\n\n// GraphQL related context should contain utility functions\n// useful for GraphQL. Functions like `xml()` bear no value\n// in the GraphQL universe.\nexport type GraphQLContext<QueryType extends Record<string, unknown>> =\n  DefaultContext & {\n    data: GraphQLPayloadContext<QueryType>\n    extensions: GraphQLPayloadContext<QueryType>\n    errors: typeof errors\n    cookie: typeof cookie\n    field: typeof field\n  }\n\nexport const graphqlContext: GraphQLContext<any> = {\n  ...defaultContext,\n  data,\n  extensions,\n  errors,\n  cookie,\n  field,\n}\n\nexport type GraphQLVariables = Record<string, any>\n\nexport interface GraphQLHandlerInfo extends RequestHandlerDefaultInfo {\n  operationType: ExpectedOperationTypeNode\n  operationName: GraphQLHandlerNameSelector\n}\n\nexport type GraphQLRequestBody<VariablesType extends GraphQLVariables> =\n  | GraphQLJsonRequestBody<VariablesType>\n  | GraphQLMultipartRequestBody\n  | Record<string, any>\n  | undefined\n\nexport interface GraphQLJsonRequestBody<Variables extends GraphQLVariables> {\n  query: string\n  variables?: Variables\n}\n\nexport function isDocumentNode(\n  value: DocumentNode | any,\n): value is DocumentNode {\n  if (value == null) {\n    return false\n  }\n\n  return typeof value === 'object' && 'kind' in value && 'definitions' in value\n}\n\nexport class GraphQLRequest<\n  Variables extends GraphQLVariables,\n> extends MockedRequest<GraphQLRequestBody<Variables>> {\n  constructor(request: MockedRequest, public readonly variables: Variables) {\n    super(request.url, {\n      ...request,\n      /**\n       * TODO(https://github.com/mswjs/msw/issues/1318): Cleanup\n       */\n      body: request['_body'],\n    })\n  }\n}\n\nexport class GraphQLHandler<\n  Request extends GraphQLRequest<any> = GraphQLRequest<any>,\n> extends RequestHandler<\n  GraphQLHandlerInfo,\n  Request,\n  ParsedGraphQLRequest | null,\n  GraphQLRequest<any>\n> {\n  private endpoint: Path\n\n  constructor(\n    operationType: ExpectedOperationTypeNode,\n    operationName: GraphQLHandlerNameSelector,\n    endpoint: Path,\n    resolver: ResponseResolver<any, any>,\n  ) {\n    let resolvedOperationName = operationName\n\n    if (isDocumentNode(operationName)) {\n      const parsedNode = parseDocumentNode(operationName)\n\n      if (parsedNode.operationType !== operationType) {\n        throw new Error(\n          `Failed to create a GraphQL handler: provided a DocumentNode with a mismatched operation type (expected \"${operationType}\", but got \"${parsedNode.operationType}\").`,\n        )\n      }\n\n      if (!parsedNode.operationName) {\n        throw new Error(\n          `Failed to create a GraphQL handler: provided a DocumentNode with no operation name.`,\n        )\n      }\n\n      resolvedOperationName = parsedNode.operationName\n    }\n\n    const header =\n      operationType === 'all'\n        ? `${operationType} (origin: ${endpoint.toString()})`\n        : `${operationType} ${resolvedOperationName} (origin: ${endpoint.toString()})`\n\n    super({\n      info: {\n        header,\n        operationType,\n        operationName: resolvedOperationName,\n      },\n      ctx: graphqlContext,\n      resolver,\n    })\n\n    this.endpoint = endpoint\n  }\n\n  parse(request: MockedRequest) {\n    return tryCatch(\n      () => parseGraphQLRequest(request),\n      (error) => console.error(error.message),\n    )\n  }\n\n  protected getPublicRequest(\n    request: Request,\n    parsedResult: ParsedGraphQLRequest,\n  ): GraphQLRequest<any> {\n    return new GraphQLRequest(request, parsedResult?.variables || {})\n  }\n\n  predicate(request: MockedRequest, parsedResult: ParsedGraphQLRequest) {\n    if (!parsedResult) {\n      return false\n    }\n\n    if (!parsedResult.operationName && this.info.operationType !== 'all') {\n      const publicUrl = getPublicUrlFromRequest(request)\n      devUtils.warn(`\\\nFailed to intercept a GraphQL request at \"${request.method} ${publicUrl}\": anonymous GraphQL operations are not supported.\n\nConsider naming this operation or using \"graphql.operation\" request handler to intercept GraphQL requests regardless of their operation name/type. Read more: https://mswjs.io/docs/api/graphql/operation\\\n      `)\n      return false\n    }\n\n    const hasMatchingUrl = matchRequestUrl(request.url, this.endpoint)\n    const hasMatchingOperationType =\n      this.info.operationType === 'all' ||\n      parsedResult.operationType === this.info.operationType\n\n    const hasMatchingOperationName =\n      this.info.operationName instanceof RegExp\n        ? this.info.operationName.test(parsedResult.operationName || '')\n        : parsedResult.operationName === this.info.operationName\n\n    return (\n      hasMatchingUrl.matches &&\n      hasMatchingOperationType &&\n      hasMatchingOperationName\n    )\n  }\n\n  log(\n    request: Request,\n    response: SerializedResponse<any>,\n    parsedRequest: ParsedGraphQLRequest,\n  ) {\n    const loggedRequest = prepareRequest(request)\n    const loggedResponse = prepareResponse(response)\n    const statusColor = getStatusCodeColor(response.status)\n    const requestInfo = parsedRequest?.operationName\n      ? `${parsedRequest?.operationType} ${parsedRequest?.operationName}`\n      : `anonymous ${parsedRequest?.operationType}`\n\n    console.groupCollapsed(\n      devUtils.formatMessage('%s %s (%c%s%c)'),\n      getTimestamp(),\n      `${requestInfo}`,\n      `color:${statusColor}`,\n      `${response.status} ${response.statusText}`,\n      'color:inherit',\n    )\n    console.log('Request:', loggedRequest)\n    console.log('Handler:', this)\n    console.log('Response:', loggedResponse)\n    console.groupEnd()\n  }\n}\n", "import { store } from '@mswjs/cookies'\nimport { MockedResponse } from '../../response'\nimport { MockedRequest } from './MockedRequest'\n\nexport function readResponseCookies(\n  request: MockedRequest,\n  response: MockedResponse,\n) {\n  store.add({ ...request, url: request.url.toString() }, response)\n  store.persist()\n}\n", "import { flattenHeadersObject, headersToObject } from 'headers-polyfill'\nimport type { SerializedResponse } from '../../setupWorker/glossary'\n\nexport function serializeResponse(source: Response): SerializedResponse<any> {\n  return {\n    status: source.status,\n    statusText: source.statusText,\n    headers: flattenHeadersObject(headersToObject(source.headers)),\n    body: source.body,\n  }\n}\n", "import {\n  StartOptions,\n  SerializedResponse,\n  SetupWorkerInternalContext,\n  ServiceWorkerIncomingEventsMap,\n} from '../glossary'\nimport {\n  ServiceWorkerMessage,\n  WorkerChannel,\n} from './utils/createMessageChannel'\nimport { NetworkError } from '../../utils/NetworkError'\nimport { parseWorkerRequest } from '../../utils/request/parseWorkerRequest'\nimport { handleRequest } from '../../utils/handleRequest'\nimport { RequiredDeep } from '../../typeUtils'\nimport { MockedResponse } from '../../response'\nimport { devUtils } from '../../utils/internal/devUtils'\nimport { serializeResponse } from '../../utils/logging/serializeResponse'\n\nexport const createRequestListener = (\n  context: SetupWorkerInternalContext,\n  options: RequiredDeep<StartOptions>,\n) => {\n  return async (\n    event: MessageEvent,\n    message: ServiceWorkerMessage<\n      'REQUEST',\n      ServiceWorkerIncomingEventsMap['REQUEST']\n    >,\n  ) => {\n    const messageChannel = new WorkerChannel(event.ports[0])\n    const request = parseWorkerRequest(message.payload)\n\n    try {\n      await handleRequest<SerializedResponse>(\n        request,\n        context.requestHandlers,\n        options,\n        context.emitter,\n        {\n          transformResponse,\n          onPassthroughResponse() {\n            messageChannel.postMessage('NOT_FOUND')\n          },\n          async onMockedResponse(\n            response,\n            { handler, publicRequest, parsedRequest },\n          ) {\n            if (response.body instanceof ReadableStream) {\n              throw new Error(\n                devUtils.formatMessage(\n                  'Failed to construct a mocked response with a \"ReadableStream\" body: mocked streams are not supported. Follow https://github.com/mswjs/msw/issues/1336 for more details.',\n                ),\n              )\n            }\n\n            const responseInstance = new Response(response.body, response)\n            const responseBodyBuffer = await responseInstance.arrayBuffer()\n\n            // If the mocked response has no body, keep it that way.\n            // Sending an empty \"ArrayBuffer\" to the worker will cause\n            // the worker constructing \"new Response(new ArrayBuffer(0))\"\n            // which will throw on responses that must have no body (i.e. 204).\n            const responseBody =\n              response.body == null ? null : responseBodyBuffer\n\n            messageChannel.postMessage(\n              'MOCK_RESPONSE',\n              {\n                ...response,\n                body: responseBody,\n              },\n              [responseBodyBuffer],\n            )\n\n            if (!options.quiet) {\n              context.emitter.once('response:mocked', (response) => {\n                handler.log(\n                  publicRequest,\n                  serializeResponse(response),\n                  parsedRequest,\n                )\n              })\n            }\n          },\n        },\n      )\n    } catch (error) {\n      if (error instanceof NetworkError) {\n        // Treat emulated network error differently,\n        // as it is an intended exception in a request handler.\n        messageChannel.postMessage('NETWORK_ERROR', {\n          name: error.name,\n          message: error.message,\n        })\n\n        return\n      }\n\n      if (error instanceof Error) {\n        devUtils.error(\n          `Uncaught exception in the request handler for \"%s %s\":\n\n%s\n\nThis exception has been gracefully handled as a 500 response, however, it's strongly recommended to resolve this error, as it indicates a mistake in your code. If you wish to mock an error response, please see this guide: https://mswjs.io/docs/recipes/mocking-error-responses`,\n          request.method,\n          request.url,\n          error.stack ?? error,\n        )\n\n        // Treat all other exceptions in a request handler as unintended,\n        // alerting that there is a problem that needs fixing.\n        messageChannel.postMessage('MOCK_RESPONSE', {\n          status: 500,\n          statusText: 'Request Handler Error',\n          headers: {\n            'Content-Type': 'application/json',\n          },\n          body: JSON.stringify({\n            name: error.name,\n            message: error.message,\n            stack: error.stack,\n          }),\n        })\n      }\n    }\n  }\n}\n\nfunction transformResponse(\n  response: MockedResponse<string>,\n): SerializedResponse<string> {\n  return {\n    status: response.status,\n    statusText: response.statusText,\n    headers: response.headers.all(),\n    body: response.body,\n    delay: response.delay,\n  }\n}\n", "import { SetupWorkerInternalContext } from '../../setupWorker/glossary'\n\nexport async function requestIntegrityCheck(\n  context: SetupWorkerInternalContext,\n  serviceWorker: ServiceWorker,\n): Promise<ServiceWorker> {\n  // Signal Service Worker to report back its integrity\n  context.workerChannel.send('INTEGRITY_CHECK_REQUEST')\n\n  const { payload: actualChecksum } = await context.events.once(\n    'INTEGRITY_CHECK_RESPONSE',\n  )\n\n  // Compare the response from the Service Worker and the\n  // global variable set during the build.\n  if (actualChecksum !== SERVICE_WORKER_CHECKSUM) {\n    throw new Error(\n      `Currently active Service Worker (${actualChecksum}) is behind the latest published one (${SERVICE_WORKER_CHECKSUM}).`,\n    )\n  }\n\n  return serviceWorker\n}\n", "import { until } from '@open-draft/until'\n\n/**\n * Intercepts and defers any requests on the page\n * until the Service Worker instance is ready.\n * Must only be used in a browser.\n */\nexport function deferNetworkRequestsUntil(predicatePromise: Promise<any>) {\n  // Defer any `XMLHttpRequest` requests until the Service Worker is ready.\n  const originalXhrSend = window.XMLHttpRequest.prototype.send\n  window.XMLHttpRequest.prototype.send = function (\n    ...args: Parameters<XMLHttpRequest['send']>\n  ) {\n    // Keep this function synchronous to comply with `XMLHttpRequest.prototype.send`,\n    // because that method is always synchronous.\n    until(() => predicatePromise).then(() => {\n      window.XMLHttpRequest.prototype.send = originalXhrSend\n      this.send(...args)\n    })\n  }\n\n  // Defer any `fetch` requests until the Service Worker is ready.\n  const originalFetch = window.fetch\n  window.fetch = async (...args) => {\n    await until(() => predicatePromise)\n    window.fetch = originalFetch\n    return window.fetch(...args)\n  }\n}\n", "import {\n  ServiceWorkerIncomingEventsMap,\n  SetupWorkerInternalContext,\n} from '../../setupWorker/glossary'\nimport { ServiceWorkerMessage } from './utils/createMessageChannel'\n\nexport function createResponseListener(context: SetupWorkerInternalContext) {\n  return (\n    _: MessageEvent,\n    message: ServiceWorkerMessage<\n      'RESPONSE',\n      ServiceWorkerIncomingEventsMap['RESPONSE']\n    >,\n  ) => {\n    const { payload: responseJson } = message\n\n    /**\n     * CORS requests with `mode: \"no-cors\"` result in \"opaque\" responses.\n     * That kind of responses cannot be manipulated in JavaScript due\n     * to the security considerations.\n     * @see https://fetch.spec.whatwg.org/#concept-filtered-response-opaque\n     * @see https://github.com/mswjs/msw/issues/529\n     */\n    if (responseJson.type?.includes('opaque')) {\n      return\n    }\n\n    const response = new Response(responseJson.body || null, responseJson)\n    const isMockedResponse = response.headers.get('x-powered-by') === 'msw'\n\n    if (isMockedResponse) {\n      context.emitter.emit('response:mocked', response, responseJson.requestId)\n    } else {\n      context.emitter.emit('response:bypass', response, responseJson.requestId)\n    }\n  }\n}\n", "import { devUtils } from '../../../utils/internal/devUtils'\nimport { StartOptions } from '../../glossary'\n\nexport function validateWorkerScope(\n  registration: ServiceWorkerRegistration,\n  options?: StartOptions,\n): void {\n  if (!options?.quiet && !location.href.startsWith(registration.scope)) {\n    devUtils.warn(\n      `\\\nCannot intercept requests on this page because it's outside of the worker's scope (\"${registration.scope}\"). If you wish to mock API requests on this page, you must resolve this scope issue.\n\n- (Recommended) Register the worker at the root level (\"/\") of your application.\n- Set the \"Service-Worker-Allowed\" response header to allow out-of-scope workers.\\\n`,\n    )\n  }\n}\n", "import { devUtils } from '../../../utils/internal/devUtils'\n\nexport function printStopMessage(args: { quiet?: boolean } = {}): void {\n  if (args.quiet) {\n    return\n  }\n\n  console.log(\n    `%c${devUtils.formatMessage('Mocking disabled.')}`,\n    'color:orangered;font-weight:bold;',\n  )\n}\n", "import { devUtils } from '../../utils/internal/devUtils'\nimport { SetupWorkerInternalContext, StopHandler } from '../glossary'\nimport { printStopMessage } from './utils/printStopMessage'\n\nexport const createStop = (\n  context: SetupWorkerInternalContext,\n): StopHandler => {\n  return function stop() {\n    // Warn developers calling \"worker.stop()\" more times than necessary.\n    // This likely indicates a mistake in their code.\n    if (!context.isMockingEnabled) {\n      devUtils.warn(\n        'Found a redundant \"worker.stop()\" call. Note that stopping the worker while mocking already stopped has no effect. Consider removing this \"worker.stop()\" call.',\n      )\n      return\n    }\n\n    /**\n     * Signal the Service Worker to disable mocking for this client.\n     * Use this an an explicit way to stop the mocking, while preserving\n     * the worker-client relation. Does not affect the worker's lifecycle.\n     */\n    context.workerChannel.send('MOCK_DEACTIVATE')\n    context.isMockingEnabled = false\n    window.clearInterval(context.keepAliveInterval)\n\n    printStopMessage({ quiet: context.startOptions?.quiet })\n  }\n}\n", "import { RequiredDeep } from '../../../typeUtils'\nimport { mergeRight } from '../../../utils/internal/mergeRight'\nimport {\n  SetupWorker,\n  SetupWorkerInternalContext,\n  StartHandler,\n  StartOptions,\n} from '../../glossary'\n\nexport const DEFAULT_START_OPTIONS: RequiredDeep<StartOptions> = {\n  serviceWorker: {\n    url: '/mockServiceWorker.js',\n    options: null as any,\n  },\n  quiet: false,\n  waitUntilReady: true,\n  onUnhandledRequest: 'warn',\n  findWorker(scriptURL, mockServiceWorkerUrl) {\n    return scriptURL === mockServiceWorkerUrl\n  },\n}\n\n/**\n * Returns resolved worker start options, merging the default options\n * with the given custom options.\n */\nexport function resolveStartOptions(\n  initialOptions?: StartOptions,\n): RequiredDeep<StartOptions> {\n  return mergeRight(\n    DEFAULT_START_OPTIONS,\n    initialOptions || {},\n  ) as RequiredDeep<StartOptions>\n}\n\nexport function prepareStartHandler(\n  handler: StartHandler,\n  context: SetupWorkerInternalContext,\n): SetupWorker['start'] {\n  return (initialOptions) => {\n    context.startOptions = resolveStartOptions(initialOptions)\n    return handler(context.startOptions, initialOptions || {})\n  }\n}\n", "import {\n  Interceptor,\n  BatchInterceptor,\n  HttpRequestEventMap,\n} from '@mswjs/interceptors'\nimport { FetchInterceptor } from '@mswjs/interceptors/lib/interceptors/fetch'\nimport { XMLHttpRequestInterceptor } from '@mswjs/interceptors/lib/interceptors/XMLHttpRequest'\nimport {\n  SerializedResponse,\n  SetupWorkerInternalContext,\n  StartOptions,\n} from '../glossary'\nimport type { RequiredDeep } from '../../typeUtils'\nimport { handleRequest } from '../../utils/handleRequest'\nimport { MockedRequest } from '../../utils/request/MockedRequest'\nimport { serializeResponse } from '../../utils/logging/serializeResponse'\nimport { createResponseFromIsomorphicResponse } from '../../utils/request/createResponseFromIsomorphicResponse'\n\nexport function createFallbackRequestListener(\n  context: SetupWorkerInternalContext,\n  options: RequiredDeep<StartOptions>,\n): Interceptor<HttpRequestEventMap> {\n  const interceptor = new BatchInterceptor({\n    name: 'fallback',\n    interceptors: [new FetchInterceptor(), new XMLHttpRequestInterceptor()],\n  })\n\n  interceptor.on('request', async (request) => {\n    const mockedRequest = new MockedRequest(request.url, {\n      ...request,\n      body: await request.arrayBuffer(),\n    })\n\n    const response = await handleRequest<SerializedResponse>(\n      mockedRequest,\n      context.requestHandlers,\n      options,\n      context.emitter,\n      {\n        transformResponse(response) {\n          return {\n            status: response.status,\n            statusText: response.statusText,\n            headers: response.headers.all(),\n            body: response.body,\n            delay: response.delay,\n          }\n        },\n        onMockedResponse(_, { handler, publicRequest, parsedRequest }) {\n          if (!options.quiet) {\n            context.emitter.once('response:mocked', (response) => {\n              handler.log(\n                publicRequest,\n                serializeResponse(response),\n                parsedRequest,\n              )\n            })\n          }\n        },\n      },\n    )\n\n    if (response) {\n      request.respondWith(response)\n    }\n  })\n\n  interceptor.on('response', (request, response) => {\n    if (!request.id) {\n      return\n    }\n\n    const browserResponse = createResponseFromIsomorphicResponse(response)\n\n    if (response.headers.get('x-powered-by') === 'msw') {\n      context.emitter.emit('response:mocked', browserResponse, request.id)\n    } else {\n      context.emitter.emit('response:bypass', browserResponse, request.id)\n    }\n  })\n\n  interceptor.apply()\n\n  return interceptor\n}\n", "import { encodeBuffer, IsomorphicResponse } from '@mswjs/interceptors'\n\nconst noop = () => {\n  throw new Error('Not implemented')\n}\n\nexport function createResponseFromIsomorphicResponse(\n  response: IsomorphicResponse,\n): Response {\n  return {\n    ...response,\n    ok: response.status >= 200 && response.status < 300,\n    url: '',\n    type: 'default',\n    status: response.status,\n    statusText: response.statusText,\n    headers: response.headers,\n    body: new ReadableStream(),\n    redirected: response.headers.get('Location') != null,\n    async text() {\n      return response.body || ''\n    },\n    async json() {\n      return JSON.parse(response.body || '')\n    },\n    async arrayBuffer() {\n      return encodeBuffer(response.body || '')\n    },\n    bodyUsed: false,\n    formData: noop,\n    blob: noop,\n    clone: noop,\n  }\n}\n", "import { createFallbackRequestListener } from './createFallbackRequestListener'\nimport { SetupWorkerInternalContext, StartHandler } from '../glossary'\nimport { printStartMessage } from './utils/printStartMessage'\n\nexport function createFallbackStart(\n  context: SetupWorkerInternalContext,\n): StartHandler {\n  return async function start(options) {\n    context.fallbackInterceptor = createFallbackRequestListener(\n      context,\n      options,\n    )\n\n    printStartMessage({\n      message: 'Mocking enabled (fallback mode).',\n      quiet: options.quiet,\n    })\n\n    return undefined\n  }\n}\n", "import { SetupWorkerInternalContext, StopHandler } from '../glossary'\nimport { printStopMessage } from './utils/printStopMessage'\n\nexport function createFallbackStop(\n  context: SetupWorkerInternalContext,\n): StopHandler {\n  return function stop() {\n    context.fallbackInterceptor?.dispose()\n    printStopMessage({ quiet: context.startOptions?.quiet })\n  }\n}\n", "import { invariant } from 'outvariant'\nimport { EventMap, Emitter } from 'strict-event-emitter'\nimport {\n  DefaultBodyType,\n  RequestHandler,\n  RequestHandlerDefaultInfo,\n} from './handlers/RequestHandler'\nimport { LifeCycleEventEmitter } from './sharedOptions'\nimport { devUtils } from './utils/internal/devUtils'\nimport { pipeEvents } from './utils/internal/pipeEvents'\nimport { toReadonlyArray } from './utils/internal/toReadonlyArray'\nimport { MockedRequest } from './utils/request/MockedRequest'\n\n/**\n * Generic class for the mock API setup.\n */\nexport abstract class SetupApi<EventsMap extends EventMap> {\n  protected initialHandlers: ReadonlyArray<RequestHandler>\n  protected currentHandlers: Array<RequestHandler>\n  protected readonly emitter: Emitter<EventsMap>\n  protected readonly publicEmitter: Emitter<EventsMap>\n\n  public readonly events: LifeCycleEventEmitter<EventsMap>\n\n  constructor(...initialHandlers: Array<RequestHandler>) {\n    this.validateHandlers(...initialHandlers)\n\n    this.initialHandlers = toReadonlyArray(initialHandlers)\n    this.currentHandlers = [...initialHandlers]\n\n    this.emitter = new Emitter<EventsMap>()\n    this.publicEmitter = new Emitter<EventsMap>()\n    pipeEvents(this.emitter, this.publicEmitter)\n\n    this.events = this.createLifeCycleEvents()\n  }\n\n  private validateHandlers(...handlers: ReadonlyArray<RequestHandler>): void {\n    // Guard against incorrect call signature of the setup API.\n    for (const handler of handlers) {\n      invariant(\n        !Array.isArray(handler),\n        devUtils.formatMessage(\n          'Failed to construct \"%s\" given an Array of request handlers. Make sure you spread the request handlers when calling the respective setup function.',\n        ),\n        this.constructor.name,\n      )\n    }\n  }\n\n  protected dispose(): void {\n    this.emitter.removeAllListeners()\n    this.publicEmitter.removeAllListeners()\n  }\n\n  public use(...runtimeHandlers: Array<RequestHandler>): void {\n    this.currentHandlers.unshift(...runtimeHandlers)\n  }\n\n  public restoreHandlers(): void {\n    this.currentHandlers.forEach((handler) => {\n      handler.markAsSkipped(false)\n    })\n  }\n\n  public resetHandlers(...nextHandlers: Array<RequestHandler>): void {\n    this.currentHandlers =\n      nextHandlers.length > 0 ? [...nextHandlers] : [...this.initialHandlers]\n  }\n\n  public listHandlers(): ReadonlyArray<\n    RequestHandler<\n      RequestHandlerDefaultInfo,\n      MockedRequest<DefaultBodyType>,\n      any,\n      MockedRequest<DefaultBodyType>\n    >\n  > {\n    return toReadonlyArray(this.currentHandlers)\n  }\n\n  private createLifeCycleEvents(): LifeCycleEventEmitter<EventsMap> {\n    return {\n      on: (...args: any[]) => {\n        return (this.publicEmitter.on as any)(...args)\n      },\n      removeListener: (...args: any[]) => {\n        return (this.publicEmitter.removeListener as any)(...args)\n      },\n      removeAllListeners: (...args: any[]) => {\n        return this.publicEmitter.removeAllListeners(...args)\n      },\n    }\n  }\n\n  abstract printHandlers(): void\n}\n", "import { Emitter, EventMap } from 'strict-event-emitter'\n\n/**\n * Pipes all emitted events from one emitter to another.\n */\nexport function pipeEvents<Events extends EventMap>(\n  source: Emitter<Events>,\n  destination: Emitter<Events>,\n): void {\n  const rawEmit = source.emit\n\n  // @ts-ignore\n  if (rawEmit._isPiped) {\n    return\n  }\n\n  source.emit = function (event, ...data) {\n    destination.emit(event, ...data)\n    return rawEmit.call(this, event, ...data)\n  }\n\n  // @ts-ignore\n  source.emit._isPiped = true\n}\n", "/**\n * Creates an immutable copy of the given array.\n */\nexport function toReadonlyArray<T>(source: Array<T>): ReadonlyArray<T> {\n  const clone = [...source] as Array<T>\n  Object.freeze(clone)\n  return clone\n}\n", "import { DefaultBodyType, ResponseResolver } from './handlers/RequestHandler'\nimport {\n  RESTMethods,\n  RestContext,\n  RestHandler,\n  RestRequest,\n} from './handlers/RestHandler'\nimport { Path, PathParams } from './utils/matching/matchRequestUrl'\n\nfunction createRestHandler<Method extends RESTMethods | RegExp>(\n  method: Method,\n) {\n  return <\n    RequestBodyType extends DefaultBodyType = DefaultBodyType,\n    Params extends PathParams<keyof Params> = PathParams,\n    ResponseBody extends DefaultBodyType = DefaultBodyType,\n  >(\n    path: Path,\n    resolver: ResponseResolver<\n      RestRequest<\n        Method extends RESTMethods.HEAD | RESTMethods.GET\n          ? never\n          : RequestBodyType,\n        Params\n      >,\n      RestContext,\n      ResponseBody\n    >,\n  ) => {\n    return new RestHandler(method, path, resolver)\n  }\n}\n\nexport const rest = {\n  all: createRestHandler(/.+/),\n  head: createRestHandler(RESTMethods.HEAD),\n  get: createRestHandler(RESTMethods.GET),\n  post: createRestHandler(RESTMethods.POST),\n  put: createRestHandler(RESTMethods.PUT),\n  delete: createRestHandler(RESTMethods.DELETE),\n  patch: createRestHandler(RESTMethods.PATCH),\n  options: createRestHandler(RESTMethods.OPTIONS),\n}\n", "import type { DocumentNode, OperationTypeNode } from 'graphql'\nimport { ResponseResolver } from './handlers/RequestHandler'\nimport {\n  GraphQLHandler,\n  GraphQLContext,\n  GraphQLRequest,\n  GraphQLVariables,\n  ExpectedOperationTypeNode,\n  GraphQLHandlerNameSelector,\n} from './handlers/GraphQLHandler'\nimport { Path } from './utils/matching/matchRequestUrl'\n\nexport interface TypedDocumentNode<\n  Result = { [key: string]: any },\n  Variables = { [key: string]: any },\n> extends DocumentNode {\n  __apiType?: (variables: Variables) => Result\n  __resultType?: Result\n  __variablesType?: Variables\n}\n\nfunction createScopedGraphQLHandler(\n  operationType: ExpectedOperationTypeNode,\n  url: Path,\n) {\n  return <\n    Query extends Record<string, any>,\n    Variables extends GraphQLVariables = GraphQLVariables,\n  >(\n    operationName:\n      | GraphQLHandlerNameSelector\n      | DocumentNode\n      | TypedDocumentNode<Query, Variables>,\n    resolver: ResponseResolver<\n      GraphQLRequest<Variables>,\n      GraphQLContext<Query>\n    >,\n  ) => {\n    return new GraphQLHandler<GraphQLRequest<Variables>>(\n      operationType,\n      operationName,\n      url,\n      resolver,\n    )\n  }\n}\n\nfunction createGraphQLOperationHandler(url: Path) {\n  return <\n    Query extends Record<string, any>,\n    Variables extends GraphQLVariables = GraphQLVariables,\n  >(\n    resolver: ResponseResolver<\n      GraphQLRequest<Variables>,\n      GraphQLContext<Query>\n    >,\n  ) => {\n    return new GraphQLHandler<GraphQLRequest<Variables>>(\n      'all',\n      new RegExp('.*'),\n      url,\n      resolver,\n    )\n  }\n}\n\nconst standardGraphQLHandlers = {\n  /**\n   * Captures any GraphQL operation, regardless of its name, under the current scope.\n   * @example\n   * graphql.operation((req, res, ctx) => {\n   *   return res(ctx.data({ name: 'John' }))\n   * })\n   * @see {@link https://mswjs.io/docs/api/graphql/operation `graphql.operation()`}\n   */\n  operation: createGraphQLOperationHandler('*'),\n\n  /**\n   * Captures a GraphQL query by a given name.\n   * @example\n   * graphql.query('GetUser', (req, res, ctx) => {\n   *   return res(ctx.data({ user: { name: 'John' } }))\n   * })\n   * @see {@link https://mswjs.io/docs/api/graphql/query `graphql.query()`}\n   */\n  query: createScopedGraphQLHandler('query' as OperationTypeNode, '*'),\n\n  /**\n   * Captures a GraphQL mutation by a given name.\n   * @example\n   * graphql.mutation('SavePost', (req, res, ctx) => {\n   *   return res(ctx.data({ post: { id: 'abc-123' } }))\n   * })\n   * @see {@link https://mswjs.io/docs/api/graphql/mutation `graphql.mutation()`}\n   */\n  mutation: createScopedGraphQLHandler('mutation' as OperationTypeNode, '*'),\n}\n\nfunction createGraphQLLink(url: Path): typeof standardGraphQLHandlers {\n  return {\n    operation: createGraphQLOperationHandler(url),\n    query: createScopedGraphQLHandler('query' as OperationTypeNode, url),\n    mutation: createScopedGraphQLHandler('mutation' as OperationTypeNode, url),\n  }\n}\n\nexport const graphql = {\n  ...standardGraphQLHandlers,\n  link: createGraphQLLink,\n}\n", "import { rest } from 'msw';\n\nconst profile = {\n  full_name: 'Antoni Mock',\n  login: 'test@example.org',\n  external_id: 'test001',\n  profile: {\n    correspondence_email: 'jakis@email.test',\n    phone: '600-600-600',\n    address_street: 'ulica 50/50',\n    address_postal_code: '05-830',\n    address_city: 'Pruszk\u00F3w',\n    email_agreement: true,\n  },\n};\n\nconst userpassword = 'qwerty';\n\nconst updateProfile = (postData) => {\n  profile.profile = postData;\n};\n\nexport const profileMocks = [\n  rest.get('/users/accounts/profile', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json(profile),\n  )),\n\n  rest.post('/users/accounts/profile', (req, res, ctx) => {\n    req.json().then((postData) => {\n      updateProfile(postData);\n    });\n    return res(\n      ctx.status(200),\n    );\n  }),\n  rest.put('/users/accounts/change_my_password', (req, res, ctx) => req.json()\n    .then((data) => {\n      if (data.password !== data.password_confirmation) {\n        return res(\n          ctx.status(422),\n          ctx.body(JSON.stringify({\n            errors: 'Has\u0142o i potwierdzenie nie zgadzaj\u0105 si\u0119',\n          })),\n        );\n      } if (data.old_password !== userpassword) {\n        return res(\n          ctx.status(422),\n          ctx.body(JSON.stringify({\n            errors: 'Stare has\u0142o jest niepoprawne',\n          })),\n        );\n      }\n      return res(ctx.status(200));\n    })),\n];\n", "import { rest } from 'msw';\n\nexport const metersMocks = [\n  rest.post('/meters/add_measurements', (req, res, ctx) => res(\n    ctx.status(200),\n  )),\n\n  rest.get('/meters/list', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json({\n      meters: [\n        {\n          meter_id: '9c84c9a6-2fc2-4071-95dc-b95b7a09981d',\n          meter_group: 'water',\n          meter_type: 'CW',\n          meter_location: 'w szafie',\n          last_value: '20.5',\n          valid_until: '2023-02-14T14:08:28.128Z',\n          can_update: true,\n        },\n        {\n          meter_id: 'f8206fe9-206f-4403-8980-c7c0c547d3fa',\n          meter_group: null,\n          meter_type: 'ZW',\n          meter_location: 'w szafie',\n          last_value: '55.0',\n          valid_until: '2023-01-17T14:08:28.236Z',\n          can_update: false,\n        },\n        {\n          meter_id: '3231bca5-92d9-4f6b-b728-94074fb3bd00',\n          meter_group: 'water',\n          meter_type: 'ZW',\n          meter_location: 'w szafie',\n          last_value: '10.1',\n          valid_until: '2023-02-14T14:08:28.175Z',\n          can_update: true,\n        },\n        {\n          meter_id: '7ae3759d-123e-407f-a0e4-d83aa84e21d4',\n          meter_group: 'gas',\n          meter_type: 'GAS',\n          meter_location: 'w szafie',\n          last_value: '15.0',\n          valid_until: '2023-02-14T14:08:28.206Z',\n          can_update: true,\n        },\n        {\n          meter_id: '855b26f4-73d2-455b-847d-dde03066c598',\n          meter_group: null,\n          meter_type: 'CW',\n          meter_location: 'w szafie',\n          last_value: '45.0',\n          valid_until: '2023-02-14T14:08:28.224Z',\n          can_update: true,\n        },\n        {\n          meter_id: '1ac788b4-2b09-4759-a086-0ee4a53dcae0',\n          meter_group: 'gas',\n          meter_type: 'GAS',\n          meter_location: 'w szafie',\n          last_value: '35.0',\n          valid_until: '2023-01-17T14:08:28.215Z',\n          can_update: false,\n        },\n        {\n          meter_id: 'd5017cf2-8196-4741-a587-cc9185e63f33',\n          meter_group: null,\n          meter_type: 'GAS',\n          meter_location: 'w szafie',\n          last_value: '15.0',\n          valid_until: '2023-02-21T14:08:28.184Z',\n          can_update: true,\n        },\n      ],\n    }),\n  )),\n];\n", "import { rest } from 'msw';\nimport queryString from 'query-string';\n\nlet selectedColumns = [\n  'ticket_number',\n  'title',\n  'status',\n  'reported_at',\n  'last_comment_at',\n  'venue_address',\n  'homeowner_association_code',\n  'venue_code',\n  'homeowner_association_name',\n  'category',\n  'reporter_external_id',\n  'reporter',\n  'realizer_external_id',\n  'realizer',\n];\n\nconst venues = [\n  {\n    id: 'venueid-1',\n    code: '05-800',\n    address: 'ul. Czere\u015Bniowa 20',\n    main_tenant: true,\n  },\n\n  {\n    id: 'venueid-2',\n    code: '05-830',\n    address: 'ul. Wi\u015Bniowa 30',\n    main_tenant: false,\n  },\n];\n\nconst tickets = [\n  {\n    id: 'b4e53836-2454-4f43-a6ab-3fd397a3c031',\n    ticket_number: 'ak47',\n    title: 'Zalanie',\n    description: 'Lorem ipsum dolor sit amet. Rem porro quaerat est culpa internos eos quam autem. In omnis aliquid ab nemo voluptas et exercitationem culpa. Id suscipit molestiae nam enim voluptas et temporibus provident ut earum optio et necessitatibus voluptatem ex aperiam unde nam ducimus dolorem! ',\n    status: 'open',\n    category: 'malfunction',\n    reporter: 'Jan Niezbedny',\n    reporter_external_id: null,\n    tenant_name: 'Adam Banialuka',\n    homeowner_association_name: 'Babie do\u0142y',\n    last_comment_at: '2023-02-21T10:26:17',\n    venue_address: 'ul. Czere\u015Bniowa 20',\n    venue_code: '01-001-001',\n    reported_at: '2023-02-14T14:08:28',\n    realizer: null,\n    realizer_external_id: null,\n    attachments: [{\n      description: 'attachment to ticket',\n      filename: 'test1.jpg',\n      content_type: 'image/jpg',\n      path: '1fega3fgebb09',\n    }],\n    public_comments: [{\n      content: 'Quaerat cumque odio velit.',\n      author: 'Joe Doe',\n      created_at: '2023-02-20T08:26:17',\n      attachments: [{\n        description: 'attachment to comment',\n        filename: 'test2.jpg',\n        content_type: 'image/jpg',\n        path: '1313fnbb09',\n      }],\n      public: true,\n    }],\n    private_comments: [{\n      content: 'Zbyszku, zajmij si\u0119 tym prosz\u0119 niezw\u0142ocznie',\n      author: 'Stefan Bary\u0142a',\n      created_at: '2023-02-21T09:26:17',\n      attachments: [],\n      public: false,\n    },\n    {\n      content: 'Stefan, dzwoni\u0142em do lokatora. Naprawi\u0119 popo\u0142udniu.',\n      author: 'Zbigniew Stonoga',\n      created_at: '2023-02-21T10:26:17',\n      attachments: [],\n      public: false,\n    }],\n    tasks: [{\n      id: '5d0ea6ee-c12d-4bf3-a1f6-1a511dc29d32',\n      task_number: 15,\n      title: 'Tatarata',\n      status: 'open',\n      category: 'cleaning',\n      creator: 'Jane Doe',\n      creator_external_id: null,\n      realizer: null,\n      realizer_external_id: null,\n      venue_address: 'ul. Czere\u015Bniowa 20',\n      venue_code: '01-001-001',\n      homeowner_association_name: null,\n      homeowner_association_code: null,\n      created_at: '2023-06-23T12:03:59Z',\n      last_comment_at: null,\n      estimated_start_time: '2023-06-13T00:00:00Z',\n      estimated_finish_time: '2023-06-08T00:00:00Z',\n      started_at: '2023-06-26T00:00:00Z',\n      finished_at: null,\n    },\n    {\n      id: 'a7c3e6f7-20e9-42e2-b84c-f2caaa01d7e4',\n      task_number: 14,\n      title: 'Tatarata',\n      status: 'open',\n      category: 'cleaning',\n      creator: 'Kreator',\n      creator_external_id: null,\n      realizer: null,\n      realizer_external_id: null,\n      venue_address: 'ul. Czere\u015Bniowa 20',\n      venue_code: '01-001-001',\n      homeowner_association_name: null,\n      homeowner_association_code: null,\n      created_at: '2023-06-23T12:03:51Z',\n      last_comment_at: null,\n      estimated_start_time: '2023-06-13T00:00:00Z',\n      estimated_finish_time: '2023-06-08T00:00:00Z',\n      started_at: '2023-06-26T00:00:00Z',\n      finished_at: null,\n    }],\n  },\n  {\n    id: 'b4e53836-2454-4f43-a6ab-3fd397a3c032',\n    ticket_number: 'wind',\n    title: 'Nie dzia\u0142a winda',\n    description: 'Lorem ipsum dolor sit amet.',\n    status: 'completed',\n    category: 'malfunction',\n    last_comment_at: null,\n    realizer: null,\n    realizer_external_id: null,\n    reporter: 'Jan Niezbedny',\n    reporter_external_id: null,\n    reported_at: '2022-02-15T14:08:28',\n    venue_address: 'ul. Czere\u015Bniowa 20',\n    attachments: [],\n    public_comments: [],\n    private_comments: [],\n  },\n  {\n    id: '5efe87c7-ed4f-466c-8af3-11097757d2e4',\n    ticket_number: '12a3b',\n    title: 'Dewastacja budynku',\n    description: 'Ex perspiciatis eaque ut nesciunt animi non tempore aliquid non sapiente velit id sint obcaecati ut provident omnis sed beatae accusantium.',\n    status: 'ongoing',\n    category: 'complaint',\n    last_comment_at: '2023-02-20T08:36:17',\n    realizer: 'Jadwiga Kuna',\n    realizer_external_id: null,\n    reporter: 'Anna Staranna',\n    reporter_external_id: null,\n    reported_at: '2023-02-12T08:38:08',\n    venue_address: 'ul. Wi\u015Bniowa 30',\n    venue_code: '01-001-002',\n    attachments: [],\n    public_comments: [\n      {\n        content: 'Inventore quia magnam fugiat.',\n        author: 'Jane Doe',\n        created_at: '2023-02-20T08:36:17',\n        attachments: [],\n        public: true,\n      }],\n  },\n  {\n    id: '8b359308-0888-4535-b9e6-22b4c03d8b1e',\n    ticket_number: '98z76y',\n    title: 'Zepsuty domofon',\n    description: 'Eum delectus galisum et dicta quae aut dolor minima quo dolor blanditiis. Ut quia sunt ea earum reprehenderit et facilis perferendis est autem illum eum facilis aperiam quo voluptas nemo aut quaerat velit.',\n    status: 'completed',\n    category: 'garbage',\n    last_comment_at: null,\n    realizer: 'Anna Mockowa',\n    realizer_external_id: null,\n    reporter: 'Eustachy Motyka',\n    reported_at: '2023-01-13T22:11:03',\n    venue_address: 'ul. Czere\u015Bniowa 20',\n    venue_code: '01-001-001',\n    attachments: [],\n    public_comments: [],\n    private_comments: [],\n  },\n];\n\nlet ticketsToShow = {\n  id: '8b359308-0888-4535-b9e6-22b4c03d8b1e',\n  ticket_number: '98z76y',\n  title: 'Zepsuty domofon',\n  description: 'Eum delectus galisum et dicta quae aut dolor minima quo dolor blanditiis. Ut quia sunt ea earum reprehenderit et facilis perferendis est autem illum eum facilis aperiam quo voluptas nemo aut quaerat velit.',\n  status: 'completed',\n  category: 'garbage',\n  last_comment_at: null,\n  realizer: 'Anna Mockowa',\n  realizer_external_id: null,\n  reporter: 'Eustachy Motyka',\n  reporter_external_id: null,\n  reported_at: '2023-01-13T22:11:03',\n  venue_address: 'ul. Czere\u015Bniowa 20',\n  venue_code: '01-001-001',\n  attachments: [],\n  public_comments: [],\n  private_comments: [],\n};\n\nconst ticketCategories = [\n  {\n    id: '1',\n    name: 'garbage',\n  },\n  {\n    id: '2',\n    name: 'malfunction',\n  },\n  {\n    id: '3',\n    name: 'complaint',\n  },\n];\n\nexport const ticketStatuses = [\n  {\n    id: '1',\n    external_name: 'open',\n    internal_name: 'open',\n    name: 'open',\n    description: 'some description',\n    active: true,\n  },\n  {\n    id: '2',\n    external_name: 'ongoing',\n    internal_name: 'ongoing',\n    name: 'custom_1',\n    description: 'some description',\n    active: true,\n  },\n  {\n    id: '3',\n    external_name: 'completed',\n    internal_name: 'completed',\n    name: 'completed',\n    description: 'some description',\n    active: true,\n  },\n];\n\nconst ticketToShow = { ...tickets[0] };\nticketToShow.status = { id: '1', external_name: 'open' };\n\nconst filterTickets = ({\n  from_date: date_from, to_date: date_to, from_last_comment_at, to_last_comment_at, number_title_search, venue_search, homeowner_association_search,\n  reporter_search, realizer_search,\n  sort, order, venues_ids: venue_id, page, ...rest\n}) => {\n  let filteredTickets = tickets;\n  if (rest['status_ids[]']) {\n    const statuses = !Array.isArray(rest['status_ids[]']) ? [rest['status_ids[]']] : rest['status_ids[]'];\n    filteredTickets = filteredTickets.filter((ticket) => statuses.find((statusId) => ticket.status === ticketStatuses[statusId - 1].external_name));\n  }\n\n  if (date_from && date_to) {\n    filteredTickets = filteredTickets.filter((ticket) => new Date(ticket.reported_at) >= new Date(date_from))\n      .filter((ticket) => new Date(ticket.reported_at) <= new Date(date_to));\n  }\n  if (from_last_comment_at && to_last_comment_at) {\n    filteredTickets = filteredTickets.filter((ticket) => new Date(ticket.last_comment_at) >= new Date(from_last_comment_at))\n      .filter((ticket) => new Date(ticket.last_comment_at) <= new Date(to_last_comment_at));\n  }\n  if (number_title_search) {\n    filteredTickets = filteredTickets.filter(\n      (ticket) => ticket.ticket_number.includes(number_title_search) || ticket.title.includes(number_title_search),\n    );\n  }\n  if (venue_search) {\n    filteredTickets = filteredTickets.filter(\n      (ticket) => ticket.venue_address.toLowerCase().includes(venue_search) || ticket.venue_code.toLowerCase().includes(venue_search),\n    );\n  }\n  if (homeowner_association_search) {\n    filteredTickets = filteredTickets.filter(\n      (ticket) => ticket.homeowner_association_name.includes(homeowner_association_search)\n        || ticket.homeowner_association_code.includes(homeowner_association_search),\n    );\n  }\n  if (rest['category_ids[]']) {\n    const categories = !Array.isArray(rest['category_ids[]']) ? [rest['category_ids[]']] : rest['category_ids[]'];\n    filteredTickets = filteredTickets.filter((ticket) => categories.find((categoryId) => ticket.category === ticketCategories[categoryId - 1].name));\n  }\n  if (reporter_search) {\n    filteredTickets = filteredTickets.filter(\n      (ticket) => (ticket.reporter || '').includes(reporter_search) || (ticket.reporter_external_id || '').includes(reporter_search),\n    );\n  }\n  if (realizer_search) {\n    filteredTickets = filteredTickets.filter(\n      (ticket) => (ticket.realizer || '').includes(realizer_search) || (ticket.realizer_external_id || '').includes(realizer_search),\n    );\n  }\n  if (venue_id) {\n    const { address } = venues.find((venue) => venue.id === venue_id);\n    filteredTickets = filteredTickets.filter((ticket) => ticket.venue_address === address);\n  }\n  if (sort) {\n    filteredTickets = filteredTickets.sort((a, b) => (order === 'desc' ? b[sort].localeCompare(a[sort]) : a[sort].localeCompare(b[sort])));\n  }\n  return filteredTickets;\n};\n\nconst mockSeries = (page) => {\n  switch (page) {\n    case '1':\n      return ['1', 2, 3, 'gap', 6];\n    case '2':\n      return [1, '2', 3, 4, 5, 6];\n    case '3':\n      return [1, 2, '3', 4, 5, 6];\n    case '4':\n      return [1, 2, 3, '4', 5, 6];\n    case '5':\n      return [1, 2, 3, 4, '5', 6];\n    case '6':\n      return [1, 'gap', 4, 5, '6'];\n    default:\n      return null;\n  }\n};\n\nconst metadata = (page) => ({\n  count: 58,\n  first_url: '/tickets/list?page=1&items=10',\n  from: page * 10 - 9,\n  in: 10,\n  items: 10,\n  last: 6,\n  last_url: '/tickets/list?page=6&items=10',\n  next: page === 6 ? null : page + 1,\n  page,\n  pages: 6,\n  prev: page === 1 ? null : page - 1,\n  series: mockSeries(page),\n  to: page * 10,\n});\n\nconst updateTickets = (ticketsChanges) => {\n  Object.keys(ticketsChanges).forEach((id) => {\n    const i = tickets.findIndex((ticket) => ticket.id === id);\n    tickets[i] = {\n      ...tickets[i],\n      status: Object.keys(ticketsChanges[id]).includes('status_id') ? 'mocked category' : tickets[i].category,\n      realizer: Object.keys(ticketsChanges[id]).includes('realizer_id') ? 'mocked realizer' : tickets[i].realizer,\n      category: Object.keys(ticketsChanges[id]).includes('category_id') ? 'mocked category' : tickets[i].category,\n    };\n  });\n};\n\nexport const ticketsMocks = [\n  rest.get('/tickets/list', (req, res, ctx) => {\n    const { query: params } = queryString.parseUrl(req.url.href);\n    return res(\n      ctx.status(200),\n      ctx.json({\n        metadata: metadata(params.page),\n        tickets: filterTickets(params),\n      }),\n    );\n  }),\n  rest.get('/tickets/:id/show', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json({\n      ticket: ticketToShow,\n    }),\n  )),\n  rest.get('/ticket_categories/list', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json({ ticket_categories: ticketCategories }),\n  )),\n  rest.get('/tickets/statuses/ticket/list', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json({ statuses: ticketStatuses }),\n  )),\n  rest.post('/tickets/add', (req, res, ctx) => res(\n    ctx.status(200),\n  )),\n  rest.post('/tickets/:id/add_comment', (req, res, ctx) => {\n    req.then((postData) => postData);\n    return res(\n      ctx.status(200),\n    );\n  }),\n  rest.get('/tickets/list/columns_settings', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json({ selected_columns: selectedColumns }),\n  )),\n  rest.post('/tickets/list/change_columns_settings', (req, res, ctx) => {\n    req.json().then((postData) => {\n      selectedColumns = postData.columns;\n    });\n    return res(\n      ctx.status(200),\n    );\n  }),\n  rest.post('/tickets/change', (req, res, ctx) => {\n    req.json().then((postData) => {\n      updateTickets(postData.tickets);\n      ticketsToShow = {\n        ...ticketsToShow,\n        ...postData.tickets['8b359308-0888-4535-b9e6-22b4c03d8b1e'],\n      };\n    });\n    return res(\n      ctx.status(200),\n    );\n  }),\n  rest.post('/tickets/:id/add_task', (req, res, ctx) => res(\n    ctx.status(200),\n  )),\n  rest.put('/tickets/statuses/:id/change', (req, res, ctx) => res(\n    ctx.status(200),\n  )),\n];\n", "import { rest } from 'msw';\n\nconst rolesResponse = {\n  roles: [\n    {\n      id: 'c959b6c6-9e59-4e4b-8935-b49affd9c361',\n      name: 'custom role',\n      permissions: [],\n      default: false,\n    },\n    {\n      id: 'b9f75002-b1bd-4ae4-8078-d0c89c1939a7',\n      name: 'pracownik',\n      permissions: [\n        'meters_list',\n        'meters_measurement_add',\n        'list_tickets',\n        'report_ticket',\n        'add_ticket_comment',\n      ],\n      role_type: 'worker',\n      default: true,\n    },\n    {\n      id: '06a8a4f2-d02c-43af-8fd1-df27d17f4bc7',\n      name: 'cz\u0142onek',\n      permissions: [],\n      role_type: 'member',\n      default: true,\n    },\n    {\n      id: '3c6cc310-8ae1-4652-8483-a9ddb15cd71f',\n      name: 'lokator',\n      permissions: [\n        'meters_list',\n        'meters_measurement_add',\n        'list_tickets',\n        'report_ticket',\n        'add_ticket_comment',\n      ],\n      role_type: 'tenant',\n      default: true,\n    },\n    {\n      id: 'b12672f3-ce71-4b93-85e9-5c476b6ec9ed',\n      name: 'admin',\n      permissions: [],\n      role_type: 'admin',\n      default: true,\n    },\n  ],\n};\n\nconst accounts = [\n  {\n    id: '040017b4-6a59-4162-b15c-f0ab2f7df14a',\n    name: 'test@example.org',\n    permissions: [],\n    roles: [],\n  },\n  {\n    id: '5fc2668d-338e-4baa-89b0-45e1ba6e18bf',\n    name: 'test2@example.org',\n    permissions: [],\n    roles: [\n      {\n        id: 'c959b6c6-9e59-4e4b-8935-b49affd9c361',\n        name: 'custom role',\n        permissions: [],\n      },\n      {\n        id: 'b9f75002-b1bd-4ae4-8078-d0c89c1939a7',\n        name: 'pracownik',\n        permissions: [\n          'meters_list',\n          'meters_measurement_add',\n          'list_tickets',\n          'report_ticket',\n          'add_ticket_comment',\n        ],\n      },\n    ],\n  },\n  {\n    id: 'de1f4a88-b43c-4e27-ac39-dd0e52e08a69',\n    name: 'lokator@example.org',\n    permissions: [],\n    roles: [\n      {\n        id: '3c6cc310-8ae1-4652-8483-a9ddb15cd71f',\n        name: 'lokator',\n        permissions: [\n          'meters_list',\n          'meters_measurement_add',\n          'list_tickets',\n          'report_ticket',\n          'add_ticket_comment',\n        ],\n      },\n    ],\n  },\n  {\n    id: '790c4214-d33a-4b00-9119-fdb893cdf2b5',\n    name: 'pracownik@example.org',\n    permissions: [],\n    roles: [\n      {\n        id: 'b9f75002-b1bd-4ae4-8078-d0c89c1939a7',\n        name: 'pracownik',\n        permissions: [\n          'meters_list',\n          'meters_measurement_add',\n          'list_tickets',\n          'report_ticket',\n          'add_ticket_comment',\n        ],\n      },\n    ],\n  },\n  {\n    id: 'dad6073a-bd7e-4eff-86ff-f7aebc24e951',\n    name: 'admin@example.org',\n    permissions: [],\n    roles: [\n      {\n        id: 'b12672f3-ce71-4b93-85e9-5c476b6ec9ed',\n        name: 'admin',\n        permissions: [],\n      },\n    ],\n  },\n];\n\nconst accountsResponse = (roleName) => ({\n  accounts,\n  metadata: {\n    count: accounts.reduce((val, account) => (account.roles.find((role) => role.name === roleName) ? val + 1 : val), 0),\n    series: ['1'],\n  },\n});\n\nconst singleAccountResponse = {\n  account: {\n    id: 'dad6073a-bd7e-4eff-86ff-f7aebc24e951',\n    name: 'admin@example.org',\n    permissions: [\n      'list_tickets',\n      'report_ticket',\n      'add_ticket_comment',\n    ],\n    roles: [\n      {\n        id: 'b12672f3-ce71-4b93-85e9-5c476b6ec9ed',\n        name: 'admin',\n        role_type: 'admin',\n        permissions: [],\n      },\n      {\n        id: 'b9f75002-b1bd-4ae4-8078-d0c89c1939a7',\n        name: 'pracownik',\n        role_type: 'worker',\n        permissions: [\n          'tickets_list',\n          'tickets_add',\n        ],\n      },\n    ],\n  },\n};\n\nexport const workerMe = {\n  me: {\n    full_name: 'Super Admin',\n    login: 'login',\n    roles: [\n      {\n        id: 'workerId',\n        default: true,\n        role_type: 'worker',\n        name: 'pracownik',\n      },\n    ],\n    permissions: ['documents_list'],\n    all_permissions: ['meters_list', 'meters_measurement_add', 'meters_history_list',\n      'tickets_list', 'tickets_add', 'tasks_list', 'tasks_add',\n      'resolutions_list', 'resolutions_vote_add', 'resolutions_votings_list',\n      'announcements_list', 'announcements_notice_add', 'activity_log_register_entries_list',\n      'settlements_balance_list', 'settlements_payments_list', 'settlements_payment_make',\n      'tenants_people_entries_manage', 'documents_list', 'documents_add',\n    ],\n    tenant: {\n      email: 'login@email.pl',\n      venues: [\n        {\n          id: 'venueid-1',\n          code: '05-800',\n          address: 'ul. Czere\u015Bniowa 20',\n          main_tenant: true,\n        },\n\n        {\n          id: 'venueid-2',\n          code: '05-830',\n          address: 'ul. Wi\u015Bniowa 30',\n          main_tenant: false,\n        },\n      ],\n    },\n  },\n};\n\nexport const adminMe = {\n  me: {\n    full_name: 'Super Admin',\n    login: 'login',\n    roles: [\n      {\n        default: true,\n        id: 'adminId',\n        name: 'admin',\n        role_type: 'admin',\n      },\n    ],\n    permissions: ['documents_list'],\n    all_permissions: ['meters_list', 'meters_measurement_add', 'meters_history_list',\n      'tickets_list', 'tickets_add', 'tasks_list', 'tasks_add',\n      'resolutions_list', 'resolutions_vote_add', 'resolutions_votings_list',\n      'announcements_list', 'announcements_notice_add', 'activity_log_register_entries_list',\n      'settlements_balance_list', 'settlements_payments_list', 'settlements_payment_make',\n      'tenants_people_entries_manage', 'documents_list', 'documents_add',\n    ],\n    tenant: {\n      email: 'login@email.pl',\n      venues: [\n        {\n          id: 'venueid-1',\n          code: '05-800',\n          address: 'ul. Czere\u015Bniowa 20',\n          main_tenant: true,\n        },\n\n        {\n          id: 'venueid-2',\n          code: '05-830',\n          address: 'ul. Wi\u015Bniowa 30',\n          main_tenant: false,\n        },\n      ],\n    },\n  },\n};\n\nexport const me = {\n  me: {\n    full_name: 'Super Admin',\n    login: 'login',\n    roles: [\n      {\n        id: 'tenantID',\n        default: true,\n        role_type: 'tenant',\n        name: 'pracownik',\n      },\n    ],\n    permissions: [\n      'meters_list',\n      'documents_list',\n    ],\n    all_permissions: ['meters_list', 'meters_measurement_add', 'meters_history_list',\n      'tickets_list', 'tickets_add', 'tasks_list', 'tasks_add',\n      'resolutions_list', 'resolutions_vote_add', 'resolutions_votings_list',\n      'announcements_list', 'announcements_notice_add', 'activity_log_register_entries_list',\n      'settlements_balance_list', 'settlements_payments_list', 'settlements_payment_make',\n      'tenants_people_entries_manage', 'settlements_document_read', 'documents_list', 'documents_add',\n    ],\n    tenant: {\n      email: 'login@email.pl',\n      venues: [\n        {\n          id: 'venueid-1',\n          code: '05-800',\n          address: 'ul. Czere\u015Bniowa 20',\n          main_tenant: true,\n        },\n\n        {\n          id: 'venueid-2',\n          code: '05-830',\n          address: 'ul. Wi\u015Bniowa 30',\n          main_tenant: false,\n        },\n      ],\n    },\n  },\n};\n\nconst getRoleByName = (roleName) => rolesResponse.roles.find((role) => role.name === roleName);\n\nconst assignRoles = (id, roles) => {\n  accounts.find((acc) => acc.id === id).roles = roles.roles_names.map(\n    (roleName) => getRoleByName(roleName),\n  );\n};\n\nconst assignPermissions = (permissions) => {\n  singleAccountResponse.account.permissions = permissions.permissions_names;\n};\n\nconst addNewRole = ({ name, permission_names }) => {\n  rolesResponse.roles.push({\n    id: 'abcd1234',\n    name,\n    permissions: permission_names,\n  });\n};\n\nconst deleteRole = (id) => {\n  rolesResponse.roles = rolesResponse.roles.filter((role) => role.id !== id);\n};\n\nexport const accessMocks = [\n  rest.get('/access/accounts/list', (req, res, ctx) => {\n    const roleName = req.url.searchParams.get('roles_names[]');\n    return res(\n      ctx.status(200),\n      ctx.json(accountsResponse(roleName)),\n    );\n  }),\n\n  rest.post('access/accounts/:id/assign_roles', (req, res, ctx) => {\n    const { id } = req.params;\n    req.json().then((postData) => {\n      assignRoles(id, postData);\n    });\n    return res(\n      ctx.status(200),\n    );\n  }),\n\n  rest.get('access/roles/list', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json(rolesResponse),\n  )),\n\n  rest.get('/users/accounts/me', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json(me),\n  )),\n\n  rest.get('access/accounts/:id/show', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json(singleAccountResponse),\n  )),\n\n  rest.post('access/accounts/:id/assign_permissions', (req, res, ctx) => {\n    req.json().then((postData) => {\n      assignPermissions(postData);\n    });\n    return res(\n      ctx.status(200),\n    );\n  }),\n\n  rest.post('access/roles/add', (req, res, ctx) => {\n    req.json().then((postData) => {\n      addNewRole(postData);\n    });\n    return res(\n      ctx.status(200),\n      ctx.json({\n        role: {\n          id: 'abcd1234',\n        },\n      }),\n    );\n  }),\n\n  rest.delete('access/roles/:id/remove', (req, res, ctx) => {\n    const { id } = req.params;\n    deleteRole(id);\n    return res(\n      ctx.status(200),\n    );\n  }),\n\n  rest.get('access/role/:id', (req, res, ctx) => {\n    const { id } = req.params;\n    req.json().then((postData) => {\n      assignRoles(id, postData);\n    });\n    return res(\n      ctx.status(200),\n      ctx.json({\n        role: rolesResponse.roles.find((role) => role.id === id),\n      }),\n    );\n  }),\n];\n", "import { rest } from 'msw';\nimport queryString from 'query-string';\n\nexport const resolutions = [\n  {\n    active: true,\n    attachments: [{\n      content_type: 'application/pdf',\n      filename: 'attachment.pdf',\n      path: '/fake_url/1',\n    }, {\n      content_type: 'application/pdf',\n      filename: 'attachment2.pdf',\n      path: '/fake_url/2',\n    }],\n    content_accepted_at: null,\n    created_at: '2023-03-05T10:10:10Z',\n    title: 'Donec efficitur ante ligula, tempus elementum velit interdum in.',\n    id: 'e48dac81-6682-491a-b057-584a5fdc4515',\n    text: 'Pellentesque ornare orci at quam consectetur euismod. Fusce scelerisque tortor vel augue dictum molestie. Integer non lacus at lorem dapibus posuere non in nisl. Nunc luctus, ante at convallis aliquet, massa velit pulvinar magna, condimentum eleifend diam leo eu eros.',\n    vote_options: ['agree', 'disagree', 'abstain'],\n    vote_value: null,\n    voted_at: null,\n    voting_deadline: '2023-05-25T02:00:01Z',\n    status: 'ongoing',\n    resolution_number: '1/2023',\n  },\n  {\n    active: true,\n    attachments: [],\n    content_accepted_at: null,\n    created_at: '2023-01-15T07:12:20Z',\n    title: 'Etiam mattis aliquam sapien eget blandit.',\n    id: '9c9f24e4-9396-4afc-a13f-60b198cdd2a9',\n    text: 'Donec viverra erat quis auctor pellentesque. Morbi non dapibus sapien.',\n    vote_options: ['agree', 'disagree'],\n    vote_value: null,\n    voted_at: null,\n    voting_deadline: '2023-04-13T00:00:00Z',\n    status: 'ongoing',\n    resolution_number: '2/2023',\n  },\n  {\n    active: true,\n    attachments: [{\n      content_type: 'application/pdf',\n      filename: 'attachment.pdf',\n      path: '/fake_url/3',\n    }],\n    content_accepted_at: '2023-02-12T13:17:13Z',\n    created_at: '2023-01-02T09:21:43Z',\n    title: 'Ut enim ad minim veniam',\n    id: '398feb89-a62d-438e-ae63-fdab80573ff1',\n    text: 'Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.',\n    vote_options: ['agree', 'disagree'],\n    vote_value: null,\n    voted_at: null,\n    voting_deadline: '2023-03-29T00:00:00Z',\n    status: 'ongoing',\n    resolution_number: '12/2023',\n  },\n  {\n    active: false,\n    attachments: [],\n    content_accepted_at: '2022-12-12T11:47:23Z',\n    created_at: '2022-12-02T12:42:43Z',\n    title: 'Etiam tempus nibh quis tellus pharetra, vitae auctor metus varius.',\n    id: '0e589956-74c7-4a76-88db-14afd98e4109',\n    text: 'Curabitur ac ligula convallis, porttitor dolor eu, egestas ligula. Mauris gravida odio eu faucibus ultricies. Nam id massa vel ante gravida pretium. Nulla mattis augue nec ipsum congue facilisis.',\n    vote_options: ['agree', 'disagree', 'abstain'],\n    vote_value: null,\n    voted_at: '2022-12-12T22:47:23Z',\n    voting_deadline: '2023-01-29T00:00:00Z',\n    status: 'outvoted',\n    resolution_number: '22/2023',\n  },\n  {\n    active: false,\n    attachments: [],\n    content_accepted_at: '2022-06-12T11:25:09Z',\n    created_at: '2022-06-01T11:54:49Z',\n    title: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.',\n    id: 'f551b74b-60a9-435b-8d7a-1d7bbb0f396e',\n    text: 'Nunc vel purus hendrerit, auctor massa eget, vehicula nisl. Donec et sem fermentum, ullamcorper arcu ac, accumsan odio. Ut dictum, ante aliquam ultrices ultricies, libero magna tempus dolor, semper aliquam leo quam in mauris.',\n    vote_options: ['agree', 'disagree', 'abstain'],\n    vote_value: null,\n    voted_at: '2022-06-11T13:25:09Z',\n    voting_deadline: '2022-07-01T02:11:21Z',\n    status: 'rejected',\n    resolution_number: '32/2023',\n  },\n];\n\nconst filterResolutions = ({\n  active, title_search, from_created_at: created_date_from, to_created_at: created_date_to, from_voting_deadline: voting_deadline_from,\n  to_voting_deadline: voting_deadline_to, voted,\n}) => {\n  let filteredResolutions = resolutions;\n  if (active) {\n    filteredResolutions = filteredResolutions.filter(\n      (resolution) => (active === 'true' ? resolution.status === 'ongoing' : resolution.status !== 'ongoing'),\n    );\n  }\n  if (voted) {\n    filteredResolutions = filteredResolutions.filter(\n      (resolution) => (voted === 'true' ? resolution.voted_at !== null : resolution.voted_at === null),\n    );\n  }\n  if (title_search) {\n    filteredResolutions = filteredResolutions.filter(\n      (resolution) => resolution.title.includes(title_search),\n    );\n  }\n  if (created_date_from && created_date_to) {\n    filteredResolutions = filteredResolutions.filter((resolution) => new Date(resolution.created_at) >= new Date(created_date_from))\n      .filter((resolution) => new Date(resolution.created_at) <= new Date(created_date_to));\n  }\n  if (voting_deadline_from && voting_deadline_to) {\n    filteredResolutions = filteredResolutions.filter((resolution) => new Date(resolution.voting_deadline) >= new Date(voting_deadline_from))\n      .filter((resolution) => new Date(resolution.voting_deadline) <= new Date(voting_deadline_to));\n  }\n  return filteredResolutions;\n};\n\nconst mockSeries = (page) => {\n  switch (page) {\n    case '1':\n      return ['1', 2, 3, 'gap', 6];\n    case '2':\n      return [1, '2', 3, 4, 5, 6];\n    case '3':\n      return [1, 2, '3', 4, 5, 6];\n    case '4':\n      return [1, 2, 3, '4', 5, 6];\n    case '5':\n      return [1, 2, 3, 4, '5', 6];\n    case '6':\n      return [1, 'gap', 4, 5, '6'];\n    default:\n      return null;\n  }\n};\n\nconst metadata = (page) => ({\n  count: 58,\n  first_url: '/resolutions/list?page=1&items=10',\n  from: page * 10 - 9,\n  in: 10,\n  items: 10,\n  last: 6,\n  last_url: '/resolutions/list?page=6&items=10',\n  next: page === 6 ? null : page + 1,\n  page,\n  pages: 6,\n  prev: page === 1 ? null : page - 1,\n  series: mockSeries(page),\n  to: page * 10,\n});\n\nconst vote = (resolutionId, postData) => {\n  resolutions.find(({ id }) => id === resolutionId).vote_value = postData.vote_value;\n};\nconst acceptContent = (resolutionId) => {\n  resolutions.find((resolution) => resolution.id === resolutionId).content_accepted_at = '2022-12-12T22:47:23Z';\n};\n\nexport const resolutionsMocks = [\n  rest.get('/resolutions/list', (req, res, ctx) => {\n    const { query: params } = queryString.parseUrl(req.url.href);\n    return res(\n      ctx.status(200),\n      ctx.json({\n        metadata: metadata(params.page),\n        resolutions: filterResolutions(params),\n      }),\n    );\n  }),\n  rest.get('/resolutions/:id/show', (req, res, ctx) => {\n    const { id } = req.params;\n    return res(\n      ctx.status(200),\n      ctx.json({\n        resolution: resolutions.find((resolution) => resolution.id.toLocaleLowerCase() === id),\n      }),\n    );\n  }),\n  rest.post('/resolutions/:id/vote', (req, res, ctx) => {\n    const { id } = req.params;\n    req.json().then((postData) => (\n      vote(id, postData)\n    ));\n    return res(\n      ctx.status(200),\n    );\n  }),\n  rest.post('/resolutions/:id/accept_content', (req, res, ctx) => {\n    const { id } = req.params;\n    acceptContent(id);\n    return res(\n      ctx.status(200),\n    );\n  }),\n];\n", "import { rest } from 'msw';\nimport queryString from 'query-string';\n\nconst announcements = [\n  {\n    announcement_number: 'ABC123',\n    author: 'John Doe',\n    category: 'notice',\n    created_at: '2023-04-04T13:05:59Z',\n    description: 'Dignissimos adipisci exercitationem. Nihil asperiores sit. Eos soluta ut.',\n    id: '26ec35a5-3257-45be-8e2d-a40e0ddfc1a2',\n    status: 'unread',\n    title: 'Eum cumque ipsa totam.',\n    attachments: [{\n      filename: 'test1.pdf',\n      content_type: 'application/pdf',\n      path: '1fega3fgebb09',\n    }],\n    recipients: {\n      'tenants/homeowner_associations': [\n        { id: '60b41436-4659', name: 'SM S\u0142oneczko' },\n        { id: 'ae5e4eb5-4160', name: 'SM T\u0119cza' },\n      ],\n      'tenants/buildings': [{ id: '21861464-273b', name: 'Odola\u0144ska 56' }],\n      'tenants/estates': [{ id: '60b4e8a2-1436', name: 'Cztery Pory Roku' }],\n    },\n  },\n  {\n    announcement_number: 'DEF456',\n    author: 'Jane Doe',\n    category: 'statement',\n    created_at: '2023-04-05T16:05:59Z',\n    description: 'Quas officia quam. Quaerat rerum nostrum. Eos qui iusto.',\n    id: '122294d1-6e71-4d82-8a20-7e9710abbff0',\n    status: 'read',\n    title: 'Provident amet aut voluptatum.',\n    attachments: [],\n    recipients: {\n      'tenants/estates': [\n        { id: '60b4e8a2-1436', name: 'Cztery Pory Roku' },\n        { id: 'ae5e4eb5-4160', name: 'SM T\u0119cza' },\n      ],\n      'tenants/tenants': [{ id: 'b690eb90-e77c', name: 'Eustachy Motyka' }],\n      'users/accounts': [{ id: '4df6abcd-123', name: 'Eugeniusz Krosny' }],\n    },\n  },\n  {\n    announcement_number: 'MNO789',\n    author: 'Jane Doe',\n    category: 'document',\n    created_at: '2023-04-10T18:05:59Z',\n    description: 'Cat ipsum dolor sit amet, groom yourself 4 hours - checked.',\n    id: 'a90e67a9-dbd7-4501-bb3d-546532f044dc',\n    status: 'archived',\n    title: 'Cat ipsum',\n    attachments: [],\n    recipients: {\n      'users/accounts': [{ id: '4df6abcd-123', name: 'Eugeniusz Krosny' }],\n    },\n  },\n  {\n    announcement_number: 'JKL111',\n    author: 'Jane Doe',\n    category: 'statement',\n    created_at: '2023-04-12T08:05:59Z',\n    description: 'Mewl for food at 4am plays league of legends so scratch the box',\n    id: '2912500d-810c-4052-bc4e-8ef47cf348d9',\n    status: 'unread',\n    title: 'Cat ipsum II',\n    attachments: [],\n    recipients: {\n      'tenants/homeowner_associations': [{ id: '60b41436-4659', name: 'SM S\u0142oneczko' },\n      ],\n    },\n  },\n];\n\nconst authors = [\n  {\n    id: 'd673a47c-bcd4-4c58-9dba-3038c3c8e1e6',\n    full_name: 'John Doe',\n  }, {\n    id: 'cc00adba-c05b-4ebe-9449-8cf306f3bc00',\n    full_name: 'Jane Doe',\n  },\n];\n\nconst mockSeries = (page) => {\n  switch (page) {\n    case '1':\n      return ['1', 2];\n    case '2':\n      return [1, '2'];\n    default:\n      return null;\n  }\n};\n\nconst metadata = (page) => ({\n  count: 14,\n  first_url: '/announcements/list?page=1&items=10',\n  from: page * 10 - 9,\n  in: 10,\n  items: 10,\n  last: 2,\n  last_url: '/announcements/list?page=6&items=10',\n  next: page === 2 ? null : page + 1,\n  page,\n  pages: 2,\n  prev: page === 1 ? null : page - 1,\n  series: mockSeries(page),\n  to: page * 10,\n});\n\nconst filterAnnouncements = ({\n  search, from_date: date_from, to_date: date_to, category, sort, order, archived, ...rest\n}) => {\n  let filteredAnnouncements = announcements;\n  if (rest['created_by_ids[]']) {\n    const authorsIds = !Array.isArray(rest['created_by_ids[]']) ? [rest['created_by_ids[]']] : rest['created_by_ids[]'];\n    const selectedAuthorsNames = authors.filter((author) => authorsIds.find((id) => author.id === id)).map((author) => author.full_name);\n    filteredAnnouncements = filteredAnnouncements.filter((item) => selectedAuthorsNames.find((author) => author === item.author));\n  }\n  if (search) {\n    filteredAnnouncements = filteredAnnouncements.filter((item) => item.title.toLowerCase().includes(search.toLowerCase()));\n  }\n  if (date_from && date_to) {\n    filteredAnnouncements = filteredAnnouncements.filter((item) => new Date(item.created_at) >= new Date(date_from))\n      .filter((item) => new Date(item.created_at) <= new Date(date_to));\n  }\n  if (sort) {\n    filteredAnnouncements = filteredAnnouncements.sort((a, b) => (order === 'desc' ? b[sort].localeCompare(a[sort]) : a[sort].localeCompare(b[sort])));\n  }\n  if (archived) {\n    filteredAnnouncements = filteredAnnouncements.filter((item) => (archived === 'true' ? item.status === 'archived' : item.status !== 'archived'));\n  }\n  return filteredAnnouncements;\n};\n\nconst recipients = {\n  homeownerAssociations: [[\n    { id: '60b41436-4659', name: 'SM S\u0142oneczko' },\n    { id: 'ae5e4eb5-4160', name: 'SM T\u0119cza' },\n  ]],\n  buildings: [\n    { id: '21861464-273b', name: 'Odola\u0144ska 56' },\n    { id: 'd32e2300-7aeb', name: 'Czere\u015Bniowa 1' },\n  ],\n  estates: [\n    { id: '60b4e8a2-1436', name: 'Cztery Pory Roku' },\n    { id: 'ae5e4eb5-3752-4160', name: 'Osiedle Zielony Zak\u0105tek' },\n  ],\n  tenants: [\n    { id: 'b690eb90-e77c', name: 'Eustachy Motyka' },\n    { id: '3712cd29-0a94', name: 'Andrzej Nowakowski' },\n  ],\n  employees: [\n    { id: '10d911b2-2ebb', name: 'Aneta Nowak' },\n    { id: '0fbb1ccc-4df6', name: 'Janusz Kowalski' },\n    { id: '4df6abcd-123', name: 'Eugeniusz Krosny' }],\n  roles: [\n    { id: 'b973a928-23d7', name: 'lokator' },\n    { id: 'd690a6e5-94b8', name: 'pracownik' },\n    { id: 'f0705dac-a9a1', name: 'cz\u0142onek' },\n    { id: '5300db0f-3472', name: 'admin' }],\n};\n\nconst getRecipient = (group, params) => {\n  if (params.search.length > 0) {\n    return recipients[group].filter((item) => item.name.includes(params.search));\n  }\n  return recipients[group];\n};\n\nexport const announcementsMocks = [\n  rest.get('/announcements/list', (req, res, ctx) => {\n    const { query: params } = queryString.parseUrl(req.url.href);\n    return res(\n      ctx.status(200),\n      ctx.json({\n        metadata: metadata(params.page),\n        announcements: filterAnnouncements(params),\n      }),\n    );\n  }),\n  rest.get('/announcements/:id/show', (req, res, ctx) => {\n    const { id } = req.params;\n    return res(\n      ctx.status(200),\n      ctx.json({\n        announcement: announcements.find((announcement) => announcement.id.toLocaleLowerCase() === id),\n      }),\n    );\n  }),\n  rest.get('/announcements/authors', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json({\n      authors,\n    }),\n  )),\n  rest.get('/announcements/recipients/:group/list', (req, res, ctx) => {\n    const { group } = req.params;\n    const { query: params } = queryString.parseUrl(req.url.href);\n    return res(\n      ctx.status(200),\n      ctx.json({ recipients: getRecipient(group, params) }),\n    );\n  }),\n  rest.post('/announcements/add', (req, res, ctx) => res(\n    ctx.status(200),\n  )),\n  rest.post('/announcements/:id/archive', (req, res, ctx) => res(\n    ctx.status(200),\n  )),\n];\n", "import { rest } from 'msw';\nimport queryString from 'query-string';\n\nconst events = [\n  {\n    created_at: '2023-02-14T00:00:00Z',\n    description: 'Login',\n    category: 'authentication',\n  },\n  {\n    created_at: '2023-02-15T00:00:00Z',\n    description: 'Logout',\n    category: 'authentication',\n  },\n  {\n    created_at: '2023-02-16T00:00:00Z',\n    description: 'Zag\u0142osowano',\n    category: 'resolutions',\n    venue_address: 'ul. Czere\u015Bniowa 20',\n  },\n  {\n    created_at: '2023-02-14T00:00:00Z',\n    description: 'Zg\u0142oszono zg\u0142oszenie',\n    category: 'tasks',\n    venue_address: 'ul. Wi\u015Bniowa 30',\n  },\n];\n\nconst filterEvents = ({\n  from_date: date_from, to_date: date_to, ...rest\n}) => {\n  let filteredEvents = events;\n  if (date_from && date_to) {\n    filteredEvents = filteredEvents.filter((event) => new Date(event.created_at) >= new Date(date_from))\n      .filter((event) => new Date(event.created_at) <= new Date(date_to));\n  }\n  if (rest['category[]']) {\n    const categories = !Array.isArray(rest['category[]']) ? [rest['category[]']] : rest['category[]'];\n    filteredEvents = filteredEvents.filter((event) => categories.find((category) => event.category === category));\n  }\n  if (rest['venues_ids[]']) {\n    const venues = !Array.isArray(rest['venues_ids[]']) ? [rest['venues_ids[]']] : rest['venues_ids[]'];\n    filteredEvents = filteredEvents.filter((event) => venues.find(\n      (venueId) => ((venueId === 'venueid-1' && event.venue_address === 'ul. Czere\u015Bniowa 20') || (venueId === 'venueid-2' && event.venue_address === 'ul. Wi\u015Bniowa 30')),\n    ));\n  }\n  return filteredEvents;\n};\n\nconst mockSeries = (page) => {\n  switch (page) {\n    case '1':\n      return ['1', 2, 3, 'gap', 6];\n    case '2':\n      return [1, '2', 3, 4, 5, 6];\n    case '3':\n      return [1, 2, '3', 4, 5, 6];\n    case '4':\n      return [1, 2, 3, '4', 5, 6];\n    case '5':\n      return [1, 2, 3, 4, '5', 6];\n    case '6':\n      return [1, 'gap', 4, 5, '6'];\n    default:\n      return null;\n  }\n};\n\nconst metadata = (page) => ({\n  count: 58,\n  first_url: '/activity_log/list?page=1&items=10',\n  from: page * 10 - 9,\n  in: 10,\n  items: 10,\n  last: 6,\n  last_url: '/activity_log/list?page=6&items=10',\n  next: page === 6 ? null : page + 1,\n  page,\n  pages: 6,\n  prev: page === 1 ? null : page - 1,\n  series: mockSeries(page),\n  to: page * 10,\n});\n\nexport const activityLogMocks = [\n  rest.get('/activity_log/list', (req, res, ctx) => {\n    const { query: params } = queryString.parseUrl(req.url.href);\n    return res(\n      ctx.status(200),\n      ctx.json({\n        metadata: metadata(params.page),\n        events: filterEvents(params),\n      }),\n    );\n  }),\n];\n", "import { rest } from 'msw';\nimport queryString from 'query-string';\n\nconst payments = {\n  payments: [\n    {\n      title_names: 'Lokale u\u017Cytkowe',\n      account_number: '15026236894102598584372021',\n      value: '118.00',\n      bm_payment: null,\n    },\n    {\n      title_names: 'Zaliczka na eksploatacje, Fundusz remontowy, Media, Odsetki - Zaliczka',\n      account_number: '46633100749263722374809894',\n      value: '0.00',\n      bm_payment: null,\n    },\n    {\n      title_names: 'Odsetki - Fundusz remontowy, Odsetki media, Odsetki sadowe',\n      account_number: '73738905867314294548680276',\n      value: '0.00',\n      bm_payment: null,\n    },\n  ],\n};\nconst makePayment = {\n  id: 'id',\n  remote_id: 'id',\n  order_id: 'id',\n  status: 'pending',\n  description: 'desc',\n  bank_account: '123412312421421',\n  amount: '1000',\n  redirect_url: 'payment-url',\n};\nconst titles = [\n  {\n    id: '2f8d51cb-1245-4f61-8990-01958ef13c3d',\n    name: 'Lokale u\u017Cytkowe',\n    bank_account_number: null,\n  },\n  {\n    id: 'ab69cdd1-be9a-45c8-a2d7-883f6b4c8221',\n    name: 'Zaliczka na eksploatacje',\n    bank_account_number: null,\n  },\n  {\n    id: 'c3a197ad-f7f2-4278-acbc-bad88cd155de',\n    name: 'Fundusz remontowy',\n    bank_account_number: null,\n  },\n];\nconst settlements2023 = {\n  0: {\n    title: null,\n    credits: '18.0',\n    debits: '-38.0',\n    balance: '56.0',\n  },\n  1: {\n    title: null,\n    credits: '155.0',\n    debits: '184.0',\n    balance: '-29.0',\n  },\n  2: {\n    title: null,\n    credits: '104.0',\n    debits: '15.0',\n    balance: '89.0',\n  },\n  3: {\n    title: null,\n    credits: '4.0',\n    debits: '215.0',\n    balance: '-211.0',\n  },\n  4: {\n    title: null,\n    credits: '52.0',\n    debits: '121.0',\n    balance: '-69.0',\n  },\n  5: {\n    title: null,\n    credits: '-70.0',\n    debits: '-73.0',\n    balance: '3.0',\n  },\n  6: {\n    title: null,\n    credits: '99.0',\n    debits: '-110.0',\n    balance: '209.0',\n  },\n  7: {\n    title: null,\n    credits: '468.0',\n    debits: '23.0',\n    balance: '445.0',\n  },\n  8: {\n    title: null,\n    credits: '636.0',\n    debits: '-138.0',\n    balance: '774.0',\n  },\n  9: {\n    title: null,\n    credits: '582.0',\n    debits: '-181.0',\n    balance: '763.0',\n  },\n  10: {\n    title: null,\n    credits: '445.0',\n    debits: '-85.0',\n    balance: '530.0',\n  },\n  11: {\n    title: null,\n    credits: '536.0',\n    debits: '-4.0',\n    balance: '540.0',\n  },\n  12: {\n    title: null,\n    credits: '651.0',\n    debits: '-207.0',\n    balance: '858.0',\n  },\n};\nconst settlements2023WithTitle = {\n  0: {\n    title: null,\n    credits: '0',\n    debits: '0',\n    balance: '0',\n  },\n  1: {\n    title: null,\n    credits: '0',\n    debits: '0',\n    balance: '0',\n  },\n  2: {\n    title: null,\n    credits: '0',\n    debits: '0',\n    balance: '0',\n  },\n  3: {\n    title: null,\n    credits: '0',\n    debits: '0',\n    balance: '0',\n  },\n  4: {\n    title: null,\n    credits: '0',\n    debits: '0',\n    balance: '0',\n  },\n  5: {\n    title: null,\n    credits: '0',\n    debits: '0',\n    balance: '0',\n  },\n  6: {\n    title: null,\n    credits: '0',\n    debits: '0',\n    balance: '0',\n  },\n  7: {\n    title: null,\n    credits: '0',\n    debits: '0',\n    balance: '0',\n  },\n  8: {\n    title: null,\n    credits: '0',\n    debits: '0',\n    balance: '0',\n  },\n  9: {\n    title: null,\n    credits: '0',\n    debits: '0',\n    balance: '0',\n  },\n  10: {\n    title: null,\n    credits: '0',\n    debits: '0',\n    balance: '0',\n  },\n  11: {\n    title: null,\n    credits: '0',\n    debits: '0',\n    balance: '0',\n  },\n  12: {\n    title: null,\n    credits: '0',\n    debits: '0',\n    balance: '0',\n  },\n};\nconst settlements2023January = {\n  titles: {\n    'c3a197ad-f7f2-4278-acbc-bad88cd155de': {\n      name: 'Fundusz remontowy',\n      bank_account_number: '46633100749263722374809894',\n      balance: '350.0',\n    },\n  },\n};\nconst settlements2023February = {\n  titles: {\n    '68d79c57-00f9-4317-be52-04c878fbb0f8': {\n      name: 'Media',\n      bank_account_number: '46633100749263722374809894',\n      balance: '83.0',\n    },\n    '0792fae9-8373-49c6-b472-8375147a1c59': {\n      name: 'Odsetki - Zaliczka',\n      bank_account_number: '46633100749263722374809894',\n      balance: '107.0',\n    },\n    '315f4716-cc59-4804-bc1d-7598b39548fe': {\n      name: 'Odsetki - Fundusz remontowy',\n      bank_account_number: '73738905867314294548680276',\n      balance: '115.0',\n    },\n    '78478a69-6413-46d0-8a43-a442bc2dd604': {\n      name: 'Odsetki media',\n      bank_account_number: '73738905867314294548680276',\n      balance: '138.0',\n    },\n  },\n};\nconst settlements2023JanuaryDocs = {\n  entry_month_balance: {\n    title: 'Odsetki - Fundusz remontowy',\n    credits: '180.0',\n    debits: '10.0',\n    balance: '170.0',\n  },\n  documents: [\n    {\n      id: '172af386-c549-4277-ad7a-1f07cd3fbb07',\n      description: '',\n      date: '2023-02-04',\n      deadline: '2023-02-28',\n      open: true,\n      operation: 'Korekta',\n      debits: '55.0',\n      credits: '0.0',\n      balance: '115.0',\n      value: '-55.0',\n      vat: '-185.0',\n      attachment: {\n        filename: 'FA-1-02-2023.pdf',\n        content_type: 'application/pdf',\n        path: '/rails/active_storage/blobs/redirect/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaEpJaWt5WW1GaVpUTXlOQzFoTVRGaExUUXpaall0WVRkbE5DMHdNamt5TkdZM09XTTRNVGtHT2daRlZBPT0iLCJleHAiOm51bGwsInB1ciI6ImJsb2JfaWQifX0=--8f33420f9d2640de1a7215eb7546c66950f6acfc/FA-1-02-2023.pdf',\n      },\n      read_at: null,\n      items: [\n        {\n          position: '01',\n          item_name: 'sk\u0142adnik 1',\n          amount: '3.0',\n          unit: 'm3',\n          price: '10.0',\n          value: '30.0',\n        },\n        {\n          position: '02',\n          item_name: 'sk\u0142adnik 2',\n          amount: '4.0',\n          unit: 'm3',\n          price: '10.0',\n          value: '40.0',\n        },\n        {\n          position: '03',\n          item_name: 'sk\u0142adnik 3',\n          amount: '6.0',\n          unit: 'm3',\n          price: '10.0',\n          value: '60.0',\n        },\n      ],\n    },\n  ],\n  month_balance: {\n    title: 'Odsetki - Fundusz remontowy',\n    credits: '180.0',\n    debits: '65.0',\n    balance: '115.0',\n  },\n};\nconst paymentsHistory = {\n  payments: [\n    {\n      status: 'pending',\n      description: 'Lokale u\u017Cytkowe',\n      bank_account: '15026236894102598584372021',\n      amount: '118.0',\n      payment_date: '2023-07-07T07:53:01',\n    },\n    {\n      status: 'success',\n      description: 'Lokale u\u017Cytkowe',\n      bank_account: '15026236894102598584372021',\n      amount: '300.0',\n      payment_date: null,\n    },\n  ],\n};\nconst paymentsHistoryFiltered = {\n  payments: [\n    {\n      status: 'pending',\n      description: 'Lokale u\u017Cytkowe',\n      bank_account: '15026236894102598584372021',\n      amount: '118.0',\n      payment_date: null,\n    },\n  ],\n};\n\nexport const settlementsMocks = [\n  rest.get('/settlements/venue/:venue/list', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json(payments),\n  )),\n  rest.get('/settlements/venue/:venue/year_balance/list', (req, res, ctx) => {\n    const { query: params } = queryString.parseUrl(req.url.href);\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    const { title_id } = params;\n    return res(\n      ctx.status(200),\n      ctx.json({ months: title_id ? settlements2023WithTitle : settlements2023, year_balance: { debits: 122, credits: 123, balance: 124 } }),\n    );\n  }),\n  rest.get('/settlements/venue/:venue/month_balance/list', (req, res, ctx) => {\n    const { query: params } = queryString.parseUrl(req.url.href);\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    const { month } = params;\n    return res(\n      ctx.status(200),\n      ctx.json(month === '1' ? settlements2023January : settlements2023February),\n    );\n  }),\n  rest.get('/settlements/venue/:venue/years/list', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json({\n      years: [\n        '2023',\n      ],\n    }),\n  )),\n  rest.get('/settlements/venue/:venue/titles/list', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json({ titles }),\n  )),\n  rest.get('/settlements/payments/venue/:venue/list_history', (req, res, ctx) => {\n    const { query: params } = queryString.parseUrl(req.url.href);\n    const {\n      // eslint-disable-next-line @typescript-eslint/naming-convention\n      description_search, from_amount, to_amount, status,\n    } = params;\n\n    if (description_search === 'test' && from_amount === '10' && to_amount === '100' && status === 'pending') {\n      return res(\n        ctx.status(200),\n        ctx.json(paymentsHistoryFiltered),\n      );\n    }\n    return res(\n      ctx.status(200),\n      ctx.json(paymentsHistory),\n    );\n  }),\n  rest.get('/settlements/venue/:venue/documents/list', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json(settlements2023JanuaryDocs),\n  )),\n  rest.post('/settlements/payments/make', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json({ payment: makePayment }),\n  )),\n  rest.get('/settlements/payments/:payment/show', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json({ payment: makePayment }),\n  )),\n];\n", "import { rest } from 'msw';\nimport queryString from 'query-string';\n\nlet selectedColumns = [\n  'task_number',\n  'title',\n  'status',\n  'created_at',\n  'last_comment_at',\n  'venue_address',\n  'homeowner_association_code',\n  'venue_code',\n  'homeowner_association_name',\n  'category',\n  'creator_external_id',\n  'creator',\n  'realizer_external_id',\n  'realizer',\n  'estimated_start_time',\n  'started_at',\n  'estimated_finish_time',\n  'finished_at',\n];\n\nconst taskCategories = [\n  {\n    id: '1',\n    name: 'garbage',\n  },\n  {\n    id: '2',\n    name: 'malfunction',\n  },\n  {\n    id: '3',\n    name: 'complain',\n  },\n];\nconst taskStatuses = [\n  {\n    id: '1',\n    external_name: 'open',\n    name: 'open',\n  },\n  {\n    id: '2',\n    external_name: 'ongoing',\n    name: 'custom_1',\n  },\n  {\n    id: '3',\n    external_name: 'completed',\n    name: 'completed',\n  },\n];\n\nconst tasks = [\n  {\n    id: '3329d1cb-9818-4c73-97cb-378be369c996',\n    task_number: 23,\n    title: 'zada1',\n    status: 'open',\n    category: 'fixing',\n    creator: 'Jane Doe',\n    creator_external_id: null,\n    realizer: null,\n    realizer_external_id: null,\n    venue_address: ' /',\n    venue_code: null,\n    homeowner_association_name: null,\n    homeowner_association_code: null,\n    created_at: '2023-06-26T13:57:08Z',\n    last_comment_at: null,\n    estimated_start_time: null,\n    estimated_finish_time: null,\n    started_at: null,\n    finished_at: null,\n  },\n  {\n    id: 'df9db1c4-ea12-4bc1-8723-7b1e8db63111',\n    task_number: 22,\n    title: 'zada2',\n    status: 'open',\n    category: 'cleaning',\n    creator: 'Jane Doe',\n    creator_external_id: null,\n    realizer: null,\n    realizer_external_id: null,\n    venue_address: ' /',\n    venue_code: null,\n    homeowner_association_name: null,\n    homeowner_association_code: null,\n    created_at: '2023-06-26T13:56:58Z',\n    last_comment_at: null,\n    estimated_start_time: null,\n    estimated_finish_time: null,\n    started_at: null,\n    finished_at: null,\n  },\n  {\n    id: '08462bbf-9cb0-4c0f-8969-8cf4c8a3a4ee',\n    task_number: 21,\n    title: 'To jest testowe Zadanie ',\n    status: 'completed',\n    category: 'fixing',\n    creator: 'Jane Doe',\n    creator_external_id: null,\n    realizer: 'Anna Nowak',\n    realizer_external_id: 'prac1',\n    venue_address: 'Odola\u0144ska 56/2',\n    venue_code: '01-001-002',\n    homeowner_association_name: null,\n    homeowner_association_code: null,\n    created_at: '2023-06-26T10:52:28Z',\n    last_comment_at: null,\n    estimated_start_time: '2023-06-26T00:00:00Z',\n    estimated_finish_time: '2023-06-30T00:00:00Z',\n    started_at: '2023-06-26T00:00:00Z',\n    finished_at: '2023-06-30T00:00:00Z',\n  },\n  {\n    id: 'b5adcb75-a4de-4b28-a3e8-e35e7d45e1ab',\n    task_number: 20,\n    title: 'kjhklhn',\n    status: 'open',\n    category: 'cleaning',\n    creator: 'Jane Doe',\n    creator_external_id: null,\n    realizer: null,\n    realizer_external_id: null,\n    venue_address: 'Odola\u0144ska 56/1',\n    venue_code: '01-001-001',\n    homeowner_association_name: null,\n    homeowner_association_code: null,\n    created_at: '2023-06-23T13:18:14Z',\n    last_comment_at: null,\n    estimated_start_time: null,\n    estimated_finish_time: null,\n    started_at: null,\n    finished_at: null,\n  },\n  {\n    id: 'e39fca2a-c629-45b4-962b-949ec4e3e62c',\n    task_number: 19,\n    title: 'aaa',\n    status: 'completed',\n    category: 'cleaning',\n    creator: 'Jane Doe',\n    creator_external_id: null,\n    realizer: null,\n    realizer_external_id: null,\n    venue_address: 'Odola\u0144ska 56/1',\n    venue_code: '01-001-001',\n    homeowner_association_name: null,\n    homeowner_association_code: null,\n    created_at: '2023-06-23T12:21:40Z',\n    last_comment_at: null,\n    estimated_start_time: '2023-06-06T00:00:00Z',\n    estimated_finish_time: '2023-06-13T00:00:00Z',\n    started_at: '2023-06-13T00:00:00Z',\n    finished_at: null,\n  },\n  {\n    id: '20fa5683-4e6c-4ab8-9ca6-023e9c4d1b19',\n    task_number: 18,\n    title: 'Clining',\n    status: 'open',\n    category: 'cleaning',\n    creator: 'Jane Doe',\n    creator_external_id: null,\n    realizer: 'Anna Nowak',\n    realizer_external_id: 'prac1',\n    venue_address: 'Odola\u0144ska 56/2',\n    venue_code: '01-001-002',\n    homeowner_association_name: null,\n    homeowner_association_code: null,\n    created_at: '2023-06-23T12:14:16Z',\n    last_comment_at: null,\n    estimated_start_time: null,\n    estimated_finish_time: null,\n    started_at: null,\n    finished_at: null,\n    document: {\n      id: '230a9e64-ad11',\n      title: 'Voluptas commodi corporis perspiciatis.',\n      document_number: 'dz2/1/2023',\n      sender: 'Hilarion Gajda',\n      receiver: 'Hanna \u015Aliwa',\n      description: 'Impedit hic rerum. Fuga est dolorum. Eligendi similique modi.',\n      journal_id: '099e49ff',\n      status_id: '2',\n      category_id: '1',\n      tenants_tenant_id: null,\n      creator_id: '51ed4cf2',\n      realizer_id: '51ed4cf2',\n      created_at: '2023-12-15T19:09:01Z',\n      revoked: false,\n    },\n  },\n  {\n    id: 'a9879039-18c1-461e-be26-e84c67d47963',\n    task_number: 17,\n    title: 'wyk',\n    status: 'open',\n    category: 'fixing',\n    creator: 'Jane Doe',\n    creator_external_id: null,\n    realizer: null,\n    realizer_external_id: null,\n    venue_address: 'Odola\u0144ska 56/1',\n    venue_code: '01-001-001',\n    homeowner_association_name: null,\n    homeowner_association_code: null,\n    created_at: '2023-06-23T12:07:40Z',\n    last_comment_at: null,\n    estimated_start_time: null,\n    estimated_finish_time: null,\n    started_at: null,\n    finished_at: null,\n  },\n  {\n    id: '89f34df6-900a-4584-a3ec-78c331b9e619',\n    task_number: 16,\n    title: 'aaa',\n    status: 'open',\n    category: 'cleaning',\n    creator: 'Jane Doe',\n    creator_external_id: null,\n    realizer: null,\n    realizer_external_id: null,\n    venue_address: 'Odola\u0144ska 56/1',\n    venue_code: '01-001-001',\n    homeowner_association_name: null,\n    homeowner_association_code: null,\n    created_at: '2023-06-23T12:06:58Z',\n    last_comment_at: null,\n    estimated_start_time: null,\n    estimated_finish_time: null,\n    started_at: null,\n    finished_at: '2023-06-21T00:00:00Z',\n  },\n  {\n    id: '5d0ea6ee-c12d-4bf3-a1f6-1a511dc29d32',\n    task_number: 15,\n    title: 'Tatarata',\n    status: 'open',\n    category: 'cleaning',\n    creator: 'Jane Doe',\n    creator_external_id: null,\n    realizer: null,\n    realizer_external_id: null,\n    venue_address: 'Odola\u0144ska 56/1',\n    venue_code: '01-001-001',\n    homeowner_association_name: null,\n    homeowner_association_code: null,\n    created_at: '2023-06-23T12:03:59Z',\n    last_comment_at: null,\n    estimated_start_time: '2023-06-13T00:00:00Z',\n    estimated_finish_time: '2023-06-08T00:00:00Z',\n    started_at: '2023-06-26T00:00:00Z',\n    finished_at: null,\n  },\n  {\n    id: 'a7c3e6f7-20e9-42e2-b84c-f2caaa01d7e4',\n    task_number: 14,\n    title: 'Tatarata',\n    status: 'open',\n    category: 'cleaning',\n    creator: 'Kreator',\n    creator_external_id: null,\n    realizer: null,\n    realizer_external_id: null,\n    venue_address: 'Odola\u0144ska 56/1',\n    venue_code: '01-001-001',\n    homeowner_association_name: null,\n    homeowner_association_code: null,\n    created_at: '2023-06-23T12:03:51Z',\n    last_comment_at: null,\n    estimated_start_time: '2023-06-13T00:00:00Z',\n    estimated_finish_time: '2023-06-08T00:00:00Z',\n    started_at: '2023-06-26T00:00:00Z',\n    finished_at: null,\n  },\n];\n\nlet taskForShow = {\n  id: 'a7c3e6f7-20e9-42e2-b84c-f2caaa01d7e4',\n  description: 'OOOO',\n  ticket: {\n    id: 'b4e53836-2454-4f43-a6ab-3fd397a3c031',\n  },\n  task_number: 14,\n  title: 'Tatarata',\n  status: {\n    id: '1',\n    external_name: 'open',\n  },\n  category: {\n    id: '3',\n    name: 'complain',\n  },\n  created_at: '2023-06-23T12:03:51',\n  last_comment_at: null,\n  estimated_start_time: '2023-06-08T00:00:00Z',\n  estimated_finish_time: '2023-06-13T00:00:00Z',\n  started_at: '2023-06-26T00:00:00Z',\n  finished_at: null,\n  creator: 'Jane Doe',\n  creator_external_id: null,\n  realizer: null,\n  realizer_external_id: null,\n  venue_address: 'Odola\u0144ska 56/1',\n  venue_code: '01-001-001',\n  homeowner_association_name: null,\n  homeowner_association_code: null,\n  attachments: [\n    {\n      description: '',\n      filename: 'file.jpg',\n      content_type: 'image/jpeg',\n      path: '/rails/active_storage/blobs/redirect/file.jpg',\n    },\n  ],\n  comments: [\n    {\n      content: 'Officia fugit incidunt voluptas.',\n      author: 'John Locke',\n      created_at: '2023-07-07T07:53:01',\n      attachments: [],\n    },\n    {\n      content: 'Eligendi et consequatur id.',\n      author: 'Jack Shepard',\n      created_at: '2023-07-10T07:13:01',\n      attachments: [],\n    },\n  ],\n};\n\nconst filterTasks = ({\n  from_created_at, to_created_at, from_last_comment_at, to_last_comment_at, unassigned,\n  number_title_search, venue_search, homeowner_association_search, creator_search,\n  realizer_search, from_estimated_start_time, to_estimated_start_time, from_started_at,\n  to_started_at, from_finished_at, to_finished_at, from_estimated_finish_time, to_estimated_finish_time, ...rest\n}) => {\n  let filteredTasks = tasks;\n  if (number_title_search) {\n    filteredTasks = filteredTasks.filter(\n      (task) => task.task_number.toString().includes(number_title_search) || task.title.includes(number_title_search),\n    );\n  }\n  if (rest['status_ids[]']) {\n    const statuses = !Array.isArray(rest['status_ids[]']) ? [rest['status_ids[]']] : rest['status_ids[]'];\n    filteredTasks = filteredTasks.filter((task) => statuses.find((statusId) => task.status === taskStatuses[statusId - 1].external_name));\n  }\n  if (from_created_at && to_created_at) {\n    filteredTasks = filteredTasks.filter((task) => new Date(task.created_at) >= new Date(from_created_at))\n      .filter((task) => new Date(task.created_at) <= new Date(to_created_at));\n  }\n  if (unassigned) {\n    filteredTasks = filteredTasks.filter((task) => !task.realizer);\n  }\n  if (from_last_comment_at && to_last_comment_at) {\n    filteredTasks = filteredTasks.filter((task) => new Date(task.last_comment_at) >= new Date(from_last_comment_at))\n      .filter((task) => new Date(task.last_comment_at) <= new Date(to_last_comment_at));\n  }\n  if (venue_search) {\n    filteredTasks = filteredTasks.filter(\n      (task) => task.venue_address.includes(venue_search) || task.venue_code.includes(venue_search),\n    );\n  }\n  if (homeowner_association_search) {\n    filteredTasks = filteredTasks.filter(\n      (task) => task.homeowner_association_name.includes(homeowner_association_search)\n        || task.homeowner_association_code.includes(homeowner_association_search),\n    );\n  }\n  if (creator_search) {\n    filteredTasks = filteredTasks.filter(\n      (task) => (task.creator || '').includes(creator_search) || (task.creator_external_id || '').includes(creator_search),\n    );\n  }\n  if (realizer_search) {\n    filteredTasks = filteredTasks.filter(\n      (task) => (task.realizer || '').includes(realizer_search) || (task.realizer_external_id || '').includes(realizer_search),\n    );\n  }\n  if (from_estimated_start_time && to_estimated_start_time) {\n    filteredTasks = filteredTasks.filter((task) => new Date(task.estimated_start_time) >= new Date(from_estimated_start_time))\n      .filter((task) => new Date(task.estimated_start_time) <= new Date(to_estimated_start_time));\n  }\n  if (from_started_at && to_started_at) {\n    filteredTasks = filteredTasks.filter((task) => new Date(task.started_at) >= new Date(from_started_at))\n      .filter((task) => new Date(task.started_at) <= new Date(to_started_at));\n  }\n\n  if (from_finished_at && to_finished_at) {\n    filteredTasks = filteredTasks.filter((task) => new Date(task.finished_at) >= new Date(from_finished_at))\n      .filter((task) => new Date(task.finished_at) <= new Date(to_finished_at));\n  }\n  if (from_estimated_finish_time && to_estimated_finish_time) {\n    filteredTasks = filteredTasks.filter((task) => new Date(task.estimated_finish_time) >= new Date(from_estimated_finish_time))\n      .filter((task) => new Date(task.estimated_finish_time) <= new Date(to_estimated_finish_time));\n  }\n  return filteredTasks;\n};\n\nconst mockSeries = (page) => {\n  switch (page) {\n    case '1':\n      return ['1', 2, 3, 'gap', 6];\n    case '2':\n      return [1, '2', 3, 4, 5, 6];\n    case '3':\n      return [1, 2, '3', 4, 5, 6];\n    case '4':\n      return [1, 2, 3, '4', 5, 6];\n    case '5':\n      return [1, 2, 3, 4, '5', 6];\n    case '6':\n      return [1, 'gap', 4, 5, '6'];\n    default:\n      return null;\n  }\n};\n\nconst metadata = (page) => ({\n  count: 58,\n  first_url: '/tasks/list?page=1&items=10',\n  from: page * 10 - 9,\n  in: 10,\n  items: 10,\n  last: 6,\n  last_url: '/tasks/list?page=6&items=10',\n  next: page === 6 ? null : page + 1,\n  page,\n  pages: 6,\n  prev: page === 1 ? null : page - 1,\n  series: mockSeries(page),\n  to: page * 10,\n});\n\nconst updateTasks = (tasksChanges) => {\n  Object.keys(tasksChanges).forEach((id) => {\n    const i = tasks.findIndex((task) => task.id === id);\n    tasks[i] = {\n      ...tasks[i],\n      status: Object.keys(tasksChanges[id]).includes('status_id') ? 'mocked status' : tasks[i].status,\n      realizer: Object.keys(tasksChanges[id]).includes('realizer_id') ? 'mocked realizer' : tasks[i].realizer,\n      category: Object.keys(tasksChanges[id]).includes('category_id') ? 'mocked category' : tasks[i].category,\n    };\n  });\n};\n\nexport const tasksMocks = [\n  rest.get('/tasks/list', (req, res, ctx) => {\n    const { query: params } = queryString.parseUrl(req.url.href);\n    return res(\n      ctx.status(200),\n      ctx.json({\n        metadata: metadata(params.page),\n        tasks: filterTasks(params),\n      }),\n    );\n  }),\n  rest.get('/tasks/:id/show', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json({\n      task: taskForShow,\n    }),\n  )),\n  rest.get('/task_categories/list', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json({ task_categories: taskCategories }),\n  )),\n  rest.get('/tickets/statuses/task/list', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json({ statuses: taskStatuses }),\n  )),\n  rest.get('/tasks/list/columns_settings', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json({ selected_columns: selectedColumns }),\n  )),\n\n  rest.post('/tasks/list/change_columns_settings', (req, res, ctx) => {\n    req.json().then((postData) => {\n      selectedColumns = postData.columns;\n    });\n    return res(\n      ctx.status(200),\n    );\n  }),\n  rest.post('/tasks/change', (req, res, ctx) => {\n    req.json().then((postData) => {\n      updateTasks(postData.tasks);\n      taskForShow = {\n        ...taskForShow,\n        status: {\n          id: 0,\n          external_name: 'mocked status',\n        },\n        ...postData.tasks['a7c3e6f7-20e9-42e2-b84c-f2caaa01d7e4'],\n      };\n    });\n    return res(\n      ctx.status(200),\n    );\n  }),\n];\n", "import { rest } from 'msw';\n\nconst employees = [\n  {\n    id: '3e0b8eab-93bf-4495-a8f7-40d4411e9a89',\n    full_name: 'Anna Mockowa',\n  },\n  {\n    id: '14a19ecb-b5f6-4a76-85e2-143ca73fad46',\n    full_name: 'Barbara Strzelecka',\n  },\n  {\n    id: '72b1e9d0-0ed5-4deb-bd6c-a931dd3665e8',\n    full_name: 'Grzegorz Brz\u0119czyszczykiewicz',\n  },\n  {\n    id: '379ea8fa-5864-4c8b-8cb4-cb79081b194e',\n    full_name: 'Ireneusz Motylanoga',\n  },\n  {\n    id: 'ff3f2886-85c8-48f0-85ca-5b5ba51b0d62',\n    full_name: 'Jadwiga Kuna',\n  },\n  {\n    id: '91a72ce4-b1bf-4f6d-a58e-08192f141ba3',\n    full_name: 'Jan Kowalski',\n  },\n  {\n    id: '760ffdfd-47ac-4010-b946-3621737dd009',\n    full_name: 'Jane Doe',\n  },\n];\n\nexport const employeesMocks = [\n  rest.get('employees/list', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json({\n      employees,\n    }),\n  )),\n];\n", "import { rest } from 'msw';\nimport queryString from 'query-string';\n\nconst users = [\n  {\n    id: '13d8afb6-e051-48dd-823c-d3781ff5a85b',\n    external_id: 'prac1',\n    email: 'pracownik1@example.org',\n    login: 'login 1',\n    full_name: 'Anna Nowak',\n    roles: [\n      'pracownik',\n    ],\n    correspondence_email: null,\n    email_agreement: null,\n  },\n  {\n    id: '62bd6076-3913-4304-b988-66a66cd81164',\n    external_id: 'prac4',\n    email: 'pracownik4@example.org',\n    login: 'login 2',\n    full_name: 'Barbara Strzelecka',\n    roles: [\n      'pracownik',\n    ],\n    correspondence_email: null,\n    email_agreement: null,\n  },\n  {\n    id: '3633060a-ead7-4442-b563-374f79710ce1',\n    external_id: 'prac7',\n    email: 'pracownik7@example.org',\n    login: 'pracownikk',\n    full_name: 'Grzegorz Brz\u0119czyszczykiewicz',\n    roles: [\n      'admin',\n      'pracownik',\n    ],\n    correspondence_email: null,\n    email_agreement: null,\n  },\n  {\n    id: '2a2142df-fefe-4e0e-8a4f-18dd64649b26',\n    external_id: 'prac10',\n    email: 'pracownik10@example.org',\n    login: null,\n    full_name: 'Ireneusz Motylanoga',\n    roles: [\n      'admin',\n    ],\n    correspondence_email: null,\n    email_agreement: null,\n  },\n  {\n    id: 'b234d23d-91f3-4eae-9a6d-39ea7284dd49',\n    external_id: 'prac5',\n    email: 'pracownik5@example.org',\n    login: null,\n    full_name: 'Jadwiga Kuna',\n    roles: [\n      'lokator',\n    ],\n    correspondence_email: null,\n    email_agreement: null,\n  },\n  {\n    id: '806a8d70-8f6d-4d62-9dd6-0238d8699bf1',\n    external_id: 'prac2',\n    email: 'pracownik2@example.org',\n    login: null,\n    full_name: 'Jan Kowalski',\n    roles: [\n      'cz\u0142onek',\n    ],\n    correspondence_email: null,\n    email_agreement: null,\n  },\n  {\n    id: '11eaddc1-efec-4228-85ce-df02db3d08a3',\n    external_id: null,\n    email: 'pracownik@example.org',\n    login: null,\n    full_name: 'Jane Doe',\n    roles: [\n      'lokator',\n    ],\n    correspondence_email: null,\n    email_agreement: null,\n  },\n  {\n    id: '1ce9eabc-e064-4681-a9ed-34178efa31b3',\n    external_id: 'prac8',\n    email: 'pracownik8@example.org',\n    login: null,\n    full_name: 'Marek Kanarek',\n    roles: [\n      'lokator',\n    ],\n    correspondence_email: null,\n    email_agreement: null,\n  },\n  {\n    id: 'ab68ede6-b837-4aeb-8fb4-4f911b79ba51',\n    external_id: 'prac6',\n    email: 'pracownik6@example.org',\n    login: null,\n    full_name: 'Micha\u0142 Owczarek',\n    roles: [\n      'lokator',\n    ],\n    correspondence_email: null,\n    email_agreement: null,\n  },\n  {\n    id: '54ceb840-1cec-45d3-b8df-6aa0e9972a46',\n    external_id: 'prac3',\n    email: 'pracownik3@example.org',\n    login: null,\n    full_name: 'Roman Wi\u015Bniewski',\n    roles: [\n      'lokator',\n    ],\n    correspondence_email: null,\n    email_agreement: null,\n  },\n];\n\nconst filterUsers = ({ full_name, login_option_search, ...rest }) => {\n  let filteredUsers = users;\n  if (full_name) {\n    filteredUsers = users.filter((user) => user.full_name.includes(full_name));\n  }\n  if (login_option_search) {\n    filteredUsers = users.filter((user) => user.login && user.login.includes(login_option_search));\n  }\n  if (rest['role_type[]'] || rest.role_type) {\n    // no point in replicating serverside logic\n    filteredUsers = [users[0], users[1], users[2]];\n  }\n  return filteredUsers;\n};\n\nexport const usersMocks = [\n  rest.get('/users/accounts/list', (req, res, ctx) => {\n    const { query: params } = queryString.parseUrl(req.url.href);\n    return res(\n      ctx.status(200),\n      ctx.json({\n        accounts: filterUsers(params),\n      }),\n    );\n  }),\n];\n", "import { rest } from 'msw';\nimport queryString from 'query-string';\n\nconst tenants = [\n  {\n    id: 'b4e53836',\n    name: 'Adam Banialuka',\n    venues: [\n      {\n        id: '2454-4f43',\n        name: 'Agrestowa 1/1',\n        homeowner_association: {\n          id: 'a6ab-3fd397a3c031',\n          name: 'SM T\u0119cza',\n        },\n      },\n      {\n        id: '7539-4282',\n        name: 'Agrestowa 1/2',\n        homeowner_association: {\n          id: 'a6ab-3fd397a3c031',\n          name: 'SM T\u0119cza',\n        },\n      },\n    ],\n  },\n  {\n    id: '36b4e538',\n    name: 'Beata Cytrynowicz',\n    venues: [\n      {\n        id: '432rs-54g54h',\n        name: 'Agrestowa 1/3',\n        homeowner_association: {\n          id: 'a6ab-3fd397a3c031',\n          name: 'SM T\u0119cza',\n        },\n      },\n    ],\n  },\n  {\n    id: '432g435',\n    name: 'Dariusz Eliasz',\n    venues: [\n      {\n        id: 'f8f7s-8f9af6',\n        name: 'Porzeczkowa 1/9',\n        homeowner_association: {\n          id: 'a6ab-3fd397a3c031',\n          name: 'SM T\u0119cza',\n        },\n      },\n    ],\n  },\n  {\n    id: 'jd97gd8',\n    name: 'Felicja Hiacynt',\n    venues: [\n      {\n        id: '32r2f-42f434',\n        name: 'Zi\u0119bia 2/7',\n        homeowner_association: {\n          id: '464-664',\n          name: 'SM Jarz\u0105bek',\n        },\n      },\n      {\n        id: '534g43-4g345g',\n        name: 'Zi\u0119bia 1/3',\n        homeowner_association: {\n          id: '464-664',\n          name: 'SM Jarz\u0105bek',\n        },\n      },\n    ],\n  },\n];\n\nconst filteredTenants = ({\n  search, venue_id, tenant_id,\n}) => {\n  let filteredTenants = tenants;\n  if (search) {\n    filteredTenants = filteredTenants.filter((tenant) => tenant.name.toLowerCase().includes(search.toLowerCase()));\n  }\n  if (tenant_id) {\n    filteredTenants = filteredTenants.filter(\n      (tenant) => tenant.id === tenant_id,\n    );\n  }\n  if (venue_id) {\n    filteredTenants = filteredTenants.filter(\n      (tenant) => tenant.venues.find((venue) => venue.id === venue_id),\n    );\n  }\n  return filteredTenants;\n};\n\nexport const tenantsMocks = [\n  rest.get('/tenants/list', (req, res, ctx) => {\n    const { query: params } = queryString.parseUrl(req.url.href);\n    return res(\n      ctx.status(200),\n      ctx.json({\n        tenants: filteredTenants(params),\n      }),\n    );\n  }),\n];\n", "import { rest } from 'msw';\nimport queryString from 'query-string';\n\nconst venues = [\n  {\n    homeowner_association: {\n      id: 'a6ab-3fd397a3c031',\n      name: 'SM T\u0119cza',\n    },\n    id: '2454-4f43',\n    name: 'Agrestowa 1/1',\n    tenants: [\n      {\n        id: 'b4e53836',\n        name: 'Adam Banialuka',\n      },\n    ],\n  },\n  {\n    homeowner_association: {\n      id: 'a6ab-3fd397a3c031',\n      name: 'SM T\u0119cza',\n    },\n    id: '7539-4282',\n    name: 'Agrestowa 1/2',\n    tenants: [\n      {\n        id: 'b4e53836',\n        name: 'Adam Banialuka',\n      },\n    ],\n  },\n  {\n    homeowner_association: {\n      id: 'a6ab-3fd397a3c031',\n      name: 'SM T\u0119cza',\n    },\n    id: '432rs-54g54h',\n    name: 'Agrestowa 1/3',\n    tenants: [\n      {\n        id: '36b4e538',\n        name: 'Beata Cytrynowicz',\n      },\n    ],\n  },\n  {\n    homeowner_association: {\n      id: 'a6ab-3fd397a3c031',\n      name: 'SM T\u0119cza',\n    },\n    id: 'f8f7s-8f9af6',\n    name: 'Porzeczkowa 1/9',\n    tenants: [\n      {\n        id: '432g435',\n        name: 'Dariusz Eliasz',\n      },\n    ],\n  },\n  {\n    homeowner_association: {\n      id: '464-664',\n      name: 'SM Jarz\u0105bek',\n    },\n    id: '32r2f-42f434',\n    name: 'Zi\u0119bia 2/7',\n    tenants: [\n      {\n        id: 'jd97gd8',\n        name: 'Felicja Hiacynt',\n      },\n    ],\n  },\n  {\n    homeowner_association: {\n      id: '464-664',\n      name: 'SM Jarz\u0105bek',\n    },\n    id: '534g43-4g345g',\n    name: 'Zi\u0119bia 1/3',\n    tenants: [\n      {\n        id: 'jd97gd8',\n        name: 'Felicja Hiacynt',\n      },\n    ],\n  },\n];\n\nconst filteredVenues = ({\n  search, venue_id, tenant_id, homeowner_association_id,\n}) => {\n  let filteredVenues = venues;\n  if (search) {\n    filteredVenues = filteredVenues.filter((venue) => venue.name.toLowerCase().includes(search.toLowerCase()));\n  }\n  if (venue_id) {\n    filteredVenues = filteredVenues.filter(\n      (venue) => venue.id === venue_id,\n    );\n  }\n  if (homeowner_association_id) {\n    filteredVenues = filteredVenues.filter(\n      (venue) => venue.homeowner_association.id === homeowner_association_id,\n    );\n  }\n  if (tenant_id) {\n    filteredVenues = filteredVenues.filter(\n      (venue) => ((venue.tenants.find((tenant) => tenant.id === tenant_id))),\n    );\n  }\n  return filteredVenues;\n};\n\nexport const venuesMocks = [\n  rest.get('/venues/list', (req, res, ctx) => {\n    const { query: params } = queryString.parseUrl(req.url.href);\n    return res(\n      ctx.status(200),\n      ctx.json({\n        venues: filteredVenues(params),\n      }),\n    );\n  }),\n];\n", "import { rest } from 'msw';\nimport queryString from 'query-string';\n\nconst homeownerAssociations = [\n  {\n    id: 'a6ab-3fd397a3c031',\n    name: 'SM T\u0119cza',\n    venues: [\n      {\n        id: '2454-4f43',\n        name: 'Agrestowa 1/1',\n        tenants: [\n          {\n            id: 'b4e53836',\n            name: 'Adam Banialuka',\n          },\n        ],\n      },\n      {\n        id: '7539-4282',\n        name: 'Agrestowa 1/2',\n        tenants: [\n          {\n            id: 'b4e53836',\n            name: 'Adam Banialuka',\n          },\n        ],\n      },\n      {\n        id: '432rs-54g54h',\n        name: 'Agrestowa 1/3',\n        tenants: [\n          {\n            id: '36b4e538',\n            name: 'Beata Cytrynowicz',\n          },\n        ],\n      },\n      {\n        id: 'f8f7s-8f9af6',\n        name: 'Porzeczkowa 1/9',\n        tenants: [\n          {\n            id: '432g435',\n            name: 'Dariusz Eliasz',\n          },\n        ],\n      },\n    ],\n  },\n\n  {\n    id: '464-664',\n    name: 'SM Jarz\u0105bek',\n    venues: [\n      {\n        id: '32r2f-42f434',\n        name: 'Zi\u0119bia 2/7',\n        tenants: [\n          {\n            id: 'jd97gd8',\n            name: 'Felicja Hiacynt',\n          },\n        ],\n      },\n      {\n        id: '534g43-4g345g',\n        name: 'Zi\u0119bia 1/3',\n        tenants: [\n          {\n            id: 'jd97gd8',\n            name: 'Felicja Hiacynt',\n          },\n        ],\n      },\n    ],\n  },\n];\n\nconst filteredhomeownerAssociations = ({\n  search, homeowner_association_id, tenant_id, venue_id,\n}) => {\n  let filteredhomeownerAssociations = homeownerAssociations;\n  if (search) {\n    filteredhomeownerAssociations = filteredhomeownerAssociations.filter(\n      (homeowner_association) => homeowner_association.name.toLowerCase().includes(search.toLowerCase()),\n    );\n  }\n  if (homeowner_association_id) {\n    filteredhomeownerAssociations = filteredhomeownerAssociations.filter(\n      (homeowner_association) => homeowner_association.id === homeowner_association_id,\n    );\n  }\n  if (venue_id) {\n    filteredhomeownerAssociations = filteredhomeownerAssociations.filter(\n      (homeownerAssociation) => homeownerAssociation.venues.find((venue) => venue.id === venue_id),\n    );\n  }\n  if (tenant_id) {\n    filteredhomeownerAssociations = filteredhomeownerAssociations.filter(\n      (homeownerAssociation) => homeownerAssociation.venues.find((venue) => venue.tenants.find((tenant) => tenant.id === tenant_id)),\n    );\n  }\n\n  return filteredhomeownerAssociations;\n};\n\nexport const homeownerAssociationsMocks = [\n  rest.get('/homeowner_associations/list', (req, res, ctx) => {\n    const { query: params } = queryString.parseUrl(req.url.href);\n    return res(\n      ctx.status(200),\n      ctx.json({\n        homeowner_associations: filteredhomeownerAssociations(params),\n      }),\n    );\n  }),\n];\n", "import { rest } from 'msw';\n\nlet details = {\n  name: 'SM Zielone Zacisze',\n  street_address: 'Zielona 1/2',\n  postcode: '54-321',\n  city: 'Warszawa',\n  phone: '987-654-321',\n  website: 'www.smzacisze.pl',\n};\n\nconst attachments = {\n  background_photo: undefined,\n  logo: undefined,\n  regulations: undefined,\n};\n\nconst settings = {\n  color_palette: 'violet',\n  hoa_mode: true,\n  tenantless_mode: false,\n  meters_enabled: true,\n  resolutions_enabled: true,\n  settlements_enabled: true,\n  payments_enabled: true,\n  tickets_enabled: true,\n  documents_enabled: true,\n  announcements_enabled: true,\n};\n\nconst updateCompanyDetails = (data) => {\n  details = data;\n};\n\nconst mailServerConfigToShow = {\n  address: 'smtp.gmail.com',\n  authentication: 'PLAIN',\n  communication_encryption: 'none',\n  domain: 'example.co',\n  from_email: 'noreply@example.com',\n  port: 8080,\n  user_name: '',\n};\n\nexport const companyMocks = [\n  rest.get('/company/details/show', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json({ details, attachments }),\n  )),\n  rest.put('/company/details/change', (req, res, ctx) => {\n    req.json().then((postData) => {\n      updateCompanyDetails(postData);\n    });\n    return res(\n      ctx.status(200),\n    );\n  }),\n  rest.get('/company/settings', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json({ settings }),\n  )),\n  rest.put('/company/settings/change', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json({ settings }),\n  )),\n  rest.get('/company/mail_server_config', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json({ mail_server_config: {} }),\n  )),\n  rest.put('/company/mail_server_config/change', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json({ mail_server_config: mailServerConfigToShow }),\n  )),\n  rest.post('/company/mail_server_config/test', (req, res, ctx) => res(\n    ctx.status(200),\n  )),\n];\n", "import { rest } from 'msw';\n\nconst journals = [\n  {\n    autonumbering: false,\n    id: '786fe68b-24d2551b05c',\n    name: 'dziennik 1',\n    prefix: 'Enea',\n  },\n  {\n    autonumbering: false,\n    id: '68b535d-1b05c80k5',\n    name: 'dziennik 2',\n    prefix: 'PGE',\n  },\n  {\n    autonumbering: true,\n    id: '573d9bad-061376d0a913',\n    name: 'dziennik auto',\n    prefix: '2024',\n  },\n];\n\nconst journalToShow = {\n  ...journals[1],\n  prefix: 'PGE-2024',\n  autonumbering: 'Autonumeracja',\n  name: 'Dziennik 2 v. 2',\n  description: 'Nie by\u0142o opisu, jest opis',\n};\n\nexport const journalsMocks = [\n  rest.get('/journals/list', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json({ journals }),\n  )),\n  rest.post('/journals/add', (req, res, ctx) => res(\n    ctx.status(200),\n  )),\n  rest.get('/journals/:id/show', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json({\n      journal: {\n        ...journals[1], description: '',\n      },\n    }),\n  )),\n  rest.patch('/journals/:id/change', (req, res, ctx) => {\n    req.json().then(() => ({\n      journal: journalToShow,\n    }));\n    return res(\n      ctx.status(200),\n    );\n  }),\n  rest.delete('/journals/:id/remove', (req, res, ctx) => res(\n    ctx.status(200),\n  )),\n];\n", "import { rest } from 'msw';\nimport queryString from 'query-string';\n\nconst documentsCategories = [\n  {\n    id: '1',\n    name: 'kat1',\n  },\n  {\n    id: '2',\n    name: 'kat2',\n  },\n  {\n    id: '3',\n    name: 'kat3',\n  },\n];\n\nconst documentsStatuses = [\n  {\n    id: '1',\n    external_name: 'open',\n    name: 'open',\n  },\n  {\n    id: '2',\n    external_name: 'ongoing',\n    name: 'custom_1',\n  },\n  {\n    id: '3',\n    external_name: 'completed',\n    name: 'completed',\n  },\n];\n\nconst ksefInvoiceStatuses = [\n  {\n    id: 'invoice-status-1',\n    external_name: 'w obiegu',\n    name: 'open',\n  },\n  {\n    id: 'invoice-status-2',\n    external_name: 'zatwierdzona',\n    name: 'completed',\n  },\n];\n\nconst documents = [\n  {\n    category: 'kat2',\n    created_at: '2023-12-10T12:09:01Z',\n    creator: 'John Doe',\n    description: 'Adipisci illo accusamus.',\n    document_number: '13/12/2023',\n    id: '1c401997-505c',\n    journal: 'dziennik testowy',\n    realizer: 'Jane Doe',\n    revoked: true,\n    status: 'open',\n    title: 'Incidunt libero natus ipsa.',\n  },\n  {\n    created_at: '2023-12-15T19:09:01Z',\n    creator: 'Jane Doe',\n    description: 'Impedit hic rerum. Fuga est dolorum. Eligendi similique modi.',\n    document_number: 'dz2/1/2023',\n    id: '230a9e64-ad11',\n    journal: 'dziennik auto',\n    realizer: 'Jane Doe',\n    revoked: false,\n    status: 'ongoing',\n    title: 'Voluptas commodi corporis perspiciatis.',\n    category: 'kat1',\n  },\n  {\n    category: 'kat2',\n    created_at: '2023-12-20T07:09:01Z',\n    creator: 'Joe Doe',\n    description: 'Fugiat qui et. Tempore quasi assumenda. Eligendi sunt velit.',\n    document_number: 'dz2/2/2023',\n    id: '85ae7f97-6680',\n    journal: 'dziennik auto',\n    realizer: 'Jane Doe',\n    revoked: false,\n    status: 'completed',\n    title: 'Unde eos repellat aut.',\n  },\n];\n\nconst documentToShow = {\n  id: '230a9e64-ad11',\n  document_number: 'dz2/1/2023',\n  title: 'Voluptas commodi corporis perspiciatis.',\n  sender: 'Hilarion Gajda',\n  receiver: 'Hanna \u015Aliwa',\n  description: 'Impedit hic rerum. Fuga est dolorum. Eligendi similique modi.',\n  revoked: false,\n  created_at: '2023-12-15T19:09:01Z',\n  journal: {\n    id: '099e49ff',\n    autonumbering: true,\n    prefix: 'dz2',\n    name: 'dziennik auto',\n    description: null,\n  },\n  status: {\n    id: '2',\n    object_type: 'document',\n    name: 'ongoing',\n    active: true,\n    internal_name: 'w trakcie',\n    external_name: 'w trakcie',\n    description: null,\n  },\n  category: {\n    id: '1',\n    name: 'kat1',\n  },\n  creator: {\n    id: '51ed4cf2',\n    full_name: 'Jane Doe',\n  },\n  realizer: {\n    id: '51ed4cf2',\n    full_name: 'Jane Doe',\n  },\n  tenant: {\n    name: 'Dariusz Eliasz',\n    id: '432g435',\n  },\n  attachments: [\n    {\n      description: null,\n      filename: 'test.pdf',\n      content_type: 'application/pdf',\n      path: 'vwfqafeb2',\n    },\n  ],\n  comments: [\n    {\n      content: 'Testowy komentarz',\n      public: false,\n      author: 'Halina Skryba',\n      created_at: '2023-12-27T15:41:36',\n      attachments: [],\n    },\n  ],\n  tasks: [\n    {\n      id: '25d322b0-6100-4b3c-943b-a97f195579ba',\n      description: 'fwqfqwa',\n      task_number: 18,\n      title: 'Clining',\n      status: {\n        id: '1ed0fa3c-4273-4d05-80f1-e8469297a3be',\n        object_type: 'task',\n        name: 'open',\n        active: true,\n        internal_name: 'otwarte',\n        external_name: 'otwarte',\n        description: null,\n      },\n      category: {\n        id: '5d325736-458b-4036-a671-2daa17dbbe12',\n        name: 'cleaning',\n      },\n      created_at: '2023-06-23T12:14:16Z',\n      last_comment_at: null,\n      estimated_start_time: null,\n      estimated_finish_time: null,\n      started_at: null,\n      finished_at: null,\n      creator: 'Jane Doe',\n      creator_external_id: null,\n      realizer: 'Anna Nowak',\n      realizer_external_id: 'prac1',\n      venue_address: 'Odola\u0144ska 56/2',\n      venue_code: '01-001-002',\n      homeowner_association_name: null,\n      homeowner_association_code: null,\n      ticket: null,\n      document: {\n        id: '230a9e64-ad11',\n      },\n      attachments: [],\n      comments: [],\n    },\n  ],\n};\n\nexport const ksefInvoiceToShow = {\n  id: 'ksef-230a9e64-ad11',\n  external_id: 'EXT-1',\n  invoice_number: 'FV/KSEF/001',\n  invoice_issue_date: '2026-01-10',\n  invoice_receipt_date: '2026-01-11',\n  ksef_receipt_date: '2026-01-12',\n  deadline: '2026-01-20',\n  amount: 1234.5,\n  ksef_external_id: 'KSEF-EXTERNAL-001',\n  description: 'Opis faktury KSeF',\n  merit_description: 'Opis **merytoryczny** faktury',\n  accounting_description: 'Opis ksi\u0119gowy faktury',\n  accounting_disposition: 'pending',\n  invoice_module: 'FK',\n  extension_type: 'pdf',\n  compressed: false,\n  created_at: '2026-01-10T12:00:00Z',\n  updated_at: '2026-01-10T13:00:00Z',\n  journal: {\n    id: 'journal-1',\n    name: 'KSeF dziennik',\n  },\n  firm: {\n    id: 'firm-1',\n    name: 'Firma testowa',\n  },\n  status: {\n    id: 'invoice-status-1',\n    name: 'w obiegu',\n  },\n  realizer: {\n    id: '760ffdfd-47ac-4010-b946-3621737dd009',\n    name: 'Jane Doe',\n  },\n  attachments: [\n    {\n      description: '',\n      filename: 'ksef.pdf',\n      content_type: 'application/pdf',\n      path: '/rails/active_storage/blobs/mock-ksef',\n    },\n  ],\n  comments: [\n    {\n      content: 'Komentarz do faktury KSeF',\n      public: false,\n      author: 'Halina Skryba',\n      created_at: '2026-01-12T15:41:36Z',\n      attachments: [],\n    },\n  ],\n};\n\nconst mockSeries = (page) => {\n  switch (page) {\n    case '1':\n      return ['1', 2, 3, 'gap', 6];\n    case '2':\n      return [1, '2', 3, 4, 5, 6];\n    case '3':\n      return [1, 2, '3', 4, 5, 6];\n    case '4':\n      return [1, 2, 3, '4', 5, 6];\n    case '5':\n      return [1, 2, 3, 4, '5', 6];\n    case '6':\n      return [1, 'gap', 4, 5, '6'];\n    default:\n      return null;\n  }\n};\n\nconst metadata = (page) => ({\n  count: 58,\n  first_url: '/documents/list?page=1&items=10',\n  from: page * 10 - 9,\n  in: 10,\n  items: 10,\n  last: 6,\n  last_url: '/documents/list?page=6&items=10',\n  next: page === 6 ? null : page + 1,\n  page,\n  pages: 6,\n  prev: page === 1 ? null : page - 1,\n  series: mockSeries(page),\n  to: page * 10,\n});\n\nexport const documentsMocks = [\n  rest.get('/documents/list', (req, res, ctx) => {\n    const { query: params } = queryString.parseUrl(req.url.href);\n    return res(\n      ctx.status(200),\n      ctx.json({\n        metadata: metadata(params.page),\n        documents,\n      }),\n    );\n  }),\n  rest.get('/documents/:id/show', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json({\n      document: documentToShow,\n    }),\n  )),\n  rest.get('/ksef_invoices/:id/show', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json({\n      invoice: ksefInvoiceToShow,\n    }),\n  )),\n  rest.get('/ksef_invoice_statuses/list', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json({\n      statuses: ksefInvoiceStatuses,\n    }),\n  )),\n  rest.patch('/documents/:id/revoke', (req, res, ctx) => res(\n    ctx.status(200),\n  )),\n  rest.get('/document_categories/list', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json({ document_categories: documentsCategories }),\n  )),\n  rest.get('/tickets/statuses/document/list', (req, res, ctx) => res(\n    ctx.status(200),\n    ctx.json({\n      statuses: documentsStatuses,\n    }),\n  )),\n  rest.post('/documents/add', (req, res, ctx) => res(\n    ctx.status(200),\n  )),\n  rest.post('/documents/:id/add_task', (req, res, ctx) => res(\n    ctx.status(200),\n  )),\n  rest.post('/ksef_invoices/:id/add_comment', (req, res, ctx) => res(\n    ctx.status(201),\n    ctx.json({\n      comment: {\n        content: 'Komentarz do faktury KSeF',\n        public: false,\n        author: 'Super Admin',\n        created_at: '2026-01-12T15:41:36Z',\n        attachments: [],\n      },\n    }),\n  )),\n  rest.post('/document_categories/add', (req, res, ctx) => req.json()\n    .then((data) => documentsCategories.find((category) => category.name === data.name))\n    .then((result) => {\n      const nameExist = result || false;\n      return nameExist ? res(\n        ctx.status(422),\n        ctx.body(JSON.stringify({\n          errors:\n          'Nazwa nie jest unikalna',\n        })),\n      ) : res(ctx.status(200));\n    })),\n  rest.patch('/document_categories/:id/change', (req, res, ctx) => req.json()\n    .then((data) => documentsCategories.find((category) => category.name === data.name))\n    .then((result) => {\n      const nameExist = result || false;\n      return nameExist ? res(\n        ctx.status(422),\n        ctx.body(JSON.stringify({\n          errors:\n          'Nazwa nie jest unikalna',\n        })),\n      ) : res(ctx.status(200));\n    })),\n  rest.delete('/document_categories/:id/remove', (req, res, ctx) => {\n    const { id } = req.params;\n    const categoryToRemove = documentsCategories.find((category) => category.id === id);\n    const categoryInUse = documents.find((document) => document.category === categoryToRemove.name);\n    return categoryToRemove && categoryInUse ? res(\n      ctx.status(422),\n      ctx.body(JSON.stringify({\n        errors:\n          'Nie mo\u017Cna usun\u0105\u0107 kategorii w kt\u00F3rej istniej\u0105 dokumenty',\n      })),\n    ) : res(ctx.status(200));\n  }),\n];\n", "import { profileMocks } from './mocks/profileMocks';\nimport { metersMocks } from './mocks/metersMocks';\nimport { ticketsMocks } from './mocks/ticketsMocks';\nimport { accessMocks } from './mocks/accessMocks';\nimport { resolutionsMocks } from './mocks/resolutionsMocks';\nimport { announcementsMocks } from './mocks/announcementsMocks';\nimport { activityLogMocks } from './mocks/activityLogMocks';\nimport { settlementsMocks } from './mocks/settlementsMocks';\nimport { tasksMocks } from './mocks/tasksMocks';\nimport { employeesMocks } from './mocks/employeesMocks';\nimport { usersMocks } from './mocks/usersMocks';\nimport { tenantsMocks } from './mocks/tenantsMocks';\nimport { venuesMocks } from './mocks/venuesMocks';\nimport { homeownerAssociationsMocks } from './mocks/homeownerAssociationsMocks';\nimport { companyMocks } from './mocks/companyMocks';\nimport { journalsMocks } from './mocks/journalsMocks';\nimport { documentsMocks } from './mocks/documentsMocks';\n\n// eslint-disable-next-line import/prefer-default-export\nexport const mocks = [\n  ...profileMocks,\n  ...metersMocks,\n  ...ticketsMocks,\n  ...accessMocks,\n  ...resolutionsMocks,\n  ...announcementsMocks,\n  ...activityLogMocks,\n  ...settlementsMocks,\n  ...tasksMocks,\n  ...employeesMocks,\n  ...usersMocks,\n  ...tenantsMocks,\n  ...venuesMocks,\n  ...homeownerAssociationsMocks,\n  ...companyMocks,\n  ...journalsMocks,\n  ...documentsMocks,\n];\n", "import { setupWorker } from 'msw';\nimport { mocks } from './mocks';\n// 2. Define request mocks and response resolvers\nconst worker = setupWorker(\n  ...mocks,\n);\n\n// 3. Start the Service Worker\nworker.start();\n", "import * as React from 'react';\nimport * as ReactDOM from 'react-dom/client';\nimport { IntlProvider } from 'react-intl';\nimport { Provider } from 'react-redux';\nimport { pdfjs } from 'react-pdf';\nimport Cookies from 'js-cookie';\nimport AppRouter from './AppRouter';\nimport messages from './languages/pl';\nimport { store } from './store/store';\n\nconst rootElement = document.getElementById('react-app');\n\nif (process.env.ENABLE_MOCKS === 'true') {\n  // eslint-disable-next-line global-require\n  require('../test/worker');\n}\n\npdfjs.GlobalWorkerOptions.workerSrc = `https://unpkg.com/pdfjs-dist@${pdfjs.version}/build/pdf.worker.min.mjs`;\n//pdfjs.GlobalWorkerOptions.workerSrc = `//unpkg.com/pdfjs-dist@${pdfjs.version}/build/pdf.worker.min.mjs`;\n\ndocument.addEventListener('DOMContentLoaded', () => {\n  const noticeElement = document.getElementById('notice');\n  const alertElement = document.getElementById('alert');\n  const cookiesConsentElement = document.getElementById('cookiesConsent');\n  const cookiesAcceptButton = document.getElementById('cookiesAcceptButton');\n\n  const consent = Cookies.get('cookiesAccepted');\n  if (!consent && cookiesConsentElement) {\n    cookiesConsentElement.classList.remove('hidden');\n  }\n\n  if (cookiesAcceptButton && cookiesConsentElement) {\n    cookiesAcceptButton.onclick = () => {\n      Cookies.set('cookiesAccepted', 'true', {secure: true});\n      cookiesConsentElement.classList.add('hidden');\n    };\n  }\n\n  const hideElement = () => {\n    if (noticeElement) noticeElement.setAttribute('style', 'display: none');\n    if (alertElement) alertElement.setAttribute('style', 'display: none');\n  };\n  setTimeout(hideElement, 5000);\n});\n\nif (rootElement) {\n  const root = ReactDOM.createRoot(rootElement);\n  root.render(\n    <React.StrictMode>\n      <Provider store={store}>\n        <IntlProvider locale=\"pl\" defaultLocale=\"pl\" messages={messages}>\n          <AppRouter />\n        </IntlProvider>\n      </Provider>\n    </React.StrictMode>,\n  );\n}\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\nexport function __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\nexport var __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\nexport function __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\nexport function __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\nexport function __param(paramIndex, decorator) {\r\n    return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n    if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __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\nexport function __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 (g && (g = 0, op[0] && (_ = 0)), _) 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\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n    if (k2 === undefined) k2 = k;\r\n    var desc = Object.getOwnPropertyDescriptor(m, k);\r\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n        desc = { enumerable: true, get: function() { return m[k]; } };\r\n    }\r\n    Object.defineProperty(o, k2, desc);\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\nexport function __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\nexport function __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\nexport function __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\nexport function __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\nexport function __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\nexport function __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\nexport function __await(v) {\r\n    return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __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\nexport function __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\nexport function __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\nexport function __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\nexport function __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\nexport function __importDefault(mod) {\r\n    return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __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\nexport function __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\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n    if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n    return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n", "import { __rest } from \"tslib\";\nimport * as React from 'react';\nimport useIntl from './useIntl';\nvar DisplayName;\n(function (DisplayName) {\n    DisplayName[\"formatDate\"] = \"FormattedDate\";\n    DisplayName[\"formatTime\"] = \"FormattedTime\";\n    DisplayName[\"formatNumber\"] = \"FormattedNumber\";\n    DisplayName[\"formatList\"] = \"FormattedList\";\n    // Note that this DisplayName is the locale display name, not to be confused with\n    // the name of the enum, which is for React component display name in dev tools.\n    DisplayName[\"formatDisplayName\"] = \"FormattedDisplayName\";\n})(DisplayName || (DisplayName = {}));\nvar DisplayNameParts;\n(function (DisplayNameParts) {\n    DisplayNameParts[\"formatDate\"] = \"FormattedDateParts\";\n    DisplayNameParts[\"formatTime\"] = \"FormattedTimeParts\";\n    DisplayNameParts[\"formatNumber\"] = \"FormattedNumberParts\";\n    DisplayNameParts[\"formatList\"] = \"FormattedListParts\";\n})(DisplayNameParts || (DisplayNameParts = {}));\nexport var FormattedNumberParts = function (props) {\n    var intl = useIntl();\n    var value = props.value, children = props.children, formatProps = __rest(props, [\"value\", \"children\"]);\n    return children(intl.formatNumberToParts(value, formatProps));\n};\nFormattedNumberParts.displayName = 'FormattedNumberParts';\nexport var FormattedListParts = function (props) {\n    var intl = useIntl();\n    var value = props.value, children = props.children, formatProps = __rest(props, [\"value\", \"children\"]);\n    return children(intl.formatListToParts(value, formatProps));\n};\nFormattedNumberParts.displayName = 'FormattedNumberParts';\nexport function createFormattedDateTimePartsComponent(name) {\n    var ComponentParts = function (props) {\n        var intl = useIntl();\n        var value = props.value, children = props.children, formatProps = __rest(props, [\"value\", \"children\"]);\n        var date = typeof value === 'string' ? new Date(value || 0) : value;\n        var formattedParts = name === 'formatDate'\n            ? intl.formatDateToParts(date, formatProps)\n            : intl.formatTimeToParts(date, formatProps);\n        return children(formattedParts);\n    };\n    ComponentParts.displayName = DisplayNameParts[name];\n    return ComponentParts;\n}\nexport function createFormattedComponent(name) {\n    var Component = function (props) {\n        var intl = useIntl();\n        var value = props.value, children = props.children, formatProps = __rest(props\n        // TODO: fix TS type definition for localeMatcher upstream\n        , [\"value\", \"children\"]);\n        // TODO: fix TS type definition for localeMatcher upstream\n        var formattedValue = intl[name](value, formatProps);\n        if (typeof children === 'function') {\n            return children(formattedValue);\n        }\n        var Text = intl.textComponent || React.Fragment;\n        return React.createElement(Text, null, formattedValue);\n    };\n    Component.displayName = DisplayName[name];\n    return Component;\n}\n", "import * as React from 'react';\nimport { Context } from './injectIntl';\nimport { invariantIntlContext } from '../utils';\nexport default function useIntl() {\n    var intl = React.useContext(Context);\n    invariantIntlContext(intl);\n    return intl;\n}\n", "import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\nimport { invariantIntlContext } from '../utils';\nfunction getDisplayName(Component) {\n    return Component.displayName || Component.name || 'Component';\n}\n// TODO: We should provide initial value here\nvar IntlContext = React.createContext(null);\nvar IntlConsumer = IntlContext.Consumer, IntlProvider = IntlContext.Provider;\nexport var Provider = IntlProvider;\nexport var Context = IntlContext;\nexport default function injectIntl(WrappedComponent, options) {\n    var _a = options || {}, _b = _a.intlPropName, intlPropName = _b === void 0 ? 'intl' : _b, _c = _a.forwardRef, forwardRef = _c === void 0 ? false : _c, _d = _a.enforceContext, enforceContext = _d === void 0 ? true : _d;\n    var WithIntl = function (props) { return (React.createElement(IntlConsumer, null, function (intl) {\n        var _a;\n        if (enforceContext) {\n            invariantIntlContext(intl);\n        }\n        var intlProp = (_a = {}, _a[intlPropName] = intl, _a);\n        return (React.createElement(WrappedComponent, __assign({}, props, intlProp, { ref: forwardRef ? props.forwardedRef : null })));\n    })); };\n    WithIntl.displayName = \"injectIntl(\".concat(getDisplayName(WrappedComponent), \")\");\n    WithIntl.WrappedComponent = WrappedComponent;\n    if (forwardRef) {\n        return hoistNonReactStatics(React.forwardRef(function (props, ref) { return (React.createElement(WithIntl, __assign({}, props, { forwardedRef: ref }))); }), WrappedComponent);\n    }\n    return hoistNonReactStatics(WithIntl, WrappedComponent);\n}\n", "import { __assign } from \"tslib\";\nimport * as React from 'react';\nimport { invariant } from '@formatjs/ecma402-abstract';\nimport { DEFAULT_INTL_CONFIG as CORE_DEFAULT_INTL_CONFIG } from '@formatjs/intl';\nexport function invariantIntlContext(intl) {\n    invariant(intl, '[React Intl] Could not find required `intl` object. ' +\n        '<IntlProvider> needs to exist in the component ancestry.');\n}\nexport var DEFAULT_INTL_CONFIG = __assign(__assign({}, CORE_DEFAULT_INTL_CONFIG), { textComponent: React.Fragment });\n/**\n * Takes a `formatXMLElementFn`, and composes it in function, which passes\n * argument `parts` through, assigning unique key to each part, to prevent\n * \"Each child in a list should have a unique \"key\"\" React error.\n * @param formatXMLElementFn\n */\nexport function assignUniqueKeysToParts(formatXMLElementFn) {\n    return function (parts) {\n        // eslint-disable-next-line prefer-rest-params\n        return formatXMLElementFn(React.Children.toArray(parts));\n    };\n}\nexport function shallowEqual(objA, objB) {\n    if (objA === objB) {\n        return true;\n    }\n    if (!objA || !objB) {\n        return false;\n    }\n    var aKeys = Object.keys(objA);\n    var bKeys = Object.keys(objB);\n    var len = aKeys.length;\n    if (bKeys.length !== len) {\n        return false;\n    }\n    for (var i = 0; i < len; i++) {\n        var key = aKeys[i];\n        if (objA[key] !== objB[key] ||\n            !Object.prototype.hasOwnProperty.call(objB, key)) {\n            return false;\n        }\n    }\n    return true;\n}\n", "/**\n * Cannot do Math.log(x) / Math.log(10) bc if IEEE floating point issue\n * @param x number\n */\nexport function getMagnitude(x) {\n    // Cannot count string length via Number.toString because it may use scientific notation\n    // for very small or very large numbers.\n    return Math.floor(Math.log(x) * Math.LOG10E);\n}\nexport function repeat(s, times) {\n    if (typeof s.repeat === 'function') {\n        return s.repeat(times);\n    }\n    var arr = new Array(times);\n    for (var i = 0; i < arr.length; i++) {\n        arr[i] = s;\n    }\n    return arr.join('');\n}\nexport function setInternalSlot(map, pl, field, value) {\n    if (!map.get(pl)) {\n        map.set(pl, Object.create(null));\n    }\n    var slots = map.get(pl);\n    slots[field] = value;\n}\nexport function setMultiInternalSlots(map, pl, props) {\n    for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\n        var k = _a[_i];\n        setInternalSlot(map, pl, k, props[k]);\n    }\n}\nexport function getInternalSlot(map, pl, field) {\n    return getMultiInternalSlots(map, pl, field)[field];\n}\nexport function getMultiInternalSlots(map, pl) {\n    var fields = [];\n    for (var _i = 2; _i < arguments.length; _i++) {\n        fields[_i - 2] = arguments[_i];\n    }\n    var slots = map.get(pl);\n    if (!slots) {\n        throw new TypeError(\"\".concat(pl, \" InternalSlot has not been initialized\"));\n    }\n    return fields.reduce(function (all, f) {\n        all[f] = slots[f];\n        return all;\n    }, Object.create(null));\n}\nexport function isLiteralPart(patternPart) {\n    return patternPart.type === 'literal';\n}\n/*\n  17 ECMAScript Standard Built-in Objects:\n    Every built-in Function object, including constructors, that is not\n    identified as an anonymous function has a name property whose value\n    is a String.\n\n    Unless otherwise specified, the name property of a built-in Function\n    object, if it exists, has the attributes { [[Writable]]: false,\n    [[Enumerable]]: false, [[Configurable]]: true }.\n*/\nexport function defineProperty(target, name, _a) {\n    var value = _a.value;\n    Object.defineProperty(target, name, {\n        configurable: true,\n        enumerable: false,\n        writable: true,\n        value: value,\n    });\n}\nexport var UNICODE_EXTENSION_SEQUENCE_REGEX = /-u(?:-[0-9a-z]{2,8})+/gi;\nexport function invariant(condition, message, Err) {\n    if (Err === void 0) { Err = Error; }\n    if (!condition) {\n        throw new Err(message);\n    }\n}\n", "export var ErrorKind;\n(function (ErrorKind) {\n    /** Argument is unclosed (e.g. `{0`) */\n    ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_CLOSING_BRACE\"] = 1] = \"EXPECT_ARGUMENT_CLOSING_BRACE\";\n    /** Argument is empty (e.g. `{}`). */\n    ErrorKind[ErrorKind[\"EMPTY_ARGUMENT\"] = 2] = \"EMPTY_ARGUMENT\";\n    /** Argument is malformed (e.g. `{foo!}``) */\n    ErrorKind[ErrorKind[\"MALFORMED_ARGUMENT\"] = 3] = \"MALFORMED_ARGUMENT\";\n    /** Expect an argument type (e.g. `{foo,}`) */\n    ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_TYPE\"] = 4] = \"EXPECT_ARGUMENT_TYPE\";\n    /** Unsupported argument type (e.g. `{foo,foo}`) */\n    ErrorKind[ErrorKind[\"INVALID_ARGUMENT_TYPE\"] = 5] = \"INVALID_ARGUMENT_TYPE\";\n    /** Expect an argument style (e.g. `{foo, number, }`) */\n    ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_STYLE\"] = 6] = \"EXPECT_ARGUMENT_STYLE\";\n    /** The number skeleton is invalid. */\n    ErrorKind[ErrorKind[\"INVALID_NUMBER_SKELETON\"] = 7] = \"INVALID_NUMBER_SKELETON\";\n    /** The date time skeleton is invalid. */\n    ErrorKind[ErrorKind[\"INVALID_DATE_TIME_SKELETON\"] = 8] = \"INVALID_DATE_TIME_SKELETON\";\n    /** Exepct a number skeleton following the `::` (e.g. `{foo, number, ::}`) */\n    ErrorKind[ErrorKind[\"EXPECT_NUMBER_SKELETON\"] = 9] = \"EXPECT_NUMBER_SKELETON\";\n    /** Exepct a date time skeleton following the `::` (e.g. `{foo, date, ::}`) */\n    ErrorKind[ErrorKind[\"EXPECT_DATE_TIME_SKELETON\"] = 10] = \"EXPECT_DATE_TIME_SKELETON\";\n    /** Unmatched apostrophes in the argument style (e.g. `{foo, number, 'test`) */\n    ErrorKind[ErrorKind[\"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\"] = 11] = \"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\";\n    /** Missing select argument options (e.g. `{foo, select}`) */\n    ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_OPTIONS\"] = 12] = \"EXPECT_SELECT_ARGUMENT_OPTIONS\";\n    /** Expecting an offset value in `plural` or `selectordinal` argument (e.g `{foo, plural, offset}`) */\n    ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 13] = \"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\";\n    /** Offset value in `plural` or `selectordinal` is invalid (e.g. `{foo, plural, offset: x}`) */\n    ErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 14] = \"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\";\n    /** Expecting a selector in `select` argument (e.g `{foo, select}`) */\n    ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR\"] = 15] = \"EXPECT_SELECT_ARGUMENT_SELECTOR\";\n    /** Expecting a selector in `plural` or `selectordinal` argument (e.g `{foo, plural}`) */\n    ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR\"] = 16] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR\";\n    /** Expecting a message fragment after the `select` selector (e.g. `{foo, select, apple}`) */\n    ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\"] = 17] = \"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\";\n    /**\n     * Expecting a message fragment after the `plural` or `selectordinal` selector\n     * (e.g. `{foo, plural, one}`)\n     */\n    ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\"] = 18] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\";\n    /** Selector in `plural` or `selectordinal` is malformed (e.g. `{foo, plural, =x {#}}`) */\n    ErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_SELECTOR\"] = 19] = \"INVALID_PLURAL_ARGUMENT_SELECTOR\";\n    /**\n     * Duplicate selectors in `plural` or `selectordinal` argument.\n     * (e.g. {foo, plural, one {#} one {#}})\n     */\n    ErrorKind[ErrorKind[\"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\"] = 20] = \"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\";\n    /** Duplicate selectors in `select` argument.\n     * (e.g. {foo, select, apple {apple} apple {apple}})\n     */\n    ErrorKind[ErrorKind[\"DUPLICATE_SELECT_ARGUMENT_SELECTOR\"] = 21] = \"DUPLICATE_SELECT_ARGUMENT_SELECTOR\";\n    /** Plural or select argument option must have `other` clause. */\n    ErrorKind[ErrorKind[\"MISSING_OTHER_CLAUSE\"] = 22] = \"MISSING_OTHER_CLAUSE\";\n    /** The tag is malformed. (e.g. `<bold!>foo</bold!>) */\n    ErrorKind[ErrorKind[\"INVALID_TAG\"] = 23] = \"INVALID_TAG\";\n    /** The tag name is invalid. (e.g. `<123>foo</123>`) */\n    ErrorKind[ErrorKind[\"INVALID_TAG_NAME\"] = 25] = \"INVALID_TAG_NAME\";\n    /** The closing tag does not match the opening tag. (e.g. `<bold>foo</italic>`) */\n    ErrorKind[ErrorKind[\"UNMATCHED_CLOSING_TAG\"] = 26] = \"UNMATCHED_CLOSING_TAG\";\n    /** The opening tag has unmatched closing tag. (e.g. `<bold>foo`) */\n    ErrorKind[ErrorKind[\"UNCLOSED_TAG\"] = 27] = \"UNCLOSED_TAG\";\n})(ErrorKind || (ErrorKind = {}));\n", "export var TYPE;\n(function (TYPE) {\n    /**\n     * Raw text\n     */\n    TYPE[TYPE[\"literal\"] = 0] = \"literal\";\n    /**\n     * Variable w/o any format, e.g `var` in `this is a {var}`\n     */\n    TYPE[TYPE[\"argument\"] = 1] = \"argument\";\n    /**\n     * Variable w/ number format\n     */\n    TYPE[TYPE[\"number\"] = 2] = \"number\";\n    /**\n     * Variable w/ date format\n     */\n    TYPE[TYPE[\"date\"] = 3] = \"date\";\n    /**\n     * Variable w/ time format\n     */\n    TYPE[TYPE[\"time\"] = 4] = \"time\";\n    /**\n     * Variable w/ select format\n     */\n    TYPE[TYPE[\"select\"] = 5] = \"select\";\n    /**\n     * Variable w/ plural format\n     */\n    TYPE[TYPE[\"plural\"] = 6] = \"plural\";\n    /**\n     * Only possible within plural argument.\n     * This is the `#` symbol that will be substituted with the count.\n     */\n    TYPE[TYPE[\"pound\"] = 7] = \"pound\";\n    /**\n     * XML-like tag\n     */\n    TYPE[TYPE[\"tag\"] = 8] = \"tag\";\n})(TYPE || (TYPE = {}));\nexport var SKELETON_TYPE;\n(function (SKELETON_TYPE) {\n    SKELETON_TYPE[SKELETON_TYPE[\"number\"] = 0] = \"number\";\n    SKELETON_TYPE[SKELETON_TYPE[\"dateTime\"] = 1] = \"dateTime\";\n})(SKELETON_TYPE || (SKELETON_TYPE = {}));\n/**\n * Type Guards\n */\nexport function isLiteralElement(el) {\n    return el.type === TYPE.literal;\n}\nexport function isArgumentElement(el) {\n    return el.type === TYPE.argument;\n}\nexport function isNumberElement(el) {\n    return el.type === TYPE.number;\n}\nexport function isDateElement(el) {\n    return el.type === TYPE.date;\n}\nexport function isTimeElement(el) {\n    return el.type === TYPE.time;\n}\nexport function isSelectElement(el) {\n    return el.type === TYPE.select;\n}\nexport function isPluralElement(el) {\n    return el.type === TYPE.plural;\n}\nexport function isPoundElement(el) {\n    return el.type === TYPE.pound;\n}\nexport function isTagElement(el) {\n    return el.type === TYPE.tag;\n}\nexport function isNumberSkeleton(el) {\n    return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.number);\n}\nexport function isDateTimeSkeleton(el) {\n    return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.dateTime);\n}\nexport function createLiteralElement(value) {\n    return {\n        type: TYPE.literal,\n        value: value,\n    };\n}\nexport function createNumberElement(value, style) {\n    return {\n        type: TYPE.number,\n        value: value,\n        style: style,\n    };\n}\n", "// @generated from regex-gen.ts\nexport var SPACE_SEPARATOR_REGEX = /[ \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\nexport var WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/;\n", "/**\n * https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * Credit: https://github.com/caridy/intl-datetimeformat-pattern/blob/master/index.js\n * with some tweaks\n */\nvar DATE_TIME_REGEX = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;\n/**\n * Parse Date time skeleton into Intl.DateTimeFormatOptions\n * Ref: https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * @public\n * @param skeleton skeleton string\n */\nexport function parseDateTimeSkeleton(skeleton) {\n    var result = {};\n    skeleton.replace(DATE_TIME_REGEX, function (match) {\n        var len = match.length;\n        switch (match[0]) {\n            // Era\n            case 'G':\n                result.era = len === 4 ? 'long' : len === 5 ? 'narrow' : 'short';\n                break;\n            // Year\n            case 'y':\n                result.year = len === 2 ? '2-digit' : 'numeric';\n                break;\n            case 'Y':\n            case 'u':\n            case 'U':\n            case 'r':\n                throw new RangeError('`Y/u/U/r` (year) patterns are not supported, use `y` instead');\n            // Quarter\n            case 'q':\n            case 'Q':\n                throw new RangeError('`q/Q` (quarter) patterns are not supported');\n            // Month\n            case 'M':\n            case 'L':\n                result.month = ['numeric', '2-digit', 'short', 'long', 'narrow'][len - 1];\n                break;\n            // Week\n            case 'w':\n            case 'W':\n                throw new RangeError('`w/W` (week) patterns are not supported');\n            case 'd':\n                result.day = ['numeric', '2-digit'][len - 1];\n                break;\n            case 'D':\n            case 'F':\n            case 'g':\n                throw new RangeError('`D/F/g` (day) patterns are not supported, use `d` instead');\n            // Weekday\n            case 'E':\n                result.weekday = len === 4 ? 'short' : len === 5 ? 'narrow' : 'short';\n                break;\n            case 'e':\n                if (len < 4) {\n                    throw new RangeError('`e..eee` (weekday) patterns are not supported');\n                }\n                result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n                break;\n            case 'c':\n                if (len < 4) {\n                    throw new RangeError('`c..ccc` (weekday) patterns are not supported');\n                }\n                result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n                break;\n            // Period\n            case 'a': // AM, PM\n                result.hour12 = true;\n                break;\n            case 'b': // am, pm, noon, midnight\n            case 'B': // flexible day periods\n                throw new RangeError('`b/B` (period) patterns are not supported, use `a` instead');\n            // Hour\n            case 'h':\n                result.hourCycle = 'h12';\n                result.hour = ['numeric', '2-digit'][len - 1];\n                break;\n            case 'H':\n                result.hourCycle = 'h23';\n                result.hour = ['numeric', '2-digit'][len - 1];\n                break;\n            case 'K':\n                result.hourCycle = 'h11';\n                result.hour = ['numeric', '2-digit'][len - 1];\n                break;\n            case 'k':\n                result.hourCycle = 'h24';\n                result.hour = ['numeric', '2-digit'][len - 1];\n                break;\n            case 'j':\n            case 'J':\n            case 'C':\n                throw new RangeError('`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead');\n            // Minute\n            case 'm':\n                result.minute = ['numeric', '2-digit'][len - 1];\n                break;\n            // Second\n            case 's':\n                result.second = ['numeric', '2-digit'][len - 1];\n                break;\n            case 'S':\n            case 'A':\n                throw new RangeError('`S/A` (second) patterns are not supported, use `s` instead');\n            // Zone\n            case 'z': // 1..3, 4: specific non-location format\n                result.timeZoneName = len < 4 ? 'short' : 'long';\n                break;\n            case 'Z': // 1..3, 4, 5: The ISO8601 varios formats\n            case 'O': // 1, 4: miliseconds in day short, long\n            case 'v': // 1, 4: generic non-location format\n            case 'V': // 1, 2, 3, 4: time zone ID or city\n            case 'X': // 1, 2, 3, 4: The ISO8601 varios formats\n            case 'x': // 1, 2, 3, 4: The ISO8601 varios formats\n                throw new RangeError('`Z/O/v/V/X/x` (timeZone) patterns are not supported, use `z` instead');\n        }\n        return '';\n    });\n    return result;\n}\n", "// @generated from regex-gen.ts\nexport var WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/i;\n", "import { __assign } from \"tslib\";\nimport { WHITE_SPACE_REGEX } from './regex.generated';\nexport function parseNumberSkeletonFromString(skeleton) {\n    if (skeleton.length === 0) {\n        throw new Error('Number skeleton cannot be empty');\n    }\n    // Parse the skeleton\n    var stringTokens = skeleton\n        .split(WHITE_SPACE_REGEX)\n        .filter(function (x) { return x.length > 0; });\n    var tokens = [];\n    for (var _i = 0, stringTokens_1 = stringTokens; _i < stringTokens_1.length; _i++) {\n        var stringToken = stringTokens_1[_i];\n        var stemAndOptions = stringToken.split('/');\n        if (stemAndOptions.length === 0) {\n            throw new Error('Invalid number skeleton');\n        }\n        var stem = stemAndOptions[0], options = stemAndOptions.slice(1);\n        for (var _a = 0, options_1 = options; _a < options_1.length; _a++) {\n            var option = options_1[_a];\n            if (option.length === 0) {\n                throw new Error('Invalid number skeleton');\n            }\n        }\n        tokens.push({ stem: stem, options: options });\n    }\n    return tokens;\n}\nfunction icuUnitToEcma(unit) {\n    return unit.replace(/^(.*?)-/, '');\n}\nvar FRACTION_PRECISION_REGEX = /^\\.(?:(0+)(\\*)?|(#+)|(0+)(#+))$/g;\nvar SIGNIFICANT_PRECISION_REGEX = /^(@+)?(\\+|#+)?[rs]?$/g;\nvar INTEGER_WIDTH_REGEX = /(\\*)(0+)|(#+)(0+)|(0+)/g;\nvar CONCISE_INTEGER_WIDTH_REGEX = /^(0+)$/;\nfunction parseSignificantPrecision(str) {\n    var result = {};\n    if (str[str.length - 1] === 'r') {\n        result.roundingPriority = 'morePrecision';\n    }\n    else if (str[str.length - 1] === 's') {\n        result.roundingPriority = 'lessPrecision';\n    }\n    str.replace(SIGNIFICANT_PRECISION_REGEX, function (_, g1, g2) {\n        // @@@ case\n        if (typeof g2 !== 'string') {\n            result.minimumSignificantDigits = g1.length;\n            result.maximumSignificantDigits = g1.length;\n        }\n        // @@@+ case\n        else if (g2 === '+') {\n            result.minimumSignificantDigits = g1.length;\n        }\n        // .### case\n        else if (g1[0] === '#') {\n            result.maximumSignificantDigits = g1.length;\n        }\n        // .@@## or .@@@ case\n        else {\n            result.minimumSignificantDigits = g1.length;\n            result.maximumSignificantDigits =\n                g1.length + (typeof g2 === 'string' ? g2.length : 0);\n        }\n        return '';\n    });\n    return result;\n}\nfunction parseSign(str) {\n    switch (str) {\n        case 'sign-auto':\n            return {\n                signDisplay: 'auto',\n            };\n        case 'sign-accounting':\n        case '()':\n            return {\n                currencySign: 'accounting',\n            };\n        case 'sign-always':\n        case '+!':\n            return {\n                signDisplay: 'always',\n            };\n        case 'sign-accounting-always':\n        case '()!':\n            return {\n                signDisplay: 'always',\n                currencySign: 'accounting',\n            };\n        case 'sign-except-zero':\n        case '+?':\n            return {\n                signDisplay: 'exceptZero',\n            };\n        case 'sign-accounting-except-zero':\n        case '()?':\n            return {\n                signDisplay: 'exceptZero',\n                currencySign: 'accounting',\n            };\n        case 'sign-never':\n        case '+_':\n            return {\n                signDisplay: 'never',\n            };\n    }\n}\nfunction parseConciseScientificAndEngineeringStem(stem) {\n    // Engineering\n    var result;\n    if (stem[0] === 'E' && stem[1] === 'E') {\n        result = {\n            notation: 'engineering',\n        };\n        stem = stem.slice(2);\n    }\n    else if (stem[0] === 'E') {\n        result = {\n            notation: 'scientific',\n        };\n        stem = stem.slice(1);\n    }\n    if (result) {\n        var signDisplay = stem.slice(0, 2);\n        if (signDisplay === '+!') {\n            result.signDisplay = 'always';\n            stem = stem.slice(2);\n        }\n        else if (signDisplay === '+?') {\n            result.signDisplay = 'exceptZero';\n            stem = stem.slice(2);\n        }\n        if (!CONCISE_INTEGER_WIDTH_REGEX.test(stem)) {\n            throw new Error('Malformed concise eng/scientific notation');\n        }\n        result.minimumIntegerDigits = stem.length;\n    }\n    return result;\n}\nfunction parseNotationOptions(opt) {\n    var result = {};\n    var signOpts = parseSign(opt);\n    if (signOpts) {\n        return signOpts;\n    }\n    return result;\n}\n/**\n * https://github.com/unicode-org/icu/blob/master/docs/userguide/format_parse/numbers/skeletons.md#skeleton-stems-and-options\n */\nexport function parseNumberSkeleton(tokens) {\n    var result = {};\n    for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n        var token = tokens_1[_i];\n        switch (token.stem) {\n            case 'percent':\n            case '%':\n                result.style = 'percent';\n                continue;\n            case '%x100':\n                result.style = 'percent';\n                result.scale = 100;\n                continue;\n            case 'currency':\n                result.style = 'currency';\n                result.currency = token.options[0];\n                continue;\n            case 'group-off':\n            case ',_':\n                result.useGrouping = false;\n                continue;\n            case 'precision-integer':\n            case '.':\n                result.maximumFractionDigits = 0;\n                continue;\n            case 'measure-unit':\n            case 'unit':\n                result.style = 'unit';\n                result.unit = icuUnitToEcma(token.options[0]);\n                continue;\n            case 'compact-short':\n            case 'K':\n                result.notation = 'compact';\n                result.compactDisplay = 'short';\n                continue;\n            case 'compact-long':\n            case 'KK':\n                result.notation = 'compact';\n                result.compactDisplay = 'long';\n                continue;\n            case 'scientific':\n                result = __assign(__assign(__assign({}, result), { notation: 'scientific' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n                continue;\n            case 'engineering':\n                result = __assign(__assign(__assign({}, result), { notation: 'engineering' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n                continue;\n            case 'notation-simple':\n                result.notation = 'standard';\n                continue;\n            // https://github.com/unicode-org/icu/blob/master/icu4c/source/i18n/unicode/unumberformatter.h\n            case 'unit-width-narrow':\n                result.currencyDisplay = 'narrowSymbol';\n                result.unitDisplay = 'narrow';\n                continue;\n            case 'unit-width-short':\n                result.currencyDisplay = 'code';\n                result.unitDisplay = 'short';\n                continue;\n            case 'unit-width-full-name':\n                result.currencyDisplay = 'name';\n                result.unitDisplay = 'long';\n                continue;\n            case 'unit-width-iso-code':\n                result.currencyDisplay = 'symbol';\n                continue;\n            case 'scale':\n                result.scale = parseFloat(token.options[0]);\n                continue;\n            // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n            case 'integer-width':\n                if (token.options.length > 1) {\n                    throw new RangeError('integer-width stems only accept a single optional option');\n                }\n                token.options[0].replace(INTEGER_WIDTH_REGEX, function (_, g1, g2, g3, g4, g5) {\n                    if (g1) {\n                        result.minimumIntegerDigits = g2.length;\n                    }\n                    else if (g3 && g4) {\n                        throw new Error('We currently do not support maximum integer digits');\n                    }\n                    else if (g5) {\n                        throw new Error('We currently do not support exact integer digits');\n                    }\n                    return '';\n                });\n                continue;\n        }\n        // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n        if (CONCISE_INTEGER_WIDTH_REGEX.test(token.stem)) {\n            result.minimumIntegerDigits = token.stem.length;\n            continue;\n        }\n        if (FRACTION_PRECISION_REGEX.test(token.stem)) {\n            // Precision\n            // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#fraction-precision\n            // precision-integer case\n            if (token.options.length > 1) {\n                throw new RangeError('Fraction-precision stems only accept a single optional option');\n            }\n            token.stem.replace(FRACTION_PRECISION_REGEX, function (_, g1, g2, g3, g4, g5) {\n                // .000* case (before ICU67 it was .000+)\n                if (g2 === '*') {\n                    result.minimumFractionDigits = g1.length;\n                }\n                // .### case\n                else if (g3 && g3[0] === '#') {\n                    result.maximumFractionDigits = g3.length;\n                }\n                // .00## case\n                else if (g4 && g5) {\n                    result.minimumFractionDigits = g4.length;\n                    result.maximumFractionDigits = g4.length + g5.length;\n                }\n                else {\n                    result.minimumFractionDigits = g1.length;\n                    result.maximumFractionDigits = g1.length;\n                }\n                return '';\n            });\n            var opt = token.options[0];\n            // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#trailing-zero-display\n            if (opt === 'w') {\n                result = __assign(__assign({}, result), { trailingZeroDisplay: 'stripIfInteger' });\n            }\n            else if (opt) {\n                result = __assign(__assign({}, result), parseSignificantPrecision(opt));\n            }\n            continue;\n        }\n        // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#significant-digits-precision\n        if (SIGNIFICANT_PRECISION_REGEX.test(token.stem)) {\n            result = __assign(__assign({}, result), parseSignificantPrecision(token.stem));\n            continue;\n        }\n        var signOpts = parseSign(token.stem);\n        if (signOpts) {\n            result = __assign(__assign({}, result), signOpts);\n        }\n        var conciseScientificAndEngineeringOpts = parseConciseScientificAndEngineeringStem(token.stem);\n        if (conciseScientificAndEngineeringOpts) {\n            result = __assign(__assign({}, result), conciseScientificAndEngineeringOpts);\n        }\n    }\n    return result;\n}\n", "// @generated from time-data-gen.ts\n// prettier-ignore  \nexport var timeData = {\n    \"AX\": [\n        \"H\"\n    ],\n    \"BQ\": [\n        \"H\"\n    ],\n    \"CP\": [\n        \"H\"\n    ],\n    \"CZ\": [\n        \"H\"\n    ],\n    \"DK\": [\n        \"H\"\n    ],\n    \"FI\": [\n        \"H\"\n    ],\n    \"ID\": [\n        \"H\"\n    ],\n    \"IS\": [\n        \"H\"\n    ],\n    \"ML\": [\n        \"H\"\n    ],\n    \"NE\": [\n        \"H\"\n    ],\n    \"RU\": [\n        \"H\"\n    ],\n    \"SE\": [\n        \"H\"\n    ],\n    \"SJ\": [\n        \"H\"\n    ],\n    \"SK\": [\n        \"H\"\n    ],\n    \"AS\": [\n        \"h\",\n        \"H\"\n    ],\n    \"BT\": [\n        \"h\",\n        \"H\"\n    ],\n    \"DJ\": [\n        \"h\",\n        \"H\"\n    ],\n    \"ER\": [\n        \"h\",\n        \"H\"\n    ],\n    \"GH\": [\n        \"h\",\n        \"H\"\n    ],\n    \"IN\": [\n        \"h\",\n        \"H\"\n    ],\n    \"LS\": [\n        \"h\",\n        \"H\"\n    ],\n    \"PG\": [\n        \"h\",\n        \"H\"\n    ],\n    \"PW\": [\n        \"h\",\n        \"H\"\n    ],\n    \"SO\": [\n        \"h\",\n        \"H\"\n    ],\n    \"TO\": [\n        \"h\",\n        \"H\"\n    ],\n    \"VU\": [\n        \"h\",\n        \"H\"\n    ],\n    \"WS\": [\n        \"h\",\n        \"H\"\n    ],\n    \"001\": [\n        \"H\",\n        \"h\"\n    ],\n    \"AL\": [\n        \"h\",\n        \"H\",\n        \"hB\"\n    ],\n    \"TD\": [\n        \"h\",\n        \"H\",\n        \"hB\"\n    ],\n    \"ca-ES\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"CF\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"CM\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"fr-CA\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"gl-ES\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"it-CH\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"it-IT\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"LU\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"NP\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"PF\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"SC\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"SM\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"SN\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"TF\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"VA\": [\n        \"H\",\n        \"h\",\n        \"hB\"\n    ],\n    \"CY\": [\n        \"h\",\n        \"H\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"GR\": [\n        \"h\",\n        \"H\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"CO\": [\n        \"h\",\n        \"H\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"DO\": [\n        \"h\",\n        \"H\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"KP\": [\n        \"h\",\n        \"H\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"KR\": [\n        \"h\",\n        \"H\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"NA\": [\n        \"h\",\n        \"H\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"PA\": [\n        \"h\",\n        \"H\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"PR\": [\n        \"h\",\n        \"H\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"VE\": [\n        \"h\",\n        \"H\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"AC\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"AI\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"BW\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"BZ\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"CC\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"CK\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"CX\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"DG\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"FK\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"GB\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"GG\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"GI\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"IE\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"IM\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"IO\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"JE\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"LT\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"MK\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"MN\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"MS\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"NF\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"NG\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"NR\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"NU\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"PN\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"SH\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"SX\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"TA\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"ZA\": [\n        \"H\",\n        \"h\",\n        \"hb\",\n        \"hB\"\n    ],\n    \"af-ZA\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"AR\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"CL\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"CR\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"CU\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"EA\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"es-BO\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"es-BR\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"es-EC\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"es-ES\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"es-GQ\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"es-PE\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"GT\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"HN\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"IC\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"KG\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"KM\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"LK\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"MA\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"MX\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"NI\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"PY\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"SV\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"UY\": [\n        \"H\",\n        \"h\",\n        \"hB\",\n        \"hb\"\n    ],\n    \"JP\": [\n        \"H\",\n        \"h\",\n        \"K\"\n    ],\n    \"AD\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"AM\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"AO\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"AT\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"AW\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"BE\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"BF\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"BJ\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"BL\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"BR\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"CG\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"CI\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"CV\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"DE\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"EE\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"FR\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"GA\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"GF\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"GN\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"GP\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"GW\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"HR\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"IL\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"IT\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"KZ\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"MC\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"MD\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"MF\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"MQ\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"MZ\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"NC\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"NL\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"PM\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"PT\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"RE\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"RO\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"SI\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"SR\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"ST\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"TG\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"TR\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"WF\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"YT\": [\n        \"H\",\n        \"hB\"\n    ],\n    \"BD\": [\n        \"h\",\n        \"hB\",\n        \"H\"\n    ],\n    \"PK\": [\n        \"h\",\n        \"hB\",\n        \"H\"\n    ],\n    \"AZ\": [\n        \"H\",\n        \"hB\",\n        \"h\"\n    ],\n    \"BA\": [\n        \"H\",\n        \"hB\",\n        \"h\"\n    ],\n    \"BG\": [\n        \"H\",\n        \"hB\",\n        \"h\"\n    ],\n    \"CH\": [\n        \"H\",\n        \"hB\",\n        \"h\"\n    ],\n    \"GE\": [\n        \"H\",\n        \"hB\",\n        \"h\"\n    ],\n    \"LI\": [\n        \"H\",\n        \"hB\",\n        \"h\"\n    ],\n    \"ME\": [\n        \"H\",\n        \"hB\",\n        \"h\"\n    ],\n    \"RS\": [\n        \"H\",\n        \"hB\",\n        \"h\"\n    ],\n    \"UA\": [\n        \"H\",\n        \"hB\",\n        \"h\"\n    ],\n    \"UZ\": [\n        \"H\",\n        \"hB\",\n        \"h\"\n    ],\n    \"XK\": [\n        \"H\",\n        \"hB\",\n        \"h\"\n    ],\n    \"AG\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"AU\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"BB\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"BM\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"BS\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"CA\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"DM\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"en-001\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"FJ\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"FM\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"GD\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"GM\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"GU\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"GY\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"JM\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"KI\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"KN\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"KY\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"LC\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"LR\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"MH\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"MP\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"MW\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"NZ\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"SB\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"SG\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"SL\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"SS\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"SZ\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"TC\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"TT\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"UM\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"US\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"VC\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"VG\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"VI\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"ZM\": [\n        \"h\",\n        \"hb\",\n        \"H\",\n        \"hB\"\n    ],\n    \"BO\": [\n        \"H\",\n        \"hB\",\n        \"h\",\n        \"hb\"\n    ],\n    \"EC\": [\n        \"H\",\n        \"hB\",\n        \"h\",\n        \"hb\"\n    ],\n    \"ES\": [\n        \"H\",\n        \"hB\",\n        \"h\",\n        \"hb\"\n    ],\n    \"GQ\": [\n        \"H\",\n        \"hB\",\n        \"h\",\n        \"hb\"\n    ],\n    \"PE\": [\n        \"H\",\n        \"hB\",\n        \"h\",\n        \"hb\"\n    ],\n    \"AE\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"ar-001\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"BH\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"DZ\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"EG\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"EH\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"HK\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"IQ\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"JO\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"KW\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"LB\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"LY\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"MO\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"MR\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"OM\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"PH\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"PS\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"QA\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"SA\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"SD\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"SY\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"TN\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"YE\": [\n        \"h\",\n        \"hB\",\n        \"hb\",\n        \"H\"\n    ],\n    \"AF\": [\n        \"H\",\n        \"hb\",\n        \"hB\",\n        \"h\"\n    ],\n    \"LA\": [\n        \"H\",\n        \"hb\",\n        \"hB\",\n        \"h\"\n    ],\n    \"CN\": [\n        \"H\",\n        \"hB\",\n        \"hb\",\n        \"h\"\n    ],\n    \"LV\": [\n        \"H\",\n        \"hB\",\n        \"hb\",\n        \"h\"\n    ],\n    \"TL\": [\n        \"H\",\n        \"hB\",\n        \"hb\",\n        \"h\"\n    ],\n    \"zu-ZA\": [\n        \"H\",\n        \"hB\",\n        \"hb\",\n        \"h\"\n    ],\n    \"CD\": [\n        \"hB\",\n        \"H\"\n    ],\n    \"IR\": [\n        \"hB\",\n        \"H\"\n    ],\n    \"hi-IN\": [\n        \"hB\",\n        \"h\",\n        \"H\"\n    ],\n    \"kn-IN\": [\n        \"hB\",\n        \"h\",\n        \"H\"\n    ],\n    \"ml-IN\": [\n        \"hB\",\n        \"h\",\n        \"H\"\n    ],\n    \"te-IN\": [\n        \"hB\",\n        \"h\",\n        \"H\"\n    ],\n    \"KH\": [\n        \"hB\",\n        \"h\",\n        \"H\",\n        \"hb\"\n    ],\n    \"ta-IN\": [\n        \"hB\",\n        \"h\",\n        \"hb\",\n        \"H\"\n    ],\n    \"BN\": [\n        \"hb\",\n        \"hB\",\n        \"h\",\n        \"H\"\n    ],\n    \"MY\": [\n        \"hb\",\n        \"hB\",\n        \"h\",\n        \"H\"\n    ],\n    \"ET\": [\n        \"hB\",\n        \"hb\",\n        \"h\",\n        \"H\"\n    ],\n    \"gu-IN\": [\n        \"hB\",\n        \"hb\",\n        \"h\",\n        \"H\"\n    ],\n    \"mr-IN\": [\n        \"hB\",\n        \"hb\",\n        \"h\",\n        \"H\"\n    ],\n    \"pa-IN\": [\n        \"hB\",\n        \"hb\",\n        \"h\",\n        \"H\"\n    ],\n    \"TW\": [\n        \"hB\",\n        \"hb\",\n        \"h\",\n        \"H\"\n    ],\n    \"KE\": [\n        \"hB\",\n        \"hb\",\n        \"H\",\n        \"h\"\n    ],\n    \"MM\": [\n        \"hB\",\n        \"hb\",\n        \"H\",\n        \"h\"\n    ],\n    \"TZ\": [\n        \"hB\",\n        \"hb\",\n        \"H\",\n        \"h\"\n    ],\n    \"UG\": [\n        \"hB\",\n        \"hb\",\n        \"H\",\n        \"h\"\n    ]\n};\n", "import { timeData } from './time-data.generated';\n/**\n * Returns the best matching date time pattern if a date time skeleton\n * pattern is provided with a locale. Follows the Unicode specification:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#table-mapping-requested-time-skeletons-to-patterns\n * @param skeleton date time skeleton pattern that possibly includes j, J or C\n * @param locale\n */\nexport function getBestPattern(skeleton, locale) {\n    var skeletonCopy = '';\n    for (var patternPos = 0; patternPos < skeleton.length; patternPos++) {\n        var patternChar = skeleton.charAt(patternPos);\n        if (patternChar === 'j') {\n            var extraLength = 0;\n            while (patternPos + 1 < skeleton.length &&\n                skeleton.charAt(patternPos + 1) === patternChar) {\n                extraLength++;\n                patternPos++;\n            }\n            var hourLen = 1 + (extraLength & 1);\n            var dayPeriodLen = extraLength < 2 ? 1 : 3 + (extraLength >> 1);\n            var dayPeriodChar = 'a';\n            var hourChar = getDefaultHourSymbolFromLocale(locale);\n            if (hourChar == 'H' || hourChar == 'k') {\n                dayPeriodLen = 0;\n            }\n            while (dayPeriodLen-- > 0) {\n                skeletonCopy += dayPeriodChar;\n            }\n            while (hourLen-- > 0) {\n                skeletonCopy = hourChar + skeletonCopy;\n            }\n        }\n        else if (patternChar === 'J') {\n            skeletonCopy += 'H';\n        }\n        else {\n            skeletonCopy += patternChar;\n        }\n    }\n    return skeletonCopy;\n}\n/**\n * Maps the [hour cycle type](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale/hourCycle)\n * of the given `locale` to the corresponding time pattern.\n * @param locale\n */\nfunction getDefaultHourSymbolFromLocale(locale) {\n    var hourCycle = locale.hourCycle;\n    if (hourCycle === undefined &&\n        // @ts-ignore hourCycle(s) is not identified yet\n        locale.hourCycles &&\n        // @ts-ignore\n        locale.hourCycles.length) {\n        // @ts-ignore\n        hourCycle = locale.hourCycles[0];\n    }\n    if (hourCycle) {\n        switch (hourCycle) {\n            case 'h24':\n                return 'k';\n            case 'h23':\n                return 'H';\n            case 'h12':\n                return 'h';\n            case 'h11':\n                return 'K';\n            default:\n                throw new Error('Invalid hourCycle');\n        }\n    }\n    // TODO: Once hourCycle is fully supported remove the following with data generation\n    var languageTag = locale.language;\n    var regionTag;\n    if (languageTag !== 'root') {\n        regionTag = locale.maximize().region;\n    }\n    var hourCycles = timeData[regionTag || ''] ||\n        timeData[languageTag || ''] ||\n        timeData[\"\".concat(languageTag, \"-001\")] ||\n        timeData['001'];\n    return hourCycles[0];\n}\n", "var _a;\nimport { __assign } from \"tslib\";\nimport { ErrorKind } from './error';\nimport { SKELETON_TYPE, TYPE, } from './types';\nimport { SPACE_SEPARATOR_REGEX } from './regex.generated';\nimport { parseNumberSkeleton, parseNumberSkeletonFromString, parseDateTimeSkeleton, } from '@formatjs/icu-skeleton-parser';\nimport { getBestPattern } from './date-time-pattern-generator';\nvar SPACE_SEPARATOR_START_REGEX = new RegExp(\"^\".concat(SPACE_SEPARATOR_REGEX.source, \"*\"));\nvar SPACE_SEPARATOR_END_REGEX = new RegExp(\"\".concat(SPACE_SEPARATOR_REGEX.source, \"*$\"));\nfunction createLocation(start, end) {\n    return { start: start, end: end };\n}\n// #region Ponyfills\n// Consolidate these variables up top for easier toggling during debugging\nvar hasNativeStartsWith = !!String.prototype.startsWith;\nvar hasNativeFromCodePoint = !!String.fromCodePoint;\nvar hasNativeFromEntries = !!Object.fromEntries;\nvar hasNativeCodePointAt = !!String.prototype.codePointAt;\nvar hasTrimStart = !!String.prototype.trimStart;\nvar hasTrimEnd = !!String.prototype.trimEnd;\nvar hasNativeIsSafeInteger = !!Number.isSafeInteger;\nvar isSafeInteger = hasNativeIsSafeInteger\n    ? Number.isSafeInteger\n    : function (n) {\n        return (typeof n === 'number' &&\n            isFinite(n) &&\n            Math.floor(n) === n &&\n            Math.abs(n) <= 0x1fffffffffffff);\n    };\n// IE11 does not support y and u.\nvar REGEX_SUPPORTS_U_AND_Y = true;\ntry {\n    var re = RE('([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)', 'yu');\n    /**\n     * legacy Edge or Xbox One browser\n     * Unicode flag support: supported\n     * Pattern_Syntax support: not supported\n     * See https://github.com/formatjs/formatjs/issues/2822\n     */\n    REGEX_SUPPORTS_U_AND_Y = ((_a = re.exec('a')) === null || _a === void 0 ? void 0 : _a[0]) === 'a';\n}\ncatch (_) {\n    REGEX_SUPPORTS_U_AND_Y = false;\n}\nvar startsWith = hasNativeStartsWith\n    ? // Native\n        function startsWith(s, search, position) {\n            return s.startsWith(search, position);\n        }\n    : // For IE11\n        function startsWith(s, search, position) {\n            return s.slice(position, position + search.length) === search;\n        };\nvar fromCodePoint = hasNativeFromCodePoint\n    ? String.fromCodePoint\n    : // IE11\n        function fromCodePoint() {\n            var codePoints = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                codePoints[_i] = arguments[_i];\n            }\n            var elements = '';\n            var length = codePoints.length;\n            var i = 0;\n            var code;\n            while (length > i) {\n                code = codePoints[i++];\n                if (code > 0x10ffff)\n                    throw RangeError(code + ' is not a valid code point');\n                elements +=\n                    code < 0x10000\n                        ? String.fromCharCode(code)\n                        : String.fromCharCode(((code -= 0x10000) >> 10) + 0xd800, (code % 0x400) + 0xdc00);\n            }\n            return elements;\n        };\nvar fromEntries = \n// native\nhasNativeFromEntries\n    ? Object.fromEntries\n    : // Ponyfill\n        function fromEntries(entries) {\n            var obj = {};\n            for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n                var _a = entries_1[_i], k = _a[0], v = _a[1];\n                obj[k] = v;\n            }\n            return obj;\n        };\nvar codePointAt = hasNativeCodePointAt\n    ? // Native\n        function codePointAt(s, index) {\n            return s.codePointAt(index);\n        }\n    : // IE 11\n        function codePointAt(s, index) {\n            var size = s.length;\n            if (index < 0 || index >= size) {\n                return undefined;\n            }\n            var first = s.charCodeAt(index);\n            var second;\n            return first < 0xd800 ||\n                first > 0xdbff ||\n                index + 1 === size ||\n                (second = s.charCodeAt(index + 1)) < 0xdc00 ||\n                second > 0xdfff\n                ? first\n                : ((first - 0xd800) << 10) + (second - 0xdc00) + 0x10000;\n        };\nvar trimStart = hasTrimStart\n    ? // Native\n        function trimStart(s) {\n            return s.trimStart();\n        }\n    : // Ponyfill\n        function trimStart(s) {\n            return s.replace(SPACE_SEPARATOR_START_REGEX, '');\n        };\nvar trimEnd = hasTrimEnd\n    ? // Native\n        function trimEnd(s) {\n            return s.trimEnd();\n        }\n    : // Ponyfill\n        function trimEnd(s) {\n            return s.replace(SPACE_SEPARATOR_END_REGEX, '');\n        };\n// Prevent minifier to translate new RegExp to literal form that might cause syntax error on IE11.\nfunction RE(s, flag) {\n    return new RegExp(s, flag);\n}\n// #endregion\nvar matchIdentifierAtIndex;\nif (REGEX_SUPPORTS_U_AND_Y) {\n    // Native\n    var IDENTIFIER_PREFIX_RE_1 = RE('([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)', 'yu');\n    matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {\n        var _a;\n        IDENTIFIER_PREFIX_RE_1.lastIndex = index;\n        var match = IDENTIFIER_PREFIX_RE_1.exec(s);\n        return (_a = match[1]) !== null && _a !== void 0 ? _a : '';\n    };\n}\nelse {\n    // IE11\n    matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {\n        var match = [];\n        while (true) {\n            var c = codePointAt(s, index);\n            if (c === undefined || _isWhiteSpace(c) || _isPatternSyntax(c)) {\n                break;\n            }\n            match.push(c);\n            index += c >= 0x10000 ? 2 : 1;\n        }\n        return fromCodePoint.apply(void 0, match);\n    };\n}\nvar Parser = /** @class */ (function () {\n    function Parser(message, options) {\n        if (options === void 0) { options = {}; }\n        this.message = message;\n        this.position = { offset: 0, line: 1, column: 1 };\n        this.ignoreTag = !!options.ignoreTag;\n        this.locale = options.locale;\n        this.requiresOtherClause = !!options.requiresOtherClause;\n        this.shouldParseSkeletons = !!options.shouldParseSkeletons;\n    }\n    Parser.prototype.parse = function () {\n        if (this.offset() !== 0) {\n            throw Error('parser can only be used once');\n        }\n        return this.parseMessage(0, '', false);\n    };\n    Parser.prototype.parseMessage = function (nestingLevel, parentArgType, expectingCloseTag) {\n        var elements = [];\n        while (!this.isEOF()) {\n            var char = this.char();\n            if (char === 123 /* `{` */) {\n                var result = this.parseArgument(nestingLevel, expectingCloseTag);\n                if (result.err) {\n                    return result;\n                }\n                elements.push(result.val);\n            }\n            else if (char === 125 /* `}` */ && nestingLevel > 0) {\n                break;\n            }\n            else if (char === 35 /* `#` */ &&\n                (parentArgType === 'plural' || parentArgType === 'selectordinal')) {\n                var position = this.clonePosition();\n                this.bump();\n                elements.push({\n                    type: TYPE.pound,\n                    location: createLocation(position, this.clonePosition()),\n                });\n            }\n            else if (char === 60 /* `<` */ &&\n                !this.ignoreTag &&\n                this.peek() === 47 // char code for '/'\n            ) {\n                if (expectingCloseTag) {\n                    break;\n                }\n                else {\n                    return this.error(ErrorKind.UNMATCHED_CLOSING_TAG, createLocation(this.clonePosition(), this.clonePosition()));\n                }\n            }\n            else if (char === 60 /* `<` */ &&\n                !this.ignoreTag &&\n                _isAlpha(this.peek() || 0)) {\n                var result = this.parseTag(nestingLevel, parentArgType);\n                if (result.err) {\n                    return result;\n                }\n                elements.push(result.val);\n            }\n            else {\n                var result = this.parseLiteral(nestingLevel, parentArgType);\n                if (result.err) {\n                    return result;\n                }\n                elements.push(result.val);\n            }\n        }\n        return { val: elements, err: null };\n    };\n    /**\n     * A tag name must start with an ASCII lower/upper case letter. The grammar is based on the\n     * [custom element name][] except that a dash is NOT always mandatory and uppercase letters\n     * are accepted:\n     *\n     * ```\n     * tag ::= \"<\" tagName (whitespace)* \"/>\" | \"<\" tagName (whitespace)* \">\" message \"</\" tagName (whitespace)* \">\"\n     * tagName ::= [a-z] (PENChar)*\n     * PENChar ::=\n     *     \"-\" | \".\" | [0-9] | \"_\" | [a-z] | [A-Z] | #xB7 | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x37D] |\n     *     [#x37F-#x1FFF] | [#x200C-#x200D] | [#x203F-#x2040] | [#x2070-#x218F] | [#x2C00-#x2FEF] |\n     *     [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n     * ```\n     *\n     * [custom element name]: https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\n     * NOTE: We're a bit more lax here since HTML technically does not allow uppercase HTML element but we do\n     * since other tag-based engines like React allow it\n     */\n    Parser.prototype.parseTag = function (nestingLevel, parentArgType) {\n        var startPosition = this.clonePosition();\n        this.bump(); // `<`\n        var tagName = this.parseTagName();\n        this.bumpSpace();\n        if (this.bumpIf('/>')) {\n            // Self closing tag\n            return {\n                val: {\n                    type: TYPE.literal,\n                    value: \"<\".concat(tagName, \"/>\"),\n                    location: createLocation(startPosition, this.clonePosition()),\n                },\n                err: null,\n            };\n        }\n        else if (this.bumpIf('>')) {\n            var childrenResult = this.parseMessage(nestingLevel + 1, parentArgType, true);\n            if (childrenResult.err) {\n                return childrenResult;\n            }\n            var children = childrenResult.val;\n            // Expecting a close tag\n            var endTagStartPosition = this.clonePosition();\n            if (this.bumpIf('</')) {\n                if (this.isEOF() || !_isAlpha(this.char())) {\n                    return this.error(ErrorKind.INVALID_TAG, createLocation(endTagStartPosition, this.clonePosition()));\n                }\n                var closingTagNameStartPosition = this.clonePosition();\n                var closingTagName = this.parseTagName();\n                if (tagName !== closingTagName) {\n                    return this.error(ErrorKind.UNMATCHED_CLOSING_TAG, createLocation(closingTagNameStartPosition, this.clonePosition()));\n                }\n                this.bumpSpace();\n                if (!this.bumpIf('>')) {\n                    return this.error(ErrorKind.INVALID_TAG, createLocation(endTagStartPosition, this.clonePosition()));\n                }\n                return {\n                    val: {\n                        type: TYPE.tag,\n                        value: tagName,\n                        children: children,\n                        location: createLocation(startPosition, this.clonePosition()),\n                    },\n                    err: null,\n                };\n            }\n            else {\n                return this.error(ErrorKind.UNCLOSED_TAG, createLocation(startPosition, this.clonePosition()));\n            }\n        }\n        else {\n            return this.error(ErrorKind.INVALID_TAG, createLocation(startPosition, this.clonePosition()));\n        }\n    };\n    /**\n     * This method assumes that the caller has peeked ahead for the first tag character.\n     */\n    Parser.prototype.parseTagName = function () {\n        var startOffset = this.offset();\n        this.bump(); // the first tag name character\n        while (!this.isEOF() && _isPotentialElementNameChar(this.char())) {\n            this.bump();\n        }\n        return this.message.slice(startOffset, this.offset());\n    };\n    Parser.prototype.parseLiteral = function (nestingLevel, parentArgType) {\n        var start = this.clonePosition();\n        var value = '';\n        while (true) {\n            var parseQuoteResult = this.tryParseQuote(parentArgType);\n            if (parseQuoteResult) {\n                value += parseQuoteResult;\n                continue;\n            }\n            var parseUnquotedResult = this.tryParseUnquoted(nestingLevel, parentArgType);\n            if (parseUnquotedResult) {\n                value += parseUnquotedResult;\n                continue;\n            }\n            var parseLeftAngleResult = this.tryParseLeftAngleBracket();\n            if (parseLeftAngleResult) {\n                value += parseLeftAngleResult;\n                continue;\n            }\n            break;\n        }\n        var location = createLocation(start, this.clonePosition());\n        return {\n            val: { type: TYPE.literal, value: value, location: location },\n            err: null,\n        };\n    };\n    Parser.prototype.tryParseLeftAngleBracket = function () {\n        if (!this.isEOF() &&\n            this.char() === 60 /* `<` */ &&\n            (this.ignoreTag ||\n                // If at the opening tag or closing tag position, bail.\n                !_isAlphaOrSlash(this.peek() || 0))) {\n            this.bump(); // `<`\n            return '<';\n        }\n        return null;\n    };\n    /**\n     * Starting with ICU 4.8, an ASCII apostrophe only starts quoted text if it immediately precedes\n     * a character that requires quoting (that is, \"only where needed\"), and works the same in\n     * nested messages as on the top level of the pattern. The new behavior is otherwise compatible.\n     */\n    Parser.prototype.tryParseQuote = function (parentArgType) {\n        if (this.isEOF() || this.char() !== 39 /* `'` */) {\n            return null;\n        }\n        // Parse escaped char following the apostrophe, or early return if there is no escaped char.\n        // Check if is valid escaped character\n        switch (this.peek()) {\n            case 39 /* `'` */:\n                // double quote, should return as a single quote.\n                this.bump();\n                this.bump();\n                return \"'\";\n            // '{', '<', '>', '}'\n            case 123:\n            case 60:\n            case 62:\n            case 125:\n                break;\n            case 35: // '#'\n                if (parentArgType === 'plural' || parentArgType === 'selectordinal') {\n                    break;\n                }\n                return null;\n            default:\n                return null;\n        }\n        this.bump(); // apostrophe\n        var codePoints = [this.char()]; // escaped char\n        this.bump();\n        // read chars until the optional closing apostrophe is found\n        while (!this.isEOF()) {\n            var ch = this.char();\n            if (ch === 39 /* `'` */) {\n                if (this.peek() === 39 /* `'` */) {\n                    codePoints.push(39);\n                    // Bump one more time because we need to skip 2 characters.\n                    this.bump();\n                }\n                else {\n                    // Optional closing apostrophe.\n                    this.bump();\n                    break;\n                }\n            }\n            else {\n                codePoints.push(ch);\n            }\n            this.bump();\n        }\n        return fromCodePoint.apply(void 0, codePoints);\n    };\n    Parser.prototype.tryParseUnquoted = function (nestingLevel, parentArgType) {\n        if (this.isEOF()) {\n            return null;\n        }\n        var ch = this.char();\n        if (ch === 60 /* `<` */ ||\n            ch === 123 /* `{` */ ||\n            (ch === 35 /* `#` */ &&\n                (parentArgType === 'plural' || parentArgType === 'selectordinal')) ||\n            (ch === 125 /* `}` */ && nestingLevel > 0)) {\n            return null;\n        }\n        else {\n            this.bump();\n            return fromCodePoint(ch);\n        }\n    };\n    Parser.prototype.parseArgument = function (nestingLevel, expectingCloseTag) {\n        var openingBracePosition = this.clonePosition();\n        this.bump(); // `{`\n        this.bumpSpace();\n        if (this.isEOF()) {\n            return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n        }\n        if (this.char() === 125 /* `}` */) {\n            this.bump();\n            return this.error(ErrorKind.EMPTY_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n        }\n        // argument name\n        var value = this.parseIdentifierIfPossible().value;\n        if (!value) {\n            return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n        }\n        this.bumpSpace();\n        if (this.isEOF()) {\n            return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n        }\n        switch (this.char()) {\n            // Simple argument: `{name}`\n            case 125 /* `}` */: {\n                this.bump(); // `}`\n                return {\n                    val: {\n                        type: TYPE.argument,\n                        // value does not include the opening and closing braces.\n                        value: value,\n                        location: createLocation(openingBracePosition, this.clonePosition()),\n                    },\n                    err: null,\n                };\n            }\n            // Argument with options: `{name, format, ...}`\n            case 44 /* `,` */: {\n                this.bump(); // `,`\n                this.bumpSpace();\n                if (this.isEOF()) {\n                    return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n                }\n                return this.parseArgumentOptions(nestingLevel, expectingCloseTag, value, openingBracePosition);\n            }\n            default:\n                return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n        }\n    };\n    /**\n     * Advance the parser until the end of the identifier, if it is currently on\n     * an identifier character. Return an empty string otherwise.\n     */\n    Parser.prototype.parseIdentifierIfPossible = function () {\n        var startingPosition = this.clonePosition();\n        var startOffset = this.offset();\n        var value = matchIdentifierAtIndex(this.message, startOffset);\n        var endOffset = startOffset + value.length;\n        this.bumpTo(endOffset);\n        var endPosition = this.clonePosition();\n        var location = createLocation(startingPosition, endPosition);\n        return { value: value, location: location };\n    };\n    Parser.prototype.parseArgumentOptions = function (nestingLevel, expectingCloseTag, value, openingBracePosition) {\n        var _a;\n        // Parse this range:\n        // {name, type, style}\n        //        ^---^\n        var typeStartPosition = this.clonePosition();\n        var argType = this.parseIdentifierIfPossible().value;\n        var typeEndPosition = this.clonePosition();\n        switch (argType) {\n            case '':\n                // Expecting a style string number, date, time, plural, selectordinal, or select.\n                return this.error(ErrorKind.EXPECT_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n            case 'number':\n            case 'date':\n            case 'time': {\n                // Parse this range:\n                // {name, number, style}\n                //              ^-------^\n                this.bumpSpace();\n                var styleAndLocation = null;\n                if (this.bumpIf(',')) {\n                    this.bumpSpace();\n                    var styleStartPosition = this.clonePosition();\n                    var result = this.parseSimpleArgStyleIfPossible();\n                    if (result.err) {\n                        return result;\n                    }\n                    var style = trimEnd(result.val);\n                    if (style.length === 0) {\n                        return this.error(ErrorKind.EXPECT_ARGUMENT_STYLE, createLocation(this.clonePosition(), this.clonePosition()));\n                    }\n                    var styleLocation = createLocation(styleStartPosition, this.clonePosition());\n                    styleAndLocation = { style: style, styleLocation: styleLocation };\n                }\n                var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n                if (argCloseResult.err) {\n                    return argCloseResult;\n                }\n                var location_1 = createLocation(openingBracePosition, this.clonePosition());\n                // Extract style or skeleton\n                if (styleAndLocation && startsWith(styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style, '::', 0)) {\n                    // Skeleton starts with `::`.\n                    var skeleton = trimStart(styleAndLocation.style.slice(2));\n                    if (argType === 'number') {\n                        var result = this.parseNumberSkeletonFromString(skeleton, styleAndLocation.styleLocation);\n                        if (result.err) {\n                            return result;\n                        }\n                        return {\n                            val: { type: TYPE.number, value: value, location: location_1, style: result.val },\n                            err: null,\n                        };\n                    }\n                    else {\n                        if (skeleton.length === 0) {\n                            return this.error(ErrorKind.EXPECT_DATE_TIME_SKELETON, location_1);\n                        }\n                        var dateTimePattern = skeleton;\n                        // Get \"best match\" pattern only if locale is passed, if not, let it\n                        // pass as-is where `parseDateTimeSkeleton()` will throw an error\n                        // for unsupported patterns.\n                        if (this.locale) {\n                            dateTimePattern = getBestPattern(skeleton, this.locale);\n                        }\n                        var style = {\n                            type: SKELETON_TYPE.dateTime,\n                            pattern: dateTimePattern,\n                            location: styleAndLocation.styleLocation,\n                            parsedOptions: this.shouldParseSkeletons\n                                ? parseDateTimeSkeleton(dateTimePattern)\n                                : {},\n                        };\n                        var type = argType === 'date' ? TYPE.date : TYPE.time;\n                        return {\n                            val: { type: type, value: value, location: location_1, style: style },\n                            err: null,\n                        };\n                    }\n                }\n                // Regular style or no style.\n                return {\n                    val: {\n                        type: argType === 'number'\n                            ? TYPE.number\n                            : argType === 'date'\n                                ? TYPE.date\n                                : TYPE.time,\n                        value: value,\n                        location: location_1,\n                        style: (_a = styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style) !== null && _a !== void 0 ? _a : null,\n                    },\n                    err: null,\n                };\n            }\n            case 'plural':\n            case 'selectordinal':\n            case 'select': {\n                // Parse this range:\n                // {name, plural, options}\n                //              ^---------^\n                var typeEndPosition_1 = this.clonePosition();\n                this.bumpSpace();\n                if (!this.bumpIf(',')) {\n                    return this.error(ErrorKind.EXPECT_SELECT_ARGUMENT_OPTIONS, createLocation(typeEndPosition_1, __assign({}, typeEndPosition_1)));\n                }\n                this.bumpSpace();\n                // Parse offset:\n                // {name, plural, offset:1, options}\n                //                ^-----^\n                //\n                // or the first option:\n                //\n                // {name, plural, one {...} other {...}}\n                //                ^--^\n                var identifierAndLocation = this.parseIdentifierIfPossible();\n                var pluralOffset = 0;\n                if (argType !== 'select' && identifierAndLocation.value === 'offset') {\n                    if (!this.bumpIf(':')) {\n                        return this.error(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, createLocation(this.clonePosition(), this.clonePosition()));\n                    }\n                    this.bumpSpace();\n                    var result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, ErrorKind.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE);\n                    if (result.err) {\n                        return result;\n                    }\n                    // Parse another identifier for option parsing\n                    this.bumpSpace();\n                    identifierAndLocation = this.parseIdentifierIfPossible();\n                    pluralOffset = result.val;\n                }\n                var optionsResult = this.tryParsePluralOrSelectOptions(nestingLevel, argType, expectingCloseTag, identifierAndLocation);\n                if (optionsResult.err) {\n                    return optionsResult;\n                }\n                var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n                if (argCloseResult.err) {\n                    return argCloseResult;\n                }\n                var location_2 = createLocation(openingBracePosition, this.clonePosition());\n                if (argType === 'select') {\n                    return {\n                        val: {\n                            type: TYPE.select,\n                            value: value,\n                            options: fromEntries(optionsResult.val),\n                            location: location_2,\n                        },\n                        err: null,\n                    };\n                }\n                else {\n                    return {\n                        val: {\n                            type: TYPE.plural,\n                            value: value,\n                            options: fromEntries(optionsResult.val),\n                            offset: pluralOffset,\n                            pluralType: argType === 'plural' ? 'cardinal' : 'ordinal',\n                            location: location_2,\n                        },\n                        err: null,\n                    };\n                }\n            }\n            default:\n                return this.error(ErrorKind.INVALID_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n        }\n    };\n    Parser.prototype.tryParseArgumentClose = function (openingBracePosition) {\n        // Parse: {value, number, ::currency/GBP }\n        //\n        if (this.isEOF() || this.char() !== 125 /* `}` */) {\n            return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n        }\n        this.bump(); // `}`\n        return { val: true, err: null };\n    };\n    /**\n     * See: https://github.com/unicode-org/icu/blob/af7ed1f6d2298013dc303628438ec4abe1f16479/icu4c/source/common/messagepattern.cpp#L659\n     */\n    Parser.prototype.parseSimpleArgStyleIfPossible = function () {\n        var nestedBraces = 0;\n        var startPosition = this.clonePosition();\n        while (!this.isEOF()) {\n            var ch = this.char();\n            switch (ch) {\n                case 39 /* `'` */: {\n                    // Treat apostrophe as quoting but include it in the style part.\n                    // Find the end of the quoted literal text.\n                    this.bump();\n                    var apostrophePosition = this.clonePosition();\n                    if (!this.bumpUntil(\"'\")) {\n                        return this.error(ErrorKind.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE, createLocation(apostrophePosition, this.clonePosition()));\n                    }\n                    this.bump();\n                    break;\n                }\n                case 123 /* `{` */: {\n                    nestedBraces += 1;\n                    this.bump();\n                    break;\n                }\n                case 125 /* `}` */: {\n                    if (nestedBraces > 0) {\n                        nestedBraces -= 1;\n                    }\n                    else {\n                        return {\n                            val: this.message.slice(startPosition.offset, this.offset()),\n                            err: null,\n                        };\n                    }\n                    break;\n                }\n                default:\n                    this.bump();\n                    break;\n            }\n        }\n        return {\n            val: this.message.slice(startPosition.offset, this.offset()),\n            err: null,\n        };\n    };\n    Parser.prototype.parseNumberSkeletonFromString = function (skeleton, location) {\n        var tokens = [];\n        try {\n            tokens = parseNumberSkeletonFromString(skeleton);\n        }\n        catch (e) {\n            return this.error(ErrorKind.INVALID_NUMBER_SKELETON, location);\n        }\n        return {\n            val: {\n                type: SKELETON_TYPE.number,\n                tokens: tokens,\n                location: location,\n                parsedOptions: this.shouldParseSkeletons\n                    ? parseNumberSkeleton(tokens)\n                    : {},\n            },\n            err: null,\n        };\n    };\n    /**\n     * @param nesting_level The current nesting level of messages.\n     *     This can be positive when parsing message fragment in select or plural argument options.\n     * @param parent_arg_type The parent argument's type.\n     * @param parsed_first_identifier If provided, this is the first identifier-like selector of\n     *     the argument. It is a by-product of a previous parsing attempt.\n     * @param expecting_close_tag If true, this message is directly or indirectly nested inside\n     *     between a pair of opening and closing tags. The nested message will not parse beyond\n     *     the closing tag boundary.\n     */\n    Parser.prototype.tryParsePluralOrSelectOptions = function (nestingLevel, parentArgType, expectCloseTag, parsedFirstIdentifier) {\n        var _a;\n        var hasOtherClause = false;\n        var options = [];\n        var parsedSelectors = new Set();\n        var selector = parsedFirstIdentifier.value, selectorLocation = parsedFirstIdentifier.location;\n        // Parse:\n        // one {one apple}\n        // ^--^\n        while (true) {\n            if (selector.length === 0) {\n                var startPosition = this.clonePosition();\n                if (parentArgType !== 'select' && this.bumpIf('=')) {\n                    // Try parse `={number}` selector\n                    var result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, ErrorKind.INVALID_PLURAL_ARGUMENT_SELECTOR);\n                    if (result.err) {\n                        return result;\n                    }\n                    selectorLocation = createLocation(startPosition, this.clonePosition());\n                    selector = this.message.slice(startPosition.offset, this.offset());\n                }\n                else {\n                    break;\n                }\n            }\n            // Duplicate selector clauses\n            if (parsedSelectors.has(selector)) {\n                return this.error(parentArgType === 'select'\n                    ? ErrorKind.DUPLICATE_SELECT_ARGUMENT_SELECTOR\n                    : ErrorKind.DUPLICATE_PLURAL_ARGUMENT_SELECTOR, selectorLocation);\n            }\n            if (selector === 'other') {\n                hasOtherClause = true;\n            }\n            // Parse:\n            // one {one apple}\n            //     ^----------^\n            this.bumpSpace();\n            var openingBracePosition = this.clonePosition();\n            if (!this.bumpIf('{')) {\n                return this.error(parentArgType === 'select'\n                    ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\n                    : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT, createLocation(this.clonePosition(), this.clonePosition()));\n            }\n            var fragmentResult = this.parseMessage(nestingLevel + 1, parentArgType, expectCloseTag);\n            if (fragmentResult.err) {\n                return fragmentResult;\n            }\n            var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n            if (argCloseResult.err) {\n                return argCloseResult;\n            }\n            options.push([\n                selector,\n                {\n                    value: fragmentResult.val,\n                    location: createLocation(openingBracePosition, this.clonePosition()),\n                },\n            ]);\n            // Keep track of the existing selectors\n            parsedSelectors.add(selector);\n            // Prep next selector clause.\n            this.bumpSpace();\n            (_a = this.parseIdentifierIfPossible(), selector = _a.value, selectorLocation = _a.location);\n        }\n        if (options.length === 0) {\n            return this.error(parentArgType === 'select'\n                ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR\n                : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, createLocation(this.clonePosition(), this.clonePosition()));\n        }\n        if (this.requiresOtherClause && !hasOtherClause) {\n            return this.error(ErrorKind.MISSING_OTHER_CLAUSE, createLocation(this.clonePosition(), this.clonePosition()));\n        }\n        return { val: options, err: null };\n    };\n    Parser.prototype.tryParseDecimalInteger = function (expectNumberError, invalidNumberError) {\n        var sign = 1;\n        var startingPosition = this.clonePosition();\n        if (this.bumpIf('+')) {\n        }\n        else if (this.bumpIf('-')) {\n            sign = -1;\n        }\n        var hasDigits = false;\n        var decimal = 0;\n        while (!this.isEOF()) {\n            var ch = this.char();\n            if (ch >= 48 /* `0` */ && ch <= 57 /* `9` */) {\n                hasDigits = true;\n                decimal = decimal * 10 + (ch - 48);\n                this.bump();\n            }\n            else {\n                break;\n            }\n        }\n        var location = createLocation(startingPosition, this.clonePosition());\n        if (!hasDigits) {\n            return this.error(expectNumberError, location);\n        }\n        decimal *= sign;\n        if (!isSafeInteger(decimal)) {\n            return this.error(invalidNumberError, location);\n        }\n        return { val: decimal, err: null };\n    };\n    Parser.prototype.offset = function () {\n        return this.position.offset;\n    };\n    Parser.prototype.isEOF = function () {\n        return this.offset() === this.message.length;\n    };\n    Parser.prototype.clonePosition = function () {\n        // This is much faster than `Object.assign` or spread.\n        return {\n            offset: this.position.offset,\n            line: this.position.line,\n            column: this.position.column,\n        };\n    };\n    /**\n     * Return the code point at the current position of the parser.\n     * Throws if the index is out of bound.\n     */\n    Parser.prototype.char = function () {\n        var offset = this.position.offset;\n        if (offset >= this.message.length) {\n            throw Error('out of bound');\n        }\n        var code = codePointAt(this.message, offset);\n        if (code === undefined) {\n            throw Error(\"Offset \".concat(offset, \" is at invalid UTF-16 code unit boundary\"));\n        }\n        return code;\n    };\n    Parser.prototype.error = function (kind, location) {\n        return {\n            val: null,\n            err: {\n                kind: kind,\n                message: this.message,\n                location: location,\n            },\n        };\n    };\n    /** Bump the parser to the next UTF-16 code unit. */\n    Parser.prototype.bump = function () {\n        if (this.isEOF()) {\n            return;\n        }\n        var code = this.char();\n        if (code === 10 /* '\\n' */) {\n            this.position.line += 1;\n            this.position.column = 1;\n            this.position.offset += 1;\n        }\n        else {\n            this.position.column += 1;\n            // 0 ~ 0x10000 -> unicode BMP, otherwise skip the surrogate pair.\n            this.position.offset += code < 0x10000 ? 1 : 2;\n        }\n    };\n    /**\n     * If the substring starting at the current position of the parser has\n     * the given prefix, then bump the parser to the character immediately\n     * following the prefix and return true. Otherwise, don't bump the parser\n     * and return false.\n     */\n    Parser.prototype.bumpIf = function (prefix) {\n        if (startsWith(this.message, prefix, this.offset())) {\n            for (var i = 0; i < prefix.length; i++) {\n                this.bump();\n            }\n            return true;\n        }\n        return false;\n    };\n    /**\n     * Bump the parser until the pattern character is found and return `true`.\n     * Otherwise bump to the end of the file and return `false`.\n     */\n    Parser.prototype.bumpUntil = function (pattern) {\n        var currentOffset = this.offset();\n        var index = this.message.indexOf(pattern, currentOffset);\n        if (index >= 0) {\n            this.bumpTo(index);\n            return true;\n        }\n        else {\n            this.bumpTo(this.message.length);\n            return false;\n        }\n    };\n    /**\n     * Bump the parser to the target offset.\n     * If target offset is beyond the end of the input, bump the parser to the end of the input.\n     */\n    Parser.prototype.bumpTo = function (targetOffset) {\n        if (this.offset() > targetOffset) {\n            throw Error(\"targetOffset \".concat(targetOffset, \" must be greater than or equal to the current offset \").concat(this.offset()));\n        }\n        targetOffset = Math.min(targetOffset, this.message.length);\n        while (true) {\n            var offset = this.offset();\n            if (offset === targetOffset) {\n                break;\n            }\n            if (offset > targetOffset) {\n                throw Error(\"targetOffset \".concat(targetOffset, \" is at invalid UTF-16 code unit boundary\"));\n            }\n            this.bump();\n            if (this.isEOF()) {\n                break;\n            }\n        }\n    };\n    /** advance the parser through all whitespace to the next non-whitespace code unit. */\n    Parser.prototype.bumpSpace = function () {\n        while (!this.isEOF() && _isWhiteSpace(this.char())) {\n            this.bump();\n        }\n    };\n    /**\n     * Peek at the *next* Unicode codepoint in the input without advancing the parser.\n     * If the input has been exhausted, then this returns null.\n     */\n    Parser.prototype.peek = function () {\n        if (this.isEOF()) {\n            return null;\n        }\n        var code = this.char();\n        var offset = this.offset();\n        var nextCode = this.message.charCodeAt(offset + (code >= 0x10000 ? 2 : 1));\n        return nextCode !== null && nextCode !== void 0 ? nextCode : null;\n    };\n    return Parser;\n}());\nexport { Parser };\n/**\n * This check if codepoint is alphabet (lower & uppercase)\n * @param codepoint\n * @returns\n */\nfunction _isAlpha(codepoint) {\n    return ((codepoint >= 97 && codepoint <= 122) ||\n        (codepoint >= 65 && codepoint <= 90));\n}\nfunction _isAlphaOrSlash(codepoint) {\n    return _isAlpha(codepoint) || codepoint === 47; /* '/' */\n}\n/** See `parseTag` function docs. */\nfunction _isPotentialElementNameChar(c) {\n    return (c === 45 /* '-' */ ||\n        c === 46 /* '.' */ ||\n        (c >= 48 && c <= 57) /* 0..9 */ ||\n        c === 95 /* '_' */ ||\n        (c >= 97 && c <= 122) /** a..z */ ||\n        (c >= 65 && c <= 90) /* A..Z */ ||\n        c == 0xb7 ||\n        (c >= 0xc0 && c <= 0xd6) ||\n        (c >= 0xd8 && c <= 0xf6) ||\n        (c >= 0xf8 && c <= 0x37d) ||\n        (c >= 0x37f && c <= 0x1fff) ||\n        (c >= 0x200c && c <= 0x200d) ||\n        (c >= 0x203f && c <= 0x2040) ||\n        (c >= 0x2070 && c <= 0x218f) ||\n        (c >= 0x2c00 && c <= 0x2fef) ||\n        (c >= 0x3001 && c <= 0xd7ff) ||\n        (c >= 0xf900 && c <= 0xfdcf) ||\n        (c >= 0xfdf0 && c <= 0xfffd) ||\n        (c >= 0x10000 && c <= 0xeffff));\n}\n/**\n * Code point equivalent of regex `\\p{White_Space}`.\n * From: https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n */\nfunction _isWhiteSpace(c) {\n    return ((c >= 0x0009 && c <= 0x000d) ||\n        c === 0x0020 ||\n        c === 0x0085 ||\n        (c >= 0x200e && c <= 0x200f) ||\n        c === 0x2028 ||\n        c === 0x2029);\n}\n/**\n * Code point equivalent of regex `\\p{Pattern_Syntax}`.\n * See https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n */\nfunction _isPatternSyntax(c) {\n    return ((c >= 0x0021 && c <= 0x0023) ||\n        c === 0x0024 ||\n        (c >= 0x0025 && c <= 0x0027) ||\n        c === 0x0028 ||\n        c === 0x0029 ||\n        c === 0x002a ||\n        c === 0x002b ||\n        c === 0x002c ||\n        c === 0x002d ||\n        (c >= 0x002e && c <= 0x002f) ||\n        (c >= 0x003a && c <= 0x003b) ||\n        (c >= 0x003c && c <= 0x003e) ||\n        (c >= 0x003f && c <= 0x0040) ||\n        c === 0x005b ||\n        c === 0x005c ||\n        c === 0x005d ||\n        c === 0x005e ||\n        c === 0x0060 ||\n        c === 0x007b ||\n        c === 0x007c ||\n        c === 0x007d ||\n        c === 0x007e ||\n        c === 0x00a1 ||\n        (c >= 0x00a2 && c <= 0x00a5) ||\n        c === 0x00a6 ||\n        c === 0x00a7 ||\n        c === 0x00a9 ||\n        c === 0x00ab ||\n        c === 0x00ac ||\n        c === 0x00ae ||\n        c === 0x00b0 ||\n        c === 0x00b1 ||\n        c === 0x00b6 ||\n        c === 0x00bb ||\n        c === 0x00bf ||\n        c === 0x00d7 ||\n        c === 0x00f7 ||\n        (c >= 0x2010 && c <= 0x2015) ||\n        (c >= 0x2016 && c <= 0x2017) ||\n        c === 0x2018 ||\n        c === 0x2019 ||\n        c === 0x201a ||\n        (c >= 0x201b && c <= 0x201c) ||\n        c === 0x201d ||\n        c === 0x201e ||\n        c === 0x201f ||\n        (c >= 0x2020 && c <= 0x2027) ||\n        (c >= 0x2030 && c <= 0x2038) ||\n        c === 0x2039 ||\n        c === 0x203a ||\n        (c >= 0x203b && c <= 0x203e) ||\n        (c >= 0x2041 && c <= 0x2043) ||\n        c === 0x2044 ||\n        c === 0x2045 ||\n        c === 0x2046 ||\n        (c >= 0x2047 && c <= 0x2051) ||\n        c === 0x2052 ||\n        c === 0x2053 ||\n        (c >= 0x2055 && c <= 0x205e) ||\n        (c >= 0x2190 && c <= 0x2194) ||\n        (c >= 0x2195 && c <= 0x2199) ||\n        (c >= 0x219a && c <= 0x219b) ||\n        (c >= 0x219c && c <= 0x219f) ||\n        c === 0x21a0 ||\n        (c >= 0x21a1 && c <= 0x21a2) ||\n        c === 0x21a3 ||\n        (c >= 0x21a4 && c <= 0x21a5) ||\n        c === 0x21a6 ||\n        (c >= 0x21a7 && c <= 0x21ad) ||\n        c === 0x21ae ||\n        (c >= 0x21af && c <= 0x21cd) ||\n        (c >= 0x21ce && c <= 0x21cf) ||\n        (c >= 0x21d0 && c <= 0x21d1) ||\n        c === 0x21d2 ||\n        c === 0x21d3 ||\n        c === 0x21d4 ||\n        (c >= 0x21d5 && c <= 0x21f3) ||\n        (c >= 0x21f4 && c <= 0x22ff) ||\n        (c >= 0x2300 && c <= 0x2307) ||\n        c === 0x2308 ||\n        c === 0x2309 ||\n        c === 0x230a ||\n        c === 0x230b ||\n        (c >= 0x230c && c <= 0x231f) ||\n        (c >= 0x2320 && c <= 0x2321) ||\n        (c >= 0x2322 && c <= 0x2328) ||\n        c === 0x2329 ||\n        c === 0x232a ||\n        (c >= 0x232b && c <= 0x237b) ||\n        c === 0x237c ||\n        (c >= 0x237d && c <= 0x239a) ||\n        (c >= 0x239b && c <= 0x23b3) ||\n        (c >= 0x23b4 && c <= 0x23db) ||\n        (c >= 0x23dc && c <= 0x23e1) ||\n        (c >= 0x23e2 && c <= 0x2426) ||\n        (c >= 0x2427 && c <= 0x243f) ||\n        (c >= 0x2440 && c <= 0x244a) ||\n        (c >= 0x244b && c <= 0x245f) ||\n        (c >= 0x2500 && c <= 0x25b6) ||\n        c === 0x25b7 ||\n        (c >= 0x25b8 && c <= 0x25c0) ||\n        c === 0x25c1 ||\n        (c >= 0x25c2 && c <= 0x25f7) ||\n        (c >= 0x25f8 && c <= 0x25ff) ||\n        (c >= 0x2600 && c <= 0x266e) ||\n        c === 0x266f ||\n        (c >= 0x2670 && c <= 0x2767) ||\n        c === 0x2768 ||\n        c === 0x2769 ||\n        c === 0x276a ||\n        c === 0x276b ||\n        c === 0x276c ||\n        c === 0x276d ||\n        c === 0x276e ||\n        c === 0x276f ||\n        c === 0x2770 ||\n        c === 0x2771 ||\n        c === 0x2772 ||\n        c === 0x2773 ||\n        c === 0x2774 ||\n        c === 0x2775 ||\n        (c >= 0x2794 && c <= 0x27bf) ||\n        (c >= 0x27c0 && c <= 0x27c4) ||\n        c === 0x27c5 ||\n        c === 0x27c6 ||\n        (c >= 0x27c7 && c <= 0x27e5) ||\n        c === 0x27e6 ||\n        c === 0x27e7 ||\n        c === 0x27e8 ||\n        c === 0x27e9 ||\n        c === 0x27ea ||\n        c === 0x27eb ||\n        c === 0x27ec ||\n        c === 0x27ed ||\n        c === 0x27ee ||\n        c === 0x27ef ||\n        (c >= 0x27f0 && c <= 0x27ff) ||\n        (c >= 0x2800 && c <= 0x28ff) ||\n        (c >= 0x2900 && c <= 0x2982) ||\n        c === 0x2983 ||\n        c === 0x2984 ||\n        c === 0x2985 ||\n        c === 0x2986 ||\n        c === 0x2987 ||\n        c === 0x2988 ||\n        c === 0x2989 ||\n        c === 0x298a ||\n        c === 0x298b ||\n        c === 0x298c ||\n        c === 0x298d ||\n        c === 0x298e ||\n        c === 0x298f ||\n        c === 0x2990 ||\n        c === 0x2991 ||\n        c === 0x2992 ||\n        c === 0x2993 ||\n        c === 0x2994 ||\n        c === 0x2995 ||\n        c === 0x2996 ||\n        c === 0x2997 ||\n        c === 0x2998 ||\n        (c >= 0x2999 && c <= 0x29d7) ||\n        c === 0x29d8 ||\n        c === 0x29d9 ||\n        c === 0x29da ||\n        c === 0x29db ||\n        (c >= 0x29dc && c <= 0x29fb) ||\n        c === 0x29fc ||\n        c === 0x29fd ||\n        (c >= 0x29fe && c <= 0x2aff) ||\n        (c >= 0x2b00 && c <= 0x2b2f) ||\n        (c >= 0x2b30 && c <= 0x2b44) ||\n        (c >= 0x2b45 && c <= 0x2b46) ||\n        (c >= 0x2b47 && c <= 0x2b4c) ||\n        (c >= 0x2b4d && c <= 0x2b73) ||\n        (c >= 0x2b74 && c <= 0x2b75) ||\n        (c >= 0x2b76 && c <= 0x2b95) ||\n        c === 0x2b96 ||\n        (c >= 0x2b97 && c <= 0x2bff) ||\n        (c >= 0x2e00 && c <= 0x2e01) ||\n        c === 0x2e02 ||\n        c === 0x2e03 ||\n        c === 0x2e04 ||\n        c === 0x2e05 ||\n        (c >= 0x2e06 && c <= 0x2e08) ||\n        c === 0x2e09 ||\n        c === 0x2e0a ||\n        c === 0x2e0b ||\n        c === 0x2e0c ||\n        c === 0x2e0d ||\n        (c >= 0x2e0e && c <= 0x2e16) ||\n        c === 0x2e17 ||\n        (c >= 0x2e18 && c <= 0x2e19) ||\n        c === 0x2e1a ||\n        c === 0x2e1b ||\n        c === 0x2e1c ||\n        c === 0x2e1d ||\n        (c >= 0x2e1e && c <= 0x2e1f) ||\n        c === 0x2e20 ||\n        c === 0x2e21 ||\n        c === 0x2e22 ||\n        c === 0x2e23 ||\n        c === 0x2e24 ||\n        c === 0x2e25 ||\n        c === 0x2e26 ||\n        c === 0x2e27 ||\n        c === 0x2e28 ||\n        c === 0x2e29 ||\n        (c >= 0x2e2a && c <= 0x2e2e) ||\n        c === 0x2e2f ||\n        (c >= 0x2e30 && c <= 0x2e39) ||\n        (c >= 0x2e3a && c <= 0x2e3b) ||\n        (c >= 0x2e3c && c <= 0x2e3f) ||\n        c === 0x2e40 ||\n        c === 0x2e41 ||\n        c === 0x2e42 ||\n        (c >= 0x2e43 && c <= 0x2e4f) ||\n        (c >= 0x2e50 && c <= 0x2e51) ||\n        c === 0x2e52 ||\n        (c >= 0x2e53 && c <= 0x2e7f) ||\n        (c >= 0x3001 && c <= 0x3003) ||\n        c === 0x3008 ||\n        c === 0x3009 ||\n        c === 0x300a ||\n        c === 0x300b ||\n        c === 0x300c ||\n        c === 0x300d ||\n        c === 0x300e ||\n        c === 0x300f ||\n        c === 0x3010 ||\n        c === 0x3011 ||\n        (c >= 0x3012 && c <= 0x3013) ||\n        c === 0x3014 ||\n        c === 0x3015 ||\n        c === 0x3016 ||\n        c === 0x3017 ||\n        c === 0x3018 ||\n        c === 0x3019 ||\n        c === 0x301a ||\n        c === 0x301b ||\n        c === 0x301c ||\n        c === 0x301d ||\n        (c >= 0x301e && c <= 0x301f) ||\n        c === 0x3020 ||\n        c === 0x3030 ||\n        c === 0xfd3e ||\n        c === 0xfd3f ||\n        (c >= 0xfe45 && c <= 0xfe46));\n}\n", "import { __assign } from \"tslib\";\nimport { ErrorKind } from './error';\nimport { Parser } from './parser';\nimport { isDateElement, isDateTimeSkeleton, isNumberElement, isNumberSkeleton, isPluralElement, isSelectElement, isTagElement, isTimeElement, } from './types';\nfunction pruneLocation(els) {\n    els.forEach(function (el) {\n        delete el.location;\n        if (isSelectElement(el) || isPluralElement(el)) {\n            for (var k in el.options) {\n                delete el.options[k].location;\n                pruneLocation(el.options[k].value);\n            }\n        }\n        else if (isNumberElement(el) && isNumberSkeleton(el.style)) {\n            delete el.style.location;\n        }\n        else if ((isDateElement(el) || isTimeElement(el)) &&\n            isDateTimeSkeleton(el.style)) {\n            delete el.style.location;\n        }\n        else if (isTagElement(el)) {\n            pruneLocation(el.children);\n        }\n    });\n}\nexport function parse(message, opts) {\n    if (opts === void 0) { opts = {}; }\n    opts = __assign({ shouldParseSkeletons: true, requiresOtherClause: true }, opts);\n    var result = new Parser(message, opts).parse();\n    if (result.err) {\n        var error = SyntaxError(ErrorKind[result.err.kind]);\n        // @ts-expect-error Assign to error object\n        error.location = result.err.location;\n        // @ts-expect-error Assign to error object\n        error.originalMessage = result.err.message;\n        throw error;\n    }\n    if (!(opts === null || opts === void 0 ? void 0 : opts.captureLocation)) {\n        pruneLocation(result.val);\n    }\n    return result.val;\n}\nexport * from './types';\n// only for testing\nexport var _Parser = Parser;\n", "//\n// Main\n//\nexport default function memoize(fn, options) {\n    var cache = options && options.cache ? options.cache : cacheDefault;\n    var serializer = options && options.serializer ? options.serializer : serializerDefault;\n    var strategy = options && options.strategy ? options.strategy : strategyDefault;\n    return strategy(fn, {\n        cache: cache,\n        serializer: serializer,\n    });\n}\n//\n// Strategy\n//\nfunction isPrimitive(value) {\n    return (value == null || typeof value === 'number' || typeof value === 'boolean'); // || typeof value === \"string\" 'unsafe' primitive for our needs\n}\nfunction monadic(fn, cache, serializer, arg) {\n    var cacheKey = isPrimitive(arg) ? arg : serializer(arg);\n    var computedValue = cache.get(cacheKey);\n    if (typeof computedValue === 'undefined') {\n        computedValue = fn.call(this, arg);\n        cache.set(cacheKey, computedValue);\n    }\n    return computedValue;\n}\nfunction variadic(fn, cache, serializer) {\n    var args = Array.prototype.slice.call(arguments, 3);\n    var cacheKey = serializer(args);\n    var computedValue = cache.get(cacheKey);\n    if (typeof computedValue === 'undefined') {\n        computedValue = fn.apply(this, args);\n        cache.set(cacheKey, computedValue);\n    }\n    return computedValue;\n}\nfunction assemble(fn, context, strategy, cache, serialize) {\n    return strategy.bind(context, fn, cache, serialize);\n}\nfunction strategyDefault(fn, options) {\n    var strategy = fn.length === 1 ? monadic : variadic;\n    return assemble(fn, this, strategy, options.cache.create(), options.serializer);\n}\nfunction strategyVariadic(fn, options) {\n    return assemble(fn, this, variadic, options.cache.create(), options.serializer);\n}\nfunction strategyMonadic(fn, options) {\n    return assemble(fn, this, monadic, options.cache.create(), options.serializer);\n}\n//\n// Serializer\n//\nvar serializerDefault = function () {\n    return JSON.stringify(arguments);\n};\n//\n// Cache\n//\nfunction ObjectWithoutPrototypeCache() {\n    this.cache = Object.create(null);\n}\nObjectWithoutPrototypeCache.prototype.get = function (key) {\n    return this.cache[key];\n};\nObjectWithoutPrototypeCache.prototype.set = function (key, value) {\n    this.cache[key] = value;\n};\nvar cacheDefault = {\n    create: function create() {\n        // @ts-ignore\n        return new ObjectWithoutPrototypeCache();\n    },\n};\nexport var strategies = {\n    variadic: strategyVariadic,\n    monadic: strategyMonadic,\n};\n", "import { __extends } from \"tslib\";\nexport var ErrorCode;\n(function (ErrorCode) {\n    // When we have a placeholder but no value to format\n    ErrorCode[\"MISSING_VALUE\"] = \"MISSING_VALUE\";\n    // When value supplied is invalid\n    ErrorCode[\"INVALID_VALUE\"] = \"INVALID_VALUE\";\n    // When we need specific Intl API but it's not available\n    ErrorCode[\"MISSING_INTL_API\"] = \"MISSING_INTL_API\";\n})(ErrorCode || (ErrorCode = {}));\nvar FormatError = /** @class */ (function (_super) {\n    __extends(FormatError, _super);\n    function FormatError(msg, code, originalMessage) {\n        var _this = _super.call(this, msg) || this;\n        _this.code = code;\n        _this.originalMessage = originalMessage;\n        return _this;\n    }\n    FormatError.prototype.toString = function () {\n        return \"[formatjs Error: \".concat(this.code, \"] \").concat(this.message);\n    };\n    return FormatError;\n}(Error));\nexport { FormatError };\nvar InvalidValueError = /** @class */ (function (_super) {\n    __extends(InvalidValueError, _super);\n    function InvalidValueError(variableId, value, options, originalMessage) {\n        return _super.call(this, \"Invalid values for \\\"\".concat(variableId, \"\\\": \\\"\").concat(value, \"\\\". Options are \\\"\").concat(Object.keys(options).join('\", \"'), \"\\\"\"), ErrorCode.INVALID_VALUE, originalMessage) || this;\n    }\n    return InvalidValueError;\n}(FormatError));\nexport { InvalidValueError };\nvar InvalidValueTypeError = /** @class */ (function (_super) {\n    __extends(InvalidValueTypeError, _super);\n    function InvalidValueTypeError(value, type, originalMessage) {\n        return _super.call(this, \"Value for \\\"\".concat(value, \"\\\" must be of type \").concat(type), ErrorCode.INVALID_VALUE, originalMessage) || this;\n    }\n    return InvalidValueTypeError;\n}(FormatError));\nexport { InvalidValueTypeError };\nvar MissingValueError = /** @class */ (function (_super) {\n    __extends(MissingValueError, _super);\n    function MissingValueError(variableId, originalMessage) {\n        return _super.call(this, \"The intl string context variable \\\"\".concat(variableId, \"\\\" was not provided to the string \\\"\").concat(originalMessage, \"\\\"\"), ErrorCode.MISSING_VALUE, originalMessage) || this;\n    }\n    return MissingValueError;\n}(FormatError));\nexport { MissingValueError };\n", "import { isArgumentElement, isDateElement, isDateTimeSkeleton, isLiteralElement, isNumberElement, isNumberSkeleton, isPluralElement, isPoundElement, isSelectElement, isTimeElement, isTagElement, } from '@formatjs/icu-messageformat-parser';\nimport { MissingValueError, InvalidValueError, ErrorCode, FormatError, InvalidValueTypeError, } from './error';\nexport var PART_TYPE;\n(function (PART_TYPE) {\n    PART_TYPE[PART_TYPE[\"literal\"] = 0] = \"literal\";\n    PART_TYPE[PART_TYPE[\"object\"] = 1] = \"object\";\n})(PART_TYPE || (PART_TYPE = {}));\nfunction mergeLiteral(parts) {\n    if (parts.length < 2) {\n        return parts;\n    }\n    return parts.reduce(function (all, part) {\n        var lastPart = all[all.length - 1];\n        if (!lastPart ||\n            lastPart.type !== PART_TYPE.literal ||\n            part.type !== PART_TYPE.literal) {\n            all.push(part);\n        }\n        else {\n            lastPart.value += part.value;\n        }\n        return all;\n    }, []);\n}\nexport function isFormatXMLElementFn(el) {\n    return typeof el === 'function';\n}\n// TODO(skeleton): add skeleton support\nexport function formatToParts(els, locales, formatters, formats, values, currentPluralValue, \n// For debugging\noriginalMessage) {\n    // Hot path for straight simple msg translations\n    if (els.length === 1 && isLiteralElement(els[0])) {\n        return [\n            {\n                type: PART_TYPE.literal,\n                value: els[0].value,\n            },\n        ];\n    }\n    var result = [];\n    for (var _i = 0, els_1 = els; _i < els_1.length; _i++) {\n        var el = els_1[_i];\n        // Exit early for string parts.\n        if (isLiteralElement(el)) {\n            result.push({\n                type: PART_TYPE.literal,\n                value: el.value,\n            });\n            continue;\n        }\n        // TODO: should this part be literal type?\n        // Replace `#` in plural rules with the actual numeric value.\n        if (isPoundElement(el)) {\n            if (typeof currentPluralValue === 'number') {\n                result.push({\n                    type: PART_TYPE.literal,\n                    value: formatters.getNumberFormat(locales).format(currentPluralValue),\n                });\n            }\n            continue;\n        }\n        var varName = el.value;\n        // Enforce that all required values are provided by the caller.\n        if (!(values && varName in values)) {\n            throw new MissingValueError(varName, originalMessage);\n        }\n        var value = values[varName];\n        if (isArgumentElement(el)) {\n            if (!value || typeof value === 'string' || typeof value === 'number') {\n                value =\n                    typeof value === 'string' || typeof value === 'number'\n                        ? String(value)\n                        : '';\n            }\n            result.push({\n                type: typeof value === 'string' ? PART_TYPE.literal : PART_TYPE.object,\n                value: value,\n            });\n            continue;\n        }\n        // Recursively format plural and select parts' option \u2014 which can be a\n        // nested pattern structure. The choosing of the option to use is\n        // abstracted-by and delegated-to the part helper object.\n        if (isDateElement(el)) {\n            var style = typeof el.style === 'string'\n                ? formats.date[el.style]\n                : isDateTimeSkeleton(el.style)\n                    ? el.style.parsedOptions\n                    : undefined;\n            result.push({\n                type: PART_TYPE.literal,\n                value: formatters\n                    .getDateTimeFormat(locales, style)\n                    .format(value),\n            });\n            continue;\n        }\n        if (isTimeElement(el)) {\n            var style = typeof el.style === 'string'\n                ? formats.time[el.style]\n                : isDateTimeSkeleton(el.style)\n                    ? el.style.parsedOptions\n                    : formats.time.medium;\n            result.push({\n                type: PART_TYPE.literal,\n                value: formatters\n                    .getDateTimeFormat(locales, style)\n                    .format(value),\n            });\n            continue;\n        }\n        if (isNumberElement(el)) {\n            var style = typeof el.style === 'string'\n                ? formats.number[el.style]\n                : isNumberSkeleton(el.style)\n                    ? el.style.parsedOptions\n                    : undefined;\n            if (style && style.scale) {\n                value =\n                    value *\n                        (style.scale || 1);\n            }\n            result.push({\n                type: PART_TYPE.literal,\n                value: formatters\n                    .getNumberFormat(locales, style)\n                    .format(value),\n            });\n            continue;\n        }\n        if (isTagElement(el)) {\n            var children = el.children, value_1 = el.value;\n            var formatFn = values[value_1];\n            if (!isFormatXMLElementFn(formatFn)) {\n                throw new InvalidValueTypeError(value_1, 'function', originalMessage);\n            }\n            var parts = formatToParts(children, locales, formatters, formats, values, currentPluralValue);\n            var chunks = formatFn(parts.map(function (p) { return p.value; }));\n            if (!Array.isArray(chunks)) {\n                chunks = [chunks];\n            }\n            result.push.apply(result, chunks.map(function (c) {\n                return {\n                    type: typeof c === 'string' ? PART_TYPE.literal : PART_TYPE.object,\n                    value: c,\n                };\n            }));\n        }\n        if (isSelectElement(el)) {\n            var opt = el.options[value] || el.options.other;\n            if (!opt) {\n                throw new InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);\n            }\n            result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values));\n            continue;\n        }\n        if (isPluralElement(el)) {\n            var opt = el.options[\"=\".concat(value)];\n            if (!opt) {\n                if (!Intl.PluralRules) {\n                    throw new FormatError(\"Intl.PluralRules is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-pluralrules\\\"\\n\", ErrorCode.MISSING_INTL_API, originalMessage);\n                }\n                var rule = formatters\n                    .getPluralRules(locales, { type: el.pluralType })\n                    .select(value - (el.offset || 0));\n                opt = el.options[rule] || el.options.other;\n            }\n            if (!opt) {\n                throw new InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);\n            }\n            result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values, value - (el.offset || 0)));\n            continue;\n        }\n    }\n    return mergeLiteral(result);\n}\n", "/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nimport { __assign, __spreadArray } from \"tslib\";\nimport { parse } from '@formatjs/icu-messageformat-parser';\nimport memoize, { strategies } from '@formatjs/fast-memoize';\nimport { formatToParts, PART_TYPE, } from './formatters';\n// -- MessageFormat --------------------------------------------------------\nfunction mergeConfig(c1, c2) {\n    if (!c2) {\n        return c1;\n    }\n    return __assign(__assign(__assign({}, (c1 || {})), (c2 || {})), Object.keys(c1).reduce(function (all, k) {\n        all[k] = __assign(__assign({}, c1[k]), (c2[k] || {}));\n        return all;\n    }, {}));\n}\nfunction mergeConfigs(defaultConfig, configs) {\n    if (!configs) {\n        return defaultConfig;\n    }\n    return Object.keys(defaultConfig).reduce(function (all, k) {\n        all[k] = mergeConfig(defaultConfig[k], configs[k]);\n        return all;\n    }, __assign({}, defaultConfig));\n}\nfunction createFastMemoizeCache(store) {\n    return {\n        create: function () {\n            return {\n                get: function (key) {\n                    return store[key];\n                },\n                set: function (key, value) {\n                    store[key] = value;\n                },\n            };\n        },\n    };\n}\nfunction createDefaultFormatters(cache) {\n    if (cache === void 0) { cache = {\n        number: {},\n        dateTime: {},\n        pluralRules: {},\n    }; }\n    return {\n        getNumberFormat: memoize(function () {\n            var _a;\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            return new ((_a = Intl.NumberFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();\n        }, {\n            cache: createFastMemoizeCache(cache.number),\n            strategy: strategies.variadic,\n        }),\n        getDateTimeFormat: memoize(function () {\n            var _a;\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            return new ((_a = Intl.DateTimeFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();\n        }, {\n            cache: createFastMemoizeCache(cache.dateTime),\n            strategy: strategies.variadic,\n        }),\n        getPluralRules: memoize(function () {\n            var _a;\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            return new ((_a = Intl.PluralRules).bind.apply(_a, __spreadArray([void 0], args, false)))();\n        }, {\n            cache: createFastMemoizeCache(cache.pluralRules),\n            strategy: strategies.variadic,\n        }),\n    };\n}\nvar IntlMessageFormat = /** @class */ (function () {\n    function IntlMessageFormat(message, locales, overrideFormats, opts) {\n        if (locales === void 0) { locales = IntlMessageFormat.defaultLocale; }\n        var _this = this;\n        this.formatterCache = {\n            number: {},\n            dateTime: {},\n            pluralRules: {},\n        };\n        this.format = function (values) {\n            var parts = _this.formatToParts(values);\n            // Hot path for straight simple msg translations\n            if (parts.length === 1) {\n                return parts[0].value;\n            }\n            var result = parts.reduce(function (all, part) {\n                if (!all.length ||\n                    part.type !== PART_TYPE.literal ||\n                    typeof all[all.length - 1] !== 'string') {\n                    all.push(part.value);\n                }\n                else {\n                    all[all.length - 1] += part.value;\n                }\n                return all;\n            }, []);\n            if (result.length <= 1) {\n                return result[0] || '';\n            }\n            return result;\n        };\n        this.formatToParts = function (values) {\n            return formatToParts(_this.ast, _this.locales, _this.formatters, _this.formats, values, undefined, _this.message);\n        };\n        this.resolvedOptions = function () {\n            var _a;\n            return ({\n                locale: ((_a = _this.resolvedLocale) === null || _a === void 0 ? void 0 : _a.toString()) ||\n                    Intl.NumberFormat.supportedLocalesOf(_this.locales)[0],\n            });\n        };\n        this.getAst = function () { return _this.ast; };\n        // Defined first because it's used to build the format pattern.\n        this.locales = locales;\n        this.resolvedLocale = IntlMessageFormat.resolveLocale(locales);\n        if (typeof message === 'string') {\n            this.message = message;\n            if (!IntlMessageFormat.__parse) {\n                throw new TypeError('IntlMessageFormat.__parse must be set to process `message` of type `string`');\n            }\n            // Parse string messages into an AST.\n            this.ast = IntlMessageFormat.__parse(message, {\n                ignoreTag: opts === null || opts === void 0 ? void 0 : opts.ignoreTag,\n                locale: this.resolvedLocale,\n            });\n        }\n        else {\n            this.ast = message;\n        }\n        if (!Array.isArray(this.ast)) {\n            throw new TypeError('A message must be provided as a String or AST.');\n        }\n        // Creates a new object with the specified `formats` merged with the default\n        // formats.\n        this.formats = mergeConfigs(IntlMessageFormat.formats, overrideFormats);\n        this.formatters =\n            (opts && opts.formatters) || createDefaultFormatters(this.formatterCache);\n    }\n    Object.defineProperty(IntlMessageFormat, \"defaultLocale\", {\n        get: function () {\n            if (!IntlMessageFormat.memoizedDefaultLocale) {\n                IntlMessageFormat.memoizedDefaultLocale =\n                    new Intl.NumberFormat().resolvedOptions().locale;\n            }\n            return IntlMessageFormat.memoizedDefaultLocale;\n        },\n        enumerable: false,\n        configurable: true\n    });\n    IntlMessageFormat.memoizedDefaultLocale = null;\n    IntlMessageFormat.resolveLocale = function (locales) {\n        if (typeof Intl.Locale === 'undefined') {\n            return;\n        }\n        var supportedLocales = Intl.NumberFormat.supportedLocalesOf(locales);\n        if (supportedLocales.length > 0) {\n            return new Intl.Locale(supportedLocales[0]);\n        }\n        return new Intl.Locale(typeof locales === 'string' ? locales : locales[0]);\n    };\n    IntlMessageFormat.__parse = parse;\n    // Default format options used as the prototype of the `formats` provided to the\n    // constructor. These are used when constructing the internal Intl.NumberFormat\n    // and Intl.DateTimeFormat instances.\n    IntlMessageFormat.formats = {\n        number: {\n            integer: {\n                maximumFractionDigits: 0,\n            },\n            currency: {\n                style: 'currency',\n            },\n            percent: {\n                style: 'percent',\n            },\n        },\n        date: {\n            short: {\n                month: 'numeric',\n                day: 'numeric',\n                year: '2-digit',\n            },\n            medium: {\n                month: 'short',\n                day: 'numeric',\n                year: 'numeric',\n            },\n            long: {\n                month: 'long',\n                day: 'numeric',\n                year: 'numeric',\n            },\n            full: {\n                weekday: 'long',\n                month: 'long',\n                day: 'numeric',\n                year: 'numeric',\n            },\n        },\n        time: {\n            short: {\n                hour: 'numeric',\n                minute: 'numeric',\n            },\n            medium: {\n                hour: 'numeric',\n                minute: 'numeric',\n                second: 'numeric',\n            },\n            long: {\n                hour: 'numeric',\n                minute: 'numeric',\n                second: 'numeric',\n                timeZoneName: 'short',\n            },\n            full: {\n                hour: 'numeric',\n                minute: 'numeric',\n                second: 'numeric',\n                timeZoneName: 'short',\n            },\n        },\n    };\n    return IntlMessageFormat;\n}());\nexport { IntlMessageFormat };\n", "import { __extends } from \"tslib\";\nexport var IntlErrorCode;\n(function (IntlErrorCode) {\n    IntlErrorCode[\"FORMAT_ERROR\"] = \"FORMAT_ERROR\";\n    IntlErrorCode[\"UNSUPPORTED_FORMATTER\"] = \"UNSUPPORTED_FORMATTER\";\n    IntlErrorCode[\"INVALID_CONFIG\"] = \"INVALID_CONFIG\";\n    IntlErrorCode[\"MISSING_DATA\"] = \"MISSING_DATA\";\n    IntlErrorCode[\"MISSING_TRANSLATION\"] = \"MISSING_TRANSLATION\";\n})(IntlErrorCode || (IntlErrorCode = {}));\nvar IntlError = /** @class */ (function (_super) {\n    __extends(IntlError, _super);\n    function IntlError(code, message, exception) {\n        var _this = this;\n        var err = exception\n            ? exception instanceof Error\n                ? exception\n                : new Error(String(exception))\n            : undefined;\n        _this = _super.call(this, \"[@formatjs/intl Error \".concat(code, \"] \").concat(message, \"\\n\").concat(err ? \"\\n\".concat(err.message, \"\\n\").concat(err.stack) : '')) || this;\n        _this.code = code;\n        // @ts-ignore just so we don't need to declare dep on @types/node\n        if (typeof Error.captureStackTrace === 'function') {\n            // @ts-ignore just so we don't need to declare dep on @types/node\n            Error.captureStackTrace(_this, IntlError);\n        }\n        return _this;\n    }\n    return IntlError;\n}(Error));\nexport { IntlError };\nvar UnsupportedFormatterError = /** @class */ (function (_super) {\n    __extends(UnsupportedFormatterError, _super);\n    function UnsupportedFormatterError(message, exception) {\n        return _super.call(this, IntlErrorCode.UNSUPPORTED_FORMATTER, message, exception) || this;\n    }\n    return UnsupportedFormatterError;\n}(IntlError));\nexport { UnsupportedFormatterError };\nvar InvalidConfigError = /** @class */ (function (_super) {\n    __extends(InvalidConfigError, _super);\n    function InvalidConfigError(message, exception) {\n        return _super.call(this, IntlErrorCode.INVALID_CONFIG, message, exception) || this;\n    }\n    return InvalidConfigError;\n}(IntlError));\nexport { InvalidConfigError };\nvar MissingDataError = /** @class */ (function (_super) {\n    __extends(MissingDataError, _super);\n    function MissingDataError(message, exception) {\n        return _super.call(this, IntlErrorCode.MISSING_DATA, message, exception) || this;\n    }\n    return MissingDataError;\n}(IntlError));\nexport { MissingDataError };\nvar IntlFormatError = /** @class */ (function (_super) {\n    __extends(IntlFormatError, _super);\n    function IntlFormatError(message, locale, exception) {\n        return _super.call(this, IntlErrorCode.FORMAT_ERROR, \"\".concat(message, \"\\nLocale: \").concat(locale, \"\\n\"), exception) || this;\n    }\n    return IntlFormatError;\n}(IntlError));\nexport { IntlFormatError };\nvar MessageFormatError = /** @class */ (function (_super) {\n    __extends(MessageFormatError, _super);\n    function MessageFormatError(message, locale, descriptor, exception) {\n        var _this = _super.call(this, \"\".concat(message, \"\\nMessageID: \").concat(descriptor === null || descriptor === void 0 ? void 0 : descriptor.id, \"\\nDefault Message: \").concat(descriptor === null || descriptor === void 0 ? void 0 : descriptor.defaultMessage, \"\\nDescription: \").concat(descriptor === null || descriptor === void 0 ? void 0 : descriptor.description, \"\\n\"), locale, exception) || this;\n        _this.descriptor = descriptor;\n        return _this;\n    }\n    return MessageFormatError;\n}(IntlFormatError));\nexport { MessageFormatError };\nvar MissingTranslationError = /** @class */ (function (_super) {\n    __extends(MissingTranslationError, _super);\n    function MissingTranslationError(descriptor, locale) {\n        var _this = _super.call(this, IntlErrorCode.MISSING_TRANSLATION, \"Missing message: \\\"\".concat(descriptor.id, \"\\\" for locale \\\"\").concat(locale, \"\\\", using \").concat(descriptor.defaultMessage\n            ? \"default message (\".concat(typeof descriptor.defaultMessage === 'string'\n                ? descriptor.defaultMessage\n                : descriptor.defaultMessage\n                    .map(function (e) { var _a; return (_a = e.value) !== null && _a !== void 0 ? _a : JSON.stringify(e); })\n                    .join(), \")\")\n            : 'id', \" as fallback.\")) || this;\n        _this.descriptor = descriptor;\n        return _this;\n    }\n    return MissingTranslationError;\n}(IntlError));\nexport { MissingTranslationError };\n", "import { __assign, __spreadArray } from \"tslib\";\nimport { IntlMessageFormat } from 'intl-messageformat';\nimport memoize, { strategies } from '@formatjs/fast-memoize';\nimport { UnsupportedFormatterError } from './error';\nexport function filterProps(props, allowlist, defaults) {\n    if (defaults === void 0) { defaults = {}; }\n    return allowlist.reduce(function (filtered, name) {\n        if (name in props) {\n            filtered[name] = props[name];\n        }\n        else if (name in defaults) {\n            filtered[name] = defaults[name];\n        }\n        return filtered;\n    }, {});\n}\nvar defaultErrorHandler = function (error) {\n    // @ts-ignore just so we don't need to declare dep on @types/node\n    if (process.env.NODE_ENV !== 'production') {\n        console.error(error);\n    }\n};\nvar defaultWarnHandler = function (warning) {\n    // @ts-ignore just so we don't need to declare dep on @types/node\n    if (process.env.NODE_ENV !== 'production') {\n        console.warn(warning);\n    }\n};\nexport var DEFAULT_INTL_CONFIG = {\n    formats: {},\n    messages: {},\n    timeZone: undefined,\n    defaultLocale: 'en',\n    defaultFormats: {},\n    fallbackOnEmptyString: true,\n    onError: defaultErrorHandler,\n    onWarn: defaultWarnHandler,\n};\nexport function createIntlCache() {\n    return {\n        dateTime: {},\n        number: {},\n        message: {},\n        relativeTime: {},\n        pluralRules: {},\n        list: {},\n        displayNames: {},\n    };\n}\nfunction createFastMemoizeCache(store) {\n    return {\n        create: function () {\n            return {\n                get: function (key) {\n                    return store[key];\n                },\n                set: function (key, value) {\n                    store[key] = value;\n                },\n            };\n        },\n    };\n}\n/**\n * Create intl formatters and populate cache\n * @param cache explicit cache to prevent leaking memory\n */\nexport function createFormatters(cache) {\n    if (cache === void 0) { cache = createIntlCache(); }\n    var RelativeTimeFormat = Intl.RelativeTimeFormat;\n    var ListFormat = Intl.ListFormat;\n    var DisplayNames = Intl.DisplayNames;\n    var getDateTimeFormat = memoize(function () {\n        var _a;\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        return new ((_a = Intl.DateTimeFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();\n    }, {\n        cache: createFastMemoizeCache(cache.dateTime),\n        strategy: strategies.variadic,\n    });\n    var getNumberFormat = memoize(function () {\n        var _a;\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        return new ((_a = Intl.NumberFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();\n    }, {\n        cache: createFastMemoizeCache(cache.number),\n        strategy: strategies.variadic,\n    });\n    var getPluralRules = memoize(function () {\n        var _a;\n        var args = [];\n        for (var _i = 0; _i < arguments.length; _i++) {\n            args[_i] = arguments[_i];\n        }\n        return new ((_a = Intl.PluralRules).bind.apply(_a, __spreadArray([void 0], args, false)))();\n    }, {\n        cache: createFastMemoizeCache(cache.pluralRules),\n        strategy: strategies.variadic,\n    });\n    return {\n        getDateTimeFormat: getDateTimeFormat,\n        getNumberFormat: getNumberFormat,\n        getMessageFormat: memoize(function (message, locales, overrideFormats, opts) {\n            return new IntlMessageFormat(message, locales, overrideFormats, __assign({ formatters: {\n                    getNumberFormat: getNumberFormat,\n                    getDateTimeFormat: getDateTimeFormat,\n                    getPluralRules: getPluralRules,\n                } }, (opts || {})));\n        }, {\n            cache: createFastMemoizeCache(cache.message),\n            strategy: strategies.variadic,\n        }),\n        getRelativeTimeFormat: memoize(function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            return new (RelativeTimeFormat.bind.apply(RelativeTimeFormat, __spreadArray([void 0], args, false)))();\n        }, {\n            cache: createFastMemoizeCache(cache.relativeTime),\n            strategy: strategies.variadic,\n        }),\n        getPluralRules: getPluralRules,\n        getListFormat: memoize(function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            return new (ListFormat.bind.apply(ListFormat, __spreadArray([void 0], args, false)))();\n        }, {\n            cache: createFastMemoizeCache(cache.list),\n            strategy: strategies.variadic,\n        }),\n        getDisplayNames: memoize(function () {\n            var args = [];\n            for (var _i = 0; _i < arguments.length; _i++) {\n                args[_i] = arguments[_i];\n            }\n            return new (DisplayNames.bind.apply(DisplayNames, __spreadArray([void 0], args, false)))();\n        }, {\n            cache: createFastMemoizeCache(cache.displayNames),\n            strategy: strategies.variadic,\n        }),\n    };\n}\nexport function getNamedFormat(formats, type, name, onError) {\n    var formatType = formats && formats[type];\n    var format;\n    if (formatType) {\n        format = formatType[name];\n    }\n    if (format) {\n        return format;\n    }\n    onError(new UnsupportedFormatterError(\"No \".concat(type, \" format named: \").concat(name)));\n}\n", "import { __assign } from \"tslib\";\nimport { invariant } from '@formatjs/ecma402-abstract';\nimport { IntlMessageFormat, } from 'intl-messageformat';\nimport { MissingTranslationError, MessageFormatError } from './error';\nimport { TYPE } from '@formatjs/icu-messageformat-parser';\nfunction setTimeZoneInOptions(opts, timeZone) {\n    return Object.keys(opts).reduce(function (all, k) {\n        all[k] = __assign({ timeZone: timeZone }, opts[k]);\n        return all;\n    }, {});\n}\nfunction deepMergeOptions(opts1, opts2) {\n    var keys = Object.keys(__assign(__assign({}, opts1), opts2));\n    return keys.reduce(function (all, k) {\n        all[k] = __assign(__assign({}, (opts1[k] || {})), (opts2[k] || {}));\n        return all;\n    }, {});\n}\nfunction deepMergeFormatsAndSetTimeZone(f1, timeZone) {\n    if (!timeZone) {\n        return f1;\n    }\n    var mfFormats = IntlMessageFormat.formats;\n    return __assign(__assign(__assign({}, mfFormats), f1), { date: deepMergeOptions(setTimeZoneInOptions(mfFormats.date, timeZone), setTimeZoneInOptions(f1.date || {}, timeZone)), time: deepMergeOptions(setTimeZoneInOptions(mfFormats.time, timeZone), setTimeZoneInOptions(f1.time || {}, timeZone)) });\n}\nexport var formatMessage = function (_a, state, messageDescriptor, values, opts) {\n    var locale = _a.locale, formats = _a.formats, messages = _a.messages, defaultLocale = _a.defaultLocale, defaultFormats = _a.defaultFormats, fallbackOnEmptyString = _a.fallbackOnEmptyString, onError = _a.onError, timeZone = _a.timeZone, defaultRichTextElements = _a.defaultRichTextElements;\n    if (messageDescriptor === void 0) { messageDescriptor = { id: '' }; }\n    var msgId = messageDescriptor.id, defaultMessage = messageDescriptor.defaultMessage;\n    // `id` is a required field of a Message Descriptor.\n    invariant(!!msgId, \"[@formatjs/intl] An `id` must be provided to format a message. You can either:\\n1. Configure your build toolchain with [babel-plugin-formatjs](https://formatjs.io/docs/tooling/babel-plugin)\\nor [@formatjs/ts-transformer](https://formatjs.io/docs/tooling/ts-transformer) OR\\n2. Configure your `eslint` config to include [eslint-plugin-formatjs](https://formatjs.io/docs/tooling/linter#enforce-id)\\nto autofix this issue\");\n    var id = String(msgId);\n    var message = \n    // In case messages is Object.create(null)\n    // e.g import('foo.json') from webpack)\n    // See https://github.com/formatjs/formatjs/issues/1914\n    messages &&\n        Object.prototype.hasOwnProperty.call(messages, id) &&\n        messages[id];\n    // IMPORTANT: Hot path if `message` is AST with a single literal node\n    if (Array.isArray(message) &&\n        message.length === 1 &&\n        message[0].type === TYPE.literal) {\n        return message[0].value;\n    }\n    // IMPORTANT: Hot path straight lookup for performance\n    if (!values &&\n        message &&\n        typeof message === 'string' &&\n        !defaultRichTextElements) {\n        return message.replace(/'\\{(.*?)\\}'/gi, \"{$1}\");\n    }\n    values = __assign(__assign({}, defaultRichTextElements), (values || {}));\n    formats = deepMergeFormatsAndSetTimeZone(formats, timeZone);\n    defaultFormats = deepMergeFormatsAndSetTimeZone(defaultFormats, timeZone);\n    if (!message) {\n        if (fallbackOnEmptyString === false && message === '') {\n            return message;\n        }\n        if (!defaultMessage ||\n            (locale && locale.toLowerCase() !== defaultLocale.toLowerCase())) {\n            // This prevents warnings from littering the console in development\n            // when no `messages` are passed into the <IntlProvider> for the\n            // default locale.\n            onError(new MissingTranslationError(messageDescriptor, locale));\n        }\n        if (defaultMessage) {\n            try {\n                var formatter = state.getMessageFormat(defaultMessage, defaultLocale, defaultFormats, opts);\n                return formatter.format(values);\n            }\n            catch (e) {\n                onError(new MessageFormatError(\"Error formatting default message for: \\\"\".concat(id, \"\\\", rendering default message verbatim\"), locale, messageDescriptor, e));\n                return typeof defaultMessage === 'string' ? defaultMessage : id;\n            }\n        }\n        return id;\n    }\n    // We have the translated message\n    try {\n        var formatter = state.getMessageFormat(message, locale, formats, __assign({ formatters: state }, (opts || {})));\n        return formatter.format(values);\n    }\n    catch (e) {\n        onError(new MessageFormatError(\"Error formatting message: \\\"\".concat(id, \"\\\", using \").concat(defaultMessage ? 'default message' : 'id', \" as fallback.\"), locale, messageDescriptor, e));\n    }\n    if (defaultMessage) {\n        try {\n            var formatter = state.getMessageFormat(defaultMessage, defaultLocale, defaultFormats, opts);\n            return formatter.format(values);\n        }\n        catch (e) {\n            onError(new MessageFormatError(\"Error formatting the default message for: \\\"\".concat(id, \"\\\", rendering message verbatim\"), locale, messageDescriptor, e));\n        }\n    }\n    if (typeof message === 'string') {\n        return message;\n    }\n    if (typeof defaultMessage === 'string') {\n        return defaultMessage;\n    }\n    return id;\n};\n", "import { __assign } from \"tslib\";\nimport { filterProps, getNamedFormat } from './utils';\nimport { IntlError, IntlErrorCode } from './error';\nvar DATE_TIME_FORMAT_OPTIONS = [\n    'formatMatcher',\n    'timeZone',\n    'hour12',\n    'weekday',\n    'era',\n    'year',\n    'month',\n    'day',\n    'hour',\n    'minute',\n    'second',\n    'timeZoneName',\n    'hourCycle',\n    'dateStyle',\n    'timeStyle',\n    'calendar',\n    // 'dayPeriod',\n    'numberingSystem',\n    'fractionalSecondDigits',\n];\nexport function getFormatter(_a, type, getDateTimeFormat, options) {\n    var locale = _a.locale, formats = _a.formats, onError = _a.onError, timeZone = _a.timeZone;\n    if (options === void 0) { options = {}; }\n    var format = options.format;\n    var defaults = __assign(__assign({}, (timeZone && { timeZone: timeZone })), (format && getNamedFormat(formats, type, format, onError)));\n    var filteredOptions = filterProps(options, DATE_TIME_FORMAT_OPTIONS, defaults);\n    if (type === 'time' &&\n        !filteredOptions.hour &&\n        !filteredOptions.minute &&\n        !filteredOptions.second &&\n        !filteredOptions.timeStyle &&\n        !filteredOptions.dateStyle) {\n        // Add default formatting options if hour, minute, or second isn't defined.\n        filteredOptions = __assign(__assign({}, filteredOptions), { hour: 'numeric', minute: 'numeric' });\n    }\n    return getDateTimeFormat(locale, filteredOptions);\n}\nexport function formatDate(config, getDateTimeFormat) {\n    var _a = [];\n    for (var _i = 2; _i < arguments.length; _i++) {\n        _a[_i - 2] = arguments[_i];\n    }\n    var value = _a[0], _b = _a[1], options = _b === void 0 ? {} : _b;\n    var date = typeof value === 'string' ? new Date(value || 0) : value;\n    try {\n        return getFormatter(config, 'date', getDateTimeFormat, options).format(date);\n    }\n    catch (e) {\n        config.onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting date.', e));\n    }\n    return String(date);\n}\nexport function formatTime(config, getDateTimeFormat) {\n    var _a = [];\n    for (var _i = 2; _i < arguments.length; _i++) {\n        _a[_i - 2] = arguments[_i];\n    }\n    var value = _a[0], _b = _a[1], options = _b === void 0 ? {} : _b;\n    var date = typeof value === 'string' ? new Date(value || 0) : value;\n    try {\n        return getFormatter(config, 'time', getDateTimeFormat, options).format(date);\n    }\n    catch (e) {\n        config.onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting time.', e));\n    }\n    return String(date);\n}\nexport function formatDateTimeRange(config, getDateTimeFormat) {\n    var _a = [];\n    for (var _i = 2; _i < arguments.length; _i++) {\n        _a[_i - 2] = arguments[_i];\n    }\n    var from = _a[0], to = _a[1], _b = _a[2], options = _b === void 0 ? {} : _b;\n    var timeZone = config.timeZone, locale = config.locale, onError = config.onError;\n    var filteredOptions = filterProps(options, DATE_TIME_FORMAT_OPTIONS, timeZone ? { timeZone: timeZone } : {});\n    try {\n        return getDateTimeFormat(locale, filteredOptions).formatRange(from, to);\n    }\n    catch (e) {\n        onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting date time range.', e));\n    }\n    return String(from);\n}\nexport function formatDateToParts(config, getDateTimeFormat) {\n    var _a = [];\n    for (var _i = 2; _i < arguments.length; _i++) {\n        _a[_i - 2] = arguments[_i];\n    }\n    var value = _a[0], _b = _a[1], options = _b === void 0 ? {} : _b;\n    var date = typeof value === 'string' ? new Date(value || 0) : value;\n    try {\n        return getFormatter(config, 'date', getDateTimeFormat, options).formatToParts(date); // TODO: remove this when https://github.com/microsoft/TypeScript/pull/50402 is merged\n    }\n    catch (e) {\n        config.onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting date.', e));\n    }\n    return [];\n}\nexport function formatTimeToParts(config, getDateTimeFormat) {\n    var _a = [];\n    for (var _i = 2; _i < arguments.length; _i++) {\n        _a[_i - 2] = arguments[_i];\n    }\n    var value = _a[0], _b = _a[1], options = _b === void 0 ? {} : _b;\n    var date = typeof value === 'string' ? new Date(value || 0) : value;\n    try {\n        return getFormatter(config, 'time', getDateTimeFormat, options).formatToParts(date); // TODO: remove this when https://github.com/microsoft/TypeScript/pull/50402 is merged\n    }\n    catch (e) {\n        config.onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting time.', e));\n    }\n    return [];\n}\n", "import { filterProps } from './utils';\nimport { FormatError, ErrorCode } from 'intl-messageformat';\nimport { IntlErrorCode, IntlError } from './error';\nvar DISPLAY_NAMES_OPTONS = [\n    'style',\n    'type',\n    'fallback',\n    'languageDisplay',\n];\nexport function formatDisplayName(_a, getDisplayNames, value, options) {\n    var locale = _a.locale, onError = _a.onError;\n    var DisplayNames = Intl.DisplayNames;\n    if (!DisplayNames) {\n        onError(new FormatError(\"Intl.DisplayNames is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-displaynames\\\"\\n\", ErrorCode.MISSING_INTL_API));\n    }\n    var filteredOptions = filterProps(options, DISPLAY_NAMES_OPTONS);\n    try {\n        return getDisplayNames(locale, filteredOptions).of(value);\n    }\n    catch (e) {\n        onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting display name.', e));\n    }\n}\n", "import { __assign } from \"tslib\";\nimport { filterProps } from './utils';\nimport { FormatError, ErrorCode } from 'intl-messageformat';\nimport { IntlError, IntlErrorCode } from './error';\nvar LIST_FORMAT_OPTIONS = [\n    'type',\n    'style',\n];\nvar now = Date.now();\nfunction generateToken(i) {\n    return \"\".concat(now, \"_\").concat(i, \"_\").concat(now);\n}\nexport function formatList(opts, getListFormat, values, options) {\n    if (options === void 0) { options = {}; }\n    var results = formatListToParts(opts, getListFormat, values, options).reduce(function (all, el) {\n        var val = el.value;\n        if (typeof val !== 'string') {\n            all.push(val);\n        }\n        else if (typeof all[all.length - 1] === 'string') {\n            all[all.length - 1] += val;\n        }\n        else {\n            all.push(val);\n        }\n        return all;\n    }, []);\n    return results.length === 1 ? results[0] : results.length === 0 ? '' : results;\n}\nexport function formatListToParts(_a, getListFormat, values, options) {\n    var locale = _a.locale, onError = _a.onError;\n    if (options === void 0) { options = {}; }\n    var ListFormat = Intl.ListFormat;\n    if (!ListFormat) {\n        onError(new FormatError(\"Intl.ListFormat is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-listformat\\\"\\n\", ErrorCode.MISSING_INTL_API));\n    }\n    var filteredOptions = filterProps(options, LIST_FORMAT_OPTIONS);\n    try {\n        var richValues_1 = {};\n        var serializedValues = values.map(function (v, i) {\n            if (typeof v === 'object') {\n                var id = generateToken(i);\n                richValues_1[id] = v;\n                return id;\n            }\n            return String(v);\n        });\n        return getListFormat(locale, filteredOptions)\n            .formatToParts(serializedValues)\n            .map(function (part) {\n            return part.type === 'literal'\n                ? part\n                : __assign(__assign({}, part), { value: richValues_1[part.value] || part.value });\n        });\n    }\n    catch (e) {\n        onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting list.', e));\n    }\n    // @ts-ignore\n    return values;\n}\n", "import { filterProps } from './utils';\nimport { IntlFormatError } from './error';\nimport { ErrorCode, FormatError } from 'intl-messageformat';\nvar PLURAL_FORMAT_OPTIONS = ['type'];\nexport function formatPlural(_a, getPluralRules, value, options) {\n    var locale = _a.locale, onError = _a.onError;\n    if (options === void 0) { options = {}; }\n    if (!Intl.PluralRules) {\n        onError(new FormatError(\"Intl.PluralRules is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-pluralrules\\\"\\n\", ErrorCode.MISSING_INTL_API));\n    }\n    var filteredOptions = filterProps(options, PLURAL_FORMAT_OPTIONS);\n    try {\n        return getPluralRules(locale, filteredOptions).select(value);\n    }\n    catch (e) {\n        onError(new IntlFormatError('Error formatting plural.', locale, e));\n    }\n    return 'other';\n}\n", "import { getNamedFormat, filterProps } from './utils';\nimport { FormatError, ErrorCode } from 'intl-messageformat';\nimport { IntlFormatError } from './error';\nvar RELATIVE_TIME_FORMAT_OPTIONS = ['numeric', 'style'];\nfunction getFormatter(_a, getRelativeTimeFormat, options) {\n    var locale = _a.locale, formats = _a.formats, onError = _a.onError;\n    if (options === void 0) { options = {}; }\n    var format = options.format;\n    var defaults = (!!format && getNamedFormat(formats, 'relative', format, onError)) || {};\n    var filteredOptions = filterProps(options, RELATIVE_TIME_FORMAT_OPTIONS, defaults);\n    return getRelativeTimeFormat(locale, filteredOptions);\n}\nexport function formatRelativeTime(config, getRelativeTimeFormat, value, unit, options) {\n    if (options === void 0) { options = {}; }\n    if (!unit) {\n        unit = 'second';\n    }\n    var RelativeTimeFormat = Intl.RelativeTimeFormat;\n    if (!RelativeTimeFormat) {\n        config.onError(new FormatError(\"Intl.RelativeTimeFormat is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-relativetimeformat\\\"\\n\", ErrorCode.MISSING_INTL_API));\n    }\n    try {\n        return getFormatter(config, getRelativeTimeFormat, options).format(value, unit);\n    }\n    catch (e) {\n        config.onError(new IntlFormatError('Error formatting relative time.', config.locale, e));\n    }\n    return String(value);\n}\n", "import { getNamedFormat, filterProps } from './utils';\nimport { IntlError, IntlErrorCode } from './error';\nvar NUMBER_FORMAT_OPTIONS = [\n    'style',\n    'currency',\n    'currencyDisplay',\n    'unit',\n    'unitDisplay',\n    'useGrouping',\n    'minimumIntegerDigits',\n    'minimumFractionDigits',\n    'maximumFractionDigits',\n    'minimumSignificantDigits',\n    'maximumSignificantDigits',\n    // ES2020 NumberFormat\n    'compactDisplay',\n    'currencyDisplay',\n    'currencySign',\n    'notation',\n    'signDisplay',\n    'unit',\n    'unitDisplay',\n    'numberingSystem',\n];\nexport function getFormatter(_a, getNumberFormat, options) {\n    var locale = _a.locale, formats = _a.formats, onError = _a.onError;\n    if (options === void 0) { options = {}; }\n    var format = options.format;\n    var defaults = ((format &&\n        getNamedFormat(formats, 'number', format, onError)) ||\n        {});\n    var filteredOptions = filterProps(options, NUMBER_FORMAT_OPTIONS, defaults);\n    return getNumberFormat(locale, filteredOptions);\n}\nexport function formatNumber(config, getNumberFormat, value, options) {\n    if (options === void 0) { options = {}; }\n    try {\n        return getFormatter(config, getNumberFormat, options).format(value);\n    }\n    catch (e) {\n        config.onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting number.', e));\n    }\n    return String(value);\n}\nexport function formatNumberToParts(config, getNumberFormat, value, options) {\n    if (options === void 0) { options = {}; }\n    try {\n        return getFormatter(config, getNumberFormat, options).formatToParts(value);\n    }\n    catch (e) {\n        config.onError(new IntlError(IntlErrorCode.FORMAT_ERROR, 'Error formatting number.', e));\n    }\n    return [];\n}\n", "import { __assign } from \"tslib\";\nimport { createFormatters, DEFAULT_INTL_CONFIG } from './utils';\nimport { InvalidConfigError, MissingDataError } from './error';\nimport { formatNumber, formatNumberToParts } from './number';\nimport { formatRelativeTime } from './relativeTime';\nimport { formatDate, formatDateToParts, formatTime, formatTimeToParts, formatDateTimeRange, } from './dateTime';\nimport { formatPlural } from './plural';\nimport { formatMessage } from './message';\nimport { formatList, formatListToParts } from './list';\nimport { formatDisplayName } from './displayName';\nfunction messagesContainString(messages) {\n    var firstMessage = messages ? messages[Object.keys(messages)[0]] : undefined;\n    return typeof firstMessage === 'string';\n}\nfunction verifyConfigMessages(config) {\n    if (config.onWarn &&\n        config.defaultRichTextElements &&\n        messagesContainString(config.messages || {})) {\n        config.onWarn(\"[@formatjs/intl] \\\"defaultRichTextElements\\\" was specified but \\\"message\\\" was not pre-compiled. \\nPlease consider using \\\"@formatjs/cli\\\" to pre-compile your messages for performance.\\nFor more details see https://formatjs.io/docs/getting-started/message-distribution\");\n    }\n}\n/**\n * Create intl object\n * @param config intl config\n * @param cache cache for formatter instances to prevent memory leak\n */\nexport function createIntl(config, cache) {\n    var formatters = createFormatters(cache);\n    var resolvedConfig = __assign(__assign({}, DEFAULT_INTL_CONFIG), config);\n    var locale = resolvedConfig.locale, defaultLocale = resolvedConfig.defaultLocale, onError = resolvedConfig.onError;\n    if (!locale) {\n        if (onError) {\n            onError(new InvalidConfigError(\"\\\"locale\\\" was not configured, using \\\"\".concat(defaultLocale, \"\\\" as fallback. See https://formatjs.io/docs/react-intl/api#intlshape for more details\")));\n        }\n        // Since there's no registered locale data for `locale`, this will\n        // fallback to the `defaultLocale` to make sure things can render.\n        // The `messages` are overridden to the `defaultProps` empty object\n        // to maintain referential equality across re-renders. It's assumed\n        // each <FormattedMessage> contains a `defaultMessage` prop.\n        resolvedConfig.locale = resolvedConfig.defaultLocale || 'en';\n    }\n    else if (!Intl.NumberFormat.supportedLocalesOf(locale).length && onError) {\n        onError(new MissingDataError(\"Missing locale data for locale: \\\"\".concat(locale, \"\\\" in Intl.NumberFormat. Using default locale: \\\"\").concat(defaultLocale, \"\\\" as fallback. See https://formatjs.io/docs/react-intl#runtime-requirements for more details\")));\n    }\n    else if (!Intl.DateTimeFormat.supportedLocalesOf(locale).length &&\n        onError) {\n        onError(new MissingDataError(\"Missing locale data for locale: \\\"\".concat(locale, \"\\\" in Intl.DateTimeFormat. Using default locale: \\\"\").concat(defaultLocale, \"\\\" as fallback. See https://formatjs.io/docs/react-intl#runtime-requirements for more details\")));\n    }\n    verifyConfigMessages(resolvedConfig);\n    return __assign(__assign({}, resolvedConfig), { formatters: formatters, formatNumber: formatNumber.bind(null, resolvedConfig, formatters.getNumberFormat), formatNumberToParts: formatNumberToParts.bind(null, resolvedConfig, formatters.getNumberFormat), formatRelativeTime: formatRelativeTime.bind(null, resolvedConfig, formatters.getRelativeTimeFormat), formatDate: formatDate.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatDateToParts: formatDateToParts.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatTime: formatTime.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatDateTimeRange: formatDateTimeRange.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatTimeToParts: formatTimeToParts.bind(null, resolvedConfig, formatters.getDateTimeFormat), formatPlural: formatPlural.bind(null, resolvedConfig, formatters.getPluralRules), \n        // @ts-expect-error TODO: will get to this later\n        formatMessage: formatMessage.bind(null, resolvedConfig, formatters), \n        // @ts-expect-error TODO: will get to this later\n        $t: formatMessage.bind(null, resolvedConfig, formatters), formatList: formatList.bind(null, resolvedConfig, formatters.getListFormat), formatListToParts: formatListToParts.bind(null, resolvedConfig, formatters.getListFormat), formatDisplayName: formatDisplayName.bind(null, resolvedConfig, formatters.getDisplayNames) });\n}\n", "/*\n * Copyright 2015, Yahoo Inc.\n * Copyrights licensed under the New BSD License.\n * See the accompanying LICENSE file for terms.\n */\nimport { __assign, __extends, __rest, __spreadArray } from \"tslib\";\nimport * as React from 'react';\nimport { Provider } from './injectIntl';\nimport { DEFAULT_INTL_CONFIG, invariantIntlContext, assignUniqueKeysToParts, shallowEqual, } from '../utils';\nimport { formatMessage as coreFormatMessage, createIntl as coreCreateIntl, createIntlCache, } from '@formatjs/intl';\nimport { isFormatXMLElementFn, } from 'intl-messageformat';\nfunction processIntlConfig(config) {\n    return {\n        locale: config.locale,\n        timeZone: config.timeZone,\n        fallbackOnEmptyString: config.fallbackOnEmptyString,\n        formats: config.formats,\n        textComponent: config.textComponent,\n        messages: config.messages,\n        defaultLocale: config.defaultLocale,\n        defaultFormats: config.defaultFormats,\n        onError: config.onError,\n        onWarn: config.onWarn,\n        wrapRichTextChunksInFragment: config.wrapRichTextChunksInFragment,\n        defaultRichTextElements: config.defaultRichTextElements,\n    };\n}\nfunction assignUniqueKeysToFormatXMLElementFnArgument(values) {\n    if (!values) {\n        return values;\n    }\n    return Object.keys(values).reduce(function (acc, k) {\n        var v = values[k];\n        acc[k] = isFormatXMLElementFn(v)\n            ? assignUniqueKeysToParts(v)\n            : v;\n        return acc;\n    }, {});\n}\nvar formatMessage = function (config, formatters, descriptor, rawValues) {\n    var rest = [];\n    for (var _i = 4; _i < arguments.length; _i++) {\n        rest[_i - 4] = arguments[_i];\n    }\n    var values = assignUniqueKeysToFormatXMLElementFnArgument(rawValues);\n    var chunks = coreFormatMessage.apply(void 0, __spreadArray([config,\n        formatters,\n        descriptor,\n        values], rest, false));\n    if (Array.isArray(chunks)) {\n        return React.Children.toArray(chunks);\n    }\n    return chunks;\n};\n/**\n * Create intl object\n * @param config intl config\n * @param cache cache for formatter instances to prevent memory leak\n */\nexport var createIntl = function (_a, cache) {\n    var rawDefaultRichTextElements = _a.defaultRichTextElements, config = __rest(_a, [\"defaultRichTextElements\"]);\n    var defaultRichTextElements = assignUniqueKeysToFormatXMLElementFnArgument(rawDefaultRichTextElements);\n    var coreIntl = coreCreateIntl(__assign(__assign(__assign({}, DEFAULT_INTL_CONFIG), config), { defaultRichTextElements: defaultRichTextElements }), cache);\n    var resolvedConfig = {\n        locale: coreIntl.locale,\n        timeZone: coreIntl.timeZone,\n        fallbackOnEmptyString: coreIntl.fallbackOnEmptyString,\n        formats: coreIntl.formats,\n        defaultLocale: coreIntl.defaultLocale,\n        defaultFormats: coreIntl.defaultFormats,\n        messages: coreIntl.messages,\n        onError: coreIntl.onError,\n        defaultRichTextElements: defaultRichTextElements,\n    };\n    return __assign(__assign({}, coreIntl), { \n        // @ts-expect-error fix this\n        formatMessage: formatMessage.bind(null, resolvedConfig, coreIntl.formatters), \n        // @ts-expect-error fix this\n        $t: formatMessage.bind(null, resolvedConfig, coreIntl.formatters) });\n};\nvar IntlProvider = /** @class */ (function (_super) {\n    __extends(IntlProvider, _super);\n    function IntlProvider() {\n        var _this = _super !== null && _super.apply(this, arguments) || this;\n        _this.cache = createIntlCache();\n        _this.state = {\n            cache: _this.cache,\n            intl: createIntl(processIntlConfig(_this.props), _this.cache),\n            prevConfig: processIntlConfig(_this.props),\n        };\n        return _this;\n    }\n    IntlProvider.getDerivedStateFromProps = function (props, _a) {\n        var prevConfig = _a.prevConfig, cache = _a.cache;\n        var config = processIntlConfig(props);\n        if (!shallowEqual(prevConfig, config)) {\n            return {\n                intl: createIntl(config, cache),\n                prevConfig: config,\n            };\n        }\n        return null;\n    };\n    IntlProvider.prototype.render = function () {\n        invariantIntlContext(this.state.intl);\n        return React.createElement(Provider, { value: this.state.intl }, this.props.children);\n    };\n    IntlProvider.displayName = 'IntlProvider';\n    IntlProvider.defaultProps = DEFAULT_INTL_CONFIG;\n    return IntlProvider;\n}(React.PureComponent));\nexport default IntlProvider;\n", "import { createFormattedComponent, createFormattedDateTimePartsComponent, } from './src/components/createFormattedComponent';\nimport injectIntl, { Provider as RawIntlProvider, Context as IntlContext, } from './src/components/injectIntl';\nimport useIntl from './src/components/useIntl';\nimport IntlProvider, { createIntl } from './src/components/provider';\nimport FormattedRelativeTime from './src/components/relative';\nimport FormattedPlural from './src/components/plural';\nimport FormattedMessage from './src/components/message';\nimport FormattedDateTimeRange from './src/components/dateTimeRange';\nexport { FormattedDateTimeRange, FormattedMessage, FormattedPlural, FormattedRelativeTime, IntlContext, IntlProvider, RawIntlProvider, createIntl, injectIntl, useIntl, };\nexport { createIntlCache, UnsupportedFormatterError, InvalidConfigError, MissingDataError, MessageFormatError, MissingTranslationError, IntlErrorCode as ReactIntlErrorCode, IntlError as ReactIntlError, } from '@formatjs/intl';\nexport function defineMessages(msgs) {\n    return msgs;\n}\nexport function defineMessage(msg) {\n    return msg;\n}\n// IMPORTANT: Explicit here to prevent api-extractor from outputing `import('./src/types').CustomFormatConfig`\nexport var FormattedDate = createFormattedComponent('formatDate');\nexport var FormattedTime = createFormattedComponent('formatTime');\nexport var FormattedNumber = createFormattedComponent('formatNumber');\nexport var FormattedList = createFormattedComponent('formatList');\nexport var FormattedDisplayName = createFormattedComponent('formatDisplayName');\nexport var FormattedDateParts = createFormattedDateTimePartsComponent('formatDate');\nexport var FormattedTimeParts = createFormattedDateTimePartsComponent('formatTime');\nexport { FormattedNumberParts, FormattedListParts, } from './src/components/createFormattedComponent';\n", "// The require scope\nvar __webpack_require__ = {};\n\n", "// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};", "__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))", "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n  (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n  typeof process === \"object\" &&\n  process + \"\" === \"[object process]\" &&\n  !process.versions.nw &&\n  !(process.versions.electron && process.type && process.type !== \"browser\");\n\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\n// Represent the percentage of the height of a single-line field over\n// the font size. Acrobat seems to use this value.\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n *  - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n *    `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n *  - SAVE is used, on the worker-thread, when saving modified annotations.\n *  - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n *    annotations are rendered onto the canvas (i.e. by being included in the\n *    operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n *    and their `annotationMode`-option.\n *  - IS_EDITING is used when editing is active in the viewer.\n *  - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n *    `OperatorList`-constructor (on the worker-thread).\n */\nconst RenderingIntentFlag = {\n  ANY: 0x01,\n  DISPLAY: 0x02,\n  PRINT: 0x04,\n  SAVE: 0x08,\n  ANNOTATIONS_FORMS: 0x10,\n  ANNOTATIONS_STORAGE: 0x20,\n  ANNOTATIONS_DISABLE: 0x40,\n  IS_EDITING: 0x80,\n  OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n  DISABLE: 0,\n  ENABLE: 1,\n  ENABLE_FORMS: 2,\n  ENABLE_STORAGE: 3,\n};\n\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\n\nconst AnnotationEditorType = {\n  DISABLE: -1,\n  NONE: 0,\n  FREETEXT: 3,\n  HIGHLIGHT: 9,\n  STAMP: 13,\n  INK: 15,\n  POPUP: 16,\n  SIGNATURE: 101,\n  COMMENT: 102,\n};\n\nconst AnnotationEditorParamsType = {\n  RESIZE: 1,\n  CREATE: 2,\n  FREETEXT_SIZE: 11,\n  FREETEXT_COLOR: 12,\n  FREETEXT_OPACITY: 13,\n  INK_COLOR: 21,\n  INK_THICKNESS: 22,\n  INK_OPACITY: 23,\n  HIGHLIGHT_COLOR: 31,\n  HIGHLIGHT_THICKNESS: 32,\n  HIGHLIGHT_FREE: 33,\n  HIGHLIGHT_SHOW_ALL: 34,\n  DRAW_STEP: 41,\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n  PRINT: 0x04,\n  MODIFY_CONTENTS: 0x08,\n  COPY: 0x10,\n  MODIFY_ANNOTATIONS: 0x20,\n  FILL_INTERACTIVE_FORMS: 0x100,\n  COPY_FOR_ACCESSIBILITY: 0x200,\n  ASSEMBLE: 0x400,\n  PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n  FILL: 0,\n  STROKE: 1,\n  FILL_STROKE: 2,\n  INVISIBLE: 3,\n  FILL_ADD_TO_PATH: 4,\n  STROKE_ADD_TO_PATH: 5,\n  FILL_STROKE_ADD_TO_PATH: 6,\n  ADD_TO_PATH: 7,\n  FILL_STROKE_MASK: 3,\n  ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n  GRAYSCALE_1BPP: 1,\n  RGB_24BPP: 2,\n  RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n  TEXT: 1,\n  LINK: 2,\n  FREETEXT: 3,\n  LINE: 4,\n  SQUARE: 5,\n  CIRCLE: 6,\n  POLYGON: 7,\n  POLYLINE: 8,\n  HIGHLIGHT: 9,\n  UNDERLINE: 10,\n  SQUIGGLY: 11,\n  STRIKEOUT: 12,\n  STAMP: 13,\n  CARET: 14,\n  INK: 15,\n  POPUP: 16,\n  FILEATTACHMENT: 17,\n  SOUND: 18,\n  MOVIE: 19,\n  WIDGET: 20,\n  SCREEN: 21,\n  PRINTERMARK: 22,\n  TRAPNET: 23,\n  WATERMARK: 24,\n  THREED: 25,\n  REDACT: 26,\n};\n\nconst AnnotationReplyType = {\n  GROUP: \"Group\",\n  REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n  INVISIBLE: 0x01,\n  HIDDEN: 0x02,\n  PRINT: 0x04,\n  NOZOOM: 0x08,\n  NOROTATE: 0x10,\n  NOVIEW: 0x20,\n  READONLY: 0x40,\n  LOCKED: 0x80,\n  TOGGLENOVIEW: 0x100,\n  LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n  READONLY: 0x0000001,\n  REQUIRED: 0x0000002,\n  NOEXPORT: 0x0000004,\n  MULTILINE: 0x0001000,\n  PASSWORD: 0x0002000,\n  NOTOGGLETOOFF: 0x0004000,\n  RADIO: 0x0008000,\n  PUSHBUTTON: 0x0010000,\n  COMBO: 0x0020000,\n  EDIT: 0x0040000,\n  SORT: 0x0080000,\n  FILESELECT: 0x0100000,\n  MULTISELECT: 0x0200000,\n  DONOTSPELLCHECK: 0x0400000,\n  DONOTSCROLL: 0x0800000,\n  COMB: 0x1000000,\n  RICHTEXT: 0x2000000,\n  RADIOSINUNISON: 0x2000000,\n  COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n  SOLID: 1,\n  DASHED: 2,\n  BEVELED: 3,\n  INSET: 4,\n  UNDERLINE: 5,\n};\n\nconst 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};\n\nconst DocumentActionEventType = {\n  WC: \"WillClose\",\n  WS: \"WillSave\",\n  DS: \"DidSave\",\n  WP: \"WillPrint\",\n  DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n  O: \"PageOpen\",\n  C: \"PageClose\",\n};\n\nconst VerbosityLevel = {\n  ERRORS: 0,\n  WARNINGS: 1,\n  INFOS: 5,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n  // Intentionally start from 1 so it is easy to spot bad operators that will be\n  // 0's.\n  // PLEASE NOTE: We purposely keep any removed operators commented out, since\n  //              re-numbering the list would risk breaking third-party users.\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  setStrokeTransparent: 92,\n  setFillTransparent: 93,\n  rawFillPath: 94,\n};\n\n// In order to have a switch statement that is fast (i.e. which use a jump\n// table), we need to have the OPS in a contiguous range.\nconst DrawOPS = {\n  moveTo: 0,\n  lineTo: 1,\n  curveTo: 2,\n  closePath: 3,\n};\n\nconst PasswordResponses = {\n  NEED_PASSWORD: 1,\n  INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n  if (Number.isInteger(level)) {\n    verbosity = level;\n  }\n}\n\nfunction getVerbosityLevel() {\n  return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n  if (verbosity >= VerbosityLevel.INFOS) {\n    // eslint-disable-next-line no-console\n    console.info(`Info: ${msg}`);\n  }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n  if (verbosity >= VerbosityLevel.WARNINGS) {\n    // eslint-disable-next-line no-console\n    console.warn(`Warning: ${msg}`);\n  }\n}\n\nfunction unreachable(msg) {\n  throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n  if (!cond) {\n    unreachable(msg);\n  }\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n  switch (url?.protocol) {\n    case \"http:\":\n    case \"https:\":\n    case \"ftp:\":\n    case \"mailto:\":\n    case \"tel:\":\n      return true;\n    default:\n      return false;\n  }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n  if (!url) {\n    return null;\n  }\n  if (options && typeof url === \"string\") {\n    // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n    if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n      const dots = url.match(/\\./g);\n      // Avoid accidentally matching a *relative* URL pointing to a file named\n      // e.g. \"www.pdf\" or similar.\n      if (dots?.length >= 2) {\n        url = `http://${url}`;\n      }\n    }\n\n    // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n    // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n    if (options.tryConvertEncoding) {\n      try {\n        url = stringToUTF8String(url);\n      } catch {}\n    }\n  }\n\n  const absoluteUrl = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n  return _isValidProtocol(absoluteUrl) ? absoluteUrl : null;\n}\n\n/**\n * Remove, or replace, the hash property of the URL.\n *\n * @param {URL|string} url - The absolute, or relative, URL.\n * @param {string} hash - The hash property (use an empty string to remove it).\n * @param {boolean} [allowRel] - Allow relative URLs.\n * @returns {string} The resulting URL string.\n */\nfunction updateUrlHash(url, hash, allowRel = false) {\n  const res = URL.parse(url);\n  if (res) {\n    res.hash = hash;\n    return res.href;\n  }\n  // Support well-formed relative URLs, necessary for `web/app.js` in GENERIC\n  // builds, by optionally falling back to string parsing.\n  if (allowRel && createValidAbsoluteUrl(url, \"http://example.com\")) {\n    return url.split(\"#\", 1)[0] + `${hash ? `#${hash}` : \"\"}`;\n  }\n  return \"\";\n}\n\nfunction shadow(obj, prop, value, nonSerializable = false) {\n  if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n    assert(\n      prop in obj,\n      `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n    );\n  }\n  Object.defineProperty(obj, prop, {\n    value,\n    enumerable: !nonSerializable,\n    configurable: true,\n    writable: false,\n  });\n  return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n  // eslint-disable-next-line no-shadow\n  function BaseException(message, name) {\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n      this.constructor === BaseException\n    ) {\n      unreachable(\"Cannot initialize BaseException.\");\n    }\n    this.message = message;\n    this.name = name;\n  }\n  BaseException.prototype = new Error();\n  BaseException.constructor = BaseException;\n\n  return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n  constructor(msg, code) {\n    super(msg, \"PasswordException\");\n    this.code = code;\n  }\n}\n\nclass UnknownErrorException extends BaseException {\n  constructor(msg, details) {\n    super(msg, \"UnknownErrorException\");\n    this.details = details;\n  }\n}\n\nclass InvalidPDFException extends BaseException {\n  constructor(msg) {\n    super(msg, \"InvalidPDFException\");\n  }\n}\n\nclass ResponseException extends BaseException {\n  constructor(msg, status, missing) {\n    super(msg, \"ResponseException\");\n    this.status = status;\n    this.missing = missing;\n  }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n  constructor(msg) {\n    super(msg, \"FormatError\");\n  }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n  constructor(msg) {\n    super(msg, \"AbortException\");\n  }\n}\n\nfunction bytesToString(bytes) {\n  if (typeof bytes !== \"object\" || bytes?.length === undefined) {\n    unreachable(\"Invalid argument for bytesToString\");\n  }\n  const length = bytes.length;\n  const MAX_ARGUMENT_COUNT = 8192;\n  if (length < MAX_ARGUMENT_COUNT) {\n    return String.fromCharCode.apply(null, bytes);\n  }\n  const strBuf = [];\n  for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n    const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n    const chunk = bytes.subarray(i, chunkEnd);\n    strBuf.push(String.fromCharCode.apply(null, chunk));\n  }\n  return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n  if (typeof str !== \"string\") {\n    unreachable(\"Invalid argument for stringToBytes\");\n  }\n  const length = str.length;\n  const bytes = new Uint8Array(length);\n  for (let i = 0; i < length; ++i) {\n    bytes[i] = str.charCodeAt(i) & 0xff;\n  }\n  return bytes;\n}\n\nfunction string32(value) {\n  if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n    assert(\n      typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n      `string32: Unexpected input \"${value}\".`\n    );\n  }\n  return String.fromCharCode(\n    (value >> 24) & 0xff,\n    (value >> 16) & 0xff,\n    (value >> 8) & 0xff,\n    value & 0xff\n  );\n}\n\nfunction objectSize(obj) {\n  return Object.keys(obj).length;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n  const buffer8 = new Uint8Array(4);\n  buffer8[0] = 1;\n  const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n  return view32[0] === 1;\n}\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n  try {\n    new Function(\"\"); // eslint-disable-line no-new, no-new-func\n    return true;\n  } catch {\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(\n      this,\n      \"isOffscreenCanvasSupported\",\n      typeof OffscreenCanvas !== \"undefined\"\n    );\n  }\n\n  static get isImageDecoderSupported() {\n    return shadow(\n      this,\n      \"isImageDecoderSupported\",\n      typeof ImageDecoder !== \"undefined\"\n    );\n  }\n\n  static get platform() {\n    const { platform, userAgent } = navigator;\n\n    return shadow(this, \"platform\", {\n      isAndroid: userAgent.includes(\"Android\"),\n      isLinux: platform.includes(\"Linux\"),\n      isMac: platform.includes(\"Mac\"),\n      isWindows: platform.includes(\"Win\"),\n      isFirefox:\n        (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n        userAgent.includes(\"Firefox\"),\n    });\n  }\n\n  static get isCSSRoundSupported() {\n    return shadow(\n      this,\n      \"isCSSRoundSupported\",\n      globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\")\n    );\n  }\n}\n\nconst hexNumbers = Array.from(Array(256).keys(), n =>\n  n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n  static makeHexColor(r, g, b) {\n    return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n  }\n\n  static domMatrixToTransform(dm) {\n    return [dm.a, dm.b, dm.c, dm.d, dm.e, dm.f];\n  }\n\n  // Apply a scaling matrix to some min/max values.\n  // If a scaling factor is negative then min and max must be\n  // swapped.\n  static scaleMinMax(transform, minMax) {\n    let temp;\n    if (transform[0]) {\n      if (transform[0] < 0) {\n        temp = minMax[0];\n        minMax[0] = minMax[2];\n        minMax[2] = temp;\n      }\n      minMax[0] *= transform[0];\n      minMax[2] *= transform[0];\n\n      if (transform[3] < 0) {\n        temp = minMax[1];\n        minMax[1] = minMax[3];\n        minMax[3] = temp;\n      }\n      minMax[1] *= transform[3];\n      minMax[3] *= transform[3];\n    } else {\n      temp = minMax[0];\n      minMax[0] = minMax[1];\n      minMax[1] = temp;\n      temp = minMax[2];\n      minMax[2] = minMax[3];\n      minMax[3] = temp;\n\n      if (transform[1] < 0) {\n        temp = minMax[1];\n        minMax[1] = minMax[3];\n        minMax[3] = temp;\n      }\n      minMax[1] *= transform[1];\n      minMax[3] *= transform[1];\n\n      if (transform[2] < 0) {\n        temp = minMax[0];\n        minMax[0] = minMax[2];\n        minMax[2] = temp;\n      }\n      minMax[0] *= transform[2];\n      minMax[2] *= transform[2];\n    }\n    minMax[0] += transform[4];\n    minMax[1] += transform[5];\n    minMax[2] += transform[4];\n    minMax[3] += transform[5];\n  }\n\n  // Concatenates two transformation matrices together and returns the result.\n  static transform(m1, m2) {\n    return [\n      m1[0] * m2[0] + m1[2] * m2[1],\n      m1[1] * m2[0] + m1[3] * m2[1],\n      m1[0] * m2[2] + m1[2] * m2[3],\n      m1[1] * m2[2] + m1[3] * m2[3],\n      m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n      m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n    ];\n  }\n\n  // Multiplies m (an array-based transform) by md (a DOMMatrix transform).\n  static multiplyByDOMMatrix(m, md) {\n    return [\n      m[0] * md.a + m[2] * md.b,\n      m[1] * md.a + m[3] * md.b,\n      m[0] * md.c + m[2] * md.d,\n      m[1] * md.c + m[3] * md.d,\n      m[0] * md.e + m[2] * md.f + m[4],\n      m[1] * md.e + m[3] * md.f + m[5],\n    ];\n  }\n\n  // For 2d affine transforms\n  static applyTransform(p, m, pos = 0) {\n    const p0 = p[pos];\n    const p1 = p[pos + 1];\n    p[pos] = p0 * m[0] + p1 * m[2] + m[4];\n    p[pos + 1] = p0 * m[1] + p1 * m[3] + m[5];\n  }\n\n  static applyTransformToBezier(p, transform, pos = 0) {\n    const m0 = transform[0];\n    const m1 = transform[1];\n    const m2 = transform[2];\n    const m3 = transform[3];\n    const m4 = transform[4];\n    const m5 = transform[5];\n    for (let i = 0; i < 6; i += 2) {\n      const pI = p[pos + i];\n      const pI1 = p[pos + i + 1];\n      p[pos + i] = pI * m0 + pI1 * m2 + m4;\n      p[pos + i + 1] = pI * m1 + pI1 * m3 + m5;\n    }\n  }\n\n  static applyInverseTransform(p, m) {\n    const p0 = p[0];\n    const p1 = p[1];\n    const d = m[0] * m[3] - m[1] * m[2];\n    p[0] = (p0 * m[3] - p1 * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n    p[1] = (-p0 * m[1] + p1 * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n  }\n\n  // Applies the transform to the rectangle and finds the minimum axially\n  // aligned bounding box.\n  static axialAlignedBoundingBox(rect, transform, output) {\n    const m0 = transform[0];\n    const m1 = transform[1];\n    const m2 = transform[2];\n    const m3 = transform[3];\n    const m4 = transform[4];\n    const m5 = transform[5];\n    const r0 = rect[0];\n    const r1 = rect[1];\n    const r2 = rect[2];\n    const r3 = rect[3];\n\n    let a0 = m0 * r0 + m4;\n    let a2 = a0;\n    let a1 = m0 * r2 + m4;\n    let a3 = a1;\n    let b0 = m3 * r1 + m5;\n    let b2 = b0;\n    let b1 = m3 * r3 + m5;\n    let b3 = b1;\n\n    if (m1 !== 0 || m2 !== 0) {\n      // Non-scaling matrix: shouldn't be frequent.\n      const m1r0 = m1 * r0;\n      const m1r2 = m1 * r2;\n      const m2r1 = m2 * r1;\n      const m2r3 = m2 * r3;\n      a0 += m2r1;\n      a3 += m2r1;\n      a1 += m2r3;\n      a2 += m2r3;\n      b0 += m1r0;\n      b3 += m1r0;\n      b1 += m1r2;\n      b2 += m1r2;\n    }\n\n    output[0] = Math.min(output[0], a0, a1, a2, a3);\n    output[1] = Math.min(output[1], b0, b1, b2, b3);\n    output[2] = Math.max(output[2], a0, a1, a2, a3);\n    output[3] = Math.max(output[3], b0, b1, b2, b3);\n  }\n\n  static inverseTransform(m) {\n    const d = m[0] * m[3] - m[1] * m[2];\n    return [\n      m[3] / d,\n      -m[1] / d,\n      -m[2] / d,\n      m[0] / d,\n      (m[2] * m[5] - m[4] * m[3]) / d,\n      (m[4] * m[1] - m[5] * m[0]) / d,\n    ];\n  }\n\n  // This calculation uses Singular Value Decomposition.\n  // The SVD can be represented with formula A = USV. We are interested in the\n  // matrix S here because it represents the scale values.\n  static singularValueDecompose2dScale(matrix, output) {\n    const m0 = matrix[0];\n    const m1 = matrix[1];\n    const m2 = matrix[2];\n    const m3 = matrix[3];\n    // Multiply matrix m with its transpose.\n    const a = m0 ** 2 + m1 ** 2;\n    const b = m0 * m2 + m1 * m3;\n    const c = m2 ** 2 + m3 ** 2;\n\n    // Solve the second degree polynomial to get roots.\n    const first = (a + c) / 2;\n    const second = Math.sqrt(first ** 2 - (a * c - b ** 2));\n    output[0] = Math.sqrt(first + second || 1);\n    output[1] = Math.sqrt(first - second || 1);\n  }\n\n  // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n  // For coordinate systems whose origin lies in the bottom-left, this\n  // means normalization to (BL,TR) ordering. For systems with origin in the\n  // top-left, this means (TL,BR) ordering.\n  static normalizeRect(rect) {\n    const r = rect.slice(0); // clone rect\n    if (rect[0] > rect[2]) {\n      r[0] = rect[2];\n      r[2] = rect[0];\n    }\n    if (rect[1] > rect[3]) {\n      r[1] = rect[3];\n      r[3] = rect[1];\n    }\n    return r;\n  }\n\n  // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n  // intersection of rect1 and rect2. If no intersection, returns 'null'\n  // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n  static intersect(rect1, rect2) {\n    const xLow = Math.max(\n      Math.min(rect1[0], rect1[2]),\n      Math.min(rect2[0], rect2[2])\n    );\n    const xHigh = Math.min(\n      Math.max(rect1[0], rect1[2]),\n      Math.max(rect2[0], rect2[2])\n    );\n    if (xLow > xHigh) {\n      return null;\n    }\n    const yLow = Math.max(\n      Math.min(rect1[1], rect1[3]),\n      Math.min(rect2[1], rect2[3])\n    );\n    const yHigh = Math.min(\n      Math.max(rect1[1], rect1[3]),\n      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 pointBoundingBox(x, y, minMax) {\n    minMax[0] = Math.min(minMax[0], x);\n    minMax[1] = Math.min(minMax[1], y);\n    minMax[2] = Math.max(minMax[2], x);\n    minMax[3] = Math.max(minMax[3], y);\n  }\n\n  static rectBoundingBox(x0, y0, x1, y1, minMax) {\n    minMax[0] = Math.min(minMax[0], x0, x1);\n    minMax[1] = Math.min(minMax[1], y0, y1);\n    minMax[2] = Math.max(minMax[2], x0, x1);\n    minMax[3] = Math.max(minMax[3], y0, y1);\n  }\n\n  static #getExtremumOnCurve(x0, x1, x2, x3, y0, y1, y2, y3, t, minMax) {\n    if (t <= 0 || t >= 1) {\n      return;\n    }\n    const mt = 1 - t;\n    const tt = t * t;\n    const ttt = tt * t;\n    const x = mt * (mt * (mt * x0 + 3 * t * x1) + 3 * tt * x2) + ttt * x3;\n    const y = mt * (mt * (mt * y0 + 3 * t * y1) + 3 * tt * y2) + ttt * y3;\n    minMax[0] = Math.min(minMax[0], x);\n    minMax[1] = Math.min(minMax[1], y);\n    minMax[2] = Math.max(minMax[2], x);\n    minMax[3] = Math.max(minMax[3], y);\n  }\n\n  static #getExtremum(x0, x1, x2, x3, y0, y1, y2, y3, a, b, c, minMax) {\n    if (Math.abs(a) < 1e-12) {\n      if (Math.abs(b) >= 1e-12) {\n        this.#getExtremumOnCurve(\n          x0,\n          x1,\n          x2,\n          x3,\n          y0,\n          y1,\n          y2,\n          y3,\n          -c / b,\n          minMax\n        );\n      }\n      return;\n    }\n\n    const delta = b ** 2 - 4 * c * a;\n    if (delta < 0) {\n      return;\n    }\n    const sqrtDelta = Math.sqrt(delta);\n    const a2 = 2 * a;\n    this.#getExtremumOnCurve(\n      x0,\n      x1,\n      x2,\n      x3,\n      y0,\n      y1,\n      y2,\n      y3,\n      (-b + sqrtDelta) / a2,\n      minMax\n    );\n    this.#getExtremumOnCurve(\n      x0,\n      x1,\n      x2,\n      x3,\n      y0,\n      y1,\n      y2,\n      y3,\n      (-b - sqrtDelta) / a2,\n      minMax\n    );\n  }\n\n  // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n  static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n    minMax[0] = Math.min(minMax[0], x0, x3);\n    minMax[1] = Math.min(minMax[1], y0, y3);\n    minMax[2] = Math.max(minMax[2], x0, x3);\n    minMax[3] = Math.max(minMax[3], y0, y3);\n\n    this.#getExtremum(\n      x0,\n      x1,\n      x2,\n      x3,\n      y0,\n      y1,\n      y2,\n      y3,\n      3 * (-x0 + 3 * (x1 - x2) + x3),\n      6 * (x0 - 2 * x1 + x2),\n      3 * (x1 - x0),\n      minMax\n    );\n    this.#getExtremum(\n      x0,\n      x1,\n      x2,\n      x3,\n      y0,\n      y1,\n      y2,\n      y3,\n      3 * (-y0 + 3 * (y1 - y2) + y3),\n      6 * (y0 - 2 * y1 + y2),\n      3 * (y1 - y0),\n      minMax\n    );\n  }\n}\n\nconst PDFStringTranslateTable = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n  0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n  0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n  0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n  0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str, keepEscapeSequence = false) {\n  // See section 7.9.2.2 Text String Type.\n  // The string can contain some language codes bracketed with 0x1b,\n  // so we must remove them.\n  if (str[0] >= \"\\xEF\") {\n    let encoding;\n    if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n      encoding = \"utf-16be\";\n      if (str.length % 2 === 1) {\n        str = str.slice(0, -1);\n      }\n    } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n      encoding = \"utf-16le\";\n      if (str.length % 2 === 1) {\n        str = str.slice(0, -1);\n      }\n    } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n      encoding = \"utf-8\";\n    }\n\n    if (encoding) {\n      try {\n        const decoder = new TextDecoder(encoding, { fatal: true });\n        const buffer = stringToBytes(str);\n        const decoded = decoder.decode(buffer);\n        if (keepEscapeSequence || !decoded.includes(\"\\x1b\")) {\n          return decoded;\n        }\n        return decoded.replaceAll(/\\x1b[^\\x1b]*(?:\\x1b|$)/g, \"\");\n      } catch (ex) {\n        warn(`stringToPDFString: \"${ex}\".`);\n      }\n    }\n  }\n  // ISO Latin 1\n  const strBuf = [];\n  for (let i = 0, ii = str.length; i < ii; i++) {\n    const charCode = str.charCodeAt(i);\n    if (!keepEscapeSequence && charCode === 0x1b) {\n      // eslint-disable-next-line no-empty\n      while (++i < ii && str.charCodeAt(i) !== 0x1b) {}\n      continue;\n    }\n    const code = PDFStringTranslateTable[charCode];\n    strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n  }\n  return strBuf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n  return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n  return unescape(encodeURIComponent(str));\n}\n\nfunction isArrayEqual(arr1, arr2) {\n  if (arr1.length !== arr2.length) {\n    return false;\n  }\n  for (let i = 0, ii = arr1.length; i < ii; i++) {\n    if (arr1[i] !== arr2[i]) {\n      return false;\n    }\n  }\n  return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n  if (!(date instanceof Date)) {\n    date = new Date(date);\n  }\n  const buffer = [\n    date.getUTCFullYear().toString(),\n    (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n    date.getUTCDate().toString().padStart(2, \"0\"),\n    date.getUTCHours().toString().padStart(2, \"0\"),\n    date.getUTCMinutes().toString().padStart(2, \"0\"),\n    date.getUTCSeconds().toString().padStart(2, \"0\"),\n  ];\n\n  return buffer.join(\"\");\n}\n\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n  if (!NormalizeRegex) {\n    // In order to generate the following regex:\n    //  - create a PDF containing all the chars in the range 0000-FFFF with\n    //    a NFKC which is different of the char.\n    //  - copy and paste all those chars and get the ones where NFKC is\n    //    required.\n    // It appears that most the chars here contain some ligatures.\n    NormalizeRegex =\n      /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n    NormalizationMap = new Map([[\"ﬅ\", \"ſt\"]]);\n  }\n  return str.replaceAll(NormalizeRegex, (_, p1, p2) =>\n    p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2)\n  );\n}\n\nfunction getUuid() {\n  if (\n    (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n    typeof crypto.randomUUID === \"function\"\n  ) {\n    return crypto.randomUUID();\n  }\n  const buf = new Uint8Array(32);\n  crypto.getRandomValues(buf);\n  return bytesToString(buf);\n}\n\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\n\nfunction _isValidExplicitDest(validRef, validName, dest) {\n  if (!Array.isArray(dest) || dest.length < 2) {\n    return false;\n  }\n  const [page, zoom, ...args] = dest;\n  if (!validRef(page) && !Number.isInteger(page)) {\n    return false;\n  }\n  if (!validName(zoom)) {\n    return false;\n  }\n  const argsLen = args.length;\n  let allowNull = true;\n  switch (zoom.name) {\n    case \"XYZ\":\n      if (argsLen < 2 || argsLen > 3) {\n        return false;\n      }\n      break;\n    case \"Fit\":\n    case \"FitB\":\n      return argsLen === 0;\n    case \"FitH\":\n    case \"FitBH\":\n    case \"FitV\":\n    case \"FitBV\":\n      if (argsLen > 1) {\n        return false;\n      }\n      break;\n    case \"FitR\":\n      if (argsLen !== 4) {\n        return false;\n      }\n      allowNull = false;\n      break;\n    default:\n      return false;\n  }\n  for (const arg of args) {\n    if (typeof arg === \"number\" || (allowNull && arg === null)) {\n      continue;\n    }\n    return false;\n  }\n  return true;\n}\n\n// TODO: Replace all occurrences of this function with `Math.clamp` once\n//       https://github.com/tc39/proposal-math-clamp/ is generally available.\nfunction MathClamp(v, min, max) {\n  return Math.min(Math.max(v, min), max);\n}\n\n// TODO: Remove this once `Uint8Array.prototype.toHex` is generally available.\nfunction toHexUtil(arr) {\n  if (Uint8Array.prototype.toHex) {\n    return arr.toHex();\n  }\n  return Array.from(arr, num => hexNumbers[num]).join(\"\");\n}\n\n// TODO: Remove this once `Uint8Array.prototype.toBase64` is generally\n//       available.\nfunction toBase64Util(arr) {\n  if (Uint8Array.prototype.toBase64) {\n    return arr.toBase64();\n  }\n  return btoa(bytesToString(arr));\n}\n\n// TODO: Remove this once `Uint8Array.fromBase64` is generally available.\nfunction fromBase64Util(str) {\n  if (Uint8Array.fromBase64) {\n    return Uint8Array.fromBase64(str);\n  }\n  return stringToBytes(atob(str));\n}\n\n// TODO: Remove this once https://bugzilla.mozilla.org/show_bug.cgi?id=1928493\n//       is fixed.\nif (\n  (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"SKIP_BABEL\")) &&\n  typeof Promise.try !== \"function\"\n) {\n  Promise.try = function (fn, ...args) {\n    return new Promise(resolve => {\n      resolve(fn(...args));\n    });\n  };\n}\n\n// TODO: Remove this once the `javascript.options.experimental.math_sumprecise`\n//       preference is removed from Firefox.\nif (typeof Math.sumPrecise !== \"function\") {\n  // Note that this isn't a \"proper\" polyfill, but since we're only using it to\n  // replace `Array.prototype.reduce()` invocations it should be fine.\n  Math.sumPrecise = function (numbers) {\n    return numbers.reduce((a, b) => a + b, 0);\n  };\n}\n\nif (\n  typeof PDFJSDev !== \"undefined\" &&\n  !PDFJSDev.test(\"SKIP_BABEL\") &&\n  typeof AbortSignal.any !== \"function\"\n) {\n  AbortSignal.any = function (iterable) {\n    const ac = new AbortController();\n    const { signal } = ac;\n\n    // Return immediately if any of the signals are already aborted.\n    for (const s of iterable) {\n      if (s.aborted) {\n        ac.abort(s.reason);\n        return signal;\n      }\n    }\n    // Register \"abort\" listeners for all signals.\n    for (const s of iterable) {\n      s.addEventListener(\n        \"abort\",\n        () => {\n          ac.abort(s.reason);\n        },\n        { signal } // Automatically remove the listener.\n      );\n    }\n\n    return signal;\n  };\n}\n\nexport {\n  _isValidExplicitDest,\n  AbortException,\n  AnnotationActionEventType,\n  AnnotationBorderStyleType,\n  AnnotationEditorParamsType,\n  AnnotationEditorPrefix,\n  AnnotationEditorType,\n  AnnotationFieldFlag,\n  AnnotationFlag,\n  AnnotationMode,\n  AnnotationPrefix,\n  AnnotationReplyType,\n  AnnotationType,\n  assert,\n  BaseException,\n  BASELINE_FACTOR,\n  bytesToString,\n  createValidAbsoluteUrl,\n  DocumentActionEventType,\n  DrawOPS,\n  FeatureTest,\n  FONT_IDENTITY_MATRIX,\n  FormatError,\n  fromBase64Util,\n  getModificationDate,\n  getUuid,\n  getVerbosityLevel,\n  hexNumbers,\n  ImageKind,\n  info,\n  InvalidPDFException,\n  isArrayEqual,\n  isNodeJS,\n  LINE_DESCENT_FACTOR,\n  LINE_FACTOR,\n  MathClamp,\n  normalizeUnicode,\n  objectSize,\n  OPS,\n  PageActionEventType,\n  PasswordException,\n  PasswordResponses,\n  PermissionFlag,\n  RenderingIntentFlag,\n  ResponseException,\n  setVerbosityLevel,\n  shadow,\n  string32,\n  stringToBytes,\n  stringToPDFString,\n  stringToUTF8String,\n  TextRenderingMode,\n  toBase64Util,\n  toHexUtil,\n  UnknownErrorException,\n  unreachable,\n  updateUrlHash,\n  utf8StringToString,\n  Util,\n  VerbosityLevel,\n  warn,\n};\n", "/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./api\").TextContent} TextContent */\n\nclass XfaText {\n  /**\n   * Walk an XFA tree and create an array of text nodes that is compatible\n   * with a regular PDFs TextContent. Currently, only TextItem.str is supported,\n   * all other fields and styles haven't been implemented.\n   *\n   * @param {Object} xfa - An XFA fake DOM object.\n   *\n   * @returns {TextContent}\n   */\n  static textContent(xfa) {\n    const items = [];\n    const output = {\n      items,\n      styles: Object.create(null),\n    };\n    function walk(node) {\n      if (!node) {\n        return;\n      }\n      let str = null;\n      const name = node.name;\n      if (name === \"#text\") {\n        str = node.value;\n      } else if (!XfaText.shouldBuildText(name)) {\n        return;\n      } else if (node?.attributes?.textContent) {\n        str = node.attributes.textContent;\n      } else if (node.value) {\n        str = node.value;\n      }\n      if (str !== null) {\n        items.push({\n          str,\n        });\n      }\n      if (!node.children) {\n        return;\n      }\n      for (const child of node.children) {\n        walk(child);\n      }\n    }\n    walk(xfa);\n    return output;\n  }\n\n  /**\n   * @param {string} name - DOM node name. (lower case)\n   *\n   * @returns {boolean} true if the DOM node should have a corresponding text\n   * node.\n   */\n  static shouldBuildText(name) {\n    return !(\n      name === \"textarea\" ||\n      name === \"input\" ||\n      name === \"option\" ||\n      name === \"select\"\n    );\n  }\n}\n\nexport { XfaText };\n", "/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_storage\").AnnotationStorage} AnnotationStorage */\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { XfaText } from \"./xfa_text.js\";\n\n/**\n * @typedef {Object} XfaLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Object} xfaHtml\n * @property {AnnotationStorage} [annotationStorage]\n * @property {IPDFLinkService} linkService\n * @property {string} [intent] - (default value is 'display').\n */\n\nclass XfaLayer {\n  static setupStorage(html, id, element, storage, intent) {\n    const storedData = storage.getValue(id, { value: null });\n    switch (element.name) {\n      case \"textarea\":\n        if (storedData.value !== null) {\n          html.textContent = storedData.value;\n        }\n        if (intent === \"print\") {\n          break;\n        }\n        html.addEventListener(\"input\", event => {\n          storage.setValue(id, { value: event.target.value });\n        });\n        break;\n      case \"input\":\n        if (\n          element.attributes.type === \"radio\" ||\n          element.attributes.type === \"checkbox\"\n        ) {\n          if (storedData.value === element.attributes.xfaOn) {\n            html.setAttribute(\"checked\", true);\n          } else if (storedData.value === element.attributes.xfaOff) {\n            // The checked attribute may have been set when opening the file,\n            // unset through the UI and we're here because of printing.\n            html.removeAttribute(\"checked\");\n          }\n          if (intent === \"print\") {\n            break;\n          }\n          html.addEventListener(\"change\", event => {\n            storage.setValue(id, {\n              value: event.target.checked\n                ? event.target.getAttribute(\"xfaOn\")\n                : event.target.getAttribute(\"xfaOff\"),\n            });\n          });\n        } else {\n          if (storedData.value !== null) {\n            html.setAttribute(\"value\", storedData.value);\n          }\n          if (intent === \"print\") {\n            break;\n          }\n          html.addEventListener(\"input\", event => {\n            storage.setValue(id, { value: event.target.value });\n          });\n        }\n        break;\n      case \"select\":\n        if (storedData.value !== null) {\n          html.setAttribute(\"value\", storedData.value);\n          for (const option of element.children) {\n            if (option.attributes.value === storedData.value) {\n              option.attributes.selected = true;\n            } else if (option.attributes.hasOwnProperty(\"selected\")) {\n              delete option.attributes.selected;\n            }\n          }\n        }\n        html.addEventListener(\"input\", event => {\n          const options = event.target.options;\n          const value =\n            options.selectedIndex === -1\n              ? \"\"\n              : options[options.selectedIndex].value;\n          storage.setValue(id, { value });\n        });\n        break;\n    }\n  }\n\n  static setAttributes({ html, element, storage = null, intent, linkService }) {\n    const { attributes } = element;\n    const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n\n    if (attributes.type === \"radio\") {\n      // Avoid to have a radio group when printing with the same as one\n      // already displayed.\n      attributes.name = `${attributes.name}-${intent}`;\n    }\n    for (const [key, value] of Object.entries(attributes)) {\n      if (value === null || value === undefined) {\n        continue;\n      }\n\n      switch (key) {\n        case \"class\":\n          if (value.length) {\n            html.setAttribute(key, value.join(\" \"));\n          }\n          break;\n        case \"dataId\":\n          // We don't need to add dataId in the html object but it can\n          // be useful to know its value when writing printing tests:\n          // in this case, don't skip dataId to have its value.\n          break;\n        case \"id\":\n          html.setAttribute(\"data-element-id\", value);\n          break;\n        case \"style\":\n          Object.assign(html.style, value);\n          break;\n        case \"textContent\":\n          html.textContent = value;\n          break;\n        default:\n          if (!isHTMLAnchorElement || (key !== \"href\" && key !== \"newWindow\")) {\n            html.setAttribute(key, value);\n          }\n      }\n    }\n\n    if (isHTMLAnchorElement) {\n      linkService.addLinkAttributes(\n        html,\n        attributes.href,\n        attributes.newWindow\n      );\n    }\n\n    // Set the value after the others to be sure to overwrite any other values.\n    if (storage && attributes.dataId) {\n      this.setupStorage(html, attributes.dataId, element, storage);\n    }\n  }\n\n  /**\n   * Render the XFA layer.\n   *\n   * @param {XfaLayerParameters} parameters\n   */\n  static render(parameters) {\n    const storage = parameters.annotationStorage;\n    const linkService = parameters.linkService;\n    const root = parameters.xfaHtml;\n    const intent = parameters.intent || \"display\";\n    const rootHtml = document.createElement(root.name);\n    if (root.attributes) {\n      this.setAttributes({\n        html: rootHtml,\n        element: root,\n        intent,\n        linkService,\n      });\n    }\n\n    const isNotForRichText = intent !== \"richText\";\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    // Set defaults.\n    if (isNotForRichText) {\n      rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n    }\n\n    // Text nodes used for the text highlighter.\n    const textDivs = [];\n\n    // In the rich text context, it's possible to just have a text node without\n    // a root element, so we handle this case here (see issue 17215).\n    if (root.children.length === 0) {\n      if (root.value) {\n        const node = document.createTextNode(root.value);\n        rootHtml.append(node);\n        if (isNotForRichText && XfaText.shouldBuildText(root.name)) {\n          textDivs.push(node);\n        }\n      }\n      return { textDivs };\n    }\n\n    const stack = [[root, -1, rootHtml]];\n\n    while (stack.length > 0) {\n      const [parent, i, html] = stack.at(-1);\n      if (i + 1 === parent.children.length) {\n        stack.pop();\n        continue;\n      }\n\n      const child = parent.children[++stack.at(-1)[1]];\n      if (child === null) {\n        continue;\n      }\n\n      const { name } = child;\n      if (name === \"#text\") {\n        const node = document.createTextNode(child.value);\n        textDivs.push(node);\n        html.append(node);\n        continue;\n      }\n\n      const childHtml = child?.attributes?.xmlns\n        ? document.createElementNS(child.attributes.xmlns, name)\n        : document.createElement(name);\n\n      html.append(childHtml);\n      if (child.attributes) {\n        this.setAttributes({\n          html: childHtml,\n          element: child,\n          storage,\n          intent,\n          linkService,\n        });\n      }\n\n      if (child.children?.length > 0) {\n        stack.push([child, -1, childHtml]);\n      } else if (child.value) {\n        const node = document.createTextNode(child.value);\n        if (isNotForRichText && XfaText.shouldBuildText(name)) {\n          textDivs.push(node);\n        }\n        childHtml.append(node);\n      }\n    }\n\n    /**\n     * TODO: re-enable that stuff once we've JS implementation.\n     * See https://bugzilla.mozilla.org/show_bug.cgi?id=1719465.\n     *\n     * for (const el of rootDiv.querySelectorAll(\n     * \".xfaDisabled input, .xfaDisabled textarea\"\n     * )) {\n     * el.setAttribute(\"disabled\", true);\n     * }\n     * for (const el of rootDiv.querySelectorAll(\n     * \".xfaReadOnly input, .xfaReadOnly textarea\"\n     * )) {\n     * el.setAttribute(\"readOnly\", true);\n     * }\n     */\n\n    for (const el of rootDiv.querySelectorAll(\n      \".xfaNonInteractive input, .xfaNonInteractive textarea\"\n    )) {\n      el.setAttribute(\"readOnly\", true);\n    }\n\n    return {\n      textDivs,\n    };\n  }\n\n  /**\n   * Update the XFA layer.\n   *\n   * @param {XfaLayerParameters} parameters\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\nexport { XfaLayer };\n", "/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  BaseException,\n  FeatureTest,\n  shadow,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport { XfaLayer } from \"./xfa_layer.js\";\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\nclass PixelsPerInch {\n  static CSS = 96.0;\n\n  static PDF = 72.0;\n\n  static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\n\nasync function fetchData(url, type = \"text\") {\n  if (\n    (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n    isValidFetchUrl(url, document.baseURI)\n  ) {\n    const response = await fetch(url);\n    if (!response.ok) {\n      throw new Error(response.statusText);\n    }\n    switch (type) {\n      case \"arraybuffer\":\n        return response.arrayBuffer();\n      case \"blob\":\n        return response.blob();\n      case \"json\":\n        return response.json();\n    }\n    return response.text();\n  }\n\n  // The Fetch API is not supported.\n  return new Promise((resolve, reject) => {\n    const request = new XMLHttpRequest();\n    request.open(\"GET\", url, /* async = */ true);\n    request.responseType = type;\n\n    request.onreadystatechange = () => {\n      if (request.readyState !== XMLHttpRequest.DONE) {\n        return;\n      }\n      if (request.status === 200 || request.status === 0) {\n        switch (type) {\n          case \"arraybuffer\":\n          case \"blob\":\n          case \"json\":\n            resolve(request.response);\n            return;\n        }\n        resolve(request.responseText);\n        return;\n      }\n      reject(new Error(request.statusText));\n    };\n\n    request.send(null);\n  });\n}\n\n/**\n * @typedef {Object} PageViewportParameters\n * @property {Array<number>} viewBox - The xMin, yMin, xMax and\n *   yMax coordinates.\n * @property {number} userUnit - The size of units.\n * @property {number} scale - The scale of the viewport.\n * @property {number} rotation - The rotation, in degrees, of the viewport.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset. The\n *   default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset. The\n *   default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be flipped.\n *   The default value is `false`.\n */\n\n/**\n * @typedef {Object} PageViewportCloneParameters\n * @property {number} [scale] - The scale, overriding the one in the cloned\n *   viewport. The default value is `this.scale`.\n * @property {number} [rotation] - The rotation, in degrees, overriding the one\n *   in the cloned viewport. The default value is `this.rotation`.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n *   The default value is `this.offsetX`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n *   The default value is `this.offsetY`.\n * @property {boolean} [dontFlip] - If true, the x-axis will not be flipped.\n *   The default value is `false`.\n */\n\n/**\n * PDF page viewport created based on scale, rotation and offset.\n */\nclass PageViewport {\n  /**\n   * @param {PageViewportParameters}\n   */\n  constructor({\n    viewBox,\n    userUnit,\n    scale,\n    rotation,\n    offsetX = 0,\n    offsetY = 0,\n    dontFlip = false,\n  }) {\n    this.viewBox = viewBox;\n    this.userUnit = userUnit;\n    this.scale = scale;\n    this.rotation = rotation;\n    this.offsetX = offsetX;\n    this.offsetY = offsetY;\n\n    scale *= userUnit; // Take the userUnit into account.\n\n    // creating transform to convert pdf coordinate system to the normal\n    // canvas like coordinates taking in account scale and rotation\n    const centerX = (viewBox[2] + viewBox[0]) / 2;\n    const centerY = (viewBox[3] + viewBox[1]) / 2;\n    let rotateA, rotateB, rotateC, rotateD;\n    // Normalize the rotation, by clamping it to the [0, 360) range.\n    rotation %= 360;\n    if (rotation < 0) {\n      rotation += 360;\n    }\n    switch (rotation) {\n      case 180:\n        rotateA = -1;\n        rotateB = 0;\n        rotateC = 0;\n        rotateD = 1;\n        break;\n      case 90:\n        rotateA = 0;\n        rotateB = 1;\n        rotateC = 1;\n        rotateD = 0;\n        break;\n      case 270:\n        rotateA = 0;\n        rotateB = -1;\n        rotateC = -1;\n        rotateD = 0;\n        break;\n      case 0:\n        rotateA = 1;\n        rotateB = 0;\n        rotateC = 0;\n        rotateD = -1;\n        break;\n      default:\n        throw new Error(\n          \"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\"\n        );\n    }\n\n    if (dontFlip) {\n      rotateC = -rotateC;\n      rotateD = -rotateD;\n    }\n\n    let offsetCanvasX, offsetCanvasY;\n    let width, height;\n    if (rotateA === 0) {\n      offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n      offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n      width = (viewBox[3] - viewBox[1]) * scale;\n      height = (viewBox[2] - viewBox[0]) * scale;\n    } else {\n      offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n      offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n      width = (viewBox[2] - viewBox[0]) * scale;\n      height = (viewBox[3] - viewBox[1]) * scale;\n    }\n    // creating transform for the following operations:\n    // translate(-centerX, -centerY), rotate and flip vertically,\n    // scale, and translate(offsetCanvasX, offsetCanvasY)\n    this.transform = [\n      rotateA * scale,\n      rotateB * scale,\n      rotateC * scale,\n      rotateD * scale,\n      offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,\n      offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY,\n    ];\n\n    this.width = width;\n    this.height = height;\n  }\n\n  /**\n   * The original, un-scaled, viewport dimensions.\n   * @type {Object}\n   */\n  get rawDims() {\n    const dims = this.viewBox;\n\n    return shadow(this, \"rawDims\", {\n      pageWidth: dims[2] - dims[0],\n      pageHeight: dims[3] - dims[1],\n      pageX: dims[0],\n      pageY: dims[1],\n    });\n  }\n\n  /**\n   * Clones viewport, with optional additional properties.\n   * @param {PageViewportCloneParameters} [params]\n   * @returns {PageViewport} Cloned viewport.\n   */\n  clone({\n    scale = this.scale,\n    rotation = this.rotation,\n    offsetX = this.offsetX,\n    offsetY = this.offsetY,\n    dontFlip = false,\n  } = {}) {\n    return new PageViewport({\n      viewBox: this.viewBox.slice(),\n      userUnit: this.userUnit,\n      scale,\n      rotation,\n      offsetX,\n      offsetY,\n      dontFlip,\n    });\n  }\n\n  /**\n   * Converts PDF point to the viewport coordinates. For examples, useful for\n   * converting PDF location into canvas pixel coordinates.\n   * @param {number} x - The x-coordinate.\n   * @param {number} y - The y-coordinate.\n   * @returns {Array} Array containing `x`- and `y`-coordinates of the\n   *   point in the viewport coordinate space.\n   * @see {@link convertToPdfPoint}\n   * @see {@link convertToViewportRectangle}\n   */\n  convertToViewportPoint(x, y) {\n    const p = [x, y];\n    Util.applyTransform(p, this.transform);\n    return p;\n  }\n\n  /**\n   * Converts PDF rectangle to the viewport coordinates.\n   * @param {Array} rect - The xMin, yMin, xMax and yMax coordinates.\n   * @returns {Array} Array containing corresponding coordinates of the\n   *   rectangle in the viewport coordinate space.\n   * @see {@link convertToViewportPoint}\n   */\n  convertToViewportRectangle(rect) {\n    const topLeft = [rect[0], rect[1]];\n    Util.applyTransform(topLeft, this.transform);\n    const bottomRight = [rect[2], rect[3]];\n    Util.applyTransform(bottomRight, this.transform);\n    return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n  }\n\n  /**\n   * Converts viewport coordinates to the PDF location. For examples, useful\n   * for converting canvas pixel location into PDF one.\n   * @param {number} x - The x-coordinate.\n   * @param {number} y - The y-coordinate.\n   * @returns {Array} Array containing `x`- and `y`-coordinates of the\n   *   point in the PDF coordinate space.\n   * @see {@link convertToViewportPoint}\n   */\n  convertToPdfPoint(x, y) {\n    const p = [x, y];\n    Util.applyInverseTransform(p, this.transform);\n    return p;\n  }\n}\n\nclass RenderingCancelledException extends BaseException {\n  constructor(msg, extraDelay = 0) {\n    super(msg, \"RenderingCancelledException\");\n    this.extraDelay = extraDelay;\n  }\n}\n\nfunction isDataScheme(url) {\n  const ii = url.length;\n  let i = 0;\n  while (i < ii && url[i].trim() === \"\") {\n    i++;\n  }\n  return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\n\nfunction isPdfFile(filename) {\n  return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\n\n/**\n * Gets the filename from a given URL.\n * @param {string} url\n * @returns {string}\n */\nfunction getFilenameFromUrl(url) {\n  [url] = url.split(/[#?]/, 1);\n  return url.substring(url.lastIndexOf(\"/\") + 1);\n}\n\n/**\n * Returns the filename or guessed filename from the url (see issue 3455).\n * @param {string} url - The original PDF location.\n * @param {string} defaultFilename - The value returned if the filename is\n *   unknown, or the protocol is unsupported.\n * @returns {string} Guessed PDF filename.\n */\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n  if (typeof url !== \"string\") {\n    return defaultFilename;\n  }\n  if (isDataScheme(url)) {\n    warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n    return defaultFilename;\n  }\n\n  const getURL = urlString => {\n    try {\n      return new URL(urlString);\n    } catch {\n      try {\n        return new URL(decodeURIComponent(urlString));\n      } catch {\n        try {\n          // Attempt to parse the URL using the document's base URI.\n          return new URL(urlString, \"https://foo.bar\");\n        } catch {\n          try {\n            return new URL(decodeURIComponent(urlString), \"https://foo.bar\");\n          } catch {\n            return null;\n          }\n        }\n      }\n    }\n  };\n\n  const newURL = getURL(url);\n  if (!newURL) {\n    // If the URL is invalid, return the default filename.\n    return defaultFilename;\n  }\n\n  const decode = name => {\n    try {\n      let decoded = decodeURIComponent(name);\n      if (decoded.includes(\"/\")) {\n        decoded = decoded.split(\"/\").at(-1);\n        if (decoded.test(/^\\.pdf$/i)) {\n          return decoded;\n        }\n        return name;\n      }\n      return decoded;\n    } catch {\n      return name;\n    }\n  };\n\n  const pdfRegex = /\\.pdf$/i;\n  const filename = newURL.pathname.split(\"/\").at(-1);\n  if (pdfRegex.test(filename)) {\n    return decode(filename);\n  }\n\n  if (newURL.searchParams.size > 0) {\n    const values = Array.from(newURL.searchParams.values()).reverse();\n    for (const value of values) {\n      if (pdfRegex.test(value)) {\n        // If any of the search parameters ends with \".pdf\", return it.\n        return decode(value);\n      }\n    }\n    const keys = Array.from(newURL.searchParams.keys()).reverse();\n    for (const key of keys) {\n      if (pdfRegex.test(key)) {\n        // If any of the search parameter keys ends with \".pdf\", return it.\n        return decode(key);\n      }\n    }\n  }\n\n  if (newURL.hash) {\n    const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n    const hashFilename = reFilename.exec(newURL.hash);\n    if (hashFilename) {\n      return decode(hashFilename[0]);\n    }\n  }\n\n  return defaultFilename;\n}\n\nclass StatTimer {\n  started = Object.create(null);\n\n  times = [];\n\n  time(name) {\n    if (name in this.started) {\n      warn(`Timer is already running for ${name}`);\n    }\n    this.started[name] = Date.now();\n  }\n\n  timeEnd(name) {\n    if (!(name in this.started)) {\n      warn(`Timer has not been started for ${name}`);\n    }\n    this.times.push({\n      name,\n      start: this.started[name],\n      end: Date.now(),\n    });\n    // Remove timer from started so it can be called again.\n    delete this.started[name];\n  }\n\n  toString() {\n    // Find the longest name for padding purposes.\n    const outBuf = [];\n    let longest = 0;\n    for (const { name } of this.times) {\n      longest = Math.max(name.length, longest);\n    }\n    for (const { name, start, end } of this.times) {\n      outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\n`);\n    }\n    return outBuf.join(\"\");\n  }\n}\n\nfunction isValidFetchUrl(url, baseUrl) {\n  if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n    throw new Error(\"Not implemented: isValidFetchUrl\");\n  }\n  const res = baseUrl ? URL.parse(url, baseUrl) : URL.parse(url);\n  // The Fetch API only supports the http/https protocols, and not file/ftp.\n  return res?.protocol === \"http:\" || res?.protocol === \"https:\";\n}\n\n/**\n * Event handler to suppress context menu.\n */\nfunction noContextMenu(e) {\n  e.preventDefault();\n}\n\nfunction stopEvent(e) {\n  e.preventDefault();\n  e.stopPropagation();\n}\n\n// Deprecated API function -- display regardless of the `verbosity` setting.\nfunction deprecated(details) {\n  // eslint-disable-next-line no-console\n  console.log(\"Deprecated API usage: \" + details);\n}\n\nclass PDFDateString {\n  static #regex;\n\n  /**\n   * Convert a PDF date string to a JavaScript `Date` object.\n   *\n   * The PDF date string format is described in section 7.9.4 of the official\n   * PDF 32000-1:2008 specification. However, in the PDF 1.7 reference (sixth\n   * edition) Adobe describes the same format including a trailing apostrophe.\n   * This syntax in incorrect, but Adobe Acrobat creates PDF files that contain\n   * them. We ignore all apostrophes as they are not necessary for date parsing.\n   *\n   * Moreover, Adobe Acrobat doesn't handle changing the date to universal time\n   * and doesn't use the user's time zone (effectively ignoring the HH' and mm'\n   * parts of the date string).\n   *\n   * @param {string} input\n   * @returns {Date|null}\n   */\n  static toDateObject(input) {\n    if (input instanceof Date) {\n      return input;\n    }\n    if (!input || typeof input !== \"string\") {\n      return null;\n    }\n\n    // Lazily initialize the regular expression.\n    this.#regex ||= new RegExp(\n      \"^D:\" + // Prefix (required)\n        \"(\\\\d{4})\" + // Year (required)\n        \"(\\\\d{2})?\" + // Month (optional)\n        \"(\\\\d{2})?\" + // Day (optional)\n        \"(\\\\d{2})?\" + // Hour (optional)\n        \"(\\\\d{2})?\" + // Minute (optional)\n        \"(\\\\d{2})?\" + // Second (optional)\n        \"([Z|+|-])?\" + // Universal time relation (optional)\n        \"(\\\\d{2})?\" + // Offset hour (optional)\n        \"'?\" + // Splitting apostrophe (optional)\n        \"(\\\\d{2})?\" + // Offset minute (optional)\n        \"'?\" // Trailing apostrophe (optional)\n    );\n\n    // Optional fields that don't satisfy the requirements from the regular\n    // expression (such as incorrect digit counts or numbers that are out of\n    // range) will fall back the defaults from the specification.\n    const matches = this.#regex.exec(input);\n    if (!matches) {\n      return null;\n    }\n\n    // JavaScript's `Date` object expects the month to be between 0 and 11\n    // instead of 1 and 12, so we have to correct for that.\n    const year = parseInt(matches[1], 10);\n    let month = parseInt(matches[2], 10);\n    month = month >= 1 && month <= 12 ? month - 1 : 0;\n    let day = parseInt(matches[3], 10);\n    day = day >= 1 && day <= 31 ? day : 1;\n    let hour = parseInt(matches[4], 10);\n    hour = hour >= 0 && hour <= 23 ? hour : 0;\n    let minute = parseInt(matches[5], 10);\n    minute = minute >= 0 && minute <= 59 ? minute : 0;\n    let second = parseInt(matches[6], 10);\n    second = second >= 0 && second <= 59 ? second : 0;\n    const universalTimeRelation = matches[7] || \"Z\";\n    let offsetHour = parseInt(matches[8], 10);\n    offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n    let offsetMinute = parseInt(matches[9], 10) || 0;\n    offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n\n    // Universal time relation 'Z' means that the local time is equal to the\n    // universal time, whereas the relations '+'/'-' indicate that the local\n    // time is later respectively earlier than the universal time. Every date\n    // is normalized to universal time.\n    if (universalTimeRelation === \"-\") {\n      hour += offsetHour;\n      minute += offsetMinute;\n    } else if (universalTimeRelation === \"+\") {\n      hour -= offsetHour;\n      minute -= offsetMinute;\n    }\n\n    return new Date(Date.UTC(year, month, day, hour, minute, second));\n  }\n}\n\n/**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n */\nfunction getXfaPageViewport(xfaPage, { scale = 1, rotation = 0 }) {\n  const { width, height } = xfaPage.attributes.style;\n  const viewBox = [0, 0, parseInt(width), parseInt(height)];\n\n  return new PageViewport({\n    viewBox,\n    userUnit: 1,\n    scale,\n    rotation,\n  });\n}\n\nfunction getRGB(color) {\n  if (color.startsWith(\"#\")) {\n    const colorRGB = parseInt(color.slice(1), 16);\n    return [\n      (colorRGB & 0xff0000) >> 16,\n      (colorRGB & 0x00ff00) >> 8,\n      colorRGB & 0x0000ff,\n    ];\n  }\n\n  if (color.startsWith(\"rgb(\")) {\n    // getComputedStyle(...).color returns a `rgb(R, G, B)` color.\n    return color\n      .slice(/* \"rgb(\".length */ 4, -1) // Strip out \"rgb(\" and \")\".\n      .split(\",\")\n      .map(x => parseInt(x));\n  }\n\n  if (color.startsWith(\"rgba(\")) {\n    return color\n      .slice(/* \"rgba(\".length */ 5, -1) // Strip out \"rgba(\" and \")\".\n      .split(\",\")\n      .map(x => parseInt(x))\n      .slice(0, 3);\n  }\n\n  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  // NOTE: The following does *not* affect `forced-colors: active` mode.\n  span.style.colorScheme = \"only light\";\n  document.body.append(span);\n  for (const name of colors.keys()) {\n    span.style.color = name;\n    const computedColor = window.getComputedStyle(span).color;\n    colors.set(name, getRGB(computedColor));\n  }\n  span.remove();\n}\n\nfunction getCurrentTransform(ctx) {\n  const { a, b, c, d, e, f } = ctx.getTransform();\n  return [a, b, c, d, e, f];\n}\n\nfunction getCurrentTransformInverse(ctx) {\n  const { a, b, c, d, e, f } = ctx.getTransform().invertSelf();\n  return [a, b, c, d, e, f];\n}\n\n/**\n * @param {HTMLDivElement} div\n * @param {PageViewport} viewport\n * @param {boolean} mustFlip\n * @param {boolean} mustRotate\n */\nfunction setLayerDimensions(\n  div,\n  viewport,\n  mustFlip = false,\n  mustRotate = true\n) {\n  if (viewport instanceof PageViewport) {\n    const { pageWidth, pageHeight } = viewport.rawDims;\n    const { style } = div;\n    const useRound = FeatureTest.isCSSRoundSupported;\n\n    const w = `var(--total-scale-factor) * ${pageWidth}px`,\n      h = `var(--total-scale-factor) * ${pageHeight}px`;\n    const widthStr = useRound\n        ? `round(down, ${w}, var(--scale-round-x))`\n        : `calc(${w})`,\n      heightStr = useRound\n        ? `round(down, ${h}, var(--scale-round-y))`\n        : `calc(${h})`;\n\n    if (!mustFlip || viewport.rotation % 180 === 0) {\n      style.width = widthStr;\n      style.height = heightStr;\n    } else {\n      style.width = heightStr;\n      style.height = widthStr;\n    }\n  }\n\n  if (mustRotate) {\n    div.setAttribute(\"data-main-rotation\", viewport.rotation);\n  }\n}\n\n/**\n * Scale factors for the canvas, necessary with HiDPI displays.\n */\nclass OutputScale {\n  constructor() {\n    const { pixelRatio } = OutputScale;\n\n    /**\n     * @type {number} Horizontal scale.\n     */\n    this.sx = pixelRatio;\n\n    /**\n     * @type {number} Vertical scale.\n     */\n    this.sy = pixelRatio;\n  }\n\n  /**\n   * @type {boolean} Returns `true` when scaling is required, `false` otherwise.\n   */\n  get scaled() {\n    return this.sx !== 1 || this.sy !== 1;\n  }\n\n  /**\n   * @type {boolean} Returns `true` when scaling is symmetric,\n   *   `false` otherwise.\n   */\n  get symmetric() {\n    return this.sx === this.sy;\n  }\n\n  /**\n   * @returns {boolean} Returns `true` if scaling was limited,\n   *   `false` otherwise.\n   */\n  limitCanvas(width, height, maxPixels, maxDim, capAreaFactor = -1) {\n    let maxAreaScale = Infinity,\n      maxWidthScale = Infinity,\n      maxHeightScale = Infinity;\n\n    maxPixels = OutputScale.capPixels(maxPixels, capAreaFactor);\n    if (maxPixels > 0) {\n      maxAreaScale = Math.sqrt(maxPixels / (width * height));\n    }\n    if (maxDim !== -1) {\n      maxWidthScale = maxDim / width;\n      maxHeightScale = maxDim / height;\n    }\n    const maxScale = Math.min(maxAreaScale, maxWidthScale, maxHeightScale);\n\n    if (this.sx > maxScale || this.sy > maxScale) {\n      this.sx = maxScale;\n      this.sy = maxScale;\n      return true;\n    }\n    return false;\n  }\n\n  static get pixelRatio() {\n    return globalThis.devicePixelRatio || 1;\n  }\n\n  static capPixels(maxPixels, capAreaFactor) {\n    if (capAreaFactor >= 0) {\n      const winPixels = Math.ceil(\n        (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")\n          ? window.innerWidth * window.innerHeight\n          : window.screen.availWidth * window.screen.availHeight) *\n          this.pixelRatio ** 2 *\n          (1 + capAreaFactor / 100)\n      );\n      return maxPixels > 0 ? Math.min(maxPixels, winPixels) : winPixels;\n    }\n    return maxPixels;\n  }\n}\n\n// See https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types\n// to know which types are supported by the browser.\nconst SupportedImageMimeTypes = [\n  \"image/apng\",\n  \"image/avif\",\n  \"image/bmp\",\n  \"image/gif\",\n  \"image/jpeg\",\n  \"image/png\",\n  \"image/svg+xml\",\n  \"image/webp\",\n  \"image/x-icon\",\n];\n\nclass ColorScheme {\n  static get isDarkMode() {\n    return shadow(\n      this,\n      \"isDarkMode\",\n      !!window?.matchMedia?.(\"(prefers-color-scheme: dark)\").matches\n    );\n  }\n}\n\nclass CSSConstants {\n  static get commentForegroundColor() {\n    const element = document.createElement(\"span\");\n    element.classList.add(\"comment\", \"sidebar\");\n    const { style } = element;\n    style.width = style.height = \"0\";\n    style.display = \"none\";\n    style.color = \"var(--comment-fg-color)\";\n    document.body.append(element);\n    const { color } = window.getComputedStyle(element);\n    element.remove();\n    return shadow(this, \"commentForegroundColor\", getRGB(color));\n  }\n}\n\nfunction applyOpacity(r, g, b, opacity) {\n  opacity = Math.min(Math.max(opacity ?? 1, 0), 1);\n  const white = 255 * (1 - opacity);\n  r = Math.round(r * opacity + white);\n  g = Math.round(g * opacity + white);\n  b = Math.round(b * opacity + white);\n  return [r, g, b];\n}\n\nfunction RGBToHSL(rgb, output) {\n  const r = rgb[0] / 255;\n  const g = rgb[1] / 255;\n  const b = rgb[2] / 255;\n\n  const max = Math.max(r, g, b);\n  const min = Math.min(r, g, b);\n  const l = (max + min) / 2;\n\n  if (max === min) {\n    // achromatic\n    output[0] = output[1] = 0; // hue and saturation are 0\n  } else {\n    const d = max - min;\n    output[1] = l < 0.5 ? d / (max + min) : d / (2 - max - min);\n    // hue\n    switch (max) {\n      case r:\n        output[0] = ((g - b) / d + (g < b ? 6 : 0)) * 60;\n        break;\n      case g:\n        output[0] = ((b - r) / d + 2) * 60;\n        break;\n      case b:\n        output[0] = ((r - g) / d + 4) * 60;\n        break;\n    }\n  }\n  output[2] = l;\n}\n\nfunction HSLToRGB(hsl, output) {\n  const h = hsl[0];\n  const s = hsl[1];\n  const l = hsl[2];\n  const c = (1 - Math.abs(2 * l - 1)) * s; // chroma\n  const x = c * (1 - Math.abs(((h / 60) % 2) - 1));\n  const m = l - c / 2;\n\n  switch (Math.floor(h / 60)) {\n    case 0:\n      output[0] = c + m;\n      output[1] = x + m;\n      output[2] = m;\n      break;\n    case 1:\n      output[0] = x + m;\n      output[1] = c + m;\n      output[2] = m;\n      break;\n    case 2:\n      output[0] = m;\n      output[1] = c + m;\n      output[2] = x + m;\n      break;\n    case 3:\n      output[0] = m;\n      output[1] = x + m;\n      output[2] = c + m;\n      break;\n    case 4:\n      output[0] = x + m;\n      output[1] = m;\n      output[2] = c + m;\n      break;\n    case 5:\n    case 6:\n      output[0] = c + m;\n      output[1] = m;\n      output[2] = x + m;\n      break;\n  }\n}\n\nfunction computeLuminance(x) {\n  return x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n}\n\nfunction contrastRatio(hsl1, hsl2, output) {\n  HSLToRGB(hsl1, output);\n  output.map(computeLuminance);\n  const lum1 = 0.2126 * output[0] + 0.7152 * output[1] + 0.0722 * output[2];\n  HSLToRGB(hsl2, output);\n  output.map(computeLuminance);\n  const lum2 = 0.2126 * output[0] + 0.7152 * output[1] + 0.0722 * output[2];\n  return lum1 > lum2\n    ? (lum1 + 0.05) / (lum2 + 0.05)\n    : (lum2 + 0.05) / (lum1 + 0.05);\n}\n\n// Cache for the findContrastColor function, to improve performance.\nconst contrastCache = new Map();\n\n/**\n * Find a color that has sufficient contrast against a fixed color.\n * The luminance (in HSL color space) of the base color is adjusted\n * until the contrast ratio between the base color and the fixed color\n * is at least the minimum contrast ratio required by WCAG 2.1.\n * @param {Array<number>} baseColor\n * @param {Array<number>} fixedColor\n * @returns {string}\n */\nfunction findContrastColor(baseColor, fixedColor) {\n  const key =\n    baseColor[0] +\n    baseColor[1] * 0x100 +\n    baseColor[2] * 0x10000 +\n    fixedColor[0] * 0x1000000 +\n    fixedColor[1] * 0x100000000 +\n    fixedColor[2] * 0x10000000000;\n  let cachedValue = contrastCache.get(key);\n  if (cachedValue) {\n    return cachedValue;\n  }\n  const array = new Float32Array(9);\n  const output = array.subarray(0, 3);\n  const baseHSL = array.subarray(3, 6);\n  RGBToHSL(baseColor, baseHSL);\n  const fixedHSL = array.subarray(6, 9);\n  RGBToHSL(fixedColor, fixedHSL);\n  const isFixedColorDark = fixedHSL[2] < 0.5;\n\n  // Use the contrast ratio requirements from WCAG 2.1.\n  // https://www.w3.org/TR/WCAG21/#contrast-minimum\n  // https://www.w3.org/TR/WCAG21/#contrast-enhanced\n  const minContrast = isFixedColorDark ? 12 : 4.5;\n\n  baseHSL[2] = isFixedColorDark\n    ? Math.sqrt(baseHSL[2])\n    : 1 - Math.sqrt(1 - baseHSL[2]);\n\n  if (contrastRatio(baseHSL, fixedHSL, output) < minContrast) {\n    let start, end;\n    if (isFixedColorDark) {\n      start = baseHSL[2];\n      end = 1;\n    } else {\n      start = 0;\n      end = baseHSL[2];\n    }\n    const PRECISION = 0.005;\n    while (end - start > PRECISION) {\n      const mid = (baseHSL[2] = (start + end) / 2);\n      if (\n        isFixedColorDark ===\n        contrastRatio(baseHSL, fixedHSL, output) < minContrast\n      ) {\n        start = mid;\n      } else {\n        end = mid;\n      }\n    }\n    baseHSL[2] = isFixedColorDark ? end : start;\n  }\n\n  HSLToRGB(baseHSL, output);\n  cachedValue = Util.makeHexColor(\n    Math.round(output[0] * 255),\n    Math.round(output[1] * 255),\n    Math.round(output[2] * 255)\n  );\n  contrastCache.set(key, cachedValue);\n  return cachedValue;\n}\n\nfunction renderRichText({ html, dir, className }, container) {\n  const fragment = document.createDocumentFragment();\n  if (typeof html === \"string\") {\n    const p = document.createElement(\"p\");\n    p.dir = dir || \"auto\";\n    const lines = html.split(/(?:\\r\\n?|\\n)/);\n    for (let i = 0, ii = lines.length; i < ii; ++i) {\n      const line = lines[i];\n      p.append(document.createTextNode(line));\n      if (i < ii - 1) {\n        p.append(document.createElement(\"br\"));\n      }\n    }\n    fragment.append(p);\n  } else {\n    XfaLayer.render({\n      xfaHtml: html,\n      div: fragment,\n      intent: \"richText\",\n    });\n  }\n  fragment.firstChild.classList.add(\"richText\", className);\n  container.append(fragment);\n}\n\nexport {\n  applyOpacity,\n  ColorScheme,\n  CSSConstants,\n  deprecated,\n  fetchData,\n  findContrastColor,\n  getColorValues,\n  getCurrentTransform,\n  getCurrentTransformInverse,\n  getFilenameFromUrl,\n  getPdfFilenameFromUrl,\n  getRGB,\n  getXfaPageViewport,\n  isDataScheme,\n  isPdfFile,\n  isValidFetchUrl,\n  noContextMenu,\n  OutputScale,\n  PageViewport,\n  PDFDateString,\n  PixelsPerInch,\n  RenderingCancelledException,\n  renderRichText,\n  setLayerDimensions,\n  StatTimer,\n  stopEvent,\n  SupportedImageMimeTypes,\n  SVG_NS,\n};\n", "/* Copyright 2023 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { noContextMenu, stopEvent } from \"../display_utils.js\";\n\nclass EditorToolbar {\n  #toolbar = null;\n\n  #colorPicker = null;\n\n  #editor;\n\n  #buttons = null;\n\n  #altText = null;\n\n  #comment = null;\n\n  #commentButtonDivider = null;\n\n  #signatureDescriptionButton = null;\n\n  static #l10nRemove = null;\n\n  constructor(editor) {\n    this.#editor = editor;\n\n    EditorToolbar.#l10nRemove ||= Object.freeze({\n      freetext: \"pdfjs-editor-remove-freetext-button\",\n      highlight: \"pdfjs-editor-remove-highlight-button\",\n      ink: \"pdfjs-editor-remove-ink-button\",\n      stamp: \"pdfjs-editor-remove-stamp-button\",\n      signature: \"pdfjs-editor-remove-signature-button\",\n    });\n  }\n\n  render() {\n    const editToolbar = (this.#toolbar = document.createElement(\"div\"));\n    editToolbar.classList.add(\"editToolbar\", \"hidden\");\n    editToolbar.setAttribute(\"role\", \"toolbar\");\n\n    const signal = this.#editor._uiManager._signal;\n    if (signal instanceof AbortSignal && !signal.aborted) {\n      editToolbar.addEventListener(\"contextmenu\", noContextMenu, { signal });\n      editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown, {\n        signal,\n      });\n    }\n\n    const buttons = (this.#buttons = document.createElement(\"div\"));\n    buttons.className = \"buttons\";\n    editToolbar.append(buttons);\n\n    const position = this.#editor.toolbarPosition;\n    if (position) {\n      const { style } = editToolbar;\n      const x =\n        this.#editor._uiManager.direction === \"ltr\"\n          ? 1 - position[0]\n          : position[0];\n      style.insetInlineEnd = `${100 * x}%`;\n      style.top = `calc(${\n        100 * position[1]\n      }% + var(--editor-toolbar-vert-offset))`;\n    }\n\n    return editToolbar;\n  }\n\n  get div() {\n    return this.#toolbar;\n  }\n\n  static #pointerDown(e) {\n    e.stopPropagation();\n  }\n\n  #focusIn(e) {\n    this.#editor._focusEventsAllowed = false;\n    stopEvent(e);\n  }\n\n  #focusOut(e) {\n    this.#editor._focusEventsAllowed = true;\n    stopEvent(e);\n  }\n\n  #addListenersToElement(element) {\n    // If we're clicking on a button with the keyboard or with\n    // the mouse, we don't want to trigger any focus events on\n    // the editor.\n    const signal = this.#editor._uiManager._signal;\n    if (!(signal instanceof AbortSignal) || signal.aborted) {\n      return false;\n    }\n    element.addEventListener(\"focusin\", this.#focusIn.bind(this), {\n      capture: true,\n      signal,\n    });\n    element.addEventListener(\"focusout\", this.#focusOut.bind(this), {\n      capture: true,\n      signal,\n    });\n    element.addEventListener(\"contextmenu\", noContextMenu, { signal });\n    return true;\n  }\n\n  hide() {\n    this.#toolbar.classList.add(\"hidden\");\n    this.#colorPicker?.hideDropdown();\n  }\n\n  show() {\n    this.#toolbar.classList.remove(\"hidden\");\n    this.#altText?.shown();\n    this.#comment?.shown();\n  }\n\n  addDeleteButton() {\n    const { editorType, _uiManager } = this.#editor;\n\n    const button = document.createElement(\"button\");\n    button.classList.add(\"basic\", \"deleteButton\");\n    button.tabIndex = 0;\n    button.setAttribute(\"data-l10n-id\", EditorToolbar.#l10nRemove[editorType]);\n    if (this.#addListenersToElement(button)) {\n      button.addEventListener(\n        \"click\",\n        e => {\n          _uiManager.delete();\n        },\n        { signal: _uiManager._signal }\n      );\n    }\n    this.#buttons.append(button);\n  }\n\n  get #divider() {\n    const divider = document.createElement(\"div\");\n    divider.className = \"divider\";\n    return divider;\n  }\n\n  async addAltText(altText) {\n    const button = await altText.render();\n    this.#addListenersToElement(button);\n    this.#buttons.append(button, this.#divider);\n    this.#altText = altText;\n  }\n\n  addComment(comment, beforeElement = null) {\n    if (this.#comment) {\n      return;\n    }\n    const button = comment.renderForToolbar();\n    if (!button) {\n      return;\n    }\n    this.#addListenersToElement(button);\n    const divider = (this.#commentButtonDivider = this.#divider);\n    if (!beforeElement) {\n      this.#buttons.append(button, divider);\n    } else {\n      this.#buttons.insertBefore(button, beforeElement);\n      this.#buttons.insertBefore(divider, beforeElement);\n    }\n    this.#comment = comment;\n    comment.toolbar = this;\n  }\n\n  addColorPicker(colorPicker) {\n    if (this.#colorPicker) {\n      return;\n    }\n    this.#colorPicker = colorPicker;\n    const button = colorPicker.renderButton();\n    this.#addListenersToElement(button);\n    this.#buttons.append(button, this.#divider);\n  }\n\n  async addEditSignatureButton(signatureManager) {\n    const button = (this.#signatureDescriptionButton =\n      await signatureManager.renderEditButton(this.#editor));\n    this.#addListenersToElement(button);\n    this.#buttons.append(button, this.#divider);\n  }\n\n  removeButton(name) {\n    switch (name) {\n      case \"comment\":\n        this.#comment?.removeToolbarCommentButton();\n        this.#comment = null;\n        this.#commentButtonDivider?.remove();\n        this.#commentButtonDivider = null;\n        break;\n    }\n  }\n\n  async addButton(name, tool) {\n    switch (name) {\n      case \"colorPicker\":\n        this.addColorPicker(tool);\n        break;\n      case \"altText\":\n        await this.addAltText(tool);\n        break;\n      case \"editSignature\":\n        await this.addEditSignatureButton(tool);\n        break;\n      case \"delete\":\n        this.addDeleteButton();\n        break;\n      case \"comment\":\n        this.addComment(tool);\n        break;\n    }\n  }\n\n  async addButtonBefore(name, tool, beforeSelector) {\n    const beforeElement = this.#buttons.querySelector(beforeSelector);\n    if (!beforeElement) {\n      return;\n    }\n    if (name === \"comment\") {\n      this.addComment(tool, beforeElement);\n    }\n  }\n\n  updateEditSignatureButton(description) {\n    if (this.#signatureDescriptionButton) {\n      this.#signatureDescriptionButton.title = description;\n    }\n  }\n\n  remove() {\n    this.#toolbar.remove();\n    this.#colorPicker?.destroy();\n    this.#colorPicker = null;\n  }\n}\n\nclass FloatingToolbar {\n  #buttons = null;\n\n  #toolbar = null;\n\n  #uiManager;\n\n  constructor(uiManager) {\n    this.#uiManager = uiManager;\n  }\n\n  #render() {\n    const editToolbar = (this.#toolbar = document.createElement(\"div\"));\n    editToolbar.className = \"editToolbar\";\n    editToolbar.setAttribute(\"role\", \"toolbar\");\n\n    const signal = this.#uiManager._signal;\n    if (signal instanceof AbortSignal && !signal.aborted) {\n      editToolbar.addEventListener(\"contextmenu\", noContextMenu, {\n        signal,\n      });\n    }\n\n    const buttons = (this.#buttons = document.createElement(\"div\"));\n    buttons.className = \"buttons\";\n    editToolbar.append(buttons);\n\n    if (this.#uiManager.hasCommentManager()) {\n      this.#makeButton(\n        \"commentButton\",\n        `pdfjs-comment-floating-button`,\n        \"pdfjs-comment-floating-button-label\",\n        () => {\n          this.#uiManager.commentSelection(\"floating_button\");\n        }\n      );\n    }\n\n    this.#makeButton(\n      \"highlightButton\",\n      `pdfjs-highlight-floating-button1`,\n      \"pdfjs-highlight-floating-button-label\",\n      () => {\n        this.#uiManager.highlightSelection(\"floating_button\");\n      }\n    );\n\n    return editToolbar;\n  }\n\n  #getLastPoint(boxes, isLTR) {\n    let lastY = 0;\n    let lastX = 0;\n    for (const box of boxes) {\n      const y = box.y + box.height;\n      if (y < lastY) {\n        continue;\n      }\n      const x = box.x + (isLTR ? box.width : 0);\n      if (y > lastY) {\n        lastX = x;\n        lastY = y;\n        continue;\n      }\n      if (isLTR) {\n        if (x > lastX) {\n          lastX = x;\n        }\n      } else if (x < lastX) {\n        lastX = x;\n      }\n    }\n    return [isLTR ? 1 - lastX : lastX, lastY];\n  }\n\n  show(parent, boxes, isLTR) {\n    const [x, y] = this.#getLastPoint(boxes, isLTR);\n    const { style } = (this.#toolbar ||= this.#render());\n    parent.append(this.#toolbar);\n    style.insetInlineEnd = `${100 * x}%`;\n    style.top = `calc(${100 * y}% + var(--editor-toolbar-vert-offset))`;\n  }\n\n  hide() {\n    this.#toolbar.remove();\n  }\n\n  #makeButton(buttonClass, l10nId, labelL10nId, clickHandler) {\n    const button = document.createElement(\"button\");\n    button.classList.add(\"basic\", buttonClass);\n    button.tabIndex = 0;\n    button.setAttribute(\"data-l10n-id\", l10nId);\n    const span = document.createElement(\"span\");\n    button.append(span);\n    span.className = \"visuallyHidden\";\n    span.setAttribute(\"data-l10n-id\", labelL10nId);\n    const signal = this.#uiManager._signal;\n    if (signal instanceof AbortSignal && !signal.aborted) {\n      button.addEventListener(\"contextmenu\", noContextMenu, { signal });\n      button.addEventListener(\"click\", clickHandler, { signal });\n    }\n    this.#buttons.append(button);\n  }\n}\n\nexport { EditorToolbar, FloatingToolbar };\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\n/** @typedef {import(\"./editor.js\").AnnotationEditor} AnnotationEditor */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_editor_layer.js\").AnnotationEditorLayer} AnnotationEditorLayer */\n\nimport {\n  AnnotationEditorParamsType,\n  AnnotationEditorPrefix,\n  AnnotationEditorType,\n  FeatureTest,\n  getUuid,\n  shadow,\n  Util,\n  warn,\n} from \"../../shared/util.js\";\nimport {\n  fetchData,\n  getColorValues,\n  getRGB,\n  PixelsPerInch,\n  stopEvent,\n} from \"../display_utils.js\";\nimport { FloatingToolbar } from \"./toolbar.js\";\n\nfunction bindEvents(obj, element, names) {\n  for (const name of names) {\n    element.addEventListener(name, obj[name].bind(obj));\n  }\n}\n\n/**\n * Class to create some unique ids for the different editors.\n */\nclass IdManager {\n  #id = 0;\n\n  constructor() {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n      Object.defineProperty(this, \"reset\", {\n        value: () => (this.#id = 0),\n      });\n    }\n  }\n\n  /**\n   * Get a unique id.\n   * @returns {string}\n   */\n  get id() {\n    return `${AnnotationEditorPrefix}${this.#id++}`;\n  }\n}\n\n/**\n * Class to manage the images used by the editors.\n * The main idea is to try to minimize the memory used by the images.\n * The images are cached and reused when possible\n * We use a refCounter to know when an image is not used anymore but we need to\n * be able to restore an image after a remove+undo, so we keep a file reference\n * or an url one.\n */\nclass ImageManager {\n  #baseId = getUuid();\n\n  #id = 0;\n\n  #cache = null;\n\n  static get _isSVGFittingCanvas() {\n    // By default, Firefox doesn't rescale without preserving the aspect ratio\n    // when drawing an SVG image on a canvas, see https://bugzilla.mozilla.org/1547776.\n    // The \"workaround\" is to append \"svgView(preserveAspectRatio(none))\" to the\n    // url, but according to comment #15, it seems that it leads to unexpected\n    // behavior in Safari.\n    const svg = `data:image/svg+xml;charset=UTF-8,<svg viewBox=\"0 0 1 1\" width=\"1\" height=\"1\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"1\" height=\"1\" style=\"fill:red;\"/></svg>`;\n    const canvas = new OffscreenCanvas(1, 3);\n    const ctx = canvas.getContext(\"2d\", { willReadFrequently: true });\n    const image = new Image();\n    image.src = svg;\n    const promise = image.decode().then(() => {\n      ctx.drawImage(image, 0, 0, 1, 1, 0, 0, 1, 3);\n      return new Uint32Array(ctx.getImageData(0, 0, 1, 1).data.buffer)[0] === 0;\n    });\n\n    return shadow(this, \"_isSVGFittingCanvas\", promise);\n  }\n\n  async #get(key, rawData) {\n    this.#cache ||= new Map();\n    let data = this.#cache.get(key);\n    if (data === null) {\n      // We already tried to load the image but it failed.\n      return null;\n    }\n    if (data?.bitmap) {\n      data.refCounter += 1;\n      return data;\n    }\n    try {\n      data ||= {\n        bitmap: null,\n        id: `image_${this.#baseId}_${this.#id++}`,\n        refCounter: 0,\n        isSvg: false,\n      };\n      let image;\n      if (typeof rawData === \"string\") {\n        data.url = rawData;\n        image = await fetchData(rawData, \"blob\");\n      } else if (rawData instanceof File) {\n        image = data.file = rawData;\n      } else if (rawData instanceof Blob) {\n        image = rawData;\n      }\n\n      if (image.type === \"image/svg+xml\") {\n        // Unfortunately, createImageBitmap doesn't work with SVG images.\n        // (see https://bugzilla.mozilla.org/1841972).\n        const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas;\n        const fileReader = new FileReader();\n        const imageElement = new Image();\n        const imagePromise = new Promise((resolve, reject) => {\n          imageElement.onload = () => {\n            data.bitmap = imageElement;\n            data.isSvg = true;\n            resolve();\n          };\n          fileReader.onload = async () => {\n            const url = (data.svgUrl = fileReader.result);\n            // We need to set the preserveAspectRatio to none in order to let\n            // the image fits the canvas when resizing.\n            imageElement.src = (await mustRemoveAspectRatioPromise)\n              ? `${url}#svgView(preserveAspectRatio(none))`\n              : url;\n          };\n          imageElement.onerror = fileReader.onerror = reject;\n        });\n        fileReader.readAsDataURL(image);\n        await imagePromise;\n      } else {\n        data.bitmap = await createImageBitmap(image);\n      }\n      data.refCounter = 1;\n    } catch (e) {\n      warn(e);\n      data = null;\n    }\n    this.#cache.set(key, data);\n    if (data) {\n      this.#cache.set(data.id, data);\n    }\n    return data;\n  }\n\n  async getFromFile(file) {\n    const { lastModified, name, size, type } = file;\n    return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\n  }\n\n  async getFromUrl(url) {\n    return this.#get(url, url);\n  }\n\n  async getFromBlob(id, blobPromise) {\n    const blob = await blobPromise;\n    return this.#get(id, blob);\n  }\n\n  async getFromId(id) {\n    this.#cache ||= new Map();\n    const data = this.#cache.get(id);\n    if (!data) {\n      return null;\n    }\n    if (data.bitmap) {\n      data.refCounter += 1;\n      return data;\n    }\n\n    if (data.file) {\n      return this.getFromFile(data.file);\n    }\n    if (data.blobPromise) {\n      const { blobPromise } = data;\n      delete data.blobPromise;\n      return this.getFromBlob(data.id, blobPromise);\n    }\n    return this.getFromUrl(data.url);\n  }\n\n  getFromCanvas(id, canvas) {\n    this.#cache ||= new Map();\n    let data = this.#cache.get(id);\n    if (data?.bitmap) {\n      data.refCounter += 1;\n      return data;\n    }\n    const offscreen = new OffscreenCanvas(canvas.width, canvas.height);\n    const ctx = offscreen.getContext(\"2d\");\n    ctx.drawImage(canvas, 0, 0);\n    data = {\n      bitmap: offscreen.transferToImageBitmap(),\n      id: `image_${this.#baseId}_${this.#id++}`,\n      refCounter: 1,\n      isSvg: false,\n    };\n    this.#cache.set(id, data);\n    this.#cache.set(data.id, data);\n    return data;\n  }\n\n  getSvgUrl(id) {\n    const data = this.#cache.get(id);\n    if (!data?.isSvg) {\n      return null;\n    }\n    return data.svgUrl;\n  }\n\n  deleteId(id) {\n    this.#cache ||= new Map();\n    const data = this.#cache.get(id);\n    if (!data) {\n      return;\n    }\n    data.refCounter -= 1;\n    if (data.refCounter !== 0) {\n      return;\n    }\n    const { bitmap } = data;\n    if (!data.url && !data.file) {\n      // The image has no way to be restored (ctrl+z) so we must fix that.\n      const canvas = new OffscreenCanvas(bitmap.width, bitmap.height);\n      const ctx = canvas.getContext(\"bitmaprenderer\");\n      ctx.transferFromImageBitmap(bitmap);\n      data.blobPromise = canvas.convertToBlob();\n    }\n\n    bitmap.close?.();\n    data.bitmap = null;\n  }\n\n  // We can use the id only if it belongs this manager.\n  // We must take care of having the right manager because we can copy/paste\n  // some images from other documents, hence it'd be a pity to use an id from an\n  // other manager.\n  isValidId(id) {\n    return id.startsWith(`image_${this.#baseId}_`);\n  }\n}\n\n/**\n * Class to handle undo/redo.\n * Commands are just saved in a buffer.\n * If we hit some memory issues we could likely use a circular buffer.\n * It has to be used as a singleton.\n */\nclass CommandManager {\n  #commands = [];\n\n  #locked = false;\n\n  #maxSize;\n\n  #position = -1;\n\n  constructor(maxSize = 128) {\n    this.#maxSize = maxSize;\n  }\n\n  /**\n   * @typedef {Object} addOptions\n   * @property {function} cmd\n   * @property {function} undo\n   * @property {function} [post]\n   * @property {boolean} mustExec\n   * @property {number} type\n   * @property {boolean} overwriteIfSameType\n   * @property {boolean} keepUndo\n   */\n\n  /**\n   * Add a new couple of commands to be used in case of redo/undo.\n   * @param {addOptions} options\n   */\n  add({\n    cmd,\n    undo,\n    post,\n    mustExec,\n    type = NaN,\n    overwriteIfSameType = false,\n    keepUndo = false,\n  }) {\n    if (mustExec) {\n      cmd();\n    }\n\n    if (this.#locked) {\n      return;\n    }\n\n    const save = { cmd, undo, post, type };\n    if (this.#position === -1) {\n      if (this.#commands.length > 0) {\n        // All the commands have been undone and then a new one is added\n        // hence we clear the queue.\n        this.#commands.length = 0;\n      }\n      this.#position = 0;\n      this.#commands.push(save);\n      return;\n    }\n\n    if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n      // For example when we change a color we don't want to\n      // be able to undo all the steps, hence we only want to\n      // keep the last undoable action in this sequence of actions.\n      if (keepUndo) {\n        save.undo = this.#commands[this.#position].undo;\n      }\n      this.#commands[this.#position] = save;\n      return;\n    }\n\n    const next = this.#position + 1;\n    if (next === this.#maxSize) {\n      this.#commands.splice(0, 1);\n    } else {\n      this.#position = next;\n      if (next < this.#commands.length) {\n        this.#commands.splice(next);\n      }\n    }\n\n    this.#commands.push(save);\n  }\n\n  /**\n   * Undo the last command.\n   */\n  undo() {\n    if (this.#position === -1) {\n      // Nothing to undo.\n      return;\n    }\n\n    // Avoid to insert something during the undo execution.\n    this.#locked = true;\n    const { undo, post } = this.#commands[this.#position];\n    undo();\n    post?.();\n    this.#locked = false;\n\n    this.#position -= 1;\n  }\n\n  /**\n   * Redo the last command.\n   */\n  redo() {\n    if (this.#position < this.#commands.length - 1) {\n      this.#position += 1;\n\n      // Avoid to insert something during the redo execution.\n      this.#locked = true;\n      const { cmd, post } = this.#commands[this.#position];\n      cmd();\n      post?.();\n      this.#locked = false;\n    }\n  }\n\n  /**\n   * Check if there is something to undo.\n   * @returns {boolean}\n   */\n  hasSomethingToUndo() {\n    return this.#position !== -1;\n  }\n\n  /**\n   * Check if there is something to redo.\n   * @returns {boolean}\n   */\n  hasSomethingToRedo() {\n    return this.#position < this.#commands.length - 1;\n  }\n\n  cleanType(type) {\n    if (this.#position === -1) {\n      return;\n    }\n    for (let i = this.#position; i >= 0; i--) {\n      if (this.#commands[i].type !== type) {\n        this.#commands.splice(i + 1, this.#position - i);\n        this.#position = i;\n        return;\n      }\n    }\n    this.#commands.length = 0;\n    this.#position = -1;\n  }\n\n  destroy() {\n    this.#commands = null;\n  }\n}\n\n/**\n * Class to handle the different keyboards shortcuts we can have on mac or\n * non-mac OSes.\n */\nclass KeyboardManager {\n  /**\n   * Create a new keyboard manager class.\n   * @param {Array<Array>} callbacks - an array containing an array of shortcuts\n   * and a callback to call.\n   * A shortcut is a string like `ctrl+c` or `mac+ctrl+c` for mac OS.\n   */\n  constructor(callbacks) {\n    this.buffer = [];\n    this.callbacks = new Map();\n    this.allKeys = new Set();\n\n    const { isMac } = FeatureTest.platform;\n    for (const [keys, callback, options = {}] of callbacks) {\n      for (const key of keys) {\n        const isMacKey = key.startsWith(\"mac+\");\n        if (isMac && isMacKey) {\n          this.callbacks.set(key.slice(4), { callback, options });\n          this.allKeys.add(key.split(\"+\").at(-1));\n        } else if (!isMac && !isMacKey) {\n          this.callbacks.set(key, { callback, options });\n          this.allKeys.add(key.split(\"+\").at(-1));\n        }\n      }\n    }\n  }\n\n  /**\n   * Serialize an event into a string in order to match a\n   * potential key for a callback.\n   * @param {KeyboardEvent} event\n   * @returns {string}\n   */\n  #serialize(event) {\n    if (event.altKey) {\n      this.buffer.push(\"alt\");\n    }\n    if (event.ctrlKey) {\n      this.buffer.push(\"ctrl\");\n    }\n    if (event.metaKey) {\n      this.buffer.push(\"meta\");\n    }\n    if (event.shiftKey) {\n      this.buffer.push(\"shift\");\n    }\n    this.buffer.push(event.key);\n    const str = this.buffer.join(\"+\");\n    this.buffer.length = 0;\n\n    return str;\n  }\n\n  /**\n   * Execute a callback, if any, for a given keyboard event.\n   * The self is used as `this` in the callback.\n   * @param {Object} self\n   * @param {KeyboardEvent} event\n   * @returns\n   */\n  exec(self, event) {\n    if (!this.allKeys.has(event.key)) {\n      return;\n    }\n    const info = this.callbacks.get(this.#serialize(event));\n    if (!info) {\n      return;\n    }\n    const {\n      callback,\n      options: { bubbles = false, args = [], checker = null },\n    } = info;\n\n    if (checker && !checker(self, event)) {\n      return;\n    }\n    callback.bind(self, ...args, event)();\n\n    // For example, ctrl+s in a FreeText must be handled by the viewer, hence\n    // the event must bubble.\n    if (!bubbles) {\n      stopEvent(event);\n    }\n  }\n}\n\nclass ColorManager {\n  static _colorsMapping = new Map([\n    [\"CanvasText\", [0, 0, 0]],\n    [\"Canvas\", [255, 255, 255]],\n  ]);\n\n  get _colors() {\n    if (\n      typeof PDFJSDev !== \"undefined\" &&\n      PDFJSDev.test(\"LIB\") &&\n      typeof document === \"undefined\"\n    ) {\n      return shadow(this, \"_colors\", ColorManager._colorsMapping);\n    }\n\n    const colors = new Map([\n      [\"CanvasText\", null],\n      [\"Canvas\", null],\n    ]);\n    getColorValues(colors);\n    return shadow(this, \"_colors\", colors);\n  }\n\n  /**\n   * In High Contrast Mode, the color on the screen is not always the\n   * real color used in the pdf.\n   * For example in some cases white can appear to be black but when saving\n   * we want to have white.\n   * @param {string} color\n   * @returns {Array<number>}\n   */\n  convert(color) {\n    const rgb = getRGB(color);\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    return rgb;\n  }\n\n  /**\n   * An input element must have its color value as a hex string\n   * and not as color name.\n   * So this function converts a name into an hex string.\n   * @param {string} name\n   * @returns {string}\n   */\n  getHexCode(name) {\n    const rgb = this._colors.get(name);\n    if (!rgb) {\n      return name;\n    }\n    return Util.makeHexColor(...rgb);\n  }\n}\n\n/**\n * A pdf has several pages and each of them when it will rendered\n * will have an AnnotationEditorLayer which will contain the some\n * new Annotations associated to an editor in order to modify them.\n *\n * This class is used to manage all the different layers, editors and\n * some action like copy/paste, undo/redo, ...\n */\nclass AnnotationEditorUIManager {\n  #abortController = new AbortController();\n\n  #activeEditor = null;\n\n  #allEditableAnnotations = null;\n\n  #allEditors = new Map();\n\n  #allLayers = new Map();\n\n  #altTextManager = null;\n\n  #annotationStorage = null;\n\n  #changedExistingAnnotations = null;\n\n  #commandManager = new CommandManager();\n\n  #commentManager = null;\n\n  #copyPasteAC = null;\n\n  #currentDrawingSession = null;\n\n  #currentPageIndex = 0;\n\n  #deletedAnnotationsElementIds = new Set();\n\n  #draggingEditors = null;\n\n  #editorTypes = null;\n\n  #editorsToRescale = new Set();\n\n  _editorUndoBar = null;\n\n  #enableHighlightFloatingButton = false;\n\n  #enableUpdatedAddImage = false;\n\n  #enableNewAltTextWhenAddingImage = false;\n\n  #filterFactory = null;\n\n  #focusMainContainerTimeoutId = null;\n\n  #focusManagerAC = null;\n\n  #highlightColors = null;\n\n  #highlightWhenShiftUp = false;\n\n  #floatingToolbar = null;\n\n  #idManager = new IdManager();\n\n  #isEnabled = false;\n\n  #isPointerDown = false;\n\n  #isWaiting = false;\n\n  #keyboardManagerAC = null;\n\n  #lastActiveElement = null;\n\n  #mainHighlightColorPicker = null;\n\n  #missingCanvases = null;\n\n  #mlManager = null;\n\n  #mode = AnnotationEditorType.NONE;\n\n  #selectedEditors = new Set();\n\n  #selectedTextNode = null;\n\n  #signatureManager = null;\n\n  #pageColors = null;\n\n  #showAllStates = null;\n\n  #pdfDocument = null;\n\n  #previousStates = {\n    isEditing: false,\n    isEmpty: true,\n    hasSomethingToUndo: false,\n    hasSomethingToRedo: false,\n    hasSelectedEditor: false,\n    hasSelectedText: false,\n  };\n\n  #translation = [0, 0];\n\n  #translationTimeoutId = null;\n\n  #container = null;\n\n  #viewer = null;\n\n  #viewerAlert = null;\n\n  #updateModeCapability = null;\n\n  static TRANSLATE_SMALL = 1; // page units.\n\n  static TRANSLATE_BIG = 10; // page units.\n\n  static get _keyboardManager() {\n    const proto = AnnotationEditorUIManager.prototype;\n\n    /**\n     * If the focused element is an input, we don't want to handle the arrow.\n     * For example, sliders can be controlled with the arrow keys.\n     */\n    const arrowChecker = self =>\n      self.#container.contains(document.activeElement) &&\n      document.activeElement.tagName !== \"BUTTON\" &&\n      self.hasSomethingToControl();\n\n    const textInputChecker = (_self, { target: el }) => {\n      if (el instanceof HTMLInputElement) {\n        const { type } = el;\n        return type !== \"text\" && type !== \"number\";\n      }\n      return true;\n    };\n\n    const small = this.TRANSLATE_SMALL;\n    const big = this.TRANSLATE_BIG;\n\n    return shadow(\n      this,\n      \"_keyboardManager\",\n      new KeyboardManager([\n        [\n          [\"ctrl+a\", \"mac+meta+a\"],\n          proto.selectAll,\n          { checker: textInputChecker },\n        ],\n        [[\"ctrl+z\", \"mac+meta+z\"], proto.undo, { checker: textInputChecker }],\n        [\n          // On mac, depending of the OS version, the event.key is either \"z\" or\n          // \"Z\" when the user presses \"meta+shift+z\".\n          [\n            \"ctrl+y\",\n            \"ctrl+shift+z\",\n            \"mac+meta+shift+z\",\n            \"ctrl+shift+Z\",\n            \"mac+meta+shift+Z\",\n          ],\n          proto.redo,\n          { checker: textInputChecker },\n        ],\n        [\n          [\n            \"Backspace\",\n            \"alt+Backspace\",\n            \"ctrl+Backspace\",\n            \"shift+Backspace\",\n            \"mac+Backspace\",\n            \"mac+alt+Backspace\",\n            \"mac+ctrl+Backspace\",\n            \"Delete\",\n            \"ctrl+Delete\",\n            \"shift+Delete\",\n            \"mac+Delete\",\n          ],\n          proto.delete,\n          { checker: textInputChecker },\n        ],\n        [\n          [\"Enter\", \"mac+Enter\"],\n          proto.addNewEditorFromKeyboard,\n          {\n            // Those shortcuts can be used in the toolbar for some other actions\n            // like zooming, hence we need to check if the container has the\n            // focus.\n            checker: (self, { target: el }) =>\n              !(el instanceof HTMLButtonElement) &&\n              self.#container.contains(el) &&\n              !self.isEnterHandled,\n          },\n        ],\n        [\n          [\" \", \"mac+ \"],\n          proto.addNewEditorFromKeyboard,\n          {\n            // Those shortcuts can be used in the toolbar for some other actions\n            // like zooming, hence we need to check if the container has the\n            // focus.\n            checker: (self, { target: el }) =>\n              !(el instanceof HTMLButtonElement) &&\n              self.#container.contains(document.activeElement),\n          },\n        ],\n        [[\"Escape\", \"mac+Escape\"], proto.unselectAll],\n        [\n          [\"ArrowLeft\", \"mac+ArrowLeft\"],\n          proto.translateSelectedEditors,\n          { args: [-small, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"],\n          proto.translateSelectedEditors,\n          { args: [-big, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ArrowRight\", \"mac+ArrowRight\"],\n          proto.translateSelectedEditors,\n          { args: [small, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"],\n          proto.translateSelectedEditors,\n          { args: [big, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ArrowUp\", \"mac+ArrowUp\"],\n          proto.translateSelectedEditors,\n          { args: [0, -small], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"],\n          proto.translateSelectedEditors,\n          { args: [0, -big], checker: arrowChecker },\n        ],\n        [\n          [\"ArrowDown\", \"mac+ArrowDown\"],\n          proto.translateSelectedEditors,\n          { args: [0, small], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"],\n          proto.translateSelectedEditors,\n          { args: [0, big], checker: arrowChecker },\n        ],\n      ])\n    );\n  }\n\n  constructor(\n    container,\n    viewer,\n    viewerAlert,\n    altTextManager,\n    commentManager,\n    signatureManager,\n    eventBus,\n    pdfDocument,\n    pageColors,\n    highlightColors,\n    enableHighlightFloatingButton,\n    enableUpdatedAddImage,\n    enableNewAltTextWhenAddingImage,\n    mlManager,\n    editorUndoBar,\n    supportsPinchToZoom\n  ) {\n    const signal = (this._signal = this.#abortController.signal);\n    this.#container = container;\n    this.#viewer = viewer;\n    this.#viewerAlert = viewerAlert;\n    this.#altTextManager = altTextManager;\n    this.#commentManager = commentManager;\n    this.#signatureManager = signatureManager;\n    this.#pdfDocument = pdfDocument;\n    this._eventBus = eventBus;\n    eventBus._on(\"editingaction\", this.onEditingAction.bind(this), { signal });\n    eventBus._on(\"pagechanging\", this.onPageChanging.bind(this), { signal });\n    eventBus._on(\"scalechanging\", this.onScaleChanging.bind(this), { signal });\n    eventBus._on(\"rotationchanging\", this.onRotationChanging.bind(this), {\n      signal,\n    });\n    eventBus._on(\"setpreference\", this.onSetPreference.bind(this), { signal });\n    eventBus._on(\n      \"switchannotationeditorparams\",\n      evt => this.updateParams(evt.type, evt.value),\n      { signal }\n    );\n    window.addEventListener(\n      \"pointerdown\",\n      () => {\n        this.#isPointerDown = true;\n      },\n      { capture: true, signal }\n    );\n    window.addEventListener(\n      \"pointerup\",\n      () => {\n        this.#isPointerDown = false;\n      },\n      { capture: true, signal }\n    );\n    this.#addSelectionListener();\n    this.#addDragAndDropListeners();\n    this.#addKeyboardManager();\n    this.#annotationStorage = pdfDocument.annotationStorage;\n    this.#filterFactory = pdfDocument.filterFactory;\n    this.#pageColors = pageColors;\n    this.#highlightColors = highlightColors || null;\n    this.#enableHighlightFloatingButton = enableHighlightFloatingButton;\n    this.#enableUpdatedAddImage = enableUpdatedAddImage;\n    this.#enableNewAltTextWhenAddingImage = enableNewAltTextWhenAddingImage;\n    this.#mlManager = mlManager || null;\n    this.viewParameters = {\n      realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n      rotation: 0,\n    };\n    this.isShiftKeyDown = false;\n    this._editorUndoBar = editorUndoBar || null;\n    this._supportsPinchToZoom = supportsPinchToZoom !== false;\n    commentManager?.setSidebarUiManager(this);\n\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n      Object.defineProperty(this, \"reset\", {\n        value: () => {\n          this.selectAll();\n          this.delete();\n          this.#idManager.reset();\n        },\n      });\n    }\n  }\n\n  destroy() {\n    this.#updateModeCapability?.resolve();\n    this.#updateModeCapability = null;\n\n    this.#abortController?.abort();\n    this.#abortController = null;\n    this._signal = null;\n\n    for (const layer of this.#allLayers.values()) {\n      layer.destroy();\n    }\n    this.#allLayers.clear();\n    this.#allEditors.clear();\n    this.#editorsToRescale.clear();\n    this.#missingCanvases?.clear();\n    this.#activeEditor = null;\n    this.#selectedEditors.clear();\n    this.#commandManager.destroy();\n    this.#altTextManager?.destroy();\n    this.#commentManager?.destroy();\n    this.#signatureManager?.destroy();\n    this.#floatingToolbar?.hide();\n    this.#floatingToolbar = null;\n    this.#mainHighlightColorPicker?.destroy();\n    this.#mainHighlightColorPicker = null;\n    this.#allEditableAnnotations = null;\n    if (this.#focusMainContainerTimeoutId) {\n      clearTimeout(this.#focusMainContainerTimeoutId);\n      this.#focusMainContainerTimeoutId = null;\n    }\n    if (this.#translationTimeoutId) {\n      clearTimeout(this.#translationTimeoutId);\n      this.#translationTimeoutId = null;\n    }\n    this._editorUndoBar?.destroy();\n    this.#pdfDocument = null;\n  }\n\n  combinedSignal(ac) {\n    return AbortSignal.any([this._signal, ac.signal]);\n  }\n\n  get mlManager() {\n    return this.#mlManager;\n  }\n\n  get useNewAltTextFlow() {\n    return this.#enableUpdatedAddImage;\n  }\n\n  get useNewAltTextWhenAddingImage() {\n    return this.#enableNewAltTextWhenAddingImage;\n  }\n\n  get hcmFilter() {\n    return shadow(\n      this,\n      \"hcmFilter\",\n      this.#pageColors\n        ? this.#filterFactory.addHCMFilter(\n            this.#pageColors.foreground,\n            this.#pageColors.background\n          )\n        : \"none\"\n    );\n  }\n\n  get direction() {\n    return shadow(\n      this,\n      \"direction\",\n      getComputedStyle(this.#container).direction\n    );\n  }\n\n  get _highlightColors() {\n    return shadow(\n      this,\n      \"_highlightColors\",\n      this.#highlightColors\n        ? new Map(\n            this.#highlightColors.split(\",\").map(pair => {\n              pair = pair.split(\"=\").map(x => x.trim());\n              pair[1] = pair[1].toUpperCase();\n              return pair;\n            })\n          )\n        : null\n    );\n  }\n\n  get highlightColors() {\n    const { _highlightColors } = this;\n    if (!_highlightColors) {\n      return shadow(this, \"highlightColors\", null);\n    }\n    const map = new Map();\n    const hasHCM = !!this.#pageColors;\n    for (const [name, color] of _highlightColors) {\n      const isNameForHCM = name.endsWith(\"_HCM\");\n      if (hasHCM && isNameForHCM) {\n        map.set(name.replace(\"_HCM\", \"\"), color);\n        continue;\n      }\n      if (!hasHCM && !isNameForHCM) {\n        map.set(name, color);\n      }\n    }\n    return shadow(this, \"highlightColors\", map);\n  }\n\n  get highlightColorNames() {\n    return shadow(\n      this,\n      \"highlightColorNames\",\n      this.highlightColors\n        ? new Map(Array.from(this.highlightColors, e => e.reverse()))\n        : null\n    );\n  }\n\n  getNonHCMColor(color) {\n    if (!this._highlightColors) {\n      return color;\n    }\n    const colorName = this.highlightColorNames.get(color);\n    return this._highlightColors.get(colorName) || color;\n  }\n\n  getNonHCMColorName(color) {\n    return this.highlightColorNames.get(color) || color;\n  }\n\n  /**\n   * Set the current drawing session.\n   * @param {AnnotationEditorLayer} layer\n   */\n  setCurrentDrawingSession(layer) {\n    if (layer) {\n      this.unselectAll();\n      this.disableUserSelect(true);\n    } else {\n      this.disableUserSelect(false);\n    }\n    this.#currentDrawingSession = layer;\n  }\n\n  setMainHighlightColorPicker(colorPicker) {\n    this.#mainHighlightColorPicker = colorPicker;\n  }\n\n  editAltText(editor, firstTime = false) {\n    this.#altTextManager?.editAltText(this, editor, firstTime);\n  }\n\n  hasCommentManager() {\n    return !!this.#commentManager;\n  }\n\n  editComment(editor, posX, posY, options) {\n    this.#commentManager?.showDialog(this, editor, posX, posY, options);\n  }\n\n  selectComment(pageIndex, uid) {\n    const layer = this.#allLayers.get(pageIndex);\n    const editor = layer?.getEditorByUID(uid);\n    editor?.toggleComment(/* isSelected */ true, /* visibility */ true);\n  }\n\n  updateComment(editor) {\n    this.#commentManager?.updateComment(editor.getData());\n  }\n\n  updatePopupColor(editor) {\n    this.#commentManager?.updatePopupColor(editor);\n  }\n\n  removeComment(editor) {\n    this.#commentManager?.removeComments([editor.uid]);\n  }\n\n  toggleComment(editor, isSelected, visibility = undefined) {\n    this.#commentManager?.toggleCommentPopup(editor, isSelected, visibility);\n  }\n\n  makeCommentColor(color, opacity) {\n    return (\n      (color && this.#commentManager?.makeCommentColor(color, opacity)) || null\n    );\n  }\n\n  getCommentDialogElement() {\n    return this.#commentManager?.dialogElement || null;\n  }\n\n  async waitForEditorsRendered(pageNumber) {\n    if (this.#allLayers.has(pageNumber - 1)) {\n      return;\n    }\n    const { resolve, promise } = Promise.withResolvers();\n    const onEditorsRendered = evt => {\n      if (evt.pageNumber === pageNumber) {\n        this._eventBus._off(\"editorsrendered\", onEditorsRendered);\n        resolve();\n      }\n    };\n    this._eventBus.on(\"editorsrendered\", onEditorsRendered);\n    await promise;\n  }\n\n  getSignature(editor) {\n    this.#signatureManager?.getSignature({ uiManager: this, editor });\n  }\n\n  get signatureManager() {\n    return this.#signatureManager;\n  }\n\n  switchToMode(mode, callback) {\n    // Switching to a mode can be asynchronous.\n    this._eventBus.on(\"annotationeditormodechanged\", callback, {\n      once: true,\n      signal: this._signal,\n    });\n    this._eventBus.dispatch(\"showannotationeditorui\", {\n      source: this,\n      mode,\n    });\n  }\n\n  setPreference(name, value) {\n    this._eventBus.dispatch(\"setpreference\", {\n      source: this,\n      name,\n      value,\n    });\n  }\n\n  onSetPreference({ name, value }) {\n    switch (name) {\n      case \"enableNewAltTextWhenAddingImage\":\n        this.#enableNewAltTextWhenAddingImage = value;\n        break;\n    }\n  }\n\n  onPageChanging({ pageNumber }) {\n    this.#currentPageIndex = pageNumber - 1;\n  }\n\n  focusMainContainer() {\n    this.#container.focus();\n  }\n\n  findParent(x, y) {\n    for (const layer of this.#allLayers.values()) {\n      const {\n        x: layerX,\n        y: layerY,\n        width,\n        height,\n      } = layer.div.getBoundingClientRect();\n      if (\n        x >= layerX &&\n        x <= layerX + width &&\n        y >= layerY &&\n        y <= layerY + height\n      ) {\n        return layer;\n      }\n    }\n    return null;\n  }\n\n  disableUserSelect(value = false) {\n    this.#viewer.classList.toggle(\"noUserSelect\", value);\n  }\n\n  addShouldRescale(editor) {\n    this.#editorsToRescale.add(editor);\n  }\n\n  removeShouldRescale(editor) {\n    this.#editorsToRescale.delete(editor);\n  }\n\n  onScaleChanging({ scale }) {\n    this.commitOrRemove();\n    this.viewParameters.realScale = scale * PixelsPerInch.PDF_TO_CSS_UNITS;\n    for (const editor of this.#editorsToRescale) {\n      editor.onScaleChanging();\n    }\n    this.#currentDrawingSession?.onScaleChanging();\n  }\n\n  onRotationChanging({ pagesRotation }) {\n    this.commitOrRemove();\n    this.viewParameters.rotation = pagesRotation;\n  }\n\n  #getAnchorElementForSelection({ anchorNode }) {\n    return anchorNode.nodeType === Node.TEXT_NODE\n      ? anchorNode.parentElement\n      : anchorNode;\n  }\n\n  #getLayerForTextLayer(textLayer) {\n    const { currentLayer } = this;\n    if (currentLayer.hasTextLayer(textLayer)) {\n      return currentLayer;\n    }\n    for (const layer of this.#allLayers.values()) {\n      if (layer.hasTextLayer(textLayer)) {\n        return layer;\n      }\n    }\n    return null;\n  }\n\n  highlightSelection(methodOfCreation = \"\", comment = false) {\n    const selection = document.getSelection();\n    if (!selection || selection.isCollapsed) {\n      return;\n    }\n    const { anchorNode, anchorOffset, focusNode, focusOffset } = selection;\n    const text = selection.toString();\n    const anchorElement = this.#getAnchorElementForSelection(selection);\n    const textLayer = anchorElement.closest(\".textLayer\");\n    const boxes = this.getSelectionBoxes(textLayer);\n    if (!boxes) {\n      return;\n    }\n    selection.empty();\n\n    const layer = this.#getLayerForTextLayer(textLayer);\n    const isNoneMode = this.#mode === AnnotationEditorType.NONE;\n    const callback = () => {\n      const editor = layer?.createAndAddNewEditor({ x: 0, y: 0 }, false, {\n        methodOfCreation,\n        boxes,\n        anchorNode,\n        anchorOffset,\n        focusNode,\n        focusOffset,\n        text,\n      });\n      if (isNoneMode) {\n        this.showAllEditors(\"highlight\", true, /* updateButton = */ true);\n      }\n      if (comment) {\n        editor?.editComment();\n      }\n    };\n    if (isNoneMode) {\n      this.switchToMode(AnnotationEditorType.HIGHLIGHT, callback);\n      return;\n    }\n    callback();\n  }\n\n  commentSelection(methodOfCreation = \"\") {\n    this.highlightSelection(methodOfCreation, /* comment */ true);\n  }\n\n  #displayFloatingToolbar() {\n    const selection = document.getSelection();\n    if (!selection || selection.isCollapsed) {\n      return;\n    }\n    const anchorElement = this.#getAnchorElementForSelection(selection);\n    const textLayer = anchorElement.closest(\".textLayer\");\n    const boxes = this.getSelectionBoxes(textLayer);\n    if (!boxes) {\n      return;\n    }\n    this.#floatingToolbar ||= new FloatingToolbar(this);\n    this.#floatingToolbar.show(textLayer, boxes, this.direction === \"ltr\");\n  }\n\n  /**\n   * Some annotations may have been modified in the annotation layer\n   * (e.g. comments added or modified).\n   * So this function retrieves the data from the storage and removes\n   * them from the storage in order to be able to save them later.\n   * @param {string} annotationId\n   * @returns {Object|null} The data associated to the annotation or null.\n   */\n  getAndRemoveDataFromAnnotationStorage(annotationId) {\n    if (!this.#annotationStorage) {\n      return null;\n    }\n    const key = `${AnnotationEditorPrefix}${annotationId}`;\n    const storedValue = this.#annotationStorage.getRawValue(key);\n    if (storedValue) {\n      this.#annotationStorage.remove(key);\n    }\n    return storedValue;\n  }\n\n  /**\n   * Add an editor in the annotation storage.\n   * @param {AnnotationEditor} editor\n   */\n  addToAnnotationStorage(editor) {\n    if (\n      !editor.isEmpty() &&\n      this.#annotationStorage &&\n      !this.#annotationStorage.has(editor.id)\n    ) {\n      this.#annotationStorage.setValue(editor.id, editor);\n    }\n  }\n\n  a11yAlert(messageId, args = null) {\n    const viewerAlert = this.#viewerAlert;\n    if (!viewerAlert) {\n      return;\n    }\n    viewerAlert.setAttribute(\"data-l10n-id\", messageId);\n    if (args) {\n      viewerAlert.setAttribute(\"data-l10n-args\", JSON.stringify(args));\n    } else {\n      viewerAlert.removeAttribute(\"data-l10n-args\");\n    }\n  }\n\n  #selectionChange() {\n    const selection = document.getSelection();\n    if (!selection || selection.isCollapsed) {\n      if (this.#selectedTextNode) {\n        this.#floatingToolbar?.hide();\n        this.#selectedTextNode = null;\n        this.#dispatchUpdateStates({\n          hasSelectedText: false,\n        });\n      }\n      return;\n    }\n    const { anchorNode } = selection;\n    if (anchorNode === this.#selectedTextNode) {\n      return;\n    }\n\n    const anchorElement = this.#getAnchorElementForSelection(selection);\n    const textLayer = anchorElement.closest(\".textLayer\");\n    if (!textLayer) {\n      if (this.#selectedTextNode) {\n        this.#floatingToolbar?.hide();\n        this.#selectedTextNode = null;\n        this.#dispatchUpdateStates({\n          hasSelectedText: false,\n        });\n      }\n      return;\n    }\n\n    this.#floatingToolbar?.hide();\n    this.#selectedTextNode = anchorNode;\n    this.#dispatchUpdateStates({\n      hasSelectedText: true,\n    });\n\n    if (\n      this.#mode !== AnnotationEditorType.HIGHLIGHT &&\n      this.#mode !== AnnotationEditorType.NONE\n    ) {\n      return;\n    }\n\n    if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n      this.showAllEditors(\"highlight\", true, /* updateButton = */ true);\n    }\n\n    this.#highlightWhenShiftUp = this.isShiftKeyDown;\n    if (!this.isShiftKeyDown) {\n      const activeLayer =\n        this.#mode === AnnotationEditorType.HIGHLIGHT\n          ? this.#getLayerForTextLayer(textLayer)\n          : null;\n      activeLayer?.toggleDrawing();\n\n      if (this.#isPointerDown) {\n        const ac = new AbortController();\n        const signal = this.combinedSignal(ac);\n\n        const pointerup = e => {\n          if (e.type === \"pointerup\" && e.button !== 0) {\n            // Do nothing on right click.\n            return;\n          }\n          ac.abort();\n          activeLayer?.toggleDrawing(true);\n          if (e.type === \"pointerup\") {\n            this.#onSelectEnd(\"main_toolbar\");\n          }\n        };\n        window.addEventListener(\"pointerup\", pointerup, { signal });\n        window.addEventListener(\"blur\", pointerup, { signal });\n      } else {\n        // Here neither the shift key nor the pointer is down and we've\n        // something in the selection: we can be in the case where the user is\n        // using a screen reader (see bug 1976597).\n        activeLayer?.toggleDrawing(true);\n        this.#onSelectEnd(\"main_toolbar\");\n      }\n    }\n  }\n\n  #onSelectEnd(methodOfCreation = \"\") {\n    if (this.#mode === AnnotationEditorType.HIGHLIGHT) {\n      this.highlightSelection(methodOfCreation);\n    } else if (this.#enableHighlightFloatingButton) {\n      this.#displayFloatingToolbar();\n    }\n  }\n\n  #addSelectionListener() {\n    document.addEventListener(\n      \"selectionchange\",\n      this.#selectionChange.bind(this),\n      { signal: this._signal }\n    );\n  }\n\n  #addFocusManager() {\n    if (this.#focusManagerAC) {\n      return;\n    }\n    this.#focusManagerAC = new AbortController();\n    const signal = this.combinedSignal(this.#focusManagerAC);\n\n    window.addEventListener(\"focus\", this.focus.bind(this), { signal });\n    window.addEventListener(\"blur\", this.blur.bind(this), { signal });\n  }\n\n  #removeFocusManager() {\n    this.#focusManagerAC?.abort();\n    this.#focusManagerAC = null;\n  }\n\n  blur() {\n    this.isShiftKeyDown = false;\n    if (this.#highlightWhenShiftUp) {\n      this.#highlightWhenShiftUp = false;\n      this.#onSelectEnd(\"main_toolbar\");\n    }\n    if (!this.hasSelection) {\n      return;\n    }\n    // When several editors are selected and the window loses focus, we want to\n    // keep the last active element in order to be able to focus it again when\n    // the window gets the focus back but we don't want to trigger any focus\n    // callbacks else only one editor will be selected.\n    const { activeElement } = document;\n    for (const editor of this.#selectedEditors) {\n      if (editor.div.contains(activeElement)) {\n        this.#lastActiveElement = [editor, activeElement];\n        editor._focusEventsAllowed = false;\n        break;\n      }\n    }\n  }\n\n  focus() {\n    if (!this.#lastActiveElement) {\n      return;\n    }\n    const [lastEditor, lastActiveElement] = this.#lastActiveElement;\n    this.#lastActiveElement = null;\n    lastActiveElement.addEventListener(\n      \"focusin\",\n      () => {\n        lastEditor._focusEventsAllowed = true;\n      },\n      { once: true, signal: this._signal }\n    );\n    lastActiveElement.focus();\n  }\n\n  #addKeyboardManager() {\n    if (this.#keyboardManagerAC) {\n      return;\n    }\n    this.#keyboardManagerAC = new AbortController();\n    const signal = this.combinedSignal(this.#keyboardManagerAC);\n\n    // The keyboard events are caught at the container level in order to be able\n    // to execute some callbacks even if the current page doesn't have focus.\n    window.addEventListener(\"keydown\", this.keydown.bind(this), { signal });\n    window.addEventListener(\"keyup\", this.keyup.bind(this), { signal });\n  }\n\n  #removeKeyboardManager() {\n    this.#keyboardManagerAC?.abort();\n    this.#keyboardManagerAC = null;\n  }\n\n  #addCopyPasteListeners() {\n    if (this.#copyPasteAC) {\n      return;\n    }\n    this.#copyPasteAC = new AbortController();\n    const signal = this.combinedSignal(this.#copyPasteAC);\n\n    document.addEventListener(\"copy\", this.copy.bind(this), { signal });\n    document.addEventListener(\"cut\", this.cut.bind(this), { signal });\n    document.addEventListener(\"paste\", this.paste.bind(this), { signal });\n  }\n\n  #removeCopyPasteListeners() {\n    this.#copyPasteAC?.abort();\n    this.#copyPasteAC = null;\n  }\n\n  #addDragAndDropListeners() {\n    const signal = this._signal;\n    document.addEventListener(\"dragover\", this.dragOver.bind(this), { signal });\n    document.addEventListener(\"drop\", this.drop.bind(this), { signal });\n  }\n\n  addEditListeners() {\n    this.#addKeyboardManager();\n    this.#addCopyPasteListeners();\n  }\n\n  removeEditListeners() {\n    this.#removeKeyboardManager();\n    this.#removeCopyPasteListeners();\n  }\n\n  dragOver(event) {\n    for (const { type } of event.dataTransfer.items) {\n      for (const editorType of this.#editorTypes) {\n        if (editorType.isHandlingMimeForPasting(type)) {\n          event.dataTransfer.dropEffect = \"copy\";\n          event.preventDefault();\n          return;\n        }\n      }\n    }\n  }\n\n  /**\n   * Drop callback.\n   * @param {DragEvent} event\n   */\n  drop(event) {\n    for (const item of event.dataTransfer.items) {\n      for (const editorType of this.#editorTypes) {\n        if (editorType.isHandlingMimeForPasting(item.type)) {\n          editorType.paste(item, this.currentLayer);\n          event.preventDefault();\n          return;\n        }\n      }\n    }\n  }\n\n  /**\n   * Copy callback.\n   * @param {ClipboardEvent} event\n   */\n  copy(event) {\n    event.preventDefault();\n\n    // An editor is being edited so just commit it.\n    this.#activeEditor?.commitOrRemove();\n\n    if (!this.hasSelection) {\n      return;\n    }\n\n    const editors = [];\n    for (const editor of this.#selectedEditors) {\n      const serialized = editor.serialize(/* isForCopying = */ true);\n      if (serialized) {\n        editors.push(serialized);\n      }\n    }\n    if (editors.length === 0) {\n      return;\n    }\n\n    event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n  }\n\n  /**\n   * Cut callback.\n   * @param {ClipboardEvent} event\n   */\n  cut(event) {\n    this.copy(event);\n    this.delete();\n  }\n\n  /**\n   * Paste callback.\n   * @param {ClipboardEvent} event\n   */\n  async paste(event) {\n    event.preventDefault();\n    const { clipboardData } = event;\n    for (const item of clipboardData.items) {\n      for (const editorType of this.#editorTypes) {\n        if (editorType.isHandlingMimeForPasting(item.type)) {\n          editorType.paste(item, this.currentLayer);\n          return;\n        }\n      }\n    }\n\n    let data = clipboardData.getData(\"application/pdfjs\");\n    if (!data) {\n      return;\n    }\n\n    try {\n      data = JSON.parse(data);\n    } catch (ex) {\n      warn(`paste: \"${ex.message}\".`);\n      return;\n    }\n\n    if (!Array.isArray(data)) {\n      return;\n    }\n\n    this.unselectAll();\n    const layer = this.currentLayer;\n\n    try {\n      const newEditors = [];\n      for (const editor of data) {\n        const deserializedEditor = await layer.deserialize(editor);\n        if (!deserializedEditor) {\n          return;\n        }\n        newEditors.push(deserializedEditor);\n      }\n\n      const cmd = () => {\n        for (const editor of newEditors) {\n          this.#addEditorToLayer(editor);\n        }\n        this.#selectEditors(newEditors);\n      };\n      const undo = () => {\n        for (const editor of newEditors) {\n          editor.remove();\n        }\n      };\n      this.addCommands({ cmd, undo, mustExec: true });\n    } catch (ex) {\n      warn(`paste: \"${ex.message}\".`);\n    }\n  }\n\n  /**\n   * Keydown callback.\n   * @param {KeyboardEvent} event\n   */\n  keydown(event) {\n    if (!this.isShiftKeyDown && event.key === \"Shift\") {\n      this.isShiftKeyDown = true;\n    }\n    if (\n      this.#mode !== AnnotationEditorType.NONE &&\n      !this.isEditorHandlingKeyboard\n    ) {\n      AnnotationEditorUIManager._keyboardManager.exec(this, event);\n    }\n  }\n\n  /**\n   * Keyup callback.\n   * @param {KeyboardEvent} event\n   */\n  keyup(event) {\n    if (this.isShiftKeyDown && event.key === \"Shift\") {\n      this.isShiftKeyDown = false;\n      if (this.#highlightWhenShiftUp) {\n        this.#highlightWhenShiftUp = false;\n        this.#onSelectEnd(\"main_toolbar\");\n      }\n    }\n  }\n\n  /**\n   * Execute an action for a given name.\n   * For example, the user can click on the \"Undo\" entry in the context menu\n   * and it'll trigger the undo action.\n   */\n  onEditingAction({ name }) {\n    switch (name) {\n      case \"undo\":\n      case \"redo\":\n      case \"delete\":\n      case \"selectAll\":\n        this[name]();\n        break;\n      case \"highlightSelection\":\n        this.highlightSelection(\"context_menu\");\n        break;\n      case \"commentSelection\":\n        this.commentSelection(\"context_menu\");\n        break;\n    }\n  }\n\n  /**\n   * Update the different possible states of this manager, e.g. is there\n   * something to undo, redo, ...\n   * @param {Object} details\n   */\n  #dispatchUpdateStates(details) {\n    const hasChanged = Object.entries(details).some(\n      ([key, value]) => this.#previousStates[key] !== value\n    );\n\n    if (hasChanged) {\n      this._eventBus.dispatch(\"annotationeditorstateschanged\", {\n        source: this,\n        details: Object.assign(this.#previousStates, details),\n      });\n      // We could listen on our own event but it sounds like a bit weird and\n      // it's a way to simpler to handle that stuff here instead of having to\n      // add something in every place where an editor can be unselected.\n      if (\n        this.#mode === AnnotationEditorType.HIGHLIGHT &&\n        details.hasSelectedEditor === false\n      ) {\n        this.#dispatchUpdateUI([\n          [AnnotationEditorParamsType.HIGHLIGHT_FREE, true],\n        ]);\n      }\n    }\n  }\n\n  #dispatchUpdateUI(details) {\n    this._eventBus.dispatch(\"annotationeditorparamschanged\", {\n      source: this,\n      details,\n    });\n  }\n\n  /**\n   * Set the editing state.\n   * It can be useful to temporarily disable it when the user is editing a\n   * FreeText annotation.\n   * @param {boolean} isEditing\n   */\n  setEditingState(isEditing) {\n    if (isEditing) {\n      this.#addFocusManager();\n      this.#addCopyPasteListeners();\n      this.#dispatchUpdateStates({\n        isEditing: this.#mode !== AnnotationEditorType.NONE,\n        isEmpty: this.#isEmpty(),\n        hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n        hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n        hasSelectedEditor: false,\n      });\n    } else {\n      this.#removeFocusManager();\n      this.#removeCopyPasteListeners();\n      this.#dispatchUpdateStates({\n        isEditing: false,\n      });\n      this.disableUserSelect(false);\n    }\n  }\n\n  registerEditorTypes(types) {\n    if (this.#editorTypes) {\n      return;\n    }\n    this.#editorTypes = types;\n    for (const editorType of this.#editorTypes) {\n      this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n    }\n  }\n\n  /**\n   * Get an id.\n   * @returns {string}\n   */\n  getId() {\n    return this.#idManager.id;\n  }\n\n  get currentLayer() {\n    return this.#allLayers.get(this.#currentPageIndex);\n  }\n\n  getLayer(pageIndex) {\n    return this.#allLayers.get(pageIndex);\n  }\n\n  get currentPageIndex() {\n    return this.#currentPageIndex;\n  }\n\n  /**\n   * Add a new layer for a page which will contains the editors.\n   * @param {AnnotationEditorLayer} layer\n   */\n  addLayer(layer) {\n    this.#allLayers.set(layer.pageIndex, layer);\n    if (this.#isEnabled) {\n      layer.enable();\n    } else {\n      layer.disable();\n    }\n  }\n\n  /**\n   * Remove a layer.\n   * @param {AnnotationEditorLayer} layer\n   */\n  removeLayer(layer) {\n    this.#allLayers.delete(layer.pageIndex);\n  }\n\n  /**\n   * Change the editor mode (None, FreeText, Ink, ...)\n   * @param {number} mode\n   * @param {string|null} editId\n   * @param {boolean} [isFromKeyboard] - true if the mode change is due to a\n   *   keyboard action.\n   * @param {boolean} [mustEnterInEditMode] - true if the editor must enter in\n   *   edit mode.\n   * @param {boolean} [editComment] - true if the mode change is due to a\n   *   comment edit.\n   */\n  async updateMode(\n    mode,\n    editId = null,\n    isFromKeyboard = false,\n    mustEnterInEditMode = false,\n    editComment = false\n  ) {\n    if (this.#mode === mode) {\n      return;\n    }\n\n    if (this.#updateModeCapability) {\n      await this.#updateModeCapability.promise;\n      if (!this.#updateModeCapability) {\n        // This ui manager has been destroyed.\n        return;\n      }\n    }\n\n    this.#updateModeCapability = Promise.withResolvers();\n    this.#currentDrawingSession?.commitOrRemove();\n\n    if (this.#mode === AnnotationEditorType.POPUP) {\n      this.#commentManager?.hideSidebar();\n    }\n    this.#commentManager?.destroyPopup();\n\n    this.#mode = mode;\n    if (mode === AnnotationEditorType.NONE) {\n      this.setEditingState(false);\n      this.#disableAll();\n      for (const editor of this.#allEditors.values()) {\n        editor.hideStandaloneCommentButton();\n      }\n\n      this._editorUndoBar?.hide();\n      this.toggleComment(/* editor = */ null);\n\n      this.#updateModeCapability.resolve();\n      return;\n    }\n\n    for (const editor of this.#allEditors.values()) {\n      editor.addStandaloneCommentButton();\n    }\n\n    if (mode === AnnotationEditorType.SIGNATURE) {\n      await this.#signatureManager?.loadSignatures();\n    }\n\n    this.setEditingState(true);\n    await this.#enableAll();\n    this.unselectAll();\n    for (const layer of this.#allLayers.values()) {\n      layer.updateMode(mode);\n    }\n\n    if (mode === AnnotationEditorType.POPUP) {\n      this.#allEditableAnnotations ||=\n        await this.#pdfDocument.getAnnotationsByType(\n          new Set(this.#editorTypes.map(editorClass => editorClass._editorType))\n        );\n      const elementIds = new Set();\n      const allComments = [];\n      for (const editor of this.#allEditors.values()) {\n        const { annotationElementId, hasComment, deleted } = editor;\n        if (annotationElementId) {\n          elementIds.add(annotationElementId);\n        }\n        if (hasComment && !deleted) {\n          allComments.push(editor.getData());\n        }\n      }\n      for (const annotation of this.#allEditableAnnotations) {\n        const { id, popupRef, contentsObj } = annotation;\n        if (\n          popupRef &&\n          contentsObj?.str &&\n          !elementIds.has(id) &&\n          !this.#deletedAnnotationsElementIds.has(id)\n        ) {\n          // The annotation exists in the PDF and has a comment but there\n          // is no editor for it (anymore).\n          allComments.push(annotation);\n        }\n      }\n      this.#commentManager?.showSidebar(allComments);\n    }\n\n    if (!editId) {\n      if (isFromKeyboard) {\n        this.addNewEditorFromKeyboard();\n      }\n\n      this.#updateModeCapability.resolve();\n      return;\n    }\n\n    for (const editor of this.#allEditors.values()) {\n      if (editor.uid === editId) {\n        this.setSelected(editor);\n        if (editComment) {\n          editor.editComment();\n        } else if (mustEnterInEditMode) {\n          editor.enterInEditMode();\n        } else {\n          editor.focus();\n        }\n      } else {\n        editor.unselect();\n      }\n    }\n\n    this.#updateModeCapability.resolve();\n  }\n\n  addNewEditorFromKeyboard() {\n    if (this.currentLayer.canCreateNewEmptyEditor()) {\n      this.currentLayer.addNewEditor();\n    }\n  }\n\n  /**\n   * Update the toolbar if it's required to reflect the tool currently used.\n   * @param {Object} options\n   * @param {number} mode\n   * @returns {undefined}\n   */\n  updateToolbar(options) {\n    if (options.mode === this.#mode) {\n      return;\n    }\n    this._eventBus.dispatch(\"switchannotationeditormode\", {\n      source: this,\n      ...options,\n    });\n  }\n\n  /**\n   * Update a parameter in the current editor or globally.\n   * @param {number} type\n   * @param {*} value\n   */\n  updateParams(type, value) {\n    if (!this.#editorTypes) {\n      return;\n    }\n\n    switch (type) {\n      case AnnotationEditorParamsType.CREATE:\n        this.currentLayer.addNewEditor(value);\n        return;\n      case AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL:\n        this._eventBus.dispatch(\"reporttelemetry\", {\n          source: this,\n          details: {\n            type: \"editing\",\n            data: {\n              type: \"highlight\",\n              action: \"toggle_visibility\",\n            },\n          },\n        });\n        (this.#showAllStates ||= new Map()).set(type, value);\n        this.showAllEditors(\"highlight\", value);\n        break;\n    }\n\n    if (this.hasSelection) {\n      for (const editor of this.#selectedEditors) {\n        editor.updateParams(type, value);\n      }\n    } else {\n      for (const editorType of this.#editorTypes) {\n        editorType.updateDefaultParams(type, value);\n      }\n    }\n  }\n\n  showAllEditors(type, visible, updateButton = false) {\n    for (const editor of this.#allEditors.values()) {\n      if (editor.editorType === type) {\n        editor.show(visible);\n      }\n    }\n    const state =\n      this.#showAllStates?.get(AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL) ??\n      true;\n    if (state !== visible) {\n      this.#dispatchUpdateUI([\n        [AnnotationEditorParamsType.HIGHLIGHT_SHOW_ALL, visible],\n      ]);\n    }\n  }\n\n  enableWaiting(mustWait = false) {\n    if (this.#isWaiting === mustWait) {\n      return;\n    }\n    this.#isWaiting = mustWait;\n    for (const layer of this.#allLayers.values()) {\n      if (mustWait) {\n        layer.disableClick();\n      } else {\n        layer.enableClick();\n      }\n      layer.div.classList.toggle(\"waiting\", mustWait);\n    }\n  }\n\n  /**\n   * Enable all the layers.\n   */\n  async #enableAll() {\n    if (!this.#isEnabled) {\n      this.#isEnabled = true;\n      const promises = [];\n      for (const layer of this.#allLayers.values()) {\n        promises.push(layer.enable());\n      }\n      await Promise.all(promises);\n      for (const editor of this.#allEditors.values()) {\n        editor.enable();\n      }\n    }\n  }\n\n  /**\n   * Disable all the layers.\n   */\n  #disableAll() {\n    this.unselectAll();\n    if (this.#isEnabled) {\n      this.#isEnabled = false;\n      for (const layer of this.#allLayers.values()) {\n        layer.disable();\n      }\n      for (const editor of this.#allEditors.values()) {\n        editor.disable();\n      }\n    }\n  }\n\n  /**\n   * Get all the editors belonging to a given page.\n   * @param {number} pageIndex\n   * @yields {AnnotationEditor}\n   */\n  *getEditors(pageIndex) {\n    for (const editor of this.#allEditors.values()) {\n      if (editor.pageIndex === pageIndex) {\n        yield editor;\n      }\n    }\n  }\n\n  /**\n   * Get an editor with the given id.\n   * @param {string} id\n   * @returns {AnnotationEditor}\n   */\n  getEditor(id) {\n    return this.#allEditors.get(id);\n  }\n\n  /**\n   * Add a new editor.\n   * @param {AnnotationEditor} editor\n   */\n  addEditor(editor) {\n    this.#allEditors.set(editor.id, editor);\n  }\n\n  /**\n   * Remove an editor.\n   * @param {AnnotationEditor} editor\n   */\n  removeEditor(editor) {\n    if (editor.div.contains(document.activeElement)) {\n      if (this.#focusMainContainerTimeoutId) {\n        clearTimeout(this.#focusMainContainerTimeoutId);\n      }\n      this.#focusMainContainerTimeoutId = setTimeout(() => {\n        // When the div is removed from DOM the focus can move on the\n        // document.body, so we need to move it back to the main container.\n        this.focusMainContainer();\n        this.#focusMainContainerTimeoutId = null;\n      }, 0);\n    }\n    this.#allEditors.delete(editor.id);\n    if (editor.annotationElementId) {\n      this.#missingCanvases?.delete(editor.annotationElementId);\n    }\n    this.unselect(editor);\n    if (\n      !editor.annotationElementId ||\n      !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)\n    ) {\n      this.#annotationStorage?.remove(editor.id);\n    }\n  }\n\n  /**\n   * The annotation element with the given id has been deleted.\n   * @param {AnnotationEditor} editor\n   */\n  addDeletedAnnotationElement(editor) {\n    this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\n    this.addChangedExistingAnnotation(editor);\n    editor.deleted = true;\n  }\n\n  /**\n   * Check if the annotation element with the given id has been deleted.\n   * @param {string} annotationElementId\n   * @returns {boolean}\n   */\n  isDeletedAnnotationElement(annotationElementId) {\n    return this.#deletedAnnotationsElementIds.has(annotationElementId);\n  }\n\n  /**\n   * The annotation element with the given id have been restored.\n   * @param {AnnotationEditor} editor\n   */\n  removeDeletedAnnotationElement(editor) {\n    this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\n    this.removeChangedExistingAnnotation(editor);\n    editor.deleted = false;\n  }\n\n  /**\n   * Add an editor to the layer it belongs to or add it to the global map.\n   * @param {AnnotationEditor} editor\n   */\n  #addEditorToLayer(editor) {\n    const layer = this.#allLayers.get(editor.pageIndex);\n    if (layer) {\n      layer.addOrRebuild(editor);\n    } else {\n      this.addEditor(editor);\n      this.addToAnnotationStorage(editor);\n    }\n  }\n\n  /**\n   * Set the given editor as the active one.\n   * @param {AnnotationEditor} editor\n   */\n  setActiveEditor(editor) {\n    if (this.#activeEditor === editor) {\n      return;\n    }\n\n    this.#activeEditor = editor;\n    if (editor) {\n      this.#dispatchUpdateUI(editor.propertiesToUpdate);\n    }\n  }\n\n  get #lastSelectedEditor() {\n    let ed = null;\n    for (ed of this.#selectedEditors) {\n      // Iterate to get the last element.\n    }\n    return ed;\n  }\n\n  /**\n   * Update the UI of the active editor.\n   * @param {AnnotationEditor} editor\n   */\n  updateUI(editor) {\n    if (this.#lastSelectedEditor === editor) {\n      this.#dispatchUpdateUI(editor.propertiesToUpdate);\n    }\n  }\n\n  updateUIForDefaultProperties(editorType) {\n    this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n  }\n\n  /**\n   * Add or remove an editor the current selection.\n   * @param {AnnotationEditor} editor\n   */\n  toggleSelected(editor) {\n    if (this.#selectedEditors.has(editor)) {\n      this.#selectedEditors.delete(editor);\n      editor.unselect();\n      this.#dispatchUpdateStates({\n        hasSelectedEditor: this.hasSelection,\n      });\n      return;\n    }\n    this.#selectedEditors.add(editor);\n    editor.select();\n    this.#dispatchUpdateUI(editor.propertiesToUpdate);\n    this.#dispatchUpdateStates({\n      hasSelectedEditor: true,\n    });\n  }\n\n  /**\n   * Set the last selected editor.\n   * @param {AnnotationEditor} editor\n   */\n  setSelected(editor) {\n    this.updateToolbar({\n      mode: editor.mode,\n      editId: editor.id,\n    });\n\n    this.#currentDrawingSession?.commitOrRemove();\n    for (const ed of this.#selectedEditors) {\n      if (ed !== editor) {\n        ed.unselect();\n      }\n    }\n    this.#selectedEditors.clear();\n\n    this.#selectedEditors.add(editor);\n    editor.select();\n    this.#dispatchUpdateUI(editor.propertiesToUpdate);\n    this.#dispatchUpdateStates({\n      hasSelectedEditor: true,\n    });\n  }\n\n  /**\n   * Check if the editor is selected.\n   * @param {AnnotationEditor} editor\n   */\n  isSelected(editor) {\n    return this.#selectedEditors.has(editor);\n  }\n\n  get firstSelectedEditor() {\n    return this.#selectedEditors.values().next().value;\n  }\n\n  /**\n   * Unselect an editor.\n   * @param {AnnotationEditor} editor\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  get isEnterHandled() {\n    return (\n      this.#selectedEditors.size === 1 &&\n      this.firstSelectedEditor.isEnterHandled\n    );\n  }\n\n  /**\n   * Undo the last command.\n   */\n  undo() {\n    this.#commandManager.undo();\n    this.#dispatchUpdateStates({\n      hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n      hasSomethingToRedo: true,\n      isEmpty: this.#isEmpty(),\n    });\n    this._editorUndoBar?.hide();\n  }\n\n  /**\n   * Redo the last undoed command.\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  /**\n   * Add a command to execute (cmd) and another one to undo it.\n   * @param {Object} params\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  cleanUndoStack(type) {\n    this.#commandManager.cleanType(type);\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  /**\n   * Delete the current editor or all.\n   */\n  delete() {\n    this.commitOrRemove();\n    const drawingEditor = this.currentLayer?.endDrawingSession(\n      /* isAborted = */ true\n    );\n    if (!this.hasSelection && !drawingEditor) {\n      return;\n    }\n\n    const editors = drawingEditor\n      ? [drawingEditor]\n      : [...this.#selectedEditors];\n    const cmd = () => {\n      this._editorUndoBar?.show(\n        undo,\n        editors.length === 1 ? editors[0].editorType : editors.length\n      );\n      for (const editor of editors) {\n        editor.remove();\n      }\n    };\n    const undo = () => {\n      for (const editor of editors) {\n        this.#addEditorToLayer(editor);\n      }\n    };\n\n    this.addCommands({ cmd, undo, mustExec: true });\n  }\n\n  commitOrRemove() {\n    // An editor is being edited so just commit it.\n    this.#activeEditor?.commitOrRemove();\n  }\n\n  hasSomethingToControl() {\n    return this.#activeEditor || this.hasSelection;\n  }\n\n  /**\n   * Select the editors.\n   * @param {Array<AnnotationEditor>} editors\n   */\n  #selectEditors(editors) {\n    for (const editor of this.#selectedEditors) {\n      editor.unselect();\n    }\n    this.#selectedEditors.clear();\n    for (const editor of editors) {\n      if (editor.isEmpty()) {\n        continue;\n      }\n      this.#selectedEditors.add(editor);\n      editor.select();\n    }\n    this.#dispatchUpdateStates({ hasSelectedEditor: this.hasSelection });\n  }\n\n  /**\n   * Select all the editors.\n   */\n  selectAll() {\n    for (const editor of this.#selectedEditors) {\n      editor.commit();\n    }\n    this.#selectEditors(this.#allEditors.values());\n  }\n\n  /**\n   * Unselect all the selected editors.\n   */\n  unselectAll() {\n    if (this.#activeEditor) {\n      // An editor is being edited so just commit it.\n      this.#activeEditor.commitOrRemove();\n      if (this.#mode !== AnnotationEditorType.NONE) {\n        // If the mode is NONE, we want to really unselect the editor, hence we\n        // mustn't return here.\n        return;\n      }\n    }\n\n    if (this.#currentDrawingSession?.commitOrRemove()) {\n      return;\n    }\n\n    if (!this.hasSelection) {\n      return;\n    }\n    for (const editor of this.#selectedEditors) {\n      editor.unselect();\n    }\n    this.#selectedEditors.clear();\n    this.#dispatchUpdateStates({\n      hasSelectedEditor: false,\n    });\n  }\n\n  translateSelectedEditors(x, y, noCommit = false) {\n    if (!noCommit) {\n      this.commitOrRemove();\n    }\n    if (!this.hasSelection) {\n      return;\n    }\n\n    this.#translation[0] += x;\n    this.#translation[1] += y;\n    const [totalX, totalY] = this.#translation;\n    const editors = [...this.#selectedEditors];\n\n    // We don't want to have an undo/redo for each translation so we wait a bit\n    // before adding the command to the command manager.\n    const TIME_TO_WAIT = 1000;\n\n    if (this.#translationTimeoutId) {\n      clearTimeout(this.#translationTimeoutId);\n    }\n\n    this.#translationTimeoutId = setTimeout(() => {\n      this.#translationTimeoutId = null;\n      this.#translation[0] = this.#translation[1] = 0;\n\n      this.addCommands({\n        cmd: () => {\n          for (const editor of editors) {\n            if (this.#allEditors.has(editor.id)) {\n              editor.translateInPage(totalX, totalY);\n              editor.translationDone();\n            }\n          }\n        },\n        undo: () => {\n          for (const editor of editors) {\n            if (this.#allEditors.has(editor.id)) {\n              editor.translateInPage(-totalX, -totalY);\n              editor.translationDone();\n            }\n          }\n        },\n        mustExec: false,\n      });\n    }, TIME_TO_WAIT);\n\n    for (const editor of editors) {\n      editor.translateInPage(x, y);\n      editor.translationDone();\n    }\n  }\n\n  /**\n   * Set up the drag session for moving the selected editors.\n   */\n  setUpDragSession() {\n    // Note: don't use any references to the editor's parent which can be null\n    // if the editor belongs to a destroyed page.\n    if (!this.hasSelection) {\n      return;\n    }\n    // Avoid to have spurious text selection in the text layer when dragging.\n    this.disableUserSelect(true);\n    this.#draggingEditors = new Map();\n    for (const editor of this.#selectedEditors) {\n      this.#draggingEditors.set(editor, {\n        savedX: editor.x,\n        savedY: editor.y,\n        savedPageIndex: editor.pageIndex,\n        newX: 0,\n        newY: 0,\n        newPageIndex: -1,\n      });\n    }\n  }\n\n  /**\n   * Ends the drag session.\n   * @returns {boolean} true if at least one editor has been moved.\n   */\n  endDragSession() {\n    if (!this.#draggingEditors) {\n      return false;\n    }\n    this.disableUserSelect(false);\n    const map = this.#draggingEditors;\n    this.#draggingEditors = null;\n    let mustBeAddedInUndoStack = false;\n\n    for (const [{ x, y, pageIndex }, value] of map) {\n      value.newX = x;\n      value.newY = y;\n      value.newPageIndex = pageIndex;\n      mustBeAddedInUndoStack ||=\n        x !== value.savedX ||\n        y !== value.savedY ||\n        pageIndex !== value.savedPageIndex;\n    }\n\n    if (!mustBeAddedInUndoStack) {\n      return false;\n    }\n\n    const move = (editor, x, y, pageIndex) => {\n      if (this.#allEditors.has(editor.id)) {\n        // The editor can be undone/redone on a page which is not visible (and\n        // which potentially has no annotation editor layer), hence we need to\n        // use the pageIndex instead of the parent.\n        const parent = this.#allLayers.get(pageIndex);\n        if (parent) {\n          editor._setParentAndPosition(parent, x, y);\n        } else {\n          editor.pageIndex = pageIndex;\n          editor.x = x;\n          editor.y = y;\n        }\n      }\n    };\n\n    this.addCommands({\n      cmd: () => {\n        for (const [editor, { newX, newY, newPageIndex }] of map) {\n          move(editor, newX, newY, newPageIndex);\n        }\n      },\n      undo: () => {\n        for (const [editor, { savedX, savedY, savedPageIndex }] of map) {\n          move(editor, savedX, savedY, savedPageIndex);\n        }\n      },\n      mustExec: true,\n    });\n\n    return true;\n  }\n\n  /**\n   * Drag the set of selected editors.\n   * @param {number} tx\n   * @param {number} ty\n   */\n  dragSelectedEditors(tx, ty) {\n    if (!this.#draggingEditors) {\n      return;\n    }\n    for (const editor of this.#draggingEditors.keys()) {\n      editor.drag(tx, ty);\n    }\n  }\n\n  /**\n   * Rebuild the editor (usually on undo/redo actions) on a potentially\n   * non-rendered page.\n   * @param {AnnotationEditor} editor\n   */\n  rebuild(editor) {\n    if (editor.parent === null) {\n      const parent = this.getLayer(editor.pageIndex);\n      if (parent) {\n        parent.changeParent(editor);\n        parent.addOrRebuild(editor);\n      } else {\n        this.addEditor(editor);\n        this.addToAnnotationStorage(editor);\n        editor.rebuild();\n      }\n    } else {\n      editor.parent.addOrRebuild(editor);\n    }\n  }\n\n  get isEditorHandlingKeyboard() {\n    return (\n      this.getActive()?.shouldGetKeyboardEvents() ||\n      (this.#selectedEditors.size === 1 &&\n        this.firstSelectedEditor.shouldGetKeyboardEvents())\n    );\n  }\n\n  /**\n   * Is the current editor the one passed as argument?\n   * @param {AnnotationEditor} editor\n   * @returns\n   */\n  isActive(editor) {\n    return this.#activeEditor === editor;\n  }\n\n  /**\n   * Get the current active editor.\n   * @returns {AnnotationEditor|null}\n   */\n  getActive() {\n    return this.#activeEditor;\n  }\n\n  /**\n   * Get the current editor mode.\n   * @returns {number}\n   */\n  getMode() {\n    return this.#mode;\n  }\n\n  isEditingMode() {\n    return this.#mode !== AnnotationEditorType.NONE;\n  }\n\n  get imageManager() {\n    return shadow(this, \"imageManager\", new ImageManager());\n  }\n\n  getSelectionBoxes(textLayer) {\n    if (!textLayer) {\n      return null;\n    }\n    const selection = document.getSelection();\n    for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n      if (\n        !textLayer.contains(selection.getRangeAt(i).commonAncestorContainer)\n      ) {\n        return null;\n      }\n    }\n\n    const {\n      x: layerX,\n      y: layerY,\n      width: parentWidth,\n      height: parentHeight,\n    } = textLayer.getBoundingClientRect();\n\n    // We must rotate the boxes because we want to have them in the non-rotated\n    // page coordinates.\n    let rotator;\n    switch (textLayer.getAttribute(\"data-main-rotation\")) {\n      case \"90\":\n        rotator = (x, y, w, h) => ({\n          x: (y - layerY) / parentHeight,\n          y: 1 - (x + w - layerX) / parentWidth,\n          width: h / parentHeight,\n          height: w / parentWidth,\n        });\n        break;\n      case \"180\":\n        rotator = (x, y, w, h) => ({\n          x: 1 - (x + w - layerX) / parentWidth,\n          y: 1 - (y + h - layerY) / parentHeight,\n          width: w / parentWidth,\n          height: h / parentHeight,\n        });\n        break;\n      case \"270\":\n        rotator = (x, y, w, h) => ({\n          x: 1 - (y + h - layerY) / parentHeight,\n          y: (x - layerX) / parentWidth,\n          width: h / parentHeight,\n          height: w / parentWidth,\n        });\n        break;\n      default:\n        rotator = (x, y, w, h) => ({\n          x: (x - layerX) / parentWidth,\n          y: (y - layerY) / parentHeight,\n          width: w / parentWidth,\n          height: h / parentHeight,\n        });\n        break;\n    }\n\n    const boxes = [];\n    for (let i = 0, ii = selection.rangeCount; i < ii; i++) {\n      const range = selection.getRangeAt(i);\n      if (range.collapsed) {\n        continue;\n      }\n      for (const { x, y, width, height } of range.getClientRects()) {\n        if (width === 0 || height === 0) {\n          continue;\n        }\n        boxes.push(rotator(x, y, width, height));\n      }\n    }\n    return boxes.length === 0 ? null : boxes;\n  }\n\n  addChangedExistingAnnotation({ annotationElementId, id }) {\n    (this.#changedExistingAnnotations ||= new Map()).set(\n      annotationElementId,\n      id\n    );\n  }\n\n  removeChangedExistingAnnotation({ annotationElementId }) {\n    this.#changedExistingAnnotations?.delete(annotationElementId);\n  }\n\n  renderAnnotationElement(annotation) {\n    const editorId = this.#changedExistingAnnotations?.get(annotation.data.id);\n    if (!editorId) {\n      return;\n    }\n    const editor = this.#annotationStorage.getRawValue(editorId);\n    if (!editor) {\n      return;\n    }\n    if (this.#mode === AnnotationEditorType.NONE && !editor.hasBeenModified) {\n      return;\n    }\n    editor.renderAnnotationElement(annotation);\n  }\n\n  setMissingCanvas(annotationId, annotationElementId, canvas) {\n    const editor = this.#missingCanvases?.get(annotationId);\n    if (!editor) {\n      return;\n    }\n    editor.setCanvas(annotationElementId, canvas);\n    this.#missingCanvases.delete(annotationId);\n  }\n\n  addMissingCanvas(annotationId, editor) {\n    (this.#missingCanvases ||= new Map()).set(annotationId, editor);\n  }\n}\n\nexport {\n  AnnotationEditorUIManager,\n  bindEvents,\n  ColorManager,\n  CommandManager,\n  KeyboardManager,\n};\n", "/* Copyright 2023 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { noContextMenu } from \"../display_utils.js\";\n\nclass AltText {\n  #altText = null;\n\n  #altTextDecorative = false;\n\n  #altTextButton = null;\n\n  #altTextButtonLabel = null;\n\n  #altTextTooltip = null;\n\n  #altTextTooltipTimeout = null;\n\n  #altTextWasFromKeyBoard = false;\n\n  #badge = null;\n\n  #editor = null;\n\n  #guessedText = null;\n\n  #textWithDisclaimer = null;\n\n  #useNewAltTextFlow = false;\n\n  static #l10nNewButton = null;\n\n  static _l10n = null;\n\n  constructor(editor) {\n    this.#editor = editor;\n    this.#useNewAltTextFlow = editor._uiManager.useNewAltTextFlow;\n\n    AltText.#l10nNewButton ||= Object.freeze({\n      added: \"pdfjs-editor-new-alt-text-added-button\",\n      \"added-label\": \"pdfjs-editor-new-alt-text-added-button-label\",\n      missing: \"pdfjs-editor-new-alt-text-missing-button\",\n      \"missing-label\": \"pdfjs-editor-new-alt-text-missing-button-label\",\n      review: \"pdfjs-editor-new-alt-text-to-review-button\",\n      \"review-label\": \"pdfjs-editor-new-alt-text-to-review-button-label\",\n    });\n  }\n\n  static initialize(l10n) {\n    AltText._l10n ??= l10n;\n  }\n\n  async render() {\n    const altText = (this.#altTextButton = document.createElement(\"button\"));\n    altText.className = \"altText\";\n    altText.tabIndex = \"0\";\n\n    const label = (this.#altTextButtonLabel = document.createElement(\"span\"));\n    altText.append(label);\n\n    if (this.#useNewAltTextFlow) {\n      altText.classList.add(\"new\");\n      altText.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton.missing);\n      label.setAttribute(\n        \"data-l10n-id\",\n        AltText.#l10nNewButton[\"missing-label\"]\n      );\n    } else {\n      altText.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button\");\n      label.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-button-label\");\n    }\n\n    const signal = this.#editor._uiManager._signal;\n    altText.addEventListener(\"contextmenu\", noContextMenu, { signal });\n    altText.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n      signal,\n    });\n\n    const onClick = event => {\n      event.preventDefault();\n      this.#editor._uiManager.editAltText(this.#editor);\n      if (this.#useNewAltTextFlow) {\n        this.#editor._reportTelemetry({\n          action: \"pdfjs.image.alt_text.image_status_label_clicked\",\n          data: { label: this.#label },\n        });\n      }\n    };\n    altText.addEventListener(\"click\", onClick, { capture: true, signal });\n    altText.addEventListener(\n      \"keydown\",\n      event => {\n        if (event.target === altText && event.key === \"Enter\") {\n          this.#altTextWasFromKeyBoard = true;\n          onClick(event);\n        }\n      },\n      { signal }\n    );\n    await this.#setState();\n\n    return altText;\n  }\n\n  get #label() {\n    return (\n      (this.#altText && \"added\") ||\n      (this.#altText === null && this.guessedText && \"review\") ||\n      \"missing\"\n    );\n  }\n\n  finish() {\n    if (!this.#altTextButton) {\n      return;\n    }\n    this.#altTextButton.focus({ focusVisible: this.#altTextWasFromKeyBoard });\n    this.#altTextWasFromKeyBoard = false;\n  }\n\n  isEmpty() {\n    if (this.#useNewAltTextFlow) {\n      return this.#altText === null;\n    }\n    return !this.#altText && !this.#altTextDecorative;\n  }\n\n  hasData() {\n    if (this.#useNewAltTextFlow) {\n      return this.#altText !== null || !!this.#guessedText;\n    }\n    return this.isEmpty();\n  }\n\n  get guessedText() {\n    return this.#guessedText;\n  }\n\n  async setGuessedText(guessedText) {\n    if (this.#altText !== null) {\n      // The user provided their own alt text, so we don't want to overwrite it.\n      return;\n    }\n    this.#guessedText = guessedText;\n    this.#textWithDisclaimer = await AltText._l10n.get(\n      \"pdfjs-editor-new-alt-text-generated-alt-text-with-disclaimer\",\n      { generatedAltText: guessedText }\n    );\n    this.#setState();\n  }\n\n  toggleAltTextBadge(visibility = false) {\n    if (!this.#useNewAltTextFlow || this.#altText) {\n      this.#badge?.remove();\n      this.#badge = null;\n      return;\n    }\n    if (!this.#badge) {\n      const badge = (this.#badge = document.createElement(\"div\"));\n      badge.className = \"noAltTextBadge\";\n      this.#editor.div.append(badge);\n    }\n    this.#badge.classList.toggle(\"hidden\", !visibility);\n  }\n\n  serialize(isForCopying) {\n    let altText = this.#altText;\n    if (!isForCopying && this.#guessedText === altText) {\n      altText = this.#textWithDisclaimer;\n    }\n    return {\n      altText,\n      decorative: this.#altTextDecorative,\n      guessedText: this.#guessedText,\n      textWithDisclaimer: this.#textWithDisclaimer,\n    };\n  }\n\n  get data() {\n    return {\n      altText: this.#altText,\n      decorative: this.#altTextDecorative,\n    };\n  }\n\n  /**\n   * Set the alt text data.\n   */\n  set data({\n    altText,\n    decorative,\n    guessedText,\n    textWithDisclaimer,\n    cancel = false,\n  }) {\n    if (guessedText) {\n      this.#guessedText = guessedText;\n      this.#textWithDisclaimer = textWithDisclaimer;\n    }\n    if (this.#altText === altText && this.#altTextDecorative === decorative) {\n      return;\n    }\n    if (!cancel) {\n      this.#altText = altText;\n      this.#altTextDecorative = decorative;\n    }\n    this.#setState();\n  }\n\n  toggle(enabled = false) {\n    if (!this.#altTextButton) {\n      return;\n    }\n    if (!enabled && this.#altTextTooltipTimeout) {\n      clearTimeout(this.#altTextTooltipTimeout);\n      this.#altTextTooltipTimeout = null;\n    }\n    this.#altTextButton.disabled = !enabled;\n  }\n\n  shown() {\n    this.#editor._reportTelemetry({\n      action: \"pdfjs.image.alt_text.image_status_label_displayed\",\n      data: { label: this.#label },\n    });\n  }\n\n  destroy() {\n    this.#altTextButton?.remove();\n    this.#altTextButton = null;\n    this.#altTextButtonLabel = null;\n    this.#altTextTooltip = null;\n    this.#badge?.remove();\n    this.#badge = null;\n  }\n\n  async #setState() {\n    const button = this.#altTextButton;\n    if (!button) {\n      return;\n    }\n\n    if (this.#useNewAltTextFlow) {\n      button.classList.toggle(\"done\", !!this.#altText);\n      button.setAttribute(\"data-l10n-id\", AltText.#l10nNewButton[this.#label]);\n\n      this.#altTextButtonLabel?.setAttribute(\n        \"data-l10n-id\",\n        AltText.#l10nNewButton[`${this.#label}-label`]\n      );\n      if (!this.#altText) {\n        this.#altTextTooltip?.remove();\n        return;\n      }\n    } else {\n      if (!this.#altText && !this.#altTextDecorative) {\n        button.classList.remove(\"done\");\n        this.#altTextTooltip?.remove();\n        return;\n      }\n      button.classList.add(\"done\");\n      button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-alt-text-edit-button\");\n    }\n\n    let tooltip = this.#altTextTooltip;\n    if (!tooltip) {\n      this.#altTextTooltip = tooltip = document.createElement(\"span\");\n      tooltip.className = \"tooltip\";\n      tooltip.setAttribute(\"role\", \"tooltip\");\n      tooltip.id = `alt-text-tooltip-${this.#editor.id}`;\n\n      const DELAY_TO_SHOW_TOOLTIP = 100;\n      const signal = this.#editor._uiManager._signal;\n      signal.addEventListener(\n        \"abort\",\n        () => {\n          clearTimeout(this.#altTextTooltipTimeout);\n          this.#altTextTooltipTimeout = null;\n        },\n        { once: true }\n      );\n      button.addEventListener(\n        \"mouseenter\",\n        () => {\n          this.#altTextTooltipTimeout = setTimeout(() => {\n            this.#altTextTooltipTimeout = null;\n            this.#altTextTooltip.classList.add(\"show\");\n            this.#editor._reportTelemetry({\n              action: \"alt_text_tooltip\",\n            });\n          }, DELAY_TO_SHOW_TOOLTIP);\n        },\n        { signal }\n      );\n      button.addEventListener(\n        \"mouseleave\",\n        () => {\n          if (this.#altTextTooltipTimeout) {\n            clearTimeout(this.#altTextTooltipTimeout);\n            this.#altTextTooltipTimeout = null;\n          }\n          this.#altTextTooltip?.classList.remove(\"show\");\n        },\n        { signal }\n      );\n    }\n    if (this.#altTextDecorative) {\n      tooltip.setAttribute(\n        \"data-l10n-id\",\n        \"pdfjs-editor-alt-text-decorative-tooltip\"\n      );\n    } else {\n      tooltip.removeAttribute(\"data-l10n-id\");\n      tooltip.textContent = this.#altText;\n    }\n\n    if (!tooltip.parentNode) {\n      button.append(tooltip);\n    }\n\n    const element = this.#editor.getElementForAltText();\n    element?.setAttribute(\"aria-describedby\", tooltip.id);\n  }\n}\n\nexport { AltText };\n", "/* Copyright 2025 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { noContextMenu, stopEvent } from \"../display_utils.js\";\n\nclass Comment {\n  #commentStandaloneButton = null;\n\n  #commentToolbarButton = null;\n\n  #commentWasFromKeyBoard = false;\n\n  #editor = null;\n\n  #initialText = null;\n\n  #richText = null;\n\n  #text = null;\n\n  #date = null;\n\n  #deleted = false;\n\n  #popupPosition = null;\n\n  constructor(editor) {\n    this.#editor = editor;\n  }\n\n  renderForToolbar() {\n    const button = (this.#commentToolbarButton =\n      document.createElement(\"button\"));\n    button.className = \"comment\";\n    return this.#render(button, false);\n  }\n\n  renderForStandalone() {\n    const button = (this.#commentStandaloneButton =\n      document.createElement(\"button\"));\n    button.className = \"annotationCommentButton\";\n\n    const position = this.#editor.commentButtonPosition;\n    if (position) {\n      const { style } = button;\n      style.insetInlineEnd = `calc(${\n        100 *\n        (this.#editor._uiManager.direction === \"ltr\"\n          ? 1 - position[0]\n          : position[0])\n      }% - var(--comment-button-dim))`;\n      style.top = `calc(${100 * position[1]}% - var(--comment-button-dim))`;\n      const color = this.#editor.commentButtonColor;\n      if (color) {\n        style.backgroundColor = color;\n      }\n    }\n\n    return this.#render(button, true);\n  }\n\n  focusButton() {\n    setTimeout(() => {\n      (this.#commentStandaloneButton ?? this.#commentToolbarButton)?.focus();\n    }, 0);\n  }\n\n  onUpdatedColor() {\n    if (!this.#commentStandaloneButton) {\n      return;\n    }\n    const color = this.#editor.commentButtonColor;\n    if (color) {\n      this.#commentStandaloneButton.style.backgroundColor = color;\n    }\n    this.#editor._uiManager.updatePopupColor(this.#editor);\n  }\n\n  get commentButtonWidth() {\n    return (\n      (this.#commentStandaloneButton?.getBoundingClientRect().width ?? 0) /\n      this.#editor.parent.boundingClientRect.width\n    );\n  }\n\n  get commentPopupPositionInLayer() {\n    if (this.#popupPosition) {\n      return this.#popupPosition;\n    }\n    if (!this.#commentStandaloneButton) {\n      return null;\n    }\n    const { x, y, height } =\n      this.#commentStandaloneButton.getBoundingClientRect();\n    const {\n      x: parentX,\n      y: parentY,\n      width: parentWidth,\n      height: parentHeight,\n    } = this.#editor.parent.boundingClientRect;\n    return [(x - parentX) / parentWidth, (y + height - parentY) / parentHeight];\n  }\n\n  set commentPopupPositionInLayer(pos) {\n    this.#popupPosition = pos;\n  }\n\n  hasDefaultPopupPosition() {\n    return this.#popupPosition === null;\n  }\n\n  removeStandaloneCommentButton() {\n    this.#commentStandaloneButton?.remove();\n    this.#commentStandaloneButton = null;\n  }\n\n  removeToolbarCommentButton() {\n    this.#commentToolbarButton?.remove();\n    this.#commentToolbarButton = null;\n  }\n\n  setCommentButtonStates({ selected, hasPopup }) {\n    if (!this.#commentStandaloneButton) {\n      return;\n    }\n    this.#commentStandaloneButton.classList.toggle(\"selected\", selected);\n    this.#commentStandaloneButton.ariaExpanded = hasPopup;\n  }\n\n  #render(comment, isStandalone) {\n    if (!this.#editor._uiManager.hasCommentManager()) {\n      return null;\n    }\n\n    comment.tabIndex = \"0\";\n    comment.ariaHasPopup = \"dialog\";\n\n    if (isStandalone) {\n      comment.ariaControls = \"commentPopup\";\n      comment.setAttribute(\"data-l10n-id\", \"pdfjs-show-comment-button\");\n    } else {\n      comment.ariaControlsElements = [\n        this.#editor._uiManager.getCommentDialogElement(),\n      ];\n      comment.setAttribute(\"data-l10n-id\", \"pdfjs-editor-edit-comment-button\");\n    }\n\n    const signal = this.#editor._uiManager._signal;\n    if (!(signal instanceof AbortSignal) || signal.aborted) {\n      return comment;\n    }\n\n    comment.addEventListener(\"contextmenu\", noContextMenu, { signal });\n    if (isStandalone) {\n      comment.addEventListener(\n        \"focusin\",\n        e => {\n          this.#editor._focusEventsAllowed = false;\n          stopEvent(e);\n        },\n        {\n          capture: true,\n          signal,\n        }\n      );\n      comment.addEventListener(\n        \"focusout\",\n        e => {\n          this.#editor._focusEventsAllowed = true;\n          stopEvent(e);\n        },\n        {\n          capture: true,\n          signal,\n        }\n      );\n    }\n    comment.addEventListener(\"pointerdown\", event => event.stopPropagation(), {\n      signal,\n    });\n\n    const onClick = event => {\n      event.preventDefault();\n      if (comment === this.#commentToolbarButton) {\n        this.edit();\n      } else {\n        this.#editor.toggleComment(/* isSelected = */ true);\n      }\n    };\n    comment.addEventListener(\"click\", onClick, { capture: true, signal });\n    comment.addEventListener(\n      \"keydown\",\n      event => {\n        if (event.target === comment && event.key === \"Enter\") {\n          this.#commentWasFromKeyBoard = true;\n          onClick(event);\n        }\n      },\n      { signal }\n    );\n\n    comment.addEventListener(\n      \"pointerenter\",\n      () => {\n        this.#editor.toggleComment(\n          /* isSelected = */ false,\n          /* visibility = */ true\n        );\n      },\n      { signal }\n    );\n    comment.addEventListener(\n      \"pointerleave\",\n      () => {\n        this.#editor.toggleComment(\n          /* isSelected = */ false,\n          /* visibility = */ false\n        );\n      },\n      { signal }\n    );\n\n    return comment;\n  }\n\n  edit(options) {\n    const position = this.commentPopupPositionInLayer;\n    let posX, posY;\n    if (position) {\n      [posX, posY] = position;\n    } else {\n      // The position is in the editor coordinates.\n      [posX, posY] = this.#editor.commentButtonPosition;\n      const { width, height, x, y } = this.#editor;\n      posX = x + posX * width;\n      posY = y + posY * height;\n    }\n    const parentDimensions = this.#editor.parent.boundingClientRect;\n    const {\n      x: parentX,\n      y: parentY,\n      width: parentWidth,\n      height: parentHeight,\n    } = parentDimensions;\n    this.#editor._uiManager.editComment(\n      this.#editor,\n      parentX + posX * parentWidth,\n      parentY + posY * parentHeight,\n      { ...options, parentDimensions }\n    );\n  }\n\n  finish() {\n    if (!this.#commentToolbarButton) {\n      return;\n    }\n    this.#commentToolbarButton.focus({\n      focusVisible: this.#commentWasFromKeyBoard,\n    });\n    this.#commentWasFromKeyBoard = false;\n  }\n\n  isDeleted() {\n    return this.#deleted || this.#text === \"\";\n  }\n\n  isEmpty() {\n    return this.#text === null;\n  }\n\n  hasBeenEdited() {\n    return this.isDeleted() || this.#text !== this.#initialText;\n  }\n\n  serialize() {\n    return this.data;\n  }\n\n  get data() {\n    return {\n      text: this.#text,\n      richText: this.#richText,\n      date: this.#date,\n      deleted: this.isDeleted(),\n    };\n  }\n\n  /**\n   * Set the comment data.\n   */\n  set data(text) {\n    if (text !== this.#text) {\n      this.#richText = null;\n    }\n    if (text === null) {\n      this.#text = \"\";\n      this.#deleted = true;\n      return;\n    }\n    this.#text = text;\n    this.#date = new Date();\n    this.#deleted = false;\n  }\n\n  setInitialText(text, richText = null) {\n    this.#initialText = text;\n    this.data = text;\n    this.#date = null;\n    this.#richText = richText;\n  }\n\n  shown() {}\n\n  destroy() {\n    this.#commentToolbarButton?.remove();\n    this.#commentToolbarButton = null;\n    this.#commentStandaloneButton?.remove();\n    this.#commentStandaloneButton = null;\n    this.#text = \"\";\n    this.#richText = null;\n    this.#date = null;\n    this.#editor = null;\n    this.#commentWasFromKeyBoard = false;\n    this.#deleted = false;\n  }\n}\n\nexport { Comment };\n", "/* Copyright 2024 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { OutputScale, stopEvent } from \"./display_utils.js\";\n\nclass TouchManager {\n  #container;\n\n  #isPinching = false;\n\n  #isPinchingStopped = null;\n\n  #isPinchingDisabled;\n\n  #onPinchStart;\n\n  #onPinching;\n\n  #onPinchEnd;\n\n  #pointerDownAC = null;\n\n  #signal;\n\n  #touchInfo = null;\n\n  #touchManagerAC;\n\n  #touchMoveAC = null;\n\n  constructor({\n    container,\n    isPinchingDisabled = null,\n    isPinchingStopped = null,\n    onPinchStart = null,\n    onPinching = null,\n    onPinchEnd = null,\n    signal,\n  }) {\n    this.#container = container;\n    this.#isPinchingStopped = isPinchingStopped;\n    this.#isPinchingDisabled = isPinchingDisabled;\n    this.#onPinchStart = onPinchStart;\n    this.#onPinching = onPinching;\n    this.#onPinchEnd = onPinchEnd;\n    this.#touchManagerAC = new AbortController();\n    this.#signal = AbortSignal.any([signal, this.#touchManagerAC.signal]);\n\n    container.addEventListener(\"touchstart\", this.#onTouchStart.bind(this), {\n      passive: false,\n      signal: this.#signal,\n    });\n  }\n\n  /**\n   * NOTE: Don't shadow this value since `devicePixelRatio` may change if the\n   * window resolution changes, e.g. if the viewer is moved to another monitor.\n   */\n  get MIN_TOUCH_DISTANCE_TO_PINCH() {\n    // The 35 is coming from:\n    //  https://searchfox.org/mozilla-central/source/gfx/layers/apz/src/GestureEventListener.cpp#36\n    //\n    // The properties TouchEvent::screenX/Y are in screen CSS pixels:\n    //  https://developer.mozilla.org/en-US/docs/Web/API/Touch/screenX#examples\n    // MIN_TOUCH_DISTANCE_TO_PINCH is in CSS pixels.\n    return 35 / OutputScale.pixelRatio;\n  }\n\n  #onTouchStart(evt) {\n    if (this.#isPinchingDisabled?.()) {\n      return;\n    }\n\n    if (evt.touches.length === 1) {\n      if (this.#pointerDownAC) {\n        return;\n      }\n      const pointerDownAC = (this.#pointerDownAC = new AbortController());\n      const signal = AbortSignal.any([this.#signal, pointerDownAC.signal]);\n      const container = this.#container;\n\n      // We want to have the events at the capture phase to make sure we can\n      // cancel them.\n      const opts = { capture: true, signal, passive: false };\n      const cancelPointerDown = e => {\n        if (e.pointerType === \"touch\") {\n          this.#pointerDownAC?.abort();\n          this.#pointerDownAC = null;\n        }\n      };\n      container.addEventListener(\n        \"pointerdown\",\n        e => {\n          if (e.pointerType === \"touch\") {\n            // This is the second finger so we don't want it select something\n            // or whatever.\n            stopEvent(e);\n            cancelPointerDown(e);\n          }\n        },\n        opts\n      );\n      container.addEventListener(\"pointerup\", cancelPointerDown, opts);\n      container.addEventListener(\"pointercancel\", cancelPointerDown, opts);\n      return;\n    }\n\n    if (!this.#touchMoveAC) {\n      this.#touchMoveAC = new AbortController();\n      const signal = AbortSignal.any([this.#signal, this.#touchMoveAC.signal]);\n      const container = this.#container;\n\n      const opt = { signal, capture: false, passive: false };\n      container.addEventListener(\n        \"touchmove\",\n        this.#onTouchMove.bind(this),\n        opt\n      );\n      const onTouchEnd = this.#onTouchEnd.bind(this);\n      container.addEventListener(\"touchend\", onTouchEnd, opt);\n      container.addEventListener(\"touchcancel\", onTouchEnd, opt);\n\n      opt.capture = true;\n      container.addEventListener(\"pointerdown\", stopEvent, opt);\n      container.addEventListener(\"pointermove\", stopEvent, opt);\n      container.addEventListener(\"pointercancel\", stopEvent, opt);\n      container.addEventListener(\"pointerup\", stopEvent, opt);\n      this.#onPinchStart?.();\n    }\n\n    stopEvent(evt);\n\n    if (evt.touches.length !== 2 || this.#isPinchingStopped?.()) {\n      this.#touchInfo = null;\n      return;\n    }\n\n    let [touch0, touch1] = evt.touches;\n    if (touch0.identifier > touch1.identifier) {\n      [touch0, touch1] = [touch1, touch0];\n    }\n    this.#touchInfo = {\n      touch0X: touch0.screenX,\n      touch0Y: touch0.screenY,\n      touch1X: touch1.screenX,\n      touch1Y: touch1.screenY,\n    };\n  }\n\n  #onTouchMove(evt) {\n    if (!this.#touchInfo || evt.touches.length !== 2) {\n      return;\n    }\n\n    stopEvent(evt);\n\n    let [touch0, touch1] = evt.touches;\n    if (touch0.identifier > touch1.identifier) {\n      [touch0, touch1] = [touch1, touch0];\n    }\n    const { screenX: screen0X, screenY: screen0Y } = touch0;\n    const { screenX: screen1X, screenY: screen1Y } = touch1;\n    const touchInfo = this.#touchInfo;\n    const {\n      touch0X: pTouch0X,\n      touch0Y: pTouch0Y,\n      touch1X: pTouch1X,\n      touch1Y: pTouch1Y,\n    } = touchInfo;\n\n    const prevGapX = pTouch1X - pTouch0X;\n    const prevGapY = pTouch1Y - pTouch0Y;\n    const currGapX = screen1X - screen0X;\n    const currGapY = screen1Y - screen0Y;\n\n    const distance = Math.hypot(currGapX, currGapY) || 1;\n    const pDistance = Math.hypot(prevGapX, prevGapY) || 1;\n    if (\n      !this.#isPinching &&\n      Math.abs(pDistance - distance) <= TouchManager.MIN_TOUCH_DISTANCE_TO_PINCH\n    ) {\n      return;\n    }\n\n    touchInfo.touch0X = screen0X;\n    touchInfo.touch0Y = screen0Y;\n    touchInfo.touch1X = screen1X;\n    touchInfo.touch1Y = screen1Y;\n\n    if (!this.#isPinching) {\n      // Start pinching.\n      this.#isPinching = true;\n\n      // We return here else the first pinch is a bit too much\n      return;\n    }\n\n    const origin = [(screen0X + screen1X) / 2, (screen0Y + screen1Y) / 2];\n    this.#onPinching?.(origin, pDistance, distance);\n  }\n\n  #onTouchEnd(evt) {\n    if (evt.touches.length >= 2) {\n      return;\n    }\n    // #touchMoveAC shouldn't be null but it seems that irl it can (see #19793).\n    if (this.#touchMoveAC) {\n      this.#touchMoveAC.abort();\n      this.#touchMoveAC = null;\n      this.#onPinchEnd?.();\n    }\n\n    if (!this.#touchInfo) {\n      return;\n    }\n    stopEvent(evt);\n    this.#touchInfo = null;\n    this.#isPinching = false;\n  }\n\n  destroy() {\n    this.#touchManagerAC?.abort();\n    this.#touchManagerAC = null;\n    this.#pointerDownAC?.abort();\n    this.#pointerDownAC = null;\n  }\n}\n\nexport { TouchManager };\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\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_editor_layer.js\").AnnotationEditorLayer} AnnotationEditorLayer */\n\nimport {\n  AnnotationEditorUIManager,\n  bindEvents,\n  ColorManager,\n  KeyboardManager,\n} from \"./tools.js\";\nimport {\n  FeatureTest,\n  MathClamp,\n  shadow,\n  unreachable,\n} from \"../../shared/util.js\";\nimport { noContextMenu, stopEvent } from \"../display_utils.js\";\nimport { AltText } from \"./alt_text.js\";\nimport { Comment } from \"./comment.js\";\nimport { EditorToolbar } from \"./toolbar.js\";\nimport { TouchManager } from \"../touch_manager.js\";\n\n/**\n * @typedef {Object} AnnotationEditorParameters\n * @property {AnnotationEditorUIManager} uiManager - the global manager\n * @property {AnnotationEditorLayer} parent - the layer containing this editor\n * @property {string} id - editor id\n * @property {number} x - x-coordinate\n * @property {number} y - y-coordinate\n */\n\n/**\n * Base class for editors.\n */\nclass AnnotationEditor {\n  #accessibilityData = null;\n\n  #allResizerDivs = null;\n\n  #altText = null;\n\n  #comment = null;\n\n  #commentStandaloneButton = null;\n\n  #disabled = false;\n\n  #dragPointerId = null;\n\n  #dragPointerType = \"\";\n\n  #resizersDiv = null;\n\n  #lastPointerCoords = null;\n\n  #savedDimensions = null;\n\n  #fakeAnnotation = null;\n\n  #focusAC = null;\n\n  #focusedResizerName = \"\";\n\n  #hasBeenClicked = false;\n\n  #initialRect = null;\n\n  #isEditing = false;\n\n  #isInEditMode = false;\n\n  #isResizerEnabledForKeyboard = false;\n\n  #moveInDOMTimeout = null;\n\n  #prevDragX = 0;\n\n  #prevDragY = 0;\n\n  #telemetryTimeouts = null;\n\n  #touchManager = null;\n\n  isSelected = false;\n\n  _isCopy = false;\n\n  _editToolbar = null;\n\n  _initialOptions = Object.create(null);\n\n  _initialData = null;\n\n  _isVisible = true;\n\n  _uiManager = null;\n\n  _focusEventsAllowed = true;\n\n  static _l10n = null;\n\n  static _l10nResizer = null;\n\n  #isDraggable = false;\n\n  #zIndex = AnnotationEditor._zIndex++;\n\n  static _borderLineWidth = -1;\n\n  static _colorManager = new ColorManager();\n\n  static _zIndex = 1;\n\n  // Time to wait (in ms) before sending the telemetry data.\n  // We wait a bit to avoid sending too many requests when changing something\n  // like the thickness of a line.\n  static _telemetryTimeout = 1000;\n\n  static get _resizerKeyboardManager() {\n    const resize = AnnotationEditor.prototype._resizeWithKeyboard;\n    const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n    const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n\n    return shadow(\n      this,\n      \"_resizerKeyboardManager\",\n      new KeyboardManager([\n        [[\"ArrowLeft\", \"mac+ArrowLeft\"], resize, { args: [-small, 0] }],\n        [\n          [\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"],\n          resize,\n          { args: [-big, 0] },\n        ],\n        [[\"ArrowRight\", \"mac+ArrowRight\"], resize, { args: [small, 0] }],\n        [\n          [\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"],\n          resize,\n          { args: [big, 0] },\n        ],\n        [[\"ArrowUp\", \"mac+ArrowUp\"], resize, { args: [0, -small] }],\n        [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], resize, { args: [0, -big] }],\n        [[\"ArrowDown\", \"mac+ArrowDown\"], resize, { args: [0, small] }],\n        [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], resize, { args: [0, big] }],\n        [\n          [\"Escape\", \"mac+Escape\"],\n          AnnotationEditor.prototype._stopResizingWithKeyboard,\n        ],\n      ])\n    );\n  }\n\n  /**\n   * @param {AnnotationEditorParameters} parameters\n   */\n  constructor(parameters) {\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n      this.constructor === AnnotationEditor\n    ) {\n      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    this._uiManager = parameters.uiManager;\n    this.annotationElementId = null;\n    this._willKeepAspectRatio = false;\n    this._initialOptions.isCentered = parameters.isCentered;\n    this._structTreeParentId = null;\n    this.annotationElementId = parameters.annotationElementId || null;\n    this.creationDate = parameters.creationDate || new Date();\n    this.modificationDate = parameters.modificationDate || null;\n\n    const {\n      rotation,\n      rawDims: { pageWidth, pageHeight, pageX, pageY },\n    } = this.parent.viewport;\n\n    this.rotation = rotation;\n    this.pageRotation =\n      (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n    this.pageDimensions = [pageWidth, pageHeight];\n    this.pageTranslation = [pageX, pageY];\n\n    const [width, height] = this.parentDimensions;\n    this.x = parameters.x / width;\n    this.y = parameters.y / height;\n\n    this.isAttachedToDOM = false;\n    this.deleted = false;\n  }\n\n  get editorType() {\n    return Object.getPrototypeOf(this).constructor._type;\n  }\n\n  get mode() {\n    return Object.getPrototypeOf(this).constructor._editorType;\n  }\n\n  static get isDrawer() {\n    return false;\n  }\n\n  static get _defaultLineColor() {\n    return shadow(\n      this,\n      \"_defaultLineColor\",\n      this._colorManager.getHexCode(\"CanvasText\")\n    );\n  }\n\n  static deleteAnnotationElement(editor) {\n    const fakeEditor = new FakeEditor({\n      id: editor.parent.getNextId(),\n      parent: editor.parent,\n      uiManager: editor._uiManager,\n    });\n    fakeEditor.annotationElementId = editor.annotationElementId;\n    fakeEditor.deleted = true;\n    fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\n  }\n\n  /**\n   * Initialize the l10n stuff for this type of editor.\n   * @param {Object} l10n\n   */\n  static initialize(l10n, _uiManager) {\n    AnnotationEditor._l10n ??= l10n;\n\n    AnnotationEditor._l10nResizer ||= Object.freeze({\n      topLeft: \"pdfjs-editor-resizer-top-left\",\n      topMiddle: \"pdfjs-editor-resizer-top-middle\",\n      topRight: \"pdfjs-editor-resizer-top-right\",\n      middleRight: \"pdfjs-editor-resizer-middle-right\",\n      bottomRight: \"pdfjs-editor-resizer-bottom-right\",\n      bottomMiddle: \"pdfjs-editor-resizer-bottom-middle\",\n      bottomLeft: \"pdfjs-editor-resizer-bottom-left\",\n      middleLeft: \"pdfjs-editor-resizer-middle-left\",\n    });\n\n    if (AnnotationEditor._borderLineWidth !== -1) {\n      return;\n    }\n    const style = getComputedStyle(document.documentElement);\n    AnnotationEditor._borderLineWidth =\n      parseFloat(style.getPropertyValue(\"--outline-width\")) || 0;\n  }\n\n  /**\n   * Update the default parameters for this type of editor.\n   * @param {number} _type\n   * @param {*} _value\n   */\n  static updateDefaultParams(_type, _value) {}\n\n  /**\n   * Get the default properties to set in the UI for this type of editor.\n   * @returns {Array}\n   */\n  static get defaultPropertiesToUpdate() {\n    return [];\n  }\n\n  /**\n   * Check if this kind of editor is able to handle the given mime type for\n   * pasting.\n   * @param {string} mime\n   * @returns {boolean}\n   */\n  static isHandlingMimeForPasting(mime) {\n    return false;\n  }\n\n  /**\n   * Extract the data from the clipboard item and delegate the creation of the\n   * editor to the parent.\n   * @param {DataTransferItem} item\n   * @param {AnnotationEditorLayer} parent\n   */\n  static paste(item, parent) {\n    unreachable(\"Not implemented\");\n  }\n\n  /**\n   * Get the properties to update in the UI for this editor.\n   * @returns {Array}\n   */\n  get propertiesToUpdate() {\n    return [];\n  }\n\n  get _isDraggable() {\n    return this.#isDraggable;\n  }\n\n  set _isDraggable(value) {\n    this.#isDraggable = value;\n    this.div?.classList.toggle(\"draggable\", value);\n  }\n\n  get uid() {\n    return this.annotationElementId || this.id;\n  }\n\n  /**\n   * @returns {boolean} true if the editor handles the Enter key itself.\n   */\n  get isEnterHandled() {\n    return true;\n  }\n\n  center() {\n    const [pageWidth, pageHeight] = this.pageDimensions;\n    switch (this.parentRotation) {\n      case 90:\n        this.x -= (this.height * pageHeight) / (pageWidth * 2);\n        this.y += (this.width * pageWidth) / (pageHeight * 2);\n        break;\n      case 180:\n        this.x += this.width / 2;\n        this.y += this.height / 2;\n        break;\n      case 270:\n        this.x += (this.height * pageHeight) / (pageWidth * 2);\n        this.y -= (this.width * pageWidth) / (pageHeight * 2);\n        break;\n      default:\n        this.x -= this.width / 2;\n        this.y -= this.height / 2;\n        break;\n    }\n    this.fixAndSetPosition();\n  }\n\n  /**\n   * Add some commands into the CommandManager (undo/redo stuff).\n   * @param {Object} params\n   */\n  addCommands(params) {\n    this._uiManager.addCommands(params);\n  }\n\n  get currentLayer() {\n    return this._uiManager.currentLayer;\n  }\n\n  /**\n   * This editor will be behind the others.\n   */\n  setInBackground() {\n    this.div.style.zIndex = 0;\n  }\n\n  /**\n   * This editor will be in the foreground.\n   */\n  setInForeground() {\n    this.div.style.zIndex = this.#zIndex;\n  }\n\n  setParent(parent) {\n    if (parent !== null) {\n      this.pageIndex = parent.pageIndex;\n      this.pageDimensions = parent.pageDimensions;\n    } else {\n      // The editor is being removed from the DOM, so we need to stop resizing.\n      this.#stopResizing();\n\n      // Remove the fake annotation in the annotation layer.\n      this.#fakeAnnotation?.remove();\n      this.#fakeAnnotation = null;\n    }\n    this.parent = parent;\n  }\n\n  /**\n   * onfocus callback.\n   */\n  focusin(event) {\n    if (!this._focusEventsAllowed) {\n      return;\n    }\n    if (!this.#hasBeenClicked) {\n      this.parent.setSelected(this);\n    } else {\n      this.#hasBeenClicked = false;\n    }\n  }\n\n  /**\n   * onblur callback.\n   * @param {FocusEvent} event\n   */\n  focusout(event) {\n    if (!this._focusEventsAllowed) {\n      return;\n    }\n\n    if (!this.isAttachedToDOM) {\n      return;\n    }\n\n    // In case of focusout, the relatedTarget is the element which\n    // is grabbing the focus.\n    // So if the related target is an element under the div for this\n    // editor, then the editor isn't unactive.\n    const target = event.relatedTarget;\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  /**\n   * Commit the data contained in this editor.\n   */\n  commit() {\n    if (!this.isInEditMode()) {\n      return;\n    }\n    this.addToAnnotationStorage();\n  }\n\n  addToAnnotationStorage() {\n    this._uiManager.addToAnnotationStorage(this);\n  }\n\n  /**\n   * Set the editor position within its parent.\n   * @param {number} x\n   * @param {number} y\n   * @param {number} tx - x-translation in screen coordinates.\n   * @param {number} ty - y-translation in screen coordinates.\n   */\n  setAt(x, y, tx, ty) {\n    const [width, height] = this.parentDimensions;\n    [tx, ty] = this.screenToPageTranslation(tx, ty);\n\n    this.x = (x + tx) / width;\n    this.y = (y + ty) / height;\n\n    this.fixAndSetPosition();\n  }\n\n  _moveAfterPaste(baseX, baseY) {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    this.setAt(\n      baseX * parentWidth,\n      baseY * parentHeight,\n      this.width * parentWidth,\n      this.height * parentHeight\n    );\n    this._onTranslated();\n  }\n\n  #translate([width, height], x, y) {\n    [x, y] = this.screenToPageTranslation(x, y);\n\n    this.x += x / width;\n    this.y += y / height;\n\n    this._onTranslating(this.x, this.y);\n\n    this.fixAndSetPosition();\n  }\n\n  /**\n   * Translate the editor position within its parent.\n   * @param {number} x - x-translation in screen coordinates.\n   * @param {number} y - y-translation in screen coordinates.\n   */\n  translate(x, y) {\n    // We don't change the initial position because the move here hasn't been\n    // done by the user.\n    this.#translate(this.parentDimensions, x, y);\n  }\n\n  /**\n   * Translate the editor position within its page and adjust the scroll\n   * in order to have the editor in the view.\n   * @param {number} x - x-translation in page coordinates.\n   * @param {number} y - y-translation in page coordinates.\n   */\n  translateInPage(x, y) {\n    this.#initialRect ||= [this.x, this.y, this.width, this.height];\n    this.#translate(this.pageDimensions, x, y);\n    this.div.scrollIntoView({ block: \"nearest\" });\n  }\n\n  translationDone() {\n    this._onTranslated(this.x, this.y);\n  }\n\n  drag(tx, ty) {\n    this.#initialRect ||= [this.x, this.y, this.width, this.height];\n    const {\n      div,\n      parentDimensions: [parentWidth, parentHeight],\n    } = this;\n    this.x += tx / parentWidth;\n    this.y += ty / parentHeight;\n    if (this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) {\n      // It's possible to not have a parent: for example, when the user is\n      // dragging all the selected editors but this one on a page which has been\n      // destroyed.\n      // It's why we need to check for it. In such a situation, it isn't really\n      // a problem to not find a new parent: it's something which is related to\n      // what the user is seeing, hence it depends on how pages are layed out.\n\n      // The element will be outside of its parent so change the parent.\n      const { x, y } = this.div.getBoundingClientRect();\n      if (this.parent.findNewParent(this, x, y)) {\n        this.x -= Math.floor(this.x);\n        this.y -= Math.floor(this.y);\n      }\n    }\n\n    // The editor can be moved wherever the user wants, so we don't need to fix\n    // the position: it'll be done when the user will release the mouse button.\n\n    let { x, y } = this;\n    const [bx, by] = this.getBaseTranslation();\n    x += bx;\n    y += by;\n\n    const { style } = div;\n    style.left = `${(100 * x).toFixed(2)}%`;\n    style.top = `${(100 * y).toFixed(2)}%`;\n\n    this._onTranslating(x, y);\n\n    div.scrollIntoView({ block: \"nearest\" });\n  }\n\n  /**\n   * Called when the editor is being translated.\n   * @param {number} x - in page coordinates.\n   * @param {number} y - in page coordinates.\n   */\n  _onTranslating(x, y) {}\n\n  /**\n   * Called when the editor has been translated.\n   * @param {number} x - in page coordinates.\n   * @param {number} y - in page coordinates.\n   */\n  _onTranslated(x, y) {}\n\n  get _hasBeenMoved() {\n    return (\n      !!this.#initialRect &&\n      (this.#initialRect[0] !== this.x || this.#initialRect[1] !== this.y)\n    );\n  }\n\n  get _hasBeenResized() {\n    return (\n      !!this.#initialRect &&\n      (this.#initialRect[2] !== this.width ||\n        this.#initialRect[3] !== this.height)\n    );\n  }\n\n  /**\n   * Get the translation to take into account the editor border.\n   * The CSS engine positions the element by taking the border into account so\n   * we must apply the opposite translation to have the editor in the right\n   * position.\n   * @returns {Array<number>}\n   */\n  getBaseTranslation() {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    const { _borderLineWidth } = AnnotationEditor;\n    const x = _borderLineWidth / parentWidth;\n    const y = _borderLineWidth / parentHeight;\n    switch (this.rotation) {\n      case 90:\n        return [-x, y];\n      case 180:\n        return [x, y];\n      case 270:\n        return [x, -y];\n      default:\n        return [-x, -y];\n    }\n  }\n\n  /**\n   * @returns {boolean} true if position must be fixed (i.e. make the x and y\n   * living in the page).\n   */\n  get _mustFixPosition() {\n    return true;\n  }\n\n  /**\n   * Fix the position of the editor in order to keep it inside its parent page.\n   * @param {number} [rotation] - the rotation of the page.\n   */\n  fixAndSetPosition(rotation = this.rotation) {\n    const {\n      div: { style },\n      pageDimensions: [pageWidth, pageHeight],\n    } = this;\n    let { x, y, width, height } = this;\n    width *= pageWidth;\n    height *= pageHeight;\n    x *= pageWidth;\n    y *= pageHeight;\n\n    if (this._mustFixPosition) {\n      switch (rotation) {\n        case 0:\n          x = MathClamp(x, 0, pageWidth - width);\n          y = MathClamp(y, 0, pageHeight - height);\n          break;\n        case 90:\n          x = MathClamp(x, 0, pageWidth - height);\n          y = MathClamp(y, width, pageHeight);\n          break;\n        case 180:\n          x = MathClamp(x, width, pageWidth);\n          y = MathClamp(y, height, pageHeight);\n          break;\n        case 270:\n          x = MathClamp(x, height, pageWidth);\n          y = MathClamp(y, 0, pageHeight - width);\n          break;\n      }\n    }\n\n    this.x = x /= pageWidth;\n    this.y = y /= pageHeight;\n\n    const [bx, by] = this.getBaseTranslation();\n    x += bx;\n    y += by;\n\n    style.left = `${(100 * x).toFixed(2)}%`;\n    style.top = `${(100 * y).toFixed(2)}%`;\n\n    this.moveInDOM();\n  }\n\n  static #rotatePoint(x, y, angle) {\n    switch (angle) {\n      case 90:\n        return [y, -x];\n      case 180:\n        return [-x, -y];\n      case 270:\n        return [-y, x];\n      default:\n        return [x, y];\n    }\n  }\n\n  /**\n   * Convert a screen translation into a page one.\n   * @param {number} x\n   * @param {number} y\n   */\n  screenToPageTranslation(x, y) {\n    return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\n  }\n\n  /**\n   * Convert a page translation into a screen one.\n   * @param {number} x\n   * @param {number} y\n   */\n  pageTranslationToScreen(x, y) {\n    return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\n  }\n\n  #getRotationMatrix(rotation) {\n    switch (rotation) {\n      case 90: {\n        const [pageWidth, pageHeight] = this.pageDimensions;\n        return [0, -pageWidth / pageHeight, pageHeight / pageWidth, 0];\n      }\n      case 180:\n        return [-1, 0, 0, -1];\n      case 270: {\n        const [pageWidth, pageHeight] = this.pageDimensions;\n        return [0, pageWidth / pageHeight, -pageHeight / pageWidth, 0];\n      }\n      default:\n        return [1, 0, 0, 1];\n    }\n  }\n\n  get parentScale() {\n    return this._uiManager.viewParameters.realScale;\n  }\n\n  get parentRotation() {\n    return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n  }\n\n  get parentDimensions() {\n    const {\n      parentScale,\n      pageDimensions: [pageWidth, pageHeight],\n    } = this;\n    return [pageWidth * parentScale, pageHeight * parentScale];\n  }\n\n  /**\n   * Set the dimensions of this editor.\n   */\n  setDims() {\n    const {\n      div: { style },\n      width,\n      height,\n    } = this;\n    style.width = `${(100 * width).toFixed(2)}%`;\n    style.height = `${(100 * height).toFixed(2)}%`;\n  }\n\n  /**\n   * Get the translation used to position this editor when it's created.\n   * @returns {Array<number>}\n   */\n  getInitialTranslation() {\n    return [0, 0];\n  }\n\n  #createResizers() {\n    if (this.#resizersDiv) {\n      return;\n    }\n    this.#resizersDiv = document.createElement(\"div\");\n    this.#resizersDiv.classList.add(\"resizers\");\n    // When the resizers are used with the keyboard, they're focusable, hence\n    // we want to have them in this order (top left, top middle, top right, ...)\n    // in the DOM to have the focus order correct.\n    const classes = this._willKeepAspectRatio\n      ? [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"]\n      : [\n          \"topLeft\",\n          \"topMiddle\",\n          \"topRight\",\n          \"middleRight\",\n          \"bottomRight\",\n          \"bottomMiddle\",\n          \"bottomLeft\",\n          \"middleLeft\",\n        ];\n    const signal = this._uiManager._signal;\n    for (const name of classes) {\n      const div = document.createElement(\"div\");\n      this.#resizersDiv.append(div);\n      div.classList.add(\"resizer\", name);\n      div.setAttribute(\"data-resizer-name\", name);\n      div.addEventListener(\n        \"pointerdown\",\n        this.#resizerPointerdown.bind(this, name),\n        { signal }\n      );\n      div.addEventListener(\"contextmenu\", noContextMenu, { signal });\n      div.tabIndex = -1;\n    }\n    this.div.prepend(this.#resizersDiv);\n  }\n\n  #resizerPointerdown(name, event) {\n    event.preventDefault();\n    const { isMac } = FeatureTest.platform;\n    if (event.button !== 0 || (event.ctrlKey && isMac)) {\n      return;\n    }\n\n    this.#altText?.toggle(false);\n\n    const savedDraggable = this._isDraggable;\n    this._isDraggable = false;\n    this.#lastPointerCoords = [event.screenX, event.screenY];\n\n    const ac = new AbortController();\n    const signal = this._uiManager.combinedSignal(ac);\n\n    this.parent.togglePointerEvents(false);\n    window.addEventListener(\n      \"pointermove\",\n      this.#resizerPointermove.bind(this, name),\n      { passive: true, capture: true, signal }\n    );\n    window.addEventListener(\n      \"touchmove\",\n      stopEvent /* Prevent the page from scrolling */,\n      { passive: false, signal }\n    );\n    window.addEventListener(\"contextmenu\", noContextMenu, { signal });\n    this.#savedDimensions = {\n      savedX: this.x,\n      savedY: this.y,\n      savedWidth: this.width,\n      savedHeight: this.height,\n    };\n    const savedParentCursor = this.parent.div.style.cursor;\n    const savedCursor = this.div.style.cursor;\n    this.div.style.cursor = this.parent.div.style.cursor =\n      window.getComputedStyle(event.target).cursor;\n\n    const pointerUpCallback = () => {\n      ac.abort();\n      this.parent.togglePointerEvents(true);\n      this.#altText?.toggle(true);\n      this._isDraggable = savedDraggable;\n      this.parent.div.style.cursor = savedParentCursor;\n      this.div.style.cursor = savedCursor;\n\n      this.#addResizeToUndoStack();\n    };\n    window.addEventListener(\"pointerup\", pointerUpCallback, { signal });\n    // If the user switches to another window (with alt+tab), then we end the\n    // resize session.\n    window.addEventListener(\"blur\", pointerUpCallback, { signal });\n  }\n\n  #resize(x, y, width, height) {\n    this.width = width;\n    this.height = height;\n    this.x = x;\n    this.y = y;\n    this.setDims();\n    this.fixAndSetPosition();\n    this._onResized();\n  }\n\n  /**\n   * Called when the editor has been resized.\n   */\n  _onResized() {}\n\n  #addResizeToUndoStack() {\n    if (!this.#savedDimensions) {\n      return;\n    }\n    const { savedX, savedY, savedWidth, savedHeight } = this.#savedDimensions;\n    this.#savedDimensions = null;\n\n    const newX = this.x;\n    const newY = this.y;\n    const newWidth = this.width;\n    const newHeight = this.height;\n    if (\n      newX === savedX &&\n      newY === savedY &&\n      newWidth === savedWidth &&\n      newHeight === savedHeight\n    ) {\n      return;\n    }\n\n    this.addCommands({\n      cmd: this.#resize.bind(this, newX, newY, newWidth, newHeight),\n      undo: this.#resize.bind(this, savedX, savedY, savedWidth, savedHeight),\n      mustExec: true,\n    });\n  }\n\n  static _round(x) {\n    // 10000 because we multiply by 100 and use toFixed(2) in fixAndSetPosition.\n    // Without rounding, the positions of the corners other than the top left\n    // one can be slightly wrong.\n    return Math.round(x * 10000) / 10000;\n  }\n\n  #resizerPointermove(name, event) {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    const savedX = this.x;\n    const savedY = this.y;\n    const savedWidth = this.width;\n    const savedHeight = this.height;\n    const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n    const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n\n    const rotationMatrix = this.#getRotationMatrix(this.rotation);\n    const transf = (x, y) => [\n      rotationMatrix[0] * x + rotationMatrix[2] * y,\n      rotationMatrix[1] * x + rotationMatrix[3] * y,\n    ];\n    const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n    const invTransf = (x, y) => [\n      invRotationMatrix[0] * x + invRotationMatrix[2] * y,\n      invRotationMatrix[1] * x + invRotationMatrix[3] * y,\n    ];\n    let getPoint;\n    let getOpposite;\n    let isDiagonal = false;\n    let isHorizontal = false;\n\n    switch (name) {\n      case \"topLeft\":\n        isDiagonal = true;\n        getPoint = (w, h) => [0, 0];\n        getOpposite = (w, h) => [w, h];\n        break;\n      case \"topMiddle\":\n        getPoint = (w, h) => [w / 2, 0];\n        getOpposite = (w, h) => [w / 2, h];\n        break;\n      case \"topRight\":\n        isDiagonal = true;\n        getPoint = (w, h) => [w, 0];\n        getOpposite = (w, h) => [0, h];\n        break;\n      case \"middleRight\":\n        isHorizontal = true;\n        getPoint = (w, h) => [w, h / 2];\n        getOpposite = (w, h) => [0, h / 2];\n        break;\n      case \"bottomRight\":\n        isDiagonal = true;\n        getPoint = (w, h) => [w, h];\n        getOpposite = (w, h) => [0, 0];\n        break;\n      case \"bottomMiddle\":\n        getPoint = (w, h) => [w / 2, h];\n        getOpposite = (w, h) => [w / 2, 0];\n        break;\n      case \"bottomLeft\":\n        isDiagonal = true;\n        getPoint = (w, h) => [0, h];\n        getOpposite = (w, h) => [w, 0];\n        break;\n      case \"middleLeft\":\n        isHorizontal = true;\n        getPoint = (w, h) => [0, h / 2];\n        getOpposite = (w, h) => [w, h / 2];\n        break;\n    }\n\n    const point = getPoint(savedWidth, savedHeight);\n    const oppositePoint = getOpposite(savedWidth, savedHeight);\n    let transfOppositePoint = transf(...oppositePoint);\n    const oppositeX = AnnotationEditor._round(savedX + transfOppositePoint[0]);\n    const oppositeY = AnnotationEditor._round(savedY + transfOppositePoint[1]);\n    let ratioX = 1;\n    let ratioY = 1;\n\n    let deltaX, deltaY;\n\n    if (!event.fromKeyboard) {\n      // We can't use event.movementX/Y because they're not reliable:\n      //  https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/movementX\n      // (it was buggy on a laptop with a touch screen).\n      const { screenX, screenY } = event;\n      const [lastScreenX, lastScreenY] = this.#lastPointerCoords;\n      [deltaX, deltaY] = this.screenToPageTranslation(\n        screenX - lastScreenX,\n        screenY - lastScreenY\n      );\n      this.#lastPointerCoords[0] = screenX;\n      this.#lastPointerCoords[1] = screenY;\n    } else {\n      ({ deltaX, deltaY } = event);\n    }\n    [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n\n    if (isDiagonal) {\n      const oldDiag = Math.hypot(savedWidth, savedHeight);\n      ratioX = ratioY = Math.max(\n        Math.min(\n          Math.hypot(\n            oppositePoint[0] - point[0] - deltaX,\n            oppositePoint[1] - point[1] - deltaY\n          ) / oldDiag,\n          // Avoid the editor to be larger than the page.\n          1 / savedWidth,\n          1 / savedHeight\n        ),\n        // Avoid the editor to be smaller than the minimum size.\n        minWidth / savedWidth,\n        minHeight / savedHeight\n      );\n    } else if (isHorizontal) {\n      ratioX =\n        MathClamp(Math.abs(oppositePoint[0] - point[0] - deltaX), minWidth, 1) /\n        savedWidth;\n    } else {\n      ratioY =\n        MathClamp(\n          Math.abs(oppositePoint[1] - point[1] - deltaY),\n          minHeight,\n          1\n        ) / savedHeight;\n    }\n\n    const newWidth = AnnotationEditor._round(savedWidth * ratioX);\n    const newHeight = AnnotationEditor._round(savedHeight * ratioY);\n    transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n    const newX = oppositeX - transfOppositePoint[0];\n    const newY = oppositeY - transfOppositePoint[1];\n\n    this.#initialRect ||= [this.x, this.y, this.width, this.height];\n    this.width = newWidth;\n    this.height = newHeight;\n    this.x = newX;\n    this.y = newY;\n\n    this.setDims();\n    this.fixAndSetPosition();\n\n    this._onResizing();\n  }\n\n  /**\n   * Called when the editor is being resized.\n   */\n  _onResizing() {}\n\n  /**\n   * Called when the alt text dialog is closed.\n   */\n  altTextFinish() {\n    this.#altText?.finish();\n  }\n\n  /**\n   * Get the toolbar buttons for this editor.\n   * @returns {Array<Array<string|object|null>>|null}\n   */\n  get toolbarButtons() {\n    return null;\n  }\n\n  /**\n   * Add a toolbar for this editor.\n   * @returns {Promise<EditorToolbar|null>}\n   */\n  async addEditToolbar() {\n    if (this._editToolbar || this.#isInEditMode) {\n      return this._editToolbar;\n    }\n    this._editToolbar = new EditorToolbar(this);\n    this.div.append(this._editToolbar.render());\n    const { toolbarButtons } = this;\n    if (toolbarButtons) {\n      for (const [name, tool] of toolbarButtons) {\n        await this._editToolbar.addButton(name, tool);\n      }\n    }\n    if (!this.hasComment) {\n      this._editToolbar.addButton(\"comment\", this.addCommentButton());\n    }\n    this._editToolbar.addButton(\"delete\");\n\n    return this._editToolbar;\n  }\n\n  addCommentButtonInToolbar() {\n    this._editToolbar?.addButtonBefore(\n      \"comment\",\n      this.addCommentButton(),\n      \".deleteButton\"\n    );\n  }\n\n  removeCommentButtonFromToolbar() {\n    this._editToolbar?.removeButton(\"comment\");\n  }\n\n  removeEditToolbar() {\n    this._editToolbar?.remove();\n    this._editToolbar = null;\n\n    // We destroy the alt text but we don't null it because we want to be able\n    // to restore it in case the user undoes the deletion.\n    this.#altText?.destroy();\n  }\n\n  addContainer(container) {\n    const editToolbarDiv = this._editToolbar?.div;\n    if (editToolbarDiv) {\n      editToolbarDiv.before(container);\n    } else {\n      this.div.append(container);\n    }\n  }\n\n  getClientDimensions() {\n    return this.div.getBoundingClientRect();\n  }\n\n  /**\n   * Create the alt text for this editor.\n   * @returns {object}\n   */\n  createAltText() {\n    if (!this.#altText) {\n      AltText.initialize(AnnotationEditor._l10n);\n      this.#altText = new AltText(this);\n      if (this.#accessibilityData) {\n        this.#altText.data = this.#accessibilityData;\n        this.#accessibilityData = null;\n      }\n    }\n    return this.#altText;\n  }\n\n  get altTextData() {\n    return this.#altText?.data;\n  }\n\n  /**\n   * Set the alt text data.\n   */\n  set altTextData(data) {\n    if (!this.#altText) {\n      return;\n    }\n    this.#altText.data = data;\n  }\n\n  get guessedAltText() {\n    return this.#altText?.guessedText;\n  }\n\n  async setGuessedAltText(text) {\n    await this.#altText?.setGuessedText(text);\n  }\n\n  serializeAltText(isForCopying) {\n    return this.#altText?.serialize(isForCopying);\n  }\n\n  hasAltText() {\n    return !!this.#altText && !this.#altText.isEmpty();\n  }\n\n  hasAltTextData() {\n    return this.#altText?.hasData() ?? false;\n  }\n\n  focusCommentButton() {\n    this.#comment?.focusButton();\n  }\n\n  addCommentButton() {\n    return (this.#comment ||= new Comment(this));\n  }\n\n  addStandaloneCommentButton() {\n    if (this.#commentStandaloneButton) {\n      if (this._uiManager.isEditingMode()) {\n        this.#commentStandaloneButton.classList.remove(\"hidden\");\n      }\n      return;\n    }\n    if (!this.hasComment) {\n      return;\n    }\n    this.#commentStandaloneButton = this.#comment.renderForStandalone();\n    this.div.append(this.#commentStandaloneButton);\n  }\n\n  removeStandaloneCommentButton() {\n    this.#comment.removeStandaloneCommentButton();\n    this.#commentStandaloneButton = null;\n  }\n\n  hideStandaloneCommentButton() {\n    this.#commentStandaloneButton?.classList.add(\"hidden\");\n  }\n\n  get comment() {\n    const {\n      data: { richText, text, date, deleted },\n    } = this.#comment;\n    return {\n      text,\n      richText,\n      date,\n      deleted,\n      color: this.getNonHCMColor(),\n      opacity: this.opacity ?? 1,\n    };\n  }\n\n  set comment(text) {\n    this.#comment ||= new Comment(this);\n    this.#comment.data = text;\n    if (this.hasComment) {\n      this.removeCommentButtonFromToolbar();\n      this.addStandaloneCommentButton();\n      this._uiManager.updateComment(this);\n    } else {\n      this.addCommentButtonInToolbar();\n      this.removeStandaloneCommentButton();\n      this._uiManager.removeComment(this);\n    }\n  }\n\n  setCommentData({ comment, popupRef, richText }) {\n    if (!popupRef) {\n      return;\n    }\n    this.#comment ||= new Comment(this);\n    this.#comment.setInitialText(comment, richText);\n\n    if (!this.annotationElementId) {\n      return;\n    }\n    const storedData = this._uiManager.getAndRemoveDataFromAnnotationStorage(\n      this.annotationElementId\n    );\n    if (storedData) {\n      this.updateFromAnnotationLayer(storedData);\n    }\n  }\n\n  get hasEditedComment() {\n    return this.#comment?.hasBeenEdited();\n  }\n\n  get hasDeletedComment() {\n    return this.#comment?.isDeleted();\n  }\n\n  get hasComment() {\n    return (\n      !!this.#comment && !this.#comment.isEmpty() && !this.#comment.isDeleted()\n    );\n  }\n\n  async editComment(options) {\n    this.#comment ||= new Comment(this);\n    this.#comment.edit(options);\n  }\n\n  toggleComment(isSelected, visibility = undefined) {\n    if (this.hasComment) {\n      this._uiManager.toggleComment(this, isSelected, visibility);\n    }\n  }\n\n  setSelectedCommentButton(selected) {\n    this.#comment.setSelectedButton(selected);\n  }\n\n  addComment(serialized) {\n    if (this.hasEditedComment) {\n      const DEFAULT_POPUP_WIDTH = 180;\n      const DEFAULT_POPUP_HEIGHT = 100;\n      const [, , , trY] = serialized.rect;\n      const [pageWidth] = this.pageDimensions;\n      const [pageX] = this.pageTranslation;\n      const blX = pageX + pageWidth + 1;\n      const blY = trY - DEFAULT_POPUP_HEIGHT;\n      const trX = blX + DEFAULT_POPUP_WIDTH;\n      serialized.popup = {\n        contents: this.comment.text,\n        deleted: this.comment.deleted,\n        rect: [blX, blY, trX, trY],\n      };\n    }\n  }\n\n  updateFromAnnotationLayer({ popup: { contents, deleted } }) {\n    this.#comment.data = deleted ? null : contents;\n  }\n\n  get parentBoundingClientRect() {\n    return this.parent.boundingClientRect;\n  }\n\n  /**\n   * Render this editor in a div.\n   * @returns {HTMLDivElement | null}\n   */\n  render() {\n    const div = (this.div = document.createElement(\"div\"));\n    div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n    div.className = this.name;\n    div.setAttribute(\"id\", this.id);\n    div.tabIndex = this.#disabled ? -1 : 0;\n    div.setAttribute(\"role\", \"application\");\n    if (this.defaultL10nId) {\n      div.setAttribute(\"data-l10n-id\", this.defaultL10nId);\n    }\n    if (!this._isVisible) {\n      div.classList.add(\"hidden\");\n    }\n\n    this.setInForeground();\n    this.#addFocusListeners();\n\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    if (this.parentRotation % 180 !== 0) {\n      div.style.maxWidth = `${((100 * parentHeight) / parentWidth).toFixed(\n        2\n      )}%`;\n      div.style.maxHeight = `${((100 * parentWidth) / parentHeight).toFixed(\n        2\n      )}%`;\n    }\n\n    const [tx, ty] = this.getInitialTranslation();\n    this.translate(tx, ty);\n\n    bindEvents(this, div, [\"keydown\", \"pointerdown\", \"dblclick\"]);\n\n    if (this.isResizable && this._uiManager._supportsPinchToZoom) {\n      this.#touchManager ||= new TouchManager({\n        container: div,\n        isPinchingDisabled: () => !this.isSelected,\n        onPinchStart: this.#touchPinchStartCallback.bind(this),\n        onPinching: this.#touchPinchCallback.bind(this),\n        onPinchEnd: this.#touchPinchEndCallback.bind(this),\n        signal: this._uiManager._signal,\n      });\n    }\n\n    this.addStandaloneCommentButton();\n    this._uiManager._editorUndoBar?.hide();\n\n    return div;\n  }\n\n  #touchPinchStartCallback() {\n    this.#savedDimensions = {\n      savedX: this.x,\n      savedY: this.y,\n      savedWidth: this.width,\n      savedHeight: this.height,\n    };\n    this.#altText?.toggle(false);\n    this.parent.togglePointerEvents(false);\n  }\n\n  #touchPinchCallback(_origin, prevDistance, distance) {\n    // Slightly slow down the zooming because the editor could be small and the\n    // user could have difficulties to rescale it as they want.\n    const slowDownFactor = 0.7;\n    let factor =\n      slowDownFactor * (distance / prevDistance) + 1 - slowDownFactor;\n    if (factor === 1) {\n      return;\n    }\n\n    const rotationMatrix = this.#getRotationMatrix(this.rotation);\n    const transf = (x, y) => [\n      rotationMatrix[0] * x + rotationMatrix[2] * y,\n      rotationMatrix[1] * x + rotationMatrix[3] * y,\n    ];\n\n    // The center of the editor is the fixed point.\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    const savedX = this.x;\n    const savedY = this.y;\n    const savedWidth = this.width;\n    const savedHeight = this.height;\n\n    const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n    const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n    factor = Math.max(\n      Math.min(factor, 1 / savedWidth, 1 / savedHeight),\n      minWidth / savedWidth,\n      minHeight / savedHeight\n    );\n    const newWidth = AnnotationEditor._round(savedWidth * factor);\n    const newHeight = AnnotationEditor._round(savedHeight * factor);\n    if (newWidth === savedWidth && newHeight === savedHeight) {\n      return;\n    }\n\n    this.#initialRect ||= [savedX, savedY, savedWidth, savedHeight];\n    const transfCenterPoint = transf(savedWidth / 2, savedHeight / 2);\n    const centerX = AnnotationEditor._round(savedX + transfCenterPoint[0]);\n    const centerY = AnnotationEditor._round(savedY + transfCenterPoint[1]);\n    const newTransfCenterPoint = transf(newWidth / 2, newHeight / 2);\n\n    this.x = centerX - newTransfCenterPoint[0];\n    this.y = centerY - newTransfCenterPoint[1];\n    this.width = newWidth;\n    this.height = newHeight;\n\n    this.setDims();\n    this.fixAndSetPosition();\n\n    this._onResizing();\n  }\n\n  #touchPinchEndCallback() {\n    this.#altText?.toggle(true);\n    this.parent.togglePointerEvents(true);\n    this.#addResizeToUndoStack();\n  }\n\n  /**\n   * Onpointerdown callback.\n   * @param {PointerEvent} event\n   */\n  pointerdown(event) {\n    const { isMac } = FeatureTest.platform;\n    if (event.button !== 0 || (event.ctrlKey && isMac)) {\n      // Avoid to focus this editor because of a non-left click.\n      event.preventDefault();\n      return;\n    }\n    this.#hasBeenClicked = true;\n\n    if (this._isDraggable) {\n      this.#setUpDragSession(event);\n      return;\n    }\n\n    this.#selectOnPointerEvent(event);\n  }\n\n  #selectOnPointerEvent(event) {\n    const { isMac } = FeatureTest.platform;\n    if (\n      (event.ctrlKey && !isMac) ||\n      event.shiftKey ||\n      (event.metaKey && isMac)\n    ) {\n      this.parent.toggleSelected(this);\n    } else {\n      this.parent.setSelected(this);\n    }\n  }\n\n  #setUpDragSession(event) {\n    const { isSelected } = this;\n    this._uiManager.setUpDragSession();\n    let hasDraggingStarted = false;\n\n    const ac = new AbortController();\n    const signal = this._uiManager.combinedSignal(ac);\n    const opts = { capture: true, passive: false, signal };\n    const cancelDrag = e => {\n      ac.abort();\n\n      this.#dragPointerId = null;\n      this.#hasBeenClicked = false;\n      if (!this._uiManager.endDragSession()) {\n        this.#selectOnPointerEvent(e);\n      }\n      if (hasDraggingStarted) {\n        this._onStopDragging();\n      }\n    };\n\n    if (isSelected) {\n      this.#prevDragX = event.clientX;\n      this.#prevDragY = event.clientY;\n      this.#dragPointerId = event.pointerId;\n      this.#dragPointerType = event.pointerType;\n      window.addEventListener(\n        \"pointermove\",\n        e => {\n          if (!hasDraggingStarted) {\n            hasDraggingStarted = true;\n            this._uiManager.toggleComment(\n              this,\n              /* isSelected = */ true,\n              /* visibility = */ false\n            );\n            this._onStartDragging();\n          }\n          const { clientX: x, clientY: y, pointerId } = e;\n          if (pointerId !== this.#dragPointerId) {\n            stopEvent(e);\n            return;\n          }\n          const [tx, ty] = this.screenToPageTranslation(\n            x - this.#prevDragX,\n            y - this.#prevDragY\n          );\n          this.#prevDragX = x;\n          this.#prevDragY = y;\n          this._uiManager.dragSelectedEditors(tx, ty);\n        },\n        opts\n      );\n      window.addEventListener(\n        \"touchmove\",\n        stopEvent /* Prevent the page from scrolling */,\n        opts\n      );\n      window.addEventListener(\n        \"pointerdown\",\n        // If the user drags with one finger and then clicks with another.\n        e => {\n          if (e.pointerType === this.#dragPointerType) {\n            // We've a pinch to zoom session.\n            // We cannot have two primaries at the same time.\n            // It's possible to be in this state with Firefox and Gnome when\n            // trying to drag with three fingers (see bug 1933716).\n            if (this.#touchManager || e.isPrimary) {\n              cancelDrag(e);\n            }\n          }\n          stopEvent(e);\n        },\n        opts\n      );\n    }\n\n    const pointerUpCallback = e => {\n      if (!this.#dragPointerId || this.#dragPointerId === e.pointerId) {\n        cancelDrag(e);\n        return;\n      }\n      stopEvent(e);\n    };\n    window.addEventListener(\"pointerup\", pointerUpCallback, { signal });\n    // If the user is using alt+tab during the dragging session, the pointerup\n    // event could be not fired, but a blur event is fired so we can use it in\n    // order to interrupt the dragging session.\n    window.addEventListener(\"blur\", pointerUpCallback, { signal });\n  }\n\n  _onStartDragging() {}\n\n  _onStopDragging() {}\n\n  moveInDOM() {\n    // Moving the editor in the DOM can be expensive, so we wait a bit before.\n    // It's important to not block the UI (for example when changing the font\n    // size in a FreeText).\n    if (this.#moveInDOMTimeout) {\n      clearTimeout(this.#moveInDOMTimeout);\n    }\n    this.#moveInDOMTimeout = setTimeout(() => {\n      this.#moveInDOMTimeout = null;\n      this.parent?.moveEditorInDOM(this);\n      if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n        this._uiManager._eventBus.dispatch(\"editormovedindom\", {\n          source: this,\n        });\n      }\n    }, 0);\n  }\n\n  _setParentAndPosition(parent, x, y) {\n    parent.changeParent(this);\n    this.x = x;\n    this.y = y;\n    this.fixAndSetPosition();\n    this._onTranslated();\n  }\n\n  /**\n   * Convert the current rect into a page one.\n   * @param {number} tx - x-translation in screen coordinates.\n   * @param {number} ty - y-translation in screen coordinates.\n   * @param {number} [rotation] - the rotation of the page.\n   */\n  getRect(tx, ty, rotation = this.rotation) {\n    const scale = this.parentScale;\n    const [pageWidth, pageHeight] = this.pageDimensions;\n    const [pageX, pageY] = this.pageTranslation;\n    const shiftX = tx / scale;\n    const shiftY = ty / scale;\n    const x = this.x * pageWidth;\n    const y = this.y * pageHeight;\n    const width = this.width * pageWidth;\n    const height = this.height * pageHeight;\n\n    switch (rotation) {\n      case 0:\n        return [\n          x + shiftX + pageX,\n          pageHeight - y - shiftY - height + pageY,\n          x + shiftX + width + pageX,\n          pageHeight - y - shiftY + pageY,\n        ];\n      case 90:\n        return [\n          x + shiftY + pageX,\n          pageHeight - y + shiftX + pageY,\n          x + shiftY + height + pageX,\n          pageHeight - y + shiftX + width + pageY,\n        ];\n      case 180:\n        return [\n          x - shiftX - width + pageX,\n          pageHeight - y + shiftY + pageY,\n          x - shiftX + pageX,\n          pageHeight - y + shiftY + height + pageY,\n        ];\n      case 270:\n        return [\n          x - shiftY - height + pageX,\n          pageHeight - y - shiftX - width + pageY,\n          x - shiftY + pageX,\n          pageHeight - y - shiftX + pageY,\n        ];\n      default:\n        throw new Error(\"Invalid rotation\");\n    }\n  }\n\n  getRectInCurrentCoords(rect, pageHeight) {\n    const [x1, y1, x2, y2] = rect;\n\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      case 90:\n        return [x1, pageHeight - y1, height, width];\n      case 180:\n        return [x2, pageHeight - y1, width, height];\n      case 270:\n        return [x2, pageHeight - y2, height, width];\n      default:\n        throw new Error(\"Invalid rotation\");\n    }\n  }\n\n  /**\n   * Get the rect in page coordinates without any translation.\n   * It's used when serializing the editor.\n   * @returns {Array<number>}\n   */\n  getPDFRect() {\n    return this.getRect(0, 0);\n  }\n\n  getNonHCMColor() {\n    return (\n      this.color &&\n      AnnotationEditor._colorManager.convert(\n        this._uiManager.getNonHCMColor(this.color)\n      )\n    );\n  }\n\n  /**\n   * The color has been changed.\n   */\n  onUpdatedColor() {\n    this.#comment?.onUpdatedColor();\n  }\n\n  getData() {\n    const {\n      comment: { text: str, color, date, opacity, deleted, richText },\n      uid: id,\n      pageIndex,\n      creationDate,\n      modificationDate,\n    } = this;\n    return {\n      id,\n      pageIndex,\n      rect: this.getPDFRect(),\n      richText,\n      contentsObj: { str },\n      creationDate,\n      modificationDate: date || modificationDate,\n      popupRef: !deleted,\n      color,\n      opacity,\n    };\n  }\n\n  /**\n   * Executed once this editor has been rendered.\n   * @param {boolean} focus - true if the editor should be focused.\n   */\n  onceAdded(focus) {}\n\n  /**\n   * Check if the editor contains something.\n   * @returns {boolean}\n   */\n  isEmpty() {\n    return false;\n  }\n\n  /**\n   * Enable edit mode.\n   * @returns {boolean} - true if the edit mode has been enabled.\n   */\n  enableEditMode() {\n    if (this.isInEditMode()) {\n      return false;\n    }\n    this.parent.setEditingState(false);\n    this.#isInEditMode = true;\n\n    return true;\n  }\n\n  /**\n   * Disable edit mode.\n   * @returns {boolean} - true if the edit mode has been disabled.\n   */\n  disableEditMode() {\n    if (!this.isInEditMode()) {\n      return false;\n    }\n    this.parent.setEditingState(true);\n    this.#isInEditMode = false;\n\n    return true;\n  }\n\n  /**\n   * Check if the editor is edited.\n   * @returns {boolean}\n   */\n  isInEditMode() {\n    return this.#isInEditMode;\n  }\n\n  /**\n   * If it returns true, then this editor handles the keyboard\n   * events itself.\n   * @returns {boolean}\n   */\n  shouldGetKeyboardEvents() {\n    return this.#isResizerEnabledForKeyboard;\n  }\n\n  /**\n   * Check if this editor needs to be rebuilt or not.\n   * @returns {boolean}\n   */\n  needsToBeRebuilt() {\n    return this.div && !this.isAttachedToDOM;\n  }\n\n  get isOnScreen() {\n    const { top, left, bottom, right } = this.getClientDimensions();\n    const { innerHeight, innerWidth } = window;\n    return left < innerWidth && right > 0 && top < innerHeight && bottom > 0;\n  }\n\n  #addFocusListeners() {\n    if (this.#focusAC || !this.div) {\n      return;\n    }\n    this.#focusAC = new AbortController();\n    const signal = this._uiManager.combinedSignal(this.#focusAC);\n\n    this.div.addEventListener(\"focusin\", this.focusin.bind(this), { signal });\n    this.div.addEventListener(\"focusout\", this.focusout.bind(this), { signal });\n  }\n\n  /**\n   * Rebuild the editor in case it has been removed on undo.\n   *\n   * To implement in subclasses.\n   */\n  rebuild() {\n    this.#addFocusListeners();\n  }\n\n  /**\n   * Rotate the editor when the page is rotated.\n   * @param {number} angle\n   */\n  rotate(_angle) {}\n\n  /**\n   * Resize the editor when the page is resized.\n   */\n  resize() {}\n\n  /**\n   * Serialize the editor when it has been deleted.\n   * @returns {Object}\n   */\n  serializeDeleted() {\n    return {\n      id: this.annotationElementId,\n      deleted: true,\n      pageIndex: this.pageIndex,\n      popupRef: this._initialData?.popupRef || \"\",\n    };\n  }\n\n  /**\n   * Serialize the editor.\n   * The result of the serialization will be used to construct a\n   * new annotation to add to the pdf document.\n   *\n   * To implement in subclasses.\n   * @param {boolean} [isForCopying]\n   * @param {Object | null} [context]\n   * @returns {Object | null}\n   */\n  serialize(isForCopying = false, context = null) {\n    return {\n      annotationType: this.mode,\n      pageIndex: this.pageIndex,\n      rect: this.getPDFRect(),\n      rotation: this.rotation,\n      structTreeParentId: this._structTreeParentId,\n      popupRef: this._initialData?.popupRef || \"\",\n    };\n  }\n\n  /**\n   * Deserialize the editor.\n   * The result of the deserialization is a new editor.\n   *\n   * @param {Object} data\n   * @param {AnnotationEditorLayer} parent\n   * @param {AnnotationEditorUIManager} uiManager\n   * @returns {Promise<AnnotationEditor | null>}\n   */\n  static async deserialize(data, parent, uiManager) {\n    const editor = new this.prototype.constructor({\n      parent,\n      id: parent.getNextId(),\n      uiManager,\n      annotationElementId: data.annotationElementId,\n      creationDate: data.creationDate,\n      modificationDate: data.modificationDate,\n    });\n    editor.rotation = data.rotation;\n    editor.#accessibilityData = data.accessibilityData;\n    editor._isCopy = data.isCopy || false;\n\n    const [pageWidth, pageHeight] = editor.pageDimensions;\n    const [x, y, width, height] = editor.getRectInCurrentCoords(\n      data.rect,\n      pageHeight\n    );\n\n    editor.x = x / pageWidth;\n    editor.y = y / pageHeight;\n    editor.width = width / pageWidth;\n    editor.height = height / pageHeight;\n\n    return editor;\n  }\n\n  /**\n   * Check if an existing annotation associated with this editor has been\n   * modified.\n   * @returns {boolean}\n   */\n  get hasBeenModified() {\n    return (\n      !!this.annotationElementId && (this.deleted || this.serialize() !== null)\n    );\n  }\n\n  /**\n   * Remove this editor.\n   * It's used on ctrl+backspace action.\n   */\n  remove() {\n    this.#focusAC?.abort();\n    this.#focusAC = null;\n\n    if (!this.isEmpty()) {\n      // The editor is removed but it can be back at some point thanks to\n      // undo/redo so we must commit it before.\n      this.commit();\n    }\n    if (this.parent) {\n      this.parent.remove(this);\n    } else {\n      this._uiManager.removeEditor(this);\n    }\n\n    if (this.#moveInDOMTimeout) {\n      clearTimeout(this.#moveInDOMTimeout);\n      this.#moveInDOMTimeout = null;\n    }\n    this.#stopResizing();\n    this.removeEditToolbar();\n    if (this.#telemetryTimeouts) {\n      for (const timeout of this.#telemetryTimeouts.values()) {\n        clearTimeout(timeout);\n      }\n      this.#telemetryTimeouts = null;\n    }\n    this.parent = null;\n    this.#touchManager?.destroy();\n    this.#touchManager = null;\n  }\n\n  /**\n   * @returns {boolean} true if this editor can be resized.\n   */\n  get isResizable() {\n    return false;\n  }\n\n  /**\n   * Add the resizers to this editor.\n   */\n  makeResizable() {\n    if (this.isResizable) {\n      this.#createResizers();\n      this.#resizersDiv.classList.remove(\"hidden\");\n    }\n  }\n\n  get toolbarPosition() {\n    return null;\n  }\n\n  /**\n   * Get the position of the comment button.\n   * @returns {Array<number>|null}\n   */\n  get commentButtonPosition() {\n    return this._uiManager.direction === \"ltr\" ? [1, 0] : [0, 0];\n  }\n\n  get commentButtonPositionInPage() {\n    const {\n      commentButtonPosition: [posX, posY],\n    } = this;\n    const [blX, blY, trX, trY] = this.getPDFRect();\n    return [\n      AnnotationEditor._round(blX + (trX - blX) * posX),\n      AnnotationEditor._round(blY + (trY - blY) * (1 - posY)),\n    ];\n  }\n\n  get commentButtonColor() {\n    return this._uiManager.makeCommentColor(\n      this.getNonHCMColor(),\n      this.opacity\n    );\n  }\n\n  get commentPopupPosition() {\n    return this.#comment.commentPopupPositionInLayer;\n  }\n\n  set commentPopupPosition(pos) {\n    this.#comment.commentPopupPositionInLayer = pos;\n  }\n\n  hasDefaultPopupPosition() {\n    return this.#comment.hasDefaultPopupPosition();\n  }\n\n  get commentButtonWidth() {\n    return this.#comment.commentButtonWidth;\n  }\n\n  get elementBeforePopup() {\n    return this.div;\n  }\n\n  setCommentButtonStates(options) {\n    this.#comment.setCommentButtonStates(options);\n  }\n\n  /**\n   * onkeydown callback.\n   * @param {KeyboardEvent} event\n   */\n  keydown(event) {\n    if (\n      !this.isResizable ||\n      event.target !== this.div ||\n      event.key !== \"Enter\"\n    ) {\n      return;\n    }\n    this._uiManager.setSelected(this);\n    this.#savedDimensions = {\n      savedX: this.x,\n      savedY: this.y,\n      savedWidth: this.width,\n      savedHeight: this.height,\n    };\n    const children = this.#resizersDiv.children;\n    if (!this.#allResizerDivs) {\n      this.#allResizerDivs = Array.from(children);\n      const boundResizerKeydown = this.#resizerKeydown.bind(this);\n      const boundResizerBlur = this.#resizerBlur.bind(this);\n      const signal = this._uiManager._signal;\n      for (const div of this.#allResizerDivs) {\n        const name = div.getAttribute(\"data-resizer-name\");\n        div.setAttribute(\"role\", \"spinbutton\");\n        div.addEventListener(\"keydown\", boundResizerKeydown, { signal });\n        div.addEventListener(\"blur\", boundResizerBlur, { signal });\n        div.addEventListener(\"focus\", this.#resizerFocus.bind(this, name), {\n          signal,\n        });\n        div.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n      }\n    }\n\n    // We want to have the resizers in the visual order, so we move the first\n    // (top-left) to the right place.\n    const first = this.#allResizerDivs[0];\n    let firstPosition = 0;\n    for (const div of children) {\n      if (div === first) {\n        break;\n      }\n      firstPosition++;\n    }\n    const nextFirstPosition =\n      (((360 - this.rotation + this.parentRotation) % 360) / 90) *\n      (this.#allResizerDivs.length / 4);\n\n    if (nextFirstPosition !== firstPosition) {\n      // We need to reorder the resizers in the DOM in order to have the focus\n      // on the top-left one.\n      if (nextFirstPosition < firstPosition) {\n        for (let i = 0; i < firstPosition - nextFirstPosition; i++) {\n          this.#resizersDiv.append(this.#resizersDiv.firstChild);\n        }\n      } else if (nextFirstPosition > firstPosition) {\n        for (let i = 0; i < nextFirstPosition - firstPosition; i++) {\n          this.#resizersDiv.firstChild.before(this.#resizersDiv.lastChild);\n        }\n      }\n\n      let i = 0;\n      for (const child of children) {\n        const div = this.#allResizerDivs[i++];\n        const name = div.getAttribute(\"data-resizer-name\");\n        child.setAttribute(\"data-l10n-id\", AnnotationEditor._l10nResizer[name]);\n      }\n    }\n\n    this.#setResizerTabIndex(0);\n    this.#isResizerEnabledForKeyboard = true;\n    this.#resizersDiv.firstChild.focus({ focusVisible: true });\n    event.preventDefault();\n    event.stopImmediatePropagation();\n  }\n\n  #resizerKeydown(event) {\n    AnnotationEditor._resizerKeyboardManager.exec(this, event);\n  }\n\n  #resizerBlur(event) {\n    if (\n      this.#isResizerEnabledForKeyboard &&\n      event.relatedTarget?.parentNode !== this.#resizersDiv\n    ) {\n      this.#stopResizing();\n    }\n  }\n\n  #resizerFocus(name) {\n    this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : \"\";\n  }\n\n  #setResizerTabIndex(value) {\n    if (!this.#allResizerDivs) {\n      return;\n    }\n    for (const div of this.#allResizerDivs) {\n      div.tabIndex = value;\n    }\n  }\n\n  _resizeWithKeyboard(x, y) {\n    if (!this.#isResizerEnabledForKeyboard) {\n      return;\n    }\n    this.#resizerPointermove(this.#focusedResizerName, {\n      deltaX: x,\n      deltaY: y,\n      fromKeyboard: true,\n    });\n  }\n\n  #stopResizing() {\n    this.#isResizerEnabledForKeyboard = false;\n    this.#setResizerTabIndex(-1);\n    this.#addResizeToUndoStack();\n  }\n\n  _stopResizingWithKeyboard() {\n    this.#stopResizing();\n    this.div.focus();\n  }\n\n  /**\n   * Select this editor.\n   */\n  select() {\n    if (this.isSelected && this._editToolbar) {\n      this._editToolbar.show();\n      return;\n    }\n    this.isSelected = true;\n    this.makeResizable();\n    this.div?.classList.add(\"selectedEditor\");\n    if (!this._editToolbar) {\n      this.addEditToolbar().then(() => {\n        if (this.div?.classList.contains(\"selectedEditor\")) {\n          // The editor can have been unselected while we were waiting for the\n          // edit toolbar to be created, hence we want to be sure that this\n          // editor is still selected.\n          this._editToolbar?.show();\n        }\n      });\n      return;\n    }\n    this._editToolbar?.show();\n    this.#altText?.toggleAltTextBadge(false);\n  }\n\n  focus() {\n    if (this.div && !this.div.contains(document.activeElement)) {\n      setTimeout(() => this.div?.focus({ preventScroll: true }), 0);\n    }\n  }\n\n  /**\n   * Unselect this editor.\n   */\n  unselect() {\n    if (!this.isSelected) {\n      return;\n    }\n    this.isSelected = false;\n    this.#resizersDiv?.classList.add(\"hidden\");\n    this.div?.classList.remove(\"selectedEditor\");\n    if (this.div?.contains(document.activeElement)) {\n      // Don't use this.div.blur() because we don't know where the focus will\n      // go.\n      this._uiManager.currentLayer.div.focus({\n        preventScroll: true,\n      });\n    }\n    this._editToolbar?.hide();\n    this.#altText?.toggleAltTextBadge(true);\n    if (this.hasComment) {\n      this._uiManager.toggleComment(\n        this,\n        /* isSelected = */ false,\n        /* visibility = */ false\n      );\n    }\n  }\n\n  /**\n   * Update some parameters which have been changed through the UI.\n   * @param {number} type\n   * @param {*} value\n   */\n  updateParams(type, value) {}\n\n  /**\n   * When the user disables the editing mode some editors can change some of\n   * their properties.\n   */\n  disableEditing() {}\n\n  /**\n   * When the user enables the editing mode some editors can change some of\n   * their properties.\n   */\n  enableEditing() {}\n\n  /**\n   * Check if the content of this editor can be changed.\n   * For example, a FreeText editor can be changed (the user can change the\n   * text), but a Stamp editor cannot.\n   * @returns {boolean}\n   */\n  get canChangeContent() {\n    return false;\n  }\n\n  /**\n   * The editor is about to be edited.\n   */\n  enterInEditMode() {\n    if (!this.canChangeContent) {\n      return;\n    }\n    this.enableEditMode();\n    this.div.focus();\n  }\n\n  /**\n   * ondblclick callback.\n   * @param {MouseEvent} event\n   */\n  dblclick(event) {\n    if (event.target.nodeName === \"BUTTON\") {\n      // Avoid entering in edit mode when clicking on the comment button.\n      return;\n    }\n    this.enterInEditMode();\n    this.parent.updateToolbar({\n      mode: this.constructor._editorType,\n      editId: this.id,\n    });\n  }\n\n  /**\n   * @returns {HTMLElement | null} the element requiring an alt text.\n   */\n  getElementForAltText() {\n    return this.div;\n  }\n\n  /**\n   * Get the div which really contains the displayed content.\n   * @returns {HTMLDivElement | undefined}\n   */\n  get contentDiv() {\n    return this.div;\n  }\n\n  /**\n   * If true then the editor is currently edited.\n   * @type {boolean}\n   */\n  get isEditing() {\n    return this.#isEditing;\n  }\n\n  /**\n   * When set to true, it means that this editor is currently edited.\n   * @param {boolean} value\n   */\n  set isEditing(value) {\n    this.#isEditing = value;\n    if (!this.parent) {\n      return;\n    }\n    if (value) {\n      this.parent.setSelected(this);\n      this.parent.setActiveEditor(this);\n    } else {\n      this.parent.setActiveEditor(null);\n    }\n  }\n\n  static get MIN_SIZE() {\n    return 16;\n  }\n\n  static canCreateNewEmptyEditor() {\n    return true;\n  }\n\n  /**\n   * Get the data to report to the telemetry when the editor is added.\n   * @returns {Object}\n   */\n  get telemetryInitialData() {\n    return { action: \"added\" };\n  }\n\n  /**\n   * The telemetry data to use when saving/printing.\n   * @returns {Object|null}\n   */\n  get telemetryFinalData() {\n    return null;\n  }\n\n  _reportTelemetry(data, mustWait = false) {\n    if (mustWait) {\n      this.#telemetryTimeouts ||= new Map();\n      const { action } = data;\n      let timeout = this.#telemetryTimeouts.get(action);\n      if (timeout) {\n        clearTimeout(timeout);\n      }\n      timeout = setTimeout(() => {\n        this._reportTelemetry(data);\n        this.#telemetryTimeouts.delete(action);\n        if (this.#telemetryTimeouts.size === 0) {\n          this.#telemetryTimeouts = null;\n        }\n      }, AnnotationEditor._telemetryTimeout);\n      this.#telemetryTimeouts.set(action, timeout);\n      return;\n    }\n    data.type ||= this.editorType;\n    this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n      source: this,\n      details: {\n        type: \"editing\",\n        data,\n      },\n    });\n  }\n\n  /**\n   * Show or hide this editor.\n   * @param {boolean|undefined} visible\n   */\n  show(visible = this._isVisible) {\n    this.div.classList.toggle(\"hidden\", !visible);\n    this._isVisible = visible;\n  }\n\n  enable() {\n    if (this.div) {\n      this.div.tabIndex = 0;\n    }\n    this.#disabled = false;\n  }\n\n  disable() {\n    if (this.div) {\n      this.div.tabIndex = -1;\n    }\n    this.#disabled = true;\n  }\n\n  updateFakeAnnotationElement(annotationLayer) {\n    if (!this.#fakeAnnotation && !this.deleted) {\n      this.#fakeAnnotation = annotationLayer.addFakeAnnotation(this);\n      return;\n    }\n    if (this.deleted) {\n      this.#fakeAnnotation.remove();\n      this.#fakeAnnotation = null;\n      return;\n    }\n    if (this.hasEditedComment || this._hasBeenMoved || this._hasBeenResized) {\n      this.#fakeAnnotation.updateEdited({\n        rect: this.getPDFRect(),\n        popup: this.comment,\n      });\n    }\n  }\n\n  /**\n   * Render an annotation in the annotation layer.\n   * @param {Object} annotation\n   * @returns {HTMLElement|null}\n   */\n  renderAnnotationElement(annotation) {\n    if (this.deleted) {\n      annotation.hide();\n      return null;\n    }\n    let content = annotation.container.querySelector(\".annotationContent\");\n    if (!content) {\n      content = document.createElement(\"div\");\n      content.classList.add(\"annotationContent\", this.editorType);\n      annotation.container.prepend(content);\n    } else if (content.nodeName === \"CANVAS\") {\n      const canvas = content;\n      content = document.createElement(\"div\");\n      content.classList.add(\"annotationContent\", this.editorType);\n      canvas.before(content);\n    }\n\n    return content;\n  }\n\n  resetAnnotationElement(annotation) {\n    const { firstChild } = annotation.container;\n    if (\n      firstChild?.nodeName === \"DIV\" &&\n      firstChild.classList.contains(\"annotationContent\")\n    ) {\n      firstChild.remove();\n    }\n  }\n}\n\n// This class is used to fake an editor which has been deleted.\nclass FakeEditor extends AnnotationEditor {\n  constructor(params) {\n    super(params);\n    this.annotationElementId = params.annotationElementId;\n    this.deleted = true;\n  }\n\n  serialize() {\n    return this.serializeDeleted();\n  }\n}\n\nexport { AnnotationEditor };\n", "/* Copyright 2014 Opera Software ASA\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n *\n * Based on https://code.google.com/p/smhasher/wiki/MurmurHash3.\n * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.\n */\n\nconst SEED = 0xc3d2e1f0;\n// Workaround for missing math precision in JS.\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    if (typeof input === \"string\") {\n      data = new Uint8Array(input.length * 2);\n      length = 0;\n      for (let i = 0, ii = input.length; i < ii; i++) {\n        const code = input.charCodeAt(i);\n        if (code <= 0xff) {\n          data[length++] = code;\n        } else {\n          data[length++] = code >>> 8;\n          data[length++] = code & 0xff;\n        }\n      }\n    } else if (ArrayBuffer.isView(input)) {\n      data = input.slice();\n      length = data.byteLength;\n    } else {\n      throw new Error(\"Invalid data format, must be a string or TypedArray.\");\n    }\n\n    const blockCounts = length >> 2;\n    const tailLength = length - blockCounts * 4;\n    // We don't care about endianness here.\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      /* falls through */\n      case 2:\n        k1 ^= data[blockCounts * 4 + 1] << 8;\n      /* falls through */\n      case 1:\n        k1 ^= data[blockCounts * 4];\n        /* falls through */\n\n        k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n        k1 = (k1 << 15) | (k1 >>> 17);\n        k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n        if (blockCounts & 1) {\n          h1 ^= k1;\n        } else {\n          h2 ^= k1;\n        }\n    }\n\n    this.h1 = h1;\n    this.h2 = h2;\n  }\n\n  hexdigest() {\n    let h1 = this.h1,\n      h2 = this.h2;\n\n    h1 ^= h2 >>> 1;\n    h1 = ((h1 * 0xed558ccd) & MASK_HIGH) | ((h1 * 0x8ccd) & MASK_LOW);\n    h2 =\n      ((h2 * 0xff51afd7) & MASK_HIGH) |\n      (((((h2 << 16) | (h1 >>> 16)) * 0xafd7ed55) & MASK_HIGH) >>> 16);\n    h1 ^= h2 >>> 1;\n    h1 = ((h1 * 0x1a85ec53) & MASK_HIGH) | ((h1 * 0xec53) & MASK_LOW);\n    h2 =\n      ((h2 * 0xc4ceb9fe) & MASK_HIGH) |\n      (((((h2 << 16) | (h1 >>> 16)) * 0xb9fe1a85) & MASK_HIGH) >>> 16);\n    h1 ^= h2 >>> 1;\n\n    return (\n      (h1 >>> 0).toString(16).padStart(8, \"0\") +\n      (h2 >>> 0).toString(16).padStart(8, \"0\")\n    );\n  }\n}\n\nexport { MurmurHash3_64 };\n", "/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { shadow, unreachable } from \"../shared/util.js\";\nimport { AnnotationEditor } from \"./editor/editor.js\";\nimport { MurmurHash3_64 } from \"../shared/murmurhash3.js\";\n\nconst SerializableEmpty = Object.freeze({\n  map: null,\n  hash: \"\",\n  transfer: undefined,\n});\n\n/**\n * Key/value storage for annotation data in forms.\n */\nclass AnnotationStorage {\n  #modified = false;\n\n  #modifiedIds = null;\n\n  #editorsMap = null;\n\n  #storage = new Map();\n\n  constructor() {\n    // Callbacks to signal when the modification state is set or reset.\n    // This is used by the viewer to only bind on `beforeunload` if forms\n    // are actually edited to prevent doing so unconditionally since that\n    // can have undesirable effects.\n    this.onSetModified = null;\n    this.onResetModified = null;\n    this.onAnnotationEditor = null;\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      // For testing purposes.\n      Object.defineProperty(this, \"_setValues\", {\n        value: obj => {\n          for (const [key, val] of Object.entries(obj)) {\n            this.setValue(key, val);\n          }\n        },\n      });\n    }\n  }\n\n  /**\n   * Get the value for a given key if it exists, or return the default value.\n   * @param {string} key\n   * @param {Object} defaultValue\n   * @returns {Object}\n   */\n  getValue(key, defaultValue) {\n    const value = this.#storage.get(key);\n    if (value === undefined) {\n      return defaultValue;\n    }\n\n    return Object.assign(defaultValue, value);\n  }\n\n  /**\n   * Get the value for a given key.\n   * @param {string} key\n   * @returns {Object}\n   */\n  getRawValue(key) {\n    return this.#storage.get(key);\n  }\n\n  /**\n   * Remove a value from the storage.\n   * @param {string} key\n   */\n  remove(key) {\n    const storedValue = this.#storage.get(key);\n    if (storedValue === undefined) {\n      return;\n    }\n    if (storedValue instanceof AnnotationEditor) {\n      this.#editorsMap.delete(storedValue.annotationElementId);\n    }\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 AnnotationEditor) {\n          return;\n        }\n      }\n      this.onAnnotationEditor(null);\n    }\n  }\n\n  /**\n   * Set the value for a given key\n   * @param {string} key\n   * @param {Object} value\n   */\n  setValue(key, value) {\n    const obj = this.#storage.get(key);\n    let modified = false;\n    if (obj !== undefined) {\n      for (const [entry, val] of Object.entries(value)) {\n        if (obj[entry] !== val) {\n          modified = true;\n          obj[entry] = val;\n        }\n      }\n    } else {\n      modified = true;\n      this.#storage.set(key, value);\n    }\n    if (modified) {\n      this.#setModified();\n    }\n\n    if (value instanceof AnnotationEditor) {\n      (this.#editorsMap ||= new Map()).set(value.annotationElementId, value);\n      if (typeof this.onAnnotationEditor === \"function\") {\n        this.onAnnotationEditor(value.constructor._type);\n      }\n    }\n  }\n\n  /**\n   * Check if the storage contains the given key.\n   * @param {string} key\n   * @returns {boolean}\n   */\n  has(key) {\n    return this.#storage.has(key);\n  }\n\n  get size() {\n    return this.#storage.size;\n  }\n\n  #setModified() {\n    if (!this.#modified) {\n      this.#modified = true;\n      if (typeof this.onSetModified === \"function\") {\n        this.onSetModified();\n      }\n    }\n  }\n\n  resetModified() {\n    if (this.#modified) {\n      this.#modified = false;\n      if (typeof this.onResetModified === \"function\") {\n        this.onResetModified();\n      }\n    }\n  }\n\n  /**\n   * @returns {PrintAnnotationStorage}\n   */\n  get print() {\n    return new PrintAnnotationStorage(this);\n  }\n\n  /**\n   * PLEASE NOTE: Only intended for usage within the API itself.\n   * @ignore\n   */\n  get serializable() {\n    if (this.#storage.size === 0) {\n      return SerializableEmpty;\n    }\n    const map = new Map(),\n      hash = new MurmurHash3_64(),\n      transfer = [];\n    const context = Object.create(null);\n    let hasBitmap = false;\n\n    for (const [key, val] of this.#storage) {\n      const serialized =\n        val instanceof AnnotationEditor\n          ? val.serialize(/* isForCopying = */ false, context)\n          : val;\n      if (serialized) {\n        map.set(key, serialized);\n\n        hash.update(`${key}:${JSON.stringify(serialized)}`);\n        hasBitmap ||= !!serialized.bitmap;\n      }\n    }\n\n    if (hasBitmap) {\n      // We must transfer the bitmap data separately, since it can be changed\n      // during serialization with SVG images.\n      for (const value of map.values()) {\n        if (value.bitmap) {\n          transfer.push(value.bitmap);\n        }\n      }\n    }\n\n    return map.size > 0\n      ? { map, hash: hash.hexdigest(), transfer }\n      : SerializableEmpty;\n  }\n\n  get editorStats() {\n    let stats = null;\n    const typeToEditor = new Map();\n    let numberOfEditedComments = 0;\n    let numberOfDeletedComments = 0;\n    for (const value of this.#storage.values()) {\n      if (!(value instanceof AnnotationEditor)) {\n        if (value.popup) {\n          if (value.popup.deleted) {\n            numberOfDeletedComments += 1;\n          } else {\n            numberOfEditedComments += 1;\n          }\n        }\n        continue;\n      }\n      if (value.isCommentDeleted) {\n        numberOfDeletedComments += 1;\n      } else if (value.hasEditedComment) {\n        numberOfEditedComments += 1;\n      }\n      const editorStats = value.telemetryFinalData;\n      if (!editorStats) {\n        continue;\n      }\n      const { type } = editorStats;\n      if (!typeToEditor.has(type)) {\n        typeToEditor.set(type, Object.getPrototypeOf(value).constructor);\n      }\n      stats ||= Object.create(null);\n      const map = (stats[type] ||= new Map());\n      for (const [key, val] of Object.entries(editorStats)) {\n        if (key === \"type\") {\n          continue;\n        }\n        let counters = map.get(key);\n        if (!counters) {\n          counters = new Map();\n          map.set(key, counters);\n        }\n        const count = counters.get(val) ?? 0;\n        counters.set(val, count + 1);\n      }\n    }\n    if (numberOfDeletedComments > 0 || numberOfEditedComments > 0) {\n      stats ||= Object.create(null);\n      stats.comments = {\n        deleted: numberOfDeletedComments,\n        edited: numberOfEditedComments,\n      };\n    }\n    if (!stats) {\n      return null;\n    }\n    for (const [type, editor] of typeToEditor) {\n      stats[type] = editor.computeTelemetryFinalData(stats[type]);\n    }\n    return stats;\n  }\n\n  resetModifiedIds() {\n    this.#modifiedIds = null;\n  }\n\n  updateEditor(annotationId, data) {\n    const value = this.#editorsMap?.get(annotationId);\n    if (value) {\n      value.updateFromAnnotationLayer(data);\n      return true;\n    }\n    return false;\n  }\n\n  getEditor(annotationId) {\n    return this.#editorsMap?.get(annotationId) || null;\n  }\n\n  /**\n   * @returns {{ids: Set<string>, hash: string}}\n   */\n  get modifiedIds() {\n    if (this.#modifiedIds) {\n      return this.#modifiedIds;\n    }\n    const ids = [];\n    if (this.#editorsMap) {\n      for (const value of this.#editorsMap.values()) {\n        if (!value.serialize()) {\n          continue;\n        }\n        ids.push(value.annotationElementId);\n      }\n    }\n    return (this.#modifiedIds = {\n      ids: new Set(ids),\n      hash: ids.join(\",\"),\n    });\n  }\n\n  [Symbol.iterator]() {\n    return this.#storage.entries();\n  }\n}\n\n/**\n * A special `AnnotationStorage` for use during printing, where the serializable\n * data is *frozen* upon initialization, to prevent scripting from modifying its\n * contents. (Necessary since printing is triggered synchronously in browsers.)\n */\nclass PrintAnnotationStorage extends AnnotationStorage {\n  #serializable;\n\n  constructor(parent) {\n    super();\n    const { map, hash, transfer } = parent.serializable;\n    // Create a *copy* of the data, since Objects are passed by reference in JS.\n    const clone = structuredClone(map, transfer ? { transfer } : null);\n\n    this.#serializable = { map: clone, hash, transfer };\n  }\n\n  /**\n   * @returns {PrintAnnotationStorage}\n   */\n  // eslint-disable-next-line getter-return\n  get print() {\n    unreachable(\"Should not call PrintAnnotationStorage.print\");\n  }\n\n  /**\n   * PLEASE NOTE: Only intended for usage within the API itself.\n   * @ignore\n   */\n  get serializable() {\n    return this.#serializable;\n  }\n\n  get modifiedIds() {\n    return shadow(this, \"modifiedIds\", {\n      ids: new Set(),\n      hash: \"\",\n    });\n  }\n}\n\nexport { AnnotationStorage, PrintAnnotationStorage, SerializableEmpty };\n", "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  assert,\n  FeatureTest,\n  isNodeJS,\n  shadow,\n  string32,\n  toBase64Util,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\n\nclass FontLoader {\n  #systemFonts = new Set();\n\n  constructor({\n    ownerDocument = globalThis.document,\n    styleElement = null, // For testing only.\n  }) {\n    this._document = ownerDocument;\n\n    this.nativeFontFaces = new Set();\n    this.styleElement =\n      typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")\n        ? styleElement\n        : null;\n\n    if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n      this.loadingRequests = [];\n      this.loadTestFontId = 0;\n    }\n  }\n\n  addNativeFontFace(nativeFontFace) {\n    this.nativeFontFaces.add(nativeFontFace);\n    this._document.fonts.add(nativeFontFace);\n  }\n\n  removeNativeFontFace(nativeFontFace) {\n    this.nativeFontFaces.delete(nativeFontFace);\n    this._document.fonts.delete(nativeFontFace);\n  }\n\n  insertRule(rule) {\n    if (!this.styleElement) {\n      this.styleElement = this._document.createElement(\"style\");\n      this._document.documentElement\n        .getElementsByTagName(\"head\")[0]\n        .append(this.styleElement);\n    }\n    const styleSheet = this.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    this.nativeFontFaces.clear();\n    this.#systemFonts.clear();\n\n    if (this.styleElement) {\n      // Note: ChildNode.remove doesn't throw if the parentNode is undefined.\n      this.styleElement.remove();\n      this.styleElement = null;\n    }\n  }\n\n  async loadSystemFont({\n    systemFontInfo: info,\n    disableFontFace,\n    _inspectFont,\n  }) {\n    if (!info || this.#systemFonts.has(info.loadedName)) {\n      return;\n    }\n    assert(\n      !disableFontFace,\n      \"loadSystemFont shouldn't be called when `disableFontFace` is set.\"\n    );\n\n    if (this.isFontLoadingAPISupported) {\n      const { loadedName, src, style } = info;\n      const fontFace = new FontFace(loadedName, src, style);\n      this.addNativeFontFace(fontFace);\n      try {\n        await fontFace.load();\n        this.#systemFonts.add(loadedName);\n        _inspectFont?.(info);\n      } catch {\n        warn(\n          `Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`\n        );\n\n        this.removeNativeFontFace(fontFace);\n      }\n      return;\n    }\n\n    unreachable(\n      \"Not implemented: loadSystemFont without the Font Loading API.\"\n    );\n  }\n\n  async bind(font) {\n    // Add the font to the DOM only once; skip if the font is already loaded.\n    if (font.attached || (font.missingFile && !font.systemFontInfo)) {\n      return;\n    }\n    font.attached = true;\n\n    if (font.systemFontInfo) {\n      await this.loadSystemFont(font);\n      return;\n    }\n\n    if (this.isFontLoadingAPISupported) {\n      const nativeFontFace = font.createNativeFontFace();\n      if (nativeFontFace) {\n        this.addNativeFontFace(nativeFontFace);\n        try {\n          await nativeFontFace.loaded;\n        } catch (ex) {\n          warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n\n          // When font loading failed, fall back to the built-in font renderer.\n          font.disableFontFace = true;\n          throw ex;\n        }\n      }\n      return; // The font was, asynchronously, loaded.\n    }\n\n    // !this.isFontLoadingAPISupported\n    const rule = font.createFontFaceRule();\n    if (rule) {\n      this.insertRule(rule);\n\n      if (this.isSyncFontLoadingSupported) {\n        return; // The font was, synchronously, loaded.\n      }\n      if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n        throw new Error(\"Not implemented: async font loading\");\n      }\n      await new Promise(resolve => {\n        const request = this._queueLoadingCallback(resolve);\n        this._prepareFontLoadEvent(font, request);\n      });\n      // The font was, asynchronously, loaded.\n    }\n  }\n\n  get isFontLoadingAPISupported() {\n    const hasFonts = !!this._document?.fonts;\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      return shadow(\n        this,\n        \"isFontLoadingAPISupported\",\n        hasFonts && !this.styleElement\n      );\n    }\n    return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n  }\n\n  get isSyncFontLoadingSupported() {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n      return shadow(this, \"isSyncFontLoadingSupported\", true);\n    }\n\n    // Node.js - we can pretend that sync font loading is supported.\n    // Firefox, from version 14, supports synchronous font loading.\n    return shadow(\n      this,\n      \"isSyncFontLoadingSupported\",\n      (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"CHROME\")) &&\n        (isNodeJS || FeatureTest.platform.isFirefox)\n    );\n  }\n\n  _queueLoadingCallback(callback) {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n      throw new Error(\"Not implemented: _queueLoadingCallback\");\n    }\n\n    function completeRequest() {\n      assert(!request.done, \"completeRequest() cannot be called twice.\");\n      request.done = true;\n\n      // Sending all completed requests in order of how they were queued.\n      while (loadingRequests.length > 0 && loadingRequests[0].done) {\n        const otherRequest = loadingRequests.shift();\n        setTimeout(otherRequest.callback, 0);\n      }\n    }\n\n    const { loadingRequests } = this;\n    const request = {\n      done: false,\n      complete: completeRequest,\n      callback,\n    };\n    loadingRequests.push(request);\n    return request;\n  }\n\n  get _loadTestFont() {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n      throw new Error(\"Not implemented: _loadTestFont\");\n    }\n\n    // This is a CFF font with 1 glyph for '.' that fills its entire width\n    // and height.\n    const testFont = atob(\n      \"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" +\n        \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" +\n        \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" +\n        \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" +\n        \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" +\n        \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" +\n        \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" +\n        \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" +\n        \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" +\n        \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" +\n        \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" +\n        \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" +\n        \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n        \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n        \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n        \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n        \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n        \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" +\n        \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" +\n        \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" +\n        \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" +\n        \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\"\n    );\n    return shadow(this, \"_loadTestFont\", testFont);\n  }\n\n  _prepareFontLoadEvent(font, request) {\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n      throw new Error(\"Not implemented: _prepareFontLoadEvent\");\n    }\n\n    /** Hack begin */\n    // There's currently no event when a font has finished downloading so the\n    // following code is a dirty hack to 'guess' when a font is ready.\n    // It's assumed fonts are loaded in order, so add a known test font after\n    // the desired fonts and then test for the loading of that test font.\n\n    function int32(data, offset) {\n      return (\n        (data.charCodeAt(offset) << 24) |\n        (data.charCodeAt(offset + 1) << 16) |\n        (data.charCodeAt(offset + 2) << 8) |\n        (data.charCodeAt(offset + 3) & 0xff)\n      );\n    }\n    function spliceString(s, offset, remove, insert) {\n      const chunk1 = s.substring(0, offset);\n      const chunk2 = s.substring(offset + remove);\n      return chunk1 + insert + chunk2;\n    }\n    let i, ii;\n\n    // The temporary canvas is used to determine if fonts are loaded.\n    const canvas = this._document.createElement(\"canvas\");\n    canvas.width = 1;\n    canvas.height = 1;\n    const ctx = canvas.getContext(\"2d\");\n\n    let called = 0;\n    function isFontReady(name, callback) {\n      // With setTimeout clamping this gives the font ~100ms to load.\n      if (++called > 30) {\n        warn(\"Load test font never loaded.\");\n        callback();\n        return;\n      }\n      ctx.font = \"30px \" + name;\n      ctx.fillText(\".\", 0, 20);\n      const imageData = ctx.getImageData(0, 0, 1, 1);\n      if (imageData.data[3] > 0) {\n        callback();\n        return;\n      }\n      setTimeout(isFontReady.bind(null, name, callback));\n    }\n\n    const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n    // Chromium seems to cache fonts based on a hash of the actual font data,\n    // so the font must be modified for each load test else it will appear to\n    // be loaded already.\n    // TODO: This could maybe be made faster by avoiding the btoa of the full\n    // font by splitting it in chunks before hand and padding the font id.\n    let data = this._loadTestFont;\n    const COMMENT_OFFSET = 976; // has to be on 4 byte boundary (for checksum)\n    data = spliceString(\n      data,\n      COMMENT_OFFSET,\n      loadTestFontId.length,\n      loadTestFontId\n    );\n    // CFF checksum is important for IE, adjusting it\n    const CFF_CHECKSUM_OFFSET = 16;\n    const XXXX_VALUE = 0x58585858; // the \"comment\" filled with 'X'\n    let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n    for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n      checksum = (checksum - XXXX_VALUE + int32(loadTestFontId, i)) | 0;\n    }\n    if (i < loadTestFontId.length) {\n      // align to 4 bytes boundary\n      checksum = (checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i)) | 0;\n    }\n    data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n\n    const url = `url(data:font/opentype;base64,${btoa(data)});`;\n    const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n    this.insertRule(rule);\n\n    const div = this._document.createElement(\"div\");\n    div.style.visibility = \"hidden\";\n    div.style.width = div.style.height = \"10px\";\n    div.style.position = \"absolute\";\n    div.style.top = div.style.left = \"0px\";\n\n    for (const name of [font.loadedName, loadTestFontId]) {\n      const span = this._document.createElement(\"span\");\n      span.textContent = \"Hi\";\n      span.style.fontFamily = name;\n      div.append(span);\n    }\n    this._document.body.append(div);\n\n    isFontReady(loadTestFontId, () => {\n      div.remove();\n      request.complete();\n    });\n    /** Hack end */\n  }\n}\n\nclass FontFaceObject {\n  #fontData;\n\n  constructor(translatedData, inspectFont = null, extra, charProcOperatorList) {\n    this.compiledGlyphs = Object.create(null);\n    this.#fontData = translatedData;\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      if (typeof this.disableFontFace !== \"boolean\") {\n        unreachable(\"disableFontFace must be available.\");\n      }\n      if (typeof this.fontExtraProperties !== \"boolean\") {\n        unreachable(\"fontExtraProperties must be available.\");\n      }\n    }\n    this._inspectFont = inspectFont;\n    if (extra) {\n      Object.assign(this, extra);\n    }\n    if (charProcOperatorList) {\n      this.charProcOperatorList = charProcOperatorList;\n    }\n  }\n\n  createNativeFontFace() {\n    if (!this.data || this.disableFontFace) {\n      return null;\n    }\n    let nativeFontFace;\n    if (!this.cssFontInfo) {\n      nativeFontFace = new FontFace(this.loadedName, this.data, {});\n    } else {\n      const css = {\n        weight: this.cssFontInfo.fontWeight,\n      };\n      if (this.cssFontInfo.italicAngle) {\n        css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n      }\n      nativeFontFace = new FontFace(\n        this.cssFontInfo.fontFamily,\n        this.data,\n        css\n      );\n    }\n\n    this._inspectFont?.(this);\n    return nativeFontFace;\n  }\n\n  createFontFaceRule() {\n    if (!this.data || this.disableFontFace) {\n      return null;\n    }\n    // Add the @font-face rule to the document.\n    const url = `url(data:${this.mimetype};base64,${toBase64Util(this.data)});`;\n    let rule;\n    if (!this.cssFontInfo) {\n      rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n    } else {\n      let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n      if (this.cssFontInfo.italicAngle) {\n        css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n      }\n      rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n    }\n\n    this._inspectFont?.(this, url);\n    return rule;\n  }\n\n  getPathGenerator(objs, character) {\n    if (this.compiledGlyphs[character] !== undefined) {\n      return this.compiledGlyphs[character];\n    }\n\n    const objId = this.loadedName + \"_path_\" + character;\n    let cmds;\n    try {\n      cmds = objs.get(objId);\n    } catch (ex) {\n      warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n    }\n    const path = new Path2D(cmds || \"\");\n\n    if (!this.fontExtraProperties) {\n      // Remove the raw path-string, since we don't need it anymore.\n      objs.delete(objId);\n    }\n    return (this.compiledGlyphs[character] = path);\n  }\n\n  get black() {\n    return this.#fontData.black;\n  }\n\n  get bold() {\n    return this.#fontData.bold;\n  }\n\n  get disableFontFace() {\n    return this.#fontData.disableFontFace ?? false;\n  }\n\n  get fontExtraProperties() {\n    return this.#fontData.fontExtraProperties ?? false;\n  }\n\n  get isInvalidPDFjsFont() {\n    return this.#fontData.isInvalidPDFjsFont;\n  }\n\n  get isType3Font() {\n    return this.#fontData.isType3Font;\n  }\n\n  get italic() {\n    return this.#fontData.italic;\n  }\n\n  get missingFile() {\n    return this.#fontData.missingFile;\n  }\n\n  get remeasure() {\n    return this.#fontData.remeasure;\n  }\n\n  get vertical() {\n    return this.#fontData.vertical;\n  }\n\n  get ascent() {\n    return this.#fontData.ascent;\n  }\n\n  get defaultWidth() {\n    return this.#fontData.defaultWidth;\n  }\n\n  get descent() {\n    return this.#fontData.descent;\n  }\n\n  get bbox() {\n    return this.#fontData.bbox;\n  }\n\n  get fontMatrix() {\n    return this.#fontData.fontMatrix;\n  }\n\n  get fallbackName() {\n    return this.#fontData.fallbackName;\n  }\n\n  get loadedName() {\n    return this.#fontData.loadedName;\n  }\n\n  get mimetype() {\n    return this.#fontData.mimetype;\n  }\n\n  get name() {\n    return this.#fontData.name;\n  }\n\n  get data() {\n    return this.#fontData.data;\n  }\n\n  clearData() {\n    this.#fontData.clearData();\n  }\n\n  get cssFontInfo() {\n    return this.#fontData.cssFontInfo;\n  }\n\n  get systemFontInfo() {\n    return this.#fontData.systemFontInfo;\n  }\n\n  get defaultVMetrics() {\n    return this.#fontData.defaultVMetrics;\n  }\n}\n\nexport { FontFaceObject, FontLoader };\n", "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  _isValidExplicitDest,\n  isNodeJS,\n  stringToBytes,\n  warn,\n} from \"../shared/util.js\";\n\nfunction getUrlProp(val) {\n  if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n    return null; // The 'url' is unused with `PDFDataRangeTransport`.\n  }\n  if (val instanceof URL) {\n    return val.href;\n  }\n  if (typeof val === \"string\") {\n    if (\n      typeof PDFJSDev !== \"undefined\" &&\n      PDFJSDev.test(\"GENERIC\") &&\n      isNodeJS\n    ) {\n      return val; // Use the url as-is in Node.js environments.\n    }\n\n    // The full path is required in the 'url' field.\n    const url = URL.parse(val, window.location);\n    if (url) {\n      return url.href;\n    }\n  }\n  throw new Error(\n    \"Invalid PDF url data: \" +\n      \"either string or URL-object is expected in the url property.\"\n  );\n}\n\nfunction getDataProp(val) {\n  // Converting string or array-like data to Uint8Array.\n  if (\n    typeof PDFJSDev !== \"undefined\" &&\n    PDFJSDev.test(\"GENERIC\") &&\n    isNodeJS &&\n    typeof Buffer !== \"undefined\" && // eslint-disable-line no-undef\n    val instanceof Buffer // eslint-disable-line no-undef\n  ) {\n    throw new Error(\n      \"Please provide binary data as `Uint8Array`, rather than `Buffer`.\"\n    );\n  }\n  if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n    // Use the data as-is when it's already a Uint8Array that completely\n    // \"utilizes\" its underlying ArrayBuffer, to prevent any possible\n    // issues when transferring it to the worker-thread.\n    return val;\n  }\n  if (typeof val === \"string\") {\n    return stringToBytes(val);\n  }\n  if (\n    val instanceof ArrayBuffer ||\n    ArrayBuffer.isView(val) ||\n    (typeof val === \"object\" && !isNaN(val?.length))\n  ) {\n    return new Uint8Array(val);\n  }\n  throw new Error(\n    \"Invalid PDF binary data: either TypedArray, \" +\n      \"string, or array-like object is expected in the data property.\"\n  );\n}\n\nfunction getFactoryUrlProp(val) {\n  if (typeof val !== \"string\") {\n    return null;\n  }\n  if (val.endsWith(\"/\")) {\n    return val;\n  }\n  throw new Error(`Invalid factory url: \"${val}\" must include trailing slash.`);\n}\n\nconst isRefProxy = v =>\n  typeof v === \"object\" &&\n  Number.isInteger(v?.num) &&\n  v.num >= 0 &&\n  Number.isInteger(v?.gen) &&\n  v.gen >= 0;\n\nconst isNameProxy = v => typeof v === \"object\" && typeof v?.name === \"string\";\n\nconst isValidExplicitDest = _isValidExplicitDest.bind(\n  null,\n  /* validRef = */ isRefProxy,\n  /* validName = */ isNameProxy\n);\n\nclass LoopbackPort {\n  #listeners = new Map();\n\n  #deferred = Promise.resolve();\n\n  postMessage(obj, transfer) {\n    const event = {\n      data: structuredClone(obj, transfer ? { transfer } : null),\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, options = null) {\n    let rmAbort = null;\n    if (options?.signal instanceof AbortSignal) {\n      const { signal } = options;\n      if (signal.aborted) {\n        warn(\"LoopbackPort - cannot use an `aborted` signal.\");\n        return;\n      }\n      const onAbort = () => this.removeEventListener(name, listener);\n      rmAbort = () => signal.removeEventListener(\"abort\", onAbort);\n\n      signal.addEventListener(\"abort\", onAbort);\n    }\n    this.#listeners.set(listener, rmAbort);\n  }\n\n  removeEventListener(name, listener) {\n    const rmAbort = this.#listeners.get(listener);\n    rmAbort?.();\n\n    this.#listeners.delete(listener);\n  }\n\n  terminate() {\n    for (const [, rmAbort] of this.#listeners) {\n      rmAbort?.();\n    }\n    this.#listeners.clear();\n  }\n}\n\nexport {\n  getDataProp,\n  getFactoryUrlProp,\n  getUrlProp,\n  isNameProxy,\n  isRefProxy,\n  isValidExplicitDest,\n  LoopbackPort,\n};\n", "/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  AbortException,\n  assert,\n  InvalidPDFException,\n  PasswordException,\n  ResponseException,\n  UnknownErrorException,\n  unreachable,\n} from \"./util.js\";\n\nconst CallbackKind = {\n  DATA: 1,\n  ERROR: 2,\n};\n\nconst StreamKind = {\n  CANCEL: 1,\n  CANCEL_COMPLETE: 2,\n  CLOSE: 3,\n  ENQUEUE: 4,\n  ERROR: 5,\n  PULL: 6,\n  PULL_COMPLETE: 7,\n  START_COMPLETE: 8,\n};\n\nfunction onFn() {}\n\nfunction wrapReason(ex) {\n  if (\n    ex instanceof AbortException ||\n    ex instanceof InvalidPDFException ||\n    ex instanceof PasswordException ||\n    ex instanceof ResponseException ||\n    ex instanceof UnknownErrorException\n  ) {\n    // Avoid re-creating the exception when its type is already correct.\n    return ex;\n  }\n\n  if (!(ex instanceof Error || (typeof ex === \"object\" && ex !== null))) {\n    unreachable(\n      'wrapReason: Expected \"reason\" to be a (possibly cloned) Error.'\n    );\n  }\n  switch (ex.name) {\n    case \"AbortException\":\n      return new AbortException(ex.message);\n    case \"InvalidPDFException\":\n      return new InvalidPDFException(ex.message);\n    case \"PasswordException\":\n      return new PasswordException(ex.message, ex.code);\n    case \"ResponseException\":\n      return new ResponseException(ex.message, ex.status, ex.missing);\n    case \"UnknownErrorException\":\n      return new UnknownErrorException(ex.message, ex.details);\n  }\n  return new UnknownErrorException(ex.message, ex.toString());\n}\n\nclass MessageHandler {\n  #messageAC = new AbortController();\n\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    comObj.addEventListener(\"message\", this.#onMessage.bind(this), {\n      signal: this.#messageAC.signal,\n    });\n  }\n\n  #onMessage({ data }) {\n    if (data.targetName !== this.sourceName) {\n      return;\n    }\n    if (data.stream) {\n      this.#processStreamMessage(data);\n      return;\n    }\n    if (data.callback) {\n      const callbackId = data.callbackId;\n      const capability = this.callbackCapabilities[callbackId];\n      if (!capability) {\n        throw new Error(`Cannot resolve callback ${callbackId}`);\n      }\n      delete this.callbackCapabilities[callbackId];\n\n      if (data.callback === CallbackKind.DATA) {\n        capability.resolve(data.data);\n      } else if (data.callback === CallbackKind.ERROR) {\n        capability.reject(wrapReason(data.reason));\n      } else {\n        throw new Error(\"Unexpected callback case\");\n      }\n      return;\n    }\n    const action = this.actionHandler[data.action];\n    if (!action) {\n      throw new Error(`Unknown action from worker: ${data.action}`);\n    }\n    if (data.callbackId) {\n      const sourceName = this.sourceName,\n        targetName = data.sourceName,\n        comObj = this.comObj;\n\n      Promise.try(action, data.data).then(\n        function (result) {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            callback: CallbackKind.DATA,\n            callbackId: data.callbackId,\n            data: result,\n          });\n        },\n        function (reason) {\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            callback: CallbackKind.ERROR,\n            callbackId: data.callbackId,\n            reason: wrapReason(reason),\n          });\n        }\n      );\n      return;\n    }\n    if (data.streamId) {\n      this.#createStreamSink(data);\n      return;\n    }\n    action(data.data);\n  }\n\n  on(actionName, handler) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        typeof handler === \"function\",\n        'MessageHandler.on: Expected \"handler\" to be a function.'\n      );\n    }\n    const ah = this.actionHandler;\n    if (ah[actionName]) {\n      throw new Error(`There is already an actionName called \"${actionName}\"`);\n    }\n    ah[actionName] = handler;\n  }\n\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   */\n  send(actionName, data, transfers) {\n    this.comObj.postMessage(\n      {\n        sourceName: this.sourceName,\n        targetName: this.targetName,\n        action: actionName,\n        data,\n      },\n      transfers\n    );\n  }\n\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * Expects that the other side will callback with the response.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   * @returns {Promise} Promise to be resolved with response data.\n   */\n  sendWithPromise(actionName, data, transfers) {\n    const callbackId = this.callbackId++;\n    const capability = Promise.withResolvers();\n    this.callbackCapabilities[callbackId] = capability;\n    try {\n      this.comObj.postMessage(\n        {\n          sourceName: this.sourceName,\n          targetName: this.targetName,\n          action: actionName,\n          callbackId,\n          data,\n        },\n        transfers\n      );\n    } catch (ex) {\n      capability.reject(ex);\n    }\n    return capability.promise;\n  }\n\n  /**\n   * Sends a message to the comObj to invoke the action with the supplied data.\n   * Expect that the other side will callback to signal 'start_complete'.\n   * @param {string} actionName - Action to call.\n   * @param {JSON} data - JSON data to send.\n   * @param {Object} queueingStrategy - Strategy to signal backpressure based on\n   *                 internal queue.\n   * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n   * @returns {ReadableStream} ReadableStream to read data in chunks.\n   */\n  sendWithStream(actionName, data, queueingStrategy, transfers) {\n    const streamId = this.streamId++,\n      sourceName = this.sourceName,\n      targetName = this.targetName,\n      comObj = this.comObj;\n\n    return new ReadableStream(\n      {\n        start: controller => {\n          const startCapability = Promise.withResolvers();\n          this.streamControllers[streamId] = {\n            controller,\n            startCall: startCapability,\n            pullCall: null,\n            cancelCall: null,\n            isClosed: false,\n          };\n          comObj.postMessage(\n            {\n              sourceName,\n              targetName,\n              action: actionName,\n              streamId,\n              data,\n              desiredSize: controller.desiredSize,\n            },\n            transfers\n          );\n          // Return Promise for Async process, to signal success/failure.\n          return startCapability.promise;\n        },\n\n        pull: controller => {\n          const pullCapability = Promise.withResolvers();\n          this.streamControllers[streamId].pullCall = pullCapability;\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.PULL,\n            streamId,\n            desiredSize: controller.desiredSize,\n          });\n          // Returning Promise will not call \"pull\"\n          // again until current pull is resolved.\n          return pullCapability.promise;\n        },\n\n        cancel: reason => {\n          assert(reason instanceof Error, \"cancel must have a valid reason\");\n          const cancelCapability = Promise.withResolvers();\n          this.streamControllers[streamId].cancelCall = cancelCapability;\n          this.streamControllers[streamId].isClosed = true;\n          comObj.postMessage({\n            sourceName,\n            targetName,\n            stream: StreamKind.CANCEL,\n            streamId,\n            reason: wrapReason(reason),\n          });\n          // Return Promise to signal success or failure.\n          return cancelCapability.promise;\n        },\n      },\n      queueingStrategy\n    );\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\n    const streamSink = {\n      enqueue(chunk, size = 1, transfers) {\n        if (this.isCancelled) {\n          return;\n        }\n        const lastDesiredSize = this.desiredSize;\n        this.desiredSize -= size;\n        // Enqueue decreases the desiredSize property of sink,\n        // so when it changes from positive to negative,\n        // set ready as unresolved promise.\n        if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n          this.sinkCapability = Promise.withResolvers();\n          this.ready = this.sinkCapability.promise;\n        }\n        comObj.postMessage(\n          {\n            sourceName,\n            targetName,\n            stream: StreamKind.ENQUEUE,\n            streamId,\n            chunk,\n          },\n          transfers\n        );\n      },\n\n      close() {\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.CLOSE,\n          streamId,\n        });\n        delete self.streamSinks[streamId];\n      },\n\n      error(reason) {\n        assert(reason instanceof Error, \"error must have a valid reason\");\n        if (this.isCancelled) {\n          return;\n        }\n        this.isCancelled = true;\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.ERROR,\n          streamId,\n          reason: wrapReason(reason),\n        });\n      },\n\n      sinkCapability: Promise.withResolvers(),\n      onPull: null,\n      onCancel: null,\n      isCancelled: false,\n      desiredSize: data.desiredSize,\n      ready: null,\n    };\n\n    streamSink.sinkCapability.resolve();\n    streamSink.ready = streamSink.sinkCapability.promise;\n    this.streamSinks[streamId] = streamSink;\n\n    Promise.try(action, data.data, streamSink).then(\n      function () {\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.START_COMPLETE,\n          streamId,\n          success: true,\n        });\n      },\n      function (reason) {\n        comObj.postMessage({\n          sourceName,\n          targetName,\n          stream: StreamKind.START_COMPLETE,\n          streamId,\n          reason: wrapReason(reason),\n        });\n      }\n    );\n  }\n\n  #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        break;\n      case StreamKind.PULL_COMPLETE:\n        if (data.success) {\n          streamController.pullCall.resolve();\n        } else {\n          streamController.pullCall.reject(wrapReason(data.reason));\n        }\n        break;\n      case StreamKind.PULL:\n        // Ignore any pull after close is called.\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        // Pull increases the desiredSize property of sink, so when it changes\n        // from negative to positive, set ready property as resolved promise.\n        if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n          streamSink.sinkCapability.resolve();\n        }\n        // Reset desiredSize property of sink on every pull.\n        streamSink.desiredSize = data.desiredSize;\n\n        Promise.try(streamSink.onPull || onFn).then(\n          function () {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.PULL_COMPLETE,\n              streamId,\n              success: true,\n            });\n          },\n          function (reason) {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.PULL_COMPLETE,\n              streamId,\n              reason: wrapReason(reason),\n            });\n          }\n        );\n        break;\n      case StreamKind.ENQUEUE:\n        assert(streamController, \"enqueue should have stream controller\");\n        if (streamController.isClosed) {\n          break;\n        }\n        streamController.controller.enqueue(data.chunk);\n        break;\n      case StreamKind.CLOSE:\n        assert(streamController, \"close should have stream controller\");\n        if (streamController.isClosed) {\n          break;\n        }\n        streamController.isClosed = true;\n        streamController.controller.close();\n        this.#deleteStreamController(streamController, streamId);\n        break;\n      case StreamKind.ERROR:\n        assert(streamController, \"error should have stream controller\");\n        streamController.controller.error(wrapReason(data.reason));\n        this.#deleteStreamController(streamController, streamId);\n        break;\n      case StreamKind.CANCEL_COMPLETE:\n        if (data.success) {\n          streamController.cancelCall.resolve();\n        } else {\n          streamController.cancelCall.reject(wrapReason(data.reason));\n        }\n        this.#deleteStreamController(streamController, streamId);\n        break;\n      case StreamKind.CANCEL:\n        if (!streamSink) {\n          break;\n        }\n        const dataReason = wrapReason(data.reason);\n\n        Promise.try(streamSink.onCancel || onFn, dataReason).then(\n          function () {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.CANCEL_COMPLETE,\n              streamId,\n              success: true,\n            });\n          },\n          function (reason) {\n            comObj.postMessage({\n              sourceName,\n              targetName,\n              stream: StreamKind.CANCEL_COMPLETE,\n              streamId,\n              reason: wrapReason(reason),\n            });\n          }\n        );\n        streamSink.sinkCapability.reject(dataReason);\n        streamSink.isCancelled = true;\n        delete this.streamSinks[streamId];\n        break;\n      default:\n        throw new Error(\"Unexpected stream case\");\n    }\n  }\n\n  async #deleteStreamController(streamController, streamId) {\n    // Delete the `streamController` only when the start, pull, and cancel\n    // capabilities have settled, to prevent `TypeError`s.\n    await Promise.allSettled([\n      streamController.startCall?.promise,\n      streamController.pullCall?.promise,\n      streamController.cancelCall?.promise,\n    ]);\n    delete this.streamControllers[streamId];\n  }\n\n  destroy() {\n    this.#messageAC?.abort();\n    this.#messageAC = null;\n  }\n}\n\nexport { MessageHandler, wrapReason };\n", "/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { unreachable } from \"../shared/util.js\";\n\nclass BaseCanvasFactory {\n  #enableHWA = false;\n\n  constructor({ enableHWA = false }) {\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n      this.constructor === BaseCanvasFactory\n    ) {\n      unreachable(\"Cannot initialize BaseCanvasFactory.\");\n    }\n    this.#enableHWA = enableHWA;\n  }\n\n  create(width, height) {\n    if (width <= 0 || height <= 0) {\n      throw new Error(\"Invalid canvas size\");\n    }\n    const canvas = this._createCanvas(width, height);\n    return {\n      canvas,\n      context: canvas.getContext(\"2d\", {\n        willReadFrequently: !this.#enableHWA,\n      }),\n    };\n  }\n\n  reset(canvasAndContext, width, height) {\n    if (!canvasAndContext.canvas) {\n      throw new Error(\"Canvas is not specified\");\n    }\n    if (width <= 0 || height <= 0) {\n      throw new Error(\"Invalid canvas size\");\n    }\n    canvasAndContext.canvas.width = width;\n    canvasAndContext.canvas.height = height;\n  }\n\n  destroy(canvasAndContext) {\n    if (!canvasAndContext.canvas) {\n      throw new Error(\"Canvas is not specified\");\n    }\n    // Zeroing the width and height cause Firefox to release graphics\n    // resources immediately, which can greatly reduce memory consumption.\n    canvasAndContext.canvas.width = 0;\n    canvasAndContext.canvas.height = 0;\n    canvasAndContext.canvas = null;\n    canvasAndContext.context = null;\n  }\n\n  /**\n   * @ignore\n   */\n  _createCanvas(width, height) {\n    unreachable(\"Abstract method `_createCanvas` called.\");\n  }\n}\n\nclass DOMCanvasFactory extends BaseCanvasFactory {\n  constructor({ ownerDocument = globalThis.document, enableHWA = false }) {\n    super({ enableHWA });\n    this._document = ownerDocument;\n  }\n\n  /**\n   * @ignore\n   */\n  _createCanvas(width, height) {\n    const canvas = this._document.createElement(\"canvas\");\n    canvas.width = width;\n    canvas.height = height;\n    return canvas;\n  }\n}\n\nexport { BaseCanvasFactory, DOMCanvasFactory };\n", "/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { stringToBytes, unreachable } from \"../shared/util.js\";\nimport { fetchData } from \"./display_utils.js\";\n\nclass BaseCMapReaderFactory {\n  constructor({ baseUrl = null, isCompressed = true }) {\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n      this.constructor === BaseCMapReaderFactory\n    ) {\n      unreachable(\"Cannot initialize BaseCMapReaderFactory.\");\n    }\n    this.baseUrl = baseUrl;\n    this.isCompressed = isCompressed;\n  }\n\n  async fetch({ name }) {\n    if (!this.baseUrl) {\n      throw new Error(\n        \"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    const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n\n    return this._fetch(url)\n      .then(cMapData => ({ cMapData, isCompressed: this.isCompressed }))\n      .catch(reason => {\n        throw new Error(\n          `Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`\n        );\n      });\n  }\n\n  /**\n   * @ignore\n   * @returns {Promise<Uint8Array>}\n   */\n  async _fetch(url) {\n    unreachable(\"Abstract method `_fetch` called.\");\n  }\n}\n\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n  /**\n   * @ignore\n   */\n  async _fetch(url) {\n    const data = await fetchData(\n      url,\n      /* type = */ this.isCompressed ? \"arraybuffer\" : \"text\"\n    );\n    return data instanceof ArrayBuffer\n      ? new Uint8Array(data)\n      : stringToBytes(data);\n  }\n}\n\nexport { BaseCMapReaderFactory, DOMCMapReaderFactory };\n", "/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getRGB, isDataScheme, SVG_NS } from \"./display_utils.js\";\nimport { unreachable, updateUrlHash, Util, warn } from \"../shared/util.js\";\n\nclass BaseFilterFactory {\n  constructor() {\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n      this.constructor === BaseFilterFactory\n    ) {\n      unreachable(\"Cannot initialize BaseFilterFactory.\");\n    }\n  }\n\n  addFilter(maps) {\n    return \"none\";\n  }\n\n  addHCMFilter(fgColor, bgColor) {\n    return \"none\";\n  }\n\n  addAlphaFilter(map) {\n    return \"none\";\n  }\n\n  addLuminosityFilter(map) {\n    return \"none\";\n  }\n\n  addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n    return \"none\";\n  }\n\n  destroy(keepHCM = false) {}\n}\n\n/**\n * FilterFactory aims to create some SVG filters we can use when drawing an\n * image (or whatever) on a canvas.\n * Filters aren't applied with ctx.putImageData because it just overwrites the\n * underlying pixels.\n * With these filters, it's possible for example to apply some transfer maps on\n * an image without the need to apply them on the pixel arrays: the renderer\n * does the magic for us.\n */\nclass DOMFilterFactory extends BaseFilterFactory {\n  #baseUrl;\n\n  #_cache;\n\n  #_defs;\n\n  #docId;\n\n  #document;\n\n  #_hcmCache;\n\n  #id = 0;\n\n  constructor({ docId, ownerDocument = globalThis.document }) {\n    super();\n    this.#docId = docId;\n    this.#document = ownerDocument;\n  }\n\n  get #cache() {\n    return (this.#_cache ||= new Map());\n  }\n\n  get #hcmCache() {\n    return (this.#_hcmCache ||= new Map());\n  }\n\n  get #defs() {\n    if (!this.#_defs) {\n      const div = this.#document.createElement(\"div\");\n      const { style } = div;\n      style.visibility = \"hidden\";\n      style.contain = \"strict\";\n      style.width = style.height = 0;\n      style.position = \"absolute\";\n      style.top = style.left = 0;\n      style.zIndex = -1;\n\n      const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n      svg.setAttribute(\"width\", 0);\n      svg.setAttribute(\"height\", 0);\n      this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n      div.append(svg);\n      svg.append(this.#_defs);\n      this.#document.body.append(div);\n    }\n    return this.#_defs;\n  }\n\n  #createTables(maps) {\n    if (maps.length === 1) {\n      const mapR = maps[0];\n      const buffer = new Array(256);\n      for (let i = 0; i < 256; i++) {\n        buffer[i] = mapR[i] / 255;\n      }\n\n      const table = buffer.join(\",\");\n      return [table, table, table];\n    }\n\n    const [mapR, mapG, mapB] = maps;\n    const bufferR = new Array(256);\n    const bufferG = new Array(256);\n    const bufferB = new Array(256);\n    for (let i = 0; i < 256; i++) {\n      bufferR[i] = mapR[i] / 255;\n      bufferG[i] = mapG[i] / 255;\n      bufferB[i] = mapB[i] / 255;\n    }\n    return [bufferR.join(\",\"), bufferG.join(\",\"), bufferB.join(\",\")];\n  }\n\n  #createUrl(id) {\n    if (this.#baseUrl === undefined) {\n      // Unless a `<base>`-element is present a relative URL should work.\n      this.#baseUrl = \"\";\n\n      const url = this.#document.URL;\n      if (url !== this.#document.baseURI) {\n        if (isDataScheme(url)) {\n          warn('#createUrl: ignore \"data:\"-URL for performance reasons.');\n        } else {\n          this.#baseUrl = updateUrlHash(url, \"\");\n        }\n      }\n    }\n    return `url(${this.#baseUrl}#${id})`;\n  }\n\n  addFilter(maps) {\n    if (!maps) {\n      return \"none\";\n    }\n\n    // When a page is zoomed the page is re-drawn but the maps are likely\n    // the same.\n    let value = this.#cache.get(maps);\n    if (value) {\n      return value;\n    }\n\n    const [tableR, tableG, tableB] = this.#createTables(maps);\n    const key = maps.length === 1 ? tableR : `${tableR}${tableG}${tableB}`;\n\n    value = this.#cache.get(key);\n    if (value) {\n      this.#cache.set(maps, value);\n      return value;\n    }\n\n    // We create a SVG filter: feComponentTransferElement\n    //  https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement\n\n    const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n    const url = this.#createUrl(id);\n    this.#cache.set(maps, url);\n    this.#cache.set(key, url);\n\n    const filter = this.#createFilter(id);\n    this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n\n    return url;\n  }\n\n  addHCMFilter(fgColor, bgColor) {\n    const key = `${fgColor}-${bgColor}`;\n    const filterName = \"base\";\n    let info = this.#hcmCache.get(filterName);\n    if (info?.key === key) {\n      return info.url;\n    }\n\n    if (info) {\n      info.filter?.remove();\n      info.key = key;\n      info.url = \"none\";\n      info.filter = null;\n    } else {\n      info = {\n        key,\n        url: \"none\",\n        filter: null,\n      };\n      this.#hcmCache.set(filterName, info);\n    }\n\n    if (!fgColor || !bgColor) {\n      return info.url;\n    }\n\n    const fgRGB = this.#getRGB(fgColor);\n    fgColor = Util.makeHexColor(...fgRGB);\n    const bgRGB = this.#getRGB(bgColor);\n    bgColor = Util.makeHexColor(...bgRGB);\n    this.#defs.style.color = \"\";\n\n    if (\n      (fgColor === \"#000000\" && bgColor === \"#ffffff\") ||\n      fgColor === bgColor\n    ) {\n      return info.url;\n    }\n\n    // https://developer.mozilla.org/en-US/docs/Web/Accessibility/Understanding_Colors_and_Luminance\n    //\n    // Relative luminance:\n    // https://www.w3.org/TR/WCAG20/#relativeluminancedef\n    //\n    // We compute the rounded luminance of the default background color.\n    // Then for every color in the pdf, if its rounded luminance is the\n    // same as the background one then it's replaced by the new\n    // background color else by the foreground one.\n    const map = new Array(256);\n    for (let i = 0; i <= 255; i++) {\n      const x = i / 255;\n      map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n    }\n    const table = map.join(\",\");\n\n    const id = `g_${this.#docId}_hcm_filter`;\n    const filter = (info.filter = this.#createFilter(id));\n    this.#addTransferMapConversion(table, table, table, filter);\n    this.#addGrayConversion(filter);\n\n    const getSteps = (c, n) => {\n      const start = fgRGB[c] / 255;\n      const end = bgRGB[c] / 255;\n      const arr = new Array(n + 1);\n      for (let i = 0; i <= n; i++) {\n        arr[i] = start + (i / n) * (end - start);\n      }\n      return arr.join(\",\");\n    };\n    this.#addTransferMapConversion(\n      getSteps(0, 5),\n      getSteps(1, 5),\n      getSteps(2, 5),\n      filter\n    );\n\n    info.url = this.#createUrl(id);\n    return info.url;\n  }\n\n  addAlphaFilter(map) {\n    // When a page is zoomed the page is re-drawn but the maps are likely\n    // the same.\n    let value = this.#cache.get(map);\n    if (value) {\n      return value;\n    }\n\n    const [tableA] = this.#createTables([map]);\n    const key = `alpha_${tableA}`;\n\n    value = this.#cache.get(key);\n    if (value) {\n      this.#cache.set(map, value);\n      return value;\n    }\n\n    const id = `g_${this.#docId}_alpha_map_${this.#id++}`;\n    const url = this.#createUrl(id);\n    this.#cache.set(map, url);\n    this.#cache.set(key, url);\n\n    const filter = this.#createFilter(id);\n    this.#addTransferMapAlphaConversion(tableA, filter);\n\n    return url;\n  }\n\n  addLuminosityFilter(map) {\n    // When a page is zoomed the page is re-drawn but the maps are likely\n    // the same.\n    let value = this.#cache.get(map || \"luminosity\");\n    if (value) {\n      return value;\n    }\n\n    let tableA, key;\n    if (map) {\n      [tableA] = this.#createTables([map]);\n      key = `luminosity_${tableA}`;\n    } else {\n      key = \"luminosity\";\n    }\n\n    value = this.#cache.get(key);\n    if (value) {\n      this.#cache.set(map, value);\n      return value;\n    }\n\n    const id = `g_${this.#docId}_luminosity_map_${this.#id++}`;\n    const url = this.#createUrl(id);\n    this.#cache.set(map, url);\n    this.#cache.set(key, url);\n\n    const filter = this.#createFilter(id);\n    this.#addLuminosityConversion(filter);\n    if (map) {\n      this.#addTransferMapAlphaConversion(tableA, filter);\n    }\n\n    return url;\n  }\n\n  addHighlightHCMFilter(filterName, fgColor, bgColor, newFgColor, newBgColor) {\n    const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n    let info = this.#hcmCache.get(filterName);\n    if (info?.key === key) {\n      return info.url;\n    }\n\n    if (info) {\n      info.filter?.remove();\n      info.key = key;\n      info.url = \"none\";\n      info.filter = null;\n    } else {\n      info = {\n        key,\n        url: \"none\",\n        filter: null,\n      };\n      this.#hcmCache.set(filterName, info);\n    }\n\n    if (!fgColor || !bgColor) {\n      return info.url;\n    }\n\n    const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n    let fgGray = Math.round(\n      0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]\n    );\n    let bgGray = Math.round(\n      0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]\n    );\n    let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(\n      this.#getRGB.bind(this)\n    );\n    if (bgGray < fgGray) {\n      [fgGray, bgGray, newFgRGB, newBgRGB] = [\n        bgGray,\n        fgGray,\n        newBgRGB,\n        newFgRGB,\n      ];\n    }\n    this.#defs.style.color = \"\";\n\n    // Now we can create the filters to highlight some canvas parts.\n    // The colors in the pdf will almost be Canvas and CanvasText, hence we\n    // want to filter them to finally get Highlight and HighlightText.\n    // Since we're in HCM the background color and the foreground color should\n    // be really different when converted to grayscale (if they're not then it\n    // means that we've a poor contrast). Once the canvas colors are converted\n    // to grayscale we can easily map them on their new colors.\n    // The grayscale step is important because if we've something like:\n    //   fgColor = #FF....\n    //   bgColor = #FF....\n    //   then we are enable to map the red component on the new red components\n    //   which can be different.\n\n    const getSteps = (fg, bg, n) => {\n      const arr = new Array(256);\n      const step = (bgGray - fgGray) / n;\n      const newStart = fg / 255;\n      const newStep = (bg - fg) / (255 * n);\n      let prev = 0;\n      for (let i = 0; i <= n; i++) {\n        const k = Math.round(fgGray + i * step);\n        const value = newStart + i * newStep;\n        for (let j = prev; j <= k; j++) {\n          arr[j] = value;\n        }\n        prev = k + 1;\n      }\n      for (let i = prev; i < 256; i++) {\n        arr[i] = arr[prev - 1];\n      }\n      return arr.join(\",\");\n    };\n\n    const id = `g_${this.#docId}_hcm_${filterName}_filter`;\n    const filter = (info.filter = this.#createFilter(id));\n\n    this.#addGrayConversion(filter);\n    this.#addTransferMapConversion(\n      getSteps(newFgRGB[0], newBgRGB[0], 5),\n      getSteps(newFgRGB[1], newBgRGB[1], 5),\n      getSteps(newFgRGB[2], newBgRGB[2], 5),\n      filter\n    );\n\n    info.url = this.#createUrl(id);\n    return info.url;\n  }\n\n  destroy(keepHCM = false) {\n    if (keepHCM && this.#_hcmCache?.size) {\n      return;\n    }\n    this.#_defs?.parentNode.parentNode.remove();\n    this.#_defs = null;\n\n    this.#_cache?.clear();\n    this.#_cache = null;\n\n    this.#_hcmCache?.clear();\n    this.#_hcmCache = null;\n\n    this.#id = 0;\n  }\n\n  #addLuminosityConversion(filter) {\n    const feColorMatrix = this.#document.createElementNS(\n      SVG_NS,\n      \"feColorMatrix\"\n    );\n    feColorMatrix.setAttribute(\"type\", \"matrix\");\n    feColorMatrix.setAttribute(\n      \"values\",\n      \"0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.3 0.59 0.11 0 0\"\n    );\n    filter.append(feColorMatrix);\n  }\n\n  #addGrayConversion(filter) {\n    const feColorMatrix = this.#document.createElementNS(\n      SVG_NS,\n      \"feColorMatrix\"\n    );\n    feColorMatrix.setAttribute(\"type\", \"matrix\");\n    feColorMatrix.setAttribute(\n      \"values\",\n      \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\"\n    );\n    filter.append(feColorMatrix);\n  }\n\n  #createFilter(id) {\n    const filter = this.#document.createElementNS(SVG_NS, \"filter\");\n    filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n    filter.setAttribute(\"id\", id);\n    this.#defs.append(filter);\n\n    return filter;\n  }\n\n  #appendFeFunc(feComponentTransfer, func, table) {\n    const feFunc = this.#document.createElementNS(SVG_NS, func);\n    feFunc.setAttribute(\"type\", \"discrete\");\n    feFunc.setAttribute(\"tableValues\", table);\n    feComponentTransfer.append(feFunc);\n  }\n\n  #addTransferMapConversion(rTable, gTable, bTable, filter) {\n    const feComponentTransfer = this.#document.createElementNS(\n      SVG_NS,\n      \"feComponentTransfer\"\n    );\n    filter.append(feComponentTransfer);\n    this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n    this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n    this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n  }\n\n  #addTransferMapAlphaConversion(aTable, filter) {\n    const feComponentTransfer = this.#document.createElementNS(\n      SVG_NS,\n      \"feComponentTransfer\"\n    );\n    filter.append(feComponentTransfer);\n    this.#appendFeFunc(feComponentTransfer, \"feFuncA\", aTable);\n  }\n\n  #getRGB(color) {\n    this.#defs.style.color = color;\n    return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n  }\n}\n\nexport { BaseFilterFactory, DOMFilterFactory };\n", "/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { fetchData } from \"./display_utils.js\";\nimport { unreachable } from \"../shared/util.js\";\n\nclass BaseStandardFontDataFactory {\n  constructor({ baseUrl = null }) {\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n      this.constructor === BaseStandardFontDataFactory\n    ) {\n      unreachable(\"Cannot initialize BaseStandardFontDataFactory.\");\n    }\n    this.baseUrl = baseUrl;\n  }\n\n  async fetch({ filename }) {\n    if (!this.baseUrl) {\n      throw new Error(\n        \"Ensure that the `standardFontDataUrl` API parameter is provided.\"\n      );\n    }\n    if (!filename) {\n      throw new Error(\"Font filename must be specified.\");\n    }\n    const url = `${this.baseUrl}${filename}`;\n\n    return this._fetch(url).catch(reason => {\n      throw new Error(`Unable to load font data at: ${url}`);\n    });\n  }\n\n  /**\n   * @ignore\n   * @returns {Promise<Uint8Array>}\n   */\n  async _fetch(url) {\n    unreachable(\"Abstract method `_fetch` called.\");\n  }\n}\n\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n  /**\n   * @ignore\n   */\n  async _fetch(url) {\n    const data = await fetchData(url, /* type = */ \"arraybuffer\");\n    return new Uint8Array(data);\n  }\n}\n\nexport { BaseStandardFontDataFactory, DOMStandardFontDataFactory };\n", "/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { fetchData } from \"./display_utils.js\";\nimport { unreachable } from \"../shared/util.js\";\n\nclass BaseWasmFactory {\n  constructor({ baseUrl = null }) {\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n      this.constructor === BaseWasmFactory\n    ) {\n      unreachable(\"Cannot initialize BaseWasmFactory.\");\n    }\n    this.baseUrl = baseUrl;\n  }\n\n  async fetch({ filename }) {\n    if (!this.baseUrl) {\n      throw new Error(\"Ensure that the `wasmUrl` API parameter is provided.\");\n    }\n    if (!filename) {\n      throw new Error(\"Wasm filename must be specified.\");\n    }\n    const url = `${this.baseUrl}${filename}`;\n\n    return this._fetch(url).catch(reason => {\n      throw new Error(`Unable to load wasm data at: ${url}`);\n    });\n  }\n\n  /**\n   * @ignore\n   * @returns {Promise<Uint8Array>}\n   */\n  async _fetch(url) {\n    unreachable(\"Abstract method `_fetch` called.\");\n  }\n}\n\nclass DOMWasmFactory extends BaseWasmFactory {\n  /**\n   * @ignore\n   */\n  async _fetch(url) {\n    const data = await fetchData(url, /* type = */ \"arraybuffer\");\n    return new Uint8Array(data);\n  }\n}\n\nexport { BaseWasmFactory, DOMWasmFactory };\n", "/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\nimport { isNodeJS, warn } from \"../shared/util.js\";\nimport { BaseCanvasFactory } from \"./canvas_factory.js\";\nimport { BaseCMapReaderFactory } from \"./cmap_reader_factory.js\";\nimport { BaseFilterFactory } from \"./filter_factory.js\";\nimport { BaseStandardFontDataFactory } from \"./standard_fontdata_factory.js\";\nimport { BaseWasmFactory } from \"./wasm_factory.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n  throw new Error(\n    'Module \"./node_utils.js\" shall not be used with MOZCENTRAL builds.'\n  );\n}\n\nif (isNodeJS) {\n  if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"SKIP_BABEL\")) {\n    warn(\"Please use the `legacy` build in Node.js environments.\");\n  } else {\n    let canvas;\n    try {\n      const require = process\n        .getBuiltinModule(\"module\")\n        .createRequire(import.meta.url);\n\n      try {\n        canvas = require(\"@napi-rs/canvas\");\n      } catch (ex) {\n        warn(`Cannot load \"@napi-rs/canvas\" package: \"${ex}\".`);\n      }\n    } catch (ex) {\n      warn(`Cannot access the \\`require\\` function: \"${ex}\".`);\n    }\n\n    if (!globalThis.DOMMatrix) {\n      if (canvas?.DOMMatrix) {\n        globalThis.DOMMatrix = canvas.DOMMatrix;\n      } else {\n        warn(\"Cannot polyfill `DOMMatrix`, rendering may be broken.\");\n      }\n    }\n    if (!globalThis.ImageData) {\n      if (canvas?.ImageData) {\n        globalThis.ImageData = canvas.ImageData;\n      } else {\n        warn(\"Cannot polyfill `ImageData`, rendering may be broken.\");\n      }\n    }\n    if (!globalThis.Path2D) {\n      if (canvas?.Path2D) {\n        globalThis.Path2D = canvas.Path2D;\n      } else {\n        warn(\"Cannot polyfill `Path2D`, rendering may be broken.\");\n      }\n    }\n    if (!globalThis.navigator?.language) {\n      globalThis.navigator = {\n        language: \"en-US\",\n        platform: \"\",\n        userAgent: \"\",\n      };\n    }\n  }\n}\n\nasync function fetchData(url) {\n  const fs = process.getBuiltinModule(\"fs\");\n  const data = await fs.promises.readFile(url);\n  return new Uint8Array(data);\n}\n\nclass NodeFilterFactory extends BaseFilterFactory {}\n\nclass NodeCanvasFactory extends BaseCanvasFactory {\n  /**\n   * @ignore\n   */\n  _createCanvas(width, height) {\n    const require = process\n      .getBuiltinModule(\"module\")\n      .createRequire(import.meta.url);\n    const canvas = require(\"@napi-rs/canvas\");\n    return canvas.createCanvas(width, height);\n  }\n}\n\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\n  /**\n   * @ignore\n   */\n  async _fetch(url) {\n    return fetchData(url);\n  }\n}\n\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n  /**\n   * @ignore\n   */\n  async _fetch(url) {\n    return fetchData(url);\n  }\n}\n\nclass NodeWasmFactory extends BaseWasmFactory {\n  /**\n   * @ignore\n   */\n  async _fetch(url) {\n    return fetchData(url);\n  }\n}\n\nexport {\n  fetchData,\n  NodeCanvasFactory,\n  NodeCMapReaderFactory,\n  NodeFilterFactory,\n  NodeStandardFontDataFactory,\n  NodeWasmFactory,\n};\n", "import { Util } from \"../shared/util.js\";\n\nconst FORCED_DEPENDENCY_LABEL = \"__forcedDependency\";\n\nconst { floor, ceil } = Math;\n\nfunction expandBBox(array, index, minX, minY, maxX, maxY) {\n  array[index * 4 + 0] = Math.min(array[index * 4 + 0], minX);\n  array[index * 4 + 1] = Math.min(array[index * 4 + 1], minY);\n  array[index * 4 + 2] = Math.max(array[index * 4 + 2], maxX);\n  array[index * 4 + 3] = Math.max(array[index * 4 + 3], maxY);\n}\n\n// This is computed rathter than hard-coded to keep into\n// account the platform's endianess.\nconst EMPTY_BBOX = new Uint32Array(new Uint8Array([255, 255, 0, 0]).buffer)[0];\n\nclass BBoxReader {\n  #bboxes;\n\n  #coords;\n\n  constructor(bboxes, coords) {\n    this.#bboxes = bboxes;\n    this.#coords = coords;\n  }\n\n  get length() {\n    return this.#bboxes.length;\n  }\n\n  isEmpty(i) {\n    return this.#bboxes[i] === EMPTY_BBOX;\n  }\n\n  minX(i) {\n    return this.#coords[i * 4 + 0] / 256;\n  }\n\n  minY(i) {\n    return this.#coords[i * 4 + 1] / 256;\n  }\n\n  maxX(i) {\n    return (this.#coords[i * 4 + 2] + 1) / 256;\n  }\n\n  maxY(i) {\n    return (this.#coords[i * 4 + 3] + 1) / 256;\n  }\n}\n\nconst ensureDebugMetadata = (map, key) => {\n  if (!map) {\n    return undefined;\n  }\n  let value = map.get(key);\n  if (!value) {\n    value = { dependencies: new Set(), isRenderingOperation: false };\n    map.set(key, value);\n  }\n  return value;\n};\n\n/**\n * @typedef {\"lineWidth\" | \"lineCap\" | \"lineJoin\" | \"miterLimit\" | \"dash\" |\n * \"strokeAlpha\" | \"fillColor\" | \"fillAlpha\" | \"globalCompositeOperation\" |\n * \"path\" | \"filter\" | \"font\" | \"fontObj\"} SimpleDependency\n */\n\n/**\n * @typedef {\"transform\" | \"moveText\" | \"sameLineText\"} IncrementalDependency\n */\n\n/**\n * @typedef {IncrementalDependency |\n * typeof FORCED_DEPENDENCY_LABEL} InternalIncrementalDependency\n */\nclass CanvasDependencyTracker {\n  /** @type {Record<SimpleDependency, number>} */\n  #simple = { __proto__: null };\n\n  /** @type {Record<InternalIncrementalDependency , number[]>} */\n  #incremental = {\n    __proto__: null,\n    transform: [],\n    moveText: [],\n    sameLineText: [],\n    [FORCED_DEPENDENCY_LABEL]: [],\n  };\n\n  #namedDependencies = new Map();\n\n  #savesStack = [];\n\n  #markedContentStack = [];\n\n  #baseTransformStack = [[1, 0, 0, 1, 0, 0]];\n\n  #clipBox = [-Infinity, -Infinity, Infinity, Infinity];\n\n  // Float32Array<minX, minY, maxX, maxY>\n  #pendingBBox = new Float64Array([Infinity, Infinity, -Infinity, -Infinity]);\n\n  #pendingBBoxIdx = -1;\n\n  #pendingDependencies = new Set();\n\n  #operations = new Map();\n\n  #fontBBoxTrustworthy = new Map();\n\n  #canvasWidth;\n\n  #canvasHeight;\n\n  // Uint8ClampedArray<minX, minY, maxX, maxY>\n  #bboxesCoords;\n\n  #bboxes;\n\n  #debugMetadata;\n\n  constructor(canvas, operationsCount, recordDebugMetadata = false) {\n    this.#canvasWidth = canvas.width;\n    this.#canvasHeight = canvas.height;\n    this.#initializeBBoxes(operationsCount);\n    if (recordDebugMetadata) {\n      this.#debugMetadata = new Map();\n    }\n  }\n\n  growOperationsCount(operationsCount) {\n    if (operationsCount >= this.#bboxes.length) {\n      this.#initializeBBoxes(operationsCount, this.#bboxes);\n    }\n  }\n\n  #initializeBBoxes(operationsCount, oldBBoxes) {\n    const buffer = new ArrayBuffer(operationsCount * 4);\n    this.#bboxesCoords = new Uint8ClampedArray(buffer);\n    this.#bboxes = new Uint32Array(buffer);\n    if (oldBBoxes && oldBBoxes.length > 0) {\n      this.#bboxes.set(oldBBoxes);\n      this.#bboxes.fill(EMPTY_BBOX, oldBBoxes.length);\n    } else {\n      this.#bboxes.fill(EMPTY_BBOX);\n    }\n  }\n\n  save(opIdx) {\n    this.#simple = { __proto__: this.#simple };\n    this.#incremental = {\n      __proto__: this.#incremental,\n      transform: { __proto__: this.#incremental.transform },\n      moveText: { __proto__: this.#incremental.moveText },\n      sameLineText: { __proto__: this.#incremental.sameLineText },\n      [FORCED_DEPENDENCY_LABEL]: {\n        __proto__: this.#incremental[FORCED_DEPENDENCY_LABEL],\n      },\n    };\n    this.#clipBox = { __proto__: this.#clipBox };\n    this.#savesStack.push(opIdx);\n\n    return this;\n  }\n\n  restore(opIdx) {\n    const previous = Object.getPrototypeOf(this.#simple);\n    if (previous === null) {\n      // Sometimes we call more .restore() than .save(), for\n      // example when using CanvasGraphics' #restoreInitialState()\n      return this;\n    }\n    this.#simple = previous;\n    this.#incremental = Object.getPrototypeOf(this.#incremental);\n    this.#clipBox = Object.getPrototypeOf(this.#clipBox);\n\n    const lastSave = this.#savesStack.pop();\n    if (lastSave !== undefined) {\n      ensureDebugMetadata(this.#debugMetadata, opIdx)?.dependencies.add(\n        lastSave\n      );\n      this.#bboxes[opIdx] = this.#bboxes[lastSave];\n    }\n\n    return this;\n  }\n\n  /**\n   * @param {number} idx\n   */\n  recordOpenMarker(idx) {\n    this.#savesStack.push(idx);\n    return this;\n  }\n\n  getOpenMarker() {\n    if (this.#savesStack.length === 0) {\n      return null;\n    }\n    return this.#savesStack.at(-1);\n  }\n\n  recordCloseMarker(opIdx) {\n    const lastSave = this.#savesStack.pop();\n    if (lastSave !== undefined) {\n      ensureDebugMetadata(this.#debugMetadata, opIdx)?.dependencies.add(\n        lastSave\n      );\n      this.#bboxes[opIdx] = this.#bboxes[lastSave];\n    }\n    return this;\n  }\n\n  // Marked content needs a separate stack from save/restore, because they\n  // form two independent trees.\n  beginMarkedContent(opIdx) {\n    this.#markedContentStack.push(opIdx);\n    return this;\n  }\n\n  endMarkedContent(opIdx) {\n    const lastSave = this.#markedContentStack.pop();\n    if (lastSave !== undefined) {\n      ensureDebugMetadata(this.#debugMetadata, opIdx)?.dependencies.add(\n        lastSave\n      );\n      this.#bboxes[opIdx] = this.#bboxes[lastSave];\n    }\n    return this;\n  }\n\n  pushBaseTransform(ctx) {\n    this.#baseTransformStack.push(\n      Util.multiplyByDOMMatrix(\n        this.#baseTransformStack.at(-1),\n        ctx.getTransform()\n      )\n    );\n    return this;\n  }\n\n  popBaseTransform() {\n    if (this.#baseTransformStack.length > 1) {\n      this.#baseTransformStack.pop();\n    }\n    return this;\n  }\n\n  /**\n   * @param {SimpleDependency} name\n   * @param {number} idx\n   */\n  recordSimpleData(name, idx) {\n    this.#simple[name] = idx;\n    return this;\n  }\n\n  /**\n   * @param {IncrementalDependency} name\n   * @param {number} idx\n   */\n  recordIncrementalData(name, idx) {\n    this.#incremental[name].push(idx);\n    return this;\n  }\n\n  /**\n   * @param {IncrementalDependency} name\n   * @param {number} idx\n   */\n  resetIncrementalData(name, idx) {\n    this.#incremental[name].length = 0;\n    return this;\n  }\n\n  recordNamedData(name, idx) {\n    this.#namedDependencies.set(name, idx);\n    return this;\n  }\n\n  /**\n   * @param {SimpleDependency} name\n   * @param {string} depName\n   * @param {number} fallbackIdx\n   */\n  recordSimpleDataFromNamed(name, depName, fallbackIdx) {\n    this.#simple[name] = this.#namedDependencies.get(depName) ?? fallbackIdx;\n  }\n\n  // All next operations, until the next .restore(), will depend on this\n  recordFutureForcedDependency(name, idx) {\n    this.recordIncrementalData(FORCED_DEPENDENCY_LABEL, idx);\n    return this;\n  }\n\n  // All next operations, until the next .restore(), will depend on all\n  // the already recorded data with the given names.\n  inheritSimpleDataAsFutureForcedDependencies(names) {\n    for (const name of names) {\n      if (name in this.#simple) {\n        this.recordFutureForcedDependency(name, this.#simple[name]);\n      }\n    }\n    return this;\n  }\n\n  inheritPendingDependenciesAsFutureForcedDependencies() {\n    for (const dep of this.#pendingDependencies) {\n      this.recordFutureForcedDependency(FORCED_DEPENDENCY_LABEL, dep);\n    }\n    return this;\n  }\n\n  resetBBox(idx) {\n    if (this.#pendingBBoxIdx !== idx) {\n      this.#pendingBBoxIdx = idx;\n      this.#pendingBBox[0] = Infinity;\n      this.#pendingBBox[1] = Infinity;\n      this.#pendingBBox[2] = -Infinity;\n      this.#pendingBBox[3] = -Infinity;\n    }\n    return this;\n  }\n\n  recordClipBox(idx, ctx, minX, maxX, minY, maxY) {\n    const transform = Util.multiplyByDOMMatrix(\n      this.#baseTransformStack.at(-1),\n      ctx.getTransform()\n    );\n    const clipBox = [Infinity, Infinity, -Infinity, -Infinity];\n    Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, clipBox);\n    const intersection = Util.intersect(this.#clipBox, clipBox);\n    if (intersection) {\n      this.#clipBox[0] = intersection[0];\n      this.#clipBox[1] = intersection[1];\n      this.#clipBox[2] = intersection[2];\n      this.#clipBox[3] = intersection[3];\n    } else {\n      this.#clipBox[0] = this.#clipBox[1] = Infinity;\n      this.#clipBox[2] = this.#clipBox[3] = -Infinity;\n    }\n    return this;\n  }\n\n  recordBBox(idx, ctx, minX, maxX, minY, maxY) {\n    const clipBox = this.#clipBox;\n    if (clipBox[0] === Infinity) {\n      return this;\n    }\n\n    const transform = Util.multiplyByDOMMatrix(\n      this.#baseTransformStack.at(-1),\n      ctx.getTransform()\n    );\n    if (clipBox[0] === -Infinity) {\n      Util.axialAlignedBoundingBox(\n        [minX, minY, maxX, maxY],\n        transform,\n        this.#pendingBBox\n      );\n      return this;\n    }\n\n    const bbox = [Infinity, Infinity, -Infinity, -Infinity];\n    Util.axialAlignedBoundingBox([minX, minY, maxX, maxY], transform, bbox);\n    this.#pendingBBox[0] = Math.min(\n      this.#pendingBBox[0],\n      Math.max(bbox[0], clipBox[0])\n    );\n    this.#pendingBBox[1] = Math.min(\n      this.#pendingBBox[1],\n      Math.max(bbox[1], clipBox[1])\n    );\n    this.#pendingBBox[2] = Math.max(\n      this.#pendingBBox[2],\n      Math.min(bbox[2], clipBox[2])\n    );\n    this.#pendingBBox[3] = Math.max(\n      this.#pendingBBox[3],\n      Math.min(bbox[3], clipBox[3])\n    );\n    return this;\n  }\n\n  recordCharacterBBox(idx, ctx, font, scale = 1, x = 0, y = 0, getMeasure) {\n    const fontBBox = font.bbox;\n    let isBBoxTrustworthy;\n    let computedBBox;\n\n    if (fontBBox) {\n      isBBoxTrustworthy =\n        // Only use the bounding box defined by the font if it\n        // has a non-empty area.\n        fontBBox[2] !== fontBBox[0] &&\n        fontBBox[3] !== fontBBox[1] &&\n        this.#fontBBoxTrustworthy.get(font);\n\n      if (isBBoxTrustworthy !== false) {\n        computedBBox = [0, 0, 0, 0];\n        Util.axialAlignedBoundingBox(fontBBox, font.fontMatrix, computedBBox);\n        if (scale !== 1 || x !== 0 || y !== 0) {\n          Util.scaleMinMax([scale, 0, 0, -scale, x, y], computedBBox);\n        }\n\n        if (isBBoxTrustworthy) {\n          return this.recordBBox(\n            idx,\n            ctx,\n            computedBBox[0],\n            computedBBox[2],\n            computedBBox[1],\n            computedBBox[3]\n          );\n        }\n      }\n    }\n\n    if (!getMeasure) {\n      // We have no way of telling how big this character actually is, record\n      // a full page bounding box.\n      return this.recordFullPageBBox(idx);\n    }\n\n    const measure = getMeasure();\n\n    if (fontBBox && computedBBox && isBBoxTrustworthy === undefined) {\n      // If it's the first time we can compare the font bbox with the actual\n      // bbox measured when drawing it, check if the one recorded in the font\n      // is large enough to cover the actual bbox. If it is, we assume that the\n      // font is well-formed and we can use the declared bbox without having to\n      // measure it again for every character.\n      isBBoxTrustworthy =\n        computedBBox[0] <= x - measure.actualBoundingBoxLeft &&\n        computedBBox[2] >= x + measure.actualBoundingBoxRight &&\n        computedBBox[1] <= y - measure.actualBoundingBoxAscent &&\n        computedBBox[3] >= y + measure.actualBoundingBoxDescent;\n      this.#fontBBoxTrustworthy.set(font, isBBoxTrustworthy);\n      if (isBBoxTrustworthy) {\n        return this.recordBBox(\n          idx,\n          ctx,\n          computedBBox[0],\n          computedBBox[2],\n          computedBBox[1],\n          computedBBox[3]\n        );\n      }\n    }\n\n    // The font has no bbox or it is not trustworthy, so we need to\n    // return the bounding box based on .measureText().\n    return this.recordBBox(\n      idx,\n      ctx,\n      x - measure.actualBoundingBoxLeft,\n      x + measure.actualBoundingBoxRight,\n      y - measure.actualBoundingBoxAscent,\n      y + measure.actualBoundingBoxDescent\n    );\n  }\n\n  recordFullPageBBox(idx) {\n    this.#pendingBBox[0] = Math.max(0, this.#clipBox[0]);\n    this.#pendingBBox[1] = Math.max(0, this.#clipBox[1]);\n    this.#pendingBBox[2] = Math.min(this.#canvasWidth, this.#clipBox[2]);\n    this.#pendingBBox[3] = Math.min(this.#canvasHeight, this.#clipBox[3]);\n\n    return this;\n  }\n\n  getSimpleIndex(dependencyName) {\n    return this.#simple[dependencyName];\n  }\n\n  recordDependencies(idx, dependencyNames) {\n    const pendingDependencies = this.#pendingDependencies;\n    const simple = this.#simple;\n    const incremental = this.#incremental;\n    for (const name of dependencyNames) {\n      if (name in this.#simple) {\n        pendingDependencies.add(simple[name]);\n      } else if (name in incremental) {\n        incremental[name].forEach(pendingDependencies.add, pendingDependencies);\n      }\n    }\n\n    return this;\n  }\n\n  recordNamedDependency(idx, name) {\n    if (this.#namedDependencies.has(name)) {\n      this.#pendingDependencies.add(this.#namedDependencies.get(name));\n    }\n\n    return this;\n  }\n\n  /**\n   * @param {number} idx\n   */\n  recordOperation(idx, preserve = false) {\n    this.recordDependencies(idx, [FORCED_DEPENDENCY_LABEL]);\n\n    if (this.#debugMetadata) {\n      const metadata = ensureDebugMetadata(this.#debugMetadata, idx);\n      const { dependencies } = metadata;\n      this.#pendingDependencies.forEach(dependencies.add, dependencies);\n      this.#savesStack.forEach(dependencies.add, dependencies);\n      this.#markedContentStack.forEach(dependencies.add, dependencies);\n      dependencies.delete(idx);\n      metadata.isRenderingOperation = true;\n    }\n\n    if (this.#pendingBBoxIdx === idx) {\n      const minX = floor((this.#pendingBBox[0] * 256) / this.#canvasWidth);\n      const minY = floor((this.#pendingBBox[1] * 256) / this.#canvasHeight);\n      const maxX = ceil((this.#pendingBBox[2] * 256) / this.#canvasWidth);\n      const maxY = ceil((this.#pendingBBox[3] * 256) / this.#canvasHeight);\n\n      expandBBox(this.#bboxesCoords, idx, minX, minY, maxX, maxY);\n      for (const depIdx of this.#pendingDependencies) {\n        if (depIdx !== idx) {\n          expandBBox(this.#bboxesCoords, depIdx, minX, minY, maxX, maxY);\n        }\n      }\n      for (const saveIdx of this.#savesStack) {\n        if (saveIdx !== idx) {\n          expandBBox(this.#bboxesCoords, saveIdx, minX, minY, maxX, maxY);\n        }\n      }\n      for (const saveIdx of this.#markedContentStack) {\n        if (saveIdx !== idx) {\n          expandBBox(this.#bboxesCoords, saveIdx, minX, minY, maxX, maxY);\n        }\n      }\n\n      if (!preserve) {\n        this.#pendingDependencies.clear();\n        this.#pendingBBoxIdx = -1;\n      }\n    }\n\n    return this;\n  }\n\n  recordShowTextOperation(idx, preserve = false) {\n    const deps = Array.from(this.#pendingDependencies);\n    this.recordOperation(idx, preserve);\n    this.recordIncrementalData(\"sameLineText\", idx);\n    for (const dep of deps) {\n      this.recordIncrementalData(\"sameLineText\", dep);\n    }\n    return this;\n  }\n\n  bboxToClipBoxDropOperation(idx, preserve = false) {\n    if (this.#pendingBBoxIdx === idx) {\n      this.#pendingBBoxIdx = -1;\n\n      this.#clipBox[0] = Math.max(this.#clipBox[0], this.#pendingBBox[0]);\n      this.#clipBox[1] = Math.max(this.#clipBox[1], this.#pendingBBox[1]);\n      this.#clipBox[2] = Math.min(this.#clipBox[2], this.#pendingBBox[2]);\n      this.#clipBox[3] = Math.min(this.#clipBox[3], this.#pendingBBox[3]);\n\n      if (!preserve) {\n        this.#pendingDependencies.clear();\n      }\n    }\n    return this;\n  }\n\n  _takePendingDependencies() {\n    const pendingDependencies = this.#pendingDependencies;\n    this.#pendingDependencies = new Set();\n    return pendingDependencies;\n  }\n\n  _extractOperation(idx) {\n    const operation = this.#operations.get(idx);\n    this.#operations.delete(idx);\n    return operation;\n  }\n\n  _pushPendingDependencies(dependencies) {\n    for (const dep of dependencies) {\n      this.#pendingDependencies.add(dep);\n    }\n  }\n\n  take() {\n    this.#fontBBoxTrustworthy.clear();\n    return new BBoxReader(this.#bboxes, this.#bboxesCoords);\n  }\n\n  takeDebugMetadata() {\n    return this.#debugMetadata;\n  }\n}\n\n/**\n * Used to track dependencies of nested operations list, that\n * should actually all map to the index of the operation that\n * contains the nested list.\n *\n * @implements {CanvasDependencyTracker}\n */\nclass CanvasNestedDependencyTracker {\n  /** @type {CanvasDependencyTracker} */\n  #dependencyTracker;\n\n  /** @type {number} */\n  #opIdx;\n\n  #ignoreBBoxes;\n\n  #nestingLevel = 0;\n\n  #savesLevel = 0;\n\n  constructor(dependencyTracker, opIdx, ignoreBBoxes) {\n    if (\n      dependencyTracker instanceof CanvasNestedDependencyTracker &&\n      dependencyTracker.#ignoreBBoxes === !!ignoreBBoxes\n    ) {\n      // The goal of CanvasNestedDependencyTracker is to collapse all operations\n      // into a single one. If we are already in a\n      // CanvasNestedDependencyTracker, that is already happening.\n      return dependencyTracker;\n    }\n\n    this.#dependencyTracker = dependencyTracker;\n    this.#opIdx = opIdx;\n    this.#ignoreBBoxes = !!ignoreBBoxes;\n  }\n\n  growOperationsCount() {\n    throw new Error(\"Unreachable\");\n  }\n\n  save(opIdx) {\n    this.#savesLevel++;\n    this.#dependencyTracker.save(this.#opIdx);\n    return this;\n  }\n\n  restore(opIdx) {\n    if (this.#savesLevel > 0) {\n      this.#dependencyTracker.restore(this.#opIdx);\n      this.#savesLevel--;\n    }\n    return this;\n  }\n\n  recordOpenMarker(idx) {\n    this.#nestingLevel++;\n    return this;\n  }\n\n  getOpenMarker() {\n    return this.#nestingLevel > 0\n      ? this.#opIdx\n      : this.#dependencyTracker.getOpenMarker();\n  }\n\n  recordCloseMarker(idx) {\n    this.#nestingLevel--;\n    return this;\n  }\n\n  beginMarkedContent(opIdx) {\n    return this;\n  }\n\n  endMarkedContent(opIdx) {\n    return this;\n  }\n\n  pushBaseTransform(ctx) {\n    this.#dependencyTracker.pushBaseTransform(ctx);\n    return this;\n  }\n\n  popBaseTransform() {\n    this.#dependencyTracker.popBaseTransform();\n    return this;\n  }\n\n  /**\n   * @param {SimpleDependency} name\n   * @param {number} idx\n   */\n  recordSimpleData(name, idx) {\n    this.#dependencyTracker.recordSimpleData(name, this.#opIdx);\n    return this;\n  }\n\n  /**\n   * @param {IncrementalDependency} name\n   * @param {number} idx\n   */\n  recordIncrementalData(name, idx) {\n    this.#dependencyTracker.recordIncrementalData(name, this.#opIdx);\n    return this;\n  }\n\n  /**\n   * @param {IncrementalDependency} name\n   * @param {number} idx\n   */\n  resetIncrementalData(name, idx) {\n    this.#dependencyTracker.resetIncrementalData(name, this.#opIdx);\n    return this;\n  }\n\n  recordNamedData(name, idx) {\n    // Nested dependencies are not visible to the outside.\n    return this;\n  }\n\n  /**\n   * @param {SimpleDependency} name\n   * @param {string} depName\n   * @param {number} fallbackIdx\n   */\n  recordSimpleDataFromNamed(name, depName, fallbackIdx) {\n    this.#dependencyTracker.recordSimpleDataFromNamed(\n      name,\n      depName,\n      this.#opIdx\n    );\n    return this;\n  }\n\n  // All next operations, until the next .restore(), will depend on this\n  recordFutureForcedDependency(name, idx) {\n    this.#dependencyTracker.recordFutureForcedDependency(name, this.#opIdx);\n    return this;\n  }\n\n  // All next operations, until the next .restore(), will depend on all\n  // the already recorded data with the given names.\n  inheritSimpleDataAsFutureForcedDependencies(names) {\n    this.#dependencyTracker.inheritSimpleDataAsFutureForcedDependencies(names);\n    return this;\n  }\n\n  inheritPendingDependenciesAsFutureForcedDependencies() {\n    this.#dependencyTracker.inheritPendingDependenciesAsFutureForcedDependencies();\n    return this;\n  }\n\n  resetBBox(idx) {\n    if (!this.#ignoreBBoxes) {\n      this.#dependencyTracker.resetBBox(this.#opIdx);\n    }\n    return this;\n  }\n\n  recordClipBox(idx, ctx, minX, maxX, minY, maxY) {\n    if (!this.#ignoreBBoxes) {\n      this.#dependencyTracker.recordClipBox(\n        this.#opIdx,\n        ctx,\n        minX,\n        maxX,\n        minY,\n        maxY\n      );\n    }\n    return this;\n  }\n\n  recordBBox(idx, ctx, minX, maxX, minY, maxY) {\n    if (!this.#ignoreBBoxes) {\n      this.#dependencyTracker.recordBBox(\n        this.#opIdx,\n        ctx,\n        minX,\n        maxX,\n        minY,\n        maxY\n      );\n    }\n    return this;\n  }\n\n  recordCharacterBBox(idx, ctx, font, scale, x, y, getMeasure) {\n    if (!this.#ignoreBBoxes) {\n      this.#dependencyTracker.recordCharacterBBox(\n        this.#opIdx,\n        ctx,\n        font,\n        scale,\n        x,\n        y,\n        getMeasure\n      );\n    }\n    return this;\n  }\n\n  recordFullPageBBox(idx) {\n    if (!this.#ignoreBBoxes) {\n      this.#dependencyTracker.recordFullPageBBox(this.#opIdx);\n    }\n    return this;\n  }\n\n  getSimpleIndex(dependencyName) {\n    return this.#dependencyTracker.getSimpleIndex(dependencyName);\n  }\n\n  recordDependencies(idx, dependencyNames) {\n    this.#dependencyTracker.recordDependencies(this.#opIdx, dependencyNames);\n    return this;\n  }\n\n  recordNamedDependency(idx, name) {\n    this.#dependencyTracker.recordNamedDependency(this.#opIdx, name);\n    return this;\n  }\n\n  /**\n   * @param {number} idx\n   * @param {SimpleDependency[]} dependencyNames\n   */\n  recordOperation(idx) {\n    this.#dependencyTracker.recordOperation(this.#opIdx, true);\n    return this;\n  }\n\n  recordShowTextOperation(idx) {\n    this.#dependencyTracker.recordShowTextOperation(this.#opIdx, true);\n    return this;\n  }\n\n  bboxToClipBoxDropOperation(idx) {\n    if (!this.#ignoreBBoxes) {\n      this.#dependencyTracker.bboxToClipBoxDropOperation(this.#opIdx, true);\n    }\n    return this;\n  }\n\n  take() {\n    throw new Error(\"Unreachable\");\n  }\n\n  takeDebugMetadata() {\n    throw new Error(\"Unreachable\");\n  }\n}\n\n/** @satisfies {Record<string, SimpleDependency | IncrementalDependency>} */\nconst Dependencies = {\n  stroke: [\n    \"path\",\n    \"transform\",\n    \"filter\",\n    \"strokeColor\",\n    \"strokeAlpha\",\n    \"lineWidth\",\n    \"lineCap\",\n    \"lineJoin\",\n    \"miterLimit\",\n    \"dash\",\n  ],\n  fill: [\n    \"path\",\n    \"transform\",\n    \"filter\",\n    \"fillColor\",\n    \"fillAlpha\",\n    \"globalCompositeOperation\",\n    \"SMask\",\n  ],\n  imageXObject: [\n    \"transform\",\n    \"SMask\",\n    \"filter\",\n    \"fillAlpha\",\n    \"strokeAlpha\",\n    \"globalCompositeOperation\",\n  ],\n  rawFillPath: [\"filter\", \"fillColor\", \"fillAlpha\"],\n  showText: [\n    \"transform\",\n    \"leading\",\n    \"charSpacing\",\n    \"wordSpacing\",\n    \"hScale\",\n    \"textRise\",\n    \"moveText\",\n    \"textMatrix\",\n    \"font\",\n    \"fontObj\",\n    \"filter\",\n    \"fillColor\",\n    \"textRenderingMode\",\n    \"SMask\",\n    \"fillAlpha\",\n    \"strokeAlpha\",\n    \"globalCompositeOperation\",\n\n    \"sameLineText\",\n  ],\n  transform: [\"transform\"],\n  transformAndFill: [\"transform\", \"fillColor\"],\n};\n\nexport { CanvasDependencyTracker, CanvasNestedDependencyTracker, Dependencies };\n", "/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormatError, info, unreachable, Util } from \"../shared/util.js\";\nimport { getCurrentTransform } from \"./display_utils.js\";\n\nconst PathType = {\n  FILL: \"Fill\",\n  STROKE: \"Stroke\",\n  SHADING: \"Shading\",\n};\n\nfunction applyBoundingBox(ctx, bbox) {\n  if (!bbox) {\n    return;\n  }\n  const width = bbox[2] - bbox[0];\n  const height = bbox[3] - bbox[1];\n  const region = new Path2D();\n  region.rect(bbox[0], bbox[1], width, height);\n  ctx.clip(region);\n}\n\nclass BaseShadingPattern {\n  constructor() {\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n      this.constructor === BaseShadingPattern\n    ) {\n      unreachable(\"Cannot initialize BaseShadingPattern.\");\n    }\n  }\n\n  isModifyingCurrentTransform() {\n    return false;\n  }\n\n  getPattern() {\n    unreachable(\"Abstract method `getPattern` called.\");\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    if (this._type === \"axial\") {\n      grad = ctx.createLinearGradient(\n        this._p0[0],\n        this._p0[1],\n        this._p1[0],\n        this._p1[1]\n      );\n    } else if (this._type === \"radial\") {\n      grad = ctx.createRadialGradient(\n        this._p0[0],\n        this._p0[1],\n        this._r0,\n        this._p1[0],\n        this._p1[1],\n        this._r1\n      );\n    }\n\n    for (const colorStop of this._colorStops) {\n      grad.addColorStop(colorStop[0], colorStop[1]);\n    }\n    return grad;\n  }\n\n  getPattern(ctx, owner, inverse, pathType) {\n    let pattern;\n    if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n      const ownerBBox = owner.current.getClippedPathBoundingBox(\n        pathType,\n        getCurrentTransform(ctx)\n      ) || [0, 0, 0, 0];\n      // Create a canvas that is only as big as the current path. This doesn't\n      // allow us to cache the pattern, but it generally creates much smaller\n      // canvases and saves memory use. See bug 1722807 for an example.\n      const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n      const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n\n      const tmpCanvas = owner.cachedCanvases.getCanvas(\n        \"pattern\",\n        width,\n        height\n      );\n\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      // Non shading fill patterns are positioned relative to the base transform\n      // (usually the page's initial transform), but we may have created a\n      // smaller canvas based on the path, so we must account for the shift.\n      tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n      inverse = Util.transform(inverse, [\n        1,\n        0,\n        0,\n        1,\n        ownerBBox[0],\n        ownerBBox[1],\n      ]);\n\n      tmpCtx.transform(...owner.baseTransform);\n      if (this.matrix) {\n        tmpCtx.transform(...this.matrix);\n      }\n      applyBoundingBox(tmpCtx, this._bbox);\n\n      tmpCtx.fillStyle = this._createGradient(tmpCtx);\n      tmpCtx.fill();\n\n      pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n      const domMatrix = new DOMMatrix(inverse);\n      pattern.setTransform(domMatrix);\n    } else {\n      // Shading fills are applied relative to the current matrix which is also\n      // how canvas gradients work, so there's no need to do anything special\n      // here.\n      applyBoundingBox(ctx, this._bbox);\n      pattern = this._createGradient(ctx);\n    }\n    return pattern;\n  }\n}\n\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n  // Very basic Gouraud-shaded triangle rasterization algorithm.\n  const coords = context.coords,\n    colors = context.colors;\n  const bytes = data.data,\n    rowSize = data.width * 4;\n  let tmp;\n  if (coords[p1 + 1] > coords[p2 + 1]) {\n    tmp = p1;\n    p1 = p2;\n    p2 = tmp;\n    tmp = c1;\n    c1 = c2;\n    c2 = tmp;\n  }\n  if (coords[p2 + 1] > coords[p3 + 1]) {\n    tmp = p2;\n    p2 = p3;\n    p3 = tmp;\n    tmp = c2;\n    c2 = c3;\n    c3 = tmp;\n  }\n  if (coords[p1 + 1] > coords[p2 + 1]) {\n    tmp = p1;\n    p1 = p2;\n    p2 = tmp;\n    tmp = c1;\n    c1 = c2;\n    c2 = tmp;\n  }\n  const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n  const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n  const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n  const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n  const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n  const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n  if (y1 >= y3) {\n    return;\n  }\n  const c1r = colors[c1],\n    c1g = colors[c1 + 1],\n    c1b = colors[c1 + 2];\n  const c2r = colors[c2],\n    c2g = colors[c2 + 1],\n    c2b = colors[c2 + 2];\n  const c3r = colors[c3],\n    c3g = colors[c3 + 1],\n    c3b = colors[c3 + 2];\n\n  const minY = Math.round(y1),\n    maxY = Math.round(y3);\n  let xa, car, cag, cab;\n  let xb, cbr, cbg, cbb;\n  for (let y = minY; y <= maxY; y++) {\n    if (y < y2) {\n      const k = y < y1 ? 0 : (y1 - y) / (y1 - y2);\n      xa = x1 - (x1 - x2) * k;\n      car = c1r - (c1r - c2r) * k;\n      cag = c1g - (c1g - c2g) * k;\n      cab = c1b - (c1b - c2b) * k;\n    } else {\n      let k;\n      if (y > y3) {\n        k = 1;\n      } else if (y2 === y3) {\n        k = 0;\n      } else {\n        k = (y2 - y) / (y2 - y3);\n      }\n      xa = x2 - (x2 - x3) * k;\n      car = c2r - (c2r - c3r) * k;\n      cag = c2g - (c2g - c3g) * k;\n      cab = c2b - (c2b - c3b) * k;\n    }\n\n    let k;\n    if (y < y1) {\n      k = 0;\n    } else if (y > y3) {\n      k = 1;\n    } else {\n      k = (y1 - y) / (y1 - y3);\n    }\n    xb = x1 - (x1 - x3) * k;\n    cbr = c1r - (c1r - c3r) * k;\n    cbg = c1g - (c1g - c3g) * k;\n    cbb = c1b - (c1b - c3b) * k;\n    const x1_ = Math.round(Math.min(xa, xb));\n    const x2_ = Math.round(Math.max(xa, xb));\n    let j = rowSize * y + x1_ * 4;\n    for (let x = x1_; x <= x2_; x++) {\n      k = (xa - x) / (xa - xb);\n      if (k < 0) {\n        k = 0;\n      } else if (k > 1) {\n        k = 1;\n      }\n      bytes[j++] = (car - (car - cbr) * k) | 0;\n      bytes[j++] = (cag - (cag - cbg) * k) | 0;\n      bytes[j++] = (cab - (cab - cbb) * k) | 0;\n      bytes[j++] = 255;\n    }\n  }\n}\n\nfunction drawFigure(data, figure, context) {\n  const ps = figure.coords;\n  const cs = figure.colors;\n  let i, ii;\n  switch (figure.type) {\n    case \"lattice\":\n      const verticesPerRow = figure.verticesPerRow;\n      const rows = Math.floor(ps.length / verticesPerRow) - 1;\n      const cols = verticesPerRow - 1;\n      for (i = 0; i < rows; i++) {\n        let q = i * verticesPerRow;\n        for (let j = 0; j < cols; j++, q++) {\n          drawTriangle(\n            data,\n            context,\n            ps[q],\n            ps[q + 1],\n            ps[q + verticesPerRow],\n            cs[q],\n            cs[q + 1],\n            cs[q + verticesPerRow]\n          );\n          drawTriangle(\n            data,\n            context,\n            ps[q + verticesPerRow + 1],\n            ps[q + 1],\n            ps[q + verticesPerRow],\n            cs[q + verticesPerRow + 1],\n            cs[q + 1],\n            cs[q + verticesPerRow]\n          );\n        }\n      }\n      break;\n    case \"triangles\":\n      for (i = 0, ii = ps.length; i < ii; i += 3) {\n        drawTriangle(\n          data,\n          context,\n          ps[i],\n          ps[i + 1],\n          ps[i + 2],\n          cs[i],\n          cs[i + 1],\n          cs[i + 2]\n        );\n      }\n      break;\n    default:\n      throw new Error(\"illegal figure\");\n  }\n}\n\nclass MeshShadingPattern extends BaseShadingPattern {\n  constructor(IR) {\n    super();\n    this._coords = IR[2];\n    this._colors = IR[3];\n    this._figures = IR[4];\n    this._bounds = IR[5];\n    this._bbox = IR[6];\n    this._background = IR[7];\n    this.matrix = null;\n  }\n\n  _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n    // we will increase scale on some weird factor to let antialiasing take\n    // care of \"rough\" edges\n    const EXPECTED_SCALE = 1.1;\n    // MAX_PATTERN_SIZE is used to avoid OOM situation.\n    const MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough\n    // We need to keep transparent border around our pattern for fill():\n    // createPattern with 'no-repeat' will bleed edges across entire area.\n    const BORDER_SIZE = 2;\n\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\n    const width = Math.min(\n      Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)),\n      MAX_PATTERN_SIZE\n    );\n    const height = Math.min(\n      Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)),\n      MAX_PATTERN_SIZE\n    );\n    const scaleX = boundsWidth / width;\n    const scaleY = boundsHeight / height;\n\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\n    const paddedWidth = width + BORDER_SIZE * 2;\n    const paddedHeight = height + BORDER_SIZE * 2;\n\n    const tmpCanvas = cachedCanvases.getCanvas(\n      \"mesh\",\n      paddedWidth,\n      paddedHeight\n    );\n    const tmpCtx = tmpCanvas.context;\n\n    const data = tmpCtx.createImageData(width, height);\n    if (backgroundColor) {\n      const bytes = data.data;\n      for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n        bytes[i] = backgroundColor[0];\n        bytes[i + 1] = backgroundColor[1];\n        bytes[i + 2] = backgroundColor[2];\n        bytes[i + 3] = 255;\n      }\n    }\n    for (const figure of this._figures) {\n      drawFigure(data, figure, context);\n    }\n    tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n    const canvas = tmpCanvas.canvas;\n\n    return {\n      canvas,\n      offsetX: offsetX - BORDER_SIZE * scaleX,\n      offsetY: offsetY - BORDER_SIZE * scaleY,\n      scaleX,\n      scaleY,\n    };\n  }\n\n  isModifyingCurrentTransform() {\n    return true;\n  }\n\n  getPattern(ctx, owner, inverse, pathType) {\n    applyBoundingBox(ctx, this._bbox);\n    const scale = new Float32Array(2);\n    if (pathType === PathType.SHADING) {\n      Util.singularValueDecompose2dScale(getCurrentTransform(ctx), scale);\n    } else if (this.matrix) {\n      // Obtain scale from matrix and current transformation matrix.\n      Util.singularValueDecompose2dScale(this.matrix, scale);\n      const [matrixScaleX, matrixScaleY] = scale;\n      Util.singularValueDecompose2dScale(owner.baseTransform, scale);\n      scale[0] *= matrixScaleX;\n      scale[1] *= matrixScaleY;\n    } else {\n      Util.singularValueDecompose2dScale(owner.baseTransform, scale);\n    }\n\n    // Rasterizing on the main thread since sending/queue large canvases\n    // might cause OOM.\n    const temporaryPatternCanvas = this._createMeshCanvas(\n      scale,\n      pathType === PathType.SHADING ? null : this._background,\n      owner.cachedCanvases\n    );\n\n    if (pathType !== PathType.SHADING) {\n      ctx.setTransform(...owner.baseTransform);\n      if (this.matrix) {\n        ctx.transform(...this.matrix);\n      }\n    }\n\n    ctx.translate(\n      temporaryPatternCanvas.offsetX,\n      temporaryPatternCanvas.offsetY\n    );\n    ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n\n    return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n  }\n}\n\nclass DummyShadingPattern extends BaseShadingPattern {\n  getPattern() {\n    return \"hotpink\";\n  }\n}\n\nfunction getShadingPattern(IR) {\n  switch (IR[0]) {\n    case \"RadialAxial\":\n      return new RadialAxialShadingPattern(IR);\n    case \"Mesh\":\n      return new MeshShadingPattern(IR);\n    case \"Dummy\":\n      return new DummyShadingPattern();\n  }\n  throw new Error(`Unknown IR type: ${IR[0]}`);\n}\n\nconst PaintType = {\n  COLORED: 1,\n  UNCOLORED: 2,\n};\n\nclass TilingPattern {\n  // 10in @ 300dpi shall be enough.\n  static MAX_PATTERN_SIZE = 3000;\n\n  constructor(IR, ctx, canvasGraphicsFactory, baseTransform) {\n    this.color = IR[1];\n    this.operatorList = IR[2];\n    this.matrix = IR[3];\n    this.bbox = IR[4];\n    this.xstep = IR[5];\n    this.ystep = IR[6];\n    this.paintType = IR[7];\n    this.tilingType = IR[8];\n    this.ctx = ctx;\n    this.canvasGraphicsFactory = canvasGraphicsFactory;\n    this.baseTransform = baseTransform;\n  }\n\n  createPatternCanvas(owner, opIdx) {\n    const {\n      bbox,\n      operatorList,\n      paintType,\n      tilingType,\n      color,\n      canvasGraphicsFactory,\n    } = this;\n    let { xstep, ystep } = this;\n    xstep = Math.abs(xstep);\n    ystep = Math.abs(ystep);\n\n    info(\"TilingType: \" + tilingType);\n\n    // A tiling pattern as defined by PDF spec 8.7.2 is a cell whose size is\n    // described by bbox, and may repeat regularly by shifting the cell by\n    // xstep and ystep.\n    // Because the HTML5 canvas API does not support pattern repetition with\n    // gaps in between, we use the xstep/ystep instead of the bbox's size.\n    //\n    // This has the following consequences (similarly for ystep):\n    //\n    // - If xstep is the same as bbox, then there is no observable difference.\n    //\n    // - If xstep is larger than bbox, then the pattern canvas is partially\n    //   empty: the area bounded by bbox is painted, the outside area is void.\n    //\n    // - If xstep is smaller than bbox, then the pixels between xstep and the\n    //   bbox boundary will be missing. This is INCORRECT behavior.\n    //   \"Figures on adjacent tiles should not overlap\" (PDF spec 8.7.3.1),\n    //   but overlapping cells without common pixels are still valid.\n\n    const x0 = bbox[0],\n      y0 = bbox[1],\n      x1 = bbox[2],\n      y1 = bbox[3];\n    const width = x1 - x0;\n    const height = y1 - y0;\n\n    // Obtain scale from matrix and current transformation matrix.\n    const scale = new Float32Array(2);\n    Util.singularValueDecompose2dScale(this.matrix, scale);\n    const [matrixScaleX, matrixScaleY] = scale;\n    Util.singularValueDecompose2dScale(this.baseTransform, scale);\n    const combinedScaleX = matrixScaleX * scale[0];\n    const combinedScaleY = matrixScaleY * scale[1];\n\n    let canvasWidth = width,\n      canvasHeight = height,\n      redrawHorizontally = false,\n      redrawVertically = false;\n\n    const xScaledStep = Math.ceil(xstep * combinedScaleX);\n    const yScaledStep = Math.ceil(ystep * combinedScaleY);\n    const xScaledWidth = Math.ceil(width * combinedScaleX);\n    const yScaledHeight = Math.ceil(height * combinedScaleY);\n\n    if (xScaledStep >= xScaledWidth) {\n      canvasWidth = xstep;\n    } else {\n      redrawHorizontally = true;\n    }\n    if (yScaledStep >= yScaledHeight) {\n      canvasHeight = ystep;\n    } else {\n      redrawVertically = true;\n    }\n\n    // Use width and height values that are as close as possible to the end\n    // result when the pattern is used. Too low value makes the pattern look\n    // blurry. Too large value makes it look too crispy.\n    const dimx = this.getSizeAndScale(\n      canvasWidth,\n      this.ctx.canvas.width,\n      combinedScaleX\n    );\n    const dimy = this.getSizeAndScale(\n      canvasHeight,\n      this.ctx.canvas.height,\n      combinedScaleY\n    );\n\n    const tmpCanvas = owner.cachedCanvases.getCanvas(\n      \"pattern\",\n      dimx.size,\n      dimy.size\n    );\n    const tmpCtx = tmpCanvas.context;\n    const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx, opIdx);\n    graphics.groupLevel = owner.groupLevel;\n\n    this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n\n    tmpCtx.translate(-dimx.scale * x0, -dimy.scale * y0);\n    graphics.transform(\n      // We pass 0 as the 'opIdx' argument, but the value is irrelevant.\n      // We know that we are in a 'CanvasNestedDependencyTracker' that captures\n      // all the sub-operations needed to create this pattern canvas and uses\n      // the top-level operation index as their index.\n      0,\n      dimx.scale,\n      0,\n      0,\n      dimy.scale,\n      0,\n      0\n    );\n\n    // To match CanvasGraphics beginDrawing we must save the context here or\n    // else we end up with unbalanced save/restores.\n    tmpCtx.save();\n    graphics.dependencyTracker?.save();\n\n    this.clipBbox(graphics, x0, y0, x1, y1);\n\n    graphics.baseTransform = getCurrentTransform(graphics.ctx);\n\n    graphics.executeOperatorList(operatorList);\n\n    graphics.endDrawing();\n\n    graphics.dependencyTracker?.restore();\n    tmpCtx.restore();\n\n    if (redrawHorizontally || redrawVertically) {\n      // The tile is overlapping itself, so we create a new tile with\n      // dimensions xstep * ystep.\n      // Then we draw the overlapping parts of the original tile on the new\n      // tile.\n      // Just as a side note, the code here works correctly even if we don't\n      // have to redraw the tile horizontally or vertically. In that case, the\n      // original tile is drawn on the new tile only once, but it's useless.\n      const image = tmpCanvas.canvas;\n      if (redrawHorizontally) {\n        canvasWidth = xstep;\n      }\n      if (redrawVertically) {\n        canvasHeight = ystep;\n      }\n\n      const dimx2 = this.getSizeAndScale(\n        canvasWidth,\n        this.ctx.canvas.width,\n        combinedScaleX\n      );\n      const dimy2 = this.getSizeAndScale(\n        canvasHeight,\n        this.ctx.canvas.height,\n        combinedScaleY\n      );\n\n      const xSize = dimx2.size;\n      const ySize = dimy2.size;\n      const tmpCanvas2 = owner.cachedCanvases.getCanvas(\n        \"pattern-workaround\",\n        xSize,\n        ySize\n      );\n      const tmpCtx2 = tmpCanvas2.context;\n      const ii = redrawHorizontally ? Math.floor(width / xstep) : 0;\n      const jj = redrawVertically ? Math.floor(height / ystep) : 0;\n\n      // Draw the overlapping parts of the original tile on the new tile.\n      for (let i = 0; i <= ii; i++) {\n        for (let j = 0; j <= jj; j++) {\n          tmpCtx2.drawImage(\n            image,\n            xSize * i,\n            ySize * j,\n            xSize,\n            ySize,\n            0,\n            0,\n            xSize,\n            ySize\n          );\n        }\n      }\n      return {\n        canvas: tmpCanvas2.canvas,\n        scaleX: dimx2.scale,\n        scaleY: dimy2.scale,\n        offsetX: x0,\n        offsetY: y0,\n      };\n    }\n\n    return {\n      canvas: tmpCanvas.canvas,\n      scaleX: dimx.scale,\n      scaleY: dimy.scale,\n      offsetX: x0,\n      offsetY: y0,\n    };\n  }\n\n  getSizeAndScale(step, realOutputSize, scale) {\n    // MAX_PATTERN_SIZE is used to avoid OOM situation.\n    // Use the destination canvas's size if it is bigger than the hard-coded\n    // limit of MAX_PATTERN_SIZE to avoid clipping patterns that cover the\n    // whole canvas.\n    const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n    let size = Math.ceil(step * scale);\n    if (size >= maxSize) {\n      size = maxSize;\n    } else {\n      scale = size / step;\n    }\n    return { scale, size };\n  }\n\n  clipBbox(graphics, x0, y0, x1, y1) {\n    const bboxWidth = x1 - x0;\n    const bboxHeight = y1 - y0;\n    graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n    Util.axialAlignedBoundingBox(\n      [x0, y0, x1, y1],\n      getCurrentTransform(graphics.ctx),\n      graphics.current.minMax\n    );\n    graphics.clip();\n    graphics.endPath();\n  }\n\n  setFillAndStrokeStyleToContext(graphics, paintType, color) {\n    const context = graphics.ctx,\n      current = graphics.current;\n    switch (paintType) {\n      case PaintType.COLORED:\n        const { fillStyle, strokeStyle } = this.ctx;\n        context.fillStyle = current.fillColor = fillStyle;\n        context.strokeStyle = current.strokeColor = strokeStyle;\n        break;\n      case PaintType.UNCOLORED:\n        context.fillStyle = context.strokeStyle = color;\n        // Set color needed by image masks (fixes issues 3226 and 8741).\n        current.fillColor = current.strokeColor = color;\n        break;\n      default:\n        throw new FormatError(`Unsupported paint type: ${paintType}`);\n    }\n  }\n\n  isModifyingCurrentTransform() {\n    return false;\n  }\n\n  getPattern(ctx, owner, inverse, pathType, opIdx) {\n    // PDF spec 8.7.2 NOTE 1: pattern's matrix is relative to initial matrix.\n    let matrix = inverse;\n    if (pathType !== PathType.SHADING) {\n      matrix = Util.transform(matrix, owner.baseTransform);\n      if (this.matrix) {\n        matrix = Util.transform(matrix, this.matrix);\n      }\n    }\n\n    const temporaryPatternCanvas = this.createPatternCanvas(owner, opIdx);\n\n    let domMatrix = new DOMMatrix(matrix);\n    // Rescale and so that the ctx.createPattern call generates a pattern with\n    // the desired size.\n    domMatrix = domMatrix.translate(\n      temporaryPatternCanvas.offsetX,\n      temporaryPatternCanvas.offsetY\n    );\n    domMatrix = domMatrix.scale(\n      1 / temporaryPatternCanvas.scaleX,\n      1 / temporaryPatternCanvas.scaleY\n    );\n\n    const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n    pattern.setTransform(domMatrix);\n\n    return pattern;\n  }\n}\n\nexport { getShadingPattern, PathType, TilingPattern };\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\nimport { FeatureTest, ImageKind } from \"./util.js\";\n\nfunction convertToRGBA(params) {\n  switch (params.kind) {\n    case ImageKind.GRAYSCALE_1BPP:\n      return convertBlackAndWhiteToRGBA(params);\n    case ImageKind.RGB_24BPP:\n      return convertRGBToRGBA(params);\n  }\n\n  return null;\n}\n\nfunction convertBlackAndWhiteToRGBA({\n  src,\n  srcPos = 0,\n  dest,\n  width,\n  height,\n  nonBlackColor = 0xffffffff,\n  inverseDecode = false,\n}) {\n  const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n  const [zeroMapping, oneMapping] = inverseDecode\n    ? [nonBlackColor, black]\n    : [black, nonBlackColor];\n  const widthInSource = width >> 3;\n  const widthRemainder = width & 7;\n  const srcLength = src.length;\n  dest = new Uint32Array(dest.buffer);\n  let destPos = 0;\n\n  for (let i = 0; i < height; i++) {\n    for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n      const elem = srcPos < srcLength ? src[srcPos] : 255;\n      dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n      dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n    }\n    if (widthRemainder === 0) {\n      continue;\n    }\n    const elem = srcPos < srcLength ? src[srcPos++] : 255;\n    for (let j = 0; j < widthRemainder; j++) {\n      dest[destPos++] = elem & (1 << (7 - j)) ? oneMapping : zeroMapping;\n    }\n  }\n  return { srcPos, destPos };\n}\n\nfunction convertRGBToRGBA({\n  src,\n  srcPos = 0,\n  dest,\n  destPos = 0,\n  width,\n  height,\n}) {\n  let i = 0;\n  const len = width * height * 3;\n  const len32 = len >> 2;\n  const src32 = new Uint32Array(src.buffer, srcPos, len32);\n\n  if (FeatureTest.isLittleEndian) {\n    // It's a way faster to do the shuffle manually instead of working\n    // component by component with some Uint8 arrays.\n    for (; i < len32 - 2; i += 3, destPos += 4) {\n      const s1 = src32[i]; // R2B1G1R1\n      const s2 = src32[i + 1]; // G3R3B2G2\n      const s3 = src32[i + 2]; // B4G4R4B3\n\n      dest[destPos] = s1 | 0xff000000;\n      dest[destPos + 1] = (s1 >>> 24) | (s2 << 8) | 0xff000000;\n      dest[destPos + 2] = (s2 >>> 16) | (s3 << 16) | 0xff000000;\n      dest[destPos + 3] = (s3 >>> 8) | 0xff000000;\n    }\n\n    for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n      dest[destPos++] =\n        src[j] | (src[j + 1] << 8) | (src[j + 2] << 16) | 0xff000000;\n    }\n  } else {\n    for (; i < len32 - 2; i += 3, destPos += 4) {\n      const s1 = src32[i]; // R1G1B1R2\n      const s2 = src32[i + 1]; // G2B2R3G3\n      const s3 = src32[i + 2]; // B3R4G4B4\n\n      dest[destPos] = s1 | 0xff;\n      dest[destPos + 1] = (s1 << 24) | (s2 >>> 8) | 0xff;\n      dest[destPos + 2] = (s2 << 16) | (s3 >>> 16) | 0xff;\n      dest[destPos + 3] = (s3 << 8) | 0xff;\n    }\n\n    for (let j = i * 4, jj = srcPos + len; j < jj; j += 3) {\n      dest[destPos++] =\n        (src[j] << 24) | (src[j + 1] << 16) | (src[j + 2] << 8) | 0xff;\n    }\n  }\n\n  return { srcPos: srcPos + len, destPos };\n}\n\nfunction grayToRGBA(src, dest) {\n  if (FeatureTest.isLittleEndian) {\n    for (let i = 0, ii = src.length; i < ii; i++) {\n      dest[i] = (src[i] * 0x10101) | 0xff000000;\n    }\n  } else {\n    for (let i = 0, ii = src.length; i < ii; i++) {\n      dest[i] = (src[i] * 0x1010100) | 0x000000ff;\n    }\n  }\n}\n\nexport { convertBlackAndWhiteToRGBA, convertToRGBA, grayToRGBA };\n", "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  CanvasNestedDependencyTracker,\n  Dependencies,\n} from \"./canvas_dependency_tracker.js\";\nimport {\n  DrawOPS,\n  FeatureTest,\n  FONT_IDENTITY_MATRIX,\n  ImageKind,\n  info,\n  OPS,\n  shadow,\n  TextRenderingMode,\n  unreachable,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  getCurrentTransform,\n  getCurrentTransformInverse,\n  OutputScale,\n  PixelsPerInch,\n} from \"./display_utils.js\";\nimport {\n  getShadingPattern,\n  PathType,\n  TilingPattern,\n} from \"./pattern_helper.js\";\nimport { convertBlackAndWhiteToRGBA } from \"../shared/image_utils.js\";\n\n// <canvas> contexts store most of the state we need natively.\n// However, PDF needs a bit more state, which we store here.\n// Minimal font size that would be used during canvas fillText operations.\nconst MIN_FONT_SIZE = 16;\n// Maximum font size that would be used during canvas fillText operations.\nconst MAX_FONT_SIZE = 100;\n\n// Defines the time the `executeOperatorList`-method is going to be executing\n// before it stops and schedules a continue of execution.\nconst EXECUTION_TIME = 15; // ms\n// Defines the number of steps before checking the execution time.\nconst EXECUTION_STEPS = 10;\n\nconst FULL_CHUNK_HEIGHT = 16;\n\n// Only used in rescaleAndStroke. The goal is to avoid\n// creating a new DOMMatrix object each time we need it.\nconst SCALE_MATRIX = new DOMMatrix();\n\n// Used to get some coordinates.\nconst XY = new Float32Array(2);\n\n// Initial rectangle values for the minMax array.\nconst MIN_MAX_INIT = new Float32Array([\n  Infinity,\n  Infinity,\n  -Infinity,\n  -Infinity,\n]);\n\n/**\n * Overrides certain methods on a 2d ctx so that when they are called they\n * will also call the same method on the destCtx. The methods that are\n * overridden are all the transformation state modifiers, path creation, and\n * save/restore. We only forward these specific methods because they are the\n * only state modifiers that we cannot copy over when we switch contexts.\n *\n * To remove mirroring call `ctx._removeMirroring()`.\n *\n * @param {Object} ctx - The 2d canvas context that will duplicate its calls on\n *   the destCtx.\n * @param {Object} destCtx - The 2d canvas context that will receive the\n *   forwarded calls.\n */\nfunction mirrorContextOperations(ctx, destCtx) {\n  if (ctx._removeMirroring) {\n    throw new Error(\"Context is already forwarding operations.\");\n  }\n  ctx.__originalSave = ctx.save;\n  ctx.__originalRestore = ctx.restore;\n  ctx.__originalRotate = ctx.rotate;\n  ctx.__originalScale = ctx.scale;\n  ctx.__originalTranslate = ctx.translate;\n  ctx.__originalTransform = ctx.transform;\n  ctx.__originalSetTransform = ctx.setTransform;\n  ctx.__originalResetTransform = ctx.resetTransform;\n  ctx.__originalClip = ctx.clip;\n  ctx.__originalMoveTo = ctx.moveTo;\n  ctx.__originalLineTo = ctx.lineTo;\n  ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n  ctx.__originalRect = ctx.rect;\n  ctx.__originalClosePath = ctx.closePath;\n  ctx.__originalBeginPath = ctx.beginPath;\n\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\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 () {\n    destCtx.save();\n    this.__originalSave();\n  };\n\n  ctx.restore = function () {\n    destCtx.restore();\n    this.__originalRestore();\n  };\n\n  ctx.translate = function (x, y) {\n    destCtx.translate(x, y);\n    this.__originalTranslate(x, y);\n  };\n\n  ctx.scale = function (x, y) {\n    destCtx.scale(x, y);\n    this.__originalScale(x, y);\n  };\n\n  ctx.transform = function (a, b, c, d, e, f) {\n    destCtx.transform(a, b, c, d, e, f);\n    this.__originalTransform(a, b, c, d, e, f);\n  };\n\n  ctx.setTransform = function (a, b, c, d, e, f) {\n    destCtx.setTransform(a, b, c, d, e, f);\n    this.__originalSetTransform(a, b, c, d, e, f);\n  };\n\n  ctx.resetTransform = function () {\n    destCtx.resetTransform();\n    this.__originalResetTransform();\n  };\n\n  ctx.rotate = function (angle) {\n    destCtx.rotate(angle);\n    this.__originalRotate(angle);\n  };\n\n  ctx.clip = function (rule) {\n    destCtx.clip(rule);\n    this.__originalClip(rule);\n  };\n\n  ctx.moveTo = function (x, y) {\n    destCtx.moveTo(x, y);\n    this.__originalMoveTo(x, y);\n  };\n\n  ctx.lineTo = function (x, y) {\n    destCtx.lineTo(x, y);\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    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    this.__originalRect(x, y, width, height);\n  };\n\n  ctx.closePath = function () {\n    destCtx.closePath();\n    this.__originalClosePath();\n  };\n\n  ctx.beginPath = function () {\n    destCtx.beginPath();\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    if (this.cache[id] !== undefined) {\n      canvasEntry = this.cache[id];\n      this.canvasFactory.reset(canvasEntry, width, height);\n    } else {\n      canvasEntry = this.canvasFactory.create(width, height);\n      this.cache[id] = canvasEntry;\n    }\n    return canvasEntry;\n  }\n\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\nfunction drawImageAtIntegerCoords(\n  ctx,\n  srcImg,\n  srcX,\n  srcY,\n  srcW,\n  srcH,\n  destX,\n  destY,\n  destW,\n  destH\n) {\n  const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\n  if (b === 0 && c === 0) {\n    // top-left corner is at (X, Y) and\n    // bottom-right one is at (X + width, Y + height).\n\n    // If leftX is 4.321 then it's rounded to 4.\n    // If width is 10.432 then it's rounded to 11 because\n    // rightX = leftX + width = 14.753 which is rounded to 15\n    // so after rounding the total width is 11 (15 - 4).\n    // It's why we can't just floor/ceil uniformly, it just depends\n    // on the values we've.\n\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\n    // Some pdf contains images with 1x1 images so in case of 0-width after\n    // scaling we must fallback on 1 to be sure there is something.\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\n    // We must apply a transformation in order to apply it on the image itself.\n    // For example if a == 1 && d == -1, it means that the image itself is\n    // mirrored w.r.t. the x-axis.\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\n    return [rWidth, rHeight];\n  }\n\n  if (a === 0 && d === 0) {\n    // This path is taken in issue9462.pdf (page 3).\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\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\n    return [rHeight, rWidth];\n  }\n\n  // Not a scale matrix so let the render handle the case without rounding.\n  ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n\n  const scaleX = Math.hypot(a, b);\n  const scaleY = Math.hypot(c, d);\n  return [scaleX * destW, scaleY * destH];\n}\n\nclass CanvasExtraState {\n  // Are soft masks and alpha values shapes or opacities?\n  alphaIsShape = false;\n\n  fontSize = 0;\n\n  fontSizeScale = 1;\n\n  textMatrix = null;\n\n  textMatrixScale = 1;\n\n  fontMatrix = FONT_IDENTITY_MATRIX;\n\n  leading = 0;\n\n  // Current point (in user coordinates)\n  x = 0;\n\n  y = 0;\n\n  // Start of text line (in text coordinates)\n  lineX = 0;\n\n  lineY = 0;\n\n  // Character and word spacing\n  charSpacing = 0;\n\n  wordSpacing = 0;\n\n  textHScale = 1;\n\n  textRenderingMode = TextRenderingMode.FILL;\n\n  textRise = 0;\n\n  // Default fore and background colors\n  fillColor = \"#000000\";\n\n  strokeColor = \"#000000\";\n\n  patternFill = false;\n\n  patternStroke = false;\n\n  // Note: fill alpha applies to all non-stroking operations\n  fillAlpha = 1;\n\n  strokeAlpha = 1;\n\n  lineWidth = 1;\n\n  activeSMask = null;\n\n  transferMaps = \"none\";\n\n  constructor(width, height, preInit) {\n    preInit?.(this);\n\n    this.clipBox = new Float32Array([0, 0, width, height]);\n    this.minMax = MIN_MAX_INIT.slice();\n  }\n\n  clone() {\n    const clone = Object.create(this);\n    clone.clipBox = this.clipBox.slice();\n    clone.minMax = this.minMax.slice();\n    return clone;\n  }\n\n  getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n    const box = this.minMax.slice();\n    if (pathType === PathType.STROKE) {\n      if (!transform) {\n        unreachable(\"Stroke bounding box must include transform.\");\n      }\n      // Stroked paths can be outside of the path bounding box by 1/2 the line\n      // width.\n      Util.singularValueDecompose2dScale(transform, XY);\n      const xStrokePad = (XY[0] * this.lineWidth) / 2;\n      const yStrokePad = (XY[1] * this.lineWidth) / 2;\n      box[0] -= xStrokePad;\n      box[1] -= yStrokePad;\n      box[2] += xStrokePad;\n      box[3] += yStrokePad;\n    }\n    return box;\n  }\n\n  updateClipFromPath() {\n    const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n    this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n  }\n\n  isEmptyClip() {\n    return this.minMax[0] === Infinity;\n  }\n\n  startNewPathAndClipBox(box) {\n    this.clipBox.set(box, 0);\n    this.minMax.set(MIN_MAX_INIT, 0);\n  }\n\n  getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n    return Util.intersect(\n      this.clipBox,\n      this.getPathBoundingBox(pathType, transform)\n    );\n  }\n}\n\nfunction putBinaryImageData(ctx, imgData) {\n  if (imgData instanceof ImageData) {\n    ctx.putImageData(imgData, 0, 0);\n    return;\n  }\n\n  // Put the image data to the canvas in chunks, rather than putting the\n  // whole image at once.  This saves JS memory, because the ImageData object\n  // is smaller. It also possibly saves C++ memory within the implementation\n  // of putImageData(). (E.g. in Firefox we make two short-lived copies of\n  // the data passed to putImageData()). |n| shouldn't be too small, however,\n  // because too many putImageData() calls will slow things down.\n  //\n  // Note: as written, if the last chunk is partial, the putImageData() call\n  // will (conceptually) put pixels past the bounds of the canvas.  But\n  // that's ok; any such pixels are ignored.\n\n  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\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\n  // There are multiple forms in which the pixel data can be passed, and\n  // imgData.kind tells us which one this is.\n  if (imgData.kind === ImageKind.GRAYSCALE_1BPP) {\n    // Grayscale, 1 bit per pixel (i.e. black-and-white).\n    const srcLength = src.byteLength;\n    const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n    const dest32DataLength = dest32.length;\n    const fullSrcDiff = (width + 7) >> 3;\n    const white = 0xffffffff;\n    const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n\n    for (i = 0; i < totalChunks; i++) {\n      thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n      destPos = 0;\n      for (j = 0; j < thisChunkHeight; j++) {\n        const srcDiff = srcLength - srcPos;\n        let k = 0;\n        const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n        const kEndUnrolled = kEnd & ~7;\n        let mask = 0;\n        let srcByte = 0;\n        for (; k < kEndUnrolled; k += 8) {\n          srcByte = src[srcPos++];\n          dest32[destPos++] = srcByte & 128 ? white : black;\n          dest32[destPos++] = srcByte & 64 ? white : black;\n          dest32[destPos++] = srcByte & 32 ? white : black;\n          dest32[destPos++] = srcByte & 16 ? white : black;\n          dest32[destPos++] = srcByte & 8 ? white : black;\n          dest32[destPos++] = srcByte & 4 ? white : black;\n          dest32[destPos++] = srcByte & 2 ? white : black;\n          dest32[destPos++] = srcByte & 1 ? white : black;\n        }\n        for (; k < kEnd; k++) {\n          if (mask === 0) {\n            srcByte = src[srcPos++];\n            mask = 128;\n          }\n\n          dest32[destPos++] = srcByte & mask ? white : black;\n          mask >>= 1;\n        }\n      }\n      // We ran out of input. Make all remaining pixels transparent.\n      while (destPos < dest32DataLength) {\n        dest32[destPos++] = 0;\n      }\n\n      ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n    }\n  } else if (imgData.kind === ImageKind.RGBA_32BPP) {\n    // RGBA, 32-bits per pixel.\n    j = 0;\n    elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n    for (i = 0; i < fullChunks; i++) {\n      dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n      srcPos += elemsInThisChunk;\n\n      ctx.putImageData(chunkImgData, 0, j);\n      j += FULL_CHUNK_HEIGHT;\n    }\n    if (i < totalChunks) {\n      elemsInThisChunk = width * partialChunkHeight * 4;\n      dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n\n      ctx.putImageData(chunkImgData, 0, j);\n    }\n  } else if (imgData.kind === ImageKind.RGB_24BPP) {\n    // RGB, 24-bits per pixel.\n    thisChunkHeight = FULL_CHUNK_HEIGHT;\n    elemsInThisChunk = width * thisChunkHeight;\n    for (i = 0; i < totalChunks; i++) {\n      if (i >= fullChunks) {\n        thisChunkHeight = partialChunkHeight;\n        elemsInThisChunk = width * thisChunkHeight;\n      }\n\n      destPos = 0;\n      for (j = elemsInThisChunk; j--; ) {\n        dest[destPos++] = src[srcPos++];\n        dest[destPos++] = src[srcPos++];\n        dest[destPos++] = src[srcPos++];\n        dest[destPos++] = 255;\n      }\n\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    // The bitmap has been created in the worker.\n    ctx.drawImage(imgData.bitmap, 0, 0);\n    return;\n  }\n\n  // Slow path: OffscreenCanvas isn't available in the worker.\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\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 =\n      i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n\n    // Expand the mask so it can be used by the canvas.  Any required\n    // inversion has already been handled.\n\n    ({ srcPos } = convertBlackAndWhiteToRGBA({\n      src,\n      srcPos,\n      dest,\n      width,\n      height: thisChunkHeight,\n      nonBlackColor: 0,\n    }));\n\n    ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n  }\n}\n\nfunction copyCtxState(sourceCtx, destCtx) {\n  const properties = [\n    \"strokeStyle\",\n    \"fillStyle\",\n    \"fillRule\",\n    \"globalAlpha\",\n    \"lineWidth\",\n    \"lineCap\",\n    \"lineJoin\",\n    \"miterLimit\",\n    \"globalCompositeOperation\",\n    \"font\",\n    \"filter\",\n  ];\n  for (const property of properties) {\n    if (sourceCtx[property] !== undefined) {\n      destCtx[property] = sourceCtx[property];\n    }\n  }\n  if (sourceCtx.setLineDash !== undefined) {\n    destCtx.setLineDash(sourceCtx.getLineDash());\n    destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n  }\n}\n\nfunction resetCtxToDefault(ctx) {\n  ctx.strokeStyle = ctx.fillStyle = \"#000000\";\n  ctx.fillRule = \"nonzero\";\n  ctx.globalAlpha = 1;\n  ctx.lineWidth = 1;\n  ctx.lineCap = \"butt\";\n  ctx.lineJoin = \"miter\";\n  ctx.miterLimit = 10;\n  ctx.globalCompositeOperation = \"source-over\";\n  ctx.font = \"10px sans-serif\";\n  if (ctx.setLineDash !== undefined) {\n    ctx.setLineDash([]);\n    ctx.lineDashOffset = 0;\n  }\n  const { filter } = ctx;\n  if (filter !== \"none\" && filter !== \"\") {\n    ctx.filter = \"none\";\n  }\n}\n\nfunction getImageSmoothingEnabled(transform, interpolate) {\n  // In section 8.9.5.3 of the PDF spec, it's mentioned that the interpolate\n  // flag should be used when the image is upscaled.\n  // In Firefox, smoothing is always used when downscaling images (bug 1360415).\n\n  if (interpolate) {\n    return true;\n  }\n\n  Util.singularValueDecompose2dScale(transform, XY);\n  // Round to a 32bit float so that `<=` check below will pass for numbers that\n  // are very close, but not exactly the same 64bit floats.\n  const actualScale = Math.fround(\n    OutputScale.pixelRatio * PixelsPerInch.PDF_TO_CSS_UNITS\n  );\n  // `XY` is a Float32Array.\n  return XY[0] <= actualScale && XY[1] <= actualScale;\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(\n    canvasCtx,\n    commonObjs,\n    objs,\n    canvasFactory,\n    filterFactory,\n    { optionalContentConfig, markedContentStack = null },\n    annotationCanvasMap,\n    pageColors,\n    dependencyTracker\n  ) {\n    this.ctx = canvasCtx;\n    this.current = new CanvasExtraState(\n      this.ctx.canvas.width,\n      this.ctx.canvas.height\n    );\n    this.stateStack = [];\n    this.pendingClip = null;\n    this.pendingEOFill = false;\n    this.res = null;\n    this.xobjs = null;\n    this.commonObjs = commonObjs;\n    this.objs = objs;\n    this.canvasFactory = canvasFactory;\n    this.filterFactory = filterFactory;\n    this.groupStack = [];\n    // Patterns are painted relative to the initial page/form transform, see\n    // PDF spec 8.7.2 NOTE 1.\n    this.baseTransform = null;\n    this.baseTransformStack = [];\n    this.groupLevel = 0;\n    this.smaskStack = [];\n    this.smaskCounter = 0;\n    this.tempSMask = null;\n    this.suspendedCtx = null;\n    this.contentVisible = true;\n    this.markedContentStack = markedContentStack || [];\n    this.optionalContentConfig = optionalContentConfig;\n    this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n    this.cachedPatterns = new Map();\n    this.annotationCanvasMap = annotationCanvasMap;\n    this.viewportScale = 1;\n    this.outputScaleX = 1;\n    this.outputScaleY = 1;\n    this.pageColors = pageColors;\n\n    this._cachedScaleForStroking = [-1, 0];\n    this._cachedGetSinglePixelWidth = null;\n    this._cachedBitmapsMap = new Map();\n\n    this.dependencyTracker = dependencyTracker ?? null;\n  }\n\n  getObject(opIdx, data, fallback = null) {\n    if (typeof data === \"string\") {\n      this.dependencyTracker?.recordNamedDependency(opIdx, data);\n      return data.startsWith(\"g_\")\n        ? this.commonObjs.get(data)\n        : this.objs.get(data);\n    }\n    return fallback;\n  }\n\n  beginDrawing({\n    transform,\n    viewport,\n    transparency = false,\n    background = null,\n  }) {\n    // For pdfs that use blend modes we have to clear the canvas else certain\n    // blend modes can look wrong since we'd be blending with a white\n    // backdrop. The problem with a transparent backdrop though is we then\n    // don't get sub pixel anti aliasing on text, creating temporary\n    // transparent canvas when we have blend modes.\n    const width = this.ctx.canvas.width;\n    const height = this.ctx.canvas.height;\n\n    const savedFillStyle = this.ctx.fillStyle;\n    this.ctx.fillStyle = background || \"#ffffff\";\n    this.ctx.fillRect(0, 0, width, height);\n    this.ctx.fillStyle = savedFillStyle;\n\n    if (transparency) {\n      const transparentCanvas = this.cachedCanvases.getCanvas(\n        \"transparent\",\n        width,\n        height\n      );\n      this.compositeCtx = this.ctx;\n      this.transparentCanvas = transparentCanvas.canvas;\n      this.ctx = transparentCanvas.context;\n      this.ctx.save();\n      // The transform can be applied before rendering, transferring it to\n      // the new canvas.\n      this.ctx.transform(...getCurrentTransform(this.compositeCtx));\n    }\n\n    this.ctx.save();\n    resetCtxToDefault(this.ctx);\n    if (transform) {\n      this.ctx.transform(...transform);\n      this.outputScaleX = transform[0];\n      this.outputScaleY = transform[0];\n    }\n    this.ctx.transform(...viewport.transform);\n    this.viewportScale = viewport.scale;\n\n    this.baseTransform = getCurrentTransform(this.ctx);\n  }\n\n  executeOperatorList(\n    operatorList,\n    executionStartIdx,\n    continueCallback,\n    stepper,\n    operationsFilter\n  ) {\n    const argsArray = operatorList.argsArray;\n    const fnArray = operatorList.fnArray;\n    let i = executionStartIdx || 0;\n    const argsArrayLen = argsArray.length;\n\n    // Sometimes the OperatorList to execute is empty.\n    if (argsArrayLen === i) {\n      return i;\n    }\n\n    const chunkOperations =\n      argsArrayLen - i > EXECUTION_STEPS &&\n      typeof continueCallback === \"function\";\n    const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n    let steps = 0;\n\n    const commonObjs = this.commonObjs;\n    const objs = this.objs;\n    let fnId, fnArgs;\n\n    while (true) {\n      if (stepper !== undefined && i === stepper.nextBreakPoint) {\n        stepper.breakIt(i, continueCallback);\n        return i;\n      }\n\n      if (!operationsFilter || operationsFilter(i)) {\n        fnId = fnArray[i];\n        // TODO: There is a `undefined` coming from somewhere.\n        fnArgs = argsArray[i] ?? null;\n\n        if (fnId !== OPS.dependency) {\n          if (fnArgs === null) {\n            this[fnId](i);\n          } else {\n            this[fnId](i, ...fnArgs);\n          }\n        } else {\n          for (const depObjId of fnArgs) {\n            this.dependencyTracker?.recordNamedData(depObjId, i);\n            const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n\n            // If the promise isn't resolved yet, add the continueCallback\n            // to the promise and bail out.\n            if (!objsPool.has(depObjId)) {\n              objsPool.get(depObjId, continueCallback);\n              return i;\n            }\n          }\n        }\n      }\n\n      i++;\n\n      // If the entire operatorList was executed, stop as were done.\n      if (i === argsArrayLen) {\n        return i;\n      }\n\n      // If the execution took longer then a certain amount of time and\n      // `continueCallback` is specified, interrupt the execution.\n      if (chunkOperations && ++steps > EXECUTION_STEPS) {\n        if (Date.now() > endTime) {\n          continueCallback();\n          return i;\n        }\n        steps = 0;\n      }\n\n      // If the operatorList isn't executed completely yet OR the execution\n      // time was short enough, do another execution round.\n    }\n  }\n\n  #restoreInitialState() {\n    // Finishing all opened operations such as SMask group painting.\n    while (this.stateStack.length || this.inSMaskMode) {\n      this.restore();\n    }\n\n    this.current.activeSMask = null;\n    this.ctx.restore();\n\n    if (this.transparentCanvas) {\n      this.ctx = this.compositeCtx;\n      this.ctx.save();\n      this.ctx.setTransform(1, 0, 0, 1, 0, 0); // Avoid apply transform twice\n      this.ctx.drawImage(this.transparentCanvas, 0, 0);\n      this.ctx.restore();\n      this.transparentCanvas = null;\n    }\n  }\n\n  endDrawing() {\n    this.#restoreInitialState();\n\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 (\n          typeof HTMLCanvasElement !== \"undefined\" &&\n          canvas instanceof HTMLCanvasElement\n        ) {\n          canvas.width = canvas.height = 0;\n        }\n      }\n      cache.clear();\n    }\n    this._cachedBitmapsMap.clear();\n    this.#drawFilter();\n  }\n\n  #drawFilter() {\n    if (this.pageColors) {\n      const hcmFilterId = this.filterFactory.addHCMFilter(\n        this.pageColors.foreground,\n        this.pageColors.background\n      );\n      if (hcmFilterId !== \"none\") {\n        const savedFilter = this.ctx.filter;\n        this.ctx.filter = hcmFilterId;\n        this.ctx.drawImage(this.ctx.canvas, 0, 0);\n        this.ctx.filter = savedFilter;\n      }\n    }\n  }\n\n  _scaleImage(img, inverseTransform) {\n    // Vertical or horizontal scaling shall not be more than 2 to not lose the\n    // pixels during drawImage operation, painting on the temporary canvas(es)\n    // that are twice smaller in size.\n\n    // displayWidth and displayHeight are used for VideoFrame.\n    const width = img.width ?? img.displayWidth;\n    const height = img.height ?? img.displayHeight;\n    let widthScale = Math.max(\n      Math.hypot(inverseTransform[0], inverseTransform[1]),\n      1\n    );\n    let heightScale = Math.max(\n      Math.hypot(inverseTransform[2], inverseTransform[3]),\n      1\n    );\n\n    let paintWidth = width,\n      paintHeight = height;\n    let tmpCanvasId = \"prescale1\";\n    let tmpCanvas, tmpCtx;\n    while (\n      (widthScale > 2 && paintWidth > 1) ||\n      (heightScale > 2 && paintHeight > 1)\n    ) {\n      let newWidth = paintWidth,\n        newHeight = paintHeight;\n      if (widthScale > 2 && paintWidth > 1) {\n        // See bug 1820511 (Windows specific bug).\n        // TODO: once the above bug is fixed we could revert to:\n        // newWidth = Math.ceil(paintWidth / 2);\n        newWidth =\n          paintWidth >= 16384\n            ? Math.floor(paintWidth / 2) - 1 || 1\n            : Math.ceil(paintWidth / 2);\n        widthScale /= paintWidth / newWidth;\n      }\n      if (heightScale > 2 && paintHeight > 1) {\n        // TODO: see the comment above.\n        newHeight =\n          paintHeight >= 16384\n            ? Math.floor(paintHeight / 2) - 1 || 1\n            : Math.ceil(paintHeight) / 2;\n        heightScale /= paintHeight / newHeight;\n      }\n      tmpCanvas = this.cachedCanvases.getCanvas(\n        tmpCanvasId,\n        newWidth,\n        newHeight\n      );\n      tmpCtx = tmpCanvas.context;\n      tmpCtx.clearRect(0, 0, newWidth, newHeight);\n      tmpCtx.drawImage(\n        img,\n        0,\n        0,\n        paintWidth,\n        paintHeight,\n        0,\n        0,\n        newWidth,\n        newHeight\n      );\n      img = tmpCanvas.canvas;\n      paintWidth = newWidth;\n      paintHeight = newHeight;\n      tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n    }\n    return {\n      img,\n      paintWidth,\n      paintHeight,\n    };\n  }\n\n  _createMaskCanvas(opIdx, img) {\n    const ctx = this.ctx;\n    const { width, height } = img;\n    const fillColor = this.current.fillColor;\n    const isPatternFill = this.current.patternFill;\n    const currentTransform = getCurrentTransform(ctx);\n\n    let cache, cacheKey, scaled, maskCanvas;\n    if ((img.bitmap || img.data) && img.count > 1) {\n      const mainKey = img.bitmap || img.data.buffer;\n      // We're reusing the same image several times, so we can cache it.\n      // In case we've a pattern fill we just keep the scaled version of\n      // the image.\n      // Only the scaling part matters, the translation part is just used\n      // to compute offsets (but not when filling patterns see #15573).\n      // TODO: handle the case of a pattern fill if it's possible.\n      cacheKey = JSON.stringify(\n        isPatternFill\n          ? currentTransform\n          : [currentTransform.slice(0, 4), fillColor]\n      );\n\n      cache = this._cachedBitmapsMap.get(mainKey);\n      if (!cache) {\n        cache = new Map();\n        this._cachedBitmapsMap.set(mainKey, cache);\n      }\n      const cachedImage = cache.get(cacheKey);\n      if (cachedImage && !isPatternFill) {\n        const offsetX = Math.round(\n          Math.min(currentTransform[0], currentTransform[2]) +\n            currentTransform[4]\n        );\n        const offsetY = Math.round(\n          Math.min(currentTransform[1], currentTransform[3]) +\n            currentTransform[5]\n        );\n\n        this.dependencyTracker?.recordDependencies(\n          opIdx,\n          Dependencies.transformAndFill\n        );\n        return {\n          canvas: cachedImage,\n          offsetX,\n          offsetY,\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    // Create the mask canvas at the size it will be drawn at and also set\n    // its transform to match the current transform so if there are any\n    // patterns applied they will be applied relative to the correct\n    // transform.\n\n    let maskToCanvas = Util.transform(currentTransform, [\n      1 / width,\n      0,\n      0,\n      -1 / height,\n      0,\n      0,\n    ]);\n    maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n    const minMax = MIN_MAX_INIT.slice();\n    Util.axialAlignedBoundingBox([0, 0, width, height], maskToCanvas, minMax);\n    const [minX, minY, maxX, maxY] = minMax;\n    const drawnWidth = Math.round(maxX - minX) || 1;\n    const drawnHeight = Math.round(maxY - minY) || 1;\n    const fillCanvas = this.cachedCanvases.getCanvas(\n      \"fillCanvas\",\n      drawnWidth,\n      drawnHeight\n    );\n    const fillCtx = fillCanvas.context;\n\n    // The offset will be the top-left coordinate mask.\n    // If objToCanvas is [a,b,c,d,e,f] then:\n    //   - offsetX = min(a, c) + e\n    //   - offsetY = min(b, d) + f\n    const offsetX = minX;\n    const offsetY = minY;\n    fillCtx.translate(-offsetX, -offsetY);\n    fillCtx.transform(...maskToCanvas);\n\n    if (!scaled) {\n      // Pre-scale if needed to improve image smoothing.\n      scaled = this._scaleImage(\n        maskCanvas.canvas,\n        getCurrentTransformInverse(fillCtx)\n      );\n      scaled = scaled.img;\n      if (cache && isPatternFill) {\n        cache.set(cacheKey, scaled);\n      }\n    }\n\n    fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(\n      getCurrentTransform(fillCtx),\n      img.interpolate\n    );\n\n    drawImageAtIntegerCoords(\n      fillCtx,\n      scaled,\n      0,\n      0,\n      scaled.width,\n      scaled.height,\n      0,\n      0,\n      width,\n      height\n    );\n    fillCtx.globalCompositeOperation = \"source-in\";\n\n    const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [\n      1,\n      0,\n      0,\n      1,\n      -offsetX,\n      -offsetY,\n    ]);\n    fillCtx.fillStyle = isPatternFill\n      ? fillColor.getPattern(ctx, this, inverse, PathType.FILL, opIdx)\n      : fillColor;\n\n    fillCtx.fillRect(0, 0, width, height);\n\n    if (cache && !isPatternFill) {\n      // The fill canvas is put in the cache associated to the mask image\n      // so we must remove from the cached canvas: it mustn't be used again.\n      this.cachedCanvases.delete(\"fillCanvas\");\n      cache.set(cacheKey, fillCanvas.canvas);\n    }\n\n    this.dependencyTracker?.recordDependencies(\n      opIdx,\n      Dependencies.transformAndFill\n    );\n\n    // Round the offsets to avoid drawing fractional pixels.\n    return {\n      canvas: fillCanvas.canvas,\n      offsetX: Math.round(offsetX),\n      offsetY: Math.round(offsetY),\n    };\n  }\n\n  // Graphics state\n  setLineWidth(opIdx, width) {\n    this.dependencyTracker?.recordSimpleData(\"lineWidth\", opIdx);\n    if (width !== this.current.lineWidth) {\n      this._cachedScaleForStroking[0] = -1;\n    }\n    this.current.lineWidth = width;\n    this.ctx.lineWidth = width;\n  }\n\n  setLineCap(opIdx, style) {\n    this.dependencyTracker?.recordSimpleData(\"lineCap\", opIdx);\n    this.ctx.lineCap = LINE_CAP_STYLES[style];\n  }\n\n  setLineJoin(opIdx, style) {\n    this.dependencyTracker?.recordSimpleData(\"lineJoin\", opIdx);\n    this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n  }\n\n  setMiterLimit(opIdx, limit) {\n    this.dependencyTracker?.recordSimpleData(\"miterLimit\", opIdx);\n    this.ctx.miterLimit = limit;\n  }\n\n  setDash(opIdx, dashArray, dashPhase) {\n    this.dependencyTracker?.recordSimpleData(\"dash\", opIdx);\n    const ctx = this.ctx;\n    if (ctx.setLineDash !== undefined) {\n      ctx.setLineDash(dashArray);\n      ctx.lineDashOffset = dashPhase;\n    }\n  }\n\n  setRenderingIntent(opIdx, intent) {\n    // This operation is ignored since we haven't found a use case for it yet.\n  }\n\n  setFlatness(opIdx, flatness) {\n    // This operation is ignored since we haven't found a use case for it yet.\n  }\n\n  setGState(opIdx, states) {\n    for (const [key, value] of states) {\n      switch (key) {\n        case \"LW\":\n          this.setLineWidth(opIdx, value);\n          break;\n        case \"LC\":\n          this.setLineCap(opIdx, value);\n          break;\n        case \"LJ\":\n          this.setLineJoin(opIdx, value);\n          break;\n        case \"ML\":\n          this.setMiterLimit(opIdx, value);\n          break;\n        case \"D\":\n          this.setDash(opIdx, value[0], value[1]);\n          break;\n        case \"RI\":\n          this.setRenderingIntent(opIdx, value);\n          break;\n        case \"FL\":\n          this.setFlatness(opIdx, value);\n          break;\n        case \"Font\":\n          this.setFont(opIdx, value[0], value[1]);\n          break;\n        case \"CA\":\n          this.dependencyTracker?.recordSimpleData(\"strokeAlpha\", opIdx);\n          this.current.strokeAlpha = value;\n          break;\n        case \"ca\":\n          this.dependencyTracker?.recordSimpleData(\"fillAlpha\", opIdx);\n          this.ctx.globalAlpha = this.current.fillAlpha = value;\n          break;\n        case \"BM\":\n          this.dependencyTracker?.recordSimpleData(\n            \"globalCompositeOperation\",\n            opIdx\n          );\n          this.ctx.globalCompositeOperation = value;\n          break;\n        case \"SMask\":\n          this.dependencyTracker?.recordSimpleData(\"SMask\", opIdx);\n          this.current.activeSMask = value ? this.tempSMask : null;\n          this.tempSMask = null;\n          this.checkSMaskState();\n          break;\n        case \"TR\":\n          this.dependencyTracker?.recordSimpleData(\"filter\", opIdx);\n          this.ctx.filter = this.current.transferMaps =\n            this.filterFactory.addFilter(value);\n          break;\n      }\n    }\n  }\n\n  get inSMaskMode() {\n    return !!this.suspendedCtx;\n  }\n\n  checkSMaskState() {\n    const inSMaskMode = this.inSMaskMode;\n    if (this.current.activeSMask && !inSMaskMode) {\n      this.beginSMaskMode();\n    } else if (!this.current.activeSMask && inSMaskMode) {\n      this.endSMaskMode();\n    }\n    // Else, the state is okay and nothing needs to be done.\n  }\n\n  /**\n   * Soft mask mode takes the current main drawing canvas and replaces it with\n   * a temporary canvas. Any drawing operations that happen on the temporary\n   * canvas need to be composed with the main canvas that was suspended (see\n   * `compose()`). The temporary canvas also duplicates many of its operations\n   * on the suspended canvas to keep them in sync, so that when the soft mask\n   * mode ends any clipping paths or transformations will still be active and in\n   * the right order on the canvas' graphics state stack.\n   */\n  beginSMaskMode(opIdx) {\n    if (this.inSMaskMode) {\n      throw new Error(\"beginSMaskMode called while already in smask mode\");\n    }\n    const drawnWidth = this.ctx.canvas.width;\n    const drawnHeight = this.ctx.canvas.height;\n    const cacheId = \"smaskGroupAt\" + this.groupLevel;\n    const scratchCanvas = this.cachedCanvases.getCanvas(\n      cacheId,\n      drawnWidth,\n      drawnHeight\n    );\n    this.suspendedCtx = this.ctx;\n    const ctx = (this.ctx = scratchCanvas.context);\n    ctx.setTransform(this.suspendedCtx.getTransform());\n    copyCtxState(this.suspendedCtx, ctx);\n    mirrorContextOperations(ctx, this.suspendedCtx);\n\n    this.setGState(opIdx, [[\"BM\", \"source-over\"]]);\n  }\n\n  endSMaskMode() {\n    if (!this.inSMaskMode) {\n      throw new Error(\"endSMaskMode called while not in smask mode\");\n    }\n    // The soft mask is done, now restore the suspended canvas as the main\n    // drawing canvas.\n    this.ctx._removeMirroring();\n    copyCtxState(this.ctx, this.suspendedCtx);\n    this.ctx = this.suspendedCtx;\n\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    const smask = this.current.activeSMask;\n    const suspendedCtx = this.suspendedCtx;\n\n    this.composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n    // Whatever was drawn has been moved to the suspended canvas, now clear it\n    // out of the current canvas.\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  composeSMask(ctx, smask, layerCtx, layerBox) {\n    const layerOffsetX = layerBox[0];\n    const layerOffsetY = layerBox[1];\n    const layerWidth = layerBox[2] - layerOffsetX;\n    const layerHeight = layerBox[3] - layerOffsetY;\n    if (layerWidth === 0 || layerHeight === 0) {\n      return;\n    }\n    this.genericComposeSMask(\n      smask.context,\n      layerCtx,\n      layerWidth,\n      layerHeight,\n      smask.subtype,\n      smask.backdrop,\n      smask.transferMap,\n      layerOffsetX,\n      layerOffsetY,\n      smask.offsetX,\n      smask.offsetY\n    );\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\n  genericComposeSMask(\n    maskCtx,\n    layerCtx,\n    width,\n    height,\n    subtype,\n    backdrop,\n    transferMap,\n    layerOffsetX,\n    layerOffsetY,\n    maskOffsetX,\n    maskOffsetY\n  ) {\n    let maskCanvas = maskCtx.canvas;\n    let maskX = layerOffsetX - maskOffsetX;\n    let maskY = layerOffsetY - maskOffsetY;\n\n    if (backdrop) {\n      if (\n        maskX < 0 ||\n        maskY < 0 ||\n        maskX + width > maskCanvas.width ||\n        maskY + height > maskCanvas.height\n      ) {\n        const canvas = this.cachedCanvases.getCanvas(\n          \"maskExtension\",\n          width,\n          height\n        );\n        const ctx = canvas.context;\n        ctx.drawImage(maskCanvas, -maskX, -maskY);\n        ctx.globalCompositeOperation = \"destination-atop\";\n        ctx.fillStyle = backdrop;\n        ctx.fillRect(0, 0, width, height);\n        ctx.globalCompositeOperation = \"source-over\";\n\n        maskCanvas = canvas.canvas;\n        maskX = maskY = 0;\n      } else {\n        maskCtx.save();\n        maskCtx.globalAlpha = 1;\n        maskCtx.setTransform(1, 0, 0, 1, 0, 0);\n        const clip = new Path2D();\n        clip.rect(maskX, maskY, width, height);\n        maskCtx.clip(clip);\n        maskCtx.globalCompositeOperation = \"destination-atop\";\n        maskCtx.fillStyle = backdrop;\n        maskCtx.fillRect(maskX, maskY, width, height);\n        maskCtx.restore();\n      }\n    }\n\n    layerCtx.save();\n    layerCtx.globalAlpha = 1;\n    layerCtx.setTransform(1, 0, 0, 1, 0, 0);\n\n    if (subtype === \"Alpha\" && transferMap) {\n      layerCtx.filter = this.filterFactory.addAlphaFilter(transferMap);\n    } else if (subtype === \"Luminosity\") {\n      layerCtx.filter = this.filterFactory.addLuminosityFilter(transferMap);\n    }\n\n    const clip = new Path2D();\n    clip.rect(layerOffsetX, layerOffsetY, width, height);\n    layerCtx.clip(clip);\n    layerCtx.globalCompositeOperation = \"destination-in\";\n    layerCtx.drawImage(\n      maskCanvas,\n      maskX,\n      maskY,\n      width,\n      height,\n      layerOffsetX,\n      layerOffsetY,\n      width,\n      height\n    );\n    layerCtx.restore();\n  }\n\n  save(opIdx) {\n    if (this.inSMaskMode) {\n      // SMask mode may be turned on/off causing us to lose graphics state.\n      // Copy the temporary canvas state to the main(suspended) canvas to keep\n      // it in sync.\n      copyCtxState(this.ctx, this.suspendedCtx);\n    }\n    this.ctx.save();\n    const old = this.current;\n    this.stateStack.push(old);\n    this.current = old.clone();\n    this.dependencyTracker?.save(opIdx);\n  }\n\n  restore(opIdx) {\n    this.dependencyTracker?.restore(opIdx);\n\n    if (this.stateStack.length === 0) {\n      if (this.inSMaskMode) {\n        this.endSMaskMode();\n      }\n      return;\n    }\n\n    this.current = this.stateStack.pop();\n    this.ctx.restore();\n    if (this.inSMaskMode) {\n      // Graphics state is stored on the main(suspended) canvas. Restore its\n      // state then copy it over to the temporary canvas.\n      copyCtxState(this.suspendedCtx, this.ctx);\n    }\n    this.checkSMaskState();\n\n    // Ensure that the clipping path is reset (fixes issue6413.pdf).\n    this.pendingClip = null;\n\n    this._cachedScaleForStroking[0] = -1;\n    this._cachedGetSinglePixelWidth = null;\n  }\n\n  transform(opIdx, a, b, c, d, e, f) {\n    this.dependencyTracker?.recordIncrementalData(\"transform\", opIdx);\n    this.ctx.transform(a, b, c, d, e, f);\n\n    this._cachedScaleForStroking[0] = -1;\n    this._cachedGetSinglePixelWidth = null;\n  }\n\n  // Path\n  constructPath(opIdx, op, data, minMax) {\n    let [path] = data;\n    if (!minMax) {\n      // The path is empty, so no need to update the current minMax.\n      path ||= data[0] = new Path2D();\n      this[op](opIdx, path);\n      return;\n    }\n\n    if (this.dependencyTracker !== null) {\n      const outerExtraSize = op === OPS.stroke ? this.current.lineWidth / 2 : 0;\n      this.dependencyTracker\n        .resetBBox(opIdx)\n        .recordBBox(\n          opIdx,\n          this.ctx,\n          minMax[0] - outerExtraSize,\n          minMax[2] + outerExtraSize,\n          minMax[1] - outerExtraSize,\n          minMax[3] + outerExtraSize\n        )\n        .recordDependencies(opIdx, [\"transform\"]);\n    }\n\n    if (!(path instanceof Path2D)) {\n      // Using a SVG string is slightly slower than using the following loop.\n      const path2d = (data[0] = new Path2D());\n      for (let i = 0, ii = path.length; i < ii; ) {\n        switch (path[i++]) {\n          case DrawOPS.moveTo:\n            path2d.moveTo(path[i++], path[i++]);\n            break;\n          case DrawOPS.lineTo:\n            path2d.lineTo(path[i++], path[i++]);\n            break;\n          case DrawOPS.curveTo:\n            path2d.bezierCurveTo(\n              path[i++],\n              path[i++],\n              path[i++],\n              path[i++],\n              path[i++],\n              path[i++]\n            );\n            break;\n          case DrawOPS.closePath:\n            path2d.closePath();\n            break;\n          default:\n            warn(`Unrecognized drawing path operator: ${path[i - 1]}`);\n            break;\n        }\n      }\n      path = path2d;\n    }\n    Util.axialAlignedBoundingBox(\n      minMax,\n      getCurrentTransform(this.ctx),\n      this.current.minMax\n    );\n    this[op](opIdx, path);\n\n    this._pathStartIdx = opIdx;\n  }\n\n  closePath(opIdx) {\n    this.ctx.closePath();\n  }\n\n  stroke(opIdx, path, consumePath = true) {\n    const ctx = this.ctx;\n    const strokeColor = this.current.strokeColor;\n    // For stroke we want to temporarily change the global alpha to the\n    // stroking alpha.\n    ctx.globalAlpha = this.current.strokeAlpha;\n    if (this.contentVisible) {\n      if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n        const baseTransform = strokeColor.isModifyingCurrentTransform()\n          ? ctx.getTransform()\n          : null;\n        ctx.save();\n        ctx.strokeStyle = strokeColor.getPattern(\n          ctx,\n          this,\n          getCurrentTransformInverse(ctx),\n          PathType.STROKE,\n          opIdx\n        );\n        if (baseTransform) {\n          const newPath = new Path2D();\n          newPath.addPath(\n            path,\n            ctx.getTransform().invertSelf().multiplySelf(baseTransform)\n          );\n          path = newPath;\n        }\n        this.rescaleAndStroke(path, /* saveRestore */ false);\n        ctx.restore();\n      } else {\n        this.rescaleAndStroke(path, /* saveRestore */ true);\n      }\n    }\n\n    this.dependencyTracker?.recordDependencies(opIdx, Dependencies.stroke);\n\n    if (consumePath) {\n      this.consumePath(\n        opIdx,\n        path,\n        this.current.getClippedPathBoundingBox(\n          PathType.STROKE,\n          getCurrentTransform(this.ctx)\n        )\n      );\n    }\n\n    // Restore the global alpha to the fill alpha\n    ctx.globalAlpha = this.current.fillAlpha;\n  }\n\n  closeStroke(opIdx, path) {\n    this.stroke(opIdx, path);\n  }\n\n  fill(opIdx, path, consumePath = true) {\n    const ctx = this.ctx;\n    const fillColor = this.current.fillColor;\n    const isPatternFill = this.current.patternFill;\n    let needRestore = false;\n\n    if (isPatternFill) {\n      const baseTransform = fillColor.isModifyingCurrentTransform()\n        ? ctx.getTransform()\n        : null;\n      this.dependencyTracker?.save(opIdx);\n      ctx.save();\n      ctx.fillStyle = fillColor.getPattern(\n        ctx,\n        this,\n        getCurrentTransformInverse(ctx),\n        PathType.FILL,\n        opIdx\n      );\n      if (baseTransform) {\n        const newPath = new Path2D();\n        newPath.addPath(\n          path,\n          ctx.getTransform().invertSelf().multiplySelf(baseTransform)\n        );\n        path = newPath;\n      }\n      needRestore = true;\n    }\n\n    const intersect = this.current.getClippedPathBoundingBox();\n    if (this.contentVisible && intersect !== null) {\n      if (this.pendingEOFill) {\n        ctx.fill(path, \"evenodd\");\n        this.pendingEOFill = false;\n      } else {\n        ctx.fill(path);\n      }\n    }\n\n    this.dependencyTracker?.recordDependencies(opIdx, Dependencies.fill);\n\n    if (needRestore) {\n      ctx.restore();\n      this.dependencyTracker?.restore(opIdx);\n    }\n    if (consumePath) {\n      this.consumePath(opIdx, path, intersect);\n    }\n  }\n\n  eoFill(opIdx, path) {\n    this.pendingEOFill = true;\n    this.fill(opIdx, path);\n  }\n\n  fillStroke(opIdx, path) {\n    this.fill(opIdx, path, false);\n    this.stroke(opIdx, path, false);\n\n    this.consumePath(opIdx, path);\n  }\n\n  eoFillStroke(opIdx, path) {\n    this.pendingEOFill = true;\n    this.fillStroke(opIdx, path);\n  }\n\n  closeFillStroke(opIdx, path) {\n    this.fillStroke(opIdx, path);\n  }\n\n  closeEOFillStroke(opIdx, path) {\n    this.pendingEOFill = true;\n    this.fillStroke(opIdx, path);\n  }\n\n  endPath(opIdx, path) {\n    this.consumePath(opIdx, path);\n  }\n\n  rawFillPath(opIdx, path) {\n    this.ctx.fill(path);\n    this.dependencyTracker\n      ?.recordDependencies(opIdx, Dependencies.rawFillPath)\n      .recordOperation(opIdx);\n  }\n\n  // Clipping\n  clip(opIdx) {\n    this.dependencyTracker?.recordFutureForcedDependency(\"clipMode\", opIdx);\n    this.pendingClip = NORMAL_CLIP;\n  }\n\n  eoClip(opIdx) {\n    this.dependencyTracker?.recordFutureForcedDependency(\"clipMode\", opIdx);\n    this.pendingClip = EO_CLIP;\n  }\n\n  // Text\n  beginText(opIdx) {\n    this.current.textMatrix = null;\n    this.current.textMatrixScale = 1;\n    this.current.x = this.current.lineX = 0;\n    this.current.y = this.current.lineY = 0;\n\n    this.dependencyTracker\n      ?.recordOpenMarker(opIdx)\n      .resetIncrementalData(\"sameLineText\")\n      .resetIncrementalData(\"moveText\", opIdx);\n  }\n\n  endText(opIdx) {\n    const paths = this.pendingTextPaths;\n    const ctx = this.ctx;\n\n    if (this.dependencyTracker) {\n      const { dependencyTracker } = this;\n      if (paths !== undefined) {\n        dependencyTracker\n          .recordFutureForcedDependency(\n            \"textClip\",\n            dependencyTracker.getOpenMarker()\n          )\n          .recordFutureForcedDependency(\"textClip\", opIdx);\n      }\n      dependencyTracker.recordCloseMarker(opIdx);\n    }\n\n    if (paths !== undefined) {\n      const newPath = new Path2D();\n      const invTransf = ctx.getTransform().invertSelf();\n      for (const { transform, x, y, fontSize, path } of paths) {\n        if (!path) {\n          continue; // Skip empty paths.\n        }\n        newPath.addPath(\n          path,\n          new DOMMatrix(transform)\n            .preMultiplySelf(invTransf)\n            .translate(x, y)\n            .scale(fontSize, -fontSize)\n        );\n      }\n\n      ctx.clip(newPath);\n    }\n    delete this.pendingTextPaths;\n  }\n\n  setCharSpacing(opIdx, spacing) {\n    this.dependencyTracker?.recordSimpleData(\"charSpacing\", opIdx);\n    this.current.charSpacing = spacing;\n  }\n\n  setWordSpacing(opIdx, spacing) {\n    this.dependencyTracker?.recordSimpleData(\"wordSpacing\", opIdx);\n    this.current.wordSpacing = spacing;\n  }\n\n  setHScale(opIdx, scale) {\n    this.dependencyTracker?.recordSimpleData(\"hScale\", opIdx);\n    this.current.textHScale = scale / 100;\n  }\n\n  setLeading(opIdx, leading) {\n    this.dependencyTracker?.recordSimpleData(\"leading\", opIdx);\n    this.current.leading = -leading;\n  }\n\n  setFont(opIdx, fontRefName, size) {\n    this.dependencyTracker\n      ?.recordSimpleData(\"font\", opIdx)\n      .recordSimpleDataFromNamed(\"fontObj\", fontRefName, opIdx);\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    current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n\n    // A valid matrix needs all main diagonal elements to be non-zero\n    // This also ensures we bypass FF bugzilla bug #719844.\n    if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n      warn(\"Invalid font matrix for font \" + fontRefName);\n    }\n\n    // The spec for Tf (setFont) says that 'size' specifies the font 'scale',\n    // and in some docs this can be negative (inverted x-y axes).\n    if (size < 0) {\n      size = -size;\n      current.fontDirection = -1;\n    } else {\n      current.fontDirection = 1;\n    }\n\n    this.current.font = fontObj;\n    this.current.fontSize = size;\n\n    if (fontObj.isType3Font) {\n      return; // we don't need ctx.font for Type3 fonts\n    }\n\n    const name = fontObj.loadedName || \"sans-serif\";\n    const typeface =\n      fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\n\n    let bold = \"normal\";\n    if (fontObj.black) {\n      bold = \"900\";\n    } else if (fontObj.bold) {\n      bold = \"bold\";\n    }\n    const italic = fontObj.italic ? \"italic\" : \"normal\";\n\n    // Some font backends cannot handle fonts below certain size.\n    // Keeping the font at minimal size and using the fontSizeScale to change\n    // the current transformation matrix before the fillText/strokeText.\n    // See https://bugzilla.mozilla.org/show_bug.cgi?id=726227\n    let browserFontSize = size;\n    if (size < MIN_FONT_SIZE) {\n      browserFontSize = MIN_FONT_SIZE;\n    } else if (size > MAX_FONT_SIZE) {\n      browserFontSize = MAX_FONT_SIZE;\n    }\n    this.current.fontSizeScale = size / browserFontSize;\n\n    this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n  }\n\n  setTextRenderingMode(opIdx, mode) {\n    this.dependencyTracker?.recordSimpleData(\"textRenderingMode\", opIdx);\n    this.current.textRenderingMode = mode;\n  }\n\n  setTextRise(opIdx, rise) {\n    this.dependencyTracker?.recordSimpleData(\"textRise\", opIdx);\n    this.current.textRise = rise;\n  }\n\n  moveText(opIdx, x, y) {\n    this.dependencyTracker\n      ?.resetIncrementalData(\"sameLineText\")\n      .recordIncrementalData(\"moveText\", opIdx);\n    this.current.x = this.current.lineX += x;\n    this.current.y = this.current.lineY += y;\n  }\n\n  setLeadingMoveText(opIdx, x, y) {\n    this.setLeading(opIdx, -y);\n    this.moveText(opIdx, x, y);\n  }\n\n  setTextMatrix(opIdx, matrix) {\n    this.dependencyTracker?.recordSimpleData(\"textMatrix\", opIdx);\n    const { current } = this;\n    current.textMatrix = matrix;\n    current.textMatrixScale = Math.hypot(matrix[0], matrix[1]);\n\n    current.x = current.lineX = 0;\n    current.y = current.lineY = 0;\n  }\n\n  nextLine(opIdx) {\n    this.moveText(opIdx, 0, this.current.leading);\n\n    this.dependencyTracker?.recordIncrementalData(\n      \"moveText\",\n      // 'leading' affects 'nextLine' operations. Rather than dealing\n      // with transitive dependencies, just mark everything that depends on\n      // the 'moveText' operation as depending on the 'leading' value.\n      this.dependencyTracker.getSimpleIndex(\"leading\") ?? opIdx\n    );\n  }\n\n  #getScaledPath(path, currentTransform, transform) {\n    const newPath = new Path2D();\n    newPath.addPath(\n      path,\n      new DOMMatrix(transform).invertSelf().multiplySelf(currentTransform)\n    );\n    return newPath;\n  }\n\n  paintChar(\n    opIdx,\n    character,\n    x,\n    y,\n    patternFillTransform,\n    patternStrokeTransform\n  ) {\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 =\n      textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n    const isAddToPathSet = !!(\n      textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\n    );\n    const patternFill = current.patternFill && !font.missingFile;\n    const patternStroke = current.patternStroke && !font.missingFile;\n\n    let path;\n    if (\n      (font.disableFontFace ||\n        isAddToPathSet ||\n        patternFill ||\n        patternStroke) &&\n      !font.missingFile\n    ) {\n      path = font.getPathGenerator(this.commonObjs, character);\n    }\n\n    if (path && (font.disableFontFace || patternFill || patternStroke)) {\n      ctx.save();\n      ctx.translate(x, y);\n      ctx.scale(fontSize, -fontSize);\n\n      this.dependencyTracker?.recordCharacterBBox(opIdx, ctx, font);\n\n      let currentTransform;\n      if (\n        fillStrokeMode === TextRenderingMode.FILL ||\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\n      ) {\n        if (patternFillTransform) {\n          currentTransform = ctx.getTransform();\n          ctx.setTransform(...patternFillTransform);\n          const scaledPath = this.#getScaledPath(\n            path,\n            currentTransform,\n            patternFillTransform\n          );\n          ctx.fill(scaledPath);\n        } else {\n          ctx.fill(path);\n        }\n      }\n      if (\n        fillStrokeMode === TextRenderingMode.STROKE ||\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\n      ) {\n        if (patternStrokeTransform) {\n          currentTransform ||= ctx.getTransform();\n          ctx.setTransform(...patternStrokeTransform);\n          const { a, b, c, d } = currentTransform;\n          const invPatternTransform = Util.inverseTransform(\n            patternStrokeTransform\n          );\n          const transf = Util.transform(\n            [a, b, c, d, 0, 0],\n            invPatternTransform\n          );\n          Util.singularValueDecompose2dScale(transf, XY);\n\n          // Cancel the pattern scaling of the line width.\n          // If sx and sy are different, unfortunately we can't do anything and\n          // we'll have a rendering bug.\n          ctx.lineWidth *= Math.max(XY[0], XY[1]) / fontSize;\n          ctx.stroke(\n            this.#getScaledPath(path, currentTransform, patternStrokeTransform)\n          );\n        } else {\n          ctx.lineWidth /= fontSize;\n          ctx.stroke(path);\n        }\n      }\n      ctx.restore();\n    } else {\n      if (\n        fillStrokeMode === TextRenderingMode.FILL ||\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\n      ) {\n        ctx.fillText(character, x, y);\n        this.dependencyTracker?.recordCharacterBBox(\n          opIdx,\n          ctx,\n          font,\n          fontSize,\n          x,\n          y,\n          () => ctx.measureText(character)\n        );\n      }\n      if (\n        fillStrokeMode === TextRenderingMode.STROKE ||\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\n      ) {\n        if (this.dependencyTracker) {\n          this.dependencyTracker\n            ?.recordCharacterBBox(opIdx, ctx, font, fontSize, x, y, () =>\n              ctx.measureText(character)\n            )\n            .recordDependencies(opIdx, Dependencies.stroke);\n        }\n        ctx.strokeText(character, x, y);\n      }\n    }\n\n    if (isAddToPathSet) {\n      const paths = (this.pendingTextPaths ||= []);\n      paths.push({\n        transform: getCurrentTransform(ctx),\n        x,\n        y,\n        fontSize,\n        path,\n      });\n      this.dependencyTracker?.recordCharacterBBox(\n        opIdx,\n        ctx,\n        font,\n        fontSize,\n        x,\n        y\n      );\n    }\n  }\n\n  get isFontSubpixelAAEnabled() {\n    // Checks if anti-aliasing is enabled when scaled text is painted.\n    // On Windows GDI scaled fonts looks bad.\n    const { context: ctx } = this.cachedCanvases.getCanvas(\n      \"isFontSubpixelAAEnabled\",\n      10,\n      10\n    );\n    ctx.scale(1.5, 1);\n    ctx.fillText(\"I\", 0, 10);\n    const data = ctx.getImageData(0, 0, 10, 10).data;\n    let enabled = false;\n    for (let i = 3; i < data.length; i += 4) {\n      if (data[i] > 0 && data[i] < 255) {\n        enabled = true;\n        break;\n      }\n    }\n    return shadow(this, \"isFontSubpixelAAEnabled\", enabled);\n  }\n\n  showText(opIdx, glyphs) {\n    if (this.dependencyTracker) {\n      this.dependencyTracker\n        .recordDependencies(opIdx, Dependencies.showText)\n        .resetBBox(opIdx);\n      if (this.current.textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG) {\n        this.dependencyTracker\n          .recordFutureForcedDependency(\"textClip\", opIdx)\n          .inheritPendingDependenciesAsFutureForcedDependencies();\n      }\n    }\n\n    const current = this.current;\n    const font = current.font;\n    if (font.isType3Font) {\n      this.showType3Text(opIdx, glyphs);\n      this.dependencyTracker?.recordShowTextOperation(opIdx);\n      return undefined;\n    }\n\n    const fontSize = current.fontSize;\n    if (fontSize === 0) {\n      this.dependencyTracker?.recordOperation(opIdx);\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\n    const simpleFillText =\n      current.textRenderingMode === TextRenderingMode.FILL &&\n      !font.disableFontFace &&\n      !current.patternFill;\n\n    ctx.save();\n    if (current.textMatrix) {\n      ctx.transform(...current.textMatrix);\n    }\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 patternFillTransform, patternStrokeTransform;\n    if (current.patternFill) {\n      ctx.save();\n      const pattern = current.fillColor.getPattern(\n        ctx,\n        this,\n        getCurrentTransformInverse(ctx),\n        PathType.FILL,\n        opIdx\n      );\n      patternFillTransform = getCurrentTransform(ctx);\n      ctx.restore();\n      ctx.fillStyle = pattern;\n    }\n\n    if (current.patternStroke) {\n      ctx.save();\n      const pattern = current.strokeColor.getPattern(\n        ctx,\n        this,\n        getCurrentTransformInverse(ctx),\n        PathType.STROKE,\n        opIdx\n      );\n      patternStrokeTransform = getCurrentTransform(ctx);\n      ctx.restore();\n      ctx.strokeStyle = pattern;\n    }\n\n    let lineWidth = current.lineWidth;\n    const scale = current.textMatrixScale;\n    if (scale === 0 || lineWidth === 0) {\n      const fillStrokeMode =\n        current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n      if (\n        fillStrokeMode === TextRenderingMode.STROKE ||\n        fillStrokeMode === TextRenderingMode.FILL_STROKE\n      ) {\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\n    if (font.isInvalidPDFjsFont) {\n      const chars = [];\n      let width = 0;\n      for (const glyph of glyphs) {\n        chars.push(glyph.unicode);\n        width += glyph.width;\n      }\n      const joinedChars = chars.join(\"\");\n      ctx.fillText(joinedChars, 0, 0);\n      if (this.dependencyTracker !== null) {\n        const measure = ctx.measureText(joinedChars);\n        this.dependencyTracker\n          .recordBBox(\n            opIdx,\n            this.ctx,\n            -measure.actualBoundingBoxLeft,\n            measure.actualBoundingBoxRight,\n            -measure.actualBoundingBoxAscent,\n            measure.actualBoundingBoxDescent\n          )\n          .recordShowTextOperation(opIdx);\n      }\n      current.x += width * widthAdvanceScale * textHScale;\n      ctx.restore();\n      this.compose();\n      return undefined;\n    }\n\n    let x = 0,\n      i;\n    for (i = 0; i < glyphsLength; ++i) {\n      const glyph = glyphs[i];\n      if (typeof glyph === \"number\") {\n        x += (spacingDir * glyph * fontSize) / 1000;\n        continue;\n      }\n\n      let restoreNeeded = false;\n      const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n      const character = glyph.fontChar;\n      const accent = glyph.accent;\n      let scaledX, scaledY;\n      let width = glyph.width;\n      if (vertical) {\n        const vmetric = glyph.vmetric || defaultVMetrics;\n        const vx =\n          -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n        const vy = vmetric[2] * widthAdvanceScale;\n\n        width = vmetric ? -vmetric[0] : width;\n        scaledX = vx / fontSizeScale;\n        scaledY = (x + vy) / fontSizeScale;\n      } else {\n        scaledX = x / fontSizeScale;\n        scaledY = 0;\n      }\n\n      let measure;\n\n      if (font.remeasure && width > 0) {\n        measure = ctx.measureText(character);\n\n        // Some standard fonts may not have the exact width: rescale per\n        // character if measured width is greater than expected glyph width\n        // and subpixel-aa is enabled, otherwise just center the glyph.\n        const measuredWidth =\n          ((measure.width * 1000) / fontSize) * fontSizeScale;\n        if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n          const characterScaleX = width / measuredWidth;\n          restoreNeeded = true;\n          ctx.save();\n          ctx.scale(characterScaleX, 1);\n          scaledX /= characterScaleX;\n        } else if (width !== measuredWidth) {\n          scaledX +=\n            (((width - measuredWidth) / 2000) * fontSize) / fontSizeScale;\n        }\n      }\n\n      // Only attempt to draw the glyph if it is actually in the embedded font\n      // file or if there isn't a font file so the fallback font is shown.\n      if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n        if (simpleFillText && !accent) {\n          // common case\n          ctx.fillText(character, scaledX, scaledY);\n\n          this.dependencyTracker?.recordCharacterBBox(\n            opIdx,\n            ctx,\n            // If we already measured the character, force usage of that\n            measure ? { bbox: null } : font,\n            fontSize / fontSizeScale,\n            scaledX,\n            scaledY,\n            () => measure ?? ctx.measureText(character)\n          );\n        } else {\n          this.paintChar(\n            opIdx,\n            character,\n            scaledX,\n            scaledY,\n            patternFillTransform,\n            patternStrokeTransform\n          );\n          if (accent) {\n            const scaledAccentX =\n              scaledX + (fontSize * accent.offset.x) / fontSizeScale;\n            const scaledAccentY =\n              scaledY - (fontSize * accent.offset.y) / fontSizeScale;\n            this.paintChar(\n              opIdx,\n              accent.fontChar,\n              scaledAccentX,\n              scaledAccentY,\n              patternFillTransform,\n              patternStrokeTransform\n            );\n          }\n        }\n      }\n\n      const charWidth = vertical\n        ? width * widthAdvanceScale - spacing * fontDirection\n        : width * widthAdvanceScale + spacing * fontDirection;\n      x += charWidth;\n\n      if (restoreNeeded) {\n        ctx.restore();\n      }\n    }\n    if (vertical) {\n      current.y -= x;\n    } else {\n      current.x += x * textHScale;\n    }\n    ctx.restore();\n    this.compose();\n\n    this.dependencyTracker?.recordShowTextOperation(opIdx);\n    return undefined;\n  }\n\n  showType3Text(opIdx, glyphs) {\n    // Type3 fonts - each glyph is a \"mini-PDF\"\n    const ctx = this.ctx;\n    const current = this.current;\n    const font = current.font;\n    const fontSize = current.fontSize;\n    const fontDirection = current.fontDirection;\n    const spacingDir = font.vertical ? 1 : -1;\n    const charSpacing = current.charSpacing;\n    const wordSpacing = current.wordSpacing;\n    const textHScale = current.textHScale * fontDirection;\n    const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n    const glyphsLength = glyphs.length;\n    const isTextInvisible =\n      current.textRenderingMode === TextRenderingMode.INVISIBLE;\n    let i, glyph, width, spacingLength;\n\n    if (isTextInvisible || fontSize === 0) {\n      return;\n    }\n    this._cachedScaleForStroking[0] = -1;\n    this._cachedGetSinglePixelWidth = null;\n\n    ctx.save();\n    if (current.textMatrix) {\n      ctx.transform(...current.textMatrix);\n    }\n    ctx.translate(current.x, current.y + current.textRise);\n\n    ctx.scale(textHScale, fontDirection);\n\n    // Type3 fonts have their own operator list. Avoid mixing it up with the\n    // dependency tracker of the main operator list.\n    const dependencyTracker = this.dependencyTracker;\n    this.dependencyTracker = dependencyTracker\n      ? new CanvasNestedDependencyTracker(dependencyTracker, opIdx)\n      : null;\n\n    for (i = 0; i < glyphsLength; ++i) {\n      glyph = glyphs[i];\n      if (typeof glyph === \"number\") {\n        spacingLength = (spacingDir * glyph * fontSize) / 1000;\n        this.ctx.translate(spacingLength, 0);\n        current.x += spacingLength * textHScale;\n        continue;\n      }\n\n      const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n      const operatorList = font.charProcOperatorList[glyph.operatorListId];\n      if (!operatorList) {\n        warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n      } else if (this.contentVisible) {\n        this.save();\n        ctx.scale(fontSize, fontSize);\n        ctx.transform(...fontMatrix);\n        this.executeOperatorList(operatorList);\n        this.restore();\n      }\n\n      const p = [glyph.width, 0];\n      Util.applyTransform(p, fontMatrix);\n      width = p[0] * fontSize + spacing;\n\n      ctx.translate(width, 0);\n      current.x += width * textHScale;\n    }\n    ctx.restore();\n    if (dependencyTracker) {\n      this.dependencyTracker = dependencyTracker;\n    }\n  }\n\n  // Type3 fonts\n  setCharWidth(opIdx, xWidth, yWidth) {\n    // We can safely ignore this since the width should be the same\n    // as the width in the Widths array.\n  }\n\n  setCharWidthAndBounds(opIdx, xWidth, yWidth, llx, lly, urx, ury) {\n    const clip = new Path2D();\n    clip.rect(llx, lly, urx - llx, ury - lly);\n    this.ctx.clip(clip);\n    this.dependencyTracker\n      ?.recordBBox(opIdx, this.ctx, llx, urx, lly, ury)\n      .recordClipBox(opIdx, this.ctx, llx, urx, lly, ury);\n    this.endPath(opIdx);\n  }\n\n  // Color\n  getColorN_Pattern(opIdx, IR) {\n    let pattern;\n    if (IR[0] === \"TilingPattern\") {\n      const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\n      const canvasGraphicsFactory = {\n        createCanvasGraphics: (ctx, renderingOpIdx) =>\n          new CanvasGraphics(\n            ctx,\n            this.commonObjs,\n            this.objs,\n            this.canvasFactory,\n            this.filterFactory,\n            {\n              optionalContentConfig: this.optionalContentConfig,\n              markedContentStack: this.markedContentStack,\n            },\n            undefined,\n            undefined,\n            this.dependencyTracker\n              ? new CanvasNestedDependencyTracker(\n                  this.dependencyTracker,\n                  renderingOpIdx,\n                  /* ignoreBBoxes */ true\n                )\n              : null\n          ),\n      };\n      pattern = new TilingPattern(\n        IR,\n        this.ctx,\n        canvasGraphicsFactory,\n        baseTransform\n      );\n    } else {\n      pattern = this._getPattern(opIdx, IR[1], IR[2]);\n    }\n    return pattern;\n  }\n\n  setStrokeColorN(opIdx, ...args) {\n    this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n    this.current.strokeColor = this.getColorN_Pattern(opIdx, args);\n    this.current.patternStroke = true;\n  }\n\n  setFillColorN(opIdx, ...args) {\n    this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n    this.current.fillColor = this.getColorN_Pattern(opIdx, args);\n    this.current.patternFill = true;\n  }\n\n  setStrokeRGBColor(opIdx, color) {\n    this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n    this.ctx.strokeStyle = this.current.strokeColor = color;\n    this.current.patternStroke = false;\n  }\n\n  setStrokeTransparent(opIdx) {\n    this.dependencyTracker?.recordSimpleData(\"strokeColor\", opIdx);\n    this.ctx.strokeStyle = this.current.strokeColor = \"transparent\";\n    this.current.patternStroke = false;\n  }\n\n  setFillRGBColor(opIdx, color) {\n    this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n    this.ctx.fillStyle = this.current.fillColor = color;\n    this.current.patternFill = false;\n  }\n\n  setFillTransparent(opIdx) {\n    this.dependencyTracker?.recordSimpleData(\"fillColor\", opIdx);\n    this.ctx.fillStyle = this.current.fillColor = \"transparent\";\n    this.current.patternFill = false;\n  }\n\n  _getPattern(opIdx, objId, matrix = null) {\n    let pattern;\n    if (this.cachedPatterns.has(objId)) {\n      pattern = this.cachedPatterns.get(objId);\n    } else {\n      pattern = getShadingPattern(this.getObject(opIdx, objId));\n      this.cachedPatterns.set(objId, pattern);\n    }\n    if (matrix) {\n      pattern.matrix = matrix;\n    }\n    return pattern;\n  }\n\n  shadingFill(opIdx, objId) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const ctx = this.ctx;\n\n    this.save(opIdx);\n    const pattern = this._getPattern(opIdx, objId);\n    ctx.fillStyle = pattern.getPattern(\n      ctx,\n      this,\n      getCurrentTransformInverse(ctx),\n      PathType.SHADING,\n      opIdx\n    );\n\n    const inv = getCurrentTransformInverse(ctx);\n    if (inv) {\n      const { width, height } = ctx.canvas;\n      const minMax = MIN_MAX_INIT.slice();\n      Util.axialAlignedBoundingBox([0, 0, width, height], inv, minMax);\n      const [x0, y0, x1, y1] = minMax;\n\n      this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n    } else {\n      // HACK to draw the gradient onto an infinite rectangle.\n      // PDF gradients are drawn across the entire image while\n      // Canvas only allows gradients to be drawn in a rectangle\n      // The following bug should allow us to remove this.\n      // https://bugzilla.mozilla.org/show_bug.cgi?id=664884\n\n      this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n    }\n\n    this.dependencyTracker\n      ?.resetBBox(opIdx)\n      // TODO: Track proper bbox\n      .recordFullPageBBox(opIdx)\n      .recordDependencies(opIdx, Dependencies.transform)\n      .recordDependencies(opIdx, Dependencies.fill)\n      .recordOperation(opIdx);\n\n    this.compose(this.current.getClippedPathBoundingBox());\n    this.restore(opIdx);\n  }\n\n  // Images\n  beginInlineImage() {\n    unreachable(\"Should not call beginInlineImage\");\n  }\n\n  beginImageData() {\n    unreachable(\"Should not call beginImageData\");\n  }\n\n  paintFormXObjectBegin(opIdx, matrix, bbox) {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.save(opIdx);\n    this.baseTransformStack.push(this.baseTransform);\n\n    if (matrix) {\n      this.transform(opIdx, ...matrix);\n    }\n    this.baseTransform = getCurrentTransform(this.ctx);\n\n    if (bbox) {\n      Util.axialAlignedBoundingBox(\n        bbox,\n        this.baseTransform,\n        this.current.minMax\n      );\n      const [x0, y0, x1, y1] = bbox;\n      const clip = new Path2D();\n      clip.rect(x0, y0, x1 - x0, y1 - y0);\n      this.ctx.clip(clip);\n      this.dependencyTracker?.recordClipBox(opIdx, this.ctx, x0, x1, y0, y1);\n      this.endPath(opIdx);\n    }\n  }\n\n  paintFormXObjectEnd(opIdx) {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.restore(opIdx);\n    this.baseTransform = this.baseTransformStack.pop();\n  }\n\n  beginGroup(opIdx, group) {\n    if (!this.contentVisible) {\n      return;\n    }\n\n    this.save(opIdx);\n    // If there's an active soft mask we don't want it enabled for the group, so\n    // clear it out. The mask and suspended canvas will be restored in endGroup.\n    if (this.inSMaskMode) {\n      this.endSMaskMode();\n      this.current.activeSMask = null;\n    }\n\n    const currentCtx = this.ctx;\n    // TODO non-isolated groups - according to Rik at adobe non-isolated\n    // group results aren't usually that different and they even have tools\n    // that ignore this setting. Notes from Rik on implementing:\n    // - When you encounter an transparency group, create a new canvas with\n    // the dimensions of the bbox\n    // - copy the content from the previous canvas to the new canvas\n    // - draw as usual\n    // - remove the backdrop alpha:\n    // alphaNew = 1 - (1 - alpha)/(1 - alphaBackdrop) with 'alpha' the alpha\n    // value of your transparency group and 'alphaBackdrop' the alpha of the\n    // backdrop\n    // - remove background color:\n    // colorNew = color - alphaNew *colorBackdrop /(1 - alphaNew)\n    if (!group.isolated) {\n      info(\"TODO: Support non-isolated groups.\");\n    }\n\n    // TODO knockout - supposedly possible with the clever use of compositing\n    // modes.\n    if (group.knockout) {\n      warn(\"Knockout groups not supported.\");\n    }\n\n    const currentTransform = getCurrentTransform(currentCtx);\n    if (group.matrix) {\n      currentCtx.transform(...group.matrix);\n    }\n    if (!group.bbox) {\n      throw new Error(\"Bounding box is required.\");\n    }\n\n    // Based on the current transform figure out how big the bounding box\n    // will actually be.\n    let bounds = MIN_MAX_INIT.slice();\n    Util.axialAlignedBoundingBox(\n      group.bbox,\n      getCurrentTransform(currentCtx),\n      bounds\n    );\n\n    // Clip the bounding box to the current canvas.\n    const canvasBounds = [\n      0,\n      0,\n      currentCtx.canvas.width,\n      currentCtx.canvas.height,\n    ];\n    bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n    // Use ceil in case we're between sizes so we don't create canvas that is\n    // too small and make the canvas at least 1x1 pixels.\n    const offsetX = Math.floor(bounds[0]);\n    const offsetY = Math.floor(bounds[1]);\n    const drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n    const drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n\n    this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n\n    let cacheId = \"groupAt\" + this.groupLevel;\n    if (group.smask) {\n      // Using two cache entries is case if masks are used one after another.\n      cacheId += \"_smask_\" + (this.smaskCounter++ % 2);\n    }\n    const scratchCanvas = this.cachedCanvases.getCanvas(\n      cacheId,\n      drawnWidth,\n      drawnHeight\n    );\n    const groupCtx = scratchCanvas.context;\n\n    // Since we created a new canvas that is just the size of the bounding box\n    // we have to translate the group ctx.\n    groupCtx.translate(-offsetX, -offsetY);\n    groupCtx.transform(...currentTransform);\n\n    // Apply the bbox to the group context.\n    let clip = new Path2D();\n    const [x0, y0, x1, y1] = group.bbox;\n    clip.rect(x0, y0, x1 - x0, y1 - y0);\n    if (group.matrix) {\n      const path = new Path2D();\n      path.addPath(clip, new DOMMatrix(group.matrix));\n      clip = path;\n    }\n    groupCtx.clip(clip);\n\n    if (group.smask) {\n      // Saving state and cached mask to be used in setGState.\n      this.smaskStack.push({\n        canvas: scratchCanvas.canvas,\n        context: groupCtx,\n        offsetX,\n        offsetY,\n        subtype: group.smask.subtype,\n        backdrop: group.smask.backdrop,\n        transferMap: group.smask.transferMap || null,\n        startTransformInverse: null, // used during suspend operation\n      });\n    }\n    if (\n      !group.smask ||\n      // When this is not an SMask group, we only need to update the current\n      // transform if recording operations bboxes, so they the bboxes have the\n      // correct transform applied.\n      this.dependencyTracker\n    ) {\n      // Setup the current ctx so when the group is popped we draw it at the\n      // right location.\n      currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n      currentCtx.translate(offsetX, offsetY);\n      currentCtx.save();\n    }\n    // The transparency group inherits all off the current graphics state\n    // except the blend mode, soft mask, and alpha constants.\n    copyCtxState(currentCtx, groupCtx);\n    this.ctx = groupCtx;\n    this.dependencyTracker\n      ?.inheritSimpleDataAsFutureForcedDependencies([\n        \"fillAlpha\",\n        \"strokeAlpha\",\n        \"globalCompositeOperation\",\n      ])\n      .pushBaseTransform(currentCtx);\n    this.setGState(opIdx, [\n      [\"BM\", \"source-over\"],\n      [\"ca\", 1],\n      [\"CA\", 1],\n    ]);\n    this.groupStack.push(currentCtx);\n    this.groupLevel++;\n  }\n\n  endGroup(opIdx, group) {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.groupLevel--;\n    const groupCtx = this.ctx;\n    const ctx = this.groupStack.pop();\n    this.ctx = ctx;\n    // Turn off image smoothing to avoid sub pixel interpolation which can\n    // look kind of blurry for some pdfs.\n    this.ctx.imageSmoothingEnabled = false;\n\n    this.dependencyTracker?.popBaseTransform();\n\n    if (group.smask) {\n      this.tempSMask = this.smaskStack.pop();\n      this.restore(opIdx);\n      if (this.dependencyTracker) {\n        this.ctx.restore();\n      }\n    } else {\n      this.ctx.restore();\n      const currentMtx = getCurrentTransform(this.ctx);\n      this.restore(opIdx);\n      this.ctx.save();\n      this.ctx.setTransform(...currentMtx);\n      const dirtyBox = MIN_MAX_INIT.slice();\n      Util.axialAlignedBoundingBox(\n        [0, 0, groupCtx.canvas.width, groupCtx.canvas.height],\n        currentMtx,\n        dirtyBox\n      );\n      this.ctx.drawImage(groupCtx.canvas, 0, 0);\n      this.ctx.restore();\n      this.compose(dirtyBox);\n    }\n  }\n\n  beginAnnotation(opIdx, id, rect, transform, matrix, hasOwnCanvas) {\n    // The annotations are drawn just after the page content.\n    // The page content drawing can potentially have set a transform,\n    // a clipping path, whatever...\n    // So in order to have something clean, we restore the initial state.\n    this.#restoreInitialState();\n    resetCtxToDefault(this.ctx);\n\n    this.ctx.save();\n    this.save(opIdx);\n\n    if (this.baseTransform) {\n      this.ctx.setTransform(...this.baseTransform);\n    }\n\n    if (rect) {\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\n        rect = rect.slice();\n        rect[0] = rect[1] = 0;\n        rect[2] = width;\n        rect[3] = height;\n\n        Util.singularValueDecompose2dScale(getCurrentTransform(this.ctx), XY);\n        const { viewportScale } = this;\n        const canvasWidth = Math.ceil(\n          width * this.outputScaleX * viewportScale\n        );\n        const canvasHeight = Math.ceil(\n          height * this.outputScaleY * viewportScale\n        );\n\n        this.annotationCanvas = this.canvasFactory.create(\n          canvasWidth,\n          canvasHeight\n        );\n        const { canvas, context } = this.annotationCanvas;\n        this.annotationCanvasMap.set(id, canvas);\n        this.annotationCanvas.savedCtx = this.ctx;\n        this.ctx = context;\n        this.ctx.save();\n        this.ctx.setTransform(XY[0], 0, 0, -XY[1], 0, height * XY[1]);\n\n        resetCtxToDefault(this.ctx);\n      } else {\n        resetCtxToDefault(this.ctx);\n\n        // Consume a potential path before clipping.\n        this.endPath(opIdx);\n\n        const clip = new Path2D();\n        clip.rect(rect[0], rect[1], width, height);\n        this.ctx.clip(clip);\n      }\n    }\n\n    this.current = new CanvasExtraState(\n      this.ctx.canvas.width,\n      this.ctx.canvas.height\n    );\n\n    this.transform(opIdx, ...transform);\n    this.transform(opIdx, ...matrix);\n  }\n\n  endAnnotation(opIdx) {\n    if (this.annotationCanvas) {\n      this.ctx.restore();\n      this.#drawFilter();\n\n      this.ctx = this.annotationCanvas.savedCtx;\n      delete this.annotationCanvas.savedCtx;\n      delete this.annotationCanvas;\n    }\n  }\n\n  paintImageMaskXObject(opIdx, img) {\n    if (!this.contentVisible) {\n      return;\n    }\n\n    const count = img.count;\n    img = this.getObject(opIdx, img.data, img);\n    img.count = count;\n\n    const ctx = this.ctx;\n    const mask = this._createMaskCanvas(opIdx, img);\n    const maskCanvas = mask.canvas;\n\n    ctx.save();\n    // The mask is drawn with the transform applied. Reset the current\n    // transform to draw to the identity.\n    ctx.setTransform(1, 0, 0, 1, 0, 0);\n    ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n    this.dependencyTracker\n      ?.resetBBox(opIdx)\n      .recordBBox(\n        opIdx,\n        this.ctx,\n        mask.offsetX,\n        mask.offsetX + maskCanvas.width,\n        mask.offsetY,\n        mask.offsetY + maskCanvas.height\n      )\n      .recordOperation(opIdx);\n    ctx.restore();\n    this.compose();\n  }\n\n  paintImageMaskXObjectRepeat(\n    opIdx,\n    img,\n    scaleX,\n    skewX = 0,\n    skewY = 0,\n    scaleY,\n    positions\n  ) {\n    if (!this.contentVisible) {\n      return;\n    }\n\n    img = this.getObject(opIdx, img.data, img);\n\n    const ctx = this.ctx;\n    ctx.save();\n    const currentTransform = getCurrentTransform(ctx);\n    ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n    const mask = this._createMaskCanvas(opIdx, img);\n\n    ctx.setTransform(\n      1,\n      0,\n      0,\n      1,\n      mask.offsetX - currentTransform[4],\n      mask.offsetY - currentTransform[5]\n    );\n    this.dependencyTracker?.resetBBox(opIdx);\n    for (let i = 0, ii = positions.length; i < ii; i += 2) {\n      const trans = Util.transform(currentTransform, [\n        scaleX,\n        skewX,\n        skewY,\n        scaleY,\n        positions[i],\n        positions[i + 1],\n      ]);\n\n      // Here we want to apply the transform at the origin,\n      // hence no additional computation is necessary.\n      ctx.drawImage(mask.canvas, trans[4], trans[5]);\n      this.dependencyTracker?.recordBBox(\n        opIdx,\n        this.ctx,\n        trans[4],\n        trans[4] + mask.canvas.width,\n        trans[5],\n        trans[5] + mask.canvas.height\n      );\n    }\n    ctx.restore();\n    this.compose();\n\n    this.dependencyTracker?.recordOperation(opIdx);\n  }\n\n  paintImageMaskXObjectGroup(opIdx, images) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const ctx = this.ctx;\n\n    const fillColor = this.current.fillColor;\n    const isPatternFill = this.current.patternFill;\n\n    this.dependencyTracker\n      ?.resetBBox(opIdx)\n      .recordDependencies(opIdx, Dependencies.transformAndFill);\n\n    for (const image of images) {\n      const { data, width, height, transform } = image;\n\n      const maskCanvas = this.cachedCanvases.getCanvas(\n        \"maskCanvas\",\n        width,\n        height\n      );\n      const maskCtx = maskCanvas.context;\n      maskCtx.save();\n\n      const img = this.getObject(opIdx, data, image);\n      putBinaryImageMask(maskCtx, img);\n\n      maskCtx.globalCompositeOperation = \"source-in\";\n\n      maskCtx.fillStyle = isPatternFill\n        ? fillColor.getPattern(\n            maskCtx,\n            this,\n            getCurrentTransformInverse(ctx),\n            PathType.FILL,\n            opIdx\n          )\n        : fillColor;\n      maskCtx.fillRect(0, 0, width, height);\n\n      maskCtx.restore();\n\n      ctx.save();\n      ctx.transform(...transform);\n      ctx.scale(1, -1);\n      drawImageAtIntegerCoords(\n        ctx,\n        maskCanvas.canvas,\n        0,\n        0,\n        width,\n        height,\n        0,\n        -1,\n        1,\n        1\n      );\n\n      this.dependencyTracker?.recordBBox(opIdx, ctx, 0, width, 0, height);\n      ctx.restore();\n    }\n    this.compose();\n    this.dependencyTracker?.recordOperation(opIdx);\n  }\n\n  paintImageXObject(opIdx, objId) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const imgData = this.getObject(opIdx, objId);\n    if (!imgData) {\n      warn(\"Dependent image isn't ready yet\");\n      return;\n    }\n\n    this.paintInlineImageXObject(opIdx, imgData);\n  }\n\n  paintImageXObjectRepeat(opIdx, objId, scaleX, scaleY, positions) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const imgData = this.getObject(opIdx, objId);\n    if (!imgData) {\n      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    for (let i = 0, ii = positions.length; i < ii; i += 2) {\n      map.push({\n        transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n        x: 0,\n        y: 0,\n        w: width,\n        h: height,\n      });\n    }\n    this.paintInlineImageXObjectGroup(opIdx, imgData, map);\n  }\n\n  applyTransferMapsToCanvas(ctx) {\n    if (this.current.transferMaps !== \"none\") {\n      ctx.filter = this.current.transferMaps;\n      ctx.drawImage(ctx.canvas, 0, 0);\n      ctx.filter = \"none\";\n    }\n    return ctx.canvas;\n  }\n\n  applyTransferMapsToBitmap(imgData) {\n    if (this.current.transferMaps === \"none\") {\n      return imgData.bitmap;\n    }\n    const { bitmap, width, height } = imgData;\n    const tmpCanvas = this.cachedCanvases.getCanvas(\n      \"inlineImage\",\n      width,\n      height\n    );\n    const tmpCtx = tmpCanvas.context;\n    tmpCtx.filter = this.current.transferMaps;\n    tmpCtx.drawImage(bitmap, 0, 0);\n    tmpCtx.filter = \"none\";\n\n    return tmpCanvas.canvas;\n  }\n\n  paintInlineImageXObject(opIdx, imgData) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const width = imgData.width;\n    const height = imgData.height;\n    const ctx = this.ctx;\n\n    this.save(opIdx);\n\n    // The filter, if any, will be applied in applyTransferMapsToBitmap.\n    // It must be applied to the image before rescaling else some artifacts\n    // could appear.\n    // The final restore will reset it to its value.\n    const { filter } = ctx;\n    if (filter !== \"none\" && filter !== \"\") {\n      ctx.filter = \"none\";\n    }\n\n    // scale the image to the unit square\n    ctx.scale(1 / width, -1 / height);\n\n    let imgToPaint;\n    if (imgData.bitmap) {\n      imgToPaint = this.applyTransferMapsToBitmap(imgData);\n    } else if (\n      (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement) ||\n      !imgData.data\n    ) {\n      // typeof check is needed due to node.js support, see issue #8489\n      imgToPaint = imgData;\n    } else {\n      const tmpCanvas = this.cachedCanvases.getCanvas(\n        \"inlineImage\",\n        width,\n        height\n      );\n      const tmpCtx = tmpCanvas.context;\n      putBinaryImageData(tmpCtx, imgData);\n      imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n    }\n\n    const scaled = this._scaleImage(\n      imgToPaint,\n      getCurrentTransformInverse(ctx)\n    );\n    ctx.imageSmoothingEnabled = getImageSmoothingEnabled(\n      getCurrentTransform(ctx),\n      imgData.interpolate\n    );\n\n    this.dependencyTracker\n      ?.resetBBox(opIdx)\n      .recordBBox(opIdx, ctx, 0, width, -height, 0)\n      .recordDependencies(opIdx, Dependencies.imageXObject)\n      .recordOperation(opIdx);\n\n    drawImageAtIntegerCoords(\n      ctx,\n      scaled.img,\n      0,\n      0,\n      scaled.paintWidth,\n      scaled.paintHeight,\n      0,\n      -height,\n      width,\n      height\n    );\n    this.compose();\n    this.restore(opIdx);\n  }\n\n  paintInlineImageXObjectGroup(opIdx, imgData, map) {\n    if (!this.contentVisible) {\n      return;\n    }\n    const ctx = this.ctx;\n    let imgToPaint;\n    if (imgData.bitmap) {\n      imgToPaint = imgData.bitmap;\n    } else {\n      const w = imgData.width;\n      const h = imgData.height;\n\n      const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n      const tmpCtx = tmpCanvas.context;\n      putBinaryImageData(tmpCtx, imgData);\n      imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n    }\n\n    this.dependencyTracker?.resetBBox(opIdx);\n\n    for (const entry of map) {\n      ctx.save();\n      ctx.transform(...entry.transform);\n      ctx.scale(1, -1);\n      drawImageAtIntegerCoords(\n        ctx,\n        imgToPaint,\n        entry.x,\n        entry.y,\n        entry.w,\n        entry.h,\n        0,\n        -1,\n        1,\n        1\n      );\n      this.dependencyTracker?.recordBBox(opIdx, ctx, 0, 1, -1, 0);\n      ctx.restore();\n    }\n    this.dependencyTracker?.recordOperation(opIdx);\n    this.compose();\n  }\n\n  paintSolidColorImageMask(opIdx) {\n    if (!this.contentVisible) {\n      return;\n    }\n    this.dependencyTracker\n      ?.resetBBox(opIdx)\n      .recordBBox(opIdx, this.ctx, 0, 1, 0, 1)\n      .recordDependencies(opIdx, Dependencies.fill)\n      .recordOperation(opIdx);\n    this.ctx.fillRect(0, 0, 1, 1);\n    this.compose();\n  }\n\n  // Marked content\n\n  markPoint(opIdx, tag) {\n    // TODO Marked content.\n  }\n\n  markPointProps(opIdx, tag, properties) {\n    // TODO Marked content.\n  }\n\n  beginMarkedContent(opIdx, tag) {\n    this.dependencyTracker?.beginMarkedContent(opIdx);\n    this.markedContentStack.push({\n      visible: true,\n    });\n  }\n\n  beginMarkedContentProps(opIdx, tag, properties) {\n    this.dependencyTracker?.beginMarkedContent(opIdx);\n    if (tag === \"OC\") {\n      this.markedContentStack.push({\n        visible: this.optionalContentConfig.isVisible(properties),\n      });\n    } else {\n      this.markedContentStack.push({\n        visible: true,\n      });\n    }\n    this.contentVisible = this.isContentVisible();\n  }\n\n  endMarkedContent(opIdx) {\n    this.dependencyTracker?.endMarkedContent(opIdx);\n    this.markedContentStack.pop();\n    this.contentVisible = this.isContentVisible();\n  }\n\n  // Compatibility\n\n  beginCompat(opIdx) {\n    // TODO ignore undefined operators (should we do that anyway?)\n  }\n\n  endCompat(opIdx) {\n    // TODO stop ignoring undefined operators\n  }\n\n  // Helper functions\n\n  consumePath(opIdx, path, clipBox) {\n    const isEmpty = this.current.isEmptyClip();\n    if (this.pendingClip) {\n      this.current.updateClipFromPath();\n    }\n    if (!this.pendingClip) {\n      this.compose(clipBox);\n    }\n    const ctx = this.ctx;\n    if (this.pendingClip) {\n      if (!isEmpty) {\n        if (this.pendingClip === EO_CLIP) {\n          ctx.clip(path, \"evenodd\");\n        } else {\n          ctx.clip(path);\n        }\n      }\n      this.pendingClip = null;\n      this.dependencyTracker\n        ?.bboxToClipBoxDropOperation(opIdx)\n        .recordFutureForcedDependency(\"clipPath\", opIdx);\n    } else {\n      this.dependencyTracker?.recordOperation(opIdx);\n    }\n\n    this.current.startNewPathAndClipBox(this.current.clipBox);\n  }\n\n  getSinglePixelWidth() {\n    if (!this._cachedGetSinglePixelWidth) {\n      const m = getCurrentTransform(this.ctx);\n      if (m[1] === 0 && m[2] === 0) {\n        // Fast path\n        this._cachedGetSinglePixelWidth =\n          1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n      } else {\n        const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n        const normX = Math.hypot(m[0], m[2]);\n        const normY = Math.hypot(m[1], m[3]);\n        this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n      }\n    }\n    return this._cachedGetSinglePixelWidth;\n  }\n\n  getScaleForStroking() {\n    // A pixel has thicknessX = thicknessY = 1;\n    // A transformed pixel is a parallelogram and the thicknesses\n    // corresponds to the heights.\n    // The goal of this function is to rescale before setting the\n    // lineWidth in order to have both thicknesses greater or equal\n    // to 1 after transform.\n    if (this._cachedScaleForStroking[0] === -1) {\n      const { lineWidth } = this.current;\n      const { a, b, c, d } = this.ctx.getTransform();\n      let scaleX, scaleY;\n\n      if (b === 0 && c === 0) {\n        // Fast path\n        const normX = Math.abs(a);\n        const normY = Math.abs(d);\n        if (normX === normY) {\n          if (lineWidth === 0) {\n            scaleX = scaleY = 1 / normX;\n          } else {\n            const scaledLineWidth = normX * lineWidth;\n            scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1;\n          }\n        } else if (lineWidth === 0) {\n          scaleX = 1 / normX;\n          scaleY = 1 / normY;\n        } else {\n          const scaledXLineWidth = normX * lineWidth;\n          const scaledYLineWidth = normY * lineWidth;\n          scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n          scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n        }\n      } else {\n        // A pixel (base (x, y)) is transformed by M into a parallelogram:\n        //  - its area is |det(M)|;\n        //  - heightY (orthogonal to Mx) has a length: |det(M)| / norm(Mx);\n        //  - heightX (orthogonal to My) has a length: |det(M)| / norm(My).\n        // heightX and heightY are the thicknesses of the transformed pixel\n        // and they must be both greater or equal to 1.\n        const absDet = Math.abs(a * d - b * c);\n        const normX = Math.hypot(a, b);\n        const normY = Math.hypot(c, d);\n        if (lineWidth === 0) {\n          scaleX = normY / absDet;\n          scaleY = normX / absDet;\n        } else {\n          const baseArea = lineWidth * absDet;\n          scaleX = normY > baseArea ? normY / baseArea : 1;\n          scaleY = normX > baseArea ? normX / baseArea : 1;\n        }\n      }\n      this._cachedScaleForStroking[0] = scaleX;\n      this._cachedScaleForStroking[1] = scaleY;\n    }\n    return this._cachedScaleForStroking;\n  }\n\n  // Rescale before stroking in order to have a final lineWidth\n  // with both thicknesses greater or equal to 1.\n  rescaleAndStroke(path, saveRestore) {\n    const {\n      ctx,\n      current: { lineWidth },\n    } = this;\n    const [scaleX, scaleY] = this.getScaleForStroking();\n\n    if (scaleX === scaleY) {\n      ctx.lineWidth = (lineWidth || 1) * scaleX;\n      ctx.stroke(path);\n      return;\n    }\n\n    const dashes = ctx.getLineDash();\n    if (saveRestore) {\n      ctx.save();\n    }\n\n    ctx.scale(scaleX, scaleY);\n    SCALE_MATRIX.a = 1 / scaleX;\n    SCALE_MATRIX.d = 1 / scaleY;\n    const newPath = new Path2D();\n    newPath.addPath(path, SCALE_MATRIX);\n\n    // How the dashed line is rendered depends on the current transform...\n    // so we added a rescale to handle too thin lines and consequently\n    // the way the line is dashed will be modified.\n    // If scaleX === scaleY, the dashed lines will be rendered correctly\n    // else we'll have some bugs (but only with too thin lines).\n    // Here we take the max... why not taking the min... or something else.\n    // Anyway, as said it's buggy when scaleX !== scaleY.\n    if (dashes.length > 0) {\n      const scale = Math.max(scaleX, scaleY);\n      ctx.setLineDash(dashes.map(x => x / scale));\n      ctx.lineDashOffset /= scale;\n    }\n\n    ctx.lineWidth = lineWidth || 1;\n    ctx.stroke(newPath);\n\n    if (saveRestore) {\n      ctx.restore();\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    return true;\n  }\n}\n\nfor (const op in OPS) {\n  if (CanvasGraphics.prototype[op] !== undefined) {\n    CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n  }\n}\n\nexport { CanvasGraphics };\n", "/* Copyright 2025 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert } from \"./util.js\";\n\nclass CssFontInfo {\n  #buffer;\n\n  #view;\n\n  #decoder;\n\n  static strings = [\"fontFamily\", \"fontWeight\", \"italicAngle\"];\n\n  static write(info) {\n    const encoder = new TextEncoder();\n    const encodedStrings = {};\n    let stringsLength = 0;\n    for (const prop of CssFontInfo.strings) {\n      const encoded = encoder.encode(info[prop]);\n      encodedStrings[prop] = encoded;\n      stringsLength += 4 + encoded.length;\n    }\n\n    const buffer = new ArrayBuffer(stringsLength);\n    const data = new Uint8Array(buffer);\n    const view = new DataView(buffer);\n    let offset = 0;\n\n    for (const prop of CssFontInfo.strings) {\n      const encoded = encodedStrings[prop];\n      const length = encoded.length;\n      view.setUint32(offset, length);\n      data.set(encoded, offset + 4);\n      offset += 4 + length;\n    }\n    assert(offset === buffer.byteLength, \"CssFontInfo.write: Buffer overflow\");\n    return buffer;\n  }\n\n  constructor(buffer) {\n    this.#buffer = buffer;\n    this.#view = new DataView(this.#buffer);\n    this.#decoder = new TextDecoder();\n  }\n\n  #readString(index) {\n    assert(index < CssFontInfo.strings.length, \"Invalid string index\");\n    let offset = 0;\n    for (let i = 0; i < index; i++) {\n      offset += this.#view.getUint32(offset) + 4;\n    }\n    const length = this.#view.getUint32(offset);\n    return this.#decoder.decode(\n      new Uint8Array(this.#buffer, offset + 4, length)\n    );\n  }\n\n  get fontFamily() {\n    return this.#readString(0);\n  }\n\n  get fontWeight() {\n    return this.#readString(1);\n  }\n\n  get italicAngle() {\n    return this.#readString(2);\n  }\n}\n\nclass SystemFontInfo {\n  #buffer;\n\n  #view;\n\n  #decoder;\n\n  static strings = [\"css\", \"loadedName\", \"baseFontName\", \"src\"];\n\n  static write(info) {\n    const encoder = new TextEncoder();\n    const encodedStrings = {};\n    let stringsLength = 0;\n    for (const prop of SystemFontInfo.strings) {\n      const encoded = encoder.encode(info[prop]);\n      encodedStrings[prop] = encoded;\n      stringsLength += 4 + encoded.length;\n    }\n    stringsLength += 4;\n    let encodedStyleStyle,\n      encodedStyleWeight,\n      lengthEstimate = 1 + stringsLength;\n    if (info.style) {\n      encodedStyleStyle = encoder.encode(info.style.style);\n      encodedStyleWeight = encoder.encode(info.style.weight);\n      lengthEstimate +=\n        4 + encodedStyleStyle.length + 4 + encodedStyleWeight.length;\n    }\n\n    const buffer = new ArrayBuffer(lengthEstimate);\n    const data = new Uint8Array(buffer);\n    const view = new DataView(buffer);\n    let offset = 0;\n\n    view.setUint8(offset++, info.guessFallback ? 1 : 0);\n    view.setUint32(offset, 0);\n    offset += 4;\n    stringsLength = 0;\n    for (const prop of SystemFontInfo.strings) {\n      const encoded = encodedStrings[prop];\n      const length = encoded.length;\n      stringsLength += 4 + length;\n      view.setUint32(offset, length);\n      data.set(encoded, offset + 4);\n      offset += 4 + length;\n    }\n    view.setUint32(offset - stringsLength - 4, stringsLength);\n\n    if (info.style) {\n      view.setUint32(offset, encodedStyleStyle.length);\n      data.set(encodedStyleStyle, offset + 4);\n      offset += 4 + encodedStyleStyle.length;\n      view.setUint32(offset, encodedStyleWeight.length);\n      data.set(encodedStyleWeight, offset + 4);\n      offset += 4 + encodedStyleWeight.length;\n    }\n    assert(\n      offset <= buffer.byteLength,\n      \"SubstitionInfo.write: Buffer overflow\"\n    );\n    return buffer.transferToFixedLength(offset);\n  }\n\n  constructor(buffer) {\n    this.#buffer = buffer;\n    this.#view = new DataView(this.#buffer);\n    this.#decoder = new TextDecoder();\n  }\n\n  get guessFallback() {\n    return this.#view.getUint8(0) !== 0;\n  }\n\n  #readString(index) {\n    assert(index < SystemFontInfo.strings.length, \"Invalid string index\");\n    let offset = 5;\n    for (let i = 0; i < index; i++) {\n      offset += this.#view.getUint32(offset) + 4;\n    }\n    const length = this.#view.getUint32(offset);\n    return this.#decoder.decode(\n      new Uint8Array(this.#buffer, offset + 4, length)\n    );\n  }\n\n  get css() {\n    return this.#readString(0);\n  }\n\n  get loadedName() {\n    return this.#readString(1);\n  }\n\n  get baseFontName() {\n    return this.#readString(2);\n  }\n\n  get src() {\n    return this.#readString(3);\n  }\n\n  get style() {\n    let offset = 1;\n    offset += 4 + this.#view.getUint32(offset);\n    const styleLength = this.#view.getUint32(offset);\n    const style = this.#decoder.decode(\n      new Uint8Array(this.#buffer, offset + 4, styleLength)\n    );\n    offset += 4 + styleLength;\n    const weightLength = this.#view.getUint32(offset);\n    const weight = this.#decoder.decode(\n      new Uint8Array(this.#buffer, offset + 4, weightLength)\n    );\n    return { style, weight };\n  }\n}\n\nclass FontInfo {\n  static bools = [\n    \"black\",\n    \"bold\",\n    \"disableFontFace\",\n    \"fontExtraProperties\",\n    \"isInvalidPDFjsFont\",\n    \"isType3Font\",\n    \"italic\",\n    \"missingFile\",\n    \"remeasure\",\n    \"vertical\",\n  ];\n\n  static numbers = [\"ascent\", \"defaultWidth\", \"descent\"];\n\n  static strings = [\"fallbackName\", \"loadedName\", \"mimetype\", \"name\"];\n\n  static #OFFSET_NUMBERS = Math.ceil((this.bools.length * 2) / 8);\n\n  static #OFFSET_BBOX = this.#OFFSET_NUMBERS + this.numbers.length * 8;\n\n  static #OFFSET_FONT_MATRIX = this.#OFFSET_BBOX + 1 + 2 * 4;\n\n  static #OFFSET_DEFAULT_VMETRICS = this.#OFFSET_FONT_MATRIX + 1 + 8 * 6;\n\n  static #OFFSET_STRINGS = this.#OFFSET_DEFAULT_VMETRICS + 1 + 2 * 3;\n\n  #buffer;\n\n  #decoder;\n\n  #view;\n\n  constructor({ data, extra }) {\n    this.#buffer = data;\n    this.#decoder = new TextDecoder();\n    this.#view = new DataView(this.#buffer);\n    if (extra) {\n      Object.assign(this, extra);\n    }\n  }\n\n  #readBoolean(index) {\n    assert(index < FontInfo.bools.length, \"Invalid boolean index\");\n    const byteOffset = Math.floor(index / 4);\n    const bitOffset = (index * 2) % 8;\n    const value = (this.#view.getUint8(byteOffset) >> bitOffset) & 0x03;\n    return value === 0x00 ? undefined : value === 0x02;\n  }\n\n  get black() {\n    return this.#readBoolean(0);\n  }\n\n  get bold() {\n    return this.#readBoolean(1);\n  }\n\n  get disableFontFace() {\n    return this.#readBoolean(2);\n  }\n\n  get fontExtraProperties() {\n    return this.#readBoolean(3);\n  }\n\n  get isInvalidPDFjsFont() {\n    return this.#readBoolean(4);\n  }\n\n  get isType3Font() {\n    return this.#readBoolean(5);\n  }\n\n  get italic() {\n    return this.#readBoolean(6);\n  }\n\n  get missingFile() {\n    return this.#readBoolean(7);\n  }\n\n  get remeasure() {\n    return this.#readBoolean(8);\n  }\n\n  get vertical() {\n    return this.#readBoolean(9);\n  }\n\n  #readNumber(index) {\n    assert(index < FontInfo.numbers.length, \"Invalid number index\");\n    return this.#view.getFloat64(FontInfo.#OFFSET_NUMBERS + index * 8);\n  }\n\n  get ascent() {\n    return this.#readNumber(0);\n  }\n\n  get defaultWidth() {\n    return this.#readNumber(1);\n  }\n\n  get descent() {\n    return this.#readNumber(2);\n  }\n\n  get bbox() {\n    let offset = FontInfo.#OFFSET_BBOX;\n    const numCoords = this.#view.getUint8(offset);\n    if (numCoords === 0) {\n      return undefined;\n    }\n    offset += 1;\n    const bbox = [];\n    for (let i = 0; i < 4; i++) {\n      bbox.push(this.#view.getInt16(offset, true));\n      offset += 2;\n    }\n    return bbox;\n  }\n\n  get fontMatrix() {\n    let offset = FontInfo.#OFFSET_FONT_MATRIX;\n    const numPoints = this.#view.getUint8(offset);\n    if (numPoints === 0) {\n      return undefined;\n    }\n    offset += 1;\n    const fontMatrix = [];\n    for (let i = 0; i < 6; i++) {\n      fontMatrix.push(this.#view.getFloat64(offset, true));\n      offset += 8;\n    }\n    return fontMatrix;\n  }\n\n  get defaultVMetrics() {\n    let offset = FontInfo.#OFFSET_DEFAULT_VMETRICS;\n    const numMetrics = this.#view.getUint8(offset);\n    if (numMetrics === 0) {\n      return undefined;\n    }\n    offset += 1;\n    const defaultVMetrics = [];\n    for (let i = 0; i < 3; i++) {\n      defaultVMetrics.push(this.#view.getInt16(offset, true));\n      offset += 2;\n    }\n    return defaultVMetrics;\n  }\n\n  #readString(index) {\n    assert(index < FontInfo.strings.length, \"Invalid string index\");\n    let offset = FontInfo.#OFFSET_STRINGS + 4;\n    for (let i = 0; i < index; i++) {\n      offset += this.#view.getUint32(offset) + 4;\n    }\n    const length = this.#view.getUint32(offset);\n    const stringData = new Uint8Array(length);\n    stringData.set(new Uint8Array(this.#buffer, offset + 4, length));\n    return this.#decoder.decode(stringData);\n  }\n\n  get fallbackName() {\n    return this.#readString(0);\n  }\n\n  get loadedName() {\n    return this.#readString(1);\n  }\n\n  get mimetype() {\n    return this.#readString(2);\n  }\n\n  get name() {\n    return this.#readString(3);\n  }\n\n  get data() {\n    let offset = FontInfo.#OFFSET_STRINGS;\n    const stringsLength = this.#view.getUint32(offset);\n    offset += 4 + stringsLength;\n    const systemFontInfoLength = this.#view.getUint32(offset);\n    offset += 4 + systemFontInfoLength;\n    const cssFontInfoLength = this.#view.getUint32(offset);\n    offset += 4 + cssFontInfoLength;\n    const length = this.#view.getUint32(offset);\n    if (length === 0) {\n      return undefined;\n    }\n    return new Uint8Array(this.#buffer, offset + 4, length);\n  }\n\n  clearData() {\n    let offset = FontInfo.#OFFSET_STRINGS;\n    const stringsLength = this.#view.getUint32(offset);\n    offset += 4 + stringsLength;\n    const systemFontInfoLength = this.#view.getUint32(offset);\n    offset += 4 + systemFontInfoLength;\n    const cssFontInfoLength = this.#view.getUint32(offset);\n    offset += 4 + cssFontInfoLength;\n    const length = this.#view.getUint32(offset);\n    const data = new Uint8Array(this.#buffer, offset + 4, length);\n    data.fill(0);\n    this.#view.setUint32(offset, 0);\n    // this.#buffer.resize(offset);\n  }\n\n  get cssFontInfo() {\n    let offset = FontInfo.#OFFSET_STRINGS;\n    const stringsLength = this.#view.getUint32(offset);\n    offset += 4 + stringsLength;\n    const systemFontInfoLength = this.#view.getUint32(offset);\n    offset += 4 + systemFontInfoLength;\n    const cssFontInfoLength = this.#view.getUint32(offset);\n    if (cssFontInfoLength === 0) {\n      return null;\n    }\n    const cssFontInfoData = new Uint8Array(cssFontInfoLength);\n    cssFontInfoData.set(\n      new Uint8Array(this.#buffer, offset + 4, cssFontInfoLength)\n    );\n    return new CssFontInfo(cssFontInfoData.buffer);\n  }\n\n  get systemFontInfo() {\n    let offset = FontInfo.#OFFSET_STRINGS;\n    const stringsLength = this.#view.getUint32(offset);\n    offset += 4 + stringsLength;\n    const systemFontInfoLength = this.#view.getUint32(offset);\n    if (systemFontInfoLength === 0) {\n      return null;\n    }\n    const systemFontInfoData = new Uint8Array(systemFontInfoLength);\n    systemFontInfoData.set(\n      new Uint8Array(this.#buffer, offset + 4, systemFontInfoLength)\n    );\n    return new SystemFontInfo(systemFontInfoData.buffer);\n  }\n\n  static write(font) {\n    const systemFontInfoBuffer = font.systemFontInfo\n      ? SystemFontInfo.write(font.systemFontInfo)\n      : null;\n    const cssFontInfoBuffer = font.cssFontInfo\n      ? CssFontInfo.write(font.cssFontInfo)\n      : null;\n\n    const encoder = new TextEncoder();\n    const encodedStrings = {};\n    let stringsLength = 0;\n    for (const prop of FontInfo.strings) {\n      encodedStrings[prop] = encoder.encode(font[prop]);\n      stringsLength += 4 + encodedStrings[prop].length;\n    }\n\n    const lengthEstimate =\n      FontInfo.#OFFSET_STRINGS +\n      4 +\n      stringsLength +\n      4 +\n      (systemFontInfoBuffer ? systemFontInfoBuffer.byteLength : 0) +\n      4 +\n      (cssFontInfoBuffer ? cssFontInfoBuffer.byteLength : 0) +\n      4 +\n      (font.data ? font.data.length : 0);\n\n    const buffer = new ArrayBuffer(lengthEstimate);\n    const data = new Uint8Array(buffer);\n    const view = new DataView(buffer);\n    let offset = 0;\n\n    const numBools = FontInfo.bools.length;\n    let boolByte = 0,\n      boolBit = 0;\n    for (let i = 0; i < numBools; i++) {\n      const value = font[FontInfo.bools[i]];\n      // eslint-disable-next-line no-nested-ternary\n      const bits = value === undefined ? 0x00 : value ? 0x02 : 0x01;\n      boolByte |= bits << boolBit;\n      boolBit += 2;\n      if (boolBit === 8 || i === numBools - 1) {\n        view.setUint8(offset++, boolByte);\n        boolByte = 0;\n        boolBit = 0;\n      }\n    }\n    assert(\n      offset === FontInfo.#OFFSET_NUMBERS,\n      \"FontInfo.write: Boolean properties offset mismatch\"\n    );\n\n    for (const prop of FontInfo.numbers) {\n      view.setFloat64(offset, font[prop]);\n      offset += 8;\n    }\n    assert(\n      offset === FontInfo.#OFFSET_BBOX,\n      \"FontInfo.write: Number properties offset mismatch\"\n    );\n\n    if (font.bbox) {\n      view.setUint8(offset++, 4);\n      for (const coord of font.bbox) {\n        view.setInt16(offset, coord, true);\n        offset += 2;\n      }\n    } else {\n      view.setUint8(offset++, 0);\n      offset += 2 * 4; // TODO: optimize this padding away\n    }\n\n    assert(\n      offset === FontInfo.#OFFSET_FONT_MATRIX,\n      \"FontInfo.write: BBox properties offset mismatch\"\n    );\n\n    if (font.fontMatrix) {\n      view.setUint8(offset++, 6);\n      for (const point of font.fontMatrix) {\n        view.setFloat64(offset, point, true);\n        offset += 8;\n      }\n    } else {\n      view.setUint8(offset++, 0);\n      offset += 8 * 6; // TODO: optimize this padding away\n    }\n\n    assert(\n      offset === FontInfo.#OFFSET_DEFAULT_VMETRICS,\n      \"FontInfo.write: FontMatrix properties offset mismatch\"\n    );\n\n    if (font.defaultVMetrics) {\n      view.setUint8(offset++, 1);\n      for (const metric of font.defaultVMetrics) {\n        view.setInt16(offset, metric, true);\n        offset += 2;\n      }\n    } else {\n      view.setUint8(offset++, 0);\n      offset += 3 * 2; // TODO: optimize this padding away\n    }\n\n    assert(\n      offset === FontInfo.#OFFSET_STRINGS,\n      \"FontInfo.write: DefaultVMetrics properties offset mismatch\"\n    );\n\n    view.setUint32(FontInfo.#OFFSET_STRINGS, 0);\n    offset += 4;\n    for (const prop of FontInfo.strings) {\n      const encoded = encodedStrings[prop];\n      const length = encoded.length;\n      view.setUint32(offset, length);\n      data.set(encoded, offset + 4);\n      offset += 4 + length;\n    }\n    view.setUint32(\n      FontInfo.#OFFSET_STRINGS,\n      offset - FontInfo.#OFFSET_STRINGS - 4\n    );\n\n    if (!systemFontInfoBuffer) {\n      view.setUint32(offset, 0);\n      offset += 4;\n    } else {\n      const length = systemFontInfoBuffer.byteLength;\n      view.setUint32(offset, length);\n      assert(\n        offset + 4 + length <= buffer.byteLength,\n        \"FontInfo.write: Buffer overflow at systemFontInfo\"\n      );\n      data.set(new Uint8Array(systemFontInfoBuffer), offset + 4);\n      offset += 4 + length;\n    }\n\n    if (!cssFontInfoBuffer) {\n      view.setUint32(offset, 0);\n      offset += 4;\n    } else {\n      const length = cssFontInfoBuffer.byteLength;\n      view.setUint32(offset, length);\n      assert(\n        offset + 4 + length <= buffer.byteLength,\n        \"FontInfo.write: Buffer overflow at cssFontInfo\"\n      );\n      data.set(new Uint8Array(cssFontInfoBuffer), offset + 4);\n      offset += 4 + length;\n    }\n\n    if (font.data === undefined) {\n      view.setUint32(offset, 0);\n      offset += 4;\n    } else {\n      view.setUint32(offset, font.data.length);\n      data.set(font.data, offset + 4);\n      offset += 4 + font.data.length;\n    }\n\n    assert(offset <= buffer.byteLength, \"FontInfo.write: Buffer overflow\");\n    return buffer.transferToFixedLength(offset);\n  }\n}\n\nexport { CssFontInfo, FontInfo, SystemFontInfo };\n", "/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nclass GlobalWorkerOptions {\n  static #port = null;\n\n  static #src = \"\";\n\n  /**\n   * @type {Worker | null}\n   */\n  static get workerPort() {\n    return this.#port;\n  }\n\n  /**\n   * @param {Worker | null} workerPort - Defines global port for worker process.\n   *   Overrides the `workerSrc` option.\n   */\n  static set workerPort(val) {\n    if (\n      !(typeof Worker !== \"undefined\" && val instanceof Worker) &&\n      val !== null\n    ) {\n      throw new Error(\"Invalid `workerPort` type.\");\n    }\n    this.#port = val;\n  }\n\n  /**\n   * @type {string}\n   */\n  static get workerSrc() {\n    return this.#src;\n  }\n\n  /**\n   * @param {string} workerSrc - A string containing the path and filename of\n   *   the worker file.\n   *\n   *   NOTE: The `workerSrc` option should always be set, in order to prevent\n   *         any issues when using the PDF.js library.\n   */\n  static set workerSrc(val) {\n    if (typeof val !== \"string\") {\n      throw new Error(\"Invalid `workerSrc` type.\");\n    }\n    this.#src = val;\n  }\n}\n\nexport { GlobalWorkerOptions };\n", "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nclass Metadata {\n  #map;\n\n  #data;\n\n  constructor({ parsedData, rawData }) {\n    this.#map = parsedData;\n    this.#data = rawData;\n  }\n\n  getRaw() {\n    return this.#data;\n  }\n\n  get(name) {\n    return this.#map.get(name) ?? null;\n  }\n\n  [Symbol.iterator]() {\n    return this.#map.entries();\n  }\n}\n\nexport { Metadata };\n", "/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  info,\n  RenderingIntentFlag,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport { MurmurHash3_64 } from \"../shared/murmurhash3.js\";\n\nconst INTERNAL = Symbol(\"INTERNAL\");\n\nclass OptionalContentGroup {\n  #isDisplay = false;\n\n  #isPrint = false;\n\n  #userSet = false;\n\n  #visible = true;\n\n  constructor(renderingIntent, { name, intent, usage, rbGroups }) {\n    this.#isDisplay = !!(renderingIntent & RenderingIntentFlag.DISPLAY);\n    this.#isPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n\n    this.name = name;\n    this.intent = intent;\n    this.usage = usage;\n    this.rbGroups = rbGroups;\n  }\n\n  /**\n   * @type {boolean}\n   */\n  get visible() {\n    if (this.#userSet) {\n      return this.#visible;\n    }\n    if (!this.#visible) {\n      return false;\n    }\n    const { print, view } = this.usage;\n\n    if (this.#isDisplay) {\n      return view?.viewState !== \"OFF\";\n    } else if (this.#isPrint) {\n      return print?.printState !== \"OFF\";\n    }\n    return true;\n  }\n\n  /**\n   * @ignore\n   */\n  _setVisible(internal, visible, userSet = false) {\n    if (internal !== INTERNAL) {\n      unreachable(\"Internal method `_setVisible` called.\");\n    }\n    this.#userSet = userSet;\n    this.#visible = visible;\n  }\n}\n\nclass OptionalContentConfig {\n  #cachedGetHash = null;\n\n  #groups = new Map();\n\n  #initialHash = null;\n\n  #order = null;\n\n  constructor(data, renderingIntent = RenderingIntentFlag.DISPLAY) {\n    this.renderingIntent = renderingIntent;\n\n    this.name = null;\n    this.creator = null;\n\n    if (data === null) {\n      return;\n    }\n    this.name = data.name;\n    this.creator = data.creator;\n    this.#order = data.order;\n    for (const group of data.groups) {\n      this.#groups.set(\n        group.id,\n        new OptionalContentGroup(renderingIntent, group)\n      );\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    // The following code must always run *last* in the constructor.\n    this.#initialHash = this.getHash();\n  }\n\n  #evaluateVisibilityExpression(array) {\n    const length = array.length;\n    if (length < 2) {\n      return true;\n    }\n    const operator = array[0];\n    for (let i = 1; i < length; i++) {\n      const element = array[i];\n      let state;\n      if (Array.isArray(element)) {\n        state = this.#evaluateVisibilityExpression(element);\n      } else if (this.#groups.has(element)) {\n        state = this.#groups.get(element).visible;\n      } else {\n        warn(`Optional content group not found: ${element}`);\n        return true;\n      }\n      switch (operator) {\n        case \"And\":\n          if (!state) {\n            return false;\n          }\n          break;\n        case \"Or\":\n          if (state) {\n            return true;\n          }\n          break;\n        case \"Not\":\n          return !state;\n        default:\n          return true;\n      }\n    }\n    return operator === \"And\";\n  }\n\n  isVisible(group) {\n    if (this.#groups.size === 0) {\n      return true;\n    }\n    if (!group) {\n      info(\"Optional content group not defined.\");\n      return true;\n    }\n    if (group.type === \"OCG\") {\n      if (!this.#groups.has(group.id)) {\n        warn(`Optional content group not found: ${group.id}`);\n        return true;\n      }\n      return this.#groups.get(group.id).visible;\n    } else if (group.type === \"OCMD\") {\n      // Per the spec, the expression should be preferred if available.\n      if (group.expression) {\n        return this.#evaluateVisibilityExpression(group.expression);\n      }\n      if (!group.policy || group.policy === \"AnyOn\") {\n        // Default\n        for (const id of group.ids) {\n          if (!this.#groups.has(id)) {\n            warn(`Optional content group not found: ${id}`);\n            return true;\n          }\n          if (this.#groups.get(id).visible) {\n            return true;\n          }\n        }\n        return false;\n      } else if (group.policy === \"AllOn\") {\n        for (const id of group.ids) {\n          if (!this.#groups.has(id)) {\n            warn(`Optional content group not found: ${id}`);\n            return true;\n          }\n          if (!this.#groups.get(id).visible) {\n            return false;\n          }\n        }\n        return true;\n      } else if (group.policy === \"AnyOff\") {\n        for (const id of group.ids) {\n          if (!this.#groups.has(id)) {\n            warn(`Optional content group not found: ${id}`);\n            return true;\n          }\n          if (!this.#groups.get(id).visible) {\n            return true;\n          }\n        }\n        return false;\n      } else if (group.policy === \"AllOff\") {\n        for (const id of group.ids) {\n          if (!this.#groups.has(id)) {\n            warn(`Optional content group not found: ${id}`);\n            return true;\n          }\n          if (this.#groups.get(id).visible) {\n            return false;\n          }\n        }\n        return true;\n      }\n      warn(`Unknown optional content policy ${group.policy}.`);\n      return true;\n    }\n    warn(`Unknown group type ${group.type}.`);\n    return true;\n  }\n\n  setVisibility(id, visible = true, preserveRB = true) {\n    const group = this.#groups.get(id);\n    if (!group) {\n      warn(`Optional content group not found: ${id}`);\n      return;\n    }\n\n    // If the visibility is about to be set to `true` and the group belongs to\n    // any radiobutton groups, hide all other OCGs in these radiobutton groups,\n    // provided that radiobutton state relationships are to be preserved.\n    if (preserveRB && visible && group.rbGroups.length) {\n      for (const rbGroup of group.rbGroups) {\n        for (const otherId of rbGroup) {\n          if (otherId !== id) {\n            this.#groups.get(otherId)?._setVisible(INTERNAL, false, true);\n          }\n        }\n      }\n    }\n\n    group._setVisible(INTERNAL, !!visible, /* userSet = */ true);\n\n    this.#cachedGetHash = null;\n  }\n\n  setOCGState({ state, preserveRB }) {\n    let operator;\n\n    for (const elem of state) {\n      switch (elem) {\n        case \"ON\":\n        case \"OFF\":\n        case \"Toggle\":\n          operator = elem;\n          continue;\n      }\n\n      const group = this.#groups.get(elem);\n      if (!group) {\n        continue;\n      }\n      switch (operator) {\n        case \"ON\":\n          this.setVisibility(elem, true, preserveRB);\n          break;\n        case \"OFF\":\n          this.setVisibility(elem, false, preserveRB);\n          break;\n        case \"Toggle\":\n          this.setVisibility(elem, !group.visible, preserveRB);\n          break;\n      }\n    }\n\n    this.#cachedGetHash = null;\n  }\n\n  get hasInitialVisibility() {\n    return this.#initialHash === null || this.getHash() === this.#initialHash;\n  }\n\n  getOrder() {\n    if (!this.#groups.size) {\n      return null;\n    }\n    if (this.#order) {\n      return this.#order.slice();\n    }\n    return [...this.#groups.keys()];\n  }\n\n  getGroup(id) {\n    return this.#groups.get(id) || null;\n  }\n\n  getHash() {\n    if (this.#cachedGetHash !== null) {\n      return this.#cachedGetHash;\n    }\n    const hash = new MurmurHash3_64();\n\n    for (const [id, group] of this.#groups) {\n      hash.update(`${id}:${group.visible}`);\n    }\n    return (this.#cachedGetHash = hash.hexdigest());\n  }\n\n  [Symbol.iterator]() {\n    return this.#groups.entries();\n  }\n}\n\nexport { OptionalContentConfig };\n", "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"../interfaces\").IPDFStream} IPDFStream */\n/** @typedef {import(\"../interfaces\").IPDFStreamReader} IPDFStreamReader */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../interfaces\").IPDFStreamRangeReader} IPDFStreamRangeReader */\n\nimport { assert } from \"../shared/util.js\";\nimport { isPdfFile } from \"./display_utils.js\";\n\n/** @implements {IPDFStream} */\nclass PDFDataTransportStream {\n  constructor(\n    pdfDataRangeTransport,\n    { disableRange = false, disableStream = false }\n  ) {\n    assert(\n      pdfDataRangeTransport,\n      'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.'\n    );\n    const { length, initialData, progressiveDone, contentDispositionFilename } =\n      pdfDataRangeTransport;\n\n    this._queuedChunks = [];\n    this._progressiveDone = progressiveDone;\n    this._contentDispositionFilename = contentDispositionFilename;\n\n    if (initialData?.length > 0) {\n      // Prevent any possible issues by only transferring a Uint8Array that\n      // completely \"utilizes\" its underlying ArrayBuffer.\n      const buffer =\n        initialData instanceof Uint8Array &&\n        initialData.byteLength === initialData.buffer.byteLength\n          ? initialData.buffer\n          : new Uint8Array(initialData).buffer;\n      this._queuedChunks.push(buffer);\n    }\n\n    this._pdfDataRangeTransport = pdfDataRangeTransport;\n    this._isStreamingSupported = !disableStream;\n    this._isRangeSupported = !disableRange;\n    this._contentLength = length;\n\n    this._fullRequestReader = null;\n    this._rangeReaders = [];\n\n    pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n      this._onReceiveData({ begin, chunk });\n    });\n\n    pdfDataRangeTransport.addProgressListener((loaded, total) => {\n      this._onProgress({ loaded, total });\n    });\n\n    pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n      this._onReceiveData({ chunk });\n    });\n\n    pdfDataRangeTransport.addProgressiveDoneListener(() => {\n      this._onProgressiveDone();\n    });\n\n    pdfDataRangeTransport.transportReady();\n  }\n\n  _onReceiveData({ begin, chunk }) {\n    // Prevent any possible issues by only transferring a Uint8Array that\n    // completely \"utilizes\" its underlying ArrayBuffer.\n    const buffer =\n      chunk instanceof Uint8Array &&\n      chunk.byteLength === chunk.buffer.byteLength\n        ? chunk.buffer\n        : new Uint8Array(chunk).buffer;\n\n    if (begin === undefined) {\n      if (this._fullRequestReader) {\n        this._fullRequestReader._enqueue(buffer);\n      } else {\n        this._queuedChunks.push(buffer);\n      }\n    } else {\n      const found = this._rangeReaders.some(function (rangeReader) {\n        if (rangeReader._begin !== begin) {\n          return false;\n        }\n        rangeReader._enqueue(buffer);\n        return true;\n      });\n      assert(\n        found,\n        \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\"\n      );\n    }\n  }\n\n  get _progressiveDataLength() {\n    return this._fullRequestReader?._loaded ?? 0;\n  }\n\n  _onProgress(evt) {\n    if (evt.total === undefined) {\n      // Reporting to first range reader, if it exists.\n      this._rangeReaders[0]?.onProgress?.({ loaded: evt.loaded });\n    } else {\n      this._fullRequestReader?.onProgress?.({\n        loaded: evt.loaded,\n        total: evt.total,\n      });\n    }\n  }\n\n  _onProgressiveDone() {\n    this._fullRequestReader?.progressiveDone();\n    this._progressiveDone = true;\n  }\n\n  _removeRangeReader(reader) {\n    const i = this._rangeReaders.indexOf(reader);\n    if (i >= 0) {\n      this._rangeReaders.splice(i, 1);\n    }\n  }\n\n  getFullReader() {\n    assert(\n      !this._fullRequestReader,\n      \"PDFDataTransportStream.getFullReader can only be called once.\"\n    );\n    const queuedChunks = this._queuedChunks;\n    this._queuedChunks = null;\n    return new PDFDataTransportStreamReader(\n      this,\n      queuedChunks,\n      this._progressiveDone,\n      this._contentDispositionFilename\n    );\n  }\n\n  getRangeReader(begin, end) {\n    if (end <= this._progressiveDataLength) {\n      return null;\n    }\n    const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n    this._pdfDataRangeTransport.requestDataRange(begin, end);\n    this._rangeReaders.push(reader);\n    return reader;\n  }\n\n  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n\n    for (const reader of this._rangeReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n    this._pdfDataRangeTransport.abort();\n  }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFDataTransportStreamReader {\n  constructor(\n    stream,\n    queuedChunks,\n    progressiveDone = false,\n    contentDispositionFilename = null\n  ) {\n    this._stream = stream;\n    this._done = progressiveDone || false;\n    this._filename = isPdfFile(contentDispositionFilename)\n      ? contentDispositionFilename\n      : null;\n    this._queuedChunks = queuedChunks || [];\n    this._loaded = 0;\n    for (const chunk of this._queuedChunks) {\n      this._loaded += chunk.byteLength;\n    }\n    this._requests = [];\n    this._headersReady = Promise.resolve();\n    stream._fullRequestReader = this;\n\n    this.onProgress = null;\n  }\n\n  _enqueue(chunk) {\n    if (this._done) {\n      return; // Ignore new data.\n    }\n    if (this._requests.length > 0) {\n      const requestCapability = this._requests.shift();\n      requestCapability.resolve({ value: chunk, done: false });\n    } else {\n      this._queuedChunks.push(chunk);\n    }\n    this._loaded += chunk.byteLength;\n  }\n\n  get headersReady() {\n    return this._headersReady;\n  }\n\n  get filename() {\n    return this._filename;\n  }\n\n  get isRangeSupported() {\n    return this._stream._isRangeSupported;\n  }\n\n  get isStreamingSupported() {\n    return this._stream._isStreamingSupported;\n  }\n\n  get contentLength() {\n    return this._stream._contentLength;\n  }\n\n  async read() {\n    if (this._queuedChunks.length > 0) {\n      const chunk = this._queuedChunks.shift();\n      return { value: chunk, done: false };\n    }\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    const requestCapability = Promise.withResolvers();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n\n  cancel(reason) {\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({ value: undefined, done: true });\n    }\n    this._requests.length = 0;\n  }\n\n  progressiveDone() {\n    if (this._done) {\n      return;\n    }\n    this._done = true;\n  }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFDataTransportStreamRangeReader {\n  constructor(stream, begin, end) {\n    this._stream = stream;\n    this._begin = begin;\n    this._end = end;\n    this._queuedChunk = null;\n    this._requests = [];\n    this._done = false;\n\n    this.onProgress = null;\n  }\n\n  _enqueue(chunk) {\n    if (this._done) {\n      return; // ignore new data\n    }\n    if (this._requests.length === 0) {\n      this._queuedChunk = chunk;\n    } else {\n      const requestsCapability = this._requests.shift();\n      requestsCapability.resolve({ value: chunk, done: false });\n      for (const requestCapability of this._requests) {\n        requestCapability.resolve({ value: undefined, done: true });\n      }\n      this._requests.length = 0;\n    }\n    this._done = true;\n    this._stream._removeRangeReader(this);\n  }\n\n  get isStreamingSupported() {\n    return false;\n  }\n\n  async read() {\n    if (this._queuedChunk) {\n      const chunk = this._queuedChunk;\n      this._queuedChunk = null;\n      return { value: chunk, done: false };\n    }\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    const requestCapability = Promise.withResolvers();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n\n  cancel(reason) {\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({ value: undefined, done: true });\n    }\n    this._requests.length = 0;\n    this._stream._removeRangeReader(this);\n  }\n}\n\nexport { PDFDataTransportStream };\n", "/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { stringToBytes } from \"../shared/util.js\";\n\n// This getFilenameFromContentDispositionHeader function is adapted from\n// https://github.com/Rob--W/open-in-browser/blob/7e2e35a38b8b4e981b11da7b2f01df0149049e92/extension/content-disposition.js\n// with the following changes:\n// - Modified to conform to PDF.js's coding style.\n// - Move return to the end of the function to prevent Babel from dropping the\n//   function declarations.\n\n/**\n * Extract file name from the Content-Disposition HTTP response header.\n *\n * @param {string} contentDisposition\n * @returns {string} Filename, if found in the Content-Disposition header.\n */\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n  let needsEncodingFixup = true;\n\n  // filename*=ext-value (\"ext-value\" from RFC 5987, referenced by RFC 6266).\n  let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n  if (tmp) {\n    tmp = tmp[1];\n    let filename = rfc2616unquote(tmp);\n    filename = unescape(filename);\n    filename = rfc5987decode(filename);\n    filename = rfc2047decode(filename);\n    return fixupEncoding(filename);\n  }\n\n  // Continuations (RFC 2231 section 3, referenced by RFC 5987 section 3.1).\n  // filename*n*=part\n  // filename*n=part\n  tmp = rfc2231getparam(contentDisposition);\n  if (tmp) {\n    // RFC 2047, section\n    const filename = rfc2047decode(tmp);\n    return fixupEncoding(filename);\n  }\n\n  // filename=value (RFC 5987, section 4.1).\n  tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n  if (tmp) {\n    tmp = tmp[1];\n    let filename = rfc2616unquote(tmp);\n    filename = rfc2047decode(filename);\n    return fixupEncoding(filename);\n  }\n\n  // After this line there are only function declarations. We cannot put\n  // \"return\" here for readability because babel would then drop the function\n  // declarations...\n  function toParamRegExp(attributePattern, flags) {\n    return new RegExp(\n      \"(?:^|;)\\\\s*\" +\n        attributePattern +\n        \"\\\\s*=\\\\s*\" +\n        // Captures: value = token | quoted-string\n        // (RFC 2616, section 3.6 and referenced by RFC 6266 4.1)\n        \"(\" +\n        '[^\";\\\\s][^;\\\\s]*' +\n        \"|\" +\n        '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' +\n        \")\",\n      flags\n    );\n  }\n  function textdecode(encoding, value) {\n    if (encoding) {\n      if (!/^[\\x00-\\xFF]+$/.test(value)) {\n        return value;\n      }\n      try {\n        const decoder = new TextDecoder(encoding, { fatal: true });\n        const buffer = stringToBytes(value);\n        value = decoder.decode(buffer);\n        needsEncodingFixup = false;\n      } catch {\n        // TextDecoder constructor threw - unrecognized encoding.\n      }\n    }\n    return value;\n  }\n  function fixupEncoding(value) {\n    if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n      // Maybe multi-byte UTF-8.\n      value = textdecode(\"utf-8\", value);\n      if (needsEncodingFixup) {\n        // Try iso-8859-1 encoding.\n        value = textdecode(\"iso-8859-1\", value);\n      }\n    }\n    return value;\n  }\n  function rfc2231getparam(contentDispositionStr) {\n    const matches = [];\n    let match;\n    // Iterate over all filename*n= and filename*n*= with n being an integer\n    // of at least zero. Any non-zero number must not start with '0'.\n    const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n    while ((match = iter.exec(contentDispositionStr)) !== null) {\n      let [, n, quot, part] = match; // eslint-disable-line prefer-const\n      n = parseInt(n, 10);\n      if (n in matches) {\n        // Ignore anything after the invalid second filename*0.\n        if (n === 0) {\n          break;\n        }\n        continue;\n      }\n      matches[n] = [quot, part];\n    }\n    const parts = [];\n    for (let n = 0; n < matches.length; ++n) {\n      if (!(n in matches)) {\n        // Numbers must be consecutive. Truncate when there is a hole.\n        break;\n      }\n      let [quot, part] = matches[n]; // eslint-disable-line prefer-const\n      part = rfc2616unquote(part);\n      if (quot) {\n        part = unescape(part);\n        if (n === 0) {\n          part = rfc5987decode(part);\n        }\n      }\n      parts.push(part);\n    }\n    return parts.join(\"\");\n  }\n  function rfc2616unquote(value) {\n    if (value.startsWith('\"')) {\n      const parts = value.slice(1).split('\\\\\"');\n      // Find the first unescaped \" and terminate there.\n      for (let i = 0; i < parts.length; ++i) {\n        const quotindex = parts[i].indexOf('\"');\n        if (quotindex !== -1) {\n          parts[i] = parts[i].slice(0, quotindex);\n          parts.length = i + 1; // Truncates and stop the iteration.\n        }\n        parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n      }\n      value = parts.join('\"');\n    }\n    return value;\n  }\n  function rfc5987decode(extvalue) {\n    // Decodes \"ext-value\" from RFC 5987.\n    const encodingend = extvalue.indexOf(\"'\");\n    if (encodingend === -1) {\n      // Some servers send \"filename*=\" without encoding 'language' prefix,\n      // e.g. in https://github.com/Rob--W/open-in-browser/issues/26\n      // Let's accept the value like Firefox (57) (Chrome 62 rejects it).\n      return extvalue;\n    }\n    const encoding = extvalue.slice(0, encodingend);\n    const langvalue = extvalue.slice(encodingend + 1);\n    // Ignore language (RFC 5987 section 3.2.1, and RFC 6266 section 4.1 ).\n    const value = langvalue.replace(/^[^']*'/, \"\");\n    return textdecode(encoding, value);\n  }\n  function rfc2047decode(value) {\n    // RFC 2047-decode the result. Firefox tried to drop support for it, but\n    // backed out because some servers use it - https://bugzil.la/875615\n    // Firefox's condition for decoding is here: https://searchfox.org/mozilla-central/rev/4a590a5a15e35d88a3b23dd6ac3c471cf85b04a8/netwerk/mime/nsMIMEHeaderParamImpl.cpp#742-748\n\n    // We are more strict and only recognize RFC 2047-encoding if the value\n    // starts with \"=?\", since then it is likely that the full value is\n    // RFC 2047-encoded.\n\n    // Firefox also decodes words even where RFC 2047 section 5 states:\n    // \"An 'encoded-word' MUST NOT appear within a 'quoted-string'.\"\n    if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n      return value;\n    }\n    // RFC 2047, section 2.4\n    // encoded-word = \"=?\" charset \"?\" encoding \"?\" encoded-text \"?=\"\n    // charset = token (but let's restrict to characters that denote a\n    //       possibly valid encoding).\n    // encoding = q or b\n    // encoded-text = any printable ASCII character other than ? or space.\n    //        ... but Firefox permits ? and space.\n    return value.replaceAll(\n      /=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g,\n      function (matches, charset, encoding, text) {\n        if (encoding === \"q\" || encoding === \"Q\") {\n          // RFC 2047 section 4.2.\n          text = text.replaceAll(\"_\", \" \");\n          text = text.replaceAll(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n            return String.fromCharCode(parseInt(hex, 16));\n          });\n          return textdecode(charset, text);\n        } // else encoding is b or B - base64 (RFC 2047 section 4.1)\n        try {\n          text = atob(text);\n        } catch {}\n        return textdecode(charset, text);\n      }\n    );\n  }\n\n  return \"\";\n}\n\nexport { getFilenameFromContentDispositionHeader };\n", "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, ResponseException } from \"../shared/util.js\";\nimport { getFilenameFromContentDispositionHeader } from \"./content_disposition.js\";\nimport { isPdfFile } from \"./display_utils.js\";\n\nfunction createHeaders(isHttp, httpHeaders) {\n  const headers = new Headers();\n\n  if (!isHttp || !httpHeaders || typeof httpHeaders !== \"object\") {\n    return headers;\n  }\n  for (const key in httpHeaders) {\n    const val = httpHeaders[key];\n    if (val !== undefined) {\n      headers.append(key, val);\n    }\n  }\n  return headers;\n}\n\nfunction getResponseOrigin(url) {\n  // Notably, null is distinct from \"null\" string (e.g. from file:-URLs).\n  return URL.parse(url)?.origin ?? null;\n}\n\nfunction validateRangeRequestCapabilities({\n  responseHeaders,\n  isHttp,\n  rangeChunkSize,\n  disableRange,\n}) {\n  if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n    assert(\n      Number.isInteger(rangeChunkSize) && rangeChunkSize > 0,\n      \"rangeChunkSize must be an integer larger than zero.\"\n    );\n  }\n  const returnValues = {\n    allowRangeRequests: false,\n    suggestedLength: undefined,\n  };\n\n  const length = parseInt(responseHeaders.get(\"Content-Length\"), 10);\n  if (!Number.isInteger(length)) {\n    return returnValues;\n  }\n\n  returnValues.suggestedLength = length;\n\n  if (length <= 2 * rangeChunkSize) {\n    // The file size is smaller than the size of two chunks, so it does not\n    // make any sense to abort the request and retry with a range request.\n    return returnValues;\n  }\n\n  if (disableRange || !isHttp) {\n    return returnValues;\n  }\n  if (responseHeaders.get(\"Accept-Ranges\") !== \"bytes\") {\n    return returnValues;\n  }\n\n  const contentEncoding = responseHeaders.get(\"Content-Encoding\") || \"identity\";\n  if (contentEncoding !== \"identity\") {\n    return returnValues;\n  }\n\n  returnValues.allowRangeRequests = true;\n  return returnValues;\n}\n\nfunction extractFilenameFromHeader(responseHeaders) {\n  const contentDisposition = responseHeaders.get(\"Content-Disposition\");\n  if (contentDisposition) {\n    let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n    if (filename.includes(\"%\")) {\n      try {\n        filename = decodeURIComponent(filename);\n      } catch {}\n    }\n    if (isPdfFile(filename)) {\n      return filename;\n    }\n  }\n  return null;\n}\n\nfunction createResponseError(status, url) {\n  return new ResponseException(\n    `Unexpected server response (${status}) while retrieving PDF \"${url}\".`,\n    status,\n    /* missing = */ status === 404 || (status === 0 && url.startsWith(\"file:\"))\n  );\n}\n\nfunction validateResponseStatus(status) {\n  return status === 200 || status === 206;\n}\n\nexport {\n  createHeaders,\n  createResponseError,\n  extractFilenameFromHeader,\n  getResponseOrigin,\n  validateRangeRequestCapabilities,\n  validateResponseStatus,\n};\n", "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AbortException, assert, warn } from \"../shared/util.js\";\nimport {\n  createHeaders,\n  createResponseError,\n  extractFilenameFromHeader,\n  getResponseOrigin,\n  validateRangeRequestCapabilities,\n  validateResponseStatus,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n  throw new Error(\n    'Module \"./fetch_stream.js\" shall not be used with MOZCENTRAL builds.'\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 getArrayBuffer(val) {\n  if (val instanceof Uint8Array) {\n    return val.buffer;\n  }\n  if (val instanceof ArrayBuffer) {\n    return val;\n  }\n  warn(`getArrayBuffer - unexpected data format: ${val}`);\n  return new Uint8Array(val).buffer;\n}\n\n/** @implements {IPDFStream} */\nclass PDFFetchStream {\n  _responseOrigin = null;\n\n  constructor(source) {\n    this.source = source;\n    this.isHttp = /^https?:/i.test(source.url);\n    this.headers = createHeaders(this.isHttp, source.httpHeaders);\n\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n\n  get _progressiveDataLength() {\n    return this._fullRequestReader?._loaded ?? 0;\n  }\n\n  getFullReader() {\n    assert(\n      !this._fullRequestReader,\n      \"PDFFetchStream.getFullReader can only be called once.\"\n    );\n    this._fullRequestReader = new PDFFetchStreamReader(this);\n    return this._fullRequestReader;\n  }\n\n  getRangeReader(begin, end) {\n    if (end <= this._progressiveDataLength) {\n      return null;\n    }\n    const reader = new PDFFetchStreamRangeReader(this, begin, end);\n    this._rangeRequestReaders.push(reader);\n    return reader;\n  }\n\n  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFFetchStreamReader {\n  constructor(stream) {\n    this._stream = stream;\n    this._reader = null;\n    this._loaded = 0;\n    this._filename = null;\n    const source = stream.source;\n    this._withCredentials = source.withCredentials || false;\n    this._contentLength = source.length;\n    this._headersCapability = Promise.withResolvers();\n    this._disableRange = source.disableRange || false;\n    this._rangeChunkSize = source.rangeChunkSize;\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n\n    this._abortController = new AbortController();\n    this._isStreamingSupported = !source.disableStream;\n    this._isRangeSupported = !source.disableRange;\n    // Always create a copy of the headers.\n    const headers = new Headers(stream.headers);\n\n    const url = source.url;\n    fetch(\n      url,\n      createFetchOptions(headers, this._withCredentials, this._abortController)\n    )\n      .then(response => {\n        stream._responseOrigin = getResponseOrigin(response.url);\n\n        if (!validateResponseStatus(response.status)) {\n          throw createResponseError(response.status, url);\n        }\n        this._reader = response.body.getReader();\n        this._headersCapability.resolve();\n\n        const responseHeaders = response.headers;\n\n        const { allowRangeRequests, suggestedLength } =\n          validateRangeRequestCapabilities({\n            responseHeaders,\n            isHttp: stream.isHttp,\n            rangeChunkSize: this._rangeChunkSize,\n            disableRange: this._disableRange,\n          });\n\n        this._isRangeSupported = allowRangeRequests;\n        // Setting right content length.\n        this._contentLength = suggestedLength || this._contentLength;\n\n        this._filename = extractFilenameFromHeader(responseHeaders);\n\n        // We need to stop reading when range is supported and streaming is\n        // disabled.\n        if (!this._isStreamingSupported && this._isRangeSupported) {\n          this.cancel(new AbortException(\"Streaming is disabled.\"));\n        }\n      })\n      .catch(this._headersCapability.reject);\n\n    this.onProgress = null;\n  }\n\n  get headersReady() {\n    return this._headersCapability.promise;\n  }\n\n  get filename() {\n    return this._filename;\n  }\n\n  get contentLength() {\n    return this._contentLength;\n  }\n\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  async read() {\n    await this._headersCapability.promise;\n    const { value, done } = await this._reader.read();\n    if (done) {\n      return { value, done };\n    }\n    this._loaded += value.byteLength;\n    this.onProgress?.({\n      loaded: this._loaded,\n      total: this._contentLength,\n    });\n\n    return { value: getArrayBuffer(value), done: false };\n  }\n\n  cancel(reason) {\n    this._reader?.cancel(reason);\n    this._abortController.abort();\n  }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFFetchStreamRangeReader {\n  constructor(stream, begin, end) {\n    this._stream = stream;\n    this._reader = null;\n    this._loaded = 0;\n    const source = stream.source;\n    this._withCredentials = source.withCredentials || false;\n    this._readCapability = Promise.withResolvers();\n    this._isStreamingSupported = !source.disableStream;\n\n    this._abortController = new AbortController();\n    // Always create a copy of the headers.\n    const headers = new Headers(stream.headers);\n    headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n\n    const url = source.url;\n    fetch(\n      url,\n      createFetchOptions(headers, this._withCredentials, this._abortController)\n    )\n      .then(response => {\n        const responseOrigin = getResponseOrigin(response.url);\n\n        if (responseOrigin !== stream._responseOrigin) {\n          throw new Error(\n            `Expected range response-origin \"${responseOrigin}\" to match \"${stream._responseOrigin}\".`\n          );\n        }\n        if (!validateResponseStatus(response.status)) {\n          throw createResponseError(response.status, url);\n        }\n        this._readCapability.resolve();\n        this._reader = response.body.getReader();\n      })\n      .catch(this._readCapability.reject);\n\n    this.onProgress = null;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  async read() {\n    await this._readCapability.promise;\n    const { value, done } = await this._reader.read();\n    if (done) {\n      return { value, done };\n    }\n    this._loaded += value.byteLength;\n    this.onProgress?.({ loaded: this._loaded });\n\n    return { value: getArrayBuffer(value), done: false };\n  }\n\n  cancel(reason) {\n    this._reader?.cancel(reason);\n    this._abortController.abort();\n  }\n}\n\nexport { PDFFetchStream };\n", "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, stringToBytes, warn } from \"../shared/util.js\";\nimport {\n  createHeaders,\n  createResponseError,\n  extractFilenameFromHeader,\n  getResponseOrigin,\n  validateRangeRequestCapabilities,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n  throw new Error(\n    'Module \"./network.js\" shall not be used with MOZCENTRAL builds.'\n  );\n}\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\n\nfunction getArrayBuffer(xhr) {\n  const data = xhr.response;\n  if (typeof data !== \"string\") {\n    return data;\n  }\n  return stringToBytes(data).buffer;\n}\n\nclass NetworkManager {\n  _responseOrigin = null;\n\n  constructor({ url, httpHeaders, withCredentials }) {\n    this.url = url;\n    this.isHttp = /^https?:/i.test(url);\n    this.headers = createHeaders(this.isHttp, httpHeaders);\n    this.withCredentials = withCredentials || false;\n\n    this.currXhrId = 0;\n    this.pendingRequests = Object.create(null);\n  }\n\n  request(args) {\n    const xhr = new XMLHttpRequest();\n    const xhrId = this.currXhrId++;\n    const pendingRequest = (this.pendingRequests[xhrId] = { xhr });\n\n    xhr.open(\"GET\", this.url);\n    xhr.withCredentials = this.withCredentials;\n    for (const [key, val] of this.headers) {\n      xhr.setRequestHeader(key, val);\n    }\n    if (this.isHttp && \"begin\" in args && \"end\" in args) {\n      xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n      pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n    } else {\n      pendingRequest.expectedStatus = OK_RESPONSE;\n    }\n    xhr.responseType = \"arraybuffer\";\n\n    assert(args.onError, \"Expected `onError` callback to be provided.\");\n    xhr.onerror = () => {\n      args.onError(xhr.status);\n    };\n    xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n    xhr.onprogress = this.onProgress.bind(this, xhrId);\n\n    pendingRequest.onHeadersReceived = args.onHeadersReceived;\n    pendingRequest.onDone = args.onDone;\n    pendingRequest.onError = args.onError;\n    pendingRequest.onProgress = args.onProgress;\n\n    xhr.send(null);\n\n    return xhrId;\n  }\n\n  onProgress(xhrId, evt) {\n    const pendingRequest = this.pendingRequests[xhrId];\n    if (!pendingRequest) {\n      return; // Maybe abortRequest was called...\n    }\n    pendingRequest.onProgress?.(evt);\n  }\n\n  onStateChange(xhrId, evt) {\n    const pendingRequest = this.pendingRequests[xhrId];\n    if (!pendingRequest) {\n      return; // Maybe abortRequest was called...\n    }\n\n    const xhr = pendingRequest.xhr;\n    if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n      pendingRequest.onHeadersReceived();\n      delete pendingRequest.onHeadersReceived;\n    }\n\n    if (xhr.readyState !== 4) {\n      return;\n    }\n\n    if (!(xhrId in this.pendingRequests)) {\n      // The XHR request might have been aborted in onHeadersReceived()\n      // callback, in which case we should abort request.\n      return;\n    }\n\n    delete this.pendingRequests[xhrId];\n\n    // Success status == 0 can be on ftp, file and other protocols.\n    if (xhr.status === 0 && this.isHttp) {\n      pendingRequest.onError(xhr.status);\n      return;\n    }\n    const xhrStatus = xhr.status || OK_RESPONSE;\n\n    // From http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2:\n    // \"A server MAY ignore the Range header\". This means it's possible to\n    // get a 200 rather than a 206 response from a range request.\n    const ok_response_on_range_request =\n      xhrStatus === OK_RESPONSE &&\n      pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n\n    if (\n      !ok_response_on_range_request &&\n      xhrStatus !== pendingRequest.expectedStatus\n    ) {\n      pendingRequest.onError(xhr.status);\n      return;\n    }\n\n    const chunk = getArrayBuffer(xhr);\n    if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n      const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n      const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n      if (matches) {\n        pendingRequest.onDone({\n          begin: parseInt(matches[1], 10),\n          chunk,\n        });\n      } else {\n        warn(`Missing or invalid \"Content-Range\" header.`);\n        pendingRequest.onError(0);\n      }\n    } else if (chunk) {\n      pendingRequest.onDone({\n        begin: 0,\n        chunk,\n      });\n    } else {\n      pendingRequest.onError(xhr.status);\n    }\n  }\n\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/** @implements {IPDFStream} */\nclass PDFNetworkStream {\n  constructor(source) {\n    this._source = source;\n    this._manager = new NetworkManager(source);\n    this._rangeChunkSize = source.rangeChunkSize;\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n\n  _onRangeRequestReaderClosed(reader) {\n    const i = this._rangeRequestReaders.indexOf(reader);\n    if (i >= 0) {\n      this._rangeRequestReaders.splice(i, 1);\n    }\n  }\n\n  getFullReader() {\n    assert(\n      !this._fullRequestReader,\n      \"PDFNetworkStream.getFullReader can only be called once.\"\n    );\n    this._fullRequestReader = new PDFNetworkStreamFullRequestReader(\n      this._manager,\n      this._source\n    );\n    return this._fullRequestReader;\n  }\n\n  getRangeReader(begin, end) {\n    const reader = new PDFNetworkStreamRangeRequestReader(\n      this._manager,\n      begin,\n      end\n    );\n    reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n    this._rangeRequestReaders.push(reader);\n    return reader;\n  }\n\n  cancelAllRequests(reason) {\n    this._fullRequestReader?.cancel(reason);\n\n    for (const reader of this._rangeRequestReaders.slice(0)) {\n      reader.cancel(reason);\n    }\n  }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFNetworkStreamFullRequestReader {\n  constructor(manager, source) {\n    this._manager = manager;\n\n    this._url = source.url;\n    this._fullRequestId = manager.request({\n      onHeadersReceived: this._onHeadersReceived.bind(this),\n      onDone: this._onDone.bind(this),\n      onError: this._onError.bind(this),\n      onProgress: this._onProgress.bind(this),\n    });\n    this._headersCapability = Promise.withResolvers();\n    this._disableRange = source.disableRange || false;\n    this._contentLength = source.length; // Optional\n    this._rangeChunkSize = source.rangeChunkSize;\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n\n    this._isStreamingSupported = false;\n    this._isRangeSupported = false;\n\n    this._cachedChunks = [];\n    this._requests = [];\n    this._done = false;\n    this._storedError = undefined;\n    this._filename = null;\n\n    this.onProgress = null;\n  }\n\n  _onHeadersReceived() {\n    const fullRequestXhrId = this._fullRequestId;\n    const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n\n    this._manager._responseOrigin = getResponseOrigin(\n      fullRequestXhr.responseURL\n    );\n\n    const rawResponseHeaders = fullRequestXhr.getAllResponseHeaders();\n    const responseHeaders = new Headers(\n      rawResponseHeaders\n        ? rawResponseHeaders\n            .trimStart()\n            .replace(/[^\\S ]+$/, \"\") // Not `trimEnd`, to keep regular spaces.\n            .split(/[\\r\\n]+/)\n            .map(x => {\n              const [key, ...val] = x.split(\": \");\n              return [key, val.join(\": \")];\n            })\n        : []\n    );\n\n    const { allowRangeRequests, suggestedLength } =\n      validateRangeRequestCapabilities({\n        responseHeaders,\n        isHttp: this._manager.isHttp,\n        rangeChunkSize: this._rangeChunkSize,\n        disableRange: this._disableRange,\n      });\n\n    if (allowRangeRequests) {\n      this._isRangeSupported = true;\n    }\n    // Setting right content length.\n    this._contentLength = suggestedLength || this._contentLength;\n\n    this._filename = extractFilenameFromHeader(responseHeaders);\n\n    if (this._isRangeSupported) {\n      // NOTE: by cancelling the full request, and then issuing range\n      // requests, there will be an issue for sites where you can only\n      // request the pdf once. However, if this is the case, then the\n      // server should not be returning that it can support range requests.\n      this._manager.abortRequest(fullRequestXhrId);\n    }\n\n    this._headersCapability.resolve();\n  }\n\n  _onDone(data) {\n    if (data) {\n      if (this._requests.length > 0) {\n        const requestCapability = this._requests.shift();\n        requestCapability.resolve({ value: data.chunk, done: false });\n      } else {\n        this._cachedChunks.push(data.chunk);\n      }\n    }\n    this._done = true;\n    if (this._cachedChunks.length > 0) {\n      return;\n    }\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({ value: undefined, done: true });\n    }\n    this._requests.length = 0;\n  }\n\n  _onError(status) {\n    this._storedError = createResponseError(status, this._url);\n    this._headersCapability.reject(this._storedError);\n    for (const requestCapability of this._requests) {\n      requestCapability.reject(this._storedError);\n    }\n    this._requests.length = 0;\n    this._cachedChunks.length = 0;\n  }\n\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._headersCapability.promise;\n  }\n\n  async read() {\n    await this._headersCapability.promise;\n\n    if (this._storedError) {\n      throw this._storedError;\n    }\n    if (this._cachedChunks.length > 0) {\n      const chunk = this._cachedChunks.shift();\n      return { value: chunk, done: false };\n    }\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    const requestCapability = Promise.withResolvers();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n\n  cancel(reason) {\n    this._done = true;\n    this._headersCapability.reject(reason);\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({ value: undefined, done: true });\n    }\n    this._requests.length = 0;\n    if (this._manager.isPendingRequest(this._fullRequestId)) {\n      this._manager.abortRequest(this._fullRequestId);\n    }\n    this._fullRequestReader = null;\n  }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFNetworkStreamRangeRequestReader {\n  constructor(manager, begin, end) {\n    this._manager = manager;\n\n    this._url = manager.url;\n    this._requestId = manager.request({\n      begin,\n      end,\n      onHeadersReceived: this._onHeadersReceived.bind(this),\n      onDone: this._onDone.bind(this),\n      onError: this._onError.bind(this),\n      onProgress: this._onProgress.bind(this),\n    });\n    this._requests = [];\n    this._queuedChunk = null;\n    this._done = false;\n    this._storedError = undefined;\n\n    this.onProgress = null;\n    this.onClosed = null;\n  }\n\n  _onHeadersReceived() {\n    const responseOrigin = getResponseOrigin(\n      this._manager.getRequestXhr(this._requestId)?.responseURL\n    );\n\n    if (responseOrigin !== this._manager._responseOrigin) {\n      this._storedError = new Error(\n        `Expected range response-origin \"${responseOrigin}\" to match \"${this._manager._responseOrigin}\".`\n      );\n      this._onError(0);\n    }\n  }\n\n  _close() {\n    this.onClosed?.(this);\n  }\n\n  _onDone(data) {\n    const chunk = data.chunk;\n    if (this._requests.length > 0) {\n      const requestCapability = this._requests.shift();\n      requestCapability.resolve({ value: chunk, done: false });\n    } else {\n      this._queuedChunk = chunk;\n    }\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({ value: undefined, done: true });\n    }\n    this._requests.length = 0;\n    this._close();\n  }\n\n  _onError(status) {\n    this._storedError ??= createResponseError(status, this._url);\n    for (const requestCapability of this._requests) {\n      requestCapability.reject(this._storedError);\n    }\n    this._requests.length = 0;\n    this._queuedChunk = null;\n  }\n\n  _onProgress(evt) {\n    if (!this.isStreamingSupported) {\n      this.onProgress?.({ loaded: evt.loaded });\n    }\n  }\n\n  get isStreamingSupported() {\n    return false;\n  }\n\n  async read() {\n    if (this._storedError) {\n      throw this._storedError;\n    }\n    if (this._queuedChunk !== null) {\n      const chunk = this._queuedChunk;\n      this._queuedChunk = null;\n      return { value: chunk, done: false };\n    }\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    const requestCapability = Promise.withResolvers();\n    this._requests.push(requestCapability);\n    return requestCapability.promise;\n  }\n\n  cancel(reason) {\n    this._done = true;\n    for (const requestCapability of this._requests) {\n      requestCapability.resolve({ value: undefined, done: true });\n    }\n    this._requests.length = 0;\n    if (this._manager.isPendingRequest(this._requestId)) {\n      this._manager.abortRequest(this._requestId);\n    }\n    this._close();\n  }\n}\n\nexport { PDFNetworkStream };\n", "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\nimport { AbortException, assert } from \"../shared/util.js\";\nimport { createResponseError } from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n  throw new Error(\n    'Module \"./node_stream.js\" shall not be used with MOZCENTRAL builds.'\n  );\n}\n\nconst urlRegex = /^[a-z][a-z0-9\\-+.]+:/i;\n\nfunction parseUrlOrPath(sourceUrl) {\n  if (urlRegex.test(sourceUrl)) {\n    return new URL(sourceUrl);\n  }\n  const url = process.getBuiltinModule(\"url\");\n  return new URL(url.pathToFileURL(sourceUrl));\n}\n\nclass PDFNodeStream {\n  constructor(source) {\n    this.source = source;\n    this.url = parseUrlOrPath(source.url);\n    assert(\n      this.url.protocol === \"file:\",\n      \"PDFNodeStream only supports file:// URLs.\"\n    );\n\n    this._fullRequestReader = null;\n    this._rangeRequestReaders = [];\n  }\n\n  get _progressiveDataLength() {\n    return this._fullRequestReader?._loaded ?? 0;\n  }\n\n  getFullReader() {\n    assert(\n      !this._fullRequestReader,\n      \"PDFNodeStream.getFullReader can only be called once.\"\n    );\n    this._fullRequestReader = new PDFNodeStreamFsFullReader(this);\n    return this._fullRequestReader;\n  }\n\n  getRangeReader(start, end) {\n    if (end <= this._progressiveDataLength) {\n      return null;\n    }\n    const rangeReader = new PDFNodeStreamFsRangeReader(this, start, end);\n    this._rangeRequestReaders.push(rangeReader);\n    return rangeReader;\n  }\n\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\nclass PDFNodeStreamFsFullReader {\n  constructor(stream) {\n    this._url = stream.url;\n    this._done = false;\n    this._storedError = null;\n    this.onProgress = null;\n    const source = stream.source;\n    this._contentLength = source.length; // optional\n    this._loaded = 0;\n    this._filename = null;\n\n    this._disableRange = source.disableRange || false;\n    this._rangeChunkSize = source.rangeChunkSize;\n    if (!this._rangeChunkSize && !this._disableRange) {\n      this._disableRange = true;\n    }\n\n    this._isStreamingSupported = !source.disableStream;\n    this._isRangeSupported = !source.disableRange;\n\n    this._readableStream = null;\n    this._readCapability = Promise.withResolvers();\n    this._headersCapability = Promise.withResolvers();\n\n    const fs = process.getBuiltinModule(\"fs\");\n    fs.promises.lstat(this._url).then(\n      stat => {\n        // Setting right content length.\n        this._contentLength = stat.size;\n\n        this._setReadableStream(fs.createReadStream(this._url));\n        this._headersCapability.resolve();\n      },\n      error => {\n        if (error.code === \"ENOENT\") {\n          error = createResponseError(/* status = */ 0, this._url.href);\n        }\n        this._storedError = error;\n        this._headersCapability.reject(error);\n      }\n    );\n  }\n\n  get headersReady() {\n    return this._headersCapability.promise;\n  }\n\n  get filename() {\n    return this._filename;\n  }\n\n  get contentLength() {\n    return this._contentLength;\n  }\n\n  get isRangeSupported() {\n    return this._isRangeSupported;\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  async read() {\n    await this._readCapability.promise;\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    if (this._storedError) {\n      throw this._storedError;\n    }\n\n    const chunk = this._readableStream.read();\n    if (chunk === null) {\n      this._readCapability = Promise.withResolvers();\n      return this.read();\n    }\n    this._loaded += chunk.length;\n    this.onProgress?.({\n      loaded: this._loaded,\n      total: this._contentLength,\n    });\n\n    // Ensure that `read()` method returns ArrayBuffer.\n    const buffer = new Uint8Array(chunk).buffer;\n    return { value: buffer, done: false };\n  }\n\n  cancel(reason) {\n    // Call `this._error()` method when cancel is called\n    // before _readableStream is set.\n    if (!this._readableStream) {\n      this._error(reason);\n      return;\n    }\n    this._readableStream.destroy(reason);\n  }\n\n  _error(reason) {\n    this._storedError = reason;\n    this._readCapability.resolve();\n  }\n\n  _setReadableStream(readableStream) {\n    this._readableStream = readableStream;\n    readableStream.on(\"readable\", () => {\n      this._readCapability.resolve();\n    });\n\n    readableStream.on(\"end\", () => {\n      // Destroy readable to minimize resource usage.\n      readableStream.destroy();\n      this._done = true;\n      this._readCapability.resolve();\n    });\n\n    readableStream.on(\"error\", reason => {\n      this._error(reason);\n    });\n\n    // We need to stop reading when range is supported and streaming is\n    // disabled.\n    if (!this._isStreamingSupported && this._isRangeSupported) {\n      this._error(new AbortException(\"streaming is disabled\"));\n    }\n\n    // Destroy ReadableStream if already in errored state.\n    if (this._storedError) {\n      this._readableStream.destroy(this._storedError);\n    }\n  }\n}\n\nclass PDFNodeStreamFsRangeReader {\n  constructor(stream, start, end) {\n    this._url = stream.url;\n    this._done = false;\n    this._storedError = null;\n    this.onProgress = null;\n    this._loaded = 0;\n    this._readableStream = null;\n    this._readCapability = Promise.withResolvers();\n    const source = stream.source;\n    this._isStreamingSupported = !source.disableStream;\n\n    const fs = process.getBuiltinModule(\"fs\");\n    this._setReadableStream(\n      fs.createReadStream(this._url, { start, end: end - 1 })\n    );\n  }\n\n  get isStreamingSupported() {\n    return this._isStreamingSupported;\n  }\n\n  async read() {\n    await this._readCapability.promise;\n    if (this._done) {\n      return { value: undefined, done: true };\n    }\n    if (this._storedError) {\n      throw this._storedError;\n    }\n\n    const chunk = this._readableStream.read();\n    if (chunk === null) {\n      this._readCapability = Promise.withResolvers();\n      return this.read();\n    }\n    this._loaded += chunk.length;\n    this.onProgress?.({ loaded: this._loaded });\n\n    // Ensure that `read()` method returns ArrayBuffer.\n    const buffer = new Uint8Array(chunk).buffer;\n    return { value: buffer, done: false };\n  }\n\n  cancel(reason) {\n    // Call `this._error()` method when cancel is called\n    // before _readableStream is set.\n    if (!this._readableStream) {\n      this._error(reason);\n      return;\n    }\n    this._readableStream.destroy(reason);\n  }\n\n  _error(reason) {\n    this._storedError = reason;\n    this._readCapability.resolve();\n  }\n\n  _setReadableStream(readableStream) {\n    this._readableStream = readableStream;\n    readableStream.on(\"readable\", () => {\n      this._readCapability.resolve();\n    });\n\n    readableStream.on(\"end\", () => {\n      // Destroy readableStream to minimize resource usage.\n      readableStream.destroy();\n      this._done = true;\n      this._readCapability.resolve();\n    });\n\n    readableStream.on(\"error\", reason => {\n      this._error(reason);\n    });\n\n    // Destroy readableStream if already in errored state.\n    if (this._storedError) {\n      this._readableStream.destroy(this._storedError);\n    }\n  }\n}\n\nexport { PDFNodeStream };\n", "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst INITIAL_DATA = Symbol(\"INITIAL_DATA\");\n\n/**\n * A PDF document and page is built of many objects. E.g. there are objects for\n * fonts, images, rendering code, etc. These objects may get processed inside of\n * a worker. This class implements some basic methods to manage these objects.\n */\nclass PDFObjects {\n  #objs = Object.create(null);\n\n  /**\n   * Ensures there is an object defined for `objId`.\n   *\n   * @param {string} objId\n   * @returns {Object}\n   */\n  #ensureObj(objId) {\n    return (this.#objs[objId] ||= {\n      ...Promise.withResolvers(),\n      data: INITIAL_DATA,\n    });\n  }\n\n  /**\n   * If called *without* callback, this returns the data of `objId` but the\n   * object needs to be resolved. If it isn't, this method throws.\n   *\n   * If called *with* a callback, the callback is called with the data of the\n   * object once the object is resolved. That means, if you call this method\n   * and the object is already resolved, the callback gets called right away.\n   *\n   * @param {string} objId\n   * @param {function} [callback]\n   * @returns {any}\n   */\n  get(objId, callback = null) {\n    // If there is a callback, then the get can be async and the object is\n    // not required to be resolved right now.\n    if (callback) {\n      const obj = this.#ensureObj(objId);\n      obj.promise.then(() => callback(obj.data));\n      return null;\n    }\n    // If there isn't a callback, the user expects to get the resolved data\n    // directly.\n    const obj = this.#objs[objId];\n    // If there isn't an object yet or the object isn't resolved, then the\n    // data isn't ready yet!\n    if (!obj || obj.data === INITIAL_DATA) {\n      throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n    }\n    return obj.data;\n  }\n\n  /**\n   * @param {string} objId\n   * @returns {boolean}\n   */\n  has(objId) {\n    const obj = this.#objs[objId];\n    return !!obj && obj.data !== INITIAL_DATA;\n  }\n\n  /**\n   * @param {string} objId\n   * @returns {boolean}\n   */\n  delete(objId) {\n    const obj = this.#objs[objId];\n    if (!obj || obj.data === INITIAL_DATA) {\n      // Only allow removing the object *after* it's been resolved.\n      return false;\n    }\n    delete this.#objs[objId];\n    return true;\n  }\n\n  /**\n   * Resolves the object `objId` with optional `data`.\n   *\n   * @param {string} objId\n   * @param {any} [data]\n   */\n  resolve(objId, data = null) {\n    const obj = this.#ensureObj(objId);\n    obj.data = data;\n    obj.resolve();\n  }\n\n  clear() {\n    for (const objId in this.#objs) {\n      const { data } = this.#objs[objId];\n      data?.bitmap?.close(); // Release any `ImageBitmap` data.\n    }\n    this.#objs = Object.create(null);\n  }\n\n  *[Symbol.iterator]() {\n    for (const objId in this.#objs) {\n      const { data } = this.#objs[objId];\n\n      if (data === INITIAL_DATA) {\n        continue;\n      }\n      yield [objId, data];\n    }\n  }\n}\n\nexport { PDFObjects };\n", "/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./api\").TextContent} TextContent */\n\nimport {\n  AbortException,\n  FeatureTest,\n  shadow,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport { OutputScale, setLayerDimensions } from \"./display_utils.js\";\n\n/**\n * @typedef {Object} TextLayerParameters\n * @property {ReadableStream | TextContent} textContentSource - Text content to\n *   render, i.e. the value returned by the page's `streamTextContent` or\n *   `getTextContent` method.\n * @property {HTMLElement} container - The DOM node that will contain the text\n *   runs.\n * @property {PageViewport} viewport - The target viewport to properly layout\n *   the text runs.\n */\n\n/**\n * @typedef {Object} TextLayerUpdateParameters\n * @property {PageViewport} viewport - The target viewport to properly layout\n *   the text runs.\n * @property {function} [onBefore] - Callback invoked before the textLayer is\n *   updated in the DOM.\n */\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\n\nclass TextLayer {\n  #capability = Promise.withResolvers();\n\n  #container = null;\n\n  #disableProcessItems = false;\n\n  #fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n\n  #lang = null;\n\n  #layoutTextParams = null;\n\n  #pageHeight = 0;\n\n  #pageWidth = 0;\n\n  #reader = null;\n\n  #rootContainer = null;\n\n  #rotation = 0;\n\n  #scale = 0;\n\n  #styleCache = Object.create(null);\n\n  #textContentItemsStr = [];\n\n  #textContentSource = null;\n\n  #textDivs = [];\n\n  #textDivProperties = new WeakMap();\n\n  #transform = null;\n\n  static #ascentCache = new Map();\n\n  static #canvasContexts = new Map();\n\n  static #canvasCtxFonts = new WeakMap();\n\n  static #minFontSize = null;\n\n  static #pendingTextLayers = new Set();\n\n  /**\n   * @param {TextLayerParameters} options\n   */\n  constructor({ textContentSource, container, viewport }) {\n    if (textContentSource instanceof ReadableStream) {\n      this.#textContentSource = textContentSource;\n    } else if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n      typeof textContentSource === \"object\"\n    ) {\n      this.#textContentSource = new ReadableStream({\n        start(controller) {\n          controller.enqueue(textContentSource);\n          controller.close();\n        },\n      });\n    } else {\n      throw new Error('No \"textContentSource\" parameter specified.');\n    }\n    this.#container = this.#rootContainer = container;\n\n    this.#scale = viewport.scale * OutputScale.pixelRatio;\n    this.#rotation = viewport.rotation;\n    this.#layoutTextParams = {\n      div: null,\n      properties: null,\n      ctx: null,\n    };\n    const { pageWidth, pageHeight, pageX, pageY } = viewport.rawDims;\n    this.#transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n    this.#pageWidth = pageWidth;\n    this.#pageHeight = pageHeight;\n\n    TextLayer.#ensureMinFontSizeComputed();\n\n    setLayerDimensions(container, viewport);\n\n    // Always clean-up the temporary canvas once rendering is no longer pending.\n    this.#capability.promise\n      .finally(() => {\n        TextLayer.#pendingTextLayers.delete(this);\n        this.#layoutTextParams = null;\n        this.#styleCache = null;\n      })\n      .catch(() => {\n        // Avoid \"Uncaught promise\" messages in the console.\n      });\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      // For testing purposes.\n      Object.defineProperty(this, \"pageWidth\", {\n        get() {\n          return this.#pageWidth;\n        },\n      });\n      Object.defineProperty(this, \"pageHeight\", {\n        get() {\n          return this.#pageHeight;\n        },\n      });\n    }\n  }\n\n  static get fontFamilyMap() {\n    const { isWindows, isFirefox } = FeatureTest.platform;\n    return shadow(\n      this,\n      \"fontFamilyMap\",\n      new Map([\n        [\n          \"sans-serif\",\n          `${isWindows && isFirefox ? \"Calibri, \" : \"\"}sans-serif`,\n        ],\n        [\n          \"monospace\",\n          `${isWindows && isFirefox ? \"Lucida Console, \" : \"\"}monospace`,\n        ],\n      ])\n    );\n  }\n\n  /**\n   * Render the textLayer.\n   * @returns {Promise}\n   */\n  render() {\n    const pump = () => {\n      this.#reader.read().then(({ value, done }) => {\n        if (done) {\n          this.#capability.resolve();\n          return;\n        }\n        this.#lang ??= value.lang;\n        Object.assign(this.#styleCache, value.styles);\n        this.#processItems(value.items);\n        pump();\n      }, this.#capability.reject);\n    };\n    this.#reader = this.#textContentSource.getReader();\n    TextLayer.#pendingTextLayers.add(this);\n    pump();\n\n    return this.#capability.promise;\n  }\n\n  /**\n   * Update a previously rendered textLayer, if necessary.\n   * @param {TextLayerUpdateParameters} options\n   * @returns {undefined}\n   */\n  update({ viewport, onBefore = null }) {\n    const scale = viewport.scale * OutputScale.pixelRatio;\n    const rotation = viewport.rotation;\n\n    if (rotation !== this.#rotation) {\n      onBefore?.();\n      this.#rotation = rotation;\n      setLayerDimensions(this.#rootContainer, { rotation });\n    }\n\n    if (scale !== this.#scale) {\n      onBefore?.();\n      this.#scale = scale;\n      const params = {\n        div: null,\n        properties: null,\n        ctx: TextLayer.#getCtx(this.#lang),\n      };\n      for (const div of this.#textDivs) {\n        params.properties = this.#textDivProperties.get(div);\n        params.div = div;\n        this.#layout(params);\n      }\n    }\n  }\n\n  /**\n   * Cancel rendering of the textLayer.\n   * @returns {undefined}\n   */\n  cancel() {\n    const abortEx = new AbortException(\"TextLayer task cancelled.\");\n\n    this.#reader?.cancel(abortEx).catch(() => {\n      // Avoid \"Uncaught promise\" messages in the console.\n    });\n    this.#reader = null;\n\n    this.#capability.reject(abortEx);\n  }\n\n  /**\n   * @type {Array<HTMLElement>} HTML elements that correspond to the text items\n   *   of the textContent input.\n   *   This is output and will initially be set to an empty array.\n   */\n  get textDivs() {\n    return this.#textDivs;\n  }\n\n  /**\n   * @type {Array<string>} Strings that correspond to the `str` property of\n   *   the text items of the textContent input.\n   *   This is output and will initially be set to an empty array\n   */\n  get textContentItemsStr() {\n    return this.#textContentItemsStr;\n  }\n\n  #processItems(items) {\n    if (this.#disableProcessItems) {\n      return;\n    }\n    this.#layoutTextParams.ctx ??= TextLayer.#getCtx(this.#lang);\n\n    const textDivs = this.#textDivs,\n      textContentItemsStr = this.#textContentItemsStr;\n\n    for (const item of items) {\n      // No point in rendering many divs as it would make the browser\n      // unusable even after the divs are rendered.\n      if (textDivs.length > MAX_TEXT_DIVS_TO_RENDER) {\n        warn(\"Ignoring additional textDivs for performance reasons.\");\n\n        this.#disableProcessItems = true; // Avoid multiple warnings for one page.\n        return;\n      }\n\n      if (item.str === undefined) {\n        if (\n          item.type === \"beginMarkedContentProps\" ||\n          item.type === \"beginMarkedContent\"\n        ) {\n          const parent = this.#container;\n          this.#container = document.createElement(\"span\");\n          this.#container.classList.add(\"markedContent\");\n          if (item.id) {\n            this.#container.setAttribute(\"id\", `${item.id}`);\n          }\n          parent.append(this.#container);\n        } else if (item.type === \"endMarkedContent\") {\n          this.#container = this.#container.parentNode;\n        }\n        continue;\n      }\n      textContentItemsStr.push(item.str);\n      this.#appendText(item);\n    }\n  }\n\n  #appendText(geom) {\n    // Initialize all used properties to keep the caches monomorphic.\n    const textDiv = document.createElement(\"span\");\n    const textDivProperties = {\n      angle: 0,\n      canvasWidth: 0,\n      hasText: geom.str !== \"\",\n      hasEOL: geom.hasEOL,\n      fontSize: 0,\n    };\n    this.#textDivs.push(textDiv);\n\n    const tx = Util.transform(this.#transform, geom.transform);\n    let angle = Math.atan2(tx[1], tx[0]);\n    const style = this.#styleCache[geom.fontName];\n    if (style.vertical) {\n      angle += Math.PI / 2;\n    }\n\n    let fontFamily =\n      (this.#fontInspectorEnabled && style.fontSubstitution) ||\n      style.fontFamily;\n\n    // Workaround for bug 1922063.\n    fontFamily = TextLayer.fontFamilyMap.get(fontFamily) || fontFamily;\n    const fontHeight = Math.hypot(tx[2], tx[3]);\n    const fontAscent =\n      fontHeight * TextLayer.#getAscent(fontFamily, style, this.#lang);\n\n    let left, top;\n    if (angle === 0) {\n      left = tx[4];\n      top = tx[5] - fontAscent;\n    } else {\n      left = tx[4] + fontAscent * Math.sin(angle);\n      top = tx[5] - fontAscent * Math.cos(angle);\n    }\n\n    const scaleFactorStr = \"calc(var(--total-scale-factor) *\";\n    const divStyle = textDiv.style;\n    // Setting the style properties individually, rather than all at once,\n    // should be OK since the `textDiv` isn't appended to the document yet.\n    if (this.#container === this.#rootContainer) {\n      divStyle.left = `${((100 * left) / this.#pageWidth).toFixed(2)}%`;\n      divStyle.top = `${((100 * top) / this.#pageHeight).toFixed(2)}%`;\n    } else {\n      // We're in a marked content span, hence we can't use percents.\n      divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`;\n      divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`;\n    }\n    // We multiply the font size by #minFontSize, and then #layout will\n    // scale the element by 1/#minFontSize. This allows us to effectively\n    // ignore the minimum font size enforced by the browser, so that the text\n    // layer <span>s can always match the size of the text in the canvas.\n    divStyle.fontSize = `${scaleFactorStr}${(TextLayer.#minFontSize * fontHeight).toFixed(2)}px)`;\n    divStyle.fontFamily = fontFamily;\n\n    textDivProperties.fontSize = fontHeight;\n\n    // Keeps screen readers from pausing on every new text span.\n    textDiv.setAttribute(\"role\", \"presentation\");\n\n    textDiv.textContent = geom.str;\n    // geom.dir may be 'ttb' for vertical texts.\n    textDiv.dir = geom.dir;\n\n    // `fontName` is only used by the FontInspector, and we only use `dataset`\n    // here to make the font name available in the debugger.\n    if (this.#fontInspectorEnabled) {\n      textDiv.dataset.fontName =\n        style.fontSubstitutionLoadedName || geom.fontName;\n    }\n    if (angle !== 0) {\n      textDivProperties.angle = angle * (180 / Math.PI);\n    }\n    // We don't bother scaling single-char text divs, because it has very\n    // little effect on text highlighting. This makes scrolling on docs with\n    // lots of such divs a lot faster.\n    let shouldScaleText = false;\n    if (geom.str.length > 1) {\n      shouldScaleText = true;\n    } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n      const absScaleX = Math.abs(geom.transform[0]),\n        absScaleY = Math.abs(geom.transform[3]);\n      // When the horizontal/vertical scaling differs significantly, also scale\n      // even single-char text to improve highlighting (fixes issue11713.pdf).\n      if (\n        absScaleX !== absScaleY &&\n        Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5\n      ) {\n        shouldScaleText = true;\n      }\n    }\n    if (shouldScaleText) {\n      textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n    }\n    this.#textDivProperties.set(textDiv, textDivProperties);\n\n    // Finally, layout and append the text to the DOM.\n    this.#layoutTextParams.div = textDiv;\n    this.#layoutTextParams.properties = textDivProperties;\n    this.#layout(this.#layoutTextParams);\n\n    if (textDivProperties.hasText) {\n      this.#container.append(textDiv);\n    }\n    if (textDivProperties.hasEOL) {\n      const br = document.createElement(\"br\");\n      br.setAttribute(\"role\", \"presentation\");\n      this.#container.append(br);\n    }\n  }\n\n  #layout(params) {\n    const { div, properties, ctx } = params;\n    const { style } = div;\n\n    let transform = \"\";\n    if (TextLayer.#minFontSize > 1) {\n      transform = `scale(${1 / TextLayer.#minFontSize})`;\n    }\n\n    if (properties.canvasWidth !== 0 && properties.hasText) {\n      const { fontFamily } = style;\n      const { canvasWidth, fontSize } = properties;\n\n      TextLayer.#ensureCtxFont(ctx, fontSize * this.#scale, fontFamily);\n      // Only measure the width for multi-char text divs, see `appendText`.\n      const { width } = ctx.measureText(div.textContent);\n\n      if (width > 0) {\n        transform = `scaleX(${(canvasWidth * this.#scale) / width}) ${transform}`;\n      }\n    }\n    if (properties.angle !== 0) {\n      transform = `rotate(${properties.angle}deg) ${transform}`;\n    }\n    if (transform.length > 0) {\n      style.transform = transform;\n    }\n  }\n\n  /**\n   * Clean-up global textLayer data.\n   * @returns {undefined}\n   */\n  static cleanup() {\n    if (this.#pendingTextLayers.size > 0) {\n      return;\n    }\n    this.#ascentCache.clear();\n\n    for (const { canvas } of this.#canvasContexts.values()) {\n      canvas.remove();\n    }\n    this.#canvasContexts.clear();\n  }\n\n  static #getCtx(lang = null) {\n    let ctx = this.#canvasContexts.get((lang ||= \"\"));\n    if (!ctx) {\n      // We don't use an OffscreenCanvas here because we use serif/sans serif\n      // fonts with it and they depends on the locale.\n      // In Firefox, the <html> element get a lang attribute that depends on\n      // what Fluent returns for the locale and the OffscreenCanvas uses\n      // the OS locale.\n      // Those two locales can be different and consequently the used fonts will\n      // be different (see bug 1869001).\n      // Ideally, we should use in the text layer the fonts we've in the pdf (or\n      // their replacements when they aren't embedded) and then we can use an\n      // OffscreenCanvas.\n      const canvas = document.createElement(\"canvas\");\n      canvas.className = \"hiddenCanvasElement\";\n      canvas.lang = lang;\n      document.body.append(canvas);\n      ctx = canvas.getContext(\"2d\", {\n        alpha: false,\n        willReadFrequently: true,\n      });\n      this.#canvasContexts.set(lang, ctx);\n\n      // Also, initialize state for the `#ensureCtxFont` method.\n      this.#canvasCtxFonts.set(ctx, { size: 0, family: \"\" });\n    }\n    return ctx;\n  }\n\n  static #ensureCtxFont(ctx, size, family) {\n    const cached = this.#canvasCtxFonts.get(ctx);\n    if (size === cached.size && family === cached.family) {\n      return; // The font is already set.\n    }\n    ctx.font = `${size}px ${family}`;\n    cached.size = size;\n    cached.family = family;\n  }\n\n  /**\n   * Compute the minimum font size enforced by the browser.\n   */\n  static #ensureMinFontSizeComputed() {\n    if (this.#minFontSize !== null) {\n      return;\n    }\n    const div = document.createElement(\"div\");\n    div.style.opacity = 0;\n    div.style.lineHeight = 1;\n    div.style.fontSize = \"1px\";\n    div.style.position = \"absolute\";\n    div.textContent = \"X\";\n    document.body.append(div);\n    // In `display:block` elements contain a single line of text,\n    // the height matches the line height (which, when set to 1,\n    // matches the actual font size).\n    this.#minFontSize = div.getBoundingClientRect().height;\n    div.remove();\n  }\n\n  static #getAscent(fontFamily, style, lang) {\n    const cachedAscent = this.#ascentCache.get(fontFamily);\n    if (cachedAscent) {\n      return cachedAscent;\n    }\n    const ctx = this.#getCtx(lang);\n\n    ctx.canvas.width = ctx.canvas.height = DEFAULT_FONT_SIZE;\n    this.#ensureCtxFont(ctx, DEFAULT_FONT_SIZE, fontFamily);\n    const metrics = ctx.measureText(\"\");\n\n    const ascent = metrics.fontBoundingBoxAscent;\n    const descent = Math.abs(metrics.fontBoundingBoxDescent);\n\n    ctx.canvas.width = ctx.canvas.height = 0;\n    let ratio = 0.8; // DEFAULT_FONT_ASCENT\n\n    if (ascent) {\n      ratio = ascent / (ascent + descent);\n    } else {\n      if (\n        (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n        FeatureTest.platform.isFirefox\n      ) {\n        warn(\n          \"Enable the `dom.textMetrics.fontBoundingBox.enabled` preference \" +\n            \"in `about:config` to improve TextLayer rendering.\"\n        );\n      }\n      if (style.ascent) {\n        ratio = style.ascent;\n      } else if (style.descent) {\n        ratio = 1 + style.descent;\n      }\n    }\n\n    this.#ascentCache.set(fontFamily, ratio);\n    return ratio;\n  }\n}\n\nexport { TextLayer };\n", "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @module pdfjsLib\n */\n\nimport {\n  AbortException,\n  AnnotationMode,\n  assert,\n  FeatureTest,\n  getVerbosityLevel,\n  info,\n  isNodeJS,\n  RenderingIntentFlag,\n  setVerbosityLevel,\n  shadow,\n  unreachable,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  AnnotationStorage,\n  PrintAnnotationStorage,\n  SerializableEmpty,\n} from \"./annotation_storage.js\";\nimport {\n  deprecated,\n  isDataScheme,\n  isValidFetchUrl,\n  PageViewport,\n  RenderingCancelledException,\n  StatTimer,\n} from \"./display_utils.js\";\nimport { FontFaceObject, FontLoader } from \"./font_loader.js\";\nimport {\n  getDataProp,\n  getFactoryUrlProp,\n  getUrlProp,\n  isRefProxy,\n  LoopbackPort,\n} from \"./api_utils.js\";\nimport { MessageHandler, wrapReason } from \"../shared/message_handler.js\";\nimport {\n  NodeCanvasFactory,\n  NodeCMapReaderFactory,\n  NodeFilterFactory,\n  NodeStandardFontDataFactory,\n  NodeWasmFactory,\n} from \"display-node_utils\";\nimport { CanvasDependencyTracker } from \"./canvas_dependency_tracker.js\";\nimport { CanvasGraphics } from \"./canvas.js\";\nimport { DOMCanvasFactory } from \"./canvas_factory.js\";\nimport { DOMCMapReaderFactory } from \"display-cmap_reader_factory\";\nimport { DOMFilterFactory } from \"./filter_factory.js\";\nimport { DOMStandardFontDataFactory } from \"display-standard_fontdata_factory\";\nimport { DOMWasmFactory } from \"display-wasm_factory\";\nimport { FontInfo } from \"../shared/obj-bin-transform.js\";\nimport { GlobalWorkerOptions } from \"./worker_options.js\";\nimport { Metadata } from \"./metadata.js\";\nimport { OptionalContentConfig } from \"./optional_content_config.js\";\nimport { PDFDataTransportStream } from \"./transport_stream.js\";\nimport { PDFFetchStream } from \"display-fetch_stream\";\nimport { PDFNetworkStream } from \"display-network\";\nimport { PDFNodeStream } from \"display-node_stream\";\nimport { PDFObjects } from \"./pdf_objects.js\";\nimport { TextLayer } from \"./text_layer.js\";\nimport { XfaText } from \"./xfa_text.js\";\n\nconst RENDERING_CANCELLED_TIMEOUT = 100; // ms\n\n/**\n * @typedef { Int8Array | Uint8Array | Uint8ClampedArray |\n *            Int16Array | Uint16Array |\n *            Int32Array | Uint32Array | Float32Array |\n *            Float64Array\n * } TypedArray\n */\n\n/**\n * @typedef {Object} RefProxy\n * @property {number} num\n * @property {number} gen\n */\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string | URL} [url] - The URL of the PDF.\n * @property {TypedArray | ArrayBuffer | Array<number> | string} [data] -\n *   Binary PDF data.\n *   Use TypedArrays (Uint8Array) to improve the memory usage. If PDF data is\n *   BASE64-encoded, use `atob()` to convert it to a binary string first.\n *\n *   NOTE: If TypedArrays are used they will generally be transferred to the\n *   worker-thread. This will help reduce main-thread memory usage, however\n *   it will take ownership of the TypedArrays.\n * @property {Object} [httpHeaders] - Basic authentication headers.\n * @property {boolean} [withCredentials] - Indicates whether or not\n *   cross-site Access-Control requests should be made using credentials such\n *   as cookies or authorization headers. The default is `false`.\n * @property {string} [password] - For decrypting password-protected PDFs.\n * @property {number} [length] - The PDF file length. It's used for progress\n *   reports and range requests operations.\n * @property {PDFDataRangeTransport} [range] - Allows for using a custom range\n *   transport implementation.\n * @property {number} [rangeChunkSize] - Specify maximum number of bytes fetched\n *   per range request. The default value is 65536 (= 2^16).\n * @property {PDFWorker} [worker] - The worker that will be used for loading and\n *   parsing the PDF data.\n * @property {number} [verbosity] - Controls the logging level; the constants\n *   from {@link VerbosityLevel} should be used.\n * @property {string} [docBaseUrl] - The base URL of the document, used when\n *   attempting to recover valid absolute URLs for annotations, and outline\n *   items, that (incorrectly) only specify relative URLs.\n * @property {string} [cMapUrl] - The URL where the predefined Adobe CMaps are\n *   located. Include the trailing slash.\n * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are binary\n *   packed or not. The default value is `true`.\n * @property {Object} [CMapReaderFactory] - The factory that will be used when\n *   reading built-in CMap files.\n *   The default value is {DOMCMapReaderFactory}.\n * @property {string} [iccUrl] - The URL where the predefined ICC profiles are\n *   located. Include the trailing slash.\n * @property {boolean} [useSystemFonts] - When `true`, fonts that aren't\n *   embedded in the PDF document will fallback to a system font.\n *   The default value is `true` in web environments and `false` in Node.js;\n *   unless `disableFontFace === true` in which case this defaults to `false`\n *   regardless of the environment (to prevent completely broken fonts).\n * @property {string} [standardFontDataUrl] - The URL where the standard font\n *   files are located. Include the trailing slash.\n * @property {Object} [StandardFontDataFactory] - The factory that will be used\n *   when reading the standard font files.\n *   The default value is {DOMStandardFontDataFactory}.\n * @property {string} [wasmUrl] - The URL where the wasm files are located.\n *   Include the trailing slash.\n * @property {Object} [WasmFactory] - The factory that will be used\n *   when reading the wasm files.\n *   The default value is {DOMWasmFactory}.\n * @property {boolean} [useWorkerFetch] - Enable using the Fetch API in the\n *   worker-thread when reading CMap and standard font files. When `true`,\n *   the `CMapReaderFactory`, `StandardFontDataFactory`, and `WasmFactory`\n *   options are ignored.\n *   The default value is `true` in web environments and `false` in Node.js.\n * @property {boolean} [useWasm] - Attempt to use WebAssembly in order to\n *    improve e.g. image decoding performance.\n *    The default value is `true`.\n * @property {boolean} [stopAtErrors] - Reject certain promises, e.g.\n *   `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n *   PDF data cannot be successfully parsed, instead of attempting to recover\n *   whatever possible of the data. The default value is `false`.\n * @property {number} [maxImageSize] - The maximum allowed image size in total\n *   pixels, i.e. width * height. Images above this value will not be rendered.\n *   Use -1 for no limit, which is also the default value.\n * @property {boolean} [isEvalSupported] - Determines if we can evaluate strings\n *   as JavaScript. Primarily used to improve performance of PDF functions.\n *   The default value is `true`.\n * @property {boolean} [isOffscreenCanvasSupported] - Determines if we can use\n *   `OffscreenCanvas` in the worker. Primarily used to improve performance of\n *   image conversion/rendering.\n *   The default value is `true` in web environments and `false` in Node.js.\n * @property {boolean} [isImageDecoderSupported] - Determines if we can use\n *   `ImageDecoder` in the worker. Primarily used to improve performance of\n *   image conversion/rendering.\n *   The default value is `true` in web environments and `false` in Node.js.\n *\n *   NOTE: Also temporarily disabled in Chromium browsers, until we no longer\n *   support the affected browser versions, because of various bugs:\n *\n *    - Crashes when using the BMP decoder with huge images, e.g. issue6741.pdf;\n *      see https://issues.chromium.org/issues/374807001\n *\n *    - Broken images when using the JPEG decoder with images that have custom\n *      colour profiles, e.g. GitHub discussion 19030;\n *      see https://issues.chromium.org/issues/378869810\n *\n * @property {number} [canvasMaxAreaInBytes] - The integer value is used to\n *   know when an image must be resized (uses `OffscreenCanvas` in the worker).\n *   If it's -1 then a possibly slow algorithm is used to guess the max value.\n * @property {boolean} [disableFontFace] - By default fonts are converted to\n *   OpenType fonts and loaded via the Font Loading API or `@font-face` rules.\n *   If disabled, fonts will be rendered using a built-in font renderer that\n *   constructs the glyphs with primitive path commands.\n *   The default value is `false` in web environments and `true` in Node.js.\n * @property {boolean} [fontExtraProperties] - Include additional properties,\n *   which are unused during rendering of PDF documents, when exporting the\n *   parsed font data from the worker-thread. This may be useful for debugging\n *   purposes (and backwards compatibility), but note that it will lead to\n *   increased memory usage. The default value is `false`.\n * @property {boolean} [enableXfa] - Render Xfa forms if any.\n *   The default value is `false`.\n * @property {HTMLDocument} [ownerDocument] - Specify an explicit document\n *   context to create elements with and to load resources, such as fonts,\n *   into. Defaults to the current document.\n * @property {boolean} [disableRange] - Disable range request loading of PDF\n *   files. When enabled, and if the server supports partial content requests,\n *   then the PDF will be fetched in chunks. The default value is `false`.\n * @property {boolean} [disableStream] - Disable streaming of PDF file data.\n *   By default PDF.js attempts to load PDF files in chunks. The default value\n *   is `false`.\n * @property {boolean} [disableAutoFetch] - Disable pre-fetching of PDF file\n *   data. When range requests are enabled PDF.js will automatically keep\n *   fetching more data even if it isn't needed to display the current page.\n *   The default value is `false`.\n *\n *   NOTE: It is also necessary to disable streaming, see above, in order for\n *   disabling of pre-fetching to work correctly.\n * @property {boolean} [pdfBug] - Enables special hooks for debugging PDF.js\n *   (see `web/debugger.js`). The default value is `false`.\n * @property {Object} [CanvasFactory] - The factory that will be used when\n *    creating canvases. The default value is {DOMCanvasFactory}.\n * @property {Object} [FilterFactory] - The factory that will be used to\n *    create SVG filters when rendering some images on the main canvas.\n *    The default value is {DOMFilterFactory}.\n * @property {boolean} [enableHWA] - Enables hardware acceleration for\n *   rendering. The default value is `false`.\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n *\n * NOTE: If a URL is used to fetch the PDF data a standard Fetch API call (or\n * XHR as fallback) is used, which means it must follow same origin rules,\n * e.g. no cross-domain requests without CORS.\n *\n * @param {string | URL | TypedArray | ArrayBuffer | DocumentInitParameters}\n *   src - Can be a URL where a PDF file is located, a typed array (Uint8Array)\n *         already populated with data, or a parameter object.\n * @returns {PDFDocumentLoadingTask}\n */\nfunction getDocument(src = {}) {\n  if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n    if (typeof src === \"string\" || src instanceof URL) {\n      src = { url: src };\n    } else if (src instanceof ArrayBuffer || ArrayBuffer.isView(src)) {\n      src = { data: src };\n    }\n  }\n  const task = new PDFDocumentLoadingTask();\n  const { docId } = task;\n\n  const url = src.url ? getUrlProp(src.url) : null;\n  const data = src.data ? getDataProp(src.data) : null;\n  const httpHeaders = src.httpHeaders || null;\n  const withCredentials = src.withCredentials === true;\n  const password = src.password ?? null;\n  const rangeTransport =\n    src.range instanceof PDFDataRangeTransport ? src.range : null;\n  const rangeChunkSize =\n    Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0\n      ? src.rangeChunkSize\n      : 2 ** 16;\n  let worker = src.worker instanceof PDFWorker ? src.worker : null;\n  const verbosity = src.verbosity;\n  // Ignore \"data:\"-URLs, since they can't be used to recover valid absolute\n  // URLs anyway. We want to avoid sending them to the worker-thread, since\n  // they contain the *entire* PDF document and can thus be arbitrarily long.\n  const docBaseUrl =\n    typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl)\n      ? src.docBaseUrl\n      : null;\n  const cMapUrl = getFactoryUrlProp(src.cMapUrl);\n  const cMapPacked = src.cMapPacked !== false;\n  const CMapReaderFactory =\n    src.CMapReaderFactory ||\n    (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n      ? NodeCMapReaderFactory\n      : DOMCMapReaderFactory);\n  const iccUrl = getFactoryUrlProp(src.iccUrl);\n  const standardFontDataUrl = getFactoryUrlProp(src.standardFontDataUrl);\n  const StandardFontDataFactory =\n    src.StandardFontDataFactory ||\n    (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n      ? NodeStandardFontDataFactory\n      : DOMStandardFontDataFactory);\n  const wasmUrl = getFactoryUrlProp(src.wasmUrl);\n  const WasmFactory =\n    src.WasmFactory ||\n    (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n      ? NodeWasmFactory\n      : DOMWasmFactory);\n  const ignoreErrors = src.stopAtErrors !== true;\n  const maxImageSize =\n    Number.isInteger(src.maxImageSize) && src.maxImageSize > -1\n      ? src.maxImageSize\n      : -1;\n  const isEvalSupported = src.isEvalSupported !== false;\n  const isOffscreenCanvasSupported =\n    typeof src.isOffscreenCanvasSupported === \"boolean\"\n      ? src.isOffscreenCanvasSupported\n      : !isNodeJS;\n  const isImageDecoderSupported =\n    // eslint-disable-next-line no-nested-ternary\n    typeof src.isImageDecoderSupported === \"boolean\"\n      ? src.isImageDecoderSupported\n      : // eslint-disable-next-line no-nested-ternary\n        typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")\n        ? true\n        : typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"CHROME\")\n          ? false\n          : !isNodeJS && (FeatureTest.platform.isFirefox || !globalThis.chrome);\n  const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes)\n    ? src.canvasMaxAreaInBytes\n    : -1;\n  const disableFontFace =\n    typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : isNodeJS;\n  const fontExtraProperties = src.fontExtraProperties === true;\n  const enableXfa = src.enableXfa === true;\n  const ownerDocument = src.ownerDocument || globalThis.document;\n  const disableRange = src.disableRange === true;\n  const disableStream = src.disableStream === true;\n  const disableAutoFetch = src.disableAutoFetch === true;\n  const pdfBug = src.pdfBug === true;\n  const CanvasFactory =\n    src.CanvasFactory ||\n    (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n      ? NodeCanvasFactory\n      : DOMCanvasFactory);\n  const FilterFactory =\n    src.FilterFactory ||\n    (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n      ? NodeFilterFactory\n      : DOMFilterFactory);\n  const enableHWA = src.enableHWA === true;\n  const useWasm = src.useWasm !== false;\n\n  // Parameters whose default values depend on other parameters.\n  const length = rangeTransport ? rangeTransport.length : (src.length ?? NaN);\n  const useSystemFonts =\n    typeof src.useSystemFonts === \"boolean\"\n      ? src.useSystemFonts\n      : !isNodeJS && !disableFontFace;\n  const useWorkerFetch =\n    typeof src.useWorkerFetch === \"boolean\"\n      ? src.useWorkerFetch\n      : (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n        !!(\n          CMapReaderFactory === DOMCMapReaderFactory &&\n          StandardFontDataFactory === DOMStandardFontDataFactory &&\n          WasmFactory === DOMWasmFactory &&\n          cMapUrl &&\n          standardFontDataUrl &&\n          wasmUrl &&\n          isValidFetchUrl(cMapUrl, document.baseURI) &&\n          isValidFetchUrl(standardFontDataUrl, document.baseURI) &&\n          isValidFetchUrl(wasmUrl, document.baseURI)\n        );\n\n  // Parameters only intended for development/testing purposes.\n  const styleElement =\n    typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")\n      ? src.styleElement\n      : null;\n\n  // Set the main-thread verbosity level.\n  setVerbosityLevel(verbosity);\n\n  // Ensure that the various factories can be initialized, when necessary,\n  // since the user may provide *custom* ones.\n  const transportFactory = {\n    canvasFactory: new CanvasFactory({ ownerDocument, enableHWA }),\n    filterFactory: new FilterFactory({ docId, ownerDocument }),\n    cMapReaderFactory:\n      (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n      useWorkerFetch\n        ? null\n        : new CMapReaderFactory({ baseUrl: cMapUrl, isCompressed: cMapPacked }),\n    standardFontDataFactory:\n      (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n      useWorkerFetch\n        ? null\n        : new StandardFontDataFactory({ baseUrl: standardFontDataUrl }),\n    wasmFactory:\n      (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n      useWorkerFetch\n        ? null\n        : new WasmFactory({ baseUrl: wasmUrl }),\n  };\n\n  if (!worker) {\n    // Worker was not provided -- creating and owning our own. If message port\n    // is specified in global worker options, using it.\n    worker = PDFWorker.create({\n      verbosity,\n      port: GlobalWorkerOptions.workerPort,\n    });\n    task._worker = worker;\n  }\n\n  const docParams = {\n    docId,\n    apiVersion:\n      typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n        ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n        : null,\n    data,\n    password,\n    disableAutoFetch,\n    rangeChunkSize,\n    length,\n    docBaseUrl,\n    enableXfa,\n    evaluatorOptions: {\n      maxImageSize,\n      disableFontFace,\n      ignoreErrors,\n      isEvalSupported,\n      isOffscreenCanvasSupported,\n      isImageDecoderSupported,\n      canvasMaxAreaInBytes,\n      fontExtraProperties,\n      useSystemFonts,\n      useWasm,\n      useWorkerFetch,\n      cMapUrl,\n      iccUrl,\n      standardFontDataUrl,\n      wasmUrl,\n    },\n  };\n  const transportParams = {\n    ownerDocument,\n    pdfBug,\n    styleElement,\n    loadingParams: {\n      disableAutoFetch,\n      enableXfa,\n    },\n  };\n\n  worker.promise\n    .then(function () {\n      if (task.destroyed) {\n        throw new Error(\"Loading aborted\");\n      }\n      if (worker.destroyed) {\n        throw new Error(\"Worker was destroyed\");\n      }\n\n      const workerIdPromise = worker.messageHandler.sendWithPromise(\n        \"GetDocRequest\",\n        docParams,\n        data ? [data.buffer] : null\n      );\n\n      let networkStream;\n      if (rangeTransport) {\n        networkStream = new PDFDataTransportStream(rangeTransport, {\n          disableRange,\n          disableStream,\n        });\n      } else if (!data) {\n        if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n          throw new Error(\"Not implemented: NetworkStream\");\n        }\n        if (!url) {\n          throw new Error(\"getDocument - no `url` parameter provided.\");\n        }\n        // eslint-disable-next-line no-nested-ternary\n        const NetworkStream = isValidFetchUrl(url)\n          ? PDFFetchStream\n          : typeof PDFJSDev !== \"undefined\" &&\n              PDFJSDev.test(\"GENERIC\") &&\n              isNodeJS\n            ? PDFNodeStream\n            : PDFNetworkStream;\n\n        networkStream = new NetworkStream({\n          url,\n          length,\n          httpHeaders,\n          withCredentials,\n          rangeChunkSize,\n          disableRange,\n          disableStream,\n        });\n      }\n\n      return workerIdPromise.then(workerId => {\n        if (task.destroyed) {\n          throw new Error(\"Loading aborted\");\n        }\n        if (worker.destroyed) {\n          throw new Error(\"Worker was destroyed\");\n        }\n\n        const messageHandler = new MessageHandler(docId, workerId, worker.port);\n        const transport = new WorkerTransport(\n          messageHandler,\n          task,\n          networkStream,\n          transportParams,\n          transportFactory,\n          enableHWA\n        );\n        task._transport = transport;\n        messageHandler.send(\"Ready\", null);\n      });\n    })\n    .catch(task._capability.reject);\n\n  return task;\n}\n\n/**\n * @typedef {Object} OnProgressParameters\n * @property {number} loaded - Currently loaded number of bytes.\n * @property {number} total - Total number of bytes in the PDF file.\n */\n\n/**\n * The loading task controls the operations required to load a PDF document\n * (such as network requests) and provides a way to listen for completion,\n * after which individual pages can be rendered.\n */\nclass PDFDocumentLoadingTask {\n  static #docId = 0;\n\n  /**\n   * @private\n   */\n  _capability = Promise.withResolvers();\n\n  /**\n   * @private\n   */\n  _transport = null;\n\n  /**\n   * @private\n   */\n  _worker = null;\n\n  /**\n   * Unique identifier for the document loading task.\n   * @type {string}\n   */\n  docId = `d${PDFDocumentLoadingTask.#docId++}`;\n\n  /**\n   * Whether the loading task is destroyed or not.\n   * @type {boolean}\n   */\n  destroyed = false;\n\n  /**\n   * Callback to request a password if a wrong or no password was provided.\n   * The callback receives two parameters: a function that should be called\n   * with the new password, and a reason (see {@link PasswordResponses}).\n   * @type {function}\n   */\n  onPassword = null;\n\n  /**\n   * Callback to be able to monitor the loading progress of the PDF file\n   * (necessary to implement e.g. a loading bar).\n   * The callback receives an {@link OnProgressParameters} argument.\n   * @type {function}\n   */\n  onProgress = null;\n\n  /**\n   * Promise for document loading task completion.\n   * @type {Promise<PDFDocumentProxy>}\n   */\n  get promise() {\n    return this._capability.promise;\n  }\n\n  /**\n   * Abort all network requests and destroy the worker.\n   * @returns {Promise<void>} A promise that is resolved when destruction is\n   *   completed.\n   */\n  async destroy() {\n    this.destroyed = true;\n\n    try {\n      if (this._worker?.port) {\n        this._worker._pendingDestroy = true;\n      }\n      await this._transport?.destroy();\n    } catch (ex) {\n      if (this._worker?.port) {\n        delete this._worker._pendingDestroy;\n      }\n      throw ex;\n    }\n    this._transport = null;\n\n    this._worker?.destroy();\n    this._worker = null;\n  }\n\n  /**\n   * Attempt to fetch the raw data of the PDF document, when e.g.\n   *  - An exception was thrown during document initialization.\n   *  - An `onPassword` callback is delaying initialization.\n   * @returns {Promise<Uint8Array>}\n   */\n  async getData() {\n    return this._transport.getData();\n  }\n}\n\n/**\n * Abstract class to support range requests file loading.\n *\n * NOTE: The TypedArrays passed to the constructor and relevant methods below\n * will generally be transferred to the worker-thread. This will help reduce\n * main-thread memory usage, however it will take ownership of the TypedArrays.\n */\nclass PDFDataRangeTransport {\n  #capability = Promise.withResolvers();\n\n  #progressiveDoneListeners = [];\n\n  #progressiveReadListeners = [];\n\n  #progressListeners = [];\n\n  #rangeListeners = [];\n\n  /**\n   * @param {number} length\n   * @param {Uint8Array|null} initialData\n   * @param {boolean} [progressiveDone]\n   * @param {string} [contentDispositionFilename]\n   */\n  constructor(\n    length,\n    initialData,\n    progressiveDone = false,\n    contentDispositionFilename = null\n  ) {\n    this.length = length;\n    this.initialData = initialData;\n    this.progressiveDone = progressiveDone;\n    this.contentDispositionFilename = contentDispositionFilename;\n  }\n\n  /**\n   * @param {function} listener\n   */\n  addRangeListener(listener) {\n    this.#rangeListeners.push(listener);\n  }\n\n  /**\n   * @param {function} listener\n   */\n  addProgressListener(listener) {\n    this.#progressListeners.push(listener);\n  }\n\n  /**\n   * @param {function} listener\n   */\n  addProgressiveReadListener(listener) {\n    this.#progressiveReadListeners.push(listener);\n  }\n\n  /**\n   * @param {function} listener\n   */\n  addProgressiveDoneListener(listener) {\n    this.#progressiveDoneListeners.push(listener);\n  }\n\n  /**\n   * @param {number} begin\n   * @param {Uint8Array|null} chunk\n   */\n  onDataRange(begin, chunk) {\n    for (const listener of this.#rangeListeners) {\n      listener(begin, chunk);\n    }\n  }\n\n  /**\n   * @param {number} loaded\n   * @param {number|undefined} total\n   */\n  onDataProgress(loaded, total) {\n    this.#capability.promise.then(() => {\n      for (const listener of this.#progressListeners) {\n        listener(loaded, total);\n      }\n    });\n  }\n\n  /**\n   * @param {Uint8Array|null} chunk\n   */\n  onDataProgressiveRead(chunk) {\n    this.#capability.promise.then(() => {\n      for (const listener of this.#progressiveReadListeners) {\n        listener(chunk);\n      }\n    });\n  }\n\n  onDataProgressiveDone() {\n    this.#capability.promise.then(() => {\n      for (const listener of this.#progressiveDoneListeners) {\n        listener();\n      }\n    });\n  }\n\n  transportReady() {\n    this.#capability.resolve();\n  }\n\n  /**\n   * @param {number} begin\n   * @param {number} end\n   */\n  requestDataRange(begin, end) {\n    unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n  }\n\n  abort() {}\n}\n\n/**\n * Proxy to a `PDFDocument` in the worker thread.\n */\nclass PDFDocumentProxy {\n  constructor(pdfInfo, transport) {\n    this._pdfInfo = pdfInfo;\n    this._transport = transport;\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      // For testing purposes.\n      Object.defineProperty(this, \"getNetworkStreamName\", {\n        value: () => this._transport.getNetworkStreamName(),\n      });\n      Object.defineProperty(this, \"getXFADatasets\", {\n        value: () => this._transport.getXFADatasets(),\n      });\n      Object.defineProperty(this, \"getStartXRefPos\", {\n        value: () => this._transport.getStartXRefPos(),\n      });\n      Object.defineProperty(this, \"getAnnotArray\", {\n        value: pageIndex => this._transport.getAnnotArray(pageIndex),\n      });\n    }\n  }\n\n  /**\n   * @type {AnnotationStorage} Storage for annotation data in forms.\n   */\n  get annotationStorage() {\n    return this._transport.annotationStorage;\n  }\n\n  /**\n   * @type {Object} The canvas factory instance.\n   */\n  get canvasFactory() {\n    return this._transport.canvasFactory;\n  }\n\n  /**\n   * @type {Object} The filter factory instance.\n   */\n  get filterFactory() {\n    return this._transport.filterFactory;\n  }\n\n  /**\n   * @type {number} Total number of pages in the PDF file.\n   */\n  get numPages() {\n    return this._pdfInfo.numPages;\n  }\n\n  /**\n   * @type {Array<string | null>} A (not guaranteed to be) unique ID to identify\n   *   the PDF document.\n   *   NOTE: The first element will always be defined for all PDF documents,\n   *   whereas the second element is only defined for *modified* PDF documents.\n   */\n  get fingerprints() {\n    return this._pdfInfo.fingerprints;\n  }\n\n  /**\n   * @type {boolean} True if only XFA form.\n   */\n  get isPureXfa() {\n    return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n  }\n\n  /**\n   * NOTE: This is (mostly) intended to support printing of XFA forms.\n   *\n   * @type {Object | null} An object representing a HTML tree structure\n   *   to render the XFA, or `null` when no XFA form exists.\n   */\n  get allXfaHtml() {\n    return this._transport._htmlForXfa;\n  }\n\n  /**\n   * @param {number} pageNumber - The page number to get. The first page is 1.\n   * @returns {Promise<PDFPageProxy>} A promise that is resolved with\n   *   a {@link PDFPageProxy} object.\n   */\n  getPage(pageNumber) {\n    return this._transport.getPage(pageNumber);\n  }\n\n  /**\n   * @param {RefProxy} ref - The page reference.\n   * @returns {Promise<number>} A promise that is resolved with the page index,\n   *   starting from zero, that is associated with the reference.\n   */\n  getPageIndex(ref) {\n    return this._transport.getPageIndex(ref);\n  }\n\n  /**\n   * @returns {Promise<Object<string, Array<any>>>} A promise that is resolved\n   *   with a mapping from named destinations to references.\n   *\n   * This can be slow for large documents. Use `getDestination` instead.\n   */\n  getDestinations() {\n    return this._transport.getDestinations();\n  }\n\n  /**\n   * @param {string} id - The named destination to get.\n   * @returns {Promise<Array<any> | null>} A promise that is resolved with all\n   *   information of the given named destination, or `null` when the named\n   *   destination is not present in the PDF file.\n   */\n  getDestination(id) {\n    return this._transport.getDestination(id);\n  }\n\n  /**\n   * @returns {Promise<Array<string> | null>} A promise that is resolved with\n   *   an {Array} containing the page labels that correspond to the page\n   *   indexes, or `null` when no page labels are present in the PDF file.\n   */\n  getPageLabels() {\n    return this._transport.getPageLabels();\n  }\n\n  /**\n   * @returns {Promise<string>} A promise that is resolved with a {string}\n   *   containing the page layout name.\n   */\n  getPageLayout() {\n    return this._transport.getPageLayout();\n  }\n\n  /**\n   * @returns {Promise<string>} A promise that is resolved with a {string}\n   *   containing the page mode name.\n   */\n  getPageMode() {\n    return this._transport.getPageMode();\n  }\n\n  /**\n   * @returns {Promise<Object | null>} A promise that is resolved with an\n   *   {Object} containing the viewer preferences, or `null` when no viewer\n   *   preferences are present in the PDF file.\n   */\n  getViewerPreferences() {\n    return this._transport.getViewerPreferences();\n  }\n\n  /**\n   * @returns {Promise<any | null>} A promise that is resolved with an {Array}\n   *   containing the destination, or `null` when no open action is present\n   *   in the PDF.\n   */\n  getOpenAction() {\n    return this._transport.getOpenAction();\n  }\n\n  /**\n   * @returns {Promise<any>} A promise that is resolved with a lookup table\n   *   for mapping named attachments to their content.\n   */\n  getAttachments() {\n    return this._transport.getAttachments();\n  }\n\n  /**\n   * @param {Set<number>} types - The annotation types to retrieve.\n   * @param {Set<number>} pageIndexesToSkip\n   * @returns {Promise<Array<Object>>} A promise that is resolved with a list of\n   *   annotations data.\n   */\n  getAnnotationsByType(types, pageIndexesToSkip) {\n    return this._transport.getAnnotationsByType(types, pageIndexesToSkip);\n  }\n\n  /**\n   * @returns {Promise<Object | null>} A promise that is resolved with\n   *   an {Object} with the JavaScript actions:\n   *     - from the name tree.\n   *     - from A or AA entries in the catalog dictionary.\n   *   , or `null` if no JavaScript exists.\n   */\n  getJSActions() {\n    return this._transport.getDocJSActions();\n  }\n\n  /**\n   * @typedef {Object} OutlineNode\n   * @property {string} title\n   * @property {boolean} bold\n   * @property {boolean} italic\n   * @property {Uint8ClampedArray} color - The color in RGB format to use for\n   *   display purposes.\n   * @property {string | Array<any> | null} dest\n   * @property {string | null} url\n   * @property {string | undefined} unsafeUrl\n   * @property {boolean | undefined} newWindow\n   * @property {number | undefined} count\n   * @property {Array<OutlineNode>} items\n   */\n\n  /**\n   * @returns {Promise<Array<OutlineNode>>} A promise that is resolved with an\n   *   {Array} that is a tree outline (if it has one) of the PDF file.\n   */\n  getOutline() {\n    return this._transport.getOutline();\n  }\n\n  /**\n   * @typedef {Object} GetOptionalContentConfigParameters\n   * @property {string} [intent] - Determines the optional content groups that\n   *   are visible by default; valid values are:\n   *    - 'display' (viewable groups).\n   *    - 'print' (printable groups).\n   *    - 'any' (all groups).\n   *   The default value is 'display'.\n   */\n\n  /**\n   * @param {GetOptionalContentConfigParameters} [params] - Optional content\n   *   config parameters.\n   * @returns {Promise<OptionalContentConfig>} A promise that is resolved with\n   *   an {@link OptionalContentConfig} that contains all the optional content\n   *   groups (assuming that the document has any).\n   */\n  getOptionalContentConfig({ intent = \"display\" } = {}) {\n    const { renderingIntent } = this._transport.getRenderingIntent(intent);\n\n    return this._transport.getOptionalContentConfig(renderingIntent);\n  }\n\n  /**\n   * @returns {Promise<Array<number> | null>} A promise that is resolved with\n   *   an {Array} that contains the permission flags for the PDF document, or\n   *   `null` when no permissions are present in the PDF file.\n   */\n  getPermissions() {\n    return this._transport.getPermissions();\n  }\n\n  /**\n   * @returns {Promise<{ info: Object, metadata: Metadata }>} A promise that is\n   *   resolved with an {Object} that has `info` and `metadata` properties.\n   *   `info` is an {Object} filled with anything available in the information\n   *   dictionary and similarly `metadata` is a {Metadata} object with\n   *   information from the metadata section of the PDF.\n   */\n  getMetadata() {\n    return this._transport.getMetadata();\n  }\n\n  /**\n   * @typedef {Object} MarkInfo\n   * Properties correspond to Table 321 of the PDF 32000-1:2008 spec.\n   * @property {boolean} Marked\n   * @property {boolean} UserProperties\n   * @property {boolean} Suspects\n   */\n\n  /**\n   * @returns {Promise<MarkInfo | null>} A promise that is resolved with\n   *   a {MarkInfo} object that contains the MarkInfo flags for the PDF\n   *   document, or `null` when no MarkInfo values are present in the PDF file.\n   */\n  getMarkInfo() {\n    return this._transport.getMarkInfo();\n  }\n\n  /**\n   * @returns {Promise<Uint8Array>} A promise that is resolved with a\n   *   {Uint8Array} containing the raw data of the PDF document.\n   */\n  getData() {\n    return this._transport.getData();\n  }\n\n  /**\n   * @returns {Promise<Uint8Array>} A promise that is resolved with a\n   *   {Uint8Array} containing the full data of the saved document.\n   */\n  saveDocument() {\n    return this._transport.saveDocument();\n  }\n\n  /**\n   * @returns {Promise<{ length: number }>} A promise that is resolved when the\n   *   document's data is loaded. It is resolved with an {Object} that contains\n   *   the `length` property that indicates size of the PDF data in bytes.\n   */\n  getDownloadInfo() {\n    return this._transport.downloadInfoCapability.promise;\n  }\n\n  /**\n   * Cleans up resources allocated by the document on both the main and worker\n   * threads.\n   *\n   * NOTE: Do not, under any circumstances, call this method when rendering is\n   * currently ongoing since that may lead to rendering errors.\n   *\n   * @param {boolean} [keepLoadedFonts] - Let fonts remain attached to the DOM.\n   *   NOTE: This will increase persistent memory usage, hence don't use this\n   *   option unless absolutely necessary. The default value is `false`.\n   * @returns {Promise} A promise that is resolved when clean-up has finished.\n   */\n  cleanup(keepLoadedFonts = false) {\n    return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n  }\n\n  /**\n   * Destroys the current document instance and terminates the worker.\n   */\n  destroy() {\n    return this.loadingTask.destroy();\n  }\n\n  /**\n   * @param {RefProxy} ref - The page reference.\n   * @returns {number | null} The page number, if it's cached.\n   */\n  cachedPageNumber(ref) {\n    return this._transport.cachedPageNumber(ref);\n  }\n\n  /**\n   * @type {DocumentInitParameters} A subset of the current\n   *   {DocumentInitParameters}, which are needed in the viewer.\n   */\n  get loadingParams() {\n    return this._transport.loadingParams;\n  }\n\n  /**\n   * @type {PDFDocumentLoadingTask} The loadingTask for the current document.\n   */\n  get loadingTask() {\n    return this._transport.loadingTask;\n  }\n\n  /**\n   * @returns {Promise<Object<string, Array<Object>> | null>} A promise that is\n   *   resolved with an {Object} containing /AcroForm field data for the JS\n   *   sandbox, or `null` when no field data is present in the PDF file.\n   */\n  getFieldObjects() {\n    return this._transport.getFieldObjects();\n  }\n\n  /**\n   * @returns {Promise<boolean>} A promise that is resolved with `true`\n   *   if some /AcroForm fields have JavaScript actions.\n   */\n  hasJSActions() {\n    return this._transport.hasJSActions();\n  }\n\n  /**\n   * @returns {Promise<Array<string> | null>} A promise that is resolved with an\n   *   {Array<string>} containing IDs of annotations that have a calculation\n   *   action, or `null` when no such annotations are present in the PDF file.\n   */\n  getCalculationOrderIds() {\n    return this._transport.getCalculationOrderIds();\n  }\n}\n\n/**\n * Page getViewport parameters.\n *\n * @typedef {Object} GetViewportParameters\n * @property {number} scale - The desired scale of the viewport.\n * @property {number} [rotation] - The desired rotation, in degrees, of\n *   the viewport. If omitted it defaults to the page rotation.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n *   The default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n *   The default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be\n *   flipped. The default value is `false`.\n */\n\n/**\n * Page getTextContent parameters.\n *\n * @typedef {Object} getTextContentParameters\n * @property {boolean} [includeMarkedContent] - When true include marked\n *   content items in the items array of TextContent. The default is `false`.\n * @property {boolean} [disableNormalization] - When true the text is *not*\n *   normalized in the worker-thread. The default is `false`.\n */\n\n/**\n * Page text content.\n *\n * @typedef {Object} TextContent\n * @property {Array<TextItem | TextMarkedContent>} items - Array of\n *   {@link TextItem} and {@link TextMarkedContent} objects. TextMarkedContent\n *   items are included when includeMarkedContent is true.\n * @property {Object<string, TextStyle>} styles - {@link TextStyle} objects,\n *   indexed by font name.\n * @property {string | null} lang - The document /Lang attribute.\n */\n\n/**\n * Page text content part.\n *\n * @typedef {Object} TextItem\n * @property {string} str - Text content.\n * @property {string} dir - Text direction: 'ttb', 'ltr' or 'rtl'.\n * @property {Array<any>} transform - Transformation matrix.\n * @property {number} width - Width in device space.\n * @property {number} height - Height in device space.\n * @property {string} fontName - Font name used by PDF.js for converted font.\n * @property {boolean} hasEOL - Indicating if the text content is followed by a\n *   line-break.\n */\n\n/**\n * Page text marked content part.\n *\n * @typedef {Object} TextMarkedContent\n * @property {string} type - Either 'beginMarkedContent',\n *   'beginMarkedContentProps', or 'endMarkedContent'.\n * @property {string} id - The marked content identifier. Only used for type\n *   'beginMarkedContentProps'.\n */\n\n/**\n * Text style.\n *\n * @typedef {Object} TextStyle\n * @property {number} ascent - Font ascent.\n * @property {number} descent - Font descent.\n * @property {boolean} vertical - Whether or not the text is in vertical mode.\n * @property {string} fontFamily - The possible font family.\n */\n\n/**\n * Page annotation parameters.\n *\n * @typedef {Object} GetAnnotationsParameters\n * @property {string} [intent] - Determines the annotations that are fetched,\n *   can be 'display' (viewable annotations), 'print' (printable annotations),\n *   or 'any' (all annotations). The default value is 'display'.\n */\n\n/**\n * Page render parameters.\n *\n * @typedef {Object} RenderParameters\n * @property {HTMLCanvasElement|null} canvas - A DOM Canvas object. The default\n *   value is the canvas associated with the `canvasContext` parameter if no\n *   value is provided explicitly.\n * @property {PageViewport} viewport - Rendering viewport obtained by calling\n *   the `PDFPageProxy.getViewport` method.\n * @property {CanvasRenderingContext2D} [canvasContext] - 2D context of a DOM\n *   Canvas object for backwards compatibility; it is recommended to use the\n *   `canvas` parameter instead.\n *   If the context must absolutely be used to render the page, the canvas must\n *   be null.\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n *   or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are rendered\n *   onto the canvas, for annotations with appearance-data; the values from\n *   {@link AnnotationMode} should be used. The following values are supported:\n *    - `AnnotationMode.DISABLE`, which disables all annotations.\n *    - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n *      it also depends on the `intent`-option, see above).\n *    - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n *      interactive form elements (those will be rendered in the display layer).\n *    - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n *      (as above) but where interactive form elements are updated with data\n *      from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n *   The default value is `AnnotationMode.ENABLE`.\n * @property {Array<any>} [transform] - Additional transform, applied just\n *   before viewport transform.\n * @property {CanvasGradient | CanvasPattern | string} [background] - Background\n *   to use for the canvas.\n *   Any valid `canvas.fillStyle` can be used: a `DOMString` parsed as CSS\n *   <color> value, a `CanvasGradient` object (a linear or radial gradient) or\n *   a `CanvasPattern` object (a repetitive image). The default value is\n *   'rgb(255,255,255)'.\n *\n *   NOTE: This option may be partially, or completely, ignored when the\n *   `pageColors`-option is used.\n * @property {Object} [pageColors] - Overwrites background and foreground colors\n *   with user defined ones in order to improve readability in high contrast\n *   mode.\n * @property {Promise<OptionalContentConfig>} [optionalContentConfigPromise] -\n *   A promise that should resolve with an {@link OptionalContentConfig}\n *   created from `PDFDocumentProxy.getOptionalContentConfig`. If `null`,\n *   the configuration will be fetched automatically with the default visibility\n *   states set.\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap] - Map some\n *   annotation ids with canvases used to render them.\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\n * @property {boolean} [isEditing] - Render the page in editing mode.\n * @property {boolean} [recordOperations] - Record the dependencies and bounding\n *   boxes of all PDF operations that render onto the canvas.\n * @property {OperationsFilter} [operationsFilter] - If provided, only\n *   run for which this function returns `true`.\n */\n\n/**\n * @callback OperationsFilter\n * @param {number} index - The index of the operation.\n * @returns {boolean} If false, the operation is ignored.\n */\n\n/**\n * Page getOperatorList parameters.\n *\n * @typedef {Object} GetOperatorListParameters\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n *   or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are included\n *   in the operatorList, for annotations with appearance-data; the values from\n *   {@link AnnotationMode} should be used. The following values are supported:\n *    - `AnnotationMode.DISABLE`, which disables all annotations.\n *    - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n *      it also depends on the `intent`-option, see above).\n *    - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n *      interactive form elements (those will be rendered in the display layer).\n *    - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n *      (as above) but where interactive form elements are updated with data\n *      from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n *   The default value is `AnnotationMode.ENABLE`.\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\n * @property {boolean} [isEditing] - Render the page in editing mode.\n */\n\n/**\n * Structure tree node. The root node will have a role \"Root\".\n *\n * @typedef {Object} StructTreeNode\n * @property {Array<StructTreeNode | StructTreeContent>} children - Array of\n *   {@link StructTreeNode} and {@link StructTreeContent} objects.\n * @property {string} role - element's role, already mapped if a role map exists\n * in the PDF.\n */\n\n/**\n * Structure tree content.\n *\n * @typedef {Object} StructTreeContent\n * @property {string} type - either \"content\" for page and stream structure\n *   elements or \"object\" for object references.\n * @property {string} id - unique id that will map to the text layer.\n */\n\n/**\n * PDF page operator list.\n *\n * @typedef {Object} PDFOperatorList\n * @property {Array<number>} fnArray - Array containing the operator functions.\n * @property {Array<any>} argsArray - Array containing the arguments of the\n *   functions.\n */\n\n/**\n * Proxy to a `PDFPage` in the worker thread.\n */\nclass PDFPageProxy {\n  #pendingCleanup = false;\n\n  constructor(pageIndex, pageInfo, transport, pdfBug = false) {\n    this._pageIndex = pageIndex;\n    this._pageInfo = pageInfo;\n    this._transport = transport;\n    this._stats = pdfBug ? new StatTimer() : null;\n    this._pdfBug = pdfBug;\n    /** @type {PDFObjects} */\n    this.commonObjs = transport.commonObjs;\n    this.objs = new PDFObjects();\n\n    this._intentStates = new Map();\n    this.destroyed = false;\n    this.recordedBBoxes = null;\n  }\n\n  /**\n   * @type {number} Page number of the page. First page is 1.\n   */\n  get pageNumber() {\n    return this._pageIndex + 1;\n  }\n\n  /**\n   * @type {number} The number of degrees the page is rotated clockwise.\n   */\n  get rotate() {\n    return this._pageInfo.rotate;\n  }\n\n  /**\n   * @type {RefProxy | null} The reference that points to this page.\n   */\n  get ref() {\n    return this._pageInfo.ref;\n  }\n\n  /**\n   * @type {number} The default size of units in 1/72nds of an inch.\n   */\n  get userUnit() {\n    return this._pageInfo.userUnit;\n  }\n\n  /**\n   * @type {Array<number>} An array of the visible portion of the PDF page in\n   *   user space units [x1, y1, x2, y2].\n   */\n  get view() {\n    return this._pageInfo.view;\n  }\n\n  /**\n   * @param {GetViewportParameters} params - Viewport parameters.\n   * @returns {PageViewport} Contains 'width' and 'height' properties\n   *   along with transforms required for rendering.\n   */\n  getViewport({\n    scale,\n    rotation = this.rotate,\n    offsetX = 0,\n    offsetY = 0,\n    dontFlip = false,\n  } = {}) {\n    return new PageViewport({\n      viewBox: this.view,\n      userUnit: this.userUnit,\n      scale,\n      rotation,\n      offsetX,\n      offsetY,\n      dontFlip,\n    });\n  }\n\n  /**\n   * @param {GetAnnotationsParameters} [params] - Annotation parameters.\n   * @returns {Promise<Array<any>>} A promise that is resolved with an\n   *   {Array} of the annotation objects.\n   */\n  getAnnotations({ intent = \"display\" } = {}) {\n    const { renderingIntent } = this._transport.getRenderingIntent(intent);\n\n    return this._transport.getAnnotations(this._pageIndex, renderingIntent);\n  }\n\n  /**\n   * @returns {Promise<Object>} A promise that is resolved with an\n   *   {Object} with JS actions.\n   */\n  getJSActions() {\n    return this._transport.getPageJSActions(this._pageIndex);\n  }\n\n  /**\n   * @type {Object} The filter factory instance.\n   */\n  get filterFactory() {\n    return this._transport.filterFactory;\n  }\n\n  /**\n   * @type {boolean} True if only XFA form.\n   */\n  get isPureXfa() {\n    return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n  }\n\n  /**\n   * @returns {Promise<Object | null>} A promise that is resolved with\n   *   an {Object} with a fake DOM object (a tree structure where elements\n   *   are {Object} with a name, attributes (class, style, ...), value and\n   *   children, very similar to a HTML DOM tree), or `null` if no XFA exists.\n   */\n  async getXfa() {\n    return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n  }\n\n  /**\n   * Begins the process of rendering a page to the desired context.\n   *\n   * @param {RenderParameters} params - Page render parameters.\n   * @returns {RenderTask} An object that contains a promise that is\n   *   resolved when the page finishes rendering.\n   */\n  render({\n    canvasContext,\n    canvas = canvasContext.canvas,\n    viewport,\n    intent = \"display\",\n    annotationMode = AnnotationMode.ENABLE,\n    transform = null,\n    background = null,\n    optionalContentConfigPromise = null,\n    annotationCanvasMap = null,\n    pageColors = null,\n    printAnnotationStorage = null,\n    isEditing = false,\n    recordOperations = false,\n    operationsFilter = null,\n  }) {\n    this._stats?.time(\"Overall\");\n\n    const intentArgs = this._transport.getRenderingIntent(\n      intent,\n      annotationMode,\n      printAnnotationStorage,\n      isEditing\n    );\n    const { renderingIntent, cacheKey } = intentArgs;\n    // If there was a pending destroy, cancel it so no cleanup happens during\n    // this call to render.\n    this.#pendingCleanup = false;\n\n    optionalContentConfigPromise ||=\n      this._transport.getOptionalContentConfig(renderingIntent);\n\n    let intentState = this._intentStates.get(cacheKey);\n    if (!intentState) {\n      intentState = Object.create(null);\n      this._intentStates.set(cacheKey, intentState);\n    }\n\n    // Ensure that a pending `streamReader` cancel timeout is always aborted.\n    if (intentState.streamReaderCancelTimeout) {\n      clearTimeout(intentState.streamReaderCancelTimeout);\n      intentState.streamReaderCancelTimeout = null;\n    }\n\n    const intentPrint = !!(renderingIntent & RenderingIntentFlag.PRINT);\n\n    // If there's no displayReadyCapability yet, then the operatorList\n    // was never requested before. Make the request and create the promise.\n    if (!intentState.displayReadyCapability) {\n      intentState.displayReadyCapability = Promise.withResolvers();\n      intentState.operatorList = {\n        fnArray: [],\n        argsArray: [],\n        lastChunk: false,\n        separateAnnots: null,\n      };\n\n      this._stats?.time(\"Page Request\");\n      this._pumpOperatorList(intentArgs);\n    }\n\n    const recordForDebugger = Boolean(\n      this._pdfBug && globalThis.StepperManager?.enabled\n    );\n\n    const shouldRecordOperations =\n      !this.recordedBBoxes && (recordOperations || recordForDebugger);\n\n    const complete = error => {\n      intentState.renderTasks.delete(internalRenderTask);\n\n      if (shouldRecordOperations) {\n        const recordedBBoxes = internalRenderTask.gfx?.dependencyTracker.take();\n        if (recordedBBoxes) {\n          if (internalRenderTask.stepper) {\n            internalRenderTask.stepper.setOperatorBBoxes(\n              recordedBBoxes,\n              internalRenderTask.gfx.dependencyTracker.takeDebugMetadata()\n            );\n          }\n          if (recordOperations) {\n            this.recordedBBoxes = recordedBBoxes;\n          }\n        }\n      }\n\n      // Attempt to reduce memory usage during *printing*, by always running\n      // cleanup immediately once rendering has finished.\n      if (intentPrint) {\n        this.#pendingCleanup = true;\n      }\n      this.#tryCleanup();\n\n      if (error) {\n        internalRenderTask.capability.reject(error);\n\n        this._abortOperatorList({\n          intentState,\n          reason: error 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        this._stats.timeEnd(\"Overall\");\n\n        if (globalThis.Stats?.enabled) {\n          globalThis.Stats.add(this.pageNumber, this._stats);\n        }\n      }\n    };\n\n    const internalRenderTask = new InternalRenderTask({\n      callback: complete,\n      // Only include the required properties, and *not* the entire object.\n      params: {\n        canvas,\n        canvasContext,\n        dependencyTracker: shouldRecordOperations\n          ? new CanvasDependencyTracker(\n              canvas,\n              intentState.operatorList.length,\n              recordForDebugger\n            )\n          : null,\n        viewport,\n        transform,\n        background,\n      },\n      objs: this.objs,\n      commonObjs: this.commonObjs,\n      annotationCanvasMap,\n      operatorList: intentState.operatorList,\n      pageIndex: this._pageIndex,\n      canvasFactory: this._transport.canvasFactory,\n      filterFactory: this._transport.filterFactory,\n      useRequestAnimationFrame: !intentPrint,\n      pdfBug: this._pdfBug,\n      pageColors,\n      enableHWA: this._transport.enableHWA,\n      operationsFilter,\n    });\n\n    (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n    const renderTask = internalRenderTask.task;\n\n    Promise.all([\n      intentState.displayReadyCapability.promise,\n      optionalContentConfigPromise,\n    ])\n      .then(([transparency, optionalContentConfig]) => {\n        if (this.destroyed) {\n          complete();\n          return;\n        }\n        this._stats?.time(\"Rendering\");\n\n        if (!(optionalContentConfig.renderingIntent & renderingIntent)) {\n          throw new Error(\n            \"Must use the same `intent`-argument when calling the `PDFPageProxy.render` \" +\n              \"and `PDFDocumentProxy.getOptionalContentConfig` methods.\"\n          );\n        }\n        internalRenderTask.initializeGraphics({\n          transparency,\n          optionalContentConfig,\n        });\n        internalRenderTask.operatorListChanged();\n      })\n      .catch(complete);\n\n    return renderTask;\n  }\n\n  /**\n   * @param {GetOperatorListParameters} params - Page getOperatorList\n   *   parameters.\n   * @returns {Promise<PDFOperatorList>} A promise resolved with an\n   *   {@link PDFOperatorList} object that represents the page's operator list.\n   */\n  getOperatorList({\n    intent = \"display\",\n    annotationMode = AnnotationMode.ENABLE,\n    printAnnotationStorage = null,\n    isEditing = false,\n  } = {}) {\n    if (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"GENERIC\")) {\n      throw new Error(\"Not implemented: getOperatorList\");\n    }\n    function operatorListChanged() {\n      if (intentState.operatorList.lastChunk) {\n        intentState.opListReadCapability.resolve(intentState.operatorList);\n\n        intentState.renderTasks.delete(opListTask);\n      }\n    }\n\n    const intentArgs = this._transport.getRenderingIntent(\n      intent,\n      annotationMode,\n      printAnnotationStorage,\n      isEditing,\n      /* isOpList = */ true\n    );\n    let intentState = this._intentStates.get(intentArgs.cacheKey);\n    if (!intentState) {\n      intentState = Object.create(null);\n      this._intentStates.set(intentArgs.cacheKey, intentState);\n    }\n    let opListTask;\n\n    if (!intentState.opListReadCapability) {\n      opListTask = Object.create(null);\n      opListTask.operatorListChanged = operatorListChanged;\n      intentState.opListReadCapability = Promise.withResolvers();\n      (intentState.renderTasks ||= new Set()).add(opListTask);\n      intentState.operatorList = {\n        fnArray: [],\n        argsArray: [],\n        lastChunk: false,\n        separateAnnots: null,\n      };\n\n      this._stats?.time(\"Page Request\");\n      this._pumpOperatorList(intentArgs);\n    }\n    return intentState.opListReadCapability.promise;\n  }\n\n  /**\n   * NOTE: All occurrences of whitespace will be replaced by\n   * standard spaces (0x20).\n   *\n   * @param {getTextContentParameters} params - getTextContent parameters.\n   * @returns {ReadableStream} Stream for reading text content chunks.\n   */\n  streamTextContent({\n    includeMarkedContent = false,\n    disableNormalization = false,\n  } = {}) {\n    const TEXT_CONTENT_CHUNK_SIZE = 100;\n\n    return this._transport.messageHandler.sendWithStream(\n      \"GetTextContent\",\n      {\n        pageIndex: this._pageIndex,\n        includeMarkedContent: includeMarkedContent === true,\n        disableNormalization: disableNormalization === true,\n      },\n      {\n        highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n        size(textContent) {\n          return textContent.items.length;\n        },\n      }\n    );\n  }\n\n  /**\n   * NOTE: All occurrences of whitespace will be replaced by\n   * standard spaces (0x20).\n   *\n   * @param {getTextContentParameters} params - getTextContent parameters.\n   * @returns {Promise<TextContent>} A promise that is resolved with a\n   *   {@link TextContent} object that represents the page's text content.\n   */\n  getTextContent(params = {}) {\n    if (this._transport._htmlForXfa) {\n      // TODO: We need to revisit this once the XFA foreground patch lands and\n      // only do this for non-foreground XFA.\n      return this.getXfa().then(xfa => XfaText.textContent(xfa));\n    }\n    const readableStream = this.streamTextContent(params);\n\n    return new Promise(function (resolve, reject) {\n      function pump() {\n        reader.read().then(function ({ value, done }) {\n          if (done) {\n            resolve(textContent);\n            return;\n          }\n          textContent.lang ??= value.lang;\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        lang: null,\n      };\n      pump();\n    });\n  }\n\n  /**\n   * @returns {Promise<StructTreeNode>} A promise that is resolved with a\n   *   {@link StructTreeNode} object that represents the page's structure tree,\n   *   or `null` when no structure tree is present for the current page.\n   */\n  getStructTree() {\n    return this._transport.getStructTree(this._pageIndex);\n  }\n\n  /**\n   * Destroys the page object.\n   * @private\n   */\n  _destroy() {\n    this.destroyed = true;\n\n    const waitOn = [];\n    for (const intentState of this._intentStates.values()) {\n      this._abortOperatorList({\n        intentState,\n        reason: new Error(\"Page was destroyed.\"),\n        force: true,\n      });\n\n      if (intentState.opListReadCapability) {\n        // Avoid errors below, since the renderTasks are just stubs.\n        continue;\n      }\n      for (const internalRenderTask of intentState.renderTasks) {\n        waitOn.push(internalRenderTask.completed);\n        internalRenderTask.cancel();\n      }\n    }\n    this.objs.clear();\n    this.#pendingCleanup = false;\n\n    return Promise.all(waitOn);\n  }\n\n  /**\n   * Cleans up resources allocated by the page.\n   *\n   * @param {boolean} [resetStats] - Reset page stats, if enabled.\n   *   The default value is `false`.\n   * @returns {boolean} Indicates if clean-up was successfully run.\n   */\n  cleanup(resetStats = false) {\n    this.#pendingCleanup = true;\n    const success = this.#tryCleanup();\n\n    if (resetStats && success) {\n      this._stats &&= new StatTimer();\n    }\n    return success;\n  }\n\n  /**\n   * Attempts to clean up if rendering is in a state where that's possible.\n   * @returns {boolean} Indicates if clean-up was successfully run.\n   */\n  #tryCleanup() {\n    if (!this.#pendingCleanup || this.destroyed) {\n      return false;\n    }\n    for (const { renderTasks, operatorList } of this._intentStates.values()) {\n      if (renderTasks.size > 0 || !operatorList.lastChunk) {\n        return false;\n      }\n    }\n    this._intentStates.clear();\n    this.objs.clear();\n    this.#pendingCleanup = false;\n    return true;\n  }\n\n  /**\n   * @private\n   */\n  _startRenderPage(transparency, cacheKey) {\n    const intentState = this._intentStates.get(cacheKey);\n    if (!intentState) {\n      return; // Rendering was cancelled.\n    }\n    this._stats?.timeEnd(\"Page Request\");\n\n    // TODO Refactor RenderPageRequest to separate rendering\n    // and operator list logic\n    intentState.displayReadyCapability?.resolve(transparency);\n  }\n\n  /**\n   * @private\n   */\n  _renderPageChunk(operatorListChunk, intentState) {\n    // Add the new chunk to the current operator list.\n    for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n      intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n      intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n    }\n    intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n    intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n\n    // Notify all the rendering tasks there are more operators to be consumed.\n    for (const internalRenderTask of intentState.renderTasks) {\n      internalRenderTask.operatorListChanged();\n    }\n\n    if (operatorListChunk.lastChunk) {\n      this.#tryCleanup();\n    }\n  }\n\n  /**\n   * @private\n   */\n  _pumpOperatorList({\n    renderingIntent,\n    cacheKey,\n    annotationStorageSerializable,\n    modifiedIds,\n  }) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        Number.isInteger(renderingIntent) && renderingIntent > 0,\n        '_pumpOperatorList: Expected valid \"renderingIntent\" argument.'\n      );\n    }\n    const { map, transfer } = annotationStorageSerializable;\n\n    const readableStream = this._transport.messageHandler.sendWithStream(\n      \"GetOperatorList\",\n      {\n        pageIndex: this._pageIndex,\n        intent: renderingIntent,\n        cacheKey,\n        annotationStorage: map,\n        modifiedIds,\n      },\n      transfer\n    );\n    const reader = readableStream.getReader();\n\n    const intentState = this._intentStates.get(cacheKey);\n    intentState.streamReader = reader;\n\n    const pump = () => {\n      reader.read().then(\n        ({ value, done }) => {\n          if (done) {\n            intentState.streamReader = null;\n            return;\n          }\n          if (this._transport.destroyed) {\n            return; // Ignore any pending requests if the worker was terminated.\n          }\n          this._renderPageChunk(value, intentState);\n          pump();\n        },\n        reason => {\n          intentState.streamReader = null;\n\n          if (this._transport.destroyed) {\n            return; // Ignore any pending requests if the worker was terminated.\n          }\n          if (intentState.operatorList) {\n            // Mark operator list as complete.\n            intentState.operatorList.lastChunk = true;\n\n            for (const internalRenderTask of intentState.renderTasks) {\n              internalRenderTask.operatorListChanged();\n            }\n            this.#tryCleanup();\n          }\n\n          if (intentState.displayReadyCapability) {\n            intentState.displayReadyCapability.reject(reason);\n          } else if (intentState.opListReadCapability) {\n            intentState.opListReadCapability.reject(reason);\n          } else {\n            throw reason;\n          }\n        }\n      );\n    };\n    pump();\n  }\n\n  /**\n   * @private\n   */\n  _abortOperatorList({ intentState, reason, force = false }) {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        reason instanceof Error,\n        '_abortOperatorList: Expected valid \"reason\" argument.'\n      );\n    }\n\n    if (!intentState.streamReader) {\n      return;\n    }\n    // Ensure that a pending `streamReader` cancel timeout is always aborted.\n    if (intentState.streamReaderCancelTimeout) {\n      clearTimeout(intentState.streamReaderCancelTimeout);\n      intentState.streamReaderCancelTimeout = null;\n    }\n\n    if (!force) {\n      // Ensure that an Error occurring in *only* one `InternalRenderTask`, e.g.\n      // multiple render() calls on the same canvas, won't break all rendering.\n      if (intentState.renderTasks.size > 0) {\n        return;\n      }\n      // Don't immediately abort parsing on the worker-thread when rendering is\n      // cancelled, since that will unnecessarily delay re-rendering when (for\n      // partially parsed pages) e.g. zooming/rotation occurs in the viewer.\n      if (reason instanceof RenderingCancelledException) {\n        let delay = RENDERING_CANCELLED_TIMEOUT;\n        if (reason.extraDelay > 0 && reason.extraDelay < /* ms = */ 1000) {\n          // Above, we prevent the total delay from becoming arbitrarily large.\n          delay += reason.extraDelay;\n        }\n\n        intentState.streamReaderCancelTimeout = setTimeout(() => {\n          intentState.streamReaderCancelTimeout = null;\n          this._abortOperatorList({ intentState, reason, force: true });\n        }, delay);\n        return;\n      }\n    }\n    intentState.streamReader\n      .cancel(new AbortException(reason.message))\n      .catch(() => {\n        // Avoid \"Uncaught promise\" messages in the console.\n      });\n    intentState.streamReader = null;\n\n    if (this._transport.destroyed) {\n      return; // Ignore any pending requests if the worker was terminated.\n    }\n    // Remove the current `intentState`, since a cancelled `getOperatorList`\n    // call on the worker-thread cannot be re-started...\n    for (const [curCacheKey, curIntentState] of this._intentStates) {\n      if (curIntentState === intentState) {\n        this._intentStates.delete(curCacheKey);\n        break;\n      }\n    }\n    // ... and force clean-up to ensure that any old state is always removed.\n    this.cleanup();\n  }\n\n  /**\n   * @type {StatTimer | null} Returns page stats, if enabled; returns `null`\n   *   otherwise.\n   */\n  get stats() {\n    return this._stats;\n  }\n}\n\n/**\n * @typedef {Object} PDFWorkerParameters\n * @property {string} [name] - The name of the worker.\n * @property {Worker} [port] - The `workerPort` object.\n * @property {number} [verbosity] - Controls the logging level;\n *   the constants from {@link VerbosityLevel} should be used.\n */\n\n/**\n * PDF.js web worker abstraction that controls the instantiation of PDF\n * documents. Message handlers are used to pass information from the main\n * thread to the worker thread and vice versa. If the creation of a web\n * worker is not possible, a \"fake\" worker will be used instead.\n *\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\nclass PDFWorker {\n  #capability = Promise.withResolvers();\n\n  #messageHandler = null;\n\n  #port = null;\n\n  #webWorker = null;\n\n  static #fakeWorkerId = 0;\n\n  static #isWorkerDisabled = false;\n\n  static #workerPorts = new WeakMap();\n\n  static {\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n      if (isNodeJS) {\n        // Workers aren't supported in Node.js, force-disabling them there.\n        this.#isWorkerDisabled = true;\n\n        GlobalWorkerOptions.workerSrc ||= PDFJSDev.test(\"LIB\")\n          ? \"../pdf.worker.js\"\n          : \"./pdf.worker.mjs\";\n      }\n\n      // Check if URLs have the same origin. For non-HTTP based URLs, returns\n      // false.\n      this._isSameOrigin = (baseUrl, otherUrl) => {\n        const base = URL.parse(baseUrl);\n        if (!base?.origin || base.origin === \"null\") {\n          return false; // non-HTTP url\n        }\n        const other = new URL(otherUrl, base);\n        return base.origin === other.origin;\n      };\n\n      this._createCDNWrapper = url => {\n        // We will rely on blob URL's property to specify origin.\n        // We want this function to fail in case if createObjectURL or Blob do\n        // not exist or fail for some reason -- our Worker creation will fail\n        // anyway.\n        const wrapper = `await import(\"${url}\");`;\n        return URL.createObjectURL(\n          new Blob([wrapper], { type: \"text/javascript\" })\n        );\n      };\n\n      this.fromPort = params => {\n        deprecated(\n          \"`PDFWorker.fromPort` - please use `PDFWorker.create` instead.\"\n        );\n        if (!params?.port) {\n          throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n        }\n        return this.create(params);\n      };\n    }\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      this._resetGlobalState = () => {\n        this.#isWorkerDisabled = false;\n        delete globalThis.pdfjsWorker;\n      };\n    }\n  }\n\n  constructor({\n    name = null,\n    port = null,\n    verbosity = getVerbosityLevel(),\n  } = {}) {\n    this.name = name;\n    this.destroyed = false;\n    this.verbosity = verbosity;\n\n    if (port) {\n      if (PDFWorker.#workerPorts.has(port)) {\n        throw new Error(\"Cannot use more than one PDFWorker per port.\");\n      }\n      PDFWorker.#workerPorts.set(port, this);\n      this.#initializeFromPort(port);\n    } else {\n      this.#initialize();\n    }\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      // For testing purposes.\n      Object.defineProperty(this, \"_webWorker\", {\n        get() {\n          return this.#webWorker;\n        },\n      });\n    }\n  }\n\n  /**\n   * Promise for worker initialization completion.\n   * @type {Promise<void>}\n   */\n  get promise() {\n    return this.#capability.promise;\n  }\n\n  #resolve() {\n    this.#capability.resolve();\n    // Send global setting, e.g. verbosity level.\n    this.#messageHandler.send(\"configure\", {\n      verbosity: this.verbosity,\n    });\n  }\n\n  /**\n   * The current `workerPort`, when it exists.\n   * @type {Worker}\n   */\n  get port() {\n    return this.#port;\n  }\n\n  /**\n   * The current MessageHandler-instance.\n   * @type {MessageHandler}\n   */\n  get messageHandler() {\n    return this.#messageHandler;\n  }\n\n  #initializeFromPort(port) {\n    this.#port = port;\n    this.#messageHandler = new MessageHandler(\"main\", \"worker\", port);\n    this.#messageHandler.on(\"ready\", () => {\n      // Ignoring \"ready\" event -- MessageHandler should already be initialized\n      // and ready to accept messages.\n    });\n    this.#resolve();\n  }\n\n  #initialize() {\n    // If worker support isn't disabled explicit and the browser has worker\n    // support, create a new web worker and test if it/the browser fulfills\n    // all requirements to run parts of pdf.js in a web worker.\n    // Right now, the requirement is, that an Uint8Array is still an\n    // Uint8Array as it arrives on the worker.\n    if (\n      PDFWorker.#isWorkerDisabled ||\n      PDFWorker.#mainThreadWorkerMessageHandler\n    ) {\n      this.#setupFakeWorker();\n      return;\n    }\n    let { workerSrc } = PDFWorker;\n\n    try {\n      // Wraps workerSrc path into blob URL, if the former does not belong\n      // to the same origin.\n      if (\n        typeof PDFJSDev !== \"undefined\" &&\n        PDFJSDev.test(\"GENERIC\") &&\n        !PDFWorker._isSameOrigin(window.location, workerSrc)\n      ) {\n        workerSrc = PDFWorker._createCDNWrapper(\n          new URL(workerSrc, window.location).href\n        );\n      }\n\n      const worker = new Worker(workerSrc, { type: \"module\" });\n      const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n      const terminateEarly = () => {\n        ac.abort();\n        messageHandler.destroy();\n        worker.terminate();\n        if (this.destroyed) {\n          this.#capability.reject(new Error(\"Worker was destroyed\"));\n        } else {\n          // Fall back to fake worker if the termination is caused by an\n          // error (e.g. NetworkError / SecurityError).\n          this.#setupFakeWorker();\n        }\n      };\n\n      const ac = new AbortController();\n      worker.addEventListener(\n        \"error\",\n        () => {\n          if (!this.#webWorker) {\n            // Worker failed to initialize due to an error. Clean up and fall\n            // back to the fake worker.\n            terminateEarly();\n          }\n        },\n        { signal: ac.signal }\n      );\n\n      messageHandler.on(\"test\", data => {\n        ac.abort();\n        if (this.destroyed || !data) {\n          terminateEarly();\n          return;\n        }\n        this.#messageHandler = messageHandler;\n        this.#port = worker;\n        this.#webWorker = worker;\n\n        this.#resolve();\n      });\n\n      messageHandler.on(\"ready\", data => {\n        ac.abort();\n        if (this.destroyed) {\n          terminateEarly();\n          return;\n        }\n        try {\n          sendTest();\n        } catch {\n          // We need fallback to a faked worker.\n          this.#setupFakeWorker();\n        }\n      });\n\n      const sendTest = () => {\n        const testObj = new Uint8Array();\n        // Ensure that we can use `postMessage` transfers.\n        messageHandler.send(\"test\", testObj, [testObj.buffer]);\n      };\n\n      // It might take time for the worker to initialize. We will try to send\n      // the \"test\" message immediately, and once the \"ready\" message arrives.\n      // The worker shall process only the first received \"test\" message.\n      sendTest();\n      return;\n    } catch {\n      info(\"The worker has been disabled.\");\n    }\n    // Either workers are not supported or have thrown an exception.\n    // Thus, we fallback to a faked worker.\n    this.#setupFakeWorker();\n  }\n\n  #setupFakeWorker() {\n    if (!PDFWorker.#isWorkerDisabled) {\n      warn(\"Setting up fake worker.\");\n      PDFWorker.#isWorkerDisabled = true;\n    }\n\n    PDFWorker._setupFakeWorkerGlobal\n      .then(WorkerMessageHandler => {\n        if (this.destroyed) {\n          this.#capability.reject(new Error(\"Worker was destroyed\"));\n          return;\n        }\n        const port = new LoopbackPort();\n        this.#port = port;\n\n        // All fake workers use the same port, making id unique.\n        const id = `fake${PDFWorker.#fakeWorkerId++}`;\n\n        // If the main thread is our worker, setup the handling for the\n        // messages -- the main thread sends to it self.\n        const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n        WorkerMessageHandler.setup(workerHandler, port);\n\n        this.#messageHandler = new MessageHandler(id, id + \"_worker\", port);\n        this.#resolve();\n      })\n      .catch(reason => {\n        this.#capability.reject(\n          new Error(`Setting up fake worker failed: \"${reason.message}\".`)\n        );\n      });\n  }\n\n  /**\n   * Destroys the worker instance.\n   */\n  destroy() {\n    this.destroyed = true;\n\n    // We need to terminate only web worker created resource.\n    this.#webWorker?.terminate();\n    this.#webWorker = null;\n\n    PDFWorker.#workerPorts.delete(this.#port);\n    this.#port = null;\n\n    this.#messageHandler?.destroy();\n    this.#messageHandler = null;\n  }\n\n  /**\n   * @param {PDFWorkerParameters} params - The worker initialization parameters.\n   * @returns {PDFWorker}\n   */\n  static create(params) {\n    const cachedPort = this.#workerPorts.get(params?.port);\n    if (cachedPort) {\n      if (cachedPort._pendingDestroy) {\n        throw new Error(\n          \"PDFWorker.create - the worker is being destroyed.\\n\" +\n            \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\"\n        );\n      }\n      return cachedPort;\n    }\n    return new PDFWorker(params);\n  }\n\n  /**\n   * The current `workerSrc`, when it exists.\n   * @type {string}\n   */\n  static get workerSrc() {\n    if (GlobalWorkerOptions.workerSrc) {\n      return GlobalWorkerOptions.workerSrc;\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 {\n      return null;\n    }\n  }\n\n  // Loads worker code into the main-thread.\n  static get _setupFakeWorkerGlobal() {\n    const loader = async () => {\n      if (this.#mainThreadWorkerMessageHandler) {\n        // The worker was already loaded using e.g. a `<script>` tag.\n        return this.#mainThreadWorkerMessageHandler;\n      }\n      const worker =\n        typeof PDFJSDev === \"undefined\"\n          ? await import(\"pdfjs/pdf.worker.js\")\n          : await __raw_import__(this.workerSrc);\n      return worker.WorkerMessageHandler;\n    };\n\n    return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n  }\n}\n\n/**\n * For internal use only.\n * @ignore\n */\nclass WorkerTransport {\n  #methodPromises = new Map();\n\n  #pageCache = new Map();\n\n  #pagePromises = new Map();\n\n  #pageRefCache = new Map();\n\n  #passwordCapability = null;\n\n  constructor(\n    messageHandler,\n    loadingTask,\n    networkStream,\n    params,\n    factory,\n    enableHWA\n  ) {\n    this.messageHandler = messageHandler;\n    this.loadingTask = loadingTask;\n    this.commonObjs = new PDFObjects();\n    this.fontLoader = new FontLoader({\n      ownerDocument: params.ownerDocument,\n      styleElement: params.styleElement,\n    });\n    this.loadingParams = params.loadingParams;\n    this._params = params;\n\n    this.canvasFactory = factory.canvasFactory;\n    this.filterFactory = factory.filterFactory;\n    this.cMapReaderFactory = factory.cMapReaderFactory;\n    this.standardFontDataFactory = factory.standardFontDataFactory;\n    this.wasmFactory = factory.wasmFactory;\n\n    this.destroyed = false;\n    this.destroyCapability = null;\n\n    this._networkStream = networkStream;\n    this._fullReader = null;\n    this._lastProgress = null;\n    this.downloadInfoCapability = Promise.withResolvers();\n    this.enableHWA = enableHWA;\n\n    this.setupMessageHandler();\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      // For testing purposes.\n      Object.defineProperty(this, \"getNetworkStreamName\", {\n        value: () => networkStream?.constructor?.name || null,\n      });\n      Object.defineProperty(this, \"getXFADatasets\", {\n        value: () =>\n          this.messageHandler.sendWithPromise(\"GetXFADatasets\", null),\n      });\n      Object.defineProperty(this, \"getXRefPrevValue\", {\n        value: () =>\n          this.messageHandler.sendWithPromise(\"GetXRefPrevValue\", null),\n      });\n      Object.defineProperty(this, \"getStartXRefPos\", {\n        value: () =>\n          this.messageHandler.sendWithPromise(\"GetStartXRefPos\", null),\n      });\n      Object.defineProperty(this, \"getAnnotArray\", {\n        value: pageIndex =>\n          this.messageHandler.sendWithPromise(\"GetAnnotArray\", { pageIndex }),\n      });\n    }\n  }\n\n  #cacheSimpleMethod(name, data = null) {\n    const cachedPromise = this.#methodPromises.get(name);\n    if (cachedPromise) {\n      return cachedPromise;\n    }\n    const promise = this.messageHandler.sendWithPromise(name, data);\n\n    this.#methodPromises.set(name, promise);\n    return promise;\n  }\n\n  get annotationStorage() {\n    return shadow(this, \"annotationStorage\", new AnnotationStorage());\n  }\n\n  getRenderingIntent(\n    intent,\n    annotationMode = AnnotationMode.ENABLE,\n    printAnnotationStorage = null,\n    isEditing = false,\n    isOpList = false\n  ) {\n    let renderingIntent = RenderingIntentFlag.DISPLAY; // Default value.\n    let annotationStorageSerializable = SerializableEmpty;\n\n    switch (intent) {\n      case \"any\":\n        renderingIntent = RenderingIntentFlag.ANY;\n        break;\n      case \"display\":\n        break;\n      case \"print\":\n        renderingIntent = RenderingIntentFlag.PRINT;\n        break;\n      default:\n        warn(`getRenderingIntent - invalid intent: ${intent}`);\n    }\n\n    const annotationStorage =\n      renderingIntent & RenderingIntentFlag.PRINT &&\n      printAnnotationStorage instanceof PrintAnnotationStorage\n        ? printAnnotationStorage\n        : this.annotationStorage;\n\n    switch (annotationMode) {\n      case AnnotationMode.DISABLE:\n        renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\n        break;\n      case AnnotationMode.ENABLE:\n        break;\n      case AnnotationMode.ENABLE_FORMS:\n        renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\n        break;\n      case AnnotationMode.ENABLE_STORAGE:\n        renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\n\n        annotationStorageSerializable = annotationStorage.serializable;\n        break;\n      default:\n        warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n    }\n\n    if (isEditing) {\n      renderingIntent += RenderingIntentFlag.IS_EDITING;\n    }\n    if (isOpList) {\n      renderingIntent += RenderingIntentFlag.OPLIST;\n    }\n\n    const { ids: modifiedIds, hash: modifiedIdsHash } =\n      annotationStorage.modifiedIds;\n\n    const cacheKeyBuf = [\n      renderingIntent,\n      annotationStorageSerializable.hash,\n      modifiedIdsHash,\n    ];\n\n    return {\n      renderingIntent,\n      cacheKey: cacheKeyBuf.join(\"_\"),\n      annotationStorageSerializable,\n      modifiedIds,\n    };\n  }\n\n  destroy() {\n    if (this.destroyCapability) {\n      return this.destroyCapability.promise;\n    }\n\n    this.destroyed = true;\n    this.destroyCapability = Promise.withResolvers();\n\n    this.#passwordCapability?.reject(\n      new Error(\"Worker was destroyed during onPassword callback\")\n    );\n\n    const waitOn = [];\n    // We need to wait for all renderings to be completed, e.g.\n    // timeout/rAF can take a long time.\n    for (const page of this.#pageCache.values()) {\n      waitOn.push(page._destroy());\n    }\n    this.#pageCache.clear();\n    this.#pagePromises.clear();\n    this.#pageRefCache.clear();\n    // Allow `AnnotationStorage`-related clean-up when destroying the document.\n    if (this.hasOwnProperty(\"annotationStorage\")) {\n      this.annotationStorage.resetModified();\n    }\n    // We also need to wait for the worker to finish its long running tasks.\n    const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n    waitOn.push(terminated);\n\n    Promise.all(waitOn).then(() => {\n      this.commonObjs.clear();\n      this.fontLoader.clear();\n      this.#methodPromises.clear();\n      this.filterFactory.destroy();\n      TextLayer.cleanup();\n\n      this._networkStream?.cancelAllRequests(\n        new AbortException(\"Worker was terminated.\")\n      );\n\n      this.messageHandler?.destroy();\n      this.messageHandler = null;\n\n      this.destroyCapability.resolve();\n    }, this.destroyCapability.reject);\n    return this.destroyCapability.promise;\n  }\n\n  setupMessageHandler() {\n    const { messageHandler, loadingTask } = this;\n\n    messageHandler.on(\"GetReader\", (data, sink) => {\n      assert(\n        this._networkStream,\n        \"GetReader - no `IPDFStream` instance available.\"\n      );\n      this._fullReader = this._networkStream.getFullReader();\n      this._fullReader.onProgress = evt => {\n        this._lastProgress = {\n          loaded: evt.loaded,\n          total: evt.total,\n        };\n      };\n      sink.onPull = () => {\n        this._fullReader\n          .read()\n          .then(function ({ value, done }) {\n            if (done) {\n              sink.close();\n              return;\n            }\n            assert(\n              value instanceof ArrayBuffer,\n              \"GetReader - expected an ArrayBuffer.\"\n            );\n            // Enqueue data chunk into sink, and transfer it\n            // to other side as `Transferable` object.\n            sink.enqueue(new Uint8Array(value), 1, [value]);\n          })\n          .catch(reason => {\n            sink.error(reason);\n          });\n      };\n\n      sink.onCancel = reason => {\n        this._fullReader.cancel(reason);\n\n        sink.ready.catch(readyReason => {\n          if (this.destroyed) {\n            return; // Ignore any pending requests if the worker was terminated.\n          }\n          throw readyReason;\n        });\n      };\n    });\n\n    messageHandler.on(\"ReaderHeadersReady\", async data => {\n      await this._fullReader.headersReady;\n\n      const { isStreamingSupported, isRangeSupported, contentLength } =\n        this._fullReader;\n\n      // If stream or range are disabled, it's our only way to report\n      // loading progress.\n      if (!isStreamingSupported || !isRangeSupported) {\n        if (this._lastProgress) {\n          loadingTask.onProgress?.(this._lastProgress);\n        }\n        this._fullReader.onProgress = evt => {\n          loadingTask.onProgress?.({\n            loaded: evt.loaded,\n            total: evt.total,\n          });\n        };\n      }\n\n      return { isStreamingSupported, isRangeSupported, contentLength };\n    });\n\n    messageHandler.on(\"GetRangeReader\", (data, sink) => {\n      assert(\n        this._networkStream,\n        \"GetRangeReader - no `IPDFStream` instance available.\"\n      );\n      const rangeReader = this._networkStream.getRangeReader(\n        data.begin,\n        data.end\n      );\n\n      // When streaming is enabled, it's possible that the data requested here\n      // has already been fetched via the `_fullRequestReader` implementation.\n      // However, given that the PDF data is loaded asynchronously on the\n      // main-thread and then sent via `postMessage` to the worker-thread,\n      // it may not have been available during parsing (hence the attempt to\n      // use range requests here).\n      //\n      // To avoid wasting time and resources here, we'll thus *not* dispatch\n      // range requests if the data was already loaded but has not been sent to\n      // the worker-thread yet (which will happen via the `_fullRequestReader`).\n      if (!rangeReader) {\n        sink.close();\n        return;\n      }\n\n      sink.onPull = () => {\n        rangeReader\n          .read()\n          .then(function ({ value, done }) {\n            if (done) {\n              sink.close();\n              return;\n            }\n            assert(\n              value instanceof ArrayBuffer,\n              \"GetRangeReader - expected an ArrayBuffer.\"\n            );\n            sink.enqueue(new Uint8Array(value), 1, [value]);\n          })\n          .catch(reason => {\n            sink.error(reason);\n          });\n      };\n\n      sink.onCancel = reason => {\n        rangeReader.cancel(reason);\n\n        sink.ready.catch(readyReason => {\n          if (this.destroyed) {\n            return; // Ignore any pending requests if the worker was terminated.\n          }\n          throw readyReason;\n        });\n      };\n    });\n\n    messageHandler.on(\"GetDoc\", ({ pdfInfo }) => {\n      this._numPages = pdfInfo.numPages;\n      this._htmlForXfa = pdfInfo.htmlForXfa;\n      delete pdfInfo.htmlForXfa;\n      loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n    });\n\n    messageHandler.on(\"DocException\", ex => {\n      loadingTask._capability.reject(wrapReason(ex));\n    });\n\n    messageHandler.on(\"PasswordRequest\", ex => {\n      this.#passwordCapability = Promise.withResolvers();\n\n      try {\n        if (!loadingTask.onPassword) {\n          throw wrapReason(ex);\n        }\n\n        const updatePassword = password => {\n          if (password instanceof Error) {\n            this.#passwordCapability.reject(password);\n          } else {\n            this.#passwordCapability.resolve({ password });\n          }\n        };\n        loadingTask.onPassword(updatePassword, ex.code);\n      } catch (err) {\n        this.#passwordCapability.reject(err);\n      }\n      return this.#passwordCapability.promise;\n    });\n\n    messageHandler.on(\"DataLoaded\", data => {\n      // For consistency: Ensure that progress is always reported when the\n      // entire PDF file has been loaded, regardless of how it was fetched.\n      loadingTask.onProgress?.({\n        loaded: data.length,\n        total: data.length,\n      });\n\n      this.downloadInfoCapability.resolve(data);\n    });\n\n    messageHandler.on(\"StartRenderPage\", data => {\n      if (this.destroyed) {\n        return; // Ignore any pending requests if the worker was terminated.\n      }\n\n      const page = this.#pageCache.get(data.pageIndex);\n      page._startRenderPage(data.transparency, data.cacheKey);\n    });\n\n    messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n      if (this.destroyed) {\n        return null; // Ignore any pending requests if the worker was terminated.\n      }\n\n      if (this.commonObjs.has(id)) {\n        return null;\n      }\n\n      switch (type) {\n        case \"Font\":\n          if (\"error\" in exportedData) {\n            const exportedError = exportedData.error;\n            warn(`Error during font loading: ${exportedError}`);\n            this.commonObjs.resolve(id, exportedError);\n            break;\n          }\n\n          const fontData = new FontInfo(exportedData);\n          const inspectFont =\n            this._params.pdfBug && globalThis.FontInspector?.enabled\n              ? (font, url) => globalThis.FontInspector.fontAdded(font, url)\n              : null;\n          const font = new FontFaceObject(\n            fontData,\n            inspectFont,\n            exportedData.extra,\n            exportedData.charProcOperatorList\n          );\n\n          this.fontLoader\n            .bind(font)\n            .catch(() => messageHandler.sendWithPromise(\"FontFallback\", { id }))\n            .finally(() => {\n              if (!font.fontExtraProperties && font.data) {\n                // Immediately release the `font.data` property once the font\n                // has been attached to the DOM, since it's no longer needed,\n                // rather than waiting for a `PDFDocumentProxy.cleanup` call.\n                // Since `font.data` could be very large, e.g. in some cases\n                // multiple megabytes, this will help reduce memory usage.\n                font.clearData();\n              }\n              this.commonObjs.resolve(id, font);\n            });\n          break;\n        case \"CopyLocalImage\":\n          const { imageRef } = exportedData;\n          assert(imageRef, \"The imageRef must be defined.\");\n\n          for (const pageProxy of this.#pageCache.values()) {\n            for (const [, data] of pageProxy.objs) {\n              if (data?.ref !== imageRef) {\n                continue;\n              }\n              if (!data.dataLen) {\n                return null;\n              }\n              this.commonObjs.resolve(id, structuredClone(data));\n              return data.dataLen;\n            }\n          }\n          break;\n        case \"FontPath\":\n        case \"Image\":\n        case \"Pattern\":\n          this.commonObjs.resolve(id, exportedData);\n          break;\n        default:\n          throw new Error(`Got unknown common object type ${type}`);\n      }\n\n      return null;\n    });\n\n    messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n      if (this.destroyed) {\n        // Ignore any pending requests if the worker was terminated.\n        return;\n      }\n\n      const pageProxy = this.#pageCache.get(pageIndex);\n      if (pageProxy.objs.has(id)) {\n        return;\n      }\n      // Don't store data *after* cleanup has successfully run, see bug 1854145.\n      if (pageProxy._intentStates.size === 0) {\n        imageData?.bitmap?.close(); // Release any `ImageBitmap` data.\n        return;\n      }\n\n      switch (type) {\n        case \"Image\":\n        case \"Pattern\":\n          pageProxy.objs.resolve(id, imageData);\n          break;\n        default:\n          throw new Error(`Got unknown object type ${type}`);\n      }\n    });\n\n    messageHandler.on(\"DocProgress\", data => {\n      if (this.destroyed) {\n        return; // Ignore any pending requests if the worker was terminated.\n      }\n      loadingTask.onProgress?.({\n        loaded: data.loaded,\n        total: data.total,\n      });\n    });\n\n    messageHandler.on(\"FetchBinaryData\", async data => {\n      if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n        throw new Error(\"Not implemented: FetchBinaryData\");\n      }\n      if (this.destroyed) {\n        throw new Error(\"Worker was destroyed.\");\n      }\n      const factory = this[data.type];\n\n      if (!factory) {\n        throw new Error(\n          `${data.type} not initialized, see the \\`useWorkerFetch\\` parameter.`\n        );\n      }\n      return factory.fetch(data);\n    });\n  }\n\n  getData() {\n    return this.messageHandler.sendWithPromise(\"GetData\", null);\n  }\n\n  saveDocument() {\n    if (this.annotationStorage.size <= 0) {\n      warn(\n        \"saveDocument called while `annotationStorage` is empty, \" +\n          \"please use the getData-method instead.\"\n      );\n    }\n    const { map, transfer } = this.annotationStorage.serializable;\n\n    return this.messageHandler\n      .sendWithPromise(\n        \"SaveDocument\",\n        {\n          isPureXfa: !!this._htmlForXfa,\n          numPages: this._numPages,\n          annotationStorage: map,\n          filename: this._fullReader?.filename ?? null,\n        },\n        transfer\n      )\n      .finally(() => {\n        this.annotationStorage.resetModified();\n      });\n  }\n\n  getPage(pageNumber) {\n    if (\n      !Number.isInteger(pageNumber) ||\n      pageNumber <= 0 ||\n      pageNumber > this._numPages\n    ) {\n      return Promise.reject(new Error(\"Invalid page request.\"));\n    }\n\n    const pageIndex = pageNumber - 1,\n      cachedPromise = this.#pagePromises.get(pageIndex);\n    if (cachedPromise) {\n      return cachedPromise;\n    }\n    const promise = this.messageHandler\n      .sendWithPromise(\"GetPage\", {\n        pageIndex,\n      })\n      .then(pageInfo => {\n        if (this.destroyed) {\n          throw new Error(\"Transport destroyed\");\n        }\n        if (pageInfo.refStr) {\n          this.#pageRefCache.set(pageInfo.refStr, pageNumber);\n        }\n\n        const page = new PDFPageProxy(\n          pageIndex,\n          pageInfo,\n          this,\n          this._params.pdfBug\n        );\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 (!isRefProxy(ref)) {\n      return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n    }\n    return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n      num: ref.num,\n      gen: ref.gen,\n    });\n  }\n\n  getAnnotations(pageIndex, intent) {\n    return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n      pageIndex,\n      intent,\n    });\n  }\n\n  getFieldObjects() {\n    return this.#cacheSimpleMethod(\"GetFieldObjects\");\n  }\n\n  hasJSActions() {\n    return this.#cacheSimpleMethod(\"HasJSActions\");\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    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  getAnnotationsByType(types, pageIndexesToSkip) {\n    return this.messageHandler.sendWithPromise(\"GetAnnotationsByType\", {\n      types,\n      pageIndexesToSkip,\n    });\n  }\n\n  getDocJSActions() {\n    return this.#cacheSimpleMethod(\"GetDocJSActions\");\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(renderingIntent) {\n    return this.#cacheSimpleMethod(\"GetOptionalContentConfig\").then(\n      data => new OptionalContentConfig(data, renderingIntent)\n    );\n  }\n\n  getPermissions() {\n    return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n  }\n\n  getMetadata() {\n    const name = \"GetMetadata\",\n      cachedPromise = this.#methodPromises.get(name);\n    if (cachedPromise) {\n      return cachedPromise;\n    }\n    const promise = this.messageHandler\n      .sendWithPromise(name, null)\n      .then(results => ({\n        info: results[0],\n        metadata: results[1] ? new Metadata(results[1]) : null,\n        contentDispositionFilename: this._fullReader?.filename ?? null,\n        contentLength: this._fullReader?.contentLength ?? null,\n      }));\n    this.#methodPromises.set(name, promise);\n    return promise;\n  }\n\n  getMarkInfo() {\n    return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n  }\n\n  async startCleanup(keepLoadedFonts = false) {\n    if (this.destroyed) {\n      return; // No need to manually clean-up when destruction has started.\n    }\n    await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n\n    for (const page of this.#pageCache.values()) {\n      const cleanupSuccessful = page.cleanup();\n\n      if (!cleanupSuccessful) {\n        throw new Error(\n          `startCleanup: Page ${page.pageNumber} is currently rendering.`\n        );\n      }\n    }\n    this.commonObjs.clear();\n    if (!keepLoadedFonts) {\n      this.fontLoader.clear();\n    }\n    this.#methodPromises.clear();\n    this.filterFactory.destroy(/* keepHCM = */ true);\n    TextLayer.cleanup();\n  }\n\n  cachedPageNumber(ref) {\n    if (!isRefProxy(ref)) {\n      return null;\n    }\n    const refStr = ref.gen === 0 ? `${ref.num}R` : `${ref.num}R${ref.gen}`;\n    return this.#pageRefCache.get(refStr) ?? null;\n  }\n}\n\n/**\n * Allows controlling of the rendering tasks.\n */\nclass RenderTask {\n  #internalRenderTask = null;\n\n  /**\n   * Callback for incremental rendering -- a function that will be called\n   * each time the rendering is paused.  To continue rendering call the\n   * function that is the first argument to the callback.\n   * @type {function}\n   */\n  onContinue = null;\n\n  /**\n   * A function that will be synchronously called when the rendering tasks\n   * finishes with an error (either because of an actual error, or because the\n   * rendering is cancelled).\n   *\n   * @type {function}\n   * @param {Error} error\n   */\n  onError = null;\n\n  constructor(internalRenderTask) {\n    this.#internalRenderTask = internalRenderTask;\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      // For testing purposes.\n      Object.defineProperty(this, \"getOperatorList\", {\n        value: () => this.#internalRenderTask.operatorList,\n      });\n    }\n  }\n\n  /**\n   * Promise for rendering task completion.\n   * @type {Promise<void>}\n   */\n  get promise() {\n    return this.#internalRenderTask.capability.promise;\n  }\n\n  /**\n   * Cancels the rendering task. If the task is currently rendering it will\n   * not be cancelled until graphics pauses with a timeout. The promise that\n   * this object extends will be rejected when cancelled.\n   *\n   * @param {number} [extraDelay]\n   */\n  cancel(extraDelay = 0) {\n    this.#internalRenderTask.cancel(/* error = */ null, extraDelay);\n  }\n\n  /**\n   * Whether form fields are rendered separately from the main operatorList.\n   * @type {boolean}\n   */\n  get separateAnnots() {\n    const { separateAnnots } = this.#internalRenderTask.operatorList;\n    if (!separateAnnots) {\n      return false;\n    }\n    const { annotationCanvasMap } = this.#internalRenderTask;\n    return (\n      separateAnnots.form ||\n      (separateAnnots.canvas && annotationCanvasMap?.size > 0)\n    );\n  }\n}\n\n/**\n * For internal use only.\n * @ignore\n */\nclass InternalRenderTask {\n  #rAF = null;\n\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    filterFactory,\n    useRequestAnimationFrame = false,\n    pdfBug = false,\n    pageColors = null,\n    enableHWA = false,\n    operationsFilter = null,\n  }) {\n    this.callback = callback;\n    this.params = params;\n    this.objs = objs;\n    this.commonObjs = commonObjs;\n    this.annotationCanvasMap = annotationCanvasMap;\n    this.operatorListIdx = null;\n    this.operatorList = operatorList;\n    this._pageIndex = pageIndex;\n    this.canvasFactory = canvasFactory;\n    this.filterFactory = filterFactory;\n    this._pdfBug = pdfBug;\n    this.pageColors = pageColors;\n\n    this.running = false;\n    this.graphicsReadyCallback = null;\n    this.graphicsReady = false;\n    this._useRequestAnimationFrame =\n      useRequestAnimationFrame === true && typeof window !== \"undefined\";\n    this.cancelled = false;\n    this.capability = Promise.withResolvers();\n    this.task = new RenderTask(this);\n    // caching this-bound methods\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.canvas;\n    this._canvasContext = params.canvas ? null : params.canvasContext;\n    this._enableHWA = enableHWA;\n    this._dependencyTracker = params.dependencyTracker;\n    this._operationsFilter = operationsFilter;\n  }\n\n  get completed() {\n    return this.capability.promise.catch(function () {\n      // Ignoring errors, since we only want to know when rendering is\n      // no longer pending.\n    });\n  }\n\n  initializeGraphics({ transparency = false, optionalContentConfig }) {\n    if (this.cancelled) {\n      return;\n    }\n    if (this._canvas) {\n      if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n        throw new Error(\n          \"Cannot use the same canvas during multiple render() operations. \" +\n            \"Use different canvas or ensure previous operations were \" +\n            \"cancelled or completed.\"\n        );\n      }\n      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    const { viewport, transform, background, dependencyTracker } = this.params;\n\n    // When printing in Firefox, we get a specific context in mozPrintCallback\n    // which cannot be created from the canvas itself.\n    const canvasContext =\n      this._canvasContext ||\n      this._canvas.getContext(\"2d\", {\n        alpha: false,\n        willReadFrequently: !this._enableHWA,\n      });\n\n    this.gfx = new CanvasGraphics(\n      canvasContext,\n      this.commonObjs,\n      this.objs,\n      this.canvasFactory,\n      this.filterFactory,\n      { optionalContentConfig },\n      this.annotationCanvasMap,\n      this.pageColors,\n      dependencyTracker\n    );\n    this.gfx.beginDrawing({\n      transform,\n      viewport,\n      transparency,\n      background,\n    });\n    this.operatorListIdx = 0;\n    this.graphicsReady = true;\n    this.graphicsReadyCallback?.();\n  }\n\n  cancel(error = null, extraDelay = 0) {\n    this.running = false;\n    this.cancelled = true;\n    this.gfx?.endDrawing();\n    if (this.#rAF) {\n      window.cancelAnimationFrame(this.#rAF);\n      this.#rAF = null;\n    }\n    InternalRenderTask.#canvasInUse.delete(this._canvas);\n\n    error ||= new RenderingCancelledException(\n      `Rendering cancelled, page ${this._pageIndex + 1}`,\n      extraDelay\n    );\n    this.callback(error);\n\n    this.task.onError?.(error);\n  }\n\n  operatorListChanged() {\n    if (!this.graphicsReady) {\n      this.graphicsReadyCallback ||= this._continueBound;\n      return;\n    }\n    this.gfx.dependencyTracker?.growOperationsCount(\n      this.operatorList.fnArray.length\n    );\n    this.stepper?.updateOperatorList(this.operatorList);\n\n    if (this.running) {\n      return;\n    }\n    this._continue();\n  }\n\n  _continue() {\n    this.running = true;\n    if (this.cancelled) {\n      return;\n    }\n    if (this.task.onContinue) {\n      this.task.onContinue(this._scheduleNextBound);\n    } else {\n      this._scheduleNext();\n    }\n  }\n\n  _scheduleNext() {\n    if (this._useRequestAnimationFrame) {\n      this.#rAF = window.requestAnimationFrame(() => {\n        this.#rAF = null;\n        this._nextBound().catch(this._cancelBound);\n      });\n    } else {\n      Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n    }\n  }\n\n  async _next() {\n    if (this.cancelled) {\n      return;\n    }\n    this.operatorListIdx = this.gfx.executeOperatorList(\n      this.operatorList,\n      this.operatorListIdx,\n      this._continueBound,\n      this.stepper,\n      this._operationsFilter\n    );\n    if (this.operatorListIdx === this.operatorList.argsArray.length) {\n      this.running = false;\n      if (this.operatorList.lastChunk) {\n        this.gfx.endDrawing();\n        InternalRenderTask.#canvasInUse.delete(this._canvas);\n\n        this.callback();\n      }\n    }\n  }\n}\n\n/** @type {string} */\nconst version =\n  typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : null;\n/** @type {string} */\nconst build =\n  typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : null;\n\nexport {\n  build,\n  getDocument,\n  PDFDataRangeTransport,\n  PDFDocumentLoadingTask,\n  PDFDocumentProxy,\n  PDFPageProxy,\n  PDFWorker,\n  RenderTask,\n  version,\n};\n", "/* Copyright 2023 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AnnotationEditorParamsType, shadow } from \"../../shared/util.js\";\nimport { KeyboardManager } from \"./tools.js\";\nimport { noContextMenu } from \"../display_utils.js\";\n\n/**\n * ColorPicker class provides a color picker for the annotation editor.\n * It displays a dropdown with some predefined colors and allows the user\n * to select a color for the annotation.\n */\nclass ColorPicker {\n  #button = null;\n\n  #buttonSwatch = null;\n\n  #defaultColor;\n\n  #dropdown = null;\n\n  #dropdownWasFromKeyboard = false;\n\n  #isMainColorPicker = false;\n\n  #editor = null;\n\n  #eventBus;\n\n  #openDropdownAC = null;\n\n  #uiManager = null;\n\n  static #l10nColor = null;\n\n  static get _keyboardManager() {\n    return shadow(\n      this,\n      \"_keyboardManager\",\n      new KeyboardManager([\n        [\n          [\"Escape\", \"mac+Escape\"],\n          ColorPicker.prototype._hideDropdownFromKeyboard,\n        ],\n        [[\" \", \"mac+ \"], ColorPicker.prototype._colorSelectFromKeyboard],\n        [\n          [\"ArrowDown\", \"ArrowRight\", \"mac+ArrowDown\", \"mac+ArrowRight\"],\n          ColorPicker.prototype._moveToNext,\n        ],\n        [\n          [\"ArrowUp\", \"ArrowLeft\", \"mac+ArrowUp\", \"mac+ArrowLeft\"],\n          ColorPicker.prototype._moveToPrevious,\n        ],\n        [[\"Home\", \"mac+Home\"], ColorPicker.prototype._moveToBeginning],\n        [[\"End\", \"mac+End\"], ColorPicker.prototype._moveToEnd],\n      ])\n    );\n  }\n\n  constructor({ editor = null, uiManager = null }) {\n    if (editor) {\n      this.#isMainColorPicker = false;\n      this.#editor = editor;\n    } else {\n      this.#isMainColorPicker = true;\n    }\n    this.#uiManager = editor?._uiManager || uiManager;\n    this.#eventBus = this.#uiManager._eventBus;\n    this.#defaultColor =\n      editor?.color?.toUpperCase() ||\n      this.#uiManager?.highlightColors.values().next().value ||\n      \"#FFFF98\";\n\n    ColorPicker.#l10nColor ||= Object.freeze({\n      blue: \"pdfjs-editor-colorpicker-blue\",\n      green: \"pdfjs-editor-colorpicker-green\",\n      pink: \"pdfjs-editor-colorpicker-pink\",\n      red: \"pdfjs-editor-colorpicker-red\",\n      yellow: \"pdfjs-editor-colorpicker-yellow\",\n    });\n  }\n\n  renderButton() {\n    const button = (this.#button = document.createElement(\"button\"));\n    button.className = \"colorPicker\";\n    button.tabIndex = \"0\";\n    button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-button\");\n    button.ariaHasPopup = \"true\";\n    if (this.#editor) {\n      button.ariaControls = `${this.#editor.id}_colorpicker_dropdown`;\n    }\n    const signal = this.#uiManager._signal;\n    button.addEventListener(\"click\", this.#openDropdown.bind(this), { signal });\n    button.addEventListener(\"keydown\", this.#keyDown.bind(this), { signal });\n    const swatch = (this.#buttonSwatch = document.createElement(\"span\"));\n    swatch.className = \"swatch\";\n    swatch.ariaHidden = \"true\";\n    swatch.style.backgroundColor = this.#defaultColor;\n    button.append(swatch);\n    return button;\n  }\n\n  renderMainDropdown() {\n    const dropdown = (this.#dropdown = this.#getDropdownRoot());\n    dropdown.ariaOrientation = \"horizontal\";\n    dropdown.ariaLabelledBy = \"highlightColorPickerLabel\";\n\n    return dropdown;\n  }\n\n  #getDropdownRoot() {\n    const div = document.createElement(\"div\");\n    const signal = this.#uiManager._signal;\n    div.addEventListener(\"contextmenu\", noContextMenu, { signal });\n    div.className = \"dropdown\";\n    div.role = \"listbox\";\n    div.ariaMultiSelectable = \"false\";\n    div.ariaOrientation = \"vertical\";\n    div.setAttribute(\"data-l10n-id\", \"pdfjs-editor-colorpicker-dropdown\");\n    if (this.#editor) {\n      div.id = `${this.#editor.id}_colorpicker_dropdown`;\n    }\n    for (const [name, color] of this.#uiManager.highlightColors) {\n      const button = document.createElement(\"button\");\n      button.tabIndex = \"0\";\n      button.role = \"option\";\n      button.setAttribute(\"data-color\", color);\n      button.title = name;\n      button.setAttribute(\"data-l10n-id\", ColorPicker.#l10nColor[name]);\n      const swatch = document.createElement(\"span\");\n      button.append(swatch);\n      swatch.className = \"swatch\";\n      swatch.style.backgroundColor = color;\n      button.ariaSelected = color === this.#defaultColor;\n      button.addEventListener(\"click\", this.#colorSelect.bind(this, color), {\n        signal,\n      });\n      div.append(button);\n    }\n\n    div.addEventListener(\"keydown\", this.#keyDown.bind(this), { signal });\n\n    return div;\n  }\n\n  #colorSelect(color, event) {\n    event.stopPropagation();\n    this.#eventBus.dispatch(\"switchannotationeditorparams\", {\n      source: this,\n      type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n      value: color,\n    });\n    this.updateColor(color);\n  }\n\n  _colorSelectFromKeyboard(event) {\n    if (event.target === this.#button) {\n      this.#openDropdown(event);\n      return;\n    }\n    const color = event.target.getAttribute(\"data-color\");\n    if (!color) {\n      return;\n    }\n    this.#colorSelect(color, event);\n  }\n\n  _moveToNext(event) {\n    if (!this.#isDropdownVisible) {\n      this.#openDropdown(event);\n      return;\n    }\n    if (event.target === this.#button) {\n      this.#dropdown.firstChild?.focus();\n      return;\n    }\n    event.target.nextSibling?.focus();\n  }\n\n  _moveToPrevious(event) {\n    if (\n      event.target === this.#dropdown?.firstChild ||\n      event.target === this.#button\n    ) {\n      if (this.#isDropdownVisible) {\n        this._hideDropdownFromKeyboard();\n      }\n      return;\n    }\n    if (!this.#isDropdownVisible) {\n      this.#openDropdown(event);\n    }\n    event.target.previousSibling?.focus();\n  }\n\n  _moveToBeginning(event) {\n    if (!this.#isDropdownVisible) {\n      this.#openDropdown(event);\n      return;\n    }\n    this.#dropdown.firstChild?.focus();\n  }\n\n  _moveToEnd(event) {\n    if (!this.#isDropdownVisible) {\n      this.#openDropdown(event);\n      return;\n    }\n    this.#dropdown.lastChild?.focus();\n  }\n\n  #keyDown(event) {\n    ColorPicker._keyboardManager.exec(this, event);\n  }\n\n  #openDropdown(event) {\n    if (this.#isDropdownVisible) {\n      this.hideDropdown();\n      return;\n    }\n    this.#dropdownWasFromKeyboard = event.detail === 0;\n\n    if (!this.#openDropdownAC) {\n      this.#openDropdownAC = new AbortController();\n\n      window.addEventListener(\"pointerdown\", this.#pointerDown.bind(this), {\n        signal: this.#uiManager.combinedSignal(this.#openDropdownAC),\n      });\n    }\n    this.#button.ariaExpanded = \"true\";\n    if (this.#dropdown) {\n      this.#dropdown.classList.remove(\"hidden\");\n      return;\n    }\n    const root = (this.#dropdown = this.#getDropdownRoot());\n    this.#button.append(root);\n  }\n\n  #pointerDown(event) {\n    if (this.#dropdown?.contains(event.target)) {\n      return;\n    }\n    this.hideDropdown();\n  }\n\n  hideDropdown() {\n    this.#dropdown?.classList.add(\"hidden\");\n    this.#button.ariaExpanded = \"false\";\n    this.#openDropdownAC?.abort();\n    this.#openDropdownAC = null;\n  }\n\n  get #isDropdownVisible() {\n    return this.#dropdown && !this.#dropdown.classList.contains(\"hidden\");\n  }\n\n  _hideDropdownFromKeyboard() {\n    if (this.#isMainColorPicker) {\n      return;\n    }\n    if (!this.#isDropdownVisible) {\n      // The user pressed Escape with no dropdown visible, so we must\n      // unselect it.\n      this.#editor?.unselect();\n      return;\n    }\n    this.hideDropdown();\n    this.#button.focus({\n      preventScroll: true,\n      focusVisible: this.#dropdownWasFromKeyboard,\n    });\n  }\n\n  updateColor(color) {\n    if (this.#buttonSwatch) {\n      this.#buttonSwatch.style.backgroundColor = color;\n    }\n    if (!this.#dropdown) {\n      return;\n    }\n\n    const i = this.#uiManager.highlightColors.values();\n    for (const child of this.#dropdown.children) {\n      child.ariaSelected = i.next().value === color.toUpperCase();\n    }\n  }\n\n  destroy() {\n    this.#button?.remove();\n    this.#button = null;\n    this.#buttonSwatch = null;\n    this.#dropdown?.remove();\n    this.#dropdown = null;\n  }\n}\n\n/**\n * BasicColorPicker class provides a simple color picker.\n * It displays an input element (with type=\"color\") that allows the user\n * to select a color for the annotation.\n */\nclass BasicColorPicker {\n  #input = null;\n\n  #editor = null;\n\n  #uiManager = null;\n\n  static #l10nColor = null;\n\n  constructor(editor) {\n    this.#editor = editor;\n    this.#uiManager = editor._uiManager;\n\n    BasicColorPicker.#l10nColor ||= Object.freeze({\n      freetext: \"pdfjs-editor-color-picker-free-text-input\",\n      ink: \"pdfjs-editor-color-picker-ink-input\",\n    });\n  }\n\n  renderButton() {\n    if (this.#input) {\n      return this.#input;\n    }\n    const { editorType, colorType, colorValue } = this.#editor;\n    const input = (this.#input = document.createElement(\"input\"));\n    input.type = \"color\";\n    input.value = colorValue || \"#000000\";\n    input.className = \"basicColorPicker\";\n    input.tabIndex = 0;\n    input.setAttribute(\"data-l10n-id\", BasicColorPicker.#l10nColor[editorType]);\n    input.addEventListener(\n      \"input\",\n      () => {\n        this.#uiManager.updateParams(colorType, input.value);\n      },\n      { signal: this.#uiManager._signal }\n    );\n    return input;\n  }\n\n  update(value) {\n    if (!this.#input) {\n      return;\n    }\n    this.#input.value = value;\n  }\n\n  destroy() {\n    this.#input?.remove();\n    this.#input = null;\n  }\n\n  hideDropdown() {}\n}\n\nexport { BasicColorPicker, ColorPicker };\n", "/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * PLEASE NOTE: This file is currently imported in both the `../display/` and\n *              `../scripting_api/` folders, hence be EXTREMELY careful about\n *              introducing any dependencies here since that can lead to an\n *              unexpected/unnecessary size increase of the *built* files.\n */\n\nfunction makeColorComp(n) {\n  return Math.floor(Math.max(0, Math.min(1, n)) * 255)\n    .toString(16)\n    .padStart(2, \"0\");\n}\n\nfunction scaleAndClamp(x) {\n  return Math.max(0, Math.min(255, 255 * x));\n}\n\n// PDF specifications section 10.3\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_rgb([g]) {\n    g = scaleAndClamp(g);\n    return [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_rgb(color) {\n    return color.map(scaleAndClamp);\n  }\n\n  static RGB_HTML(color) {\n    return `#${color.map(makeColorComp).join(\"\")}`;\n  }\n\n  static T_HTML() {\n    return \"#00000000\";\n  }\n\n  static T_rgb() {\n    return [null];\n  }\n\n  static CMYK_RGB([c, y, m, k]) {\n    return [\n      \"RGB\",\n      1 - Math.min(1, c + k),\n      1 - Math.min(1, m + k),\n      1 - Math.min(1, y + k),\n    ];\n  }\n\n  static CMYK_rgb([c, y, m, k]) {\n    return [\n      scaleAndClamp(1 - Math.min(1, c + k)),\n      scaleAndClamp(1 - Math.min(1, m + k)),\n      scaleAndClamp(1 - Math.min(1, y + k)),\n    ];\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\nconst DateFormats = [\n  \"m/d\",\n  \"m/d/yy\",\n  \"mm/dd/yy\",\n  \"mm/yy\",\n  \"d-mmm\",\n  \"d-mmm-yy\",\n  \"dd-mmm-yy\",\n  \"yy-mm-dd\",\n  \"mmm-yy\",\n  \"mmmm-yy\",\n  \"mmm d, yyyy\",\n  \"mmmm d, yyyy\",\n  \"m/d/yy h:MM tt\",\n  \"m/d/yy HH:MM\",\n];\nconst TimeFormats = [\"HH:MM\", \"h:MM tt\", \"HH:MM:ss\", \"h:MM:ss tt\"];\n\nexport { ColorConverters, DateFormats, TimeFormats };\n", "/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SVG_NS } from \"./display_utils.js\";\nimport { unreachable } from \"../shared/util.js\";\n\nclass BaseSVGFactory {\n  constructor() {\n    if (\n      (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) &&\n      this.constructor === BaseSVGFactory\n    ) {\n      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    const svg = this._createSVG(\"svg:svg\");\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\n    return svg;\n  }\n\n  createElement(type) {\n    if (typeof type !== \"string\") {\n      throw new Error(\"Invalid SVG element type\");\n    }\n    return this._createSVG(type);\n  }\n\n  /**\n   * @ignore\n   */\n  _createSVG(type) {\n    unreachable(\"Abstract method `_createSVG` called.\");\n  }\n}\n\nclass DOMSVGFactory extends BaseSVGFactory {\n  /**\n   * @ignore\n   */\n  _createSVG(type) {\n    return document.createElementNS(SVG_NS, type);\n  }\n}\n\nexport { BaseSVGFactory, DOMSVGFactory };\n", "/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../web/text_accessibility.js\").TextAccessibilityManager} TextAccessibilityManager */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../web/interfaces\").IDownloadManager} IDownloadManager */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/editor/tools.js\").AnnotationEditorUIManager} AnnotationEditorUIManager */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../web/struct_tree_layer_builder.js\").StructTreeLayerBuilder} StructTreeLayerBuilder */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../web/comment_manager.js\").CommentManager} CommentManager */\n\nimport {\n  AnnotationBorderStyleType,\n  AnnotationEditorPrefix,\n  AnnotationEditorType,\n  AnnotationPrefix,\n  AnnotationType,\n  FeatureTest,\n  LINE_FACTOR,\n  shadow,\n  unreachable,\n  Util,\n  warn,\n} from \"../shared/util.js\";\nimport {\n  PDFDateString,\n  renderRichText,\n  setLayerDimensions,\n} from \"./display_utils.js\";\nimport { AnnotationStorage } from \"./annotation_storage.js\";\nimport { ColorConverters } from \"../shared/scripting_utils.js\";\nimport { DOMSVGFactory } from \"./svg_factory.js\";\n\nconst DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\nconst TIMEZONE_OFFSET = new Date().getTimezoneOffset() * 60 * 1000;\n\n/**\n * @typedef {Object} AnnotationElementParameters\n * @property {Object} data\n * @property {HTMLDivElement} layer\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} [downloadManager]\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n *   for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {Object} svgFactory\n * @property {boolean} [enableScripting]\n * @property {boolean} [hasJSActions]\n * @property {Object} [fieldObjects]\n */\n\nclass AnnotationElementFactory {\n  /**\n   * @param {AnnotationElementParameters} parameters\n   * @returns {AnnotationElement}\n   */\n  static create(parameters) {\n    const subtype = parameters.data.annotationType;\n\n    switch (subtype) {\n      case AnnotationType.LINK:\n        return new LinkAnnotationElement(parameters);\n\n      case AnnotationType.TEXT:\n        return new TextAnnotationElement(parameters);\n\n      case AnnotationType.WIDGET:\n        const fieldType = parameters.data.fieldType;\n\n        switch (fieldType) {\n          case \"Tx\":\n            return new TextWidgetAnnotationElement(parameters);\n          case \"Btn\":\n            if (parameters.data.radioButton) {\n              return new RadioButtonWidgetAnnotationElement(parameters);\n            } else if (parameters.data.checkBox) {\n              return new CheckboxWidgetAnnotationElement(parameters);\n            }\n            return new PushButtonWidgetAnnotationElement(parameters);\n          case \"Ch\":\n            return new ChoiceWidgetAnnotationElement(parameters);\n          case \"Sig\":\n            return new SignatureWidgetAnnotationElement(parameters);\n        }\n        return new WidgetAnnotationElement(parameters);\n\n      case AnnotationType.POPUP:\n        return new PopupAnnotationElement(parameters);\n\n      case AnnotationType.FREETEXT:\n        return new FreeTextAnnotationElement(parameters);\n\n      case AnnotationType.LINE:\n        return new LineAnnotationElement(parameters);\n\n      case AnnotationType.SQUARE:\n        return new SquareAnnotationElement(parameters);\n\n      case AnnotationType.CIRCLE:\n        return new CircleAnnotationElement(parameters);\n\n      case AnnotationType.POLYLINE:\n        return new PolylineAnnotationElement(parameters);\n\n      case AnnotationType.CARET:\n        return new CaretAnnotationElement(parameters);\n\n      case AnnotationType.INK:\n        return new InkAnnotationElement(parameters);\n\n      case AnnotationType.POLYGON:\n        return new PolygonAnnotationElement(parameters);\n\n      case AnnotationType.HIGHLIGHT:\n        return new HighlightAnnotationElement(parameters);\n\n      case AnnotationType.UNDERLINE:\n        return new UnderlineAnnotationElement(parameters);\n\n      case AnnotationType.SQUIGGLY:\n        return new SquigglyAnnotationElement(parameters);\n\n      case AnnotationType.STRIKEOUT:\n        return new StrikeOutAnnotationElement(parameters);\n\n      case AnnotationType.STAMP:\n        return new StampAnnotationElement(parameters);\n\n      case AnnotationType.FILEATTACHMENT:\n        return new FileAttachmentAnnotationElement(parameters);\n\n      default:\n        return new AnnotationElement(parameters);\n    }\n  }\n}\n\nclass AnnotationElement {\n  #updates = null;\n\n  #hasBorder = false;\n\n  #popupElement = null;\n\n  constructor(\n    parameters,\n    {\n      isRenderable = false,\n      ignoreBorder = false,\n      createQuadrilaterals = false,\n    } = {}\n  ) {\n    this.isRenderable = isRenderable;\n    this.data = parameters.data;\n    this.layer = parameters.layer;\n    this.linkService = parameters.linkService;\n    this.downloadManager = parameters.downloadManager;\n    this.imageResourcesPath = parameters.imageResourcesPath;\n    this.renderForms = parameters.renderForms;\n    this.svgFactory = parameters.svgFactory;\n    this.annotationStorage = parameters.annotationStorage;\n    this.enableComment = parameters.enableComment;\n    this.enableScripting = parameters.enableScripting;\n    this.hasJSActions = parameters.hasJSActions;\n    this._fieldObjects = parameters.fieldObjects;\n    this.parent = parameters.parent;\n\n    if (isRenderable) {\n      this.container = this._createContainer(ignoreBorder);\n    }\n    if (createQuadrilaterals) {\n      this._createQuadrilaterals();\n    }\n  }\n\n  static _hasPopupData({ contentsObj, richText }) {\n    return !!(contentsObj?.str || richText?.str);\n  }\n\n  get _isEditable() {\n    return this.data.isEditable;\n  }\n\n  get hasPopupData() {\n    return (\n      AnnotationElement._hasPopupData(this.data) ||\n      (this.enableComment && !!this.commentText)\n    );\n  }\n\n  get commentData() {\n    const { data } = this;\n    const editor = this.annotationStorage?.getEditor(data.id);\n    if (editor) {\n      return editor.getData();\n    }\n    return data;\n  }\n\n  get hasCommentButton() {\n    return this.enableComment && this.hasPopupElement;\n  }\n\n  get commentButtonPosition() {\n    const editor = this.annotationStorage?.getEditor(this.data.id);\n    if (editor) {\n      return editor.commentButtonPositionInPage;\n    }\n    const { quadPoints, inkLists, rect } = this.data;\n    let maxX = -Infinity;\n    let maxY = -Infinity;\n    if (quadPoints?.length >= 8) {\n      for (let i = 0; i < quadPoints.length; i += 8) {\n        if (quadPoints[i + 1] > maxY) {\n          maxY = quadPoints[i + 1];\n          maxX = quadPoints[i + 2];\n        } else if (quadPoints[i + 1] === maxY) {\n          maxX = Math.max(maxX, quadPoints[i + 2]);\n        }\n      }\n      return [maxX, maxY];\n    }\n    if (inkLists?.length >= 1) {\n      for (const inkList of inkLists) {\n        for (let i = 0, ii = inkList.length; i < ii; i += 2) {\n          if (inkList[i + 1] > maxY) {\n            maxY = inkList[i + 1];\n            maxX = inkList[i];\n          } else if (inkList[i + 1] === maxY) {\n            maxX = Math.max(maxX, inkList[i]);\n          }\n        }\n      }\n      if (maxX !== Infinity) {\n        return [maxX, maxY];\n      }\n    }\n    if (rect) {\n      return [rect[2], rect[3]];\n    }\n    return null;\n  }\n\n  _normalizePoint(point) {\n    const {\n      page: { view },\n      viewport: {\n        rawDims: { pageWidth, pageHeight, pageX, pageY },\n      },\n    } = this.parent;\n    point[1] = view[3] - point[1] + view[1];\n    point[0] = (100 * (point[0] - pageX)) / pageWidth;\n    point[1] = (100 * (point[1] - pageY)) / pageHeight;\n    return point;\n  }\n\n  get commentText() {\n    const { data } = this;\n    return (\n      this.annotationStorage.getRawValue(`${AnnotationEditorPrefix}${data.id}`)\n        ?.popup?.contents ||\n      data.contentsObj?.str ||\n      \"\"\n    );\n  }\n\n  set commentText(text) {\n    const { data } = this;\n    const popup = { deleted: !text, contents: text || \"\" };\n    if (!this.annotationStorage.updateEditor(data.id, { popup })) {\n      this.annotationStorage.setValue(`${AnnotationEditorPrefix}${data.id}`, {\n        id: data.id,\n        annotationType: data.annotationType,\n        pageIndex: this.parent.page._pageIndex,\n        popup,\n        popupRef: data.popupRef,\n        modificationDate: new Date(),\n      });\n    }\n    if (!text) {\n      this.removePopup();\n    }\n  }\n\n  removePopup() {\n    (this.#popupElement?.popup || this.popup)?.remove();\n    this.#popupElement = this.popup = null;\n  }\n\n  updateEdited(params) {\n    if (!this.container) {\n      return;\n    }\n\n    if (params.rect) {\n      this.#updates ||= {\n        rect: this.data.rect.slice(0),\n      };\n    }\n\n    const { rect, popup: newPopup } = params;\n\n    if (rect) {\n      this.#setRectEdited(rect);\n    }\n\n    let popup = this.#popupElement?.popup || this.popup;\n    if (!popup && newPopup?.text) {\n      this._createPopup(newPopup);\n      popup = this.#popupElement.popup;\n    }\n    if (!popup) {\n      return;\n    }\n    popup.updateEdited(params);\n    if (newPopup?.deleted) {\n      popup.remove();\n      this.#popupElement = null;\n      this.popup = null;\n    }\n  }\n\n  resetEdited() {\n    if (!this.#updates) {\n      return;\n    }\n    this.#setRectEdited(this.#updates.rect);\n    this.#popupElement?.popup.resetEdited();\n    this.#updates = null;\n  }\n\n  #setRectEdited(rect) {\n    const {\n      container: { style },\n      data: { rect: currentRect, rotation },\n      parent: {\n        viewport: {\n          rawDims: { pageWidth, pageHeight, pageX, pageY },\n        },\n      },\n    } = this;\n    currentRect?.splice(0, 4, ...rect);\n    style.left = `${(100 * (rect[0] - pageX)) / pageWidth}%`;\n    style.top = `${(100 * (pageHeight - rect[3] + pageY)) / pageHeight}%`;\n    if (rotation === 0) {\n      style.width = `${(100 * /* width = */ (rect[2] - rect[0])) / pageWidth}%`;\n      style.height = `${(100 * /* height = */ (rect[3] - rect[1])) / pageHeight}%`;\n    } else {\n      this.setRotation(rotation);\n    }\n  }\n\n  /**\n   * Create an empty container for the annotation's HTML element.\n   *\n   * @private\n   * @param {boolean} ignoreBorder\n   * @memberof AnnotationElement\n   * @returns {HTMLElement} A section element.\n   */\n  _createContainer(ignoreBorder) {\n    const {\n      data,\n      parent: { page, viewport },\n    } = this;\n\n    const container = document.createElement(\"section\");\n    container.setAttribute(\"data-annotation-id\", data.id);\n    if (\n      !(this instanceof WidgetAnnotationElement) &&\n      !(this instanceof LinkAnnotationElement)\n    ) {\n      container.tabIndex = 0;\n    }\n    const { style } = container;\n\n    // The accessibility manager will move the annotation in the DOM in\n    // order to match the visual ordering.\n    // But if an annotation is above an other one, then we must draw it\n    // after the other one whatever the order is in the DOM, hence the\n    // use of the z-index.\n    style.zIndex = this.parent.zIndex;\n    // Keep zIndex + 1 for stuff we want to add on top of this annotation.\n    this.parent.zIndex += 2;\n\n    if (data.alternativeText) {\n      container.title = data.alternativeText;\n    }\n\n    if (data.noRotate) {\n      container.classList.add(\"norotate\");\n    }\n\n    if (!data.rect || this instanceof PopupAnnotationElement) {\n      const { rotation } = data;\n      if (!data.hasOwnCanvas && rotation !== 0) {\n        this.setRotation(rotation, container);\n      }\n      return container;\n    }\n    const { width, height } = this;\n\n    if (!ignoreBorder && data.borderStyle.width > 0) {\n      style.borderWidth = `${data.borderStyle.width}px`;\n\n      const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n      const verticalRadius = data.borderStyle.verticalCornerRadius;\n      if (horizontalRadius > 0 || verticalRadius > 0) {\n        const radius = `calc(${horizontalRadius}px * var(--total-scale-factor)) / calc(${verticalRadius}px * var(--total-scale-factor))`;\n        style.borderRadius = radius;\n      } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n        const radius = `calc(${width}px * var(--total-scale-factor)) / calc(${height}px * var(--total-scale-factor))`;\n        style.borderRadius = radius;\n      }\n\n      switch (data.borderStyle.style) {\n        case AnnotationBorderStyleType.SOLID:\n          style.borderStyle = \"solid\";\n          break;\n\n        case AnnotationBorderStyleType.DASHED:\n          style.borderStyle = \"dashed\";\n          break;\n\n        case AnnotationBorderStyleType.BEVELED:\n          warn(\"Unimplemented border style: beveled\");\n          break;\n\n        case AnnotationBorderStyleType.INSET:\n          warn(\"Unimplemented border style: inset\");\n          break;\n\n        case AnnotationBorderStyleType.UNDERLINE:\n          style.borderBottomStyle = \"solid\";\n          break;\n\n        default:\n          break;\n      }\n\n      const borderColor = data.borderColor || null;\n      if (borderColor) {\n        this.#hasBorder = true;\n        style.borderColor = Util.makeHexColor(\n          borderColor[0] | 0,\n          borderColor[1] | 0,\n          borderColor[2] | 0\n        );\n      } else {\n        // Transparent (invisible) border, so do not draw it at all.\n        style.borderWidth = 0;\n      }\n    }\n\n    // Do *not* modify `data.rect`, since that will corrupt the annotation\n    // position on subsequent calls to `_createContainer` (see issue 6804).\n    const rect = Util.normalizeRect([\n      data.rect[0],\n      page.view[3] - data.rect[1] + page.view[1],\n      data.rect[2],\n      page.view[3] - data.rect[3] + page.view[1],\n    ]);\n    const { pageWidth, pageHeight, pageX, pageY } = viewport.rawDims;\n\n    style.left = `${(100 * (rect[0] - pageX)) / pageWidth}%`;\n    style.top = `${(100 * (rect[1] - pageY)) / pageHeight}%`;\n\n    const { rotation } = data;\n    if (data.hasOwnCanvas || rotation === 0) {\n      style.width = `${(100 * width) / pageWidth}%`;\n      style.height = `${(100 * height) / pageHeight}%`;\n    } else {\n      this.setRotation(rotation, container);\n    }\n\n    return container;\n  }\n\n  setRotation(angle, container = this.container) {\n    if (!this.data.rect) {\n      return;\n    }\n    const { pageWidth, pageHeight } = this.parent.viewport.rawDims;\n    let { width, height } = this;\n\n    if (angle % 180 !== 0) {\n      [width, height] = [height, width];\n    }\n    container.style.width = `${(100 * width) / pageWidth}%`;\n    container.style.height = `${(100 * height) / pageHeight}%`;\n\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      const colorType = color[0];\n      const colorArray = color.slice(1);\n      event.target.style[styleName] =\n        ColorConverters[`${colorType}_HTML`](colorArray);\n      this.annotationStorage.setValue(this.data.id, {\n        [styleName]: ColorConverters[`${colorType}_rgb`](colorArray),\n      });\n    };\n\n    return shadow(this, \"_commonActions\", {\n      display: event => {\n        const { display } = event.detail;\n        // See scripting/constants.js for the values of `Display`.\n        // 0 = visible, 1 = hidden, 2 = noPrint and 3 = noView.\n        const hidden = display % 2 === 1;\n        this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n        this.annotationStorage.setValue(this.data.id, {\n          noView: hidden,\n          noPrint: display === 1 || display === 2,\n        });\n      },\n      print: event => {\n        this.annotationStorage.setValue(this.data.id, {\n          noPrint: !event.detail.print,\n        });\n      },\n      hidden: event => {\n        const { hidden } = event.detail;\n        this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n        this.annotationStorage.setValue(this.data.id, {\n          noPrint: hidden,\n          noView: hidden,\n        });\n      },\n      focus: event => {\n        setTimeout(() => event.target.focus({ preventScroll: false }), 0);\n      },\n      userName: event => {\n        // tooltip\n        event.target.title = event.detail.userName;\n      },\n      readonly: event => {\n        event.target.disabled = event.detail.readonly;\n      },\n      required: event => {\n        this._setRequired(event.target, event.detail.required);\n      },\n      bgColor: event => {\n        setColor(\"bgColor\", \"backgroundColor\", event);\n      },\n      fillColor: event => {\n        setColor(\"fillColor\", \"backgroundColor\", event);\n      },\n      fgColor: event => {\n        setColor(\"fgColor\", \"color\", event);\n      },\n      textColor: event => {\n        setColor(\"textColor\", \"color\", event);\n      },\n      borderColor: event => {\n        setColor(\"borderColor\", \"borderColor\", event);\n      },\n      strokeColor: event => {\n        setColor(\"strokeColor\", \"borderColor\", event);\n      },\n      rotation: event => {\n        const angle = event.detail.rotation;\n        this.setRotation(angle);\n        this.annotationStorage.setValue(this.data.id, {\n          rotation: angle,\n        });\n      },\n    });\n  }\n\n  _dispatchEventFromSandbox(actions, jsEvent) {\n    const commonActions = this._commonActions;\n    for (const name of Object.keys(jsEvent.detail)) {\n      const action = actions[name] || commonActions[name];\n      action?.(jsEvent);\n    }\n  }\n\n  _setDefaultPropertiesFromJS(element) {\n    if (!this.enableScripting) {\n      return;\n    }\n\n    // Some properties may have been updated thanks to JS.\n    const storedData = this.annotationStorage.getRawValue(this.data.id);\n    if (!storedData) {\n      return;\n    }\n\n    const commonActions = this._commonActions;\n    for (const [actionName, detail] of Object.entries(storedData)) {\n      const action = commonActions[actionName];\n      if (action) {\n        const eventProxy = {\n          detail: {\n            [actionName]: detail,\n          },\n          target: element,\n        };\n        action(eventProxy);\n        // The action has been consumed: no need to keep it.\n        delete storedData[actionName];\n      }\n    }\n  }\n\n  /**\n   * Create quadrilaterals from the annotation's quadpoints.\n   *\n   * @private\n   * @memberof AnnotationElement\n   */\n  _createQuadrilaterals() {\n    if (!this.container) {\n      return;\n    }\n    const { quadPoints } = this.data;\n    if (!quadPoints) {\n      return;\n    }\n\n    const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect.map(x =>\n      Math.fround(x)\n    );\n\n    if (quadPoints.length === 8) {\n      const [trX, trY, blX, blY] = quadPoints.subarray(2, 6);\n      if (\n        rectTrX === trX &&\n        rectTrY === trY &&\n        rectBlX === blX &&\n        rectBlY === blY\n      ) {\n        // The quadpoints cover the whole annotation rectangle, so no need to\n        // create a quadrilateral.\n        return;\n      }\n    }\n\n    const { style } = this.container;\n    let svgBuffer;\n    if (this.#hasBorder) {\n      const { borderColor, borderWidth } = style;\n      style.borderWidth = 0;\n      svgBuffer = [\n        \"url('data:image/svg+xml;utf8,\",\n        `<svg xmlns=\"http://www.w3.org/2000/svg\"`,\n        ` preserveAspectRatio=\"none\" viewBox=\"0 0 1 1\">`,\n        `<g fill=\"transparent\" stroke=\"${borderColor}\" stroke-width=\"${borderWidth}\">`,\n      ];\n      this.container.classList.add(\"hasBorder\");\n    }\n\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n      this.container.classList.add(\"hasClipPath\");\n    }\n\n    const width = rectTrX - rectBlX;\n    const height = rectTrY - rectBlY;\n\n    const { svgFactory } = this;\n    const svg = svgFactory.createElement(\"svg\");\n    svg.classList.add(\"quadrilateralsContainer\");\n    svg.setAttribute(\"width\", 0);\n    svg.setAttribute(\"height\", 0);\n    svg.role = \"none\";\n    const defs = svgFactory.createElement(\"defs\");\n    svg.append(defs);\n    const clipPath = svgFactory.createElement(\"clipPath\");\n    const id = `clippath_${this.data.id}`;\n    clipPath.setAttribute(\"id\", id);\n    clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n    defs.append(clipPath);\n\n    for (let i = 2, ii = quadPoints.length; i < ii; i += 8) {\n      const trX = quadPoints[i];\n      const trY = quadPoints[i + 1];\n      const blX = quadPoints[i + 2];\n      const blY = quadPoints[i + 3];\n      const rect = svgFactory.createElement(\"rect\");\n      const x = (blX - rectBlX) / width;\n      const y = (rectTrY - trY) / height;\n      const rectWidth = (trX - blX) / width;\n      const rectHeight = (trY - blY) / height;\n      rect.setAttribute(\"x\", x);\n      rect.setAttribute(\"y\", y);\n      rect.setAttribute(\"width\", rectWidth);\n      rect.setAttribute(\"height\", rectHeight);\n      clipPath.append(rect);\n      svgBuffer?.push(\n        `<rect vector-effect=\"non-scaling-stroke\" x=\"${x}\" y=\"${y}\" width=\"${rectWidth}\" height=\"${rectHeight}\"/>`\n      );\n    }\n\n    if (this.#hasBorder) {\n      svgBuffer.push(`</g></svg>')`);\n      style.backgroundImage = svgBuffer.join(\"\");\n    }\n\n    this.container.append(svg);\n    this.container.style.clipPath = `url(#${id})`;\n  }\n\n  /**\n   * Create a popup for the annotation's HTML element. This is used for\n   * annotations that do not have a Popup entry in the dictionary, but\n   * are of a type that works with popups (such as Highlight annotations).\n   *\n   * @param {Object} [popupData] - The data for the popup, if any.\n   *\n   * @private\n   * @memberof AnnotationElement\n   */\n  _createPopup(popupData = null) {\n    const { data } = this;\n\n    let contentsObj, modificationDate;\n    if (popupData) {\n      contentsObj = {\n        str: popupData.text,\n      };\n      modificationDate = popupData.date;\n    } else {\n      contentsObj = data.contentsObj;\n      modificationDate = data.modificationDate;\n    }\n    const popup = (this.#popupElement = new PopupAnnotationElement({\n      data: {\n        color: data.color,\n        titleObj: data.titleObj,\n        modificationDate,\n        contentsObj,\n        richText: data.richText,\n        parentRect: data.rect,\n        borderStyle: 0,\n        id: `popup_${data.id}`,\n        rotation: data.rotation,\n        noRotate: true,\n      },\n      linkService: this.linkService,\n      parent: this.parent,\n      elements: [this],\n    }));\n    if (!this.parent._commentManager) {\n      this.parent.div.append(popup.render());\n    }\n  }\n\n  get hasPopupElement() {\n    return !!(this.#popupElement || this.popup || this.data.popupRef);\n  }\n\n  get extraPopupElement() {\n    return this.#popupElement;\n  }\n\n  /**\n   * Render the annotation's HTML element(s).\n   *\n   * @public\n   * @memberof AnnotationElement\n   */\n  render() {\n    unreachable(\"Abstract method `AnnotationElement.render` called\");\n  }\n\n  /**\n   * @private\n   * @returns {Array}\n   */\n  _getElementsByName(name, skipId = null) {\n    const fields = [];\n\n    if (this._fieldObjects) {\n      const fieldObj = this._fieldObjects[name];\n      if (fieldObj) {\n        for (const { page, id, exportValues } of fieldObj) {\n          if (page === -1) {\n            continue;\n          }\n          if (id === skipId) {\n            continue;\n          }\n          const exportValue =\n            typeof exportValues === \"string\" ? exportValues : null;\n\n          const domElement = document.querySelector(\n            `[data-element-id=\"${id}\"]`\n          );\n          if (domElement && !GetElementsByNameSet.has(domElement)) {\n            warn(`_getElementsByName - element not allowed: ${id}`);\n            continue;\n          }\n          fields.push({ id, exportValue, domElement });\n        }\n      }\n      return fields;\n    }\n    // Fallback to a regular DOM lookup, to ensure that the standalone\n    // viewer components won't break.\n    for (const domElement of document.getElementsByName(name)) {\n      const { exportValue } = domElement;\n      const id = domElement.getAttribute(\"data-element-id\");\n      if (id === skipId) {\n        continue;\n      }\n      if (!GetElementsByNameSet.has(domElement)) {\n        continue;\n      }\n      fields.push({ id, exportValue, domElement });\n    }\n    return fields;\n  }\n\n  show() {\n    if (this.container) {\n      this.container.hidden = false;\n    }\n    this.popup?.maybeShow();\n  }\n\n  hide() {\n    if (this.container) {\n      this.container.hidden = true;\n    }\n    this.popup?.forceHide();\n  }\n\n  /**\n   * Get the HTML element(s) which can trigger a popup when clicked or hovered.\n   *\n   * @public\n   * @memberof AnnotationElement\n   * @returns {Array<HTMLElement>|HTMLElement} An array of elements or an\n   *          element.\n   */\n  getElementsToTriggerPopup() {\n    return this.container;\n  }\n\n  addHighlightArea() {\n    const triggers = this.getElementsToTriggerPopup();\n    if (Array.isArray(triggers)) {\n      for (const element of triggers) {\n        element.classList.add(\"highlightArea\");\n      }\n    } else {\n      triggers.classList.add(\"highlightArea\");\n    }\n  }\n\n  _editOnDoubleClick() {\n    if (!this._isEditable) {\n      return;\n    }\n    const {\n      annotationEditorType: mode,\n      data: { id: editId },\n    } = this;\n    this.container.addEventListener(\"dblclick\", () => {\n      this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n        source: this,\n        mode,\n        editId,\n        mustEnterInEditMode: true,\n      });\n    });\n  }\n\n  get width() {\n    return this.data.rect[2] - this.data.rect[0];\n  }\n\n  get height() {\n    return this.data.rect[3] - this.data.rect[1];\n  }\n}\n\nclass EditorAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n    this.editor = parameters.editor;\n  }\n\n  render() {\n    this.container.className = \"editorAnnotation\";\n    return this.container;\n  }\n\n  createOrUpdatePopup() {\n    const { editor } = this;\n    if (!editor.hasComment) {\n      return;\n    }\n    this._createPopup(editor.comment);\n    this.extraPopupElement.popup.renderCommentButton();\n  }\n\n  get hasCommentButton() {\n    return this.enableComment && this.editor.hasComment;\n  }\n\n  get commentButtonPosition() {\n    return this.editor.commentButtonPositionInPage;\n  }\n\n  get commentText() {\n    return this.editor.comment.text;\n  }\n\n  set commentText(text) {\n    this.editor.comment = text;\n    if (!text) {\n      this.removePopup();\n    }\n  }\n\n  get commentData() {\n    return this.editor.getData();\n  }\n\n  remove() {\n    this.container.remove();\n    this.container = null;\n    this.removePopup();\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 { data, linkService } = 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, data.overlaidText);\n      isBound = true;\n    } else if (data.attachment) {\n      this.#bindAttachment(\n        link,\n        data.attachment,\n        data.overlaidText,\n        data.attachmentDest\n      );\n      isBound = true;\n    } else if (data.setOCGState) {\n      this.#bindSetOCGState(link, data.setOCGState, data.overlaidText);\n      isBound = true;\n    } else if (data.dest) {\n      this._bindLink(link, data.dest, data.overlaidText);\n      isBound = true;\n    } else {\n      if (\n        data.actions &&\n        (data.actions.Action ||\n          data.actions[\"Mouse Up\"] ||\n          data.actions[\"Mouse Down\"]) &&\n        this.enableScripting &&\n        this.hasJSActions\n      ) {\n        this._bindJSAction(link, data);\n        isBound = true;\n      }\n\n      if (data.resetForm) {\n        this._bindResetFormAction(link, data.resetForm);\n        isBound = true;\n      } else if (this.isTooltipOnly && !isBound) {\n        this._bindLink(link, \"\");\n        isBound = true;\n      }\n    }\n\n    this.container.classList.add(\"linkAnnotation\");\n    if (isBound) {\n      this.container.append(link);\n    }\n\n    return this.container;\n  }\n\n  #setInternalLink() {\n    this.container.setAttribute(\"data-internal-link\", \"\");\n  }\n\n  /**\n   * Bind internal links to the link element.\n   *\n   * @private\n   * @param {Object} link\n   * @param {Object} destination\n   * @param {string} [overlaidText]\n   * @memberof LinkAnnotationElement\n   */\n  _bindLink(link, destination, overlaidText = \"\") {\n    link.href = this.linkService.getDestinationHash(destination);\n    link.onclick = () => {\n      if (destination) {\n        this.linkService.goToDestination(destination);\n      }\n      return false;\n    };\n    if (destination || destination === /* isTooltipOnly = */ \"\") {\n      this.#setInternalLink();\n    }\n    if (overlaidText) {\n      link.title = overlaidText;\n    }\n  }\n\n  /**\n   * Bind named actions to the link element.\n   *\n   * @private\n   * @param {Object} link\n   * @param {Object} action\n   * @param {string} [overlaidText]\n   * @memberof LinkAnnotationElement\n   */\n  _bindNamedAction(link, action, overlaidText = \"\") {\n    link.href = this.linkService.getAnchorUrl(\"\");\n    link.onclick = () => {\n      this.linkService.executeNamedAction(action);\n      return false;\n    };\n    if (overlaidText) {\n      link.title = overlaidText;\n    }\n    this.#setInternalLink();\n  }\n\n  /**\n   * Bind attachments to the link element.\n   * @param {Object} link\n   * @param {Object} attachment\n   * @param {string} [overlaidText]\n   * @param {string} [dest]\n   */\n  #bindAttachment(link, attachment, overlaidText = \"\", dest = null) {\n    link.href = this.linkService.getAnchorUrl(\"\");\n    if (attachment.description) {\n      link.title = attachment.description;\n    } else if (overlaidText) {\n      link.title = overlaidText;\n    }\n    link.onclick = () => {\n      this.downloadManager?.openOrDownloadData(\n        attachment.content,\n        attachment.filename,\n        dest\n      );\n      return false;\n    };\n    this.#setInternalLink();\n  }\n\n  /**\n   * Bind SetOCGState actions to the link element.\n   * @param {Object} link\n   * @param {Object} action\n   * @param {string} [overlaidText]\n   */\n  #bindSetOCGState(link, action, overlaidText = \"\") {\n    link.href = this.linkService.getAnchorUrl(\"\");\n    link.onclick = () => {\n      this.linkService.executeSetOCGState(action);\n      return false;\n    };\n    if (overlaidText) {\n      link.title = overlaidText;\n    }\n    this.#setInternalLink();\n  }\n\n  /**\n   * Bind JS actions to the link element.\n   *\n   * @private\n   * @param {Object} link\n   * @param {Object} data\n   * @memberof LinkAnnotationElement\n   */\n  _bindJSAction(link, data) {\n    link.href = this.linkService.getAnchorUrl(\"\");\n    const map = new Map([\n      [\"Action\", \"onclick\"],\n      [\"Mouse Up\", \"onmouseup\"],\n      [\"Mouse Down\", \"onmousedown\"],\n    ]);\n    for (const name of Object.keys(data.actions)) {\n      const jsName = map.get(name);\n      if (!jsName) {\n        continue;\n      }\n      link[jsName] = () => {\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id: data.id,\n            name,\n          },\n        });\n        return false;\n      };\n    }\n    if (data.overlaidText) {\n      link.title = data.overlaidText;\n    }\n\n    if (!link.onclick) {\n      link.onclick = () => false;\n    }\n    this.#setInternalLink();\n  }\n\n  _bindResetFormAction(link, resetForm) {\n    const otherClickAction = link.onclick;\n    if (!otherClickAction) {\n      link.href = this.linkService.getAnchorUrl(\"\");\n    }\n    this.#setInternalLink();\n\n    if (!this._fieldObjects) {\n      warn(\n        `_bindResetFormAction - \"resetForm\" action not supported, ` +\n          \"ensure that the `fieldObjects` parameter is provided.\"\n      );\n      if (!otherClickAction) {\n        link.onclick = () => false;\n      }\n      return;\n    }\n\n    link.onclick = () => {\n      otherClickAction?.();\n\n      const {\n        fields: resetFormFields,\n        refs: resetFormRefs,\n        include,\n      } = resetForm;\n\n      const allFields = [];\n      if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n        const fieldIds = new Set(resetFormRefs);\n        for (const fieldName of resetFormFields) {\n          const fields = this._fieldObjects[fieldName] || [];\n          for (const { id } of fields) {\n            fieldIds.add(id);\n          }\n        }\n        for (const fields of Object.values(this._fieldObjects)) {\n          for (const field of fields) {\n            if (fieldIds.has(field.id) === include) {\n              allFields.push(field);\n            }\n          }\n        }\n      } else {\n        for (const fields of Object.values(this._fieldObjects)) {\n          allFields.push(...fields);\n        }\n      }\n\n      const storage = this.annotationStorage;\n      const allIds = [];\n      for (const field of allFields) {\n        const { id } = field;\n        allIds.push(id);\n        switch (field.type) {\n          case \"text\": {\n            const value = field.defaultValue || \"\";\n            storage.setValue(id, { value });\n            break;\n          }\n          case \"checkbox\":\n          case \"radiobutton\": {\n            const value = field.defaultValue === field.exportValues;\n            storage.setValue(id, { value });\n            break;\n          }\n          case \"combobox\":\n          case \"listbox\": {\n            const value = field.defaultValue || \"\";\n            storage.setValue(id, { value });\n            break;\n          }\n          default:\n            continue;\n        }\n\n        const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n        if (!domElement) {\n          continue;\n        } else if (!GetElementsByNameSet.has(domElement)) {\n          warn(`_bindResetFormAction - element not allowed: ${id}`);\n          continue;\n        }\n        domElement.dispatchEvent(new Event(\"resetform\"));\n      }\n\n      if (this.enableScripting) {\n        // Update the values in the sandbox.\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\nclass TextAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: true });\n  }\n\n  render() {\n    this.container.classList.add(\"textAnnotation\");\n\n    const image = document.createElement(\"img\");\n    image.src =\n      this.imageResourcesPath +\n      \"annotation-\" +\n      this.data.name.toLowerCase() +\n      \".svg\";\n    image.setAttribute(\"data-l10n-id\", \"pdfjs-text-annotation-type\");\n    image.setAttribute(\n      \"data-l10n-args\",\n      JSON.stringify({ type: this.data.name })\n    );\n\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    this.container.append(image);\n    return this.container;\n  }\n}\n\nclass WidgetAnnotationElement extends AnnotationElement {\n  render() {\n    // Show only the container for unsupported field types.\n    return this.container;\n  }\n\n  showElementAndHideCanvas(element) {\n    if (this.data.hasOwnCanvas) {\n      if (element.previousSibling?.nodeName === \"CANVAS\") {\n        element.previousSibling.hidden = true;\n      }\n      element.hidden = false;\n    }\n  }\n\n  _getKeyModifier(event) {\n    return FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\n  }\n\n  _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n    if (baseName.includes(\"mouse\")) {\n      // Mouse events\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      // Non-mouse events\n      element.addEventListener(baseName, event => {\n        if (baseName === \"blur\") {\n          if (!elementData.focused || !event.relatedTarget) {\n            return;\n          }\n          elementData.focused = false;\n        } else if (baseName === \"focus\") {\n          if (elementData.focused) {\n            return;\n          }\n          elementData.focused = true;\n        }\n\n        if (!valueGetter) {\n          return;\n        }\n\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id: this.data.id,\n            name: eventName,\n            value: valueGetter(event),\n          },\n        });\n      });\n    }\n  }\n\n  _setEventListeners(element, elementData, names, getter) {\n    for (const [baseName, eventName] of names) {\n      if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n        if (eventName === \"Focus\" || eventName === \"Blur\") {\n          elementData ||= { focused: false };\n        }\n        this._setEventListener(\n          element,\n          elementData,\n          baseName,\n          eventName,\n          getter\n        );\n        if (eventName === \"Focus\" && !this.data.actions?.Blur) {\n          // Ensure that elementData will have the correct value.\n          this._setEventListener(element, elementData, \"blur\", \"Blur\", null);\n        } else if (eventName === \"Blur\" && !this.data.actions?.Focus) {\n          this._setEventListener(element, elementData, \"focus\", \"Focus\", null);\n        }\n      }\n    }\n  }\n\n  _setBackgroundColor(element) {\n    const color = this.data.backgroundColor || null;\n    element.style.backgroundColor =\n      color === null\n        ? \"transparent\"\n        : Util.makeHexColor(color[0], color[1], color[2]);\n  }\n\n  /**\n   * Apply text styles to the text in the element.\n   *\n   * @private\n   * @param {HTMLDivElement} element\n   * @memberof TextWidgetAnnotationElement\n   */\n  _setTextStyle(element) {\n    const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n    const { fontColor } = this.data.defaultAppearanceData;\n    const fontSize =\n      this.data.defaultAppearanceData.fontSize || DEFAULT_FONT_SIZE;\n\n    const style = element.style;\n\n    // TODO: If the font-size is zero, calculate it based on the height and\n    //       width of the element.\n    // Not setting `style.fontSize` will use the default font-size for now.\n\n    // We don't use the font, as specified in the PDF document, for the <input>\n    // element. Hence using the original `fontSize` could look bad, which is why\n    // it's instead based on the field height.\n    // If the height is \"big\" then it could lead to a too big font size\n    // so in this case use the one we've in the pdf (hence the min).\n    let computedFontSize;\n    const BORDER_SIZE = 2;\n    const roundToOneDecimal = x => Math.round(10 * x) / 10;\n    if (this.data.multiLine) {\n      const height = Math.abs(\n        this.data.rect[3] - this.data.rect[1] - BORDER_SIZE\n      );\n      const numberOfLines = Math.round(height / (LINE_FACTOR * fontSize)) || 1;\n      const lineHeight = height / numberOfLines;\n      computedFontSize = Math.min(\n        fontSize,\n        roundToOneDecimal(lineHeight / LINE_FACTOR)\n      );\n    } else {\n      const height = Math.abs(\n        this.data.rect[3] - this.data.rect[1] - BORDER_SIZE\n      );\n      computedFontSize = Math.min(\n        fontSize,\n        roundToOneDecimal(height / LINE_FACTOR)\n      );\n    }\n    style.fontSize = `calc(${computedFontSize}px * var(--total-scale-factor))`;\n\n    style.color = 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    element.setAttribute(\"aria-required\", isRequired);\n  }\n}\n\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    const isRenderable =\n      parameters.renderForms ||\n      parameters.data.hasOwnCanvas ||\n      (!parameters.data.hasAppearance && !!parameters.data.fieldValue);\n    super(parameters, { isRenderable });\n  }\n\n  setPropertyOnSiblings(base, key, value, keyInStorage) {\n    const storage = this.annotationStorage;\n    for (const element of this._getElementsByName(\n      base.name,\n      /* skipId = */ base.id\n    )) {\n      if (element.domElement) {\n        element.domElement[key] = value;\n      }\n      storage.setValue(element.id, { [keyInStorage]: value });\n    }\n  }\n\n  render() {\n    const storage = this.annotationStorage;\n    const id = this.data.id;\n\n    this.container.classList.add(\"textWidgetAnnotation\");\n\n    let element = null;\n    if (this.renderForms) {\n      // NOTE: We cannot set the values using `element.value` below, since it\n      //       prevents the AnnotationLayer rasterizer in `test/driver.js`\n      //       from parsing the elements correctly for the reference tests.\n      const storedData = storage.getValue(id, {\n        value: this.data.fieldValue,\n      });\n      let textContent = storedData.value || \"\";\n      const maxLen = storage.getValue(id, {\n        charLimit: this.data.maxLen,\n      }).charLimit;\n      if (maxLen && textContent.length > maxLen) {\n        textContent = textContent.slice(0, maxLen);\n      }\n\n      let fieldFormattedValues =\n        storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n      if (fieldFormattedValues && this.data.comb) {\n        fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n      }\n\n      const elementData = {\n        userValue: textContent,\n        formattedValue: fieldFormattedValues,\n        lastCommittedValue: null,\n        commitKey: 1,\n        focused: false,\n      };\n\n      if (this.data.multiLine) {\n        element = document.createElement(\"textarea\");\n        element.textContent = fieldFormattedValues ?? textContent;\n        if (this.data.doNotScroll) {\n          element.style.overflowY = \"hidden\";\n        }\n      } else {\n        element = document.createElement(\"input\");\n        element.type = this.data.password ? \"password\" : \"text\";\n        element.setAttribute(\"value\", fieldFormattedValues ?? textContent);\n        if (this.data.doNotScroll) {\n          element.style.overflowX = \"hidden\";\n        }\n      }\n      if (this.data.hasOwnCanvas) {\n        element.hidden = true;\n      }\n      GetElementsByNameSet.add(element);\n      element.setAttribute(\"data-element-id\", id);\n\n      element.disabled = this.data.readOnly;\n      element.name = this.data.fieldName;\n      element.tabIndex = 0;\n      const { datetimeFormat, datetimeType, timeStep } = this.data;\n      const hasDateOrTime = !!datetimeType && this.enableScripting;\n      if (datetimeFormat) {\n        element.title = datetimeFormat;\n      }\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, { value: event.target.value });\n        this.setPropertyOnSiblings(\n          element,\n          \"value\",\n          event.target.value,\n          \"value\"\n        );\n        elementData.formattedValue = null;\n      });\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 { formattedValue } = elementData;\n        if (formattedValue !== null && formattedValue !== undefined) {\n          event.target.value = formattedValue;\n        }\n        // Reset the cursor position to the start of the field (issue 12359).\n        event.target.scrollLeft = 0;\n      };\n\n      if (this.enableScripting && this.hasJSActions) {\n        element.addEventListener(\"focus\", event => {\n          if (elementData.focused) {\n            return;\n          }\n          const { target } = event;\n          if (hasDateOrTime) {\n            target.type = datetimeType;\n            if (timeStep) {\n              target.step = timeStep;\n            }\n          }\n\n          if (elementData.userValue) {\n            const value = elementData.userValue;\n            if (hasDateOrTime) {\n              if (datetimeType === \"time\") {\n                const date = new Date(value);\n                const parts = [\n                  date.getHours(),\n                  date.getMinutes(),\n                  date.getSeconds(),\n                ];\n                target.value = parts\n                  .map(v => v.toString().padStart(2, \"0\"))\n                  .join(\":\");\n              } else {\n                target.value = new Date(value - TIMEZONE_OFFSET)\n                  .toISOString()\n                  .split(datetimeType === \"date\" ? \"T\" : \".\", 1)[0];\n              }\n            } else {\n              target.value = value;\n            }\n          }\n          elementData.lastCommittedValue = target.value;\n          elementData.commitKey = 1;\n          if (!this.data.actions?.Focus) {\n            elementData.focused = true;\n          }\n        });\n\n        element.addEventListener(\"updatefromsandbox\", jsEvent => {\n          this.showElementAndHideCanvas(jsEvent.target);\n          const actions = {\n            value(event) {\n              elementData.userValue = event.detail.value ?? \"\";\n              if (!hasDateOrTime) {\n                storage.setValue(id, {\n                  value: elementData.userValue.toString(),\n                });\n              }\n              event.target.value = elementData.userValue;\n            },\n            formattedValue(event) {\n              const { formattedValue } = event.detail;\n              elementData.formattedValue = formattedValue;\n              if (\n                formattedValue !== null &&\n                formattedValue !== undefined &&\n                event.target !== document.activeElement\n              ) {\n                // Input hasn't the focus so display formatted string\n                event.target.value = formattedValue;\n              }\n              const data = {\n                formattedValue,\n              };\n              if (hasDateOrTime) {\n                // If the field is a date or time, we store the formatted value\n                // in the `value` property, so that it can be used by the\n                // `Keystroke` action.\n                data.value = formattedValue;\n              }\n              storage.setValue(id, data);\n            },\n            selRange(event) {\n              event.target.setSelectionRange(...event.detail.selRange);\n            },\n            charLimit: event => {\n              const { charLimit } = event.detail;\n              const { target } = event;\n              if (charLimit === 0) {\n                target.removeAttribute(\"maxLength\");\n                return;\n              }\n\n              target.setAttribute(\"maxLength\", charLimit);\n              let value = elementData.userValue;\n              if (!value || value.length <= charLimit) {\n                return;\n              }\n              value = value.slice(0, charLimit);\n              target.value = elementData.userValue = value;\n              storage.setValue(id, { value });\n\n              this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n                source: this,\n                detail: {\n                  id,\n                  name: \"Keystroke\",\n                  value,\n                  willCommit: true,\n                  commitKey: 1,\n                  selStart: target.selectionStart,\n                  selEnd: target.selectionEnd,\n                },\n              });\n            },\n          };\n          this._dispatchEventFromSandbox(actions, jsEvent);\n        });\n\n        // Even if the field hasn't any actions\n        // leaving it can still trigger some actions with Calculate\n        element.addEventListener(\"keydown\", event => {\n          elementData.commitKey = 1;\n          // If the key is one of Escape, Enter then the data are committed.\n          // If we've a Tab then data will be committed on blur.\n          let commitKey = -1;\n          if (event.key === \"Escape\") {\n            commitKey = 0;\n          } else if (event.key === \"Enter\" && !this.data.multiLine) {\n            // When we've a multiline field, \"Enter\" key is a key as the other\n            // hence we don't commit the data (Acrobat behaves the same way)\n            // (see issue #15627).\n            commitKey = 2;\n          } else if (event.key === \"Tab\") {\n            elementData.commitKey = 3;\n          }\n          if (commitKey === -1) {\n            return;\n          }\n          const { value } = event.target;\n          if (elementData.lastCommittedValue === value) {\n            return;\n          }\n          elementData.lastCommittedValue = value;\n          // Save the entered value\n          elementData.userValue = value;\n          this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n            source: this,\n            detail: {\n              id,\n              name: \"Keystroke\",\n              value,\n              willCommit: true,\n              commitKey,\n              selStart: event.target.selectionStart,\n              selEnd: event.target.selectionEnd,\n            },\n          });\n        });\n        const _blurListener = blurListener;\n        blurListener = null;\n        element.addEventListener(\"blur\", event => {\n          if (!elementData.focused || !event.relatedTarget) {\n            return;\n          }\n          if (!this.data.actions?.Blur) {\n            elementData.focused = false;\n          }\n          const { target } = event;\n          let { value } = target;\n          if (hasDateOrTime) {\n            if (value && datetimeType === \"time\") {\n              const parts = value.split(\":\").map(v => parseInt(v, 10));\n              value = new Date(\n                2000,\n                0,\n                1,\n                parts[0],\n                parts[1],\n                parts[2] || 0\n              ).valueOf();\n              target.step = \"\";\n            } else {\n              // Unfortunately, when the date is \"2025-09-23\", the parser\n              // converts it to UTC time which may lead to the date being off by\n              // one day depending on the timezone. To workaround this, we\n              // append \"T00:00\" to the date so that it's parsed as local\n              // time (bug 1989874).\n              if (!value.includes(\"T\")) {\n                value = `${value}T00:00`;\n              }\n              value = new Date(value).valueOf();\n            }\n            target.type = \"text\";\n          }\n          elementData.userValue = value;\n          if (elementData.lastCommittedValue !== value) {\n            this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n              source: this,\n              detail: {\n                id,\n                name: \"Keystroke\",\n                value,\n                willCommit: true,\n                commitKey: elementData.commitKey,\n                selStart: event.target.selectionStart,\n                selEnd: event.target.selectionEnd,\n              },\n            });\n          }\n          _blurListener(event);\n        });\n\n        if (this.data.actions?.Keystroke) {\n          element.addEventListener(\"beforeinput\", event => {\n            elementData.lastCommittedValue = null;\n            const { data, target } = event;\n            const { value, selectionStart, selectionEnd } = target;\n\n            let selStart = selectionStart,\n              selEnd = selectionEnd;\n\n            switch (event.inputType) {\n              // https://rawgit.com/w3c/input-events/v1/index.html#interface-InputEvent-Attributes\n              case \"deleteWordBackward\": {\n                const match = value\n                  .substring(0, selectionStart)\n                  .match(/\\w*[^\\w]*$/);\n                if (match) {\n                  selStart -= match[0].length;\n                }\n                break;\n              }\n              case \"deleteWordForward\": {\n                const match = value\n                  .substring(selectionStart)\n                  .match(/^[^\\w]*\\w*/);\n                if (match) {\n                  selEnd += match[0].length;\n                }\n                break;\n              }\n              case \"deleteContentBackward\":\n                if (selectionStart === selectionEnd) {\n                  selStart -= 1;\n                }\n                break;\n              case \"deleteContentForward\":\n                if (selectionStart === selectionEnd) {\n                  selEnd += 1;\n                }\n                break;\n            }\n\n            // We handle the event ourselves.\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(\n          element,\n          elementData,\n          [\n            [\"focus\", \"Focus\"],\n            [\"blur\", \"Blur\"],\n            [\"mousedown\", \"Mouse Down\"],\n            [\"mouseenter\", \"Mouse Enter\"],\n            [\"mouseleave\", \"Mouse Exit\"],\n            [\"mouseup\", \"Mouse Up\"],\n          ],\n          event => event.target.value\n        );\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\n        element.classList.add(\"comb\");\n        element.style.letterSpacing = `calc(${combWidth}px * var(--total-scale-factor) - 1ch)`;\n      }\n    } else {\n      element = document.createElement(\"div\");\n      element.textContent = this.data.fieldValue;\n      element.style.verticalAlign = \"middle\";\n      element.style.display = \"table-cell\";\n\n      if (this.data.hasOwnCanvas) {\n        element.hidden = true;\n      }\n    }\n\n    this._setTextStyle(element);\n    this._setBackgroundColor(element);\n    this._setDefaultPropertiesFromJS(element);\n\n    this.container.append(element);\n    return this.container;\n  }\n}\n\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: !!parameters.data.hasOwnCanvas });\n  }\n}\n\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: parameters.renderForms });\n  }\n\n  render() {\n    const storage = this.annotationStorage;\n    const data = this.data;\n    const id = data.id;\n    let value = storage.getValue(id, {\n      value: data.exportValue === data.fieldValue,\n    }).value;\n    if (typeof value === \"string\") {\n      // The value has been changed through js and set in annotationStorage.\n      value = value !== \"Off\";\n      storage.setValue(id, { value });\n    }\n\n    this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n\n    const element = document.createElement(\"input\");\n    GetElementsByNameSet.add(element);\n    element.setAttribute(\"data-element-id\", id);\n\n    element.disabled = data.readOnly;\n    this._setRequired(element, this.data.required);\n    element.type = \"checkbox\";\n    element.name = data.fieldName;\n    if (value) {\n      element.setAttribute(\"checked\", true);\n    }\n    element.setAttribute(\"exportValue\", data.exportValue);\n    element.tabIndex = 0;\n\n    element.addEventListener(\"change\", event => {\n      const { name, checked } = event.target;\n      for (const checkbox of this._getElementsByName(name, /* skipId = */ id)) {\n        const curChecked = checked && checkbox.exportValue === data.exportValue;\n        if (checkbox.domElement) {\n          checkbox.domElement.checked = curChecked;\n        }\n        storage.setValue(checkbox.id, { value: curChecked });\n      }\n      storage.setValue(id, { 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, { value: event.target.checked });\n          },\n        };\n        this._dispatchEventFromSandbox(actions, jsEvent);\n      });\n\n      this._setEventListeners(\n        element,\n        null,\n        [\n          [\"change\", \"Validate\"],\n          [\"change\", \"Action\"],\n          [\"focus\", \"Focus\"],\n          [\"blur\", \"Blur\"],\n          [\"mousedown\", \"Mouse Down\"],\n          [\"mouseenter\", \"Mouse Enter\"],\n          [\"mouseleave\", \"Mouse Exit\"],\n          [\"mouseup\", \"Mouse Up\"],\n        ],\n        event => event.target.checked\n      );\n    }\n\n    this._setBackgroundColor(element);\n    this._setDefaultPropertiesFromJS(element);\n\n    this.container.append(element);\n    return this.container;\n  }\n}\n\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: parameters.renderForms });\n  }\n\n  render() {\n    this.container.classList.add(\"buttonWidgetAnnotation\", \"radioButton\");\n    const storage = this.annotationStorage;\n    const data = this.data;\n    const id = data.id;\n    let value = storage.getValue(id, {\n      value: data.fieldValue === data.buttonValue,\n    }).value;\n    if (typeof value === \"string\") {\n      // The value has been changed through js and set in annotationStorage.\n      value = value !== data.buttonValue;\n      storage.setValue(id, { value });\n    }\n\n    if (value) {\n      // It's possible that multiple radio buttons are checked.\n      // So if this one is checked we just reset the other ones.\n      // (see bug 1864136). Then when the other ones will be rendered they will\n      // unchecked (because of their value in the storage).\n      // Consequently, the first checked radio button will be the only checked\n      // one.\n      for (const radio of this._getElementsByName(\n        data.fieldName,\n        /* skipId = */ id\n      )) {\n        storage.setValue(radio.id, { value: false });\n      }\n    }\n\n    const element = document.createElement(\"input\");\n    GetElementsByNameSet.add(element);\n    element.setAttribute(\"data-element-id\", id);\n\n    element.disabled = data.readOnly;\n    this._setRequired(element, this.data.required);\n    element.type = \"radio\";\n    element.name = data.fieldName;\n    if (value) {\n      element.setAttribute(\"checked\", true);\n    }\n    element.tabIndex = 0;\n\n    element.addEventListener(\"change\", event => {\n      const { name, checked } = event.target;\n      for (const radio of this._getElementsByName(name, /* skipId = */ id)) {\n        storage.setValue(radio.id, { value: false });\n      }\n      storage.setValue(id, { value: checked });\n    });\n\n    element.addEventListener(\"resetform\", event => {\n      const defaultValue = data.defaultFieldValue;\n      event.target.checked =\n        defaultValue !== null &&\n        defaultValue !== undefined &&\n        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            for (const radio of this._getElementsByName(event.target.name)) {\n              const curChecked = checked && radio.id === id;\n              if (radio.domElement) {\n                radio.domElement.checked = curChecked;\n              }\n              storage.setValue(radio.id, { value: curChecked });\n            }\n          },\n        };\n        this._dispatchEventFromSandbox(actions, jsEvent);\n      });\n\n      this._setEventListeners(\n        element,\n        null,\n        [\n          [\"change\", \"Validate\"],\n          [\"change\", \"Action\"],\n          [\"focus\", \"Focus\"],\n          [\"blur\", \"Blur\"],\n          [\"mousedown\", \"Mouse Down\"],\n          [\"mouseenter\", \"Mouse Enter\"],\n          [\"mouseleave\", \"Mouse Exit\"],\n          [\"mouseup\", \"Mouse Up\"],\n        ],\n        event => event.target.checked\n      );\n    }\n\n    this._setBackgroundColor(element);\n    this._setDefaultPropertiesFromJS(element);\n\n    this.container.append(element);\n    return this.container;\n  }\n}\n\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n  constructor(parameters) {\n    super(parameters, { ignoreBorder: parameters.data.hasAppearance });\n  }\n\n  render() {\n    // The rendering and functionality of a push button widget annotation is\n    // equal to that of a link annotation, but may have more functionality, such\n    // as performing actions on form fields (resetting, submitting, et cetera).\n    const container = super.render();\n    container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n\n    const linkElement = container.lastChild;\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\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: parameters.renderForms });\n  }\n\n  render() {\n    this.container.classList.add(\"choiceWidgetAnnotation\");\n    const storage = this.annotationStorage;\n    const id = this.data.id;\n\n    const storedData = storage.getValue(id, {\n      value: this.data.fieldValue,\n    });\n\n    const selectElement = document.createElement(\"select\");\n    GetElementsByNameSet.add(selectElement);\n    selectElement.setAttribute(\"data-element-id\", id);\n\n    selectElement.disabled = this.data.readOnly;\n    this._setRequired(selectElement, this.data.required);\n    selectElement.name = this.data.fieldName;\n    selectElement.tabIndex = 0;\n\n    let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n\n    if (!this.data.combo) {\n      // List boxes have a size and (optionally) multiple selection.\n      selectElement.size = this.data.options.length;\n      if (this.data.multiSelect) {\n        selectElement.multiple = true;\n      }\n    }\n\n    selectElement.addEventListener(\"resetform\", event => {\n      const defaultValue = this.data.defaultFieldValue;\n      for (const option of selectElement.options) {\n        option.selected = option.value === defaultValue;\n      }\n    });\n\n    // Insert the options into the choice field.\n    for (const option of this.data.options) {\n      const optionElement = document.createElement(\"option\");\n      optionElement.textContent = option.displayValue;\n      optionElement.value = option.exportValue;\n      if (storedData.value.includes(option.exportValue)) {\n        optionElement.setAttribute(\"selected\", true);\n        addAnEmptyEntry = false;\n      }\n      selectElement.append(optionElement);\n    }\n\n    let removeEmptyEntry = null;\n    if (addAnEmptyEntry) {\n      const noneOptionElement = document.createElement(\"option\");\n      noneOptionElement.value = \" \";\n      noneOptionElement.setAttribute(\"hidden\", true);\n      noneOptionElement.setAttribute(\"selected\", true);\n      selectElement.prepend(noneOptionElement);\n\n      removeEmptyEntry = () => {\n        noneOptionElement.remove();\n        selectElement.removeEventListener(\"input\", removeEmptyEntry);\n        removeEmptyEntry = null;\n      };\n      selectElement.addEventListener(\"input\", removeEmptyEntry);\n    }\n\n    const getValue = isExport => {\n      const name = isExport ? \"value\" : \"textContent\";\n      const { options, multiple } = selectElement;\n      if (!multiple) {\n        return options.selectedIndex === -1\n          ? null\n          : options[options.selectedIndex][name];\n      }\n      return Array.prototype.filter\n        .call(options, option => option.selected)\n        .map(option => option[name]);\n    };\n\n    let selectedValues = getValue(/* isExport */ false);\n\n    const getItems = event => {\n      const options = event.target.options;\n      return Array.prototype.map.call(options, option => ({\n        displayValue: option.textContent,\n        exportValue: option.value,\n      }));\n    };\n\n    if (this.enableScripting && this.hasJSActions) {\n      selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n        const actions = {\n          value(event) {\n            removeEmptyEntry?.();\n            const value = event.detail.value;\n            const values = new Set(Array.isArray(value) ? value : [value]);\n            for (const option of selectElement.options) {\n              option.selected = values.has(option.value);\n            }\n            storage.setValue(id, {\n              value: getValue(/* isExport */ true),\n            });\n            selectedValues = getValue(/* isExport */ false);\n          },\n          multipleSelection(event) {\n            selectElement.multiple = true;\n          },\n          remove(event) {\n            const options = selectElement.options;\n            const index = event.detail.remove;\n            options[index].selected = false;\n            selectElement.remove(index);\n            if (options.length > 0) {\n              const i = Array.prototype.findIndex.call(\n                options,\n                option => option.selected\n              );\n              if (i === -1) {\n                options[0].selected = true;\n              }\n            }\n            storage.setValue(id, {\n              value: getValue(/* isExport */ true),\n              items: getItems(event),\n            });\n            selectedValues = getValue(/* isExport */ false);\n          },\n          clear(event) {\n            while (selectElement.length !== 0) {\n              selectElement.remove(0);\n            }\n            storage.setValue(id, { value: null, items: [] });\n            selectedValues = getValue(/* isExport */ false);\n          },\n          insert(event) {\n            const { index, displayValue, exportValue } = 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            storage.setValue(id, {\n              value: getValue(/* isExport */ true),\n              items: getItems(event),\n            });\n            selectedValues = getValue(/* isExport */ false);\n          },\n          items(event) {\n            const { items } = event.detail;\n            while (selectElement.length !== 0) {\n              selectElement.remove(0);\n            }\n            for (const item of items) {\n              const { displayValue, exportValue } = item;\n              const optionElement = document.createElement(\"option\");\n              optionElement.textContent = displayValue;\n              optionElement.value = exportValue;\n              selectElement.append(optionElement);\n            }\n            if (selectElement.options.length > 0) {\n              selectElement.options[0].selected = true;\n            }\n            storage.setValue(id, {\n              value: getValue(/* isExport */ true),\n              items: getItems(event),\n            });\n            selectedValues = getValue(/* isExport */ false);\n          },\n          indices(event) {\n            const indices = new Set(event.detail.indices);\n            for (const option of event.target.options) {\n              option.selected = indices.has(option.index);\n            }\n            storage.setValue(id, {\n              value: getValue(/* isExport */ true),\n            });\n            selectedValues = getValue(/* isExport */ false);\n          },\n          editable(event) {\n            event.target.disabled = !event.detail.editable;\n          },\n        };\n        this._dispatchEventFromSandbox(actions, jsEvent);\n      });\n\n      selectElement.addEventListener(\"input\", event => {\n        const exportValue = getValue(/* isExport */ true);\n        const change = getValue(/* isExport */ false);\n        storage.setValue(id, { value: exportValue });\n\n        event.preventDefault();\n\n        this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n          source: this,\n          detail: {\n            id,\n            name: \"Keystroke\",\n            value: selectedValues,\n            change,\n            changeEx: exportValue,\n            willCommit: false,\n            commitKey: 1,\n            keyDown: false,\n          },\n        });\n      });\n\n      this._setEventListeners(\n        selectElement,\n        null,\n        [\n          [\"focus\", \"Focus\"],\n          [\"blur\", \"Blur\"],\n          [\"mousedown\", \"Mouse Down\"],\n          [\"mouseenter\", \"Mouse Enter\"],\n          [\"mouseleave\", \"Mouse Exit\"],\n          [\"mouseup\", \"Mouse Up\"],\n          [\"input\", \"Action\"],\n          [\"input\", \"Validate\"],\n        ],\n        event => event.target.value\n      );\n    } else {\n      selectElement.addEventListener(\"input\", function (event) {\n        storage.setValue(id, { value: getValue(/* isExport */ true) });\n      });\n    }\n\n    if (this.data.combo) {\n      this._setTextStyle(selectElement);\n    } else {\n      // Just use the default font size...\n      // it's a bit hard to guess what is a good size.\n    }\n    this._setBackgroundColor(selectElement);\n    this._setDefaultPropertiesFromJS(selectElement);\n\n    this.container.append(selectElement);\n    return this.container;\n  }\n}\n\nclass PopupAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    const { data, elements, parent } = parameters;\n    const hasCommentManager = !!parent._commentManager;\n    super(parameters, {\n      isRenderable: !hasCommentManager && AnnotationElement._hasPopupData(data),\n    });\n    this.elements = elements;\n    if (hasCommentManager && AnnotationElement._hasPopupData(data)) {\n      const popup = (this.popup = this.#createPopup());\n      for (const element of elements) {\n        element.popup = popup;\n      }\n    } else {\n      this.popup = null;\n    }\n  }\n\n  #createPopup() {\n    return new PopupElement({\n      container: this.container,\n      color: this.data.color,\n      titleObj: this.data.titleObj,\n      modificationDate: this.data.modificationDate || this.data.creationDate,\n      contentsObj: this.data.contentsObj,\n      richText: this.data.richText,\n      rect: this.data.rect,\n      parentRect: this.data.parentRect || null,\n      parent: this.parent,\n      elements: this.elements,\n      open: this.data.open,\n      commentManager: this.parent._commentManager,\n    });\n  }\n\n  render() {\n    const { container } = this;\n    container.classList.add(\"popupAnnotation\");\n    container.role = \"comment\";\n\n    const popup = (this.popup = this.#createPopup());\n\n    const elementIds = [];\n    for (const element of this.elements) {\n      element.popup = popup;\n      element.container.ariaHasPopup = \"dialog\";\n      elementIds.push(element.data.id);\n      element.addHighlightArea();\n    }\n\n    this.container.setAttribute(\n      \"aria-controls\",\n      elementIds.map(id => `${AnnotationPrefix}${id}`).join(\",\")\n    );\n\n    return this.container;\n  }\n}\n\nclass PopupElement {\n  #commentManager = null;\n\n  #boundKeyDown = this.#keyDown.bind(this);\n\n  #boundHide = this.#hide.bind(this);\n\n  #boundShow = this.#show.bind(this);\n\n  #boundToggle = this.#toggle.bind(this);\n\n  #color = null;\n\n  #container = null;\n\n  #contentsObj = null;\n\n  #dateObj = null;\n\n  #elements = null;\n\n  #parent = null;\n\n  #parentRect = null;\n\n  #pinned = false;\n\n  #popup = null;\n\n  #popupAbortController = null;\n\n  #position = null;\n\n  #commentButton = null;\n\n  #commentButtonPosition = null;\n\n  #popupPosition = null;\n\n  #rect = null;\n\n  #richText = null;\n\n  #titleObj = null;\n\n  #updates = null;\n\n  #wasVisible = false;\n\n  #firstElement = null;\n\n  #commentText = null;\n\n  constructor({\n    container,\n    color,\n    elements,\n    titleObj,\n    modificationDate,\n    contentsObj,\n    richText,\n    parent,\n    rect,\n    parentRect,\n    open,\n    commentManager = null,\n  }) {\n    this.#container = container;\n    this.#titleObj = titleObj;\n    this.#contentsObj = contentsObj;\n    this.#richText = richText;\n    this.#parent = parent;\n    this.#color = color;\n    this.#rect = rect;\n    this.#parentRect = parentRect;\n    this.#elements = elements;\n    this.#commentManager = commentManager;\n    this.#firstElement = elements[0];\n\n    // The modification date is shown in the popup instead of the creation\n    // date if it is available and can be parsed correctly, which is\n    // consistent with other viewers such as Adobe Acrobat.\n    this.#dateObj = PDFDateString.toDateObject(modificationDate);\n\n    // The elements that will trigger the popup.\n    this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n\n    if (commentManager) {\n      this.renderCommentButton();\n    } else {\n      this.#addEventListeners();\n\n      this.#container.hidden = true;\n      if (open) {\n        this.#toggle();\n      }\n\n      if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n        // Since the popup is lazily created, we need to ensure that it'll be\n        // created and displayed during reference tests.\n        this.#parent.popupShow.push(async () => {\n          if (this.#container.hidden) {\n            this.#show();\n          }\n        });\n      }\n    }\n  }\n\n  #addEventListeners() {\n    if (this.#popupAbortController) {\n      return;\n    }\n    this.#popupAbortController = new AbortController();\n    const { signal } = this.#popupAbortController;\n\n    // Attach the event listeners to the trigger element.\n    for (const element of this.trigger) {\n      element.addEventListener(\"click\", this.#boundToggle, { signal });\n      element.addEventListener(\"pointerenter\", this.#boundShow, { signal });\n      element.addEventListener(\"pointerleave\", this.#boundHide, { signal });\n      element.classList.add(\"popupTriggerArea\");\n    }\n\n    // Attach the event listener to toggle the popup with the keyboard.\n    for (const element of this.#elements) {\n      element.container?.addEventListener(\"keydown\", this.#boundKeyDown, {\n        signal,\n      });\n    }\n  }\n\n  #setCommentButtonPosition() {\n    const element = this.#elements.find(e => e.hasCommentButton);\n    if (!element) {\n      return;\n    }\n    this.#commentButtonPosition = element._normalizePoint(\n      element.commentButtonPosition\n    );\n  }\n\n  renderCommentButton() {\n    if (this.#commentButton) {\n      return;\n    }\n\n    if (!this.#commentButtonPosition) {\n      this.#setCommentButtonPosition();\n    }\n\n    if (!this.#commentButtonPosition) {\n      return;\n    }\n\n    const { signal } = (this.#popupAbortController = new AbortController());\n    const hasOwnButton = !!this.#firstElement.extraPopupElement;\n    const togglePopup = () => {\n      this.#commentManager.toggleCommentPopup(\n        this,\n        /* isSelected = */ true,\n        /* visibility = */ undefined,\n        /* isEditable = */ !hasOwnButton\n      );\n    };\n    const showPopup = () => {\n      this.#commentManager.toggleCommentPopup(\n        this,\n        /* isSelected = */ false,\n        /* visibility = */ true,\n        /* isEditable = */ !hasOwnButton\n      );\n    };\n    const hidePopup = () => {\n      this.#commentManager.toggleCommentPopup(\n        this,\n        /* isSelected = */ false,\n        /* visibility = */ false\n      );\n    };\n\n    if (!hasOwnButton) {\n      const button = (this.#commentButton = document.createElement(\"button\"));\n      button.className = \"annotationCommentButton\";\n      const parentContainer = this.#firstElement.container;\n      button.style.zIndex = parentContainer.style.zIndex + 1;\n      button.tabIndex = 0;\n      button.ariaHasPopup = \"dialog\";\n      button.ariaControls = \"commentPopup\";\n      button.setAttribute(\"data-l10n-id\", \"pdfjs-show-comment-button\");\n      this.#updateColor();\n      this.#updateCommentButtonPosition();\n      button.addEventListener(\"keydown\", this.#boundKeyDown, { signal });\n      button.addEventListener(\"click\", togglePopup, { signal });\n      button.addEventListener(\"pointerenter\", showPopup, { signal });\n      button.addEventListener(\"pointerleave\", hidePopup, { signal });\n      parentContainer.after(button);\n    } else {\n      this.#commentButton = this.#firstElement.container;\n      for (const element of this.trigger) {\n        element.ariaHasPopup = \"dialog\";\n        element.ariaControls = \"commentPopup\";\n        element.addEventListener(\"keydown\", this.#boundKeyDown, { signal });\n        element.addEventListener(\"click\", togglePopup, { signal });\n        element.addEventListener(\"pointerenter\", showPopup, { signal });\n        element.addEventListener(\"pointerleave\", hidePopup, { signal });\n        element.classList.add(\"popupTriggerArea\");\n      }\n    }\n  }\n\n  #updateCommentButtonPosition() {\n    if (this.#firstElement.extraPopupElement && !this.#firstElement.editor) {\n      // If there's no editor associated with the annotation then the comment\n      // button position can't be changed.\n      return;\n    }\n    this.renderCommentButton();\n    const [x, y] = this.#commentButtonPosition;\n    const { style } = this.#commentButton;\n    style.left = `calc(${x}%)`;\n    style.top = `calc(${y}% - var(--comment-button-dim))`;\n  }\n\n  #updateColor() {\n    if (this.#firstElement.extraPopupElement) {\n      return;\n    }\n    this.renderCommentButton();\n    this.#commentButton.style.backgroundColor = this.commentButtonColor || \"\";\n  }\n\n  get commentButtonColor() {\n    const { color, opacity } = this.#firstElement.commentData;\n    if (!color) {\n      return null;\n    }\n    return this.#parent._commentManager.makeCommentColor(color, opacity);\n  }\n\n  focusCommentButton() {\n    setTimeout(() => {\n      this.#commentButton?.focus();\n    }, 0);\n  }\n\n  getData() {\n    const { richText, color, opacity, creationDate, modificationDate } =\n      this.#firstElement.commentData;\n    return {\n      contentsObj: { str: this.comment },\n      richText,\n      color,\n      opacity,\n      creationDate,\n      modificationDate,\n    };\n  }\n\n  get elementBeforePopup() {\n    return this.#commentButton;\n  }\n\n  get comment() {\n    this.#commentText ||= this.#firstElement.commentText;\n    return this.#commentText;\n  }\n\n  set comment(text) {\n    if (text === this.comment) {\n      return;\n    }\n    this.#firstElement.commentText = this.#commentText = text;\n  }\n\n  get parentBoundingClientRect() {\n    return this.#firstElement.layer.getBoundingClientRect();\n  }\n\n  setCommentButtonStates({ selected, hasPopup }) {\n    if (!this.#commentButton) {\n      return;\n    }\n    this.#commentButton.classList.toggle(\"selected\", selected);\n    this.#commentButton.ariaExpanded = hasPopup;\n  }\n\n  setSelectedCommentButton(selected) {\n    this.#commentButton.classList.toggle(\"selected\", selected);\n  }\n\n  get commentPopupPosition() {\n    if (this.#popupPosition) {\n      return this.#popupPosition;\n    }\n    const { x, y, height } = this.#commentButton.getBoundingClientRect();\n    const {\n      x: parentX,\n      y: parentY,\n      width: parentWidth,\n      height: parentHeight,\n    } = this.#firstElement.layer.getBoundingClientRect();\n    return [(x - parentX) / parentWidth, (y + height - parentY) / parentHeight];\n  }\n\n  set commentPopupPosition(pos) {\n    this.#popupPosition = pos;\n  }\n\n  hasDefaultPopupPosition() {\n    return this.#popupPosition === null;\n  }\n\n  get commentButtonPosition() {\n    return this.#commentButtonPosition;\n  }\n\n  get commentButtonWidth() {\n    return (\n      this.#commentButton.getBoundingClientRect().width /\n      this.parentBoundingClientRect.width\n    );\n  }\n\n  editComment(options) {\n    const [posX, posY] =\n      this.#popupPosition || this.commentButtonPosition.map(x => x / 100);\n    const parentDimensions = this.parentBoundingClientRect;\n    const {\n      x: parentX,\n      y: parentY,\n      width: parentWidth,\n      height: parentHeight,\n    } = parentDimensions;\n    this.#commentManager.showDialog(\n      null,\n      this,\n      parentX + posX * parentWidth,\n      parentY + posY * parentHeight,\n      { ...options, parentDimensions }\n    );\n  }\n\n  render() {\n    if (this.#popup) {\n      return;\n    }\n\n    const popup = (this.#popup = document.createElement(\"div\"));\n    popup.className = \"popup\";\n\n    if (this.#color) {\n      const baseColor = (popup.style.outlineColor = Util.makeHexColor(\n        ...this.#color\n      ));\n      popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n    }\n\n    const header = document.createElement(\"span\");\n    header.className = \"header\";\n    if (this.#titleObj?.str) {\n      const title = document.createElement(\"span\");\n      title.className = \"title\";\n      header.append(title);\n      ({ dir: title.dir, str: title.textContent } = this.#titleObj);\n    }\n    popup.append(header);\n\n    if (this.#dateObj) {\n      const modificationDate = document.createElement(\"time\");\n      modificationDate.className = \"popupDate\";\n      modificationDate.setAttribute(\n        \"data-l10n-id\",\n        \"pdfjs-annotation-date-time-string\"\n      );\n      modificationDate.setAttribute(\n        \"data-l10n-args\",\n        JSON.stringify({ dateObj: this.#dateObj.valueOf() })\n      );\n      modificationDate.dateTime = this.#dateObj.toISOString();\n      header.append(modificationDate);\n    }\n\n    renderRichText(\n      {\n        html: this.#html || this.#contentsObj.str,\n        dir: this.#contentsObj?.dir,\n        className: \"popupContent\",\n      },\n      popup\n    );\n\n    this.#container.append(popup);\n  }\n\n  get #html() {\n    const richText = this.#richText;\n    const contentsObj = this.#contentsObj;\n    if (\n      richText?.str &&\n      (!contentsObj?.str || contentsObj.str === richText.str)\n    ) {\n      return this.#richText.html || null;\n    }\n    return null;\n  }\n\n  get #fontSize() {\n    return this.#html?.attributes?.style?.fontSize || 0;\n  }\n\n  get #fontColor() {\n    return this.#html?.attributes?.style?.color || null;\n  }\n\n  #makePopupContent(text) {\n    const popupLines = [];\n    const popupContent = {\n      str: text,\n      html: {\n        name: \"div\",\n        attributes: {\n          dir: \"auto\",\n        },\n        children: [\n          {\n            name: \"p\",\n            children: popupLines,\n          },\n        ],\n      },\n    };\n    const lineAttributes = {\n      style: {\n        color: this.#fontColor,\n        fontSize: this.#fontSize\n          ? `calc(${this.#fontSize}px * var(--total-scale-factor))`\n          : \"\",\n      },\n    };\n    for (const line of text.split(\"\\n\")) {\n      popupLines.push({\n        name: \"span\",\n        value: line,\n        attributes: lineAttributes,\n      });\n    }\n    return popupContent;\n  }\n\n  #keyDown(event) {\n    if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n      return;\n    }\n\n    if (event.key === \"Enter\" || (event.key === \"Escape\" && this.#pinned)) {\n      this.#toggle();\n    }\n  }\n\n  updateEdited({ rect, popup, deleted }) {\n    if (this.#commentManager) {\n      if (deleted) {\n        this.remove();\n        this.#commentText = null;\n      } else if (popup) {\n        if (popup.deleted) {\n          this.remove();\n        } else {\n          this.#updateColor();\n          this.#commentText = popup.text;\n        }\n      }\n      if (rect) {\n        this.#commentButtonPosition = null;\n        this.#setCommentButtonPosition();\n        this.#updateCommentButtonPosition();\n      }\n      return;\n    }\n    if (deleted || popup?.deleted) {\n      this.remove();\n      return;\n    }\n    this.#addEventListeners();\n    this.#updates ||= {\n      contentsObj: this.#contentsObj,\n      richText: this.#richText,\n    };\n    if (rect) {\n      this.#position = null;\n    }\n    if (popup && popup.text) {\n      this.#richText = this.#makePopupContent(popup.text);\n      this.#dateObj = PDFDateString.toDateObject(popup.date);\n      this.#contentsObj = null;\n    }\n    this.#popup?.remove();\n    this.#popup = null;\n  }\n\n  resetEdited() {\n    if (!this.#updates) {\n      return;\n    }\n    ({ contentsObj: this.#contentsObj, richText: this.#richText } =\n      this.#updates);\n    this.#updates = null;\n    this.#popup?.remove();\n    this.#popup = null;\n    this.#position = null;\n  }\n\n  remove() {\n    this.#popupAbortController?.abort();\n    this.#popupAbortController = null;\n    this.#popup?.remove();\n    this.#popup = null;\n    this.#wasVisible = false;\n    this.#pinned = false;\n    this.#commentButton?.remove();\n    this.#commentButton = null;\n    if (this.trigger) {\n      for (const element of this.trigger) {\n        element.classList.remove(\"popupTriggerArea\");\n      }\n    }\n  }\n\n  #setPosition() {\n    if (this.#position !== null) {\n      return;\n    }\n    const {\n      page: { view },\n      viewport: {\n        rawDims: { pageWidth, pageHeight, pageX, pageY },\n      },\n    } = this.#parent;\n\n    let useParentRect = !!this.#parentRect;\n    let rect = useParentRect ? this.#parentRect : this.#rect;\n    for (const element of this.#elements) {\n      if (!rect || Util.intersect(element.data.rect, rect) !== null) {\n        rect = element.data.rect;\n        useParentRect = true;\n        break;\n      }\n    }\n\n    const normalizedRect = Util.normalizeRect([\n      rect[0],\n      view[3] - rect[1] + view[1],\n      rect[2],\n      view[3] - rect[3] + view[1],\n    ]);\n\n    const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n    const parentWidth = useParentRect\n      ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION\n      : 0;\n    const popupLeft = normalizedRect[0] + parentWidth;\n    const popupTop = normalizedRect[1];\n    this.#position = [\n      (100 * (popupLeft - pageX)) / pageWidth,\n      (100 * (popupTop - pageY)) / pageHeight,\n    ];\n\n    const { style } = this.#container;\n    style.left = `${this.#position[0]}%`;\n    style.top = `${this.#position[1]}%`;\n  }\n\n  /**\n   * Toggle the visibility of the popup.\n   */\n  #toggle() {\n    if (this.#commentManager) {\n      this.#commentManager.toggleCommentPopup(this, /* isSelected = */ false);\n      return;\n    }\n\n    this.#pinned = !this.#pinned;\n    if (this.#pinned) {\n      this.#show();\n      this.#container.addEventListener(\"click\", this.#boundToggle);\n      this.#container.addEventListener(\"keydown\", this.#boundKeyDown);\n    } else {\n      this.#hide();\n      this.#container.removeEventListener(\"click\", this.#boundToggle);\n      this.#container.removeEventListener(\"keydown\", this.#boundKeyDown);\n    }\n  }\n\n  /**\n   * Show the popup.\n   */\n  #show() {\n    if (!this.#popup) {\n      this.render();\n    }\n    if (!this.isVisible) {\n      this.#setPosition();\n      this.#container.hidden = false;\n      this.#container.style.zIndex =\n        parseInt(this.#container.style.zIndex) + 1000;\n    } else if (this.#pinned) {\n      this.#container.classList.add(\"focused\");\n    }\n  }\n\n  /**\n   * Hide the popup.\n   */\n  #hide() {\n    this.#container.classList.remove(\"focused\");\n    if (this.#pinned || !this.isVisible) {\n      return;\n    }\n    this.#container.hidden = true;\n    this.#container.style.zIndex =\n      parseInt(this.#container.style.zIndex) - 1000;\n  }\n\n  forceHide() {\n    this.#wasVisible = this.isVisible;\n    if (!this.#wasVisible) {\n      return;\n    }\n    this.#container.hidden = true;\n  }\n\n  maybeShow() {\n    if (this.#commentManager) {\n      return;\n    }\n    this.#addEventListeners();\n    if (!this.#wasVisible) {\n      return;\n    }\n    if (!this.#popup) {\n      this.#show();\n    }\n    this.#wasVisible = false;\n    this.#container.hidden = false;\n  }\n\n  get isVisible() {\n    if (this.#commentManager) {\n      return false;\n    }\n    return this.#container.hidden === false;\n  }\n}\n\nclass FreeTextAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n    this.textContent = parameters.data.textContent;\n    this.textPosition = parameters.data.textPosition;\n    this.annotationEditorType = AnnotationEditorType.FREETEXT;\n  }\n\n  render() {\n    this.container.classList.add(\"freeTextAnnotation\");\n\n    if (this.textContent) {\n      const content = document.createElement(\"div\");\n      content.classList.add(\"annotationTextContent\");\n      content.setAttribute(\"role\", \"comment\");\n      for (const line of this.textContent) {\n        const lineSpan = document.createElement(\"span\");\n        lineSpan.textContent = line;\n        content.append(lineSpan);\n      }\n      this.container.append(content);\n    }\n\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    this._editOnDoubleClick();\n\n    return this.container;\n  }\n}\n\nclass LineAnnotationElement extends AnnotationElement {\n  #line = null;\n\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n  }\n\n  render() {\n    this.container.classList.add(\"lineAnnotation\");\n\n    // Create an invisible line with the same starting and ending coordinates\n    // that acts as the trigger for the popup. Only the line itself should\n    // trigger the popup, not the entire container.\n    const { data, width, height } = this;\n    const svg = this.svgFactory.create(\n      width,\n      height,\n      /* skipDimensions = */ true\n    );\n\n    // PDF coordinates are calculated from a bottom left origin, so transform\n    // the line coordinates to a top left origin for the SVG element.\n    const line = (this.#line = this.svgFactory.createElement(\"svg:line\"));\n    line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n    line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n    line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n    line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n    // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n    // won't be possible to open/close the popup (note e.g. issue 11122).\n    line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n    line.setAttribute(\"stroke\", \"transparent\");\n    line.setAttribute(\"fill\", \"transparent\");\n\n    svg.append(line);\n    this.container.append(svg);\n\n    // Create the popup ourselves so that we can bind it to the line instead\n    // of to the entire container (which is the default).\n    if (!data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    return this.container;\n  }\n\n  getElementsToTriggerPopup() {\n    return this.#line;\n  }\n\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\n\nclass SquareAnnotationElement extends AnnotationElement {\n  #square = null;\n\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n  }\n\n  render() {\n    this.container.classList.add(\"squareAnnotation\");\n\n    // Create an invisible square with the same rectangle that acts as the\n    // trigger for the popup. Only the square itself should trigger the\n    // popup, not the entire container.\n    const { data, width, height } = this;\n    const svg = this.svgFactory.create(\n      width,\n      height,\n      /* skipDimensions = */ true\n    );\n\n    // The browser draws half of the borders inside the square and half of\n    // the borders outside the square by default. This behavior cannot be\n    // changed programmatically, so correct for that here.\n    const borderWidth = data.borderStyle.width;\n    const square = (this.#square = this.svgFactory.createElement(\"svg:rect\"));\n    square.setAttribute(\"x\", borderWidth / 2);\n    square.setAttribute(\"y\", borderWidth / 2);\n    square.setAttribute(\"width\", width - borderWidth);\n    square.setAttribute(\"height\", height - borderWidth);\n    // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n    // won't be possible to open/close the popup (note e.g. issue 11122).\n    square.setAttribute(\"stroke-width\", borderWidth || 1);\n    square.setAttribute(\"stroke\", \"transparent\");\n    square.setAttribute(\"fill\", \"transparent\");\n\n    svg.append(square);\n    this.container.append(svg);\n\n    // Create the popup ourselves so that we can bind it to the square instead\n    // of to the entire container (which is the default).\n    if (!data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    return this.container;\n  }\n\n  getElementsToTriggerPopup() {\n    return this.#square;\n  }\n\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\n\nclass CircleAnnotationElement extends AnnotationElement {\n  #circle = null;\n\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n  }\n\n  render() {\n    this.container.classList.add(\"circleAnnotation\");\n\n    // Create an invisible circle with the same ellipse that acts as the\n    // trigger for the popup. Only the circle itself should trigger the\n    // popup, not the entire container.\n    const { data, width, height } = this;\n    const svg = this.svgFactory.create(\n      width,\n      height,\n      /* skipDimensions = */ true\n    );\n\n    // The browser draws half of the borders inside the circle and half of\n    // the borders outside the circle by default. This behavior cannot be\n    // changed programmatically, so correct for that here.\n    const borderWidth = data.borderStyle.width;\n    const circle = (this.#circle =\n      this.svgFactory.createElement(\"svg:ellipse\"));\n    circle.setAttribute(\"cx\", width / 2);\n    circle.setAttribute(\"cy\", height / 2);\n    circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n    circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n    // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n    // won't be possible to open/close the popup (note e.g. issue 11122).\n    circle.setAttribute(\"stroke-width\", borderWidth || 1);\n    circle.setAttribute(\"stroke\", \"transparent\");\n    circle.setAttribute(\"fill\", \"transparent\");\n\n    svg.append(circle);\n    this.container.append(svg);\n\n    // Create the popup ourselves so that we can bind it to the circle instead\n    // of to the entire container (which is the default).\n    if (!data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    return this.container;\n  }\n\n  getElementsToTriggerPopup() {\n    return this.#circle;\n  }\n\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\n\nclass PolylineAnnotationElement extends AnnotationElement {\n  #polyline = null;\n\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n\n    this.containerClassName = \"polylineAnnotation\";\n    this.svgElementName = \"svg:polyline\";\n  }\n\n  render() {\n    this.container.classList.add(this.containerClassName);\n\n    // Create an invisible polyline with the same points that acts as the\n    // trigger for the popup. Only the polyline itself should trigger the\n    // popup, not the entire container.\n    const {\n      data: { rect, vertices, borderStyle, popupRef },\n      width,\n      height,\n    } = this;\n    if (!vertices) {\n      return this.container;\n    }\n    const svg = this.svgFactory.create(\n      width,\n      height,\n      /* skipDimensions = */ true\n    );\n\n    // Convert the vertices array to a single points string that the SVG\n    // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n    // calculated from a bottom left origin, so transform the polyline\n    // coordinates to a top left origin for the SVG element.\n    let points = [];\n    for (let i = 0, ii = vertices.length; i < ii; i += 2) {\n      const x = vertices[i] - rect[0];\n      const y = rect[3] - vertices[i + 1];\n      points.push(`${x},${y}`);\n    }\n    points = points.join(\" \");\n\n    const polyline = (this.#polyline = this.svgFactory.createElement(\n      this.svgElementName\n    ));\n    polyline.setAttribute(\"points\", points);\n    // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n    // won't be possible to open/close the popup (note e.g. issue 11122).\n    polyline.setAttribute(\"stroke-width\", borderStyle.width || 1);\n    polyline.setAttribute(\"stroke\", \"transparent\");\n    polyline.setAttribute(\"fill\", \"transparent\");\n\n    svg.append(polyline);\n    this.container.append(svg);\n\n    // Create the popup ourselves so that we can bind it to the polyline\n    // instead of to the entire container (which is the default).\n    if (!popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    return this.container;\n  }\n\n  getElementsToTriggerPopup() {\n    return this.#polyline;\n  }\n\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\n\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n  constructor(parameters) {\n    // Polygons are specific forms of polylines, so reuse their logic.\n    super(parameters);\n\n    this.containerClassName = \"polygonAnnotation\";\n    this.svgElementName = \"svg:polygon\";\n  }\n}\n\nclass CaretAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n  }\n\n  render() {\n    this.container.classList.add(\"caretAnnotation\");\n\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    return this.container;\n  }\n}\n\nclass InkAnnotationElement extends AnnotationElement {\n  #polylinesGroupElement = null;\n\n  #polylines = [];\n\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n\n    this.containerClassName = \"inkAnnotation\";\n\n    // Use the polyline SVG element since it allows us to use coordinates\n    // directly and to draw both straight lines and curves.\n    this.svgElementName = \"svg:polyline\";\n\n    this.annotationEditorType =\n      this.data.it === \"InkHighlight\"\n        ? AnnotationEditorType.HIGHLIGHT\n        : AnnotationEditorType.INK;\n  }\n\n  #getTransform(rotation, rect) {\n    // PDF coordinates are calculated from a bottom left origin, so\n    // transform the polyline coordinates to a top left origin for the\n    // SVG element.\n    switch (rotation) {\n      case 90:\n        return {\n          transform: `rotate(90) translate(${-rect[0]},${rect[1]}) scale(1,-1)`,\n          width: rect[3] - rect[1],\n          height: rect[2] - rect[0],\n        };\n      case 180:\n        return {\n          transform: `rotate(180) translate(${-rect[2]},${rect[1]}) scale(1,-1)`,\n          width: rect[2] - rect[0],\n          height: rect[3] - rect[1],\n        };\n      case 270:\n        return {\n          transform: `rotate(270) translate(${-rect[2]},${rect[3]}) scale(1,-1)`,\n          width: rect[3] - rect[1],\n          height: rect[2] - rect[0],\n        };\n      default:\n        return {\n          transform: `translate(${-rect[0]},${rect[3]}) scale(1,-1)`,\n          width: rect[2] - rect[0],\n          height: rect[3] - rect[1],\n        };\n    }\n  }\n\n  render() {\n    this.container.classList.add(this.containerClassName);\n\n    // Create an invisible polyline with the same points that acts as the\n    // trigger for the popup.\n    const {\n      data: { rect, rotation, inkLists, borderStyle, popupRef },\n    } = this;\n    const { transform, width, height } = this.#getTransform(rotation, rect);\n\n    const svg = this.svgFactory.create(\n      width,\n      height,\n      /* skipDimensions = */ true\n    );\n    const g = (this.#polylinesGroupElement =\n      this.svgFactory.createElement(\"svg:g\"));\n    svg.append(g);\n    // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n    // won't be possible to open/close the popup (note e.g. issue 11122).\n    g.setAttribute(\"stroke-width\", borderStyle.width || 1);\n    g.setAttribute(\"stroke-linecap\", \"round\");\n    g.setAttribute(\"stroke-linejoin\", \"round\");\n    g.setAttribute(\"stroke-miterlimit\", 10);\n    g.setAttribute(\"stroke\", \"transparent\");\n    g.setAttribute(\"fill\", \"transparent\");\n    g.setAttribute(\"transform\", transform);\n\n    for (let i = 0, ii = inkLists.length; i < ii; i++) {\n      const polyline = this.svgFactory.createElement(this.svgElementName);\n      this.#polylines.push(polyline);\n      polyline.setAttribute(\"points\", inkLists[i].join(\",\"));\n      g.append(polyline);\n    }\n\n    if (!popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    this.container.append(svg);\n    this._editOnDoubleClick();\n\n    return this.container;\n  }\n\n  updateEdited(params) {\n    super.updateEdited(params);\n    const { thickness, points, rect } = params;\n    const g = this.#polylinesGroupElement;\n    if (thickness >= 0) {\n      g.setAttribute(\"stroke-width\", thickness || 1);\n    }\n    if (points) {\n      for (let i = 0, ii = this.#polylines.length; i < ii; i++) {\n        this.#polylines[i].setAttribute(\"points\", points[i].join(\",\"));\n      }\n    }\n    if (rect) {\n      const { transform, width, height } = this.#getTransform(\n        this.data.rotation,\n        rect\n      );\n      const root = g.parentElement;\n      root.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n      g.setAttribute(\"transform\", transform);\n    }\n  }\n\n  getElementsToTriggerPopup() {\n    return this.#polylines;\n  }\n\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n}\n\nclass HighlightAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true,\n      createQuadrilaterals: true,\n    });\n    this.annotationEditorType = AnnotationEditorType.HIGHLIGHT;\n  }\n\n  render() {\n    const {\n      data: { overlaidText, popupRef },\n    } = this;\n    if (!popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    this.container.classList.add(\"highlightAnnotation\");\n    this._editOnDoubleClick();\n\n    if (overlaidText) {\n      const mark = document.createElement(\"mark\");\n      mark.classList.add(\"overlaidText\");\n      mark.textContent = overlaidText;\n      this.container.append(mark);\n    }\n\n    return this.container;\n  }\n}\n\nclass UnderlineAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true,\n      createQuadrilaterals: true,\n    });\n  }\n\n  render() {\n    const {\n      data: { overlaidText, popupRef },\n    } = this;\n    if (!popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    this.container.classList.add(\"underlineAnnotation\");\n\n    if (overlaidText) {\n      const underline = document.createElement(\"u\");\n      underline.classList.add(\"overlaidText\");\n      underline.textContent = overlaidText;\n      this.container.append(underline);\n    }\n\n    return this.container;\n  }\n}\n\nclass SquigglyAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true,\n      createQuadrilaterals: true,\n    });\n  }\n\n  render() {\n    const {\n      data: { overlaidText, popupRef },\n    } = this;\n    if (!popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    this.container.classList.add(\"squigglyAnnotation\");\n\n    if (overlaidText) {\n      const underline = document.createElement(\"u\");\n      underline.classList.add(\"overlaidText\");\n      underline.textContent = overlaidText;\n      this.container.append(underline);\n    }\n\n    return this.container;\n  }\n}\n\nclass StrikeOutAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, {\n      isRenderable: true,\n      ignoreBorder: true,\n      createQuadrilaterals: true,\n    });\n  }\n\n  render() {\n    const {\n      data: { overlaidText, popupRef },\n    } = this;\n    if (!popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n\n    this.container.classList.add(\"strikeoutAnnotation\");\n\n    if (overlaidText) {\n      const strikeout = document.createElement(\"s\");\n      strikeout.classList.add(\"overlaidText\");\n      strikeout.textContent = overlaidText;\n      this.container.append(strikeout);\n    }\n\n    return this.container;\n  }\n}\n\nclass StampAnnotationElement extends AnnotationElement {\n  constructor(parameters) {\n    super(parameters, { isRenderable: true, ignoreBorder: true });\n    this.annotationEditorType = AnnotationEditorType.STAMP;\n  }\n\n  render() {\n    this.container.classList.add(\"stampAnnotation\");\n    this.container.setAttribute(\"role\", \"img\");\n\n    if (!this.data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    }\n    this._editOnDoubleClick();\n\n    return this.container;\n  }\n}\n\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n  #trigger = null;\n\n  constructor(parameters) {\n    super(parameters, { isRenderable: true });\n\n    const { file } = this.data;\n    this.filename = file.filename;\n    this.content = file.content;\n\n    this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n      source: this,\n      ...file,\n    });\n  }\n\n  render() {\n    this.container.classList.add(\"fileAttachmentAnnotation\");\n\n    const { container, data } = this;\n    let trigger;\n    if (data.hasAppearance || data.fillAlpha === 0) {\n      trigger = document.createElement(\"div\");\n    } else {\n      // Unfortunately it seems that it's not clearly specified exactly what\n      // names are actually valid, since Table 184 contains:\n      //   Conforming readers shall provide predefined icon appearances for at\n      //   least the following standard names: GraphPushPin, PaperclipTag.\n      //   Additional names may be supported as well. Default value: PushPin.\n      trigger = document.createElement(\"img\");\n      trigger.src = `${this.imageResourcesPath}annotation-${\n        /paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"\n      }.svg`;\n\n      if (data.fillAlpha && data.fillAlpha < 1) {\n        trigger.style = `filter: opacity(${Math.round(\n          data.fillAlpha * 100\n        )}%);`;\n\n        if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n          this.container.classList.add(\"hasFillAlpha\");\n        }\n      }\n    }\n    trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n    this.#trigger = trigger;\n\n    const { isMac } = FeatureTest.platform;\n    container.addEventListener(\"keydown\", evt => {\n      if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n        this.#download();\n      }\n    });\n\n    if (!data.popupRef && this.hasPopupData) {\n      this._createPopup();\n    } else {\n      trigger.classList.add(\"popupTriggerArea\");\n    }\n\n    container.append(trigger);\n    return container;\n  }\n\n  getElementsToTriggerPopup() {\n    return this.#trigger;\n  }\n\n  addHighlightArea() {\n    this.container.classList.add(\"highlightArea\");\n  }\n\n  /**\n   * Download the file attachment associated with this annotation.\n   */\n  #download() {\n    this.downloadManager?.openOrDownloadData(this.content, this.filename);\n  }\n}\n\n/**\n * @typedef {Object} AnnotationLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Array} annotations\n * @property {PDFPageProxy} page\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} [downloadManager]\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n *   for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {boolean} [enableScripting] - Enable embedded script execution.\n * @property {boolean} [hasJSActions] - Some fields have JS actions.\n *   The default value is `false`.\n * @property {Object<string, Array<Object>> | null} [fieldObjects]\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap]\n * @property {TextAccessibilityManager} [accessibilityManager]\n * @property {AnnotationEditorUIManager} [annotationEditorUIManager]\n * @property {StructTreeLayerBuilder} [structTreeLayer]\n * @property {CommentManager} [commentManager] - The comment manager instance.\n */\n\n/**\n * Manage the layer containing all the annotations.\n */\nclass AnnotationLayer {\n  #accessibilityManager = null;\n\n  #annotationCanvasMap = null;\n\n  #annotationStorage = null;\n\n  #editableAnnotations = new Map();\n\n  #structTreeLayer = null;\n\n  #linkService = null;\n\n  constructor({\n    div,\n    accessibilityManager,\n    annotationCanvasMap,\n    annotationEditorUIManager,\n    page,\n    viewport,\n    structTreeLayer,\n    commentManager,\n    linkService,\n    annotationStorage,\n  }) {\n    this.div = div;\n    this.#accessibilityManager = accessibilityManager;\n    this.#annotationCanvasMap = annotationCanvasMap;\n    this.#structTreeLayer = structTreeLayer || null;\n    this.#linkService = linkService || null;\n    this.#annotationStorage = annotationStorage || new AnnotationStorage();\n    this.page = page;\n    this.viewport = viewport;\n    this.zIndex = 0;\n    this._annotationEditorUIManager = annotationEditorUIManager;\n    this._commentManager = commentManager || null;\n\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n      // For testing purposes.\n      Object.defineProperty(this, \"showPopups\", {\n        value: async () => {\n          for (const show of this.popupShow) {\n            await show();\n          }\n        },\n      });\n      this.popupShow = [];\n    }\n  }\n\n  hasEditableAnnotations() {\n    return this.#editableAnnotations.size > 0;\n  }\n\n  async #appendElement(element, id, popupElements) {\n    const contentElement = element.firstChild || element;\n    const annotationId = (contentElement.id = `${AnnotationPrefix}${id}`);\n    const ariaAttributes =\n      await this.#structTreeLayer?.getAriaAttributes(annotationId);\n    if (ariaAttributes) {\n      for (const [key, value] of ariaAttributes) {\n        contentElement.setAttribute(key, value);\n      }\n    }\n\n    if (popupElements) {\n      // Set the popup just after the first element associated with the popup.\n      popupElements.at(-1).container.after(element);\n    } else {\n      this.div.append(element);\n      this.#accessibilityManager?.moveElementInDOM(\n        this.div,\n        element,\n        contentElement,\n        /* isRemovable = */ false\n      );\n    }\n  }\n\n  /**\n   * Render a new annotation layer with all annotation elements.\n   *\n   * @param {AnnotationLayerParameters} params\n   * @memberof AnnotationLayer\n   */\n  async render(params) {\n    const { annotations } = params;\n    const layer = this.div;\n    setLayerDimensions(layer, this.viewport);\n\n    const popupToElements = new Map();\n    const elementParams = {\n      data: null,\n      layer,\n      linkService: this.#linkService,\n      downloadManager: params.downloadManager,\n      imageResourcesPath: params.imageResourcesPath || \"\",\n      renderForms: params.renderForms !== false,\n      svgFactory: new DOMSVGFactory(),\n      annotationStorage: this.#annotationStorage,\n      enableComment: params.enableComment === true,\n      enableScripting: params.enableScripting === true,\n      hasJSActions: params.hasJSActions,\n      fieldObjects: params.fieldObjects,\n      parent: this,\n      elements: null,\n    };\n\n    for (const data of annotations) {\n      if (data.noHTML) {\n        continue;\n      }\n      const isPopupAnnotation = data.annotationType === AnnotationType.POPUP;\n      if (!isPopupAnnotation) {\n        if (data.rect[2] === data.rect[0] || data.rect[3] === data.rect[1]) {\n          continue; // Ignore empty annotations.\n        }\n      } else {\n        const elements = popupToElements.get(data.id);\n        if (!elements) {\n          // Ignore popup annotations without a corresponding annotation.\n          continue;\n        }\n        elementParams.elements = elements;\n      }\n      elementParams.data = data;\n      const element = AnnotationElementFactory.create(elementParams);\n\n      if (!element.isRenderable) {\n        continue;\n      }\n\n      if (!isPopupAnnotation && data.popupRef) {\n        const elements = popupToElements.get(data.popupRef);\n        if (!elements) {\n          popupToElements.set(data.popupRef, [element]);\n        } else {\n          elements.push(element);\n        }\n      }\n\n      const rendered = element.render();\n      if (data.hidden) {\n        rendered.style.visibility = \"hidden\";\n      }\n      await this.#appendElement(rendered, data.id, elementParams.elements);\n      element.extraPopupElement?.popup?.renderCommentButton();\n\n      if (element._isEditable) {\n        this.#editableAnnotations.set(element.data.id, element);\n        this._annotationEditorUIManager?.renderAnnotationElement(element);\n      }\n    }\n\n    this.#setAnnotationCanvasMap();\n  }\n\n  /**\n   * Add link annotations to the annotation layer.\n   *\n   * @param {Array<Object>} annotations\n   * @param {IPDFLinkService} linkService\n   * @memberof AnnotationLayer\n   */\n  async addLinkAnnotations(annotations) {\n    const elementParams = {\n      data: null,\n      layer: this.div,\n      linkService: this.#linkService,\n      svgFactory: new DOMSVGFactory(),\n      parent: this,\n    };\n    for (const data of annotations) {\n      data.borderStyle ||= AnnotationLayer._defaultBorderStyle;\n\n      elementParams.data = data;\n      const element = AnnotationElementFactory.create(elementParams);\n\n      if (!element.isRenderable) {\n        continue;\n      }\n      const rendered = element.render();\n      await this.#appendElement(rendered, data.id, null);\n    }\n  }\n\n  /**\n   * Update the annotation elements on existing annotation layer.\n   *\n   * @param {AnnotationLayerParameters} viewport\n   * @memberof AnnotationLayer\n   */\n  update({ viewport }) {\n    const layer = this.div;\n    this.viewport = viewport;\n    setLayerDimensions(layer, { rotation: viewport.rotation });\n\n    this.#setAnnotationCanvasMap();\n    layer.hidden = false;\n  }\n\n  #setAnnotationCanvasMap() {\n    if (!this.#annotationCanvasMap) {\n      return;\n    }\n    const layer = this.div;\n    for (const [id, canvas] of this.#annotationCanvasMap) {\n      const element = layer.querySelector(`[data-annotation-id=\"${id}\"]`);\n      if (!element) {\n        continue;\n      }\n\n      canvas.className = \"annotationContent\";\n      const { firstChild } = element;\n      if (!firstChild) {\n        element.append(canvas);\n      } else if (firstChild.nodeName === \"CANVAS\") {\n        firstChild.replaceWith(canvas);\n      } else if (!firstChild.classList.contains(\"annotationContent\")) {\n        firstChild.before(canvas);\n      } else {\n        firstChild.after(canvas);\n      }\n\n      const editableAnnotation = this.#editableAnnotations.get(id);\n      if (!editableAnnotation) {\n        continue;\n      }\n      if (editableAnnotation._hasNoCanvas) {\n        // The canvas wasn't available when the annotation was created.\n        this._annotationEditorUIManager?.setMissingCanvas(\n          id,\n          element.id,\n          canvas\n        );\n        editableAnnotation._hasNoCanvas = false;\n      } else {\n        editableAnnotation.canvas = canvas;\n      }\n    }\n    this.#annotationCanvasMap.clear();\n  }\n\n  getEditableAnnotations() {\n    return Array.from(this.#editableAnnotations.values());\n  }\n\n  getEditableAnnotation(id) {\n    return this.#editableAnnotations.get(id);\n  }\n\n  addFakeAnnotation(editor) {\n    const { div } = this;\n    const { id, rotation } = editor;\n    const element = new EditorAnnotationElement({\n      data: {\n        id,\n        rect: editor.getPDFRect(),\n        rotation,\n      },\n      editor,\n      layer: div,\n      parent: this,\n      enableComment: !!this._commentManager,\n      linkService: this.#linkService,\n      annotationStorage: this.#annotationStorage,\n    });\n    const htmlElement = element.render();\n    div.append(htmlElement);\n    this.#accessibilityManager?.moveElementInDOM(\n      div,\n      htmlElement,\n      htmlElement,\n      /* isRemovable = */ false\n    );\n    element.createOrUpdatePopup();\n    return element;\n  }\n\n  /**\n   * @private\n   */\n  static get _defaultBorderStyle() {\n    return shadow(\n      this,\n      \"_defaultBorderStyle\",\n      Object.freeze({\n        width: 1,\n        rawWidth: 1,\n        style: AnnotationBorderStyleType.SOLID,\n        dashArray: [3],\n        horizontalCornerRadius: 0,\n        verticalCornerRadius: 0,\n      })\n    );\n  }\n}\n\nexport {\n  AnnotationLayer,\n  FreeTextAnnotationElement,\n  HighlightAnnotationElement,\n  InkAnnotationElement,\n  StampAnnotationElement,\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\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_editor_layer.js\").AnnotationEditorLayer} AnnotationEditorLayer */\n\nimport {\n  AnnotationEditorParamsType,\n  AnnotationEditorType,\n  assert,\n  LINE_FACTOR,\n  shadow,\n  Util,\n} from \"../../shared/util.js\";\nimport { AnnotationEditorUIManager, KeyboardManager } from \"./tools.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { BasicColorPicker } from \"./color_picker.js\";\nimport { FreeTextAnnotationElement } from \"../annotation_layer.js\";\n\nconst EOL_PATTERN = /\\r\\n?|\\n/g;\n\n/**\n * Basic text editor in order to create a FreeTex annotation.\n */\nclass FreeTextEditor extends AnnotationEditor {\n  #content = \"\";\n\n  #editorDivId = `${this.id}-editor`;\n\n  #editModeAC = null;\n\n  #fontSize;\n\n  _colorPicker = null;\n\n  static _freeTextDefaultContent = \"\";\n\n  static _internalPadding = 0;\n\n  static _defaultColor = null;\n\n  static _defaultFontSize = 10;\n\n  static get _keyboardManager() {\n    const proto = FreeTextEditor.prototype;\n\n    const arrowChecker = self => self.isEmpty();\n\n    const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n    const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n\n    return shadow(\n      this,\n      \"_keyboardManager\",\n      new KeyboardManager([\n        [\n          // Commit the text in case the user use ctrl+s to save the document.\n          // The event must bubble in order to be caught by the viewer.\n          // See bug 1831574.\n          [\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"],\n          proto.commitOrRemove,\n          { bubbles: true },\n        ],\n        [\n          [\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"],\n          proto.commitOrRemove,\n        ],\n        [\n          [\"ArrowLeft\", \"mac+ArrowLeft\"],\n          proto._translateEmpty,\n          { args: [-small, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"],\n          proto._translateEmpty,\n          { args: [-big, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ArrowRight\", \"mac+ArrowRight\"],\n          proto._translateEmpty,\n          { args: [small, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"],\n          proto._translateEmpty,\n          { args: [big, 0], checker: arrowChecker },\n        ],\n        [\n          [\"ArrowUp\", \"mac+ArrowUp\"],\n          proto._translateEmpty,\n          { args: [0, -small], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"],\n          proto._translateEmpty,\n          { args: [0, -big], checker: arrowChecker },\n        ],\n        [\n          [\"ArrowDown\", \"mac+ArrowDown\"],\n          proto._translateEmpty,\n          { args: [0, small], checker: arrowChecker },\n        ],\n        [\n          [\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"],\n          proto._translateEmpty,\n          { args: [0, big], checker: arrowChecker },\n        ],\n      ])\n    );\n  }\n\n  static _type = \"freetext\";\n\n  static _editorType = AnnotationEditorType.FREETEXT;\n\n  constructor(params) {\n    super({ ...params, name: \"freeTextEditor\" });\n    this.color =\n      params.color ||\n      FreeTextEditor._defaultColor ||\n      AnnotationEditor._defaultLineColor;\n    this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n    if (!this.annotationElementId) {\n      this._uiManager.a11yAlert(\"pdfjs-editor-freetext-added-alert\");\n    }\n  }\n\n  /** @inheritdoc */\n  static initialize(l10n, uiManager) {\n    AnnotationEditor.initialize(l10n, uiManager);\n    const style = getComputedStyle(document.documentElement);\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      const lineHeight = parseFloat(\n        style.getPropertyValue(\"--freetext-line-height\")\n      );\n      assert(\n        lineHeight === LINE_FACTOR,\n        \"Update the CSS variable to agree with the constant.\"\n      );\n    }\n\n    this._internalPadding = parseFloat(\n      style.getPropertyValue(\"--freetext-padding\")\n    );\n  }\n\n  /** @inheritdoc */\n  static updateDefaultParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.FREETEXT_SIZE:\n        FreeTextEditor._defaultFontSize = value;\n        break;\n      case AnnotationEditorParamsType.FREETEXT_COLOR:\n        FreeTextEditor._defaultColor = value;\n        break;\n    }\n  }\n\n  /** @inheritdoc */\n  updateParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.FREETEXT_SIZE:\n        this.#updateFontSize(value);\n        break;\n      case AnnotationEditorParamsType.FREETEXT_COLOR:\n        this.#updateColor(value);\n        break;\n    }\n  }\n\n  /** @inheritdoc */\n  static get defaultPropertiesToUpdate() {\n    return [\n      [\n        AnnotationEditorParamsType.FREETEXT_SIZE,\n        FreeTextEditor._defaultFontSize,\n      ],\n      [\n        AnnotationEditorParamsType.FREETEXT_COLOR,\n        FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor,\n      ],\n    ];\n  }\n\n  /** @inheritdoc */\n  get propertiesToUpdate() {\n    return [\n      [AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize],\n      [AnnotationEditorParamsType.FREETEXT_COLOR, this.color],\n    ];\n  }\n\n  /** @inheritdoc */\n  get toolbarButtons() {\n    this._colorPicker ||= new BasicColorPicker(this);\n    return [[\"colorPicker\", this._colorPicker]];\n  }\n\n  get colorType() {\n    return AnnotationEditorParamsType.FREETEXT_COLOR;\n  }\n\n  /**\n   * Update the font size and make this action as undoable.\n   * @param {number} fontSize\n   */\n  #updateFontSize(fontSize) {\n    const setFontsize = size => {\n      this.editorDiv.style.fontSize = `calc(${size}px * var(--total-scale-factor))`;\n      this.translate(0, -(size - this.#fontSize) * this.parentScale);\n      this.#fontSize = size;\n      this.#setEditorDimensions();\n    };\n    const savedFontsize = this.#fontSize;\n    this.addCommands({\n      cmd: setFontsize.bind(this, fontSize),\n      undo: setFontsize.bind(this, savedFontsize),\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\n      mustExec: true,\n      type: AnnotationEditorParamsType.FREETEXT_SIZE,\n      overwriteIfSameType: true,\n      keepUndo: true,\n    });\n  }\n\n  /** @inheritdoc */\n  onUpdatedColor() {\n    this.editorDiv.style.color = this.color;\n    this._colorPicker?.update(this.color);\n    super.onUpdatedColor();\n  }\n\n  /**\n   * Update the color and make this action undoable.\n   * @param {string} color\n   */\n  #updateColor(color) {\n    const setColor = col => {\n      this.color = col;\n      this.onUpdatedColor();\n    };\n    const savedColor = this.color;\n    this.addCommands({\n      cmd: setColor.bind(this, color),\n      undo: setColor.bind(this, savedColor),\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\n      mustExec: true,\n      type: AnnotationEditorParamsType.FREETEXT_COLOR,\n      overwriteIfSameType: true,\n      keepUndo: true,\n    });\n  }\n\n  /**\n   * Helper to translate the editor with the keyboard when it's empty.\n   * @param {number} x in page units.\n   * @param {number} y in page units.\n   */\n  _translateEmpty(x, y) {\n    this._uiManager.translateSelectedEditors(x, y, /* noCommit = */ true);\n  }\n\n  /** @inheritdoc */\n  getInitialTranslation() {\n    // The start of the base line is where the user clicked.\n    const scale = this.parentScale;\n    return [\n      -FreeTextEditor._internalPadding * scale,\n      -(FreeTextEditor._internalPadding + this.#fontSize) * scale,\n    ];\n  }\n\n  /** @inheritdoc */\n  rebuild() {\n    if (!this.parent) {\n      return;\n    }\n    super.rebuild();\n    if (this.div === null) {\n      return;\n    }\n\n    if (!this.isAttachedToDOM) {\n      // At some point this editor was removed and we're rebuilting it,\n      // hence we must add it to its parent.\n      this.parent.add(this);\n    }\n  }\n\n  /** @inheritdoc */\n  enableEditMode() {\n    if (!super.enableEditMode()) {\n      return false;\n    }\n\n    this.overlayDiv.classList.remove(\"enabled\");\n    this.editorDiv.contentEditable = true;\n    this._isDraggable = false;\n    this.div.removeAttribute(\"aria-activedescendant\");\n\n    if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n      assert(\n        !this.#editModeAC,\n        \"No `this.#editModeAC` AbortController should exist.\"\n      );\n    }\n    this.#editModeAC = new AbortController();\n    const signal = this._uiManager.combinedSignal(this.#editModeAC);\n\n    this.editorDiv.addEventListener(\n      \"keydown\",\n      this.editorDivKeydown.bind(this),\n      { signal }\n    );\n    this.editorDiv.addEventListener(\"focus\", this.editorDivFocus.bind(this), {\n      signal,\n    });\n    this.editorDiv.addEventListener(\"blur\", this.editorDivBlur.bind(this), {\n      signal,\n    });\n    this.editorDiv.addEventListener(\"input\", this.editorDivInput.bind(this), {\n      signal,\n    });\n    this.editorDiv.addEventListener(\"paste\", this.editorDivPaste.bind(this), {\n      signal,\n    });\n\n    return true;\n  }\n\n  /** @inheritdoc */\n  disableEditMode() {\n    if (!super.disableEditMode()) {\n      return false;\n    }\n\n    this.overlayDiv.classList.add(\"enabled\");\n    this.editorDiv.contentEditable = false;\n    this.div.setAttribute(\"aria-activedescendant\", this.#editorDivId);\n    this._isDraggable = true;\n\n    this.#editModeAC?.abort();\n    this.#editModeAC = null;\n\n    // On Chrome, the focus is given to <body> when contentEditable is set to\n    // false, hence we focus the div.\n    this.div.focus({\n      preventScroll: true /* See issue #15744 */,\n    });\n\n    // In case the blur callback hasn't been called.\n    this.isEditing = false;\n    this.parent.div.classList.add(\"freetextEditing\");\n\n    return true;\n  }\n\n  /** @inheritdoc */\n  focusin(event) {\n    if (!this._focusEventsAllowed) {\n      return;\n    }\n    super.focusin(event);\n    if (event.target !== this.editorDiv) {\n      this.editorDiv.focus();\n    }\n  }\n\n  /** @inheritdoc */\n  onceAdded(focus) {\n    if (this.width) {\n      // The editor was created in using ctrl+c.\n      return;\n    }\n    this.enableEditMode();\n    if (focus) {\n      this.editorDiv.focus();\n    }\n    if (this._initialOptions?.isCentered) {\n      this.center();\n    }\n    this._initialOptions = null;\n  }\n\n  /** @inheritdoc */\n  isEmpty() {\n    return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n  }\n\n  /** @inheritdoc */\n  remove() {\n    this.isEditing = false;\n    if (this.parent) {\n      this.parent.setEditingState(true);\n      this.parent.div.classList.add(\"freetextEditing\");\n    }\n    super.remove();\n  }\n\n  /**\n   * Extract the text from this editor.\n   * @returns {string}\n   */\n  #extractText() {\n    // We don't use innerText because there are some bugs with line breaks.\n    const buffer = [];\n    this.editorDiv.normalize();\n    let prevChild = null;\n    for (const child of this.editorDiv.childNodes) {\n      if (prevChild?.nodeType === Node.TEXT_NODE && child.nodeName === \"BR\") {\n        // It can happen if the user uses shift+enter to add a new line.\n        // If we don't skip it, we'll end up with an extra line (one for the\n        // text and one for the br element).\n        continue;\n      }\n      buffer.push(FreeTextEditor.#getNodeContent(child));\n      prevChild = child;\n    }\n    return buffer.join(\"\\n\");\n  }\n\n  #setEditorDimensions() {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n\n    let rect;\n    if (this.isAttachedToDOM) {\n      rect = this.div.getBoundingClientRect();\n    } else {\n      // This editor isn't on screen but we need to get its dimensions, so\n      // we just insert it in the DOM, get its bounding box and then remove it.\n      const { currentLayer, div } = this;\n      const savedDisplay = div.style.display;\n      const savedVisibility = div.classList.contains(\"hidden\");\n      div.classList.remove(\"hidden\");\n      div.style.display = \"hidden\";\n      currentLayer.div.append(this.div);\n      rect = div.getBoundingClientRect();\n      div.remove();\n      div.style.display = savedDisplay;\n      div.classList.toggle(\"hidden\", savedVisibility);\n    }\n\n    // The dimensions are relative to the rotation of the page, hence we need to\n    // take that into account (see issue #16636).\n    if (this.rotation % 180 === this.parentRotation % 180) {\n      this.width = rect.width / parentWidth;\n      this.height = rect.height / parentHeight;\n    } else {\n      this.width = rect.height / parentWidth;\n      this.height = rect.width / parentHeight;\n    }\n    this.fixAndSetPosition();\n  }\n\n  /**\n   * Commit the content we have in this editor.\n   * @returns {undefined}\n   */\n  commit() {\n    if (!this.isInEditMode()) {\n      return;\n    }\n\n    super.commit();\n    this.disableEditMode();\n    const savedText = this.#content;\n    const newText = (this.#content = this.#extractText().trimEnd());\n    if (savedText === newText) {\n      return;\n    }\n\n    const setText = text => {\n      this.#content = text;\n      if (!text) {\n        this.remove();\n        return;\n      }\n      this.#setContent();\n      this._uiManager.rebuild(this);\n      this.#setEditorDimensions();\n    };\n    this.addCommands({\n      cmd: () => {\n        setText(newText);\n      },\n      undo: () => {\n        setText(savedText);\n      },\n      mustExec: false,\n    });\n    this.#setEditorDimensions();\n  }\n\n  /** @inheritdoc */\n  shouldGetKeyboardEvents() {\n    return this.isInEditMode();\n  }\n\n  /** @inheritdoc */\n  enterInEditMode() {\n    this.enableEditMode();\n    this.editorDiv.focus();\n  }\n\n  /** @inheritdoc */\n  keydown(event) {\n    if (event.target === this.div && event.key === \"Enter\") {\n      this.enterInEditMode();\n      // Avoid to add an unwanted new line.\n      event.preventDefault();\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  editorDivInput(event) {\n    this.parent.div.classList.toggle(\"freetextEditing\", this.isEmpty());\n  }\n\n  /** @inheritdoc */\n  disableEditing() {\n    this.editorDiv.setAttribute(\"role\", \"comment\");\n    this.editorDiv.removeAttribute(\"aria-multiline\");\n  }\n\n  /** @inheritdoc */\n  enableEditing() {\n    this.editorDiv.setAttribute(\"role\", \"textbox\");\n    this.editorDiv.setAttribute(\"aria-multiline\", true);\n  }\n\n  /** @inheritdoc */\n  get canChangeContent() {\n    return true;\n  }\n\n  /** @inheritdoc */\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n\n    let baseX, baseY;\n    if (this._isCopy || this.annotationElementId) {\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\n    this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n    this.editorDiv.setAttribute(\"data-l10n-id\", \"pdfjs-free-text2\");\n    this.editorDiv.setAttribute(\"data-l10n-attrs\", \"default-content\");\n    this.enableEditing();\n\n    this.editorDiv.contentEditable = true;\n\n    const { style } = this.editorDiv;\n    style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\n    style.color = this.color;\n\n    this.div.append(this.editorDiv);\n\n    this.overlayDiv = document.createElement(\"div\");\n    this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n    this.div.append(this.overlayDiv);\n\n    if (this._isCopy || this.annotationElementId) {\n      // This editor was created in using copy (ctrl+c).\n      const [parentWidth, parentHeight] = this.parentDimensions;\n      if (this.annotationElementId) {\n        // This stuff is hard to test: if something is changed here, please\n        // test with the following PDF file:\n        //  - freetexts.pdf\n        //  - rotated_freetexts.pdf\n        // Only small variations between the original annotation and its editor\n        // are allowed.\n\n        // position is the position of the first glyph in the annotation\n        // and it's relative to its container.\n        const { position } = this._initialData;\n        let [tx, ty] = this.getInitialTranslation();\n        [tx, ty] = this.pageTranslationToScreen(tx, ty);\n        const [pageWidth, pageHeight] = this.pageDimensions;\n        const [pageX, pageY] = this.pageTranslation;\n        let posX, posY;\n        switch (this.rotation) {\n          case 0:\n            posX = baseX + (position[0] - pageX) / pageWidth;\n            posY = baseY + this.height - (position[1] - pageY) / pageHeight;\n            break;\n          case 90:\n            posX = baseX + (position[0] - pageX) / pageWidth;\n            posY = baseY - (position[1] - pageY) / pageHeight;\n            [tx, ty] = [ty, -tx];\n            break;\n          case 180:\n            posX = baseX - this.width + (position[0] - pageX) / pageWidth;\n            posY = baseY - (position[1] - pageY) / pageHeight;\n            [tx, ty] = [-tx, -ty];\n            break;\n          case 270:\n            posX =\n              baseX +\n              (position[0] - pageX - this.height * pageHeight) / pageWidth;\n            posY =\n              baseY +\n              (position[1] - pageY - this.width * pageWidth) / pageHeight;\n            [tx, ty] = [-ty, tx];\n            break;\n        }\n        this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);\n      } else {\n        this._moveAfterPaste(baseX, baseY);\n      }\n\n      this.#setContent();\n      this._isDraggable = true;\n      this.editorDiv.contentEditable = false;\n    } else {\n      this._isDraggable = false;\n      this.editorDiv.contentEditable = true;\n    }\n\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n      this.div.setAttribute(\"annotation-id\", this.annotationElementId);\n    }\n\n    return this.div;\n  }\n\n  static #getNodeContent(node) {\n    return (\n      node.nodeType === Node.TEXT_NODE ? node.nodeValue : node.innerText\n    ).replaceAll(EOL_PATTERN, \"\");\n  }\n\n  editorDivPaste(event) {\n    const clipboardData = event.clipboardData || window.clipboardData;\n    const { types } = clipboardData;\n    if (types.length === 1 && types[0] === \"text/plain\") {\n      return;\n    }\n\n    event.preventDefault();\n    const paste = FreeTextEditor.#deserializeContent(\n      clipboardData.getData(\"text\") || \"\"\n    ).replaceAll(EOL_PATTERN, \"\\n\");\n    if (!paste) {\n      return;\n    }\n    const selection = window.getSelection();\n    if (!selection.rangeCount) {\n      return;\n    }\n    this.editorDiv.normalize();\n    selection.deleteFromDocument();\n    const range = selection.getRangeAt(0);\n    if (!paste.includes(\"\\n\")) {\n      range.insertNode(document.createTextNode(paste));\n      this.editorDiv.normalize();\n      selection.collapseToStart();\n      return;\n    }\n\n    // Collect the text before and after the caret.\n    const { startContainer, startOffset } = range;\n    const bufferBefore = [];\n    const bufferAfter = [];\n    if (startContainer.nodeType === Node.TEXT_NODE) {\n      const parent = startContainer.parentElement;\n      bufferAfter.push(\n        startContainer.nodeValue.slice(startOffset).replaceAll(EOL_PATTERN, \"\")\n      );\n      if (parent !== this.editorDiv) {\n        let buffer = bufferBefore;\n        for (const child of this.editorDiv.childNodes) {\n          if (child === parent) {\n            buffer = bufferAfter;\n            continue;\n          }\n          buffer.push(FreeTextEditor.#getNodeContent(child));\n        }\n      }\n      bufferBefore.push(\n        startContainer.nodeValue\n          .slice(0, startOffset)\n          .replaceAll(EOL_PATTERN, \"\")\n      );\n    } else if (startContainer === this.editorDiv) {\n      let buffer = bufferBefore;\n      let i = 0;\n      for (const child of this.editorDiv.childNodes) {\n        if (i++ === startOffset) {\n          buffer = bufferAfter;\n        }\n        buffer.push(FreeTextEditor.#getNodeContent(child));\n      }\n    }\n    this.#content = `${bufferBefore.join(\"\\n\")}${paste}${bufferAfter.join(\"\\n\")}`;\n    this.#setContent();\n\n    // Set the caret at the right position.\n    const newRange = new Range();\n    let beforeLength = Math.sumPrecise(bufferBefore.map(line => line.length));\n    for (const { firstChild } of this.editorDiv.childNodes) {\n      // Each child is either a div with a text node or a br element.\n      if (firstChild.nodeType === Node.TEXT_NODE) {\n        const length = firstChild.nodeValue.length;\n        if (beforeLength <= length) {\n          newRange.setStart(firstChild, beforeLength);\n          newRange.setEnd(firstChild, beforeLength);\n          break;\n        }\n        beforeLength -= length;\n      }\n    }\n    selection.removeAllRanges();\n    selection.addRange(newRange);\n  }\n\n  #setContent() {\n    this.editorDiv.replaceChildren();\n    if (!this.#content) {\n      return;\n    }\n    for (const line of this.#content.split(\"\\n\")) {\n      const div = document.createElement(\"div\");\n      div.append(\n        line ? document.createTextNode(line) : document.createElement(\"br\")\n      );\n      this.editorDiv.append(div);\n    }\n  }\n\n  #serializeContent() {\n    return this.#content.replaceAll(\"\\xa0\", \" \");\n  }\n\n  static #deserializeContent(content) {\n    return content.replaceAll(\" \", \"\\xa0\");\n  }\n\n  /** @inheritdoc */\n  get contentDiv() {\n    return this.editorDiv;\n  }\n\n  /** @inheritdoc */\n  getPDFRect() {\n    const padding = FreeTextEditor._internalPadding * this.parentScale;\n    return this.getRect(padding, padding);\n  }\n\n  /** @inheritdoc */\n  static async deserialize(data, parent, uiManager) {\n    let initialData = null;\n    if (data instanceof FreeTextAnnotationElement) {\n      const {\n        data: {\n          defaultAppearanceData: { fontSize, fontColor },\n          rect,\n          rotation,\n          id,\n          popupRef,\n          richText,\n          contentsObj,\n          creationDate,\n          modificationDate,\n        },\n        textContent,\n        textPosition,\n        parent: {\n          page: { pageNumber },\n        },\n      } = data;\n      // textContent is supposed to be an array of strings containing each line\n      // of text. However, it can be null or empty.\n      if (!textContent || textContent.length === 0) {\n        // Empty annotation.\n        return null;\n      }\n      initialData = data = {\n        annotationType: AnnotationEditorType.FREETEXT,\n        color: Array.from(fontColor),\n        fontSize,\n        value: textContent.join(\"\\n\"),\n        position: textPosition,\n        pageIndex: pageNumber - 1,\n        rect: rect.slice(0),\n        rotation,\n        annotationElementId: id,\n        id,\n        deleted: false,\n        popupRef,\n        comment: contentsObj?.str || null,\n        richText,\n        creationDate,\n        modificationDate,\n      };\n    }\n    const editor = await super.deserialize(data, parent, uiManager);\n    editor.#fontSize = data.fontSize;\n    editor.color = Util.makeHexColor(...data.color);\n    editor.#content = FreeTextEditor.#deserializeContent(data.value);\n    editor._initialData = initialData;\n    if (data.comment) {\n      editor.setCommentData(data);\n    }\n\n    return editor;\n  }\n\n  /** @inheritdoc */\n  serialize(isForCopying = false) {\n    if (this.isEmpty()) {\n      return null;\n    }\n\n    if (this.deleted) {\n      return this.serializeDeleted();\n    }\n\n    const color = AnnotationEditor._colorManager.convert(\n      this.isAttachedToDOM ? getComputedStyle(this.editorDiv).color : this.color\n    );\n    const serialized = Object.assign(super.serialize(isForCopying), {\n      color,\n      fontSize: this.#fontSize,\n      value: this.#serializeContent(),\n    });\n    this.addComment(serialized);\n\n    if (isForCopying) {\n      // Don't add the id when copying because the pasted editor mustn't be\n      // linked to an existing annotation.\n      serialized.isCopy = true;\n      return serialized;\n    }\n\n    if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n      return null;\n    }\n\n    serialized.id = this.annotationElementId;\n\n    return serialized;\n  }\n\n  #hasElementChanged(serialized) {\n    const { value, fontSize, color, pageIndex } = this._initialData;\n\n    return (\n      this.hasEditedComment ||\n      this._hasBeenMoved ||\n      serialized.value !== value ||\n      serialized.fontSize !== fontSize ||\n      serialized.color.some((c, i) => c !== color[i]) ||\n      serialized.pageIndex !== pageIndex\n    );\n  }\n\n  /** @inheritdoc */\n  renderAnnotationElement(annotation) {\n    const content = super.renderAnnotationElement(annotation);\n    if (!content) {\n      return null;\n    }\n    const { style } = content;\n    style.fontSize = `calc(${this.#fontSize}px * var(--total-scale-factor))`;\n    style.color = this.color;\n\n    content.replaceChildren();\n    for (const line of this.#content.split(\"\\n\")) {\n      const div = document.createElement(\"div\");\n      div.append(\n        line ? document.createTextNode(line) : document.createElement(\"br\")\n      );\n      content.append(div);\n    }\n\n    annotation.updateEdited({\n      rect: this.getPDFRect(),\n      popup:\n        this._uiManager.hasCommentManager() || this.hasEditedComment\n          ? this.comment\n          : { text: this.#content },\n    });\n\n    return content;\n  }\n\n  resetAnnotationElement(annotation) {\n    super.resetAnnotationElement(annotation);\n    annotation.resetEdited();\n  }\n}\n\nexport { FreeTextEditor };\n", "/* Copyright 2023 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { unreachable } from \"../../../shared/util.js\";\n\nclass Outline {\n  static PRECISION = 1e-4;\n\n  /**\n   * @returns {string} The SVG path of the outline.\n   */\n  toSVGPath() {\n    unreachable(\"Abstract method `toSVGPath` must be implemented.\");\n  }\n\n  /**\n   * @type {Object|null} The bounding box of the outline.\n   */\n  // eslint-disable-next-line getter-return\n  get box() {\n    unreachable(\"Abstract getter `box` must be implemented.\");\n  }\n\n  serialize(_bbox, _rotation) {\n    unreachable(\"Abstract method `serialize` must be implemented.\");\n  }\n\n  static _rescale(src, tx, ty, sx, sy, dest) {\n    dest ||= new Float32Array(src.length);\n    for (let i = 0, ii = src.length; i < ii; i += 2) {\n      dest[i] = tx + src[i] * sx;\n      dest[i + 1] = ty + src[i + 1] * sy;\n    }\n    return dest;\n  }\n\n  static _rescaleAndSwap(src, tx, ty, sx, sy, dest) {\n    dest ||= new Float32Array(src.length);\n    for (let i = 0, ii = src.length; i < ii; i += 2) {\n      dest[i] = tx + src[i + 1] * sx;\n      dest[i + 1] = ty + src[i] * sy;\n    }\n    return dest;\n  }\n\n  static _translate(src, tx, ty, dest) {\n    dest ||= new Float32Array(src.length);\n    for (let i = 0, ii = src.length; i < ii; i += 2) {\n      dest[i] = tx + src[i];\n      dest[i + 1] = ty + src[i + 1];\n    }\n    return dest;\n  }\n\n  static svgRound(x) {\n    // 0.1234 will be 1234 and this way we economize 2 bytes per number.\n    // Of course, it makes sense only when the viewBox is [0 0 10000 10000].\n    // And it helps to avoid bugs like:\n    //  https://bugzilla.mozilla.org/show_bug.cgi?id=1929340\n    return Math.round(x * 10000);\n  }\n\n  static _normalizePoint(x, y, parentWidth, parentHeight, rotation) {\n    switch (rotation) {\n      case 90:\n        return [1 - y / parentWidth, x / parentHeight];\n      case 180:\n        return [1 - x / parentWidth, 1 - y / parentHeight];\n      case 270:\n        return [y / parentWidth, 1 - x / parentHeight];\n      default:\n        return [x / parentWidth, y / parentHeight];\n    }\n  }\n\n  static _normalizePagePoint(x, y, rotation) {\n    switch (rotation) {\n      case 90:\n        return [1 - y, x];\n      case 180:\n        return [1 - x, 1 - y];\n      case 270:\n        return [y, 1 - x];\n      default:\n        return [x, y];\n    }\n  }\n\n  static createBezierPoints(x1, y1, x2, y2, x3, y3) {\n    return [\n      (x1 + 5 * x2) / 6,\n      (y1 + 5 * y2) / 6,\n      (5 * x2 + x3) / 6,\n      (5 * y2 + y3) / 6,\n      (x2 + x3) / 2,\n      (y2 + y3) / 2,\n    ];\n  }\n}\n\nexport { Outline };\n", "/* Copyright 2024 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Outline } from \"./outline.js\";\nimport { Util } from \"../../../shared/util.js\";\n\nclass FreeDrawOutliner {\n  #box;\n\n  #bottom = [];\n\n  #innerMargin;\n\n  #isLTR;\n\n  #top = [];\n\n  // The first 6 elements are the last 3 points of the top part of the outline.\n  // The next 6 elements are the last 3 points of the line.\n  // The next 6 elements are the last 3 points of the bottom part of the\n  // outline.\n  // We track the last 3 points in order to be able to:\n  //  - compute the normal of the line,\n  //  - compute the control points of the quadratic Bézier curve.\n  #last = new Float32Array(18);\n\n  #lastX;\n\n  #lastY;\n\n  #min;\n\n  #min_dist;\n\n  #scaleFactor;\n\n  #thickness;\n\n  #points = [];\n\n  static #MIN_DIST = 8;\n\n  static #MIN_DIFF = 2;\n\n  static #MIN = FreeDrawOutliner.#MIN_DIST + FreeDrawOutliner.#MIN_DIFF;\n\n  constructor({ x, y }, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n    this.#box = box;\n    this.#thickness = thickness * scaleFactor;\n    this.#isLTR = isLTR;\n    this.#last.set([NaN, NaN, NaN, NaN, x, y], 6);\n    this.#innerMargin = innerMargin;\n    this.#min_dist = FreeDrawOutliner.#MIN_DIST * scaleFactor;\n    this.#min = FreeDrawOutliner.#MIN * scaleFactor;\n    this.#scaleFactor = scaleFactor;\n    this.#points.push(x, y);\n  }\n\n  isEmpty() {\n    // When we add a second point then this.#last.slice(6) will be something\n    // like [NaN, NaN, firstX, firstY, secondX, secondY,...] so having a NaN\n    // at index 8 means that we've only one point.\n    return isNaN(this.#last[8]);\n  }\n\n  #getLastCoords() {\n    const lastTop = this.#last.subarray(4, 6);\n    const lastBottom = this.#last.subarray(16, 18);\n    const [x, y, width, height] = this.#box;\n\n    return [\n      (this.#lastX + (lastTop[0] - lastBottom[0]) / 2 - x) / width,\n      (this.#lastY + (lastTop[1] - lastBottom[1]) / 2 - y) / height,\n      (this.#lastX + (lastBottom[0] - lastTop[0]) / 2 - x) / width,\n      (this.#lastY + (lastBottom[1] - lastTop[1]) / 2 - y) / height,\n    ];\n  }\n\n  add({ x, y }) {\n    this.#lastX = x;\n    this.#lastY = y;\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n    let [x1, y1, x2, y2] = this.#last.subarray(8, 12);\n    const diffX = x - x2;\n    const diffY = y - y2;\n    const d = Math.hypot(diffX, diffY);\n    if (d < this.#min) {\n      // The idea is to avoid garbage points around the last point.\n      // When the points are too close, it just leads to bad normal vectors and\n      // control points.\n      return false;\n    }\n    const diffD = d - this.#min_dist;\n    const K = diffD / d;\n    const shiftX = K * diffX;\n    const shiftY = K * diffY;\n\n    // We update the last 3 points of the line.\n    let x0 = x1;\n    let y0 = y1;\n    x1 = x2;\n    y1 = y2;\n    x2 += shiftX;\n    y2 += shiftY;\n\n    // We keep track of the points in order to be able to compute the focus\n    // outline.\n    this.#points?.push(x, y);\n\n    // Create the normal unit vector.\n    // |(shiftX, shiftY)| = |K| * |(diffX, diffY)| = |K| * d = diffD.\n    const nX = -shiftY / diffD;\n    const nY = shiftX / diffD;\n    const thX = nX * this.#thickness;\n    const thY = nY * this.#thickness;\n    this.#last.set(this.#last.subarray(2, 8), 0);\n    this.#last.set([x2 + thX, y2 + thY], 4);\n    this.#last.set(this.#last.subarray(14, 18), 12);\n    this.#last.set([x2 - thX, y2 - thY], 16);\n\n    if (isNaN(this.#last[6])) {\n      if (this.#top.length === 0) {\n        this.#last.set([x1 + thX, y1 + thY], 2);\n        this.#top.push(\n          NaN,\n          NaN,\n          NaN,\n          NaN,\n          (x1 + thX - layerX) / layerWidth,\n          (y1 + thY - layerY) / layerHeight\n        );\n        this.#last.set([x1 - thX, y1 - thY], 14);\n        this.#bottom.push(\n          NaN,\n          NaN,\n          NaN,\n          NaN,\n          (x1 - thX - layerX) / layerWidth,\n          (y1 - thY - layerY) / layerHeight\n        );\n      }\n      this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n      return !this.isEmpty();\n    }\n\n    this.#last.set([x0, y0, x1, y1, x2, y2], 6);\n\n    const angle = Math.abs(\n      Math.atan2(y0 - y1, x0 - x1) - Math.atan2(shiftY, shiftX)\n    );\n    if (angle < Math.PI / 2) {\n      // In order to avoid some possible artifacts, we're going to use the a\n      // straight line instead of a quadratic Bézier curve.\n      [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n      this.#top.push(\n        NaN,\n        NaN,\n        NaN,\n        NaN,\n        ((x1 + x2) / 2 - layerX) / layerWidth,\n        ((y1 + y2) / 2 - layerY) / layerHeight\n      );\n      [x1, y1, x0, y0] = this.#last.subarray(14, 18);\n      this.#bottom.push(\n        NaN,\n        NaN,\n        NaN,\n        NaN,\n        ((x0 + x1) / 2 - layerX) / layerWidth,\n        ((y0 + y1) / 2 - layerY) / layerHeight\n      );\n      return true;\n    }\n\n    // Control points and the final point for the quadratic Bézier curve.\n    [x0, y0, x1, y1, x2, y2] = this.#last.subarray(0, 6);\n    this.#top.push(\n      ((x0 + 5 * x1) / 6 - layerX) / layerWidth,\n      ((y0 + 5 * y1) / 6 - layerY) / layerHeight,\n      ((5 * x1 + x2) / 6 - layerX) / layerWidth,\n      ((5 * y1 + y2) / 6 - layerY) / layerHeight,\n      ((x1 + x2) / 2 - layerX) / layerWidth,\n      ((y1 + y2) / 2 - layerY) / layerHeight\n    );\n    [x2, y2, x1, y1, x0, y0] = this.#last.subarray(12, 18);\n    this.#bottom.push(\n      ((x0 + 5 * x1) / 6 - layerX) / layerWidth,\n      ((y0 + 5 * y1) / 6 - layerY) / layerHeight,\n      ((5 * x1 + x2) / 6 - layerX) / layerWidth,\n      ((5 * y1 + y2) / 6 - layerY) / layerHeight,\n      ((x1 + x2) / 2 - layerX) / layerWidth,\n      ((y1 + y2) / 2 - layerY) / layerHeight\n    );\n    return true;\n  }\n\n  toSVGPath() {\n    if (this.isEmpty()) {\n      // We've only one point.\n      return \"\";\n    }\n    const top = this.#top;\n    const bottom = this.#bottom;\n\n    if (isNaN(this.#last[6]) && !this.isEmpty()) {\n      // We've only two points.\n      return this.#toSVGPathTwoPoints();\n    }\n\n    const buffer = [];\n    buffer.push(`M${top[4]} ${top[5]}`);\n    for (let i = 6; i < top.length; i += 6) {\n      if (isNaN(top[i])) {\n        buffer.push(`L${top[i + 4]} ${top[i + 5]}`);\n      } else {\n        buffer.push(\n          `C${top[i]} ${top[i + 1]} ${top[i + 2]} ${top[i + 3]} ${top[i + 4]} ${\n            top[i + 5]\n          }`\n        );\n      }\n    }\n\n    this.#toSVGPathEnd(buffer);\n\n    for (let i = bottom.length - 6; i >= 6; i -= 6) {\n      if (isNaN(bottom[i])) {\n        buffer.push(`L${bottom[i + 4]} ${bottom[i + 5]}`);\n      } else {\n        buffer.push(\n          `C${bottom[i]} ${bottom[i + 1]} ${bottom[i + 2]} ${bottom[i + 3]} ${\n            bottom[i + 4]\n          } ${bottom[i + 5]}`\n        );\n      }\n    }\n\n    this.#toSVGPathStart(buffer);\n\n    return buffer.join(\" \");\n  }\n\n  #toSVGPathTwoPoints() {\n    const [x, y, width, height] = this.#box;\n    const [lastTopX, lastTopY, lastBottomX, lastBottomY] =\n      this.#getLastCoords();\n\n    return `M${(this.#last[2] - x) / width} ${\n      (this.#last[3] - y) / height\n    } L${(this.#last[4] - x) / width} ${(this.#last[5] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${\n      (this.#last[16] - x) / width\n    } ${(this.#last[17] - y) / height} L${(this.#last[14] - x) / width} ${\n      (this.#last[15] - y) / height\n    } Z`;\n  }\n\n  #toSVGPathStart(buffer) {\n    const bottom = this.#bottom;\n    buffer.push(`L${bottom[4]} ${bottom[5]} Z`);\n  }\n\n  #toSVGPathEnd(buffer) {\n    const [x, y, width, height] = this.#box;\n    const lastTop = this.#last.subarray(4, 6);\n    const lastBottom = this.#last.subarray(16, 18);\n    const [lastTopX, lastTopY, lastBottomX, lastBottomY] =\n      this.#getLastCoords();\n\n    buffer.push(\n      `L${(lastTop[0] - x) / width} ${(lastTop[1] - y) / height} L${lastTopX} ${lastTopY} L${lastBottomX} ${lastBottomY} L${\n        (lastBottom[0] - x) / width\n      } ${(lastBottom[1] - y) / height}`\n    );\n  }\n\n  newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n    return new FreeDrawOutline(\n      outline,\n      points,\n      box,\n      scaleFactor,\n      innerMargin,\n      isLTR\n    );\n  }\n\n  getOutlines() {\n    const top = this.#top;\n    const bottom = this.#bottom;\n    const last = this.#last;\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n\n    const points = new Float32Array((this.#points?.length ?? 0) + 2);\n    for (let i = 0, ii = points.length - 2; i < ii; i += 2) {\n      points[i] = (this.#points[i] - layerX) / layerWidth;\n      points[i + 1] = (this.#points[i + 1] - layerY) / layerHeight;\n    }\n    points[points.length - 2] = (this.#lastX - layerX) / layerWidth;\n    points[points.length - 1] = (this.#lastY - layerY) / layerHeight;\n\n    if (isNaN(last[6]) && !this.isEmpty()) {\n      // We've only two points.\n      return this.#getOutlineTwoPoints(points);\n    }\n\n    const outline = new Float32Array(\n      this.#top.length + 24 + this.#bottom.length\n    );\n    let N = top.length;\n    for (let i = 0; i < N; i += 2) {\n      if (isNaN(top[i])) {\n        outline[i] = outline[i + 1] = NaN;\n        continue;\n      }\n      outline[i] = top[i];\n      outline[i + 1] = top[i + 1];\n    }\n\n    N = this.#getOutlineEnd(outline, N);\n\n    for (let i = bottom.length - 6; i >= 6; i -= 6) {\n      for (let j = 0; j < 6; j += 2) {\n        if (isNaN(bottom[i + j])) {\n          outline[N] = outline[N + 1] = NaN;\n          N += 2;\n          continue;\n        }\n        outline[N] = bottom[i + j];\n        outline[N + 1] = bottom[i + j + 1];\n        N += 2;\n      }\n    }\n\n    this.#getOutlineStart(outline, N);\n\n    return this.newFreeDrawOutline(\n      outline,\n      points,\n      this.#box,\n      this.#scaleFactor,\n      this.#innerMargin,\n      this.#isLTR\n    );\n  }\n\n  #getOutlineTwoPoints(points) {\n    const last = this.#last;\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n    const [lastTopX, lastTopY, lastBottomX, lastBottomY] =\n      this.#getLastCoords();\n    const outline = new Float32Array(36);\n    outline.set(\n      [\n        NaN,\n        NaN,\n        NaN,\n        NaN,\n        (last[2] - layerX) / layerWidth,\n        (last[3] - layerY) / layerHeight,\n        NaN,\n        NaN,\n        NaN,\n        NaN,\n        (last[4] - layerX) / layerWidth,\n        (last[5] - layerY) / layerHeight,\n        NaN,\n        NaN,\n        NaN,\n        NaN,\n        lastTopX,\n        lastTopY,\n        NaN,\n        NaN,\n        NaN,\n        NaN,\n        lastBottomX,\n        lastBottomY,\n        NaN,\n        NaN,\n        NaN,\n        NaN,\n        (last[16] - layerX) / layerWidth,\n        (last[17] - layerY) / layerHeight,\n        NaN,\n        NaN,\n        NaN,\n        NaN,\n        (last[14] - layerX) / layerWidth,\n        (last[15] - layerY) / layerHeight,\n      ],\n      0\n    );\n    return this.newFreeDrawOutline(\n      outline,\n      points,\n      this.#box,\n      this.#scaleFactor,\n      this.#innerMargin,\n      this.#isLTR\n    );\n  }\n\n  #getOutlineStart(outline, pos) {\n    const bottom = this.#bottom;\n    outline.set([NaN, NaN, NaN, NaN, bottom[4], bottom[5]], pos);\n    return (pos += 6);\n  }\n\n  #getOutlineEnd(outline, pos) {\n    const lastTop = this.#last.subarray(4, 6);\n    const lastBottom = this.#last.subarray(16, 18);\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n    const [lastTopX, lastTopY, lastBottomX, lastBottomY] =\n      this.#getLastCoords();\n    outline.set(\n      [\n        NaN,\n        NaN,\n        NaN,\n        NaN,\n        (lastTop[0] - layerX) / layerWidth,\n        (lastTop[1] - layerY) / layerHeight,\n        NaN,\n        NaN,\n        NaN,\n        NaN,\n        lastTopX,\n        lastTopY,\n        NaN,\n        NaN,\n        NaN,\n        NaN,\n        lastBottomX,\n        lastBottomY,\n        NaN,\n        NaN,\n        NaN,\n        NaN,\n        (lastBottom[0] - layerX) / layerWidth,\n        (lastBottom[1] - layerY) / layerHeight,\n      ],\n      pos\n    );\n    return (pos += 24);\n  }\n}\n\nclass FreeDrawOutline extends Outline {\n  #box;\n\n  #bbox = new Float32Array(4);\n\n  #innerMargin;\n\n  #isLTR;\n\n  #points;\n\n  #scaleFactor;\n\n  #outline;\n\n  constructor(outline, points, box, scaleFactor, innerMargin, isLTR) {\n    super();\n    this.#outline = outline;\n    this.#points = points;\n    this.#box = box;\n    this.#scaleFactor = scaleFactor;\n    this.#innerMargin = innerMargin;\n    this.#isLTR = isLTR;\n    this.firstPoint = [NaN, NaN];\n    this.lastPoint = [NaN, NaN];\n    this.#computeMinMax(isLTR);\n\n    const [x, y, width, height] = this.#bbox;\n    for (let i = 0, ii = outline.length; i < ii; i += 2) {\n      outline[i] = (outline[i] - x) / width;\n      outline[i + 1] = (outline[i + 1] - y) / height;\n    }\n    for (let i = 0, ii = points.length; i < ii; i += 2) {\n      points[i] = (points[i] - x) / width;\n      points[i + 1] = (points[i + 1] - y) / height;\n    }\n  }\n\n  toSVGPath() {\n    const buffer = [`M${this.#outline[4]} ${this.#outline[5]}`];\n    for (let i = 6, ii = this.#outline.length; i < ii; i += 6) {\n      if (isNaN(this.#outline[i])) {\n        buffer.push(`L${this.#outline[i + 4]} ${this.#outline[i + 5]}`);\n        continue;\n      }\n      buffer.push(\n        `C${this.#outline[i]} ${this.#outline[i + 1]} ${this.#outline[i + 2]} ${\n          this.#outline[i + 3]\n        } ${this.#outline[i + 4]} ${this.#outline[i + 5]}`\n      );\n    }\n    buffer.push(\"Z\");\n    return buffer.join(\" \");\n  }\n\n  serialize([blX, blY, trX, trY], rotation) {\n    const width = trX - blX;\n    const height = trY - blY;\n    let outline;\n    let points;\n    switch (rotation) {\n      case 0:\n        outline = Outline._rescale(this.#outline, blX, trY, width, -height);\n        points = Outline._rescale(this.#points, blX, trY, width, -height);\n        break;\n      case 90:\n        outline = Outline._rescaleAndSwap(\n          this.#outline,\n          blX,\n          blY,\n          width,\n          height\n        );\n        points = Outline._rescaleAndSwap(this.#points, blX, blY, width, height);\n        break;\n      case 180:\n        outline = Outline._rescale(this.#outline, trX, blY, -width, height);\n        points = Outline._rescale(this.#points, trX, blY, -width, height);\n        break;\n      case 270:\n        outline = Outline._rescaleAndSwap(\n          this.#outline,\n          trX,\n          trY,\n          -width,\n          -height\n        );\n        points = Outline._rescaleAndSwap(\n          this.#points,\n          trX,\n          trY,\n          -width,\n          -height\n        );\n        break;\n    }\n    return { outline: Array.from(outline), points: [Array.from(points)] };\n  }\n\n  #computeMinMax(isLTR) {\n    const outline = this.#outline;\n    let lastX = outline[4];\n    let lastY = outline[5];\n    const minMax = [lastX, lastY, lastX, lastY];\n    let firstPointX = lastX;\n    let firstPointY = lastY;\n    let lastPointX = lastX;\n    let lastPointY = lastY;\n    const ltrCallback = isLTR ? Math.max : Math.min;\n    const bezierBbox = new Float32Array(4);\n\n    for (let i = 6, ii = outline.length; i < ii; i += 6) {\n      const x = outline[i + 4],\n        y = outline[i + 5];\n\n      if (isNaN(outline[i])) {\n        Util.pointBoundingBox(x, y, minMax);\n\n        if (firstPointY > y) {\n          firstPointX = x;\n          firstPointY = y;\n        } else if (firstPointY === y) {\n          firstPointX = ltrCallback(firstPointX, x);\n        }\n        if (lastPointY < y) {\n          lastPointX = x;\n          lastPointY = y;\n        } else if (lastPointY === y) {\n          lastPointX = ltrCallback(lastPointX, x);\n        }\n      } else {\n        bezierBbox[0] = bezierBbox[1] = Infinity;\n        bezierBbox[2] = bezierBbox[3] = -Infinity;\n        Util.bezierBoundingBox(\n          lastX,\n          lastY,\n          ...outline.slice(i, i + 6),\n          bezierBbox\n        );\n\n        Util.rectBoundingBox(\n          bezierBbox[0],\n          bezierBbox[1],\n          bezierBbox[2],\n          bezierBbox[3],\n          minMax\n        );\n\n        if (firstPointY > bezierBbox[1]) {\n          firstPointX = bezierBbox[0];\n          firstPointY = bezierBbox[1];\n        } else if (firstPointY === bezierBbox[1]) {\n          firstPointX = ltrCallback(firstPointX, bezierBbox[0]);\n        }\n        if (lastPointY < bezierBbox[3]) {\n          lastPointX = bezierBbox[2];\n          lastPointY = bezierBbox[3];\n        } else if (lastPointY === bezierBbox[3]) {\n          lastPointX = ltrCallback(lastPointX, bezierBbox[2]);\n        }\n      }\n      lastX = x;\n      lastY = y;\n    }\n\n    const bbox = this.#bbox;\n    bbox[0] = minMax[0] - this.#innerMargin;\n    bbox[1] = minMax[1] - this.#innerMargin;\n    bbox[2] = minMax[2] - minMax[0] + 2 * this.#innerMargin;\n    bbox[3] = minMax[3] - minMax[1] + 2 * this.#innerMargin;\n    this.firstPoint = [firstPointX, firstPointY];\n    this.lastPoint = [lastPointX, lastPointY];\n  }\n\n  get box() {\n    return this.#bbox;\n  }\n\n  newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n    return new FreeDrawOutliner(\n      point,\n      box,\n      scaleFactor,\n      thickness,\n      isLTR,\n      innerMargin\n    );\n  }\n\n  getNewOutline(thickness, innerMargin) {\n    // Build the outline of the highlight to use as the focus outline.\n    const [x, y, width, height] = this.#bbox;\n    const [layerX, layerY, layerWidth, layerHeight] = this.#box;\n    const sx = width * layerWidth;\n    const sy = height * layerHeight;\n    const tx = x * layerWidth + layerX;\n    const ty = y * layerHeight + layerY;\n    const outliner = this.newOutliner(\n      {\n        x: this.#points[0] * sx + tx,\n        y: this.#points[1] * sy + ty,\n      },\n      this.#box,\n      this.#scaleFactor,\n      thickness,\n      this.#isLTR,\n      innerMargin ?? this.#innerMargin\n    );\n    for (let i = 2; i < this.#points.length; i += 2) {\n      outliner.add({\n        x: this.#points[i] * sx + tx,\n        y: this.#points[i + 1] * sy + ty,\n      });\n    }\n    return outliner.getOutlines();\n  }\n}\n\nexport { FreeDrawOutline, FreeDrawOutliner };\n", "/* Copyright 2023 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FreeDrawOutline, FreeDrawOutliner } from \"./freedraw.js\";\nimport { Outline } from \"./outline.js\";\nimport { Util } from \"../../../shared/util.js\";\n\nclass HighlightOutliner {\n  #box;\n\n  #firstPoint;\n\n  #lastPoint;\n\n  #verticalEdges = [];\n\n  #intervals = [];\n\n  /**\n   * Construct an outliner.\n   * @param {Array<Object>} boxes - An array of axis-aligned rectangles.\n   * @param {number} borderWidth - The width of the border of the boxes, it\n   *   allows to make the boxes bigger (or smaller).\n   * @param {number} innerMargin - The margin between the boxes and the\n   *   outlines. It's important to not have a null innerMargin when we want to\n   *   draw the outline else the stroked outline could be clipped because of its\n   *   width.\n   * @param {boolean} isLTR - true if we're in LTR mode. It's used to determine\n   *   the last point of the boxes.\n   */\n  constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n    const minMax = [Infinity, Infinity, -Infinity, -Infinity];\n\n    // We round the coordinates to slightly reduce the number of edges in the\n    // final outlines.\n    const NUMBER_OF_DIGITS = 4;\n    const EPSILON = 10 ** -NUMBER_OF_DIGITS;\n\n    // The coordinates of the boxes are in the page coordinate system.\n    for (const { x, y, width, height } of boxes) {\n      const x1 = Math.floor((x - borderWidth) / EPSILON) * EPSILON;\n      const x2 = Math.ceil((x + width + borderWidth) / EPSILON) * EPSILON;\n      const y1 = Math.floor((y - borderWidth) / EPSILON) * EPSILON;\n      const y2 = Math.ceil((y + height + borderWidth) / EPSILON) * EPSILON;\n      const left = [x1, y1, y2, true];\n      const right = [x2, y1, y2, false];\n      this.#verticalEdges.push(left, right);\n\n      Util.rectBoundingBox(x1, y1, x2, y2, minMax);\n    }\n\n    const bboxWidth = minMax[2] - minMax[0] + 2 * innerMargin;\n    const bboxHeight = minMax[3] - minMax[1] + 2 * innerMargin;\n    const shiftedMinX = minMax[0] - innerMargin;\n    const shiftedMinY = minMax[1] - innerMargin;\n    let firstPointX = isLTR ? -Infinity : Infinity;\n    let firstPointY = Infinity;\n    const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2);\n    const lastPoint = [lastEdge[0], lastEdge[2]];\n\n    // Convert the coordinates of the edges into box coordinates.\n    for (const edge of this.#verticalEdges) {\n      const [x, y1, y2, left] = edge;\n      if (!left && isLTR) {\n        if (y1 < firstPointY) {\n          firstPointY = y1;\n          firstPointX = x;\n        } else if (y1 === firstPointY) {\n          firstPointX = Math.max(firstPointX, x);\n        }\n      } else if (left && !isLTR) {\n        if (y1 < firstPointY) {\n          firstPointY = y1;\n          firstPointX = x;\n        } else if (y1 === firstPointY) {\n          firstPointX = Math.min(firstPointX, x);\n        }\n      }\n\n      edge[0] = (x - shiftedMinX) / bboxWidth;\n      edge[1] = (y1 - shiftedMinY) / bboxHeight;\n      edge[2] = (y2 - shiftedMinY) / bboxHeight;\n    }\n\n    this.#box = new Float32Array([\n      shiftedMinX,\n      shiftedMinY,\n      bboxWidth,\n      bboxHeight,\n    ]);\n    this.#firstPoint = [firstPointX, firstPointY];\n    this.#lastPoint = lastPoint;\n  }\n\n  getOutlines() {\n    // We begin to sort lexicographically the vertical edges by their abscissa,\n    // and then by their ordinate.\n    this.#verticalEdges.sort(\n      (a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]\n    );\n\n    // We're now using a sweep line algorithm to find the outlines.\n    // We start with the leftmost vertical edge, and we're going to iterate\n    // over all the vertical edges from left to right.\n    // Each time we encounter a left edge, we're going to insert the interval\n    // [y1, y2] in the set of intervals.\n    // This set of intervals is used to break the vertical edges into chunks:\n    // we only take the part of the vertical edge that isn't in the union of\n    // the intervals.\n    const outlineVerticalEdges = [];\n    for (const edge of this.#verticalEdges) {\n      if (edge[3]) {\n        // Left edge.\n        outlineVerticalEdges.push(...this.#breakEdge(edge));\n        this.#insert(edge);\n      } else {\n        // Right edge.\n        this.#remove(edge);\n        outlineVerticalEdges.push(...this.#breakEdge(edge));\n      }\n    }\n    return this.#getOutlines(outlineVerticalEdges);\n  }\n\n  #getOutlines(outlineVerticalEdges) {\n    const edges = [];\n    const allEdges = new Set();\n\n    for (const edge of outlineVerticalEdges) {\n      const [x, y1, y2] = edge;\n      edges.push([x, y1, edge], [x, y2, edge]);\n    }\n\n    // We sort lexicographically the vertices of each edge by their ordinate and\n    // by their abscissa.\n    // Every pair (v_2i, v_{2i + 1}) of vertices defines a horizontal edge.\n    // So for every vertical edge, we're going to add the two vertical edges\n    // which are connected to it through a horizontal edge.\n    edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);\n    for (let i = 0, ii = edges.length; i < ii; i += 2) {\n      const edge1 = edges[i][2];\n      const edge2 = edges[i + 1][2];\n      edge1.push(edge2);\n      edge2.push(edge1);\n      allEdges.add(edge1);\n      allEdges.add(edge2);\n    }\n    const outlines = [];\n    let outline;\n\n    while (allEdges.size > 0) {\n      const edge = allEdges.values().next().value;\n      let [x, y1, y2, edge1, edge2] = edge;\n      allEdges.delete(edge);\n      let lastPointX = x;\n      let lastPointY = y1;\n\n      outline = [x, y2];\n      outlines.push(outline);\n\n      while (true) {\n        let e;\n        if (allEdges.has(edge1)) {\n          e = edge1;\n        } else if (allEdges.has(edge2)) {\n          e = edge2;\n        } else {\n          break;\n        }\n\n        allEdges.delete(e);\n        [x, y1, y2, edge1, edge2] = e;\n\n        if (lastPointX !== x) {\n          outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);\n          lastPointX = x;\n        }\n        lastPointY = lastPointY === y1 ? y2 : y1;\n      }\n      outline.push(lastPointX, lastPointY);\n    }\n    return new HighlightOutline(\n      outlines,\n      this.#box,\n      this.#firstPoint,\n      this.#lastPoint\n    );\n  }\n\n  #binarySearch(y) {\n    const array = this.#intervals;\n    let start = 0;\n    let end = array.length - 1;\n\n    while (start <= end) {\n      const middle = (start + end) >> 1;\n      const y1 = array[middle][0];\n      if (y1 === y) {\n        return middle;\n      }\n      if (y1 < y) {\n        start = middle + 1;\n      } else {\n        end = middle - 1;\n      }\n    }\n    return end + 1;\n  }\n\n  #insert([, y1, y2]) {\n    const index = this.#binarySearch(y1);\n    this.#intervals.splice(index, 0, [y1, y2]);\n  }\n\n  #remove([, y1, y2]) {\n    const index = this.#binarySearch(y1);\n    for (let i = index; i < this.#intervals.length; i++) {\n      const [start, end] = this.#intervals[i];\n      if (start !== y1) {\n        break;\n      }\n      if (start === y1 && end === y2) {\n        this.#intervals.splice(i, 1);\n        return;\n      }\n    }\n    for (let i = index - 1; i >= 0; i--) {\n      const [start, end] = this.#intervals[i];\n      if (start !== y1) {\n        break;\n      }\n      if (start === y1 && end === y2) {\n        this.#intervals.splice(i, 1);\n        return;\n      }\n    }\n  }\n\n  #breakEdge(edge) {\n    const [x, y1, y2] = edge;\n    const results = [[x, y1, y2]];\n    const index = this.#binarySearch(y2);\n    for (let i = 0; i < index; i++) {\n      const [start, end] = this.#intervals[i];\n      for (let j = 0, jj = results.length; j < jj; j++) {\n        const [, y3, y4] = results[j];\n        if (end <= y3 || y4 <= start) {\n          // There is no intersection between the interval and the edge, hence\n          // we keep it as is.\n          continue;\n        }\n        if (y3 >= start) {\n          if (y4 > end) {\n            results[j][1] = end;\n          } else {\n            if (jj === 1) {\n              return [];\n            }\n            // The edge is included in the interval, hence we remove it.\n            results.splice(j, 1);\n            j--;\n            jj--;\n          }\n          continue;\n        }\n        results[j][2] = start;\n        if (y4 > end) {\n          results.push([x, end, y4]);\n        }\n      }\n    }\n    return results;\n  }\n}\n\nclass HighlightOutline extends Outline {\n  #box;\n\n  #outlines;\n\n  constructor(outlines, box, firstPoint, lastPoint) {\n    super();\n    this.#outlines = outlines;\n    this.#box = box;\n    this.firstPoint = firstPoint;\n    this.lastPoint = lastPoint;\n  }\n\n  toSVGPath() {\n    const buffer = [];\n    for (const polygon of this.#outlines) {\n      let [prevX, prevY] = polygon;\n      buffer.push(`M${prevX} ${prevY}`);\n      for (let i = 2; i < polygon.length; i += 2) {\n        const x = polygon[i];\n        const y = polygon[i + 1];\n        if (x === prevX) {\n          buffer.push(`V${y}`);\n          prevY = y;\n        } else if (y === prevY) {\n          buffer.push(`H${x}`);\n          prevX = x;\n        }\n      }\n      buffer.push(\"Z\");\n    }\n    return buffer.join(\" \");\n  }\n\n  /**\n   * Serialize the outlines into the PDF page coordinate system.\n   * @param {Array<number>} _bbox - the bounding box of the annotation.\n   * @param {number} _rotation - the rotation of the annotation.\n   * @returns {Array<Array<number>>}\n   */\n  serialize([blX, blY, trX, trY], _rotation) {\n    const outlines = [];\n    const width = trX - blX;\n    const height = trY - blY;\n    for (const outline of this.#outlines) {\n      const points = new Array(outline.length);\n      for (let i = 0; i < outline.length; i += 2) {\n        points[i] = blX + outline[i] * width;\n        points[i + 1] = trY - outline[i + 1] * height;\n      }\n      outlines.push(points);\n    }\n    return outlines;\n  }\n\n  get box() {\n    return this.#box;\n  }\n\n  get classNamesForOutlining() {\n    return [\"highlightOutline\"];\n  }\n}\n\nclass FreeHighlightOutliner extends FreeDrawOutliner {\n  newFreeDrawOutline(outline, points, box, scaleFactor, innerMargin, isLTR) {\n    return new FreeHighlightOutline(\n      outline,\n      points,\n      box,\n      scaleFactor,\n      innerMargin,\n      isLTR\n    );\n  }\n}\n\nclass FreeHighlightOutline extends FreeDrawOutline {\n  newOutliner(point, box, scaleFactor, thickness, isLTR, innerMargin = 0) {\n    return new FreeHighlightOutliner(\n      point,\n      box,\n      scaleFactor,\n      thickness,\n      isLTR,\n      innerMargin\n    );\n  }\n}\n\nexport { FreeHighlightOutliner, HighlightOutliner };\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\nimport {\n  AnnotationEditorParamsType,\n  AnnotationEditorType,\n  shadow,\n  Util,\n} from \"../../shared/util.js\";\nimport { bindEvents, KeyboardManager } from \"./tools.js\";\nimport {\n  FreeHighlightOutliner,\n  HighlightOutliner,\n} from \"./drawers/highlight.js\";\nimport {\n  HighlightAnnotationElement,\n  InkAnnotationElement,\n} from \"../annotation_layer.js\";\nimport { noContextMenu, stopEvent } from \"../display_utils.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { ColorPicker } from \"./color_picker.js\";\n\n/**\n * Basic draw editor in order to generate an Highlight annotation.\n */\nclass HighlightEditor extends AnnotationEditor {\n  #anchorNode = null;\n\n  #anchorOffset = 0;\n\n  #boxes;\n\n  #clipPathId = null;\n\n  #colorPicker = null;\n\n  #focusOutlines = null;\n\n  #focusNode = null;\n\n  #focusOffset = 0;\n\n  #highlightDiv = null;\n\n  #highlightOutlines = null;\n\n  #id = null;\n\n  #isFreeHighlight = false;\n\n  #firstPoint = null;\n\n  #lastPoint = null;\n\n  #outlineId = null;\n\n  #text = \"\";\n\n  #thickness;\n\n  #methodOfCreation = \"\";\n\n  static _defaultColor = null;\n\n  static _defaultOpacity = 1;\n\n  static _defaultThickness = 12;\n\n  static _type = \"highlight\";\n\n  static _editorType = AnnotationEditorType.HIGHLIGHT;\n\n  static _freeHighlightId = -1;\n\n  static _freeHighlight = null;\n\n  static _freeHighlightClipId = \"\";\n\n  static get _keyboardManager() {\n    const proto = HighlightEditor.prototype;\n    return shadow(\n      this,\n      \"_keyboardManager\",\n      new KeyboardManager([\n        [[\"ArrowLeft\", \"mac+ArrowLeft\"], proto._moveCaret, { args: [0] }],\n        [[\"ArrowRight\", \"mac+ArrowRight\"], proto._moveCaret, { args: [1] }],\n        [[\"ArrowUp\", \"mac+ArrowUp\"], proto._moveCaret, { args: [2] }],\n        [[\"ArrowDown\", \"mac+ArrowDown\"], proto._moveCaret, { args: [3] }],\n      ])\n    );\n  }\n\n  constructor(params) {\n    super({ ...params, name: \"highlightEditor\" });\n    this.color = params.color || HighlightEditor._defaultColor;\n    this.#thickness = params.thickness || HighlightEditor._defaultThickness;\n    this.opacity = params.opacity || HighlightEditor._defaultOpacity;\n    this.#boxes = params.boxes || null;\n    this.#methodOfCreation = params.methodOfCreation || \"\";\n    this.#text = params.text || \"\";\n    this._isDraggable = false;\n    this.defaultL10nId = \"pdfjs-editor-highlight-editor\";\n\n    if (params.highlightId > -1) {\n      this.#isFreeHighlight = true;\n      this.#createFreeOutlines(params);\n      this.#addToDrawLayer();\n    } else if (this.#boxes) {\n      this.#anchorNode = params.anchorNode;\n      this.#anchorOffset = params.anchorOffset;\n      this.#focusNode = params.focusNode;\n      this.#focusOffset = params.focusOffset;\n      this.#createOutlines();\n      this.#addToDrawLayer();\n      this.rotate(this.rotation);\n    }\n\n    if (!this.annotationElementId) {\n      this._uiManager.a11yAlert(\"pdfjs-editor-highlight-added-alert\");\n    }\n  }\n\n  /** @inheritdoc */\n  get telemetryInitialData() {\n    return {\n      action: \"added\",\n      type: this.#isFreeHighlight ? \"free_highlight\" : \"highlight\",\n      color: this._uiManager.getNonHCMColorName(this.color),\n      thickness: this.#thickness,\n      methodOfCreation: this.#methodOfCreation,\n    };\n  }\n\n  /** @inheritdoc */\n  get telemetryFinalData() {\n    return {\n      type: \"highlight\",\n      color: this._uiManager.getNonHCMColorName(this.color),\n    };\n  }\n\n  static computeTelemetryFinalData(data) {\n    // We want to know how many colors have been used.\n    return { numberOfColors: data.get(\"color\").size };\n  }\n\n  #createOutlines() {\n    const outliner = new HighlightOutliner(\n      this.#boxes,\n      /* borderWidth = */ 0.001\n    );\n    this.#highlightOutlines = outliner.getOutlines();\n    [this.x, this.y, this.width, this.height] = this.#highlightOutlines.box;\n\n    const outlinerForOutline = new HighlightOutliner(\n      this.#boxes,\n      /* borderWidth = */ 0.0025,\n      /* innerMargin = */ 0.001,\n      this._uiManager.direction === \"ltr\"\n    );\n    this.#focusOutlines = outlinerForOutline.getOutlines();\n\n    const { firstPoint } = this.#highlightOutlines;\n    this.#firstPoint = [\n      (firstPoint[0] - this.x) / this.width,\n      (firstPoint[1] - this.y) / this.height,\n    ];\n    // The last point is in the pages coordinate system.\n    const { lastPoint } = this.#focusOutlines;\n    this.#lastPoint = [\n      (lastPoint[0] - this.x) / this.width,\n      (lastPoint[1] - this.y) / this.height,\n    ];\n  }\n\n  #createFreeOutlines({ highlightOutlines, highlightId, clipPathId }) {\n    this.#highlightOutlines = highlightOutlines;\n    const extraThickness = 1.5;\n    this.#focusOutlines = highlightOutlines.getNewOutline(\n      /* Slightly bigger than the highlight in order to have a little\n         space between the highlight and the outline. */\n      this.#thickness / 2 + extraThickness,\n      /* innerMargin = */ 0.0025\n    );\n\n    if (highlightId >= 0) {\n      this.#id = highlightId;\n      this.#clipPathId = clipPathId;\n      // We need to redraw the highlight because we change the coordinates to be\n      // in the box coordinate system.\n      this.parent.drawLayer.finalizeDraw(highlightId, {\n        bbox: highlightOutlines.box,\n        path: {\n          d: highlightOutlines.toSVGPath(),\n        },\n      });\n      this.#outlineId = this.parent.drawLayer.drawOutline(\n        {\n          rootClass: {\n            highlightOutline: true,\n            free: true,\n          },\n          bbox: this.#focusOutlines.box,\n          path: {\n            d: this.#focusOutlines.toSVGPath(),\n          },\n        },\n        /* mustRemoveSelfIntersections = */ true\n      );\n    } else if (this.parent) {\n      const angle = this.parent.viewport.rotation;\n      this.parent.drawLayer.updateProperties(this.#id, {\n        bbox: HighlightEditor.#rotateBbox(\n          this.#highlightOutlines.box,\n          (angle - this.rotation + 360) % 360\n        ),\n        path: {\n          d: highlightOutlines.toSVGPath(),\n        },\n      });\n      this.parent.drawLayer.updateProperties(this.#outlineId, {\n        bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n        path: {\n          d: this.#focusOutlines.toSVGPath(),\n        },\n      });\n    }\n    const [x, y, width, height] = highlightOutlines.box;\n    switch (this.rotation) {\n      case 0:\n        this.x = x;\n        this.y = y;\n        this.width = width;\n        this.height = height;\n        break;\n      case 90: {\n        const [pageWidth, pageHeight] = this.parentDimensions;\n        this.x = y;\n        this.y = 1 - x;\n        this.width = (width * pageHeight) / pageWidth;\n        this.height = (height * pageWidth) / pageHeight;\n        break;\n      }\n      case 180:\n        this.x = 1 - x;\n        this.y = 1 - y;\n        this.width = width;\n        this.height = height;\n        break;\n      case 270: {\n        const [pageWidth, pageHeight] = this.parentDimensions;\n        this.x = 1 - y;\n        this.y = x;\n        this.width = (width * pageHeight) / pageWidth;\n        this.height = (height * pageWidth) / pageHeight;\n        break;\n      }\n    }\n\n    const { firstPoint } = highlightOutlines;\n    this.#firstPoint = [\n      (firstPoint[0] - x) / width,\n      (firstPoint[1] - y) / height,\n    ];\n    const { lastPoint } = this.#focusOutlines;\n    this.#lastPoint = [(lastPoint[0] - x) / width, (lastPoint[1] - y) / height];\n  }\n\n  /** @inheritdoc */\n  static initialize(l10n, uiManager) {\n    AnnotationEditor.initialize(l10n, uiManager);\n    HighlightEditor._defaultColor ||=\n      uiManager.highlightColors?.values().next().value || \"#fff066\";\n  }\n\n  /** @inheritdoc */\n  static updateDefaultParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n        HighlightEditor._defaultColor = value;\n        break;\n      case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n        HighlightEditor._defaultThickness = value;\n        break;\n    }\n  }\n\n  /** @inheritdoc */\n  translateInPage(x, y) {}\n\n  /** @inheritdoc */\n  get toolbarPosition() {\n    return this.#lastPoint;\n  }\n\n  /** @inheritdoc */\n  get commentButtonPosition() {\n    return this.#firstPoint;\n  }\n\n  /** @inheritdoc */\n  updateParams(type, value) {\n    switch (type) {\n      case AnnotationEditorParamsType.HIGHLIGHT_COLOR:\n        this.#updateColor(value);\n        break;\n      case AnnotationEditorParamsType.HIGHLIGHT_THICKNESS:\n        this.#updateThickness(value);\n        break;\n    }\n  }\n\n  static get defaultPropertiesToUpdate() {\n    return [\n      [\n        AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n        HighlightEditor._defaultColor,\n      ],\n      [\n        AnnotationEditorParamsType.HIGHLIGHT_THICKNESS,\n        HighlightEditor._defaultThickness,\n      ],\n    ];\n  }\n\n  /** @inheritdoc */\n  get propertiesToUpdate() {\n    return [\n      [\n        AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n        this.color || HighlightEditor._defaultColor,\n      ],\n      [\n        AnnotationEditorParamsType.HIGHLIGHT_THICKNESS,\n        this.#thickness || HighlightEditor._defaultThickness,\n      ],\n      [AnnotationEditorParamsType.HIGHLIGHT_FREE, this.#isFreeHighlight],\n    ];\n  }\n\n  /** @inheritdoc */\n  onUpdatedColor() {\n    this.parent?.drawLayer.updateProperties(this.#id, {\n      root: {\n        fill: this.color,\n        \"fill-opacity\": this.opacity,\n      },\n    });\n    this.#colorPicker?.updateColor(this.color);\n    super.onUpdatedColor();\n  }\n\n  /**\n   * Update the color and make this action undoable.\n   * @param {string} color\n   */\n  #updateColor(color) {\n    const setColorAndOpacity = (col, opa) => {\n      this.color = col;\n      this.opacity = opa;\n      this.onUpdatedColor();\n    };\n    const savedColor = this.color;\n    const savedOpacity = this.opacity;\n    this.addCommands({\n      cmd: setColorAndOpacity.bind(\n        this,\n        color,\n        HighlightEditor._defaultOpacity\n      ),\n      undo: setColorAndOpacity.bind(this, savedColor, savedOpacity),\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\n      mustExec: true,\n      type: AnnotationEditorParamsType.HIGHLIGHT_COLOR,\n      overwriteIfSameType: true,\n      keepUndo: true,\n    });\n\n    this._reportTelemetry(\n      {\n        action: \"color_changed\",\n        color: this._uiManager.getNonHCMColorName(color),\n      },\n      /* mustWait = */ true\n    );\n  }\n\n  /**\n   * Update the thickness and make this action undoable.\n   * @param {number} thickness\n   */\n  #updateThickness(thickness) {\n    const savedThickness = this.#thickness;\n    const setThickness = th => {\n      this.#thickness = th;\n      this.#changeThickness(th);\n    };\n    this.addCommands({\n      cmd: setThickness.bind(this, thickness),\n      undo: setThickness.bind(this, savedThickness),\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\n      mustExec: true,\n      type: AnnotationEditorParamsType.INK_THICKNESS,\n      overwriteIfSameType: true,\n      keepUndo: true,\n    });\n    this._reportTelemetry(\n      { action: \"thickness_changed\", thickness },\n      /* mustWait = */ true\n    );\n  }\n\n  /** @inheritdoc */\n  get toolbarButtons() {\n    if (this._uiManager.highlightColors) {\n      const colorPicker = (this.#colorPicker = new ColorPicker({\n        editor: this,\n      }));\n      return [[\"colorPicker\", colorPicker]];\n    }\n    return super.toolbarButtons;\n  }\n\n  /** @inheritdoc */\n  disableEditing() {\n    super.disableEditing();\n    this.div.classList.toggle(\"disabled\", true);\n  }\n\n  /** @inheritdoc */\n  enableEditing() {\n    super.enableEditing();\n    this.div.classList.toggle(\"disabled\", false);\n  }\n\n  /** @inheritdoc */\n  fixAndSetPosition() {\n    return super.fixAndSetPosition(this.#getRotation());\n  }\n\n  /** @inheritdoc */\n  getBaseTranslation() {\n    // The editor itself doesn't have any CSS border (we're drawing one\n    // ourselves in using SVG).\n    return [0, 0];\n  }\n\n  /** @inheritdoc */\n  getRect(tx, ty) {\n    return super.getRect(tx, ty, this.#getRotation());\n  }\n\n  /** @inheritdoc */\n  onceAdded(focus) {\n    if (!this.annotationElementId) {\n      this.parent.addUndoableEditor(this);\n    }\n    if (focus) {\n      this.div.focus();\n    }\n  }\n\n  /** @inheritdoc */\n  remove() {\n    this.#cleanDrawLayer();\n    this._reportTelemetry({\n      action: \"deleted\",\n    });\n    super.remove();\n  }\n\n  /** @inheritdoc */\n  rebuild() {\n    if (!this.parent) {\n      return;\n    }\n    super.rebuild();\n    if (this.div === null) {\n      return;\n    }\n\n    this.#addToDrawLayer();\n\n    if (!this.isAttachedToDOM) {\n      // At some point this editor was removed and we're rebuilding it,\n      // hence we must add it to its parent.\n      this.parent.add(this);\n    }\n  }\n\n  setParent(parent) {\n    let mustBeSelected = false;\n    if (this.parent && !parent) {\n      this.#cleanDrawLayer();\n    } else if (parent) {\n      this.#addToDrawLayer(parent);\n      // If mustBeSelected is true it means that this editor was selected\n      // when its parent has been destroyed, hence we must select it again.\n      mustBeSelected =\n        !this.parent && this.div?.classList.contains(\"selectedEditor\");\n    }\n    super.setParent(parent);\n    this.show(this._isVisible);\n    if (mustBeSelected) {\n      // We select it after the parent has been set.\n      this.select();\n    }\n  }\n\n  #changeThickness(thickness) {\n    if (!this.#isFreeHighlight) {\n      return;\n    }\n    this.#createFreeOutlines({\n      highlightOutlines: this.#highlightOutlines.getNewOutline(thickness / 2),\n    });\n    this.fixAndSetPosition();\n    this.setDims(this.width, this.height);\n  }\n\n  #cleanDrawLayer() {\n    if (this.#id === null || !this.parent) {\n      return;\n    }\n    this.parent.drawLayer.remove(this.#id);\n    this.#id = null;\n    this.parent.drawLayer.remove(this.#outlineId);\n    this.#outlineId = null;\n  }\n\n  #addToDrawLayer(parent = this.parent) {\n    if (this.#id !== null) {\n      return;\n    }\n    ({ id: this.#id, clipPathId: this.#clipPathId } = parent.drawLayer.draw(\n      {\n        bbox: this.#highlightOutlines.box,\n        root: {\n          viewBox: \"0 0 1 1\",\n          fill: this.color,\n          \"fill-opacity\": this.opacity,\n        },\n        rootClass: {\n          highlight: true,\n          free: this.#isFreeHighlight,\n        },\n        path: {\n          d: this.#highlightOutlines.toSVGPath(),\n        },\n      },\n      /* isPathUpdatable = */ false,\n      /* hasClip = */ true\n    ));\n    this.#outlineId = parent.drawLayer.drawOutline(\n      {\n        rootClass: {\n          highlightOutline: true,\n          free: this.#isFreeHighlight,\n        },\n        bbox: this.#focusOutlines.box,\n        path: {\n          d: this.#focusOutlines.toSVGPath(),\n        },\n      },\n      /* mustRemoveSelfIntersections = */ this.#isFreeHighlight\n    );\n\n    if (this.#highlightDiv) {\n      this.#highlightDiv.style.clipPath = this.#clipPathId;\n    }\n  }\n\n  static #rotateBbox([x, y, width, height], angle) {\n    switch (angle) {\n      case 90:\n        return [1 - y - height, x, height, width];\n      case 180:\n        return [1 - x - width, 1 - y - height, width, height];\n      case 270:\n        return [y, 1 - x - width, height, width];\n    }\n    return [x, y, width, height];\n  }\n\n  /** @inheritdoc */\n  rotate(angle) {\n    // We need to rotate the svgs because of the coordinates system.\n    const { drawLayer } = this.parent;\n    let box;\n    if (this.#isFreeHighlight) {\n      angle = (angle - this.rotation + 360) % 360;\n      box = HighlightEditor.#rotateBbox(this.#highlightOutlines.box, angle);\n    } else {\n      // An highlight annotation is always drawn horizontally.\n      box = HighlightEditor.#rotateBbox(\n        [this.x, this.y, this.width, this.height],\n        angle\n      );\n    }\n    drawLayer.updateProperties(this.#id, {\n      bbox: box,\n      root: {\n        \"data-main-rotation\": angle,\n      },\n    });\n    drawLayer.updateProperties(this.#outlineId, {\n      bbox: HighlightEditor.#rotateBbox(this.#focusOutlines.box, angle),\n      root: {\n        \"data-main-rotation\": angle,\n      },\n    });\n  }\n\n  /** @inheritdoc */\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n\n    const div = super.render();\n    if (this.#text) {\n      div.setAttribute(\"aria-label\", this.#text);\n      div.setAttribute(\"role\", \"mark\");\n    }\n    if (this.#isFreeHighlight) {\n      div.classList.add(\"free\");\n    } else {\n      this.div.addEventListener(\"keydown\", this.#keydown.bind(this), {\n        signal: this._uiManager._signal,\n      });\n    }\n    const highlightDiv = (this.#highlightDiv = document.createElement(\"div\"));\n    div.append(highlightDiv);\n    highlightDiv.setAttribute(\"aria-hidden\", \"true\");\n    highlightDiv.className = \"internal\";\n    highlightDiv.style.clipPath = this.#clipPathId;\n    this.setDims(this.width, this.height);\n\n    bindEvents(this, this.#highlightDiv, [\"pointerover\", \"pointerleave\"]);\n    this.enableEditing();\n\n    return div;\n  }\n\n  pointerover() {\n    if (!this.isSelected) {\n      this.parent?.drawLayer.updateProperties(this.#outlineId, {\n        rootClass: {\n          hovered: true,\n        },\n      });\n    }\n  }\n\n  pointerleave() {\n    if (!this.isSelected) {\n      this.parent?.drawLayer.updateProperties(this.#outlineId, {\n        rootClass: {\n          hovered: false,\n        },\n      });\n    }\n  }\n\n  #keydown(event) {\n    HighlightEditor._keyboardManager.exec(this, event);\n  }\n\n  _moveCaret(direction) {\n    this.parent.unselect(this);\n    switch (direction) {\n      case 0 /* left */:\n      case 2 /* up */:\n        this.#setCaret(/* start = */ true);\n        break;\n      case 1 /* right */:\n      case 3 /* down */:\n        this.#setCaret(/* start = */ false);\n        break;\n    }\n  }\n\n  #setCaret(start) {\n    if (!this.#anchorNode) {\n      return;\n    }\n    const selection = window.getSelection();\n    if (start) {\n      selection.setPosition(this.#anchorNode, this.#anchorOffset);\n    } else {\n      selection.setPosition(this.#focusNode, this.#focusOffset);\n    }\n  }\n\n  /** @inheritdoc */\n  select() {\n    super.select();\n    if (!this.#outlineId) {\n      return;\n    }\n    this.parent?.drawLayer.updateProperties(this.#outlineId, {\n      rootClass: {\n        hovered: false,\n        selected: true,\n      },\n    });\n  }\n\n  /** @inheritdoc */\n  unselect() {\n    super.unselect();\n    if (!this.#outlineId) {\n      return;\n    }\n    this.parent?.drawLayer.updateProperties(this.#outlineId, {\n      rootClass: {\n        selected: false,\n      },\n    });\n    if (!this.#isFreeHighlight) {\n      this.#setCaret(/* start = */ false);\n    }\n  }\n\n  /** @inheritdoc */\n  get _mustFixPosition() {\n    return !this.#isFreeHighlight;\n  }\n\n  /** @inheritdoc */\n  show(visible = this._isVisible) {\n    super.show(visible);\n    if (this.parent) {\n      this.parent.drawLayer.updateProperties(this.#id, {\n        rootClass: {\n          hidden: !visible,\n        },\n      });\n      this.parent.drawLayer.updateProperties(this.#outlineId, {\n        rootClass: {\n          hidden: !visible,\n        },\n      });\n    }\n  }\n\n  #getRotation() {\n    // Highlight annotations are always drawn horizontally but if\n    // a free highlight annotation can be rotated.\n    return this.#isFreeHighlight ? this.rotation : 0;\n  }\n\n  #serializeBoxes() {\n    if (this.#isFreeHighlight) {\n      return null;\n    }\n    const [pageWidth, pageHeight] = this.pageDimensions;\n    const [pageX, pageY] = this.pageTranslation;\n    const boxes = this.#boxes;\n    const quadPoints = new Float32Array(boxes.length * 8);\n    let i = 0;\n    for (const { x, y, width, height } of boxes) {\n      const sx = x * pageWidth + pageX;\n      const sy = (1 - y) * pageHeight + pageY;\n      // Serializes the rectangle in the Adobe Acrobat format.\n      // The rectangle's coordinates (b = bottom, t = top, L = left, R = right)\n      // are ordered as follows: tL, tR, bL, bR (bL origin).\n      quadPoints[i] = quadPoints[i + 4] = sx;\n      quadPoints[i + 1] = quadPoints[i + 3] = sy;\n      quadPoints[i + 2] = quadPoints[i + 6] = sx + width * pageWidth;\n      quadPoints[i + 5] = quadPoints[i + 7] = sy - height * pageHeight;\n      i += 8;\n    }\n    return quadPoints;\n  }\n\n  #serializeOutlines(rect) {\n    return this.#highlightOutlines.serialize(rect, this.#getRotation());\n  }\n\n  static startHighlighting(parent, isLTR, { target: textLayer, x, y }) {\n    const {\n      x: layerX,\n      y: layerY,\n      width: parentWidth,\n      height: parentHeight,\n    } = textLayer.getBoundingClientRect();\n\n    const ac = new AbortController();\n    const signal = parent.combinedSignal(ac);\n\n    const pointerUpCallback = e => {\n      ac.abort();\n      this.#endHighlight(parent, e);\n    };\n    window.addEventListener(\"blur\", pointerUpCallback, { signal });\n    window.addEventListener(\"pointerup\", pointerUpCallback, { signal });\n    window.addEventListener(\n      \"pointerdown\",\n      stopEvent /* Avoid to have undesired clicks during the drawing. */,\n      {\n        capture: true,\n        passive: false,\n        signal,\n      }\n    );\n    window.addEventListener(\"contextmenu\", noContextMenu, { signal });\n\n    textLayer.addEventListener(\n      \"pointermove\",\n      this.#highlightMove.bind(this, parent),\n      { signal }\n    );\n    this._freeHighlight = new FreeHighlightOutliner(\n      { x, y },\n      [layerX, layerY, parentWidth, parentHeight],\n      parent.scale,\n      this._defaultThickness / 2,\n      isLTR,\n      /* innerMargin = */ 0.001\n    );\n    ({ id: this._freeHighlightId, clipPathId: this._freeHighlightClipId } =\n      parent.drawLayer.draw(\n        {\n          bbox: [0, 0, 1, 1],\n          root: {\n            viewBox: \"0 0 1 1\",\n            fill: this._defaultColor,\n            \"fill-opacity\": this._defaultOpacity,\n          },\n          rootClass: {\n            highlight: true,\n            free: true,\n          },\n          path: {\n            d: this._freeHighlight.toSVGPath(),\n          },\n        },\n        /* isPathUpdatable = */ true,\n        /* hasClip = */ true\n      ));\n  }\n\n  static #highlightMove(parent, event) {\n    if (this._freeHighlight.add(event)) {\n      // Redraw only if the point has been added.\n      parent.drawLayer.updateProperties(this._freeHighlightId, {\n        path: {\n          d: this._freeHighlight.toSVGPath(),\n        },\n      });\n    }\n  }\n\n  static #endHighlight(parent, event) {\n    if (!this._freeHighlight.isEmpty()) {\n      parent.createAndAddNewEditor(event, false, {\n        highlightId: this._freeHighlightId,\n        highlightOutlines: this._freeHighlight.getOutlines(),\n        clipPathId: this._freeHighlightClipId,\n        methodOfCreation: \"main_toolbar\",\n      });\n    } else {\n      parent.drawLayer.remove(this._freeHighlightId);\n    }\n    this._freeHighlightId = -1;\n    this._freeHighlight = null;\n    this._freeHighlightClipId = \"\";\n  }\n\n  /** @inheritdoc */\n  static async deserialize(data, parent, uiManager) {\n    let initialData = null;\n    if (data instanceof HighlightAnnotationElement) {\n      const {\n        data: {\n          quadPoints,\n          rect,\n          rotation,\n          id,\n          color,\n          opacity,\n          popupRef,\n          richText,\n          contentsObj,\n          creationDate,\n          modificationDate,\n        },\n        parent: {\n          page: { pageNumber },\n        },\n      } = data;\n      initialData = data = {\n        annotationType: AnnotationEditorType.HIGHLIGHT,\n        color: Array.from(color),\n        opacity,\n        quadPoints,\n        boxes: null,\n        pageIndex: pageNumber - 1,\n        rect: rect.slice(0),\n        rotation,\n        annotationElementId: id,\n        id,\n        deleted: false,\n        popupRef,\n        richText,\n        comment: contentsObj?.str || null,\n        creationDate,\n        modificationDate,\n      };\n    } else if (data instanceof InkAnnotationElement) {\n      const {\n        data: {\n          inkLists,\n          rect,\n          rotation,\n          id,\n          color,\n          borderStyle: { rawWidth: thickness },\n          popupRef,\n          richText,\n          contentsObj,\n          creationDate,\n          modificationDate,\n        },\n        parent: {\n          page: { pageNumber },\n        },\n      } = data;\n      initialData = data = {\n        annotationType: AnnotationEditorType.HIGHLIGHT,\n        color: Array.from(color),\n        thickness,\n        inkLists,\n        boxes: null,\n        pageIndex: pageNumber - 1,\n        rect: rect.slice(0),\n        rotation,\n        annotationElementId: id,\n        id,\n        deleted: false,\n        popupRef,\n        richText,\n        comment: contentsObj?.str || null,\n        creationDate,\n        modificationDate,\n      };\n    }\n\n    const { color, quadPoints, inkLists, opacity } = data;\n    const editor = await super.deserialize(data, parent, uiManager);\n\n    editor.color = Util.makeHexColor(...color);\n    editor.opacity = opacity || 1;\n    if (inkLists) {\n      editor.#thickness = data.thickness;\n    }\n    editor._initialData = initialData;\n    if (data.comment) {\n      editor.setCommentData(data);\n    }\n\n    const [pageWidth, pageHeight] = editor.pageDimensions;\n    const [pageX, pageY] = editor.pageTranslation;\n\n    if (quadPoints) {\n      const boxes = (editor.#boxes = []);\n      for (let i = 0; i < quadPoints.length; i += 8) {\n        boxes.push({\n          x: (quadPoints[i] - pageX) / pageWidth,\n          y: 1 - (quadPoints[i + 1] - pageY) / pageHeight,\n          width: (quadPoints[i + 2] - quadPoints[i]) / pageWidth,\n          height: (quadPoints[i + 1] - quadPoints[i + 5]) / pageHeight,\n        });\n      }\n      editor.#createOutlines();\n      editor.#addToDrawLayer();\n      editor.rotate(editor.rotation);\n    } else if (inkLists) {\n      editor.#isFreeHighlight = true;\n      const points = inkLists[0];\n      const point = {\n        x: points[0] - pageX,\n        y: pageHeight - (points[1] - pageY),\n      };\n      const outliner = new FreeHighlightOutliner(\n        point,\n        [0, 0, pageWidth, pageHeight],\n        1,\n        editor.#thickness / 2,\n        true,\n        0.001\n      );\n      for (let i = 0, ii = points.length; i < ii; i += 2) {\n        point.x = points[i] - pageX;\n        point.y = pageHeight - (points[i + 1] - pageY);\n        outliner.add(point);\n      }\n      const { id, clipPathId } = parent.drawLayer.draw(\n        {\n          bbox: [0, 0, 1, 1],\n          root: {\n            viewBox: \"0 0 1 1\",\n            fill: editor.color,\n            \"fill-opacity\": editor._defaultOpacity,\n          },\n          rootClass: {\n            highlight: true,\n            free: true,\n          },\n          path: {\n            d: outliner.toSVGPath(),\n          },\n        },\n        /* isPathUpdatable = */ true,\n        /* hasClip = */ true\n      );\n      editor.#createFreeOutlines({\n        highlightOutlines: outliner.getOutlines(),\n        highlightId: id,\n        clipPathId,\n      });\n      editor.#addToDrawLayer();\n      editor.rotate(editor.parentRotation);\n    }\n\n    return editor;\n  }\n\n  /** @inheritdoc */\n  serialize(isForCopying = false) {\n    // It doesn't make sense to copy/paste a highlight annotation.\n    if (this.isEmpty() || isForCopying) {\n      return null;\n    }\n\n    if (this.deleted) {\n      return this.serializeDeleted();\n    }\n\n    const color = AnnotationEditor._colorManager.convert(\n      this._uiManager.getNonHCMColor(this.color)\n    );\n    const serialized = super.serialize(isForCopying);\n    Object.assign(serialized, {\n      color,\n      opacity: this.opacity,\n      thickness: this.#thickness,\n      quadPoints: this.#serializeBoxes(),\n      outlines: this.#serializeOutlines(serialized.rect),\n    });\n    this.addComment(serialized);\n\n    if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n      return null;\n    }\n\n    serialized.id = this.annotationElementId;\n    return serialized;\n  }\n\n  #hasElementChanged(serialized) {\n    const { color } = this._initialData;\n    return (\n      this.hasEditedComment || serialized.color.some((c, i) => c !== color[i])\n    );\n  }\n\n  /** @inheritdoc */\n  renderAnnotationElement(annotation) {\n    if (this.deleted) {\n      annotation.hide();\n      return null;\n    }\n    annotation.updateEdited({\n      rect: this.getPDFRect(),\n      popup: this.comment,\n    });\n\n    return null;\n  }\n\n  static canCreateNewEmptyEditor() {\n    return false;\n  }\n}\n\nexport { HighlightEditor };\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\nimport { AnnotationEditorParamsType, unreachable } from \"../../shared/util.js\";\nimport { noContextMenu, stopEvent } from \"../display_utils.js\";\nimport { AnnotationEditor } from \"./editor.js\";\n\nclass DrawingOptions {\n  #svgProperties = Object.create(null);\n\n  updateProperty(name, value) {\n    this[name] = value;\n    this.updateSVGProperty(name, value);\n  }\n\n  updateProperties(properties) {\n    if (!properties) {\n      return;\n    }\n    for (const [name, value] of Object.entries(properties)) {\n      if (!name.startsWith(\"_\")) {\n        this.updateProperty(name, value);\n      }\n    }\n  }\n\n  updateSVGProperty(name, value) {\n    this.#svgProperties[name] = value;\n  }\n\n  toSVGProperties() {\n    const root = this.#svgProperties;\n    this.#svgProperties = Object.create(null);\n    return { root };\n  }\n\n  reset() {\n    this.#svgProperties = Object.create(null);\n  }\n\n  updateAll(options = this) {\n    this.updateProperties(options);\n  }\n\n  clone() {\n    unreachable(\"Not implemented\");\n  }\n}\n\n/**\n * Basic draw editor.\n */\nclass DrawingEditor extends AnnotationEditor {\n  #drawOutlines = null;\n\n  #mustBeCommitted;\n\n  _colorPicker = null;\n\n  _drawId = null;\n\n  static _currentDrawId = -1;\n\n  static _currentParent = null;\n\n  static #currentDraw = null;\n\n  static #currentDrawingAC = null;\n\n  static #currentDrawingOptions = null;\n\n  static #currentPointerId = NaN;\n\n  static #currentPointerType = null;\n\n  static #currentPointerIds = null;\n\n  static #currentMoveTimestamp = NaN;\n\n  static _INNER_MARGIN = 3;\n\n  constructor(params) {\n    super(params);\n    this.#mustBeCommitted = params.mustBeCommitted || false;\n\n    this._addOutlines(params);\n  }\n\n  /** @inheritdoc */\n  onUpdatedColor() {\n    this._colorPicker?.update(this.color);\n    super.onUpdatedColor();\n  }\n\n  _addOutlines(params) {\n    if (params.drawOutlines) {\n      this.#createDrawOutlines(params);\n      this.#addToDrawLayer();\n    }\n  }\n\n  #createDrawOutlines({ drawOutlines, drawId, drawingOptions }) {\n    this.#drawOutlines = drawOutlines;\n    this._drawingOptions ||= drawingOptions;\n    if (!this.annotationElementId) {\n      this._uiManager.a11yAlert(`pdfjs-editor-${this.editorType}-added-alert`);\n    }\n\n    if (drawId >= 0) {\n      this._drawId = drawId;\n      // We need to redraw the drawing because we changed the coordinates to be\n      // in the box coordinate system.\n      this.parent.drawLayer.finalizeDraw(\n        drawId,\n        drawOutlines.defaultProperties\n      );\n    } else {\n      // We create a new drawing.\n      this._drawId = this.#createDrawing(drawOutlines, this.parent);\n    }\n\n    this.#updateBbox(drawOutlines.box);\n  }\n\n  #createDrawing(drawOutlines, parent) {\n    const { id } = parent.drawLayer.draw(\n      DrawingEditor._mergeSVGProperties(\n        this._drawingOptions.toSVGProperties(),\n        drawOutlines.defaultSVGProperties\n      ),\n      /* isPathUpdatable = */ false,\n      /* hasClip = */ false\n    );\n    return id;\n  }\n\n  static _mergeSVGProperties(p1, p2) {\n    const p1Keys = new Set(Object.keys(p1));\n\n    for (const [key, value] of Object.entries(p2)) {\n      if (p1Keys.has(key)) {\n        Object.assign(p1[key], value);\n      } else {\n        p1[key] = value;\n      }\n    }\n    return p1;\n  }\n\n  /**\n   * @param {Object} options\n   * @return {DrawingOptions} the default options to use for a new editor.\n   */\n  static getDefaultDrawingOptions(_options) {\n    unreachable(\"Not implemented\");\n  }\n\n  /**\n   * @return {Map<AnnotationEditorParamsType, string>} a map between the\n   *   parameter types and the name of the options.\n   */\n  // eslint-disable-next-line getter-return\n  static get typesMap() {\n    unreachable(\"Not implemented\");\n  }\n\n  static get isDrawer() {\n    return true;\n  }\n\n  /**\n   * @returns {boolean} `true` if several drawings can be added to the\n   * annotation.\n   */\n  static get supportMultipleDrawings() {\n    return false;\n  }\n\n  /** @inheritdoc */\n  static updateDefaultParams(type, value) {\n    const propertyName = this.typesMap.get(type);\n    if (propertyName) {\n      this._defaultDrawingOptions.updateProperty(propertyName, value);\n    }\n    if (this._currentParent) {\n      DrawingEditor.#currentDraw.updateProperty(propertyName, value);\n      this._currentParent.drawLayer.updateProperties(\n        this._currentDrawId,\n        this._defaultDrawingOptions.toSVGProperties()\n      );\n    }\n  }\n\n  /** @inheritdoc */\n  updateParams(type, value) {\n    const propertyName = this.constructor.typesMap.get(type);\n    if (propertyName) {\n      this._updateProperty(type, propertyName, value);\n    }\n  }\n\n  /** @inheritdoc */\n  static get defaultPropertiesToUpdate() {\n    const properties = [];\n    const options = this._defaultDrawingOptions;\n    for (const [type, name] of this.typesMap) {\n      properties.push([type, options[name]]);\n    }\n    return properties;\n  }\n\n  /** @inheritdoc */\n  get propertiesToUpdate() {\n    const properties = [];\n    const { _drawingOptions } = this;\n    for (const [type, name] of this.constructor.typesMap) {\n      properties.push([type, _drawingOptions[name]]);\n    }\n    return properties;\n  }\n\n  /**\n   * Update a property and make this action undoable.\n   * @param {string} color\n   */\n  _updateProperty(type, name, value) {\n    const options = this._drawingOptions;\n    const savedValue = options[name];\n    const setter = val => {\n      options.updateProperty(name, val);\n      const bbox = this.#drawOutlines.updateProperty(name, val);\n      if (bbox) {\n        this.#updateBbox(bbox);\n      }\n      this.parent?.drawLayer.updateProperties(\n        this._drawId,\n        options.toSVGProperties()\n      );\n      if (type === this.colorType) {\n        this.onUpdatedColor();\n      }\n    };\n    this.addCommands({\n      cmd: setter.bind(this, value),\n      undo: setter.bind(this, savedValue),\n      post: this._uiManager.updateUI.bind(this._uiManager, this),\n      mustExec: true,\n      type,\n      overwriteIfSameType: true,\n      keepUndo: true,\n    });\n  }\n\n  /** @inheritdoc */\n  _onResizing() {\n    this.parent?.drawLayer.updateProperties(\n      this._drawId,\n      DrawingEditor._mergeSVGProperties(\n        this.#drawOutlines.getPathResizingSVGProperties(\n          this.#convertToDrawSpace()\n        ),\n        {\n          bbox: this.#rotateBox(),\n        }\n      )\n    );\n  }\n\n  /** @inheritdoc */\n  _onResized() {\n    this.parent?.drawLayer.updateProperties(\n      this._drawId,\n      DrawingEditor._mergeSVGProperties(\n        this.#drawOutlines.getPathResizedSVGProperties(\n          this.#convertToDrawSpace()\n        ),\n        {\n          bbox: this.#rotateBox(),\n        }\n      )\n    );\n  }\n\n  /** @inheritdoc */\n  _onTranslating(_x, _y) {\n    this.parent?.drawLayer.updateProperties(this._drawId, {\n      bbox: this.#rotateBox(),\n    });\n  }\n\n  /** @inheritdoc */\n  _onTranslated() {\n    this.parent?.drawLayer.updateProperties(\n      this._drawId,\n      DrawingEditor._mergeSVGProperties(\n        this.#drawOutlines.getPathTranslatedSVGProperties(\n          this.#convertToDrawSpace(),\n          this.parentDimensions\n        ),\n        {\n          bbox: this.#rotateBox(),\n        }\n      )\n    );\n  }\n\n  _onStartDragging() {\n    this.parent?.drawLayer.updateProperties(this._drawId, {\n      rootClass: {\n        moving: true,\n      },\n    });\n  }\n\n  _onStopDragging() {\n    this.parent?.drawLayer.updateProperties(this._drawId, {\n      rootClass: {\n        moving: false,\n      },\n    });\n  }\n\n  /** @inheritdoc */\n  commit() {\n    super.commit();\n\n    this.disableEditMode();\n    this.disableEditing();\n  }\n\n  /** @inheritdoc */\n  disableEditing() {\n    super.disableEditing();\n    this.div.classList.toggle(\"disabled\", true);\n  }\n\n  /** @inheritdoc */\n  enableEditing() {\n    super.enableEditing();\n    this.div.classList.toggle(\"disabled\", false);\n  }\n\n  /** @inheritdoc */\n  getBaseTranslation() {\n    // The editor itself doesn't have any CSS border (we're drawing one\n    // ourselves in using SVG).\n    return [0, 0];\n  }\n\n  /** @inheritdoc */\n  get isResizable() {\n    return true;\n  }\n\n  /** @inheritdoc */\n  onceAdded(focus) {\n    if (!this.annotationElementId) {\n      this.parent.addUndoableEditor(this);\n    }\n    this._isDraggable = true;\n    if (this.#mustBeCommitted) {\n      this.#mustBeCommitted = false;\n      this.commit();\n      this.parent.setSelected(this);\n      if (focus && this.isOnScreen) {\n        this.div.focus();\n      }\n    }\n  }\n\n  /** @inheritdoc */\n  remove() {\n    this.#cleanDrawLayer();\n    super.remove();\n  }\n\n  /** @inheritdoc */\n  rebuild() {\n    if (!this.parent) {\n      return;\n    }\n    super.rebuild();\n    if (this.div === null) {\n      return;\n    }\n\n    this.#addToDrawLayer();\n    this.#updateBbox(this.#drawOutlines.box);\n\n    if (!this.isAttachedToDOM) {\n      // At some point this editor was removed and we're rebuilding it,\n      // hence we must add it to its parent.\n      this.parent.add(this);\n    }\n  }\n\n  setParent(parent) {\n    let mustBeSelected = false;\n    if (this.parent && !parent) {\n      this._uiManager.removeShouldRescale(this);\n      this.#cleanDrawLayer();\n    } else if (parent) {\n      this._uiManager.addShouldRescale(this);\n      this.#addToDrawLayer(parent);\n      // If mustBeSelected is true it means that this editor was selected\n      // when its parent has been destroyed, hence we must select it again.\n      mustBeSelected =\n        !this.parent && this.div?.classList.contains(\"selectedEditor\");\n    }\n    super.setParent(parent);\n    if (mustBeSelected) {\n      // We select it after the parent has been set.\n      this.select();\n    }\n  }\n\n  #cleanDrawLayer() {\n    if (this._drawId === null || !this.parent) {\n      return;\n    }\n    this.parent.drawLayer.remove(this._drawId);\n    this._drawId = null;\n\n    // All the SVG properties must be reset in order to make it possible to\n    // undo.\n    this._drawingOptions.reset();\n  }\n\n  #addToDrawLayer(parent = this.parent) {\n    if (this._drawId !== null && this.parent === parent) {\n      return;\n    }\n    if (this._drawId !== null) {\n      // The parent has changed, we need to move the drawing to the new parent.\n      this.parent.drawLayer.updateParent(this._drawId, parent.drawLayer);\n      return;\n    }\n    this._drawingOptions.updateAll();\n    this._drawId = this.#createDrawing(this.#drawOutlines, parent);\n  }\n\n  #convertToParentSpace([x, y, width, height]) {\n    const {\n      parentDimensions: [pW, pH],\n      rotation,\n    } = this;\n    switch (rotation) {\n      case 90:\n        return [y, 1 - x, width * (pH / pW), height * (pW / pH)];\n      case 180:\n        return [1 - x, 1 - y, width, height];\n      case 270:\n        return [1 - y, x, width * (pH / pW), height * (pW / pH)];\n      default:\n        return [x, y, width, height];\n    }\n  }\n\n  #convertToDrawSpace() {\n    const {\n      x,\n      y,\n      width,\n      height,\n      parentDimensions: [pW, pH],\n      rotation,\n    } = this;\n    switch (rotation) {\n      case 90:\n        return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n      case 180:\n        return [1 - x, 1 - y, width, height];\n      case 270:\n        return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n      default:\n        return [x, y, width, height];\n    }\n  }\n\n  #updateBbox(bbox) {\n    [this.x, this.y, this.width, this.height] =\n      this.#convertToParentSpace(bbox);\n    if (this.div) {\n      this.fixAndSetPosition();\n      this.setDims();\n    }\n    this._onResized();\n  }\n\n  #rotateBox() {\n    // We've to deal with two rotations: the rotation of the annotation and the\n    // rotation of the parent page.\n    // When the page is rotated, all the layers are just rotated thanks to CSS\n    // but there is a notable exception: the canvas wrapper.\n    // The canvas wrapper is not rotated but the dimensions are (or not) swapped\n    // and the page is redrawn with the rotation applied to the canvas.\n    // The drawn layer is under the canvas wrapper and is not rotated so we have\n    // to \"manually\" rotate the coordinates.\n    //\n    // The coordinates (this.x, this.y) correspond to the top-left corner of\n    // the editor after it has been rotated in the page coordinate system.\n\n    const {\n      x,\n      y,\n      width,\n      height,\n      rotation,\n      parentRotation,\n      parentDimensions: [pW, pH],\n    } = this;\n    switch ((rotation * 4 + parentRotation) / 90) {\n      case 1:\n        // 0 -> 90\n        return [1 - y - height, x, height, width];\n      case 2:\n        // 0 -> 180\n        return [1 - x - width, 1 - y - height, width, height];\n      case 3:\n        // 0 -> 270\n        return [y, 1 - x - width, height, width];\n      case 4:\n        // 90 -> 0\n        return [\n          x,\n          y - width * (pW / pH),\n          height * (pH / pW),\n          width * (pW / pH),\n        ];\n      case 5:\n        // 90 -> 90\n        return [1 - y, x, width * (pW / pH), height * (pH / pW)];\n      case 6:\n        // 90 -> 180\n        return [\n          1 - x - height * (pH / pW),\n          1 - y,\n          height * (pH / pW),\n          width * (pW / pH),\n        ];\n      case 7:\n        // 90 -> 270\n        return [\n          y - width * (pW / pH),\n          1 - x - height * (pH / pW),\n          width * (pW / pH),\n          height * (pH / pW),\n        ];\n      case 8:\n        // 180 -> 0\n        return [x - width, y - height, width, height];\n      case 9:\n        // 180 -> 90\n        return [1 - y, x - width, height, width];\n      case 10:\n        // 180 -> 180\n        return [1 - x, 1 - y, width, height];\n      case 11:\n        // 180 -> 270\n        return [y - height, 1 - x, height, width];\n      case 12:\n        // 270 -> 0\n        return [\n          x - height * (pH / pW),\n          y,\n          height * (pH / pW),\n          width * (pW / pH),\n        ];\n      case 13:\n        // 270 -> 90\n        return [\n          1 - y - width * (pW / pH),\n          x - height * (pH / pW),\n          width * (pW / pH),\n          height * (pH / pW),\n        ];\n      case 14:\n        // 270 -> 180\n        return [\n          1 - x,\n          1 - y - width * (pW / pH),\n          height * (pH / pW),\n          width * (pW / pH),\n        ];\n      case 15:\n        // 270 -> 270\n        return [y, 1 - x, width * (pW / pH), height * (pH / pW)];\n      default:\n        // 0 -> 0\n        return [x, y, width, height];\n    }\n  }\n\n  /** @inheritdoc */\n  rotate() {\n    if (!this.parent) {\n      return;\n    }\n    this.parent.drawLayer.updateProperties(\n      this._drawId,\n      DrawingEditor._mergeSVGProperties(\n        {\n          bbox: this.#rotateBox(),\n        },\n        this.#drawOutlines.updateRotation(\n          (this.parentRotation - this.rotation + 360) % 360\n        )\n      )\n    );\n  }\n\n  onScaleChanging() {\n    if (!this.parent) {\n      return;\n    }\n    this.#updateBbox(\n      this.#drawOutlines.updateParentDimensions(\n        this.parentDimensions,\n        this.parent.scale\n      )\n    );\n  }\n\n  static onScaleChangingWhenDrawing() {}\n\n  /** @inheritdoc */\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n\n    let baseX, baseY;\n    if (this._isCopy) {\n      baseX = this.x;\n      baseY = this.y;\n    }\n\n    const div = super.render();\n    div.classList.add(\"draw\");\n\n    const drawDiv = document.createElement(\"div\");\n    div.append(drawDiv);\n    drawDiv.setAttribute(\"aria-hidden\", \"true\");\n    drawDiv.className = \"internal\";\n    this.setDims();\n    this._uiManager.addShouldRescale(this);\n    this.disableEditing();\n\n    if (this._isCopy) {\n      this._moveAfterPaste(baseX, baseY);\n    }\n\n    return div;\n  }\n\n  /**\n   * Create a new drawer instance.\n   * @param {number} x - The x coordinate of the event.\n   * @param {number} y - The y coordinate of the event.\n   * @param {number} parentWidth - The parent width.\n   * @param {number} parentHeight - The parent height.\n   * @param {number} rotation - The parent rotation.\n   */\n  static createDrawerInstance(_x, _y, _parentWidth, _parentHeight, _rotation) {\n    unreachable(\"Not implemented\");\n  }\n\n  static startDrawing(parent, uiManager, _isLTR, event) {\n    // The _currentPointerType is set when the user starts an empty drawing\n    // session. If, in the same drawing session, the user starts using a\n    // different type of pointer (e.g. a pen and then a finger), we just return.\n    //\n    // The _currentPointerId  and _currentPointerIds are used to keep track of\n    // the pointers with a same type (e.g. two fingers). If the user starts to\n    // draw with a finger and then uses a second finger, we just stop the\n    // current drawing and let the user zoom the document.\n\n    const { target, offsetX: x, offsetY: y, pointerId, pointerType } = event;\n    if (\n      DrawingEditor.#currentPointerType &&\n      DrawingEditor.#currentPointerType !== pointerType\n    ) {\n      return;\n    }\n\n    const {\n      viewport: { rotation },\n    } = parent;\n    const { width: parentWidth, height: parentHeight } =\n      target.getBoundingClientRect();\n\n    const ac = (DrawingEditor.#currentDrawingAC = new AbortController());\n    const signal = parent.combinedSignal(ac);\n\n    DrawingEditor.#currentPointerId ||= pointerId;\n    DrawingEditor.#currentPointerType ??= pointerType;\n\n    window.addEventListener(\n      \"pointerup\",\n      e => {\n        if (DrawingEditor.#currentPointerId === e.pointerId) {\n          this._endDraw(e);\n        } else {\n          DrawingEditor.#currentPointerIds?.delete(e.pointerId);\n        }\n      },\n      { signal }\n    );\n    window.addEventListener(\n      \"pointercancel\",\n      e => {\n        if (DrawingEditor.#currentPointerId === e.pointerId) {\n          this._currentParent.endDrawingSession();\n        } else {\n          DrawingEditor.#currentPointerIds?.delete(e.pointerId);\n        }\n      },\n      { signal }\n    );\n    window.addEventListener(\n      \"pointerdown\",\n      e => {\n        if (DrawingEditor.#currentPointerType !== e.pointerType) {\n          // For example, we started with a pen and the user\n          // is now using a finger.\n          return;\n        }\n\n        // For example, the user is using a second finger.\n        (DrawingEditor.#currentPointerIds ||= new Set()).add(e.pointerId);\n\n        // The first finger created a first point and a second finger just\n        // started, so we stop the drawing and remove this only point.\n        if (DrawingEditor.#currentDraw.isCancellable()) {\n          DrawingEditor.#currentDraw.removeLastElement();\n          if (DrawingEditor.#currentDraw.isEmpty()) {\n            this._currentParent.endDrawingSession(/* isAborted = */ true);\n          } else {\n            this._endDraw(null);\n          }\n        }\n      },\n      {\n        capture: true,\n        passive: false,\n        signal,\n      }\n    );\n    window.addEventListener(\"contextmenu\", noContextMenu, { signal });\n    target.addEventListener(\"pointermove\", this._drawMove.bind(this), {\n      signal,\n    });\n    target.addEventListener(\n      \"touchmove\",\n      e => {\n        if (e.timeStamp === DrawingEditor.#currentMoveTimestamp) {\n          // This move event is used to draw so we don't want to scroll.\n          stopEvent(e);\n        }\n      },\n      { signal }\n    );\n    parent.toggleDrawing();\n    uiManager._editorUndoBar?.hide();\n\n    if (DrawingEditor.#currentDraw) {\n      parent.drawLayer.updateProperties(\n        this._currentDrawId,\n        DrawingEditor.#currentDraw.startNew(\n          x,\n          y,\n          parentWidth,\n          parentHeight,\n          rotation\n        )\n      );\n      return;\n    }\n\n    uiManager.updateUIForDefaultProperties(this);\n\n    DrawingEditor.#currentDraw = this.createDrawerInstance(\n      x,\n      y,\n      parentWidth,\n      parentHeight,\n      rotation\n    );\n    DrawingEditor.#currentDrawingOptions = this.getDefaultDrawingOptions();\n    this._currentParent = parent;\n\n    ({ id: this._currentDrawId } = parent.drawLayer.draw(\n      this._mergeSVGProperties(\n        DrawingEditor.#currentDrawingOptions.toSVGProperties(),\n        DrawingEditor.#currentDraw.defaultSVGProperties\n      ),\n      /* isPathUpdatable = */ true,\n      /* hasClip = */ false\n    ));\n  }\n\n  static _drawMove(event) {\n    DrawingEditor.#currentMoveTimestamp = -1;\n    if (!DrawingEditor.#currentDraw) {\n      return;\n    }\n    const { offsetX, offsetY, pointerId } = event;\n\n    if (DrawingEditor.#currentPointerId !== pointerId) {\n      return;\n    }\n    if (DrawingEditor.#currentPointerIds?.size >= 1) {\n      // The user is using multiple fingers and the first one is moving.\n      this._endDraw(event);\n      return;\n    }\n    this._currentParent.drawLayer.updateProperties(\n      this._currentDrawId,\n      DrawingEditor.#currentDraw.add(offsetX, offsetY)\n    );\n    // We track the timestamp to know if the touchmove event is used to draw.\n    DrawingEditor.#currentMoveTimestamp = event.timeStamp;\n    stopEvent(event);\n  }\n\n  static _cleanup(all) {\n    if (all) {\n      this._currentDrawId = -1;\n      this._currentParent = null;\n      DrawingEditor.#currentDraw = null;\n      DrawingEditor.#currentDrawingOptions = null;\n      DrawingEditor.#currentPointerType = null;\n      DrawingEditor.#currentMoveTimestamp = NaN;\n    }\n\n    if (DrawingEditor.#currentDrawingAC) {\n      DrawingEditor.#currentDrawingAC.abort();\n      DrawingEditor.#currentDrawingAC = null;\n      DrawingEditor.#currentPointerId = NaN;\n      DrawingEditor.#currentPointerIds = null;\n    }\n  }\n\n  static _endDraw(event) {\n    const parent = this._currentParent;\n    if (!parent) {\n      return;\n    }\n\n    parent.toggleDrawing(true);\n    this._cleanup(false);\n\n    if (event?.target === parent.div) {\n      parent.drawLayer.updateProperties(\n        this._currentDrawId,\n        DrawingEditor.#currentDraw.end(event.offsetX, event.offsetY)\n      );\n    }\n    if (this.supportMultipleDrawings) {\n      const draw = DrawingEditor.#currentDraw;\n      const drawId = this._currentDrawId;\n      const lastElement = draw.getLastElement();\n      parent.addCommands({\n        cmd: () => {\n          parent.drawLayer.updateProperties(\n            drawId,\n            draw.setLastElement(lastElement)\n          );\n        },\n        undo: () => {\n          parent.drawLayer.updateProperties(drawId, draw.removeLastElement());\n        },\n        mustExec: false,\n        type: AnnotationEditorParamsType.DRAW_STEP,\n      });\n\n      return;\n    }\n\n    this.endDrawing(/* isAborted = */ false);\n  }\n\n  static endDrawing(isAborted) {\n    const parent = this._currentParent;\n    if (!parent) {\n      return null;\n    }\n    parent.toggleDrawing(true);\n    parent.cleanUndoStack(AnnotationEditorParamsType.DRAW_STEP);\n\n    if (!DrawingEditor.#currentDraw.isEmpty()) {\n      const {\n        pageDimensions: [pageWidth, pageHeight],\n        scale,\n      } = parent;\n\n      const editor = parent.createAndAddNewEditor(\n        { offsetX: 0, offsetY: 0 },\n        false,\n        {\n          drawId: this._currentDrawId,\n          drawOutlines: DrawingEditor.#currentDraw.getOutlines(\n            pageWidth * scale,\n            pageHeight * scale,\n            scale,\n            this._INNER_MARGIN\n          ),\n          drawingOptions: DrawingEditor.#currentDrawingOptions,\n          mustBeCommitted: !isAborted,\n        }\n      );\n      this._cleanup(true);\n      return editor;\n    }\n\n    parent.drawLayer.remove(this._currentDrawId);\n    this._cleanup(true);\n    return null;\n  }\n\n  /**\n   * Create the drawing options.\n   * @param {Object} _data\n   */\n  createDrawingOptions(_data) {}\n\n  /**\n   * Deserialize the drawing outlines.\n   * @param {number} pageX - The x coordinate of the page.\n   * @param {number} pageY - The y coordinate of the page.\n   * @param {number} pageWidth - The width of the page.\n   * @param {number} pageHeight - The height of the page.\n   * @param {number} innerWidth - The inner width.\n   * @param {Object} data - The data to deserialize.\n   * @returns {Object} The deserialized outlines.\n   */\n  static deserializeDraw(\n    _pageX,\n    _pageY,\n    _pageWidth,\n    _pageHeight,\n    _innerWidth,\n    _data\n  ) {\n    unreachable(\"Not implemented\");\n  }\n\n  /** @inheritdoc */\n  static async deserialize(data, parent, uiManager) {\n    const {\n      rawDims: { pageWidth, pageHeight, pageX, pageY },\n    } = parent.viewport;\n    const drawOutlines = this.deserializeDraw(\n      pageX,\n      pageY,\n      pageWidth,\n      pageHeight,\n      this._INNER_MARGIN,\n      data\n    );\n    const editor = await super.deserialize(data, parent, uiManager);\n    editor.createDrawingOptions(data);\n    editor.#createDrawOutlines({ drawOutlines });\n    editor.#addToDrawLayer();\n    editor.onScaleChanging();\n    editor.rotate();\n\n    return editor;\n  }\n\n  serializeDraw(isForCopying) {\n    const [pageX, pageY] = this.pageTranslation;\n    const [pageWidth, pageHeight] = this.pageDimensions;\n    return this.#drawOutlines.serialize(\n      [pageX, pageY, pageWidth, pageHeight],\n      isForCopying\n    );\n  }\n\n  /** @inheritdoc */\n  renderAnnotationElement(annotation) {\n    annotation.updateEdited({\n      rect: this.getPDFRect(),\n    });\n\n    return null;\n  }\n\n  static canCreateNewEmptyEditor() {\n    return false;\n  }\n}\n\nexport { DrawingEditor, DrawingOptions };\n", "/* Copyright 2024 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { MathClamp, Util } from \"../../../shared/util.js\";\nimport { Outline } from \"./outline.js\";\n\nclass InkDrawOutliner {\n  // The last 3 points of the line.\n  #last = new Float64Array(6);\n\n  #line;\n\n  #lines;\n\n  #rotation;\n\n  #thickness;\n\n  #points;\n\n  #lastSVGPath = \"\";\n\n  #lastIndex = 0;\n\n  #outlines = new InkDrawOutline();\n\n  #parentWidth;\n\n  #parentHeight;\n\n  constructor(x, y, parentWidth, parentHeight, rotation, thickness) {\n    this.#parentWidth = parentWidth;\n    this.#parentHeight = parentHeight;\n    this.#rotation = rotation;\n    this.#thickness = thickness;\n\n    [x, y] = this.#normalizePoint(x, y);\n\n    const line = (this.#line = [NaN, NaN, NaN, NaN, x, y]);\n    this.#points = [x, y];\n    this.#lines = [{ line, points: this.#points }];\n    this.#last.set(line, 0);\n  }\n\n  updateProperty(name, value) {\n    if (name === \"stroke-width\") {\n      this.#thickness = value;\n    }\n  }\n\n  #normalizePoint(x, y) {\n    return Outline._normalizePoint(\n      x,\n      y,\n      this.#parentWidth,\n      this.#parentHeight,\n      this.#rotation\n    );\n  }\n\n  isEmpty() {\n    return !this.#lines || this.#lines.length === 0;\n  }\n\n  isCancellable() {\n    // The user a second finger after drawing 5 points: it's small enough\n    // to not be a real drawing.\n    return this.#points.length <= 10;\n  }\n\n  add(x, y) {\n    // The point is in canvas coordinates which means that there is no rotation.\n    // It's the same as parent coordinates.\n    [x, y] = this.#normalizePoint(x, y);\n    const [x1, y1, x2, y2] = this.#last.subarray(2, 6);\n    const diffX = x - x2;\n    const diffY = y - y2;\n    const d = Math.hypot(this.#parentWidth * diffX, this.#parentHeight * diffY);\n    if (d <= 2) {\n      // The idea is to avoid garbage points around the last point.\n      // When the points are too close, it just leads to bad normal vectors and\n      // control points.\n      return null;\n    }\n\n    this.#points.push(x, y);\n\n    if (isNaN(x1)) {\n      // We've only one point.\n      this.#last.set([x2, y2, x, y], 2);\n      this.#line.push(NaN, NaN, NaN, NaN, x, y);\n      return {\n        path: {\n          d: this.toSVGPath(),\n        },\n      };\n    }\n\n    if (isNaN(this.#last[0])) {\n      // We've only two points.\n      this.#line.splice(6, 6);\n    }\n\n    this.#last.set([x1, y1, x2, y2, x, y], 0);\n    this.#line.push(...Outline.createBezierPoints(x1, y1, x2, y2, x, y));\n\n    return {\n      path: {\n        d: this.toSVGPath(),\n      },\n    };\n  }\n\n  end(x, y) {\n    const change = this.add(x, y);\n    if (change) {\n      return change;\n    }\n    if (this.#points.length === 2) {\n      // We've only one point.\n      return {\n        path: {\n          d: this.toSVGPath(),\n        },\n      };\n    }\n    return null;\n  }\n\n  startNew(x, y, parentWidth, parentHeight, rotation) {\n    this.#parentWidth = parentWidth;\n    this.#parentHeight = parentHeight;\n    this.#rotation = rotation;\n\n    [x, y] = this.#normalizePoint(x, y);\n\n    const line = (this.#line = [NaN, NaN, NaN, NaN, x, y]);\n    this.#points = [x, y];\n    const last = this.#lines.at(-1);\n    if (last) {\n      last.line = new Float32Array(last.line);\n      last.points = new Float32Array(last.points);\n    }\n    this.#lines.push({ line, points: this.#points });\n    this.#last.set(line, 0);\n    this.#lastIndex = 0;\n    this.toSVGPath();\n\n    return null;\n  }\n\n  getLastElement() {\n    return this.#lines.at(-1);\n  }\n\n  setLastElement(element) {\n    if (!this.#lines) {\n      return this.#outlines.setLastElement(element);\n    }\n    this.#lines.push(element);\n    this.#line = element.line;\n    this.#points = element.points;\n    this.#lastIndex = 0;\n    return {\n      path: {\n        d: this.toSVGPath(),\n      },\n    };\n  }\n\n  removeLastElement() {\n    if (!this.#lines) {\n      return this.#outlines.removeLastElement();\n    }\n    this.#lines.pop();\n    this.#lastSVGPath = \"\";\n    for (let i = 0, ii = this.#lines.length; i < ii; i++) {\n      const { line, points } = this.#lines[i];\n      this.#line = line;\n      this.#points = points;\n      this.#lastIndex = 0;\n      this.toSVGPath();\n    }\n\n    return {\n      path: {\n        d: this.#lastSVGPath,\n      },\n    };\n  }\n\n  toSVGPath() {\n    const firstX = Outline.svgRound(this.#line[4]);\n    const firstY = Outline.svgRound(this.#line[5]);\n    if (this.#points.length === 2) {\n      this.#lastSVGPath = `${this.#lastSVGPath} M ${firstX} ${firstY} Z`;\n      return this.#lastSVGPath;\n    }\n\n    if (this.#points.length <= 6) {\n      // We've 2 or 3 points.\n      const i = this.#lastSVGPath.lastIndexOf(\"M\");\n      this.#lastSVGPath = `${this.#lastSVGPath.slice(0, i)} M ${firstX} ${firstY}`;\n      this.#lastIndex = 6;\n    }\n\n    if (this.#points.length === 4) {\n      const secondX = Outline.svgRound(this.#line[10]);\n      const secondY = Outline.svgRound(this.#line[11]);\n      this.#lastSVGPath = `${this.#lastSVGPath} L ${secondX} ${secondY}`;\n      this.#lastIndex = 12;\n      return this.#lastSVGPath;\n    }\n\n    const buffer = [];\n    if (this.#lastIndex === 0) {\n      buffer.push(`M ${firstX} ${firstY}`);\n      this.#lastIndex = 6;\n    }\n\n    for (let i = this.#lastIndex, ii = this.#line.length; i < ii; i += 6) {\n      const [c1x, c1y, c2x, c2y, x, y] = this.#line\n        .slice(i, i + 6)\n        .map(Outline.svgRound);\n      buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n    }\n    this.#lastSVGPath += buffer.join(\" \");\n    this.#lastIndex = this.#line.length;\n\n    return this.#lastSVGPath;\n  }\n\n  getOutlines(parentWidth, parentHeight, scale, innerMargin) {\n    const last = this.#lines.at(-1);\n    last.line = new Float32Array(last.line);\n    last.points = new Float32Array(last.points);\n\n    this.#outlines.build(\n      this.#lines,\n      parentWidth,\n      parentHeight,\n      scale,\n      this.#rotation,\n      this.#thickness,\n      innerMargin\n    );\n\n    // We reset everything: the drawing is done.\n    this.#last = null;\n    this.#line = null;\n    this.#lines = null;\n    this.#lastSVGPath = null;\n\n    return this.#outlines;\n  }\n\n  get defaultSVGProperties() {\n    return {\n      root: {\n        viewBox: \"0 0 10000 10000\",\n      },\n      rootClass: {\n        draw: true,\n      },\n      bbox: [0, 0, 1, 1],\n    };\n  }\n}\n\nclass InkDrawOutline extends Outline {\n  #bbox;\n\n  #currentRotation = 0;\n\n  #innerMargin;\n\n  #lines;\n\n  #parentWidth;\n\n  #parentHeight;\n\n  #parentScale;\n\n  #rotation;\n\n  #thickness;\n\n  build(\n    lines,\n    parentWidth,\n    parentHeight,\n    parentScale,\n    rotation,\n    thickness,\n    innerMargin\n  ) {\n    this.#parentWidth = parentWidth;\n    this.#parentHeight = parentHeight;\n    this.#parentScale = parentScale;\n    this.#rotation = rotation;\n    this.#thickness = thickness;\n    this.#innerMargin = innerMargin ?? 0;\n    this.#lines = lines;\n\n    this.#computeBbox();\n  }\n\n  get thickness() {\n    return this.#thickness;\n  }\n\n  setLastElement(element) {\n    this.#lines.push(element);\n    return {\n      path: {\n        d: this.toSVGPath(),\n      },\n    };\n  }\n\n  removeLastElement() {\n    this.#lines.pop();\n    return {\n      path: {\n        d: this.toSVGPath(),\n      },\n    };\n  }\n\n  toSVGPath() {\n    const buffer = [];\n    for (const { line } of this.#lines) {\n      buffer.push(`M${Outline.svgRound(line[4])} ${Outline.svgRound(line[5])}`);\n      if (line.length === 6) {\n        buffer.push(\"Z\");\n        continue;\n      }\n      if (line.length === 12 && isNaN(line[6])) {\n        buffer.push(\n          `L${Outline.svgRound(line[10])} ${Outline.svgRound(line[11])}`\n        );\n        continue;\n      }\n      for (let i = 6, ii = line.length; i < ii; i += 6) {\n        const [c1x, c1y, c2x, c2y, x, y] = line\n          .subarray(i, i + 6)\n          .map(Outline.svgRound);\n        buffer.push(`C${c1x} ${c1y} ${c2x} ${c2y} ${x} ${y}`);\n      }\n    }\n    return buffer.join(\"\");\n  }\n\n  serialize([pageX, pageY, pageWidth, pageHeight], isForCopying) {\n    const serializedLines = [];\n    const serializedPoints = [];\n    const [x, y, width, height] = this.#getBBoxWithNoMargin();\n    let tx, ty, sx, sy, x1, y1, x2, y2, rescaleFn;\n\n    switch (this.#rotation) {\n      case 0:\n        rescaleFn = Outline._rescale;\n        tx = pageX;\n        ty = pageY + pageHeight;\n        sx = pageWidth;\n        sy = -pageHeight;\n        x1 = pageX + x * pageWidth;\n        y1 = pageY + (1 - y - height) * pageHeight;\n        x2 = pageX + (x + width) * pageWidth;\n        y2 = pageY + (1 - y) * pageHeight;\n        break;\n      case 90:\n        rescaleFn = Outline._rescaleAndSwap;\n        tx = pageX;\n        ty = pageY;\n        sx = pageWidth;\n        sy = pageHeight;\n        x1 = pageX + y * pageWidth;\n        y1 = pageY + x * pageHeight;\n        x2 = pageX + (y + height) * pageWidth;\n        y2 = pageY + (x + width) * pageHeight;\n        break;\n      case 180:\n        rescaleFn = Outline._rescale;\n        tx = pageX + pageWidth;\n        ty = pageY;\n        sx = -pageWidth;\n        sy = pageHeight;\n        x1 = pageX + (1 - x - width) * pageWidth;\n        y1 = pageY + y * pageHeight;\n        x2 = pageX + (1 - x) * pageWidth;\n        y2 = pageY + (y + height) * pageHeight;\n        break;\n      case 270:\n        rescaleFn = Outline._rescaleAndSwap;\n        tx = pageX + pageWidth;\n        ty = pageY + pageHeight;\n        sx = -pageWidth;\n        sy = -pageHeight;\n        x1 = pageX + (1 - y - height) * pageWidth;\n        y1 = pageY + (1 - x - width) * pageHeight;\n        x2 = pageX + (1 - y) * pageWidth;\n        y2 = pageY + (1 - x) * pageHeight;\n        break;\n    }\n\n    for (const { line, points } of this.#lines) {\n      serializedLines.push(\n        rescaleFn(\n          line,\n          tx,\n          ty,\n          sx,\n          sy,\n          isForCopying ? new Array(line.length) : null\n        )\n      );\n      serializedPoints.push(\n        rescaleFn(\n          points,\n          tx,\n          ty,\n          sx,\n          sy,\n          isForCopying ? new Array(points.length) : null\n        )\n      );\n    }\n\n    return {\n      lines: serializedLines,\n      points: serializedPoints,\n      rect: [x1, y1, x2, y2],\n    };\n  }\n\n  static deserialize(\n    pageX,\n    pageY,\n    pageWidth,\n    pageHeight,\n    innerMargin,\n    { paths: { lines, points }, rotation, thickness }\n  ) {\n    const newLines = [];\n    let tx, ty, sx, sy, rescaleFn;\n    switch (rotation) {\n      case 0:\n        rescaleFn = Outline._rescale;\n        tx = -pageX / pageWidth;\n        ty = pageY / pageHeight + 1;\n        sx = 1 / pageWidth;\n        sy = -1 / pageHeight;\n        break;\n      case 90:\n        rescaleFn = Outline._rescaleAndSwap;\n        tx = -pageY / pageHeight;\n        ty = -pageX / pageWidth;\n        sx = 1 / pageHeight;\n        sy = 1 / pageWidth;\n        break;\n      case 180:\n        rescaleFn = Outline._rescale;\n        tx = pageX / pageWidth + 1;\n        ty = -pageY / pageHeight;\n        sx = -1 / pageWidth;\n        sy = 1 / pageHeight;\n        break;\n      case 270:\n        rescaleFn = Outline._rescaleAndSwap;\n        tx = pageY / pageHeight + 1;\n        ty = pageX / pageWidth + 1;\n        sx = -1 / pageHeight;\n        sy = -1 / pageWidth;\n        break;\n    }\n\n    if (!lines) {\n      lines = [];\n      for (const point of points) {\n        const len = point.length;\n        if (len === 2) {\n          lines.push(\n            new Float32Array([NaN, NaN, NaN, NaN, point[0], point[1]])\n          );\n          continue;\n        }\n        if (len === 4) {\n          lines.push(\n            new Float32Array([\n              NaN,\n              NaN,\n              NaN,\n              NaN,\n              point[0],\n              point[1],\n              NaN,\n              NaN,\n              NaN,\n              NaN,\n              point[2],\n              point[3],\n            ])\n          );\n          continue;\n        }\n        const line = new Float32Array(3 * (len - 2));\n        lines.push(line);\n        let [x1, y1, x2, y2] = point.subarray(0, 4);\n        line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n        for (let i = 4; i < len; i += 2) {\n          const x = point[i];\n          const y = point[i + 1];\n          line.set(\n            Outline.createBezierPoints(x1, y1, x2, y2, x, y),\n            (i - 2) * 3\n          );\n          [x1, y1, x2, y2] = [x2, y2, x, y];\n        }\n      }\n    }\n\n    for (let i = 0, ii = lines.length; i < ii; i++) {\n      newLines.push({\n        line: rescaleFn(\n          lines[i].map(x => x ?? NaN),\n          tx,\n          ty,\n          sx,\n          sy\n        ),\n        points: rescaleFn(\n          points[i].map(x => x ?? NaN),\n          tx,\n          ty,\n          sx,\n          sy\n        ),\n      });\n    }\n\n    const outlines = new this.prototype.constructor();\n    outlines.build(\n      newLines,\n      pageWidth,\n      pageHeight,\n      1,\n      rotation,\n      thickness,\n      innerMargin\n    );\n\n    return outlines;\n  }\n\n  #getMarginComponents(thickness = this.#thickness) {\n    const margin = this.#innerMargin + (thickness / 2) * this.#parentScale;\n    return this.#rotation % 180 === 0\n      ? [margin / this.#parentWidth, margin / this.#parentHeight]\n      : [margin / this.#parentHeight, margin / this.#parentWidth];\n  }\n\n  #getBBoxWithNoMargin() {\n    const [x, y, width, height] = this.#bbox;\n    const [marginX, marginY] = this.#getMarginComponents(0);\n\n    return [\n      x + marginX,\n      y + marginY,\n      width - 2 * marginX,\n      height - 2 * marginY,\n    ];\n  }\n\n  #computeBbox() {\n    const bbox = (this.#bbox = new Float32Array([\n      Infinity,\n      Infinity,\n      -Infinity,\n      -Infinity,\n    ]));\n\n    for (const { line } of this.#lines) {\n      if (line.length <= 12) {\n        // We've only one or two points => no bezier curve.\n        for (let i = 4, ii = line.length; i < ii; i += 6) {\n          Util.pointBoundingBox(line[i], line[i + 1], bbox);\n        }\n        continue;\n      }\n      let lastX = line[4],\n        lastY = line[5];\n      for (let i = 6, ii = line.length; i < ii; i += 6) {\n        const [c1x, c1y, c2x, c2y, x, y] = line.subarray(i, i + 6);\n        Util.bezierBoundingBox(lastX, lastY, c1x, c1y, c2x, c2y, x, y, bbox);\n        lastX = x;\n        lastY = y;\n      }\n    }\n\n    const [marginX, marginY] = this.#getMarginComponents();\n    bbox[0] = MathClamp(bbox[0] - marginX, 0, 1);\n    bbox[1] = MathClamp(bbox[1] - marginY, 0, 1);\n    bbox[2] = MathClamp(bbox[2] + marginX, 0, 1);\n    bbox[3] = MathClamp(bbox[3] + marginY, 0, 1);\n\n    bbox[2] -= bbox[0];\n    bbox[3] -= bbox[1];\n  }\n\n  get box() {\n    return this.#bbox;\n  }\n\n  updateProperty(name, value) {\n    if (name === \"stroke-width\") {\n      return this.#updateThickness(value);\n    }\n    return null;\n  }\n\n  #updateThickness(thickness) {\n    const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n    this.#thickness = thickness;\n    const [newMarginX, newMarginY] = this.#getMarginComponents();\n    const [diffMarginX, diffMarginY] = [\n      newMarginX - oldMarginX,\n      newMarginY - oldMarginY,\n    ];\n    const bbox = this.#bbox;\n    bbox[0] -= diffMarginX;\n    bbox[1] -= diffMarginY;\n    bbox[2] += 2 * diffMarginX;\n    bbox[3] += 2 * diffMarginY;\n\n    return bbox;\n  }\n\n  updateParentDimensions([width, height], scale) {\n    const [oldMarginX, oldMarginY] = this.#getMarginComponents();\n    this.#parentWidth = width;\n    this.#parentHeight = height;\n    this.#parentScale = scale;\n    const [newMarginX, newMarginY] = this.#getMarginComponents();\n    const diffMarginX = newMarginX - oldMarginX;\n    const diffMarginY = newMarginY - oldMarginY;\n\n    const bbox = this.#bbox;\n    bbox[0] -= diffMarginX;\n    bbox[1] -= diffMarginY;\n    bbox[2] += 2 * diffMarginX;\n    bbox[3] += 2 * diffMarginY;\n\n    return bbox;\n  }\n\n  updateRotation(rotation) {\n    this.#currentRotation = rotation;\n    return {\n      path: {\n        transform: this.rotationTransform,\n      },\n    };\n  }\n\n  get viewBox() {\n    return this.#bbox.map(Outline.svgRound).join(\" \");\n  }\n\n  get defaultProperties() {\n    const [x, y] = this.#bbox;\n    return {\n      root: {\n        viewBox: this.viewBox,\n      },\n      path: {\n        \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`,\n      },\n    };\n  }\n\n  get rotationTransform() {\n    const [, , width, height] = this.#bbox;\n    let a = 0,\n      b = 0,\n      c = 0,\n      d = 0,\n      e = 0,\n      f = 0;\n    switch (this.#currentRotation) {\n      case 90:\n        b = height / width;\n        c = -width / height;\n        e = width;\n        break;\n      case 180:\n        a = -1;\n        d = -1;\n        e = width;\n        f = height;\n        break;\n      case 270:\n        b = -height / width;\n        c = width / height;\n        f = height;\n        break;\n      default:\n        return \"\";\n    }\n    return `matrix(${a} ${b} ${c} ${d} ${Outline.svgRound(e)} ${Outline.svgRound(f)})`;\n  }\n\n  getPathResizingSVGProperties([newX, newY, newWidth, newHeight]) {\n    const [marginX, marginY] = this.#getMarginComponents();\n    const [x, y, width, height] = this.#bbox;\n\n    if (\n      Math.abs(width - marginX) <= Outline.PRECISION ||\n      Math.abs(height - marginY) <= Outline.PRECISION\n    ) {\n      // Center the path in the new bounding box.\n      const tx = newX + newWidth / 2 - (x + width / 2);\n      const ty = newY + newHeight / 2 - (y + height / 2);\n      return {\n        path: {\n          \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n          transform: `${this.rotationTransform} translate(${tx} ${ty})`,\n        },\n      };\n    }\n\n    // We compute the following transform:\n    //  1. Translate the path to the origin (-marginX, -marginY).\n    //  2. Scale the path to the new size:\n    //   ((newWidth - 2*marginX) / (bbox.width - 2*marginX),\n    //   (newHeight - 2*marginY) / (bbox.height - 2*marginY)).\n    //  3. Translate the path back to its original position\n    //   (marginX, marginY).\n    //  4. Scale the inverse of bbox scaling:\n    //   (bbox.width / newWidth, bbox.height / newHeight).\n\n    const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n    const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n    const s2x = width / newWidth;\n    const s2y = height / newHeight;\n\n    return {\n      path: {\n        \"transform-origin\": `${Outline.svgRound(x)} ${Outline.svgRound(y)}`,\n        transform:\n          `${this.rotationTransform} scale(${s2x} ${s2y}) ` +\n          `translate(${Outline.svgRound(marginX)} ${Outline.svgRound(marginY)}) scale(${s1x} ${s1y}) ` +\n          `translate(${Outline.svgRound(-marginX)} ${Outline.svgRound(-marginY)})`,\n      },\n    };\n  }\n\n  getPathResizedSVGProperties([newX, newY, newWidth, newHeight]) {\n    const [marginX, marginY] = this.#getMarginComponents();\n    const bbox = this.#bbox;\n    const [x, y, width, height] = bbox;\n\n    bbox[0] = newX;\n    bbox[1] = newY;\n    bbox[2] = newWidth;\n    bbox[3] = newHeight;\n\n    if (\n      Math.abs(width - marginX) <= Outline.PRECISION ||\n      Math.abs(height - marginY) <= Outline.PRECISION\n    ) {\n      // Center the path in the new bounding box.\n      const tx = newX + newWidth / 2 - (x + width / 2);\n      const ty = newY + newHeight / 2 - (y + height / 2);\n      for (const { line, points } of this.#lines) {\n        Outline._translate(line, tx, ty, line);\n        Outline._translate(points, tx, ty, points);\n      }\n      return {\n        root: {\n          viewBox: this.viewBox,\n        },\n        path: {\n          \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n          transform: this.rotationTransform || null,\n          d: this.toSVGPath(),\n        },\n      };\n    }\n\n    // We compute the following transform:\n    //  1. Translate the path to the origin (-(x + marginX), -(y + marginY)).\n    //  2. Scale the path to the new size:\n    //   ((newWidth - 2*marginX) / (bbox.width - 2*marginX),\n    //   (newHeight - 2*marginY) / (bbox.height - 2*marginY)).\n    //  3. Translate the path back to its new position\n    //     (newX + marginX,y newY + marginY).\n\n    const s1x = (newWidth - 2 * marginX) / (width - 2 * marginX);\n    const s1y = (newHeight - 2 * marginY) / (height - 2 * marginY);\n    const tx = -s1x * (x + marginX) + newX + marginX;\n    const ty = -s1y * (y + marginY) + newY + marginY;\n\n    if (s1x !== 1 || s1y !== 1 || tx !== 0 || ty !== 0) {\n      for (const { line, points } of this.#lines) {\n        Outline._rescale(line, tx, ty, s1x, s1y, line);\n        Outline._rescale(points, tx, ty, s1x, s1y, points);\n      }\n    }\n\n    return {\n      root: {\n        viewBox: this.viewBox,\n      },\n      path: {\n        \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n        transform: this.rotationTransform || null,\n        d: this.toSVGPath(),\n      },\n    };\n  }\n\n  getPathTranslatedSVGProperties([newX, newY], parentDimensions) {\n    const [newParentWidth, newParentHeight] = parentDimensions;\n    const bbox = this.#bbox;\n    const tx = newX - bbox[0];\n    const ty = newY - bbox[1];\n\n    if (\n      this.#parentWidth === newParentWidth &&\n      this.#parentHeight === newParentHeight\n    ) {\n      // We don't change the parent dimensions so it's a simple translation.\n      for (const { line, points } of this.#lines) {\n        Outline._translate(line, tx, ty, line);\n        Outline._translate(points, tx, ty, points);\n      }\n    } else {\n      const sx = this.#parentWidth / newParentWidth;\n      const sy = this.#parentHeight / newParentHeight;\n      this.#parentWidth = newParentWidth;\n      this.#parentHeight = newParentHeight;\n\n      for (const { line, points } of this.#lines) {\n        Outline._rescale(line, tx, ty, sx, sy, line);\n        Outline._rescale(points, tx, ty, sx, sy, points);\n      }\n      bbox[2] *= sx;\n      bbox[3] *= sy;\n    }\n    bbox[0] = newX;\n    bbox[1] = newY;\n\n    return {\n      root: {\n        viewBox: this.viewBox,\n      },\n      path: {\n        d: this.toSVGPath(),\n        \"transform-origin\": `${Outline.svgRound(newX)} ${Outline.svgRound(newY)}`,\n      },\n    };\n  }\n\n  get defaultSVGProperties() {\n    const bbox = this.#bbox;\n    return {\n      root: {\n        viewBox: this.viewBox,\n      },\n      rootClass: {\n        draw: true,\n      },\n      path: {\n        d: this.toSVGPath(),\n        \"transform-origin\": `${Outline.svgRound(bbox[0])} ${Outline.svgRound(bbox[1])}`,\n        transform: this.rotationTransform || null,\n      },\n      bbox,\n    };\n  }\n}\n\nexport { InkDrawOutline, InkDrawOutliner };\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\nimport {\n  AnnotationEditorParamsType,\n  AnnotationEditorType,\n  shadow,\n  Util,\n} from \"../../shared/util.js\";\nimport { DrawingEditor, DrawingOptions } from \"./draw.js\";\nimport { InkDrawOutline, InkDrawOutliner } from \"./drawers/inkdraw.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { BasicColorPicker } from \"./color_picker.js\";\nimport { InkAnnotationElement } from \"../annotation_layer.js\";\n\nclass InkDrawingOptions extends DrawingOptions {\n  constructor(viewerParameters) {\n    super();\n    this._viewParameters = viewerParameters;\n\n    super.updateProperties({\n      fill: \"none\",\n      stroke: AnnotationEditor._defaultLineColor,\n      \"stroke-opacity\": 1,\n      \"stroke-width\": 1,\n      \"stroke-linecap\": \"round\",\n      \"stroke-linejoin\": \"round\",\n      \"stroke-miterlimit\": 10,\n    });\n  }\n\n  updateSVGProperty(name, value) {\n    if (name === \"stroke-width\") {\n      value ??= this[\"stroke-width\"];\n      value *= this._viewParameters.realScale;\n    }\n    super.updateSVGProperty(name, value);\n  }\n\n  clone() {\n    const clone = new InkDrawingOptions(this._viewParameters);\n    clone.updateAll(this);\n    return clone;\n  }\n}\n\n/**\n * Basic draw editor in order to generate an Ink annotation.\n */\nclass InkEditor extends DrawingEditor {\n  static _type = \"ink\";\n\n  static _editorType = AnnotationEditorType.INK;\n\n  static _defaultDrawingOptions = null;\n\n  constructor(params) {\n    super({ ...params, name: \"inkEditor\" });\n    this._willKeepAspectRatio = true;\n    this.defaultL10nId = \"pdfjs-editor-ink-editor\";\n  }\n\n  /** @inheritdoc */\n  static initialize(l10n, uiManager) {\n    AnnotationEditor.initialize(l10n, uiManager);\n    this._defaultDrawingOptions = new InkDrawingOptions(\n      uiManager.viewParameters\n    );\n  }\n\n  /** @inheritdoc */\n  static getDefaultDrawingOptions(options) {\n    const clone = this._defaultDrawingOptions.clone();\n    clone.updateProperties(options);\n    return clone;\n  }\n\n  /** @inheritdoc */\n  static get supportMultipleDrawings() {\n    return true;\n  }\n\n  /** @inheritdoc */\n  static get typesMap() {\n    return shadow(\n      this,\n      \"typesMap\",\n      new Map([\n        [AnnotationEditorParamsType.INK_THICKNESS, \"stroke-width\"],\n        [AnnotationEditorParamsType.INK_COLOR, \"stroke\"],\n        [AnnotationEditorParamsType.INK_OPACITY, \"stroke-opacity\"],\n      ])\n    );\n  }\n\n  /** @inheritdoc */\n  static createDrawerInstance(x, y, parentWidth, parentHeight, rotation) {\n    return new InkDrawOutliner(\n      x,\n      y,\n      parentWidth,\n      parentHeight,\n      rotation,\n      this._defaultDrawingOptions[\"stroke-width\"]\n    );\n  }\n\n  /** @inheritdoc */\n  static deserializeDraw(\n    pageX,\n    pageY,\n    pageWidth,\n    pageHeight,\n    innerMargin,\n    data\n  ) {\n    return InkDrawOutline.deserialize(\n      pageX,\n      pageY,\n      pageWidth,\n      pageHeight,\n      innerMargin,\n      data\n    );\n  }\n\n  /** @inheritdoc */\n  static async deserialize(data, parent, uiManager) {\n    let initialData = null;\n    if (data instanceof InkAnnotationElement) {\n      const {\n        data: {\n          inkLists,\n          rect,\n          rotation,\n          id,\n          color,\n          opacity,\n          borderStyle: { rawWidth: thickness },\n          popupRef,\n          richText,\n          contentsObj,\n          creationDate,\n          modificationDate,\n        },\n        parent: {\n          page: { pageNumber },\n        },\n      } = data;\n      initialData = data = {\n        annotationType: AnnotationEditorType.INK,\n        color: Array.from(color),\n        thickness,\n        opacity,\n        paths: { points: inkLists },\n        boxes: null,\n        pageIndex: pageNumber - 1,\n        rect: rect.slice(0),\n        rotation,\n        annotationElementId: id,\n        id,\n        deleted: false,\n        popupRef,\n        richText,\n        comment: contentsObj?.str || null,\n        creationDate,\n        modificationDate,\n      };\n    }\n\n    const editor = await super.deserialize(data, parent, uiManager);\n    editor._initialData = initialData;\n    if (data.comment) {\n      editor.setCommentData(data);\n    }\n\n    return editor;\n  }\n\n  /** @inheritdoc */\n  get toolbarButtons() {\n    this._colorPicker ||= new BasicColorPicker(this);\n    return [[\"colorPicker\", this._colorPicker]];\n  }\n\n  get colorType() {\n    return AnnotationEditorParamsType.INK_COLOR;\n  }\n\n  get color() {\n    return this._drawingOptions.stroke;\n  }\n\n  get opacity() {\n    return this._drawingOptions[\"stroke-opacity\"];\n  }\n\n  /** @inheritdoc */\n  onScaleChanging() {\n    if (!this.parent) {\n      return;\n    }\n    super.onScaleChanging();\n    const { _drawId, _drawingOptions, parent } = this;\n    _drawingOptions.updateSVGProperty(\"stroke-width\");\n    parent.drawLayer.updateProperties(\n      _drawId,\n      _drawingOptions.toSVGProperties()\n    );\n  }\n\n  static onScaleChangingWhenDrawing() {\n    const parent = this._currentParent;\n    if (!parent) {\n      return;\n    }\n    super.onScaleChangingWhenDrawing();\n    this._defaultDrawingOptions.updateSVGProperty(\"stroke-width\");\n    parent.drawLayer.updateProperties(\n      this._currentDrawId,\n      this._defaultDrawingOptions.toSVGProperties()\n    );\n  }\n\n  /** @inheritdoc */\n  createDrawingOptions({ color, thickness, opacity }) {\n    this._drawingOptions = InkEditor.getDefaultDrawingOptions({\n      stroke: Util.makeHexColor(...color),\n      \"stroke-width\": thickness,\n      \"stroke-opacity\": opacity,\n    });\n  }\n\n  /** @inheritdoc */\n  serialize(isForCopying = false) {\n    if (this.isEmpty()) {\n      return null;\n    }\n\n    if (this.deleted) {\n      return this.serializeDeleted();\n    }\n\n    const { lines, points } = this.serializeDraw(isForCopying);\n    const {\n      _drawingOptions: {\n        stroke,\n        \"stroke-opacity\": opacity,\n        \"stroke-width\": thickness,\n      },\n    } = this;\n    const serialized = Object.assign(super.serialize(isForCopying), {\n      color: AnnotationEditor._colorManager.convert(stroke),\n      opacity,\n      thickness,\n      paths: {\n        lines,\n        points,\n      },\n    });\n    this.addComment(serialized);\n\n    if (isForCopying) {\n      serialized.isCopy = true;\n      return serialized;\n    }\n\n    if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n      return null;\n    }\n\n    serialized.id = this.annotationElementId;\n    return serialized;\n  }\n\n  #hasElementChanged(serialized) {\n    const { color, thickness, opacity, pageIndex } = this._initialData;\n    return (\n      this.hasEditedComment ||\n      this._hasBeenMoved ||\n      this._hasBeenResized ||\n      serialized.color.some((c, i) => c !== color[i]) ||\n      serialized.thickness !== thickness ||\n      serialized.opacity !== opacity ||\n      serialized.pageIndex !== pageIndex\n    );\n  }\n\n  /** @inheritdoc */\n  renderAnnotationElement(annotation) {\n    if (this.deleted) {\n      annotation.hide();\n      return null;\n    }\n    const { points, rect } = this.serializeDraw(/* isForCopying = */ false);\n    annotation.updateEdited({\n      rect,\n      thickness: this._drawingOptions[\"stroke-width\"],\n      points,\n      popup: this.comment,\n    });\n\n    return null;\n  }\n}\n\nexport { InkDrawingOptions, InkEditor };\n", "/* Copyright 2024 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { InkDrawOutline } from \"./inkdraw.js\";\n\nclass ContourDrawOutline extends InkDrawOutline {\n  toSVGPath() {\n    let path = super.toSVGPath();\n    if (!path.endsWith(\"Z\")) {\n      path += \"Z\";\n    }\n    return path;\n  }\n}\n\nexport { ContourDrawOutline };\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\nimport { fromBase64Util, toBase64Util, warn } from \"../../../shared/util.js\";\nimport { ContourDrawOutline } from \"./contour.js\";\nimport { InkDrawOutline } from \"./inkdraw.js\";\nimport { Outline } from \"./outline.js\";\n\nconst BASE_HEADER_LENGTH = 8;\nconst POINTS_PROPERTIES_NUMBER = 3;\n\n/**\n * Basic text editor in order to create a Signature annotation.\n */\nclass SignatureExtractor {\n  static #PARAMETERS = {\n    maxDim: 512,\n    sigmaSFactor: 0.02,\n    sigmaR: 25,\n    kernelSize: 16,\n  };\n\n  static #neighborIndexToId(i0, j0, i, j) {\n    /*\n      The idea is to map the neighbors of a pixel into a unique id.\n        3 2 1\n        4 X 0\n        5 6 7\n    */\n\n    i -= i0;\n    j -= j0;\n\n    if (i === 0) {\n      return j > 0 ? 0 : 4;\n    }\n\n    if (i === 1) {\n      return j + 6;\n    }\n\n    return 2 - j;\n  }\n\n  static #neighborIdToIndex = new Int32Array([\n    0, 1, -1, 1, -1, 0, -1, -1, 0, -1, 1, -1, 1, 0, 1, 1,\n  ]);\n\n  static #clockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n    const id = this.#neighborIndexToId(i0, j0, i, j);\n    for (let k = 0; k < 8; k++) {\n      const kk = (-k + id - offset + 16) % 8;\n      const shiftI = this.#neighborIdToIndex[2 * kk];\n      const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n      if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n        return kk;\n      }\n    }\n    return -1;\n  }\n\n  static #counterClockwiseNonZero(buf, width, i0, j0, i, j, offset) {\n    const id = this.#neighborIndexToId(i0, j0, i, j);\n    for (let k = 0; k < 8; k++) {\n      const kk = (k + id + offset + 16) % 8;\n      const shiftI = this.#neighborIdToIndex[2 * kk];\n      const shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n      if (buf[(i0 + shiftI) * width + (j0 + shiftJ)] !== 0) {\n        return kk;\n      }\n    }\n    return -1;\n  }\n\n  static #findContours(buf, width, height, threshold) {\n    // Based on the Suzuki's algorithm:\n    //  https://web.archive.org/web/20231213161741/https://www.nevis.columbia.edu/~vgenty/public/suzuki_et_al.pdf\n\n    const N = buf.length;\n    const types = new Int32Array(N);\n    for (let i = 0; i < N; i++) {\n      types[i] = buf[i] <= threshold ? 1 : 0;\n    }\n\n    for (let i = 1; i < height - 1; i++) {\n      types[i * width] = types[i * width + width - 1] = 0;\n    }\n    for (let i = 0; i < width; i++) {\n      types[i] = types[width * height - 1 - i] = 0;\n    }\n\n    let nbd = 1;\n    let lnbd;\n    const contours = [];\n\n    for (let i = 1; i < height - 1; i++) {\n      lnbd = 1;\n      for (let j = 1; j < width - 1; j++) {\n        const ij = i * width + j;\n        const pix = types[ij];\n        if (pix === 0) {\n          continue;\n        }\n\n        let i2 = i;\n        let j2 = j;\n\n        if (pix === 1 && types[ij - 1] === 0) {\n          // Outer border.\n          nbd += 1;\n          j2 -= 1;\n        } else if (pix >= 1 && types[ij + 1] === 0) {\n          // Hole border.\n          nbd += 1;\n          j2 += 1;\n          if (pix > 1) {\n            lnbd = pix;\n          }\n        } else {\n          if (pix !== 1) {\n            lnbd = Math.abs(pix);\n          }\n          continue;\n        }\n\n        const points = [j, i];\n        const isHole = j2 === j + 1;\n        const contour = {\n          isHole,\n          points,\n          id: nbd,\n          parent: 0,\n        };\n        contours.push(contour);\n\n        let contour0;\n        for (const c of contours) {\n          if (c.id === lnbd) {\n            contour0 = c;\n            break;\n          }\n        }\n\n        if (!contour0) {\n          contour.parent = isHole ? lnbd : 0;\n        } else if (contour0.isHole) {\n          contour.parent = isHole ? contour0.parent : lnbd;\n        } else {\n          contour.parent = isHole ? lnbd : contour0.parent;\n        }\n\n        const k = this.#clockwiseNonZero(types, width, i, j, i2, j2, 0);\n        if (k === -1) {\n          types[ij] = -nbd;\n          if (types[ij] !== 1) {\n            lnbd = Math.abs(types[ij]);\n          }\n          continue;\n        }\n\n        let shiftI = this.#neighborIdToIndex[2 * k];\n        let shiftJ = this.#neighborIdToIndex[2 * k + 1];\n        const i1 = i + shiftI;\n        const j1 = j + shiftJ;\n        i2 = i1;\n        j2 = j1;\n        let i3 = i;\n        let j3 = j;\n\n        while (true) {\n          const kk = this.#counterClockwiseNonZero(\n            types,\n            width,\n            i3,\n            j3,\n            i2,\n            j2,\n            1\n          );\n          shiftI = this.#neighborIdToIndex[2 * kk];\n          shiftJ = this.#neighborIdToIndex[2 * kk + 1];\n          const i4 = i3 + shiftI;\n          const j4 = j3 + shiftJ;\n          points.push(j4, i4);\n          const ij3 = i3 * width + j3;\n          if (types[ij3 + 1] === 0) {\n            types[ij3] = -nbd;\n          } else if (types[ij3] === 1) {\n            types[ij3] = nbd;\n          }\n\n          if (i4 === i && j4 === j && i3 === i1 && j3 === j1) {\n            if (types[ij] !== 1) {\n              lnbd = Math.abs(types[ij]);\n            }\n            break;\n          } else {\n            i2 = i3;\n            j2 = j3;\n            i3 = i4;\n            j3 = j4;\n          }\n        }\n      }\n    }\n    return contours;\n  }\n\n  static #douglasPeuckerHelper(points, start, end, output) {\n    // Based on the Douglas-Peucker algorithm:\n    //  https://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm\n    if (end - start <= 4) {\n      for (let i = start; i < end - 2; i += 2) {\n        output.push(points[i], points[i + 1]);\n      }\n      return;\n    }\n\n    const ax = points[start];\n    const ay = points[start + 1];\n    const abx = points[end - 4] - ax;\n    const aby = points[end - 3] - ay;\n    const dist = Math.hypot(abx, aby);\n    const nabx = abx / dist;\n    const naby = aby / dist;\n    const aa = nabx * ay - naby * ax;\n\n    // Guessing the epsilon value.\n    // See \"A novel framework for making dominant point detection methods\n    // non-parametric\".\n    const m = aby / abx;\n    const invS = 1 / dist;\n    const phi = Math.atan(m);\n    const cosPhi = Math.cos(phi);\n    const sinPhi = Math.sin(phi);\n    const tmax = invS * (Math.abs(cosPhi) + Math.abs(sinPhi));\n    const poly = invS * (1 - tmax + tmax ** 2);\n    const partialPhi = Math.max(\n      Math.atan(Math.abs(sinPhi + cosPhi) * poly),\n      Math.atan(Math.abs(sinPhi - cosPhi) * poly)\n    );\n\n    let dmax = 0;\n    let index = start;\n    for (let i = start + 2; i < end - 2; i += 2) {\n      const d = Math.abs(aa - nabx * points[i + 1] + naby * points[i]);\n      if (d > dmax) {\n        index = i;\n        dmax = d;\n      }\n    }\n\n    if (dmax > (dist * partialPhi) ** 2) {\n      this.#douglasPeuckerHelper(points, start, index + 2, output);\n      this.#douglasPeuckerHelper(points, index, end, output);\n    } else {\n      output.push(ax, ay);\n    }\n  }\n\n  static #douglasPeucker(points) {\n    const output = [];\n    const len = points.length;\n    this.#douglasPeuckerHelper(points, 0, len, output);\n    output.push(points[len - 2], points[len - 1]);\n    return output.length <= 4 ? null : output;\n  }\n\n  static #bilateralFilter(buf, width, height, sigmaS, sigmaR, kernelSize) {\n    // The bilateral filter is a nonlinear filter that does spatial averaging.\n    // Its main interest is to preserve edges while removing noise.\n    // See https://en.wikipedia.org/wiki/Bilateral_filter for more details.\n    // sigmaS is the standard deviation of the spatial gaussian.\n    // sigmaR is the standard deviation of the range (in term of pixel\n    // intensity) gaussian.\n\n    // Create a gaussian kernel\n    const kernel = new Float32Array(kernelSize ** 2);\n    const sigmaS2 = -2 * sigmaS ** 2;\n    const halfSize = kernelSize >> 1;\n\n    for (let i = 0; i < kernelSize; i++) {\n      const x = (i - halfSize) ** 2;\n      for (let j = 0; j < kernelSize; j++) {\n        kernel[i * kernelSize + j] = Math.exp(\n          (x + (j - halfSize) ** 2) / sigmaS2\n        );\n      }\n    }\n\n    // Create the range values to be used with the distance between pixels.\n    // It's a way faster with a lookup table than computing the exponential.\n    const rangeValues = new Float32Array(256);\n    const sigmaR2 = -2 * sigmaR ** 2;\n    for (let i = 0; i < 256; i++) {\n      rangeValues[i] = Math.exp(i ** 2 / sigmaR2);\n    }\n\n    const N = buf.length;\n    const out = new Uint8Array(N);\n\n    // We compute the histogram here instead of doing it later: it's slightly\n    // faster.\n    const histogram = new Uint32Array(256);\n    for (let i = 0; i < height; i++) {\n      for (let j = 0; j < width; j++) {\n        const ij = i * width + j;\n        const center = buf[ij];\n        let sum = 0;\n        let norm = 0;\n\n        for (let k = 0; k < kernelSize; k++) {\n          const y = i + k - halfSize;\n          if (y < 0 || y >= height) {\n            continue;\n          }\n          for (let l = 0; l < kernelSize; l++) {\n            const x = j + l - halfSize;\n            if (x < 0 || x >= width) {\n              continue;\n            }\n            const neighbour = buf[y * width + x];\n            const w =\n              kernel[k * kernelSize + l] *\n              rangeValues[Math.abs(neighbour - center)];\n            sum += neighbour * w;\n            norm += w;\n          }\n        }\n\n        const pix = (out[ij] = Math.round(sum / norm));\n        histogram[pix]++;\n      }\n    }\n\n    return [out, histogram];\n  }\n\n  static #getHistogram(buf) {\n    const histogram = new Uint32Array(256);\n    for (const g of buf) {\n      histogram[g]++;\n    }\n    return histogram;\n  }\n\n  static #toUint8(buf) {\n    // We have a RGBA buffer, containing a grayscale image.\n    // We want to convert it into a basic G buffer.\n    // Also, we want to normalize the values between 0 and 255 in order to\n    // increase the contrast.\n    const N = buf.length;\n    const out = new Uint8ClampedArray(N >> 2);\n    let max = -Infinity;\n    let min = Infinity;\n    for (let i = 0, ii = out.length; i < ii; i++) {\n      const pix = (out[i] = buf[i << 2]);\n      max = Math.max(max, pix);\n      min = Math.min(min, pix);\n    }\n    const ratio = 255 / (max - min);\n    for (let i = 0, ii = out.length; i < ii; i++) {\n      out[i] = (out[i] - min) * ratio;\n    }\n\n    return out;\n  }\n\n  static #guessThreshold(histogram) {\n    // We want to find the threshold that will separate the background from the\n    // foreground.\n    // We could have used Otsu's method, but unfortunately it doesn't work well\n    // when the background has too much shade of greys.\n    // So the idea is to find a maximum in the black part of the histogram and\n    // figure out the value which will be the first one of the white part.\n\n    let i;\n    let M = -Infinity;\n    let L = -Infinity;\n    const min = histogram.findIndex(v => v !== 0);\n    let pos = min;\n    let spos = min;\n    for (i = min; i < 256; i++) {\n      const v = histogram[i];\n      if (v > M) {\n        if (i - pos > L) {\n          L = i - pos;\n          spos = i - 1;\n        }\n        M = v;\n        pos = i;\n      }\n    }\n    for (i = spos - 1; i >= 0; i--) {\n      if (histogram[i] > histogram[i + 1]) {\n        break;\n      }\n    }\n\n    return i;\n  }\n\n  static #getGrayPixels(bitmap) {\n    const originalBitmap = bitmap;\n    const { width, height } = bitmap;\n    const { maxDim } = this.#PARAMETERS;\n    let newWidth = width;\n    let newHeight = height;\n\n    if (width > maxDim || height > maxDim) {\n      let prevWidth = width;\n      let prevHeight = height;\n\n      let steps = Math.log2(Math.max(width, height) / maxDim);\n      const isteps = Math.floor(steps);\n      steps = steps === isteps ? isteps - 1 : isteps;\n      for (let i = 0; i < steps; i++) {\n        newWidth = Math.ceil(prevWidth / 2);\n        newHeight = Math.ceil(prevHeight / 2);\n\n        const offscreen = new OffscreenCanvas(newWidth, newHeight);\n        const ctx = offscreen.getContext(\"2d\");\n        ctx.drawImage(\n          bitmap,\n          0,\n          0,\n          prevWidth,\n          prevHeight,\n          0,\n          0,\n          newWidth,\n          newHeight\n        );\n        prevWidth = newWidth;\n        prevHeight = newHeight;\n\n        // Release the resources associated with the bitmap.\n        if (bitmap !== originalBitmap) {\n          bitmap.close();\n        }\n        bitmap = offscreen.transferToImageBitmap();\n      }\n\n      const ratio = Math.min(maxDim / newWidth, maxDim / newHeight);\n      newWidth = Math.round(newWidth * ratio);\n      newHeight = Math.round(newHeight * ratio);\n    }\n    const offscreen = new OffscreenCanvas(newWidth, newHeight);\n    const ctx = offscreen.getContext(\"2d\", { willReadFrequently: true });\n    ctx.fillStyle = \"white\";\n    ctx.fillRect(0, 0, newWidth, newHeight);\n    ctx.filter = \"grayscale(1)\";\n    ctx.drawImage(\n      bitmap,\n      0,\n      0,\n      bitmap.width,\n      bitmap.height,\n      0,\n      0,\n      newWidth,\n      newHeight\n    );\n    const grayImage = ctx.getImageData(0, 0, newWidth, newHeight).data;\n    const uint8Buf = this.#toUint8(grayImage);\n\n    return [uint8Buf, newWidth, newHeight];\n  }\n\n  static extractContoursFromText(\n    text,\n    { fontFamily, fontStyle, fontWeight },\n    pageWidth,\n    pageHeight,\n    rotation,\n    innerMargin\n  ) {\n    let canvas = new OffscreenCanvas(1, 1);\n    let ctx = canvas.getContext(\"2d\", { alpha: false });\n    const fontSize = 200;\n    const font =\n      (ctx.font = `${fontStyle} ${fontWeight} ${fontSize}px ${fontFamily}`);\n    const {\n      actualBoundingBoxLeft,\n      actualBoundingBoxRight,\n      actualBoundingBoxAscent,\n      actualBoundingBoxDescent,\n      fontBoundingBoxAscent,\n      fontBoundingBoxDescent,\n      width,\n    } = ctx.measureText(text);\n\n    // We rescale the canvas to make \"sure\" the text fits.\n    const SCALE = 1.5;\n    const canvasWidth = Math.ceil(\n      Math.max(\n        Math.abs(actualBoundingBoxLeft) + Math.abs(actualBoundingBoxRight) || 0,\n        width\n      ) * SCALE\n    );\n    const canvasHeight = Math.ceil(\n      Math.max(\n        Math.abs(actualBoundingBoxAscent) +\n          Math.abs(actualBoundingBoxDescent) || fontSize,\n        Math.abs(fontBoundingBoxAscent) + Math.abs(fontBoundingBoxDescent) ||\n          fontSize\n      ) * SCALE\n    );\n    canvas = new OffscreenCanvas(canvasWidth, canvasHeight);\n    ctx = canvas.getContext(\"2d\", { alpha: true, willReadFrequently: true });\n    ctx.font = font;\n    ctx.filter = \"grayscale(1)\";\n    ctx.fillStyle = \"white\";\n    ctx.fillRect(0, 0, canvasWidth, canvasHeight);\n    ctx.fillStyle = \"black\";\n    ctx.fillText(\n      text,\n      (canvasWidth * (SCALE - 1)) / 2,\n      (canvasHeight * (3 - SCALE)) / 2\n    );\n\n    const uint8Buf = this.#toUint8(\n      ctx.getImageData(0, 0, canvasWidth, canvasHeight).data\n    );\n    const histogram = this.#getHistogram(uint8Buf);\n    const threshold = this.#guessThreshold(histogram);\n\n    const contourList = this.#findContours(\n      uint8Buf,\n      canvasWidth,\n      canvasHeight,\n      threshold\n    );\n\n    return this.processDrawnLines({\n      lines: { curves: contourList, width: canvasWidth, height: canvasHeight },\n      pageWidth,\n      pageHeight,\n      rotation,\n      innerMargin,\n      mustSmooth: true,\n      areContours: true,\n    });\n  }\n\n  static process(bitmap, pageWidth, pageHeight, rotation, innerMargin) {\n    const [uint8Buf, width, height] = this.#getGrayPixels(bitmap);\n    const [buffer, histogram] = this.#bilateralFilter(\n      uint8Buf,\n      width,\n      height,\n      Math.hypot(width, height) * this.#PARAMETERS.sigmaSFactor,\n      this.#PARAMETERS.sigmaR,\n      this.#PARAMETERS.kernelSize\n    );\n\n    const threshold = this.#guessThreshold(histogram);\n    const contourList = this.#findContours(buffer, width, height, threshold);\n\n    return this.processDrawnLines({\n      lines: { curves: contourList, width, height },\n      pageWidth,\n      pageHeight,\n      rotation,\n      innerMargin,\n      mustSmooth: true,\n      areContours: true,\n    });\n  }\n\n  static processDrawnLines({\n    lines,\n    pageWidth,\n    pageHeight,\n    rotation,\n    innerMargin,\n    mustSmooth,\n    areContours,\n  }) {\n    if (rotation % 180 !== 0) {\n      [pageWidth, pageHeight] = [pageHeight, pageWidth];\n    }\n\n    const { curves, width, height } = lines;\n    const thickness = lines.thickness ?? 0;\n    const linesAndPoints = [];\n    const ratio = Math.min(pageWidth / width, pageHeight / height);\n    const xScale = ratio / pageWidth;\n    const yScale = ratio / pageHeight;\n    const newCurves = [];\n\n    for (const { points } of curves) {\n      const reducedPoints = mustSmooth ? this.#douglasPeucker(points) : points;\n      if (!reducedPoints) {\n        continue;\n      }\n      newCurves.push(reducedPoints);\n\n      const len = reducedPoints.length;\n      const newPoints = new Float32Array(len);\n      const line = new Float32Array(3 * (len === 2 ? 2 : len - 2));\n      linesAndPoints.push({ line, points: newPoints });\n\n      if (len === 2) {\n        newPoints[0] = reducedPoints[0] * xScale;\n        newPoints[1] = reducedPoints[1] * yScale;\n        line.set([NaN, NaN, NaN, NaN, newPoints[0], newPoints[1]], 0);\n        continue;\n      }\n\n      let [x1, y1, x2, y2] = reducedPoints;\n      x1 *= xScale;\n      y1 *= yScale;\n      x2 *= xScale;\n      y2 *= yScale;\n      newPoints.set([x1, y1, x2, y2], 0);\n\n      line.set([NaN, NaN, NaN, NaN, x1, y1], 0);\n      for (let i = 4; i < len; i += 2) {\n        const x = (newPoints[i] = reducedPoints[i] * xScale);\n        const y = (newPoints[i + 1] = reducedPoints[i + 1] * yScale);\n        line.set(Outline.createBezierPoints(x1, y1, x2, y2, x, y), (i - 2) * 3);\n        [x1, y1, x2, y2] = [x2, y2, x, y];\n      }\n    }\n\n    if (linesAndPoints.length === 0) {\n      return null;\n    }\n\n    const outline = areContours\n      ? new ContourDrawOutline()\n      : new InkDrawOutline();\n\n    outline.build(\n      linesAndPoints,\n      pageWidth,\n      pageHeight,\n      1,\n      rotation,\n      areContours ? 0 : thickness,\n      innerMargin\n    );\n\n    return { outline, newCurves, areContours, thickness, width, height };\n  }\n\n  static async compressSignature({\n    outlines,\n    areContours,\n    thickness,\n    width,\n    height,\n  }) {\n    // We create a single array containing all the outlines.\n    // The format is the following:\n    // - 4 bytes: data length.\n    // - 4 bytes: version.\n    // - 4 bytes: width.\n    // - 4 bytes: height.\n    // - 4 bytes: 0 if it's a contour, 1 if it's an ink.\n    // - 4 bytes: thickness.\n    // - 4 bytes: number of drawings.\n    // - 4 bytes: size of the buffer containing the diff of the coordinates.\n    // - 4 bytes: number of points in the first drawing.\n    // - 4 bytes: x coordinate of the first point.\n    // - 4 bytes: y coordinate of the first point.\n    // - 4 bytes: number of points in the second drawing.\n    // - 4 bytes: x coordinate of the first point.\n    // - 4 bytes: y coordinate of the first point.\n    // - ...\n    // - The buffer containing the diff of the coordinates.\n\n    // The coordinates are supposed to be positive integers.\n\n    // We also compute the min and max difference between two points.\n    // This will help us to determine the type of the buffer (Int8, Int16 or\n    // Int32) in order to minimize the amount of data we have.\n    let minDiff = Infinity;\n    let maxDiff = -Infinity;\n    let outlinesLength = 0;\n    for (const points of outlines) {\n      outlinesLength += points.length;\n      for (let i = 2, ii = points.length; i < ii; i++) {\n        const dx = points[i] - points[i - 2];\n        minDiff = Math.min(minDiff, dx);\n        maxDiff = Math.max(maxDiff, dx);\n      }\n    }\n\n    let bufferType;\n    if (minDiff >= -128 && maxDiff <= 127) {\n      bufferType = Int8Array;\n    } else if (minDiff >= -32768 && maxDiff <= 32767) {\n      bufferType = Int16Array;\n    } else {\n      bufferType = Int32Array;\n    }\n\n    const len = outlines.length;\n    const headerLength = BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * len;\n    const header = new Uint32Array(headerLength);\n\n    let offset = 0;\n    header[offset++] =\n      headerLength * Uint32Array.BYTES_PER_ELEMENT +\n      (outlinesLength - 2 * len) * bufferType.BYTES_PER_ELEMENT;\n    header[offset++] = 0; // Version.\n    header[offset++] = width;\n    header[offset++] = height;\n    header[offset++] = areContours ? 0 : 1;\n    header[offset++] = Math.max(0, Math.floor(thickness ?? 0));\n    header[offset++] = len;\n    header[offset++] = bufferType.BYTES_PER_ELEMENT;\n    for (const points of outlines) {\n      header[offset++] = points.length - 2;\n      header[offset++] = points[0];\n      header[offset++] = points[1];\n    }\n\n    const cs = new CompressionStream(\"deflate-raw\");\n    const writer = cs.writable.getWriter();\n    await writer.ready;\n\n    writer.write(header);\n    const BufferCtor = bufferType.prototype.constructor;\n    for (const points of outlines) {\n      const diffs = new BufferCtor(points.length - 2);\n      for (let i = 2, ii = points.length; i < ii; i++) {\n        diffs[i - 2] = points[i] - points[i - 2];\n      }\n      writer.write(diffs);\n    }\n\n    writer.close();\n\n    const buf = await new Response(cs.readable).arrayBuffer();\n    const bytes = new Uint8Array(buf);\n\n    return toBase64Util(bytes);\n  }\n\n  static async decompressSignature(signatureData) {\n    try {\n      const bytes = fromBase64Util(signatureData);\n      const { readable, writable } = new DecompressionStream(\"deflate-raw\");\n      const writer = writable.getWriter();\n      await writer.ready;\n\n      // We can't await writer.write() because it'll block until the reader\n      // starts which happens few lines below.\n      writer\n        .write(bytes)\n        .then(async () => {\n          await writer.ready;\n          await writer.close();\n        })\n        .catch(() => {});\n\n      let data = null;\n      let offset = 0;\n      for await (const chunk of readable) {\n        data ||= new Uint8Array(new Uint32Array(chunk.buffer, 0, 4)[0]);\n        data.set(chunk, offset);\n        offset += chunk.length;\n      }\n\n      // We take a bit too much data for the header but it's fine.\n      const header = new Uint32Array(data.buffer, 0, data.length >> 2);\n      const version = header[1];\n      if (version !== 0) {\n        throw new Error(`Invalid version: ${version}`);\n      }\n      const width = header[2];\n      const height = header[3];\n      const areContours = header[4] === 0;\n      const thickness = header[5];\n      const numberOfDrawings = header[6];\n      const bufferType = header[7];\n      const outlines = [];\n      const diffsOffset =\n        (BASE_HEADER_LENGTH + POINTS_PROPERTIES_NUMBER * numberOfDrawings) *\n        Uint32Array.BYTES_PER_ELEMENT;\n      let diffs;\n\n      switch (bufferType) {\n        case Int8Array.BYTES_PER_ELEMENT:\n          diffs = new Int8Array(data.buffer, diffsOffset);\n          break;\n        case Int16Array.BYTES_PER_ELEMENT:\n          diffs = new Int16Array(data.buffer, diffsOffset);\n          break;\n        case Int32Array.BYTES_PER_ELEMENT:\n          diffs = new Int32Array(data.buffer, diffsOffset);\n          break;\n      }\n\n      offset = 0;\n      for (let i = 0; i < numberOfDrawings; i++) {\n        const len = header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH];\n        const points = new Float32Array(len + 2);\n        outlines.push(points);\n\n        for (let j = 0; j < POINTS_PROPERTIES_NUMBER - 1; j++) {\n          points[j] =\n            header[POINTS_PROPERTIES_NUMBER * i + BASE_HEADER_LENGTH + j + 1];\n        }\n        for (let j = 0; j < len; j++) {\n          points[j + 2] = points[j] + diffs[offset++];\n        }\n      }\n\n      return {\n        areContours,\n        thickness,\n        outlines,\n        width,\n        height,\n      };\n    } catch (e) {\n      warn(`decompressSignature: ${e}`);\n      return null;\n    }\n  }\n}\n\nexport { SignatureExtractor };\n", "/* Copyright 2025 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AnnotationEditorType, shadow } from \"../../shared/util.js\";\nimport { DrawingEditor, DrawingOptions } from \"./draw.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { ContourDrawOutline } from \"./drawers/contour.js\";\nimport { InkDrawingOptions } from \"./ink.js\";\nimport { InkDrawOutline } from \"./drawers/inkdraw.js\";\nimport { SignatureExtractor } from \"./drawers/signaturedraw.js\";\n\nclass SignatureOptions extends DrawingOptions {\n  constructor() {\n    super();\n\n    super.updateProperties({\n      fill: AnnotationEditor._defaultLineColor,\n      \"stroke-width\": 0,\n    });\n  }\n\n  clone() {\n    const clone = new SignatureOptions();\n    clone.updateAll(this);\n    return clone;\n  }\n}\n\nclass DrawnSignatureOptions extends InkDrawingOptions {\n  constructor(viewerParameters) {\n    super(viewerParameters);\n\n    super.updateProperties({\n      stroke: AnnotationEditor._defaultLineColor,\n      \"stroke-width\": 1,\n    });\n  }\n\n  clone() {\n    const clone = new DrawnSignatureOptions(this._viewParameters);\n    clone.updateAll(this);\n    return clone;\n  }\n}\n\n/**\n * Basic editor in order to generate an Stamp annotation annotation containing\n * a signature drawing.\n */\nclass SignatureEditor extends DrawingEditor {\n  #isExtracted = false;\n\n  #description = null;\n\n  #signatureData = null;\n\n  #signatureUUID = null;\n\n  static _type = \"signature\";\n\n  static _editorType = AnnotationEditorType.SIGNATURE;\n\n  static _defaultDrawingOptions = null;\n\n  constructor(params) {\n    super({ ...params, mustBeCommitted: true, name: \"signatureEditor\" });\n    this._willKeepAspectRatio = true;\n    this.#signatureData = params.signatureData || null;\n    this.#description = null;\n    this.defaultL10nId = \"pdfjs-editor-signature-editor1\";\n  }\n\n  /** @inheritdoc */\n  static initialize(l10n, uiManager) {\n    AnnotationEditor.initialize(l10n, uiManager);\n\n    this._defaultDrawingOptions = new SignatureOptions();\n    this._defaultDrawnSignatureOptions = new DrawnSignatureOptions(\n      uiManager.viewParameters\n    );\n  }\n\n  /** @inheritdoc */\n  static getDefaultDrawingOptions(options) {\n    const clone = this._defaultDrawingOptions.clone();\n    clone.updateProperties(options);\n    return clone;\n  }\n\n  /** @inheritdoc */\n  static get supportMultipleDrawings() {\n    return false;\n  }\n\n  static get typesMap() {\n    return shadow(this, \"typesMap\", new Map());\n  }\n\n  static get isDrawer() {\n    return false;\n  }\n\n  /** @inheritdoc */\n  get telemetryFinalData() {\n    return {\n      type: \"signature\",\n      hasDescription: !!this.#description,\n    };\n  }\n\n  static computeTelemetryFinalData(data) {\n    const hasDescriptionStats = data.get(\"hasDescription\");\n    return {\n      hasAltText: hasDescriptionStats.get(true) ?? 0,\n      hasNoAltText: hasDescriptionStats.get(false) ?? 0,\n    };\n  }\n\n  /** @inheritdoc */\n  get isResizable() {\n    return true;\n  }\n\n  /** @inheritdoc */\n  onScaleChanging() {\n    if (this._drawId === null) {\n      return;\n    }\n    super.onScaleChanging();\n  }\n\n  /** @inheritdoc */\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n\n    let baseX, baseY;\n    const { _isCopy } = this;\n    if (_isCopy) {\n      // No need to adjust the position when rendering in DrawingEditor.\n      this._isCopy = false;\n      baseX = this.x;\n      baseY = this.y;\n    }\n\n    super.render();\n\n    if (this._drawId === null) {\n      if (this.#signatureData) {\n        const {\n          lines,\n          mustSmooth,\n          areContours,\n          description,\n          uuid,\n          heightInPage,\n        } = this.#signatureData;\n        const {\n          rawDims: { pageWidth, pageHeight },\n          rotation,\n        } = this.parent.viewport;\n        const outline = SignatureExtractor.processDrawnLines({\n          lines,\n          pageWidth,\n          pageHeight,\n          rotation,\n          innerMargin: SignatureEditor._INNER_MARGIN,\n          mustSmooth,\n          areContours,\n        });\n        this.addSignature(outline, heightInPage, description, uuid);\n      } else {\n        // Avoid Firefox crashing (with a local build) because the description\n        // parameter is missing.\n        this.div.setAttribute(\n          \"data-l10n-args\",\n          JSON.stringify({ description: \"\" })\n        );\n        this.div.hidden = true;\n        this._uiManager.getSignature(this);\n      }\n    } else {\n      this.div.setAttribute(\n        \"data-l10n-args\",\n        JSON.stringify({ description: this.#description || \"\" })\n      );\n    }\n\n    if (_isCopy) {\n      this._isCopy = true;\n      this._moveAfterPaste(baseX, baseY);\n    }\n\n    return this.div;\n  }\n\n  setUuid(uuid) {\n    this.#signatureUUID = uuid;\n    this.addEditToolbar();\n  }\n\n  getUuid() {\n    return this.#signatureUUID;\n  }\n\n  get description() {\n    return this.#description;\n  }\n\n  set description(description) {\n    this.#description = description;\n    if (!this.div) {\n      return;\n    }\n    this.div.setAttribute(\"data-l10n-args\", JSON.stringify({ description }));\n    super.addEditToolbar().then(toolbar => {\n      toolbar?.updateEditSignatureButton(description);\n    });\n  }\n\n  getSignaturePreview() {\n    const { newCurves, areContours, thickness, width, height } =\n      this.#signatureData;\n    const maxDim = Math.max(width, height);\n    const outlineData = SignatureExtractor.processDrawnLines({\n      lines: {\n        curves: newCurves.map(points => ({ points })),\n        thickness,\n        width,\n        height,\n      },\n      pageWidth: maxDim,\n      pageHeight: maxDim,\n      rotation: 0,\n      innerMargin: 0,\n      mustSmooth: false,\n      areContours,\n    });\n    return { areContours, outline: outlineData.outline };\n  }\n\n  /** @inheritdoc */\n  get toolbarButtons() {\n    if (this._uiManager.signatureManager) {\n      return [[\"editSignature\", this._uiManager.signatureManager]];\n    }\n    return super.toolbarButtons;\n  }\n\n  addSignature(data, heightInPage, description, uuid) {\n    const { x: savedX, y: savedY } = this;\n    const { outline } = (this.#signatureData = data);\n    this.#isExtracted = outline instanceof ContourDrawOutline;\n    this.description = description;\n    let drawingOptions;\n    if (this.#isExtracted) {\n      drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n    } else {\n      drawingOptions = SignatureEditor._defaultDrawnSignatureOptions.clone();\n      drawingOptions.updateProperties({ \"stroke-width\": outline.thickness });\n    }\n    this._addOutlines({\n      drawOutlines: outline,\n      drawingOptions,\n    });\n    const [, pageHeight] = this.pageDimensions;\n    let newHeight = heightInPage / pageHeight;\n    // Ensure the signature doesn't exceed the page height.\n    // If the signature is too big, we scale it down to 50% of the page height.\n    newHeight = newHeight >= 1 ? 0.5 : newHeight;\n\n    this.width *= newHeight / this.height;\n    if (this.width >= 1) {\n      newHeight *= 0.9 / this.width;\n      this.width = 0.9;\n    }\n\n    this.height = newHeight;\n    this.setDims();\n    this.x = savedX;\n    this.y = savedY;\n    this.center();\n\n    this._onResized();\n    this.onScaleChanging();\n    this.rotate();\n    this._uiManager.addToAnnotationStorage(this);\n    this.setUuid(uuid);\n\n    this._reportTelemetry({\n      action: \"pdfjs.signature.inserted\",\n      data: {\n        hasBeenSaved: !!uuid,\n        hasDescription: !!description,\n      },\n    });\n\n    this.div.hidden = false;\n  }\n\n  getFromImage(bitmap) {\n    const {\n      rawDims: { pageWidth, pageHeight },\n      rotation,\n    } = this.parent.viewport;\n    return SignatureExtractor.process(\n      bitmap,\n      pageWidth,\n      pageHeight,\n      rotation,\n      SignatureEditor._INNER_MARGIN\n    );\n  }\n\n  getFromText(text, fontInfo) {\n    const {\n      rawDims: { pageWidth, pageHeight },\n      rotation,\n    } = this.parent.viewport;\n    return SignatureExtractor.extractContoursFromText(\n      text,\n      fontInfo,\n      pageWidth,\n      pageHeight,\n      rotation,\n      SignatureEditor._INNER_MARGIN\n    );\n  }\n\n  getDrawnSignature(curves) {\n    const {\n      rawDims: { pageWidth, pageHeight },\n      rotation,\n    } = this.parent.viewport;\n    return SignatureExtractor.processDrawnLines({\n      lines: curves,\n      pageWidth,\n      pageHeight,\n      rotation,\n      innerMargin: SignatureEditor._INNER_MARGIN,\n      mustSmooth: false,\n      areContours: false,\n    });\n  }\n\n  /** @inheritdoc */\n  createDrawingOptions({ areContours, thickness }) {\n    if (areContours) {\n      this._drawingOptions = SignatureEditor.getDefaultDrawingOptions();\n    } else {\n      this._drawingOptions =\n        SignatureEditor._defaultDrawnSignatureOptions.clone();\n      this._drawingOptions.updateProperties({ \"stroke-width\": thickness });\n    }\n  }\n\n  /** @inheritdoc */\n  serialize(isForCopying = false) {\n    if (this.isEmpty()) {\n      return null;\n    }\n\n    const { lines, points } = this.serializeDraw(isForCopying);\n    const {\n      _drawingOptions: { \"stroke-width\": thickness },\n    } = this;\n    const serialized = Object.assign(super.serialize(isForCopying), {\n      isSignature: true,\n      areContours: this.#isExtracted,\n      color: [0, 0, 0],\n      thickness: this.#isExtracted ? 0 : thickness,\n    });\n    this.addComment(serialized);\n    if (isForCopying) {\n      serialized.paths = { lines, points };\n      serialized.uuid = this.#signatureUUID;\n      serialized.isCopy = true;\n    } else {\n      serialized.lines = lines;\n    }\n    if (this.#description) {\n      serialized.accessibilityData = { type: \"Figure\", alt: this.#description };\n    }\n    return serialized;\n  }\n\n  /** @inheritdoc */\n  static deserializeDraw(\n    pageX,\n    pageY,\n    pageWidth,\n    pageHeight,\n    innerMargin,\n    data\n  ) {\n    if (data.areContours) {\n      return ContourDrawOutline.deserialize(\n        pageX,\n        pageY,\n        pageWidth,\n        pageHeight,\n        innerMargin,\n        data\n      );\n    }\n\n    return InkDrawOutline.deserialize(\n      pageX,\n      pageY,\n      pageWidth,\n      pageHeight,\n      innerMargin,\n      data\n    );\n  }\n\n  /** @inheritdoc */\n  static async deserialize(data, parent, uiManager) {\n    const editor = await super.deserialize(data, parent, uiManager);\n    editor.#isExtracted = data.areContours;\n    editor.description = data.accessibilityData?.alt || \"\";\n    editor.#signatureUUID = data.uuid;\n    return editor;\n  }\n}\n\nexport { SignatureEditor };\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\nimport { AnnotationEditorType, AnnotationPrefix } from \"../../shared/util.js\";\nimport {\n  ColorScheme,\n  OutputScale,\n  PixelsPerInch,\n  SupportedImageMimeTypes,\n} from \"../display_utils.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { StampAnnotationElement } from \"../annotation_layer.js\";\n\n/**\n * Basic text editor in order to create a FreeTex annotation.\n */\nclass StampEditor extends AnnotationEditor {\n  #bitmap = null;\n\n  #bitmapId = null;\n\n  #bitmapPromise = null;\n\n  #bitmapUrl = null;\n\n  #bitmapFile = null;\n\n  #bitmapFileName = \"\";\n\n  #canvas = null;\n\n  #missingCanvas = false;\n\n  #resizeTimeoutId = null;\n\n  #isSvg = false;\n\n  #hasBeenAddedInUndoStack = false;\n\n  static _type = \"stamp\";\n\n  static _editorType = AnnotationEditorType.STAMP;\n\n  constructor(params) {\n    super({ ...params, name: \"stampEditor\" });\n    this.#bitmapUrl = params.bitmapUrl;\n    this.#bitmapFile = params.bitmapFile;\n    this.defaultL10nId = \"pdfjs-editor-stamp-editor\";\n  }\n\n  /** @inheritdoc */\n  static initialize(l10n, uiManager) {\n    AnnotationEditor.initialize(l10n, uiManager);\n  }\n\n  /** @inheritdoc */\n  static isHandlingMimeForPasting(mime) {\n    return SupportedImageMimeTypes.includes(mime);\n  }\n\n  /** @inheritdoc */\n  static paste(item, parent) {\n    parent.pasteEditor(\n      { mode: AnnotationEditorType.STAMP },\n      { bitmapFile: item.getAsFile() }\n    );\n  }\n\n  /** @inheritdoc */\n  altTextFinish() {\n    if (this._uiManager.useNewAltTextFlow) {\n      this.div.hidden = false;\n    }\n    super.altTextFinish();\n  }\n\n  /** @inheritdoc */\n  get telemetryFinalData() {\n    return {\n      type: \"stamp\",\n      hasAltText: !!this.altTextData?.altText,\n    };\n  }\n\n  static computeTelemetryFinalData(data) {\n    const hasAltTextStats = data.get(\"hasAltText\");\n    return {\n      hasAltText: hasAltTextStats.get(true) ?? 0,\n      hasNoAltText: hasAltTextStats.get(false) ?? 0,\n    };\n  }\n\n  #getBitmapFetched(data, fromId = false) {\n    if (!data) {\n      this.remove();\n      return;\n    }\n    this.#bitmap = data.bitmap;\n    if (!fromId) {\n      this.#bitmapId = data.id;\n      this.#isSvg = data.isSvg;\n    }\n    if (data.file) {\n      this.#bitmapFileName = data.file.name;\n    }\n    this.#createCanvas();\n  }\n\n  #getBitmapDone() {\n    this.#bitmapPromise = null;\n    this._uiManager.enableWaiting(false);\n    if (!this.#canvas) {\n      return;\n    }\n    if (\n      this._uiManager.useNewAltTextWhenAddingImage &&\n      this._uiManager.useNewAltTextFlow &&\n      this.#bitmap\n    ) {\n      this.addEditToolbar().then(() => {\n        this._editToolbar.hide();\n        this._uiManager.editAltText(this, /* firstTime = */ true);\n      });\n      return;\n    }\n\n    if (\n      !this._uiManager.useNewAltTextWhenAddingImage &&\n      this._uiManager.useNewAltTextFlow &&\n      this.#bitmap\n    ) {\n      this._reportTelemetry({\n        action: \"pdfjs.image.image_added\",\n        data: { alt_text_modal: false, alt_text_type: \"empty\" },\n      });\n      try {\n        // The alt-text dialog isn't opened but we still want to guess the alt\n        // text.\n        this.mlGuessAltText();\n      } catch {}\n    }\n\n    this.div.focus();\n  }\n\n  async mlGuessAltText(imageData = null, updateAltTextData = true) {\n    if (this.hasAltTextData()) {\n      return null;\n    }\n\n    const { mlManager } = this._uiManager;\n    if (!mlManager) {\n      throw new Error(\"No ML.\");\n    }\n    if (!(await mlManager.isEnabledFor(\"altText\"))) {\n      throw new Error(\"ML isn't enabled for alt text.\");\n    }\n    const { data, width, height } =\n      imageData ||\n      this.copyCanvas(null, null, /* createImageData = */ true).imageData;\n    const response = await mlManager.guess({\n      name: \"altText\",\n      request: {\n        data,\n        width,\n        height,\n        channels: data.length / (width * height),\n      },\n    });\n    if (!response) {\n      throw new Error(\"No response from the AI service.\");\n    }\n    if (response.error) {\n      throw new Error(\"Error from the AI service.\");\n    }\n    if (response.cancel) {\n      return null;\n    }\n    if (!response.output) {\n      throw new Error(\"No valid response from the AI service.\");\n    }\n    const altText = response.output;\n    await this.setGuessedAltText(altText);\n    if (updateAltTextData && !this.hasAltTextData()) {\n      this.altTextData = { alt: altText, decorative: false };\n    }\n    return altText;\n  }\n\n  #getBitmap() {\n    if (this.#bitmapId) {\n      this._uiManager.enableWaiting(true);\n      this._uiManager.imageManager\n        .getFromId(this.#bitmapId)\n        .then(data => this.#getBitmapFetched(data, /* fromId = */ true))\n        .finally(() => this.#getBitmapDone());\n      return;\n    }\n\n    if (this.#bitmapUrl) {\n      const url = this.#bitmapUrl;\n      this.#bitmapUrl = null;\n      this._uiManager.enableWaiting(true);\n      this.#bitmapPromise = this._uiManager.imageManager\n        .getFromUrl(url)\n        .then(data => this.#getBitmapFetched(data))\n        .finally(() => this.#getBitmapDone());\n      return;\n    }\n\n    if (this.#bitmapFile) {\n      const file = this.#bitmapFile;\n      this.#bitmapFile = null;\n      this._uiManager.enableWaiting(true);\n      this.#bitmapPromise = this._uiManager.imageManager\n        .getFromFile(file)\n        .then(data => this.#getBitmapFetched(data))\n        .finally(() => this.#getBitmapDone());\n      return;\n    }\n\n    const input = document.createElement(\"input\");\n    if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n      input.hidden = true;\n      input.id = \"stampEditorFileInput\";\n      document.body.append(input);\n    }\n    input.type = \"file\";\n    input.accept = SupportedImageMimeTypes.join(\",\");\n    const signal = this._uiManager._signal;\n    this.#bitmapPromise = new Promise(resolve => {\n      input.addEventListener(\n        \"change\",\n        async () => {\n          if (!input.files || input.files.length === 0) {\n            this.remove();\n          } else {\n            this._uiManager.enableWaiting(true);\n            const data = await this._uiManager.imageManager.getFromFile(\n              input.files[0]\n            );\n            this._reportTelemetry({\n              action: \"pdfjs.image.image_selected\",\n              data: { alt_text_modal: this._uiManager.useNewAltTextFlow },\n            });\n            this.#getBitmapFetched(data);\n          }\n          if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n            input.remove();\n          }\n          resolve();\n        },\n        { signal }\n      );\n      input.addEventListener(\n        \"cancel\",\n        () => {\n          this.remove();\n          resolve();\n        },\n        { signal }\n      );\n    }).finally(() => this.#getBitmapDone());\n    if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"TESTING\")) {\n      input.click();\n    }\n  }\n\n  /** @inheritdoc */\n  remove() {\n    if (this.#bitmapId) {\n      this.#bitmap = null;\n      this._uiManager.imageManager.deleteId(this.#bitmapId);\n      this.#canvas?.remove();\n      this.#canvas = null;\n      if (this.#resizeTimeoutId) {\n        clearTimeout(this.#resizeTimeoutId);\n        this.#resizeTimeoutId = null;\n      }\n    }\n    super.remove();\n  }\n\n  /** @inheritdoc */\n  rebuild() {\n    if (!this.parent) {\n      // It's possible to have to rebuild an editor which is not on a visible\n      // page.\n      if (this.#bitmapId) {\n        this.#getBitmap();\n      }\n      return;\n    }\n    super.rebuild();\n    if (this.div === null) {\n      return;\n    }\n\n    if (this.#bitmapId && this.#canvas === null) {\n      this.#getBitmap();\n    }\n\n    if (!this.isAttachedToDOM) {\n      // At some point this editor was removed and we're rebuilting it,\n      // hence we must add it to its parent.\n      this.parent.add(this);\n    }\n  }\n\n  /** @inheritdoc */\n  onceAdded(focus) {\n    this._isDraggable = true;\n    if (focus) {\n      this.div.focus();\n    }\n  }\n\n  /** @inheritdoc */\n  isEmpty() {\n    return !(\n      this.#bitmapPromise ||\n      this.#bitmap ||\n      this.#bitmapUrl ||\n      this.#bitmapFile ||\n      this.#bitmapId ||\n      this.#missingCanvas\n    );\n  }\n\n  /** @inheritdoc */\n  get toolbarButtons() {\n    return [[\"altText\", this.createAltText()]];\n  }\n\n  /** @inheritdoc */\n  get isResizable() {\n    return true;\n  }\n\n  /** @inheritdoc */\n  render() {\n    if (this.div) {\n      return this.div;\n    }\n\n    let baseX, baseY;\n    if (this._isCopy) {\n      baseX = this.x;\n      baseY = this.y;\n    }\n\n    super.render();\n    this.div.hidden = true;\n\n    this.createAltText();\n\n    if (!this.#missingCanvas) {\n      if (this.#bitmap) {\n        this.#createCanvas();\n      } else {\n        this.#getBitmap();\n      }\n    }\n\n    if (this._isCopy) {\n      this._moveAfterPaste(baseX, baseY);\n    }\n\n    this._uiManager.addShouldRescale(this);\n\n    return this.div;\n  }\n\n  setCanvas(annotationElementId, canvas) {\n    const { id: bitmapId, bitmap } = this._uiManager.imageManager.getFromCanvas(\n      annotationElementId,\n      canvas\n    );\n    canvas.remove();\n    if (bitmapId && this._uiManager.imageManager.isValidId(bitmapId)) {\n      this.#bitmapId = bitmapId;\n      if (bitmap) {\n        this.#bitmap = bitmap;\n      }\n      this.#missingCanvas = false;\n      this.#createCanvas();\n    }\n  }\n\n  /** @inheritdoc */\n  _onResized() {\n    // We used a CSS-zoom during the resizing, but now it's resized we can\n    // rescale correctly the bitmap to fit the new dimensions.\n    this.onScaleChanging();\n  }\n\n  onScaleChanging() {\n    if (!this.parent) {\n      return;\n    }\n    if (this.#resizeTimeoutId !== null) {\n      clearTimeout(this.#resizeTimeoutId);\n    }\n    // The user's zooming the page, there is no need to redraw the bitmap at\n    // each step, hence we wait a bit before redrawing it.\n    const TIME_TO_WAIT = 200;\n    this.#resizeTimeoutId = setTimeout(() => {\n      this.#resizeTimeoutId = null;\n      this.#drawBitmap();\n    }, TIME_TO_WAIT);\n  }\n\n  #createCanvas() {\n    const { div } = this;\n    let { width, height } = this.#bitmap;\n    const [pageWidth, pageHeight] = this.pageDimensions;\n    const MAX_RATIO = 0.75;\n    if (this.width) {\n      width = this.width * pageWidth;\n      height = this.height * pageHeight;\n    } else if (\n      width > MAX_RATIO * pageWidth ||\n      height > MAX_RATIO * pageHeight\n    ) {\n      // If the image is too big compared to the page dimensions\n      // (more than MAX_RATIO) then we scale it down.\n      const factor = Math.min(\n        (MAX_RATIO * pageWidth) / width,\n        (MAX_RATIO * pageHeight) / height\n      );\n      width *= factor;\n      height *= factor;\n    }\n\n    this._uiManager.enableWaiting(false);\n    const canvas = (this.#canvas = document.createElement(\"canvas\"));\n    canvas.setAttribute(\"role\", \"img\");\n    this.addContainer(canvas);\n\n    this.width = width / pageWidth;\n    this.height = height / pageHeight;\n    this.setDims();\n\n    if (this._initialOptions?.isCentered) {\n      this.center();\n    } else {\n      this.fixAndSetPosition();\n    }\n    this._initialOptions = null;\n\n    if (\n      !this._uiManager.useNewAltTextWhenAddingImage ||\n      !this._uiManager.useNewAltTextFlow ||\n      this.annotationElementId\n    ) {\n      div.hidden = false;\n    }\n    this.#drawBitmap();\n    if (!this.#hasBeenAddedInUndoStack) {\n      this.parent.addUndoableEditor(this);\n      this.#hasBeenAddedInUndoStack = true;\n    }\n\n    // There are multiple ways to add an image to the page, so here we just\n    // count the number of times an image is added to the page whatever the way\n    // is.\n    this._reportTelemetry({\n      action: \"inserted_image\",\n    });\n    if (this.#bitmapFileName) {\n      this.div.setAttribute(\"aria-description\", this.#bitmapFileName);\n    }\n    if (!this.annotationElementId) {\n      this._uiManager.a11yAlert(\"pdfjs-editor-stamp-added-alert\");\n    }\n  }\n\n  copyCanvas(maxDataDimension, maxPreviewDimension, createImageData = false) {\n    if (!maxDataDimension) {\n      // TODO: get this value from Firefox\n      //   (https://bugzilla.mozilla.org/show_bug.cgi?id=1908184)\n      // It's the maximum dimension that the AI can handle.\n      maxDataDimension = 224;\n    }\n\n    const { width: bitmapWidth, height: bitmapHeight } = this.#bitmap;\n    const outputScale = new OutputScale();\n\n    let bitmap = this.#bitmap;\n    let width = bitmapWidth,\n      height = bitmapHeight;\n    let canvas = null;\n\n    if (maxPreviewDimension) {\n      if (\n        bitmapWidth > maxPreviewDimension ||\n        bitmapHeight > maxPreviewDimension\n      ) {\n        const ratio = Math.min(\n          maxPreviewDimension / bitmapWidth,\n          maxPreviewDimension / bitmapHeight\n        );\n        width = Math.floor(bitmapWidth * ratio);\n        height = Math.floor(bitmapHeight * ratio);\n      }\n\n      canvas = document.createElement(\"canvas\");\n      const scaledWidth = (canvas.width = Math.ceil(width * outputScale.sx));\n      const scaledHeight = (canvas.height = Math.ceil(height * outputScale.sy));\n\n      if (!this.#isSvg) {\n        bitmap = this.#scaleBitmap(scaledWidth, scaledHeight);\n      }\n\n      const ctx = canvas.getContext(\"2d\");\n      ctx.filter = this._uiManager.hcmFilter;\n\n      // Add a checkerboard pattern as a background in case the image has some\n      // transparency.\n      let white = \"white\",\n        black = \"#cfcfd8\";\n      if (this._uiManager.hcmFilter !== \"none\") {\n        black = \"black\";\n      } else if (ColorScheme.isDarkMode) {\n        white = \"#8f8f9d\";\n        black = \"#42414d\";\n      }\n      const boxDim = 15;\n      const boxDimWidth = boxDim * outputScale.sx;\n      const boxDimHeight = boxDim * outputScale.sy;\n      const pattern = new OffscreenCanvas(boxDimWidth * 2, boxDimHeight * 2);\n      const patternCtx = pattern.getContext(\"2d\");\n      patternCtx.fillStyle = white;\n      patternCtx.fillRect(0, 0, boxDimWidth * 2, boxDimHeight * 2);\n      patternCtx.fillStyle = black;\n      patternCtx.fillRect(0, 0, boxDimWidth, boxDimHeight);\n      patternCtx.fillRect(boxDimWidth, boxDimHeight, boxDimWidth, boxDimHeight);\n      ctx.fillStyle = ctx.createPattern(pattern, \"repeat\");\n      ctx.fillRect(0, 0, scaledWidth, scaledHeight);\n      ctx.drawImage(\n        bitmap,\n        0,\n        0,\n        bitmap.width,\n        bitmap.height,\n        0,\n        0,\n        scaledWidth,\n        scaledHeight\n      );\n    }\n\n    let imageData = null;\n    if (createImageData) {\n      let dataWidth, dataHeight;\n      if (\n        outputScale.symmetric &&\n        bitmap.width < maxDataDimension &&\n        bitmap.height < maxDataDimension\n      ) {\n        dataWidth = bitmap.width;\n        dataHeight = bitmap.height;\n      } else {\n        bitmap = this.#bitmap;\n        if (bitmapWidth > maxDataDimension || bitmapHeight > maxDataDimension) {\n          const ratio = Math.min(\n            maxDataDimension / bitmapWidth,\n            maxDataDimension / bitmapHeight\n          );\n          dataWidth = Math.floor(bitmapWidth * ratio);\n          dataHeight = Math.floor(bitmapHeight * ratio);\n\n          if (!this.#isSvg) {\n            bitmap = this.#scaleBitmap(dataWidth, dataHeight);\n          }\n        }\n      }\n\n      const offscreen = new OffscreenCanvas(dataWidth, dataHeight);\n      const offscreenCtx = offscreen.getContext(\"2d\", {\n        willReadFrequently: true,\n      });\n      offscreenCtx.drawImage(\n        bitmap,\n        0,\n        0,\n        bitmap.width,\n        bitmap.height,\n        0,\n        0,\n        dataWidth,\n        dataHeight\n      );\n      imageData = {\n        width: dataWidth,\n        height: dataHeight,\n        data: offscreenCtx.getImageData(0, 0, dataWidth, dataHeight).data,\n      };\n    }\n\n    return { canvas, width, height, imageData };\n  }\n\n  #scaleBitmap(width, height) {\n    const { width: bitmapWidth, height: bitmapHeight } = this.#bitmap;\n\n    let newWidth = bitmapWidth;\n    let newHeight = bitmapHeight;\n    let bitmap = this.#bitmap;\n    while (newWidth > 2 * width || newHeight > 2 * height) {\n      const prevWidth = newWidth;\n      const prevHeight = newHeight;\n\n      if (newWidth > 2 * width) {\n        // See bug 1820511 (Windows specific bug).\n        // TODO: once the above bug is fixed we could revert to:\n        // newWidth = Math.ceil(newWidth / 2);\n        newWidth =\n          newWidth >= 16384\n            ? Math.floor(newWidth / 2) - 1\n            : Math.ceil(newWidth / 2);\n      }\n      if (newHeight > 2 * height) {\n        newHeight =\n          newHeight >= 16384\n            ? Math.floor(newHeight / 2) - 1\n            : Math.ceil(newHeight / 2);\n      }\n\n      const offscreen = new OffscreenCanvas(newWidth, newHeight);\n      const ctx = offscreen.getContext(\"2d\");\n      ctx.drawImage(\n        bitmap,\n        0,\n        0,\n        prevWidth,\n        prevHeight,\n        0,\n        0,\n        newWidth,\n        newHeight\n      );\n      bitmap = offscreen.transferToImageBitmap();\n    }\n\n    return bitmap;\n  }\n\n  #drawBitmap() {\n    const [parentWidth, parentHeight] = this.parentDimensions;\n    const { width, height } = this;\n    const outputScale = new OutputScale();\n    const scaledWidth = Math.ceil(width * parentWidth * outputScale.sx);\n    const scaledHeight = Math.ceil(height * parentHeight * outputScale.sy);\n    const canvas = this.#canvas;\n\n    if (\n      !canvas ||\n      (canvas.width === scaledWidth && canvas.height === scaledHeight)\n    ) {\n      return;\n    }\n\n    canvas.width = scaledWidth;\n    canvas.height = scaledHeight;\n\n    const bitmap = this.#isSvg\n      ? this.#bitmap\n      : this.#scaleBitmap(scaledWidth, scaledHeight);\n\n    const ctx = canvas.getContext(\"2d\");\n    ctx.filter = this._uiManager.hcmFilter;\n    ctx.drawImage(\n      bitmap,\n      0,\n      0,\n      bitmap.width,\n      bitmap.height,\n      0,\n      0,\n      scaledWidth,\n      scaledHeight\n    );\n  }\n\n  #serializeBitmap(toUrl) {\n    if (toUrl) {\n      if (this.#isSvg) {\n        const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId);\n        if (url) {\n          return url;\n        }\n      }\n      // We convert to a data url because it's sync and the url can live in the\n      // clipboard.\n      const canvas = document.createElement(\"canvas\");\n      ({ width: canvas.width, height: canvas.height } = this.#bitmap);\n      const ctx = canvas.getContext(\"2d\");\n      ctx.drawImage(this.#bitmap, 0, 0);\n\n      return canvas.toDataURL();\n    }\n\n    if (this.#isSvg) {\n      const [pageWidth, pageHeight] = this.pageDimensions;\n      // Multiply by PixelsPerInch.PDF_TO_CSS_UNITS in order to increase the\n      // image resolution when rasterizing it.\n      const width = Math.round(\n        this.width * pageWidth * PixelsPerInch.PDF_TO_CSS_UNITS\n      );\n      const height = Math.round(\n        this.height * pageHeight * PixelsPerInch.PDF_TO_CSS_UNITS\n      );\n      const offscreen = new OffscreenCanvas(width, height);\n      const ctx = offscreen.getContext(\"2d\");\n      ctx.drawImage(\n        this.#bitmap,\n        0,\n        0,\n        this.#bitmap.width,\n        this.#bitmap.height,\n        0,\n        0,\n        width,\n        height\n      );\n      return offscreen.transferToImageBitmap();\n    }\n\n    return structuredClone(this.#bitmap);\n  }\n\n  /** @inheritdoc */\n  static async deserialize(data, parent, uiManager) {\n    let initialData = null;\n    let missingCanvas = false;\n    if (data instanceof StampAnnotationElement) {\n      const {\n        data: {\n          rect,\n          rotation,\n          id,\n          structParent,\n          popupRef,\n          richText,\n          contentsObj,\n          creationDate,\n          modificationDate,\n        },\n        container,\n        parent: {\n          page: { pageNumber },\n        },\n        canvas,\n      } = data;\n      let bitmapId, bitmap;\n      if (canvas) {\n        delete data.canvas;\n        ({ id: bitmapId, bitmap } = uiManager.imageManager.getFromCanvas(\n          container.id,\n          canvas\n        ));\n        canvas.remove();\n      } else {\n        missingCanvas = true;\n        data._hasNoCanvas = true;\n      }\n\n      // When switching to edit mode, we wait for the structure tree to be\n      // ready (see pdf_viewer.js), so it's fine to use getAriaAttributesSync.\n      const altText =\n        (\n          await parent._structTree.getAriaAttributes(`${AnnotationPrefix}${id}`)\n        )?.get(\"aria-label\") || \"\";\n\n      initialData = data = {\n        annotationType: AnnotationEditorType.STAMP,\n        bitmapId,\n        bitmap,\n        pageIndex: pageNumber - 1,\n        rect: rect.slice(0),\n        rotation,\n        annotationElementId: id,\n        id,\n        deleted: false,\n        accessibilityData: {\n          decorative: false,\n          altText,\n        },\n        isSvg: false,\n        structParent,\n        popupRef,\n        richText,\n        comment: contentsObj?.str || null,\n        creationDate,\n        modificationDate,\n      };\n    }\n    const editor = await super.deserialize(data, parent, uiManager);\n    const { rect, bitmap, bitmapUrl, bitmapId, isSvg, accessibilityData } =\n      data;\n    if (missingCanvas) {\n      uiManager.addMissingCanvas(data.id, editor);\n      editor.#missingCanvas = true;\n    } else if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n      editor.#bitmapId = bitmapId;\n      if (bitmap) {\n        editor.#bitmap = bitmap;\n      }\n    } else {\n      editor.#bitmapUrl = bitmapUrl;\n    }\n    editor.#isSvg = isSvg;\n\n    const [parentWidth, parentHeight] = editor.pageDimensions;\n    editor.width = (rect[2] - rect[0]) / parentWidth;\n    editor.height = (rect[3] - rect[1]) / parentHeight;\n\n    if (accessibilityData) {\n      editor.altTextData = accessibilityData;\n    }\n    editor._initialData = initialData;\n    if (data.comment) {\n      editor.setCommentData(data);\n    }\n    // No need to be add in the undo stack if the editor is created from an\n    // existing one.\n    editor.#hasBeenAddedInUndoStack = !!initialData;\n\n    return editor;\n  }\n\n  /** @inheritdoc */\n  serialize(isForCopying = false, context = null) {\n    if (this.isEmpty()) {\n      return null;\n    }\n\n    if (this.deleted) {\n      return this.serializeDeleted();\n    }\n\n    const serialized = Object.assign(super.serialize(isForCopying), {\n      bitmapId: this.#bitmapId,\n      isSvg: this.#isSvg,\n    });\n    this.addComment(serialized);\n\n    if (isForCopying) {\n      // We don't know what's the final destination (this pdf or another one)\n      // of this annotation and the clipboard doesn't support ImageBitmaps,\n      // hence we serialize the bitmap to a data url.\n      serialized.bitmapUrl = this.#serializeBitmap(/* toUrl = */ true);\n      serialized.accessibilityData = this.serializeAltText(true);\n      serialized.isCopy = true;\n      return serialized;\n    }\n\n    const { decorative, altText } = this.serializeAltText(false);\n    if (!decorative && altText) {\n      serialized.accessibilityData = { type: \"Figure\", alt: altText };\n    }\n    if (this.annotationElementId) {\n      const changes = this.#hasElementChanged(serialized);\n      if (changes.isSame) {\n        // Nothing has been changed.\n        return null;\n      }\n      if (changes.isSameAltText) {\n        delete serialized.accessibilityData;\n      } else {\n        serialized.accessibilityData.structParent =\n          this._initialData.structParent ?? -1;\n      }\n      serialized.id = this.annotationElementId;\n      delete serialized.bitmapId;\n      return serialized;\n    }\n\n    if (context === null) {\n      return serialized;\n    }\n\n    context.stamps ||= new Map();\n    const area = this.#isSvg\n      ? (serialized.rect[2] - serialized.rect[0]) *\n        (serialized.rect[3] - serialized.rect[1])\n      : null;\n    if (!context.stamps.has(this.#bitmapId)) {\n      // We don't want to have multiple copies of the same bitmap in the\n      // annotationMap, hence we only add the bitmap the first time we meet it.\n      context.stamps.set(this.#bitmapId, { area, serialized });\n      serialized.bitmap = this.#serializeBitmap(/* toUrl = */ false);\n    } else if (this.#isSvg) {\n      // If we have multiple copies of the same svg but with different sizes,\n      // then we want to keep the biggest one.\n      const prevData = context.stamps.get(this.#bitmapId);\n      if (area > prevData.area) {\n        prevData.area = area;\n        prevData.serialized.bitmap.close();\n        prevData.serialized.bitmap = this.#serializeBitmap(/* toUrl = */ false);\n      }\n    }\n    return serialized;\n  }\n\n  #hasElementChanged(serialized) {\n    const {\n      pageIndex,\n      accessibilityData: { altText },\n    } = this._initialData;\n\n    const isSamePageIndex = serialized.pageIndex === pageIndex;\n    const isSameAltText = (serialized.accessibilityData?.alt || \"\") === altText;\n\n    return {\n      isSame:\n        !this.hasEditedComment &&\n        !this._hasBeenMoved &&\n        !this._hasBeenResized &&\n        isSamePageIndex &&\n        isSameAltText,\n      isSameAltText,\n    };\n  }\n\n  /** @inheritdoc */\n  renderAnnotationElement(annotation) {\n    if (this.deleted) {\n      annotation.hide();\n      return null;\n    }\n    annotation.updateEdited({\n      rect: this.getPDFRect(),\n      popup: this.comment,\n    });\n\n    return null;\n  }\n}\n\nexport { StampEditor };\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\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./tools.js\").AnnotationEditorUIManager} AnnotationEditorUIManager */\n/** @typedef {import(\"../display_utils.js\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../../web/text_accessibility.js\").TextAccessibilityManager} TextAccessibilityManager */\n/** @typedef {import(\"../../../web/interfaces\").IL10n} IL10n */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../annotation_layer.js\").AnnotationLayer} AnnotationLayer */\n/** @typedef {import(\"../draw_layer.js\").DrawLayer} DrawLayer */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../src/display/struct_tree_layer_builder.js\").StructTreeLayerBuilder} StructTreeLayerBuilder */\n\nimport {\n  AnnotationEditorPrefix,\n  AnnotationEditorType,\n  FeatureTest,\n} from \"../../shared/util.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { FreeTextEditor } from \"./freetext.js\";\nimport { HighlightEditor } from \"./highlight.js\";\nimport { InkEditor } from \"./ink.js\";\nimport { setLayerDimensions } from \"../display_utils.js\";\nimport { SignatureEditor } from \"./signature.js\";\nimport { StampEditor } from \"./stamp.js\";\n\n/**\n * @typedef {Object} AnnotationEditorLayerOptions\n * @property {Object} mode\n * @property {HTMLDivElement} div\n * @property {StructTreeLayerBuilder} structTreeLayer\n * @property {AnnotationEditorUIManager} uiManager\n * @property {boolean} enabled\n * @property {TextAccessibilityManager} [accessibilityManager]\n * @property {number} pageIndex\n * @property {IL10n} l10n\n * @property {AnnotationLayer} [annotationLayer]\n * @property {HTMLDivElement} [textLayer]\n * @property {DrawLayer} drawLayer\n * @property {PageViewport} viewport\n */\n\n/**\n * @typedef {Object} RenderEditorLayerOptions\n * @property {PageViewport} viewport\n */\n\n/**\n * Manage all the different editors on a page.\n */\nclass AnnotationEditorLayer {\n  #accessibilityManager;\n\n  #allowClick = false;\n\n  #annotationLayer = null;\n\n  #clickAC = null;\n\n  #editorFocusTimeoutId = null;\n\n  #editors = new Map();\n\n  #hadPointerDown = false;\n\n  #isDisabling = false;\n\n  #isEnabling = false;\n\n  #drawingAC = null;\n\n  #focusedElement = null;\n\n  #textLayer = null;\n\n  #textSelectionAC = null;\n\n  #textLayerDblClickAC = null;\n\n  #lastPointerDownTimestamp = -1;\n\n  #uiManager;\n\n  static _initialized = false;\n\n  static #editorTypes = new Map(\n    [\n      FreeTextEditor,\n      InkEditor,\n      StampEditor,\n      HighlightEditor,\n      SignatureEditor,\n    ].map(type => [type._editorType, type])\n  );\n\n  /**\n   * @param {AnnotationEditorLayerOptions} options\n   */\n  constructor({\n    uiManager,\n    pageIndex,\n    div,\n    structTreeLayer,\n    accessibilityManager,\n    annotationLayer,\n    drawLayer,\n    textLayer,\n    viewport,\n    l10n,\n  }) {\n    const editorTypes = [...AnnotationEditorLayer.#editorTypes.values()];\n    if (!AnnotationEditorLayer._initialized) {\n      AnnotationEditorLayer._initialized = true;\n      for (const editorType of editorTypes) {\n        editorType.initialize(l10n, uiManager);\n      }\n    }\n    uiManager.registerEditorTypes(editorTypes);\n\n    this.#uiManager = uiManager;\n    this.pageIndex = pageIndex;\n    this.div = div;\n    this.#accessibilityManager = accessibilityManager;\n    this.#annotationLayer = annotationLayer;\n    this.viewport = viewport;\n    this.#textLayer = textLayer;\n    this.drawLayer = drawLayer;\n    this._structTree = structTreeLayer;\n\n    this.#uiManager.addLayer(this);\n  }\n\n  get isEmpty() {\n    return this.#editors.size === 0;\n  }\n\n  get isInvisible() {\n    return (\n      this.isEmpty && this.#uiManager.getMode() === AnnotationEditorType.NONE\n    );\n  }\n\n  /**\n   * Update the toolbar if it's required to reflect the tool currently used.\n   * @param {Object} options\n   */\n  updateToolbar(options) {\n    this.#uiManager.updateToolbar(options);\n  }\n\n  /**\n   * The mode has changed: it must be updated.\n   * @param {number} mode\n   */\n  updateMode(mode = this.#uiManager.getMode()) {\n    this.#cleanup();\n    switch (mode) {\n      case AnnotationEditorType.NONE:\n        this.div.classList.toggle(\"nonEditing\", true);\n        this.disableTextSelection();\n        this.togglePointerEvents(false);\n        this.toggleAnnotationLayerPointerEvents(true);\n        this.disableClick();\n        return;\n      case AnnotationEditorType.INK:\n        this.disableTextSelection();\n        this.togglePointerEvents(true);\n        this.enableClick();\n        break;\n      case AnnotationEditorType.HIGHLIGHT:\n        this.enableTextSelection();\n        this.togglePointerEvents(false);\n        this.disableClick();\n        break;\n      default:\n        this.disableTextSelection();\n        this.togglePointerEvents(true);\n        this.enableClick();\n    }\n\n    this.toggleAnnotationLayerPointerEvents(false);\n    const { classList } = this.div;\n    classList.toggle(\"nonEditing\", false);\n    if (mode === AnnotationEditorType.POPUP) {\n      classList.toggle(\"commentEditing\", true);\n    } else {\n      classList.toggle(\"commentEditing\", false);\n      for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n        classList.toggle(\n          `${editorType._type}Editing`,\n          mode === editorType._editorType\n        );\n      }\n    }\n    this.div.hidden = false;\n  }\n\n  hasTextLayer(textLayer) {\n    return textLayer === this.#textLayer?.div;\n  }\n\n  /**\n   * Set the editing state.\n   * @param {boolean} isEditing\n   */\n  setEditingState(isEditing) {\n    this.#uiManager.setEditingState(isEditing);\n  }\n\n  /**\n   * Add some commands into the CommandManager (undo/redo stuff).\n   * @param {Object} params\n   */\n  addCommands(params) {\n    this.#uiManager.addCommands(params);\n  }\n\n  cleanUndoStack(type) {\n    this.#uiManager.cleanUndoStack(type);\n  }\n\n  toggleDrawing(enabled = false) {\n    this.div.classList.toggle(\"drawing\", !enabled);\n  }\n\n  togglePointerEvents(enabled = false) {\n    this.div.classList.toggle(\"disabled\", !enabled);\n  }\n\n  toggleAnnotationLayerPointerEvents(enabled = false) {\n    this.#annotationLayer?.div.classList.toggle(\"disabled\", !enabled);\n  }\n\n  get #allEditorsIterator() {\n    return this.#editors.size !== 0\n      ? this.#editors.values()\n      : this.#uiManager.getEditors(this.pageIndex);\n  }\n\n  /**\n   * Enable pointer events on the main div in order to enable\n   * editor creation.\n   */\n  async enable() {\n    this.#isEnabling = true;\n    this.div.tabIndex = 0;\n    this.togglePointerEvents(true);\n    this.div.classList.toggle(\"nonEditing\", false);\n    this.#textLayerDblClickAC?.abort();\n    this.#textLayerDblClickAC = null;\n    const annotationElementIds = new Set();\n    for (const editor of this.#allEditorsIterator) {\n      editor.enableEditing();\n      editor.show(true);\n      if (editor.annotationElementId) {\n        this.#uiManager.removeChangedExistingAnnotation(editor);\n        annotationElementIds.add(editor.annotationElementId);\n      }\n    }\n\n    const annotationLayer = this.#annotationLayer;\n    if (annotationLayer) {\n      for (const editable of annotationLayer.getEditableAnnotations()) {\n        // The element must be hidden whatever its state is.\n        editable.hide();\n        if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) {\n          continue;\n        }\n        if (annotationElementIds.has(editable.data.id)) {\n          continue;\n        }\n        const editor = await this.deserialize(editable);\n        if (!editor) {\n          continue;\n        }\n        this.addOrRebuild(editor);\n        editor.enableEditing();\n      }\n    }\n    this.#isEnabling = false;\n    this.#uiManager._eventBus.dispatch(\"editorsrendered\", {\n      source: this,\n      pageNumber: this.pageIndex + 1,\n    });\n  }\n\n  /**\n   * Disable editor creation.\n   */\n  disable() {\n    this.#isDisabling = true;\n    this.div.tabIndex = -1;\n    this.togglePointerEvents(false);\n    this.div.classList.toggle(\"nonEditing\", true);\n    if (this.#textLayer && !this.#textLayerDblClickAC) {\n      this.#textLayerDblClickAC = new AbortController();\n      const signal = this.#uiManager.combinedSignal(this.#textLayerDblClickAC);\n      this.#textLayer.div.addEventListener(\n        \"pointerdown\",\n        e => {\n          // It's the default value in Fenix:\n          // https://searchfox.org/mozilla-central/rev/beba5cde846f944c4d709e75cbe499d17af880a4/modules/libpref/init/StaticPrefList.yaml#19064\n          // and in Chrome and Windows:\n          // https://source.chromium.org/chromium/chromium/src/+/main:ui/events/event_constants.h;drc=f0f5f3ceebb00da9363ccc7a1e2c0f17b6b383ba;l=115\n          const DBL_CLICK_THRESHOLD = 500;\n          const { clientX, clientY, timeStamp } = e;\n          const lastPointerDownTimestamp = this.#lastPointerDownTimestamp;\n          if (timeStamp - lastPointerDownTimestamp > DBL_CLICK_THRESHOLD) {\n            this.#lastPointerDownTimestamp = timeStamp;\n            return;\n          }\n          this.#lastPointerDownTimestamp = -1;\n          const { classList } = this.div;\n          classList.toggle(\"getElements\", true);\n          const elements = document.elementsFromPoint(clientX, clientY);\n          classList.toggle(\"getElements\", false);\n          if (!this.div.contains(elements[0])) {\n            return;\n          }\n          let id;\n          const regex = new RegExp(`^${AnnotationEditorPrefix}[0-9]+$`);\n          for (const element of elements) {\n            if (regex.test(element.id)) {\n              id = element.id;\n              break;\n            }\n          }\n          if (!id) {\n            return;\n          }\n          const editor = this.#editors.get(id);\n          if (editor?.annotationElementId === null) {\n            e.stopPropagation();\n            e.preventDefault();\n            editor.dblclick(e);\n          }\n        },\n        { signal, capture: true }\n      );\n    }\n\n    const annotationLayer = this.#annotationLayer;\n    if (annotationLayer) {\n      const changedAnnotations = new Map();\n      const resetAnnotations = new Map();\n      for (const editor of this.#allEditorsIterator) {\n        editor.disableEditing();\n        if (!editor.annotationElementId) {\n          editor.updateFakeAnnotationElement(annotationLayer);\n          continue;\n        }\n        if (editor.serialize() !== null) {\n          changedAnnotations.set(editor.annotationElementId, editor);\n          continue;\n        } else {\n          resetAnnotations.set(editor.annotationElementId, editor);\n        }\n        this.getEditableAnnotation(editor.annotationElementId)?.show();\n        editor.remove();\n      }\n\n      // Show the annotations that were hidden in enable().\n      const editables = annotationLayer.getEditableAnnotations();\n      for (const editable of editables) {\n        const { id } = editable.data;\n        if (this.#uiManager.isDeletedAnnotationElement(id)) {\n          editable.updateEdited({ deleted: true });\n          continue;\n        }\n        let editor = resetAnnotations.get(id);\n        if (editor) {\n          editor.resetAnnotationElement(editable);\n          editor.show(false);\n          editable.show();\n          continue;\n        }\n\n        editor = changedAnnotations.get(id);\n        if (editor) {\n          this.#uiManager.addChangedExistingAnnotation(editor);\n          if (editor.renderAnnotationElement(editable)) {\n            // Content has changed, so we need to hide the editor.\n            editor.show(false);\n          }\n        }\n        editable.show();\n      }\n    }\n\n    this.#cleanup();\n    if (this.isEmpty) {\n      this.div.hidden = true;\n    }\n    const { classList } = this.div;\n    for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n      classList.remove(`${editorType._type}Editing`);\n    }\n    this.disableTextSelection();\n    this.toggleAnnotationLayerPointerEvents(true);\n\n    this.#isDisabling = false;\n  }\n\n  getEditableAnnotation(id) {\n    return this.#annotationLayer?.getEditableAnnotation(id) || null;\n  }\n\n  /**\n   * Set the current editor.\n   * @param {AnnotationEditor} editor\n   */\n  setActiveEditor(editor) {\n    const currentActive = this.#uiManager.getActive();\n    if (currentActive === editor) {\n      return;\n    }\n\n    this.#uiManager.setActiveEditor(editor);\n  }\n\n  enableTextSelection() {\n    this.div.tabIndex = -1;\n    if (this.#textLayer?.div && !this.#textSelectionAC) {\n      this.#textSelectionAC = new AbortController();\n      const signal = this.#uiManager.combinedSignal(this.#textSelectionAC);\n\n      this.#textLayer.div.addEventListener(\n        \"pointerdown\",\n        this.#textLayerPointerDown.bind(this),\n        { signal }\n      );\n      this.#textLayer.div.classList.add(\"highlighting\");\n    }\n  }\n\n  disableTextSelection() {\n    this.div.tabIndex = 0;\n    if (this.#textLayer?.div && this.#textSelectionAC) {\n      this.#textSelectionAC.abort();\n      this.#textSelectionAC = null;\n\n      this.#textLayer.div.classList.remove(\"highlighting\");\n    }\n  }\n\n  #textLayerPointerDown(event) {\n    // Unselect all the editors in order to let the user select some text\n    // without being annoyed by an editor toolbar.\n    this.#uiManager.unselectAll();\n    const { target } = event;\n    if (\n      target === this.#textLayer.div ||\n      ((target.getAttribute(\"role\") === \"img\" ||\n        target.classList.contains(\"endOfContent\")) &&\n        this.#textLayer.div.contains(target))\n    ) {\n      const { isMac } = FeatureTest.platform;\n      if (event.button !== 0 || (event.ctrlKey && isMac)) {\n        // Do nothing on right click.\n        return;\n      }\n      this.#uiManager.showAllEditors(\n        \"highlight\",\n        true,\n        /* updateButton = */ true\n      );\n      this.#textLayer.div.classList.add(\"free\");\n      this.toggleDrawing();\n      HighlightEditor.startHighlighting(\n        this,\n        this.#uiManager.direction === \"ltr\",\n        { target: this.#textLayer.div, x: event.x, y: event.y }\n      );\n      this.#textLayer.div.addEventListener(\n        \"pointerup\",\n        () => {\n          this.#textLayer.div.classList.remove(\"free\");\n          this.toggleDrawing(true);\n        },\n        { once: true, signal: this.#uiManager._signal }\n      );\n      event.preventDefault();\n    }\n  }\n\n  enableClick() {\n    if (this.#clickAC) {\n      return;\n    }\n    this.#clickAC = new AbortController();\n    const signal = this.#uiManager.combinedSignal(this.#clickAC);\n\n    this.div.addEventListener(\"pointerdown\", this.pointerdown.bind(this), {\n      signal,\n    });\n    const pointerup = this.pointerup.bind(this);\n    this.div.addEventListener(\"pointerup\", pointerup, { signal });\n    this.div.addEventListener(\"pointercancel\", pointerup, { signal });\n  }\n\n  disableClick() {\n    this.#clickAC?.abort();\n    this.#clickAC = null;\n  }\n\n  attach(editor) {\n    this.#editors.set(editor.id, editor);\n    const { annotationElementId } = editor;\n    if (\n      annotationElementId &&\n      this.#uiManager.isDeletedAnnotationElement(annotationElementId)\n    ) {\n      this.#uiManager.removeDeletedAnnotationElement(editor);\n    }\n  }\n\n  detach(editor) {\n    this.#editors.delete(editor.id);\n    this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n\n    if (!this.#isDisabling && editor.annotationElementId) {\n      this.#uiManager.addDeletedAnnotationElement(editor);\n    }\n  }\n\n  /**\n   * Remove an editor.\n   * @param {AnnotationEditor} editor\n   */\n  remove(editor) {\n    this.detach(editor);\n    this.#uiManager.removeEditor(editor);\n    editor.div.remove();\n    editor.isAttachedToDOM = false;\n  }\n\n  /**\n   * An editor can have a different parent, for example after having\n   * being dragged and dropped from a page to another.\n   * @param {AnnotationEditor} editor\n   */\n  changeParent(editor) {\n    if (editor.parent === this) {\n      return;\n    }\n\n    if (editor.parent && editor.annotationElementId) {\n      this.#uiManager.addDeletedAnnotationElement(editor.annotationElementId);\n      AnnotationEditor.deleteAnnotationElement(editor);\n      editor.annotationElementId = null;\n    }\n\n    this.attach(editor);\n    editor.parent?.detach(editor);\n    editor.setParent(this);\n    if (editor.div && editor.isAttachedToDOM) {\n      editor.div.remove();\n      this.div.append(editor.div);\n    }\n  }\n\n  /**\n   * Add a new editor in the current view.\n   * @param {AnnotationEditor} editor\n   */\n  add(editor) {\n    if (editor.parent === this && editor.isAttachedToDOM) {\n      return;\n    }\n    this.changeParent(editor);\n    this.#uiManager.addEditor(editor);\n    this.attach(editor);\n\n    if (!editor.isAttachedToDOM) {\n      const div = editor.render();\n      this.div.append(div);\n      editor.isAttachedToDOM = true;\n    }\n\n    // The editor will be correctly moved into the DOM (see fixAndSetPosition).\n    editor.fixAndSetPosition();\n    editor.onceAdded(/* focus = */ !this.#isEnabling);\n    this.#uiManager.addToAnnotationStorage(editor);\n    editor._reportTelemetry(editor.telemetryInitialData);\n  }\n\n  moveEditorInDOM(editor) {\n    if (!editor.isAttachedToDOM) {\n      return;\n    }\n\n    const { activeElement } = document;\n    if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {\n      // When the div is moved in the DOM the focus can move somewhere else,\n      // so we want to be sure that the focus will stay on the editor but we\n      // don't want to call any focus callbacks, hence we disable them and only\n      // re-enable them when the editor has the focus.\n      editor._focusEventsAllowed = false;\n      this.#editorFocusTimeoutId = setTimeout(() => {\n        this.#editorFocusTimeoutId = null;\n        if (!editor.div.contains(document.activeElement)) {\n          editor.div.addEventListener(\n            \"focusin\",\n            () => {\n              editor._focusEventsAllowed = true;\n            },\n            { once: true, signal: this.#uiManager._signal }\n          );\n          activeElement.focus();\n        } else {\n          editor._focusEventsAllowed = true;\n        }\n      }, 0);\n    }\n\n    editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(\n      this.div,\n      editor.div,\n      editor.contentDiv,\n      /* isRemovable = */ true\n    );\n  }\n\n  /**\n   * Add or rebuild depending if it has been removed or not.\n   * @param {AnnotationEditor} editor\n   */\n  addOrRebuild(editor) {\n    if (editor.needsToBeRebuilt()) {\n      editor.parent ||= this;\n      editor.rebuild();\n      editor.show();\n    } else {\n      this.add(editor);\n    }\n  }\n\n  /**\n   * Add a new editor and make this addition undoable.\n   * @param {AnnotationEditor} editor\n   */\n  addUndoableEditor(editor) {\n    const cmd = () => editor._uiManager.rebuild(editor);\n    const undo = () => {\n      editor.remove();\n    };\n\n    this.addCommands({ cmd, undo, mustExec: false });\n  }\n\n  getEditorByUID(uid) {\n    for (const editor of this.#editors.values()) {\n      if (editor.uid === uid) {\n        return editor;\n      }\n    }\n    return null;\n  }\n\n  /**\n   * Get an id for an editor.\n   * @returns {string}\n   */\n  getNextId() {\n    return this.#uiManager.getId();\n  }\n\n  get #currentEditorType() {\n    return AnnotationEditorLayer.#editorTypes.get(this.#uiManager.getMode());\n  }\n\n  combinedSignal(ac) {\n    return this.#uiManager.combinedSignal(ac);\n  }\n\n  /**\n   * Create a new editor\n   * @param {Object} params\n   * @returns {AnnotationEditor}\n   */\n  #createNewEditor(params) {\n    const editorType = this.#currentEditorType;\n    return editorType ? new editorType.prototype.constructor(params) : null;\n  }\n\n  canCreateNewEmptyEditor() {\n    return this.#currentEditorType?.canCreateNewEmptyEditor();\n  }\n\n  /**\n   * Paste some content into a new editor.\n   * @param {Object} options\n   * @param {Object} params\n   */\n  async pasteEditor(options, params) {\n    this.updateToolbar(options);\n    await this.#uiManager.updateMode(options.mode);\n\n    const { offsetX, offsetY } = this.#getCenterPoint();\n    const id = this.getNextId();\n    const editor = this.#createNewEditor({\n      parent: this,\n      id,\n      x: offsetX,\n      y: offsetY,\n      uiManager: this.#uiManager,\n      isCentered: true,\n      ...params,\n    });\n    if (editor) {\n      this.add(editor);\n    }\n  }\n\n  /**\n   * Create a new editor\n   * @param {Object} data\n   * @returns {Promise<AnnotationEditor | null>}\n   */\n  async deserialize(data) {\n    return (\n      (await AnnotationEditorLayer.#editorTypes\n        .get(data.annotationType ?? data.annotationEditorType)\n        ?.deserialize(data, this, this.#uiManager)) || null\n    );\n  }\n\n  /**\n   * Create and add a new editor.\n   * @param {PointerEvent} event\n   * @param {boolean} isCentered\n   * @param [Object] data\n   * @returns {AnnotationEditor}\n   */\n  createAndAddNewEditor(event, isCentered, data = {}) {\n    const id = this.getNextId();\n    const editor = this.#createNewEditor({\n      parent: this,\n      id,\n      x: event.offsetX,\n      y: event.offsetY,\n      uiManager: this.#uiManager,\n      isCentered,\n      ...data,\n    });\n    if (editor) {\n      this.add(editor);\n    }\n\n    return editor;\n  }\n\n  get boundingClientRect() {\n    return this.div.getBoundingClientRect();\n  }\n\n  #getCenterPoint() {\n    const { x, y, width, height } = this.boundingClientRect;\n    const tlX = Math.max(0, x);\n    const tlY = Math.max(0, y);\n    const brX = Math.min(window.innerWidth, x + width);\n    const brY = Math.min(window.innerHeight, y + height);\n    const centerX = (tlX + brX) / 2 - x;\n    const centerY = (tlY + brY) / 2 - y;\n    const [offsetX, offsetY] =\n      this.viewport.rotation % 180 === 0\n        ? [centerX, centerY]\n        : [centerY, centerX];\n\n    return { offsetX, offsetY };\n  }\n\n  /**\n   * Create and add a new editor.\n   */\n  addNewEditor(data = {}) {\n    this.createAndAddNewEditor(\n      this.#getCenterPoint(),\n      /* isCentered = */ true,\n      data\n    );\n  }\n\n  /**\n   * Set the last selected editor.\n   * @param {AnnotationEditor} editor\n   */\n  setSelected(editor) {\n    this.#uiManager.setSelected(editor);\n  }\n\n  /**\n   * Add or remove an editor the current selection.\n   * @param {AnnotationEditor} editor\n   */\n  toggleSelected(editor) {\n    this.#uiManager.toggleSelected(editor);\n  }\n\n  /**\n   * Unselect an editor.\n   * @param {AnnotationEditor} editor\n   */\n  unselect(editor) {\n    this.#uiManager.unselect(editor);\n  }\n\n  /**\n   * Pointerup callback.\n   * @param {PointerEvent} event\n   */\n  pointerup(event) {\n    const { isMac } = FeatureTest.platform;\n    if (event.button !== 0 || (event.ctrlKey && isMac)) {\n      // Don't create an editor on right click.\n      return;\n    }\n\n    if (event.target !== this.div) {\n      return;\n    }\n\n    if (!this.#hadPointerDown) {\n      // It can happen when the user starts a drag inside a text editor\n      // and then releases the mouse button outside of it. In such a case\n      // we don't want to create a new editor, hence we check that a pointerdown\n      // occurred on this div previously.\n      return;\n    }\n    this.#hadPointerDown = false;\n\n    if (\n      this.#currentEditorType?.isDrawer &&\n      this.#currentEditorType.supportMultipleDrawings\n    ) {\n      return;\n    }\n\n    if (!this.#allowClick) {\n      this.#allowClick = true;\n      return;\n    }\n\n    const currentMode = this.#uiManager.getMode();\n    if (\n      currentMode === AnnotationEditorType.STAMP ||\n      currentMode === AnnotationEditorType.SIGNATURE\n    ) {\n      this.#uiManager.unselectAll();\n      return;\n    }\n\n    this.createAndAddNewEditor(event, /* isCentered = */ false);\n  }\n\n  /**\n   * Pointerdown callback.\n   * @param {PointerEvent} event\n   */\n  pointerdown(event) {\n    if (this.#uiManager.getMode() === AnnotationEditorType.HIGHLIGHT) {\n      this.enableTextSelection();\n    }\n    if (this.#hadPointerDown) {\n      // It's possible to have a second pointerdown event before a pointerup one\n      // when the user puts a finger on a touchscreen and then add a second one\n      // to start a pinch-to-zoom gesture.\n      // That said, in case it's possible to have two pointerdown events with\n      // a mouse, we don't want to create a new editor in such a case either.\n      this.#hadPointerDown = false;\n      return;\n    }\n    const { isMac } = FeatureTest.platform;\n    if (event.button !== 0 || (event.ctrlKey && isMac)) {\n      // Do nothing on right click.\n      return;\n    }\n\n    if (event.target !== this.div) {\n      return;\n    }\n\n    this.#hadPointerDown = true;\n\n    if (this.#currentEditorType?.isDrawer) {\n      this.startDrawingSession(event);\n      return;\n    }\n\n    const editor = this.#uiManager.getActive();\n    this.#allowClick = !editor || editor.isEmpty();\n  }\n\n  startDrawingSession(event) {\n    this.div.focus({\n      preventScroll: true,\n    });\n    if (this.#drawingAC) {\n      this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n      return;\n    }\n\n    this.#uiManager.setCurrentDrawingSession(this);\n    this.#drawingAC = new AbortController();\n    const signal = this.#uiManager.combinedSignal(this.#drawingAC);\n    this.div.addEventListener(\n      \"blur\",\n      ({ relatedTarget }) => {\n        if (relatedTarget && !this.div.contains(relatedTarget)) {\n          this.#focusedElement = null;\n          this.commitOrRemove();\n        }\n      },\n      { signal }\n    );\n    this.#currentEditorType.startDrawing(this, this.#uiManager, false, event);\n  }\n\n  pause(on) {\n    if (on) {\n      const { activeElement } = document;\n      if (this.div.contains(activeElement)) {\n        this.#focusedElement = activeElement;\n      }\n      return;\n    }\n    if (this.#focusedElement) {\n      setTimeout(() => {\n        this.#focusedElement?.focus();\n        this.#focusedElement = null;\n      }, 0);\n    }\n  }\n\n  endDrawingSession(isAborted = false) {\n    if (!this.#drawingAC) {\n      return null;\n    }\n    this.#uiManager.setCurrentDrawingSession(null);\n    this.#drawingAC.abort();\n    this.#drawingAC = null;\n    this.#focusedElement = null;\n    return this.#currentEditorType.endDrawing(isAborted);\n  }\n\n  /**\n   *\n   * @param {AnnotationEditor} editor\n   * @param {number} x\n   * @param {number} y\n   * @returns\n   */\n  findNewParent(editor, x, y) {\n    const layer = this.#uiManager.findParent(x, y);\n    if (layer === null || layer === this) {\n      return false;\n    }\n    layer.changeParent(editor);\n    return true;\n  }\n\n  commitOrRemove() {\n    if (this.#drawingAC) {\n      this.endDrawingSession();\n      return true;\n    }\n    return false;\n  }\n\n  onScaleChanging() {\n    if (!this.#drawingAC) {\n      return;\n    }\n    this.#currentEditorType.onScaleChangingWhenDrawing(this);\n  }\n\n  /**\n   * Destroy the main editor.\n   */\n  destroy() {\n    this.commitOrRemove();\n    if (this.#uiManager.getActive()?.parent === this) {\n      // We need to commit the current editor before destroying the layer.\n      this.#uiManager.commitOrRemove();\n      this.#uiManager.setActiveEditor(null);\n    }\n\n    if (this.#editorFocusTimeoutId) {\n      clearTimeout(this.#editorFocusTimeoutId);\n      this.#editorFocusTimeoutId = null;\n    }\n\n    for (const editor of this.#editors.values()) {\n      this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n      editor.setParent(null);\n      editor.isAttachedToDOM = false;\n      editor.div.remove();\n    }\n    this.div = null;\n    this.#editors.clear();\n    this.#uiManager.removeLayer(this);\n  }\n\n  #cleanup() {\n    // When we're cleaning up, some editors are removed but we don't want\n    // to add a new one which will induce an addition in this.#editors, hence\n    // an infinite loop.\n    for (const editor of this.#editors.values()) {\n      if (editor.isEmpty()) {\n        editor.remove();\n      }\n    }\n  }\n\n  /**\n   * Render the main editor.\n   * @param {RenderEditorLayerOptions} parameters\n   */\n  render({ viewport }) {\n    this.viewport = viewport;\n    setLayerDimensions(this.div, viewport);\n    for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n      this.add(editor);\n      editor.rebuild();\n    }\n    // We're maybe rendering a layer which was invisible when we started to edit\n    // so we must set the different callbacks for it.\n    this.updateMode();\n  }\n\n  /**\n   * Update the main editor.\n   * @param {RenderEditorLayerOptions} parameters\n   */\n  update({ viewport }) {\n    // Editors have their dimensions/positions in percent so to avoid any\n    // issues (see #15582), we must commit the current one before changing\n    // the viewport.\n    this.#uiManager.commitOrRemove();\n    this.#cleanup();\n\n    const oldRotation = this.viewport.rotation;\n    const rotation = viewport.rotation;\n\n    this.viewport = viewport;\n    setLayerDimensions(this.div, { rotation });\n    if (oldRotation !== rotation) {\n      for (const editor of this.#editors.values()) {\n        editor.rotate(rotation);\n      }\n    }\n  }\n\n  /**\n   * Get page dimensions.\n   * @returns {Object} dimensions.\n   */\n  get pageDimensions() {\n    const { pageWidth, pageHeight } = this.viewport.rawDims;\n    return [pageWidth, pageHeight];\n  }\n\n  get scale() {\n    return this.#uiManager.viewParameters.realScale;\n  }\n}\n\nexport { AnnotationEditorLayer };\n", "/* Copyright 2023 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DOMSVGFactory } from \"./svg_factory.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * Manage the SVGs drawn on top of the page canvas.\n * It's important to have them directly on top of the canvas because we want to\n * be able to use mix-blend-mode for some of them.\n */\nclass DrawLayer {\n  #parent = null;\n\n  #mapping = new Map();\n\n  #toUpdate = new Map();\n\n  static #id = 0;\n\n  constructor({ pageIndex }) {\n    this.pageIndex = pageIndex;\n  }\n\n  setParent(parent) {\n    if (!this.#parent) {\n      this.#parent = parent;\n      return;\n    }\n\n    if (this.#parent !== parent) {\n      if (this.#mapping.size > 0) {\n        for (const root of this.#mapping.values()) {\n          root.remove();\n          parent.append(root);\n        }\n      }\n      this.#parent = parent;\n    }\n  }\n\n  static get _svgFactory() {\n    return shadow(this, \"_svgFactory\", new DOMSVGFactory());\n  }\n\n  static #setBox(element, [x, y, width, height]) {\n    const { style } = element;\n    style.top = `${100 * y}%`;\n    style.left = `${100 * x}%`;\n    style.width = `${100 * width}%`;\n    style.height = `${100 * height}%`;\n  }\n\n  #createSVG() {\n    const svg = DrawLayer._svgFactory.create(1, 1, /* skipDimensions = */ true);\n    this.#parent.append(svg);\n    svg.setAttribute(\"aria-hidden\", true);\n\n    return svg;\n  }\n\n  #createClipPath(defs, pathId) {\n    const clipPath = DrawLayer._svgFactory.createElement(\"clipPath\");\n    defs.append(clipPath);\n    const clipPathId = `clip_${pathId}`;\n    clipPath.setAttribute(\"id\", clipPathId);\n    clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n    const clipPathUse = DrawLayer._svgFactory.createElement(\"use\");\n    clipPath.append(clipPathUse);\n    clipPathUse.setAttribute(\"href\", `#${pathId}`);\n    clipPathUse.classList.add(\"clip\");\n\n    return clipPathId;\n  }\n\n  #updateProperties(element, properties) {\n    for (const [key, value] of Object.entries(properties)) {\n      if (value === null) {\n        element.removeAttribute(key);\n      } else {\n        element.setAttribute(key, value);\n      }\n    }\n  }\n\n  draw(properties, isPathUpdatable = false, hasClip = false) {\n    const id = DrawLayer.#id++;\n    const root = this.#createSVG();\n\n    const defs = DrawLayer._svgFactory.createElement(\"defs\");\n    root.append(defs);\n    const path = DrawLayer._svgFactory.createElement(\"path\");\n    defs.append(path);\n    const pathId = `path_p${this.pageIndex}_${id}`;\n    path.setAttribute(\"id\", pathId);\n    path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n\n    if (isPathUpdatable) {\n      this.#toUpdate.set(id, path);\n    }\n\n    // Create the clipping path for the editor div.\n    const clipPathId = hasClip ? this.#createClipPath(defs, pathId) : null;\n\n    const use = DrawLayer._svgFactory.createElement(\"use\");\n    root.append(use);\n    use.setAttribute(\"href\", `#${pathId}`);\n    this.updateProperties(root, properties);\n\n    this.#mapping.set(id, root);\n\n    return { id, clipPathId: `url(#${clipPathId})` };\n  }\n\n  drawOutline(properties, mustRemoveSelfIntersections) {\n    // We cannot draw the outline directly in the SVG for highlights because\n    // it composes with its parent with mix-blend-mode: multiply.\n    // But the outline has a different mix-blend-mode, so we need to draw it in\n    // its own SVG.\n    const id = DrawLayer.#id++;\n    const root = this.#createSVG();\n    const defs = DrawLayer._svgFactory.createElement(\"defs\");\n    root.append(defs);\n    const path = DrawLayer._svgFactory.createElement(\"path\");\n    defs.append(path);\n    const pathId = `path_p${this.pageIndex}_${id}`;\n    path.setAttribute(\"id\", pathId);\n    path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n\n    let maskId;\n    if (mustRemoveSelfIntersections) {\n      const mask = DrawLayer._svgFactory.createElement(\"mask\");\n      defs.append(mask);\n      maskId = `mask_p${this.pageIndex}_${id}`;\n      mask.setAttribute(\"id\", maskId);\n      mask.setAttribute(\"maskUnits\", \"objectBoundingBox\");\n      const rect = DrawLayer._svgFactory.createElement(\"rect\");\n      mask.append(rect);\n      rect.setAttribute(\"width\", \"1\");\n      rect.setAttribute(\"height\", \"1\");\n      rect.setAttribute(\"fill\", \"white\");\n      const use = DrawLayer._svgFactory.createElement(\"use\");\n      mask.append(use);\n      use.setAttribute(\"href\", `#${pathId}`);\n      use.setAttribute(\"stroke\", \"none\");\n      use.setAttribute(\"fill\", \"black\");\n      use.setAttribute(\"fill-rule\", \"nonzero\");\n      use.classList.add(\"mask\");\n    }\n\n    const use1 = DrawLayer._svgFactory.createElement(\"use\");\n    root.append(use1);\n    use1.setAttribute(\"href\", `#${pathId}`);\n    if (maskId) {\n      use1.setAttribute(\"mask\", `url(#${maskId})`);\n    }\n    const use2 = use1.cloneNode();\n    root.append(use2);\n    use1.classList.add(\"mainOutline\");\n    use2.classList.add(\"secondaryOutline\");\n\n    this.updateProperties(root, properties);\n\n    this.#mapping.set(id, root);\n\n    return id;\n  }\n\n  finalizeDraw(id, properties) {\n    this.#toUpdate.delete(id);\n    this.updateProperties(id, properties);\n  }\n\n  updateProperties(elementOrId, properties) {\n    if (!properties) {\n      return;\n    }\n    const { root, bbox, rootClass, path } = properties;\n    const element =\n      typeof elementOrId === \"number\"\n        ? this.#mapping.get(elementOrId)\n        : elementOrId;\n    if (!element) {\n      return;\n    }\n    if (root) {\n      this.#updateProperties(element, root);\n    }\n    if (bbox) {\n      DrawLayer.#setBox(element, bbox);\n    }\n    if (rootClass) {\n      const { classList } = element;\n      for (const [className, value] of Object.entries(rootClass)) {\n        classList.toggle(className, value);\n      }\n    }\n    if (path) {\n      const defs = element.firstChild;\n      const pathElement = defs.firstChild;\n      this.#updateProperties(pathElement, path);\n    }\n  }\n\n  updateParent(id, layer) {\n    if (layer === this) {\n      return;\n    }\n    const root = this.#mapping.get(id);\n    if (!root) {\n      return;\n    }\n    layer.#parent.append(root);\n    this.#mapping.delete(id);\n    layer.#mapping.set(id, root);\n  }\n\n  remove(id) {\n    this.#toUpdate.delete(id);\n    if (this.#parent === null) {\n      return;\n    }\n    this.#mapping.get(id).remove();\n    this.#mapping.delete(id);\n  }\n\n  destroy() {\n    this.#parent = null;\n    for (const root of this.#mapping.values()) {\n      root.remove();\n    }\n    this.#mapping.clear();\n    this.#toUpdate.clear();\n  }\n}\n\nexport { DrawLayer };\n", "/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./display/api\").OnProgressParameters} OnProgressParameters */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./display/api\").PDFDocumentLoadingTask} PDFDocumentLoadingTask */\n/** @typedef {import(\"./display/api\").PDFDocumentProxy} PDFDocumentProxy */\n/** @typedef {import(\"./display/api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display/api\").RenderTask} RenderTask */\n/** @typedef {import(\"./display/display_utils\").PageViewport} PageViewport */\n\nimport {\n  AbortException,\n  AnnotationEditorParamsType,\n  AnnotationEditorType,\n  AnnotationMode,\n  AnnotationType,\n  createValidAbsoluteUrl,\n  FeatureTest,\n  getUuid,\n  ImageKind,\n  InvalidPDFException,\n  MathClamp,\n  normalizeUnicode,\n  OPS,\n  PasswordResponses,\n  PermissionFlag,\n  ResponseException,\n  shadow,\n  updateUrlHash,\n  Util,\n  VerbosityLevel,\n} from \"./shared/util.js\";\nimport {\n  applyOpacity,\n  CSSConstants,\n  fetchData,\n  findContrastColor,\n  getFilenameFromUrl,\n  getPdfFilenameFromUrl,\n  getRGB,\n  getXfaPageViewport,\n  isDataScheme,\n  isPdfFile,\n  noContextMenu,\n  OutputScale,\n  PDFDateString,\n  PixelsPerInch,\n  RenderingCancelledException,\n  renderRichText,\n  setLayerDimensions,\n  stopEvent,\n  SupportedImageMimeTypes,\n} from \"./display/display_utils.js\";\nimport {\n  build,\n  getDocument,\n  PDFDataRangeTransport,\n  PDFWorker,\n  version,\n} from \"./display/api.js\";\nimport { AnnotationEditorLayer } from \"./display/editor/annotation_editor_layer.js\";\nimport { AnnotationEditorUIManager } from \"./display/editor/tools.js\";\nimport { AnnotationLayer } from \"./display/annotation_layer.js\";\nimport { ColorPicker } from \"./display/editor/color_picker.js\";\nimport { DOMSVGFactory } from \"./display/svg_factory.js\";\nimport { DrawLayer } from \"./display/draw_layer.js\";\nimport { GlobalWorkerOptions } from \"./display/worker_options.js\";\nimport { HighlightOutliner } from \"./display/editor/drawers/highlight.js\";\nimport { isValidExplicitDest } from \"./display/api_utils.js\";\nimport { SignatureExtractor } from \"./display/editor/drawers/signaturedraw.js\";\nimport { TextLayer } from \"./display/text_layer.js\";\nimport { TouchManager } from \"./display/touch_manager.js\";\nimport { XfaLayer } from \"./display/xfa_layer.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING || GENERIC\")) {\n  globalThis._pdfjsTestingUtils = {\n    HighlightOutliner,\n  };\n}\n\nglobalThis.pdfjsLib = {\n  AbortException,\n  AnnotationEditorLayer,\n  AnnotationEditorParamsType,\n  AnnotationEditorType,\n  AnnotationEditorUIManager,\n  AnnotationLayer,\n  AnnotationMode,\n  AnnotationType,\n  applyOpacity,\n  build,\n  ColorPicker,\n  createValidAbsoluteUrl,\n  CSSConstants,\n  DOMSVGFactory,\n  DrawLayer,\n  FeatureTest,\n  fetchData,\n  findContrastColor,\n  getDocument,\n  getFilenameFromUrl,\n  getPdfFilenameFromUrl,\n  getRGB,\n  getUuid,\n  getXfaPageViewport,\n  GlobalWorkerOptions,\n  ImageKind,\n  InvalidPDFException,\n  isDataScheme,\n  isPdfFile,\n  isValidExplicitDest,\n  MathClamp,\n  noContextMenu,\n  normalizeUnicode,\n  OPS,\n  OutputScale,\n  PasswordResponses,\n  PDFDataRangeTransport,\n  PDFDateString,\n  PDFWorker,\n  PermissionFlag,\n  PixelsPerInch,\n  RenderingCancelledException,\n  renderRichText,\n  ResponseException,\n  setLayerDimensions,\n  shadow,\n  SignatureExtractor,\n  stopEvent,\n  SupportedImageMimeTypes,\n  TextLayer,\n  TouchManager,\n  updateUrlHash,\n  Util,\n  VerbosityLevel,\n  version,\n  XfaLayer,\n};\n\nexport {\n  AbortException,\n  AnnotationEditorLayer,\n  AnnotationEditorParamsType,\n  AnnotationEditorType,\n  AnnotationEditorUIManager,\n  AnnotationLayer,\n  AnnotationMode,\n  AnnotationType,\n  applyOpacity,\n  build,\n  ColorPicker,\n  createValidAbsoluteUrl,\n  CSSConstants,\n  DOMSVGFactory,\n  DrawLayer,\n  FeatureTest,\n  fetchData,\n  findContrastColor,\n  getDocument,\n  getFilenameFromUrl,\n  getPdfFilenameFromUrl,\n  getRGB,\n  getUuid,\n  getXfaPageViewport,\n  GlobalWorkerOptions,\n  ImageKind,\n  InvalidPDFException,\n  isDataScheme,\n  isPdfFile,\n  isValidExplicitDest,\n  MathClamp,\n  noContextMenu,\n  normalizeUnicode,\n  OPS,\n  OutputScale,\n  PasswordResponses,\n  PDFDataRangeTransport,\n  PDFDateString,\n  PDFWorker,\n  PermissionFlag,\n  PixelsPerInch,\n  RenderingCancelledException,\n  renderRichText,\n  ResponseException,\n  setLayerDimensions,\n  shadow,\n  SignatureExtractor,\n  stopEvent,\n  SupportedImageMimeTypes,\n  TextLayer,\n  TouchManager,\n  updateUrlHash,\n  Util,\n  VerbosityLevel,\n  version,\n  XfaLayer,\n};\n", "'use client';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef } from 'react';\nimport clsx from 'clsx';\nimport { dequal } from 'dequal';\nimport makeCancellable from 'make-cancellable-promise';\nimport makeEventProps from 'make-event-props';\nimport * as pdfjs from 'pdfjs-dist';\nimport invariant from 'tiny-invariant';\nimport warning from 'warning';\nimport DocumentContext from './DocumentContext.js';\nimport LinkService from './LinkService.js';\nimport Message from './Message.js';\nimport PasswordResponses from './PasswordResponses.js';\nimport useResolver from './shared/hooks/useResolver.js';\nimport { cancelRunningTask, dataURItoByteString, displayCORSWarning, isArrayBuffer, isBlob, isBrowser, isDataURI, loadFromFile, } from './shared/utils.js';\nconst { PDFDataRangeTransport } = pdfjs;\nconst defaultOnPassword = (callback, reason) => {\n    switch (reason) {\n        case PasswordResponses.NEED_PASSWORD: {\n            const password = prompt('Enter the password to open this PDF file.');\n            callback(password);\n            break;\n        }\n        case PasswordResponses.INCORRECT_PASSWORD: {\n            const password = prompt('Invalid password. Please try again.');\n            callback(password);\n            break;\n        }\n        default:\n    }\n};\nfunction isParameterObject(file) {\n    return (typeof file === 'object' &&\n        file !== null &&\n        ('data' in file || 'range' in file || 'url' in file));\n}\n/**\n * Loads a document passed using `file` prop.\n */\nconst Document = forwardRef(function Document({ children, className, error = 'Failed to load PDF file.', externalLinkRel, externalLinkTarget, file, inputRef, imageResourcesPath, loading = 'Loading PDF\u2026', noData = 'No PDF file specified.', onItemClick, onLoadError: onLoadErrorProps, onLoadProgress, onLoadSuccess: onLoadSuccessProps, onPassword = defaultOnPassword, onSourceError: onSourceErrorProps, onSourceSuccess: onSourceSuccessProps, options, renderMode, rotate, scale, ...otherProps }, ref) {\n    const [sourceState, sourceDispatch] = useResolver();\n    const { value: source, error: sourceError } = sourceState;\n    const [pdfState, pdfDispatch] = useResolver();\n    const { value: pdf, error: pdfError } = pdfState;\n    const linkService = useRef(new LinkService());\n    const pages = useRef([]);\n    const prevFile = useRef(undefined);\n    const prevOptions = useRef(undefined);\n    if (file && file !== prevFile.current && isParameterObject(file)) {\n        warning(!dequal(file, prevFile.current), `File prop passed to <Document /> changed, but it's equal to previous one. This might result in unnecessary reloads. Consider memoizing the value passed to \"file\" prop.`);\n        prevFile.current = file;\n    }\n    // Detect non-memoized changes in options prop\n    if (options && options !== prevOptions.current) {\n        warning(!dequal(options, prevOptions.current), `Options prop passed to <Document /> changed, but it's equal to previous one. This might result in unnecessary reloads. Consider memoizing the value passed to \"options\" prop.`);\n        prevOptions.current = options;\n    }\n    const viewer = useRef({\n        // Handling jumping to internal links target\n        scrollPageIntoView: (args) => {\n            const { dest, pageNumber, pageIndex = pageNumber - 1 } = args;\n            // First, check if custom handling of onItemClick was provided\n            if (onItemClick) {\n                onItemClick({ dest, pageIndex, pageNumber });\n                return;\n            }\n            // If not, try to look for target page within the <Document>.\n            const page = pages.current[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 ${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    useImperativeHandle(ref, () => ({\n        linkService,\n        pages,\n        viewer,\n    }), []);\n    /**\n     * Called when a document source is resolved correctly\n     */\n    function onSourceSuccess() {\n        if (onSourceSuccessProps) {\n            onSourceSuccessProps();\n        }\n    }\n    /**\n     * Called when a document source failed to be resolved correctly\n     */\n    function onSourceError() {\n        if (!sourceError) {\n            // Impossible, but TypeScript doesn't know that\n            return;\n        }\n        warning(false, sourceError.toString());\n        if (onSourceErrorProps) {\n            onSourceErrorProps(sourceError);\n        }\n    }\n    function resetSource() {\n        sourceDispatch({ type: 'RESET' });\n    }\n    // biome-ignore lint/correctness/useExhaustiveDependencies: See https://github.com/biomejs/biome/issues/3080\n    useEffect(resetSource, [file, sourceDispatch]);\n    const findDocumentSource = useCallback(async () => {\n        if (!file) {\n            return null;\n        }\n        // File is a string\n        if (typeof file === 'string') {\n            if (isDataURI(file)) {\n                const fileByteString = dataURItoByteString(file);\n                return { data: fileByteString };\n            }\n            displayCORSWarning();\n            return { url: file };\n        }\n        // File is PDFDataRangeTransport\n        if (file instanceof PDFDataRangeTransport) {\n            return { range: file };\n        }\n        // File is an ArrayBuffer\n        if (isArrayBuffer(file)) {\n            return { data: file };\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)) {\n                const data = await loadFromFile(file);\n                return { data };\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(isParameterObject(file), 'Invalid parameter object: need either .data, .range or .url');\n        // File .url is a string\n        if ('url' in file && typeof file.url === 'string') {\n            if (isDataURI(file.url)) {\n                const { url, ...otherParams } = file;\n                const fileByteString = dataURItoByteString(url);\n                return { data: fileByteString, ...otherParams };\n            }\n            displayCORSWarning();\n        }\n        return file;\n    }, [file]);\n    useEffect(() => {\n        const cancellable = makeCancellable(findDocumentSource());\n        cancellable.promise\n            .then((nextSource) => {\n            sourceDispatch({ type: 'RESOLVE', value: nextSource });\n        })\n            .catch((error) => {\n            sourceDispatch({ type: 'REJECT', error });\n        });\n        return () => {\n            cancelRunningTask(cancellable);\n        };\n    }, [findDocumentSource, sourceDispatch]);\n    // biome-ignore lint/correctness/useExhaustiveDependencies: Omitted callbacks so they are not called every time they change\n    useEffect(() => {\n        if (typeof source === 'undefined') {\n            return;\n        }\n        if (source === false) {\n            onSourceError();\n            return;\n        }\n        onSourceSuccess();\n    }, [source]);\n    /**\n     * Called when a document is read successfully\n     */\n    function onLoadSuccess() {\n        if (!pdf) {\n            // Impossible, but TypeScript doesn't know that\n            return;\n        }\n        if (onLoadSuccessProps) {\n            onLoadSuccessProps(pdf);\n        }\n        pages.current = new Array(pdf.numPages);\n        linkService.current.setDocument(pdf);\n    }\n    /**\n     * Called when a document failed to read successfully\n     */\n    function onLoadError() {\n        if (!pdfError) {\n            // Impossible, but TypeScript doesn't know that\n            return;\n        }\n        warning(false, pdfError.toString());\n        if (onLoadErrorProps) {\n            onLoadErrorProps(pdfError);\n        }\n    }\n    // biome-ignore lint/correctness/useExhaustiveDependencies: useEffect intentionally triggered on source change\n    useEffect(function resetDocument() {\n        pdfDispatch({ type: 'RESET' });\n    }, [pdfDispatch, source]);\n    // biome-ignore lint/correctness/useExhaustiveDependencies: Omitted callbacks so they are not called every time they change\n    useEffect(function loadDocument() {\n        if (!source) {\n            return;\n        }\n        const documentInitParams = options\n            ? { ...source, ...options }\n            : source;\n        const destroyable = pdfjs.getDocument(documentInitParams);\n        if (onLoadProgress) {\n            destroyable.onProgress = onLoadProgress;\n        }\n        if (onPassword) {\n            destroyable.onPassword = onPassword;\n        }\n        const loadingTask = destroyable;\n        loadingTask.promise\n            .then((nextPdf) => {\n            if (loadingTask.destroyed) {\n                return;\n            }\n            pdfDispatch({ type: 'RESOLVE', value: nextPdf });\n        })\n            .catch((error) => {\n            if (loadingTask.destroyed) {\n                return;\n            }\n            pdfDispatch({ type: 'REJECT', error });\n        });\n        return () => {\n            loadingTask.destroy();\n        };\n    }, [options, pdfDispatch, source]);\n    // biome-ignore lint/correctness/useExhaustiveDependencies: Omitted callbacks so they are not called every time they change\n    useEffect(() => {\n        if (typeof pdf === 'undefined') {\n            return;\n        }\n        if (pdf === false) {\n            onLoadError();\n            return;\n        }\n        onLoadSuccess();\n    }, [pdf]);\n    useEffect(function setupLinkService() {\n        linkService.current.setViewer(viewer.current);\n        linkService.current.setExternalLinkRel(externalLinkRel);\n        linkService.current.setExternalLinkTarget(externalLinkTarget);\n    }, [externalLinkRel, externalLinkTarget]);\n    const registerPage = useCallback((pageIndex, ref) => {\n        pages.current[pageIndex] = ref;\n    }, []);\n    const unregisterPage = useCallback((pageIndex) => {\n        delete pages.current[pageIndex];\n    }, []);\n    const childContext = useMemo(() => ({\n        imageResourcesPath,\n        linkService: linkService.current,\n        onItemClick,\n        pdf,\n        registerPage,\n        renderMode,\n        rotate,\n        scale,\n        unregisterPage,\n    }), [imageResourcesPath, onItemClick, pdf, registerPage, renderMode, rotate, scale, unregisterPage]);\n    const eventProps = useMemo(() => makeEventProps(otherProps, () => pdf), \n    // biome-ignore lint/correctness/useExhaustiveDependencies: FIXME\n    [otherProps, pdf]);\n    function renderChildren() {\n        function isFulfilledContext(context) {\n            return Boolean(context === null || context === void 0 ? void 0 : context.pdf);\n        }\n        if (!isFulfilledContext(childContext)) {\n            // Impossible, but TypeScript doesn't know that\n            throw new Error('pdf is undefined');\n        }\n        const resolvedChildren = typeof children === 'function' ? children(childContext) : children;\n        return (_jsx(DocumentContext.Provider, { value: childContext, children: resolvedChildren }));\n    }\n    function renderContent() {\n        if (!file) {\n            return _jsx(Message, { type: \"no-data\", children: typeof noData === 'function' ? noData() : noData });\n        }\n        if (pdf === undefined || pdf === null) {\n            return (_jsx(Message, { type: \"loading\", children: typeof loading === 'function' ? loading() : loading }));\n        }\n        if (pdf === false) {\n            return _jsx(Message, { type: \"error\", children: typeof error === 'function' ? error() : error });\n        }\n        return renderChildren();\n    }\n    return (_jsx(\"div\", { className: clsx('react-pdf__Document', className), \n        // Assertion is needed for React 18 compatibility\n        ref: inputRef, ...eventProps, children: renderContent() }));\n});\nexport default Document;\n", "function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;", "var has = Object.prototype.hasOwnProperty;\n\nfunction find(iter, tar, key) {\n\tfor (key of iter.keys()) {\n\t\tif (dequal(key, tar)) return key;\n\t}\n}\n\nexport function dequal(foo, bar) {\n\tvar ctor, len, tmp;\n\tif (foo === bar) return true;\n\n\tif (foo && bar && (ctor=foo.constructor) === bar.constructor) {\n\t\tif (ctor === Date) return foo.getTime() === bar.getTime();\n\t\tif (ctor === RegExp) return foo.toString() === bar.toString();\n\n\t\tif (ctor === Array) {\n\t\t\tif ((len=foo.length) === bar.length) {\n\t\t\t\twhile (len-- && dequal(foo[len], bar[len]));\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (ctor === Set) {\n\t\t\tif (foo.size !== bar.size) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (len of foo) {\n\t\t\t\ttmp = len;\n\t\t\t\tif (tmp && typeof tmp === 'object') {\n\t\t\t\t\ttmp = find(bar, tmp);\n\t\t\t\t\tif (!tmp) return false;\n\t\t\t\t}\n\t\t\t\tif (!bar.has(tmp)) return false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tif (ctor === Map) {\n\t\t\tif (foo.size !== bar.size) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tfor (len of foo) {\n\t\t\t\ttmp = len[0];\n\t\t\t\tif (tmp && typeof tmp === 'object') {\n\t\t\t\t\ttmp = find(bar, tmp);\n\t\t\t\t\tif (!tmp) return false;\n\t\t\t\t}\n\t\t\t\tif (!dequal(len[1], bar.get(tmp))) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\n\t\tif (ctor === ArrayBuffer) {\n\t\t\tfoo = new Uint8Array(foo);\n\t\t\tbar = new Uint8Array(bar);\n\t\t} else if (ctor === DataView) {\n\t\t\tif ((len=foo.byteLength) === bar.byteLength) {\n\t\t\t\twhile (len-- && foo.getInt8(len) === bar.getInt8(len));\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (ArrayBuffer.isView(foo)) {\n\t\t\tif ((len=foo.byteLength) === bar.byteLength) {\n\t\t\t\twhile (len-- && foo[len] === bar[len]);\n\t\t\t}\n\t\t\treturn len === -1;\n\t\t}\n\n\t\tif (!ctor || typeof foo === 'object') {\n\t\t\tlen = 0;\n\t\t\tfor (ctor in foo) {\n\t\t\t\tif (has.call(foo, ctor) && ++len && !has.call(bar, ctor)) return false;\n\t\t\t\tif (!(ctor in bar) || !dequal(foo[ctor], bar[ctor])) return false;\n\t\t\t}\n\t\t\treturn Object.keys(bar).length === len;\n\t\t}\n\t}\n\n\treturn foo !== foo && bar !== bar;\n}\n", "export default function makeCancellablePromise(promise) {\n    let isCancelled = false;\n    const wrappedPromise = new Promise((resolve, reject) => {\n        promise\n            .then((value) => !isCancelled && resolve(value))\n            .catch((error) => !isCancelled && reject(error));\n    });\n    return {\n        promise: wrappedPromise,\n        cancel() {\n            isCancelled = true;\n        },\n    };\n}\n", "// As defined on the list of supported events: https://reactjs.org/docs/events.html\nexport const clipboardEvents = ['onCopy', 'onCut', 'onPaste'];\nexport const compositionEvents = [\n    'onCompositionEnd',\n    'onCompositionStart',\n    'onCompositionUpdate',\n];\nexport const focusEvents = ['onFocus', 'onBlur'];\nexport const formEvents = ['onInput', 'onInvalid', 'onReset', 'onSubmit'];\nexport const imageEvents = ['onLoad', 'onError'];\nexport const keyboardEvents = ['onKeyDown', 'onKeyPress', 'onKeyUp'];\nexport const 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 const mouseEvents = [\n    'onClick',\n    'onContextMenu',\n    'onDoubleClick',\n    'onMouseDown',\n    'onMouseEnter',\n    'onMouseLeave',\n    'onMouseMove',\n    'onMouseOut',\n    'onMouseOver',\n    'onMouseUp',\n];\nexport const dragEvents = [\n    'onDrag',\n    'onDragEnd',\n    'onDragEnter',\n    'onDragExit',\n    'onDragLeave',\n    'onDragOver',\n    'onDragStart',\n    'onDrop',\n];\nexport const selectionEvents = ['onSelect'];\nexport const touchEvents = ['onTouchCancel', 'onTouchEnd', 'onTouchMove', 'onTouchStart'];\nexport const pointerEvents = [\n    'onPointerDown',\n    'onPointerMove',\n    'onPointerUp',\n    'onPointerCancel',\n    'onGotPointerCapture',\n    'onLostPointerCapture',\n    'onPointerEnter',\n    'onPointerLeave',\n    'onPointerOver',\n    'onPointerOut',\n];\nexport const uiEvents = ['onScroll'];\nexport const wheelEvents = ['onWheel'];\nexport const animationEvents = [\n    'onAnimationStart',\n    'onAnimationEnd',\n    'onAnimationIteration',\n];\nexport const transitionEvents = ['onTransitionEnd'];\nexport const otherEvents = ['onToggle'];\nexport const changeEvents = ['onChange'];\nexport const allEvents = [\n    ...clipboardEvents,\n    ...compositionEvents,\n    ...focusEvents,\n    ...formEvents,\n    ...imageEvents,\n    ...keyboardEvents,\n    ...mediaEvents,\n    ...mouseEvents,\n    ...dragEvents,\n    ...selectionEvents,\n    ...touchEvents,\n    ...pointerEvents,\n    ...uiEvents,\n    ...wheelEvents,\n    ...animationEvents,\n    ...transitionEvents,\n    ...changeEvents,\n    ...otherEvents,\n];\n/**\n * Returns an object with on-event callback props curried with provided args.\n *\n * @template ArgsType Type of arguments to curry on-event callbacks with.\n * @param {PropsType} props Props passed to a component.\n * @param {GetArgs<ArgsType>} [getArgs] A function that returns argument(s) on-event callbacks\n *   shall be curried with.\n */\nexport default function makeEventProps(props, getArgs) {\n    const eventProps = {};\n    for (const eventName of allEvents) {\n        const eventHandler = props[eventName];\n        if (!eventHandler) {\n            continue;\n        }\n        if (getArgs) {\n            eventProps[eventName] = ((event) => eventHandler(event, getArgs(eventName)));\n        }\n        else {\n            eventProps[eventName] = eventHandler;\n        }\n    }\n    return eventProps;\n}\n", "var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n    if (condition) {\n        return;\n    }\n    if (isProduction) {\n        throw new Error(prefix);\n    }\n    var provided = typeof message === 'function' ? message() : message;\n    var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n    throw new Error(value);\n}\n\nexport { invariant as default };\n", "'use client';\nimport { createContext } from 'react';\nconst documentContext = createContext(null);\nexport default documentContext;\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';\nconst DEFAULT_LINK_REL = 'noopener noreferrer nofollow';\nexport default class LinkService {\n    constructor() {\n        this.externalLinkEnabled = true;\n        this.externalLinkRel = undefined;\n        this.externalLinkTarget = undefined;\n        this.isInPresentationMode = false;\n        this.pdfDocument = undefined;\n        this.pdfViewer = undefined;\n    }\n    setDocument(pdfDocument) {\n        this.pdfDocument = pdfDocument;\n    }\n    setViewer(pdfViewer) {\n        this.pdfViewer = pdfViewer;\n    }\n    setExternalLinkRel(externalLinkRel) {\n        this.externalLinkRel = externalLinkRel;\n    }\n    setExternalLinkTarget(externalLinkTarget) {\n        this.externalLinkTarget = externalLinkTarget;\n    }\n    setHash() {\n        // Intentionally empty\n    }\n    setHistory() {\n        // Intentionally empty\n    }\n    get pagesCount() {\n        return this.pdfDocument ? this.pdfDocument.numPages : 0;\n    }\n    get page() {\n        invariant(this.pdfViewer, 'PDF viewer is not initialized.');\n        return this.pdfViewer.currentPageNumber || 0;\n    }\n    set page(value) {\n        invariant(this.pdfViewer, 'PDF viewer is not initialized.');\n        this.pdfViewer.currentPageNumber = value;\n    }\n    get rotation() {\n        return 0;\n    }\n    set rotation(_value) {\n        // Intentionally empty\n    }\n    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    goToDestination(dest) {\n        return new Promise((resolve) => {\n            invariant(this.pdfDocument, 'PDF document not loaded.');\n            invariant(dest, 'Destination is not specified.');\n            if (typeof dest === 'string') {\n                this.pdfDocument.getDestination(dest).then(resolve);\n            }\n            else if (Array.isArray(dest)) {\n                resolve(dest);\n            }\n            else {\n                dest.then(resolve);\n            }\n        }).then((explicitDest) => {\n            invariant(Array.isArray(explicitDest), `\"${explicitDest}\" is not a valid destination array.`);\n            const destRef = explicitDest[0];\n            new Promise((resolve) => {\n                invariant(this.pdfDocument, 'PDF document not loaded.');\n                if (destRef instanceof Object) {\n                    this.pdfDocument\n                        .getPageIndex(destRef)\n                        .then((pageIndex) => {\n                        resolve(pageIndex);\n                    })\n                        .catch(() => {\n                        invariant(false, `\"${destRef}\" is not a valid page reference.`);\n                    });\n                }\n                else if (typeof destRef === 'number') {\n                    resolve(destRef);\n                }\n                else {\n                    invariant(false, `\"${destRef}\" is not a valid destination reference.`);\n                }\n            }).then((pageIndex) => {\n                const pageNumber = pageIndex + 1;\n                invariant(this.pdfViewer, 'PDF viewer is not initialized.');\n                invariant(pageNumber >= 1 && pageNumber <= this.pagesCount, `\"${pageNumber}\" is not a valid page number.`);\n                this.pdfViewer.scrollPageIntoView({\n                    dest: explicitDest,\n                    pageIndex,\n                    pageNumber,\n                });\n            });\n        });\n    }\n    goToPage(pageNumber) {\n        const pageIndex = pageNumber - 1;\n        invariant(this.pdfViewer, 'PDF viewer is not initialized.');\n        invariant(pageNumber >= 1 && pageNumber <= this.pagesCount, `\"${pageNumber}\" is not a valid page number.`);\n        this.pdfViewer.scrollPageIntoView({\n            pageIndex,\n            pageNumber,\n        });\n    }\n    goToXY() {\n        // Intentionally empty\n    }\n    cachePageRef() {\n        // Intentionally empty\n    }\n    getDestinationHash() {\n        return '#';\n    }\n    getAnchorUrl() {\n        return '#';\n    }\n    executeNamedAction() {\n        // Intentionally empty\n    }\n    executeSetOCGState() {\n        // Intentionally empty\n    }\n    isPageVisible() {\n        return true;\n    }\n    isPageCached() {\n        return true;\n    }\n    navigateTo(dest) {\n        this.goToDestination(dest);\n    }\n}\n", "import { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function Message({ children, type }) {\n    return _jsx(\"div\", { className: `react-pdf__message react-pdf__message--${type}`, children: children });\n}\n", "// As defined in https://github.com/mozilla/pdf.js/blob/d9fac3459609a807be6506fb3441b5da4b154d14/src/shared/util.js#L371-L374\nconst PasswordResponses = {\n    NEED_PASSWORD: 1,\n    INCORRECT_PASSWORD: 2,\n};\nexport default PasswordResponses;\n", "import { useReducer } from 'react';\nfunction reducer(state, action) {\n    switch (action.type) {\n        case 'RESOLVE':\n            return { value: action.value, error: undefined };\n        case 'REJECT':\n            return { value: false, error: action.error };\n        case 'RESET':\n            return { value: undefined, error: undefined };\n        default:\n            return state;\n    }\n}\nexport default function useResolver() {\n    return useReducer((reducer), { value: undefined, error: undefined });\n}\n", "import invariant from 'tiny-invariant';\nimport warning from 'warning';\n/**\n * Checks if we're running in a browser environment.\n */\nexport const isBrowser = typeof window !== 'undefined';\n/**\n * Checks whether we're running from a local file system.\n */\nexport const isLocalFileSystem = isBrowser && window.location.protocol === 'file:';\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 * 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 * 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 * 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 * 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 * Checks whether a variable provided is a data URI.\n *\n * @param {*} variable String to check\n */\nexport function isDataURI(variable) {\n    return isString(variable) && /^data:/.test(variable);\n}\nexport function dataURItoByteString(dataURI) {\n    invariant(isDataURI(dataURI), 'Invalid data URI.');\n    const [headersString = '', dataString = ''] = dataURI.split(',');\n    const 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}\nconst 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. ${allowFileAccessFromFilesTip}`);\n}\nexport function displayWorkerWarning() {\n    warning(!isLocalFileSystem, `Loading PDF.js worker may not work on protocols other than HTTP/HTTPS. ${allowFileAccessFromFilesTip}`);\n}\nexport function cancelRunningTask(runningTask) {\n    if (runningTask === null || runningTask === void 0 ? void 0 : runningTask.cancel)\n        runningTask.cancel();\n}\nexport function makePageCallback(page, scale) {\n    Object.defineProperty(page, 'width', {\n        get() {\n            return this.getViewport({ scale }).width;\n        },\n        configurable: true,\n    });\n    Object.defineProperty(page, 'height', {\n        get() {\n            return this.getViewport({ scale }).height;\n        },\n        configurable: true,\n    });\n    Object.defineProperty(page, 'originalWidth', {\n        get() {\n            return this.getViewport({ scale: 1 }).width;\n        },\n        configurable: true,\n    });\n    Object.defineProperty(page, 'originalHeight', {\n        get() {\n            return this.getViewport({ scale: 1 }).height;\n        },\n        configurable: true,\n    });\n    return page;\n}\nexport function isAbortException(error) {\n    return error.name === 'AbortException' || error.name === 'RenderingCancelledException';\n}\nexport function loadFromFile(file) {\n    return new Promise((resolve, reject) => {\n        const reader = new FileReader();\n        reader.onload = () => {\n            if (!reader.result) {\n                return reject(new Error('Error while reading a file.'));\n            }\n            resolve(reader.result);\n        };\n        reader.onerror = (event) => {\n            if (!event.target) {\n                return reject(new Error('Error while reading a file.'));\n            }\n            const { error } = event.target;\n            if (!error) {\n                return reject(new Error('Error while reading a file.'));\n            }\n            switch (error.code) {\n                case error.NOT_FOUND_ERR:\n                    return reject(new Error('Error while reading a file: File not found.'));\n                case error.SECURITY_ERR:\n                    return reject(new Error('Error while reading a file: Security error.'));\n                case 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    });\n}\n", "import { useContext } from 'react';\nimport DocumentContext from '../../DocumentContext.js';\nexport default function useDocumentContext() {\n    return useContext(DocumentContext);\n}\n", "'use client';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useEffect, useMemo, useRef } from 'react';\nimport clsx from 'clsx';\nimport makeCancellable from 'make-cancellable-promise';\nimport makeEventProps from 'make-event-props';\nimport mergeRefs from 'merge-refs';\nimport invariant from 'tiny-invariant';\nimport warning from 'warning';\nimport Message from './Message.js';\nimport AnnotationLayer from './Page/AnnotationLayer.js';\nimport Canvas from './Page/Canvas.js';\nimport TextLayer from './Page/TextLayer.js';\nimport PageContext from './PageContext.js';\nimport useDocumentContext from './shared/hooks/useDocumentContext.js';\nimport useResolver from './shared/hooks/useResolver.js';\nimport { cancelRunningTask, isProvided, makePageCallback } from './shared/utils.js';\nconst defaultScale = 1;\n/**\n * Displays a page.\n *\n * Should be placed inside `<Document />`. Alternatively, it can have `pdf` prop passed, which can be obtained from `<Document />`'s `onLoadSuccess` callback function, however some advanced functions like linking between pages inside a document may not be working correctly.\n */\nexport default function Page(props) {\n    const documentContext = useDocumentContext();\n    const mergedProps = { ...documentContext, ...props };\n    const { _className = 'react-pdf__Page', _enableRegisterUnregisterPage = true, canvasBackground, canvasRef, children, className, customRenderer: CustomRenderer, customTextRenderer, devicePixelRatio, error = 'Failed to load the page.', filterAnnotations, height, inputRef, loading = 'Loading page\u2026', noData = 'No page specified.', onGetAnnotationsError: onGetAnnotationsErrorProps, onGetAnnotationsSuccess: onGetAnnotationsSuccessProps, onGetStructTreeError: onGetStructTreeErrorProps, onGetStructTreeSuccess: onGetStructTreeSuccessProps, onGetTextError: onGetTextErrorProps, onGetTextSuccess: onGetTextSuccessProps, onLoadError: onLoadErrorProps, onLoadSuccess: onLoadSuccessProps, onRenderAnnotationLayerError: onRenderAnnotationLayerErrorProps, onRenderAnnotationLayerSuccess: onRenderAnnotationLayerSuccessProps, onRenderError: onRenderErrorProps, onRenderSuccess: onRenderSuccessProps, onRenderTextLayerError: onRenderTextLayerErrorProps, onRenderTextLayerSuccess: onRenderTextLayerSuccessProps, pageColors, pageIndex: pageIndexProps, pageNumber: pageNumberProps, pdf, registerPage, renderAnnotationLayer: renderAnnotationLayerProps = true, renderForms = false, renderMode = 'canvas', renderTextLayer: renderTextLayerProps = true, rotate: rotateProps, scale: scaleProps = defaultScale, unregisterPage, width, ...otherProps } = mergedProps;\n    const [pageState, pageDispatch] = useResolver();\n    const { value: page, error: pageError } = pageState;\n    const pageElement = useRef(null);\n    invariant(pdf, 'Attempted to load a page, but no document was specified. Wrap <Page /> in a <Document /> or pass explicit `pdf` prop.');\n    const pageIndex = isProvided(pageNumberProps) ? pageNumberProps - 1 : (pageIndexProps !== null && pageIndexProps !== void 0 ? pageIndexProps : null);\n    const pageNumber = pageNumberProps !== null && pageNumberProps !== void 0 ? pageNumberProps : (isProvided(pageIndexProps) ? pageIndexProps + 1 : null);\n    const rotate = rotateProps !== null && rotateProps !== void 0 ? rotateProps : (page ? page.rotate : null);\n    const scale = useMemo(() => {\n        if (!page) {\n            return null;\n        }\n        // Be default, we'll render page at 100% * scale width.\n        let pageScale = 1;\n        // Passing scale explicitly null would cause the page not to render\n        const scaleWithDefault = scaleProps !== null && scaleProps !== void 0 ? scaleProps : defaultScale;\n        // If width/height is defined, calculate the scale of the page so it could be of desired width.\n        if (width || height) {\n            const viewport = page.getViewport({ scale: 1, rotation: rotate });\n            if (width) {\n                pageScale = width / viewport.width;\n            }\n            else if (height) {\n                pageScale = height / viewport.height;\n            }\n        }\n        return scaleWithDefault * pageScale;\n    }, [height, page, rotate, scaleProps, width]);\n    // biome-ignore lint/correctness/useExhaustiveDependencies: useEffect intentionally triggered on pdf change\n    useEffect(function hook() {\n        return () => {\n            if (!isProvided(pageIndex)) {\n                // Impossible, but TypeScript doesn't know that\n                return;\n            }\n            if (_enableRegisterUnregisterPage && unregisterPage) {\n                unregisterPage(pageIndex);\n            }\n        };\n    }, [_enableRegisterUnregisterPage, pdf, pageIndex, unregisterPage]);\n    /**\n     * Called when a page is loaded successfully\n     */\n    function onLoadSuccess() {\n        if (onLoadSuccessProps) {\n            if (!page || !scale) {\n                // Impossible, but TypeScript doesn't know that\n                return;\n            }\n            onLoadSuccessProps(makePageCallback(page, scale));\n        }\n        if (_enableRegisterUnregisterPage && registerPage) {\n            if (!isProvided(pageIndex) || !pageElement.current) {\n                // Impossible, but TypeScript doesn't know that\n                return;\n            }\n            registerPage(pageIndex, pageElement.current);\n        }\n    }\n    /**\n     * Called when a page failed to load\n     */\n    function onLoadError() {\n        if (!pageError) {\n            // Impossible, but TypeScript doesn't know that\n            return;\n        }\n        warning(false, pageError.toString());\n        if (onLoadErrorProps) {\n            onLoadErrorProps(pageError);\n        }\n    }\n    // biome-ignore lint/correctness/useExhaustiveDependencies: useEffect intentionally triggered on pdf and pageIndex change\n    useEffect(function resetPage() {\n        pageDispatch({ type: 'RESET' });\n    }, [pageDispatch, pdf, pageIndex]);\n    useEffect(function loadPage() {\n        if (!pdf || !pageNumber) {\n            return;\n        }\n        const cancellable = makeCancellable(pdf.getPage(pageNumber));\n        const runningTask = cancellable;\n        cancellable.promise\n            .then((nextPage) => {\n            pageDispatch({ type: 'RESOLVE', value: nextPage });\n        })\n            .catch((error) => {\n            pageDispatch({ type: 'REJECT', error });\n        });\n        return () => cancelRunningTask(runningTask);\n    }, [pageDispatch, pdf, pageNumber]);\n    // biome-ignore lint/correctness/useExhaustiveDependencies: Omitted callbacks so they are not called every time they change\n    useEffect(() => {\n        if (page === undefined) {\n            return;\n        }\n        if (page === false) {\n            onLoadError();\n            return;\n        }\n        onLoadSuccess();\n    }, [page, scale]);\n    const childContext = useMemo(() => \n    // Technically there cannot be page without pageIndex, pageNumber, rotate and scale, but TypeScript doesn't know that\n    isProvided(pageIndex) && pageNumber && isProvided(rotate) && isProvided(scale)\n        ? {\n            _className,\n            canvasBackground,\n            customTextRenderer,\n            devicePixelRatio,\n            filterAnnotations,\n            onGetAnnotationsError: onGetAnnotationsErrorProps,\n            onGetAnnotationsSuccess: onGetAnnotationsSuccessProps,\n            onGetStructTreeError: onGetStructTreeErrorProps,\n            onGetStructTreeSuccess: onGetStructTreeSuccessProps,\n            onGetTextError: onGetTextErrorProps,\n            onGetTextSuccess: onGetTextSuccessProps,\n            onRenderAnnotationLayerError: onRenderAnnotationLayerErrorProps,\n            onRenderAnnotationLayerSuccess: onRenderAnnotationLayerSuccessProps,\n            onRenderError: onRenderErrorProps,\n            onRenderSuccess: onRenderSuccessProps,\n            onRenderTextLayerError: onRenderTextLayerErrorProps,\n            onRenderTextLayerSuccess: onRenderTextLayerSuccessProps,\n            page,\n            pageColors,\n            pageIndex,\n            pageNumber,\n            renderForms,\n            renderTextLayer: renderTextLayerProps,\n            rotate,\n            scale,\n        }\n        : null, [\n        _className,\n        canvasBackground,\n        customTextRenderer,\n        devicePixelRatio,\n        filterAnnotations,\n        onGetAnnotationsErrorProps,\n        onGetAnnotationsSuccessProps,\n        onGetStructTreeErrorProps,\n        onGetStructTreeSuccessProps,\n        onGetTextErrorProps,\n        onGetTextSuccessProps,\n        onRenderAnnotationLayerErrorProps,\n        onRenderAnnotationLayerSuccessProps,\n        onRenderErrorProps,\n        onRenderSuccessProps,\n        onRenderTextLayerErrorProps,\n        onRenderTextLayerSuccessProps,\n        page,\n        pageColors,\n        pageIndex,\n        pageNumber,\n        renderForms,\n        renderTextLayerProps,\n        rotate,\n        scale,\n    ]);\n    const eventProps = useMemo(() => makeEventProps(otherProps, () => page ? (scale ? makePageCallback(page, scale) : undefined) : page), \n    // biome-ignore lint/correctness/useExhaustiveDependencies: FIXME\n    [otherProps, page, scale]);\n    const pageKey = `${pageIndex}@${scale}/${rotate}`;\n    function renderMainLayer() {\n        switch (renderMode) {\n            case 'custom': {\n                invariant(CustomRenderer, `renderMode was set to \"custom\", but no customRenderer was passed.`);\n                return _jsx(CustomRenderer, {}, `${pageKey}_custom`);\n            }\n            case 'none':\n                return null;\n            case 'canvas':\n            default:\n                return _jsx(Canvas, { canvasRef: canvasRef }, `${pageKey}_canvas`);\n        }\n    }\n    function renderTextLayer() {\n        if (!renderTextLayerProps) {\n            return null;\n        }\n        return _jsx(TextLayer, {}, `${pageKey}_text`);\n    }\n    function renderAnnotationLayer() {\n        if (!renderAnnotationLayerProps) {\n            return null;\n        }\n        return _jsx(AnnotationLayer, {}, `${pageKey}_annotations`);\n    }\n    function renderChildren() {\n        function isFulfilledContext(context) {\n            return Boolean(context === null || context === void 0 ? void 0 : context.page);\n        }\n        if (!isFulfilledContext(childContext)) {\n            // Impossible, but TypeScript doesn't know that\n            throw new Error('page is undefined');\n        }\n        const resolvedChildren = typeof children === 'function' ? children(childContext) : children;\n        return (_jsxs(PageContext.Provider, { value: childContext, children: [renderMainLayer(), renderTextLayer(), renderAnnotationLayer(), resolvedChildren] }));\n    }\n    function renderContent() {\n        if (!pageNumber) {\n            return _jsx(Message, { type: \"no-data\", children: typeof noData === 'function' ? noData() : noData });\n        }\n        if (pdf === null || page === undefined || page === null) {\n            return (_jsx(Message, { type: \"loading\", children: typeof loading === 'function' ? loading() : loading }));\n        }\n        if (pdf === false || page === false) {\n            return _jsx(Message, { type: \"error\", children: typeof error === 'function' ? error() : error });\n        }\n        return renderChildren();\n    }\n    return (_jsx(\"div\", { className: clsx(_className, className), \"data-page-number\": pageNumber, \n        // Assertion is needed for React 18 compatibility\n        ref: mergeRefs(inputRef, pageElement), style: {\n            '--scale-round-x': '1px',\n            '--scale-round-y': '1px',\n            '--scale-factor': '1',\n            '--user-unit': `${scale}`,\n            '--total-scale-factor': 'calc(var(--scale-factor) * var(--user-unit))',\n            backgroundColor: canvasBackground || 'white',\n            position: 'relative',\n            minWidth: 'min-content',\n            minHeight: 'min-content',\n        }, ...eventProps, children: renderContent() }));\n}\n", "/**\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        for (var _i = 0, filteredInputRefs_1 = filteredInputRefs; _i < filteredInputRefs_1.length; _i++) {\n            var inputRef = filteredInputRefs_1[_i];\n            if (typeof inputRef === 'function') {\n                inputRef(ref);\n            }\n            else if (inputRef) {\n                inputRef.current = ref;\n            }\n        }\n    };\n}\n", "'use client';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useEffect, useMemo, useRef } from 'react';\nimport clsx from 'clsx';\nimport makeCancellable from 'make-cancellable-promise';\nimport * as pdfjs from 'pdfjs-dist';\nimport invariant from 'tiny-invariant';\nimport warning from 'warning';\nimport useDocumentContext from '../shared/hooks/useDocumentContext.js';\nimport usePageContext from '../shared/hooks/usePageContext.js';\nimport useResolver from '../shared/hooks/useResolver.js';\nimport { cancelRunningTask } from '../shared/utils.js';\nexport default function AnnotationLayer() {\n    const documentContext = useDocumentContext();\n    const pageContext = usePageContext();\n    invariant(pageContext, 'Unable to find Page context.');\n    const mergedProps = { ...documentContext, ...pageContext };\n    const { filterAnnotations, imageResourcesPath, linkService, onGetAnnotationsError: onGetAnnotationsErrorProps, onGetAnnotationsSuccess: onGetAnnotationsSuccessProps, onRenderAnnotationLayerError: onRenderAnnotationLayerErrorProps, onRenderAnnotationLayerSuccess: onRenderAnnotationLayerSuccessProps, page, pdf, renderForms, rotate, scale = 1, } = mergedProps;\n    invariant(pdf, 'Attempted to load page annotations, but no document was specified. Wrap <Page /> in a <Document /> or pass explicit `pdf` prop.');\n    invariant(page, 'Attempted to load page annotations, but no page was specified.');\n    invariant(linkService, 'Attempted to load page annotations, but no linkService was specified.');\n    const [annotationsState, annotationsDispatch] = useResolver();\n    const { value: annotations, error: annotationsError } = annotationsState;\n    const layerElement = useRef(null);\n    warning(Number.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    function onLoadSuccess() {\n        if (!annotations) {\n            // Impossible, but TypeScript doesn't know that\n            return;\n        }\n        if (onGetAnnotationsSuccessProps) {\n            onGetAnnotationsSuccessProps(annotations);\n        }\n    }\n    function onLoadError() {\n        if (!annotationsError) {\n            // Impossible, but TypeScript doesn't know that\n            return;\n        }\n        warning(false, annotationsError.toString());\n        if (onGetAnnotationsErrorProps) {\n            onGetAnnotationsErrorProps(annotationsError);\n        }\n    }\n    // biome-ignore lint/correctness/useExhaustiveDependencies: useEffect intentionally triggered on page change\n    useEffect(function resetAnnotations() {\n        annotationsDispatch({ type: 'RESET' });\n    }, [annotationsDispatch, page]);\n    useEffect(function loadAnnotations() {\n        if (!page) {\n            return;\n        }\n        const cancellable = makeCancellable(page.getAnnotations());\n        const runningTask = cancellable;\n        cancellable.promise\n            .then((nextAnnotations) => {\n            annotationsDispatch({ type: 'RESOLVE', value: nextAnnotations });\n        })\n            .catch((error) => {\n            annotationsDispatch({ type: 'REJECT', error });\n        });\n        return () => {\n            cancelRunningTask(runningTask);\n        };\n    }, [annotationsDispatch, page]);\n    // biome-ignore lint/correctness/useExhaustiveDependencies: Omitted callbacks so they are not called every time they change\n    useEffect(() => {\n        if (annotations === undefined) {\n            return;\n        }\n        if (annotations === false) {\n            onLoadError();\n            return;\n        }\n        onLoadSuccess();\n    }, [annotations]);\n    function onRenderSuccess() {\n        if (onRenderAnnotationLayerSuccessProps) {\n            onRenderAnnotationLayerSuccessProps();\n        }\n    }\n    function onRenderError(error) {\n        warning(false, `${error}`);\n        if (onRenderAnnotationLayerErrorProps) {\n            onRenderAnnotationLayerErrorProps(error);\n        }\n    }\n    const viewport = useMemo(() => page.getViewport({ scale, rotation: rotate }), [page, rotate, scale]);\n    // biome-ignore lint/correctness/useExhaustiveDependencies: Omitted callbacks so they are not called every time they change\n    useEffect(function renderAnnotationLayer() {\n        if (!pdf || !page || !linkService || !annotations) {\n            return;\n        }\n        const { current: layer } = layerElement;\n        if (!layer) {\n            return;\n        }\n        const clonedViewport = viewport.clone({ dontFlip: true });\n        const annotationLayerParameters = {\n            accessibilityManager: null, // TODO: Implement this\n            annotationCanvasMap: null, // TODO: Implement this\n            annotationEditorUIManager: null, // TODO: Implement this\n            annotationStorage: pdf.annotationStorage,\n            commentManager: null, // TODO: Implement this\n            div: layer,\n            l10n: null, // TODO: Implement this\n            linkService,\n            page,\n            structTreeLayer: null, // TODO: Implement this\n            viewport: clonedViewport,\n        };\n        const renderParameters = {\n            annotations: filterAnnotations ? filterAnnotations({ annotations }) : annotations,\n            annotationStorage: pdf.annotationStorage,\n            div: layer,\n            imageResourcesPath,\n            linkService,\n            page,\n            renderForms,\n            viewport: clonedViewport,\n        };\n        layer.innerHTML = '';\n        try {\n            new pdfjs.AnnotationLayer(annotationLayerParameters).render(renderParameters);\n            // Intentional immediate callback\n            onRenderSuccess();\n        }\n        catch (error) {\n            onRenderError(error);\n        }\n        return () => {\n            // TODO: Cancel running task?\n        };\n    }, [\n        annotations,\n        filterAnnotations,\n        imageResourcesPath,\n        linkService,\n        page,\n        pdf,\n        renderForms,\n        viewport,\n    ]);\n    return (_jsx(\"div\", { className: clsx('react-pdf__Page__annotations', 'annotationLayer'), ref: layerElement }));\n}\n", "import { useContext } from 'react';\nimport PageContext from '../../PageContext.js';\nexport default function usePageContext() {\n    return useContext(PageContext);\n}\n", "'use client';\nimport { createContext } from 'react';\nconst pageContext = createContext(null);\nexport default pageContext;\n", "'use client';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useCallback, useEffect, useMemo, useRef } from 'react';\nimport mergeRefs from 'merge-refs';\nimport * as pdfjs from 'pdfjs-dist';\nimport invariant from 'tiny-invariant';\nimport warning from 'warning';\nimport StructTree from '../StructTree.js';\nimport usePageContext from '../shared/hooks/usePageContext.js';\nimport { cancelRunningTask, getDevicePixelRatio, isAbortException, makePageCallback, } from '../shared/utils.js';\nconst ANNOTATION_MODE = pdfjs.AnnotationMode;\nexport default function Canvas(props) {\n    const pageContext = usePageContext();\n    invariant(pageContext, 'Unable to find Page context.');\n    const mergedProps = { ...pageContext, ...props };\n    const { _className, canvasBackground, devicePixelRatio = getDevicePixelRatio(), onRenderError: onRenderErrorProps, onRenderSuccess: onRenderSuccessProps, page, renderForms, renderTextLayer, pageColors, rotate, scale, } = mergedProps;\n    const { canvasRef } = props;\n    invariant(page, 'Attempted to render page canvas, but no page was specified.');\n    const canvasElement = useRef(null);\n    /**\n     * Called when a page is rendered successfully.\n     */\n    function onRenderSuccess() {\n        if (!page) {\n            // Impossible, but TypeScript doesn't know that\n            return;\n        }\n        if (onRenderSuccessProps) {\n            onRenderSuccessProps(makePageCallback(page, scale));\n        }\n    }\n    /**\n     * Called when a page fails to render.\n     */\n    function onRenderError(error) {\n        if (isAbortException(error)) {\n            return;\n        }\n        warning(false, error.toString());\n        if (onRenderErrorProps) {\n            onRenderErrorProps(error);\n        }\n    }\n    const renderViewport = useMemo(() => page.getViewport({ scale: scale * devicePixelRatio, rotation: rotate }), [devicePixelRatio, page, rotate, scale]);\n    const viewport = useMemo(() => page.getViewport({ scale, rotation: rotate }), [page, rotate, scale]);\n    // biome-ignore lint/correctness/useExhaustiveDependencies: Omitted callbacks so they are not called every time they change\n    useEffect(function drawPageOnCanvas() {\n        if (!page) {\n            return;\n        }\n        // Ensures the canvas will be re-rendered from scratch. Otherwise all form data will stay.\n        page.cleanup();\n        const { current: canvas } = canvasElement;\n        if (!canvas) {\n            return;\n        }\n        canvas.width = renderViewport.width;\n        canvas.height = renderViewport.height;\n        canvas.style.width = `${Math.floor(viewport.width)}px`;\n        canvas.style.height = `${Math.floor(viewport.height)}px`;\n        canvas.style.visibility = 'hidden';\n        const renderContext = {\n            annotationMode: renderForms ? ANNOTATION_MODE.ENABLE_FORMS : ANNOTATION_MODE.ENABLE,\n            canvas,\n            canvasContext: canvas.getContext('2d', { alpha: false }),\n            pageColors,\n            viewport: renderViewport,\n        };\n        if (canvasBackground) {\n            renderContext.background = canvasBackground;\n        }\n        const cancellable = page.render(renderContext);\n        const runningTask = cancellable;\n        cancellable.promise\n            .then(() => {\n            canvas.style.visibility = '';\n            onRenderSuccess();\n        })\n            .catch(onRenderError);\n        return () => cancelRunningTask(runningTask);\n    }, [canvasBackground, page, pageColors, renderForms, renderViewport, viewport]);\n    const cleanup = useCallback(() => {\n        const { current: canvas } = canvasElement;\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    useEffect(() => cleanup, [cleanup]);\n    return (_jsx(\"canvas\", { className: `${_className}__canvas`, dir: \"ltr\", ref: mergeRefs(canvasRef, canvasElement), style: {\n            display: 'block',\n            userSelect: 'none',\n        }, children: renderTextLayer ? _jsx(StructTree, {}) : null }));\n}\n", "import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useEffect } from 'react';\nimport makeCancellable from 'make-cancellable-promise';\nimport invariant from 'tiny-invariant';\nimport warning from 'warning';\nimport StructTreeItem from './StructTreeItem.js';\nimport usePageContext from './shared/hooks/usePageContext.js';\nimport useResolver from './shared/hooks/useResolver.js';\nimport { cancelRunningTask } from './shared/utils.js';\nexport default function StructTree() {\n    const pageContext = usePageContext();\n    invariant(pageContext, 'Unable to find Page context.');\n    const { onGetStructTreeError: onGetStructTreeErrorProps, onGetStructTreeSuccess: onGetStructTreeSuccessProps, } = pageContext;\n    const [structTreeState, structTreeDispatch] = useResolver();\n    const { value: structTree, error: structTreeError } = structTreeState;\n    const { customTextRenderer, page } = pageContext;\n    function onLoadSuccess() {\n        if (!structTree) {\n            // Impossible, but TypeScript doesn't know that\n            return;\n        }\n        if (onGetStructTreeSuccessProps) {\n            onGetStructTreeSuccessProps(structTree);\n        }\n    }\n    function onLoadError() {\n        if (!structTreeError) {\n            // Impossible, but TypeScript doesn't know that\n            return;\n        }\n        warning(false, structTreeError.toString());\n        if (onGetStructTreeErrorProps) {\n            onGetStructTreeErrorProps(structTreeError);\n        }\n    }\n    // biome-ignore lint/correctness/useExhaustiveDependencies: useEffect intentionally triggered on page change\n    useEffect(function resetStructTree() {\n        structTreeDispatch({ type: 'RESET' });\n    }, [structTreeDispatch, page]);\n    useEffect(function loadStructTree() {\n        if (customTextRenderer) {\n            // TODO: Document why this is necessary\n            return;\n        }\n        if (!page) {\n            return;\n        }\n        const cancellable = makeCancellable(page.getStructTree());\n        const runningTask = cancellable;\n        cancellable.promise\n            .then((nextStructTree) => {\n            structTreeDispatch({ type: 'RESOLVE', value: nextStructTree });\n        })\n            .catch((error) => {\n            structTreeDispatch({ type: 'REJECT', error });\n        });\n        return () => cancelRunningTask(runningTask);\n    }, [customTextRenderer, page, structTreeDispatch]);\n    // biome-ignore lint/correctness/useExhaustiveDependencies: Omitted callbacks so they are not called every time they change\n    useEffect(() => {\n        if (structTree === undefined) {\n            return;\n        }\n        if (structTree === false) {\n            onLoadError();\n            return;\n        }\n        onLoadSuccess();\n    }, [structTree]);\n    if (!structTree) {\n        return null;\n    }\n    return _jsx(StructTreeItem, { className: \"react-pdf__Page__structTree structTree\", node: structTree });\n}\n", "import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useMemo } from 'react';\nimport { getAttributes, isStructTreeNode, isStructTreeNodeWithOnlyContentChild, } from './shared/structTreeUtils.js';\nexport default function StructTreeItem({ className, node, }) {\n    const attributes = useMemo(() => getAttributes(node), [node]);\n    const children = useMemo(() => {\n        if (!isStructTreeNode(node)) {\n            return null;\n        }\n        if (isStructTreeNodeWithOnlyContentChild(node)) {\n            return null;\n        }\n        return node.children.map((child, index) => {\n            return (\n            // biome-ignore lint/suspicious/noArrayIndexKey: index is stable here\n            _jsx(StructTreeItem, { node: child }, index));\n        });\n    }, [node]);\n    return (_jsx(\"span\", { className: className, ...attributes, children: children }));\n}\n", "// From pdfjs-dist/lib/web/struct_tree_layer_builder.js\nexport const PDF_ROLE_TO_HTML_ROLE = {\n    // Document level structure types\n    Document: null, // There's a \"document\" role, but it doesn't make sense here.\n    DocumentFragment: null,\n    // Grouping level structure types\n    Part: 'group',\n    Sect: 'group', // XXX: There's a \"section\" role, but it's abstract.\n    Div: 'group',\n    Aside: 'note',\n    NonStruct: 'none',\n    // Block level structure types\n    P: null,\n    // H<n>,\n    H: 'heading',\n    Title: null,\n    FENote: 'note',\n    // Sub-block level structure type\n    Sub: 'group',\n    // General inline level structure types\n    Lbl: null,\n    Span: null,\n    Em: null,\n    Strong: null,\n    Link: 'link',\n    Annot: 'note',\n    Form: 'form',\n    // Ruby and Warichu structure types\n    Ruby: null,\n    RB: null,\n    RT: null,\n    RP: null,\n    Warichu: null,\n    WT: null,\n    WP: null,\n    // List standard structure types\n    L: 'list',\n    LI: 'listitem',\n    LBody: null,\n    // Table standard structure types\n    Table: 'table',\n    TR: 'row',\n    TH: 'columnheader',\n    TD: 'cell',\n    THead: 'columnheader',\n    TBody: null,\n    TFoot: null,\n    // Standard structure type Caption\n    Caption: null,\n    // Standard structure type Figure\n    Figure: 'figure',\n    // Standard structure type Formula\n    Formula: null,\n    // standard structure type Artifact\n    Artifact: null,\n};\nexport const HEADING_PATTERN = /^H(\\d+)$/;\n", "import { HEADING_PATTERN, PDF_ROLE_TO_HTML_ROLE } from './constants.js';\nexport function isPdfRole(role) {\n    return role in PDF_ROLE_TO_HTML_ROLE;\n}\nexport function isStructTreeNode(node) {\n    return 'children' in node;\n}\nexport function isStructTreeNodeWithOnlyContentChild(node) {\n    if (!isStructTreeNode(node)) {\n        return false;\n    }\n    return node.children.length === 1 && 0 in node.children && 'id' in node.children[0];\n}\nexport function getRoleAttributes(node) {\n    const attributes = {};\n    if (isStructTreeNode(node)) {\n        const { role } = node;\n        const matches = role.match(HEADING_PATTERN);\n        if (matches) {\n            attributes.role = 'heading';\n            attributes['aria-level'] = Number(matches[1]);\n        }\n        else if (isPdfRole(role)) {\n            const htmlRole = PDF_ROLE_TO_HTML_ROLE[role];\n            if (htmlRole) {\n                attributes.role = htmlRole;\n            }\n        }\n    }\n    return attributes;\n}\nexport function getBaseAttributes(node) {\n    const attributes = {};\n    if (isStructTreeNode(node)) {\n        if (node.alt !== undefined) {\n            attributes['aria-label'] = node.alt;\n        }\n        if (node.lang !== undefined) {\n            attributes.lang = node.lang;\n        }\n        if (isStructTreeNodeWithOnlyContentChild(node)) {\n            const [child] = node.children;\n            if (child) {\n                const childAttributes = getBaseAttributes(child);\n                return {\n                    ...attributes,\n                    ...childAttributes,\n                };\n            }\n        }\n    }\n    else if ('id' in node) {\n        attributes['aria-owns'] = node.id;\n    }\n    return attributes;\n}\nexport function getAttributes(node) {\n    if (!node) {\n        return null;\n    }\n    return {\n        ...getRoleAttributes(node),\n        ...getBaseAttributes(node),\n    };\n}\n", "'use client';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef } from 'react';\nimport clsx from 'clsx';\nimport makeCancellable from 'make-cancellable-promise';\nimport * as pdfjs from 'pdfjs-dist';\nimport invariant from 'tiny-invariant';\nimport warning from 'warning';\nimport usePageContext from '../shared/hooks/usePageContext.js';\nimport useResolver from '../shared/hooks/useResolver.js';\nimport { cancelRunningTask, isAbortException } from '../shared/utils.js';\nfunction isTextItem(item) {\n    return 'str' in item;\n}\nconst BLOCKED_CUSTOM_TEXT_TAGS = new Set([\n    'base',\n    'embed',\n    'iframe',\n    'link',\n    'meta',\n    'object',\n    'script',\n    'style',\n    'template',\n]);\nconst URL_ATTRIBUTES = new Set(['action', 'formaction', 'href', 'poster', 'src', 'xlink:href']);\nfunction isDangerousUrl(value) {\n    let normalizedValue = '';\n    for (const char of value) {\n        const charCode = char.charCodeAt(0);\n        if (charCode <= 32 || charCode === 127) {\n            continue;\n        }\n        normalizedValue += char.toLowerCase();\n    }\n    return normalizedValue.startsWith('javascript:') || normalizedValue.startsWith('vbscript:');\n}\nfunction isElementNode(node) {\n    return node.nodeType === Node.ELEMENT_NODE;\n}\nfunction isHtmlElement(node) {\n    return isElementNode(node) && node instanceof HTMLElement;\n}\nfunction isBlockedCustomTextElement(node) {\n    return isHtmlElement(node) && BLOCKED_CUSTOM_TEXT_TAGS.has(node.tagName.toLowerCase());\n}\nfunction sanitizeCustomHtmlElement(element) {\n    const sanitizedElement = document.createElement(element.tagName.toLowerCase());\n    Array.from(element.attributes).forEach((attribute) => {\n        const attributeName = attribute.name.toLowerCase();\n        if (attributeName.startsWith('on') || attributeName === 'srcdoc') {\n            return;\n        }\n        if (URL_ATTRIBUTES.has(attributeName) && isDangerousUrl(attribute.value)) {\n            return;\n        }\n        sanitizedElement.setAttribute(attribute.name, attribute.value);\n    });\n    Array.from(element.childNodes).forEach((child) => {\n        sanitizedElement.append(sanitizeCustomTextNode(child));\n    });\n    return sanitizedElement;\n}\nfunction sanitizeCustomTextNode(node) {\n    var _a;\n    if (isHtmlElement(node) && !isBlockedCustomTextElement(node)) {\n        return sanitizeCustomHtmlElement(node);\n    }\n    return document.createTextNode((_a = node.textContent) !== null && _a !== void 0 ? _a : '');\n}\nfunction renderSafeCustomText(target, content) {\n    const template = document.createElement('template');\n    template.innerHTML = content;\n    const sanitizedFragment = document.createDocumentFragment();\n    Array.from(template.content.childNodes).forEach((child) => {\n        sanitizedFragment.append(sanitizeCustomTextNode(child));\n    });\n    target.replaceChildren(sanitizedFragment);\n}\nexport default function TextLayer() {\n    const pageContext = usePageContext();\n    invariant(pageContext, 'Unable to find Page context.');\n    const { customTextRenderer, onGetTextError, onGetTextSuccess, onRenderTextLayerError, onRenderTextLayerSuccess, page, pageIndex, pageNumber, rotate, scale, } = pageContext;\n    invariant(page, 'Attempted to load page text content, but no page was specified.');\n    const [textContentState, textContentDispatch] = useResolver();\n    const { value: textContent, error: textContentError } = textContentState;\n    const layerElement = useRef(null);\n    warning(Number.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    /**\n     * Called when a page text content is read successfully\n     */\n    function onLoadSuccess() {\n        if (!textContent) {\n            // Impossible, but TypeScript doesn't know that\n            return;\n        }\n        if (onGetTextSuccess) {\n            onGetTextSuccess(textContent);\n        }\n    }\n    /**\n     * Called when a page text content failed to read successfully\n     */\n    function onLoadError() {\n        if (!textContentError) {\n            // Impossible, but TypeScript doesn't know that\n            return;\n        }\n        warning(false, textContentError.toString());\n        if (onGetTextError) {\n            onGetTextError(textContentError);\n        }\n    }\n    // biome-ignore lint/correctness/useExhaustiveDependencies: useEffect intentionally triggered on page change\n    useEffect(function resetTextContent() {\n        textContentDispatch({ type: 'RESET' });\n    }, [page, textContentDispatch]);\n    useEffect(function loadTextContent() {\n        if (!page) {\n            return;\n        }\n        const cancellable = makeCancellable(page.getTextContent());\n        const runningTask = cancellable;\n        cancellable.promise\n            .then((nextTextContent) => {\n            textContentDispatch({ type: 'RESOLVE', value: nextTextContent });\n        })\n            .catch((error) => {\n            textContentDispatch({ type: 'REJECT', error });\n        });\n        return () => cancelRunningTask(runningTask);\n    }, [page, textContentDispatch]);\n    // biome-ignore lint/correctness/useExhaustiveDependencies: Omitted callbacks so they are not called every time they change\n    useEffect(() => {\n        if (textContent === undefined) {\n            return;\n        }\n        if (textContent === false) {\n            onLoadError();\n            return;\n        }\n        onLoadSuccess();\n    }, [textContent]);\n    /**\n     * Called when a text layer is rendered successfully\n     */\n    const onRenderSuccess = useCallback(() => {\n        if (onRenderTextLayerSuccess) {\n            onRenderTextLayerSuccess();\n        }\n    }, [onRenderTextLayerSuccess]);\n    /**\n     * Called when a text layer failed to render successfully\n     */\n    const onRenderError = useCallback((error) => {\n        if (isAbortException(error)) {\n            return;\n        }\n        warning(false, error.toString());\n        if (onRenderTextLayerError) {\n            onRenderTextLayerError(error);\n        }\n    }, [onRenderTextLayerError]);\n    function onMouseDown() {\n        const layer = layerElement.current;\n        if (!layer) {\n            return;\n        }\n        layer.classList.add('selecting');\n    }\n    function onMouseUp() {\n        const layer = layerElement.current;\n        if (!layer) {\n            return;\n        }\n        layer.classList.remove('selecting');\n    }\n    const viewport = useMemo(() => page.getViewport({ scale, rotation: rotate }), [page, rotate, scale]);\n    useLayoutEffect(function renderTextLayer() {\n        if (!page || !textContent) {\n            return;\n        }\n        const { current: layer } = layerElement;\n        if (!layer) {\n            return;\n        }\n        layer.innerHTML = '';\n        const textContentSource = page.streamTextContent({ includeMarkedContent: true });\n        const parameters = {\n            container: layer,\n            textContentSource,\n            viewport,\n        };\n        const cancellable = new pdfjs.TextLayer(parameters);\n        const runningTask = cancellable;\n        cancellable\n            .render()\n            .then(() => {\n            const end = document.createElement('div');\n            end.className = 'endOfContent';\n            layer.append(end);\n            const layerChildren = layer.querySelectorAll('[role=\"presentation\"]');\n            if (customTextRenderer) {\n                let index = 0;\n                textContent.items.forEach((item, itemIndex) => {\n                    if (!isTextItem(item)) {\n                        return;\n                    }\n                    const child = layerChildren[index];\n                    if (!child) {\n                        return;\n                    }\n                    const content = customTextRenderer({\n                        pageIndex,\n                        pageNumber,\n                        itemIndex,\n                        ...item,\n                    });\n                    renderSafeCustomText(child, content);\n                    index += item.str && item.hasEOL ? 2 : 1;\n                });\n            }\n            // Intentional immediate callback\n            onRenderSuccess();\n        })\n            .catch(onRenderError);\n        return () => cancelRunningTask(runningTask);\n    }, [\n        customTextRenderer,\n        onRenderError,\n        onRenderSuccess,\n        page,\n        pageIndex,\n        pageNumber,\n        textContent,\n        viewport,\n    ]);\n    return (\n    // biome-ignore lint/a11y/noStaticElementInteractions: False positive caused by non interactive wrapper listening for bubbling events\n    _jsx(\"div\", { className: clsx('react-pdf__Page__textContent', 'textLayer'), onMouseUp: onMouseUp, onMouseDown: onMouseDown, ref: layerElement }));\n}\n", "import * as pdfjs from 'pdfjs-dist';\nimport Document from './Document.js';\nimport Outline from './Outline.js';\nimport Page from './Page.js';\nimport PasswordResponses from './PasswordResponses.js';\nimport Thumbnail from './Thumbnail.js';\nimport useDocumentContext from './shared/hooks/useDocumentContext.js';\nimport useOutlineContext from './shared/hooks/useOutlineContext.js';\nimport usePageContext from './shared/hooks/usePageContext.js';\nimport { displayWorkerWarning } from './shared/utils.js';\ndisplayWorkerWarning();\npdfjs.GlobalWorkerOptions.workerSrc = 'pdf.worker.mjs';\nexport { pdfjs, Document, Outline, Page, Thumbnail, useDocumentContext, useOutlineContext, usePageContext, PasswordResponses, };\n", "/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n    for (var key in source) {\n      target[key] = source[key];\n    }\n  }\n  return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n  read: function (value) {\n    if (value[0] === '\"') {\n      value = value.slice(1, -1);\n    }\n    return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n  },\n  write: function (value) {\n    return encodeURIComponent(value).replace(\n      /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n      decodeURIComponent\n    )\n  }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n  function set (name, value, attributes) {\n    if (typeof document === 'undefined') {\n      return\n    }\n\n    attributes = assign({}, defaultAttributes, attributes);\n\n    if (typeof attributes.expires === 'number') {\n      attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n    }\n    if (attributes.expires) {\n      attributes.expires = attributes.expires.toUTCString();\n    }\n\n    name = encodeURIComponent(name)\n      .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n      .replace(/[()]/g, escape);\n\n    var stringifiedAttributes = '';\n    for (var attributeName in attributes) {\n      if (!attributes[attributeName]) {\n        continue\n      }\n\n      stringifiedAttributes += '; ' + attributeName;\n\n      if (attributes[attributeName] === true) {\n        continue\n      }\n\n      // Considers RFC 6265 section 5.2:\n      // ...\n      // 3.  If the remaining unparsed-attributes contains a %x3B (\";\")\n      //     character:\n      // Consume the characters of the unparsed-attributes up to,\n      // not including, the first %x3B (\";\") character.\n      // ...\n      stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n    }\n\n    return (document.cookie =\n      name + '=' + converter.write(value, name) + stringifiedAttributes)\n  }\n\n  function get (name) {\n    if (typeof document === 'undefined' || (arguments.length && !name)) {\n      return\n    }\n\n    // To prevent the for loop in the first place assign an empty array\n    // in case there are no cookies at all.\n    var cookies = document.cookie ? document.cookie.split('; ') : [];\n    var jar = {};\n    for (var i = 0; i < cookies.length; i++) {\n      var parts = cookies[i].split('=');\n      var value = parts.slice(1).join('=');\n\n      try {\n        var found = decodeURIComponent(parts[0]);\n        jar[found] = converter.read(value, found);\n\n        if (name === found) {\n          break\n        }\n      } catch (e) {}\n    }\n\n    return name ? jar[name] : jar\n  }\n\n  return Object.create(\n    {\n      set,\n      get,\n      remove: function (name, attributes) {\n        set(\n          name,\n          '',\n          assign({}, attributes, {\n            expires: -1\n          })\n        );\n      },\n      withAttributes: function (attributes) {\n        return init(this.converter, assign({}, this.attributes, attributes))\n      },\n      withConverter: function (converter) {\n        return init(assign({}, this.converter, converter), this.attributes)\n      }\n    },\n    {\n      attributes: { value: Object.freeze(defaultAttributes) },\n      converter: { value: Object.freeze(converter) }\n    }\n  )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n", "import * as React from 'react';\nimport { RouterProvider, createBrowserRouter } from 'react-router-dom';\nimport { useEffect, useState } from 'react';\nimport DocumentsRouter from './DocumentRouter';\nimport TenantMetersPage from './pages/LocalPage/TenantMetersPage/TenantMetersPage';\nimport MetersVenuesListPage from './pages/LocalPage/EmployeeMeters/MetersVenuesListPage/MetersVenuesListPage';\nimport EmployeeMetersListPage from './pages/LocalPage/EmployeeMeters/EmployeeMetersListPage/EmployeeMetersListPage';\nimport PeopleCountPage from './pages/PeopleCountPage/PeopleCountPage';\nimport ProfilePage from './pages/ProfilePage/ProfilePage';\nimport TicketsPage from './pages/TicketsPage/TicketsPage';\nimport TicketPage from './pages/TicketsPage/TicketPage/TicketPage';\nimport TicketForm from './pages/TicketsPage/TicketForm/TicketForm';\nimport UserPermissionsPage from './pages/UsersPermissionsPage/UserPermissionsPage';\nimport RolesPage from './pages/RolesPage/RolesPage';\nimport ResolutionsPage from './pages/ResolutionsPage/ResolutionsPage';\nimport ResolutionPage from './pages/ResolutionsPage/ResolutionPage/ResolutionPage';\nimport ResolutionAttachmentPreview from './pages/ResolutionsPage/ResolutionAttachmentPreview/ResolutionAttachmentPreview';\nimport AnnouncementsPage from './pages/AnnouncementsPage/AnnouncementsPage';\nimport AnnouncementPage from './pages/AnnouncementsPage/AnnouncementPage/AnnouncementPage';\nimport AnnouncementForm from './pages/AnnouncementsPage/AnnouncementForm/AnnouncementForm';\nimport AnnouncementChangePage from './pages/AnnouncementsPage/AnnouncementChangePage/AnnouncementChangePage';\nimport SettlementsPage from './pages/SettlementsPage/SettlementsPage';\nimport TasksPage from './pages/TasksPage/TasksPage';\nimport TaskFormPage from './pages/TasksPage/TaskFormPage/TaskFormPage';\nimport TaskPage from './pages/TasksPage/TaskPage/TaskPage';\nimport UsersPage from './pages/UsersPage/UsersPage';\nimport NewUserPage from './pages/UsersPage/NewUserPage/NewUserPage';\nimport TasksParametersPage from './pages/ParametersPage/TasksParametersPage/TasksParametersPage';\nimport TicketsParametersPage from './pages/ParametersPage/TicketsParametersPage/TicketsParametersPage';\nimport SettlementsVenueListPage from './pages/SettlementsPage/SettlementsVenueListPage/SettlementsVenueListPage';\nimport UserPage from './pages/UsersPage/UserPage/UserPage';\nimport CompanyDetailsPage from './pages/SettingsPage/SettingsPage';\nimport DashboardPage from './pages/DashboardPage/DashboardPage';\nimport StatusesPage from './pages/ParametersPage/StatusesPage/StatusesPage';\nimport StatusEditPage from './pages/ParametersPage/StatusEditPage/StatusEditPage';\nimport JournalsPage from './pages/ParametersPage/JournalsPage/JournalsPage';\nimport JournalPage from './pages/ParametersPage/JournalEditPage/JournalEditPage';\nimport JournalFormPage from './pages/ParametersPage/JournalFormPage/JournalFormPage';\nimport KsefJournalsPage from './pages/ParametersPage/KsefJournalsPage/KsefJournalsPage';\nimport KsefJournalEditPage from './pages/ParametersPage/KsefJournalEditPage/KsefJournalEditPage';\nimport DocumentsPage from './pages/DocumentsPage/DocumentsPage';\nimport KsefInvoicesPage from './pages/DocumentsPage/KsefInvoicesPage/KsefInvoicesPage';\nimport KsefInvoicePage from './pages/DocumentsPage/KsefInvoicePage/KsefInvoicePage';\nimport DocumentFormPage from './pages/DocumentsPage/DocumentForm/DocumentFormPage';\nimport DocumentPage from './pages/DocumentsPage/DocumentPage';\nimport DocumentsParametersPage from './pages/ParametersPage/DocumentsParametersPage/DocumentsParametersPage';\nimport PasswordChangeRequiredPage from './pages/PasswordChangeRequiredPage/PasswordChangeRequiredPage';\nimport NotificationsPage from './pages/NotificationsPage/NotificationsPage';\nimport { appApi } from './api/appApi';\nimport { useAppDispatch } from './hooks/reduxHooks';\nimport { getAccessToken, isTokenExpired, setAccessToken } from '../utils/accessToken';\n\nexport const routes = [\n  {\n    path: '/',\n    element: (\n      <DashboardPage />\n    ),\n  },\n  {\n    path: '/liczniki/historia',\n    element: (\n      <TenantMetersPage tab=\"history\" />\n    ),\n  },\n  {\n    path: '/liczniki',\n    element: (\n      <TenantMetersPage tab=\"list\" />\n    ),\n  },\n  {\n    path: '/liczniki/lokale',\n    element: (\n      <MetersVenuesListPage />\n    ),\n  },\n  {\n    path: '/liczniki/lokale/:id/do-odczytu',\n    element: (\n      <EmployeeMetersListPage />\n    ),\n  },\n  {\n    path: '/liczniki/lokale/:id',\n    element: (\n      <EmployeeMetersListPage />\n    ),\n  },\n  {\n    path: '/liczba-osob',\n    element: (\n      <PeopleCountPage />\n    ),\n  },\n  {\n    path: '/aktualnosci',\n    element: (\n      <AnnouncementsPage />\n    ),\n  },\n  {\n    path: '/aktualnosci/:id',\n    element: (\n      <AnnouncementPage />\n    ),\n  },\n  {\n    path: '/aktualnosci/:id/edytuj',\n    element: (\n      <AnnouncementChangePage />\n    ),\n  },\n  {\n    path: '/aktualnosci/archiwum',\n    element: (\n      <AnnouncementsPage archived />\n    ),\n  },\n  {\n    path: '/aktualnosci/nowe',\n    element: (\n      <AnnouncementForm />\n    ),\n  },\n  {\n    path: '/dokumenty',\n    element: (\n      <DocumentsPage documentStatus=\"open\"/>\n    ),\n  },\n  {\n    path: '/dokumenty/:id/otwarte',\n    element: (\n      <DocumentsPage documentStatus=\"open\"/>\n    ),\n  },\n  {\n    path: '/dokumenty/:id/w-trakcie',\n    element: (\n      <DocumentsPage documentStatus=\"mine_in_progress\"/>\n    ),\n  },  \n  {\n    path: '/dokumenty/:id/nieprzypisane',\n    element: (\n      <DocumentsPage documentStatus=\"unassigned\"/>\n    ),\n  },\n  {\n    path: '/dokumenty/:id/moje',\n    element: (\n      <DocumentsPage documentStatus=\"created_by_me\"/>\n    ),\n  },\n  {\n    path: '/dokumenty/moje',\n    element: (\n      <DocumentsPage documentStatus=\"created_by_me\"/>\n    ),\n  },\n    {\n    path: '/dokumenty/otwarte',\n    element: (\n      <DocumentsPage documentStatus=\"open\"/>\n    ),\n  },\n  {\n    path: '/dokumenty/w-trakcie',\n    element: (\n      <DocumentsPage documentStatus=\"mine_in_progress\"/>\n    ),\n  },  \n  {\n    path: '/dokumenty/nieprzypisane',\n    element: (\n      <DocumentsPage documentStatus=\"unassigned\"/>\n    ),\n  },\n  {\n    path: '/dokumenty/nowy',\n    element: (\n      <DocumentFormPage documentType=\"all\" />\n    ),\n  },\n  {\n    path: '/dokumenty/przychodzace/nowy',\n    element: (\n      <DocumentFormPage documentType=\"incoming\"/>\n    ),\n  },\n  {\n    path: '/dokumenty/wychodzace/nowy',\n    element: (\n      <DocumentFormPage documentType=\"outgoing\"/>\n    ),\n  },\n  {\n    path: '/dokumenty/ksef',\n    element: (\n      <KsefInvoicesPage documentStatus=\"open\" />\n    ),\n  },\n  {\n    path: '/dokumenty/ksef/w-trakcie',\n    element: (\n      <KsefInvoicesPage documentStatus=\"mine_in_progress\" />\n    ),\n  },\n  {\n    path: '/dokumenty/ksef/nieprzypisane',\n    element: (\n      <KsefInvoicesPage documentStatus=\"unassigned\" />\n    ),\n  },\n  {\n    path: '/dokumenty/ksef/:externalId',\n    element: (\n      <KsefInvoicePage />\n    ),\n  },\n  {\n    path: '/dokumenty/:id',\n    element: (\n      <DocumentsRouter />\n    ),\n  },\n  {\n    path: '/dokumenty/nowe-zadanie/:id',\n    element: (\n      <TaskFormPage taskType=\"document\" />\n    ),\n  },\n  {\n    path: '/zgloszenia',\n    element: (\n      <TicketsPage />\n    ),\n  },\n  {\n    path: '/zgloszenia/moje',\n    element: (\n      <TicketsPage tab=\"createdByMe\" />\n    ),\n  },\n  {\n    path: '/zgloszenia/w-trakcie',\n    element: (\n      <TicketsPage tab=\"mineInProgress\" />\n    ),\n  },\n  {\n    path: '/zgloszenia/nieprzypisane',\n    element: (\n      <TicketsPage tab=\"unassigned\" />\n    ),\n  },\n  {\n    path: '/zgloszenia/:id',\n    element: (\n      <TicketPage />\n    ),\n  },\n  {\n    path: '/zgloszenia/nowe',\n    element: (\n      <TicketForm />\n    ),\n  },\n  {\n    path: '/zgloszenia/nowe-zadanie/:id',\n    element: (\n      <TaskFormPage taskType=\"ticket\" />\n    ),\n  },\n  {\n    path: '/zadania/',\n    element: (\n      <TasksPage />\n    ),\n  },\n  {\n    path: '/zadania/nieprzypisane',\n    element: (\n      <TasksPage tab=\"unassigned\" />\n    ),\n  },\n  {\n    path: '/zadania/moje',\n    element: (\n      <TasksPage tab=\"createdByMe\" />\n    ),\n  },\n  {\n    path: '/zadania/w-trakcie',\n    element: (\n      <TasksPage tab=\"mineInProgress\" />\n    ),\n  },\n  {\n    path: '/zadania/:id',\n    element: (\n      <TaskPage />\n    ),\n  },\n  {\n    path: '/profil/wyglad',\n    element: (\n      <ProfilePage tab=\"settings\" />\n    ),\n  },\n  {\n    path: '/profil/rejestr_zdarzen',\n    element: (\n      <ProfilePage tab=\"activityLog\" />\n    ),\n  },\n  {\n    path: '/profil/powiadomienia',\n    element: (\n      <ProfilePage tab=\"notificationSetting\" />\n    ),\n  },\n  {\n    path: '/profil',\n    element: (\n      <ProfilePage tab=\"profile\" />\n    ),\n  },\n  {\n    path: '/profil/zmien_haslo',\n    element: (\n      <PasswordChangeRequiredPage />\n    ),\n  },\n  {\n    path: '/uchwaly',\n    element: (\n      <ResolutionsPage />\n    ),\n  },\n  {\n    path: '/uchwaly/aktywne',\n    element: (\n      <ResolutionsPage active=\"true\" />\n    ),\n  },\n  {\n    path: '/uchwaly/zamkniete',\n    element: (\n      <ResolutionsPage active=\"false\" />\n    ),\n  },\n  {\n    path: '/uchwaly/:id',\n    element: (\n      <ResolutionPage />\n    ),\n  },\n  {\n    path: '/uchwaly/:id/akceptuj/:index',\n    element: (\n      <ResolutionAttachmentPreview />\n    ),\n  },\n  {\n    path: '/uzytkownicy',\n    element: (\n      <UsersPage tab=\"all\" />\n    ),\n  },\n  {\n    path: '/uzytkownicy/pracownicy',\n    element: (\n      <UsersPage tab=\"workers\" />\n    ),\n  },\n  {\n    path: '/uzytkownicy/nowy',\n    element: (\n      <NewUserPage />\n    ),\n  },\n  {\n    path: '/uzytkownicy/:id',\n    element: (\n      <UserPage />\n    ),\n  },\n  {\n    path: '/uzytkownicy/rejestr_zdarzen',\n    element: (\n      <UsersPage tab=\"activityLog\" />\n    ),\n  },\n  {\n    path: '/uprawnienia/role/nowa_rola',\n    element: (\n      <RolesPage newRole />\n    ),\n  },\n  {\n    path: '/uprawnienia/role/:id?',\n    element: (\n      <RolesPage />\n    ),\n  },\n  {\n    path: '/uprawnienia/:id',\n    element: (\n      <UserPermissionsPage />\n    ),\n  },\n  {\n    path: '/rozrachunki/lokale',\n    element: (\n      <SettlementsVenueListPage tab=\"all\" />\n    ),\n  },\n  {\n    path: '/rozrachunki/lokale/aktywne',\n    element: (\n      <SettlementsVenueListPage tab=\"active\" />\n    ),\n  },\n  {\n    path: '/rozrachunki/platnosci',\n    element: (\n      <SettlementsPage tab=\"payments\" />\n    ),\n  },\n  {\n    path: '/rozrachunki/historia',\n    element: (\n      <SettlementsPage tab=\"history\" />\n    ),\n  },\n  {\n    path: '/rozrachunki/analiza_salda',\n    element: (\n      <SettlementsPage tab=\"balance\" />\n    ),\n  },\n  {\n    path: '/rozrachunki/analiza_salda/:year',\n    element: (\n      <SettlementsPage tab=\"balance\" />\n    ),\n  },\n  {\n    path: '/rozrachunki/analiza_salda/:year/:month',\n    element: (\n      <SettlementsPage tab=\"balance\" />\n    ),\n  },\n  {\n    path: '/rozrachunki/analiza_salda/:year/:month/:titleId',\n    element: (\n      <SettlementsPage tab=\"balance\" />\n    ),\n  },\n  {\n    path: '/parametry/statusy',\n    element: (\n      <StatusesPage />\n    ),\n  },\n  {\n    path: '/parametry/statusy/:id',\n    element: (\n      <StatusEditPage />\n    ),\n  },\n  {\n    path: '/parametry/dzienniki',\n    element: (\n      <JournalsPage />\n    ),\n  },\n  {\n    path: '/parametry/dzienniki/nowy',\n    element: (\n      <JournalFormPage />\n    ),\n  },\n  {\n    path: '/parametry/dzienniki/:id',\n    element: (\n      <JournalPage />\n    ),\n  },\n  {\n    path: '/parametry/dzienniki_ksef',\n    element: (\n      <KsefJournalsPage />\n    ),\n  },\n  {\n    path: '/parametry/dzienniki_ksef/:id',\n    element: (\n      <KsefJournalEditPage />\n    ),\n  },\n  {\n    path: '/parametry/zadania',\n    element: (\n      <TasksParametersPage />\n    ),\n  },\n  {\n    path: '/parametry/zgloszenia',\n    element: (\n      <TicketsParametersPage />\n    ),\n  },\n  {\n    path: '/parametry/dokumenty',\n    element: (\n      <DocumentsParametersPage />\n    ),\n  },\n  {\n    path: '/ustawienia/dane',\n    element: (\n      <CompanyDetailsPage tab=\"companyDetails\" />\n    ),\n  },\n  {\n    path: '/ustawienia/dane_podatkowe',\n    element: (\n      <CompanyDetailsPage tab=\"companyTaxDetails\" />\n    ),\n  },\n  {\n    path: '/ustawienia/poczta',\n    element: (\n      <CompanyDetailsPage tab=\"MailServerConfig\" />\n    ),\n  },\n  {\n    path: '/ustawienia/powiadomienia',\n    element: (\n      <CompanyDetailsPage tab=\"NotificationSetting\" />\n    ),\n  },\n  {\n    path: '/powiadomienia',\n    element: (\n      <NotificationsPage />\n    ),\n  },\n];\n\nconst router = createBrowserRouter(routes);\n\nconst AppRouter = () => {\n  const dispatch = useAppDispatch();\n  // Guards against rendering routes (and the user account data they fetch) until the\n  // access token refresh has resolved, to avoid a race condition where\n  // `users/accounts/me?with_tenant` is requested before `users/accounts/access_token`.\n  const [accessTokenCheckStarted, setAccessTokenCheckStarted] = useState(false);\n\n  const refreshAccessToken = () => {\n    const token = getAccessToken();\n\n    // Refresh token if it doesn't exist or is expired\n    if (!token || isTokenExpired(token)) {\n      return dispatch(appApi.endpoints.getAccessToken.initiate(undefined, { forceRefetch: true }))\n        .unwrap()\n        .then((accessToken) => {\n          setAccessToken(accessToken);\n        })\n        .catch((error) => {\n          console.error('AppRouter: Failed to refresh access token:', error);\n        });\n    }\n\n    return Promise.resolve();\n  };\n\n  const onFocus = () => {\n    // Wait for the access token refresh to finish before the user account query so that\n    // `access_token` always resolves ahead of `me?with_tenant`.\n    refreshAccessToken().then(() => {\n      dispatch(appApi.endpoints.getFullUserAccount.initiate(undefined, { forceRefetch: true }));\n    });\n  };\n\n  useEffect(() => {\n    // Wait for the access token refresh to finish on mount before allowing the routes\n    // (and the user account queries they contain) to render.\n    refreshAccessToken().then(() => {\n      setAccessTokenCheckStarted(true);\n    });\n\n    window.addEventListener('focus', onFocus);\n    return () => {\n      window.removeEventListener('focus', onFocus);\n    };\n  }, []);\n\n  if (!accessTokenCheckStarted) {\n    return null;\n  }\n\n  return (\n    <RouterProvider router={router} />\n  );\n};\n\nexport default AppRouter;\n", "////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n  /**\n   * A POP indicates a change to an arbitrary index in the history stack, such\n   * as a back or forward navigation. It does not describe the direction of the\n   * navigation, only that the current index changed.\n   *\n   * Note: This is the default action for newly created history objects.\n   */\n  Pop = \"POP\",\n\n  /**\n   * A PUSH indicates a new entry being added to the history stack, such as when\n   * a link is clicked and a new page loads. When this happens, all subsequent\n   * entries in the stack are lost.\n   */\n  Push = \"PUSH\",\n\n  /**\n   * A REPLACE indicates the entry at the current index in the history stack\n   * being replaced by a new one.\n   */\n  Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n  /**\n   * A URL pathname, beginning with a /.\n   */\n  pathname: string;\n\n  /**\n   * A URL search string, beginning with a ?.\n   */\n  search: string;\n\n  /**\n   * A URL fragment identifier, beginning with a #.\n   */\n  hash: string;\n}\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n  /**\n   * A value of arbitrary data associated with this location.\n   */\n  state: any;\n\n  /**\n   * A unique string associated with this location. May be used to safely store\n   * and retrieve data in some other storage API, like `localStorage`.\n   *\n   * Note: This value is always \"default\" on the initial location.\n   */\n  key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n  /**\n   * The action that triggered the change.\n   */\n  action: Action;\n\n  /**\n   * The new location.\n   */\n  location: Location;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n  (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. May be either a URL or the pieces of a\n * URL path.\n */\nexport type To = string | Partial<Path>;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n  /**\n   * The last action that modified the current location. This will always be\n   * Action.Pop when a history instance is first created. This value is mutable.\n   */\n  readonly action: Action;\n\n  /**\n   * The current location. This value is mutable.\n   */\n  readonly location: Location;\n\n  /**\n   * Returns a valid href for the given `to` value that may be used as\n   * the value of an <a href> attribute.\n   *\n   * @param to - The destination URL\n   */\n  createHref(to: To): string;\n\n  /**\n   * Encode a location the same way window.history would do (no-op for memory\n   * history) so we ensure our PUSH/REPLACE navigations for data routers\n   * behave the same as POP\n   *\n   * @param to Unencoded path\n   */\n  encodeLocation(to: To): Path;\n\n  /**\n   * Pushes a new location onto the history stack, increasing its length by one.\n   * If there were any entries in the stack after the current one, they are\n   * lost.\n   *\n   * @param to - The new URL\n   * @param state - Data to associate with the new location\n   */\n  push(to: To, state?: any): void;\n\n  /**\n   * Replaces the current location in the history stack with a new one.  The\n   * location that was replaced will no longer be available.\n   *\n   * @param to - The new URL\n   * @param state - Data to associate with the new location\n   */\n  replace(to: To, state?: any): void;\n\n  /**\n   * Navigates `n` entries backward/forward in the history stack relative to the\n   * current index. For example, a \"back\" navigation would use go(-1).\n   *\n   * @param delta - The delta in the stack index\n   */\n  go(delta: number): void;\n\n  /**\n   * Sets up a listener that will be called whenever the current location\n   * changes.\n   *\n   * @param listener - A function that will be called when the location changes\n   * @returns unlisten - A function that may be used to stop listening\n   */\n  listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n  usr: any;\n  key?: string;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial<Location>;\n\nexport type MemoryHistoryOptions = {\n  initialEntries?: InitialEntry[];\n  initialIndex?: number;\n  v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n  /**\n   * The current index in the history stack.\n   */\n  readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n  options: MemoryHistoryOptions = {}\n): MemoryHistory {\n  let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n  let entries: Location[]; // Declare so we can access from createMemoryLocation\n  entries = initialEntries.map((entry, index) =>\n    createMemoryLocation(\n      entry,\n      typeof entry === \"string\" ? null : entry.state,\n      index === 0 ? \"default\" : undefined\n    )\n  );\n  let index = clampIndex(\n    initialIndex == null ? entries.length - 1 : initialIndex\n  );\n  let action = Action.Pop;\n  let listener: Listener | null = null;\n\n  function clampIndex(n: number): number {\n    return Math.min(Math.max(n, 0), entries.length - 1);\n  }\n  function getCurrentLocation(): Location {\n    return entries[index];\n  }\n  function createMemoryLocation(\n    to: To,\n    state: any = null,\n    key?: string\n  ): Location {\n    let location = createLocation(\n      entries ? getCurrentLocation().pathname : \"/\",\n      to,\n      state,\n      key\n    );\n    warning(\n      location.pathname.charAt(0) === \"/\",\n      `relative pathnames are not supported in memory history: ${JSON.stringify(\n        to\n      )}`\n    );\n    return location;\n  }\n\n  let history: MemoryHistory = {\n    get index() {\n      return index;\n    },\n    get action() {\n      return action;\n    },\n    get location() {\n      return getCurrentLocation();\n    },\n    createHref(to) {\n      return typeof to === \"string\" ? to : createPath(to);\n    },\n    encodeLocation(to: To) {\n      let path = typeof to === \"string\" ? parsePath(to) : to;\n      return {\n        pathname: path.pathname || \"\",\n        search: path.search || \"\",\n        hash: path.hash || \"\",\n      };\n    },\n    push(to, state) {\n      action = Action.Push;\n      let nextLocation = createMemoryLocation(to, state);\n      index += 1;\n      entries.splice(index, entries.length, nextLocation);\n      if (v5Compat && listener) {\n        listener({ action, location: nextLocation });\n      }\n    },\n    replace(to, state) {\n      action = Action.Replace;\n      let nextLocation = createMemoryLocation(to, state);\n      entries[index] = nextLocation;\n      if (v5Compat && listener) {\n        listener({ action, location: nextLocation });\n      }\n    },\n    go(delta) {\n      action = Action.Pop;\n      index = clampIndex(index + delta);\n      if (listener) {\n        listener({ action, location: getCurrentLocation() });\n      }\n    },\n    listen(fn: Listener) {\n      listener = fn;\n      return () => {\n        listener = null;\n      };\n    },\n  };\n\n  return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n  options: BrowserHistoryOptions = {}\n): BrowserHistory {\n  function createBrowserLocation(\n    window: Window,\n    globalHistory: Window[\"history\"]\n  ) {\n    let { pathname, search, hash } = window.location;\n    return createLocation(\n      \"\",\n      { pathname, search, hash },\n      // state defaults to `null` because `window.history.state` does\n      (globalHistory.state && globalHistory.state.usr) || null,\n      (globalHistory.state && globalHistory.state.key) || \"default\"\n    );\n  }\n\n  function createBrowserHref(window: Window, to: To) {\n    return typeof to === \"string\" ? to : createPath(to);\n  }\n\n  return getUrlBasedHistory(\n    createBrowserLocation,\n    createBrowserHref,\n    null,\n    options\n  );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n  options: HashHistoryOptions = {}\n): HashHistory {\n  function createHashLocation(\n    window: Window,\n    globalHistory: Window[\"history\"]\n  ) {\n    let {\n      pathname = \"/\",\n      search = \"\",\n      hash = \"\",\n    } = parsePath(window.location.hash.substr(1));\n    return createLocation(\n      \"\",\n      { pathname, search, hash },\n      // state defaults to `null` because `window.history.state` does\n      (globalHistory.state && globalHistory.state.usr) || null,\n      (globalHistory.state && globalHistory.state.key) || \"default\"\n    );\n  }\n\n  function createHashHref(window: Window, to: To) {\n    let base = window.document.querySelector(\"base\");\n    let href = \"\";\n\n    if (base && base.getAttribute(\"href\")) {\n      let url = window.location.href;\n      let hashIndex = url.indexOf(\"#\");\n      href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n    }\n\n    return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n  }\n\n  function validateHashLocation(location: Location, to: To) {\n    warning(\n      location.pathname.charAt(0) === \"/\",\n      `relative pathnames are not supported in hash history.push(${JSON.stringify(\n        to\n      )})`\n    );\n  }\n\n  return getUrlBasedHistory(\n    createHashLocation,\n    createHashHref,\n    validateHashLocation,\n    options\n  );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant<T>(\n  value: T | null | undefined,\n  message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n  if (value === false || value === null || typeof value === \"undefined\") {\n    throw new Error(message);\n  }\n}\n\nfunction warning(cond: any, message: string) {\n  if (!cond) {\n    // eslint-disable-next-line no-console\n    if (typeof console !== \"undefined\") console.warn(message);\n\n    try {\n      // Welcome to debugging history!\n      //\n      // This error is thrown as a convenience so you can more easily\n      // find the source for a warning that appears in the console by\n      // enabling \"pause on exceptions\" in your JavaScript debugger.\n      throw new Error(message);\n      // eslint-disable-next-line no-empty\n    } catch (e) {}\n  }\n}\n\nfunction createKey() {\n  return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location): HistoryState {\n  return {\n    usr: location.state,\n    key: location.key,\n  };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n  current: string | Location,\n  to: To,\n  state: any = null,\n  key?: string\n): Readonly<Location> {\n  let location: Readonly<Location> = {\n    pathname: typeof current === \"string\" ? current : current.pathname,\n    search: \"\",\n    hash: \"\",\n    ...(typeof to === \"string\" ? parsePath(to) : to),\n    state,\n    // TODO: This could be cleaned up.  push/replace should probably just take\n    // full Locations now and avoid the need to run through this flow at all\n    // But that's a pretty big refactor to the current test suite so going to\n    // keep as is for the time being and just let any incoming keys take precedence\n    key: (to && (to as Location).key) || key || createKey(),\n  };\n  return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n  pathname = \"/\",\n  search = \"\",\n  hash = \"\",\n}: Partial<Path>) {\n  if (search && search !== \"?\")\n    pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n  if (hash && hash !== \"#\")\n    pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n  return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial<Path> {\n  let parsedPath: Partial<Path> = {};\n\n  if (path) {\n    let hashIndex = path.indexOf(\"#\");\n    if (hashIndex >= 0) {\n      parsedPath.hash = path.substr(hashIndex);\n      path = path.substr(0, hashIndex);\n    }\n\n    let searchIndex = path.indexOf(\"?\");\n    if (searchIndex >= 0) {\n      parsedPath.search = path.substr(searchIndex);\n      path = path.substr(0, searchIndex);\n    }\n\n    if (path) {\n      parsedPath.pathname = path;\n    }\n  }\n\n  return parsedPath;\n}\n\nexport function createClientSideURL(location: Location | string): URL {\n  // window.location.origin is \"null\" (the literal string value) in Firefox\n  // under certain conditions, notably when serving from a local HTML file\n  // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n  let base =\n    typeof window !== \"undefined\" &&\n    typeof window.location !== \"undefined\" &&\n    window.location.origin !== \"null\"\n      ? window.location.origin\n      : window.location.href;\n  let href = typeof location === \"string\" ? location : createPath(location);\n  invariant(\n    base,\n    `No window.location.(origin|href) available to create URL for href: ${href}`\n  );\n  return new URL(href, base);\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n  window?: Window;\n  v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n  getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n  createHref: (window: Window, to: To) => string,\n  validateLocation: ((location: Location, to: To) => void) | null,\n  options: UrlHistoryOptions = {}\n): UrlHistory {\n  let { window = document.defaultView!, v5Compat = false } = options;\n  let globalHistory = window.history;\n  let action = Action.Pop;\n  let listener: Listener | null = null;\n\n  function handlePop() {\n    action = Action.Pop;\n    if (listener) {\n      listener({ action, location: history.location });\n    }\n  }\n\n  function push(to: To, state?: any) {\n    action = Action.Push;\n    let location = createLocation(history.location, to, state);\n    if (validateLocation) validateLocation(location, to);\n\n    let historyState = getHistoryState(location);\n    let url = history.createHref(location);\n\n    // try...catch because iOS limits us to 100 pushState calls :/\n    try {\n      globalHistory.pushState(historyState, \"\", url);\n    } catch (error) {\n      // They are going to lose state here, but there is no real\n      // way to warn them about it since the page will refresh...\n      window.location.assign(url);\n    }\n\n    if (v5Compat && listener) {\n      listener({ action, location: history.location });\n    }\n  }\n\n  function replace(to: To, state?: any) {\n    action = Action.Replace;\n    let location = createLocation(history.location, to, state);\n    if (validateLocation) validateLocation(location, to);\n\n    let historyState = getHistoryState(location);\n    let url = history.createHref(location);\n    globalHistory.replaceState(historyState, \"\", url);\n\n    if (v5Compat && listener) {\n      listener({ action, location: history.location });\n    }\n  }\n\n  let history: History = {\n    get action() {\n      return action;\n    },\n    get location() {\n      return getLocation(window, globalHistory);\n    },\n    listen(fn: Listener) {\n      if (listener) {\n        throw new Error(\"A history only accepts one active listener\");\n      }\n      window.addEventListener(PopStateEventType, handlePop);\n      listener = fn;\n\n      return () => {\n        window.removeEventListener(PopStateEventType, handlePop);\n        listener = null;\n      };\n    },\n    createHref(to) {\n      return createHref(window, to);\n    },\n    encodeLocation(to) {\n      // Encode a Location the same way window.location would\n      let url = createClientSideURL(\n        typeof to === \"string\" ? to : createPath(to)\n      );\n      return {\n        pathname: url.pathname,\n        search: url.search,\n        hash: url.hash,\n      };\n    },\n    push,\n    replace,\n    go(n) {\n      return globalHistory.go(n);\n    },\n  };\n\n  return history;\n}\n\n//#endregion\n", "import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n  [routeId: string]: any;\n}\n\nexport enum ResultType {\n  data = \"data\",\n  deferred = \"deferred\",\n  redirect = \"redirect\",\n  error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n  type: ResultType.data;\n  data: any;\n  statusCode?: number;\n  headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n  type: ResultType.deferred;\n  deferredData: DeferredData;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n  type: ResultType.redirect;\n  status: number;\n  location: string;\n  revalidate: boolean;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n  type: ResultType.error;\n  error: any;\n  headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n  | SuccessResult\n  | DeferredResult\n  | RedirectResult\n  | ErrorResult;\n\nexport type MutationFormMethod = \"post\" | \"put\" | \"patch\" | \"delete\";\nexport type FormMethod = \"get\" | MutationFormMethod;\n\nexport type FormEncType =\n  | \"application/x-www-form-urlencoded\"\n  | \"multipart/form-data\";\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport interface Submission {\n  formMethod: FormMethod;\n  formAction: string;\n  formEncType: FormEncType;\n  formData: FormData;\n}\n\n/**\n * @private\n * Arguments passed to route loader/action functions.  Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n  request: Request;\n  params: Params;\n  context?: any;\n}\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Route loader function signature\n */\nexport interface LoaderFunction {\n  (args: LoaderFunctionArgs): Promise<Response> | Response | Promise<any> | any;\n}\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n  (args: ActionFunctionArgs): Promise<Response> | Response | Promise<any> | any;\n}\n\n/**\n * Route shouldRevalidate function signature.  This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments.  It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n  (args: {\n    currentUrl: URL;\n    currentParams: AgnosticDataRouteMatch[\"params\"];\n    nextUrl: URL;\n    nextParams: AgnosticDataRouteMatch[\"params\"];\n    formMethod?: Submission[\"formMethod\"];\n    formAction?: Submission[\"formAction\"];\n    formEncType?: Submission[\"formEncType\"];\n    formData?: Submission[\"formData\"];\n    actionResult?: DataResult;\n    defaultShouldRevalidate: boolean;\n  }): boolean;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n  caseSensitive?: boolean;\n  path?: string;\n  id?: string;\n  loader?: LoaderFunction;\n  action?: ActionFunction;\n  hasErrorBoundary?: boolean;\n  shouldRevalidate?: ShouldRevalidateFunction;\n  handle?: any;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n  children?: undefined;\n  index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n  children?: AgnosticRouteObject[];\n  index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n  | AgnosticIndexRouteObject\n  | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n  id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n  children?: AgnosticDataRouteObject[];\n  id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n  | AgnosticDataIndexRouteObject\n  | AgnosticDataNonIndexRouteObject;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam<Path extends string> =\n  // split path into individual path segments\n  Path extends `${infer L}/${infer R}`\n    ? _PathParam<L> | _PathParam<R>\n    : // find params after `:`\n    Path extends `:${infer Param}`\n    ? Param\n    : // otherwise, there aren't any params present\n      never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\ntype PathParam<Path extends string> =\n  // check if path is just a wildcard\n  Path extends \"*\"\n    ? \"*\"\n    : // look for wildcard at the end of the path\n    Path extends `${infer Rest}/*`\n    ? \"*\" | _PathParam<Rest>\n    : // look for params in the absence of wildcards\n      _PathParam<Path>;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey<Segment extends string> =\n  // if could not find path params, fallback to `string`\n  [PathParam<Segment>] extends [never] ? string : PathParam<Segment>;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params<Key extends string = string> = {\n  readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n  ParamKey extends string = string,\n  RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n  /**\n   * The names and values of dynamic parameters in the URL.\n   */\n  params: Params<ParamKey>;\n  /**\n   * The portion of the URL pathname that was matched.\n   */\n  pathname: string;\n  /**\n   * The portion of the URL pathname that was matched before child routes.\n   */\n  pathnameBase: string;\n  /**\n   * The route object that was used to match.\n   */\n  route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n  extends AgnosticRouteMatch<string, AgnosticDataRouteObject> {}\n\nfunction isIndexRoute(\n  route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n  return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n  routes: AgnosticRouteObject[],\n  parentPath: number[] = [],\n  allIds: Set<string> = new Set<string>()\n): AgnosticDataRouteObject[] {\n  return routes.map((route, index) => {\n    let treePath = [...parentPath, index];\n    let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n    invariant(\n      route.index !== true || !route.children,\n      `Cannot specify children on an index route`\n    );\n    invariant(\n      !allIds.has(id),\n      `Found a route id collision on id \"${id}\".  Route ` +\n        \"id's must be globally unique within Data Router usages\"\n    );\n    allIds.add(id);\n\n    if (isIndexRoute(route)) {\n      let indexRoute: AgnosticDataIndexRouteObject = { ...route, id };\n      return indexRoute;\n    } else {\n      let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n        ...route,\n        id,\n        children: route.children\n          ? convertRoutesToDataRoutes(route.children, treePath, allIds)\n          : undefined,\n      };\n      return pathOrLayoutRoute;\n    }\n  });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n  RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n  routes: RouteObjectType[],\n  locationArg: Partial<Location> | string,\n  basename = \"/\"\n): AgnosticRouteMatch<string, RouteObjectType>[] | null {\n  let location =\n    typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n  let pathname = stripBasename(location.pathname || \"/\", basename);\n\n  if (pathname == null) {\n    return null;\n  }\n\n  let branches = flattenRoutes(routes);\n  rankRouteBranches(branches);\n\n  let matches = null;\n  for (let i = 0; matches == null && i < branches.length; ++i) {\n    matches = matchRouteBranch<string, RouteObjectType>(\n      branches[i],\n      // Incoming pathnames are generally encoded from either window.location\n      // or from router.navigate, but we want to match against the unencoded\n      // paths in the route definitions.  Memory router locations won't be\n      // encoded here but there also shouldn't be anything to decode so this\n      // should be a safe operation.  This avoids needing matchRoutes to be\n      // history-aware.\n      safelyDecodeURI(pathname)\n    );\n  }\n\n  return matches;\n}\n\ninterface RouteMeta<\n  RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n  relativePath: string;\n  caseSensitive: boolean;\n  childrenIndex: number;\n  route: RouteObjectType;\n}\n\ninterface RouteBranch<\n  RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n  path: string;\n  score: number;\n  routesMeta: RouteMeta<RouteObjectType>[];\n}\n\nfunction flattenRoutes<\n  RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n  routes: RouteObjectType[],\n  branches: RouteBranch<RouteObjectType>[] = [],\n  parentsMeta: RouteMeta<RouteObjectType>[] = [],\n  parentPath = \"\"\n): RouteBranch<RouteObjectType>[] {\n  let flattenRoute = (\n    route: RouteObjectType,\n    index: number,\n    relativePath?: string\n  ) => {\n    let meta: RouteMeta<RouteObjectType> = {\n      relativePath:\n        relativePath === undefined ? route.path || \"\" : relativePath,\n      caseSensitive: route.caseSensitive === true,\n      childrenIndex: index,\n      route,\n    };\n\n    if (meta.relativePath.startsWith(\"/\")) {\n      invariant(\n        meta.relativePath.startsWith(parentPath),\n        `Absolute route path \"${meta.relativePath}\" nested under path ` +\n          `\"${parentPath}\" is not valid. An absolute child route path ` +\n          `must start with the combined path of all its parent routes.`\n      );\n\n      meta.relativePath = meta.relativePath.slice(parentPath.length);\n    }\n\n    let path = joinPaths([parentPath, meta.relativePath]);\n    let routesMeta = parentsMeta.concat(meta);\n\n    // Add the children before adding this route to the array so we traverse the\n    // route tree depth-first and child routes appear before their parents in\n    // the \"flattened\" version.\n    if (route.children && route.children.length > 0) {\n      invariant(\n        // Our types know better, but runtime JS may not!\n        // @ts-expect-error\n        route.index !== true,\n        `Index routes must not have child routes. Please remove ` +\n          `all child routes from route path \"${path}\".`\n      );\n\n      flattenRoutes(route.children, branches, routesMeta, path);\n    }\n\n    // Routes without a path shouldn't ever match by themselves unless they are\n    // index routes, so don't add them to the list of possible branches.\n    if (route.path == null && !route.index) {\n      return;\n    }\n\n    branches.push({\n      path,\n      score: computeScore(path, route.index),\n      routesMeta,\n    });\n  };\n  routes.forEach((route, index) => {\n    // coarse-grain check for optional params\n    if (route.path === \"\" || !route.path?.includes(\"?\")) {\n      flattenRoute(route, index);\n    } else {\n      for (let exploded of explodeOptionalSegments(route.path)) {\n        flattenRoute(route, index, exploded);\n      }\n    }\n  });\n\n  return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n  let segments = path.split(\"/\");\n  if (segments.length === 0) return [];\n\n  let [first, ...rest] = segments;\n\n  // Optional path segments are denoted by a trailing `?`\n  let isOptional = first.endsWith(\"?\");\n  // Compute the corresponding required segment: `foo?` -> `foo`\n  let required = first.replace(/\\?$/, \"\");\n\n  if (rest.length === 0) {\n    // Intepret empty string as omitting an optional segment\n    // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n    return isOptional ? [required, \"\"] : [required];\n  }\n\n  let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n  let result: string[] = [];\n\n  // All child paths with the prefix.  Do this for all children before the\n  // optional version for all children so we get consistent ordering where the\n  // parent optional aspect is preferred as required.  Otherwise, we can get\n  // child sections interspersed where deeper optional segments are higher than\n  // parent optional segments, where for example, /:two would explodes _earlier_\n  // then /:one.  By always including the parent as required _for all children_\n  // first, we avoid this issue\n  result.push(\n    ...restExploded.map((subpath) =>\n      subpath === \"\" ? required : [required, subpath].join(\"/\")\n    )\n  );\n\n  // Then if this is an optional value, add all child versions without\n  if (isOptional) {\n    result.push(...restExploded);\n  }\n\n  // for absolute paths, ensure `/` instead of empty segment\n  return result.map((exploded) =>\n    path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n  );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n  branches.sort((a, b) =>\n    a.score !== b.score\n      ? b.score - a.score // Higher score first\n      : compareIndexes(\n          a.routesMeta.map((meta) => meta.childrenIndex),\n          b.routesMeta.map((meta) => meta.childrenIndex)\n        )\n  );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n  let segments = path.split(\"/\");\n  let initialScore = segments.length;\n  if (segments.some(isSplat)) {\n    initialScore += splatPenalty;\n  }\n\n  if (index) {\n    initialScore += indexRouteValue;\n  }\n\n  return segments\n    .filter((s) => !isSplat(s))\n    .reduce(\n      (score, segment) =>\n        score +\n        (paramRe.test(segment)\n          ? dynamicSegmentValue\n          : segment === \"\"\n          ? emptySegmentValue\n          : staticSegmentValue),\n      initialScore\n    );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n  let siblings =\n    a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n  return siblings\n    ? // If two routes are siblings, we should try to match the earlier sibling\n      // first. This allows people to have fine-grained control over the matching\n      // behavior by simply putting routes with identical paths in the order they\n      // want them tried.\n      a[a.length - 1] - b[b.length - 1]\n    : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n      // so they sort equally.\n      0;\n}\n\nfunction matchRouteBranch<\n  ParamKey extends string = string,\n  RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n  branch: RouteBranch<RouteObjectType>,\n  pathname: string\n): AgnosticRouteMatch<ParamKey, RouteObjectType>[] | null {\n  let { routesMeta } = branch;\n\n  let matchedParams = {};\n  let matchedPathname = \"/\";\n  let matches: AgnosticRouteMatch<ParamKey, RouteObjectType>[] = [];\n  for (let i = 0; i < routesMeta.length; ++i) {\n    let meta = routesMeta[i];\n    let end = i === routesMeta.length - 1;\n    let remainingPathname =\n      matchedPathname === \"/\"\n        ? pathname\n        : pathname.slice(matchedPathname.length) || \"/\";\n    let match = matchPath(\n      { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n      remainingPathname\n    );\n\n    if (!match) return null;\n\n    Object.assign(matchedParams, match.params);\n\n    let route = meta.route;\n\n    matches.push({\n      // TODO: Can this as be avoided?\n      params: matchedParams as Params<ParamKey>,\n      pathname: joinPaths([matchedPathname, match.pathname]),\n      pathnameBase: normalizePathname(\n        joinPaths([matchedPathname, match.pathnameBase])\n      ),\n      route,\n    });\n\n    if (match.pathnameBase !== \"/\") {\n      matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n    }\n  }\n\n  return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath<Path extends string>(\n  originalPath: Path,\n  params: {\n    [key in PathParam<Path>]: string;\n  } = {} as any\n): string {\n  let path = originalPath;\n  if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n    warning(\n      false,\n      `Route path \"${path}\" will be treated as if it were ` +\n        `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n        `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n        `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n    );\n    path = path.replace(/\\*$/, \"/*\") as Path;\n  }\n\n  return path\n    .replace(/^:(\\w+)/g, (_, key: PathParam<Path>) => {\n      invariant(params[key] != null, `Missing \":${key}\" param`);\n      return params[key]!;\n    })\n    .replace(/\\/:(\\w+)/g, (_, key: PathParam<Path>) => {\n      invariant(params[key] != null, `Missing \":${key}\" param`);\n      return `/${params[key]!}`;\n    })\n    .replace(/(\\/?)\\*/, (_, prefix, __, str) => {\n      const star = \"*\" as PathParam<Path>;\n\n      if (params[star] == null) {\n        // If no splat was provided, trim the trailing slash _unless_ it's\n        // the entire path\n        return str === \"/*\" ? \"/\" : \"\";\n      }\n\n      // Apply the splat\n      return `${prefix}${params[star]}`;\n    });\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern<Path extends string = string> {\n  /**\n   * A string to match against a URL pathname. May contain `:id`-style segments\n   * to indicate placeholders for dynamic parameters. May also end with `/*` to\n   * indicate matching the rest of the URL pathname.\n   */\n  path: Path;\n  /**\n   * Should be `true` if the static portions of the `path` should be matched in\n   * the same case.\n   */\n  caseSensitive?: boolean;\n  /**\n   * Should be `true` if this pattern should match the entire URL pathname.\n   */\n  end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch<ParamKey extends string = string> {\n  /**\n   * The names and values of dynamic parameters in the URL.\n   */\n  params: Params<ParamKey>;\n  /**\n   * The portion of the URL pathname that was matched.\n   */\n  pathname: string;\n  /**\n   * The portion of the URL pathname that was matched before child routes.\n   */\n  pathnameBase: string;\n  /**\n   * The pattern that was used to match.\n   */\n  pattern: PathPattern;\n}\n\ntype Mutable<T> = {\n  -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n  ParamKey extends ParamParseKey<Path>,\n  Path extends string\n>(\n  pattern: PathPattern<Path> | Path,\n  pathname: string\n): PathMatch<ParamKey> | null {\n  if (typeof pattern === \"string\") {\n    pattern = { path: pattern, caseSensitive: false, end: true };\n  }\n\n  let [matcher, paramNames] = compilePath(\n    pattern.path,\n    pattern.caseSensitive,\n    pattern.end\n  );\n\n  let match = pathname.match(matcher);\n  if (!match) return null;\n\n  let matchedPathname = match[0];\n  let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n  let captureGroups = match.slice(1);\n  let params: Params = paramNames.reduce<Mutable<Params>>(\n    (memo, paramName, index) => {\n      // We need to compute the pathnameBase here using the raw splat value\n      // instead of using params[\"*\"] later because it will be decoded then\n      if (paramName === \"*\") {\n        let splatValue = captureGroups[index] || \"\";\n        pathnameBase = matchedPathname\n          .slice(0, matchedPathname.length - splatValue.length)\n          .replace(/(.)\\/+$/, \"$1\");\n      }\n\n      memo[paramName] = safelyDecodeURIComponent(\n        captureGroups[index] || \"\",\n        paramName\n      );\n      return memo;\n    },\n    {}\n  );\n\n  return {\n    params,\n    pathname: matchedPathname,\n    pathnameBase,\n    pattern,\n  };\n}\n\nfunction compilePath(\n  path: string,\n  caseSensitive = false,\n  end = true\n): [RegExp, string[]] {\n  warning(\n    path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n    `Route path \"${path}\" will be treated as if it were ` +\n      `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n      `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n      `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n  );\n\n  let paramNames: string[] = [];\n  let regexpSource =\n    \"^\" +\n    path\n      .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n      .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n      .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n      .replace(/\\/:(\\w+)/g, (_: string, paramName: string) => {\n        paramNames.push(paramName);\n        return \"/([^\\\\/]+)\";\n      });\n\n  if (path.endsWith(\"*\")) {\n    paramNames.push(\"*\");\n    regexpSource +=\n      path === \"*\" || path === \"/*\"\n        ? \"(.*)$\" // Already matched the initial /, just match the rest\n        : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n  } else if (end) {\n    // When matching to the end, ignore trailing slashes\n    regexpSource += \"\\\\/*$\";\n  } else if (path !== \"\" && path !== \"/\") {\n    // If our path is non-empty and contains anything beyond an initial slash,\n    // then we have _some_ form of path in our regex so we should expect to\n    // match only if we find the end of this path segment.  Look for an optional\n    // non-captured trailing slash (to match a portion of the URL) or the end\n    // of the path (if we've matched to the end).  We used to do this with a\n    // word boundary but that gives false positives on routes like\n    // /user-preferences since `-` counts as a word boundary.\n    regexpSource += \"(?:(?=\\\\/|$))\";\n  } else {\n    // Nothing to match for \"\" or \"/\"\n  }\n\n  let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n  return [matcher, paramNames];\n}\n\nfunction safelyDecodeURI(value: string) {\n  try {\n    return decodeURI(value);\n  } catch (error) {\n    warning(\n      false,\n      `The URL path \"${value}\" could not be decoded because it is is a ` +\n        `malformed URL segment. This is probably due to a bad percent ` +\n        `encoding (${error}).`\n    );\n\n    return value;\n  }\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n  try {\n    return decodeURIComponent(value);\n  } catch (error) {\n    warning(\n      false,\n      `The value for the URL param \"${paramName}\" will not be decoded because` +\n        ` the string \"${value}\" is a malformed URL segment. This is probably` +\n        ` due to a bad percent encoding (${error}).`\n    );\n\n    return value;\n  }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n  pathname: string,\n  basename: string\n): string | null {\n  if (basename === \"/\") return pathname;\n\n  if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n    return null;\n  }\n\n  // We want to leave trailing slash behavior in the user's control, so if they\n  // specify a basename with a trailing slash, we should support it\n  let startIndex = basename.endsWith(\"/\")\n    ? basename.length - 1\n    : basename.length;\n  let nextChar = pathname.charAt(startIndex);\n  if (nextChar && nextChar !== \"/\") {\n    // pathname does not start with basename/\n    return null;\n  }\n\n  return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * @private\n */\nexport function warning(cond: any, message: string): void {\n  if (!cond) {\n    // eslint-disable-next-line no-console\n    if (typeof console !== \"undefined\") console.warn(message);\n\n    try {\n      // Welcome to debugging React Router!\n      //\n      // This error is thrown as a convenience so you can more easily\n      // find the source for a warning that appears in the console by\n      // enabling \"pause on exceptions\" in your JavaScript debugger.\n      throw new Error(message);\n      // eslint-disable-next-line no-empty\n    } catch (e) {}\n  }\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n  let {\n    pathname: toPathname,\n    search = \"\",\n    hash = \"\",\n  } = typeof to === \"string\" ? parsePath(to) : to;\n\n  let pathname = toPathname\n    ? toPathname.startsWith(\"/\")\n      ? toPathname\n      : resolvePathname(toPathname, fromPathname)\n    : fromPathname;\n\n  return {\n    pathname,\n    search: normalizeSearch(search),\n    hash: normalizeHash(hash),\n  };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n  let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n  let relativeSegments = relativePath.split(\"/\");\n\n  relativeSegments.forEach((segment) => {\n    if (segment === \"..\") {\n      // Keep the root \"\" segment so the pathname starts at /\n      if (segments.length > 1) segments.pop();\n    } else if (segment !== \".\") {\n      segments.push(segment);\n    }\n  });\n\n  return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n  char: string,\n  field: string,\n  dest: string,\n  path: Partial<Path>\n) {\n  return (\n    `Cannot include a '${char}' character in a manually specified ` +\n    `\\`to.${field}\\` field [${JSON.stringify(\n      path\n    )}].  Please separate it out to the ` +\n    `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n    `a string in <Link to=\"...\"> and the router will parse it for you.`\n  );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same.  Both of the following examples should link back to the root:\n *\n *   <Route path=\"/\">\n *     <Route path=\"accounts\" element={<Link to=\"..\"}>\n *   </Route>\n *\n *   <Route path=\"/\">\n *     <Route path=\"accounts\">\n *       <Route element={<AccountsLayout />}>       // <-- Does not contribute\n *         <Route index element={<Link to=\"..\"} />  // <-- Does not contribute\n *       </Route\n *     </Route>\n *   </Route>\n */\nexport function getPathContributingMatches<\n  T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n  return matches.filter(\n    (match, index) =>\n      index === 0 || (match.route.path && match.route.path.length > 0)\n  );\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n  toArg: To,\n  routePathnames: string[],\n  locationPathname: string,\n  isPathRelative = false\n): Path {\n  let to: Partial<Path>;\n  if (typeof toArg === \"string\") {\n    to = parsePath(toArg);\n  } else {\n    to = { ...toArg };\n\n    invariant(\n      !to.pathname || !to.pathname.includes(\"?\"),\n      getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n    );\n    invariant(\n      !to.pathname || !to.pathname.includes(\"#\"),\n      getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n    );\n    invariant(\n      !to.search || !to.search.includes(\"#\"),\n      getInvalidPathError(\"#\", \"search\", \"hash\", to)\n    );\n  }\n\n  let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n  let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n  let from: string;\n\n  // Routing is relative to the current pathname if explicitly requested.\n  //\n  // If a pathname is explicitly provided in `to`, it should be relative to the\n  // route context. This is explained in `Note on `<Link to>` values` in our\n  // migration guide from v5 as a means of disambiguation between `to` values\n  // that begin with `/` and those that do not. However, this is problematic for\n  // `to` values that do not provide a pathname. `to` can simply be a search or\n  // hash string, in which case we should assume that the navigation is relative\n  // to the current location's pathname and *not* the route pathname.\n  if (isPathRelative || toPathname == null) {\n    from = locationPathname;\n  } else {\n    let routePathnameIndex = routePathnames.length - 1;\n\n    if (toPathname.startsWith(\"..\")) {\n      let toSegments = toPathname.split(\"/\");\n\n      // Each leading .. segment means \"go up one route\" instead of \"go up one\n      // URL segment\".  This is a key difference from how <a href> works and a\n      // major reason we call this a \"to\" value instead of a \"href\".\n      while (toSegments[0] === \"..\") {\n        toSegments.shift();\n        routePathnameIndex -= 1;\n      }\n\n      to.pathname = toSegments.join(\"/\");\n    }\n\n    // If there are more \"..\" segments than parent routes, resolve relative to\n    // the root / URL.\n    from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n  }\n\n  let path = resolvePath(to, from);\n\n  // Ensure the pathname has a trailing slash if the original \"to\" had one\n  let hasExplicitTrailingSlash =\n    toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n  // Or if this was a link to the current path which has a trailing slash\n  let hasCurrentTrailingSlash =\n    (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n  if (\n    !path.pathname.endsWith(\"/\") &&\n    (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n  ) {\n    path.pathname += \"/\";\n  }\n\n  return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n  // Empty strings should be treated the same as / paths\n  return to === \"\" || (to as Path).pathname === \"\"\n    ? \"/\"\n    : typeof to === \"string\"\n    ? parsePath(to).pathname\n    : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n  paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n  pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n  !search || search === \"?\"\n    ? \"\"\n    : search.startsWith(\"?\")\n    ? search\n    : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n  !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = <Data>(\n  data: Data,\n  init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n  let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n  let headers = new Headers(responseInit.headers);\n  if (!headers.has(\"Content-Type\")) {\n    headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n  }\n\n  return new Response(JSON.stringify(data), {\n    ...responseInit,\n    headers,\n  });\n};\n\nexport interface TrackedPromise extends Promise<any> {\n  _tracked?: boolean;\n  _data?: any;\n  _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n  private pendingKeys: Set<string | number> = new Set<string | number>();\n  private controller: AbortController;\n  private abortPromise: Promise<void>;\n  private unlistenAbortSignal: () => void;\n  private subscriber?: (aborted: boolean) => void = undefined;\n  data: Record<string, unknown>;\n\n  constructor(data: Record<string, unknown>) {\n    invariant(\n      data && typeof data === \"object\" && !Array.isArray(data),\n      \"defer() only accepts plain objects\"\n    );\n\n    // Set up an AbortController + Promise we can race against to exit early\n    // cancellation\n    let reject: (e: AbortedDeferredError) => void;\n    this.abortPromise = new Promise((_, r) => (reject = r));\n    this.controller = new AbortController();\n    let onAbort = () =>\n      reject(new AbortedDeferredError(\"Deferred data aborted\"));\n    this.unlistenAbortSignal = () =>\n      this.controller.signal.removeEventListener(\"abort\", onAbort);\n    this.controller.signal.addEventListener(\"abort\", onAbort);\n\n    this.data = Object.entries(data).reduce(\n      (acc, [key, value]) =>\n        Object.assign(acc, {\n          [key]: this.trackPromise(key, value),\n        }),\n      {}\n    );\n  }\n\n  private trackPromise(\n    key: string | number,\n    value: Promise<unknown> | unknown\n  ): TrackedPromise | unknown {\n    if (!(value instanceof Promise)) {\n      return value;\n    }\n\n    this.pendingKeys.add(key);\n\n    // We store a little wrapper promise that will be extended with\n    // _data/_error props upon resolve/reject\n    let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n      (data) => this.onSettle(promise, key, null, data as unknown),\n      (error) => this.onSettle(promise, key, error as unknown)\n    );\n\n    // Register rejection listeners to avoid uncaught promise rejections on\n    // errors or aborted deferred values\n    promise.catch(() => {});\n\n    Object.defineProperty(promise, \"_tracked\", { get: () => true });\n    return promise;\n  }\n\n  private onSettle(\n    promise: TrackedPromise,\n    key: string | number,\n    error: unknown,\n    data?: unknown\n  ): unknown {\n    if (\n      this.controller.signal.aborted &&\n      error instanceof AbortedDeferredError\n    ) {\n      this.unlistenAbortSignal();\n      Object.defineProperty(promise, \"_error\", { get: () => error });\n      return Promise.reject(error);\n    }\n\n    this.pendingKeys.delete(key);\n\n    if (this.done) {\n      // Nothing left to abort!\n      this.unlistenAbortSignal();\n    }\n\n    const subscriber = this.subscriber;\n    if (error) {\n      Object.defineProperty(promise, \"_error\", { get: () => error });\n      subscriber && subscriber(false);\n      return Promise.reject(error);\n    }\n\n    Object.defineProperty(promise, \"_data\", { get: () => data });\n    subscriber && subscriber(false);\n    return data;\n  }\n\n  subscribe(fn: (aborted: boolean) => void) {\n    this.subscriber = fn;\n  }\n\n  cancel() {\n    this.controller.abort();\n    this.pendingKeys.forEach((v, k) => this.pendingKeys.delete(k));\n    let subscriber = this.subscriber;\n    subscriber && subscriber(true);\n  }\n\n  async resolveData(signal: AbortSignal) {\n    let aborted = false;\n    if (!this.done) {\n      let onAbort = () => this.cancel();\n      signal.addEventListener(\"abort\", onAbort);\n      aborted = await new Promise((resolve) => {\n        this.subscribe((aborted) => {\n          signal.removeEventListener(\"abort\", onAbort);\n          if (aborted || this.done) {\n            resolve(aborted);\n          }\n        });\n      });\n    }\n    return aborted;\n  }\n\n  get done() {\n    return this.pendingKeys.size === 0;\n  }\n\n  get unwrappedData() {\n    invariant(\n      this.data !== null && this.done,\n      \"Can only unwrap data on initialized and settled deferreds\"\n    );\n\n    return Object.entries(this.data).reduce(\n      (acc, [key, value]) =>\n        Object.assign(acc, {\n          [key]: unwrapTrackedPromise(value),\n        }),\n      {}\n    );\n  }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n  return (\n    value instanceof Promise && (value as TrackedPromise)._tracked === true\n  );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n  if (!isTrackedPromise(value)) {\n    return value;\n  }\n\n  if (value._error) {\n    throw value._error;\n  }\n  return value._data;\n}\n\nexport function defer(data: Record<string, unknown>) {\n  return new DeferredData(data);\n}\n\nexport type RedirectFunction = (\n  url: string,\n  init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n  let responseInit = init;\n  if (typeof responseInit === \"number\") {\n    responseInit = { status: responseInit };\n  } else if (typeof responseInit.status === \"undefined\") {\n    responseInit.status = 302;\n  }\n\n  let headers = new Headers(responseInit.headers);\n  headers.set(\"Location\", url);\n\n  return new Response(null, {\n    ...responseInit,\n    headers,\n  });\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n */\nexport class ErrorResponse {\n  status: number;\n  statusText: string;\n  data: any;\n  error?: Error;\n  internal: boolean;\n\n  constructor(\n    status: number,\n    statusText: string | undefined,\n    data: any,\n    internal = false\n  ) {\n    this.status = status;\n    this.statusText = statusText || \"\";\n    this.internal = internal;\n    if (data instanceof Error) {\n      this.data = data.toString();\n      this.error = data;\n    } else {\n      this.data = data;\n    }\n  }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response throw from an action/loader\n */\nexport function isRouteErrorResponse(e: any): e is ErrorResponse {\n  return e instanceof ErrorResponse;\n}\n", "import type { History, Location, Path, To } from \"./history\";\nimport {\n  Action as HistoryAction,\n  createLocation,\n  createPath,\n  createClientSideURL,\n  invariant,\n  parsePath,\n} from \"./history\";\nimport type {\n  DataResult,\n  AgnosticDataRouteMatch,\n  AgnosticDataRouteObject,\n  DeferredResult,\n  ErrorResult,\n  FormEncType,\n  FormMethod,\n  RedirectResult,\n  RouteData,\n  AgnosticRouteObject,\n  Submission,\n  SuccessResult,\n  AgnosticRouteMatch,\n  MutationFormMethod,\n} from \"./utils\";\nimport {\n  DeferredData,\n  ErrorResponse,\n  ResultType,\n  convertRoutesToDataRoutes,\n  getPathContributingMatches,\n  isRouteErrorResponse,\n  joinPaths,\n  matchRoutes,\n  resolveTo,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Return the basename for the router\n   */\n  get basename(): RouterInit[\"basename\"];\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Return the current state of the router\n   */\n  get state(): RouterState;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Return the routes for this router instance\n   */\n  get routes(): AgnosticDataRouteObject[];\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Initialize the router, including adding history listeners and kicking off\n   * initial data fetches.  Returns a function to cleanup listeners and abort\n   * any in-progress loads\n   */\n  initialize(): Router;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Subscribe to router.state updates\n   *\n   * @param fn function to call with the new state\n   */\n  subscribe(fn: RouterSubscriber): () => void;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Enable scroll restoration behavior in the router\n   *\n   * @param savedScrollPositions Object that will manage positions, in case\n   *                             it's being restored from sessionStorage\n   * @param getScrollPosition    Function to get the active Y scroll position\n   * @param getKey               Function to get the key to use for restoration\n   */\n  enableScrollRestoration(\n    savedScrollPositions: Record<string, number>,\n    getScrollPosition: GetScrollPositionFunction,\n    getKey?: GetScrollRestorationKeyFunction\n  ): () => void;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Navigate forward/backward in the history stack\n   * @param to Delta to move in the history stack\n   */\n  navigate(to: number): void;\n\n  /**\n   * Navigate to the given path\n   * @param to Path to navigate to\n   * @param opts Navigation options (method, submission, etc.)\n   */\n  navigate(to: To, opts?: RouterNavigateOptions): void;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Trigger a fetcher load/submission\n   *\n   * @param key     Fetcher key\n   * @param routeId Route that owns the fetcher\n   * @param href    href to fetch\n   * @param opts    Fetcher options, (method, submission, etc.)\n   */\n  fetch(\n    key: string,\n    routeId: string,\n    href: string,\n    opts?: RouterNavigateOptions\n  ): void;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Trigger a revalidation of all current route loaders and fetcher loads\n   */\n  revalidate(): void;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Utility function to create an href for the given location\n   * @param location\n   */\n  createHref(location: Location | URL): string;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Utility function to URL encode a destination path according to the internal\n   * history implementation\n   * @param to\n   */\n  encodeLocation(to: To): Path;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Get/create a fetcher for the given key\n   * @param key\n   */\n  getFetcher<TData = any>(key?: string): Fetcher<TData>;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Delete the fetcher for a given key\n   * @param key\n   */\n  deleteFetcher(key?: string): void;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Cleanup listeners and abort any in-progress loads\n   */\n  dispose(): void;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Internal fetch AbortControllers accessed by unit tests\n   */\n  _internalFetchControllers: Map<string, AbortController>;\n\n  /**\n   * @internal\n   * PRIVATE - DO NOT USE\n   *\n   * Internal pending DeferredData instances accessed by unit tests\n   */\n  _internalActiveDeferreds: Map<string, DeferredData>;\n}\n\n/**\n * State maintained internally by the router.  During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n  /**\n   * The action of the most recent navigation\n   */\n  historyAction: HistoryAction;\n\n  /**\n   * The current location reflected by the router\n   */\n  location: Location;\n\n  /**\n   * The current set of route matches\n   */\n  matches: AgnosticDataRouteMatch[];\n\n  /**\n   * Tracks whether we've completed our initial data load\n   */\n  initialized: boolean;\n\n  /**\n   * Current scroll position we should start at for a new view\n   *  - number -> scroll position to restore to\n   *  - false -> do not restore scroll at all (used during submissions)\n   *  - null -> don't have a saved position, scroll to hash or top of page\n   */\n  restoreScrollPosition: number | false | null;\n\n  /**\n   * Indicate whether this navigation should skip resetting the scroll position\n   * if we are unable to restore the scroll position\n   */\n  preventScrollReset: boolean;\n\n  /**\n   * Tracks the state of the current navigation\n   */\n  navigation: Navigation;\n\n  /**\n   * Tracks any in-progress revalidations\n   */\n  revalidation: RevalidationState;\n\n  /**\n   * Data from the loaders for the current matches\n   */\n  loaderData: RouteData;\n\n  /**\n   * Data from the action for the current matches\n   */\n  actionData: RouteData | null;\n\n  /**\n   * Errors caught from loaders for the current matches\n   */\n  errors: RouteData | null;\n\n  /**\n   * Map of current fetchers\n   */\n  fetchers: Map<string, Fetcher>;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n  Pick<RouterState, \"loaderData\" | \"actionData\" | \"errors\">\n>;\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n  basename?: string;\n  routes: AgnosticRouteObject[];\n  history: History;\n  hydrationData?: HydrationState;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n  basename: Router[\"basename\"];\n  location: RouterState[\"location\"];\n  matches: RouterState[\"matches\"];\n  loaderData: RouterState[\"loaderData\"];\n  actionData: RouterState[\"actionData\"];\n  errors: RouterState[\"errors\"];\n  statusCode: number;\n  loaderHeaders: Record<string, Headers>;\n  actionHeaders: Record<string, Headers>;\n  _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n  dataRoutes: AgnosticDataRouteObject[];\n  query(\n    request: Request,\n    opts?: { requestContext?: unknown }\n  ): Promise<StaticHandlerContext | Response>;\n  queryRoute(\n    request: Request,\n    opts?: { routeId?: string; requestContext?: unknown }\n  ): Promise<any>;\n}\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n  (state: RouterState): void;\n}\n\ninterface UseMatchesMatch {\n  id: string;\n  pathname: string;\n  params: AgnosticRouteMatch[\"params\"];\n  data: unknown;\n  handle: unknown;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n  (location: Location, matches: UseMatchesMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n  (): number;\n}\n\n/**\n * Options for a navigate() call for a Link navigation\n */\ntype LinkNavigateOptions = {\n  replace?: boolean;\n  state?: any;\n  preventScrollReset?: boolean;\n};\n\n/**\n * Options for a navigate() call for a Form navigation\n */\ntype SubmissionNavigateOptions = {\n  replace?: boolean;\n  state?: any;\n  formMethod?: FormMethod;\n  formEncType?: FormEncType;\n  formData: FormData;\n};\n\n/**\n * Options to pass to navigate() for either a Link or Form navigation\n */\nexport type RouterNavigateOptions =\n  | LinkNavigateOptions\n  | SubmissionNavigateOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions =\n  | Omit<LinkNavigateOptions, \"replace\">\n  | Omit<SubmissionNavigateOptions, \"replace\">;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n  Idle: {\n    state: \"idle\";\n    location: undefined;\n    formMethod: undefined;\n    formAction: undefined;\n    formEncType: undefined;\n    formData: undefined;\n  };\n  Loading: {\n    state: \"loading\";\n    location: Location;\n    formMethod: FormMethod | undefined;\n    formAction: string | undefined;\n    formEncType: FormEncType | undefined;\n    formData: FormData | undefined;\n  };\n  Submitting: {\n    state: \"submitting\";\n    location: Location;\n    formMethod: FormMethod;\n    formAction: string;\n    formEncType: FormEncType;\n    formData: FormData;\n  };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates<TData = any> = {\n  Idle: {\n    state: \"idle\";\n    formMethod: undefined;\n    formAction: undefined;\n    formEncType: undefined;\n    formData: undefined;\n    data: TData | undefined;\n    \" _hasFetcherDoneAnything \"?: boolean;\n  };\n  Loading: {\n    state: \"loading\";\n    formMethod: FormMethod | undefined;\n    formAction: string | undefined;\n    formEncType: FormEncType | undefined;\n    formData: FormData | undefined;\n    data: TData | undefined;\n    \" _hasFetcherDoneAnything \"?: boolean;\n  };\n  Submitting: {\n    state: \"submitting\";\n    formMethod: FormMethod;\n    formAction: string;\n    formEncType: FormEncType;\n    formData: FormData;\n    data: TData | undefined;\n    \" _hasFetcherDoneAnything \"?: boolean;\n  };\n};\n\nexport type Fetcher<TData = any> =\n  FetcherStates<TData>[keyof FetcherStates<TData>];\n\ninterface ShortCircuitable {\n  /**\n   * startNavigation does not need to complete the navigation because we\n   * redirected or got interrupted\n   */\n  shortCircuited?: boolean;\n}\n\ninterface HandleActionResult extends ShortCircuitable {\n  /**\n   * Error thrown from the current action, keyed by the route containing the\n   * error boundary to render the error.  To be committed to the state after\n   * loaders have completed\n   */\n  pendingActionError?: RouteData;\n  /**\n   * Data returned from the current action, keyed by the route owning the action.\n   * To be committed to the state after loaders have completed\n   */\n  pendingActionData?: RouteData;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n  /**\n   * loaderData returned from the current set of loaders\n   */\n  loaderData?: RouterState[\"loaderData\"];\n  /**\n   * errors thrown from the current set of loaders\n   */\n  errors?: RouterState[\"errors\"];\n}\n\n/**\n * Tuple of [key, href, DataRouteMatch, DataRouteMatch[]] for a revalidating\n * fetcher.load()\n */\ntype RevalidatingFetcher = [\n  string,\n  string,\n  AgnosticDataRouteMatch,\n  AgnosticDataRouteMatch[]\n];\n\n/**\n * Tuple of [href, DataRouteMatch, DataRouteMatch[]] for an active\n * fetcher.load()\n */\ntype FetchLoadMatch = [\n  string,\n  AgnosticDataRouteMatch,\n  AgnosticDataRouteMatch[]\n];\n\n/**\n * Wrapper object to allow us to throw any response out from callLoaderOrAction\n * for queryRouter while preserving whether or not it was thrown or returned\n * from the loader/action\n */\ninterface QueryRouteResponse {\n  type: ResultType.data | ResultType.error;\n  response: Response;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n  \"post\",\n  \"put\",\n  \"patch\",\n  \"delete\",\n];\nconst validMutationMethods = new Set<MutationFormMethod>(\n  validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n  \"get\",\n  ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set<FormMethod>(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n  state: \"idle\",\n  location: undefined,\n  formMethod: undefined,\n  formAction: undefined,\n  formEncType: undefined,\n  formData: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n  state: \"idle\",\n  data: undefined,\n  formMethod: undefined,\n  formAction: undefined,\n  formEncType: undefined,\n  formData: undefined,\n};\n\nconst isBrowser =\n  typeof window !== \"undefined\" &&\n  typeof window.document !== \"undefined\" &&\n  typeof window.document.createElement !== \"undefined\";\nconst isServer = !isBrowser;\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n  invariant(\n    init.routes.length > 0,\n    \"You must provide a non-empty routes array to createRouter\"\n  );\n\n  let dataRoutes = convertRoutesToDataRoutes(init.routes);\n  // Cleanup function for history\n  let unlistenHistory: (() => void) | null = null;\n  // Externally-provided functions to call on all state changes\n  let subscribers = new Set<RouterSubscriber>();\n  // Externally-provided object to hold scroll restoration locations during routing\n  let savedScrollPositions: Record<string, number> | null = null;\n  // Externally-provided function to get scroll restoration keys\n  let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n  // Externally-provided function to get current scroll position\n  let getScrollPosition: GetScrollPositionFunction | null = null;\n  // One-time flag to control the initial hydration scroll restoration.  Because\n  // we don't get the saved positions from <ScrollRestoration /> until _after_\n  // the initial render, we need to manually trigger a separate updateState to\n  // send along the restoreScrollPosition\n  // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n  // SSR did the initial scroll restoration.\n  let initialScrollRestored = init.hydrationData != null;\n\n  let initialMatches = matchRoutes(\n    dataRoutes,\n    init.history.location,\n    init.basename\n  );\n  let initialErrors: RouteData | null = null;\n\n  if (initialMatches == null) {\n    // If we do not match a user-provided-route, fall back to the root\n    // to allow the error boundary to take over\n    let error = getInternalRouterError(404, {\n      pathname: init.history.location.pathname,\n    });\n    let { matches, route } = getShortCircuitMatches(dataRoutes);\n    initialMatches = matches;\n    initialErrors = { [route.id]: error };\n  }\n\n  let initialized =\n    !initialMatches.some((m) => m.route.loader) || init.hydrationData != null;\n\n  let router: Router;\n  let state: RouterState = {\n    historyAction: init.history.action,\n    location: init.history.location,\n    matches: initialMatches,\n    initialized,\n    navigation: IDLE_NAVIGATION,\n    // Don't restore on initial updateState() if we were SSR'd\n    restoreScrollPosition: init.hydrationData != null ? false : null,\n    preventScrollReset: false,\n    revalidation: \"idle\",\n    loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n    actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n    errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n    fetchers: new Map(),\n  };\n\n  // -- Stateful internal variables to manage navigations --\n  // Current navigation in progress (to be committed in completeNavigation)\n  let pendingAction: HistoryAction = HistoryAction.Pop;\n  // Should the current navigation prevent the scroll reset if scroll cannot\n  // be restored?\n  let pendingPreventScrollReset = false;\n  // AbortController for the active navigation\n  let pendingNavigationController: AbortController | null;\n  // We use this to avoid touching history in completeNavigation if a\n  // revalidation is entirely uninterrupted\n  let isUninterruptedRevalidation = false;\n  // Use this internal flag to force revalidation of all loaders:\n  //  - submissions (completed or interrupted)\n  //  - useRevalidate()\n  //  - X-Remix-Revalidate (from redirect)\n  let isRevalidationRequired = false;\n  // Use this internal array to capture routes that require revalidation due\n  // to a cancelled deferred on action submission\n  let cancelledDeferredRoutes: string[] = [];\n  // Use this internal array to capture fetcher loads that were cancelled by an\n  // action navigation and require revalidation\n  let cancelledFetcherLoads: string[] = [];\n  // AbortControllers for any in-flight fetchers\n  let fetchControllers = new Map<string, AbortController>();\n  // Track loads based on the order in which they started\n  let incrementingLoadId = 0;\n  // Track the outstanding pending navigation data load to be compared against\n  // the globally incrementing load when a fetcher load lands after a completed\n  // navigation\n  let pendingNavigationLoadId = -1;\n  // Fetchers that triggered data reloads as a result of their actions\n  let fetchReloadIds = new Map<string, number>();\n  // Fetchers that triggered redirect navigations from their actions\n  let fetchRedirectIds = new Set<string>();\n  // Most recent href/match for fetcher.load calls for fetchers\n  let fetchLoadMatches = new Map<string, FetchLoadMatch>();\n  // Store DeferredData instances for active route matches.  When a\n  // route loader returns defer() we stick one in here.  Then, when a nested\n  // promise resolves we update loaderData.  If a new navigation starts we\n  // cancel active deferreds for eliminated routes.\n  let activeDeferreds = new Map<string, DeferredData>();\n\n  // Initialize the router, all side effects should be kicked off from here.\n  // Implemented as a Fluent API for ease of:\n  //   let router = createRouter(init).initialize();\n  function initialize() {\n    // If history informs us of a POP navigation, start the navigation but do not update\n    // state.  We'll update our own state once the navigation completes\n    unlistenHistory = init.history.listen(\n      ({ action: historyAction, location }) =>\n        startNavigation(historyAction, location)\n    );\n\n    // Kick off initial data load if needed.  Use Pop to avoid modifying history\n    if (!state.initialized) {\n      startNavigation(HistoryAction.Pop, state.location);\n    }\n\n    return router;\n  }\n\n  // Clean up a router and it's side effects\n  function dispose() {\n    if (unlistenHistory) {\n      unlistenHistory();\n    }\n    subscribers.clear();\n    pendingNavigationController && pendingNavigationController.abort();\n    state.fetchers.forEach((_, key) => deleteFetcher(key));\n  }\n\n  // Subscribe to state updates for the router\n  function subscribe(fn: RouterSubscriber) {\n    subscribers.add(fn);\n    return () => subscribers.delete(fn);\n  }\n\n  // Update our state and notify the calling context of the change\n  function updateState(newState: Partial<RouterState>): void {\n    state = {\n      ...state,\n      ...newState,\n    };\n    subscribers.forEach((subscriber) => subscriber(state));\n  }\n\n  // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n  // and setting state.[historyAction/location/matches] to the new route.\n  // - Location is a required param\n  // - Navigation will always be set to IDLE_NAVIGATION\n  // - Can pass any other state in newState\n  function completeNavigation(\n    location: Location,\n    newState: Partial<Omit<RouterState, \"action\" | \"location\" | \"navigation\">>\n  ): void {\n    // Deduce if we're in a loading/actionReload state:\n    // - We have committed actionData in the store\n    // - The current navigation was a mutation submission\n    // - We're past the submitting state and into the loading state\n    // - The location being loaded is not the result of a redirect\n    let isActionReload =\n      state.actionData != null &&\n      state.navigation.formMethod != null &&\n      isMutationMethod(state.navigation.formMethod) &&\n      state.navigation.state === \"loading\" &&\n      location.state?._isRedirect !== true;\n\n    let actionData: RouteData | null;\n    if (newState.actionData) {\n      if (Object.keys(newState.actionData).length > 0) {\n        actionData = newState.actionData;\n      } else {\n        // Empty actionData -> clear prior actionData due to an action error\n        actionData = null;\n      }\n    } else if (isActionReload) {\n      // Keep the current data if we're wrapping up the action reload\n      actionData = state.actionData;\n    } else {\n      // Clear actionData on any other completed navigations\n      actionData = null;\n    }\n\n    // Always preserve any existing loaderData from re-used routes\n    let loaderData = newState.loaderData\n      ? mergeLoaderData(\n          state.loaderData,\n          newState.loaderData,\n          newState.matches || [],\n          newState.errors\n        )\n      : state.loaderData;\n\n    updateState({\n      ...newState, // matches, errors, fetchers go through as-is\n      actionData,\n      loaderData,\n      historyAction: pendingAction,\n      location,\n      initialized: true,\n      navigation: IDLE_NAVIGATION,\n      revalidation: \"idle\",\n      // Don't restore on submission navigations\n      restoreScrollPosition: state.navigation.formData\n        ? false\n        : getSavedScrollPosition(location, newState.matches || state.matches),\n      preventScrollReset: pendingPreventScrollReset,\n    });\n\n    if (isUninterruptedRevalidation) {\n      // If this was an uninterrupted revalidation then do not touch history\n    } else if (pendingAction === HistoryAction.Pop) {\n      // Do nothing for POP - URL has already been updated\n    } else if (pendingAction === HistoryAction.Push) {\n      init.history.push(location, location.state);\n    } else if (pendingAction === HistoryAction.Replace) {\n      init.history.replace(location, location.state);\n    }\n\n    // Reset stateful navigation vars\n    pendingAction = HistoryAction.Pop;\n    pendingPreventScrollReset = false;\n    isUninterruptedRevalidation = false;\n    isRevalidationRequired = false;\n    cancelledDeferredRoutes = [];\n    cancelledFetcherLoads = [];\n  }\n\n  // Trigger a navigation event, which can either be a numerical POP or a PUSH\n  // replace with an optional submission\n  async function navigate(\n    to: number | To,\n    opts?: RouterNavigateOptions\n  ): Promise<void> {\n    if (typeof to === \"number\") {\n      init.history.go(to);\n      return;\n    }\n\n    let { path, submission, error } = normalizeNavigateOptions(to, opts);\n\n    let location = createLocation(state.location, path, opts && opts.state);\n\n    // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n    // URL from window.location, so we need to encode it here so the behavior\n    // remains the same as POP and non-data-router usages.  new URL() does all\n    // the same encoding we'd get from a history.pushState/window.location read\n    // without having to touch history\n    location = {\n      ...location,\n      ...init.history.encodeLocation(location),\n    };\n\n    let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n    let historyAction = HistoryAction.Push;\n\n    if (userReplace === true) {\n      historyAction = HistoryAction.Replace;\n    } else if (userReplace === false) {\n      // no-op\n    } else if (\n      submission != null &&\n      isMutationMethod(submission.formMethod) &&\n      submission.formAction === state.location.pathname + state.location.search\n    ) {\n      // By default on submissions to the current location we REPLACE so that\n      // users don't have to double-click the back button to get to the prior\n      // location.  If the user redirects to a different location from the\n      // action/loader this will be ignored and the redirect will be a PUSH\n      historyAction = HistoryAction.Replace;\n    }\n\n    let preventScrollReset =\n      opts && \"preventScrollReset\" in opts\n        ? opts.preventScrollReset === true\n        : undefined;\n\n    return await startNavigation(historyAction, location, {\n      submission,\n      // Send through the formData serialization error if we have one so we can\n      // render at the right error boundary after we match routes\n      pendingError: error,\n      preventScrollReset,\n      replace: opts && opts.replace,\n    });\n  }\n\n  // Revalidate all current loaders.  If a navigation is in progress or if this\n  // is interrupted by a navigation, allow this to \"succeed\" by calling all\n  // loaders during the next loader round\n  function revalidate() {\n    interruptActiveLoads();\n    updateState({ revalidation: \"loading\" });\n\n    // If we're currently submitting an action, we don't need to start a new\n    // navigation, we'll just let the follow up loader execution call all loaders\n    if (state.navigation.state === \"submitting\") {\n      return;\n    }\n\n    // If we're currently in an idle state, start a new navigation for the current\n    // action/location and mark it as uninterrupted, which will skip the history\n    // update in completeNavigation\n    if (state.navigation.state === \"idle\") {\n      startNavigation(state.historyAction, state.location, {\n        startUninterruptedRevalidation: true,\n      });\n      return;\n    }\n\n    // Otherwise, if we're currently in a loading state, just start a new\n    // navigation to the navigation.location but do not trigger an uninterrupted\n    // revalidation so that history correctly updates once the navigation completes\n    startNavigation(\n      pendingAction || state.historyAction,\n      state.navigation.location,\n      { overrideNavigation: state.navigation }\n    );\n  }\n\n  // Start a navigation to the given action/location.  Can optionally provide a\n  // overrideNavigation which will override the normalLoad in the case of a redirect\n  // navigation\n  async function startNavigation(\n    historyAction: HistoryAction,\n    location: Location,\n    opts?: {\n      submission?: Submission;\n      overrideNavigation?: Navigation;\n      pendingError?: ErrorResponse;\n      startUninterruptedRevalidation?: boolean;\n      preventScrollReset?: boolean;\n      replace?: boolean;\n    }\n  ): Promise<void> {\n    // Abort any in-progress navigations and start a new one. Unset any ongoing\n    // uninterrupted revalidations unless told otherwise, since we want this\n    // new navigation to update history normally\n    pendingNavigationController && pendingNavigationController.abort();\n    pendingNavigationController = null;\n    pendingAction = historyAction;\n    isUninterruptedRevalidation =\n      (opts && opts.startUninterruptedRevalidation) === true;\n\n    // Save the current scroll position every time we start a new navigation,\n    // and track whether we should reset scroll on completion\n    saveScrollPosition(state.location, state.matches);\n    pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n    let loadingNavigation = opts && opts.overrideNavigation;\n    let matches = matchRoutes(dataRoutes, location, init.basename);\n\n    // Short circuit with a 404 on the root error boundary if we match nothing\n    if (!matches) {\n      let error = getInternalRouterError(404, { pathname: location.pathname });\n      let { matches: notFoundMatches, route } =\n        getShortCircuitMatches(dataRoutes);\n      // Cancel all pending deferred on 404s since we don't keep any routes\n      cancelActiveDeferreds();\n      completeNavigation(location, {\n        matches: notFoundMatches,\n        loaderData: {},\n        errors: {\n          [route.id]: error,\n        },\n      });\n      return;\n    }\n\n    // Short circuit if it's only a hash change\n    if (isHashChangeOnly(state.location, location)) {\n      completeNavigation(location, { matches });\n      return;\n    }\n\n    // Create a controller/Request for this navigation\n    pendingNavigationController = new AbortController();\n    let request = createClientSideRequest(\n      location,\n      pendingNavigationController.signal,\n      opts && opts.submission\n    );\n    let pendingActionData: RouteData | undefined;\n    let pendingError: RouteData | undefined;\n\n    if (opts && opts.pendingError) {\n      // If we have a pendingError, it means the user attempted a GET submission\n      // with binary FormData so assign here and skip to handleLoaders.  That\n      // way we handle calling loaders above the boundary etc.  It's not really\n      // different from an actionError in that sense.\n      pendingError = {\n        [findNearestBoundary(matches).route.id]: opts.pendingError,\n      };\n    } else if (\n      opts &&\n      opts.submission &&\n      isMutationMethod(opts.submission.formMethod)\n    ) {\n      // Call action if we received an action submission\n      let actionOutput = await handleAction(\n        request,\n        location,\n        opts.submission,\n        matches,\n        { replace: opts.replace }\n      );\n\n      if (actionOutput.shortCircuited) {\n        return;\n      }\n\n      pendingActionData = actionOutput.pendingActionData;\n      pendingError = actionOutput.pendingActionError;\n\n      let navigation: NavigationStates[\"Loading\"] = {\n        state: \"loading\",\n        location,\n        ...opts.submission,\n      };\n      loadingNavigation = navigation;\n\n      // Create a GET request for the loaders\n      request = new Request(request.url, { signal: request.signal });\n    }\n\n    // Call loaders\n    let { shortCircuited, loaderData, errors } = await handleLoaders(\n      request,\n      location,\n      matches,\n      loadingNavigation,\n      opts && opts.submission,\n      opts && opts.replace,\n      pendingActionData,\n      pendingError\n    );\n\n    if (shortCircuited) {\n      return;\n    }\n\n    // Clean up now that the action/loaders have completed.  Don't clean up if\n    // we short circuited because pendingNavigationController will have already\n    // been assigned to a new controller for the next navigation\n    pendingNavigationController = null;\n\n    completeNavigation(location, {\n      matches,\n      ...(pendingActionData ? { actionData: pendingActionData } : {}),\n      loaderData,\n      errors,\n    });\n  }\n\n  // Call the action matched by the leaf route for this navigation and handle\n  // redirects/errors\n  async function handleAction(\n    request: Request,\n    location: Location,\n    submission: Submission,\n    matches: AgnosticDataRouteMatch[],\n    opts?: { replace?: boolean }\n  ): Promise<HandleActionResult> {\n    interruptActiveLoads();\n\n    // Put us in a submitting state\n    let navigation: NavigationStates[\"Submitting\"] = {\n      state: \"submitting\",\n      location,\n      ...submission,\n    };\n    updateState({ navigation });\n\n    // Call our action and get the result\n    let result: DataResult;\n    let actionMatch = getTargetMatch(matches, location);\n\n    if (!actionMatch.route.action) {\n      result = {\n        type: ResultType.error,\n        error: getInternalRouterError(405, {\n          method: request.method,\n          pathname: location.pathname,\n          routeId: actionMatch.route.id,\n        }),\n      };\n    } else {\n      result = await callLoaderOrAction(\n        \"action\",\n        request,\n        actionMatch,\n        matches,\n        router.basename\n      );\n\n      if (request.signal.aborted) {\n        return { shortCircuited: true };\n      }\n    }\n\n    if (isRedirectResult(result)) {\n      let replace: boolean;\n      if (opts && opts.replace != null) {\n        replace = opts.replace;\n      } else {\n        // If the user didn't explicity indicate replace behavior, replace if\n        // we redirected to the exact same location we're currently at to avoid\n        // double back-buttons\n        replace =\n          result.location === state.location.pathname + state.location.search;\n      }\n      await startRedirectNavigation(state, result, { submission, replace });\n      return { shortCircuited: true };\n    }\n\n    if (isErrorResult(result)) {\n      // Store off the pending error - we use it to determine which loaders\n      // to call and will commit it when we complete the navigation\n      let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n      // By default, all submissions are REPLACE navigations, but if the\n      // action threw an error that'll be rendered in an errorElement, we fall\n      // back to PUSH so that the user can use the back button to get back to\n      // the pre-submission form location to try again\n      if ((opts && opts.replace) !== true) {\n        pendingAction = HistoryAction.Push;\n      }\n\n      return {\n        // Send back an empty object we can use to clear out any prior actionData\n        pendingActionData: {},\n        pendingActionError: { [boundaryMatch.route.id]: result.error },\n      };\n    }\n\n    if (isDeferredResult(result)) {\n      throw new Error(\"defer() is not supported in actions\");\n    }\n\n    return {\n      pendingActionData: { [actionMatch.route.id]: result.data },\n    };\n  }\n\n  // Call all applicable loaders for the given matches, handling redirects,\n  // errors, etc.\n  async function handleLoaders(\n    request: Request,\n    location: Location,\n    matches: AgnosticDataRouteMatch[],\n    overrideNavigation?: Navigation,\n    submission?: Submission,\n    replace?: boolean,\n    pendingActionData?: RouteData,\n    pendingError?: RouteData\n  ): Promise<HandleLoadersResult> {\n    // Figure out the right navigation we want to use for data loading\n    let loadingNavigation = overrideNavigation;\n    if (!loadingNavigation) {\n      let navigation: NavigationStates[\"Loading\"] = {\n        state: \"loading\",\n        location,\n        formMethod: undefined,\n        formAction: undefined,\n        formEncType: undefined,\n        formData: undefined,\n        ...submission,\n      };\n      loadingNavigation = navigation;\n    }\n\n    // If this was a redirect from an action we don't have a \"submission\" but\n    // we have it on the loading navigation so use that if available\n    let activeSubmission = submission\n      ? submission\n      : loadingNavigation.formMethod &&\n        loadingNavigation.formAction &&\n        loadingNavigation.formData &&\n        loadingNavigation.formEncType\n      ? {\n          formMethod: loadingNavigation.formMethod,\n          formAction: loadingNavigation.formAction,\n          formData: loadingNavigation.formData,\n          formEncType: loadingNavigation.formEncType,\n        }\n      : undefined;\n\n    let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n      state,\n      matches,\n      activeSubmission,\n      location,\n      isRevalidationRequired,\n      cancelledDeferredRoutes,\n      cancelledFetcherLoads,\n      pendingActionData,\n      pendingError,\n      fetchLoadMatches\n    );\n\n    // Cancel pending deferreds for no-longer-matched routes or routes we're\n    // about to reload.  Note that if this is an action reload we would have\n    // already cancelled all pending deferreds so this would be a no-op\n    cancelActiveDeferreds(\n      (routeId) =>\n        !(matches && matches.some((m) => m.route.id === routeId)) ||\n        (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n    );\n\n    // Short circuit if we have no loaders to run\n    if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n      completeNavigation(location, {\n        matches,\n        loaderData: {},\n        // Commit pending error if we're short circuiting\n        errors: pendingError || null,\n        ...(pendingActionData ? { actionData: pendingActionData } : {}),\n      });\n      return { shortCircuited: true };\n    }\n\n    // If this is an uninterrupted revalidation, we remain in our current idle\n    // state.  If not, we need to switch to our loading state and load data,\n    // preserving any new action data or existing action data (in the case of\n    // a revalidation interrupting an actionReload)\n    if (!isUninterruptedRevalidation) {\n      revalidatingFetchers.forEach(([key]) => {\n        let fetcher = state.fetchers.get(key);\n        let revalidatingFetcher: FetcherStates[\"Loading\"] = {\n          state: \"loading\",\n          data: fetcher && fetcher.data,\n          formMethod: undefined,\n          formAction: undefined,\n          formEncType: undefined,\n          formData: undefined,\n          \" _hasFetcherDoneAnything \": true,\n        };\n        state.fetchers.set(key, revalidatingFetcher);\n      });\n      let actionData = pendingActionData || state.actionData;\n      updateState({\n        navigation: loadingNavigation,\n        ...(actionData\n          ? Object.keys(actionData).length === 0\n            ? { actionData: null }\n            : { actionData }\n          : {}),\n        ...(revalidatingFetchers.length > 0\n          ? { fetchers: new Map(state.fetchers) }\n          : {}),\n      });\n    }\n\n    pendingNavigationLoadId = ++incrementingLoadId;\n    revalidatingFetchers.forEach(([key]) =>\n      fetchControllers.set(key, pendingNavigationController!)\n    );\n\n    let { results, loaderResults, fetcherResults } =\n      await callLoadersAndMaybeResolveData(\n        state.matches,\n        matches,\n        matchesToLoad,\n        revalidatingFetchers,\n        request\n      );\n\n    if (request.signal.aborted) {\n      return { shortCircuited: true };\n    }\n\n    // Clean up _after_ loaders have completed.  Don't clean up if we short\n    // circuited because fetchControllers would have been aborted and\n    // reassigned to new controllers for the next navigation\n    revalidatingFetchers.forEach(([key]) => fetchControllers.delete(key));\n\n    // If any loaders returned a redirect Response, start a new REPLACE navigation\n    let redirect = findRedirect(results);\n    if (redirect) {\n      await startRedirectNavigation(state, redirect, { replace });\n      return { shortCircuited: true };\n    }\n\n    // Process and commit output from loaders\n    let { loaderData, errors } = processLoaderData(\n      state,\n      matches,\n      matchesToLoad,\n      loaderResults,\n      pendingError,\n      revalidatingFetchers,\n      fetcherResults,\n      activeDeferreds\n    );\n\n    // Wire up subscribers to update loaderData as promises settle\n    activeDeferreds.forEach((deferredData, routeId) => {\n      deferredData.subscribe((aborted) => {\n        // Note: No need to updateState here since the TrackedPromise on\n        // loaderData is stable across resolve/reject\n        // Remove this instance if we were aborted or if promises have settled\n        if (aborted || deferredData.done) {\n          activeDeferreds.delete(routeId);\n        }\n      });\n    });\n\n    markFetchRedirectsDone();\n    let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n\n    return {\n      loaderData,\n      errors,\n      ...(didAbortFetchLoads || revalidatingFetchers.length > 0\n        ? { fetchers: new Map(state.fetchers) }\n        : {}),\n    };\n  }\n\n  function getFetcher<TData = any>(key: string): Fetcher<TData> {\n    return state.fetchers.get(key) || IDLE_FETCHER;\n  }\n\n  // Trigger a fetcher load/submit for the given fetcher key\n  function fetch(\n    key: string,\n    routeId: string,\n    href: string,\n    opts?: RouterFetchOptions\n  ) {\n    if (isServer) {\n      throw new Error(\n        \"router.fetch() was called during the server render, but it shouldn't be. \" +\n          \"You are likely calling a useFetcher() method in the body of your component. \" +\n          \"Try moving it to a useEffect or a callback.\"\n      );\n    }\n\n    if (fetchControllers.has(key)) abortFetcher(key);\n\n    let matches = matchRoutes(dataRoutes, href, init.basename);\n    if (!matches) {\n      setFetcherError(\n        key,\n        routeId,\n        getInternalRouterError(404, { pathname: href })\n      );\n      return;\n    }\n\n    let { path, submission } = normalizeNavigateOptions(href, opts, true);\n    let match = getTargetMatch(matches, path);\n\n    if (submission && isMutationMethod(submission.formMethod)) {\n      handleFetcherAction(key, routeId, path, match, matches, submission);\n      return;\n    }\n\n    // Store off the match so we can call it's shouldRevalidate on subsequent\n    // revalidations\n    fetchLoadMatches.set(key, [path, match, matches]);\n    handleFetcherLoader(key, routeId, path, match, matches, submission);\n  }\n\n  // Call the action for the matched fetcher.submit(), and then handle redirects,\n  // errors, and revalidation\n  async function handleFetcherAction(\n    key: string,\n    routeId: string,\n    path: string,\n    match: AgnosticDataRouteMatch,\n    requestMatches: AgnosticDataRouteMatch[],\n    submission: Submission\n  ) {\n    interruptActiveLoads();\n    fetchLoadMatches.delete(key);\n\n    if (!match.route.action) {\n      let error = getInternalRouterError(405, {\n        method: submission.formMethod,\n        pathname: path,\n        routeId: routeId,\n      });\n      setFetcherError(key, routeId, error);\n      return;\n    }\n\n    // Put this fetcher into it's submitting state\n    let existingFetcher = state.fetchers.get(key);\n    let fetcher: FetcherStates[\"Submitting\"] = {\n      state: \"submitting\",\n      ...submission,\n      data: existingFetcher && existingFetcher.data,\n      \" _hasFetcherDoneAnything \": true,\n    };\n    state.fetchers.set(key, fetcher);\n    updateState({ fetchers: new Map(state.fetchers) });\n\n    // Call the action for the fetcher\n    let abortController = new AbortController();\n    let fetchRequest = createClientSideRequest(\n      path,\n      abortController.signal,\n      submission\n    );\n    fetchControllers.set(key, abortController);\n\n    let actionResult = await callLoaderOrAction(\n      \"action\",\n      fetchRequest,\n      match,\n      requestMatches,\n      router.basename\n    );\n\n    if (fetchRequest.signal.aborted) {\n      // We can delete this so long as we weren't aborted by ou our own fetcher\n      // re-submit which would have put _new_ controller is in fetchControllers\n      if (fetchControllers.get(key) === abortController) {\n        fetchControllers.delete(key);\n      }\n      return;\n    }\n\n    if (isRedirectResult(actionResult)) {\n      fetchControllers.delete(key);\n      fetchRedirectIds.add(key);\n      let loadingFetcher: FetcherStates[\"Loading\"] = {\n        state: \"loading\",\n        ...submission,\n        data: undefined,\n        \" _hasFetcherDoneAnything \": true,\n      };\n      state.fetchers.set(key, loadingFetcher);\n      updateState({ fetchers: new Map(state.fetchers) });\n\n      return startRedirectNavigation(state, actionResult, {\n        isFetchActionRedirect: true,\n      });\n    }\n\n    // Process any non-redirect errors thrown\n    if (isErrorResult(actionResult)) {\n      setFetcherError(key, routeId, actionResult.error);\n      return;\n    }\n\n    if (isDeferredResult(actionResult)) {\n      invariant(false, \"defer() is not supported in actions\");\n    }\n\n    // Start the data load for current matches, or the next location if we're\n    // in the middle of a navigation\n    let nextLocation = state.navigation.location || state.location;\n    let revalidationRequest = createClientSideRequest(\n      nextLocation,\n      abortController.signal\n    );\n    let matches =\n      state.navigation.state !== \"idle\"\n        ? matchRoutes(dataRoutes, state.navigation.location, init.basename)\n        : state.matches;\n\n    invariant(matches, \"Didn't find any matches after fetcher action\");\n\n    let loadId = ++incrementingLoadId;\n    fetchReloadIds.set(key, loadId);\n\n    let loadFetcher: FetcherStates[\"Loading\"] = {\n      state: \"loading\",\n      data: actionResult.data,\n      ...submission,\n      \" _hasFetcherDoneAnything \": true,\n    };\n    state.fetchers.set(key, loadFetcher);\n\n    let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n      state,\n      matches,\n      submission,\n      nextLocation,\n      isRevalidationRequired,\n      cancelledDeferredRoutes,\n      cancelledFetcherLoads,\n      { [match.route.id]: actionResult.data },\n      undefined, // No need to send through errors since we short circuit above\n      fetchLoadMatches\n    );\n\n    // Put all revalidating fetchers into the loading state, except for the\n    // current fetcher which we want to keep in it's current loading state which\n    // contains it's action submission info + action data\n    revalidatingFetchers\n      .filter(([staleKey]) => staleKey !== key)\n      .forEach(([staleKey]) => {\n        let existingFetcher = state.fetchers.get(staleKey);\n        let revalidatingFetcher: FetcherStates[\"Loading\"] = {\n          state: \"loading\",\n          data: existingFetcher && existingFetcher.data,\n          formMethod: undefined,\n          formAction: undefined,\n          formEncType: undefined,\n          formData: undefined,\n          \" _hasFetcherDoneAnything \": true,\n        };\n        state.fetchers.set(staleKey, revalidatingFetcher);\n        fetchControllers.set(staleKey, abortController);\n      });\n\n    updateState({ fetchers: new Map(state.fetchers) });\n\n    let { results, loaderResults, fetcherResults } =\n      await callLoadersAndMaybeResolveData(\n        state.matches,\n        matches,\n        matchesToLoad,\n        revalidatingFetchers,\n        revalidationRequest\n      );\n\n    if (abortController.signal.aborted) {\n      return;\n    }\n\n    fetchReloadIds.delete(key);\n    fetchControllers.delete(key);\n    revalidatingFetchers.forEach(([staleKey]) =>\n      fetchControllers.delete(staleKey)\n    );\n\n    let redirect = findRedirect(results);\n    if (redirect) {\n      return startRedirectNavigation(state, redirect);\n    }\n\n    // Process and commit output from loaders\n    let { loaderData, errors } = processLoaderData(\n      state,\n      state.matches,\n      matchesToLoad,\n      loaderResults,\n      undefined,\n      revalidatingFetchers,\n      fetcherResults,\n      activeDeferreds\n    );\n\n    let doneFetcher: FetcherStates[\"Idle\"] = {\n      state: \"idle\",\n      data: actionResult.data,\n      formMethod: undefined,\n      formAction: undefined,\n      formEncType: undefined,\n      formData: undefined,\n      \" _hasFetcherDoneAnything \": true,\n    };\n    state.fetchers.set(key, doneFetcher);\n\n    let didAbortFetchLoads = abortStaleFetchLoads(loadId);\n\n    // If we are currently in a navigation loading state and this fetcher is\n    // more recent than the navigation, we want the newer data so abort the\n    // navigation and complete it with the fetcher data\n    if (\n      state.navigation.state === \"loading\" &&\n      loadId > pendingNavigationLoadId\n    ) {\n      invariant(pendingAction, \"Expected pending action\");\n      pendingNavigationController && pendingNavigationController.abort();\n\n      completeNavigation(state.navigation.location, {\n        matches,\n        loaderData,\n        errors,\n        fetchers: new Map(state.fetchers),\n      });\n    } else {\n      // otherwise just update with the fetcher data, preserving any existing\n      // loaderData for loaders that did not need to reload.  We have to\n      // manually merge here since we aren't going through completeNavigation\n      updateState({\n        errors,\n        loaderData: mergeLoaderData(\n          state.loaderData,\n          loaderData,\n          matches,\n          errors\n        ),\n        ...(didAbortFetchLoads ? { fetchers: new Map(state.fetchers) } : {}),\n      });\n      isRevalidationRequired = false;\n    }\n  }\n\n  // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n  async function handleFetcherLoader(\n    key: string,\n    routeId: string,\n    path: string,\n    match: AgnosticDataRouteMatch,\n    matches: AgnosticDataRouteMatch[],\n    submission?: Submission\n  ) {\n    let existingFetcher = state.fetchers.get(key);\n    // Put this fetcher into it's loading state\n    let loadingFetcher: FetcherStates[\"Loading\"] = {\n      state: \"loading\",\n      formMethod: undefined,\n      formAction: undefined,\n      formEncType: undefined,\n      formData: undefined,\n      ...submission,\n      data: existingFetcher && existingFetcher.data,\n      \" _hasFetcherDoneAnything \": true,\n    };\n    state.fetchers.set(key, loadingFetcher);\n    updateState({ fetchers: new Map(state.fetchers) });\n\n    // Call the loader for this fetcher route match\n    let abortController = new AbortController();\n    let fetchRequest = createClientSideRequest(path, abortController.signal);\n    fetchControllers.set(key, abortController);\n    let result: DataResult = await callLoaderOrAction(\n      \"loader\",\n      fetchRequest,\n      match,\n      matches,\n      router.basename\n    );\n\n    // Deferred isn't supported or fetcher loads, await everything and treat it\n    // as a normal load.  resolveDeferredData will return undefined if this\n    // fetcher gets aborted, so we just leave result untouched and short circuit\n    // below if that happens\n    if (isDeferredResult(result)) {\n      result =\n        (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n        result;\n    }\n\n    // We can delete this so long as we weren't aborted by ou our own fetcher\n    // re-load which would have put _new_ controller is in fetchControllers\n    if (fetchControllers.get(key) === abortController) {\n      fetchControllers.delete(key);\n    }\n\n    if (fetchRequest.signal.aborted) {\n      return;\n    }\n\n    // If the loader threw a redirect Response, start a new REPLACE navigation\n    if (isRedirectResult(result)) {\n      await startRedirectNavigation(state, result);\n      return;\n    }\n\n    // Process any non-redirect errors thrown\n    if (isErrorResult(result)) {\n      let boundaryMatch = findNearestBoundary(state.matches, routeId);\n      state.fetchers.delete(key);\n      // TODO: In remix, this would reset to IDLE_NAVIGATION if it was a catch -\n      // do we need to behave any differently with our non-redirect errors?\n      // What if it was a non-redirect Response?\n      updateState({\n        fetchers: new Map(state.fetchers),\n        errors: {\n          [boundaryMatch.route.id]: result.error,\n        },\n      });\n      return;\n    }\n\n    invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n    // Put the fetcher back into an idle state\n    let doneFetcher: FetcherStates[\"Idle\"] = {\n      state: \"idle\",\n      data: result.data,\n      formMethod: undefined,\n      formAction: undefined,\n      formEncType: undefined,\n      formData: undefined,\n      \" _hasFetcherDoneAnything \": true,\n    };\n    state.fetchers.set(key, doneFetcher);\n    updateState({ fetchers: new Map(state.fetchers) });\n  }\n\n  /**\n   * Utility function to handle redirects returned from an action or loader.\n   * Normally, a redirect \"replaces\" the navigation that triggered it.  So, for\n   * example:\n   *\n   *  - user is on /a\n   *  - user clicks a link to /b\n   *  - loader for /b redirects to /c\n   *\n   * In a non-JS app the browser would track the in-flight navigation to /b and\n   * then replace it with /c when it encountered the redirect response.  In\n   * the end it would only ever update the URL bar with /c.\n   *\n   * In client-side routing using pushState/replaceState, we aim to emulate\n   * this behavior and we also do not update history until the end of the\n   * navigation (including processed redirects).  This means that we never\n   * actually touch history until we've processed redirects, so we just use\n   * the history action from the original navigation (PUSH or REPLACE).\n   */\n  async function startRedirectNavigation(\n    state: RouterState,\n    redirect: RedirectResult,\n    {\n      submission,\n      replace,\n      isFetchActionRedirect,\n    }: {\n      submission?: Submission;\n      replace?: boolean;\n      isFetchActionRedirect?: boolean;\n    } = {}\n  ) {\n    if (redirect.revalidate) {\n      isRevalidationRequired = true;\n    }\n\n    let redirectLocation = createLocation(\n      state.location,\n      redirect.location,\n      // TODO: This can be removed once we get rid of useTransition in Remix v2\n      {\n        _isRedirect: true,\n        ...(isFetchActionRedirect ? { _isFetchActionRedirect: true } : {}),\n      }\n    );\n    invariant(\n      redirectLocation,\n      \"Expected a location on the redirect navigation\"\n    );\n\n    // Check if this an external redirect that goes to a new origin\n    if (typeof window?.location !== \"undefined\") {\n      let newOrigin = createClientSideURL(redirect.location).origin;\n      if (window.location.origin !== newOrigin) {\n        if (replace) {\n          window.location.replace(redirect.location);\n        } else {\n          window.location.assign(redirect.location);\n        }\n        return;\n      }\n    }\n\n    // There's no need to abort on redirects, since we don't detect the\n    // redirect until the action/loaders have settled\n    pendingNavigationController = null;\n\n    let redirectHistoryAction =\n      replace === true ? HistoryAction.Replace : HistoryAction.Push;\n\n    // Use the incoming submission if provided, fallback on the active one in\n    // state.navigation\n    let { formMethod, formAction, formEncType, formData } = state.navigation;\n    if (!submission && formMethod && formAction && formData && formEncType) {\n      submission = {\n        formMethod,\n        formAction,\n        formEncType,\n        formData,\n      };\n    }\n\n    // If this was a 307/308 submission we want to preserve the HTTP method and\n    // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n    // redirected location\n    if (\n      redirectPreserveMethodStatusCodes.has(redirect.status) &&\n      submission &&\n      isMutationMethod(submission.formMethod)\n    ) {\n      await startNavigation(redirectHistoryAction, redirectLocation, {\n        submission: {\n          ...submission,\n          formAction: redirect.location,\n        },\n      });\n    } else {\n      // Otherwise, we kick off a new loading navigation, preserving the\n      // submission info for the duration of this navigation\n      await startNavigation(redirectHistoryAction, redirectLocation, {\n        overrideNavigation: {\n          state: \"loading\",\n          location: redirectLocation,\n          formMethod: submission ? submission.formMethod : undefined,\n          formAction: submission ? submission.formAction : undefined,\n          formEncType: submission ? submission.formEncType : undefined,\n          formData: submission ? submission.formData : undefined,\n        },\n      });\n    }\n  }\n\n  async function callLoadersAndMaybeResolveData(\n    currentMatches: AgnosticDataRouteMatch[],\n    matches: AgnosticDataRouteMatch[],\n    matchesToLoad: AgnosticDataRouteMatch[],\n    fetchersToLoad: RevalidatingFetcher[],\n    request: Request\n  ) {\n    // Call all navigation loaders and revalidating fetcher loaders in parallel,\n    // then slice off the results into separate arrays so we can handle them\n    // accordingly\n    let results = await Promise.all([\n      ...matchesToLoad.map((match) =>\n        callLoaderOrAction(\"loader\", request, match, matches, router.basename)\n      ),\n      ...fetchersToLoad.map(([, href, match, fetchMatches]) =>\n        callLoaderOrAction(\n          \"loader\",\n          createClientSideRequest(href, request.signal),\n          match,\n          fetchMatches,\n          router.basename\n        )\n      ),\n    ]);\n    let loaderResults = results.slice(0, matchesToLoad.length);\n    let fetcherResults = results.slice(matchesToLoad.length);\n\n    await Promise.all([\n      resolveDeferredResults(\n        currentMatches,\n        matchesToLoad,\n        loaderResults,\n        request.signal,\n        false,\n        state.loaderData\n      ),\n      resolveDeferredResults(\n        currentMatches,\n        fetchersToLoad.map(([, , match]) => match),\n        fetcherResults,\n        request.signal,\n        true\n      ),\n    ]);\n\n    return { results, loaderResults, fetcherResults };\n  }\n\n  function interruptActiveLoads() {\n    // Every interruption triggers a revalidation\n    isRevalidationRequired = true;\n\n    // Cancel pending route-level deferreds and mark cancelled routes for\n    // revalidation\n    cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n    // Abort in-flight fetcher loads\n    fetchLoadMatches.forEach((_, key) => {\n      if (fetchControllers.has(key)) {\n        cancelledFetcherLoads.push(key);\n        abortFetcher(key);\n      }\n    });\n  }\n\n  function setFetcherError(key: string, routeId: string, error: any) {\n    let boundaryMatch = findNearestBoundary(state.matches, routeId);\n    deleteFetcher(key);\n    updateState({\n      errors: {\n        [boundaryMatch.route.id]: error,\n      },\n      fetchers: new Map(state.fetchers),\n    });\n  }\n\n  function deleteFetcher(key: string): void {\n    if (fetchControllers.has(key)) abortFetcher(key);\n    fetchLoadMatches.delete(key);\n    fetchReloadIds.delete(key);\n    fetchRedirectIds.delete(key);\n    state.fetchers.delete(key);\n  }\n\n  function abortFetcher(key: string) {\n    let controller = fetchControllers.get(key);\n    invariant(controller, `Expected fetch controller: ${key}`);\n    controller.abort();\n    fetchControllers.delete(key);\n  }\n\n  function markFetchersDone(keys: string[]) {\n    for (let key of keys) {\n      let fetcher = getFetcher(key);\n      let doneFetcher: FetcherStates[\"Idle\"] = {\n        state: \"idle\",\n        data: fetcher.data,\n        formMethod: undefined,\n        formAction: undefined,\n        formEncType: undefined,\n        formData: undefined,\n        \" _hasFetcherDoneAnything \": true,\n      };\n      state.fetchers.set(key, doneFetcher);\n    }\n  }\n\n  function markFetchRedirectsDone(): void {\n    let doneKeys = [];\n    for (let key of fetchRedirectIds) {\n      let fetcher = state.fetchers.get(key);\n      invariant(fetcher, `Expected fetcher: ${key}`);\n      if (fetcher.state === \"loading\") {\n        fetchRedirectIds.delete(key);\n        doneKeys.push(key);\n      }\n    }\n    markFetchersDone(doneKeys);\n  }\n\n  function abortStaleFetchLoads(landedId: number): boolean {\n    let yeetedKeys = [];\n    for (let [key, id] of fetchReloadIds) {\n      if (id < landedId) {\n        let fetcher = state.fetchers.get(key);\n        invariant(fetcher, `Expected fetcher: ${key}`);\n        if (fetcher.state === \"loading\") {\n          abortFetcher(key);\n          fetchReloadIds.delete(key);\n          yeetedKeys.push(key);\n        }\n      }\n    }\n    markFetchersDone(yeetedKeys);\n    return yeetedKeys.length > 0;\n  }\n\n  function cancelActiveDeferreds(\n    predicate?: (routeId: string) => boolean\n  ): string[] {\n    let cancelledRouteIds: string[] = [];\n    activeDeferreds.forEach((dfd, routeId) => {\n      if (!predicate || predicate(routeId)) {\n        // Cancel the deferred - but do not remove from activeDeferreds here -\n        // we rely on the subscribers to do that so our tests can assert proper\n        // cleanup via _internalActiveDeferreds\n        dfd.cancel();\n        cancelledRouteIds.push(routeId);\n        activeDeferreds.delete(routeId);\n      }\n    });\n    return cancelledRouteIds;\n  }\n\n  // Opt in to capturing and reporting scroll positions during navigations,\n  // used by the <ScrollRestoration> component\n  function enableScrollRestoration(\n    positions: Record<string, number>,\n    getPosition: GetScrollPositionFunction,\n    getKey?: GetScrollRestorationKeyFunction\n  ) {\n    savedScrollPositions = positions;\n    getScrollPosition = getPosition;\n    getScrollRestorationKey = getKey || ((location) => location.key);\n\n    // Perform initial hydration scroll restoration, since we miss the boat on\n    // the initial updateState() because we've not yet rendered <ScrollRestoration/>\n    // and therefore have no savedScrollPositions available\n    if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n      initialScrollRestored = true;\n      let y = getSavedScrollPosition(state.location, state.matches);\n      if (y != null) {\n        updateState({ restoreScrollPosition: y });\n      }\n    }\n\n    return () => {\n      savedScrollPositions = null;\n      getScrollPosition = null;\n      getScrollRestorationKey = null;\n    };\n  }\n\n  function saveScrollPosition(\n    location: Location,\n    matches: AgnosticDataRouteMatch[]\n  ): void {\n    if (savedScrollPositions && getScrollRestorationKey && getScrollPosition) {\n      let userMatches = matches.map((m) =>\n        createUseMatchesMatch(m, state.loaderData)\n      );\n      let key = getScrollRestorationKey(location, userMatches) || location.key;\n      savedScrollPositions[key] = getScrollPosition();\n    }\n  }\n\n  function getSavedScrollPosition(\n    location: Location,\n    matches: AgnosticDataRouteMatch[]\n  ): number | null {\n    if (savedScrollPositions && getScrollRestorationKey && getScrollPosition) {\n      let userMatches = matches.map((m) =>\n        createUseMatchesMatch(m, state.loaderData)\n      );\n      let key = getScrollRestorationKey(location, userMatches) || location.key;\n      let y = savedScrollPositions[key];\n      if (typeof y === \"number\") {\n        return y;\n      }\n    }\n    return null;\n  }\n\n  router = {\n    get basename() {\n      return init.basename;\n    },\n    get state() {\n      return state;\n    },\n    get routes() {\n      return dataRoutes;\n    },\n    initialize,\n    subscribe,\n    enableScrollRestoration,\n    navigate,\n    fetch,\n    revalidate,\n    // Passthrough to history-aware createHref used by useHref so we get proper\n    // hash-aware URLs in DOM paths\n    createHref: (to: To) => init.history.createHref(to),\n    encodeLocation: (to: To) => init.history.encodeLocation(to),\n    getFetcher,\n    deleteFetcher,\n    dispose,\n    _internalFetchControllers: fetchControllers,\n    _internalActiveDeferreds: activeDeferreds,\n  };\n\n  return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport function createStaticHandler(\n  routes: AgnosticRouteObject[],\n  opts?: {\n    basename?: string;\n  }\n): StaticHandler {\n  invariant(\n    routes.length > 0,\n    \"You must provide a non-empty routes array to createStaticHandler\"\n  );\n\n  let dataRoutes = convertRoutesToDataRoutes(routes);\n  let basename = (opts ? opts.basename : null) || \"/\";\n\n  /**\n   * The query() method is intended for document requests, in which we want to\n   * call an optional action and potentially multiple loaders for all nested\n   * routes.  It returns a StaticHandlerContext object, which is very similar\n   * to the router state (location, loaderData, actionData, errors, etc.) and\n   * also adds SSR-specific information such as the statusCode and headers\n   * from action/loaders Responses.\n   *\n   * It _should_ never throw and should report all errors through the\n   * returned context.errors object, properly associating errors to their error\n   * boundary.  Additionally, it tracks _deepestRenderedBoundaryId which can be\n   * used to emulate React error boundaries during SSr by performing a second\n   * pass only down to the boundaryId.\n   *\n   * The one exception where we do not return a StaticHandlerContext is when a\n   * redirect response is returned or thrown from any action/loader.  We\n   * propagate that out and return the raw Response so the HTTP server can\n   * return it directly.\n   */\n  async function query(\n    request: Request,\n    { requestContext }: { requestContext?: unknown } = {}\n  ): Promise<StaticHandlerContext | Response> {\n    let url = new URL(request.url);\n    let method = request.method.toLowerCase();\n    let location = createLocation(\"\", createPath(url), null, \"default\");\n    let matches = matchRoutes(dataRoutes, location, basename);\n\n    // SSR supports HEAD requests while SPA doesn't\n    if (!isValidMethod(method) && method !== \"head\") {\n      let error = getInternalRouterError(405, { method });\n      let { matches: methodNotAllowedMatches, route } =\n        getShortCircuitMatches(dataRoutes);\n      return {\n        basename,\n        location,\n        matches: methodNotAllowedMatches,\n        loaderData: {},\n        actionData: null,\n        errors: {\n          [route.id]: error,\n        },\n        statusCode: error.status,\n        loaderHeaders: {},\n        actionHeaders: {},\n      };\n    } else if (!matches) {\n      let error = getInternalRouterError(404, { pathname: location.pathname });\n      let { matches: notFoundMatches, route } =\n        getShortCircuitMatches(dataRoutes);\n      return {\n        basename,\n        location,\n        matches: notFoundMatches,\n        loaderData: {},\n        actionData: null,\n        errors: {\n          [route.id]: error,\n        },\n        statusCode: error.status,\n        loaderHeaders: {},\n        actionHeaders: {},\n      };\n    }\n\n    let result = await queryImpl(request, location, matches, requestContext);\n    if (isResponse(result)) {\n      return result;\n    }\n\n    // When returning StaticHandlerContext, we patch back in the location here\n    // since we need it for React Context.  But this helps keep our submit and\n    // loadRouteData operating on a Request instead of a Location\n    return { location, basename, ...result };\n  }\n\n  /**\n   * The queryRoute() method is intended for targeted route requests, either\n   * for fetch ?_data requests or resource route requests.  In this case, we\n   * are only ever calling a single action or loader, and we are returning the\n   * returned value directly.  In most cases, this will be a Response returned\n   * from the action/loader, but it may be a primitive or other value as well -\n   * and in such cases the calling context should handle that accordingly.\n   *\n   * We do respect the throw/return differentiation, so if an action/loader\n   * throws, then this method will throw the value.  This is important so we\n   * can do proper boundary identification in Remix where a thrown Response\n   * must go to the Catch Boundary but a returned Response is happy-path.\n   *\n   * One thing to note is that any Router-initiated Errors that make sense\n   * to associate with a status code will be thrown as an ErrorResponse\n   * instance which include the raw Error, such that the calling context can\n   * serialize the error as they see fit while including the proper response\n   * code.  Examples here are 404 and 405 errors that occur prior to reaching\n   * any user-defined loaders.\n   */\n  async function queryRoute(\n    request: Request,\n    {\n      routeId,\n      requestContext,\n    }: { requestContext?: unknown; routeId?: string } = {}\n  ): Promise<any> {\n    let url = new URL(request.url);\n    let method = request.method.toLowerCase();\n    let location = createLocation(\"\", createPath(url), null, \"default\");\n    let matches = matchRoutes(dataRoutes, location, basename);\n\n    // SSR supports HEAD requests while SPA doesn't\n    if (!isValidMethod(method) && method !== \"head\") {\n      throw getInternalRouterError(405, { method });\n    } else if (!matches) {\n      throw getInternalRouterError(404, { pathname: location.pathname });\n    }\n\n    let match = routeId\n      ? matches.find((m) => m.route.id === routeId)\n      : getTargetMatch(matches, location);\n\n    if (routeId && !match) {\n      throw getInternalRouterError(403, {\n        pathname: location.pathname,\n        routeId,\n      });\n    } else if (!match) {\n      // This should never hit I don't think?\n      throw getInternalRouterError(404, { pathname: location.pathname });\n    }\n\n    let result = await queryImpl(\n      request,\n      location,\n      matches,\n      requestContext,\n      match\n    );\n    if (isResponse(result)) {\n      return result;\n    }\n\n    let error = result.errors ? Object.values(result.errors)[0] : undefined;\n    if (error !== undefined) {\n      // If we got back result.errors, that means the loader/action threw\n      // _something_ that wasn't a Response, but it's not guaranteed/required\n      // to be an `instanceof Error` either, so we have to use throw here to\n      // preserve the \"error\" state outside of queryImpl.\n      throw error;\n    }\n\n    // Pick off the right state value to return\n    let routeData = [result.actionData, result.loaderData].find((v) => v);\n    return Object.values(routeData || {})[0];\n  }\n\n  async function queryImpl(\n    request: Request,\n    location: Location,\n    matches: AgnosticDataRouteMatch[],\n    requestContext: unknown,\n    routeMatch?: AgnosticDataRouteMatch\n  ): Promise<Omit<StaticHandlerContext, \"location\" | \"basename\"> | Response> {\n    invariant(\n      request.signal,\n      \"query()/queryRoute() requests must contain an AbortController signal\"\n    );\n\n    try {\n      if (isMutationMethod(request.method.toLowerCase())) {\n        let result = await submit(\n          request,\n          matches,\n          routeMatch || getTargetMatch(matches, location),\n          requestContext,\n          routeMatch != null\n        );\n        return result;\n      }\n\n      let result = await loadRouteData(\n        request,\n        matches,\n        requestContext,\n        routeMatch\n      );\n      return isResponse(result)\n        ? result\n        : {\n            ...result,\n            actionData: null,\n            actionHeaders: {},\n          };\n    } catch (e) {\n      // If the user threw/returned a Response in callLoaderOrAction, we throw\n      // it to bail out and then return or throw here based on whether the user\n      // returned or threw\n      if (isQueryRouteResponse(e)) {\n        if (e.type === ResultType.error && !isRedirectResponse(e.response)) {\n          throw e.response;\n        }\n        return e.response;\n      }\n      // Redirects are always returned since they don't propagate to catch\n      // boundaries\n      if (isRedirectResponse(e)) {\n        return e;\n      }\n      throw e;\n    }\n  }\n\n  async function submit(\n    request: Request,\n    matches: AgnosticDataRouteMatch[],\n    actionMatch: AgnosticDataRouteMatch,\n    requestContext: unknown,\n    isRouteRequest: boolean\n  ): Promise<Omit<StaticHandlerContext, \"location\" | \"basename\"> | Response> {\n    let result: DataResult;\n\n    if (!actionMatch.route.action) {\n      let error = getInternalRouterError(405, {\n        method: request.method,\n        pathname: new URL(request.url).pathname,\n        routeId: actionMatch.route.id,\n      });\n      if (isRouteRequest) {\n        throw error;\n      }\n      result = {\n        type: ResultType.error,\n        error,\n      };\n    } else {\n      result = await callLoaderOrAction(\n        \"action\",\n        request,\n        actionMatch,\n        matches,\n        basename,\n        true,\n        isRouteRequest,\n        requestContext\n      );\n\n      if (request.signal.aborted) {\n        let method = isRouteRequest ? \"queryRoute\" : \"query\";\n        throw new Error(`${method}() call aborted`);\n      }\n    }\n\n    if (isRedirectResult(result)) {\n      // Uhhhh - this should never happen, we should always throw these from\n      // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n      // can get back on the \"throw all redirect responses\" train here should\n      // this ever happen :/\n      throw new Response(null, {\n        status: result.status,\n        headers: {\n          Location: result.location,\n        },\n      });\n    }\n\n    if (isDeferredResult(result)) {\n      throw new Error(\"defer() is not supported in actions\");\n    }\n\n    if (isRouteRequest) {\n      // Note: This should only be non-Response values if we get here, since\n      // isRouteRequest should throw any Response received in callLoaderOrAction\n      if (isErrorResult(result)) {\n        throw result.error;\n      }\n\n      return {\n        matches: [actionMatch],\n        loaderData: {},\n        actionData: { [actionMatch.route.id]: result.data },\n        errors: null,\n        // Note: statusCode + headers are unused here since queryRoute will\n        // return the raw Response or value\n        statusCode: 200,\n        loaderHeaders: {},\n        actionHeaders: {},\n      };\n    }\n\n    if (isErrorResult(result)) {\n      // Store off the pending error - we use it to determine which loaders\n      // to call and will commit it when we complete the navigation\n      let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n      let context = await loadRouteData(\n        request,\n        matches,\n        requestContext,\n        undefined,\n        {\n          [boundaryMatch.route.id]: result.error,\n        }\n      );\n\n      // action status codes take precedence over loader status codes\n      return {\n        ...context,\n        statusCode: isRouteErrorResponse(result.error)\n          ? result.error.status\n          : 500,\n        actionData: null,\n        actionHeaders: {\n          ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n        },\n      };\n    }\n\n    // Create a GET request for the loaders\n    let loaderRequest = new Request(request.url, {\n      headers: request.headers,\n      redirect: request.redirect,\n      signal: request.signal,\n    });\n    let context = await loadRouteData(loaderRequest, matches, requestContext);\n\n    return {\n      ...context,\n      // action status codes take precedence over loader status codes\n      ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n      actionData: {\n        [actionMatch.route.id]: result.data,\n      },\n      actionHeaders: {\n        ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n      },\n    };\n  }\n\n  async function loadRouteData(\n    request: Request,\n    matches: AgnosticDataRouteMatch[],\n    requestContext: unknown,\n    routeMatch?: AgnosticDataRouteMatch,\n    pendingActionError?: RouteData\n  ): Promise<\n    | Omit<\n        StaticHandlerContext,\n        \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n      >\n    | Response\n  > {\n    let isRouteRequest = routeMatch != null;\n\n    // Short circuit if we have no loaders to run (queryRoute())\n    if (isRouteRequest && !routeMatch?.route.loader) {\n      throw getInternalRouterError(400, {\n        method: request.method,\n        pathname: new URL(request.url).pathname,\n        routeId: routeMatch?.route.id,\n      });\n    }\n\n    let requestMatches = routeMatch\n      ? [routeMatch]\n      : getLoaderMatchesUntilBoundary(\n          matches,\n          Object.keys(pendingActionError || {})[0]\n        );\n    let matchesToLoad = requestMatches.filter((m) => m.route.loader);\n\n    // Short circuit if we have no loaders to run (query())\n    if (matchesToLoad.length === 0) {\n      return {\n        matches,\n        // Add a null for all matched routes for proper revalidation on the client\n        loaderData: matches.reduce(\n          (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n          {}\n        ),\n        errors: pendingActionError || null,\n        statusCode: 200,\n        loaderHeaders: {},\n      };\n    }\n\n    let results = await Promise.all([\n      ...matchesToLoad.map((match) =>\n        callLoaderOrAction(\n          \"loader\",\n          request,\n          match,\n          matches,\n          basename,\n          true,\n          isRouteRequest,\n          requestContext\n        )\n      ),\n    ]);\n\n    if (request.signal.aborted) {\n      let method = isRouteRequest ? \"queryRoute\" : \"query\";\n      throw new Error(`${method}() call aborted`);\n    }\n\n    let executedLoaders = new Set<string>();\n    results.forEach((result, i) => {\n      executedLoaders.add(matchesToLoad[i].route.id);\n      // Can't do anything with these without the Remix side of things, so just\n      // cancel them for now\n      if (isDeferredResult(result)) {\n        result.deferredData.cancel();\n      }\n    });\n\n    // Process and commit output from loaders\n    let context = processRouteLoaderData(\n      matches,\n      matchesToLoad,\n      results,\n      pendingActionError\n    );\n\n    // Add a null for any non-loader matches for proper revalidation on the client\n    matches.forEach((match) => {\n      if (!executedLoaders.has(match.route.id)) {\n        context.loaderData[match.route.id] = null;\n      }\n    });\n\n    return {\n      ...context,\n      matches,\n    };\n  }\n\n  return {\n    dataRoutes,\n    query,\n    queryRoute,\n  };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n  routes: AgnosticDataRouteObject[],\n  context: StaticHandlerContext,\n  error: any\n) {\n  let newContext: StaticHandlerContext = {\n    ...context,\n    statusCode: 500,\n    errors: {\n      [context._deepestRenderedBoundaryId || routes[0].id]: error,\n    },\n  };\n  return newContext;\n}\n\nfunction isSubmissionNavigation(\n  opts: RouterNavigateOptions\n): opts is SubmissionNavigateOptions {\n  return opts != null && \"formData\" in opts;\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n  to: To,\n  opts?: RouterNavigateOptions,\n  isFetcher = false\n): {\n  path: string;\n  submission?: Submission;\n  error?: ErrorResponse;\n} {\n  let path = typeof to === \"string\" ? to : createPath(to);\n\n  // Return location verbatim on non-submission navigations\n  if (!opts || !isSubmissionNavigation(opts)) {\n    return { path };\n  }\n\n  if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n    return {\n      path,\n      error: getInternalRouterError(405, { method: opts.formMethod }),\n    };\n  }\n\n  // Create a Submission on non-GET navigations\n  let submission: Submission | undefined;\n  if (opts.formData) {\n    submission = {\n      formMethod: opts.formMethod || \"get\",\n      formAction: stripHashFromPath(path),\n      formEncType:\n        (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n      formData: opts.formData,\n    };\n\n    if (isMutationMethod(submission.formMethod)) {\n      return { path, submission };\n    }\n  }\n\n  // Flatten submission onto URLSearchParams for GET submissions\n  let parsedPath = parsePath(path);\n  try {\n    let searchParams = convertFormDataToSearchParams(opts.formData);\n    // Since fetcher GET submissions only run a single loader (as opposed to\n    // navigation GET submissions which run all loaders), we need to preserve\n    // any incoming ?index params\n    if (\n      isFetcher &&\n      parsedPath.search &&\n      hasNakedIndexQuery(parsedPath.search)\n    ) {\n      searchParams.append(\"index\", \"\");\n    }\n    parsedPath.search = `?${searchParams}`;\n  } catch (e) {\n    return {\n      path,\n      error: getInternalRouterError(400),\n    };\n  }\n\n  return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n  matches: AgnosticDataRouteMatch[],\n  boundaryId?: string\n) {\n  let boundaryMatches = matches;\n  if (boundaryId) {\n    let index = matches.findIndex((m) => m.route.id === boundaryId);\n    if (index >= 0) {\n      boundaryMatches = matches.slice(0, index);\n    }\n  }\n  return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n  state: RouterState,\n  matches: AgnosticDataRouteMatch[],\n  submission: Submission | undefined,\n  location: Location,\n  isRevalidationRequired: boolean,\n  cancelledDeferredRoutes: string[],\n  cancelledFetcherLoads: string[],\n  pendingActionData?: RouteData,\n  pendingError?: RouteData,\n  fetchLoadMatches?: Map<string, FetchLoadMatch>\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n  let actionResult = pendingError\n    ? Object.values(pendingError)[0]\n    : pendingActionData\n    ? Object.values(pendingActionData)[0]\n    : undefined;\n\n  // Pick navigation matches that are net-new or qualify for revalidation\n  let boundaryId = pendingError ? Object.keys(pendingError)[0] : undefined;\n  let boundaryMatches = getLoaderMatchesUntilBoundary(matches, boundaryId);\n  let navigationMatches = boundaryMatches.filter(\n    (match, index) =>\n      match.route.loader != null &&\n      (isNewLoader(state.loaderData, state.matches[index], match) ||\n        // If this route had a pending deferred cancelled it must be revalidated\n        cancelledDeferredRoutes.some((id) => id === match.route.id) ||\n        shouldRevalidateLoader(\n          state.location,\n          state.matches[index],\n          submission,\n          location,\n          match,\n          isRevalidationRequired,\n          actionResult\n        ))\n  );\n\n  // Pick fetcher.loads that need to be revalidated\n  let revalidatingFetchers: RevalidatingFetcher[] = [];\n  fetchLoadMatches &&\n    fetchLoadMatches.forEach(([href, match, fetchMatches], key) => {\n      // This fetcher was cancelled from a prior action submission - force reload\n      if (cancelledFetcherLoads.includes(key)) {\n        revalidatingFetchers.push([key, href, match, fetchMatches]);\n      } else if (isRevalidationRequired) {\n        let shouldRevalidate = shouldRevalidateLoader(\n          href,\n          match,\n          submission,\n          href,\n          match,\n          isRevalidationRequired,\n          actionResult\n        );\n        if (shouldRevalidate) {\n          revalidatingFetchers.push([key, href, match, fetchMatches]);\n        }\n      }\n    });\n\n  return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n  currentLoaderData: RouteData,\n  currentMatch: AgnosticDataRouteMatch,\n  match: AgnosticDataRouteMatch\n) {\n  let isNew =\n    // [a] -> [a, b]\n    !currentMatch ||\n    // [a, b] -> [a, c]\n    match.route.id !== currentMatch.route.id;\n\n  // Handle the case that we don't have data for a re-used route, potentially\n  // from a prior error or from a cancelled pending deferred\n  let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n  // Always load if this is a net-new route or we don't yet have data\n  return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n  currentMatch: AgnosticDataRouteMatch,\n  match: AgnosticDataRouteMatch\n) {\n  let currentPath = currentMatch.route.path;\n  return (\n    // param change for this match, /users/123 -> /users/456\n    currentMatch.pathname !== match.pathname ||\n    // splat param changed, which is not present in match.path\n    // e.g. /files/images/avatar.jpg -> files/finances.xls\n    (currentPath &&\n      currentPath.endsWith(\"*\") &&\n      currentMatch.params[\"*\"] !== match.params[\"*\"])\n  );\n}\n\nfunction shouldRevalidateLoader(\n  currentLocation: string | Location,\n  currentMatch: AgnosticDataRouteMatch,\n  submission: Submission | undefined,\n  location: string | Location,\n  match: AgnosticDataRouteMatch,\n  isRevalidationRequired: boolean,\n  actionResult: DataResult | undefined\n) {\n  let currentUrl = createClientSideURL(currentLocation);\n  let currentParams = currentMatch.params;\n  let nextUrl = createClientSideURL(location);\n  let nextParams = match.params;\n\n  // This is the default implementation as to when we revalidate.  If the route\n  // provides it's own implementation, then we give them full control but\n  // provide this value so they can leverage it if needed after they check\n  // their own specific use cases\n  // Note that fetchers always provide the same current/next locations so the\n  // URL-based checks here don't apply to fetcher shouldRevalidate calls\n  let defaultShouldRevalidate =\n    isNewRouteInstance(currentMatch, match) ||\n    // Clicked the same link, resubmitted a GET form\n    currentUrl.toString() === nextUrl.toString() ||\n    // Search params affect all loaders\n    currentUrl.search !== nextUrl.search ||\n    // Forced revalidation due to submission, useRevalidate, or X-Remix-Revalidate\n    isRevalidationRequired;\n\n  if (match.route.shouldRevalidate) {\n    let routeChoice = match.route.shouldRevalidate({\n      currentUrl,\n      currentParams,\n      nextUrl,\n      nextParams,\n      ...submission,\n      actionResult,\n      defaultShouldRevalidate,\n    });\n    if (typeof routeChoice === \"boolean\") {\n      return routeChoice;\n    }\n  }\n\n  return defaultShouldRevalidate;\n}\n\nasync function callLoaderOrAction(\n  type: \"loader\" | \"action\",\n  request: Request,\n  match: AgnosticDataRouteMatch,\n  matches: AgnosticDataRouteMatch[],\n  basename = \"/\",\n  isStaticRequest: boolean = false,\n  isRouteRequest: boolean = false,\n  requestContext?: unknown\n): Promise<DataResult> {\n  let resultType;\n  let result;\n\n  // Setup a promise we can race against so that abort signals short circuit\n  let reject: () => void;\n  let abortPromise = new Promise((_, r) => (reject = r));\n  let onReject = () => reject();\n  request.signal.addEventListener(\"abort\", onReject);\n\n  try {\n    let handler = match.route[type];\n    invariant<Function>(\n      handler,\n      `Could not find the ${type} to run on the \"${match.route.id}\" route`\n    );\n\n    result = await Promise.race([\n      handler({ request, params: match.params, context: requestContext }),\n      abortPromise,\n    ]);\n\n    invariant(\n      result !== undefined,\n      `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n        `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n        `function. Please return a value or \\`null\\`.`\n    );\n  } catch (e) {\n    resultType = ResultType.error;\n    result = e;\n  } finally {\n    request.signal.removeEventListener(\"abort\", onReject);\n  }\n\n  if (isResponse(result)) {\n    let status = result.status;\n\n    // Process redirects\n    if (redirectStatusCodes.has(status)) {\n      let location = result.headers.get(\"Location\");\n      invariant(\n        location,\n        \"Redirects returned/thrown from loaders/actions must have a Location header\"\n      );\n\n      let isAbsolute =\n        /^[a-z+]+:\\/\\//i.test(location) || location.startsWith(\"//\");\n\n      // Support relative routing in internal redirects\n      if (!isAbsolute) {\n        let activeMatches = matches.slice(0, matches.indexOf(match) + 1);\n        let routePathnames = getPathContributingMatches(activeMatches).map(\n          (match) => match.pathnameBase\n        );\n        let resolvedLocation = resolveTo(\n          location,\n          routePathnames,\n          new URL(request.url).pathname\n        );\n        invariant(\n          createPath(resolvedLocation),\n          `Unable to resolve redirect location: ${location}`\n        );\n\n        // Prepend the basename to the redirect location if we have one\n        if (basename) {\n          let path = resolvedLocation.pathname;\n          resolvedLocation.pathname =\n            path === \"/\" ? basename : joinPaths([basename, path]);\n        }\n\n        location = createPath(resolvedLocation);\n      }\n\n      // Don't process redirects in the router during static requests requests.\n      // Instead, throw the Response and let the server handle it with an HTTP\n      // redirect.  We also update the Location header in place in this flow so\n      // basename and relative routing is taken into account\n      if (isStaticRequest) {\n        result.headers.set(\"Location\", location);\n        throw result;\n      }\n\n      return {\n        type: ResultType.redirect,\n        status,\n        location,\n        revalidate: result.headers.get(\"X-Remix-Revalidate\") !== null,\n      };\n    }\n\n    // For SSR single-route requests, we want to hand Responses back directly\n    // without unwrapping.  We do this with the QueryRouteResponse wrapper\n    // interface so we can know whether it was returned or thrown\n    if (isRouteRequest) {\n      // eslint-disable-next-line no-throw-literal\n      throw {\n        type: resultType || ResultType.data,\n        response: result,\n      };\n    }\n\n    let data: any;\n    let contentType = result.headers.get(\"Content-Type\");\n    // Check between word boundaries instead of startsWith() due to the last\n    // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n    if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n      data = await result.json();\n    } else {\n      data = await result.text();\n    }\n\n    if (resultType === ResultType.error) {\n      return {\n        type: resultType,\n        error: new ErrorResponse(status, result.statusText, data),\n        headers: result.headers,\n      };\n    }\n\n    return {\n      type: ResultType.data,\n      data,\n      statusCode: result.status,\n      headers: result.headers,\n    };\n  }\n\n  if (resultType === ResultType.error) {\n    return { type: resultType, error: result };\n  }\n\n  if (result instanceof DeferredData) {\n    return { type: ResultType.deferred, deferredData: result };\n  }\n\n  return { type: ResultType.data, data: result };\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches.  During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n  location: string | Location,\n  signal: AbortSignal,\n  submission?: Submission\n): Request {\n  let url = createClientSideURL(stripHashFromPath(location)).toString();\n  let init: RequestInit = { signal };\n\n  if (submission && isMutationMethod(submission.formMethod)) {\n    let { formMethod, formEncType, formData } = submission;\n    init.method = formMethod.toUpperCase();\n    init.body =\n      formEncType === \"application/x-www-form-urlencoded\"\n        ? convertFormDataToSearchParams(formData)\n        : formData;\n  }\n\n  // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n  return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n  let searchParams = new URLSearchParams();\n\n  for (let [key, value] of formData.entries()) {\n    invariant(\n      typeof value === \"string\",\n      'File inputs are not supported with encType \"application/x-www-form-urlencoded\", ' +\n        'please use \"multipart/form-data\" instead.'\n    );\n    searchParams.append(key, value);\n  }\n\n  return searchParams;\n}\n\nfunction processRouteLoaderData(\n  matches: AgnosticDataRouteMatch[],\n  matchesToLoad: AgnosticDataRouteMatch[],\n  results: DataResult[],\n  pendingError: RouteData | undefined,\n  activeDeferreds?: Map<string, DeferredData>\n): {\n  loaderData: RouterState[\"loaderData\"];\n  errors: RouterState[\"errors\"] | null;\n  statusCode: number;\n  loaderHeaders: Record<string, Headers>;\n} {\n  // Fill in loaderData/errors from our loaders\n  let loaderData: RouterState[\"loaderData\"] = {};\n  let errors: RouterState[\"errors\"] | null = null;\n  let statusCode: number | undefined;\n  let foundError = false;\n  let loaderHeaders: Record<string, Headers> = {};\n\n  // Process loader results into state.loaderData/state.errors\n  results.forEach((result, index) => {\n    let id = matchesToLoad[index].route.id;\n    invariant(\n      !isRedirectResult(result),\n      \"Cannot handle redirect results in processLoaderData\"\n    );\n    if (isErrorResult(result)) {\n      // Look upwards from the matched route for the closest ancestor\n      // error boundary, defaulting to the root match\n      let boundaryMatch = findNearestBoundary(matches, id);\n      let error = result.error;\n      // If we have a pending action error, we report it at the highest-route\n      // that throws a loader error, and then clear it out to indicate that\n      // it was consumed\n      if (pendingError) {\n        error = Object.values(pendingError)[0];\n        pendingError = undefined;\n      }\n\n      errors = errors || {};\n\n      // Prefer higher error values if lower errors bubble to the same boundary\n      if (errors[boundaryMatch.route.id] == null) {\n        errors[boundaryMatch.route.id] = error;\n      }\n\n      // Clear our any prior loaderData for the throwing route\n      loaderData[id] = undefined;\n\n      // Once we find our first (highest) error, we set the status code and\n      // prevent deeper status codes from overriding\n      if (!foundError) {\n        foundError = true;\n        statusCode = isRouteErrorResponse(result.error)\n          ? result.error.status\n          : 500;\n      }\n      if (result.headers) {\n        loaderHeaders[id] = result.headers;\n      }\n    } else if (isDeferredResult(result)) {\n      activeDeferreds && activeDeferreds.set(id, result.deferredData);\n      loaderData[id] = result.deferredData.data;\n      // TODO: Add statusCode/headers once we wire up streaming in Remix\n    } else {\n      loaderData[id] = result.data;\n      // Error status codes always override success status codes, but if all\n      // loaders are successful we take the deepest status code.\n      if (\n        result.statusCode != null &&\n        result.statusCode !== 200 &&\n        !foundError\n      ) {\n        statusCode = result.statusCode;\n      }\n      if (result.headers) {\n        loaderHeaders[id] = result.headers;\n      }\n    }\n  });\n\n  // If we didn't consume the pending action error (i.e., all loaders\n  // resolved), then consume it here.  Also clear out any loaderData for the\n  // throwing route\n  if (pendingError) {\n    errors = pendingError;\n    loaderData[Object.keys(pendingError)[0]] = undefined;\n  }\n\n  return {\n    loaderData,\n    errors,\n    statusCode: statusCode || 200,\n    loaderHeaders,\n  };\n}\n\nfunction processLoaderData(\n  state: RouterState,\n  matches: AgnosticDataRouteMatch[],\n  matchesToLoad: AgnosticDataRouteMatch[],\n  results: DataResult[],\n  pendingError: RouteData | undefined,\n  revalidatingFetchers: RevalidatingFetcher[],\n  fetcherResults: DataResult[],\n  activeDeferreds: Map<string, DeferredData>\n): {\n  loaderData: RouterState[\"loaderData\"];\n  errors?: RouterState[\"errors\"];\n} {\n  let { loaderData, errors } = processRouteLoaderData(\n    matches,\n    matchesToLoad,\n    results,\n    pendingError,\n    activeDeferreds\n  );\n\n  // Process results from our revalidating fetchers\n  for (let index = 0; index < revalidatingFetchers.length; index++) {\n    let [key, , match] = revalidatingFetchers[index];\n    invariant(\n      fetcherResults !== undefined && fetcherResults[index] !== undefined,\n      \"Did not find corresponding fetcher result\"\n    );\n    let result = fetcherResults[index];\n\n    // Process fetcher non-redirect errors\n    if (isErrorResult(result)) {\n      let boundaryMatch = findNearestBoundary(state.matches, match.route.id);\n      if (!(errors && errors[boundaryMatch.route.id])) {\n        errors = {\n          ...errors,\n          [boundaryMatch.route.id]: result.error,\n        };\n      }\n      state.fetchers.delete(key);\n    } else if (isRedirectResult(result)) {\n      // Should never get here, redirects should get processed above, but we\n      // keep this to type narrow to a success result in the else\n      throw new Error(\"Unhandled fetcher revalidation redirect\");\n    } else if (isDeferredResult(result)) {\n      // Should never get here, deferred data should be awaited for fetchers\n      // in resolveDeferredResults\n      throw new Error(\"Unhandled fetcher deferred data\");\n    } else {\n      let doneFetcher: FetcherStates[\"Idle\"] = {\n        state: \"idle\",\n        data: result.data,\n        formMethod: undefined,\n        formAction: undefined,\n        formEncType: undefined,\n        formData: undefined,\n        \" _hasFetcherDoneAnything \": true,\n      };\n      state.fetchers.set(key, doneFetcher);\n    }\n  }\n\n  return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n  loaderData: RouteData,\n  newLoaderData: RouteData,\n  matches: AgnosticDataRouteMatch[],\n  errors: RouteData | null | undefined\n): RouteData {\n  let mergedLoaderData = { ...newLoaderData };\n  for (let match of matches) {\n    let id = match.route.id;\n    if (newLoaderData.hasOwnProperty(id)) {\n      if (newLoaderData[id] !== undefined) {\n        mergedLoaderData[id] = newLoaderData[id];\n      } else {\n        // No-op - this is so we ignore existing data if we have a key in the\n        // incoming object with an undefined value, which is how we unset a prior\n        // loaderData if we encounter a loader error\n      }\n    } else if (loaderData[id] !== undefined) {\n      mergedLoaderData[id] = loaderData[id];\n    }\n\n    if (errors && errors.hasOwnProperty(id)) {\n      // Don't keep any loader data below the boundary\n      break;\n    }\n  }\n  return mergedLoaderData;\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n  matches: AgnosticDataRouteMatch[],\n  routeId?: string\n): AgnosticDataRouteMatch {\n  let eligibleMatches = routeId\n    ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n    : [...matches];\n  return (\n    eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n    matches[0]\n  );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n  matches: AgnosticDataRouteMatch[];\n  route: AgnosticDataRouteObject;\n} {\n  // Prefer a root layout route if present, otherwise shim in a route object\n  let route = routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n    id: `__shim-error-route__`,\n  };\n\n  return {\n    matches: [\n      {\n        params: {},\n        pathname: \"\",\n        pathnameBase: \"\",\n        route,\n      },\n    ],\n    route,\n  };\n}\n\nfunction getInternalRouterError(\n  status: number,\n  {\n    pathname,\n    routeId,\n    method,\n  }: {\n    pathname?: string;\n    routeId?: string;\n    method?: string;\n  } = {}\n) {\n  let statusText = \"Unknown Server Error\";\n  let errorMessage = \"Unknown @remix-run/router error\";\n\n  if (status === 400) {\n    statusText = \"Bad Request\";\n    if (method && pathname && routeId) {\n      errorMessage =\n        `You made a ${method} request to \"${pathname}\" but ` +\n        `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n        `so there is no way to handle the request.`;\n    } else {\n      errorMessage = \"Cannot submit binary form data using GET\";\n    }\n  } else if (status === 403) {\n    statusText = \"Forbidden\";\n    errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n  } else if (status === 404) {\n    statusText = \"Not Found\";\n    errorMessage = `No route matches URL \"${pathname}\"`;\n  } else if (status === 405) {\n    statusText = \"Method Not Allowed\";\n    if (method && pathname && routeId) {\n      errorMessage =\n        `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n        `did not provide an \\`action\\` for route \"${routeId}\", ` +\n        `so there is no way to handle the request.`;\n    } else if (method) {\n      errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n    }\n  }\n\n  return new ErrorResponse(\n    status || 500,\n    statusText,\n    new Error(errorMessage),\n    true\n  );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(results: DataResult[]): RedirectResult | undefined {\n  for (let i = results.length - 1; i >= 0; i--) {\n    let result = results[i];\n    if (isRedirectResult(result)) {\n      return result;\n    }\n  }\n}\n\nfunction stripHashFromPath(path: To) {\n  let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n  return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n  return (\n    a.pathname === b.pathname && a.search === b.search && a.hash !== b.hash\n  );\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n  return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n  return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n  return (result && result.type) === ResultType.redirect;\n}\n\nfunction isResponse(value: any): value is Response {\n  return (\n    value != null &&\n    typeof value.status === \"number\" &&\n    typeof value.statusText === \"string\" &&\n    typeof value.headers === \"object\" &&\n    typeof value.body !== \"undefined\"\n  );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n  if (!isResponse(result)) {\n    return false;\n  }\n\n  let status = result.status;\n  let location = result.headers.get(\"Location\");\n  return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isQueryRouteResponse(obj: any): obj is QueryRouteResponse {\n  return (\n    obj &&\n    isResponse(obj.response) &&\n    (obj.type === ResultType.data || ResultType.error)\n  );\n}\n\nfunction isValidMethod(method: string): method is FormMethod {\n  return validRequestMethods.has(method as FormMethod);\n}\n\nfunction isMutationMethod(method?: string): method is MutationFormMethod {\n  return validMutationMethods.has(method as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n  currentMatches: AgnosticDataRouteMatch[],\n  matchesToLoad: AgnosticDataRouteMatch[],\n  results: DataResult[],\n  signal: AbortSignal,\n  isFetcher: boolean,\n  currentLoaderData?: RouteData\n) {\n  for (let index = 0; index < results.length; index++) {\n    let result = results[index];\n    let match = matchesToLoad[index];\n    let currentMatch = currentMatches.find(\n      (m) => m.route.id === match.route.id\n    );\n    let isRevalidatingLoader =\n      currentMatch != null &&\n      !isNewRouteInstance(currentMatch, match) &&\n      (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n    if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n      // Note: we do not have to touch activeDeferreds here since we race them\n      // against the signal in resolveDeferredData and they'll get aborted\n      // there if needed\n      await resolveDeferredData(result, signal, isFetcher).then((result) => {\n        if (result) {\n          results[index] = result || results[index];\n        }\n      });\n    }\n  }\n}\n\nasync function resolveDeferredData(\n  result: DeferredResult,\n  signal: AbortSignal,\n  unwrap = false\n): Promise<SuccessResult | ErrorResult | undefined> {\n  let aborted = await result.deferredData.resolveData(signal);\n  if (aborted) {\n    return;\n  }\n\n  if (unwrap) {\n    try {\n      return {\n        type: ResultType.data,\n        data: result.deferredData.unwrappedData,\n      };\n    } catch (e) {\n      // Handle any TrackedPromise._error values encountered while unwrapping\n      return {\n        type: ResultType.error,\n        error: e,\n      };\n    }\n  }\n\n  return {\n    type: ResultType.data,\n    data: result.deferredData.data,\n  };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n  return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\n// Note: This should match the format exported by useMatches, so if you change\n// this please also change that :)  Eventually we'll DRY this up\nfunction createUseMatchesMatch(\n  match: AgnosticDataRouteMatch,\n  loaderData: RouteData\n): UseMatchesMatch {\n  let { route, pathname, params } = match;\n  return {\n    id: route.id,\n    pathname,\n    params,\n    data: loaderData[route.id] as unknown,\n    handle: route.handle as unknown,\n  };\n}\n\nfunction getTargetMatch(\n  matches: AgnosticDataRouteMatch[],\n  location: Location | string\n) {\n  let search =\n    typeof location === \"string\" ? parsePath(location).search : location.search;\n  if (\n    matches[matches.length - 1].route.index &&\n    hasNakedIndexQuery(search || \"\")\n  ) {\n    // Return the leaf index route when index is present\n    return matches[matches.length - 1];\n  }\n  // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n  // pathless layout routes)\n  let pathMatches = getPathContributingMatches(matches);\n  return pathMatches[pathMatches.length - 1];\n}\n//#endregion\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\nimport * as React from \"react\";\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction isPolyfill(x: any, y: any) {\n  return (\n    (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y) // eslint-disable-line no-self-compare\n  );\n}\n\nconst is: (x: any, y: any) => boolean =\n  typeof Object.is === \"function\" ? Object.is : isPolyfill;\n\n// Intentionally not using named imports because Rollup uses dynamic\n// dispatch for CommonJS interop named imports.\nconst { useState, useEffect, useLayoutEffect, useDebugValue } = React;\n\nlet didWarnOld18Alpha = false;\nlet didWarnUncachedGetSnapshot = false;\n\n// Disclaimer: This shim breaks many of the rules of React, and only works\n// because of a very particular set of implementation details and assumptions\n// -- change any one of them and it will break. The most important assumption\n// is that updates are always synchronous, because concurrent rendering is\n// only available in versions of React that also have a built-in\n// useSyncExternalStore API. And we only use this shim when the built-in API\n// does not exist.\n//\n// Do not assume that the clever hacks used by this hook also work in general.\n// The point of this shim is to replace the need for hacks by other libraries.\nexport function useSyncExternalStore<T>(\n  subscribe: (fn: () => void) => () => void,\n  getSnapshot: () => T,\n  // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n  // React do not expose a way to check if we're hydrating. So users of the shim\n  // will need to track that themselves and return the correct value\n  // from `getSnapshot`.\n  getServerSnapshot?: () => T\n): T {\n  if (__DEV__) {\n    if (!didWarnOld18Alpha) {\n      if (\"startTransition\" in React) {\n        didWarnOld18Alpha = true;\n        console.error(\n          \"You are using an outdated, pre-release alpha of React 18 that \" +\n            \"does not support useSyncExternalStore. The \" +\n            \"use-sync-external-store shim will not work correctly. Upgrade \" +\n            \"to a newer pre-release.\"\n        );\n      }\n    }\n  }\n\n  // Read the current snapshot from the store on every render. Again, this\n  // breaks the rules of React, and only works here because of specific\n  // implementation details, most importantly that updates are\n  // always synchronous.\n  const value = getSnapshot();\n  if (__DEV__) {\n    if (!didWarnUncachedGetSnapshot) {\n      const cachedValue = getSnapshot();\n      if (!is(value, cachedValue)) {\n        console.error(\n          \"The result of getSnapshot should be cached to avoid an infinite loop\"\n        );\n        didWarnUncachedGetSnapshot = true;\n      }\n    }\n  }\n\n  // Because updates are synchronous, we don't queue them. Instead we force a\n  // re-render whenever the subscribed state changes by updating an some\n  // arbitrary useState hook. Then, during render, we call getSnapshot to read\n  // the current value.\n  //\n  // Because we don't actually use the state returned by the useState hook, we\n  // can save a bit of memory by storing other stuff in that slot.\n  //\n  // To implement the early bailout, we need to track some things on a mutable\n  // object. Usually, we would put that in a useRef hook, but we can stash it in\n  // our useState hook instead.\n  //\n  // To force a re-render, we call forceUpdate({inst}). That works because the\n  // new object always fails an equality check.\n  const [{ inst }, forceUpdate] = useState({ inst: { value, getSnapshot } });\n\n  // Track the latest getSnapshot function with a ref. This needs to be updated\n  // in the layout phase so we can access it during the tearing check that\n  // happens on subscribe.\n  useLayoutEffect(() => {\n    inst.value = value;\n    inst.getSnapshot = getSnapshot;\n\n    // Whenever getSnapshot or subscribe changes, we need to check in the\n    // commit phase if there was an interleaved mutation. In concurrent mode\n    // this can happen all the time, but even in synchronous mode, an earlier\n    // effect may have mutated the store.\n    if (checkIfSnapshotChanged(inst)) {\n      // Force a re-render.\n      forceUpdate({ inst });\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [subscribe, value, getSnapshot]);\n\n  useEffect(() => {\n    // Check for changes right before subscribing. Subsequent changes will be\n    // detected in the subscription handler.\n    if (checkIfSnapshotChanged(inst)) {\n      // Force a re-render.\n      forceUpdate({ inst });\n    }\n    const handleStoreChange = () => {\n      // TODO: Because there is no cross-renderer API for batching updates, it's\n      // up to the consumer of this library to wrap their subscription event\n      // with unstable_batchedUpdates. Should we try to detect when this isn't\n      // the case and print a warning in development?\n\n      // The store changed. Check if the snapshot changed since the last time we\n      // read from the store.\n      if (checkIfSnapshotChanged(inst)) {\n        // Force a re-render.\n        forceUpdate({ inst });\n      }\n    };\n    // Subscribe to the store and return a clean-up function.\n    return subscribe(handleStoreChange);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [subscribe]);\n\n  useDebugValue(value);\n  return value;\n}\n\nfunction checkIfSnapshotChanged(inst: any) {\n  const latestGetSnapshot = inst.getSnapshot;\n  const prevValue = inst.value;\n  try {\n    const nextValue = latestGetSnapshot();\n    return !is(prevValue, nextValue);\n  } catch (error) {\n    return true;\n  }\n}\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 * @flow\n */\n\nexport function useSyncExternalStore<T>(\n  subscribe: (fn: () => void) => () => void,\n  getSnapshot: () => T,\n  getServerSnapshot?: () => T\n): T {\n  // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n  // React do not expose a way to check if we're hydrating. So users of the shim\n  // will need to track that themselves and return the correct value\n  // from `getSnapshot`.\n  return getSnapshot();\n}\n", "/**\n * Inlined into the react-router repo since use-sync-external-store does not\n * provide a UMD-compatible package, so we need this to be able to distribute\n * UMD react-router bundles\n */\n\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 * @flow\n */\n\nimport * as React from \"react\";\n\nimport { useSyncExternalStore as client } from \"./useSyncExternalStoreShimClient\";\nimport { useSyncExternalStore as server } from \"./useSyncExternalStoreShimServer\";\n\nconst canUseDOM: boolean = !!(\n  typeof window !== \"undefined\" &&\n  typeof window.document !== \"undefined\" &&\n  typeof window.document.createElement !== \"undefined\"\n);\nconst isServerEnvironment = !canUseDOM;\nconst shim = isServerEnvironment ? server : client;\n\nexport const useSyncExternalStore =\n  \"useSyncExternalStore\" in React\n    ? ((module) => module.useSyncExternalStore)(React)\n    : shim;\n", "import * as React from \"react\";\nimport type {\n  AgnosticRouteMatch,\n  AgnosticIndexRouteObject,\n  AgnosticNonIndexRouteObject,\n  History,\n  Location,\n  Router,\n  StaticHandlerContext,\n  To,\n  TrackedPromise,\n} from \"@remix-run/router\";\nimport type { Action as NavigationType } from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n  caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n  path?: AgnosticIndexRouteObject[\"path\"];\n  id?: AgnosticIndexRouteObject[\"id\"];\n  loader?: AgnosticIndexRouteObject[\"loader\"];\n  action?: AgnosticIndexRouteObject[\"action\"];\n  hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n  handle?: AgnosticIndexRouteObject[\"handle\"];\n  index: true;\n  children?: undefined;\n  element?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n}\n\nexport interface NonIndexRouteObject {\n  caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n  path?: AgnosticNonIndexRouteObject[\"path\"];\n  id?: AgnosticNonIndexRouteObject[\"id\"];\n  loader?: AgnosticNonIndexRouteObject[\"loader\"];\n  action?: AgnosticNonIndexRouteObject[\"action\"];\n  hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n  handle?: AgnosticNonIndexRouteObject[\"handle\"];\n  index?: false;\n  children?: RouteObject[];\n  element?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n  children?: DataRouteObject[];\n  id: string;\n};\n\nexport interface RouteMatch<\n  ParamKey extends string = string,\n  RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch<ParamKey, RouteObjectType> {}\n\nexport interface DataRouteMatch extends RouteMatch<string, DataRouteObject> {}\n\nexport interface DataRouterContextObject extends NavigationContextObject {\n  router: Router;\n  staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n  React.createContext<DataRouterContextObject | null>(null);\nif (__DEV__) {\n  DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n  Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n  DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext<TrackedPromise | null>(null);\nif (__DEV__) {\n  AwaitContext.displayName = \"Await\";\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\nexport interface NavigateOptions {\n  replace?: boolean;\n  state?: any;\n  preventScrollReset?: boolean;\n  relative?: RelativeRoutingType;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level <Router> API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n  createHref: History[\"createHref\"];\n  // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n  encodeLocation?: History[\"encodeLocation\"];\n  go: History[\"go\"];\n  push(to: To, state?: any, opts?: NavigateOptions): void;\n  replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n  basename: string;\n  navigator: Navigator;\n  static: boolean;\n}\n\nexport const NavigationContext = React.createContext<NavigationContextObject>(\n  null!\n);\n\nif (__DEV__) {\n  NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n  location: Location;\n  navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext<LocationContextObject>(\n  null!\n);\n\nif (__DEV__) {\n  LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n  outlet: React.ReactElement | null;\n  matches: RouteMatch[];\n}\n\nexport const RouteContext = React.createContext<RouteContextObject>({\n  outlet: null,\n  matches: [],\n});\n\nif (__DEV__) {\n  RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext<any>(null);\n\nif (__DEV__) {\n  RouteErrorContext.displayName = \"RouteError\";\n}\n", "import * as React from \"react\";\nimport type {\n  Location,\n  ParamParseKey,\n  Params,\n  Path,\n  PathMatch,\n  PathPattern,\n  Router as RemixRouter,\n  To,\n} from \"@remix-run/router\";\nimport {\n  Action as NavigationType,\n  invariant,\n  isRouteErrorResponse,\n  joinPaths,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  resolveTo,\n  warning,\n  UNSAFE_getPathContributingMatches as getPathContributingMatches,\n} from \"@remix-run/router\";\n\nimport type {\n  NavigateOptions,\n  RouteContextObject,\n  RouteMatch,\n  RouteObject,\n  DataRouteMatch,\n  RelativeRoutingType,\n} from \"./context\";\nimport {\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n  RouteErrorContext,\n  AwaitContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n  to: To,\n  { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useHref() may be used only in the context of a <Router> component.`\n  );\n\n  let { basename, navigator } = React.useContext(NavigationContext);\n  let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n  let joinedPathname = pathname;\n\n  // If we're operating within a basename, prepend it to the pathname prior\n  // to creating the href.  If this is a root navigation, then just use the raw\n  // basename which allows the basename to have full control over the presence\n  // of a trailing slash on root links\n  if (basename !== \"/\") {\n    joinedPathname =\n      pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n  }\n\n  return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a <Router>.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n  return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useLocation() may be used only in the context of a <Router> component.`\n  );\n\n  return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n  return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * <NavLink>.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n  ParamKey extends ParamParseKey<Path>,\n  Path extends string\n>(pattern: PathPattern<Path> | Path): PathMatch<ParamKey> | null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useMatch() may be used only in the context of a <Router> component.`\n  );\n\n  let { pathname } = useLocation();\n  return React.useMemo(\n    () => matchPath<ParamKey, Path>(pattern, pathname),\n    [pathname, pattern]\n  );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n  (to: To, options?: NavigateOptions): void;\n  (delta: number): void;\n}\n\n/**\n * Returns an imperative method for changing the location. Used by <Link>s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useNavigate() may be used only in the context of a <Router> component.`\n  );\n\n  let { basename, navigator } = React.useContext(NavigationContext);\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n\n  let routePathnamesJson = JSON.stringify(\n    getPathContributingMatches(matches).map((match) => match.pathnameBase)\n  );\n\n  let activeRef = React.useRef(false);\n  React.useEffect(() => {\n    activeRef.current = true;\n  });\n\n  let navigate: NavigateFunction = React.useCallback(\n    (to: To | number, options: NavigateOptions = {}) => {\n      warning(\n        activeRef.current,\n        `You should call navigate() in a React.useEffect(), not when ` +\n          `your component is first rendered.`\n      );\n\n      if (!activeRef.current) return;\n\n      if (typeof to === \"number\") {\n        navigator.go(to);\n        return;\n      }\n\n      let path = resolveTo(\n        to,\n        JSON.parse(routePathnamesJson),\n        locationPathname,\n        options.relative === \"path\"\n      );\n\n      // If we're operating within a basename, prepend it to the pathname prior\n      // to handing off to history.  If this is a root navigation, then we\n      // navigate to the raw basename which allows the basename to have full\n      // control over the presence of a trailing slash on root links\n      if (basename !== \"/\") {\n        path.pathname =\n          path.pathname === \"/\"\n            ? basename\n            : joinPaths([basename, path.pathname]);\n      }\n\n      (!!options.replace ? navigator.replace : navigator.push)(\n        path,\n        options.state,\n        options\n      );\n    },\n    [basename, navigator, routePathnamesJson, locationPathname]\n  );\n\n  return navigate;\n}\n\nconst OutletContext = React.createContext<unknown>(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext<Context = unknown>(): Context {\n  return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by <Outlet> to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n  let outlet = React.useContext(RouteContext).outlet;\n  if (outlet) {\n    return (\n      <OutletContext.Provider value={context}>{outlet}</OutletContext.Provider>\n    );\n  }\n  return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n  ParamsOrKey extends string | Record<string, string | undefined> = string\n>(): Readonly<\n  [ParamsOrKey] extends [string] ? Params<ParamsOrKey> : Partial<ParamsOrKey>\n> {\n  let { matches } = React.useContext(RouteContext);\n  let routeMatch = matches[matches.length - 1];\n  return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n  to: To,\n  { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n  let { matches } = React.useContext(RouteContext);\n  let { pathname: locationPathname } = useLocation();\n\n  let routePathnamesJson = JSON.stringify(\n    getPathContributingMatches(matches).map((match) => match.pathnameBase)\n  );\n\n  return React.useMemo(\n    () =>\n      resolveTo(\n        to,\n        JSON.parse(routePathnamesJson),\n        locationPathname,\n        relative === \"path\"\n      ),\n    [to, routePathnamesJson, locationPathname, relative]\n  );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an <Outlet> to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n  routes: RouteObject[],\n  locationArg?: Partial<Location> | string\n): React.ReactElement | null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of the\n    // router loaded. We can help them understand how to avoid that.\n    `useRoutes() may be used only in the context of a <Router> component.`\n  );\n\n  let { navigator } = React.useContext(NavigationContext);\n  let dataRouterStateContext = React.useContext(DataRouterStateContext);\n  let { matches: parentMatches } = React.useContext(RouteContext);\n  let routeMatch = parentMatches[parentMatches.length - 1];\n  let parentParams = routeMatch ? routeMatch.params : {};\n  let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n  let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n  let parentRoute = routeMatch && routeMatch.route;\n\n  if (__DEV__) {\n    // You won't get a warning about 2 different <Routes> under a <Route>\n    // without a trailing *, but this is a best-effort warning anyway since we\n    // cannot even give the warning unless they land at the parent route.\n    //\n    // Example:\n    //\n    // <Routes>\n    //   {/* This route path MUST end with /* because otherwise\n    //       it will never match /blog/post/123 */}\n    //   <Route path=\"blog\" element={<Blog />} />\n    //   <Route path=\"blog/feed\" element={<BlogFeed />} />\n    // </Routes>\n    //\n    // function Blog() {\n    //   return (\n    //     <Routes>\n    //       <Route path=\"post/:id\" element={<Post />} />\n    //     </Routes>\n    //   );\n    // }\n    let parentPath = (parentRoute && parentRoute.path) || \"\";\n    warningOnce(\n      parentPathname,\n      !parentRoute || parentPath.endsWith(\"*\"),\n      `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at ` +\n        `\"${parentPathname}\" (under <Route path=\"${parentPath}\">) but the ` +\n        `parent route path has no trailing \"*\". This means if you navigate ` +\n        `deeper, the parent won't match anymore and therefore the child ` +\n        `routes will never render.\\n\\n` +\n        `Please change the parent <Route path=\"${parentPath}\"> to <Route ` +\n        `path=\"${parentPath === \"/\" ? \"*\" : `${parentPath}/*`}\">.`\n    );\n  }\n\n  let locationFromContext = useLocation();\n\n  let location;\n  if (locationArg) {\n    let parsedLocationArg =\n      typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n    invariant(\n      parentPathnameBase === \"/\" ||\n        parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n      `When overriding the location using \\`<Routes location>\\` or \\`useRoutes(routes, location)\\`, ` +\n        `the location pathname must begin with the portion of the URL pathname that was ` +\n        `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n        `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n    );\n\n    location = parsedLocationArg;\n  } else {\n    location = locationFromContext;\n  }\n\n  let pathname = location.pathname || \"/\";\n  let remainingPathname =\n    parentPathnameBase === \"/\"\n      ? pathname\n      : pathname.slice(parentPathnameBase.length) || \"/\";\n\n  let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n  if (__DEV__) {\n    warning(\n      parentRoute || matches != null,\n      `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n    );\n\n    warning(\n      matches == null ||\n        matches[matches.length - 1].route.element !== undefined,\n      `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" does not have an element. ` +\n        `This means it will render an <Outlet /> with a null value by default resulting in an \"empty\" page.`\n    );\n  }\n\n  let renderedMatches = _renderMatches(\n    matches &&\n      matches.map((match) =>\n        Object.assign({}, match, {\n          params: Object.assign({}, parentParams, match.params),\n          pathname: joinPaths([\n            parentPathnameBase,\n            // Re-encode pathnames that were decoded inside matchRoutes\n            navigator.encodeLocation\n              ? navigator.encodeLocation(match.pathname).pathname\n              : match.pathname,\n          ]),\n          pathnameBase:\n            match.pathnameBase === \"/\"\n              ? parentPathnameBase\n              : joinPaths([\n                  parentPathnameBase,\n                  // Re-encode pathnames that were decoded inside matchRoutes\n                  navigator.encodeLocation\n                    ? navigator.encodeLocation(match.pathnameBase).pathname\n                    : match.pathnameBase,\n                ]),\n        })\n      ),\n    parentMatches,\n    dataRouterStateContext || undefined\n  );\n\n  // When a user passes in a `locationArg`, the associated routes need to\n  // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n  // to use the scoped location instead of the global location.\n  if (locationArg && renderedMatches) {\n    return (\n      <LocationContext.Provider\n        value={{\n          location: {\n            pathname: \"/\",\n            search: \"\",\n            hash: \"\",\n            state: null,\n            key: \"default\",\n            ...location,\n          },\n          navigationType: NavigationType.Pop,\n        }}\n      >\n        {renderedMatches}\n      </LocationContext.Provider>\n    );\n  }\n\n  return renderedMatches;\n}\n\nfunction DefaultErrorElement() {\n  let error = useRouteError();\n  let message = isRouteErrorResponse(error)\n    ? `${error.status} ${error.statusText}`\n    : error instanceof Error\n    ? error.message\n    : JSON.stringify(error);\n  let stack = error instanceof Error ? error.stack : null;\n  let lightgrey = \"rgba(200,200,200, 0.5)\";\n  let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n  let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n  return (\n    <>\n      <h2>Unhandled Thrown Error!</h2>\n      <h3 style={{ fontStyle: \"italic\" }}>{message}</h3>\n      {stack ? <pre style={preStyles}>{stack}</pre> : null}\n      <p>💿 Hey developer 👋</p>\n      <p>\n        You can provide a way better UX than this when your app throws errors by\n        providing your own&nbsp;\n        <code style={codeStyles}>errorElement</code> props on&nbsp;\n        <code style={codeStyles}>&lt;Route&gt;</code>\n      </p>\n    </>\n  );\n}\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n  location: Location;\n  error: any;\n  component: React.ReactNode;\n  routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n  location: Location;\n  error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n  RenderErrorBoundaryProps,\n  RenderErrorBoundaryState\n> {\n  constructor(props: RenderErrorBoundaryProps) {\n    super(props);\n    this.state = {\n      location: props.location,\n      error: props.error,\n    };\n  }\n\n  static getDerivedStateFromError(error: any) {\n    return { error: error };\n  }\n\n  static getDerivedStateFromProps(\n    props: RenderErrorBoundaryProps,\n    state: RenderErrorBoundaryState\n  ) {\n    // When we get into an error state, the user will likely click \"back\" to the\n    // previous page that didn't have an error. Because this wraps the entire\n    // application, that will have no effect--the error page continues to display.\n    // This gives us a mechanism to recover from the error when the location changes.\n    //\n    // Whether we're in an error state or not, we update the location in state\n    // so that when we are in an error state, it gets reset when a new location\n    // comes in and the user recovers from the error.\n    if (state.location !== props.location) {\n      return {\n        error: props.error,\n        location: props.location,\n      };\n    }\n\n    // If we're not changing locations, preserve the location but still surface\n    // any new errors that may come through. We retain the existing error, we do\n    // this because the error provided from the app state may be cleared without\n    // the location changing.\n    return {\n      error: props.error || state.error,\n      location: state.location,\n    };\n  }\n\n  componentDidCatch(error: any, errorInfo: any) {\n    console.error(\n      \"React Router caught the following error during render\",\n      error,\n      errorInfo\n    );\n  }\n\n  render() {\n    return this.state.error ? (\n      <RouteContext.Provider value={this.props.routeContext}>\n        <RouteErrorContext.Provider\n          value={this.state.error}\n          children={this.props.component}\n        />\n      </RouteContext.Provider>\n    ) : (\n      this.props.children\n    );\n  }\n}\n\ninterface RenderedRouteProps {\n  routeContext: RouteContextObject;\n  match: RouteMatch<string, RouteObject>;\n  children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n  let dataRouterContext = React.useContext(DataRouterContext);\n\n  // Track how deep we got in our render pass to emulate SSR componentDidCatch\n  // in a DataStaticRouter\n  if (\n    dataRouterContext &&\n    dataRouterContext.static &&\n    dataRouterContext.staticContext &&\n    match.route.errorElement\n  ) {\n    dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n  }\n\n  return (\n    <RouteContext.Provider value={routeContext}>\n      {children}\n    </RouteContext.Provider>\n  );\n}\n\nexport function _renderMatches(\n  matches: RouteMatch[] | null,\n  parentMatches: RouteMatch[] = [],\n  dataRouterState?: RemixRouter[\"state\"]\n): React.ReactElement | null {\n  if (matches == null) {\n    if (dataRouterState?.errors) {\n      // Don't bail if we have data router errors so we can render them in the\n      // boundary.  Use the pre-matched (or shimmed) matches\n      matches = dataRouterState.matches as DataRouteMatch[];\n    } else {\n      return null;\n    }\n  }\n\n  let renderedMatches = matches;\n\n  // If we have data errors, trim matches to the highest error boundary\n  let errors = dataRouterState?.errors;\n  if (errors != null) {\n    let errorIndex = renderedMatches.findIndex(\n      (m) => m.route.id && errors?.[m.route.id]\n    );\n    invariant(\n      errorIndex >= 0,\n      `Could not find a matching route for the current errors: ${errors}`\n    );\n    renderedMatches = renderedMatches.slice(\n      0,\n      Math.min(renderedMatches.length, errorIndex + 1)\n    );\n  }\n\n  return renderedMatches.reduceRight((outlet, match, index) => {\n    let error = match.route.id ? errors?.[match.route.id] : null;\n    // Only data routers handle errors\n    let errorElement = dataRouterState\n      ? match.route.errorElement || <DefaultErrorElement />\n      : null;\n    let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n    let getChildren = () => (\n      <RenderedRoute match={match} routeContext={{ outlet, matches }}>\n        {error\n          ? errorElement\n          : match.route.element !== undefined\n          ? match.route.element\n          : outlet}\n      </RenderedRoute>\n    );\n    // Only wrap in an error boundary within data router usages when we have an\n    // errorElement on this route.  Otherwise let it bubble up to an ancestor\n    // errorElement\n    return dataRouterState && (match.route.errorElement || index === 0) ? (\n      <RenderErrorBoundary\n        location={dataRouterState.location}\n        component={errorElement}\n        error={error}\n        children={getChildren()}\n        routeContext={{ outlet: null, matches }}\n      />\n    ) : (\n      getChildren()\n    );\n  }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n  UseRevalidator = \"useRevalidator\",\n}\n\nenum DataRouterStateHook {\n  UseLoaderData = \"useLoaderData\",\n  UseActionData = \"useActionData\",\n  UseRouteError = \"useRouteError\",\n  UseNavigation = \"useNavigation\",\n  UseRouteLoaderData = \"useRouteLoaderData\",\n  UseMatches = \"useMatches\",\n  UseRevalidator = \"useRevalidator\",\n}\n\nfunction getDataRouterConsoleError(\n  hookName: DataRouterHook | DataRouterStateHook\n) {\n  return `${hookName} must be used within a data router.  See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n  let ctx = React.useContext(DataRouterContext);\n  invariant(ctx, getDataRouterConsoleError(hookName));\n  return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n  let state = React.useContext(DataRouterStateContext);\n  invariant(state, getDataRouterConsoleError(hookName));\n  return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n  let route = React.useContext(RouteContext);\n  invariant(route, getDataRouterConsoleError(hookName));\n  return route;\n}\n\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n  let route = useRouteContext(hookName);\n  let thisRoute = route.matches[route.matches.length - 1];\n  invariant(\n    thisRoute.route.id,\n    `${hookName} can only be used on routes that contain a unique \"id\"`\n  );\n  return thisRoute.route.id;\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n  let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n  return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n  let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n  let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n  return {\n    revalidate: dataRouterContext.router.revalidate,\n    state: state.revalidation,\n  };\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches() {\n  let { matches, loaderData } = useDataRouterState(\n    DataRouterStateHook.UseMatches\n  );\n  return React.useMemo(\n    () =>\n      matches.map((match) => {\n        let { pathname, params } = match;\n        // Note: This structure matches that created by createUseMatchesMatch\n        // in the @remix-run/router , so if you change this please also change\n        // that :)  Eventually we'll DRY this up\n        return {\n          id: match.route.id,\n          pathname,\n          params,\n          data: loaderData[match.route.id] as unknown,\n          handle: match.route.handle as unknown,\n        };\n      }),\n    [matches, loaderData]\n  );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n  if (state.errors && state.errors[routeId] != null) {\n    console.error(\n      `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n    );\n    return undefined;\n  }\n  return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n  return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n  let state = useDataRouterState(DataRouterStateHook.UseActionData);\n\n  let route = React.useContext(RouteContext);\n  invariant(route, `useActionData must be used inside a RouteContext`);\n\n  return Object.values(state?.actionData || {})[0];\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error.  This is intended to be called from your\n * errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n  let error = React.useContext(RouteErrorContext);\n  let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n  let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n  // If this was a render error, we put it in a RouteError context inside\n  // of RenderErrorBoundary\n  if (error) {\n    return error;\n  }\n\n  // Otherwise look for errors from our data router state\n  return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor <Await /> value\n */\nexport function useAsyncValue(): unknown {\n  let value = React.useContext(AwaitContext);\n  return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor <Await /> value\n */\nexport function useAsyncError(): unknown {\n  let value = React.useContext(AwaitContext);\n  return value?._error;\n}\n\nconst alreadyWarned: Record<string, boolean> = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n  if (!cond && !alreadyWarned[key]) {\n    alreadyWarned[key] = true;\n    warning(false, message);\n  }\n}\n", "import * as React from \"react\";\nimport type {\n  TrackedPromise,\n  InitialEntry,\n  Location,\n  MemoryHistory,\n  Router as RemixRouter,\n  RouterState,\n  To,\n} from \"@remix-run/router\";\nimport {\n  Action as NavigationType,\n  AbortedDeferredError,\n  createMemoryHistory,\n  invariant,\n  parsePath,\n  stripBasename,\n  warning,\n} from \"@remix-run/router\";\nimport { useSyncExternalStore as useSyncExternalStoreShim } from \"./use-sync-external-store-shim\";\n\nimport type {\n  DataRouteObject,\n  IndexRouteObject,\n  RouteMatch,\n  RouteObject,\n  Navigator,\n  NonIndexRouteObject,\n  RelativeRoutingType,\n} from \"./context\";\nimport {\n  LocationContext,\n  NavigationContext,\n  DataRouterContext,\n  DataRouterStateContext,\n  AwaitContext,\n} from \"./context\";\nimport {\n  useAsyncValue,\n  useInRouterContext,\n  useNavigate,\n  useOutlet,\n  useRoutes,\n  _renderMatches,\n} from \"./hooks\";\n\nexport interface RouterProviderProps {\n  fallbackElement?: React.ReactNode;\n  router: RemixRouter;\n}\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n  fallbackElement,\n  router,\n}: RouterProviderProps): React.ReactElement {\n  // Sync router state to our component state to force re-renders\n  let state: RouterState = useSyncExternalStoreShim(\n    router.subscribe,\n    () => router.state,\n    // We have to provide this so React@18 doesn't complain during hydration,\n    // but we pass our serialized hydration data into the router so state here\n    // is already synced with what the server saw\n    () => router.state\n  );\n\n  let navigator = React.useMemo((): Navigator => {\n    return {\n      createHref: router.createHref,\n      encodeLocation: router.encodeLocation,\n      go: (n) => router.navigate(n),\n      push: (to, state, opts) =>\n        router.navigate(to, {\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n      replace: (to, state, opts) =>\n        router.navigate(to, {\n          replace: true,\n          state,\n          preventScrollReset: opts?.preventScrollReset,\n        }),\n    };\n  }, [router]);\n\n  let basename = router.basename || \"/\";\n\n  // The fragment and {null} here are important!  We need them to keep React 18's\n  // useId happy when we are server-rendering since we may have a <script> here\n  // containing the hydrated server-side staticContext (from StaticRouterProvider).\n  // useId relies on the component tree structure to generate deterministic id's\n  // so we need to ensure it remains the same on the client even though\n  // we don't need the <script> tag\n  return (\n    <>\n      <DataRouterContext.Provider\n        value={{\n          router,\n          navigator,\n          static: false,\n          // Do we need this?\n          basename,\n        }}\n      >\n        <DataRouterStateContext.Provider value={state}>\n          <Router\n            basename={router.basename}\n            location={router.state.location}\n            navigationType={router.state.historyAction}\n            navigator={navigator}\n          >\n            {router.state.initialized ? <Routes /> : fallbackElement}\n          </Router>\n        </DataRouterStateContext.Provider>\n      </DataRouterContext.Provider>\n      {null}\n    </>\n  );\n}\n\nexport interface MemoryRouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  initialEntries?: InitialEntry[];\n  initialIndex?: number;\n}\n\n/**\n * A <Router> that stores all entries in memory.\n *\n * @see https://reactrouter.com/router-components/memory-router\n */\nexport function MemoryRouter({\n  basename,\n  children,\n  initialEntries,\n  initialIndex,\n}: MemoryRouterProps): React.ReactElement {\n  let historyRef = React.useRef<MemoryHistory>();\n  if (historyRef.current == null) {\n    historyRef.current = createMemoryHistory({\n      initialEntries,\n      initialIndex,\n      v5Compat: true,\n    });\n  }\n\n  let history = historyRef.current;\n  let [state, setState] = React.useState({\n    action: history.action,\n    location: history.location,\n  });\n\n  React.useLayoutEffect(() => history.listen(setState), [history]);\n\n  return (\n    <Router\n      basename={basename}\n      children={children}\n      location={state.location}\n      navigationType={state.action}\n      navigator={history}\n    />\n  );\n}\n\nexport interface NavigateProps {\n  to: To;\n  replace?: boolean;\n  state?: any;\n  relative?: RelativeRoutingType;\n}\n\n/**\n * Changes the current location.\n *\n * Note: This API is mostly useful in React.Component subclasses that are not\n * able to use hooks. In functional components, we recommend you use the\n * `useNavigate` hook instead.\n *\n * @see https://reactrouter.com/components/navigate\n */\nexport function Navigate({\n  to,\n  replace,\n  state,\n  relative,\n}: NavigateProps): null {\n  invariant(\n    useInRouterContext(),\n    // TODO: This error is probably because they somehow have 2 versions of\n    // the router loaded. We can help them understand how to avoid that.\n    `<Navigate> may be used only in the context of a <Router> component.`\n  );\n\n  warning(\n    !React.useContext(NavigationContext).static,\n    `<Navigate> must not be used on the initial render in a <StaticRouter>. ` +\n      `This is a no-op, but you should modify your code so the <Navigate> is ` +\n      `only ever rendered in response to some user interaction or state change.`\n  );\n\n  let dataRouterState = React.useContext(DataRouterStateContext);\n  let navigate = useNavigate();\n\n  React.useEffect(() => {\n    // Avoid kicking off multiple navigations if we're in the middle of a\n    // data-router navigation, since components get re-rendered when we enter\n    // a submitting/loading state\n    if (dataRouterState && dataRouterState.navigation.state !== \"idle\") {\n      return;\n    }\n    navigate(to, { replace, state, relative });\n  });\n\n  return null;\n}\n\nexport interface OutletProps {\n  context?: unknown;\n}\n\n/**\n * Renders the child route's element, if there is one.\n *\n * @see https://reactrouter.com/components/outlet\n */\nexport function Outlet(props: OutletProps): React.ReactElement | null {\n  return useOutlet(props.context);\n}\n\nexport interface PathRouteProps {\n  caseSensitive?: NonIndexRouteObject[\"caseSensitive\"];\n  path?: NonIndexRouteObject[\"path\"];\n  id?: NonIndexRouteObject[\"id\"];\n  loader?: NonIndexRouteObject[\"loader\"];\n  action?: NonIndexRouteObject[\"action\"];\n  hasErrorBoundary?: NonIndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: NonIndexRouteObject[\"shouldRevalidate\"];\n  handle?: NonIndexRouteObject[\"handle\"];\n  index?: false;\n  children?: React.ReactNode;\n  element?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n}\n\nexport interface LayoutRouteProps extends PathRouteProps {}\n\nexport interface IndexRouteProps {\n  caseSensitive?: IndexRouteObject[\"caseSensitive\"];\n  path?: IndexRouteObject[\"path\"];\n  id?: IndexRouteObject[\"id\"];\n  loader?: IndexRouteObject[\"loader\"];\n  action?: IndexRouteObject[\"action\"];\n  hasErrorBoundary?: IndexRouteObject[\"hasErrorBoundary\"];\n  shouldRevalidate?: IndexRouteObject[\"shouldRevalidate\"];\n  handle?: IndexRouteObject[\"handle\"];\n  index: true;\n  children?: undefined;\n  element?: React.ReactNode | null;\n  errorElement?: React.ReactNode | null;\n}\n\nexport type RouteProps = PathRouteProps | LayoutRouteProps | IndexRouteProps;\n\n/**\n * Declares an element that should be rendered at a certain URL path.\n *\n * @see https://reactrouter.com/components/route\n */\nexport function Route(_props: RouteProps): React.ReactElement | null {\n  invariant(\n    false,\n    `A <Route> is only ever to be used as the child of <Routes> element, ` +\n      `never rendered directly. Please wrap your <Route> in a <Routes>.`\n  );\n}\n\nexport interface RouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  location: Partial<Location> | string;\n  navigationType?: NavigationType;\n  navigator: Navigator;\n  static?: boolean;\n}\n\n/**\n * Provides location context for the rest of the app.\n *\n * Note: You usually won't render a <Router> directly. Instead, you'll render a\n * router that is more specific to your environment such as a <BrowserRouter>\n * in web browsers or a <StaticRouter> for server rendering.\n *\n * @see https://reactrouter.com/router-components/router\n */\nexport function Router({\n  basename: basenameProp = \"/\",\n  children = null,\n  location: locationProp,\n  navigationType = NavigationType.Pop,\n  navigator,\n  static: staticProp = false,\n}: RouterProps): React.ReactElement | null {\n  invariant(\n    !useInRouterContext(),\n    `You cannot render a <Router> inside another <Router>.` +\n      ` You should never have more than one in your app.`\n  );\n\n  // Preserve trailing slashes on basename, so we can let the user control\n  // the enforcement of trailing slashes throughout the app\n  let basename = basenameProp.replace(/^\\/*/, \"/\");\n  let navigationContext = React.useMemo(\n    () => ({ basename, navigator, static: staticProp }),\n    [basename, navigator, staticProp]\n  );\n\n  if (typeof locationProp === \"string\") {\n    locationProp = parsePath(locationProp);\n  }\n\n  let {\n    pathname = \"/\",\n    search = \"\",\n    hash = \"\",\n    state = null,\n    key = \"default\",\n  } = locationProp;\n\n  let location = React.useMemo(() => {\n    let trailingPathname = stripBasename(pathname, basename);\n\n    if (trailingPathname == null) {\n      return null;\n    }\n\n    return {\n      pathname: trailingPathname,\n      search,\n      hash,\n      state,\n      key,\n    };\n  }, [basename, pathname, search, hash, state, key]);\n\n  warning(\n    location != null,\n    `<Router basename=\"${basename}\"> is not able to match the URL ` +\n      `\"${pathname}${search}${hash}\" because it does not start with the ` +\n      `basename, so the <Router> won't render anything.`\n  );\n\n  if (location == null) {\n    return null;\n  }\n\n  return (\n    <NavigationContext.Provider value={navigationContext}>\n      <LocationContext.Provider\n        children={children}\n        value={{ location, navigationType }}\n      />\n    </NavigationContext.Provider>\n  );\n}\n\nexport interface RoutesProps {\n  children?: React.ReactNode;\n  location?: Partial<Location> | string;\n}\n\n/**\n * A container for a nested tree of <Route> elements that renders the branch\n * that best matches the current location.\n *\n * @see https://reactrouter.com/components/routes\n */\nexport function Routes({\n  children,\n  location,\n}: RoutesProps): React.ReactElement | null {\n  let dataRouterContext = React.useContext(DataRouterContext);\n  // When in a DataRouterContext _without_ children, we use the router routes\n  // directly.  If we have children, then we're in a descendant tree and we\n  // need to use child routes.\n  let routes =\n    dataRouterContext && !children\n      ? (dataRouterContext.router.routes as DataRouteObject[])\n      : createRoutesFromChildren(children);\n  return useRoutes(routes, location);\n}\n\nexport interface AwaitResolveRenderFunction {\n  (data: Awaited<any>): React.ReactElement;\n}\n\nexport interface AwaitProps {\n  children: React.ReactNode | AwaitResolveRenderFunction;\n  errorElement?: React.ReactNode;\n  resolve: TrackedPromise | any;\n}\n\n/**\n * Component to use for rendering lazily loaded data from returning defer()\n * in a loader function\n */\nexport function Await({ children, errorElement, resolve }: AwaitProps) {\n  return (\n    <AwaitErrorBoundary resolve={resolve} errorElement={errorElement}>\n      <ResolveAwait>{children}</ResolveAwait>\n    </AwaitErrorBoundary>\n  );\n}\n\ntype AwaitErrorBoundaryProps = React.PropsWithChildren<{\n  errorElement?: React.ReactNode;\n  resolve: TrackedPromise | any;\n}>;\n\ntype AwaitErrorBoundaryState = {\n  error: any;\n};\n\nenum AwaitRenderStatus {\n  pending,\n  success,\n  error,\n}\n\nconst neverSettledPromise = new Promise(() => {});\n\nclass AwaitErrorBoundary extends React.Component<\n  AwaitErrorBoundaryProps,\n  AwaitErrorBoundaryState\n> {\n  constructor(props: AwaitErrorBoundaryProps) {\n    super(props);\n    this.state = { error: null };\n  }\n\n  static getDerivedStateFromError(error: any) {\n    return { error };\n  }\n\n  componentDidCatch(error: any, errorInfo: any) {\n    console.error(\n      \"<Await> caught the following error during render\",\n      error,\n      errorInfo\n    );\n  }\n\n  render() {\n    let { children, errorElement, resolve } = this.props;\n\n    let promise: TrackedPromise | null = null;\n    let status: AwaitRenderStatus = AwaitRenderStatus.pending;\n\n    if (!(resolve instanceof Promise)) {\n      // Didn't get a promise - provide as a resolved promise\n      status = AwaitRenderStatus.success;\n      promise = Promise.resolve();\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_data\", { get: () => resolve });\n    } else if (this.state.error) {\n      // Caught a render error, provide it as a rejected promise\n      status = AwaitRenderStatus.error;\n      let renderError = this.state.error;\n      promise = Promise.reject().catch(() => {}); // Avoid unhandled rejection warnings\n      Object.defineProperty(promise, \"_tracked\", { get: () => true });\n      Object.defineProperty(promise, \"_error\", { get: () => renderError });\n    } else if ((resolve as TrackedPromise)._tracked) {\n      // Already tracked promise - check contents\n      promise = resolve;\n      status =\n        promise._error !== undefined\n          ? AwaitRenderStatus.error\n          : promise._data !== undefined\n          ? AwaitRenderStatus.success\n          : AwaitRenderStatus.pending;\n    } else {\n      // Raw (untracked) promise - track it\n      status = AwaitRenderStatus.pending;\n      Object.defineProperty(resolve, \"_tracked\", { get: () => true });\n      promise = resolve.then(\n        (data: any) =>\n          Object.defineProperty(resolve, \"_data\", { get: () => data }),\n        (error: any) =>\n          Object.defineProperty(resolve, \"_error\", { get: () => error })\n      );\n    }\n\n    if (\n      status === AwaitRenderStatus.error &&\n      promise._error instanceof AbortedDeferredError\n    ) {\n      // Freeze the UI by throwing a never resolved promise\n      throw neverSettledPromise;\n    }\n\n    if (status === AwaitRenderStatus.error && !errorElement) {\n      // No errorElement, throw to the nearest route-level error boundary\n      throw promise._error;\n    }\n\n    if (status === AwaitRenderStatus.error) {\n      // Render via our errorElement\n      return <AwaitContext.Provider value={promise} children={errorElement} />;\n    }\n\n    if (status === AwaitRenderStatus.success) {\n      // Render children with resolved value\n      return <AwaitContext.Provider value={promise} children={children} />;\n    }\n\n    // Throw to the suspense boundary\n    throw promise;\n  }\n}\n\n/**\n * @private\n * Indirection to leverage useAsyncValue for a render-prop API on <Await>\n */\nfunction ResolveAwait({\n  children,\n}: {\n  children: React.ReactNode | AwaitResolveRenderFunction;\n}) {\n  let data = useAsyncValue();\n  if (typeof children === \"function\") {\n    return children(data);\n  }\n  return <>{children}</>;\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// UTILS\n///////////////////////////////////////////////////////////////////////////////\n\n/**\n * Creates a route config from a React \"children\" object, which is usually\n * either a `<Route>` element or an array of them. Used internally by\n * `<Routes>` to create a route config from its children.\n *\n * @see https://reactrouter.com/utils/create-routes-from-children\n */\nexport function createRoutesFromChildren(\n  children: React.ReactNode,\n  parentPath: number[] = []\n): RouteObject[] {\n  let routes: RouteObject[] = [];\n\n  React.Children.forEach(children, (element, index) => {\n    if (!React.isValidElement(element)) {\n      // Ignore non-elements. This allows people to more easily inline\n      // conditionals in their route config.\n      return;\n    }\n\n    if (element.type === React.Fragment) {\n      // Transparently support React.Fragment and its children.\n      routes.push.apply(\n        routes,\n        createRoutesFromChildren(element.props.children, parentPath)\n      );\n      return;\n    }\n\n    invariant(\n      element.type === Route,\n      `[${\n        typeof element.type === \"string\" ? element.type : element.type.name\n      }] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`\n    );\n\n    invariant(\n      !element.props.index || !element.props.children,\n      \"An index route cannot have child routes.\"\n    );\n\n    let treePath = [...parentPath, index];\n    let route: RouteObject = {\n      id: element.props.id || treePath.join(\"-\"),\n      caseSensitive: element.props.caseSensitive,\n      element: element.props.element,\n      index: element.props.index,\n      path: element.props.path,\n      loader: element.props.loader,\n      action: element.props.action,\n      errorElement: element.props.errorElement,\n      hasErrorBoundary: element.props.errorElement != null,\n      shouldRevalidate: element.props.shouldRevalidate,\n      handle: element.props.handle,\n    };\n\n    if (element.props.children) {\n      route.children = createRoutesFromChildren(\n        element.props.children,\n        treePath\n      );\n    }\n\n    routes.push(route);\n  });\n\n  return routes;\n}\n\n/**\n * Renders the result of `matchRoutes()` into a React element.\n */\nexport function renderMatches(\n  matches: RouteMatch[] | null\n): React.ReactElement | null {\n  return _renderMatches(matches);\n}\n\n/**\n * @private\n * Walk the route tree and add hasErrorBoundary if it's not provided, so that\n * users providing manual route arrays can just specify errorElement\n */\nexport function enhanceManualRouteObjects(\n  routes: RouteObject[]\n): RouteObject[] {\n  return routes.map((route) => {\n    let routeClone = { ...route };\n    if (routeClone.hasErrorBoundary == null) {\n      routeClone.hasErrorBoundary = routeClone.errorElement != null;\n    }\n    if (routeClone.children) {\n      routeClone.children = enhanceManualRouteObjects(routeClone.children);\n    }\n    return routeClone;\n  });\n}\n", "import type {\n  ActionFunction,\n  ActionFunctionArgs,\n  Fetcher,\n  HydrationState,\n  JsonFunction,\n  LoaderFunction,\n  LoaderFunctionArgs,\n  Location,\n  Navigation,\n  Params,\n  ParamParseKey,\n  Path,\n  PathMatch,\n  PathPattern,\n  RedirectFunction,\n  Router as RemixRouter,\n  ShouldRevalidateFunction,\n  To,\n  InitialEntry,\n} from \"@remix-run/router\";\nimport {\n  AbortedDeferredError,\n  Action as NavigationType,\n  createMemoryHistory,\n  createPath,\n  createRouter,\n  defer,\n  generatePath,\n  isRouteErrorResponse,\n  json,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  redirect,\n  resolvePath,\n} from \"@remix-run/router\";\n\nimport type {\n  AwaitProps,\n  MemoryRouterProps,\n  NavigateProps,\n  OutletProps,\n  RouteProps,\n  PathRouteProps,\n  LayoutRouteProps,\n  IndexRouteProps,\n  RouterProps,\n  RoutesProps,\n  RouterProviderProps,\n} from \"./lib/components\";\nimport {\n  enhanceManualRouteObjects,\n  createRoutesFromChildren,\n  renderMatches,\n  Await,\n  MemoryRouter,\n  Navigate,\n  Outlet,\n  Route,\n  Router,\n  RouterProvider,\n  Routes,\n} from \"./lib/components\";\nimport type {\n  DataRouteMatch,\n  DataRouteObject,\n  IndexRouteObject,\n  Navigator,\n  NavigateOptions,\n  NonIndexRouteObject,\n  RouteMatch,\n  RouteObject,\n  RelativeRoutingType,\n} from \"./lib/context\";\nimport {\n  DataRouterContext,\n  DataRouterStateContext,\n  LocationContext,\n  NavigationContext,\n  RouteContext,\n} from \"./lib/context\";\nimport type { NavigateFunction } from \"./lib/hooks\";\nimport {\n  useHref,\n  useInRouterContext,\n  useLocation,\n  useMatch,\n  useNavigationType,\n  useNavigate,\n  useOutlet,\n  useOutletContext,\n  useParams,\n  useResolvedPath,\n  useRoutes,\n  useActionData,\n  useAsyncError,\n  useAsyncValue,\n  useLoaderData,\n  useMatches,\n  useNavigation,\n  useRevalidator,\n  useRouteError,\n  useRouteLoaderData,\n} from \"./lib/hooks\";\n\n// Exported for backwards compatibility, but not being used internally anymore\ntype Hash = string;\ntype Pathname = string;\ntype Search = string;\n\n// Expose react-router public API\nexport type {\n  ActionFunction,\n  ActionFunctionArgs,\n  AwaitProps,\n  DataRouteMatch,\n  DataRouteObject,\n  Fetcher,\n  Hash,\n  IndexRouteObject,\n  IndexRouteProps,\n  JsonFunction,\n  LayoutRouteProps,\n  LoaderFunction,\n  LoaderFunctionArgs,\n  Location,\n  MemoryRouterProps,\n  NavigateFunction,\n  NavigateOptions,\n  NavigateProps,\n  Navigation,\n  Navigator,\n  NonIndexRouteObject,\n  OutletProps,\n  Params,\n  ParamParseKey,\n  Path,\n  PathMatch,\n  Pathname,\n  PathPattern,\n  PathRouteProps,\n  RedirectFunction,\n  RelativeRoutingType,\n  RouteMatch,\n  RouteObject,\n  RouteProps,\n  RouterProps,\n  RouterProviderProps,\n  RoutesProps,\n  Search,\n  ShouldRevalidateFunction,\n  To,\n};\nexport {\n  AbortedDeferredError,\n  Await,\n  MemoryRouter,\n  Navigate,\n  NavigationType,\n  Outlet,\n  Route,\n  Router,\n  RouterProvider,\n  Routes,\n  createPath,\n  createRoutesFromChildren,\n  createRoutesFromChildren as createRoutesFromElements,\n  defer,\n  isRouteErrorResponse,\n  generatePath,\n  json,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  redirect,\n  renderMatches,\n  resolvePath,\n  useActionData,\n  useAsyncError,\n  useAsyncValue,\n  useHref,\n  useInRouterContext,\n  useLoaderData,\n  useLocation,\n  useMatch,\n  useMatches,\n  useNavigate,\n  useNavigation,\n  useNavigationType,\n  useOutlet,\n  useOutletContext,\n  useParams,\n  useResolvedPath,\n  useRevalidator,\n  useRouteError,\n  useRouteLoaderData,\n  useRoutes,\n};\n\nexport function createMemoryRouter(\n  routes: RouteObject[],\n  opts?: {\n    basename?: string;\n    hydrationData?: HydrationState;\n    initialEntries?: InitialEntry[];\n    initialIndex?: number;\n  }\n): RemixRouter {\n  return createRouter({\n    basename: opts?.basename,\n    history: createMemoryHistory({\n      initialEntries: opts?.initialEntries,\n      initialIndex: opts?.initialIndex,\n    }),\n    hydrationData: opts?.hydrationData,\n    routes: enhanceManualRouteObjects(routes),\n  }).initialize();\n}\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n  NavigationContext as UNSAFE_NavigationContext,\n  LocationContext as UNSAFE_LocationContext,\n  RouteContext as UNSAFE_RouteContext,\n  DataRouterContext as UNSAFE_DataRouterContext,\n  DataRouterStateContext as UNSAFE_DataRouterStateContext,\n  enhanceManualRouteObjects as UNSAFE_enhanceManualRouteObjects,\n};\n", "import type { FormEncType, FormMethod } from \"@remix-run/router\";\nimport type { RelativeRoutingType } from \"react-router\";\n\nexport const defaultMethod = \"get\";\nconst defaultEncType = \"application/x-www-form-urlencoded\";\n\nexport function isHtmlElement(object: any): object is HTMLElement {\n  return object != null && typeof object.tagName === \"string\";\n}\n\nexport function isButtonElement(object: any): object is HTMLButtonElement {\n  return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\n\nexport function isFormElement(object: any): object is HTMLFormElement {\n  return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\n\nexport function isInputElement(object: any): object is HTMLInputElement {\n  return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\n\ntype LimitedMouseEvent = Pick<\n  MouseEvent,\n  \"button\" | \"metaKey\" | \"altKey\" | \"ctrlKey\" | \"shiftKey\"\n>;\n\nfunction isModifiedEvent(event: LimitedMouseEvent) {\n  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport function shouldProcessLinkClick(\n  event: LimitedMouseEvent,\n  target?: string\n) {\n  return (\n    event.button === 0 && // Ignore everything but left clicks\n    (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n    !isModifiedEvent(event) // Ignore clicks with modifier keys\n  );\n}\n\nexport type ParamKeyValuePair = [string, string];\n\nexport type URLSearchParamsInit =\n  | string\n  | ParamKeyValuePair[]\n  | Record<string, string | string[]>\n  | URLSearchParams;\n\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n *   let searchParams = new URLSearchParams([\n *     ['sort', 'name'],\n *     ['sort', 'price']\n *   ]);\n *\n * you can do:\n *\n *   let searchParams = createSearchParams({\n *     sort: ['name', 'price']\n *   });\n */\nexport function createSearchParams(\n  init: URLSearchParamsInit = \"\"\n): URLSearchParams {\n  return new URLSearchParams(\n    typeof init === \"string\" ||\n    Array.isArray(init) ||\n    init instanceof URLSearchParams\n      ? init\n      : Object.keys(init).reduce((memo, key) => {\n          let value = init[key];\n          return memo.concat(\n            Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n          );\n        }, [] as ParamKeyValuePair[])\n  );\n}\n\nexport function getSearchParamsForLocation(\n  locationSearch: string,\n  defaultSearchParams: URLSearchParams\n) {\n  let searchParams = createSearchParams(locationSearch);\n\n  for (let key of defaultSearchParams.keys()) {\n    if (!searchParams.has(key)) {\n      defaultSearchParams.getAll(key).forEach((value) => {\n        searchParams.append(key, value);\n      });\n    }\n  }\n\n  return searchParams;\n}\n\nexport interface SubmitOptions {\n  /**\n   * The HTTP method used to submit the form. Overrides `<form method>`.\n   * Defaults to \"GET\".\n   */\n  method?: FormMethod;\n\n  /**\n   * The action URL path used to submit the form. Overrides `<form action>`.\n   * Defaults to the path of the current route.\n   *\n   * Note: It is assumed the path is already resolved. If you need to resolve a\n   * relative path, use `useFormAction`.\n   */\n  action?: string;\n\n  /**\n   * The action URL used to submit the form. Overrides `<form encType>`.\n   * Defaults to \"application/x-www-form-urlencoded\".\n   */\n  encType?: FormEncType;\n\n  /**\n   * Set `true` to replace the current entry in the browser's history stack\n   * instead of creating a new one (i.e. stay on \"the same page\"). Defaults\n   * to `false`.\n   */\n  replace?: boolean;\n\n  /**\n   * Determines whether the form action is relative to the route hierarchy or\n   * the pathname.  Use this if you want to opt out of navigating the route\n   * hierarchy and want to instead route based on /-delimited URL segments\n   */\n  relative?: RelativeRoutingType;\n}\n\nexport function getFormSubmissionInfo(\n  target:\n    | HTMLFormElement\n    | HTMLButtonElement\n    | HTMLInputElement\n    | FormData\n    | URLSearchParams\n    | { [name: string]: string }\n    | null,\n  defaultAction: string,\n  options: SubmitOptions\n): {\n  url: URL;\n  method: string;\n  encType: string;\n  formData: FormData;\n} {\n  let method: string;\n  let action: string;\n  let encType: string;\n  let formData: FormData;\n\n  if (isFormElement(target)) {\n    let submissionTrigger: HTMLButtonElement | HTMLInputElement = (\n      options as any\n    ).submissionTrigger;\n\n    method = options.method || target.getAttribute(\"method\") || defaultMethod;\n    action = options.action || target.getAttribute(\"action\") || defaultAction;\n    encType =\n      options.encType || target.getAttribute(\"enctype\") || defaultEncType;\n\n    formData = new FormData(target);\n\n    if (submissionTrigger && submissionTrigger.name) {\n      formData.append(submissionTrigger.name, submissionTrigger.value);\n    }\n  } else if (\n    isButtonElement(target) ||\n    (isInputElement(target) &&\n      (target.type === \"submit\" || target.type === \"image\"))\n  ) {\n    let form = target.form;\n\n    if (form == null) {\n      throw new Error(\n        `Cannot submit a <button> or <input type=\"submit\"> without a <form>`\n      );\n    }\n\n    // <button>/<input type=\"submit\"> may override attributes of <form>\n\n    method =\n      options.method ||\n      target.getAttribute(\"formmethod\") ||\n      form.getAttribute(\"method\") ||\n      defaultMethod;\n    action =\n      options.action ||\n      target.getAttribute(\"formaction\") ||\n      form.getAttribute(\"action\") ||\n      defaultAction;\n    encType =\n      options.encType ||\n      target.getAttribute(\"formenctype\") ||\n      form.getAttribute(\"enctype\") ||\n      defaultEncType;\n\n    formData = new FormData(form);\n\n    // Include name + value from a <button>, appending in case the button name\n    // matches an existing input name\n    if (target.name) {\n      formData.append(target.name, target.value);\n    }\n  } else if (isHtmlElement(target)) {\n    throw new Error(\n      `Cannot submit element that is not <form>, <button>, or ` +\n        `<input type=\"submit|image\">`\n    );\n  } else {\n    method = options.method || defaultMethod;\n    action = options.action || defaultAction;\n    encType = options.encType || defaultEncType;\n\n    if (target instanceof FormData) {\n      formData = target;\n    } else {\n      formData = new FormData();\n\n      if (target instanceof URLSearchParams) {\n        for (let [name, value] of target) {\n          formData.append(name, value);\n        }\n      } else if (target != null) {\n        for (let name of Object.keys(target)) {\n          formData.append(name, target[name]);\n        }\n      }\n    }\n  }\n\n  let { protocol, host } = window.location;\n  let url = new URL(action, `${protocol}//${host}`);\n\n  return { url, method: method.toLowerCase(), encType, formData };\n}\n", "/**\n * NOTE: If you refactor this to split up the modules into separate files,\n * you'll need to update the rollup config for react-router-dom-v5-compat.\n */\nimport * as React from \"react\";\nimport type {\n  NavigateOptions,\n  RelativeRoutingType,\n  RouteObject,\n  To,\n} from \"react-router\";\nimport {\n  Router,\n  createPath,\n  useHref,\n  useLocation,\n  useMatches,\n  useNavigate,\n  useNavigation,\n  useResolvedPath,\n  UNSAFE_DataRouterContext as DataRouterContext,\n  UNSAFE_DataRouterStateContext as DataRouterStateContext,\n  UNSAFE_NavigationContext as NavigationContext,\n  UNSAFE_RouteContext as RouteContext,\n  UNSAFE_enhanceManualRouteObjects as enhanceManualRouteObjects,\n} from \"react-router\";\nimport type {\n  BrowserHistory,\n  Fetcher,\n  FormEncType,\n  FormMethod,\n  GetScrollRestorationKeyFunction,\n  HashHistory,\n  History,\n  HydrationState,\n  Router as RemixRouter,\n} from \"@remix-run/router\";\nimport {\n  createRouter,\n  createBrowserHistory,\n  createHashHistory,\n  invariant,\n  joinPaths,\n  ErrorResponse,\n} from \"@remix-run/router\";\n\nimport type {\n  SubmitOptions,\n  ParamKeyValuePair,\n  URLSearchParamsInit,\n} from \"./dom\";\nimport {\n  createSearchParams,\n  defaultMethod,\n  getFormSubmissionInfo,\n  getSearchParamsForLocation,\n  shouldProcessLinkClick,\n} from \"./dom\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Re-exports\n////////////////////////////////////////////////////////////////////////////////\n\nexport type {\n  FormEncType,\n  FormMethod,\n  GetScrollRestorationKeyFunction,\n  ParamKeyValuePair,\n  SubmitOptions,\n  URLSearchParamsInit,\n};\nexport { createSearchParams };\n\n// Note: Keep in sync with react-router exports!\nexport type {\n  ActionFunction,\n  ActionFunctionArgs,\n  AwaitProps,\n  DataRouteMatch,\n  DataRouteObject,\n  Fetcher,\n  Hash,\n  IndexRouteObject,\n  IndexRouteProps,\n  JsonFunction,\n  LayoutRouteProps,\n  LoaderFunction,\n  LoaderFunctionArgs,\n  Location,\n  MemoryRouterProps,\n  NavigateFunction,\n  NavigateOptions,\n  NavigateProps,\n  Navigation,\n  Navigator,\n  NonIndexRouteObject,\n  OutletProps,\n  Params,\n  ParamParseKey,\n  Path,\n  PathMatch,\n  Pathname,\n  PathPattern,\n  PathRouteProps,\n  RedirectFunction,\n  RelativeRoutingType,\n  RouteMatch,\n  RouteObject,\n  RouteProps,\n  RouterProps,\n  RouterProviderProps,\n  RoutesProps,\n  Search,\n  ShouldRevalidateFunction,\n  To,\n} from \"react-router\";\nexport {\n  AbortedDeferredError,\n  Await,\n  MemoryRouter,\n  Navigate,\n  NavigationType,\n  Outlet,\n  Route,\n  Router,\n  RouterProvider,\n  Routes,\n  createMemoryRouter,\n  createPath,\n  createRoutesFromChildren,\n  createRoutesFromElements,\n  defer,\n  isRouteErrorResponse,\n  generatePath,\n  json,\n  matchPath,\n  matchRoutes,\n  parsePath,\n  redirect,\n  renderMatches,\n  resolvePath,\n  useActionData,\n  useAsyncError,\n  useAsyncValue,\n  useHref,\n  useInRouterContext,\n  useLoaderData,\n  useLocation,\n  useMatch,\n  useMatches,\n  useNavigate,\n  useNavigation,\n  useNavigationType,\n  useOutlet,\n  useOutletContext,\n  useParams,\n  useResolvedPath,\n  useRevalidator,\n  useRouteError,\n  useRouteLoaderData,\n  useRoutes,\n} from \"react-router\";\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n  UNSAFE_DataRouterContext,\n  UNSAFE_DataRouterStateContext,\n  UNSAFE_NavigationContext,\n  UNSAFE_LocationContext,\n  UNSAFE_RouteContext,\n  UNSAFE_enhanceManualRouteObjects,\n} from \"react-router\";\n//#endregion\n\ndeclare global {\n  var __staticRouterHydrationData: HydrationState | undefined;\n}\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Routers\n////////////////////////////////////////////////////////////////////////////////\n\nexport function createBrowserRouter(\n  routes: RouteObject[],\n  opts?: {\n    basename?: string;\n    hydrationData?: HydrationState;\n    window?: Window;\n  }\n): RemixRouter {\n  return createRouter({\n    basename: opts?.basename,\n    history: createBrowserHistory({ window: opts?.window }),\n    hydrationData: opts?.hydrationData || parseHydrationData(),\n    routes: enhanceManualRouteObjects(routes),\n  }).initialize();\n}\n\nexport function createHashRouter(\n  routes: RouteObject[],\n  opts?: {\n    basename?: string;\n    hydrationData?: HydrationState;\n    window?: Window;\n  }\n): RemixRouter {\n  return createRouter({\n    basename: opts?.basename,\n    history: createHashHistory({ window: opts?.window }),\n    hydrationData: opts?.hydrationData || parseHydrationData(),\n    routes: enhanceManualRouteObjects(routes),\n  }).initialize();\n}\n\nfunction parseHydrationData(): HydrationState | undefined {\n  let state = window?.__staticRouterHydrationData;\n  if (state && state.errors) {\n    state = {\n      ...state,\n      errors: deserializeErrors(state.errors),\n    };\n  }\n  return state;\n}\n\nfunction deserializeErrors(\n  errors: RemixRouter[\"state\"][\"errors\"]\n): RemixRouter[\"state\"][\"errors\"] {\n  if (!errors) return null;\n  let entries = Object.entries(errors);\n  let serialized: RemixRouter[\"state\"][\"errors\"] = {};\n  for (let [key, val] of entries) {\n    // Hey you!  If you change this, please change the corresponding logic in\n    // serializeErrors in react-router-dom/server.tsx :)\n    if (val && val.__type === \"RouteErrorResponse\") {\n      serialized[key] = new ErrorResponse(\n        val.status,\n        val.statusText,\n        val.data,\n        val.internal === true\n      );\n    } else if (val && val.__type === \"Error\") {\n      let error = new Error(val.message);\n      // Wipe away the client-side stack trace.  Nothing to fill it in with\n      // because we don't serialize SSR stack traces for security reasons\n      error.stack = \"\";\n      serialized[key] = error;\n    } else {\n      serialized[key] = val;\n    }\n  }\n  return serialized;\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Components\n////////////////////////////////////////////////////////////////////////////////\n\nexport interface BrowserRouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  window?: Window;\n}\n\n/**\n * A `<Router>` for use in web browsers. Provides the cleanest URLs.\n */\nexport function BrowserRouter({\n  basename,\n  children,\n  window,\n}: BrowserRouterProps) {\n  let historyRef = React.useRef<BrowserHistory>();\n  if (historyRef.current == null) {\n    historyRef.current = createBrowserHistory({ window, v5Compat: true });\n  }\n\n  let history = historyRef.current;\n  let [state, setState] = React.useState({\n    action: history.action,\n    location: history.location,\n  });\n\n  React.useLayoutEffect(() => history.listen(setState), [history]);\n\n  return (\n    <Router\n      basename={basename}\n      children={children}\n      location={state.location}\n      navigationType={state.action}\n      navigator={history}\n    />\n  );\n}\n\nexport interface HashRouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  window?: Window;\n}\n\n/**\n * A `<Router>` for use in web browsers. Stores the location in the hash\n * portion of the URL so it is not sent to the server.\n */\nexport function HashRouter({ basename, children, window }: HashRouterProps) {\n  let historyRef = React.useRef<HashHistory>();\n  if (historyRef.current == null) {\n    historyRef.current = createHashHistory({ window, v5Compat: true });\n  }\n\n  let history = historyRef.current;\n  let [state, setState] = React.useState({\n    action: history.action,\n    location: history.location,\n  });\n\n  React.useLayoutEffect(() => history.listen(setState), [history]);\n\n  return (\n    <Router\n      basename={basename}\n      children={children}\n      location={state.location}\n      navigationType={state.action}\n      navigator={history}\n    />\n  );\n}\n\nexport interface HistoryRouterProps {\n  basename?: string;\n  children?: React.ReactNode;\n  history: History;\n}\n\n/**\n * A `<Router>` that accepts a pre-instantiated history object. It's important\n * to note that using your own history object is highly discouraged and may add\n * two versions of the history library to your bundles unless you use the same\n * version of the history library that React Router uses internally.\n */\nfunction HistoryRouter({ basename, children, history }: HistoryRouterProps) {\n  const [state, setState] = React.useState({\n    action: history.action,\n    location: history.location,\n  });\n\n  React.useLayoutEffect(() => history.listen(setState), [history]);\n\n  return (\n    <Router\n      basename={basename}\n      children={children}\n      location={state.location}\n      navigationType={state.action}\n      navigator={history}\n    />\n  );\n}\n\nif (__DEV__) {\n  HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\n\nexport { HistoryRouter as unstable_HistoryRouter };\n\nexport interface LinkProps\n  extends Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, \"href\"> {\n  reloadDocument?: boolean;\n  replace?: boolean;\n  state?: any;\n  preventScrollReset?: boolean;\n  relative?: RelativeRoutingType;\n  to: To;\n}\n\n/**\n * The public API for rendering a history-aware <a>.\n */\nexport const Link = React.forwardRef<HTMLAnchorElement, LinkProps>(\n  function LinkWithRef(\n    {\n      onClick,\n      relative,\n      reloadDocument,\n      replace,\n      state,\n      target,\n      to,\n      preventScrollReset,\n      ...rest\n    },\n    ref\n  ) {\n    let href = useHref(to, { relative });\n    let internalOnClick = useLinkClickHandler(to, {\n      replace,\n      state,\n      target,\n      preventScrollReset,\n      relative,\n    });\n    function handleClick(\n      event: React.MouseEvent<HTMLAnchorElement, MouseEvent>\n    ) {\n      if (onClick) onClick(event);\n      if (!event.defaultPrevented) {\n        internalOnClick(event);\n      }\n    }\n\n    return (\n      // eslint-disable-next-line jsx-a11y/anchor-has-content\n      <a\n        {...rest}\n        href={href}\n        onClick={reloadDocument ? onClick : handleClick}\n        ref={ref}\n        target={target}\n      />\n    );\n  }\n);\n\nif (__DEV__) {\n  Link.displayName = \"Link\";\n}\n\nexport interface NavLinkProps\n  extends Omit<LinkProps, \"className\" | \"style\" | \"children\"> {\n  children?:\n    | React.ReactNode\n    | ((props: { isActive: boolean; isPending: boolean }) => React.ReactNode);\n  caseSensitive?: boolean;\n  className?:\n    | string\n    | ((props: {\n        isActive: boolean;\n        isPending: boolean;\n      }) => string | undefined);\n  end?: boolean;\n  style?:\n    | React.CSSProperties\n    | ((props: {\n        isActive: boolean;\n        isPending: boolean;\n      }) => React.CSSProperties | undefined);\n}\n\n/**\n * A <Link> wrapper that knows if it's \"active\" or not.\n */\nexport const NavLink = React.forwardRef<HTMLAnchorElement, NavLinkProps>(\n  function NavLinkWithRef(\n    {\n      \"aria-current\": ariaCurrentProp = \"page\",\n      caseSensitive = false,\n      className: classNameProp = \"\",\n      end = false,\n      style: styleProp,\n      to,\n      children,\n      ...rest\n    },\n    ref\n  ) {\n    let path = useResolvedPath(to, { relative: rest.relative });\n    let location = useLocation();\n    let routerState = React.useContext(DataRouterStateContext);\n    let { navigator } = React.useContext(NavigationContext);\n\n    let toPathname = navigator.encodeLocation\n      ? navigator.encodeLocation(path).pathname\n      : path.pathname;\n    let locationPathname = location.pathname;\n    let nextLocationPathname =\n      routerState && routerState.navigation && routerState.navigation.location\n        ? routerState.navigation.location.pathname\n        : null;\n\n    if (!caseSensitive) {\n      locationPathname = locationPathname.toLowerCase();\n      nextLocationPathname = nextLocationPathname\n        ? nextLocationPathname.toLowerCase()\n        : null;\n      toPathname = toPathname.toLowerCase();\n    }\n\n    let isActive =\n      locationPathname === toPathname ||\n      (!end &&\n        locationPathname.startsWith(toPathname) &&\n        locationPathname.charAt(toPathname.length) === \"/\");\n\n    let isPending =\n      nextLocationPathname != null &&\n      (nextLocationPathname === toPathname ||\n        (!end &&\n          nextLocationPathname.startsWith(toPathname) &&\n          nextLocationPathname.charAt(toPathname.length) === \"/\"));\n\n    let ariaCurrent = isActive ? ariaCurrentProp : undefined;\n\n    let className: string | undefined;\n    if (typeof classNameProp === \"function\") {\n      className = classNameProp({ isActive, isPending });\n    } else {\n      // If the className prop is not a function, we use a default `active`\n      // class for <NavLink />s that are active. In v5 `active` was the default\n      // value for `activeClassName`, but we are removing that API and can still\n      // use the old default behavior for a cleaner upgrade path and keep the\n      // simple styling rules working as they currently do.\n      className = [\n        classNameProp,\n        isActive ? \"active\" : null,\n        isPending ? \"pending\" : null,\n      ]\n        .filter(Boolean)\n        .join(\" \");\n    }\n\n    let style =\n      typeof styleProp === \"function\"\n        ? styleProp({ isActive, isPending })\n        : styleProp;\n\n    return (\n      <Link\n        {...rest}\n        aria-current={ariaCurrent}\n        className={className}\n        ref={ref}\n        style={style}\n        to={to}\n      >\n        {typeof children === \"function\"\n          ? children({ isActive, isPending })\n          : children}\n      </Link>\n    );\n  }\n);\n\nif (__DEV__) {\n  NavLink.displayName = \"NavLink\";\n}\n\nexport interface FormProps extends React.FormHTMLAttributes<HTMLFormElement> {\n  /**\n   * The HTTP verb to use when the form is submit. Supports \"get\", \"post\",\n   * \"put\", \"delete\", \"patch\".\n   */\n  method?: FormMethod;\n\n  /**\n   * Normal `<form action>` but supports React Router's relative paths.\n   */\n  action?: string;\n\n  /**\n   * Forces a full document navigation instead of a fetch.\n   */\n  reloadDocument?: boolean;\n\n  /**\n   * Replaces the current entry in the browser history stack when the form\n   * navigates. Use this if you don't want the user to be able to click \"back\"\n   * to the page with the form on it.\n   */\n  replace?: boolean;\n\n  /**\n   * Determines whether the form action is relative to the route hierarchy or\n   * the pathname.  Use this if you want to opt out of navigating the route\n   * hierarchy and want to instead route based on /-delimited URL segments\n   */\n  relative?: RelativeRoutingType;\n\n  /**\n   * A function to call when the form is submitted. If you call\n   * `event.preventDefault()` then this form will not do anything.\n   */\n  onSubmit?: React.FormEventHandler<HTMLFormElement>;\n}\n\n/**\n * A `@remix-run/router`-aware `<form>`. It behaves like a normal form except\n * that the interaction with the server is with `fetch` instead of new document\n * requests, allowing components to add nicer UX to the page as the form is\n * submitted and returns with data.\n */\nexport const Form = React.forwardRef<HTMLFormElement, FormProps>(\n  (props, ref) => {\n    return <FormImpl {...props} ref={ref} />;\n  }\n);\n\nif (__DEV__) {\n  Form.displayName = \"Form\";\n}\n\ntype HTMLSubmitEvent = React.BaseSyntheticEvent<\n  SubmitEvent,\n  Event,\n  HTMLFormElement\n>;\n\ntype HTMLFormSubmitter = HTMLButtonElement | HTMLInputElement;\n\ninterface FormImplProps extends FormProps {\n  fetcherKey?: string;\n  routeId?: string;\n}\n\nconst FormImpl = React.forwardRef<HTMLFormElement, FormImplProps>(\n  (\n    {\n      reloadDocument,\n      replace,\n      method = defaultMethod,\n      action,\n      onSubmit,\n      fetcherKey,\n      routeId,\n      relative,\n      ...props\n    },\n    forwardedRef\n  ) => {\n    let submit = useSubmitImpl(fetcherKey, routeId);\n    let formMethod: FormMethod =\n      method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n    let formAction = useFormAction(action, { relative });\n    let submitHandler: React.FormEventHandler<HTMLFormElement> = (event) => {\n      onSubmit && onSubmit(event);\n      if (event.defaultPrevented) return;\n      event.preventDefault();\n\n      let submitter = (event as unknown as HTMLSubmitEvent).nativeEvent\n        .submitter as HTMLFormSubmitter | null;\n\n      let submitMethod =\n        (submitter?.getAttribute(\"formmethod\") as FormMethod | undefined) ||\n        method;\n\n      submit(submitter || event.currentTarget, {\n        method: submitMethod,\n        replace,\n        relative,\n      });\n    };\n\n    return (\n      <form\n        ref={forwardedRef}\n        method={formMethod}\n        action={formAction}\n        onSubmit={reloadDocument ? onSubmit : submitHandler}\n        {...props}\n      />\n    );\n  }\n);\n\nif (__DEV__) {\n  FormImpl.displayName = \"FormImpl\";\n}\n\nexport interface ScrollRestorationProps {\n  getKey?: GetScrollRestorationKeyFunction;\n  storageKey?: string;\n}\n\n/**\n * This component will emulate the browser's scroll restoration on location\n * changes.\n */\nexport function ScrollRestoration({\n  getKey,\n  storageKey,\n}: ScrollRestorationProps) {\n  useScrollRestoration({ getKey, storageKey });\n  return null;\n}\n\nif (__DEV__) {\n  ScrollRestoration.displayName = \"ScrollRestoration\";\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hooks\n////////////////////////////////////////////////////////////////////////////////\n\nenum DataRouterHook {\n  UseScrollRestoration = \"useScrollRestoration\",\n  UseSubmitImpl = \"useSubmitImpl\",\n  UseFetcher = \"useFetcher\",\n}\n\nenum DataRouterStateHook {\n  UseFetchers = \"useFetchers\",\n  UseScrollRestoration = \"useScrollRestoration\",\n}\n\nfunction getDataRouterConsoleError(\n  hookName: DataRouterHook | DataRouterStateHook\n) {\n  return `${hookName} must be used within a data router.  See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n  let ctx = React.useContext(DataRouterContext);\n  invariant(ctx, getDataRouterConsoleError(hookName));\n  return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n  let state = React.useContext(DataRouterStateContext);\n  invariant(state, getDataRouterConsoleError(hookName));\n  return state;\n}\n\n/**\n * Handles the click behavior for router `<Link>` components. This is useful if\n * you need to create custom `<Link>` components with the same click behavior we\n * use in our exported `<Link>`.\n */\nexport function useLinkClickHandler<E extends Element = HTMLAnchorElement>(\n  to: To,\n  {\n    target,\n    replace: replaceProp,\n    state,\n    preventScrollReset,\n    relative,\n  }: {\n    target?: React.HTMLAttributeAnchorTarget;\n    replace?: boolean;\n    state?: any;\n    preventScrollReset?: boolean;\n    relative?: RelativeRoutingType;\n  } = {}\n): (event: React.MouseEvent<E, MouseEvent>) => void {\n  let navigate = useNavigate();\n  let location = useLocation();\n  let path = useResolvedPath(to, { relative });\n\n  return React.useCallback(\n    (event: React.MouseEvent<E, MouseEvent>) => {\n      if (shouldProcessLinkClick(event, target)) {\n        event.preventDefault();\n\n        // If the URL hasn't changed, a regular <a> will do a replace instead of\n        // a push, so do the same here unless the replace prop is explicitly set\n        let replace =\n          replaceProp !== undefined\n            ? replaceProp\n            : createPath(location) === createPath(path);\n\n        navigate(to, { replace, state, preventScrollReset, relative });\n      }\n    },\n    [\n      location,\n      navigate,\n      path,\n      replaceProp,\n      state,\n      target,\n      to,\n      preventScrollReset,\n      relative,\n    ]\n  );\n}\n\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\nexport function useSearchParams(\n  defaultInit?: URLSearchParamsInit\n): [URLSearchParams, SetURLSearchParams] {\n  warning(\n    typeof URLSearchParams !== \"undefined\",\n    `You cannot use the \\`useSearchParams\\` hook in a browser that does not ` +\n      `support the URLSearchParams API. If you need to support Internet ` +\n      `Explorer 11, we recommend you load a polyfill such as ` +\n      `https://github.com/ungap/url-search-params\\n\\n` +\n      `If you're unsure how to load polyfills, we recommend you check out ` +\n      `https://polyfill.io/v3/ which provides some recommendations about how ` +\n      `to load polyfills only for users that need them, instead of for every ` +\n      `user.`\n  );\n\n  let defaultSearchParamsRef = React.useRef(createSearchParams(defaultInit));\n\n  let location = useLocation();\n  let searchParams = React.useMemo(\n    () =>\n      getSearchParamsForLocation(\n        location.search,\n        defaultSearchParamsRef.current\n      ),\n    [location.search]\n  );\n\n  let navigate = useNavigate();\n  let setSearchParams = React.useCallback<SetURLSearchParams>(\n    (nextInit, navigateOptions) => {\n      const newSearchParams = createSearchParams(\n        typeof nextInit === \"function\" ? nextInit(searchParams) : nextInit\n      );\n      navigate(\"?\" + newSearchParams, navigateOptions);\n    },\n    [navigate, searchParams]\n  );\n\n  return [searchParams, setSearchParams];\n}\n\ntype SetURLSearchParams = (\n  nextInit?:\n    | URLSearchParamsInit\n    | ((prev: URLSearchParams) => URLSearchParamsInit),\n  navigateOpts?: NavigateOptions\n) => void;\n\ntype SubmitTarget =\n  | HTMLFormElement\n  | HTMLButtonElement\n  | HTMLInputElement\n  | FormData\n  | URLSearchParams\n  | { [name: string]: string }\n  | null;\n\n/**\n * Submits a HTML `<form>` to the server without reloading the page.\n */\nexport interface SubmitFunction {\n  (\n    /**\n     * Specifies the `<form>` to be submitted to the server, a specific\n     * `<button>` or `<input type=\"submit\">` to use to submit the form, or some\n     * arbitrary data to submit.\n     *\n     * Note: When using a `<button>` its `name` and `value` will also be\n     * included in the form data that is submitted.\n     */\n    target: SubmitTarget,\n\n    /**\n     * Options that override the `<form>`'s own attributes. Required when\n     * submitting arbitrary data without a backing `<form>`.\n     */\n    options?: SubmitOptions\n  ): void;\n}\n\n/**\n * Returns a function that may be used to programmatically submit a form (or\n * some arbitrary data) to the server.\n */\nexport function useSubmit(): SubmitFunction {\n  return useSubmitImpl();\n}\n\nfunction useSubmitImpl(fetcherKey?: string, routeId?: string): SubmitFunction {\n  let { router } = useDataRouterContext(DataRouterHook.UseSubmitImpl);\n  let defaultAction = useFormAction();\n\n  return React.useCallback(\n    (target, options = {}) => {\n      if (typeof document === \"undefined\") {\n        throw new Error(\n          \"You are calling submit during the server render. \" +\n            \"Try calling submit within a `useEffect` or callback instead.\"\n        );\n      }\n\n      let { method, encType, formData, url } = getFormSubmissionInfo(\n        target,\n        defaultAction,\n        options\n      );\n\n      let href = url.pathname + url.search;\n      let opts = {\n        replace: options.replace,\n        formData,\n        formMethod: method as FormMethod,\n        formEncType: encType as FormEncType,\n      };\n      if (fetcherKey) {\n        invariant(routeId != null, \"No routeId available for useFetcher()\");\n        router.fetch(fetcherKey, routeId, href, opts);\n      } else {\n        router.navigate(href, opts);\n      }\n    },\n    [defaultAction, router, fetcherKey, routeId]\n  );\n}\n\nexport function useFormAction(\n  action?: string,\n  { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n  let { basename } = React.useContext(NavigationContext);\n  let routeContext = React.useContext(RouteContext);\n  invariant(routeContext, \"useFormAction must be used inside a RouteContext\");\n\n  let [match] = routeContext.matches.slice(-1);\n  // Shallow clone path so we can modify it below, otherwise we modify the\n  // object referenced by useMemo inside useResolvedPath\n  let path = { ...useResolvedPath(action ? action : \".\", { relative }) };\n\n  // Previously we set the default action to \".\". The problem with this is that\n  // `useResolvedPath(\".\")` excludes search params and the hash of the resolved\n  // URL. This is the intended behavior of when \".\" is specifically provided as\n  // the form action, but inconsistent w/ browsers when the action is omitted.\n  // https://github.com/remix-run/remix/issues/927\n  let location = useLocation();\n  if (action == null) {\n    // Safe to write to these directly here since if action was undefined, we\n    // would have called useResolvedPath(\".\") which will never include a search\n    // or hash\n    path.search = location.search;\n    path.hash = location.hash;\n\n    // When grabbing search params from the URL, remove the automatically\n    // inserted ?index param so we match the useResolvedPath search behavior\n    // which would not include ?index\n    if (match.route.index) {\n      let params = new URLSearchParams(path.search);\n      params.delete(\"index\");\n      path.search = params.toString() ? `?${params.toString()}` : \"\";\n    }\n  }\n\n  if ((!action || action === \".\") && match.route.index) {\n    path.search = path.search\n      ? path.search.replace(/^\\?/, \"?index&\")\n      : \"?index\";\n  }\n\n  // If we're operating within a basename, prepend it to the pathname prior\n  // to creating the form action.  If this is a root navigation, then just use\n  // the raw basename which allows the basename to have full control over the\n  // presence of a trailing slash on root actions\n  if (basename !== \"/\") {\n    path.pathname =\n      path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n  }\n\n  return createPath(path);\n}\n\nfunction createFetcherForm(fetcherKey: string, routeId: string) {\n  let FetcherForm = React.forwardRef<HTMLFormElement, FormProps>(\n    (props, ref) => {\n      return (\n        <FormImpl\n          {...props}\n          ref={ref}\n          fetcherKey={fetcherKey}\n          routeId={routeId}\n        />\n      );\n    }\n  );\n  if (__DEV__) {\n    FetcherForm.displayName = \"fetcher.Form\";\n  }\n  return FetcherForm;\n}\n\nlet fetcherId = 0;\n\nexport type FetcherWithComponents<TData> = Fetcher<TData> & {\n  Form: ReturnType<typeof createFetcherForm>;\n  submit: (\n    target: SubmitTarget,\n    // Fetchers cannot replace because they are not navigation events\n    options?: Omit<SubmitOptions, \"replace\">\n  ) => void;\n  load: (href: string) => void;\n};\n\n/**\n * Interacts with route loaders and actions without causing a navigation. Great\n * for any interaction that stays on the same page.\n */\nexport function useFetcher<TData = any>(): FetcherWithComponents<TData> {\n  let { router } = useDataRouterContext(DataRouterHook.UseFetcher);\n\n  let route = React.useContext(RouteContext);\n  invariant(route, `useFetcher must be used inside a RouteContext`);\n\n  let routeId = route.matches[route.matches.length - 1]?.route.id;\n  invariant(\n    routeId != null,\n    `useFetcher can only be used on routes that contain a unique \"id\"`\n  );\n\n  let [fetcherKey] = React.useState(() => String(++fetcherId));\n  let [Form] = React.useState(() => {\n    invariant(routeId, `No routeId available for fetcher.Form()`);\n    return createFetcherForm(fetcherKey, routeId);\n  });\n  let [load] = React.useState(() => (href: string) => {\n    invariant(router, \"No router available for fetcher.load()\");\n    invariant(routeId, \"No routeId available for fetcher.load()\");\n    router.fetch(fetcherKey, routeId, href);\n  });\n  let submit = useSubmitImpl(fetcherKey, routeId);\n\n  let fetcher = router.getFetcher<TData>(fetcherKey);\n\n  let fetcherWithComponents = React.useMemo(\n    () => ({\n      Form,\n      submit,\n      load,\n      ...fetcher,\n    }),\n    [fetcher, Form, submit, load]\n  );\n\n  React.useEffect(() => {\n    // Is this busted when the React team gets real weird and calls effects\n    // twice on mount?  We really just need to garbage collect here when this\n    // fetcher is no longer around.\n    return () => {\n      if (!router) {\n        console.warn(`No fetcher available to clean up from useFetcher()`);\n        return;\n      }\n      router.deleteFetcher(fetcherKey);\n    };\n  }, [router, fetcherKey]);\n\n  return fetcherWithComponents;\n}\n\n/**\n * Provides all fetchers currently on the page. Useful for layouts and parent\n * routes that need to provide pending/optimistic UI regarding the fetch.\n */\nexport function useFetchers(): Fetcher[] {\n  let state = useDataRouterState(DataRouterStateHook.UseFetchers);\n  return [...state.fetchers.values()];\n}\n\nconst SCROLL_RESTORATION_STORAGE_KEY = \"react-router-scroll-positions\";\nlet savedScrollPositions: Record<string, number> = {};\n\n/**\n * When rendered inside a RouterProvider, will restore scroll positions on navigations\n */\nfunction useScrollRestoration({\n  getKey,\n  storageKey,\n}: {\n  getKey?: GetScrollRestorationKeyFunction;\n  storageKey?: string;\n} = {}) {\n  let { router } = useDataRouterContext(DataRouterHook.UseScrollRestoration);\n  let { restoreScrollPosition, preventScrollReset } = useDataRouterState(\n    DataRouterStateHook.UseScrollRestoration\n  );\n  let location = useLocation();\n  let matches = useMatches();\n  let navigation = useNavigation();\n\n  // Trigger manual scroll restoration while we're active\n  React.useEffect(() => {\n    window.history.scrollRestoration = \"manual\";\n    return () => {\n      window.history.scrollRestoration = \"auto\";\n    };\n  }, []);\n\n  // Save positions on unload\n  useBeforeUnload(\n    React.useCallback(() => {\n      if (navigation.state === \"idle\") {\n        let key = (getKey ? getKey(location, matches) : null) || location.key;\n        savedScrollPositions[key] = window.scrollY;\n      }\n      sessionStorage.setItem(\n        storageKey || SCROLL_RESTORATION_STORAGE_KEY,\n        JSON.stringify(savedScrollPositions)\n      );\n      window.history.scrollRestoration = \"auto\";\n    }, [storageKey, getKey, navigation.state, location, matches])\n  );\n\n  // Read in any saved scroll locations\n  if (typeof document !== \"undefined\") {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useLayoutEffect(() => {\n      try {\n        let sessionPositions = sessionStorage.getItem(\n          storageKey || SCROLL_RESTORATION_STORAGE_KEY\n        );\n        if (sessionPositions) {\n          savedScrollPositions = JSON.parse(sessionPositions);\n        }\n      } catch (e) {\n        // no-op, use default empty object\n      }\n    }, [storageKey]);\n\n    // Enable scroll restoration in the router\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useLayoutEffect(() => {\n      let disableScrollRestoration = router?.enableScrollRestoration(\n        savedScrollPositions,\n        () => window.scrollY,\n        getKey\n      );\n      return () => disableScrollRestoration && disableScrollRestoration();\n    }, [router, getKey]);\n\n    // Restore scrolling when state.restoreScrollPosition changes\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useLayoutEffect(() => {\n      // Explicit false means don't do anything (used for submissions)\n      if (restoreScrollPosition === false) {\n        return;\n      }\n\n      // been here before, scroll to it\n      if (typeof restoreScrollPosition === \"number\") {\n        window.scrollTo(0, restoreScrollPosition);\n        return;\n      }\n\n      // try to scroll to the hash\n      if (location.hash) {\n        let el = document.getElementById(location.hash.slice(1));\n        if (el) {\n          el.scrollIntoView();\n          return;\n        }\n      }\n\n      // Opt out of scroll reset if this link requested it\n      if (preventScrollReset === true) {\n        return;\n      }\n\n      // otherwise go to the top on new locations\n      window.scrollTo(0, 0);\n    }, [location, restoreScrollPosition, preventScrollReset]);\n  }\n}\n\n/**\n * Setup a callback to be fired on the window's `beforeunload` event. This is\n * useful for saving some data to `window.localStorage` just before the page\n * refreshes.\n *\n * Note: The `callback` argument should be a function created with\n * `React.useCallback()`.\n */\nexport function useBeforeUnload(\n  callback: (event: BeforeUnloadEvent) => any\n): void {\n  React.useEffect(() => {\n    window.addEventListener(\"beforeunload\", callback);\n    return () => {\n      window.removeEventListener(\"beforeunload\", callback);\n    };\n  }, [callback]);\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Utils\n////////////////////////////////////////////////////////////////////////////////\n\nfunction warning(cond: boolean, message: string): void {\n  if (!cond) {\n    // eslint-disable-next-line no-console\n    if (typeof console !== \"undefined\") console.warn(message);\n\n    try {\n      // Welcome to debugging React Router!\n      //\n      // This error is thrown as a convenience so you can more easily\n      // find the source for a warning that appears in the console by\n      // enabling \"pause on exceptions\" in your JavaScript debugger.\n      throw new Error(message);\n      // eslint-disable-next-line no-empty\n    } catch (e) {}\n  }\n}\n//#endregion\n\nexport { useScrollRestoration as UNSAFE_useScrollRestoration };\n", "import * as React from 'react';\nimport { useParams, Navigate } from 'react-router-dom';\nimport DocumentsPage from './pages/DocumentsPage/DocumentsPage';\nimport DocumentPage from './pages/DocumentsPage/DocumentPage';\n\n// The closed set of params that should render <DocumentsPage>\nconst DOCUMENTS_PAGE_PARAMS = new Set(['przychodzace', 'wychodzace']);\n\nconst DocumentsRouter = () => {\n  const { id } = useParams<{ id: string }>();\n\n  console.log(\"ID\", id)\n\n  if (id && DOCUMENTS_PAGE_PARAMS.has(id)) {\n    return <DocumentsPage documentStatus=\"open\" />;\n  }\n\n  return <DocumentPage />;\n};\n\nexport default DocumentsRouter;", "import * as React from 'react';\nimport { useMemo } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { useNavigate } from 'react-router';\nimport { useEffect, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport Tabs, { TabElement } from '../../components/Tabs/Tabs';\nimport { usePermissions } from '../../hooks/usePermissions';\nimport useMessages from '../../hooks/useMessages';\nimport { useAppSelector } from '../../hooks/reduxHooks';\nimport useFilters from '../../hooks/useFilters';\nimport Layout from '../../components/Layout/Layout';\nimport PageHeader from '../../components/Layout/PageHeader';\nimport { FormInput } from '../../components/FormInputs';\nimport Button from '../../components/Button/Button';\nimport FiltersIcon from '../../icons/filters.svg';\nimport PlusIcon from '../../icons/plus.svg';\nimport EmployeeDocumentsFilters from './EmployeeDocumentsPage/EmployeeDocumentsFilters';\nimport ContentWrapper from '../../components/ContentWrapper/ContentWrapper';\nimport EmployeeDocumentsList from './EmployeeDocumentsPage/EmployeeDocumentsList';\nimport TenantDocumentsList from './TenantDocumentsPage/TenantDocumentsList';\nimport TenantDocumentsFilters from './TenantDocumentsPage/TenantDocumentsFilters';\n\ninterface DocumentSearchInput {\n  number_title_search?: string | '',\n}\n\ninterface DocumentsPageProps {\n  documentStatus: 'open' | 'mine_in_progress' | 'unassigned' | 'created_by_me'\n}\n\nconst DocumentsPage = ({ documentStatus }: DocumentsPageProps) => {\n  const getMessage = useMessages();\n  const navigate = useNavigate();\n  const { id } = useParams();\n  const {\n    hasPermission, checkPermission, hasRoleType, checkModuleEnabled,\n  } = usePermissions();\n\n\n  // ID is document type. Easier to route that way as there is document/:id path too    \n  const translatedDocumentType = id\n  ? getMessage(`parameters.journals.url.${id}`)\n  : 'all';\n\n  const tabs: TabElement[] = useMemo(() => {\n    if (!hasPermission('tasks_list')) return [];\n\n    const pathPrefix = translatedDocumentType === 'incoming'\n      ? `/dokumenty/${getMessage('parameters.journals.url.incoming')}`\n      : translatedDocumentType === 'outgoing'\n        ? `/dokumenty/${getMessage('parameters.journals.url.outgoing')}`\n        : '/dokumenty';\n\n    return [\n      { label: getMessage('documents.tabs.all'), path: `${pathPrefix}/otwarte` },\n      { label: getMessage('documents.tabs.mine_in_progress'), path: `${pathPrefix}/w-trakcie` },\n      { label: getMessage('documents.tabs.unassigned'), path: `${pathPrefix}/nieprzypisane` },\n      { label: getMessage('documents.tabs.created_by_me'), path: `${pathPrefix}/moje` },\n    ];\n  }, [hasPermission]);\n\nconst hasFilterSet = useAppSelector((state) => !!state.app.filters.find((filter) => filter.id === 'documentsList'));\nconst [filtersOpen, setFiltersOpen] = useState(hasFilterSet);\n\nconst { saveFilterValues, filterValues } = useFilters<DocumentSearchInput>('documentsList');\nconst methods = useForm<DocumentSearchInput>({\n  defaultValues: {\n    number_title_search: filterValues?.number_title_search || '',\n  },\n});\n\nuseEffect(() => {\n  methods.watch(\n    (filters) => {\n      saveFilterValues(filters);\n    },\n  );\n}, [methods.watch]);\n\ncheckPermission('documents_list');\ncheckModuleEnabled('documents');\n\nreturn (\n  <Layout currentPage=\"documents\">\n    <PageHeader pageTitle={getMessage('documents.list.title')} currentPage=\"documents\">\n      {!filtersOpen && (\n        /* eslint-disable-next-line react/jsx-props-no-spreading */\n        <FormProvider {...methods}>\n          <FormInput\n            className=\"col-span-2\"\n            id=\"number_title_search\"\n            type=\"search\"\n            inputClassName=\"w-full my-0\"\n            placeholder={getMessage('filters.search')}\n            ariaLabel=\"Szukaj dokumentu\"\n          />\n        </FormProvider>\n      )}\n      <Button\n        Icon={FiltersIcon}\n        styleType=\"secondary\"\n        size=\"small\"\n        onClick={() => setFiltersOpen((filtersOpen) => !filtersOpen)}\n        className=\"mx-3 py-1 appearance-none\"\n      >\n        {getMessage('filters')}\n      </Button>\n      {hasPermission('documents_add') && hasRoleType('worker') && (\n        <Button\n          onClick={() => navigate(translatedDocumentType !== 'all' ? `/dokumenty/${getMessage(`parameters.journals.url.${translatedDocumentType}`)}/nowy` : '/dokumenty/nowy')}\n          className=\"py-1\"\n          size=\"small\"\n          Icon={PlusIcon}\n        >\n          {getMessage('documents.list.newDocument')}\n        </Button>\n      )}\n    </PageHeader>\n    <Tabs tabElements={tabs} />\n\n    {filtersOpen && (hasRoleType('worker') ? <EmployeeDocumentsFilters documentType={translatedDocumentType}/> : <TenantDocumentsFilters />)}\n    <ContentWrapper className=\"md:grid-rows-[auto_minmax(200px,_max-content)_auto]\">\n      {hasRoleType('worker') ? <EmployeeDocumentsList documentType={translatedDocumentType} documentStatus={documentStatus} /> : <TenantDocumentsList />}\n    </ContentWrapper>\n  </Layout>\n);\n};\n\nexport default DocumentsPage;\n", "import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n  element.type === 'checkbox';\n", "export default (value: unknown): value is Date => value instanceof Date;\n", "export default (value: unknown): value is null | undefined => value == null;\n", "import isDateObject from './isDateObject';\nimport isNullOrUndefined from './isNullOrUndefined';\n\nexport const isObjectType = (value: unknown) => typeof value === 'object';\n\nexport default <T extends object>(value: unknown): value is T =>\n  !isNullOrUndefined(value) &&\n  !Array.isArray(value) &&\n  isObjectType(value) &&\n  !isDateObject(value);\n", "import isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isObject from '../utils/isObject';\n\ntype Event = { target: any };\n\nexport default (event: unknown) =>\n  isObject(event) && (event as Event).target\n    ? isCheckBoxInput((event as Event).target)\n      ? (event as Event).target.checked\n      : (event as Event).target.value\n    : event;\n", "export default (name: string) =>\n  name.substring(0, name.search(/\\.\\d+(\\.|$)/)) || name;\n", "import { InternalFieldName } from '../types';\n\nimport getNodeParentName from './getNodeParentName';\n\nexport default (names: Set<InternalFieldName>, name: InternalFieldName) =>\n  names.has(getNodeParentName(name));\n", "export default <TValue>(value: TValue[]) =>\n  Array.isArray(value) ? value.filter(Boolean) : [];\n", "export default (val: unknown): val is undefined => val === undefined;\n", "import compact from './compact';\nimport isNullOrUndefined from './isNullOrUndefined';\nimport isObject from './isObject';\nimport isUndefined from './isUndefined';\n\nexport default <T>(obj: T, path: string, defaultValue?: unknown): any => {\n  if (!path || !isObject(obj)) {\n    return defaultValue;\n  }\n\n  const result = compact(path.split(/[,[\\].]+?/)).reduce(\n    (result, key) =>\n      isNullOrUndefined(result) ? result : result[key as keyof {}],\n    obj,\n  );\n\n  return isUndefined(result) || result === obj\n    ? isUndefined(obj[path as keyof T])\n      ? defaultValue\n      : obj[path as keyof T]\n    : result;\n};\n", "import { ValidationMode } from './types';\n\nexport const EVENTS = {\n  BLUR: 'blur',\n  FOCUS_OUT: 'focusout',\n  CHANGE: 'change',\n};\n\nexport const VALIDATION_MODE: ValidationMode = {\n  onBlur: 'onBlur',\n  onChange: 'onChange',\n  onSubmit: 'onSubmit',\n  onTouched: 'onTouched',\n  all: 'all',\n};\n\nexport const INPUT_VALIDATION_RULES = {\n  max: 'max',\n  min: 'min',\n  maxLength: 'maxLength',\n  minLength: 'minLength',\n  pattern: 'pattern',\n  required: 'required',\n  validate: 'validate',\n};\n", "import React from 'react';\n\nimport { FieldValues, FormProviderProps, UseFormReturn } from './types';\n\nconst HookFormContext = React.createContext<UseFormReturn | null>(null);\n\n/**\n * This custom hook allows you to access the form context. useFormContext is intended to be used in deeply nested structures, where it would become inconvenient to pass the context as a prop. To be used with {@link FormProvider}.\n *\n * @remarks\n * [API](https://react-hook-form.com/api/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @returns return all useForm methods\n *\n * @example\n * ```tsx\n * function App() {\n *   const methods = useForm();\n *   const onSubmit = data => console.log(data);\n *\n *   return (\n *     <FormProvider {...methods} >\n *       <form onSubmit={methods.handleSubmit(onSubmit)}>\n *         <NestedInput />\n *         <input type=\"submit\" />\n *       </form>\n *     </FormProvider>\n *   );\n * }\n *\n *  function NestedInput() {\n *   const { register } = useFormContext(); // retrieve all hook methods\n *   return <input {...register(\"test\")} />;\n * }\n * ```\n */\nexport const useFormContext = <\n  TFieldValues extends FieldValues,\n>(): UseFormReturn<TFieldValues> =>\n  React.useContext(HookFormContext) as unknown as UseFormReturn<TFieldValues>;\n\n/**\n * A provider component that propagates the `useForm` methods to all children components via [React Context](https://reactjs.org/docs/context.html) API. To be used with {@link useFormContext}.\n *\n * @remarks\n * [API](https://react-hook-form.com/api/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)\n *\n * @param props - all useFrom methods\n *\n * @example\n * ```tsx\n * function App() {\n *   const methods = useForm();\n *   const onSubmit = data => console.log(data);\n *\n *   return (\n *     <FormProvider {...methods} >\n *       <form onSubmit={methods.handleSubmit(onSubmit)}>\n *         <NestedInput />\n *         <input type=\"submit\" />\n *       </form>\n *     </FormProvider>\n *   );\n * }\n *\n *  function NestedInput() {\n *   const { register } = useFormContext(); // retrieve all hook methods\n *   return <input {...register(\"test\")} />;\n * }\n * ```\n */\nexport const FormProvider = <TFieldValues extends FieldValues, TContext = any>(\n  props: FormProviderProps<TFieldValues, TContext>,\n) => {\n  const { children, ...data } = props;\n  return (\n    <HookFormContext.Provider value={data as unknown as UseFormReturn}>\n      {children}\n    </HookFormContext.Provider>\n  );\n};\n", "import { VALIDATION_MODE } from '../constants';\nimport { Control, FieldValues, FormState, ReadFormState } from '../types';\n\nexport default <TFieldValues extends FieldValues, TContext = any>(\n  formState: FormState<TFieldValues>,\n  control: Control<TFieldValues, TContext>,\n  localProxyFormState?: ReadFormState,\n  isRoot = true,\n) => {\n  const result = {\n    defaultValues: control._defaultValues,\n  } as typeof formState;\n\n  for (const key in formState) {\n    Object.defineProperty(result, key, {\n      get: () => {\n        const _key = key as keyof FormState<TFieldValues> & keyof ReadFormState;\n\n        if (control._proxyFormState[_key] !== VALIDATION_MODE.all) {\n          control._proxyFormState[_key] = !isRoot || VALIDATION_MODE.all;\n        }\n\n        localProxyFormState && (localProxyFormState[_key] = true);\n        return formState[_key];\n      },\n    });\n  }\n\n  return result;\n};\n", "import { EmptyObject } from '../types';\n\nimport isObject from './isObject';\n\nexport default (value: unknown): value is EmptyObject =>\n  isObject(value) && !Object.keys(value).length;\n", "import { VALIDATION_MODE } from '../constants';\nimport {\n  Control,\n  FieldValues,\n  FormState,\n  InternalFieldName,\n  ReadFormState,\n} from '../types';\nimport isEmptyObject from '../utils/isEmptyObject';\n\nexport default <T extends FieldValues, K extends ReadFormState>(\n  formStateData: Partial<FormState<T>> & { name?: InternalFieldName },\n  _proxyFormState: K,\n  updateFormState: Control<T>['_updateFormState'],\n  isRoot?: boolean,\n) => {\n  updateFormState(formStateData);\n  const { name, ...formState } = formStateData;\n\n  return (\n    isEmptyObject(formState) ||\n    Object.keys(formState).length >= Object.keys(_proxyFormState).length ||\n    Object.keys(formState).find(\n      (key) =>\n        _proxyFormState[key as keyof ReadFormState] ===\n        (!isRoot || VALIDATION_MODE.all),\n    )\n  );\n};\n", "export default <T>(value: T) => (Array.isArray(value) ? value : [value]);\n", "import convertToArrayPayload from '../utils/convertToArrayPayload';\n\nexport default <T extends string | string[] | undefined>(\n  name?: T,\n  signalName?: string,\n  exact?: boolean,\n) =>\n  exact && signalName\n    ? name === signalName\n    : !name ||\n      !signalName ||\n      name === signalName ||\n      convertToArrayPayload(name).some(\n        (currentName) =>\n          currentName &&\n          (currentName.startsWith(signalName) ||\n            signalName.startsWith(currentName)),\n      );\n", "import React from 'react';\n\nimport { Subject } from './utils/createSubject';\n\ntype Props<T> = {\n  disabled?: boolean;\n  subject: Subject<T>;\n  next: (value: T) => void;\n};\n\nexport function useSubscribe<T>(props: Props<T>) {\n  const _props = React.useRef(props);\n  _props.current = props;\n\n  React.useEffect(() => {\n    const subscription =\n      !props.disabled &&\n      _props.current.subject.subscribe({\n        next: _props.current.next,\n      });\n\n    return () => {\n      subscription && subscription.unsubscribe();\n    };\n  }, [props.disabled]);\n}\n", "import React from 'react';\n\nimport getProxyFormState from './logic/getProxyFormState';\nimport shouldRenderFormState from './logic/shouldRenderFormState';\nimport shouldSubscribeByName from './logic/shouldSubscribeByName';\nimport {\n  FieldValues,\n  FormState,\n  InternalFieldName,\n  UseFormStateProps,\n  UseFormStateReturn,\n} from './types';\nimport { useFormContext } from './useFormContext';\nimport { useSubscribe } from './useSubscribe';\n\n/**\n * This custom hook allows you to subscribe to each form state, and isolate the re-render at the custom hook level. It has its scope in terms of form state subscription, so it would not affect other useFormState and useForm. Using this hook can reduce the re-render impact on large and complex form application.\n *\n * @remarks\n * [API](https://react-hook-form.com/api/useformstate) • [Demo](https://codesandbox.io/s/useformstate-75xly)\n *\n * @param props - include options on specify fields to subscribe. {@link UseFormStateReturn}\n *\n * @example\n * ```tsx\n * function App() {\n *   const { register, handleSubmit, control } = useForm({\n *     defaultValues: {\n *     firstName: \"firstName\"\n *   }});\n *   const { dirtyFields } = useFormState({\n *     control\n *   });\n *   const onSubmit = (data) => console.log(data);\n *\n *   return (\n *     <form onSubmit={handleSubmit(onSubmit)}>\n *       <input {...register(\"firstName\")} placeholder=\"First Name\" />\n *       {dirtyFields.firstName && <p>Field is dirty.</p>}\n *       <input type=\"submit\" />\n *     </form>\n *   );\n * }\n * ```\n */\nfunction useFormState<TFieldValues extends FieldValues = FieldValues>(\n  props?: UseFormStateProps<TFieldValues>,\n): UseFormStateReturn<TFieldValues> {\n  const methods = useFormContext<TFieldValues>();\n  const { control = methods.control, disabled, name, exact } = props || {};\n  const [formState, updateFormState] = React.useState(control._formState);\n  const _mounted = React.useRef(true);\n  const _localProxyFormState = React.useRef({\n    isDirty: false,\n    isLoading: false,\n    dirtyFields: false,\n    touchedFields: false,\n    isValidating: false,\n    isValid: false,\n    errors: false,\n  });\n  const _name = React.useRef(name);\n\n  _name.current = name;\n\n  useSubscribe({\n    disabled,\n    next: (\n      value: Partial<FormState<TFieldValues>> & { name?: InternalFieldName },\n    ) =>\n      _mounted.current &&\n      shouldSubscribeByName(\n        _name.current as InternalFieldName,\n        value.name,\n        exact,\n      ) &&\n      shouldRenderFormState(\n        value,\n        _localProxyFormState.current,\n        control._updateFormState,\n      ) &&\n      updateFormState({\n        ...control._formState,\n        ...value,\n      }),\n    subject: control._subjects.state,\n  });\n\n  React.useEffect(() => {\n    _mounted.current = true;\n    const isDirty = control._proxyFormState.isDirty && control._getDirty();\n\n    if (isDirty !== control._formState.isDirty) {\n      control._subjects.state.next({\n        isDirty,\n      });\n    }\n\n    _localProxyFormState.current.isValid && control._updateValid(true);\n\n    return () => {\n      _mounted.current = false;\n    };\n  }, [control]);\n\n  return getProxyFormState(\n    formState,\n    control,\n    _localProxyFormState.current,\n    false,\n  );\n}\n\nexport { useFormState };\n", "export default (value: unknown): value is string => typeof value === 'string';\n", "import { DeepPartial, FieldValues, Names } from '../types';\nimport get from '../utils/get';\nimport isString from '../utils/isString';\n\nexport default <T>(\n  names: string | string[] | undefined,\n  _names: Names,\n  formValues?: FieldValues,\n  isGlobal?: boolean,\n  defaultValue?: DeepPartial<T> | unknown,\n) => {\n  if (isString(names)) {\n    isGlobal && _names.watch.add(names);\n    return get(formValues, names, defaultValue);\n  }\n\n  if (Array.isArray(names)) {\n    return names.map(\n      (fieldName) => (\n        isGlobal && _names.watch.add(fieldName), get(formValues, fieldName)\n      ),\n    );\n  }\n\n  isGlobal && (_names.watchAll = true);\n\n  return formValues;\n};\n", "import isObject from './isObject';\n\nexport default (tempObject: object) => {\n  const prototypeCopy =\n    tempObject.constructor && tempObject.constructor.prototype;\n\n  return (\n    isObject(prototypeCopy) && prototypeCopy.hasOwnProperty('isPrototypeOf')\n  );\n};\n", "export default typeof window !== 'undefined' &&\n  typeof window.HTMLElement !== 'undefined' &&\n  typeof document !== 'undefined';\n", "import isObject from './isObject';\nimport isPlainObject from './isPlainObject';\nimport isWeb from './isWeb';\n\nexport default function cloneObject<T>(data: T): T {\n  let copy: any;\n  const isArray = Array.isArray(data);\n\n  if (data instanceof Date) {\n    copy = new Date(data);\n  } else if (data instanceof Set) {\n    copy = new Set(data);\n  } else if (\n    !(isWeb && (data instanceof Blob || data instanceof FileList)) &&\n    (isArray || isObject(data))\n  ) {\n    copy = isArray ? [] : {};\n\n    if (!Array.isArray(data) && !isPlainObject(data)) {\n      copy = data;\n    } else {\n      for (const key in data) {\n        copy[key] = cloneObject(data[key]);\n      }\n    }\n  } else {\n    return data;\n  }\n\n  return copy;\n}\n", "import React from 'react';\n\nimport generateWatchOutput from './logic/generateWatchOutput';\nimport shouldSubscribeByName from './logic/shouldSubscribeByName';\nimport cloneObject from './utils/cloneObject';\nimport {\n  Control,\n  DeepPartialSkipArrayKey,\n  FieldPath,\n  FieldPathValue,\n  FieldPathValues,\n  FieldValues,\n  InternalFieldName,\n  UseWatchProps,\n} from './types';\nimport { useFormContext } from './useFormContext';\nimport { useSubscribe } from './useSubscribe';\n\n/**\n * Subscribe to the entire form values change and re-render at the hook level.\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/api/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\n *\n * @param props - defaultValue, disable subscription and match exact name.\n *\n * @example\n * ```tsx\n * const { watch } = useForm();\n * const values = useWatch({\n *   control,\n *   defaultValue: {\n *     name: \"data\"\n *   },\n *   exact: false,\n * })\n * ```\n */\nexport function useWatch<\n  TFieldValues extends FieldValues = FieldValues,\n>(props: {\n  defaultValue?: DeepPartialSkipArrayKey<TFieldValues>;\n  control?: Control<TFieldValues>;\n  disabled?: boolean;\n  exact?: boolean;\n}): DeepPartialSkipArrayKey<TFieldValues>;\n/**\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/api/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\n *\n * @param props - defaultValue, disable subscription and match exact name.\n *\n * @example\n * ```tsx\n * const { watch } = useForm();\n * const values = useWatch({\n *   control,\n *   name: \"fieldA\",\n *   defaultValue: \"default value\",\n *   exact: false,\n * })\n * ```\n */\nexport function useWatch<\n  TFieldValues extends FieldValues = FieldValues,\n  TFieldName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(props: {\n  name: TFieldName;\n  defaultValue?: FieldPathValue<TFieldValues, TFieldName>;\n  control?: Control<TFieldValues>;\n  disabled?: boolean;\n  exact?: boolean;\n}): FieldPathValue<TFieldValues, TFieldName>;\n/**\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/api/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\n *\n * @param props - defaultValue, disable subscription and match exact name.\n *\n * @example\n * ```tsx\n * const { watch } = useForm();\n * const values = useWatch({\n *   control,\n *   name: [\"fieldA\", \"fieldB\"],\n *   defaultValue: {\n *     fieldA: \"data\",\n *     fieldB: \"data\"\n *   },\n *   exact: false,\n * })\n * ```\n */\nexport function useWatch<\n  TFieldValues extends FieldValues = FieldValues,\n  TFieldNames extends readonly FieldPath<TFieldValues>[] = readonly FieldPath<TFieldValues>[],\n>(props: {\n  name: readonly [...TFieldNames];\n  defaultValue?: DeepPartialSkipArrayKey<TFieldValues>;\n  control?: Control<TFieldValues>;\n  disabled?: boolean;\n  exact?: boolean;\n}): FieldPathValues<TFieldValues, TFieldNames>;\n/**\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/api/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\n *\n * @example\n * ```tsx\n * // can skip passing down the control into useWatch if the form is wrapped with the FormProvider\n * const values = useWatch()\n * ```\n */\nexport function useWatch<\n  TFieldValues extends FieldValues = FieldValues,\n>(): DeepPartialSkipArrayKey<TFieldValues>;\n/**\n * Custom hook to subscribe to field change and isolate re-rendering at the component level.\n *\n * @remarks\n *\n * [API](https://react-hook-form.com/api/usewatch) • [Demo](https://codesandbox.io/s/react-hook-form-v7-ts-usewatch-h9i5e)\n *\n * @example\n * ```tsx\n * const { watch } = useForm();\n * const values = useWatch({\n *   name: \"fieldName\"\n *   control,\n * })\n * ```\n */\nexport function useWatch<TFieldValues extends FieldValues>(\n  props?: UseWatchProps<TFieldValues>,\n) {\n  const methods = useFormContext();\n  const {\n    control = methods.control,\n    name,\n    defaultValue,\n    disabled,\n    exact,\n  } = props || {};\n  const _name = React.useRef(name);\n\n  _name.current = name;\n\n  useSubscribe({\n    disabled,\n    subject: control._subjects.watch,\n    next: (formState: { name?: InternalFieldName; values?: FieldValues }) => {\n      if (\n        shouldSubscribeByName(\n          _name.current as InternalFieldName,\n          formState.name,\n          exact,\n        )\n      ) {\n        updateValue(\n          cloneObject(\n            generateWatchOutput(\n              _name.current as InternalFieldName | InternalFieldName[],\n              control._names,\n              formState.values || control._formValues,\n              false,\n              defaultValue,\n            ),\n          ),\n        );\n      }\n    },\n  });\n\n  const [value, updateValue] = React.useState(\n    control._getWatch(\n      name as InternalFieldName,\n      defaultValue as DeepPartialSkipArrayKey<TFieldValues>,\n    ),\n  );\n\n  React.useEffect(() => control._removeUnmounted());\n\n  return value;\n}\n", "import React from 'react';\n\nimport getEventValue from './logic/getEventValue';\nimport isNameInFieldArray from './logic/isNameInFieldArray';\nimport get from './utils/get';\nimport { EVENTS } from './constants';\nimport {\n  ControllerFieldState,\n  Field,\n  FieldPath,\n  FieldPathValue,\n  FieldValues,\n  InternalFieldName,\n  UseControllerProps,\n  UseControllerReturn,\n} from './types';\nimport { useFormContext } from './useFormContext';\nimport { useFormState } from './useFormState';\nimport { useWatch } from './useWatch';\n\n/**\n * Custom hook to work with controlled component, this function provide you with both form and field level state. Re-render is isolated at the hook level.\n *\n * @remarks\n * [API](https://react-hook-form.com/api/usecontroller) • [Demo](https://codesandbox.io/s/usecontroller-0o8px)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns field properties, field and form state. {@link UseControllerReturn}\n *\n * @example\n * ```tsx\n * function Input(props) {\n *   const { field, fieldState, formState } = useController(props);\n *   return (\n *     <div>\n *       <input {...field} placeholder={props.name} />\n *       <p>{fieldState.isTouched && \"Touched\"}</p>\n *       <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n *     </div>\n *   );\n * }\n * ```\n */\nexport function useController<\n  TFieldValues extends FieldValues = FieldValues,\n  TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(\n  props: UseControllerProps<TFieldValues, TName>,\n): UseControllerReturn<TFieldValues, TName> {\n  const methods = useFormContext<TFieldValues>();\n  const { name, control = methods.control, shouldUnregister } = props;\n  const isArrayField = isNameInFieldArray(control._names.array, name);\n  const value = useWatch({\n    control,\n    name,\n    defaultValue: get(\n      control._formValues,\n      name,\n      get(control._defaultValues, name, props.defaultValue),\n    ),\n    exact: true,\n  }) as FieldPathValue<TFieldValues, TName>;\n  const formState = useFormState({\n    control,\n    name,\n  });\n\n  const _registerProps = React.useRef(\n    control.register(name, {\n      ...props.rules,\n      value,\n    }),\n  );\n\n  React.useEffect(() => {\n    const updateMounted = (name: InternalFieldName, value: boolean) => {\n      const field: Field = get(control._fields, name);\n\n      if (field) {\n        field._f.mount = value;\n      }\n    };\n\n    updateMounted(name, true);\n\n    return () => {\n      const _shouldUnregisterField =\n        control._options.shouldUnregister || shouldUnregister;\n\n      (\n        isArrayField\n          ? _shouldUnregisterField && !control._stateFlags.action\n          : _shouldUnregisterField\n      )\n        ? control.unregister(name)\n        : updateMounted(name, false);\n    };\n  }, [name, control, isArrayField, shouldUnregister]);\n\n  return {\n    field: {\n      name,\n      value,\n      onChange: React.useCallback(\n        (event) =>\n          _registerProps.current.onChange({\n            target: {\n              value: getEventValue(event),\n              name: name as InternalFieldName,\n            },\n            type: EVENTS.CHANGE,\n          }),\n        [name],\n      ),\n      onBlur: React.useCallback(\n        () =>\n          _registerProps.current.onBlur({\n            target: {\n              value: get(control._formValues, name),\n              name: name as InternalFieldName,\n            },\n            type: EVENTS.BLUR,\n          }),\n        [name, control],\n      ),\n      ref: (elm) => {\n        const field = get(control._fields, name);\n\n        if (field && elm) {\n          field._f.ref = {\n            focus: () => elm.focus(),\n            select: () => elm.select(),\n            setCustomValidity: (message: string) =>\n              elm.setCustomValidity(message),\n            reportValidity: () => elm.reportValidity(),\n          };\n        }\n      },\n    },\n    formState,\n    fieldState: Object.defineProperties(\n      {},\n      {\n        invalid: {\n          enumerable: true,\n          get: () => !!get(formState.errors, name),\n        },\n        isDirty: {\n          enumerable: true,\n          get: () => !!get(formState.dirtyFields, name),\n        },\n        isTouched: {\n          enumerable: true,\n          get: () => !!get(formState.touchedFields, name),\n        },\n        error: {\n          enumerable: true,\n          get: () => get(formState.errors, name),\n        },\n      },\n    ) as ControllerFieldState,\n  };\n}\n", "import { ControllerProps, FieldPath, FieldValues } from './types';\nimport { useController } from './useController';\n\n/**\n * Component based on `useController` hook to work with controlled component.\n *\n * @remarks\n * [API](https://react-hook-form.com/api/usecontroller/controller) • [Demo](https://codesandbox.io/s/react-hook-form-v6-controller-ts-jwyzw) • [Video](https://www.youtube.com/watch?v=N2UNk_UCVyA)\n *\n * @param props - the path name to the form field value, and validation rules.\n *\n * @returns provide field handler functions, field and form state.\n *\n * @example\n * ```tsx\n * function App() {\n *   const { control } = useForm<FormValues>({\n *     defaultValues: {\n *       test: \"\"\n *     }\n *   });\n *\n *   return (\n *     <form>\n *       <Controller\n *         control={control}\n *         name=\"test\"\n *         render={({ field: { onChange, onBlur, value, ref }, formState, fieldState }) => (\n *           <>\n *             <input\n *               onChange={onChange} // send value to hook form\n *               onBlur={onBlur} // notify when input is touched\n *               value={value} // return updated value\n *               ref={ref} // set ref for focus management\n *             />\n *             <p>{formState.isSubmitted ? \"submitted\" : \"\"}</p>\n *             <p>{fieldState.isTouched ? \"touched\" : \"\"}</p>\n *           </>\n *         )}\n *       />\n *     </form>\n *   );\n * }\n * ```\n */\nconst Controller = <\n  TFieldValues extends FieldValues = FieldValues,\n  TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>(\n  props: ControllerProps<TFieldValues, TName>,\n) => props.render(useController<TFieldValues, TName>(props));\n\nexport { Controller };\n", "import {\n  InternalFieldErrors,\n  InternalFieldName,\n  ValidateResult,\n} from '../types';\n\nexport default (\n  name: InternalFieldName,\n  validateAllFieldCriteria: boolean,\n  errors: InternalFieldErrors,\n  type: string,\n  message: ValidateResult,\n) =>\n  validateAllFieldCriteria\n    ? {\n        ...errors[name],\n        types: {\n          ...(errors[name] && errors[name]!.types ? errors[name]!.types : {}),\n          [type]: message || true,\n        },\n      }\n    : {};\n", "export default (value: string) => /^\\w*$/.test(value);\n", "import compact from './compact';\n\nexport default (input: string): string[] =>\n  compact(input.replace(/[\"|']|\\]/g, '').split(/\\.|\\[/));\n", "import { FieldValues } from '../types';\n\nimport isKey from './isKey';\nimport isObject from './isObject';\nimport stringToPath from './stringToPath';\n\nexport default function set(\n  object: FieldValues,\n  path: string,\n  value?: unknown,\n) {\n  let index = -1;\n  const tempPath = isKey(path) ? [path] : stringToPath(path);\n  const length = tempPath.length;\n  const lastIndex = length - 1;\n\n  while (++index < length) {\n    const key = tempPath[index];\n    let newValue = value;\n\n    if (index !== lastIndex) {\n      const objValue = object[key];\n      newValue =\n        isObject(objValue) || Array.isArray(objValue)\n          ? objValue\n          : !isNaN(+tempPath[index + 1])\n          ? []\n          : {};\n    }\n    object[key] = newValue;\n    object = object[key];\n  }\n  return object;\n}\n", "import { FieldRefs, InternalFieldName } from '../types';\nimport { get } from '../utils';\nimport isObject from '../utils/isObject';\n\nconst focusFieldBy = (\n  fields: FieldRefs,\n  callback: (name?: string) => boolean,\n  fieldsNames?: Set<InternalFieldName> | InternalFieldName[],\n) => {\n  for (const key of fieldsNames || Object.keys(fields)) {\n    const field = get(fields, key);\n\n    if (field) {\n      const { _f, ...currentField } = field;\n\n      if (_f && callback(_f.name)) {\n        if (_f.ref.focus) {\n          _f.ref.focus();\n          break;\n        } else if (_f.refs && _f.refs[0].focus) {\n          _f.refs[0].focus();\n          break;\n        }\n      } else if (isObject(currentField)) {\n        focusFieldBy(currentField, callback);\n      }\n    }\n  }\n};\n\nexport default focusFieldBy;\n", "export default () => {\n  const d =\n    typeof performance === 'undefined' ? Date.now() : performance.now() * 1000;\n\n  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n    const r = (Math.random() * 16 + d) % 16 | 0;\n\n    return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\n  });\n};\n", "import { FieldArrayMethodProps, InternalFieldName } from '../types';\nimport isUndefined from '../utils/isUndefined';\n\nexport default (\n  name: InternalFieldName,\n  index: number,\n  options: FieldArrayMethodProps = {},\n): string =>\n  options.shouldFocus || isUndefined(options.shouldFocus)\n    ? options.focusName ||\n      `${name}.${isUndefined(options.focusIndex) ? index : options.focusIndex}.`\n    : '';\n", "import { VALIDATION_MODE } from '../constants';\nimport { Mode } from '../types';\n\nexport default (\n  mode?: Mode,\n): {\n  isOnSubmit: boolean;\n  isOnBlur: boolean;\n  isOnChange: boolean;\n  isOnAll: boolean;\n  isOnTouch: boolean;\n} => ({\n  isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\n  isOnBlur: mode === VALIDATION_MODE.onBlur,\n  isOnChange: mode === VALIDATION_MODE.onChange,\n  isOnAll: mode === VALIDATION_MODE.all,\n  isOnTouch: mode === VALIDATION_MODE.onTouched,\n});\n", "import { InternalFieldName, Names } from '../types';\n\nexport default (\n  name: InternalFieldName,\n  _names: Names,\n  isBlurEvent?: boolean,\n) =>\n  !isBlurEvent &&\n  (_names.watchAll ||\n    _names.watch.has(name) ||\n    [..._names.watch].some(\n      (watchName) =>\n        name.startsWith(watchName) &&\n        /^\\.\\w+/.test(name.slice(watchName.length)),\n    ));\n", "import {\n  FieldError,\n  FieldErrors,\n  FieldValues,\n  InternalFieldName,\n} from '../types';\nimport compact from '../utils/compact';\nimport get from '../utils/get';\nimport set from '../utils/set';\n\nexport default <T extends FieldValues = FieldValues>(\n  errors: FieldErrors<T>,\n  error: Partial<Record<string, FieldError>>,\n  name: InternalFieldName,\n): FieldErrors<T> => {\n  const fieldArrayErrors = compact(get(errors, name));\n  set(fieldArrayErrors, 'root', error[name]);\n  set(errors, name, fieldArrayErrors);\n  return errors;\n};\n", "export default (value: unknown): value is boolean => typeof value === 'boolean';\n", "import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n  element.type === 'file';\n", "export default (value: unknown): value is Function =>\n  typeof value === 'function';\n", "import isWeb from './isWeb';\n\nexport default (value: unknown): value is HTMLElement => {\n  if (!isWeb) {\n    return false;\n  }\n\n  const owner = value ? ((value as HTMLElement).ownerDocument as Document) : 0;\n  return (\n    value instanceof\n    (owner && owner.defaultView ? owner.defaultView.HTMLElement : HTMLElement)\n  );\n};\n", "import React from 'react';\n\nimport { Message } from '../types';\nimport isString from '../utils/isString';\n\nexport default (value: unknown): value is Message =>\n  isString(value) || React.isValidElement(value as JSX.Element);\n", "import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLInputElement =>\n  element.type === 'radio';\n", "export default (value: unknown): value is RegExp => value instanceof RegExp;\n", "import isUndefined from '../utils/isUndefined';\n\ntype CheckboxFieldResult = {\n  isValid: boolean;\n  value: string | string[] | boolean | undefined;\n};\n\nconst defaultResult: CheckboxFieldResult = {\n  value: false,\n  isValid: false,\n};\n\nconst validResult = { value: true, isValid: true };\n\nexport default (options?: HTMLInputElement[]): CheckboxFieldResult => {\n  if (Array.isArray(options)) {\n    if (options.length > 1) {\n      const values = options\n        .filter((option) => option && option.checked && !option.disabled)\n        .map((option) => option.value);\n      return { value: values, isValid: !!values.length };\n    }\n\n    return options[0].checked && !options[0].disabled\n      ? // @ts-expect-error expected to work in the browser\n        options[0].attributes && !isUndefined(options[0].attributes.value)\n        ? isUndefined(options[0].value) || options[0].value === ''\n          ? validResult\n          : { value: options[0].value, isValid: true }\n        : validResult\n      : defaultResult;\n  }\n\n  return defaultResult;\n};\n", "type RadioFieldResult = {\n  isValid: boolean;\n  value: number | string | null;\n};\n\nconst defaultReturn: RadioFieldResult = {\n  isValid: false,\n  value: null,\n};\n\nexport default (options?: HTMLInputElement[]): RadioFieldResult =>\n  Array.isArray(options)\n    ? options.reduce(\n        (previous, option): RadioFieldResult =>\n          option && option.checked && !option.disabled\n            ? {\n                isValid: true,\n                value: option.value,\n              }\n            : previous,\n        defaultReturn,\n      )\n    : defaultReturn;\n", "import { FieldError, Ref, ValidateResult } from '../types';\nimport isBoolean from '../utils/isBoolean';\nimport isMessage from '../utils/isMessage';\n\nexport default function getValidateError(\n  result: ValidateResult,\n  ref: Ref,\n  type = 'validate',\n): FieldError | void {\n  if (\n    isMessage(result) ||\n    (Array.isArray(result) && result.every(isMessage)) ||\n    (isBoolean(result) && !result)\n  ) {\n    return {\n      type,\n      message: isMessage(result) ? result : '',\n      ref,\n    };\n  }\n}\n", "import { ValidationRule } from '../types';\nimport isObject from '../utils/isObject';\nimport isRegex from '../utils/isRegex';\n\nexport default (validationData?: ValidationRule) =>\n  isObject(validationData) && !isRegex(validationData)\n    ? validationData\n    : {\n        value: validationData,\n        message: '',\n      };\n", "import { INPUT_VALIDATION_RULES } from '../constants';\nimport {\n  Field,\n  FieldError,\n  FieldValues,\n  InternalFieldErrors,\n  Message,\n  NativeFieldValue,\n} from '../types';\nimport get from '../utils/get';\nimport isBoolean from '../utils/isBoolean';\nimport isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isEmptyObject from '../utils/isEmptyObject';\nimport isFileInput from '../utils/isFileInput';\nimport isFunction from '../utils/isFunction';\nimport isHTMLElement from '../utils/isHTMLElement';\nimport isMessage from '../utils/isMessage';\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\nimport isObject from '../utils/isObject';\nimport isRadioInput from '../utils/isRadioInput';\nimport isRegex from '../utils/isRegex';\nimport isString from '../utils/isString';\nimport isUndefined from '../utils/isUndefined';\n\nimport appendErrors from './appendErrors';\nimport getCheckboxValue from './getCheckboxValue';\nimport getRadioValue from './getRadioValue';\nimport getValidateError from './getValidateError';\nimport getValueAndMessage from './getValueAndMessage';\n\nexport default async <T extends FieldValues>(\n  field: Field,\n  formValues: T,\n  validateAllFieldCriteria: boolean,\n  shouldUseNativeValidation?: boolean,\n  isFieldArray?: boolean,\n): Promise<InternalFieldErrors> => {\n  const {\n    ref,\n    refs,\n    required,\n    maxLength,\n    minLength,\n    min,\n    max,\n    pattern,\n    validate,\n    name,\n    valueAsNumber,\n    mount,\n    disabled,\n  } = field._f;\n  const inputValue: NativeFieldValue = get(formValues, name);\n  if (!mount || disabled) {\n    return {};\n  }\n  const inputRef: HTMLInputElement = refs ? refs[0] : (ref as HTMLInputElement);\n  const setCustomValidity = (message?: string | boolean) => {\n    if (shouldUseNativeValidation && inputRef.reportValidity) {\n      inputRef.setCustomValidity(isBoolean(message) ? '' : message || '');\n      inputRef.reportValidity();\n    }\n  };\n  const error: InternalFieldErrors = {};\n  const isRadio = isRadioInput(ref);\n  const isCheckBox = isCheckBoxInput(ref);\n  const isRadioOrCheckbox = isRadio || isCheckBox;\n  const isEmpty =\n    ((valueAsNumber || isFileInput(ref)) &&\n      isUndefined(ref.value) &&\n      isUndefined(inputValue)) ||\n    (isHTMLElement(ref) && ref.value === '') ||\n    inputValue === '' ||\n    (Array.isArray(inputValue) && !inputValue.length);\n  const appendErrorsCurry = appendErrors.bind(\n    null,\n    name,\n    validateAllFieldCriteria,\n    error,\n  );\n  const getMinMaxMessage = (\n    exceedMax: boolean,\n    maxLengthMessage: Message,\n    minLengthMessage: Message,\n    maxType = INPUT_VALIDATION_RULES.maxLength,\n    minType = INPUT_VALIDATION_RULES.minLength,\n  ) => {\n    const message = exceedMax ? maxLengthMessage : minLengthMessage;\n    error[name] = {\n      type: exceedMax ? maxType : minType,\n      message,\n      ref,\n      ...appendErrorsCurry(exceedMax ? maxType : minType, message),\n    };\n  };\n\n  if (\n    isFieldArray\n      ? !Array.isArray(inputValue) || !inputValue.length\n      : required &&\n        ((!isRadioOrCheckbox && (isEmpty || isNullOrUndefined(inputValue))) ||\n          (isBoolean(inputValue) && !inputValue) ||\n          (isCheckBox && !getCheckboxValue(refs).isValid) ||\n          (isRadio && !getRadioValue(refs).isValid))\n  ) {\n    const { value, message } = isMessage(required)\n      ? { value: !!required, message: required }\n      : getValueAndMessage(required);\n\n    if (value) {\n      error[name] = {\n        type: INPUT_VALIDATION_RULES.required,\n        message,\n        ref: inputRef,\n        ...appendErrorsCurry(INPUT_VALIDATION_RULES.required, message),\n      };\n      if (!validateAllFieldCriteria) {\n        setCustomValidity(message);\n        return error;\n      }\n    }\n  }\n\n  if (!isEmpty && (!isNullOrUndefined(min) || !isNullOrUndefined(max))) {\n    let exceedMax;\n    let exceedMin;\n    const maxOutput = getValueAndMessage(max);\n    const minOutput = getValueAndMessage(min);\n\n    if (!isNullOrUndefined(inputValue) && !isNaN(inputValue as number)) {\n      const valueNumber =\n        (ref as HTMLInputElement).valueAsNumber ||\n        (inputValue ? +inputValue : inputValue);\n      if (!isNullOrUndefined(maxOutput.value)) {\n        exceedMax = valueNumber > maxOutput.value;\n      }\n      if (!isNullOrUndefined(minOutput.value)) {\n        exceedMin = valueNumber < minOutput.value;\n      }\n    } else {\n      const valueDate =\n        (ref as HTMLInputElement).valueAsDate || new Date(inputValue as string);\n      const convertTimeToDate = (time: unknown) =>\n        new Date(new Date().toDateString() + ' ' + time);\n      const isTime = ref.type == 'time';\n      const isWeek = ref.type == 'week';\n\n      if (isString(maxOutput.value) && inputValue) {\n        exceedMax = isTime\n          ? convertTimeToDate(inputValue) > convertTimeToDate(maxOutput.value)\n          : isWeek\n          ? inputValue > maxOutput.value\n          : valueDate > new Date(maxOutput.value);\n      }\n\n      if (isString(minOutput.value) && inputValue) {\n        exceedMin = isTime\n          ? convertTimeToDate(inputValue) < convertTimeToDate(minOutput.value)\n          : isWeek\n          ? inputValue < minOutput.value\n          : valueDate < new Date(minOutput.value);\n      }\n    }\n\n    if (exceedMax || exceedMin) {\n      getMinMaxMessage(\n        !!exceedMax,\n        maxOutput.message,\n        minOutput.message,\n        INPUT_VALIDATION_RULES.max,\n        INPUT_VALIDATION_RULES.min,\n      );\n      if (!validateAllFieldCriteria) {\n        setCustomValidity(error[name]!.message);\n        return error;\n      }\n    }\n  }\n\n  if (\n    (maxLength || minLength) &&\n    !isEmpty &&\n    (isString(inputValue) || (isFieldArray && Array.isArray(inputValue)))\n  ) {\n    const maxLengthOutput = getValueAndMessage(maxLength);\n    const minLengthOutput = getValueAndMessage(minLength);\n    const exceedMax =\n      !isNullOrUndefined(maxLengthOutput.value) &&\n      inputValue.length > maxLengthOutput.value;\n    const exceedMin =\n      !isNullOrUndefined(minLengthOutput.value) &&\n      inputValue.length < minLengthOutput.value;\n\n    if (exceedMax || exceedMin) {\n      getMinMaxMessage(\n        exceedMax,\n        maxLengthOutput.message,\n        minLengthOutput.message,\n      );\n      if (!validateAllFieldCriteria) {\n        setCustomValidity(error[name]!.message);\n        return error;\n      }\n    }\n  }\n\n  if (pattern && !isEmpty && isString(inputValue)) {\n    const { value: patternValue, message } = getValueAndMessage(pattern);\n\n    if (isRegex(patternValue) && !inputValue.match(patternValue)) {\n      error[name] = {\n        type: INPUT_VALIDATION_RULES.pattern,\n        message,\n        ref,\n        ...appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message),\n      };\n      if (!validateAllFieldCriteria) {\n        setCustomValidity(message);\n        return error;\n      }\n    }\n  }\n\n  if (validate) {\n    if (isFunction(validate)) {\n      const result = await validate(inputValue, formValues);\n      const validateError = getValidateError(result, inputRef);\n\n      if (validateError) {\n        error[name] = {\n          ...validateError,\n          ...appendErrorsCurry(\n            INPUT_VALIDATION_RULES.validate,\n            validateError.message,\n          ),\n        };\n        if (!validateAllFieldCriteria) {\n          setCustomValidity(validateError.message);\n          return error;\n        }\n      }\n    } else if (isObject(validate)) {\n      let validationResult = {} as FieldError;\n\n      for (const key in validate) {\n        if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\n          break;\n        }\n\n        const validateError = getValidateError(\n          await validate[key](inputValue, formValues),\n          inputRef,\n          key,\n        );\n\n        if (validateError) {\n          validationResult = {\n            ...validateError,\n            ...appendErrorsCurry(key, validateError.message),\n          };\n\n          setCustomValidity(validateError.message);\n\n          if (validateAllFieldCriteria) {\n            error[name] = validationResult;\n          }\n        }\n      }\n\n      if (!isEmptyObject(validationResult)) {\n        error[name] = {\n          ref: inputRef,\n          ...validationResult,\n        };\n        if (!validateAllFieldCriteria) {\n          return error;\n        }\n      }\n    }\n  }\n\n  setCustomValidity(true);\n  return error;\n};\n", "import convertToArrayPayload from './convertToArrayPayload';\n\nexport default function append<T>(data: T[], value: T | T[]): T[] {\n  return [...data, ...convertToArrayPayload(value)];\n}\n", "export default <T>(value: T | T[]): undefined[] | undefined =>\n  Array.isArray(value) ? value.map(() => undefined) : undefined;\n", "import convertToArrayPayload from './convertToArrayPayload';\n\nexport default function insert<T>(data: T[], index: number): (T | undefined)[];\nexport default function insert<T>(\n  data: T[],\n  index: number,\n  value: T | T[],\n): T[];\nexport default function insert<T>(\n  data: T[],\n  index: number,\n  value?: T | T[],\n): (T | undefined)[] {\n  return [\n    ...data.slice(0, index),\n    ...convertToArrayPayload(value),\n    ...data.slice(index),\n  ];\n}\n", "import isUndefined from './isUndefined';\n\nexport default <T>(\n  data: (T | undefined)[],\n  from: number,\n  to: number,\n): (T | undefined)[] => {\n  if (!Array.isArray(data)) {\n    return [];\n  }\n\n  if (isUndefined(data[to])) {\n    data[to] = undefined;\n  }\n  data.splice(to, 0, data.splice(from, 1)[0]);\n\n  return data;\n};\n", "import convertToArrayPayload from './convertToArrayPayload';\n\nexport default function prepend<T>(data: T[], value: T | T[]): T[] {\n  return [...convertToArrayPayload(value), ...convertToArrayPayload(data)];\n}\n", "import compact from './compact';\nimport convertToArrayPayload from './convertToArrayPayload';\nimport isUndefined from './isUndefined';\n\nfunction removeAtIndexes<T>(data: T[], indexes: number[]): T[] {\n  let i = 0;\n  const temp = [...data];\n\n  for (const index of indexes) {\n    temp.splice(index - i, 1);\n    i++;\n  }\n\n  return compact(temp).length ? temp : [];\n}\n\nexport default <T>(data: T[], index?: number | number[]): T[] =>\n  isUndefined(index)\n    ? []\n    : removeAtIndexes(\n        data,\n        (convertToArrayPayload(index) as number[]).sort((a, b) => a - b),\n      );\n", "export default <T>(data: T[], indexA: number, indexB: number): void => {\n  data[indexA] = [data[indexB], (data[indexB] = data[indexA])][0];\n};\n", "import isEmptyObject from './isEmptyObject';\nimport isKey from './isKey';\nimport isObject from './isObject';\nimport isUndefined from './isUndefined';\nimport stringToPath from './stringToPath';\n\nfunction baseGet(object: any, updatePath: (string | number)[]) {\n  const length = updatePath.slice(0, -1).length;\n  let index = 0;\n\n  while (index < length) {\n    object = isUndefined(object) ? index++ : object[updatePath[index++]];\n  }\n\n  return object;\n}\n\nfunction isEmptyArray(obj: unknown[]) {\n  for (const key in obj) {\n    if (!isUndefined(obj[key])) {\n      return false;\n    }\n  }\n  return true;\n}\n\nexport default function unset(object: any, path: string | (string | number)[]) {\n  const paths = Array.isArray(path)\n    ? path\n    : isKey(path)\n    ? [path]\n    : stringToPath(path);\n\n  const childObject = paths.length === 1 ? object : baseGet(object, paths);\n\n  const index = paths.length - 1;\n  const key = paths[index];\n\n  if (childObject) {\n    delete childObject[key];\n  }\n\n  if (\n    index !== 0 &&\n    ((isObject(childObject) && isEmptyObject(childObject)) ||\n      (Array.isArray(childObject) && isEmptyArray(childObject)))\n  ) {\n    unset(object, paths.slice(0, -1));\n  }\n\n  return object;\n}\n", "export default <T>(fieldValues: T[], index: number, value: T) => {\n  fieldValues[index] = value;\n  return fieldValues;\n};\n", "import React from 'react';\n\nimport focusFieldBy from './logic/focusFieldBy';\nimport generateId from './logic/generateId';\nimport getFocusFieldName from './logic/getFocusFieldName';\nimport getValidationModes from './logic/getValidationModes';\nimport isWatched from './logic/isWatched';\nimport updateFieldArrayRootError from './logic/updateFieldArrayRootError';\nimport validateField from './logic/validateField';\nimport appendAt from './utils/append';\nimport cloneObject from './utils/cloneObject';\nimport convertToArrayPayload from './utils/convertToArrayPayload';\nimport fillEmptyArray from './utils/fillEmptyArray';\nimport get from './utils/get';\nimport insertAt from './utils/insert';\nimport isEmptyObject from './utils/isEmptyObject';\nimport moveArrayAt from './utils/move';\nimport prependAt from './utils/prepend';\nimport removeArrayAt from './utils/remove';\nimport set from './utils/set';\nimport swapArrayAt from './utils/swap';\nimport unset from './utils/unset';\nimport updateAt from './utils/update';\nimport { VALIDATION_MODE } from './constants';\nimport {\n  Control,\n  Field,\n  FieldArray,\n  FieldArrayMethodProps,\n  FieldArrayPath,\n  FieldArrayWithId,\n  FieldErrors,\n  FieldPath,\n  FieldValues,\n  InternalFieldName,\n  RegisterOptions,\n  UseFieldArrayProps,\n  UseFieldArrayReturn,\n} from './types';\nimport { useFormContext } from './useFormContext';\nimport { useSubscribe } from './useSubscribe';\n\n/**\n * A custom hook that exposes convenient methods to perform operations with a list of dynamic inputs that need to be appended, updated, removed etc. • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn) • [Video](https://youtu.be/4MrbfGSFY2A)\n *\n * @remarks\n * [API](https://react-hook-form.com/api/usefieldarray) • [Demo](https://codesandbox.io/s/react-hook-form-usefieldarray-ssugn)\n *\n * @param props - useFieldArray props\n *\n * @returns methods - functions to manipulate with the Field Arrays (dynamic inputs) {@link UseFieldArrayReturn}\n *\n * @example\n * ```tsx\n * function App() {\n *   const { register, control, handleSubmit, reset, trigger, setError } = useForm({\n *     defaultValues: {\n *       test: []\n *     }\n *   });\n *   const { fields, append } = useFieldArray({\n *     control,\n *     name: \"test\"\n *   });\n *\n *   return (\n *     <form onSubmit={handleSubmit(data => console.log(data))}>\n *       {fields.map((item, index) => (\n *          <input key={item.id} {...register(`test.${index}.firstName`)}  />\n *       ))}\n *       <button type=\"button\" onClick={() => append({ firstName: \"bill\" })}>\n *         append\n *       </button>\n *       <input type=\"submit\" />\n *     </form>\n *   );\n * }\n * ```\n */\nexport function useFieldArray<\n  TFieldValues extends FieldValues = FieldValues,\n  TFieldArrayName extends FieldArrayPath<TFieldValues> = FieldArrayPath<TFieldValues>,\n  TKeyName extends string = 'id',\n>(\n  props: UseFieldArrayProps<TFieldValues, TFieldArrayName, TKeyName>,\n): UseFieldArrayReturn<TFieldValues, TFieldArrayName, TKeyName> {\n  const methods = useFormContext();\n  const {\n    control = methods.control,\n    name,\n    keyName = 'id',\n    shouldUnregister,\n  } = props;\n  const [fields, setFields] = React.useState(control._getFieldArray(name));\n  const ids = React.useRef<string[]>(\n    control._getFieldArray(name).map(generateId),\n  );\n  const _fieldIds = React.useRef(fields);\n  const _name = React.useRef(name);\n  const _actioned = React.useRef(false);\n\n  _name.current = name;\n  _fieldIds.current = fields;\n  control._names.array.add(name);\n\n  props.rules &&\n    (control as Control<TFieldValues>).register(\n      name as FieldPath<TFieldValues>,\n      props.rules as RegisterOptions<TFieldValues>,\n    );\n\n  useSubscribe({\n    next: ({\n      values,\n      name: fieldArrayName,\n    }: {\n      values?: FieldValues;\n      name?: InternalFieldName;\n    }) => {\n      if (fieldArrayName === _name.current || !fieldArrayName) {\n        const fieldValues = get(values, _name.current);\n        if (Array.isArray(fieldValues)) {\n          setFields(fieldValues);\n          ids.current = fieldValues.map(generateId);\n        }\n      }\n    },\n    subject: control._subjects.array,\n  });\n\n  const updateValues = React.useCallback(\n    <\n      T extends Partial<\n        FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n      >[],\n    >(\n      updatedFieldArrayValues: T,\n    ) => {\n      _actioned.current = true;\n      control._updateFieldArray(name, updatedFieldArrayValues);\n    },\n    [control, name],\n  );\n\n  const append = (\n    value:\n      | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n      | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n    options?: FieldArrayMethodProps,\n  ) => {\n    const appendValue = convertToArrayPayload(cloneObject(value));\n    const updatedFieldArrayValues = appendAt(\n      control._getFieldArray(name),\n      appendValue,\n    );\n    control._names.focus = getFocusFieldName(\n      name,\n      updatedFieldArrayValues.length - 1,\n      options,\n    );\n    ids.current = appendAt(ids.current, appendValue.map(generateId));\n    updateValues(updatedFieldArrayValues);\n    setFields(updatedFieldArrayValues);\n    control._updateFieldArray(name, updatedFieldArrayValues, appendAt, {\n      argA: fillEmptyArray(value),\n    });\n  };\n\n  const prepend = (\n    value:\n      | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n      | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n    options?: FieldArrayMethodProps,\n  ) => {\n    const prependValue = convertToArrayPayload(cloneObject(value));\n    const updatedFieldArrayValues = prependAt(\n      control._getFieldArray(name),\n      prependValue,\n    );\n    control._names.focus = getFocusFieldName(name, 0, options);\n    ids.current = prependAt(ids.current, prependValue.map(generateId));\n    updateValues(updatedFieldArrayValues);\n    setFields(updatedFieldArrayValues);\n    control._updateFieldArray(name, updatedFieldArrayValues, prependAt, {\n      argA: fillEmptyArray(value),\n    });\n  };\n\n  const remove = (index?: number | number[]) => {\n    const updatedFieldArrayValues: Partial<\n      FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n    >[] = removeArrayAt(control._getFieldArray(name), index);\n    ids.current = removeArrayAt(ids.current, index);\n    updateValues(updatedFieldArrayValues);\n    setFields(updatedFieldArrayValues);\n    control._updateFieldArray(name, updatedFieldArrayValues, removeArrayAt, {\n      argA: index,\n    });\n  };\n\n  const insert = (\n    index: number,\n    value:\n      | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n      | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n    options?: FieldArrayMethodProps,\n  ) => {\n    const insertValue = convertToArrayPayload(cloneObject(value));\n    const updatedFieldArrayValues = insertAt(\n      control._getFieldArray(name),\n      index,\n      insertValue,\n    );\n    control._names.focus = getFocusFieldName(name, index, options);\n    ids.current = insertAt(ids.current, index, insertValue.map(generateId));\n    updateValues(updatedFieldArrayValues);\n    setFields(updatedFieldArrayValues);\n    control._updateFieldArray(name, updatedFieldArrayValues, insertAt, {\n      argA: index,\n      argB: fillEmptyArray(value),\n    });\n  };\n\n  const swap = (indexA: number, indexB: number) => {\n    const updatedFieldArrayValues = control._getFieldArray(name);\n    swapArrayAt(updatedFieldArrayValues, indexA, indexB);\n    swapArrayAt(ids.current, indexA, indexB);\n    updateValues(updatedFieldArrayValues);\n    setFields(updatedFieldArrayValues);\n    control._updateFieldArray(\n      name,\n      updatedFieldArrayValues,\n      swapArrayAt,\n      {\n        argA: indexA,\n        argB: indexB,\n      },\n      false,\n    );\n  };\n\n  const move = (from: number, to: number) => {\n    const updatedFieldArrayValues = control._getFieldArray(name);\n    moveArrayAt(updatedFieldArrayValues, from, to);\n    moveArrayAt(ids.current, from, to);\n    updateValues(updatedFieldArrayValues);\n    setFields(updatedFieldArrayValues);\n    control._updateFieldArray(\n      name,\n      updatedFieldArrayValues,\n      moveArrayAt,\n      {\n        argA: from,\n        argB: to,\n      },\n      false,\n    );\n  };\n\n  const update = (\n    index: number,\n    value: FieldArray<TFieldValues, TFieldArrayName>,\n  ) => {\n    const updateValue = cloneObject(value);\n    const updatedFieldArrayValues = updateAt(\n      control._getFieldArray<\n        FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>\n      >(name),\n      index,\n      updateValue as FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>,\n    );\n    ids.current = [...updatedFieldArrayValues].map((item, i) =>\n      !item || i === index ? generateId() : ids.current[i],\n    );\n    updateValues(updatedFieldArrayValues);\n    setFields([...updatedFieldArrayValues]);\n    control._updateFieldArray(\n      name,\n      updatedFieldArrayValues,\n      updateAt,\n      {\n        argA: index,\n        argB: updateValue,\n      },\n      true,\n      false,\n    );\n  };\n\n  const replace = (\n    value:\n      | Partial<FieldArray<TFieldValues, TFieldArrayName>>\n      | Partial<FieldArray<TFieldValues, TFieldArrayName>>[],\n  ) => {\n    const updatedFieldArrayValues = convertToArrayPayload(cloneObject(value));\n    ids.current = updatedFieldArrayValues.map(generateId);\n    updateValues([...updatedFieldArrayValues]);\n    setFields([...updatedFieldArrayValues]);\n    control._updateFieldArray(\n      name,\n      [...updatedFieldArrayValues],\n      <T>(data: T): T => data,\n      {},\n      true,\n      false,\n    );\n  };\n\n  React.useEffect(() => {\n    control._stateFlags.action = false;\n\n    isWatched(name, control._names) && control._subjects.state.next({});\n\n    if (\n      _actioned.current &&\n      (!getValidationModes(control._options.mode).isOnSubmit ||\n        control._formState.isSubmitted)\n    ) {\n      if (control._options.resolver) {\n        control._executeSchema([name]).then((result) => {\n          const error = get(result.errors, name);\n          const existingError = get(control._formState.errors, name);\n\n          if (\n            existingError ? !error && existingError.type : error && error.type\n          ) {\n            error\n              ? set(control._formState.errors, name, error)\n              : unset(control._formState.errors, name);\n            control._subjects.state.next({\n              errors: control._formState.errors as FieldErrors<TFieldValues>,\n            });\n          }\n        });\n      } else {\n        const field: Field = get(control._fields, name);\n        if (field && field._f) {\n          validateField(\n            field,\n            control._formValues,\n            control._options.criteriaMode === VALIDATION_MODE.all,\n            control._options.shouldUseNativeValidation,\n            true,\n          ).then(\n            (error) =>\n              !isEmptyObject(error) &&\n              control._subjects.state.next({\n                errors: updateFieldArrayRootError(\n                  control._formState.errors as FieldErrors<TFieldValues>,\n                  error,\n                  name,\n                ) as FieldErrors<TFieldValues>,\n              }),\n          );\n        }\n      }\n    }\n\n    control._subjects.watch.next({\n      name,\n      values: control._formValues,\n    });\n\n    control._names.focus &&\n      focusFieldBy(\n        control._fields,\n        (key) => !!key && key.startsWith(control._names.focus || ''),\n      );\n\n    control._names.focus = '';\n\n    control._updateValid();\n  }, [fields, name, control]);\n\n  React.useEffect(() => {\n    !get(control._formValues, name) && control._updateFieldArray(name);\n\n    return () => {\n      (control._options.shouldUnregister || shouldUnregister) &&\n        control.unregister(name as FieldPath<TFieldValues>);\n    };\n  }, [name, control, keyName, shouldUnregister]);\n\n  return {\n    swap: React.useCallback(swap, [updateValues, name, control]),\n    move: React.useCallback(move, [updateValues, name, control]),\n    prepend: React.useCallback(prepend, [updateValues, name, control]),\n    append: React.useCallback(append, [updateValues, name, control]),\n    remove: React.useCallback(remove, [updateValues, name, control]),\n    insert: React.useCallback(insert, [updateValues, name, control]),\n    update: React.useCallback(update, [updateValues, name, control]),\n    replace: React.useCallback(replace, [updateValues, name, control]),\n    fields: React.useMemo(\n      () =>\n        fields.map((field, index) => ({\n          ...field,\n          [keyName]: ids.current[index] || generateId(),\n        })) as FieldArrayWithId<TFieldValues, TFieldArrayName, TKeyName>[],\n      [fields, keyName],\n    ),\n  };\n}\n", "import { Noop } from '../types';\n\nexport type Observer<T> = {\n  next: (value: T) => void;\n};\n\nexport type Subscription = {\n  unsubscribe: Noop;\n};\n\nexport type Subject<T> = {\n  readonly observers: Observer<T>[];\n  subscribe: (value: Observer<T>) => Subscription;\n  unsubscribe: Noop;\n} & Observer<T>;\n\nexport default function createSubject<T>(): Subject<T> {\n  let _observers: Observer<T>[] = [];\n\n  const next = (value: T) => {\n    for (const observer of _observers) {\n      observer.next(value);\n    }\n  };\n\n  const subscribe = (observer: Observer<T>): Subscription => {\n    _observers.push(observer);\n    return {\n      unsubscribe: () => {\n        _observers = _observers.filter((o) => o !== observer);\n      },\n    };\n  };\n\n  const unsubscribe = () => {\n    _observers = [];\n  };\n\n  return {\n    get observers() {\n      return _observers;\n    },\n    next,\n    subscribe,\n    unsubscribe,\n  };\n}\n", "import { Primitive } from '../types';\n\nimport isNullOrUndefined from './isNullOrUndefined';\nimport { isObjectType } from './isObject';\n\nexport default (value: unknown): value is Primitive =>\n  isNullOrUndefined(value) || !isObjectType(value);\n", "import isObject from '../utils/isObject';\n\nimport isDateObject from './isDateObject';\nimport isPrimitive from './isPrimitive';\n\nexport default function deepEqual(object1: any, object2: any) {\n  if (isPrimitive(object1) || isPrimitive(object2)) {\n    return object1 === object2;\n  }\n\n  if (isDateObject(object1) && isDateObject(object2)) {\n    return object1.getTime() === object2.getTime();\n  }\n\n  const keys1 = Object.keys(object1);\n  const keys2 = Object.keys(object2);\n\n  if (keys1.length !== keys2.length) {\n    return false;\n  }\n\n  for (const key of keys1) {\n    const val1 = object1[key];\n\n    if (!keys2.includes(key)) {\n      return false;\n    }\n\n    if (key !== 'ref') {\n      const val2 = object2[key];\n\n      if (\n        (isDateObject(val1) && isDateObject(val2)) ||\n        (isObject(val1) && isObject(val2)) ||\n        (Array.isArray(val1) && Array.isArray(val2))\n          ? !deepEqual(val1, val2)\n          : val1 !== val2\n      ) {\n        return false;\n      }\n    }\n  }\n\n  return true;\n}\n", "import { FieldElement } from '../types';\n\nexport default (element: FieldElement): element is HTMLSelectElement =>\n  element.type === `select-multiple`;\n", "import { FieldElement } from '../types';\n\nimport isCheckBoxInput from './isCheckBoxInput';\nimport isRadioInput from './isRadioInput';\n\nexport default (ref: FieldElement): ref is HTMLInputElement =>\n  isRadioInput(ref) || isCheckBoxInput(ref);\n", "import { Ref } from '../types';\n\nimport isHTMLElement from './isHTMLElement';\n\nexport default (ref: Ref) => isHTMLElement(ref) && ref.isConnected;\n", "import isFunction from './isFunction';\n\nexport default <T>(data: T): boolean => {\n  for (const key in data) {\n    if (isFunction(data[key])) {\n      return true;\n    }\n  }\n  return false;\n};\n", "import deepEqual from '../utils/deepEqual';\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\nimport isObject from '../utils/isObject';\nimport isPrimitive from '../utils/isPrimitive';\nimport isUndefined from '../utils/isUndefined';\nimport objectHasFunction from '../utils/objectHasFunction';\n\nfunction markFieldsDirty<U>(data: U, fields: Record<string, any> = {}) {\n  const isParentNodeArray = Array.isArray(data);\n\n  if (isObject(data) || isParentNodeArray) {\n    for (const key in data) {\n      if (\n        Array.isArray(data[key]) ||\n        (isObject(data[key]) && !objectHasFunction(data[key]))\n      ) {\n        fields[key] = Array.isArray(data[key]) ? [] : {};\n        markFieldsDirty(data[key], fields[key]);\n      } else if (!isNullOrUndefined(data[key])) {\n        fields[key] = true;\n      }\n    }\n  }\n\n  return fields;\n}\n\nfunction getDirtyFieldsFromDefaultValues<T>(\n  data: T,\n  formValues: T,\n  dirtyFieldsFromValues: any,\n) {\n  const isParentNodeArray = Array.isArray(data);\n\n  if (isObject(data) || isParentNodeArray) {\n    for (const key in data) {\n      if (\n        Array.isArray(data[key]) ||\n        (isObject(data[key]) && !objectHasFunction(data[key]))\n      ) {\n        if (\n          isUndefined(formValues) ||\n          isPrimitive(dirtyFieldsFromValues[key])\n        ) {\n          dirtyFieldsFromValues[key] = Array.isArray(data[key])\n            ? markFieldsDirty(data[key], [])\n            : { ...markFieldsDirty(data[key]) };\n        } else {\n          getDirtyFieldsFromDefaultValues(\n            data[key],\n            isNullOrUndefined(formValues) ? {} : formValues[key],\n            dirtyFieldsFromValues[key],\n          );\n        }\n      } else {\n        deepEqual(data[key], formValues[key])\n          ? delete dirtyFieldsFromValues[key]\n          : (dirtyFieldsFromValues[key] = true);\n      }\n    }\n  }\n\n  return dirtyFieldsFromValues;\n}\n\nexport default <T>(defaultValues: T, formValues: T) =>\n  getDirtyFieldsFromDefaultValues(\n    defaultValues,\n    formValues,\n    markFieldsDirty(formValues),\n  );\n", "import { Field, NativeFieldValue } from '../types';\nimport isString from '../utils/isString';\nimport isUndefined from '../utils/isUndefined';\n\nexport default <T extends NativeFieldValue>(\n  value: T,\n  { valueAsNumber, valueAsDate, setValueAs }: Field['_f'],\n) =>\n  isUndefined(value)\n    ? value\n    : valueAsNumber\n    ? value === ''\n      ? NaN\n      : value\n      ? +value\n      : value\n    : valueAsDate && isString(value)\n    ? new Date(value)\n    : setValueAs\n    ? setValueAs(value)\n    : value;\n", "import { Field } from '../types';\nimport isCheckBox from '../utils/isCheckBoxInput';\nimport isFileInput from '../utils/isFileInput';\nimport isMultipleSelect from '../utils/isMultipleSelect';\nimport isRadioInput from '../utils/isRadioInput';\nimport isUndefined from '../utils/isUndefined';\n\nimport getCheckboxValue from './getCheckboxValue';\nimport getFieldValueAs from './getFieldValueAs';\nimport getRadioValue from './getRadioValue';\n\nexport default function getFieldValue(_f: Field['_f']) {\n  const ref = _f.ref;\n\n  if (_f.refs ? _f.refs.every((ref) => ref.disabled) : ref.disabled) {\n    return;\n  }\n\n  if (isFileInput(ref)) {\n    return ref.files;\n  }\n\n  if (isRadioInput(ref)) {\n    return getRadioValue(_f.refs).value;\n  }\n\n  if (isMultipleSelect(ref)) {\n    return [...ref.selectedOptions].map(({ value }) => value);\n  }\n\n  if (isCheckBox(ref)) {\n    return getCheckboxValue(_f.refs).value;\n  }\n\n  return getFieldValueAs(isUndefined(ref.value) ? _f.ref.value : ref.value, _f);\n}\n", "import {\n  CriteriaMode,\n  Field,\n  FieldName,\n  FieldRefs,\n  FieldValues,\n  InternalFieldName,\n} from '../types';\nimport { get } from '../utils';\nimport set from '../utils/set';\n\nexport default <TFieldValues extends FieldValues>(\n  fieldsNames: Set<InternalFieldName> | InternalFieldName[],\n  _fields: FieldRefs,\n  criteriaMode?: CriteriaMode,\n  shouldUseNativeValidation?: boolean | undefined,\n) => {\n  const fields: Record<InternalFieldName, Field['_f']> = {};\n\n  for (const name of fieldsNames) {\n    const field: Field = get(_fields, name);\n\n    field && set(fields, name, field._f);\n  }\n\n  return {\n    criteriaMode,\n    names: [...fieldsNames] as FieldName<TFieldValues>[],\n    fields,\n    shouldUseNativeValidation,\n  };\n};\n", "import {\n  ValidationRule,\n  ValidationValue,\n  ValidationValueMessage,\n} from '../types';\nimport isObject from '../utils/isObject';\nimport isRegex from '../utils/isRegex';\nimport isUndefined from '../utils/isUndefined';\n\nexport default <T extends ValidationValue>(\n  rule?: ValidationRule<T> | ValidationValueMessage<T>,\n) =>\n  isUndefined(rule)\n    ? rule\n    : isRegex(rule)\n    ? rule.source\n    : isObject(rule)\n    ? isRegex(rule.value)\n      ? rule.value.source\n      : rule.value\n    : rule;\n", "import { Field } from '../types';\n\nexport default (options: Field['_f']) =>\n  options.mount &&\n  (options.required ||\n    options.min ||\n    options.max ||\n    options.maxLength ||\n    options.minLength ||\n    options.pattern ||\n    options.validate);\n", "import { FieldError, FieldErrors, FieldValues } from '../types';\nimport get from '../utils/get';\nimport isKey from '../utils/isKey';\n\nexport default function schemaErrorLookup<T extends FieldValues = FieldValues>(\n  errors: FieldErrors<T>,\n  _fields: FieldValues,\n  name: string,\n): {\n  error?: FieldError;\n  name: string;\n} {\n  const error = get(errors, name);\n\n  if (error || isKey(name)) {\n    return {\n      error,\n      name,\n    };\n  }\n\n  const names = name.split('.');\n\n  while (names.length) {\n    const fieldName = names.join('.');\n    const field = get(_fields, fieldName);\n    const foundError = get(errors, fieldName);\n\n    if (field && !Array.isArray(field) && name !== fieldName) {\n      return { name };\n    }\n\n    if (foundError && foundError.type) {\n      return {\n        name: fieldName,\n        error: foundError,\n      };\n    }\n\n    names.pop();\n  }\n\n  return {\n    name,\n  };\n}\n", "export default (\n  isBlurEvent: boolean,\n  isTouched: boolean,\n  isSubmitted: boolean,\n  reValidateMode: {\n    isOnBlur: boolean;\n    isOnChange: boolean;\n  },\n  mode: Partial<{\n    isOnSubmit: boolean;\n    isOnBlur: boolean;\n    isOnChange: boolean;\n    isOnTouch: boolean;\n    isOnAll: boolean;\n  }>,\n) => {\n  if (mode.isOnAll) {\n    return false;\n  } else if (!isSubmitted && mode.isOnTouch) {\n    return !(isTouched || isBlurEvent);\n  } else if (isSubmitted ? reValidateMode.isOnBlur : mode.isOnBlur) {\n    return !isBlurEvent;\n  } else if (isSubmitted ? reValidateMode.isOnChange : mode.isOnChange) {\n    return isBlurEvent;\n  }\n  return true;\n};\n", "import compact from '../utils/compact';\nimport get from '../utils/get';\nimport unset from '../utils/unset';\n\nexport default <T>(ref: T, name: string) =>\n  !compact(get(ref, name)).length && unset(ref, name);\n", "import { EVENTS, VALIDATION_MODE } from '../constants';\nimport {\n  BatchFieldArrayUpdate,\n  ChangeHandler,\n  DeepPartial,\n  DelayCallback,\n  EventType,\n  Field,\n  FieldError,\n  FieldNamesMarkedBoolean,\n  FieldPath,\n  FieldRefs,\n  FieldValues,\n  FormState,\n  GetIsDirty,\n  InternalFieldName,\n  Names,\n  Path,\n  Ref,\n  SetFieldValue,\n  SetValueConfig,\n  Subjects,\n  UseFormClearErrors,\n  UseFormGetFieldState,\n  UseFormGetValues,\n  UseFormHandleSubmit,\n  UseFormProps,\n  UseFormRegister,\n  UseFormReset,\n  UseFormResetField,\n  UseFormReturn,\n  UseFormSetError,\n  UseFormSetFocus,\n  UseFormSetValue,\n  UseFormTrigger,\n  UseFormUnregister,\n  UseFormWatch,\n  WatchInternal,\n  WatchObserver,\n} from '../types';\nimport cloneObject from '../utils/cloneObject';\nimport compact from '../utils/compact';\nimport convertToArrayPayload from '../utils/convertToArrayPayload';\nimport createSubject from '../utils/createSubject';\nimport deepEqual from '../utils/deepEqual';\nimport get from '../utils/get';\nimport isBoolean from '../utils/isBoolean';\nimport isCheckBoxInput from '../utils/isCheckBoxInput';\nimport isDateObject from '../utils/isDateObject';\nimport isEmptyObject from '../utils/isEmptyObject';\nimport isFileInput from '../utils/isFileInput';\nimport isFunction from '../utils/isFunction';\nimport isHTMLElement from '../utils/isHTMLElement';\nimport isMultipleSelect from '../utils/isMultipleSelect';\nimport isNullOrUndefined from '../utils/isNullOrUndefined';\nimport isObject from '../utils/isObject';\nimport isPrimitive from '../utils/isPrimitive';\nimport isRadioOrCheckbox from '../utils/isRadioOrCheckbox';\nimport isString from '../utils/isString';\nimport isUndefined from '../utils/isUndefined';\nimport isWeb from '../utils/isWeb';\nimport live from '../utils/live';\nimport set from '../utils/set';\nimport unset from '../utils/unset';\n\nimport focusFieldBy from './focusFieldBy';\nimport generateWatchOutput from './generateWatchOutput';\nimport getDirtyFields from './getDirtyFields';\nimport getEventValue from './getEventValue';\nimport getFieldValue from './getFieldValue';\nimport getFieldValueAs from './getFieldValueAs';\nimport getResolverOptions from './getResolverOptions';\nimport getRuleValue from './getRuleValue';\nimport getValidationModes from './getValidationModes';\nimport hasValidation from './hasValidation';\nimport isNameInFieldArray from './isNameInFieldArray';\nimport isWatched from './isWatched';\nimport schemaErrorLookup from './schemaErrorLookup';\nimport skipValidation from './skipValidation';\nimport unsetEmptyArray from './unsetEmptyArray';\nimport updateFieldArrayRootError from './updateFieldArrayRootError';\nimport validateField from './validateField';\n\nconst defaultOptions = {\n  mode: VALIDATION_MODE.onSubmit,\n  reValidateMode: VALIDATION_MODE.onChange,\n  shouldFocusError: true,\n} as const;\n\nexport function createFormControl<\n  TFieldValues extends FieldValues = FieldValues,\n  TContext = any,\n>(\n  props: UseFormProps<TFieldValues, TContext> = {},\n  flushRootRender: () => void,\n): Omit<UseFormReturn<TFieldValues, TContext>, 'formState'> {\n  let _options = {\n    ...defaultOptions,\n    ...props,\n  };\n  const shouldCaptureDirtyFields =\n    props.resetOptions && props.resetOptions.keepDirtyValues;\n  let _formState: FormState<TFieldValues> = {\n    submitCount: 0,\n    isDirty: false,\n    isLoading: true,\n    isValidating: false,\n    isSubmitted: false,\n    isSubmitting: false,\n    isSubmitSuccessful: false,\n    isValid: false,\n    touchedFields: {},\n    dirtyFields: {},\n    errors: {},\n  };\n  let _fields = {};\n  let _defaultValues =\n    isObject(_options.defaultValues) || isObject(_options.values)\n      ? cloneObject(_options.defaultValues || _options.values) || {}\n      : {};\n  let _formValues = _options.shouldUnregister\n    ? {}\n    : cloneObject(_defaultValues);\n  let _stateFlags = {\n    action: false,\n    mount: false,\n    watch: false,\n  };\n  let _names: Names = {\n    mount: new Set(),\n    unMount: new Set(),\n    array: new Set(),\n    watch: new Set(),\n  };\n  let delayErrorCallback: DelayCallback | null;\n  let timer = 0;\n  const _proxyFormState = {\n    isDirty: false,\n    dirtyFields: false,\n    touchedFields: false,\n    isValidating: false,\n    isValid: false,\n    errors: false,\n  };\n  const _subjects: Subjects<TFieldValues> = {\n    watch: createSubject(),\n    array: createSubject(),\n    state: createSubject(),\n  };\n  const validationModeBeforeSubmit = getValidationModes(_options.mode);\n  const validationModeAfterSubmit = getValidationModes(_options.reValidateMode);\n  const shouldDisplayAllAssociatedErrors =\n    _options.criteriaMode === VALIDATION_MODE.all;\n\n  const debounce =\n    <T extends Function>(callback: T) =>\n    (wait: number) => {\n      clearTimeout(timer);\n      timer = window.setTimeout(callback, wait);\n    };\n\n  const _updateValid = async (shouldUpdateValid?: boolean) => {\n    if (_proxyFormState.isValid || shouldUpdateValid) {\n      const isValid = _options.resolver\n        ? isEmptyObject((await _executeSchema()).errors)\n        : await executeBuiltInValidation(_fields, true);\n\n      if (isValid !== _formState.isValid) {\n        _subjects.state.next({\n          isValid,\n        });\n      }\n    }\n  };\n\n  const _updateIsValidating = (value: boolean) =>\n    _proxyFormState.isValidating &&\n    _subjects.state.next({\n      isValidating: value,\n    });\n\n  const _updateFieldArray: BatchFieldArrayUpdate = (\n    name,\n    values = [],\n    method,\n    args,\n    shouldSetValues = true,\n    shouldUpdateFieldsAndState = true,\n  ) => {\n    if (args && method) {\n      _stateFlags.action = true;\n      if (shouldUpdateFieldsAndState && Array.isArray(get(_fields, name))) {\n        const fieldValues = method(get(_fields, name), args.argA, args.argB);\n        shouldSetValues && set(_fields, name, fieldValues);\n      }\n\n      if (\n        shouldUpdateFieldsAndState &&\n        Array.isArray(get(_formState.errors, name))\n      ) {\n        const errors = method(\n          get(_formState.errors, name),\n          args.argA,\n          args.argB,\n        );\n        shouldSetValues && set(_formState.errors, name, errors);\n        unsetEmptyArray(_formState.errors, name);\n      }\n\n      if (\n        _proxyFormState.touchedFields &&\n        shouldUpdateFieldsAndState &&\n        Array.isArray(get(_formState.touchedFields, name))\n      ) {\n        const touchedFields = method(\n          get(_formState.touchedFields, name),\n          args.argA,\n          args.argB,\n        );\n        shouldSetValues && set(_formState.touchedFields, name, touchedFields);\n      }\n\n      if (_proxyFormState.dirtyFields) {\n        _formState.dirtyFields = getDirtyFields(_defaultValues, _formValues);\n      }\n\n      _subjects.state.next({\n        name,\n        isDirty: _getDirty(name, values),\n        dirtyFields: _formState.dirtyFields,\n        errors: _formState.errors,\n        isValid: _formState.isValid,\n      });\n    } else {\n      set(_formValues, name, values);\n    }\n  };\n\n  const updateErrors = (name: InternalFieldName, error: FieldError) => {\n    set(_formState.errors, name, error);\n    _subjects.state.next({\n      errors: _formState.errors,\n    });\n  };\n\n  const updateValidAndValue = (\n    name: InternalFieldName,\n    shouldSkipSetValueAs: boolean,\n    value?: unknown,\n    ref?: Ref,\n  ) => {\n    const field: Field = get(_fields, name);\n\n    if (field) {\n      const defaultValue = get(\n        _formValues,\n        name,\n        isUndefined(value) ? get(_defaultValues, name) : value,\n      );\n\n      isUndefined(defaultValue) ||\n      (ref && (ref as HTMLInputElement).defaultChecked) ||\n      shouldSkipSetValueAs\n        ? set(\n            _formValues,\n            name,\n            shouldSkipSetValueAs ? defaultValue : getFieldValue(field._f),\n          )\n        : setFieldValue(name, defaultValue);\n\n      _stateFlags.mount && _updateValid();\n    }\n  };\n\n  const updateTouchAndDirty = (\n    name: InternalFieldName,\n    fieldValue: unknown,\n    isBlurEvent?: boolean,\n    shouldDirty?: boolean,\n    shouldRender?: boolean,\n  ): Partial<\n    Pick<FormState<TFieldValues>, 'dirtyFields' | 'isDirty' | 'touchedFields'>\n  > => {\n    let shouldUpdateField = false;\n    let isPreviousDirty = false;\n    const output: Partial<FormState<TFieldValues>> & { name: string } = {\n      name,\n    };\n\n    if (!isBlurEvent || shouldDirty) {\n      if (_proxyFormState.isDirty) {\n        isPreviousDirty = _formState.isDirty;\n        _formState.isDirty = output.isDirty = _getDirty();\n        shouldUpdateField = isPreviousDirty !== output.isDirty;\n      }\n\n      const isCurrentFieldPristine = deepEqual(\n        get(_defaultValues, name),\n        fieldValue,\n      );\n\n      isPreviousDirty = get(_formState.dirtyFields, name);\n      isCurrentFieldPristine\n        ? unset(_formState.dirtyFields, name)\n        : set(_formState.dirtyFields, name, true);\n      output.dirtyFields = _formState.dirtyFields;\n      shouldUpdateField =\n        shouldUpdateField ||\n        (_proxyFormState.dirtyFields &&\n          isPreviousDirty !== !isCurrentFieldPristine);\n    }\n\n    if (isBlurEvent) {\n      const isPreviousFieldTouched = get(_formState.touchedFields, name);\n\n      if (!isPreviousFieldTouched) {\n        set(_formState.touchedFields, name, isBlurEvent);\n        output.touchedFields = _formState.touchedFields;\n        shouldUpdateField =\n          shouldUpdateField ||\n          (_proxyFormState.touchedFields &&\n            isPreviousFieldTouched !== isBlurEvent);\n      }\n    }\n\n    shouldUpdateField && shouldRender && _subjects.state.next(output);\n\n    return shouldUpdateField ? output : {};\n  };\n\n  const shouldRenderByError = (\n    name: InternalFieldName,\n    isValid?: boolean,\n    error?: FieldError,\n    fieldState?: {\n      dirty?: FieldNamesMarkedBoolean<TFieldValues>;\n      isDirty?: boolean;\n      touched?: FieldNamesMarkedBoolean<TFieldValues>;\n    },\n  ) => {\n    const previousFieldError = get(_formState.errors, name);\n    const shouldUpdateValid =\n      _proxyFormState.isValid &&\n      isBoolean(isValid) &&\n      _formState.isValid !== isValid;\n\n    if (props.delayError && error) {\n      delayErrorCallback = debounce(() => updateErrors(name, error));\n      delayErrorCallback(props.delayError);\n    } else {\n      clearTimeout(timer);\n      delayErrorCallback = null;\n      error\n        ? set(_formState.errors, name, error)\n        : unset(_formState.errors, name);\n    }\n\n    if (\n      (error ? !deepEqual(previousFieldError, error) : previousFieldError) ||\n      !isEmptyObject(fieldState) ||\n      shouldUpdateValid\n    ) {\n      const updatedFormState = {\n        ...fieldState,\n        ...(shouldUpdateValid && isBoolean(isValid) ? { isValid } : {}),\n        errors: _formState.errors,\n        name,\n      };\n\n      _formState = {\n        ..._formState,\n        ...updatedFormState,\n      };\n\n      _subjects.state.next(updatedFormState);\n    }\n\n    _updateIsValidating(false);\n  };\n\n  const _executeSchema = async (name?: InternalFieldName[]) =>\n    await _options.resolver!(\n      _formValues as TFieldValues,\n      _options.context,\n      getResolverOptions(\n        name || _names.mount,\n        _fields,\n        _options.criteriaMode,\n        _options.shouldUseNativeValidation,\n      ),\n    );\n\n  const executeSchemaAndUpdateState = async (names?: InternalFieldName[]) => {\n    const { errors } = await _executeSchema();\n\n    if (names) {\n      for (const name of names) {\n        const error = get(errors, name);\n        error\n          ? set(_formState.errors, name, error)\n          : unset(_formState.errors, name);\n      }\n    } else {\n      _formState.errors = errors;\n    }\n\n    return errors;\n  };\n\n  const executeBuiltInValidation = async (\n    fields: FieldRefs,\n    shouldOnlyCheckValid?: boolean,\n    context: {\n      valid: boolean;\n    } = {\n      valid: true,\n    },\n  ) => {\n    for (const name in fields) {\n      const field = fields[name];\n\n      if (field) {\n        const { _f, ...fieldValue } = field;\n\n        if (_f) {\n          const isFieldArrayRoot = _names.array.has(_f.name);\n          const fieldError = await validateField(\n            field,\n            _formValues,\n            shouldDisplayAllAssociatedErrors,\n            _options.shouldUseNativeValidation,\n            isFieldArrayRoot,\n          );\n\n          if (fieldError[_f.name]) {\n            context.valid = false;\n            if (shouldOnlyCheckValid) {\n              break;\n            }\n          }\n\n          !shouldOnlyCheckValid &&\n            (get(fieldError, _f.name)\n              ? isFieldArrayRoot\n                ? updateFieldArrayRootError(\n                    _formState.errors,\n                    fieldError,\n                    _f.name,\n                  )\n                : set(_formState.errors, _f.name, fieldError[_f.name])\n              : unset(_formState.errors, _f.name));\n        }\n\n        fieldValue &&\n          (await executeBuiltInValidation(\n            fieldValue,\n            shouldOnlyCheckValid,\n            context,\n          ));\n      }\n    }\n\n    return context.valid;\n  };\n\n  const _removeUnmounted = () => {\n    for (const name of _names.unMount) {\n      const field: Field = get(_fields, name);\n\n      field &&\n        (field._f.refs\n          ? field._f.refs.every((ref) => !live(ref))\n          : !live(field._f.ref)) &&\n        unregister(name as FieldPath<TFieldValues>);\n    }\n\n    _names.unMount = new Set();\n  };\n\n  const _getDirty: GetIsDirty = (name, data) => (\n    name && data && set(_formValues, name, data),\n    !deepEqual(getValues(), _defaultValues)\n  );\n\n  const _getWatch: WatchInternal<TFieldValues> = (\n    names,\n    defaultValue,\n    isGlobal,\n  ) =>\n    generateWatchOutput(\n      names,\n      _names,\n      {\n        ...(_stateFlags.mount\n          ? _formValues\n          : isUndefined(defaultValue)\n          ? _defaultValues\n          : isString(names)\n          ? { [names]: defaultValue }\n          : defaultValue),\n      },\n      isGlobal,\n      defaultValue,\n    );\n\n  const _getFieldArray = <TFieldArrayValues>(\n    name: InternalFieldName,\n  ): Partial<TFieldArrayValues>[] =>\n    compact(\n      get(\n        _stateFlags.mount ? _formValues : _defaultValues,\n        name,\n        props.shouldUnregister ? get(_defaultValues, name, []) : [],\n      ),\n    );\n\n  const setFieldValue = (\n    name: InternalFieldName,\n    value: SetFieldValue<TFieldValues>,\n    options: SetValueConfig = {},\n  ) => {\n    const field: Field = get(_fields, name);\n    let fieldValue: unknown = value;\n\n    if (field) {\n      const fieldReference = field._f;\n\n      if (fieldReference) {\n        !fieldReference.disabled &&\n          set(_formValues, name, getFieldValueAs(value, fieldReference));\n\n        fieldValue =\n          isHTMLElement(fieldReference.ref) && isNullOrUndefined(value)\n            ? ''\n            : value;\n\n        if (isMultipleSelect(fieldReference.ref)) {\n          [...fieldReference.ref.options].forEach(\n            (optionRef) =>\n              (optionRef.selected = (\n                fieldValue as InternalFieldName[]\n              ).includes(optionRef.value)),\n          );\n        } else if (fieldReference.refs) {\n          if (isCheckBoxInput(fieldReference.ref)) {\n            fieldReference.refs.length > 1\n              ? fieldReference.refs.forEach(\n                  (checkboxRef) =>\n                    (!checkboxRef.defaultChecked || !checkboxRef.disabled) &&\n                    (checkboxRef.checked = Array.isArray(fieldValue)\n                      ? !!(fieldValue as []).find(\n                          (data: string) => data === checkboxRef.value,\n                        )\n                      : fieldValue === checkboxRef.value),\n                )\n              : fieldReference.refs[0] &&\n                (fieldReference.refs[0].checked = !!fieldValue);\n          } else {\n            fieldReference.refs.forEach(\n              (radioRef: HTMLInputElement) =>\n                (radioRef.checked = radioRef.value === fieldValue),\n            );\n          }\n        } else if (isFileInput(fieldReference.ref)) {\n          fieldReference.ref.value = '';\n        } else {\n          fieldReference.ref.value = fieldValue;\n\n          if (!fieldReference.ref.type) {\n            _subjects.watch.next({\n              name,\n            });\n          }\n        }\n      }\n    }\n\n    (options.shouldDirty || options.shouldTouch) &&\n      updateTouchAndDirty(\n        name,\n        fieldValue,\n        options.shouldTouch,\n        options.shouldDirty,\n        true,\n      );\n\n    options.shouldValidate && trigger(name as Path<TFieldValues>);\n  };\n\n  const setValues = <\n    T extends InternalFieldName,\n    K extends SetFieldValue<TFieldValues>,\n    U extends SetValueConfig,\n  >(\n    name: T,\n    value: K,\n    options: U,\n  ) => {\n    for (const fieldKey in value) {\n      const fieldValue = value[fieldKey];\n      const fieldName = `${name}.${fieldKey}`;\n      const field = get(_fields, fieldName);\n\n      (_names.array.has(name) ||\n        !isPrimitive(fieldValue) ||\n        (field && !field._f)) &&\n      !isDateObject(fieldValue)\n        ? setValues(fieldName, fieldValue, options)\n        : setFieldValue(fieldName, fieldValue, options);\n    }\n  };\n\n  const setValue: UseFormSetValue<TFieldValues> = (\n    name,\n    value,\n    options = {},\n  ) => {\n    const field = get(_fields, name);\n    const isFieldArray = _names.array.has(name);\n    const cloneValue = cloneObject(value);\n\n    set(_formValues, name, cloneValue);\n\n    if (isFieldArray) {\n      _subjects.array.next({\n        name,\n        values: _formValues,\n      });\n\n      if (\n        (_proxyFormState.isDirty || _proxyFormState.dirtyFields) &&\n        options.shouldDirty\n      ) {\n        _subjects.state.next({\n          name,\n          dirtyFields: getDirtyFields(_defaultValues, _formValues),\n          isDirty: _getDirty(name, cloneValue),\n        });\n      }\n    } else {\n      field && !field._f && !isNullOrUndefined(cloneValue)\n        ? setValues(name, cloneValue, options)\n        : setFieldValue(name, cloneValue, options);\n    }\n\n    isWatched(name, _names) && _subjects.state.next({});\n    _subjects.watch.next({\n      name,\n    });\n    !_stateFlags.mount && flushRootRender();\n  };\n\n  const onChange: ChangeHandler = async (event) => {\n    const target = event.target;\n    let name = target.name;\n    const field: Field = get(_fields, name);\n    const getCurrentFieldValue = () =>\n      target.type ? getFieldValue(field._f) : getEventValue(event);\n\n    if (field) {\n      let error;\n      let isValid;\n      const fieldValue = getCurrentFieldValue();\n      const isBlurEvent =\n        event.type === EVENTS.BLUR || event.type === EVENTS.FOCUS_OUT;\n      const shouldSkipValidation =\n        (!hasValidation(field._f) &&\n          !_options.resolver &&\n          !get(_formState.errors, name) &&\n          !field._f.deps) ||\n        skipValidation(\n          isBlurEvent,\n          get(_formState.touchedFields, name),\n          _formState.isSubmitted,\n          validationModeAfterSubmit,\n          validationModeBeforeSubmit,\n        );\n      const watched = isWatched(name, _names, isBlurEvent);\n\n      set(_formValues, name, fieldValue);\n\n      if (isBlurEvent) {\n        field._f.onBlur && field._f.onBlur(event);\n        delayErrorCallback && delayErrorCallback(0);\n      } else if (field._f.onChange) {\n        field._f.onChange(event);\n      }\n\n      const fieldState = updateTouchAndDirty(\n        name,\n        fieldValue,\n        isBlurEvent,\n        false,\n      );\n\n      const shouldRender = !isEmptyObject(fieldState) || watched;\n\n      !isBlurEvent &&\n        _subjects.watch.next({\n          name,\n          type: event.type,\n        });\n\n      if (shouldSkipValidation) {\n        _proxyFormState.isValid && _updateValid();\n\n        return (\n          shouldRender &&\n          _subjects.state.next({ name, ...(watched ? {} : fieldState) })\n        );\n      }\n\n      !isBlurEvent && watched && _subjects.state.next({});\n\n      _updateIsValidating(true);\n\n      if (_options.resolver) {\n        const { errors } = await _executeSchema([name]);\n        const previousErrorLookupResult = schemaErrorLookup(\n          _formState.errors,\n          _fields,\n          name,\n        );\n        const errorLookupResult = schemaErrorLookup(\n          errors,\n          _fields,\n          previousErrorLookupResult.name || name,\n        );\n\n        error = errorLookupResult.error;\n        name = errorLookupResult.name;\n\n        isValid = isEmptyObject(errors);\n      } else {\n        error = (\n          await validateField(\n            field,\n            _formValues,\n            shouldDisplayAllAssociatedErrors,\n            _options.shouldUseNativeValidation,\n          )\n        )[name];\n\n        if (error) {\n          isValid = false;\n        } else if (_proxyFormState.isValid) {\n          isValid = await executeBuiltInValidation(_fields, true);\n        }\n      }\n\n      field._f.deps &&\n        trigger(\n          field._f.deps as FieldPath<TFieldValues> | FieldPath<TFieldValues>[],\n        );\n      shouldRenderByError(name, isValid, error, fieldState);\n    }\n  };\n\n  const trigger: UseFormTrigger<TFieldValues> = async (name, options = {}) => {\n    let isValid;\n    let validationResult;\n    const fieldNames = convertToArrayPayload(name) as InternalFieldName[];\n\n    _updateIsValidating(true);\n\n    if (_options.resolver) {\n      const errors = await executeSchemaAndUpdateState(\n        isUndefined(name) ? name : fieldNames,\n      );\n\n      isValid = isEmptyObject(errors);\n      validationResult = name\n        ? !fieldNames.some((name) => get(errors, name))\n        : isValid;\n    } else if (name) {\n      validationResult = (\n        await Promise.all(\n          fieldNames.map(async (fieldName) => {\n            const field = get(_fields, fieldName);\n            return await executeBuiltInValidation(\n              field && field._f ? { [fieldName]: field } : field,\n            );\n          }),\n        )\n      ).every(Boolean);\n      !(!validationResult && !_formState.isValid) && _updateValid();\n    } else {\n      validationResult = isValid = await executeBuiltInValidation(_fields);\n    }\n\n    _subjects.state.next({\n      ...(!isString(name) ||\n      (_proxyFormState.isValid && isValid !== _formState.isValid)\n        ? {}\n        : { name }),\n      ...(_options.resolver || !name ? { isValid } : {}),\n      errors: _formState.errors,\n      isValidating: false,\n    });\n\n    options.shouldFocus &&\n      !validationResult &&\n      focusFieldBy(\n        _fields,\n        (key) => key && get(_formState.errors, key),\n        name ? fieldNames : _names.mount,\n      );\n\n    return validationResult;\n  };\n\n  const getValues: UseFormGetValues<TFieldValues> = (\n    fieldNames?:\n      | FieldPath<TFieldValues>\n      | ReadonlyArray<FieldPath<TFieldValues>>,\n  ) => {\n    const values = {\n      ..._defaultValues,\n      ...(_stateFlags.mount ? _formValues : {}),\n    };\n\n    return isUndefined(fieldNames)\n      ? values\n      : isString(fieldNames)\n      ? get(values, fieldNames)\n      : fieldNames.map((name) => get(values, name));\n  };\n\n  const getFieldState: UseFormGetFieldState<TFieldValues> = (\n    name,\n    formState,\n  ) => ({\n    invalid: !!get((formState || _formState).errors, name),\n    isDirty: !!get((formState || _formState).dirtyFields, name),\n    isTouched: !!get((formState || _formState).touchedFields, name),\n    error: get((formState || _formState).errors, name),\n  });\n\n  const clearErrors: UseFormClearErrors<TFieldValues> = (name) => {\n    name &&\n      convertToArrayPayload(name).forEach((inputName) =>\n        unset(_formState.errors, inputName),\n      );\n\n    _subjects.state.next({\n      errors: name ? _formState.errors : {},\n    });\n  };\n\n  const setError: UseFormSetError<TFieldValues> = (name, error, options) => {\n    const ref = (get(_fields, name, { _f: {} })._f || {}).ref;\n\n    set(_formState.errors, name, {\n      ...error,\n      ref,\n    });\n\n    _subjects.state.next({\n      name,\n      errors: _formState.errors,\n      isValid: false,\n    });\n\n    options && options.shouldFocus && ref && ref.focus && ref.focus();\n  };\n\n  const watch: UseFormWatch<TFieldValues> = (\n    name?:\n      | FieldPath<TFieldValues>\n      | ReadonlyArray<FieldPath<TFieldValues>>\n      | WatchObserver<TFieldValues>,\n    defaultValue?: DeepPartial<TFieldValues>,\n  ) =>\n    isFunction(name)\n      ? _subjects.watch.subscribe({\n          next: (payload) =>\n            name(\n              _getWatch(undefined, defaultValue),\n              payload as {\n                name?: FieldPath<TFieldValues>;\n                type?: EventType;\n                value?: unknown;\n              },\n            ),\n        })\n      : _getWatch(\n          name as InternalFieldName | InternalFieldName[],\n          defaultValue,\n          true,\n        );\n\n  const unregister: UseFormUnregister<TFieldValues> = (name, options = {}) => {\n    for (const fieldName of name ? convertToArrayPayload(name) : _names.mount) {\n      _names.mount.delete(fieldName);\n      _names.array.delete(fieldName);\n\n      if (get(_fields, fieldName)) {\n        if (!options.keepValue) {\n          unset(_fields, fieldName);\n          unset(_formValues, fieldName);\n        }\n\n        !options.keepError && unset(_formState.errors, fieldName);\n        !options.keepDirty && unset(_formState.dirtyFields, fieldName);\n        !options.keepTouched && unset(_formState.touchedFields, fieldName);\n        !_options.shouldUnregister &&\n          !options.keepDefaultValue &&\n          unset(_defaultValues, fieldName);\n      }\n    }\n\n    _subjects.watch.next({});\n\n    _subjects.state.next({\n      ..._formState,\n      ...(!options.keepDirty ? {} : { isDirty: _getDirty() }),\n    });\n\n    !options.keepIsValid && _updateValid();\n  };\n\n  const register: UseFormRegister<TFieldValues> = (name, options = {}) => {\n    let field = get(_fields, name);\n    const disabledIsDefined = isBoolean(options.disabled);\n\n    set(_fields, name, {\n      ...(field || {}),\n      _f: {\n        ...(field && field._f ? field._f : { ref: { name } }),\n        name,\n        mount: true,\n        ...options,\n      },\n    });\n    _names.mount.add(name);\n\n    field\n      ? disabledIsDefined &&\n        set(\n          _formValues,\n          name,\n          options.disabled\n            ? undefined\n            : get(_formValues, name, getFieldValue(field._f)),\n        )\n      : updateValidAndValue(name, true, options.value);\n\n    return {\n      ...(disabledIsDefined ? { disabled: options.disabled } : {}),\n      ...(_options.shouldUseNativeValidation\n        ? {\n            required: !!options.required,\n            min: getRuleValue(options.min),\n            max: getRuleValue(options.max),\n            minLength: getRuleValue<number>(options.minLength) as number,\n            maxLength: getRuleValue(options.maxLength) as number,\n            pattern: getRuleValue(options.pattern) as string,\n          }\n        : {}),\n      name,\n      onChange,\n      onBlur: onChange,\n      ref: (ref: HTMLInputElement | null): void => {\n        if (ref) {\n          register(name, options);\n          field = get(_fields, name);\n\n          const fieldRef = isUndefined(ref.value)\n            ? ref.querySelectorAll\n              ? (ref.querySelectorAll('input,select,textarea')[0] as Ref) || ref\n              : ref\n            : ref;\n          const radioOrCheckbox = isRadioOrCheckbox(fieldRef);\n          const refs = field._f.refs || [];\n\n          if (\n            radioOrCheckbox\n              ? refs.find((option: Ref) => option === fieldRef)\n              : fieldRef === field._f.ref\n          ) {\n            return;\n          }\n\n          set(_fields, name, {\n            _f: {\n              ...field._f,\n              ...(radioOrCheckbox\n                ? {\n                    refs: [\n                      ...refs.filter(live),\n                      fieldRef,\n                      ...(Array.isArray(get(_defaultValues, name)) ? [{}] : []),\n                    ],\n                    ref: { type: fieldRef.type, name },\n                  }\n                : { ref: fieldRef }),\n            },\n          });\n\n          updateValidAndValue(name, false, undefined, fieldRef);\n        } else {\n          field = get(_fields, name, {});\n\n          if (field._f) {\n            field._f.mount = false;\n          }\n\n          (_options.shouldUnregister || options.shouldUnregister) &&\n            !(isNameInFieldArray(_names.array, name) && _stateFlags.action) &&\n            _names.unMount.add(name);\n        }\n      },\n    };\n  };\n\n  const _focusError = () =>\n    _options.shouldFocusError &&\n    focusFieldBy(\n      _fields,\n      (key) => key && get(_formState.errors, key),\n      _names.mount,\n    );\n\n  const handleSubmit: UseFormHandleSubmit<TFieldValues> =\n    (onValid, onInvalid) => async (e) => {\n      if (e) {\n        e.preventDefault && e.preventDefault();\n        e.persist && e.persist();\n      }\n      let fieldValues = cloneObject(_formValues);\n\n      _subjects.state.next({\n        isSubmitting: true,\n      });\n\n      if (_options.resolver) {\n        const { errors, values } = await _executeSchema();\n        _formState.errors = errors;\n        fieldValues = values;\n      } else {\n        await executeBuiltInValidation(_fields);\n      }\n\n      unset(_formState.errors, 'root');\n\n      if (isEmptyObject(_formState.errors)) {\n        _subjects.state.next({\n          errors: {},\n        });\n        await onValid(fieldValues as TFieldValues, e);\n      } else {\n        if (onInvalid) {\n          await onInvalid({ ..._formState.errors }, e);\n        }\n        _focusError();\n      }\n\n      _subjects.state.next({\n        isSubmitted: true,\n        isSubmitting: false,\n        isSubmitSuccessful: isEmptyObject(_formState.errors),\n        submitCount: _formState.submitCount + 1,\n        errors: _formState.errors,\n      });\n    };\n\n  const resetField: UseFormResetField<TFieldValues> = (name, options = {}) => {\n    if (get(_fields, name)) {\n      if (isUndefined(options.defaultValue)) {\n        setValue(name, get(_defaultValues, name));\n      } else {\n        setValue(name, options.defaultValue);\n        set(_defaultValues, name, options.defaultValue);\n      }\n\n      if (!options.keepTouched) {\n        unset(_formState.touchedFields, name);\n      }\n\n      if (!options.keepDirty) {\n        unset(_formState.dirtyFields, name);\n        _formState.isDirty = options.defaultValue\n          ? _getDirty(name, get(_defaultValues, name))\n          : _getDirty();\n      }\n\n      if (!options.keepError) {\n        unset(_formState.errors, name);\n        _proxyFormState.isValid && _updateValid();\n      }\n\n      _subjects.state.next({ ..._formState });\n    }\n  };\n\n  const _reset: UseFormReset<TFieldValues> = (\n    formValues,\n    keepStateOptions = {},\n  ) => {\n    const updatedValues = formValues || _defaultValues;\n    const cloneUpdatedValues = cloneObject(updatedValues);\n    const values =\n      formValues && !isEmptyObject(formValues)\n        ? cloneUpdatedValues\n        : _defaultValues;\n\n    if (!keepStateOptions.keepDefaultValues) {\n      _defaultValues = updatedValues;\n    }\n\n    if (!keepStateOptions.keepValues) {\n      if (keepStateOptions.keepDirtyValues || shouldCaptureDirtyFields) {\n        for (const fieldName of _names.mount) {\n          get(_formState.dirtyFields, fieldName)\n            ? set(values, fieldName, get(_formValues, fieldName))\n            : setValue(\n                fieldName as FieldPath<TFieldValues>,\n                get(values, fieldName),\n              );\n        }\n      } else {\n        if (isWeb && isUndefined(formValues)) {\n          for (const name of _names.mount) {\n            const field = get(_fields, name);\n            if (field && field._f) {\n              const fieldReference = Array.isArray(field._f.refs)\n                ? field._f.refs[0]\n                : field._f.ref;\n\n              if (isHTMLElement(fieldReference)) {\n                const form = fieldReference.closest('form');\n                if (form) {\n                  form.reset();\n                  break;\n                }\n              }\n            }\n          }\n        }\n\n        _fields = {};\n      }\n\n      _formValues = props.shouldUnregister\n        ? keepStateOptions.keepDefaultValues\n          ? cloneObject(_defaultValues)\n          : {}\n        : cloneUpdatedValues;\n\n      _subjects.array.next({\n        values,\n      });\n\n      _subjects.watch.next({\n        values,\n      });\n    }\n\n    _names = {\n      mount: new Set(),\n      unMount: new Set(),\n      array: new Set(),\n      watch: new Set(),\n      watchAll: false,\n      focus: '',\n    };\n\n    !_stateFlags.mount && flushRootRender();\n\n    _stateFlags.mount =\n      !_proxyFormState.isValid || !!keepStateOptions.keepIsValid;\n\n    _stateFlags.watch = !!props.shouldUnregister;\n\n    _subjects.state.next({\n      submitCount: keepStateOptions.keepSubmitCount\n        ? _formState.submitCount\n        : 0,\n      isDirty:\n        keepStateOptions.keepDirty || keepStateOptions.keepDirtyValues\n          ? _formState.isDirty\n          : !!(\n              keepStateOptions.keepDefaultValues &&\n              !deepEqual(formValues, _defaultValues)\n            ),\n      isSubmitted: keepStateOptions.keepIsSubmitted\n        ? _formState.isSubmitted\n        : false,\n      dirtyFields:\n        keepStateOptions.keepDirty || keepStateOptions.keepDirtyValues\n          ? _formState.dirtyFields\n          : keepStateOptions.keepDefaultValues && formValues\n          ? getDirtyFields(_defaultValues, formValues)\n          : {},\n      touchedFields: keepStateOptions.keepTouched\n        ? _formState.touchedFields\n        : {},\n      errors: keepStateOptions.keepErrors ? _formState.errors : {},\n      isSubmitting: false,\n      isSubmitSuccessful: false,\n    });\n  };\n\n  const reset: UseFormReset<TFieldValues> = (formValues, keepStateOptions) =>\n    _reset(\n      isFunction(formValues)\n        ? formValues(_formValues as TFieldValues)\n        : formValues,\n      keepStateOptions,\n    );\n\n  const setFocus: UseFormSetFocus<TFieldValues> = (name, options = {}) => {\n    const field = get(_fields, name);\n    const fieldReference = field && field._f;\n\n    if (fieldReference) {\n      const fieldRef = fieldReference.refs\n        ? fieldReference.refs[0]\n        : fieldReference.ref;\n\n      if (fieldRef.focus) {\n        fieldRef.focus();\n        options.shouldSelect && fieldRef.select();\n      }\n    }\n  };\n\n  const _updateFormState = (\n    updatedFormState: Partial<FormState<TFieldValues>>,\n  ) => {\n    _formState = {\n      ..._formState,\n      ...updatedFormState,\n    };\n  };\n\n  if (isFunction(_options.defaultValues)) {\n    _options.defaultValues().then((values) => {\n      reset(values, _options.resetOptions);\n      _subjects.state.next({\n        isLoading: false,\n      });\n    });\n  }\n\n  return {\n    control: {\n      register,\n      unregister,\n      getFieldState,\n      _executeSchema,\n      _focusError,\n      _getWatch,\n      _getDirty,\n      _updateValid,\n      _removeUnmounted,\n      _updateFieldArray,\n      _getFieldArray,\n      _reset,\n      _updateFormState,\n      _subjects,\n      _proxyFormState,\n      get _fields() {\n        return _fields;\n      },\n      get _formValues() {\n        return _formValues;\n      },\n      get _stateFlags() {\n        return _stateFlags;\n      },\n      set _stateFlags(value) {\n        _stateFlags = value;\n      },\n      get _defaultValues() {\n        return _defaultValues;\n      },\n      get _names() {\n        return _names;\n      },\n      set _names(value) {\n        _names = value;\n      },\n      get _formState() {\n        return _formState;\n      },\n      set _formState(value) {\n        _formState = value;\n      },\n      get _options() {\n        return _options;\n      },\n      set _options(value) {\n        _options = {\n          ..._options,\n          ...value,\n        };\n      },\n    },\n    trigger,\n    register,\n    handleSubmit,\n    watch,\n    setValue,\n    getValues,\n    reset,\n    resetField,\n    clearErrors,\n    unregister,\n    setError,\n    setFocus,\n    getFieldState,\n  };\n}\n", "import React from 'react';\n\nimport { createFormControl } from './logic/createFormControl';\nimport getProxyFormState from './logic/getProxyFormState';\nimport shouldRenderFormState from './logic/shouldRenderFormState';\nimport deepEqual from './utils/deepEqual';\nimport isFunction from './utils/isFunction';\nimport {\n  FieldValues,\n  FormState,\n  InternalFieldName,\n  UseFormProps,\n  UseFormReturn,\n} from './types';\nimport { useSubscribe } from './useSubscribe';\n\n/**\n * Custom hook to manage the entire form.\n *\n * @remarks\n * [API](https://react-hook-form.com/api/useform) • [Demo](https://codesandbox.io/s/react-hook-form-get-started-ts-5ksmm) • [Video](https://www.youtube.com/watch?v=RkXv4AXXC_4)\n *\n * @param props - form configuration and validation parameters.\n *\n * @returns methods - individual functions to manage the form state. {@link UseFormReturn}\n *\n * @example\n * ```tsx\n * function App() {\n *   const { register, handleSubmit, watch, formState: { errors } } = useForm();\n *   const onSubmit = data => console.log(data);\n *\n *   console.log(watch(\"example\"));\n *\n *   return (\n *     <form onSubmit={handleSubmit(onSubmit)}>\n *       <input defaultValue=\"test\" {...register(\"example\")} />\n *       <input {...register(\"exampleRequired\", { required: true })} />\n *       {errors.exampleRequired && <span>This field is required</span>}\n *       <input type=\"submit\" />\n *     </form>\n *   );\n * }\n * ```\n */\nexport function useForm<\n  TFieldValues extends FieldValues = FieldValues,\n  TContext = any,\n>(\n  props: UseFormProps<TFieldValues, TContext> = {},\n): UseFormReturn<TFieldValues, TContext> {\n  const _formControl = React.useRef<\n    UseFormReturn<TFieldValues, TContext> | undefined\n  >();\n  const [formState, updateFormState] = React.useState<FormState<TFieldValues>>({\n    isDirty: false,\n    isValidating: false,\n    isLoading: true,\n    isSubmitted: false,\n    isSubmitting: false,\n    isSubmitSuccessful: false,\n    isValid: false,\n    submitCount: 0,\n    dirtyFields: {},\n    touchedFields: {},\n    errors: {},\n    defaultValues: isFunction(props.defaultValues)\n      ? undefined\n      : props.defaultValues,\n  });\n\n  if (!_formControl.current) {\n    _formControl.current = {\n      ...createFormControl(props, () =>\n        updateFormState((formState) => ({ ...formState })),\n      ),\n      formState,\n    };\n  }\n\n  const control = _formControl.current.control;\n  control._options = props;\n\n  useSubscribe({\n    subject: control._subjects.state,\n    next: (\n      value: Partial<FormState<TFieldValues>> & { name?: InternalFieldName },\n    ) => {\n      if (\n        shouldRenderFormState(\n          value,\n          control._proxyFormState,\n          control._updateFormState,\n          true,\n        )\n      ) {\n        updateFormState({ ...control._formState });\n      }\n    },\n  });\n\n  React.useEffect(() => {\n    if (!control._stateFlags.mount) {\n      control._updateValid();\n      control._stateFlags.mount = true;\n    }\n\n    if (control._stateFlags.watch) {\n      control._stateFlags.watch = false;\n      control._subjects.state.next({});\n    }\n\n    control._removeUnmounted();\n  });\n\n  React.useEffect(() => {\n    if (props.values && !deepEqual(props.values, control._defaultValues)) {\n      control._reset(props.values, control._options.resetOptions);\n    }\n  }, [props.values, control]);\n\n  React.useEffect(() => {\n    formState.submitCount && control._focusError();\n  }, [control, formState.submitCount]);\n\n  _formControl.current.formState = getProxyFormState(formState, control);\n\n  return _formControl.current;\n}\n", "import * as React from 'react';\nimport { NavLink } from 'react-router-dom';\n\nexport interface TabElement {\n  label: string,\n  path: string\n}\n\ninterface Props {\n  tabElements: TabElement[]\n}\n\nconst Tabs = ({ tabElements }: Props) => (\n  <div className=\"flex flex-row justify-start w-full px-2 sm:px-3 md:px-7 lg:px-8 xl:px-12 bg-background-white border-b border-stroke-grey-100 overflow-x-auto no-scrollbar flex-shrink-0\">\n    {tabElements.map((element) => (\n      <NavLink\n        to={element.path}\n        key={element.label}\n        className={({ isActive }) => `flex items-center h-9 text-title-semibold mr-4 md:mr-6 lg:mr-8 last-of-type:m-0 border-b-2 hover:text-main ${isActive ? 'text-main border-main' : 'text-typography-dark border-background-white'}`}\n        role=\"button\"\n        end\n      >\n        {element.label}\n      </NavLink>\n    ))}\n  </div>\n);\n\nexport default Tabs;\n", "import { useNavigate } from 'react-router-dom';\nimport { useCallback } from 'react';\nimport { Permission } from '../../utils/generated/permissionsTypes';\nimport { useGetCompanySettingsQuery } from '../api/appApi';\nimport { RoleType } from '../api/modules/access/accessTypes';\nimport { getAccessTokenPayload } from '../../utils/accessToken';\n\nexport type ModuleName = 'meters' | 'resolutions' | 'settlements' | 'payments' | 'tickets' | 'documents' | 'announcements' | 'notifications' | 'portal_pro';\n\nexport const usePermissions = () => {\n  const navigate = useNavigate();\n  const { data: companySettings, isSuccess: isCompanySettingsFetchSuccess } = useGetCompanySettingsQuery();\n\n  const hasPermission = (permission: Permission): boolean => {\n    const payload = getAccessTokenPayload();\n    return (payload?.permissions || []).includes(permission);\n  };\n\n  const hasAnyPermission = (permissions: Permission[]): boolean => {\n    const payload = getAccessTokenPayload();\n    return !!permissions.find((permission) => (payload?.permissions || []).includes(permission));\n  };\n\n  const hasAllPermissions = (permissions: Permission[]): boolean => {\n    const payload = getAccessTokenPayload();\n    return !permissions.find((permission) => !(payload?.permissions || []).includes(permission));\n  };\n\n  const hasRoleType = (roleType: RoleType): boolean => {\n    const payload = getAccessTokenPayload();\n    return (payload?.role?.split('|') || []).includes(roleType);\n  };\n\n  const isModuleEnabled = useCallback((module: ModuleName) => {\n    if (isCompanySettingsFetchSuccess && companySettings) {\n      switch (module) {\n        case 'resolutions':\n          return !!companySettings?.resolutionsModuleEnabled;\n        case 'settlements':\n          return !!companySettings?.settlementsModuleEnabled;\n        case 'tickets':\n          return !!companySettings?.ticketsModuleEnabled;\n        case 'meters':\n          return !!companySettings?.metersModuleEnabled;\n        case 'payments':\n          return !!companySettings?.paymentsModuleEnabled;\n        case 'documents':\n          return !!companySettings?.documentsModuleEnabled;\n        case 'announcements':\n          return !!companySettings?.announcementsModuleEnabled;\n        case 'notifications':\n          return !!companySettings?.notificationsModuleEnabled;\n        case 'portal_pro':\n          return !!companySettings?.portalProModuleEnabled;\n        default:\n          return false;\n      }\n    }\n    return false;\n  }, [companySettings]);\n\n  const isTenantDataEnabled = useCallback(\n    (): boolean => isCompanySettingsFetchSuccess && !!companySettings && !companySettings.tenantlessMode,\n    [companySettings, isCompanySettingsFetchSuccess],\n  );\n\n  const navigateToFirstPermittedEndpoint = useCallback((): void => {\n    const payload = getAccessTokenPayload();\n    const roles = payload?.role?.split('|') || [];\n    if (roles.includes('admin')) {\n      if (isCompanySettingsFetchSuccess && companySettings) {\n        navigate(companySettings?.documentsModuleEnabled || companySettings?.ticketsModuleEnabled ? '/parametry/statusy' : '/uzytkownicy');\n      }\n    } else if (roles.includes('tenant') || roles.includes('worker')) {\n      navigate('/');\n    } else {\n      navigate('/profil');\n    }\n  }, [companySettings, isCompanySettingsFetchSuccess, navigate]);\n\n  const checkRoleType = useCallback((roleType: RoleType): void => {\n    const payload = getAccessTokenPayload();\n    if (payload && !hasRoleType(roleType)) {\n      navigateToFirstPermittedEndpoint();\n    }\n  }, []);\n\n  const checkPermission = useCallback((permission: Permission): void => {\n    const payload = getAccessTokenPayload();\n    if (payload && !hasPermission(permission)) {\n      navigateToFirstPermittedEndpoint();\n    }\n  }, []);\n\n  const checkModuleEnabled = useCallback((module: ModuleName): void => {\n    if (isCompanySettingsFetchSuccess && !isModuleEnabled(module)) {\n      navigateToFirstPermittedEndpoint();\n    }\n  }, [companySettings]);\n\n  const checkTenantDataEnabled = useCallback((): void => {\n    if (isCompanySettingsFetchSuccess && !isTenantDataEnabled()) {\n      navigateToFirstPermittedEndpoint();\n    }\n  }, [isCompanySettingsFetchSuccess, isTenantDataEnabled, navigateToFirstPermittedEndpoint]);\n\n  return {\n    hasPermission,\n    hasAnyPermission,\n    hasAllPermissions,\n    hasRoleType,\n    navigateToFirstPermittedEndpoint,\n    checkRoleType,\n    checkPermission,\n    isModuleEnabled,\n    checkModuleEnabled,\n    isTenantDataEnabled,\n    checkTenantDataEnabled,\n  };\n};\n", "import { createApi } from '@reduxjs/toolkit/dist/query/react';\nimport { EndpointBuilder } from '@reduxjs/toolkit/dist/query/endpointDefinitions';\nimport {\n  ApiBaseQuery, ApiTagTypes, baseQuery, tagTypes,\n} from './baseQuery';\nimport { accessQueries } from './modules/access/accessQueries';\nimport { ticketsQueries } from './modules/tickets/ticketsQueries';\nimport { metersQueries } from './modules/meters/metersQueries';\nimport { resolutionsQueries } from './modules/resolutions/resolutionsQueries';\nimport { userQueries } from './modules/user/userQueries';\nimport { announcementsQueries } from './modules/announcements/announcementsQueries';\nimport { residencyQueries } from './modules/residency/residencyQueries';\nimport { tenantsQueries } from './modules/tenants/tenantsQueries';\nimport { venuesQueries } from './modules/venues/venuesQueries';\nimport { homeownerAssociationsQueries } from './modules/homeownerAssociations/homeownerAssociationsQueries';\nimport { settlementsQueries } from './modules/settlements/settlementsQueries';\nimport { employeesQueries } from './modules/employees/employeesQueries';\nimport { tasksQueries } from './modules/tasks/tasksQueries';\nimport { companyQueries } from './modules/company/companyQueries';\nimport { documentsQueries } from './modules/documents/documentsQueries';\nimport { notificationsQueries } from './modules/notifications/notificationsQueries';\n\nexport const appApi = createApi({\n  reducerPath: 'api',\n  baseQuery,\n  tagTypes,\n  endpoints: (builder: EndpointBuilder<ApiBaseQuery, ApiTagTypes, 'api'>) => ({\n    ...userQueries(builder),\n    ...accessQueries(builder),\n    ...metersQueries(builder),\n    ...ticketsQueries(builder),\n    ...resolutionsQueries(builder),\n    ...announcementsQueries(builder),\n    ...residencyQueries(builder),\n    ...tenantsQueries(builder),\n    ...venuesQueries(builder),\n    ...homeownerAssociationsQueries(builder),\n    ...settlementsQueries(builder),\n    ...employeesQueries(builder),\n    ...tasksQueries(builder),\n    ...companyQueries(builder),\n    ...documentsQueries(builder),\n    ...notificationsQueries(builder),\n  }),\n});\n\nexport const {\n  useGetFullUserAccountQuery,\n  useGetAccessTokenQuery,\n  useGetProfileQuery,\n  usePostProfileMutation,\n  usePostChangePasswordMutation,\n  usePutChangeUserPasswordMutation,\n  useLogoutMutation,\n  useGetActivityLogQuery,\n  useGetUsersAccountsQuery,\n  useGetUserAccountQuery,\n  useGetUserJournalsQuery,\n  usePostUserAccountMutation,\n  usePutUserAccountMutation,\n  useGetRolesForUserQuery,\n  useChangeUserActivityStatusMutation,\n  useGetAccessGroupsQuery,\n  usePatchColorPaletteMutation,\n  usePatchNotificationSettingMutation,\n  useGetAccountsQuery,\n  useGetAccountQuery,\n  usePostAssignRoleMutation,\n  usePostAssignPermissionsMutation,\n  useGetRolesQuery,\n  usePostChangeRoleMutation,\n  usePostCreateRoleMutation,\n  useDeleteRoleMutation,\n\n  useGetMetersQuery,\n  usePostMeasurementsMutation,\n  useGetMetersVenuesListQuery,\n\n  useGetTicketsQuery,\n  useGetTicketQuery,\n  usePostTicketMutation,\n  usePostTicketCommentMutation,\n  useGetSelectedTicketsColumnsQuery,\n  usePostSelectedTicketsColumnsMutation,\n  usePostChangeTicketMutation,\n  useGetTicketCategoriesQuery,\n  usePostTicketCategoryMutation,\n  usePatchTicketCategoryMutation,\n  useDeleteTicketCategoryMutation,\n  useGetTicketStatusesQuery,\n  useGetFullTicketStatusesQuery,\n  usePutStatusMutation,\n  usePostTaskForTicketMutation,\n\n  useGetTasksQuery,\n  useGetTaskQuery,\n  useGetSelectedTasksColumnsQuery,\n  usePostSelectedTasksColumnsMutation,\n  useGetTaskCategoriesQuery,\n  usePostTaskCommentMutation,\n  usePutTaskCommissionsMutation,\n  usePostTaskCommissionMutation,\n  useGetPortalProServicesQuery,\n  usePostChangeTaskMutation,\n  usePostTaskCategoryMutation,\n  usePatchTaskCategoryMutation,\n  useDeleteTaskCategoryMutation,\n  useGetTaskStatusesQuery,\n  useGetFullTaskStatusesQuery,\n\n  useGetDocumentsQuery,\n  useGetKsefInvoicesQuery,\n  useGetKsefInvoiceQuery,\n  useGetDocumentQuery,\n  usePostDocumentMutation,\n  usePostChangeDocumentMutation,\n  usePostChangeKsefInvoiceMutation,\n  usePostRevokeDocumentMutation,\n  useGetDocumentsCategoriesQuery,\n  useGetDocumentStatusesQuery,\n  useGetFullDocumentStatusesQuery,\n  useGetInvoiceStatusesQuery,\n  useGetFullInvoiceStatusesQuery,\n  usePutInvoiceStatusMutation,\n  usePostDocumentCommentMutation,\n  usePostKsefInvoiceCommentMutation,\n  useGetSelectedDocumentsColumnsQuery,\n  usePostSelectedDocumentsColumnsMutation,\n  usePostTaskForDocumentMutation,\n  usePostDocumentCategoryMutation,\n  usePatchDocumentCategoryMutation,\n  useDeleteDocumentCategoryMutation,\n\n  useGetResolutionsQuery,\n  useGetResolutionQuery,\n  usePostContentAcceptedMutation,\n  usePostResolutionVoteValueMutation,\n  useGetResolutionVotingsListQuery,\n\n  useGetAnnouncementsQuery,\n  useGetAnnouncementQuery,\n  usePostAnnouncementMutation,\n  useChangeAnnouncementMutation,\n  usePostMarkReadAnnouncementMutation,\n  usePostArchiveAnnouncementMutation,\n  useGetAnnouncementsAuthorsQuery,\n  useGetAnnouncementRecipientsQuery,\n  useGetRecipientsForFilterQuery,\n\n  useGetResidencyQuery,\n  usePostResidencyUpdateMutation,\n\n  useGetTenantsQuery,\n\n  useGetVenuesQuery,\n  useGetVenueDetailsQuery,\n\n  useGetHomeownerAssociationsQuery,\n\n  useGetPaymentsQuery,\n  useGetPaymentsHistoryQuery,\n  useGetSettlementsBalanceQuery,\n  useGetSettlementsYearsQuery,\n  useGetSettlementsTitlesQuery,\n  useGetMonthsSettlementsBalanceQuery,\n  useGetTitleSettlementsBalanceQuery,\n  usePatchDocumentReadMutation,\n  usePostMakePaymentMutation,\n  useGetBMPaymentQuery,\n  useGetPaymentsBalanceQuery,\n  useGetSettlementsVenuesQuery,\n\n  useGetCompanySettingsQuery,\n  useGetCompanyNotificationSettingsQuery,\n  useGetCompanyDataQuery,\n  useGetCompanyTaxDataQuery,\n  usePutCompanyDetailsMutation,\n  usePutCompanyTaxDetailsMutation,\n  usePostCompanyAttachmentsMutation,\n  usePutColorPaletteMutation,\n  useGetMailServerConfigQuery,\n  usePutChangeMailServerConfigMutation,\n  usePostTestMailServerConfigMutation,\n  usePatchCompanyNotificationSettingMutation,\n  useGetEmployeesQuery,\n\n  useGetJournalsQuery,\n  useGetFullJournalsQuery,\n  useGetJournalQuery,\n  useChangeJournalMutation,\n  usePostJournalMutation,\n  useDeleteJournalMutation,\n  useGetFullKsefJournalsQuery,\n  useGetKsefJournalQuery,\n  useChangeKsefJournalMutation,\n\n  useGetNotificationsQuery,\n  usePostMarkReadNotificationMutation,\n  usePostMarkReadAllNotificationMutation,\n  useDeleteNotificationMutation,\n} = appApi;\n", "import { fetchBaseQuery } from '@reduxjs/toolkit/dist/query/react';\n\nconst baseUrl = process.env.NODE_ENV === 'test' ? 'http://localhost/' : '/';\nconst getToken = () => {\n  const element = document.querySelector('[name=csrf-token]') as HTMLMetaElement;\n  return element?.content;\n};\nexport const baseQuery = fetchBaseQuery({\n  baseUrl,\n  prepareHeaders: (headers) => {\n    headers.set('X-CSRF-TOKEN', getToken());\n    return headers;\n  },\n});\n\nexport const tagTypes = [\n  'Meters', 'Profile', 'Tickets', 'Ticket', 'TicketComment',\n  'Resolutions', 'Resolution', 'UserAccess', 'UsersRoles',\n  'Account', 'Roles', 'Announcements', 'Announcement', 'AnnouncementRecipients',\n  'AnnouncementsRecipientsForFilter', 'AnnouncementsAuthors', 'ActivityLog',\n  'Residency', 'ColumnSettings', 'Tenants', 'Venues', 'HomeownerAssociations',\n  'SettlementsBalance', 'MonthSettlementsBalance', 'SettlementsTitleBalance',\n  'Payments', 'PaymentsHistory', 'PaymentsBalances', 'Employees', 'Tasks', 'Task',\n  'VotingsList', 'MetersVenuesList', 'Users', 'TicketsCategories', 'TasksCategories',\n  'TicketsStatuses', 'TasksStatuses', 'Company', 'CompanyDetails', 'CompanyTaxDetails', 'DocumentsStatuses',\n  'InvoiceStatuses', 'Document', 'Documents', 'DocumentsCategories', 'Journals', 'Journal', 'KsefJournals', 'KsefJournal', 'KsefInvoices',\n  'MailServerConfig', 'ProPortalServices', 'Notification', 'Notifications', 'CompanyNotifications',\n] as const;\n\nexport type ApiBaseQuery = typeof baseQuery;\nexport type ApiTagTypes = typeof tagTypes[number];\n", "import {\n  ApiAccountResponse, ApiAccountsResponse, ApiRole, ApiRoles, Role, User, Users,\n} from './accessTypes';\n\nconst translateApiToRole = (apiRole: ApiRole): Role => ({\n  id: apiRole.id,\n  name: apiRole.name,\n  permissions: apiRole.permissions,\n  isDefault: apiRole.default,\n  roleType: apiRole.role_type,\n});\n\nexport const translateApiToRoles = (apiRoles: ApiRoles): Role[] => apiRoles.roles.map((role) => translateApiToRole(role));\n\nexport const translateApiToUser = (apiAccount: ApiAccountResponse): User => ({\n  id: apiAccount.account.id,\n  name: apiAccount.account.name,\n  permissions: apiAccount.account.permissions,\n  roles: apiAccount.account.roles.map((role) => translateApiToRole(role)),\n});\n\nexport const translateApiToUsers = (apiAccounts: ApiAccountsResponse): Users => ({\n  metadata: apiAccounts.metadata,\n  users: apiAccounts.accounts.map((apiAccount) => ({\n    id: apiAccount.id,\n    name: apiAccount.name,\n    permissions: apiAccount.permissions,\n    roles: apiAccount.roles.map((role) => translateApiToRole(role)),\n  })),\n});\n", "import { EndpointBuilder } from '@reduxjs/toolkit/dist/query/endpointDefinitions';\nimport {\n  ApiAccountResponse,\n  ApiAccountsResponse,\n  ApiRoles,\n  ApiPostAssignRole,\n  ApiPostChangeRole,\n  ApiPostCreateRole,\n  Role,\n  User, Users, AccountApiQueryParams,\n} from './accessTypes';\nimport { ApiBaseQuery, ApiTagTypes } from '../../baseQuery';\nimport { translateApiToRoles, translateApiToUser, translateApiToUsers } from './accessTranslator';\n\nexport const accessQueries = (builder: EndpointBuilder<ApiBaseQuery, ApiTagTypes, 'api'>) => ({\n  getAccounts: builder.query<Users, AccountApiQueryParams>({\n    query: (params) => `access/accounts/list?page=${params.page}${!!params.filters && `&roles_names[]=${params.filters.role}`}`,\n    providesTags: ['UsersRoles'],\n    transformResponse(baseQueryReturnValue: ApiAccountsResponse): Users {\n      return translateApiToUsers(baseQueryReturnValue);\n    },\n  }),\n  getAccount: builder.query<User, string>({\n    query: (accountId) => `access/accounts/${accountId}/show`,\n    transformResponse(baseQueryReturnValue: ApiAccountResponse): User {\n      return translateApiToUser(baseQueryReturnValue);\n    },\n    providesTags: ['Account'],\n  }),\n  postAssignRole: builder.mutation<any, ApiPostAssignRole>({\n    query: ({ id, payload }) => ({\n      url: `access/accounts/${id}/assign_roles`,\n      method: 'POST',\n      body: payload,\n    }),\n    invalidatesTags: ['UsersRoles', 'UserAccess', 'Account'],\n  }),\n  postAssignPermissions: builder.mutation<any, ApiPostChangeRole>({\n    query: ({ id, payload }) => ({\n      url: `/access/accounts/${id}/assign_permissions`,\n      method: 'POST',\n      body: payload,\n    }),\n    invalidatesTags: ['Account', 'UserAccess', 'UsersRoles', 'Users'],\n  }),\n\n  getRoles: builder.query<Role[], void>({\n    query: () => 'access/roles/list',\n    transformResponse(baseQueryReturnValue: ApiRoles): Promise<Role[]> | Role[] {\n      return translateApiToRoles(baseQueryReturnValue);\n    },\n    providesTags: ['Roles'],\n  }),\n\n  postCreateRole: builder.mutation<any, ApiPostCreateRole>({\n    query: (payload) => ({\n      url: '/access/roles/add',\n      method: 'POST',\n      body: payload,\n    }),\n    invalidatesTags: ['Roles'],\n  }),\n  postChangeRole: builder.mutation<any, ApiPostChangeRole>({\n    query: ({ id, payload }) => ({\n      url: `/access/roles/${id}/change`,\n      method: 'PUT',\n      body: payload,\n    }),\n    invalidatesTags: ['Account', 'UserAccess', 'UsersRoles', 'Roles'],\n  }),\n  deleteRole: builder.mutation<any, string>({\n    query: (id) => ({\n      url: `/access/roles/${id}/remove`,\n      method: 'DELETE',\n    }),\n    invalidatesTags: ['Roles'],\n  }),\n});\n", "import { EndpointBuilder } from '@reduxjs/toolkit/dist/query/endpointDefinitions';\nimport queryString from 'query-string';\nimport {\n  ApiColumnsSettings, ApiPostChangeTicketData, ApiPostColumnsSettings,\n  ApiPostTicket,\n  ApiPostTicketComment,\n  ApiTicketCategories,\n  ApiTicketStatuses,\n  ApiTicketResponse,\n  ApiTicketsResponse,\n  TicketCategory,\n  TicketStatus,\n  TicketColumnId,\n  Tickets,\n  TenantShowTicketData,\n  EmployeeShowTicketData, FullTicketStatus,\n} from './ticketsTypes';\nimport {\n  translateApiToTickets,\n  translateFullTicketStatus,\n  translateSingleTicket,\n  translateTicketStatus,\n} from './ticketsTranslator';\nimport {\n  ApiBaseQuery, ApiTagTypes,\n} from '../../baseQuery';\nimport { ApiPostTask } from '../tasks/tasksTypes';\n\nexport const ticketsQueries = (builder: EndpointBuilder<ApiBaseQuery, ApiTagTypes, 'api'>) => ({\n  getTickets: builder.query<Tickets, Record<string, string> | void>({\n    query: (params) => {\n      const stringifiedParams = params && queryString.stringify(params, { arrayFormat: 'bracket' });\n      return `tickets/list?${stringifiedParams}`;\n    },\n    transformResponse(baseQueryReturnValue: ApiTicketsResponse): Promise<Tickets> | Tickets {\n      return translateApiToTickets(baseQueryReturnValue);\n    },\n    providesTags: () => ['Tickets'],\n  }),\n  getTicket: builder.query<TenantShowTicketData | EmployeeShowTicketData, string | undefined>({\n    query: (ticketId) => `tickets/${ticketId}/show`,\n    transformResponse(baseQueryReturnValue: ApiTicketResponse):\n    Promise<TenantShowTicketData | EmployeeShowTicketData> | TenantShowTicketData | EmployeeShowTicketData {\n      return translateSingleTicket(baseQueryReturnValue);\n    },\n    providesTags: () => ['Ticket'],\n  }),\n  postTicket: builder.mutation<any, ApiPostTicket>({\n    query: ({ ticket }) => ({\n      url: '/tickets/add',\n      method: 'POST',\n      body: ticket,\n    }),\n    invalidatesTags: () => ['Tickets'],\n  }),\n  postTicketComment: builder.mutation<any, ApiPostTicketComment>({\n    query: ({ id, payload }) => ({\n      url: `/tickets/${id}/add_comment`,\n      method: 'POST',\n      body: payload,\n    }),\n    invalidatesTags: () => ['Ticket', 'Tickets'],\n  }),\n  getSelectedTicketsColumns: builder.query<TicketColumnId[], void>({\n    query: () => '/tickets/list/columns_settings',\n    transformResponse(baseQueryReturnValue: ApiColumnsSettings): TicketColumnId[] {\n      return baseQueryReturnValue.selected_columns;\n    },\n    providesTags: () => ['ColumnSettings'],\n  }),\n  postSelectedTicketsColumns: builder.mutation<any, ApiPostColumnsSettings>({\n    query: (body) => ({\n      url: '/tickets/list/change_columns_settings',\n      method: 'POST',\n      body,\n    }),\n    invalidatesTags: () => ['ColumnSettings', 'Tickets'],\n  }),\n  postTaskForTicket: builder.mutation<any, ApiPostTask>({\n    query: ({ id, task }) => ({\n      url: `/tickets/${id}/add_task`,\n      method: 'POST',\n      body: task,\n    }),\n    invalidatesTags: () => ['Tasks', 'Task', 'Ticket', 'ActivityLog'],\n  }),\n  postChangeTicket: builder.mutation<any, ApiPostChangeTicketData>({\n    query: (tickets) => ({\n      url: '/tickets/change',\n      method: 'POST',\n      body: tickets,\n    }),\n    invalidatesTags: () => ['Ticket', 'Tickets', 'ActivityLog'],\n  }),\n  getTicketCategories: builder.query<TicketCategory[], void>({\n    query: () => '/ticket_categories/list',\n    transformResponse(baseQueryReturnValue: ApiTicketCategories) {\n      return baseQueryReturnValue.ticket_categories;\n    },\n    providesTags: ['TicketsCategories'],\n  }),\n  postTicketCategory: builder.mutation<any, { name: string }>({\n    query: (body) => ({\n      url: '/ticket_categories/add',\n      method: 'POST',\n      body,\n    }),\n    invalidatesTags: ['TicketsCategories'],\n  }),\n  patchTicketCategory: builder.mutation<any, { name: string, id: string }>({\n    query: ({ id, name }) => ({\n      url: `/ticket_categories/${id}/change`,\n      method: 'PATCH',\n      body: { name },\n    }),\n    invalidatesTags: ['TicketsCategories'],\n  }),\n  deleteTicketCategory: builder.mutation<any, { id: string }>({\n    query: ({ id }) => ({\n      url: `/ticket_categories/${id}/remove`,\n      method: 'DELETE',\n    }),\n    invalidatesTags: ['TicketsCategories'],\n  }),\n  getTicketStatuses: builder.query<TicketStatus[], void>({\n    query: () => 'tickets/statuses/ticket/list',\n    transformResponse(baseQueryReturnValue: ApiTicketStatuses) {\n      return translateTicketStatus(baseQueryReturnValue).statuses;\n    },\n    providesTags: ['TicketsStatuses'],\n  }),\n  getFullTicketStatuses: builder.query<FullTicketStatus[], void>({\n    query: () => 'tickets/statuses/ticket/list',\n    transformResponse(baseQueryReturnValue: ApiTicketStatuses) {\n      return translateFullTicketStatus(baseQueryReturnValue);\n    },\n    providesTags: ['TicketsStatuses'],\n  }),\n  putStatus: builder.mutation<any, any>({\n    query: ({ id, ...body }) => ({\n      url: `tickets/statuses/${id}/change`,\n      method: 'PUT',\n      body,\n    }),\n    invalidatesTags: ['TicketsStatuses', 'TasksStatuses', 'DocumentsStatuses'],\n  }),\n});\n", "import {\n  ApiTask,\n  ApiTaskCommission,\n  ApiTaskComment,\n  ApiTasksResponse,\n  FullApiTask,\n  FullTask,\n  Task,\n  TaskComment,\n  TaskInputs,\n  Tasks,\n  TaskStatuses,\n  ApiTaskStatuses, FullTaskStatus,\n  TaskCommission,\n  ApiPortalProServiceResponse,\n  PortalProService,\n} from './tasksTypes';\nimport { CommentFormData } from '../../../components/CommentsList/CommentForm/CommentForm';\n\nexport const translateTask = (apiTask: ApiTask): Task => ({\n  id: apiTask.id,\n  status: apiTask.status,\n  createdAt: apiTask.created_at,\n  lastCommentAt: apiTask.last_comment_at,\n  taskNumber: apiTask.task_number,\n  title: apiTask.title,\n  venueAddress: apiTask.venue_address,\n  venueCode: apiTask.venue_code,\n  venueCity: apiTask.venue_city,\n  venuePostalCode: apiTask.venue_postal_code,\n  contactEmail: apiTask.contact_email,\n  contactPhoneNumber: apiTask.contact_phone_number,\n  homeownerAssociationCode: apiTask.homeowner_association_code,\n  homeownerAssociationName: apiTask.homeowner_association_name,\n  creator: apiTask.creator,\n  creatorCode: apiTask.creator_external_id,\n  realizer: apiTask.realizer,\n  realizerCode: apiTask.realizer_external_id,\n  estimatedStartTime: apiTask.estimated_start_time,\n  estimatedFinishTime: apiTask.estimated_finish_time,\n  startedAt: apiTask.started_at,\n  finishedAt: apiTask.finished_at,\n  category: apiTask.category,\n  ticketNumber: apiTask.ticket_number,\n  documentNumber: apiTask.document_number,\n});\n\nconst translateComment = (apiComment: ApiTaskComment): TaskComment => ({\n  author: apiComment.author,\n  content: apiComment.content,\n  createdAt: apiComment.created_at,\n  attachments: apiComment.attachments.map((apiAttachment) => ({\n    contentType: apiAttachment.content_type,\n    filename: apiAttachment.filename,\n    path: apiAttachment.path,\n    description: apiAttachment.description,\n  })),\n});\n\nexport const translateCommissions = (apiCommission: ApiTaskCommission): TaskCommission => ({\n  id: apiCommission.id,\n  internalCommissionStatus: apiCommission.internal_commission_status,\n  provider: apiCommission.provider,\n  portalPro: {\n    jobTrackingUrl: apiCommission.portal_pro?.job_tracking_url,\n    externalId: apiCommission.portal_pro?.external_id,\n    status: apiCommission.portal_pro?.status\n  }\n});\n\nexport const translateFullApiTask = (fullApiTask: FullApiTask): FullTask => ({\n  attachments: fullApiTask.attachments.map((attachment) => ({\n    contentType: attachment.content_type,\n    filename: attachment.filename,\n    path: attachment.path,\n    description: attachment.description,\n  })),\n  category: { id: fullApiTask.category?.id, name: fullApiTask.category?.name },\n  comments: fullApiTask.comments?.map((apiComment) => translateComment(apiComment)) || [],\n  commissions: fullApiTask.task_commissions?.map((apiCommission) => translateCommissions(apiCommission)) || [],\n  createdAt: fullApiTask.created_at,\n  creator: fullApiTask.creator,\n  creatorCode: fullApiTask.creator_external_id,\n  description: fullApiTask.description,\n  estimatedStartTime: fullApiTask.estimated_start_time,\n  estimatedFinishTime: fullApiTask.estimated_finish_time,\n  startedAt: fullApiTask.started_at,\n  finishedAt: fullApiTask.finished_at,\n  homeownerAssociationCode: fullApiTask.homeowner_association_code,\n  homeownerAssociationName: fullApiTask.homeowner_association_name,\n  id: fullApiTask.id,\n  lastCommentAt: fullApiTask.last_comment_at,\n  realizer: fullApiTask.realizer,\n  realizerCode: fullApiTask.realizer_external_id,\n  status: { id: fullApiTask.status?.id, name: fullApiTask.status?.external_name },\n  taskNumber: fullApiTask.task_number,\n  ticketId: fullApiTask.ticket?.id,\n  documentId: fullApiTask.document?.id,\n  title: fullApiTask.title,\n  venueAddress: fullApiTask.venue_address,\n  venueCode: fullApiTask.venue_code,\n  venueCity: fullApiTask.venue_city,\n  venuePostalCode: fullApiTask.venue_postal_code,\n  contactEmail: fullApiTask.contact_email,\n  contactPhoneNumber: fullApiTask.contact_phone_number\n});\n\nexport const translateApiTasks = (apiTaskResponse: ApiTasksResponse): Tasks => ({\n  tasks: apiTaskResponse.tasks.map((apiTask) => translateTask(apiTask)),\n  metadata: apiTaskResponse.metadata,\n});\n\nexport const translateTaskToFormData = (data: TaskInputs): FormData => {\n  const form = new FormData();\n  form.append('task[title]', data.title);\n  form.append('task[description]', data.description);\n  if (data.ticket_id) {\n    form.append('task[ticket_id]', data.ticket_id);\n  }\n  if (data.document_id) {\n    form.append('task[document_id]', data.document_id);\n  }\n  form.append('task[category_id]', data.category_id);\n  form.append('task[status_id]', data.status_id);\n  if (data.realizer_id) form.append('task[realizer_id]', data.realizer_id);\n  if (data.estimated_start_time) form.append('task[estimated_start_time]', data.estimated_start_time);\n  if (data.estimated_finish_time) form.append('task[estimated_finish_time]', data.estimated_finish_time);\n  if (data.started_at) form.append('task[started_at]', data.started_at);\n  if (data.finished_at) form.append('task[finished_at]', data.finished_at);\n\n  data.attachments.forEach((attachment, index) => {\n    if (attachment.file?.length) {\n      form.append(`task[attachments][${index}][file]`, attachment.file[0]);\n      form.append(`task[attachments][${index}][description]`, attachment.description);\n    }\n  });\n  return form;\n};\n\nexport const translateTaskCommentToFormData = (data: CommentFormData): FormData => {\n  const form = new FormData();\n  form.append('comment[content]', data.content);\n  form.append('comment[public]', 'false');\n  data.attachments.forEach((attachment, index) => {\n    if (attachment.file?.length) {\n      form.append(`comment[attachments][${index}][file]`, attachment.file[0]);\n      form.append(`comment[attachments][${index}][description]`, attachment.description);\n    }\n  });\n  return form;\n};\n\nexport const translateTaskStatus = ({ statuses }: ApiTaskStatuses): TaskStatuses => ({\n  statuses: statuses.map((status) => ({\n    id: status.id,\n    name: status.external_name,\n  })),\n});\n\nexport const translateFullTaskStatus = ({ statuses }: ApiTaskStatuses): FullTaskStatus[] => statuses.map((status) => ({\n  id: status.id,\n  objectType: 'task',\n  name: status.name,\n  active: status.active,\n  internalName: status.internal_name,\n  externalName: status.external_name,\n  description: status.description,\n}));\n\nexport const translateServices = ({commission_portal_pro_services} : ApiPortalProServiceResponse): PortalProService[] =>(\n  commission_portal_pro_services.map((service) =>({name: service.name, code: service.service_code, id: service.service_id})) \n)", "import {\n  ApiTicketResponse,\n  ApiTicketsResponse,\n  ApiTicketComment,\n  ApiAttachment,\n  ApiTicketsListItem,\n  EmployeeApiTicketsListItem,\n  TenantTicketsListItemData,\n  EmployeeTicketsListItemData,\n  TicketComment,\n  TicketAttachment,\n  Tickets,\n  EmployeeApiSingleTicket,\n  EmployeeShowTicketData,\n  TenantShowTicketData,\n  ApiTicketStatuses,\n  TicketStatuses, FullTicketStatus,\n} from './ticketsTypes';\nimport { TicketInputs } from '../../../pages/TicketsPage/TicketForm/TicketForm';\nimport { CommentFormData } from '../../../components/CommentsList/CommentForm/CommentForm';\nimport { translateTask } from '../tasks/tasksTranslator';\n\nconst translateAttachments = (attachments: ApiAttachment[]): TicketAttachment[] => attachments.map((attachments) => ({\n  contentType: attachments.content_type,\n  filename: attachments.filename,\n  path: attachments.path,\n  description: attachments.description,\n}));\n\nconst translateComments = (comments: ApiTicketComment[]): TicketComment[] => comments?.map((comment) => ({\n  author: comment.author,\n  content: comment.content,\n  createdAt: comment.created_at,\n  attachments: translateAttachments(comment.attachments),\n}));\n\nexport const translateSingleTicket = ({ ticket }: ApiTicketResponse): TenantShowTicketData | EmployeeShowTicketData => ({\n  id: ticket.id,\n  ticketNumber: ticket.ticket_number,\n  title: ticket.title,\n  status: { id: ticket.status.id, name: ticket.status.external_name },\n  description: ticket.description,\n  category: { id: ticket.category?.id, name: ticket.category?.name },\n  reporter: ticket.reporter,\n  reportedAt: ticket.reported_at,\n  venueAddress: ticket.venue_address,\n  publicComments: translateComments(ticket.public_comments),\n  attachments: translateAttachments(ticket.attachments),\n  realizer: (ticket as EmployeeApiSingleTicket).realizer,\n  privateComments: translateComments((ticket as EmployeeApiSingleTicket).private_comments),\n  homeownerAssociationName: (ticket as EmployeeApiSingleTicket).homeowner_association_name,\n  homeownerAssociationId: (ticket as EmployeeApiSingleTicket).homeowner_association_id,\n  tenantId: (ticket as EmployeeApiSingleTicket).tenant_id,\n  tenantName: (ticket as EmployeeApiSingleTicket).tenant_name,\n  venueId: (ticket as EmployeeApiSingleTicket).venue_id,\n  tasks: ((ticket as EmployeeApiSingleTicket).tasks || []).map((apiTask) => translateTask(apiTask)),\n});\n\ntype ApiTicket = ApiTicketsListItem | EmployeeApiTicketsListItem;\ntype TicketItem = TenantTicketsListItemData | EmployeeTicketsListItemData;\n\nexport const translateTicket = (apiTicket: ApiTicket): TicketItem => ({\n  id: apiTicket.id,\n  ticketNumber: apiTicket.ticket_number,\n  title: apiTicket.title,\n  status: apiTicket.status as string,\n  category: apiTicket.category,\n  reporter: apiTicket.reporter,\n  reportedAt: apiTicket.reported_at,\n\n  lastCommentAt: (apiTicket as EmployeeApiTicketsListItem).last_comment_at,\n  homeownerAssociationCode: (apiTicket as EmployeeApiTicketsListItem).homeowner_association_code,\n  venueAddress: (apiTicket as EmployeeApiTicketsListItem).venue_address,\n  venueCode: (apiTicket as EmployeeApiTicketsListItem).venue_code,\n  homeownerAssociationName: (apiTicket as EmployeeApiTicketsListItem).homeowner_association_name,\n  reporterCode: (apiTicket as EmployeeApiTicketsListItem).reporter_external_id,\n  realizer: (apiTicket as EmployeeApiTicketsListItem).realizer,\n  realizerCode: (apiTicket as EmployeeApiTicketsListItem).realizer_external_id,\n});\n\nexport const translateApiToTickets = ({ tickets, metadata }: ApiTicketsResponse) : Tickets => ({\n  metadata,\n  tickets: tickets.map((apiTicket) => translateTicket(apiTicket)),\n});\n\nexport const translateTicketsToFormData = (data: TicketInputs): FormData => {\n  const form = new FormData();\n  form.append('ticket[title]', data.title);\n  form.append('ticket[category_id]', data.category_id);\n  form.append('ticket[description]', data.description);\n  if (data.status_id) form.append('ticket[status_id]', data.status_id);\n  if (data.realizer_id) form.append('ticket[realizer_id]', data.realizer_id);\n  if (data.venue_id) form.append('ticket[venue_id]', data.venue_id);\n  if (data.homeowner_association_id) form.append('ticket[homeowner_association_id]', data.homeowner_association_id);\n  if (data.tenant_id) form.append('ticket[tenant_id]', data.tenant_id);\n  data.attachments.forEach((attachment, index) => {\n    if (attachment.file?.length) {\n      form.append(`ticket[attachments][${index}][file]`, attachment.file[0]);\n      form.append(`ticket[attachments][${index}][description]`, attachment.description);\n    }\n  });\n  return form;\n};\n\nexport const translateTicketCommentToFormData = (data: CommentFormData): FormData => {\n  const form = new FormData();\n  form.append('comment[content]', data.content);\n  form.append('comment[public]', data.publicComment.toString());\n  data.attachments.forEach((attachment, index) => {\n    if (attachment.file?.length) {\n      form.append(`comment[attachments][${index}][file]`, attachment.file[0]);\n      form.append(`comment[attachments][${index}][description]`, attachment.description);\n    }\n  });\n  return form;\n};\n\nexport const translateTicketStatus = ({ statuses }: ApiTicketStatuses): TicketStatuses => ({\n  statuses: statuses.map((status) => ({\n    id: status.id,\n    name: status.external_name,\n  })),\n});\n\nexport const translateFullTicketStatus = ({ statuses }: ApiTicketStatuses): FullTicketStatus[] => statuses.map((status) => ({\n  id: status.id,\n  objectType: 'ticket',\n  name: status.name,\n  active: status.active,\n  internalName: status.internal_name,\n  externalName: status.external_name,\n  description: status.description,\n}));\n", "import { EndpointBuilder } from '@reduxjs/toolkit/dist/query/endpointDefinitions';\nimport queryString from 'query-string';\nimport {\n  ApiMeasurements, ApiMeterHistoryResponse, ApiMeterRequestParams,\n  ApiMetersResponse, MeterHistory, ApiMetersVenuesListResponse, MetersVenuesList,\n} from './metersTypes';\nimport { ApiBaseQuery, ApiTagTypes } from '../../baseQuery';\nimport { translateMetersHistory, translateApiMetersVenuesList } from './metersTranslator';\n\nexport const metersQueries = (builder: EndpointBuilder<ApiBaseQuery, ApiTagTypes, 'api'>) => ({\n  getMeters: builder.query<ApiMetersResponse, ApiMeterRequestParams>({\n    query: (params) => {\n      const stringifiedParams = queryString.stringify(params, { arrayFormat: 'bracket' });\n      return `meters/list?${stringifiedParams}`;\n    },\n    providesTags: () => ['Meters'],\n  }),\n  getMeterHistory: builder.query<MeterHistory[], string | ''>({\n    query: (meterId) => `meters/${meterId}/history`,\n    transformResponse(baseQueryReturnValue: ApiMeterHistoryResponse): MeterHistory[] {\n      return translateMetersHistory(baseQueryReturnValue);\n    },\n    providesTags: () => ['Meters'],\n  }),\n  postMeasurements: builder.mutation<any, ApiMeasurements>({\n    query: (measurements) => ({\n      url: 'meters/add_measurements',\n      method: 'POST',\n      body: measurements,\n    }),\n    invalidatesTags: ['Meters', 'MetersVenuesList', 'ActivityLog'],\n  }),\n  getMetersVenuesList: builder.query<MetersVenuesList, Record<string, string>>({\n    query: (params) => {\n      const stringifiedParams = queryString.stringify(params, { arrayFormat: 'bracket' });\n      return `meters/venues/list?${stringifiedParams}`;\n    },\n    transformResponse(baseQueryReturnValue: ApiMetersVenuesListResponse): MetersVenuesList {\n      return translateApiMetersVenuesList(baseQueryReturnValue);\n    },\n    providesTags: () => ['MetersVenuesList'],\n  }),\n});\n", "import { PaginationMetadata } from '../../paginationTypes';\n\nexport interface ApiMetersResponse {\n  meters: ApiMeter[]\n}\n\nexport interface ApiMeter {\n  can_update: boolean,\n  last_value?: string,\n  meter_group?: string | null,\n  meter_id: string,\n  meter_type: ApiMeterType,\n  meter_code: string,\n  meter_location: string | null,\n  valid_until: string,\n}\n\nexport const apiMeterType = [\n  'CW', 'ZW', 'task', 'GAS', 'PRAD', 'CO',\n] as const;\nexport type ApiMeterType = typeof apiMeterType[number];\n\nexport type ApiMeasurements = {\n  measurements: {\n    meter_id: string,\n    value: string | undefined,\n  }[]\n};\n\nexport interface ApiMeterHistoryResponse {\n  history: ApiMeterHistory[],\n}\n\nexport interface ApiMetersVenue {\n  address: string,\n  building: string,\n  city: string,\n  code: string,\n  homeowner_association: string,\n  id: string,\n  measurement_required: true,\n  residency_from: string,\n  residency_until: string | null,\n  tenant: string,\n  tenant_external_id: string,\n}\nexport interface ApiMetersVenuesListResponse {\n  metadata: PaginationMetadata,\n  venues: ApiMetersVenue[],\n}\n\nexport interface ApiMeterRequestParams {\n  venues_ids?: string | string[],\n  measurement_required?: boolean,\n  type?: ApiMeterType,\n  location?: string,\n}\n\nexport interface ApiMeterHistory {\n  data_source: string,\n  measurement_taken_at: string,\n  measurement_value: string,\n}\nexport interface Meter {\n  meterId: string,\n  meterType: string,\n  meterCode: string,\n  meterLocation: string | null,\n  measurementUnit: string,\n}\nexport interface ReadingRequest extends Meter {\n  meterGroup?: string,\n  validUntil: Date,\n  lastValue?: number,\n  canUpdate: boolean,\n}\n\nexport interface MeterHistory {\n  value: string,\n  date: string,\n  source: string,\n}\n\nexport interface Measurement {\n  meterId: string,\n  value: string | undefined,\n}\n\nexport interface MetersFormFields {\n  [key: string]: number,\n}\n\nexport interface MetersVenue {\n  address: string,\n  building: string,\n  city: string,\n  code: string,\n  homeownerAssociation: string,\n  venueId: string,\n  measurementRequired: true,\n  residencyFrom: string,\n  residencyUntil: string | null,\n  tenant: string,\n  tenantExternalId: string,\n}\n\nexport interface MetersVenuesList {\n  metadata: PaginationMetadata,\n  venues: MetersVenue[]\n}\n", "import { IntlShape } from 'react-intl';\nimport {\n  ApiMeasurements,\n  ApiMeter,\n  ApiMeterHistoryResponse,\n  ApiMetersResponse,\n  ApiMeterType,\n  Measurement,\n  Meter, MeterHistory,\n  MetersFormFields,\n  ReadingRequest,\n  ApiMetersVenuesListResponse,\n  ApiMetersVenue,\n  MetersVenue,\n  MetersVenuesList,\n} from './metersTypes';\n\nexport const translateMeterType = (apiType: ApiMeterType, intl: IntlShape) => {\n  switch (apiType) {\n    case 'CW':\n      return {\n        type: intl.formatMessage({ id: 'local.meters.type.cw' }),\n        unit: 'm3',\n      };\n    case 'ZW':\n      return {\n        type: intl.formatMessage({ id: 'local.meters.type.zw' }),\n        unit: 'm3',\n      };\n    case 'GAS':\n      return {\n        type: intl.formatMessage({ id: 'local.meters.type.gas' }),\n        unit: 'm3',\n      };\n    case 'PRAD':\n      return {\n        type: intl.formatMessage({ id: 'local.meters.type.prad' }),\n        unit: 'kWh',\n      };\n    case 'CO':\n      return {\n        type: intl.formatMessage({ id: 'local.meters.type.co' }),\n        unit: 'GJ',\n      };\n    default:\n      return {\n        type: intl.formatMessage({ id: 'local.meters.type.unknown' }),\n        unit: '',\n      };\n  }\n};\n\nconst translateMeter = (apiMeter: ApiMeter, intl: IntlShape): ReadingRequest => {\n  const { type, unit } = translateMeterType(apiMeter.meter_type, intl);\n\n  return ({\n    meterId: apiMeter.meter_id,\n    meterGroup: apiMeter.meter_group || undefined,\n    meterType: type,\n    meterCode: apiMeter.meter_code,\n    meterLocation: apiMeter.meter_location,\n    measurementUnit: unit,\n    validUntil: new Date(apiMeter.valid_until),\n    lastValue: apiMeter.last_value ? parseFloat(apiMeter.last_value) : undefined,\n    canUpdate: apiMeter.can_update,\n  });\n};\n\nconst groupByMeterGroup = (meters: ReadingRequest[]) => meters.reduce(\n  (groups:ReadingRequest[][], meter) => {\n    const { meterGroup } = meter;\n    let foundGroup: (ReadingRequest[] | undefined);\n\n    if (meterGroup) {\n      foundGroup = groups.find((g) => g[0].meterGroup === meterGroup);\n    }\n    if (foundGroup) {\n      foundGroup.push(meter);\n    } else {\n      groups.push([meter]);\n    }\n    return groups;\n  },\n  [],\n);\n\nexport const translateApiToMeterGroups = (apiObject: ApiMetersResponse, intl: IntlShape) : ReadingRequest[][] => groupByMeterGroup(\n  apiObject.meters.map((apiObject) => translateMeter(apiObject, intl)),\n);\n\nexport const translateApiToMetersList = (apiObject: ApiMetersResponse, intl: IntlShape) : Meter[] => apiObject.meters.map((apiMeter) => {\n  const { type, unit } = translateMeterType(apiMeter.meter_type, intl);\n  return {\n    meterId: apiMeter.meter_id,\n    meterType: type,\n    meterCode: apiMeter.meter_code,\n    meterLocation: apiMeter.meter_location,\n    measurementUnit: unit,\n  };\n});\n\nexport const translateMetersHistory = (apiResponse: ApiMeterHistoryResponse): MeterHistory[] => apiResponse.history.map((measuremeent) => ({\n  value: measuremeent.measurement_value,\n  date: measuremeent.measurement_taken_at,\n  source: measuremeent.data_source,\n}));\n\nexport const translateMeasurementsToApi = (measurements: Measurement[]): ApiMeasurements => ({\n  measurements: measurements.map((m) => ({\n    meter_id: m.meterId,\n    value: m.value,\n  })),\n});\n\nexport const translateFormFieldsToApi = (fields: MetersFormFields): ApiMeasurements => ({\n  measurements: Object.keys(fields).map((key) => ({\n    meter_id: key,\n    value: `${fields[key]}`,\n  })),\n});\nconst translateMetersVenuesList = (apiVenue: ApiMetersVenue): MetersVenue => ({\n  address: apiVenue.address,\n  building: apiVenue.building,\n  city: apiVenue.city,\n  code: apiVenue.code,\n  homeownerAssociation: apiVenue.homeowner_association,\n  venueId: apiVenue.id,\n  measurementRequired: apiVenue.measurement_required,\n  residencyFrom: apiVenue.residency_from,\n  residencyUntil: apiVenue.residency_until,\n  tenant: apiVenue.tenant,\n  tenantExternalId: apiVenue.tenant_external_id,\n});\n\nexport const translateApiMetersVenuesList = ({ venues, metadata }: ApiMetersVenuesListResponse) : MetersVenuesList => ({\n  metadata,\n  venues: venues.map((ApiMetersVenue) => translateMetersVenuesList(ApiMetersVenue)),\n});\n\nexport { ApiMetersResponse };\n", "import {\n  ApiResolution,\n  ApiResolutionsResponse,\n  ApiResolutionResponse,\n  Resolution,\n  ResolutionData,\n  ApiAttachment,\n  Attachment,\n  Resolutions,\n  EmployeeApiResolution,\n  EmployeeResolution,\n  Votings,\n  ApiVotingsResponse,\n} from './resolutionsTypes';\n\nconst translateAttachments = (attachments: ApiAttachment[]): Attachment[] => attachments.map((attachments) => ({\n  contentType: attachments.content_type,\n  filename: attachments.filename,\n  path: attachments.path,\n  title: attachments.title,\n}));\n\nexport const translateSingleResolution = ({ resolution }: ApiResolutionResponse): ResolutionData => ({\n  active: resolution.active,\n  attachments: translateAttachments(resolution.attachments),\n  contentAcceptedAt: resolution.content_accepted_at,\n  createdAt: resolution.created_at,\n  homeownerAssociationName: resolution.homeowner_association_name,\n  title: resolution.title,\n  id: resolution.id,\n  status: resolution.status,\n  text: resolution.text,\n  voteOptions: resolution.vote_options,\n  voteValue: resolution.vote_value,\n  votedAt: resolution.voted_at,\n  votingDeadline: resolution.voting_deadline,\n  pwiVotes: resolution.pwi_votes,\n  resolutionNumber: resolution.resolution_number,\n});\n\nexport const translateResolution = (resolution: ApiResolution | EmployeeApiResolution) => {\n  if ('pwi_votes' in resolution) {\n    return ({\n      active: resolution.active,\n      createdAt: resolution.created_at,\n      homeownerAssociationCode: resolution.homeowner_association_code,\n      id: resolution.id,\n      pwiVotes: resolution.pwi_votes,\n      resolutionNumber: resolution.resolution_number,\n      status: resolution.status,\n      title: resolution.title,\n      votingDeadline: resolution.voting_deadline,\n    } as EmployeeResolution);\n  }\n  return ({\n    active: resolution.active,\n    contentAcceptedAt: resolution.content_accepted_at,\n    createdAt: resolution.created_at,\n    homeownerAssociationName: resolution.homeowner_association_name,\n    title: resolution.title,\n    id: resolution.id,\n    status: resolution.status,\n    text: resolution.text,\n    voteValue: resolution.vote_value,\n    votedAt: resolution.voted_at,\n    votingDeadline: resolution.voting_deadline,\n    resolutionNumber: resolution.resolution_number,\n  } as Resolution);\n};\n\nexport const translateApiToResolutions = ({ resolutions, metadata }: ApiResolutionsResponse) : Resolutions => ({\n  metadata,\n  resolutions: resolutions.map((resolution) => translateResolution(resolution)),\n});\n\nexport const translateVotings = ({ votings, metadata }: ApiVotingsResponse): Votings => ({\n  votings: votings.map((vote) => ({\n    dataSource: vote.data_source,\n    id: vote.id,\n    externalId: vote.external_id,\n    tenantName: vote.tenant_name,\n    tenantExternalId: vote.tenant_external_id,\n    voteValue: vote.vote_value,\n    votedAt: vote.voted_at,\n  })),\n  metadata,\n});\n\nexport const translateResolutionVoteValueToApi = ({ voteValue }: { voteValue: string }) => ({ vote_value: voteValue });\n", "import { EndpointBuilder } from '@reduxjs/toolkit/dist/query/endpointDefinitions';\nimport {\n  ApiResolutionsResponse, ApiResolutionResponse, ResolutionData, ApiPostResolutionVoteValue, Resolutions, ApiVotingsResponse, Votings,\n} from './resolutionsTypes';\nimport { ApiBaseQuery, ApiTagTypes } from '../../baseQuery';\nimport { translateApiToResolutions, translateSingleResolution, translateVotings } from './resolutionsTranslator';\n\nexport const resolutionsQueries = (builder: EndpointBuilder<ApiBaseQuery, ApiTagTypes, 'api'>) => ({\n  getResolutions: builder.query<Resolutions, Record<string, string | boolean>>({\n    query: (params) => ({ url: 'resolutions/list', params }),\n    transformResponse(baseQueryReturnValue: ApiResolutionsResponse): Promise<Resolutions> | Resolutions {\n      return translateApiToResolutions(baseQueryReturnValue);\n    },\n    providesTags: () => ['Resolutions'],\n  }),\n  getResolution: builder.query<ResolutionData, string | void>({\n    query: (resolutionId) => `resolutions/${resolutionId}/show`,\n    transformResponse(baseQueryReturnValue: ApiResolutionResponse): Promise<ResolutionData> | ResolutionData {\n      return translateSingleResolution(baseQueryReturnValue);\n    },\n    providesTags: () => ['Resolution'],\n  }),\n  getResolutionVotingsList: builder.query<Votings, any>({\n    query: ({ id, ...rest }) => ({ url: `resolutions/${id}/votings/list`, params: rest }),\n    transformResponse(baseQueryReturnValue: ApiVotingsResponse): Promise<Votings> | Votings {\n      return translateVotings(baseQueryReturnValue);\n    },\n    providesTags: () => ['VotingsList'],\n  }),\n  postContentAccepted: builder.mutation<any, string>({\n    query: (id) => ({\n      url: `/resolutions/${id}/accept_content`,\n      method: 'POST',\n    }),\n    invalidatesTags: () => ['Resolution', 'ActivityLog'],\n  }),\n  postResolutionVoteValue: builder.mutation<any, ApiPostResolutionVoteValue>({\n    query: ({ id, payload }) => ({\n      url: `/resolutions/${id}/vote`,\n      method: 'POST',\n      body: payload,\n    }),\n    invalidatesTags: () => ['Resolution', 'Resolutions', 'ActivityLog'],\n  }),\n});\n", "import { EndpointBuilder } from '@reduxjs/toolkit/dist/query/endpointDefinitions';\nimport queryString from 'query-string';\nimport {\n  Accounts,\n  ActivityLog,\n  ApiActivityLogResponse,\n  ApiMe,\n  ApiPostUserAccount,\n  ApiPostUserProfile,\n  ApiUserAccountsResponse,\n  ApiUserProfile,\n  UserAccount,\n  ApiRoles,\n  Role,\n  FullUserAccount,\n  ApiAccountResponse,\n  ApiPutUserAccount,\n  ApiChangeUserActivity,\n  AccessGroup,\n  ApiAccessGroupResponse,\n  ApiPostNewPassword,\n} from './userTypes';\nimport { ApiBaseQuery, ApiTagTypes } from '../../baseQuery';\nimport {\n  translateApiMeToUser,\n  translateApiToActivityLog,\n  translateUserAccounts,\n  translateApiToRoles,\n  translateFullUserAccount,\n  translateAccessGroups,\n} from './userTranslator';\nimport { ColorPalette } from '../company/companyTypes';\n\nexport const userQueries = (builder: EndpointBuilder<ApiBaseQuery, ApiTagTypes, 'api'>) => ({\n  getFullUserAccount: builder.query<UserAccount, void>({\n    query: () => 'users/accounts/me?with_tenant',\n    providesTags: ['UserAccess'],\n    transformResponse(baseQueryReturnValue: ApiMe): UserAccount {\n      return translateApiMeToUser(baseQueryReturnValue);\n    },\n  }),\n  getAccessToken: builder.query<string, void>({\n    query: () => 'users/accounts/access_token',\n    transformResponse(baseQueryReturnValue: { access_token: string }): string {\n      return baseQueryReturnValue.access_token;\n    },\n  }),\n  getProfile: builder.query<ApiUserProfile, void>({\n    query: () => 'users/accounts/profile',\n    providesTags: () => ['Profile'],\n  }),\n  postProfile: builder.mutation<any, ApiPostUserProfile>({\n    query: (profile) => ({\n      url: 'users/accounts/profile',\n      method: 'POST',\n      body: profile,\n    }),\n    invalidatesTags: () => ['Profile', 'ActivityLog'],\n  }),\n  postChangePassword: builder.mutation({\n    query: (payload) => ({\n      url: 'users/accounts/change_my_password',\n      method: 'PUT',\n      body: payload,\n    }),\n  }),\n  putChangeUserPassword: builder.mutation<any, { id: string, payload: ApiPostNewPassword }>({\n    query: ({ id, payload }) => ({\n      url: `users/accounts/${id}/change_password`,\n      method: 'PUT',\n      body: payload,\n    }),\n  }),\n  getActivityLog: builder.query<ActivityLog, Record<string, string | boolean>>({\n    query: (params) => {\n      const stringifiedParams = queryString.stringify(params, { arrayFormat: 'bracket' });\n      return `activity_log/list?${stringifiedParams}`;\n    },\n    transformResponse(baseQueryReturnValue: ApiActivityLogResponse): Promise<ActivityLog> | ActivityLog {\n      return translateApiToActivityLog(baseQueryReturnValue);\n    },\n    providesTags: () => ['ActivityLog'],\n  }),\n  logout: builder.mutation<any, null>({\n    query: () => ({\n      url: 'accounts/sign_out',\n      method: 'DELETE',\n    }),\n  }),\n  getUsersAccounts: builder.query<Accounts, Record<string, string>>({\n    query: (params) => {\n      const stringifiedParams = queryString.stringify(params, { arrayFormat: 'bracket' });\n      return `/users/accounts/list?${stringifiedParams}`;\n    },\n    transformResponse(baseQueryReturnValue: ApiUserAccountsResponse): Accounts {\n      return translateUserAccounts(baseQueryReturnValue);\n    },\n    providesTags: () => ['Users'],\n  }),\n  getUserAccount: builder.query<FullUserAccount, string>({\n    query: (id) => `/users/accounts/${id}/show`,\n    transformResponse(baseQueryReturnValue: ApiAccountResponse): FullUserAccount {\n      return translateFullUserAccount(baseQueryReturnValue);\n    },\n    providesTags: () => ['Users'],\n  }),\n  postUserAccount: builder.mutation<any, ApiPostUserAccount>({\n    query: (account) => ({\n      url: 'users/accounts/add',\n      method: 'POST',\n      body: account,\n    }),\n    invalidatesTags: () => ['Profile', 'Users', 'Roles'],\n  }),\n  putUserAccount: builder.mutation<any, ApiPutUserAccount>({\n    query: ({ id, ...account }) => ({\n      url: `users/accounts/${id}/change`,\n      method: 'PUT',\n      body: account,\n    }),\n    invalidatesTags: () => ['Profile', 'Users', 'Roles'],\n  }),\n  getRolesForUser: builder.query<Role[], void>({\n    query: () => 'users/roles/list',\n    transformResponse(baseQueryReturnValue: ApiRoles): Promise<Role[]> | Role[] {\n      return translateApiToRoles(baseQueryReturnValue);\n    },\n    providesTags: ['Roles'],\n  }),\n  changeUserActivityStatus: builder.mutation<any, ApiChangeUserActivity>({\n    query: (mutation) => ({\n      url: `users/accounts/${mutation.id}/change_access`,\n      method: 'PUT',\n      body: {\n        active: mutation.active,\n      },\n    }),\n    invalidatesTags: () => ['Profile', 'Users'],\n  }),\n  getAccessGroups: builder.query<AccessGroup[], Record<string, string>>({\n    query: ({ accessGroup, ...rest }) => {\n      const stringifiedParams = queryString.stringify(rest, { arrayFormat: 'bracket' });\n      return `/users/access_groups/${accessGroup}/list?${stringifiedParams}`;\n    },\n    transformResponse(baseQueryReturnValue: ApiAccessGroupResponse): AccessGroup[] {\n      return translateAccessGroups(baseQueryReturnValue);\n    },\n  }),\n  getUserJournals: builder.query<AccessGroup[], Record<string, string>>({\n    query: (params) => {\n      const stringifiedParams = params && queryString.stringify(params, { arrayFormat: 'bracket' });\n      return `/users/journals/list?${stringifiedParams}`;\n    },\n    transformResponse(baseQueryReturnValue: ApiAccessGroupResponse): AccessGroup[] {\n      return translateAccessGroups(baseQueryReturnValue);\n    },\n  }),\n  patchColorPalette: builder.mutation<any, ColorPalette | null | undefined>({\n    query: (color) => ({\n      url: '/users/profiles/change_color_palette',\n      method: 'PATCH',\n      body: {\n        color_palette: color,\n      },\n    }),\n    invalidatesTags: () => ['Profile', 'UserAccess'],\n  }),\n  patchNotificationSetting: builder.mutation<any, ColorPalette | null | undefined>({\n    query: (data) => ({\n      url: '/users/profiles/change_notification_setting',\n      method: 'PATCH',\n      body: data,\n    }),\n    invalidatesTags: () => ['Profile', 'Users', 'UserAccess'],\n  }),\n});\n", "import {\n  ApiMe,\n  ApiPostUserProfile,\n  ApiUserProfile,\n  UserProfileData,\n  MyNewPasswordData,\n  ApiPostMyNewPassword,\n  UserAccount,\n  ApiVenue,\n  Venue,\n  ApiTenant,\n  Tenant,\n  ApiActivityLogResponse,\n  ActivityLog,\n  TenantApiEvent,\n  EmployeeApiEvent,\n  AdminApiEvent,\n  Event,\n  ApiUserAccount,\n  Account,\n  ApiUserAccountsResponse,\n  Accounts,\n  ApiRole,\n  Role,\n  ApiRoles,\n  ApiAccountResponse,\n  FullUserAccount,\n  ChangeUserFormData,\n  ApiPutUserAccount,\n  ApiAccessGroupResponse,\n  AccessGroup,\n  CreateUserFormData,\n  ApiPostUserAccount,\n  NewPasswordData,\n  ApiPostNewPassword,\n} from './userTypes';\n\nconst splitJournalsByType = (journalIds: string[]) => journalIds.reduce((acc, id) => {\n  if (id.startsWith('documents:')) {\n    acc.documents.push(id.replace('documents:', ''));\n  } else if (id.startsWith('tickets:')) {\n    acc.tickets.push(id.replace('tickets:', ''));\n  } else {\n    acc.tickets.push(id);\n  }\n\n  return acc;\n}, { tickets: [] as string[], documents: [] as string[] });\n\nconst translateAccessGroupsWithJournals = (\n  journalsIds: string[],\n  homeownerAssociationIds: string[],\n  buildingsIds: string[],\n  estatesIds: string[]\n) => {\n  const journals = splitJournalsByType(journalsIds);\n  return {\n    'tenants/homeowner_associations': homeownerAssociationIds,\n    'tenants/buildings': buildingsIds,\n    'tenants/estates': estatesIds,\n    'tickets/journals': journals.tickets,\n    'documents/journals': journals.documents,\n  };\n};\n\nexport const translateApiToProfile = (apiProfile: ApiUserProfile): UserProfileData => ({\n  profileId: apiProfile.external_id,\n  profileLogin: apiProfile.login,\n  profileAddressCity: apiProfile.profile?.address_city,\n  profileAddressPostalCode: apiProfile.profile?.address_postal_code,\n  profileAddressStreet: apiProfile.profile?.address_street,\n  profileCorrespondenceEmail: apiProfile.profile?.correspondence_email,\n  profileEmail: apiProfile.email,\n  profileTenantEmail: apiProfile.tenant?.email,\n  profileName: apiProfile.full_name,\n  profilePassword: '',\n  profilePhoneNumber: apiProfile.profile?.phone,\n  profileEmailAgreement: apiProfile.profile?.email_agreement,\n});\n\nexport const translateProfileToApi = (profile: UserProfileData): ApiPostUserProfile => ({\n  address_street: profile.profileAddressStreet,\n  address_postal_code: profile.profileAddressPostalCode,\n  address_city: profile.profileAddressCity,\n  correspondence_email: profile.profileCorrespondenceEmail,\n  email: profile.profileEmail,\n  phone: profile.profilePhoneNumber,\n  email_agreement: profile.profileEmailAgreement,\n  login: profile.profileLogin,\n});\n\nconst translateEvent = (apiEvent: TenantApiEvent | EmployeeApiEvent | AdminApiEvent): Event => ({\n  date: apiEvent.created_at,\n  description: apiEvent.description,\n  menuOption: apiEvent.category,\n  url: (apiEvent as TenantApiEvent | EmployeeApiEvent).url,\n  venue: (apiEvent as TenantApiEvent).venue_address,\n  externalId: (apiEvent as AdminApiEvent).account_external_id,\n  fullName: (apiEvent as AdminApiEvent).account_full_name,\n  roles: (apiEvent as AdminApiEvent).account_roles || [],\n});\n\nexport const translateApiToActivityLog = (apiActivityLogResponse: ApiActivityLogResponse): ActivityLog => ({\n  metadata: apiActivityLogResponse.metadata,\n  events: apiActivityLogResponse.events.map((event) => translateEvent(event)),\n});\n\nconst translateVenue = (apiVenue: ApiVenue): Venue => ({\n  id: apiVenue.id,\n  address: apiVenue.address,\n  code: apiVenue.code,\n  isMainTenant: apiVenue.main_tenant,\n});\n\nconst translateTenant = (apiTenant: ApiTenant): Tenant => ({\n  email: apiTenant.email,\n  venues: apiTenant.venues.map((apiVenue) => translateVenue(apiVenue)),\n});\n\nexport const translateApiMeToUser = (apiMe: ApiMe): UserAccount => ({\n  id: apiMe.me.id,\n  fullName: apiMe.me.full_name,\n  newNotificationCount: apiMe.me.new_notification_count,\n  login: apiMe.me.login,\n  tenant: apiMe.me.tenant ? translateTenant(apiMe.me.tenant) : undefined,\n  colorPalette: apiMe.me.profile?.color_palette,\n  notificationSetting: apiMe.me.notification_setting,\n});\n\nexport const translateUserAccount = (apiAccount: ApiUserAccount): Account => ({\n  correspondenceEmail: apiAccount.correspondence_email,\n  email: apiAccount.email,\n  emailAgreement: apiAccount.email_agreement,\n  active: apiAccount.active,\n  externalId: apiAccount.external_id,\n  fullName: apiAccount.full_name,\n  id: apiAccount.id,\n  login: apiAccount.login,\n  roles: apiAccount.roles || [],\n});\n\nconst translateRole = (apiRole: ApiRole): Role => ({\n  id: apiRole.id,\n  name: apiRole.name,\n  permissions: apiRole.permissions,\n  isDefault: apiRole.default,\n  roleType: apiRole.role_type,\n});\n\nexport const translateFullUserAccount = (apiAccount: ApiAccountResponse): FullUserAccount => ({\n  accessGroups: {\n    homeownerAssociations: apiAccount.account.access_groups['tenants/homeowner_associations'],\n    estates: apiAccount.account.access_groups['tenants/estates'],\n    buildings: apiAccount.account.access_groups['tenants/buildings'],\n    journals: [\n      ...(apiAccount.account.access_groups['tickets/journals'] || []).map((group) => ({\n        ...group,\n        id: `tickets:${group.id}`,\n      })),\n      ...(apiAccount.account.access_groups['documents/journals'] || []).map((group) => ({\n        ...group,\n        id: `documents:${group.id}`,\n      })),\n    ],\n  },\n  active: apiAccount.account.active,\n  assigned: apiAccount.account.assigned,\n  email: apiAccount.account.email,\n  externalId: apiAccount.account.external_id,\n  fullName: apiAccount.account.full_name,\n  id: apiAccount.account.id,\n  login: apiAccount.account.login,\n  loginOption: apiAccount.account.login_option,\n  correspondenceEmail: apiAccount.account.profile?.correspondence_email,\n  phone: apiAccount.account.profile?.phone,\n  addressStreet: apiAccount.account.profile?.address_street,\n  addressPostalCode: apiAccount.account.profile?.address_postal_code,\n  addressCity: apiAccount.account.profile?.address_city,\n  emailAgreement: apiAccount.account.profile?.email_agreement,\n  roles: apiAccount.account.roles.map((apiRole) => translateRole(apiRole)),\n  permissions: apiAccount.account.permissions,\n});\n\nexport const translateUserAccounts = (apiAccounts: ApiUserAccountsResponse): Accounts => ({\n  metadata: apiAccounts.metadata,\n  accounts: apiAccounts.accounts.map((account) => translateUserAccount(account)),\n});\n\nexport const translateUserPasswordToApi = (newPasswordData: NewPasswordData): ApiPostNewPassword => ({\n  password: newPasswordData.newPassword,\n  password_confirmation: newPasswordData.confirmNewPassword,\n});\n\nexport const translateMyPasswordToApi = (newPasswordData: MyNewPasswordData): ApiPostMyNewPassword => ({\n  ...translateUserPasswordToApi(newPasswordData),\n  old_password: newPasswordData.oldPassword,\n});\n\nexport const translateApiToRoles = (apiRoles: ApiRoles): Role[] => apiRoles.roles.map((role) => translateRole(role));\n\nexport const translateUserFormToPutRequest = (formData: ChangeUserFormData): ApiPutUserAccount => ({\n  id: formData.id,\n  email: formData.email,\n  full_name: formData.fullName,\n  login: formData.login,\n  active: formData.active,\n  phone: formData.phone,\n  role_ids: formData.roleIds,\n  access_groups: translateAccessGroupsWithJournals(\n    formData.journalsIds,\n    formData.homeownerAssociationIds,\n    formData.buildingsIds,\n    formData.estatesIds,\n  ),\n});\n\nexport const translateUserFormToPostRequest = (formData: CreateUserFormData): ApiPostUserAccount => ({\n  email: formData.email,\n  full_name: formData.fullName,\n  login: formData.login,\n  external_id: formData.externalId,\n  phone: formData.phone,\n  role_ids: formData.roleIds,\n  access_groups: translateAccessGroupsWithJournals(\n    formData.journalsIds,\n    formData.homeownerAssociationIds,\n    formData.buildingsIds,\n    formData.estatesIds,\n  ),\n});\n\nexport const translateAccessGroups = (response: ApiAccessGroupResponse): AccessGroup[] => response.access_groups;\n", "import { EndpointBuilder } from '@reduxjs/toolkit/dist/query/endpointDefinitions';\nimport queryString from 'query-string';\nimport {\n  ApiAnnouncementsResponse,\n  Announcements,\n  AnnouncementData,\n  AnnouncementsAuthor,\n  ApiAnnouncementsAuthorsResponse,\n  ApiAnnouncementsRecipientsResponse,\n  AnnouncementsRecipient,\n  ApiAnnouncementResponse,\n  ApiAnnouncementsRecipientsForFilterResponse,\n  AnnouncementsRecipientForFilter,\n  ApiChangeAnnouncementData,\n} from './announcementsTypes';\nimport {\n  translateAnnouncements, translateSingleAnnouncement, translateAnnouncementsAuthors, translateAnnouncementsRecipients,\n} from './announcementsTranslator';\nimport {\n  ApiBaseQuery, ApiTagTypes,\n} from '../../baseQuery';\n\nexport const announcementsQueries = (builder: EndpointBuilder<ApiBaseQuery, ApiTagTypes, 'api'>) => ({\n  getAnnouncements: builder.query<Announcements, Record<string, string | boolean> | void>({\n    query: (params) => {\n      const stringifiedParams = params && queryString.stringify(params, { arrayFormat: 'bracket' });\n      return `announcements/list?${stringifiedParams}`;\n    },\n    transformResponse(baseQueryReturnValue: ApiAnnouncementsResponse): Promise<Announcements> | Announcements {\n      return translateAnnouncements(baseQueryReturnValue);\n    },\n    providesTags: () => ['Announcements'],\n  }),\n  getAnnouncement: builder.query<AnnouncementData, string | undefined>({\n    query: (id) => (`announcements/${id}/show`),\n    transformResponse(baseQueryReturnValue: ApiAnnouncementResponse): Promise<AnnouncementData> | AnnouncementData {\n      return translateSingleAnnouncement(baseQueryReturnValue.announcement);\n    },\n    providesTags: () => ['Announcement'],\n  }),\n  postAnnouncement: builder.mutation<any, any>({\n    query: (payload) => ({\n      url: '/announcements/add',\n      method: 'POST',\n      body: payload,\n    }),\n    invalidatesTags: () => ['Announcements', 'AnnouncementsRecipientsForFilter'],\n  }),\n  changeAnnouncement: builder.mutation<any, ApiChangeAnnouncementData>({\n    query: ({ newData }) => ({\n      url: '/announcements/change',\n      method: 'PUT',\n      body: newData,\n    }),\n    invalidatesTags: () => ['Announcements', 'Announcement', 'AnnouncementsRecipientsForFilter'],\n  }),\n  postMarkReadAnnouncement: builder.mutation<any, string>({\n    query: (id) => ({\n      url: `announcements/${id}/read`,\n      method: 'POST',\n    }),\n    invalidatesTags: () => ['Announcements', 'Announcement'],\n  }),\n  postArchiveAnnouncement: builder.mutation<any, string>({\n    query: (id) => ({\n      url: `announcements/${id}/archive`,\n      method: 'POST',\n    }),\n    invalidatesTags: () => ['Announcements', 'Announcement'],\n  }),\n  getAnnouncementsAuthors: builder.query<AnnouncementsAuthor[], void>({\n    query: () => 'announcements/authors',\n    transformResponse(baseQueryReturnValue: ApiAnnouncementsAuthorsResponse): Promise<AnnouncementsAuthor[]> | AnnouncementsAuthor[] {\n      return translateAnnouncementsAuthors(baseQueryReturnValue);\n    },\n    providesTags: () => ['AnnouncementsAuthors'],\n  }),\n  getAnnouncementRecipients: builder.query<AnnouncementsRecipient[], Record<string, string>>({\n    query: ({ group, ...rest }) => {\n      const stringifiedParams = queryString.stringify(rest, { arrayFormat: 'bracket' });\n      return `announcements/recipients/${group}/list?${stringifiedParams}`;\n    },\n    transformResponse(baseQueryReturnValue: ApiAnnouncementsRecipientsResponse): Promise<AnnouncementsRecipient[]> | AnnouncementsRecipient[] {\n      return baseQueryReturnValue.recipients;\n    },\n    providesTags: () => ['AnnouncementRecipients'],\n  }),\n  getRecipientsForFilter: builder.query<AnnouncementsRecipientForFilter[], void>({\n    query: () => 'announcements/recipients/list?',\n    transformResponse(baseQueryReturnValue: ApiAnnouncementsRecipientsForFilterResponse):\n    Promise<AnnouncementsRecipientForFilter[]> | AnnouncementsRecipientForFilter[] {\n      return translateAnnouncementsRecipients(baseQueryReturnValue);\n    },\n    providesTags: () => ['AnnouncementsRecipientsForFilter'],\n  }),\n});\n", "import {\n  ApiAnnouncementsResponse,\n  Announcements,\n  ApiAnnouncement,\n  AnnouncementData,\n  AnnouncementAttachment,\n  ApiAnnouncementAttachment,\n  ApiAnnouncementsAuthorsResponse,\n  AnnouncementsAuthor,\n  AnnouncementInputs,\n  ApiSingleAnnouncement,\n  ApiAnnouncementsRecipientsForFilterResponse,\n  AnnouncementsRecipientForFilter,\n  FullChangeAnnouncementData,\n} from './announcementsTypes';\n\nexport const translateAnnouncementsRecipients = ({ recipients }: ApiAnnouncementsRecipientsForFilterResponse):\nAnnouncementsRecipientForFilter[] => recipients?.map((item) => ({\n  id: item.id,\n  fullName: item.full_name,\n}));\n\nexport const translateAnnouncementsAuthors = ({ authors }: ApiAnnouncementsAuthorsResponse): AnnouncementsAuthor[] => authors?.map((item) => ({\n  id: item.id,\n  fullName: item.full_name,\n}));\n\nconst translateAnnouncementAttachment = (attachments: ApiAnnouncementAttachment[]): AnnouncementAttachment[] => attachments?.map((item) => ({\n  filename: item.filename,\n  path: item.path,\n  contentType: item.content_type,\n}));\n\nexport const translateSingleAnnouncement = (announcement: ApiSingleAnnouncement): AnnouncementData => {\n  const hasRecipients = announcement.recipients !== undefined && Object.keys(announcement.recipients).length > 0;\n\n  return (\n    {\n      attachments: translateAnnouncementAttachment(announcement.attachments),\n      category: announcement.category,\n      announcementNumber: announcement.announcement_number,\n      author: announcement.author,\n      createdAt: announcement.created_at,\n      description: announcement.description,\n      id: announcement.id,\n      title: announcement.title,\n      status: announcement.status,\n      expiresAt: announcement.expires_at,\n      ...(hasRecipients && {\n        recipients: {\n          roles: announcement.recipients['access/roles'],\n          homeownerAssociations: announcement.recipients['tenants/homeowner_associations'],\n          buildings: announcement.recipients['tenants/buildings'],\n          estates: announcement.recipients['tenants/estates'],\n          tenants: announcement.recipients['tenants/tenants'],\n          employees: announcement.recipients['users/accounts'],\n        },\n      }),\n    });\n};\n\nconst translateAnnouncement = (announcement: ApiAnnouncement): AnnouncementData => ({\n  attachments: translateAnnouncementAttachment(announcement.attachments),\n  category: announcement.category,\n  announcementNumber: announcement.announcement_number,\n  author: announcement.author,\n  createdAt: announcement.created_at,\n  description: announcement.description,\n  id: announcement.id,\n  title: announcement.title,\n  status: announcement.status,\n  expiresAt: announcement.expires_at,\n});\n\nexport const translateAnnouncements = ({ announcements, metadata }: ApiAnnouncementsResponse): Announcements => ({\n  metadata,\n  announcements: announcements.map((apiAnnouncement) => translateAnnouncement(apiAnnouncement)),\n});\n\nexport const translateAnnouncementToApi = (data: AnnouncementInputs) => {\n  const form = new FormData();\n  form.append('announcement[title]', data.title);\n  form.append('announcement[description]', data.description);\n  if (data.expiresAt) form.append('announcement[expires_at]', data.expiresAt);\n  data.attachments.forEach((attachment) => {\n    if (attachment.file?.length) {\n      form.append('announcement[attachments][]', attachment.file[0]);\n    }\n  });\n  data.employees.forEach((employee) => {\n    form.append('announcement[recipients][users/accounts][]', employee);\n  });\n  data.homeownerAssociations.forEach((hoa) => {\n    form.append('announcement[recipients][tenants/homeowner_associations][]', hoa);\n  });\n  data.buildings.forEach((building) => {\n    form.append('announcement[recipients][tenants/buildings][]', building);\n  });\n  data.estates.forEach((estate) => {\n    form.append('announcement[recipients][tenants/estates][]', estate);\n  });\n  data.tenants.forEach((tenant) => {\n    form.append('announcement[recipients][tenants/tenants][]', tenant);\n  });\n  data.roles.forEach((role) => {\n    form.append('announcement[recipients][access/roles][]', role);\n  });\n  return form;\n};\n\nexport const translateChangeAnnouncementToApi = async (data: FullChangeAnnouncementData): Promise<FormData> => {\n  const form = new FormData();\n  form.append('id', data.id);\n  form.append('announcement[title]', data.title);\n  form.append('announcement[description]', data.description);\n  form.append('announcement[replace_recipients]', 'true');\n  if (data.expiresAt) form.append('announcement[expires_at]', data.expiresAt);\n\n  const files = await Promise.all(\n    data.oldAttachments.map(\n      async (file) => fetch(file.path)\n        .then((r) => r.blob())\n        .then((blobFile) => new File([blobFile], file.filename, { type: file.contentType })),\n    ),\n  );\n\n  files.forEach((file) => form.append('announcement[attachments][]', file));\n\n  data.attachments.forEach((attachment) => {\n    if (attachment.file?.length) {\n      form.append('announcement[attachments][]', attachment.file[0]);\n    }\n  });\n\n  if (data.employees) {\n    data.employees.forEach((employee) => {\n      form.append('announcement[recipients][users/accounts][]', employee);\n    });\n  }\n  if (data.homeownerAssociations) {\n    data.homeownerAssociations.forEach((hoa) => {\n      form.append('announcement[recipients][tenants/homeowner_associations][]', hoa);\n    });\n  }\n  if (data.buildings) {\n    data.buildings.forEach((building) => {\n      form.append('announcement[recipients][tenants/buildings][]', building);\n    });\n  }\n  if (data.estates) {\n    data.estates.forEach((estate) => {\n      form.append('announcement[recipients][tenants/estates][]', estate);\n    });\n  }\n  if (data.tenants) {\n    data.tenants.forEach((tenant) => {\n      form.append('announcement[recipients][tenants/tenants][]', tenant);\n    });\n  }\n  if (data.roles) {\n    data.roles.forEach((role) => {\n      form.append('announcement[recipients][access/roles][]', role);\n    });\n  }\n  return form;\n};\n", "import {\n  Residency, PostResidencyUpdate, ApiPostResidencyUpdate, ApiResidencyResponse,\n} from './residencyTypes';\n\nexport const translateApitoResidency = ({ residency_amendments }: ApiResidencyResponse): Residency[] => residency_amendments.map((residency) => ({\n  accepted: residency.accepted,\n  tenantsNumber: residency.tenants_number,\n  createdAt: residency.created_at,\n  validFrom: residency.valid_from,\n}));\n\nexport const translateResidencyUpdateToApi = (id: string, residency: PostResidencyUpdate): ApiPostResidencyUpdate => ({\n  venue_id: id,\n  tenants_number: residency.tenantsNumber,\n  valid_from: residency.validFrom,\n});\n", "import { EndpointBuilder } from '@reduxjs/toolkit/dist/query/endpointDefinitions';\nimport { ApiBaseQuery, ApiTagTypes } from '../../baseQuery';\nimport {\n  ApiResidencyResponse, Residency, ApiPostResidencyUpdate,\n} from './residencyTypes';\nimport { translateApitoResidency } from './residencyTranslator';\n\nexport const residencyQueries = (builder: EndpointBuilder<ApiBaseQuery, ApiTagTypes, 'api'>) => ({\n  getResidency: builder.query<Residency[], string>({\n    query: (id) => `/tenants/venues/${id}/residency_amendments/list`,\n    transformResponse(baseQueryReturnValue: ApiResidencyResponse): Residency[] {\n      return translateApitoResidency(baseQueryReturnValue);\n    },\n    providesTags: ['Residency'],\n  }),\n  postResidencyUpdate: builder.mutation<any, ApiPostResidencyUpdate>({\n    query: (residency) => ({\n      url: `/tenants/venues/${residency.venue_id}/residency_amendments/add`,\n      method: 'POST',\n      body: residency,\n    }),\n    invalidatesTags: ['Residency', 'ActivityLog'],\n  }),\n});\n", "import { EndpointBuilder } from '@reduxjs/toolkit/dist/query/endpointDefinitions';\nimport queryString from 'query-string';\nimport {\n  ApiBaseQuery, ApiTagTypes,\n} from '../../baseQuery';\nimport { Tenants, Tenant } from './tenantsTypes';\n\nexport const tenantsQueries = (builder: EndpointBuilder<ApiBaseQuery, ApiTagTypes, 'api'>) => ({\n  getTenants: builder.query<Tenant[], Record<string, string | null>>({\n    query: (params) => {\n      const stringifiedParams = queryString.stringify(params, { arrayFormat: 'bracket' });\n      return `tenants/list?${stringifiedParams}`;\n    },\n    transformResponse(baseQueryReturnValue: Tenants): Tenant[] {\n      return baseQueryReturnValue.tenants;\n    },\n  }),\n});\n", "import { EndpointBuilder } from '@reduxjs/toolkit/dist/query/endpointDefinitions';\nimport queryString from 'query-string';\nimport {\n  ApiBaseQuery, ApiTagTypes,\n} from '../../baseQuery';\nimport {\n  Venues, Venue, VenueDetailsApiResponse, VenueDetails,\n} from './venuesTypes';\nimport { translateVenue } from './venuesTranslator';\n\nexport const venuesQueries = (builder: EndpointBuilder<ApiBaseQuery, ApiTagTypes, 'api'>) => ({\n  getVenues: builder.query<Venue[], Record<string, string | null>>({\n    query: (params) => {\n      const stringifiedParams = queryString.stringify(params, { arrayFormat: 'bracket' });\n      return `venues/list?${stringifiedParams}`;\n    },\n    transformResponse(baseQueryReturnValue: Venues): Venue[] {\n      return baseQueryReturnValue.venues;\n    },\n  }),\n  getVenueDetails: builder.query<VenueDetails, string>({\n    query: (id) => `meters/venues/${id}/show`,\n    transformResponse(baseQueryReturnValue: VenueDetailsApiResponse): VenueDetails {\n      return translateVenue(baseQueryReturnValue);\n    },\n  }),\n});\n", "import { VenueDetails, VenueDetailsApiResponse } from './venuesTypes';\n\nexport const translateVenue = ({ venue }: VenueDetailsApiResponse): VenueDetails => ({\n  building: venue.building,\n  code: venue.code,\n  homeownerAssociation: venue.homeowner_association,\n  id: venue.id,\n  residencyFrom: venue.residency_from,\n  residencyUntil: venue.residency_until,\n  tenant: venue.tenant,\n  tenantId: venue.tenant_external_id,\n});\n", "import { EndpointBuilder } from '@reduxjs/toolkit/dist/query/endpointDefinitions';\nimport queryString from 'query-string';\nimport {\n  ApiBaseQuery, ApiTagTypes,\n} from '../../baseQuery';\nimport { HomeownerAssociations, HomeownerAssociation } from './homeownerAssociatonsTypes';\n\nexport const homeownerAssociationsQueries = (builder: EndpointBuilder<ApiBaseQuery, ApiTagTypes, 'api'>) => ({\n  getHomeownerAssociations: builder.query<HomeownerAssociation[], Record<string, string | null>>({\n    query: (params) => {\n      const stringifiedParams = queryString.stringify(params, { arrayFormat: 'bracket' });\n      return `homeowner_associations/list?${stringifiedParams}`;\n    },\n    transformResponse(baseQueryReturnValue: HomeownerAssociations): HomeownerAssociation[] {\n      return baseQueryReturnValue.homeowner_associations;\n    },\n  }),\n});\n", "import { EndpointBuilder } from '@reduxjs/toolkit/dist/query/endpointDefinitions';\nimport queryString from 'query-string';\nimport { ApiBaseQuery, ApiTagTypes } from '../../baseQuery';\nimport {\n  ApiDocumentsResponse, ApiBMPaymentResponse,\n  ApiMonthsSettlementsResponse,\n  ApiPaymentsResponse,\n  ApiSettlementResponse,\n  ApiSettlementTitlesResponse,\n  ApiYearsResponse,\n  BalanceQuery,\n  MonthBalanceQuery,\n  MonthsTitle,\n  Payment, BMPayment, PaymentRequest,\n  SettlementTitle,\n  SettlementTitleBalance,\n  TitleBalanceQuery,\n  YearsBalance,\n  ApiSettlementVenuesResponse,\n  SettlementsVenues,\n  PaymentsHistory,\n  ApiPaymentsHistoryResponse,\n  PaymentsBalances,\n} from './settlementsTypes';\nimport {\n  translateApiPayments,\n  translateMonthsTitles,\n  translateBMPayment,\n  translateSettlementTitles,\n  translateTitleDocuments,\n  translateYears,\n  translateYearsBalance,\n  translateVenues,\n  translatePaymentHistory,\n  translateVenuesPaymentsBalances,\n} from './settlementsTranslator';\n\nexport const settlementsQueries = (builder: EndpointBuilder<ApiBaseQuery, ApiTagTypes, 'api'>) => ({\n  getPayments: builder.query<Payment[], { venue: string, tenantId?: string }>({\n    query: ({ venue, tenantId }) => `/settlements/venue/${venue}/list`.concat(tenantId ? `?tenant_id=${tenantId}` : ''),\n    transformResponse(baseQueryReturnValue: ApiPaymentsResponse): Payment[] {\n      return translateApiPayments(baseQueryReturnValue);\n    },\n    providesTags: () => ['SettlementsBalance', 'Payments'],\n  }),\n  getPaymentsHistory: builder.query<PaymentsHistory, Record<string, string>>({\n    query: (params) => {\n      const { venue, ...rest } = params;\n      const stringifiedParams = queryString.stringify(rest, { arrayFormat: 'bracket' });\n      return `/settlements/payments/venue/${venue}/list_history?${stringifiedParams}`;\n    },\n    transformResponse(baseQueryReturnValue: ApiPaymentsHistoryResponse): PaymentsHistory {\n      return translatePaymentHistory(baseQueryReturnValue);\n    },\n    providesTags: () => ['PaymentsHistory'],\n  }),\n  getSettlementsBalance: builder.query<YearsBalance, BalanceQuery>({\n    query: (params) => {\n      const { venue, ...rest } = params;\n      const stringifiedParams = queryString.stringify(rest, { arrayFormat: 'bracket' });\n      return `/settlements/venue/${venue}/year_balance/list?${stringifiedParams}`;\n    },\n    transformResponse(baseQueryReturnValue: ApiSettlementResponse): Promise<YearsBalance> | YearsBalance {\n      return translateYearsBalance(baseQueryReturnValue);\n    },\n    providesTags: () => ['SettlementsBalance'],\n  }),\n  getSettlementsYears: builder.query({\n    query: ({ venue: venueId, tenantId }) => `/settlements/venue/${venueId}/years/list?tenant_id=${tenantId || ''}`,\n    transformResponse(baseQueryReturnValue: ApiYearsResponse): string[] {\n      return translateYears(baseQueryReturnValue);\n    },\n  }),\n  getSettlementsTitles: builder.query({\n    query: ({ venue, tenantId }) => `/settlements/venue/${venue}/titles/list?tenant_id=${tenantId || ''}`,\n    transformResponse(baseQueryReturnValue: ApiSettlementTitlesResponse): SettlementTitle[] {\n      return translateSettlementTitles(baseQueryReturnValue);\n    },\n  }),\n  getMonthsSettlementsBalance: builder.query<MonthsTitle[], MonthBalanceQuery>({\n    query: (params) => {\n      const { venue, ...rest } = params;\n      const stringifiedParams = queryString.stringify(rest, { arrayFormat: 'bracket' });\n      return `/settlements/venue/${venue}/month_balance/list?${stringifiedParams}`;\n    },\n    transformResponse(baseQueryReturnValue: ApiMonthsSettlementsResponse): MonthsTitle[] {\n      return translateMonthsTitles(baseQueryReturnValue);\n    },\n    providesTags: () => ['MonthSettlementsBalance'],\n  }),\n  getTitleSettlementsBalance: builder.query<SettlementTitleBalance, TitleBalanceQuery>({\n    query: (params) => {\n      const { venue, ...rest } = params;\n      const stringifiedParams = queryString.stringify(rest, { arrayFormat: 'bracket' });\n      return `/settlements/venue/${venue}/documents/list?${stringifiedParams}`;\n    },\n    transformResponse(baseQueryReturnValue: ApiDocumentsResponse): SettlementTitleBalance {\n      return translateTitleDocuments(baseQueryReturnValue);\n    },\n    providesTags: () => ['SettlementsTitleBalance'],\n  }),\n  patchDocumentRead: builder.mutation<any, { documentId: string }>({\n    query: (queryArg) => ({\n      url: `/settlements/document/${queryArg.documentId}/read`,\n      method: 'PATCH',\n      body: {},\n    }),\n    invalidatesTags: ['SettlementsTitleBalance', 'ActivityLog'],\n  }),\n  postMakePayment: builder.mutation<BMPayment, PaymentRequest>({\n    query: (paymentInfo) => ({\n      url: '/settlements/payments/make',\n      method: 'POST',\n      body: paymentInfo,\n    }),\n    invalidatesTags: ['Payments', 'PaymentsHistory', 'ActivityLog'],\n    transformResponse(baseQueryReturnValue: ApiBMPaymentResponse): BMPayment {\n      return translateBMPayment(baseQueryReturnValue);\n    },\n  }),\n  getBMPayment: builder.query<BMPayment, string>({\n    query: (paymentId) => `/settlements/payments/${paymentId}/show`,\n    transformResponse(baseQueryReturnValue: ApiBMPaymentResponse): BMPayment {\n      return translateBMPayment(baseQueryReturnValue);\n    },\n    providesTags: ['Payments'],\n  }),\n  getPaymentsBalance: builder.query<PaymentsBalances, { venueId: string }>({\n    query: ({ venueId }) => '/settlements/payments/balance'.concat(venueId ? `?venue_id=${venueId}` : ''),\n    transformResponse(baseQueryReturnValue: PaymentsBalances) {\n      return translateVenuesPaymentsBalances(baseQueryReturnValue);\n    },\n    providesTags: ['PaymentsBalances'],\n  }),\n  getSettlementsVenues: builder.query<SettlementsVenues, null | Record<string, string>>({\n    query: (params) => {\n      const stringifiedParams = params ? queryString.stringify(params, { arrayFormat: 'bracket' }) : '';\n      return `/settlements/venues/list?${stringifiedParams}`;\n    },\n    transformResponse(baseQueryReturnValue: ApiSettlementVenuesResponse): SettlementsVenues {\n      return translateVenues(baseQueryReturnValue);\n    },\n  }),\n});\n", "import { PaginationMetadata } from '../../paginationTypes';\n\nexport const months = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december'] as const;\nexport type Month = typeof months[number];\n\nexport interface BalanceQuery {\n  venue: string,\n  year: string,\n  title_id?: string,\n  tenant_id?: string,\n}\n\nexport interface MonthBalanceQuery {\n  venue: string,\n  year: string,\n  month: string,\n  tenant_id?: string,\n}\n\nexport interface TitleBalanceQuery {\n  venue: string,\n  year: string,\n  month: string,\n  title_id: string,\n  tenant_id?: string,\n}\n\nexport interface ApiPaymentsResponse {\n  payments: ApiPayment[],\n}\n\nexport interface ApiPayment {\n  account_number: string,\n  title_names: string,\n  value: string,\n  bm_payment?: ApiBMPayment,\n}\n\nexport interface Payment {\n  accountNumber: string,\n  titleNames: string,\n  value: string,\n  bmPayment?: BMPayment,\n}\n\nexport interface ApiBMPaymentResponse {\n  payment: ApiBMPayment,\n}\n\nexport const paymentStatuses = ['pending', 'success', 'failure'] as const;\nexport type PaymentStatus = typeof paymentStatuses[number];\n\nexport interface ApiBMPayment {\n  id: string,\n  remote_id: string\n  order_id: string,\n  status: PaymentStatus,\n  description: string,\n  bank_account: string,\n  amount: string,\n  redirect_url: string,\n  payment_date?: string,\n}\n\nexport interface APISettlementVenue {\n  venue_id: string,\n  tenant_id: string,\n  address: string,\n  building: string,\n  city: string,\n  code: string,\n  homeowner_association: string,\n  membership: boolean,\n  residency_from: string,\n  residency_until: string,\n  tenant: string,\n  tenant_external_id: string,\n}\n\nexport interface ApiSettlementVenuesResponse {\n  metadata: PaginationMetadata,\n  venues: APISettlementVenue[],\n}\n\nexport interface SettlementVenue {\n  venueId: string,\n  tenantId: string,\n  address: string,\n  building: string,\n  code: string,\n  city: string,\n  homeownerAssociation: string,\n  membership: boolean,\n  residencyFrom: string,\n  residencyUntil: string,\n  tenant: string,\n  tenantExternalId: string,\n}\n\nexport interface SettlementsVenues {\n  metadata: PaginationMetadata,\n  venues: SettlementVenue[],\n}\n\nexport interface BMPayment {\n  id: string,\n  remoteId: string\n  orderId: string,\n  status: PaymentStatus,\n  description: string,\n  bankAccount: string,\n  amount: string,\n  redirectUrl: string,\n  paymentDate?: string,\n}\n\nexport interface ApiSettlementResponse {\n  months: {\n    [key: number]: ApiMonthBalance\n  },\n  year_balance: ApiMonthBalance\n}\n\nexport interface ApiYearsResponse {\n  years: number[]\n}\n\nexport interface ApiSettlementTitlesResponse {\n  titles: ApiSettlementTitle[]\n}\n\nexport interface ApiSettlementTitle {\n  id: string,\n  name: string,\n  bank_account_number: string,\n}\n\nexport interface ApiMonthsSettlementsResponse {\n  titles: {\n    [key: string]: ApiTitle,\n  }\n}\n\nexport interface ApiTitle {\n  name: string,\n  balance: string,\n  bank_account_number: string,\n}\n\nexport interface ApiDocumentsResponse {\n  entry_month_balance: ApiMonthBalance,\n  month_balance: ApiMonthBalance,\n  documents: ApiDocumentWithItems[],\n}\n\nexport interface ApiDocument {\n  balance: string,\n  credits: string,\n  date: string,\n  deadline: string,\n  debits: string\n  description: string\n  open: boolean,\n  operation: string,\n  value: string,\n  vat: string,\n  id: string,\n}\n\nexport interface ApiDocumentWithItems extends ApiDocument {\n  items?: ApiDocumentItem[],\n  read_at?: string | null,\n  attachment?: ApiDocumentAttachment,\n}\n\nexport interface ApiDocumentItem {\n  amount: string,\n  item_name: string,\n  position: string,\n  price: string,\n  unit: string,\n  value: string,\n  vat: string,\n}\n\nexport interface ApiDocumentAttachment {\n  content_type: string,\n  filename: string,\n  path: string,\n}\n\nexport interface SettlementTitleBalance {\n  title?: string | null,\n  openingBalance: Balance,\n  sum: Balance,\n  documents: SettlementDocument[]\n}\n\nexport interface SettlementDocument extends ApiDocument {\n  items: DocumentItem[],\n  readAt?: string,\n  attachment?: DocumentAttachment,\n}\n\nexport interface DocumentItem {\n  amount: string,\n  itemName: string,\n  position: string,\n  price: string,\n  unit: string,\n  value: string,\n  vat: string,\n}\n\nexport interface DocumentAttachment {\n  contentType: string,\n  filename: string,\n  path: string,\n}\n\nexport interface MonthsTitle {\n  id: string,\n  name: string,\n  balance: string,\n  bankAccountNumber: string,\n}\n\nexport interface SettlementTitle {\n  id: string,\n  name: string,\n  bankAccountNumber: string,\n}\n\nexport interface Balance {\n  balance: string,\n  credits: string,\n  debits: string,\n}\n\nexport interface ApiMonthBalance extends Balance {\n  title?: string | null,\n}\n\nexport interface YearsBalance {\n  openingBalance: Balance,\n  months: MonthBalance[],\n  sum: Balance,\n}\n\nexport type YearsBalances = Record<string, YearsBalance>;\n\nexport interface MonthBalance extends Balance {\n  month: Month,\n}\n\nexport interface PaymentRequest {\n  payment: {\n    amount: string\n    description: string\n    bank_account: string\n    email: string\n    tenants_venue_id: string\n  }\n}\n\nexport interface ApiPaymentsHistoryResponse {\n  metadata: PaginationMetadata,\n  payments: ApiHistoryPayment[],\n}\n\nexport interface ApiHistoryPayment {\n  status: PaymentStatus,\n  description: string,\n  bank_account: string,\n  amount: string,\n  payment_date: string,\n}\n\nexport interface PaymentsHistory {\n  metadata: PaginationMetadata,\n  payments: HistoryPayment[],\n}\n\nexport interface HistoryPayment {\n  status: PaymentStatus,\n  description: string,\n  bankAccount: string\n  amount: string,\n  paymentDate: string,\n}\n\nexport interface VenuePaymentsBalance {\n  balance: string,\n  liability: string,\n  overpayment: string,\n}\n\nexport interface PaymentsBalances {\n  [key: string]: VenuePaymentsBalance,\n}\n", "import { Buffer } from 'buffer';\n\nconst capitalize = (string: string): string => {\n  const lowerCased = string.toLowerCase();\n  return lowerCased.toLowerCase()[0].toUpperCase() + lowerCased.slice(1);\n};\n\nexport const formatNumber = (value: string | number): string => {\n  const val = typeof value === 'number' ? value.toString() : value;\n\n  return parseFloat(val?.replace(/,/, '.')).toLocaleString('pl-PL', {\n    useGrouping: true,\n    minimumFractionDigits: 2,\n    maximumFractionDigits: 10, // for meter readings\n  });\n};\n\nexport const formatBankAccount = (value: string): string => {\n  let formatted = value.slice(0, 2);\n\n  for (let i = 2; i < value.length; i += 4) {\n    formatted = `${formatted} ${value.slice(i, i + 4)}`;\n  }\n\n  return formatted;\n};\n\nexport const stringToBase64 = (string: string): string => {\n  const bytes = new TextEncoder().encode(string);\n  const stringBuffer = Buffer.from(bytes).toString('base64');\n  return stringBuffer;\n};\n\nexport const base64ToString = (string: string): string => {\n  const decodedBuffer = Buffer.from(string, 'base64');\n  const decodedString = new TextDecoder().decode(decodedBuffer);\n  return decodedString;\n};\n\nexport default capitalize;\n", "import {\n  months,\n  ApiSettlementResponse,\n  ApiMonthBalance,\n  YearsBalance,\n  MonthBalance,\n  ApiYearsResponse,\n  ApiSettlementTitlesResponse,\n  SettlementTitle,\n  ApiMonthsSettlementsResponse,\n  MonthsTitle,\n  ApiDocumentsResponse,\n  SettlementTitleBalance,\n  SettlementDocument,\n  ApiDocumentItem,\n  DocumentItem,\n  ApiDocumentWithItems,\n  ApiPayment,\n  Payment,\n  ApiPaymentsResponse,\n  ApiDocumentAttachment,\n  DocumentAttachment,\n  ApiBMPaymentResponse,\n  BMPayment,\n  ApiSettlementVenuesResponse,\n  SettlementsVenues,\n  ApiHistoryPayment,\n  HistoryPayment,\n  ApiPaymentsHistoryResponse,\n  PaymentsHistory,\n  PaymentsBalances,\n} from './settlementsTypes';\nimport { formatBankAccount, formatNumber } from '../../../../utils/formatters';\n\nexport const translateBMPayment = (apiResponse: ApiBMPaymentResponse): BMPayment => ({\n  id: apiResponse.payment.id,\n  amount: apiResponse.payment.amount,\n  bankAccount: apiResponse.payment.bank_account,\n  description: apiResponse.payment.description,\n  orderId: apiResponse.payment.order_id,\n  paymentDate: apiResponse.payment.payment_date,\n  redirectUrl: apiResponse.payment.redirect_url,\n  remoteId: apiResponse.payment.remote_id,\n  status: apiResponse.payment.status,\n});\n\nconst translatePayment = (apiPayment: ApiPayment): Payment => ({\n  value: apiPayment.value,\n  titleNames: apiPayment.title_names,\n  accountNumber: apiPayment.account_number,\n  bmPayment: apiPayment.bm_payment ? translateBMPayment({ payment: apiPayment.bm_payment }) : undefined,\n});\n\nexport const translateApiPayments = (apiPaymentsResponse: ApiPaymentsResponse): Payment[] => apiPaymentsResponse.payments.map(\n  (apiPayment) => translatePayment(apiPayment),\n);\n\nconst translateApiMonth = (apiMonth: ApiMonthBalance, monthNr: number): MonthBalance => ({\n  month: months[monthNr - 1],\n  balance: formatNumber(apiMonth.balance || '0.00'),\n  debits: formatNumber(apiMonth.debits || '0.00'),\n  credits: formatNumber(apiMonth.credits || '0.00'),\n});\n\nexport const translateYearsBalance = (apiResponse: ApiSettlementResponse): YearsBalance => {\n  const months = [];\n  for (let i = 1; i <= 12; i += 1) {\n    if (apiResponse.months[i]) {\n      months.push(translateApiMonth(apiResponse.months[i], i));\n    }\n  }\n  const openingBalance = {\n    balance: formatNumber(apiResponse.months['0'].balance || '0.00'),\n    debits: formatNumber(apiResponse.months['0'].debits || '0.00'),\n    credits: formatNumber(apiResponse.months['0'].credits || '0.00'),\n  };\n  const sum = {\n    debits: formatNumber(apiResponse.year_balance.debits || '0.00'),\n    credits: formatNumber(apiResponse.year_balance.credits || '0.00'),\n    balance: formatNumber(apiResponse.year_balance.balance || '0.00'),\n  };\n\n  return { openingBalance, months, sum };\n};\n\nexport const translateYears = (apiYears: ApiYearsResponse): string[] => (apiYears?.years || []).map((year) => year.toString());\n\nexport const translateSettlementTitles = (apiTitles: ApiSettlementTitlesResponse): SettlementTitle[] => apiTitles.titles.map((apiTitle) => ({\n  id: apiTitle.id,\n  name: apiTitle.name,\n  bankAccountNumber: apiTitle.bank_account_number,\n}));\n\nexport const translateMonthsTitles = (apiResponse: ApiMonthsSettlementsResponse): MonthsTitle[] => Object.keys(apiResponse.titles).map((key) => ({\n  id: key,\n  name: apiResponse.titles[key].name,\n  balance: formatNumber(apiResponse.titles[key].balance),\n  bankAccountNumber: apiResponse.titles[key].bank_account_number ? formatBankAccount(apiResponse.titles[key].bank_account_number) : '',\n}));\n\nexport const translateAttachment = (apiAttachment: ApiDocumentAttachment): DocumentAttachment => ({\n  path: apiAttachment.path,\n  contentType: apiAttachment.content_type,\n  filename: apiAttachment.filename,\n});\n\nexport const translateDocumentItem = (apiDocumentItem: ApiDocumentItem): DocumentItem => {\n  const {\n    item_name: itemName, amount, price, value, ...rest\n  } = apiDocumentItem;\n  return {\n    itemName,\n    amount: formatNumber(amount),\n    price: formatNumber(price),\n    value: formatNumber(value),\n    ...rest,\n  };\n};\n\nexport const translateDocument = (apiDocument: ApiDocumentWithItems): SettlementDocument => {\n  const {\n    items, attachment, read_at: readAt, debits, credits, balance, vat, value, ...rest\n  } = apiDocument;\n  return {\n    items: (items || []).map((apiItem) => translateDocumentItem(apiItem)),\n    attachment: attachment ? translateAttachment(attachment) : undefined,\n    readAt: readAt || undefined,\n    debits: formatNumber(debits),\n    credits: formatNumber(credits),\n    balance: formatNumber(balance),\n    vat: formatNumber(vat),\n    value: formatNumber(value),\n    ...rest,\n  };\n};\n\nexport const translateTitleDocuments = (apiResponse: ApiDocumentsResponse): SettlementTitleBalance => ({\n  title: apiResponse.entry_month_balance.title,\n  openingBalance: {\n    balance: formatNumber(apiResponse.entry_month_balance.balance),\n    debits: formatNumber(apiResponse.entry_month_balance.debits),\n    credits: formatNumber(apiResponse.entry_month_balance.credits),\n  },\n  sum: {\n    balance: formatNumber(apiResponse.month_balance.balance),\n    debits: formatNumber(apiResponse.month_balance.debits),\n    credits: formatNumber(apiResponse.month_balance.credits),\n  },\n  documents: apiResponse.documents.map((apiDocument: ApiDocumentWithItems) => translateDocument(apiDocument)),\n});\n\nexport const translateVenues = (apiResponse: ApiSettlementVenuesResponse): SettlementsVenues => ({\n  metadata: apiResponse.metadata,\n  venues: apiResponse.venues.map((apiVenue) => ({\n    venueId: apiVenue.venue_id,\n    tenantId: apiVenue.tenant_id,\n    address: apiVenue.address,\n    building: apiVenue.building,\n    city: apiVenue.city,\n    code: apiVenue.code,\n    homeownerAssociation: apiVenue.homeowner_association,\n    membership: apiVenue.membership,\n    residencyFrom: apiVenue.residency_from,\n    residencyUntil: apiVenue.residency_until,\n    tenant: apiVenue.tenant,\n    tenantExternalId: apiVenue.tenant_external_id,\n  })),\n});\n\nexport const translateHistoryPayment = (apiPayment: ApiHistoryPayment): HistoryPayment => ({\n  status: apiPayment.status,\n  description: apiPayment.description,\n  bankAccount: apiPayment.bank_account,\n  amount: apiPayment.amount,\n  paymentDate: apiPayment.payment_date,\n});\n\nexport const translatePaymentHistory = (apiHistory: ApiPaymentsHistoryResponse): PaymentsHistory => ({\n  metadata: apiHistory.metadata,\n  payments: apiHistory.payments.map((apiPayment) => translateHistoryPayment(apiPayment)),\n});\n\nexport const translateVenuesPaymentsBalances = (apiVenuesPaymentsBalances: PaymentsBalances) => (\n  Object.keys(apiVenuesPaymentsBalances).reduce((acc, currentVenueId) => ({\n    ...acc,\n    [currentVenueId]: {\n      balance: formatNumber(apiVenuesPaymentsBalances[currentVenueId].balance || '0.00'),\n      liability: formatNumber(apiVenuesPaymentsBalances[currentVenueId].liability || '0.00'),\n      overpayment: formatNumber(apiVenuesPaymentsBalances[currentVenueId].overpayment || '0.00'),\n    },\n  }), {}));\n", "import { EndpointBuilder } from '@reduxjs/toolkit/dist/query/endpointDefinitions';\nimport queryString from 'query-string';\nimport {\n  ApiBaseQuery, ApiTagTypes,\n} from '../../baseQuery';\nimport { ApiEmployees, Employee } from './employeesTypes';\nimport { translateApiToEmployees } from './employeesTranslator';\n\nexport const employeesQueries = (builder: EndpointBuilder<ApiBaseQuery, ApiTagTypes, 'api'>) => ({\n  getEmployees: builder.query<Employee[], Record<string, string | null>>({\n    query: (params) => {\n      const stringifiedParams = queryString.stringify(params, { arrayFormat: 'bracket' });\n      return `employees/list?${stringifiedParams}`;\n    },\n    transformResponse(baseQueryReturnValue: ApiEmployees): Employee[] {\n      return translateApiToEmployees(baseQueryReturnValue).employees;\n    },\n    providesTags: () => ['Employees'],\n  }),\n});\n", "import { ApiEmployees } from './employeesTypes';\n\nexport const translateApiToEmployees = ({ employees }: ApiEmployees) => ({\n  employees: employees.map((apiEmployee) => ({\n    name: apiEmployee.full_name,\n    id: apiEmployee.id,\n  })),\n});\n", "import { EndpointBuilder } from '@reduxjs/toolkit/dist/query/endpointDefinitions';\nimport queryString from 'query-string';\nimport {\n  ApiBaseQuery, ApiTagTypes,\n} from '../../baseQuery';\nimport {\n  translateApiTasks,\n  translateFullApiTask,\n  translateFullTaskStatus,\n  translateTaskStatus,\n  translateServices,\n  translateCommissions,\n} from './tasksTranslator';\nimport {\n  ApiTasksResponse,\n  TaskColumnId,\n  ApiColumnsSettings,\n  ApiPostColumnsSettings,\n  Tasks,\n  ApiTaskCategories,\n  ApiTaskResponse,\n  FullTask,\n  ApiPostChangeTaskData,\n  ApiPostTaskComment,\n  ApiPostTaskCommission,\n  TaskCategory,\n  TaskStatus,\n  ApiTaskStatuses,\n  FullTaskStatus,\n  ApiPortalProServiceResponse,\n  ApiTaskCommissionStatusResponse,\n  PortalProService, \n  TaskCommission\n} from './tasksTypes';\n\nexport const tasksQueries = (builder: EndpointBuilder<ApiBaseQuery, ApiTagTypes, 'api'>) => ({\n  getTasks: builder.query<Tasks, Record<string, string | string[]>>({\n    \n    query: (params) => {\n     console.log(\"params\", params);\n      const stringifiedParams = queryString.stringify(params, { arrayFormat: 'bracket' });\n      return `tasks/list?${stringifiedParams}`;\n    },\n    transformResponse(baseQueryReturnValue: ApiTasksResponse): Tasks {\n      return translateApiTasks(baseQueryReturnValue);\n    },\n    providesTags: () => ['Tasks'],\n  }),\n  getTask: builder.query<FullTask, string>({\n    query: (id) => `tasks/${id}/show`,\n    transformResponse(baseQueryReturnValue: ApiTaskResponse): FullTask {\n      return translateFullApiTask(baseQueryReturnValue.task);\n    },\n    providesTags: () => ['Task'],\n  }),\n  postTaskComment: builder.mutation<any, ApiPostTaskComment>({\n    query: ({ id, payload }) => ({\n      url: `/tasks/${id}/add_comment`,\n      method: 'POST',\n      body: payload,\n    }),\n    invalidatesTags: () => ['Task', 'Tasks'],\n  }),\n  postTaskCommission: builder.mutation<any, ApiPostTaskCommission>({\n    query: ({ id, payload }) => ({\n      url: `/tasks/${id}/add_commission`,\n      method: 'POST',\n      body: payload,\n    }),\n    invalidatesTags: () => ['Task', 'Tasks'],\n  }),\n  putTaskCommissions: builder.mutation<any, any>({\n    query: ({ id }) => ({\n      url: `/tasks/${id}/commission_status`,\n      method: 'PUT',\n      body: {},\n    }),\n    invalidatesTags: () => ['Task', 'Tasks'],\n  }),\n  getTaskCommissionStatus: builder.query<any, any>({\n    query: (id) => `/tasks/${id}/commission_status`,\n    transformResponse(baseQueryReturnValue: ApiTaskCommissionStatusResponse): TaskCommission {\n      return translateCommissions(baseQueryReturnValue.commission);\n    }//, providesTags: () => ['ProPortalServices']//,\n  }),\n  getPortalProServices: builder.query<PortalProService[], any>({\n    query: (params) => {\n      const stringifiedParams = queryString.stringify(params, { arrayFormat: 'bracket' });\n\n      return `/tasks/list/commission_portal_pro_services?${stringifiedParams}`;\n    },\n    transformResponse(baseQueryReturnValue: ApiPortalProServiceResponse): PortalProService[] {\n      return translateServices(baseQueryReturnValue);\n    },\n    providesTags: () => ['ProPortalServices'],\n  }),\n  getTaskCategories: builder.query<TaskCategory[], void>({\n    query: () => '/task_categories/list',\n    transformResponse(baseQueryReturnValue: ApiTaskCategories) {\n      return baseQueryReturnValue.task_categories;\n    },\n    providesTags: () => ['TasksCategories'],\n  }),\n  getSelectedTasksColumns: builder.query<TaskColumnId[], void>({\n    query: () => '/tasks/list/columns_settings',\n    transformResponse(baseQueryReturnValue: ApiColumnsSettings): TaskColumnId[] {\n      return baseQueryReturnValue.selected_columns;\n    },\n    providesTags: () => ['ColumnSettings'],\n  }),\n  postSelectedTasksColumns: builder.mutation<any, ApiPostColumnsSettings>({\n    query: (body) => ({\n      url: '/tasks/list/change_columns_settings',\n      method: 'POST',\n      body,\n    }),\n    invalidatesTags: () => ['ColumnSettings', 'Tasks'],\n  }),\n  postChangeTask: builder.mutation<any, ApiPostChangeTaskData>({\n    query: (tasks) => ({\n      url: '/tasks/change',\n      method: 'POST',\n      body: tasks,\n    }),\n    invalidatesTags: () => ['Tasks', 'Task', 'ActivityLog'],\n  }),\n  postTaskCategory: builder.mutation<any, { name: string }>({\n    query: (body) => ({\n      url: '/task_categories/add',\n      method: 'POST',\n      body,\n    }),\n    invalidatesTags: ['TasksCategories'],\n  }),\n  patchTaskCategory: builder.mutation<any, { name: string, id: string }>({\n    query: ({ id, name }) => ({\n      url: `/task_categories/${id}/change`,\n      method: 'PATCH',\n      body: { name },\n    }),\n    invalidatesTags: ['TasksCategories'],\n  }),\n  deleteTaskCategory: builder.mutation<any, { id: string }>({\n    query: ({ id }) => ({\n      url: `/task_categories/${id}/remove`,\n      method: 'DELETE',\n    }),\n    invalidatesTags: ['TasksCategories'],\n  }),\n  getTaskStatuses: builder.query<TaskStatus[], void>({\n    query: () => 'tickets/statuses/task/list',\n    transformResponse(baseQueryReturnValue: ApiTaskStatuses) {\n      return translateTaskStatus(baseQueryReturnValue).statuses;\n    },\n    providesTags: ['TasksStatuses'],\n  }),\n  getFullTaskStatuses: builder.query<FullTaskStatus[], void>({\n    query: () => 'tickets/statuses/task/list',\n    transformResponse(baseQueryReturnValue: ApiTaskStatuses) {\n      return translateFullTaskStatus(baseQueryReturnValue);\n    },\n    providesTags: ['TasksStatuses'],\n  }),\n});\n", "import {\n  ApiCompanyDetailsResponse,\n  ApiCompanyTaxDetailsResponse,\n  ApiCompanySettingsResponse,\n  ApiCompanyNotificationSettingsResponse,\n  FormCompanyDetails,\n  FormCompanyTaxDetails,\n  CompanySettings,\n  CompanyNotificationSettings,\n  CompanyData,\n  CompanyTaxDetails,\n  CompanyFormInputs,\n  CompanyAttachment,\n  MailServerConfig, ApiMailServerConfigResponse, MailServerConfigFormInputs, ApiPutMailServerConfig,\n} from './companyTypes';\n\nexport const translateCompanySettings = (apiCompanySettings: ApiCompanySettingsResponse): CompanySettings => ({\n  colorPalette: apiCompanySettings.settings.color_palette,\n  homeownerAssociationsMode: apiCompanySettings.settings.hoa_mode,\n  tenantlessMode: apiCompanySettings.settings.tenantless_mode,\n  resolutionsModuleEnabled: apiCompanySettings.settings.resolutions_enabled,\n  settlementsModuleEnabled: apiCompanySettings.settings.settlements_enabled,\n  paymentsModuleEnabled: apiCompanySettings.settings.payments_enabled,\n  ticketsModuleEnabled: apiCompanySettings.settings.tickets_enabled,\n  metersModuleEnabled: apiCompanySettings.settings.meters_enabled,\n  documentsModuleEnabled: apiCompanySettings.settings.documents_enabled,\n  announcementsModuleEnabled: apiCompanySettings.settings.announcements_enabled,\n  notificationsModuleEnabled: apiCompanySettings.settings.notifications_enabled,\n  portalProModuleEnabled: apiCompanySettings.settings.portal_pro_enabled,\n  version: apiCompanySettings.settings.version,\n});\n\nexport const translateCompanyNotificationSettings = (apiCompanySettings: ApiCompanyNotificationSettingsResponse): CompanyNotificationSettings => ({\n  emailNotifications: apiCompanySettings.notification_settings.email_notifications,\n  onlineNotifications: apiCompanySettings.notification_settings.online_notifications,\n});\n\nexport const translateCompanyData = ({ details, attachments }: ApiCompanyDetailsResponse): CompanyData => ({\n  name: details.name,\n  streetAddress: details.street_address,\n  postalCode: details.postcode,\n  city: details.city,\n  phone: details.phone,\n  website: details.website,\n  logo: attachments.logo,\n  backgroundImage: attachments.background_photo,\n  regulations: attachments.regulations,\n});\n\nexport const translateCompanyTaxData = ({ tax_details }: ApiCompanyTaxDetailsResponse): CompanyTaxDetails => ({\n  vatCode: tax_details.vat_code,\n  companyCode: tax_details.company_code,\n  contactEmail: tax_details.contact_email,\n  contactPhoneNumber: tax_details.contact_phone_number,\n});\n\nexport const translateCompanyDetailsToApi = ({\n  name, streetAddress, postalCode, city, phone, website,\n}: CompanyFormInputs): FormCompanyDetails => ({\n  name,\n  street_address: streetAddress,\n  postcode: postalCode,\n  city,\n  phone,\n  website,\n});\n\nexport const translateCompanyTaxDetailsToApi = ({\n  vatCode, companyCode, contactEmail, contactPhoneNumber,\n}: CompanyTaxDetails): FormCompanyTaxDetails => ({\n  vat_code: vatCode,\n  company_code: companyCode,\n  contact_email: contactEmail,\n  contact_phone_number: contactPhoneNumber,\n});\n\nconst appendCorrectFile = async (form: FormData, id: string, newFile: FileList | undefined, oldFile: CompanyAttachment | undefined) => {\n  if ((!newFile || newFile.length === 0) && oldFile) {\n    await fetch(oldFile.path)\n      .then((r) => r.blob())\n      .then((blobFile) => new File([blobFile], oldFile.filename || '', { type: oldFile.content_type }))\n      .then((logoFile) => {\n        form.append(id, logoFile);\n      });\n  } else if (newFile && newFile.length > 0) {\n    form.append(id, newFile[0]);\n  }\n};\n\nexport const translateCompanyAttachmentsToApi = async (data: CompanyFormInputs): Promise<FormData> => {\n  const form = new FormData();\n\n  await appendCorrectFile(form, 'logo', data.logo, data.oldLogo);\n  await appendCorrectFile(form, 'background_photo', data.backgroundImage, data.oldBackgroundImage);\n  await appendCorrectFile(form, 'regulations', data.regulations, data.oldRegulations);\n\n  return form;\n};\n\nexport const translateMailServerConfig = (ApiMailServerConfig: ApiMailServerConfigResponse): MailServerConfig => {\n  const {\n    user_name: userName, from_email: fromEmail, communication_encryption: communicationEncryption, ...rest\n  } = ApiMailServerConfig.mail_server_config;\n  return ({\n    ...rest,\n    userName,\n    fromEmail,\n    communicationEncryption,\n  });\n};\n\nexport const translateMailServerConfigToApi = (data: MailServerConfigFormInputs): ApiPutMailServerConfig => {\n  const {\n    userName, fromEmail, communicationEncryption, password, ...rest\n  } = data;\n\n  const mailServerConfigInputsData = {\n    ...rest,\n    user_name: userName,\n    from_email: fromEmail,\n    communication_encryption: communicationEncryption,\n  };\n\n  if (password && password.length > 0) {\n    return ({\n      ...mailServerConfigInputsData,\n      password,\n    });\n  }\n  return mailServerConfigInputsData;\n};\n", "import { EndpointBuilder } from '@reduxjs/toolkit/dist/query/endpointDefinitions';\nimport {\n  CompanySettings,\n  CompanyNotificationSettings,\n  ApiCompanySettingsResponse,\n  ApiCompanyNotificationSettingsResponse,\n  ApiCompanyDetailsResponse,\n  ApiCompanyTaxDetailsResponse,\n  FormCompanyDetails,\n  FormCompanyTaxDetails,\n  CompanyData,\n  ColorPalette,\n  MailServerConfig, ApiMailServerConfigResponse, ApiPutMailServerConfig,\n  CompanyTaxDetails,\n} from './companyTypes';\nimport {\n  translateCompanySettings, translateCompanyNotificationSettings, translateCompanyData, translateCompanyTaxData, translateMailServerConfig,\n} from './companyTranslator';\nimport {\n  ApiBaseQuery, ApiTagTypes,\n} from '../../baseQuery';\n\nexport const companyQueries = (builder: EndpointBuilder<ApiBaseQuery, ApiTagTypes, 'api'>) => ({\n  getCompanySettings: builder.query<CompanySettings, void>({\n    query: () => '/company/settings',\n    transformResponse(baseQueryReturnValue: ApiCompanySettingsResponse): CompanySettings {\n      return translateCompanySettings(baseQueryReturnValue);\n    },\n    providesTags: () => ['Company'],\n  }),\n  getCompanyNotificationSettings: builder.query<CompanyNotificationSettings, void>({\n    query: () => '/company/notification_settings',\n    transformResponse(baseQueryReturnValue: ApiCompanyNotificationSettingsResponse): CompanyNotificationSettings {\n      return translateCompanyNotificationSettings(baseQueryReturnValue);\n    },\n    providesTags: () => ['CompanyNotifications'],\n  }),\n  getCompanyData: builder.query<CompanyData, void>({\n    query: () => '/company/details/show',\n    transformResponse(baseQueryReturnValue: ApiCompanyDetailsResponse): CompanyData {\n      return translateCompanyData(baseQueryReturnValue);\n    },\n    providesTags: () => ['CompanyDetails'],\n  }),\n  getCompanyTaxData: builder.query<CompanyTaxDetails, void>({\n    query: () => '/company/tax_details/show',\n    transformResponse(baseQueryReturnValue: ApiCompanyTaxDetailsResponse): CompanyTaxDetails {\n      return translateCompanyTaxData(baseQueryReturnValue);\n    },\n    providesTags: () => ['CompanyTaxDetails'],\n  }),\n  putCompanyTaxDetails: builder.mutation<any, FormCompanyTaxDetails>({\n    query: (payload) => ({\n      url: '/company/tax_details/change',\n      method: 'PUT',\n      body: payload,\n    }),\n    invalidatesTags: () => ['CompanyTaxDetails'],\n  }),\n  putCompanyDetails: builder.mutation<any, FormCompanyDetails>({\n    query: (payload) => ({\n      url: '/company/details/change',\n      method: 'PUT',\n      body: payload,\n    }),\n    invalidatesTags: () => ['CompanyDetails'],\n  }),\n  postCompanyAttachments: builder.mutation<any, FormData>({\n    query: (payload) => ({\n      url: '/company/attachments/upload',\n      method: 'POST',\n      body: payload,\n    }),\n    invalidatesTags: () => ['CompanyDetails'],\n  }),\n  putColorPalette: builder.mutation<any, ColorPalette>({\n    query: (payload) => ({\n      url: '/company/settings/change',\n      method: 'PUT',\n      body: {\n        color_palette: payload,\n      },\n    }),\n    invalidatesTags: () => ['Company', 'UserAccess'],\n  }),\n  getMailServerConfig: builder.query<MailServerConfig, void>({\n    query: () => 'company/mail_server_config',\n    transformResponse(baseQueryReturnValue: ApiMailServerConfigResponse) {\n      return translateMailServerConfig(baseQueryReturnValue);\n    },\n    providesTags: () => ['MailServerConfig'],\n  }),\n  putChangeMailServerConfig: builder.mutation<any, ApiPutMailServerConfig>({\n    query: (payload) => ({\n      url: 'company/mail_server_config/change',\n      method: 'PUT',\n      body: payload,\n    }),\n    invalidatesTags: () => ['MailServerConfig'],\n  }),\n  postTestMailServerConfig: builder.mutation({\n    query: (payload) => ({\n      url: 'company/mail_server_config/test',\n      method: 'POST',\n      body: payload,\n    }),\n    invalidatesTags: () => ['MailServerConfig'],\n  }),\n  patchCompanyNotificationSetting: builder.mutation<any, any>({\n    query: (data) => ({\n      url: '/company/settings/change_notification_setting',\n      method: 'PATCH',\n      body: data,\n    }),\n    invalidatesTags: () => ['CompanyNotifications'],\n  }),\n});\n", "import { EndpointBuilder } from '@reduxjs/toolkit/dist/query/endpointDefinitions';\nimport queryString from 'query-string';\nimport {\n  ApiBaseQuery, ApiTagTypes,\n} from '../../baseQuery';\nimport {\n  translateDocuments,\n  translateFullKsefInvoice,\n  translateDocumentStatus,\n  translateFullDocument,\n  translateFullDocumentStatuses,\n  translateFullInvoiceStatuses,\n  translateInvoiceStatus,\n  translateKsefInvoices,\n  translateJournals,\n} from './documentsTranslator';\nimport {\n  ApiDocumentCategories,\n  ApiDocumentsResponse,\n  ApiDocumentStatuses,\n  Journals,\n  DocumentCategory,\n  DocumentsResponse,\n  DocumentStatus,\n  FullDocumentStatus,\n  InvoiceStatus,\n  FullInvoiceStatus,\n  FullDocument,\n  ApiFullDocument,\n  ApiFullKsefInvoice,\n  FullKsefInvoice,\n  ApiPostDocumentComment,\n  ApiPostKsefInvoiceComment,\n  ApiPostChangeDocumentData,\n  ApiPostChangeKsefInvoiceData,\n  FullJournal,\n  ApiFullJournal,\n  ApiPostFullJournal,\n  KsefJournals,\n  FullKsefJournal,\n  ApiFullKsefJournal,\n  ApiPostFullKsefJournal,\n  ApiKsefInvoicesResponse,\n  KsefInvoicesResponse,\n  ApiInvoiceStatuses,\n} from './documentsTypes';\nimport { ApiColumnsSettings, ApiPostColumnsSettings, TicketColumnId } from '../tickets/ticketsTypes';\nimport { ApiPostTask } from '../tasks/tasksTypes';\n\nexport const documentsQueries = (builder: EndpointBuilder<ApiBaseQuery, ApiTagTypes, 'api'>) => ({\n  getDocuments: builder.query<DocumentsResponse, Record<string, string> | void>({\n    query: (params) => {\n      const stringifiedParams = params && queryString.stringify(params, { arrayFormat: 'bracket' });\n      return `documents/list?${stringifiedParams}`;\n    },\n    transformResponse(baseQueryReturnValue: ApiDocumentsResponse): DocumentsResponse {\n      return translateDocuments(baseQueryReturnValue);\n    },\n    providesTags: ['Documents'],\n  }),\n  getKsefInvoices: builder.query<KsefInvoicesResponse, Record<string, string> | void>({\n    query: (params) => {\n      const stringifiedParams = params && queryString.stringify(params, { arrayFormat: 'bracket' });\n      return `ksef_invoices/list?${stringifiedParams}`;\n    },\n    transformResponse(baseQueryReturnValue: ApiKsefInvoicesResponse): KsefInvoicesResponse {\n      return translateKsefInvoices(baseQueryReturnValue);\n    },\n    providesTags: ['KsefInvoices'],\n  }),\n  getKsefInvoice: builder.query<FullKsefInvoice, string | void>({\n    query: (invoiceId) => `ksef_invoices/${invoiceId}/show`,\n    transformResponse(baseQueryReturnValue: ApiFullKsefInvoice): FullKsefInvoice {\n      return translateFullKsefInvoice(baseQueryReturnValue);\n    },\n    providesTags: () => ['KsefInvoices'],\n  }),\n  getDocument: builder.query<FullDocument, string | void>({\n    query: (documentId) => `documents/${documentId}/show`,\n    transformResponse(baseQueryReturnValue: ApiFullDocument): FullDocument {\n      return translateFullDocument(baseQueryReturnValue);\n    },\n    providesTags: () => ['Document'],\n  }),\n  postDocument: builder.mutation<any, FormData>({\n    query: (document) => ({\n      url: '/documents/add',\n      method: 'POST',\n      body: document,\n    }),\n    invalidatesTags: () => ['Documents'],\n  }),\n  postChangeDocument: builder.mutation<any, ApiPostChangeDocumentData>({\n    query: (documents) => ({\n      url: '/documents/change',\n      method: 'POST',\n      body: documents,\n    }),\n    invalidatesTags: () => ['Document', 'Documents', 'ActivityLog'],\n  }),\n  postChangeKsefInvoice: builder.mutation<any, ApiPostChangeKsefInvoiceData>({\n    query: (invoices) => ({\n      url: '/ksef_invoices/change',\n      method: 'POST',\n      body: invoices,\n    }),\n    invalidatesTags: () => ['KsefInvoices'],\n  }),\n  postRevokeDocument: builder.mutation<any, string>({\n    query: (id) => ({\n      url: `/documents/${id}/revoke`,\n      method: 'PATCH',\n    }),\n    invalidatesTags: () => ['Document', 'Documents', 'ActivityLog'],\n  }),\n  postDocumentComment: builder.mutation<any, ApiPostDocumentComment>({\n    query: ({ id, payload }) => ({\n      url: `/documents/${id}/add_comment`,\n      method: 'POST',\n      body: payload,\n    }),\n    invalidatesTags: () => ['Document', 'Documents'],\n  }),\n  postKsefInvoiceComment: builder.mutation<any, ApiPostKsefInvoiceComment>({\n    query: ({ id, payload }) => ({\n      url: `/ksef_invoices/${id}/add_comment`,\n      method: 'POST',\n      body: payload,\n    }),\n    invalidatesTags: () => ['KsefInvoices'],\n  }),\n  getDocumentsCategories: builder.query<DocumentCategory[], void>({\n    query: () => '/document_categories/list',\n    transformResponse(baseQueryReturnValue: ApiDocumentCategories): DocumentCategory[] {\n      return baseQueryReturnValue.document_categories;\n    },\n    providesTags: ['DocumentsCategories'],\n  }),\n  postDocumentCategory: builder.mutation<any, { name: string }>({\n    query: (body) => ({\n      url: '/document_categories/add',\n      method: 'POST',\n      body,\n    }),\n    invalidatesTags: ['DocumentsCategories'],\n  }),\n  patchDocumentCategory: builder.mutation<any, { name: string, id: string }>({\n    query: ({ id, name }) => ({\n      url: `/document_categories/${id}/change`,\n      method: 'PATCH',\n      body: { name },\n    }),\n    invalidatesTags: ['DocumentsCategories'],\n  }),\n  deleteDocumentCategory: builder.mutation<any, { id: string }>({\n    query: ({ id }) => ({\n      url: `/document_categories/${id}/remove`,\n      method: 'DELETE',\n    }),\n    invalidatesTags: ['DocumentsCategories'],\n  }),\n  getDocumentStatuses: builder.query<DocumentStatus[], void>({\n    query: () => 'tickets/statuses/document/list',\n    transformResponse(baseQueryReturnValue: ApiDocumentStatuses) {\n      return translateDocumentStatus(baseQueryReturnValue);\n    },\n    providesTags: ['DocumentsStatuses'],\n  }),\n  postTaskForDocument: builder.mutation<any, ApiPostTask>({\n    query: ({ id, task }) => ({\n      url: `/documents/${id}/add_task`,\n      method: 'POST',\n      body: task,\n    }),\n    invalidatesTags: () => ['Tasks', 'Task', 'Documents', 'ActivityLog'],\n  }),\n  getFullDocumentStatuses: builder.query<FullDocumentStatus[], void>({\n    query: () => 'tickets/statuses/document/list',\n    transformResponse(baseQueryReturnValue: ApiDocumentStatuses) {\n      return translateFullDocumentStatuses(baseQueryReturnValue);\n    },\n    providesTags: ['DocumentsStatuses'],\n  }),\n  getInvoiceStatuses: builder.query<InvoiceStatus[], void>({\n    query: () => 'ksef_invoice_statuses/list',\n    transformResponse(baseQueryReturnValue: ApiInvoiceStatuses) {\n      return translateInvoiceStatus(baseQueryReturnValue);\n    },\n    providesTags: ['InvoiceStatuses'],\n  }),\n  getFullInvoiceStatuses: builder.query<FullInvoiceStatus[], void>({\n    query: () => 'ksef_invoice_statuses/list',\n    transformResponse(baseQueryReturnValue: ApiInvoiceStatuses) {\n      return translateFullInvoiceStatuses(baseQueryReturnValue);\n    },\n    providesTags: ['InvoiceStatuses'],\n  }),\n  putInvoiceStatus: builder.mutation<any, any>({\n    query: ({ id, ...body }) => ({\n      url: `ksef_invoice_statuses/${id}/change`,\n      method: 'PUT',\n      body,\n    }),\n    invalidatesTags: ['InvoiceStatuses', 'KsefInvoices'],\n  }),\n  getSelectedDocumentsColumns: builder.query<TicketColumnId[], void>({\n    query: () => '/documents/list/columns_settings',\n    transformResponse(baseQueryReturnValue: ApiColumnsSettings): TicketColumnId[] {\n      return baseQueryReturnValue.selected_columns;\n    },\n    providesTags: () => ['ColumnSettings'],\n  }),\n  postSelectedDocumentsColumns: builder.mutation<any, ApiPostColumnsSettings>({\n    query: (body) => ({\n      url: '/documents/list/change_columns_settings',\n      method: 'POST',\n      body,\n    }),\n    invalidatesTags: () => ['ColumnSettings', 'Documents'],\n  }),\n  getFullJournals: builder.query<Journals, Record<string, string> | void>({\n    query: (params) => {\n      const stringifiedParams = params && queryString.stringify(params, { arrayFormat: 'bracket' });\n      return `/journals/list?${stringifiedParams}`;\n    },\n    providesTags: ['Journals'],\n  }),\n  getJournals: builder.query<{ id: string, name: string }[], Record<string, string>>({\n    query: (params) => {\n      const stringifiedParams = params && queryString.stringify(params, { arrayFormat: 'bracket' });\n      return `/journals/list?${stringifiedParams}`;\n    },\n    transformResponse(baseQueryReturnValue: Journals) {\n      return translateJournals(baseQueryReturnValue);\n    },\n    providesTags: ['Journals'],\n  }),\n  getJournal: builder.query<FullJournal, string | void>({\n    query: (id) => `/journals/${id}/show`,\n    transformResponse(baseQueryReturnValue: ApiFullJournal) {\n      return baseQueryReturnValue.journal;\n    },\n    providesTags: () => ['Journal'],\n  }),\n  postJournal: builder.mutation<any, FullJournal>({\n    query: (journal) => ({\n      url: '/journals/add',\n      method: 'POST',\n      body: journal,\n    }),\n    invalidatesTags: () => ['Journals', 'Journal'],\n  }),\n  changeJournal: builder.mutation<any, ApiPostFullJournal>({\n    query: ({ id, journal }) => ({\n      url: `/journals/${id}/change`,\n      method: 'PATCH',\n      body: journal,\n    }),\n    invalidatesTags: () => ['Journals', 'Journal'],\n  }),\n  deleteJournal: builder.mutation<any, { id: string }>({\n    query: ({ id }) => ({\n      url: `/journals/${id}/remove`,\n      method: 'DELETE',\n    }),\n    invalidatesTags: () => ['Journals', 'Journal'],\n  }),\n  getFullKsefJournals: builder.query<KsefJournals, Record<string, string> | void>({\n    query: (params) => {\n      const stringifiedParams = params && queryString.stringify(params, { arrayFormat: 'bracket' });\n      return `/ksef_journals/list?${stringifiedParams}`;\n    },\n    providesTags: ['KsefJournals'],\n  }),\n  getKsefJournal: builder.query<FullKsefJournal, string | void>({\n    query: (id) => `/ksef_journals/${id}/show`,\n    transformResponse(baseQueryReturnValue: ApiFullKsefJournal) {\n      return baseQueryReturnValue.journal;\n    },\n    providesTags: () => ['KsefJournal'],\n  }),\n  changeKsefJournal: builder.mutation<any, ApiPostFullKsefJournal>({\n    query: ({ id, journal }) => ({\n      url: `/ksef_journals/${id}/change`,\n      method: 'PATCH',\n      body: journal,\n    }),\n    invalidatesTags: () => ['KsefJournals', 'KsefJournal'],\n  }),\n});\n", "import {\n  ApiDocumentsResponse,\n  ApiDocumentStatuses,\n  DocumentFormData,\n  DocumentsResponse,\n  DocumentStatus,\n  FullDocumentStatus,\n  ApiFullDocument,\n  FullDocument,\n  ApiDocumentAttachment,\n  ApiDocumentComment,\n  ApiDocumentStatus,\n  ApiInvoiceStatuses,\n  Attachment,\n  DocumentComment,\n  Journals,\n  ApiKsefInvoicesResponse,\n  KsefInvoicesResponse,\n  ApiFullKsefInvoice,\n  FullKsefInvoice,\n  InvoiceStatus,\n  FullInvoiceStatus,\n} from './documentsTypes';\nimport { CommentFormData } from '../../../components/CommentsList/CommentForm/CommentForm';\nimport { translateTask } from '../tasks/tasksTranslator';\n\nexport const translateDocuments = (apiDocuments: ApiDocumentsResponse): DocumentsResponse => ({\n  metadata: apiDocuments.metadata,\n  documents: apiDocuments.documents.map((apiDoc) => ({\n    category: apiDoc.category,\n    creationDate: apiDoc.created_at,\n    creator: apiDoc.creator,\n    description: apiDoc.description,\n    documentNumber: apiDoc.document_number,\n    id: apiDoc.id,\n    journal: apiDoc.journal,\n    realizer: apiDoc.realizer,\n    receiver: apiDoc.receiver,\n    sender: apiDoc.sender,\n    status: apiDoc.status,\n    tenant: apiDoc.tenant,\n    title: apiDoc.title,\n    revoked: apiDoc.revoked,\n  })),\n});\n\nexport const translateKsefInvoices = (apiInvoices: ApiKsefInvoicesResponse): KsefInvoicesResponse => ({\n  metadata: apiInvoices.metadata,\n  invoices: apiInvoices.invoices.map((invoice) => ({\n    id: invoice.id,\n    externalId: invoice.external_id,\n    invoiceNumber: invoice.invoice_number,\n    invoiceIssueDate: invoice.invoice_issue_date,\n    invoiceReceiptDate: invoice.invoice_receipt_date,\n    ksefReceiptDate: invoice.ksef_receipt_date,\n    deadline: invoice.deadline,\n    amount: invoice.amount,\n    ksefExternalId: invoice.ksef_external_id,\n    description: invoice.description,\n    journal: invoice.journal,\n    firm: invoice.firm,\n    status: invoice.status,\n    realizer: invoice.realizer,\n    accountingDisposition: invoice.accounting_disposition,\n    invoiceModule: invoice.invoice_module,\n  })),\n});\n\nexport const translateFullKsefInvoice = ({ invoice }: ApiFullKsefInvoice): FullKsefInvoice => ({\n  id: invoice.id,\n  externalId: invoice.external_id,\n  invoiceNumber: invoice.invoice_number,\n  invoiceIssueDate: invoice.invoice_issue_date,\n  invoiceReceiptDate: invoice.invoice_receipt_date,\n  ksefReceiptDate: invoice.ksef_receipt_date,\n  deadline: invoice.deadline,\n  amount: invoice.amount,\n  ksefExternalId: invoice.ksef_external_id,\n  description: invoice.description,\n  extensionType: invoice.extension_type,\n  compressed: invoice.compressed,\n  createdAt: invoice.created_at,\n  updatedAt: invoice.updated_at,\n  journal: invoice.journal,\n  firm: invoice.firm,\n  status: invoice.status,\n  realizer: invoice.realizer,\n  filePath: invoice.file_path,\n  attachments: (invoice.attachments || []).map((attachment) => ({\n    description: attachment.description,\n    filename: attachment.filename,\n    path: attachment.path,\n    contentType: attachment.content_type,\n  })),\n  comments: (invoice.comments || []).map((comment) => translateComment(comment)),\n  meritDescription: invoice.merit_description,\n  accountingDescription: invoice.accounting_description,\n  accountingDisposition: invoice.accounting_disposition,\n  invoiceModule: invoice.invoice_module,\n});\n\nexport const translateAttachment = (apiAttachment: ApiDocumentAttachment): Attachment => ({\n  description: apiAttachment.description,\n  filename: apiAttachment.filename,\n  path: apiAttachment.path,\n  contentType: apiAttachment.content_type,\n});\n\nexport const translateComment = (apiComment: ApiDocumentComment): DocumentComment => ({\n  author: apiComment.author,\n  content: apiComment.content,\n  createdAt: apiComment.created_at,\n  attachments: apiComment.attachments.map((apiAttachment) => translateAttachment(apiAttachment)),\n});\n\nexport const translateDocumentStatus = ({ statuses }: ApiDocumentStatuses): DocumentStatus[] => statuses.map((status) => ({\n  id: status.id,\n  name: status.external_name,\n}));\n\nexport const translateFullDocumentStatus = (apiStatus: ApiDocumentStatus): FullDocumentStatus => ({\n  id: apiStatus.id,\n  objectType: 'document',\n  name: apiStatus.name,\n  active: apiStatus.active,\n  internalName: apiStatus.internal_name,\n  externalName: apiStatus.external_name,\n  description: apiStatus.description,\n});\n\n// eslint-disable-next-line max-len\nexport const translateFullDocumentStatuses = ({ statuses }: ApiDocumentStatuses): FullDocumentStatus[] => statuses.map((status) => translateFullDocumentStatus(status));\n\nexport const translateInvoiceStatus = ({ statuses }: ApiInvoiceStatuses): InvoiceStatus[] => statuses.map((status) => ({\n  id: status.id,\n  name: status.external_name,\n}));\n\nexport const translateFullInvoiceStatuses = ({ statuses }: ApiInvoiceStatuses): FullInvoiceStatus[] => statuses.map((status) => ({\n  id: status.id,\n  objectType: 'ksef_invoice',\n  name: status.name,\n  active: status.active,\n  internalName: status.internal_name,\n  externalName: status.external_name,\n  description: status.description,\n}));\n\nexport const translateFullDocument = ({ document: apiDocument }: ApiFullDocument): FullDocument => ({\n  id: apiDocument.id,\n  documentNumber: apiDocument.document_number,\n  title: apiDocument.title,\n  sender: apiDocument.sender,\n  receiver: apiDocument.receiver,\n  description: apiDocument.description,\n  creationDate: apiDocument.created_at,\n  journal: apiDocument.journal,\n  status: translateFullDocumentStatus(apiDocument.status),\n  category: apiDocument.category,\n  creator: {\n    id: apiDocument.creator?.id,\n    name: apiDocument.creator?.full_name,\n  },\n  realizer: {\n    id: apiDocument.realizer?.id,\n    name: apiDocument.realizer?.full_name,\n  },\n  tenant: apiDocument.tenant,\n  attachments: apiDocument.attachments.map((apiAttachment) => translateAttachment(apiAttachment)),\n  comments: apiDocument.comments.map((apiAttachment) => translateComment(apiAttachment)),\n  tasks: (apiDocument.tasks || []).map((apiTask) => translateTask(apiTask)),\n  revoked: apiDocument.revoked,\n});\n\nexport const translateDocumentToFormData = (data: DocumentFormData): FormData => {\n  const form = new FormData();\n  form.append('document[title]', data.title);\n  form.append('document[journal_id]', data.journalId);\n  form.append('document[category_id]', data.categoryId);\n  form.append('document[description]', data.description);\n  if (data.number) form.append('document[document_number]', data.number);\n  if (data.sender) form.append('document[sender]', data.sender);\n  if (data.receiver) form.append('document[receiver]', data.receiver);\n  if (data.tenantId) form.append('document[tenant_id]', data.tenantId);\n  if (data.statusId) form.append('document[status_id]', data.statusId);\n  if (data.assigneeId) form.append('document[realizer_id]', data.assigneeId);\n\n  data.attachments.forEach((attachment, index) => {\n    if (attachment.file?.length) {\n      form.append(`document[attachments][${index}][file]`, attachment.file[0]);\n      form.append(`document[attachments][${index}][description]`, attachment.description);\n    }\n  });\n  return form;\n};\n\nexport const translateDocumentCommentToFormData = (data: CommentFormData): FormData => {\n  const form = new FormData();\n  form.append('comment[content]', data.content);\n  form.append('comment[public]', 'false');\n  data.attachments.forEach((attachment, index) => {\n    if (attachment.file?.length) {\n      form.append(`comment[attachments][${index}][file]`, attachment.file[0]);\n      form.append(`comment[attachments][${index}][description]`, attachment.description);\n    }\n  });\n  return form;\n};\n\nexport const translateKsefInvoiceCommentToFormData = (data: CommentFormData): FormData => (\n  translateDocumentCommentToFormData(data)\n);\n\nexport const translateJournals = ({ journals }: Journals) => journals.map((journal) => ({\n  id: journal.id,\n  name: journal.name,\n  journalType: journal.journal_type,\n}));\n", "import { EndpointBuilder } from '@reduxjs/toolkit/dist/query/endpointDefinitions';\nimport queryString from 'query-string';\nimport {\n  ApiNotificationsResponse,\n  Notifications,\n} from './notificationsTypes';\nimport {\n  translateNotifications\n} from './notificationsTranslator';\nimport {\n  ApiBaseQuery, ApiTagTypes,\n} from '../../baseQuery';\n\nexport const notificationsQueries = (builder: EndpointBuilder<ApiBaseQuery, ApiTagTypes, 'api'>) => ({\n  getNotifications: builder.query<Notifications, Record<string, string | boolean> | void>({\n    query: (params) => {\n      const stringifiedParams = params && queryString.stringify(params, { arrayFormat: 'bracket' });\n      return `notifications/list?${stringifiedParams}`;\n    },\n    transformResponse(baseQueryReturnValue: ApiNotificationsResponse): Promise<Notifications> | Notifications {\n      return translateNotifications(baseQueryReturnValue);\n    },\n    providesTags: () => ['Notifications', 'Task', 'Ticket', 'Announcement'],\n  }),\n  postMarkReadNotification: builder.mutation<any, any>({\n    query: (params) => ({\n      url: `notifications/read`,\n      method: 'POST',\n      params: params\n    }),\n    invalidatesTags: () => ['Notifications', 'Notification', 'Profile', 'Users', 'UserAccess'],\n  }),\n\n  postMarkReadAllNotification: builder.mutation<any, any>({\n    query: () => ({\n      url: `notifications/read_all`,\n      method: 'POST',\n    }),\n    invalidatesTags: () => ['Notifications', 'Notification', 'Profile', 'Users', 'UserAccess'],\n  }),\n\n  DeleteNotification: builder.mutation<any, any>({\n    query: (params) => ({\n      url: `notifications/destroy`,\n      method: 'DELETE',\n      params: params\n    }),\n    invalidatesTags: () => ['Notifications', 'Notification'],\n  }),\n});\n", "import {\n  ApiNotificationsResponse,\n  Notifications,\n  ApiNotification,\n  NotificationData,\n} from './notificationsTypes';\n\nconst translateNotification = (notification: ApiNotification): NotificationData => ({\n  read: notification.read,\n  createdAt: notification.created_at,\n  id: notification.id,\n  message: notification.message,\n  url: notification.url,\n});\n\nexport const translateNotifications = ({ notifications, metadata }: ApiNotificationsResponse): Notifications => ({\n  metadata,\n  notifications: notifications.map((apiNotification) => translateNotification(apiNotification)),\n});\n\n", "/**\n * Helper utilities for working with JWT access tokens\n */\n\nimport { Permission } from './generated/permissionsTypes';\n\nexport interface AccessTokenPayload {\n  account_id: number;\n  role: 'admin' | 'worker' | 'tenant' | 'member' | 'user' | 'admin|worker';\n  permissions: Permission[];\n  exp: number;\n  iat: number;\n}\n\n/**\n * Decodes a JWT token and returns the payload\n * Note: This does NOT verify the signature - verification happens server-side\n * This is only for reading the payload to determine what UI to show\n */\nexport function decodeAccessToken(token: string): AccessTokenPayload | null {\n  try {\n    const parts = token.split('.');\n    if (parts.length !== 3) {\n      return null;\n    }\n\n    const payload = parts[1];\n    const decoded = JSON.parse(atob(payload));\n    return decoded as AccessTokenPayload;\n  } catch (error) {\n    console.error('Failed to decode access token:', error);\n    return null;\n  }\n}\n\n/**\n * Gets the access token from sessionStorage\n */\nexport function getAccessToken(): string | null {\n  return sessionStorage.getItem('access_token');\n}\n\n/**\n * Stores the access token in sessionStorage\n */\nexport function setAccessToken(token: string): void {\n  sessionStorage.setItem('access_token', token);\n}\n\n/**\n * Removes the access token from sessionStorage\n */\nexport function clearAccessToken(): void {\n  sessionStorage.removeItem('access_token');\n}\n\n/**\n * Checks if the access token is expired\n */\nexport function isTokenExpired(token: string): boolean {\n  const payload = decodeAccessToken(token);\n  if (!payload) {\n    return true;\n  }\n\n  const now = Math.floor(Date.now() / 1000);\n  return payload.exp < now;\n}\n\n/**\n * Gets the decoded payload from the stored access token\n */\nexport function getAccessTokenPayload(): AccessTokenPayload | null {\n  const token = getAccessToken();\n  if (!token) {\n    return null;\n  }\n\n  if (isTokenExpired(token)) {\n    clearAccessToken();\n    return null;\n  }\n\n  return decodeAccessToken(token);\n}\n", "import { useIntl } from 'react-intl';\nimport { useCallback, useMemo } from 'react';\nimport { Permission, PermissionCategory } from '../../utils/generated/permissionsTypes';\n\nconst useMessages = () => {\n  const intl = useIntl();\n  return (id: string, values?: object) => intl.formatMessage({ id }, {...values});\n};\n\nexport default useMessages;\n\nexport const usePermissionMessages = () => {\n  const intl = useIntl();\n\n  // eslint-disable-next-line arrow-body-style\n  const getPermissionMessage = useCallback((category: PermissionCategory, permission: Permission | null): string => {\n    return intl.formatMessage({ id: `permissions.${category}${permission ? `.${permission}` : ''}` });\n  }, []);\n\n  return getPermissionMessage;\n};\n\nexport const useMonthsAndWeekDays = () => {\n  const getMessage = useMessages();\n  const months = useMemo(() => [\n    getMessage('datepicker.month.january'),\n    getMessage('datepicker.month.february'),\n    getMessage('datepicker.month.march'),\n    getMessage('datepicker.month.april'),\n    getMessage('datepicker.month.may'),\n    getMessage('datepicker.month.june'),\n    getMessage('datepicker.month.july'),\n    getMessage('datepicker.month.august'),\n    getMessage('datepicker.month.september'),\n    getMessage('datepicker.month.october'),\n    getMessage('datepicker.month.november'),\n    getMessage('datepicker.month.december'),\n  ], []);\n  const weekDays = useMemo(() => [\n    getMessage('datepicker.week.sunday'),\n    getMessage('datepicker.week.monday'),\n    getMessage('datepicker.week.tuesday'),\n    getMessage('datepicker.week.wednesday'),\n    getMessage('datepicker.week.thursday'),\n    getMessage('datepicker.week.friday'),\n    getMessage('datepicker.week.saturday'),\n  ], []);\n\n  return { months, weekDays };\n};\n", "import { useDispatch, useSelector } from 'react-redux';\nimport type { TypedUseSelectorHook } from 'react-redux';\nimport type { RootState, AppDispatch } from '../store/store';\n\n// Use throughout your app instead of plain `useDispatch` and `useSelector`\nexport const useAppDispatch: () => AppDispatch = useDispatch;\nexport const useAppSelector: TypedUseSelectorHook<RootState> = useSelector;\n", "import { useCallback } from 'react';\nimport { debounce } from 'debounce';\nimport { useAppDispatch, useAppSelector } from './reduxHooks';\nimport { FilterValues, setFilter, TableId } from '../store/appSlice';\n\nconst useFilters = <FilterInputsValues extends FilterValues>(filterFormId: TableId) => {\n  const dispatch = useAppDispatch();\n  const filterValues = useAppSelector((state) => state.app.filters.find((filter) => filter.id === filterFormId)?.values as FilterInputsValues);\n\n  const saveFilterValues = useCallback(\n    debounce(\n      (filters: FilterInputsValues) => {\n        dispatch(setFilter({ id: filterFormId, values: filters }));\n      },\n      500,\n    ),\n    [],\n  );\n\n  return { saveFilterValues, filterValues };\n};\n\nexport default useFilters;\n", "/* eslint-disable no-param-reassign */\nimport { createSlice } from '@reduxjs/toolkit';\nimport type { PayloadAction } from '@reduxjs/toolkit';\n\n// Define a type for the slice state\nexport interface InputValue {\n  inputId: string,\n  inputValue: string | boolean,\n}\n\ninterface PaginationPage {\n  tableId: TableId,\n  selectedPage: number,\n}\n\nexport interface AppState {\n  inputs: InputValue[],\n  pagination: PaginationPage[],\n  filters: Filter[],\n  sortParams: SortParams[],\n  selectedVenueId: string,\n  selectedVenueName: string,\n  selectedTicketsIds: string[],\n  selectedTasksIds: string[],\n  selectedDocumentsIds: string[],\n  selectedSettlementsTitle: string,\n  selectedSettlementsTenantId: string,\n  selectedNotificationsIds: string[],\n}\n\nexport interface InputPayload {\n  id: string,\n  value: string | boolean,\n}\n\nexport interface VenueSelectPayload {\n  userId: string,\n  selectedVenueId: string,\n  selectedVenueName: string,\n}\n\nexport interface PaginationSelectPayload {\n  id: TableId,\n  selectedPage: number,\n}\n\nexport interface FilterValues {\n  [key: string]: any,\n}\n\nexport interface Filter {\n  id: TableId,\n  values: FilterValues\n}\n\nexport interface SetFilterPayload extends Filter {}\n\nexport interface SortParamsValues {\n  [key: string]: string,\n}\n\nexport interface SortParams {\n  id: TableId,\n  values: SortParamsValues\n}\n\nexport interface SetSortParamsPayload extends SortParams {}\n\ninterface SelectedTicketIdPayload {\n  id: string,\n}\n\ninterface SelectedTaskIdPayload {\n  id: string,\n}\n\ninterface SelectedDocumentIdPayload {\n  id: string,\n}\n\ninterface SettlementTenantSelectPayload {\n  userId: string,\n  selectedSettlementsTenantId: string,\n}\n\ninterface SelectedNotificationIdPayload {\n  id: string,\n}\n\nexport type TableId = 'ticketsTable' | 'resolutionsList' | 'usersTable' | 'announcementsList' | 'permissionsTable' |\n'metersHistory' | 'myActivityLog' | 'usersActivityLog' | 'employeeTicketsTable' | 'yearsBalanceTable' | 'monthsBalanceTable' |\n'titlesBalanceTable' | 'tasksTable' | 'employeeResolutionsList' | `resolutionVotes${string}` | 'metersVenuesList' |\n'userAccounts' | 'settlementsVenuesList' | `paymentsHistoryTable${string}` | 'documentsList' | 'ksefInvoicesList' |\n'journalsList' | 'ksefJournalsList' | 'notificationsList';\n\nconst initialState: AppState = {\n  inputs: [],\n  pagination: [],\n  filters: [],\n  sortParams: [],\n  selectedVenueId: '',\n  selectedVenueName: '',\n  selectedTicketsIds: [],\n  selectedTasksIds: [],\n  selectedDocumentsIds: [],\n  selectedSettlementsTitle: '',\n  selectedSettlementsTenantId: '',\n  selectedNotificationsIds: [],\n};\n\nexport const appSlice = createSlice({\n  name: 'app',\n  initialState,\n  reducers: {\n    saveInput: (state, action: PayloadAction<InputPayload>) => {\n      state.inputs = state.inputs.filter((input) => input.inputId !== action.payload.id);\n      state.inputs.push({ inputId: action.payload.id, inputValue: action.payload.value });\n    },\n    saveSelectedNotificationId: (state, action: PayloadAction<SelectedNotificationIdPayload>) => {\n      if (state.selectedNotificationsIds.includes(action.payload.id)) {\n        state.selectedNotificationsIds = state.selectedNotificationsIds.filter((id) => id !== action.payload.id);\n      } else {\n        state.selectedNotificationsIds = state.selectedNotificationsIds.concat([action.payload.id]);\n      }\n    },\n    saveSelectedTicketId: (state, action: PayloadAction<SelectedTicketIdPayload>) => {\n      if (state.selectedTicketsIds.includes(action.payload.id)) {\n        state.selectedTicketsIds = state.selectedTicketsIds.filter((id) => id !== action.payload.id);\n      } else {\n        state.selectedTicketsIds = state.selectedTicketsIds.concat([action.payload.id]);\n      }\n    },\n    resetSelectedTicketIds: (state) => {\n      state.selectedTicketsIds = [];\n    },\n    saveSelectedTaskId: (state, action: PayloadAction<SelectedTaskIdPayload>) => {\n      if (state.selectedTasksIds.includes(action.payload.id)) {\n        state.selectedTasksIds = state.selectedTasksIds.filter((id) => id !== action.payload.id);\n      } else {\n        state.selectedTasksIds = state.selectedTasksIds.concat([action.payload.id]);\n      }\n    },\n    resetSelectedTaskIds: (state) => {\n      state.selectedTasksIds = [];\n    },\n    saveSelectedDocumentId: (state, action: PayloadAction<SelectedDocumentIdPayload>) => {\n      if (state.selectedDocumentsIds.includes(action.payload.id)) {\n        state.selectedDocumentsIds = state.selectedDocumentsIds.filter((id) => id !== action.payload.id);\n      } else {\n        state.selectedDocumentsIds = state.selectedDocumentsIds.concat([action.payload.id]);\n      }\n    },\n    resetSelectedDocumentIds: (state) => {\n      state.selectedDocumentsIds = [];\n    },\n    selectVenue: (state, action: PayloadAction<VenueSelectPayload>) => {\n      localStorage.setItem(`selectedVenueId-${action.payload.userId}`, action.payload.selectedVenueId);\n      localStorage.setItem(`selectedVenueName-${action.payload.userId}`, action.payload.selectedVenueName);\n      state.selectedVenueId = action.payload.selectedVenueId;\n      state.selectedVenueName = action.payload.selectedVenueName ? action.payload.selectedVenueName : state.selectedVenueName;\n    },\n    setPaginationPage: (state, action: PayloadAction<PaginationSelectPayload>) => {\n      state.pagination = state.pagination.filter((pagination) => pagination.tableId !== action.payload.id);\n      state.pagination.push({ tableId: action.payload.id, selectedPage: action.payload.selectedPage });\n    },\n    setFilter: (state, action: PayloadAction<SetFilterPayload>) => {\n      state.filters = state.filters.filter((filter) => filter.id !== action.payload.id);\n      state.filters.push({ id: action.payload.id, values: action.payload.values });\n      const connectedPagination = state.pagination.find((pagination) => pagination.tableId === action.payload.id);\n      if (connectedPagination) {\n        connectedPagination.selectedPage = 1;\n      }\n    },\n    setSortParams: (state, action: PayloadAction<SetSortParamsPayload>) => {\n      state.sortParams = state.sortParams.filter((param) => param.id !== action.payload.id);\n      state.sortParams.push({ id: action.payload.id, values: action.payload.values });\n    },\n    selectSettlementsTitle: (state, action: PayloadAction<string>) => {\n      state.selectedSettlementsTitle = action.payload;\n    },\n    selectSettlementsTenantId: (state, action: PayloadAction<SettlementTenantSelectPayload>) => {\n      localStorage.setItem(`selectedSettlementsTenantId-${action.payload.userId}`, action.payload.selectedSettlementsTenantId);\n      state.selectedSettlementsTenantId = action.payload.selectedSettlementsTenantId;\n    },\n  },\n});\n\nexport const {\n  saveInput, selectVenue, setPaginationPage, setFilter, setSortParams, saveSelectedTicketId, selectSettlementsTitle,\n  resetSelectedTicketIds, saveSelectedTaskId, resetSelectedTaskIds, saveSelectedDocumentId, resetSelectedDocumentIds,\n  selectSettlementsTenantId, saveSelectedNotificationId,\n} = appSlice.actions;\n\nexport default appSlice.reducer;\n", "import * as React from 'react';\nimport { useEffect, PropsWithChildren } from 'react';\n\nimport { useNavigate } from 'react-router-dom';\nimport { FetchBaseQueryError } from '@reduxjs/toolkit/dist/query';\nimport Sidebar from '../Navigation/Sidebar';\nimport { useColorPalette } from '../../hooks/useColorPallete';\n\nexport type NavigationRoutes = 'dashboard' | 'local' | 'local.meters' | 'local.peopleCount' | 'profile' | 'tickets' | 'users' | 'permissions' | 'roles' |\n'resolutions' | 'announcements' | 'payments' | 'settlements' | 'tasks' | 'parameters' | 'settings' | 'documents' |\n'documents_in' | 'documents_out' | 'documents_ksef' | 'notifications';\n\ntype PasswordChangeRequiredError = {\n  password_change_required: boolean\n};\n\ninterface Props {\n  currentPage?: NavigationRoutes,\n}\n\nconst Layout = ({ currentPage, children }: PropsWithChildren<Props>) => {\n  const [compananySettingsNotFetched, companySettingsError] = useColorPalette();\n  const navigate = useNavigate();\n\n  useEffect(() => {\n    if (compananySettingsNotFetched && 'password_change_required' in ((companySettingsError as FetchBaseQueryError).data as PasswordChangeRequiredError)) {\n      navigate('/profil/zmien_haslo');\n    }\n  }, [compananySettingsNotFetched, companySettingsError]);\n\n  return (\n    <div className=\"flex flex-col w-screen lg:flex-row lg:w-auto\">\n      <Sidebar currentPage={currentPage} />\n      <main className=\"flex flex-col flex-grow items-stretch bg-background-light min-h-100svh\" id=\"main\">{children}</main>\n    </div>\n  );\n};\n\nexport default Layout;\n", "import * as React from 'react';\nimport { NavigationRoutes } from '../Layout/Layout';\nimport Navigation from './Navigation';\n\ninterface Props {\n  currentPage?: NavigationRoutes,\n}\n\nconst Sidebar = ({ currentPage }: Props) => (\n  <nav className=\"hidden lg:flex flex-col w-64 bg-background-white h-screen border-r text-gray-800 flex-shrink-0\">\n    <Navigation currentPage={currentPage} />\n  </nav>\n);\n\nexport default Sidebar;\n", "import * as React from 'react';\nimport { useIntl } from 'react-intl';\nimport {\n  useCallback, useEffect, useMemo, useRef, useState,\n} from 'react';\nimport { Link } from 'react-router-dom';\nimport { usePermissions } from '../../hooks/usePermissions';\nimport ArrowUp from '../../icons/dropdown-arrow-up.svg';\nimport ArrowDown from '../../icons/dropdown-arrow-down.svg';\nimport UserNavigation from './UserNavigation/UserNavigation';\nimport MainNavigation from './MainNavigation/MainNavigation';\nimport { useGetCompanyDataQuery, useGetFullUserAccountQuery, useLogoutMutation } from '../../api/appApi';\nimport { useAppSelector } from '../../hooks/reduxHooks';\nimport useClickOutside from '../../hooks/useClickOutside';\nimport { NavigationRoutes } from '../Layout/Layout';\nimport Spinner from '../Spinner/Spinner';\nimport useMessages from '../../hooks/useMessages';\nimport LogoutIcon from '../../icons/logout.svg';\nimport VersionDisplay from './VersionDisplay';\nimport { clearAccessToken } from '../../../utils/accessToken';\n\ninterface Props {\n  currentPage?: NavigationRoutes,\n  closeNavigation?: () => void;\n}\n\nconst Navigation = ({ currentPage, closeNavigation }: Props) => {\n  const intl = useIntl();\n  const { hasRoleType } = usePermissions();\n  const { data: companyDetails, isSuccess: companyFetched } = useGetCompanyDataQuery();\n  const { data: user, isSuccess: userFetched } = useGetFullUserAccountQuery();\n  const selectedVenueName = useAppSelector((state) => state.app.selectedVenueName);\n\n  const [userNavigationOpen, setUserNavigationOpen] = useState(false);\n  const userNavigationRef = useRef(null);\n  const userVenueRef = useRef(null);\n\n  const hasVenues = useMemo(() => !!user?.tenant?.venues && user.tenant.venues.length > 0, [user]);\n\n  const getMessage = useMessages();\n  const [logout, logoutResult] = useLogoutMutation();\n\n  useEffect(() => {\n    if (logoutResult.status === 'fulfilled') {\n      clearAccessToken();\n      window.location.href = '/accounts/sign_in';\n    }\n  }, [logoutResult]);\n\n  const handleKeyLogout = useCallback((e: React.KeyboardEvent<HTMLDivElement>) => {\n    if (e.key === 'Enter' || e.key === ' ') {\n      logout(null);\n    }\n  }, []);\n\n  const toggleOpen = () => {\n    setUserNavigationOpen((open) => !open);\n  };\n\n  const close = () => {\n    if (closeNavigation) {\n      closeNavigation();\n    }\n    setUserNavigationOpen(false);\n  };\n\n  useClickOutside(userNavigationRef, () => setUserNavigationOpen(false), [userVenueRef]);\n\n  const handleKeyUp = (e: React.KeyboardEvent) => {\n    if (e.key === 'Enter' || e.key === ' ') {\n      toggleOpen();\n    }\n  };\n\n  return (\n    userFetched ? (\n      <>\n        <a className=\"absolute -top-20 p-2 text-typography-black text-text-lg-semibold focus:top-0 focus:block focus:bg-background-light\" href=\"#main\">Przejd\u017A do tre\u015Bci</a>\n        <Link className=\"hidden lg:flex items-center justify-center h-24 border-b mx-2 sm:mx-3 md:mx-7\" to=\"/\" aria-label=\"Przejd\u017A do strony g\u0142\u00F3wnej\">\n          {companyFetched && companyDetails.logo && (\n            <img\n              src={companyDetails.logo?.path}\n              alt={companyDetails.name || intl.formatMessage({ id: 'navigation.header' })}\n              className=\"w-14 mr-4\"\n            />\n          )}\n          <p className=\"text-typography-black text-text-lg-semibold\">{companyFetched && companyDetails.name ? companyDetails.name : intl.formatMessage({ id: 'navigation.header' })}</p>\n        </Link>\n        <div className=\"flex flex-col items-start h-20 justify-center mx-2 sm:mx-3 md:mx-7\">\n          {hasVenues && (\n          <div className=\"text-typography-dark text-text-md-medium font-light\">\n            {user.fullName}\n          </div>\n          )}\n          {hasRoleType('tenant') && (<span\n            role=\"button\"\n            onKeyUp={(e) => handleKeyUp(e)}\n            onClick={toggleOpen}\n            tabIndex={0}\n            className=\"inline-block cursor-pointer w-full text-typography-black text-text-lg-semibold hover:text-hover\"\n            ref={userVenueRef}\n          >\n            {hasVenues ? selectedVenueName : user.fullName}\n            {userNavigationOpen ? <ArrowUp className=\"inline float-right ml-1 mt-2 hover:text-hover\" /> : <ArrowDown className=\"inline float-right ml-1 mt-2 hover:text-hover\" />}\n          </span>)}\n\n          {!hasRoleType('tenant') && (<span className=\"inline-block w-full text-typography-black text-text-lg-semibold\">{user.fullName}</span>)}\n        </div>\n        <div className=\"relative\">\n          <UserNavigation ref={userNavigationRef} isOpen={userNavigationOpen} onSelect={close} />\n        </div>\n        <MainNavigation currentPage={currentPage} />\n        <div className=\"mx-2 lg:mx-7 border-t\">\n          <div\n            className=\"ml-3 lg:ml-0 justify-around items-center cursor-pointer w-full block text-typography-dark text-text-lg-medium\"\n            role=\"button\"\n            tabIndex={0}\n            onClick={() => logout(null)}\n            onKeyUp={(e) => handleKeyLogout(e)}\n          >\n            <span className=\"py-6 flex group hover:underline hover:text-main\">\n              <LogoutIcon className=\"w-6 group-hover:text-red-main stroke-current\" />\n              <p className=\"ml-2 tracking-wide truncate group-hover:text-main\">{getMessage('logout')}</p>\n            </span>\n          </div>\n        </div>\n        <VersionDisplay />\n      </>\n    ) : <Spinner className=\"m-auto mt-6\" />\n  );\n};\n\nexport default Navigation;\n", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgDropdownArrowUp = (props: SVGProps<SVGSVGElement>) => <svg width={11} height={7} viewBox=\"0 0 11 7\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M9.25 5.375L5.5 1.625L1.75 5.375\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"square\" strokeLinejoin=\"round\" /></svg>;\nexport default SvgDropdownArrowUp;", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgDropdownArrowDown = (props: SVGProps<SVGSVGElement>) => <svg width={11} height={7} viewBox=\"0 0 11 7\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M1.75 1.625L5.5 5.375L9.25 1.625\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"square\" strokeLinejoin=\"round\" /></svg>;\nexport default SvgDropdownArrowDown;", "import * as React from 'react';\nimport { useEffect, useMemo } from 'react';\nimport classNames from 'classnames';\nimport useMessages from '../../../hooks/useMessages';\nimport { useGetFullUserAccountQuery } from '../../../api/appApi';\nimport { selectVenue, VenueSelectPayload } from '../../../store/appSlice';\nimport { useAppDispatch, useAppSelector } from '../../../hooks/reduxHooks';\n\ninterface Props {\n  isOpen: boolean,\n  onSelect: () => void;\n}\n\nconst UserNavigation = React.forwardRef(({ isOpen, onSelect }: Props, ref: React.Ref<any>) => {\n  const getMessage = useMessages();\n  const { data: user, isSuccess: userFetched } = useGetFullUserAccountQuery();\n  const dispatch = useAppDispatch();\n  const selectedVenueId = useAppSelector((state) => state.app.selectedVenueId);\n  const venues = useMemo(() => user?.tenant?.venues, [user]);\n\n  useEffect(() => {\n    if (userFetched && venues) {\n      let preselectedVenue: VenueSelectPayload;\n\n      if (localStorage.getItem(`selectedVenueName-${user.id}`)) {\n        preselectedVenue = {\n          userId: user.id,\n          selectedVenueId: localStorage.getItem(`selectedVenueId-${user.id}`) || '',\n          selectedVenueName: localStorage.getItem(`selectedVenueName-${user.id}`) || '',\n        };\n      } else if (venues.length === 1) {\n        preselectedVenue = {\n          userId: user.id,\n          selectedVenueId: venues[0].id,\n          selectedVenueName: venues[0].address,\n        };\n      } else {\n        preselectedVenue = {\n          userId: user.id,\n          selectedVenueId: '',\n          selectedVenueName: getMessage('navigation.allVenues'),\n        };\n      }\n      dispatch(selectVenue(preselectedVenue));\n    }\n  }, [userFetched]);\n\n  const handleSelectVenue = (e: React.KeyboardEvent<HTMLDivElement> | React.MouseEvent, venuePayload: VenueSelectPayload) => {\n    if (e.type === 'click' || ('key' in e && (e.key === 'Enter' || e.key === ' '))) {\n      dispatch(selectVenue(venuePayload));\n      onSelect();\n    }\n  };\n\n  if (!userFetched) {\n    return null;\n  }\n\n  return (\n    <div\n      ref={ref}\n      className={classNames(\n        'absolute transition-height duration-500 ease-in-out z-20 bg-background-light lg:bg-background-white'\n        + ' w-full overflow-hidden flex flex-col justify-between text-text-lg-medium',\n        { 'h-sidebar visible': isOpen, hidden: !isOpen },\n      )}\n    >\n      <div className=\"w-full px-2 sm:px-3 md:px-7 flex flex-col py-4 space-y-1 overflow-y-auto\">\n        {venues?.map((venue) => (\n          <div\n            key={venue.id}\n            className={\n              `p-2 cursor-pointer hover:underline hover:text-hover rounded \n              ${selectedVenueId === venue.id ? 'text-hover bg-light-200' : 'text-typography-dark'}`\n            }\n            role=\"button\"\n            onClick={(e) => handleSelectVenue(e, {\n              userId: user.id,\n              selectedVenueId: venue.id,\n              selectedVenueName: venue.address,\n            })}\n            tabIndex={0}\n            onKeyPress={(e) => handleSelectVenue(e, {\n              userId: user.id,\n              selectedVenueId: venue.id,\n              selectedVenueName: venue.address,\n            })}\n          >\n            {venue.address}\n          </div>\n        ))}\n        {venues?.length && venues?.length > 1\n          && (\n          <div\n            className={\n              `p-2 cursor-pointer hover:underline hover:text-hover rounded \n              ${selectedVenueId === '' ? 'text-hover bg-light-200' : 'text-typography-dark'}`\n            }\n            role=\"button\"\n            onClick={(e) => handleSelectVenue(e, {\n              userId: user.id,\n              selectedVenueId: '',\n              selectedVenueName: getMessage('navigation.allVenues'),\n            })}\n            tabIndex={0}\n            onKeyPress={(e) => handleSelectVenue(e, {\n              userId: user.id,\n              selectedVenueId: '',\n              selectedVenueName: getMessage('navigation.allVenues'),\n            })}\n          >\n            {getMessage('navigation.allVenues')}\n          </div>\n          )}\n      </div>\n    </div>\n  );\n});\n\nexport default UserNavigation;\n", "import * as React from 'react';\nimport { useIntl } from 'react-intl';\nimport DashboardIcon from '../../../icons/dashboard.svg';\nimport NavigationItem from './NavigationItem';\nimport NavigationSubItem from './NavigationSubItem';\n\nimport MetersIcon from '../../../icons/home.svg';\nimport GaugeIcon from '../../../icons/meters.svg';\nimport TicketsIcon from '../../../icons/tickets.svg';\nimport AnnouncementsIcon from '../../../icons/announcements.svg';\nimport ResolutionsIcon from '../../../icons/resolutions.svg';\nimport ProfileIcon from '../../../icons/profile.svg';\nimport CreditCardIcon from '../../../icons/credit-card.svg';\nimport ClipboardIcon from '../../../icons/clipboard.svg';\nimport UsersIcon from '../../../icons/users.svg';\nimport ParametersIcon from '../../../icons/gauge.svg';\nimport DocumentsIcon from '../../../icons/documents.svg';\n\nimport NotificationsIcon from '../../../icons/bell-notification.svg';\n// import NotificationsIcon from '../../../icons/bell.svg';\n\nimport { NavigationRoutes } from '../../Layout/Layout';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport { useNotifications } from '../../../hooks/useNotifications';\nimport { useGetFullKsefJournalsQuery } from '../../../api/appApi';\n\ninterface Props {\n  currentPage?: NavigationRoutes,\n}\n\nconst MainNavigation = ({ currentPage }: Props) => {\n  const { hasRoleType, isModuleEnabled, isTenantDataEnabled } = usePermissions();\n  const { hasNotifications } = useNotifications();\n  const intl = useIntl();\n  const isWorker = hasRoleType('worker');\n  const { data: ksefJournals } = useGetFullKsefJournalsQuery({ items: '1' }, { skip: !isWorker });\n  const hasKsefJournalsAccess = !!ksefJournals?.journals?.length;\n\n  let settlementsPath;\n\n  if (isWorker) {\n    settlementsPath = '/rozrachunki/lokale/aktywne';\n  } else {\n    settlementsPath = isModuleEnabled('payments') ? '/rozrachunki/platnosci' : '/rozrachunki/analiza_salda';\n  }\n\n  return (\n    <div className=\"overflow-y-auto overflow-x-hidden flex-grow md:h-sidebar\">\n      <div className=\"border-t mx-2 sm:mx-3 md:mx-7 h-px\" />\n      <ul className=\"flex flex-col py-4 space-y-1\">\n        {(isWorker || (hasRoleType('tenant') && isTenantDataEnabled())) && (\n          <NavigationItem\n            to=\"/\"\n            label={intl.formatMessage({ id: 'navigation.dashboard' })}\n            selected={currentPage === 'dashboard'}\n            Icon={DashboardIcon}\n          />\n        )}\n\n        <NavigationItem\n          to=\"/powiadomienia\"\n          label={intl.formatMessage({ id: 'navigation.notifications' })}\n          selected={currentPage === 'notifications'}\n          Icon={NotificationsIcon}\n          permissionNeeded={['notifications_list']}\n          module=\"notifications\"\n          counter={hasNotifications()}\n        />\n\n        {hasRoleType('admin') && (\n          <>\n            {(isModuleEnabled('tickets') || isModuleEnabled('documents')) && (\n              <NavigationItem\n                to=\"/parametry/statusy\"\n                label={intl.formatMessage({ id: 'navigation.parameters' })}\n                selected={currentPage === 'parameters'}\n                Icon={ParametersIcon}\n              />\n            )}\n            <NavigationItem\n              to=\"/uzytkownicy\"\n              label={intl.formatMessage({ id: 'navigation.users' })}\n              selected={currentPage === 'users'}\n              Icon={UsersIcon}\n            />\n            <NavigationItem\n              to=\"/uprawnienia/role\"\n              label={intl.formatMessage({ id: 'navigation.roles' })}\n              selected={currentPage === 'roles'}\n              Icon={MetersIcon}\n            />\n            <NavigationItem\n              to=\"/ustawienia/dane\"\n              label={intl.formatMessage({ id: 'navigation.settings' })}\n              selected={currentPage === 'settings'}\n              Icon={AnnouncementsIcon}\n            />\n            {hasRoleType('worker') && (<div className=\"border-t mx-2 sm:mx-3 md:mx-7 h-px\" />)}\n          </>\n        )}\n\n        {(isWorker || isTenantDataEnabled()) && (\n        <NavigationItem\n          to={settlementsPath}\n          label={intl.formatMessage({ id: 'navigation.settlements' })}\n          selected={currentPage === 'payments' || currentPage === 'settlements'}\n          Icon={CreditCardIcon}\n          permissionNeeded={['settlements_balance_list']}\n          module=\"settlements\"\n        />\n        )}\n        {isWorker ? (\n          <NavigationItem\n            to=\"/liczniki/lokale\"\n            label={intl.formatMessage({ id: 'navigation.local.meters' })}\n            selected={currentPage === 'local' || currentPage === 'local.meters'}\n            Icon={GaugeIcon}\n            permissionNeeded={['meters_list']}\n            module=\"meters\"\n          />\n        ) : (\n          <>\n            {isModuleEnabled('meters') && isTenantDataEnabled() && (\n              <NavigationItem\n                to=\"/liczniki\"\n                label={intl.formatMessage({ id: 'navigation.local.meters' })}\n                selected={currentPage === 'local.meters'}\n                permissionNeeded={['meters_list']}\n                module=\"meters\"\n                Icon={GaugeIcon}\n              />\n            )}\n            {isModuleEnabled('tickets') && isTenantDataEnabled() && (\n              <NavigationItem\n                to=\"/liczba-osob\"\n                label={intl.formatMessage({ id: 'navigation.local.peopleCount' })}\n                selected={currentPage === 'local.peopleCount'}\n                permissionNeeded={['tenants_people_entries_manage']}\n                module=\"tickets\"\n                Icon={UsersIcon}\n              />\n            )}\n          </>\n        )}\n        {(isWorker || isTenantDataEnabled()) && isModuleEnabled('announcements') && (\n          <NavigationItem\n            to=\"/aktualnosci\"\n            label={intl.formatMessage({ id: 'navigation.announcements' })}\n            selected={currentPage === 'announcements'}\n            Icon={AnnouncementsIcon}\n            permissionNeeded={['announcements_list']}\n          />\n        )}\n        {isModuleEnabled('tickets') && (isWorker || isTenantDataEnabled()) && (\n          <NavigationItem\n            to=\"/zgloszenia\"\n            label={intl.formatMessage({ id: 'navigation.tickets' })}\n            selected={currentPage === 'tickets'}\n            Icon={TicketsIcon}\n            permissionNeeded={['tickets_add']}\n            module=\"tickets\"\n          />\n        )}\n        <NavigationItem\n          to=\"/zadania\"\n          label={intl.formatMessage({ id: 'navigation.tasks' })}\n          selected={currentPage === 'tasks'}\n          Icon={ClipboardIcon}\n          permissionNeeded={['tasks_list']}\n          module=\"tickets\"\n        />\n        {(isWorker || isTenantDataEnabled()) && (\n          <NavigationItem\n            to=\"/dokumenty\"\n            label={intl.formatMessage({ id: 'navigation.documents' })}\n            selected={currentPage === 'documents' || currentPage === 'documents_in' || currentPage === 'documents_out' || currentPage === 'documents_ksef'}\n            Icon={DocumentsIcon}\n            permissionNeeded={['documents_list']}\n            module=\"documents\"\n          >\n            {isWorker && (\n            <>\n              <NavigationSubItem\n                to=\"/dokumenty/przychodzace\"\n                label={intl.formatMessage({ id: 'navigation.documents_in' })}\n                selected={currentPage === 'documents_in'}\n                Icon={DocumentsIcon}\n                permissionNeeded={['documents_list']}\n                module=\"documents\"\n              />\n              <NavigationSubItem\n                to=\"/dokumenty/wychodzace\"\n                label={intl.formatMessage({ id: 'navigation.documents_out' })}\n                selected={currentPage === 'documents_out'}\n                Icon={DocumentsIcon}\n                permissionNeeded={['documents_list']}\n                module=\"documents\"\n              />\n              {hasKsefJournalsAccess && (\n              <NavigationSubItem\n                to=\"/dokumenty/ksef\"\n                label={intl.formatMessage({ id: 'navigation.documents_ksef' })}\n                selected={currentPage === 'documents_ksef'}\n                Icon={DocumentsIcon}\n                permissionNeeded={['documents_list']}\n                module=\"documents\"\n              />\n              )}\n            </>\n            )}\n          </NavigationItem>\n        )}\n        {(isWorker || isTenantDataEnabled()) && (\n        <NavigationItem\n          to=\"/uchwaly\"\n          label={intl.formatMessage({ id: 'navigation.resolutions' })}\n          selected={currentPage === 'resolutions'}\n          Icon={ResolutionsIcon}\n          permissionNeeded={['resolutions_list']}\n          module=\"resolutions\"\n        />\n        )}\n\n        <NavigationItem\n          to=\"/profil\"\n          label={intl.formatMessage({ id: 'navigation.profile' })}\n          selected={currentPage === 'profile'}\n          Icon={ProfileIcon}\n        />\n      </ul>\n    </div>\n  );\n};\n\nexport default MainNavigation;\n", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgDashboard = (props: SVGProps<SVGSVGElement>) => <svg width={24} height={24} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M7.91667 5.375H6.375C5.27043 5.375 4.375 6.27043 4.375 7.375V8.91667C4.375 10.0212 5.27043 10.9167 6.375 10.9167H7.91667C9.02124 10.9167 9.91667 10.0212 9.91667 8.91667V7.375C9.91667 6.27043 9.02124 5.375 7.91667 5.375Z\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M16.6247 5.375H15.083C13.9784 5.375 13.083 6.27043 13.083 7.375V8.91667C13.083 10.0212 13.9784 10.9167 15.083 10.9167H16.6247C17.7292 10.9167 18.6247 10.0212 18.6247 8.91667V7.375C18.6247 6.27043 17.7292 5.375 16.6247 5.375Z\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M16.6247 14.0835H15.083C13.9784 14.0835 13.083 14.9789 13.083 16.0835V17.6252C13.083 18.7297 13.9784 19.6252 15.083 19.6252H16.6247C17.7292 19.6252 18.6247 18.7297 18.6247 17.6252V16.0835C18.6247 14.9789 17.7292 14.0835 16.6247 14.0835Z\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M7.91667 14.0834H6.375C5.27043 14.0834 4.375 14.9788 4.375 16.0834V17.625C4.375 18.7296 5.27043 19.625 6.375 19.625H7.91667C9.02124 19.625 9.91667 18.7296 9.91667 17.625V16.0834C9.91667 14.9788 9.02124 14.0834 7.91667 14.0834Z\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>;\nexport default SvgDashboard;", "import * as React from 'react';\nimport { Link } from 'react-router-dom';\nimport NavigationSubItem from './NavigationSubItem';\nimport { FunctionComponent, SVGProps } from 'react';\nimport { Permission } from '../../../../utils/generated/permissionsTypes';\nimport { ModuleName, usePermissions } from '../../../hooks/usePermissions';\n\ninterface Props {\n  children?: typeof NavigationSubItem[],\n  to: string,\n  label: string,\n  selected: boolean,\n  Icon: FunctionComponent<SVGProps<SVGSVGElement>>,\n  permissionNeeded?: Permission[],\n  module?: ModuleName,\n  counter?: number,\n}\n\nconst NavigationItem = ({ children,\n  to, label, selected, Icon, permissionNeeded, module, counter\n}: Props) => {\n  const { hasAnyPermission, isModuleEnabled } = usePermissions();\n  if (permissionNeeded && !hasAnyPermission(permissionNeeded)) {\n    return null;\n  }\n  if (module && !isModuleEnabled(module)) {\n    return null;\n  }\n\n  const styleVariants = {\n    hover: 'hover:cursor-pointer hover:font-semibold hover:bg-background-light',\n    selected: 'border-main text-main font-semibold',\n  };\n\n  return (\n    <><><li>\n      <Link\n        to={to}\n        className={`${selected ? styleVariants.selected : 'text-typography-dark border-transparent'} \n        relative text-text-lg-medium flex flex-row items-center h-11 border-l-4 pr-6 group \n        ${styleVariants.hover}`}\n      >\n        <span className=\"inline-flex w-8 justify-center items-center ml-2 sm:ml-2 md:ml-5 group-hover:text-main \">\n          <Icon className=\"w-6 stroke-current group-hover:stroke-current\" />\n        </span>\n        <span className=\"ml-2 tracking-wide truncate group-hover:text-main\">{label}</span>\n        \n        {counter > 0 && (<div className='bg-red-300 ml-2 rounded-md p-1 px-2'>{counter}</div>)}\n        \n      </Link>\n    </li></>\n    <>{children}</>\n    </>\n  );\n};\n\nexport default NavigationItem;\n", "import * as React from 'react';\nimport { Link } from 'react-router-dom';\nimport { FunctionComponent, SVGProps } from 'react';\nimport { Permission } from '../../../../utils/generated/permissionsTypes';\nimport { ModuleName, usePermissions } from '../../../hooks/usePermissions';\n\ninterface Props {\n  to: string,\n  label: string,\n  selected: boolean,\n  permissionNeeded?: Permission[],\n  module?: ModuleName,\n  Icon: FunctionComponent<SVGProps<SVGSVGElement>>,\n}\n\nconst NavigationSubItem = ({\n  to, label, selected, permissionNeeded, module, Icon\n}: Props) => {\n  const { hasAnyPermission, isModuleEnabled } = usePermissions();\n  if (permissionNeeded && !hasAnyPermission(permissionNeeded)) {\n    return null;\n  }\n  if (module && !isModuleEnabled(module)) {\n    return null;\n  }\n\n  return (\n    <li>\n      <Link\n        to={to}\n        className={`relative flex flex-row items-center h-9 pl-12 pr-6 \n        hover:text-main hover:cursor-pointer hover:font-semibold\n        ${selected ? 'text-main font-semibold' : 'text-typography-dark'}`}\n        tabIndex={0}\n      >\n        <span className=\"inline-flex w-8 justify-center items-center group-hover:text-main \">\n          <Icon className=\"w-6 stroke-current group-hover:stroke-current\" />\n        </span>\n        <span className={`ml-2 text-text-lg-medium tracking-wide truncate ${selected ? 'font-semibold' : ''}`}>{label}</span>\n      </Link>\n    </li>\n  );\n};\n\nexport default NavigationSubItem;\n", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgHome = (props: SVGProps<SVGSVGElement>) => <svg width={18} height={19} viewBox=\"0 0 18 19\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M11.25 17.4998V12.9998C11.25 12.8009 11.171 12.6102 11.0303 12.4695C10.8897 12.3289 10.6989 12.2498 10.5 12.2498H7.5C7.30109 12.2498 7.11032 12.3289 6.96967 12.4695C6.82902 12.6102 6.75 12.8009 6.75 12.9998V17.4998C6.75 17.6987 6.67098 17.8895 6.53033 18.0302C6.38968 18.1708 6.19891 18.2498 6 18.2498H1.5C1.30109 18.2498 1.11032 18.1708 0.96967 18.0302C0.829018 17.8895 0.75 17.6987 0.75 17.4998V8.82796C0.751679 8.72417 0.77411 8.62176 0.815972 8.52676C0.857833 8.43177 0.918279 8.34611 0.99375 8.27483L8.49375 1.45921C8.63201 1.33272 8.81261 1.26257 9 1.26257C9.18739 1.26257 9.36799 1.33272 9.50625 1.45921L17.0062 8.27483C17.0817 8.34611 17.1422 8.43177 17.184 8.52676C17.2259 8.62176 17.2483 8.72417 17.25 8.82796V17.4998C17.25 17.6987 17.171 17.8895 17.0303 18.0302C16.8897 18.1708 16.6989 18.2498 16.5 18.2498H12C11.8011 18.2498 11.6103 18.1708 11.4697 18.0302C11.329 17.8895 11.25 17.6987 11.25 17.4998Z\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>;\nexport default SvgHome;", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgMeters = (props: SVGProps<SVGSVGElement>) => <svg width={24} height={24} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M3 16.8192V14.8374C3 9.86149 6.99808 5.75956 11.9654 5.74225C13.1502 5.7377 14.3242 5.96713 15.4202 6.41738C16.5161 6.86763 17.5123 7.52984 18.3517 8.36602C19.1911 9.2022 19.8572 10.1959 20.3116 11.2901C20.7661 12.3843 21 13.5574 21 14.7423V16.8192C21 17.0028 20.9271 17.1789 20.7972 17.3087C20.6674 17.4385 20.4913 17.5115 20.3077 17.5115H3.69231C3.5087 17.5115 3.33261 17.4385 3.20277 17.3087C3.07294 17.1789 3 17.0028 3 16.8192Z\" stroke=\"currentColor\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M12 5.74219V8.51142\" stroke=\"currentColor\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M3.30469 12.4141L5.98738 13.1323\" stroke=\"currentColor\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M20.6983 12.4141L18.0156 13.1323\" stroke=\"currentColor\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M9.875 17.5075L15.7942 9.79688\" stroke=\"currentColor\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>;\nexport default SvgMeters;", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgTickets = (props: SVGProps<SVGSVGElement>) => <svg width={20} height={20} viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><g clipPath=\"url(#clip0_839_323)\"><path d=\"M9.1665 3.33337H3.33317C2.89114 3.33337 2.46722 3.50897 2.15466 3.82153C1.8421 4.13409 1.6665 4.55801 1.6665 5.00004V16.6667C1.6665 17.1087 1.8421 17.5327 2.15466 17.8452C2.46722 18.1578 2.89114 18.3334 3.33317 18.3334H14.9998C15.4419 18.3334 15.8658 18.1578 16.1783 17.8452C16.4909 17.5327 16.6665 17.1087 16.6665 16.6667V10.8334\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" stroke=\"currentColor\" /><path d=\"M15.4165 2.08332C15.748 1.7518 16.1977 1.56555 16.6665 1.56555C17.1353 1.56555 17.585 1.7518 17.9165 2.08332C18.248 2.41484 18.4343 2.86448 18.4343 3.33332C18.4343 3.80216 18.248 4.2518 17.9165 4.58332L9.99984 12.5L6.6665 13.3333L7.49984 9.99999L15.4165 2.08332Z\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" stroke=\"currentColor\" /></g><defs><clipPath id=\"clip0_839_323\"><rect width={20} height={20} fill=\"white\" /></clipPath></defs></svg>;\nexport default SvgTickets;", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgAnnouncements = (props: SVGProps<SVGSVGElement>) => <svg width={20} height={20} viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M13.3333 3.33333H15C15.442 3.33333 15.8659 3.50892 16.1785 3.82148C16.4911 4.13404 16.6666 4.55797 16.6666 4.99999V16.6667C16.6666 17.1087 16.4911 17.5326 16.1785 17.8452C15.8659 18.1577 15.442 18.3333 15 18.3333H4.99998C4.55795 18.3333 4.13403 18.1577 3.82147 17.8452C3.50891 17.5326 3.33331 17.1087 3.33331 16.6667V4.99999C3.33331 4.55797 3.50891 4.13404 3.82147 3.82148C4.13403 3.50892 4.55795 3.33333 4.99998 3.33333H6.66665\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" stroke=\"currentColor\" /><path d=\"M12.5 1.66667H7.50002C7.03978 1.66667 6.66669 2.03977 6.66669 2.50001V4.16667C6.66669 4.62691 7.03978 5 7.50002 5H12.5C12.9603 5 13.3334 4.62691 13.3334 4.16667V2.50001C13.3334 2.03977 12.9603 1.66667 12.5 1.66667Z\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" stroke=\"currentColor\" /></svg>;\nexport default SvgAnnouncements;", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgResolutions = (props: SVGProps<SVGSVGElement>) => <svg width={15} height={18} viewBox=\"0 0 15 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M13.625 16.5L7.5 12.3333L1.375 16.5V3.16667C1.375 2.72464 1.55937 2.30072 1.88756 1.98816C2.21575 1.67559 2.66087 1.5 3.125 1.5H11.875C12.3391 1.5 12.7842 1.67559 13.1124 1.98816C13.4406 2.30072 13.625 2.72464 13.625 3.16667V16.5Z\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>;\nexport default SvgResolutions;", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgProfile = (props: SVGProps<SVGSVGElement>) => <svg width={16} height={18} viewBox=\"0 0 16 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M8 1C5.85223 1 4.11111 2.79086 4.11111 5C4.11111 7.20914 5.85223 9 8 9C10.1478 9 11.8889 7.20914 11.8889 5C11.8889 2.79086 10.1478 1 8 1Z\" strokeWidth={1.5} /><path d=\"M4.88889 10.6C2.74112 10.6 1 12.3909 1 14.6V15.4C1 16.2837 1.69645 17 2.55556 17H13.4444C14.3036 17 15 16.2837 15 15.4V14.6C15 12.3909 13.2589 10.6 11.1111 10.6H4.88889Z\" strokeWidth={1.5} /></svg>;\nexport default SvgProfile;", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgCreditCard = (props: SVGProps<SVGSVGElement>) => <svg width={24} height={24} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M20.25 5.8125H3.75C3.3703 5.8125 3.0625 6.1203 3.0625 6.5V17.5C3.0625 17.8797 3.3703 18.1875 3.75 18.1875H20.25C20.6297 18.1875 20.9375 17.8797 20.9375 17.5V6.5C20.9375 6.1203 20.6297 5.8125 20.25 5.8125Z\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M15.4375 15.4375H18.1875\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M11.3125 15.4375H12.6875\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M3.0625 9.32751H20.9375\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>;\nexport default SvgCreditCard;", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgClipboard = (props: SVGProps<SVGSVGElement>) => <svg width={24} height={24} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M15.3359 5.33594H17.0026C17.4446 5.33594 17.8686 5.51153 18.1811 5.82409C18.4937 6.13665 18.6693 6.56058 18.6693 7.0026V18.6693C18.6693 19.1113 18.4937 19.5352 18.1811 19.8478C17.8686 20.1603 17.4446 20.3359 17.0026 20.3359H7.0026C6.56058 20.3359 6.13665 20.1603 5.82409 19.8478C5.51153 19.5352 5.33594 19.1113 5.33594 18.6693V7.0026C5.33594 6.56058 5.51153 6.13665 5.82409 5.82409C6.13665 5.51153 6.56058 5.33594 7.0026 5.33594H8.66927\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M14.4974 3.66406H9.4974C9.03716 3.66406 8.66406 4.03716 8.66406 4.4974V6.16406C8.66406 6.6243 9.03716 6.9974 9.4974 6.9974H14.4974C14.9576 6.9974 15.3307 6.6243 15.3307 6.16406V4.4974C15.3307 4.03716 14.9576 3.66406 14.4974 3.66406Z\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M9 12H15\" strokeWidth={1.5} strokeLinecap=\"round\" /><path d=\"M9 15H15\" strokeWidth={1.5} strokeLinecap=\"round\" /></svg>;\nexport default SvgClipboard;", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgUsers = (props: SVGProps<SVGSVGElement>) => <svg width={24} height={24} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M22 21V19C22 16.7909 20.2091 15 18 15M15 5C17.2091 5 19 6.79086 19 9C19 11.2091 17.2091 13 15 13M16 19C16 16.7909 14.2091 15 12 15H6C3.79086 15 2 16.7909 2 19C2 20.1046 2.89543 21 4 21H14C15.1046 21 16 20.1046 16 19ZM13 9C13 11.2091 11.2091 13 9 13C6.79086 13 5 11.2091 5 9C5 6.79086 6.79086 5 9 5C11.2091 5 13 6.79086 13 9Z\" stroke=\"currentColor\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>;\nexport default SvgUsers;", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgGauge = (props: SVGProps<SVGSVGElement>) => <svg width={24} height={24} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M3 16.8172V14.8355C3 9.85953 6.99808 5.75761 11.9654 5.7403C13.1502 5.73574 14.3242 5.96517 15.4202 6.41542C16.5161 6.86568 17.5123 7.52789 18.3517 8.36407C19.1911 9.20025 19.8572 10.1939 20.3116 11.2881C20.7661 12.3823 21 13.5555 21 14.7403V16.8172C21 17.0008 20.9271 17.1769 20.7972 17.3068C20.6674 17.4366 20.4913 17.5095 20.3077 17.5095H3.69231C3.5087 17.5095 3.33261 17.4366 3.20277 17.3068C3.07294 17.1769 3 17.0008 3 16.8172Z\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M12 5.74048V8.50971\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M3.30273 12.4124L5.98543 13.1306\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M20.6973 12.4124L18.0146 13.1306\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M9.87109 17.5096L15.7903 9.79907\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>;\nexport default SvgGauge;", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgDocuments = (props: SVGProps<SVGSVGElement>) => <svg width={21} height={22} viewBox=\"0 0 21 22\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M16.4069 18.875H4.59375C4.4197 18.875 4.25278 18.8059 4.12971 18.6828C4.00664 18.5597 3.9375 18.3928 3.9375 18.2188V3.78125C3.9375 3.6072 4.00664 3.44028 4.12971 3.31721C4.25278 3.19414 4.4197 3.125 4.59375 3.125H12.4694L17.0631 7.71875V18.2188C17.0631 18.3049 17.0462 18.3903 17.0132 18.4699C16.9802 18.5495 16.9319 18.6219 16.8709 18.6828C16.81 18.7437 16.7376 18.7921 16.658 18.825C16.5784 18.858 16.4931 18.875 16.4069 18.875Z\" stroke=\"currentColor\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M12.4688 3.125V7.71875H17.0632\" stroke=\"currentColor\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M7.875 11.6562H13.125\" stroke=\"currentColor\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M7.875 14.2812H13.125\" stroke=\"currentColor\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>;\nexport default SvgDocuments;", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgBellNotification = (props: SVGProps<SVGSVGElement>) => <svg fill=\"#555555\" height=\"800px\" width=\"800px\" id=\"Capa_1\" xmlns=\"http://www.w3.org/2000/svg\" xmlnsXlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 661.999 661.999\" xmlSpace=\"preserve\" {...props}><g><g><g><path d=\"M570.107,500.254c-65.037-29.371-67.511-155.441-67.559-158.622v-84.578c0-81.402-49.742-151.399-120.427-181.203 C381.969,34,347.883,0,306.001,0c-41.883,0-75.968,34.002-76.121,75.849c-70.682,29.804-120.425,99.801-120.425,181.203v84.578 c-0.046,3.181-2.522,129.251-67.561,158.622c-7.409,3.347-11.481,11.412-9.768,19.36c1.711,7.949,8.74,13.626,16.871,13.626 h164.88c3.38,18.594,12.172,35.892,25.619,49.903c17.86,18.608,41.479,28.856,66.502,28.856 c25.025,0,48.644-10.248,66.502-28.856c13.449-14.012,22.241-31.311,25.619-49.903h164.88c8.131,0,15.159-5.676,16.872-13.626 C581.586,511.664,577.516,503.6,570.107,500.254z M484.434,439.859c6.837,20.728,16.518,41.544,30.246,58.866H97.32 c13.726-17.32,23.407-38.135,30.244-58.866H484.434z M306.001,34.515c18.945,0,34.963,12.73,39.975,30.082 c-12.912-2.678-26.282-4.09-39.975-4.09s-27.063,1.411-39.975,4.09C271.039,47.246,287.057,34.515,306.001,34.515z  M143.97,341.736v-84.685c0-89.343,72.686-162.029,162.031-162.029s162.031,72.686,162.031,162.029v84.826 c0.023,2.596,0.427,29.879,7.303,63.465H136.663C143.543,371.724,143.949,344.393,143.97,341.736z M306.001,577.485 c-26.341,0-49.33-18.992-56.709-44.246h113.416C355.329,558.493,332.344,577.485,306.001,577.485z\" /><path d=\"M306.001,119.235c-74.25,0-134.657,60.405-134.657,134.654c0,9.531,7.727,17.258,17.258,17.258 c9.531,0,17.258-7.727,17.258-17.258c0-55.217,44.923-100.139,100.142-100.139c9.531,0,17.258-7.727,17.258-17.258 C323.259,126.96,315.532,119.235,306.001,119.235z\" /></g></g></g></svg>;\nexport default SvgBellNotification;", "import { useGetFullUserAccountQuery } from '../api/appApi';\n\n\nexport const useNotifications = () => {\n    const userQuery = useGetFullUserAccountQuery();\n\n    const hasNotifications = (): number => {\n        if (userQuery.isSuccess && userQuery.data) {\n            return userQuery.data.newNotificationCount || 0;\n        }\n        return 0;\n    };\n\n    return {\n        hasNotifications\n    };\n}\n", "import React, { useEffect } from 'react';\n\nconst useClickOutside = (ref: React.MutableRefObject<any>, onClickedOutside: () => void, ignoreRefs: React.MutableRefObject<any>[] = []) => {\n  useEffect(() => {\n    const clickedOutsideFunction = (event: MouseEvent) => {\n      if (ref.current && !ref.current.contains(event.target) && !ignoreRefs.find((r) => r.current.contains(event.target))) {\n        onClickedOutside();\n      }\n    };\n    document.addEventListener('mousedown', clickedOutsideFunction);\n    return () => {\n      // Unbind the event listener on clean up\n      document.removeEventListener('mousedown', clickedOutsideFunction);\n    };\n  }, [ref]);\n};\n\nexport default useClickOutside;\n", "import * as React from 'react';\nimport classnames from 'classnames';\nimport SpinnerIcon from '../../icons/spinner.svg';\n\ninterface Props {\n  className?: string,\n}\n\nconst Spinner = ({ className }: Props) => <SpinnerIcon className={classnames('animate-spin-slow text-main', className)} />;\n\nexport default Spinner;\n", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgSpinner = (props: SVGProps<SVGSVGElement>) => <svg width={52} height={52} viewBox=\"0 0 52 52\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M25.9972 8.35446C23.6921 8.35446 21.8203 6.48245 21.8203 4.17711C21.8203 1.87176 23.6921 -0.000244141 25.9972 -0.000244141C28.3023 -0.000244141 30.1741 1.87176 30.1741 4.17711C30.1741 6.48245 28.3023 8.35446 25.9972 8.35446Z\" fill=\"currentColor\" /><path opacity={0.1} d=\"M44.9001 19.2697C43.4096 19.2697 42.0231 18.4666 41.2778 17.1781C40.7174 16.2132 40.573 15.0865 40.8619 14.0061C41.1507 12.9256 41.844 12.0301 42.8088 11.4696C43.4443 11.1056 44.1664 10.9092 44.8943 10.9092C46.3848 10.9092 47.7714 11.7065 48.5166 13.0007C49.077 13.9656 49.2214 15.0923 48.9326 16.1728C48.6437 17.2532 47.9505 18.1488 46.9857 18.7092C46.3502 19.0732 45.628 19.2697 44.9001 19.2697Z\" fill=\"currentColor\" /><path opacity={0.2} d=\"M47.8171 30.177C45.5178 30.177 43.646 28.305 43.646 25.9996C43.646 23.6943 45.5178 21.8223 47.8229 21.8223C50.1222 21.8223 51.9998 23.6943 51.9998 25.9996C51.994 28.305 50.1164 30.177 47.8171 30.177Z\" fill=\"currentColor\" /><path opacity={0.3} d=\"M44.8888 41.091C44.1608 41.091 43.4387 40.9003 42.8032 40.5305C41.8384 39.9701 41.1452 39.0745 40.8563 37.9941C40.5675 36.9136 40.7177 35.7927 41.2723 34.822C42.0175 33.5336 43.404 32.7305 44.8945 32.7305C45.6225 32.7305 46.3446 32.9269 46.9801 33.2909C48.9732 34.4407 49.6607 37.0003 48.5111 38.9994C47.7658 40.2878 46.3793 41.091 44.8888 41.091Z\" fill=\"currentColor\" /><path opacity={0.4} d=\"M36.9101 49.0773C35.4196 49.0773 34.0331 48.2742 33.2878 46.9857C32.1382 44.9924 32.8199 42.4328 34.8188 41.2772C35.4543 40.9132 36.1706 40.7168 36.8986 40.7168C38.3891 40.7168 39.7756 41.5199 40.5208 42.8084C41.0754 43.7733 41.2257 44.8999 40.9368 45.9804C40.6479 47.0551 39.9547 47.9564 38.9899 48.5168C38.3602 48.8808 37.6438 49.0773 36.9101 49.0773Z\" fill=\"currentColor\" /><path opacity={0.5} d=\"M25.9972 52.0002C23.6921 52.0002 21.8203 50.1282 21.8203 47.8229C21.8203 46.7077 22.2536 45.6562 23.0451 44.8704C23.8365 44.0788 24.8822 43.6455 25.9972 43.6455C28.3023 43.6455 30.1741 45.5175 30.1741 47.8229C30.1741 50.1282 28.3023 52.0002 25.9972 52.0002Z\" fill=\"currentColor\" /><path opacity={0.58} d=\"M15.0847 49.0773C14.3568 49.0773 13.6347 48.8808 12.9992 48.5168C11.006 47.3671 10.3186 44.8075 11.4682 42.8084C12.2135 41.5199 13.6 40.7168 15.0905 40.7168C15.8184 40.7168 16.5406 40.9132 17.1761 41.2772C19.1692 42.427 19.8567 44.9866 18.707 46.9799C17.9617 48.2742 16.5752 49.0773 15.0847 49.0773Z\" fill=\"currentColor\" /><path opacity={0.65} d=\"M7.10588 41.091C5.61537 41.091 4.22885 40.2878 3.48359 38.9994C2.33394 37.006 3.02142 34.4465 5.01454 33.2909C5.65003 32.9269 6.37217 32.7305 7.10009 32.7305C8.5906 32.7305 9.97713 33.5336 10.7224 34.822C11.872 36.8154 11.1903 39.3749 9.19143 40.5247C8.55595 40.8945 7.8338 41.091 7.10588 41.091Z\" fill=\"currentColor\" /><path opacity={0.72} d=\"M4.17689 30.177C1.8718 30.177 0 28.305 0 25.9996C0 23.6943 1.8718 21.8223 4.17689 21.8223C5.29188 21.8223 6.34333 22.2556 7.12902 23.0472C7.92049 23.8387 8.35378 24.8845 8.35378 25.9996C8.35378 28.2992 6.48198 30.177 4.17689 30.177Z\" fill=\"currentColor\" /><path opacity={0.8} d=\"M7.09448 19.2697C6.36656 19.2697 5.64441 19.0732 5.00892 18.7092C3.0158 17.5594 2.32832 14.9999 3.47798 13.0007C4.22323 11.7123 5.60974 10.9092 7.10025 10.9092C7.82818 10.9092 8.55032 11.0998 9.18581 11.4696C10.1506 12.0243 10.8439 12.9256 11.1327 14.0061C11.4216 15.0865 11.2714 16.2074 10.7168 17.1781C9.97151 18.4666 8.58499 19.2697 7.09448 19.2697Z\" fill=\"currentColor\" /><path opacity={0.88} d=\"M15.0905 11.2792C13.6 11.2792 12.2135 10.4819 11.4682 9.18762C10.3186 7.19428 11.0003 4.63471 12.9992 3.47915C13.6347 3.10937 14.3568 2.9187 15.0848 2.9187C16.5753 2.9187 17.9618 3.72182 18.707 5.01027C19.2674 5.97516 19.4118 7.10183 19.123 8.18228C18.8341 9.26273 18.1409 10.1583 17.1761 10.7187C16.5406 11.0885 15.8185 11.2792 15.0905 11.2792Z\" fill=\"currentColor\" /></svg>;\nexport default SvgSpinner;", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgLogout = (props: SVGProps<SVGSVGElement>) => <svg width={21} height={21} viewBox=\"0 0 21 21\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M13.016 5.38948V4.45648C13.016 2.42148 11.366 0.771484 9.331 0.771484H4.456C2.422 0.771484 0.772003 2.42148 0.772003 4.45648V15.5865C0.772003 17.6215 2.422 19.2715 4.456 19.2715H9.341C11.37 19.2715 13.016 17.6265 13.016 15.5975V14.6545\" stroke=\"currentColor\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M19.8095 10.0214H7.76849\" stroke=\"currentColor\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M16.8812 7.10626L19.8092 10.0213L16.8812 12.9373\" stroke=\"currentColor\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>;\nexport default SvgLogout;", "import * as React from 'react';\nimport { useGetCompanySettingsQuery } from '../../api/appApi';\nimport useMessages from '../../hooks/useMessages';\nimport useTenantlessMode from '../../hooks/useTenantlessMode';\n\nconst VersionDisplay = () => {\n  const getMessage = useMessages();\n  const { data: companySettings } = useGetCompanySettingsQuery();\n  const tenantlessMode = useTenantlessMode();\n\n  return (\n    <div className=\"mx-2 lg:mx-7 border-t flex flex-col items-center text-typography-dark text-text-md-medium\">\n      <div className=\"mt-4\">\n        {`${getMessage(tenantlessMode ? 'navigation.tenantlessVersion' : 'navigation.version')} ${companySettings?.version}`}\n      </div>\n      <div className=\"mb-2\">\n        {getMessage('navigation.probit')}\n      </div>\n    </div>\n  );\n};\n\nexport default VersionDisplay;\n", "import { useMemo } from 'react';\nimport { useGetCompanySettingsQuery } from '../api/appApi';\n\nconst useTenantlessMode = (): boolean => {\n  const { data: settings } = useGetCompanySettingsQuery();\n\n  return useMemo(() => !!settings?.tenantlessMode, [settings]);\n};\n\nexport default useTenantlessMode;\n", "import { useEffect } from 'react';\nimport { useGetCompanySettingsQuery, useGetFullUserAccountQuery } from '../api/appApi';\n\nexport const useColorPalette = () => {\n  const { data: companySettings, isError: companySettingsNotFetched, error: companySettingsError } = useGetCompanySettingsQuery();\n  const { data: userMe } = useGetFullUserAccountQuery();\n\n  const changeColorPalette = () => {\n    if (companySettings && userMe) {\n      const selectedColor = userMe.colorPalette || companySettings.colorPalette || 'red';\n      document.body.classList.remove(...document.body.classList);\n      document.body.classList.add(selectedColor);\n      localStorage.setItem('colorPalette', selectedColor);\n    }\n  };\n\n  useEffect(() => changeColorPalette(), [companySettings?.colorPalette, userMe?.colorPalette]);\n\n  return [companySettingsNotFetched, companySettingsError];\n};\n", "import * as React from 'react';\nimport { useEffect, PropsWithChildren } from 'react';\nimport classnames from 'classnames';\nimport BackLink from '../BackLink/BackLink';\nimport MobileTopBar from '../Navigation/TopBar/TopBar';\nimport { NavigationRoutes } from './Layout';\nimport { PAGE_TITLE } from '../../../utils/consts';\nimport useMessages from '../../hooks/useMessages';\n\ninterface Props {\n  pageTitle: string | undefined,\n  currentPage?: NavigationRoutes,\n  subheader?: string,\n  path?: string,\n}\n\nconst PageHeader = ({\n  pageTitle, children, currentPage, subheader, path,\n}: PropsWithChildren<Props>) => {\n  const getMessage = useMessages();\n\n  const currentNavigationItem = getMessage(`navigation.${currentPage}`);\n\n  const pageTitleToSet = currentNavigationItem.toLocaleLowerCase() === pageTitle?.toLocaleLowerCase()\n    ? `${pageTitle} - ${PAGE_TITLE}`\n    : `${currentNavigationItem} - ${pageTitle} - ${PAGE_TITLE}`;\n\n  useEffect(() => () => {\n    document.title = pageTitle ? pageTitleToSet : PAGE_TITLE;\n  }, []);\n\n  return (\n    <>\n      <MobileTopBar currentPage={currentPage} pageTitle={pageTitle} path={path} />\n      <header\n        className={classnames(\n          'px-2 sm:px-3 md:px-7 lg:px-8 xl:px-12 flex justify-between flex-row-reverse lg:flex-row items-center bg-background-white text-typography-black',\n          { 'lg:min-h-headerDesktop': !subheader, 'lg:min-h-headerDesktopWithSubheader': subheader, 'min-h-[70px] md:min-h-headerTablet border-t': children },\n        )}\n      >\n        <div className=\"hidden lg:flex flex-col justify-between h-8 text-header-md\">\n          <div className=\"text-header-md\" id=\"pageTitle\">\n            {path && <BackLink path={path} />}\n            {pageTitle}\n          </div>\n          {subheader && (\n          <span className=\"text-typography-dark text-text-lg-medium\">\n            {subheader}\n          </span>\n          )}\n        </div>\n        {children && (\n        <div className=\"flex justify-end\">\n          {children}\n        </div>\n        )}\n      </header>\n    </>\n  );\n};\n\nexport default PageHeader;\n", "import * as React from 'react';\nimport { Link, useLocation } from 'react-router-dom';\nimport useMessages from '../../hooks/useMessages';\n\nconst BackLink = ({ path }: { path: string }) => {\n  const getMessage = useMessages();\n  const { state } = useLocation();\n\n  return (\n    <Link\n      to={state?.returnTo || path}\n      className=\"inline-block pr-5 align-text-top\"\n      aria-label={getMessage('goBack')}\n    >\n      &#60;\n    </Link>\n  );\n};\n\nexport default BackLink;\n", "import * as React from 'react';\nimport { useRef, useState } from 'react';\nimport { NavigationRoutes } from '../../Layout/Layout';\nimport TopBarHeader from './TopBarHeader/TopBarHeader';\nimport Navigation from '../Navigation';\nimport useClickOutside from '../../../hooks/useClickOutside';\n\ninterface Props {\n  currentPage?: NavigationRoutes,\n  pageTitle: string | undefined,\n  path?: string,\n}\n\nconst TopBar = ({ currentPage, pageTitle, path }: Props) => {\n  const [topBarOpen, setTopBarOpen] = useState(false);\n  const openedMenuRef = useRef(null);\n  const headerRef = useRef(null);\n  useClickOutside(openedMenuRef, () => setTopBarOpen(false), [headerRef]);\n\n  return (\n    <>\n      <TopBarHeader\n        pageTitle={pageTitle}\n        onClick={() => setTopBarOpen((open) => !open)}\n        ref={headerRef}\n        path={path}\n      />\n      {topBarOpen && (\n        <>\n          <div ref={openedMenuRef} className=\"top-[50px] tablet:top-[80px] lg:hidden z-50 bg-background-light flex-col w-full border-r text-gray-800 flex-shrink-0 absolute\">\n            <Navigation currentPage={currentPage} closeNavigation={() => setTopBarOpen(false)} />\n          </div>\n          <div className=\"fixed z-40 top-0 left-0 w-full h-full bg-gray-800 opacity-70\" />\n        </>\n      )}\n    </>\n  );\n};\n\nexport default TopBar;\n", "import * as React from 'react';\nimport { Link } from 'react-router-dom';\nimport { useIntl } from 'react-intl';\nimport BackLink from '../../../BackLink/BackLink';\nimport BurgerIcon from '../../../../icons/burger.svg';\nimport { useGetCompanyDataQuery } from '../../../../api/appApi';\nimport Spinner from '../../../Spinner/Spinner';\nimport DashboardIcon from '../../../../icons/dashboard.svg';\nimport useMessages from '../../../../hooks/useMessages';\n\ninterface Props {\n  onClick: () => void;\n  pageTitle: string | undefined,\n  path?: string,\n}\n\nconst TopBarHeader = React.forwardRef(({ onClick, pageTitle, path }: Props, ref: React.Ref<any>) => {\n  const intl = useIntl();\n  const getMessage = useMessages();\n  const { data: companyDetails, isSuccess: companyFetched } = useGetCompanyDataQuery();\n\n  return (\n    <header\n      className=\"lg:hidden min-h-headerMobile md:min-h-headerTablet z-50 flex justify-between items-center bg-background-white px-2 sm:px-3 md:px-8 text-typography-black\"\n    >\n      <div className=\"text-title-semibold md:text-header-sm\">\n        {path && <BackLink path={path} />}\n        {pageTitle}\n      </div>\n      {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */}\n      <div className=\"flex items-center\">\n        <button\n          className=\"flex justify-end cursor-pointer mr-2\"\n          aria-label={getMessage('menu.ariaLabel')}\n          ref={ref}\n          onClick={onClick}\n          type=\"button\"\n        >\n          <BurgerIcon />\n        </button>\n        <Link to=\"/\" aria-label={intl.formatMessage({ id: 'navigation.dashboard' })}>\n          <div className=\"max-h-9 max-w-100 flex items-center justify-center\">\n            {companyFetched && (\n              companyDetails.logo\n                ? (\n                  <img\n                    src={companyDetails.logo.path}\n                    alt={companyDetails.name || intl.formatMessage({ id: 'navigation.header' })}\n                    className=\"max-h-9\"\n                  />\n                )\n                : <DashboardIcon className=\"stroke-current\" />\n            )}\n            {!companyFetched && <Spinner className=\"h-8 w-6\" />}\n          </div>\n        </Link>\n      </div>\n    </header>\n  );\n});\n\nexport default TopBarHeader;\n", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgBurger = (props: SVGProps<SVGSVGElement>) => <svg width={31} height={28} viewBox=\"0 0 31 28\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M4.375 14H23.625\" stroke=\"#2B2B31\" strokeWidth={1.75} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M4.375 7H23.625\" stroke=\"#2B2B31\" strokeWidth={1.75} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M4.375 21H23.625\" stroke=\"#2B2B31\" strokeWidth={1.75} strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>;\nexport default SvgBurger;", "export const PAGE_TITLE = 'PRO Mieszkaniec';\n\nexport const PASSWORD_REGEX = /(?=.*?[A-Z\u0104\u0106\u0118\u0141\u0143\u00D3\u015A\u0179\u017B])(?=.*?[a-z\u0105\u0107\u0119\u0142\u0144\u00F3\u015B\u017A\u017C])(?=.*?[0-9])(?=.*?[\\s\\\\\\/\\[\\]\\^\\_|=`'\",.:;!?@#$%&()<>~{}*+-]).{8,70}/\n\nexport const EMAIL_REGEX = /^[^@\\s]+@[^@\\s]+$/;\n", "/* eslint-disable react/jsx-props-no-spreading */\nimport { RegisterOptions, useFormContext } from 'react-hook-form';\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport { InputError, InputLabel } from '../InputLabel';\nimport ShowIcon from '../../../icons/eye-open.svg';\nimport HideIcon from '../../../icons/eye-closed.svg';\nimport Button from '../../../components/Button/Button';\n\ninterface FormInputProps {\n  id: string,\n  type: string,\n  label?: string,\n  className?: string,\n  inputClassName?: string,\n  disabled?: boolean,\n  options?: RegisterOptions,\n  placeholder?: string,\n  ariaLabel?: string,\n  defaultValue?: string\n}\n\nexport const inputDefaultStyles = `inline-block px-2 py-1 font-normal text-typography-black bg-white bg-clip-padding\nborder border-solid border-stroke-grey-300 rounded transition ease-in-out my-1 text-text-md-semibold mobile:text-base\nfocus:text-typography-black focus:bg-white focus:border-blue-600 focus:outline-none`;\n\nconst FormInput = ({\n  id, type, label, className, inputClassName, disabled, options, placeholder, ariaLabel, defaultValue = ''\n}: FormInputProps) => {\n  const { register, formState } = useFormContext();\n  const [passwordShown, setPasswordShown] = React.useState(false);\n  const togglePasswordVisiblity = () => {\n    setPasswordShown(passwordShown ? false : true);\n  };\n\n  return (\n    <div className={classnames('flex-col items-start inline-block', className)}>\n      {label && <div className='flex flex-row'>\n        <InputLabel id={id} label={label}/>\n        { type === 'password' &&  <Button\n            Icon={passwordShown ? HideIcon : ShowIcon}\n            size=\"small\"\n            styleType=\"ghost\"\n            onClick={togglePasswordVisiblity}\n          />}</div>}\n      <input\n        className={classnames(\n          inputDefaultStyles,\n          inputClassName,\n          { 'bg-gray-100': disabled, 'border-interactions-input-error border-2': formState.errors[id] },\n        )}\n        type={passwordShown && type === 'password' ? 'text' : type}\n        id={id}\n        disabled={disabled}\n        placeholder={placeholder}\n        {...register(id, options)}\n        aria-label={ariaLabel}\n        defaultValue={defaultValue}\n      />\n      {formState.errors[id]?.message && <InputError message={formState.errors[id]?.message as string} />}\n    </div>\n  );\n};\n\nexport default FormInput;\n", "import * as React from 'react';\nimport { useRef, useEffect } from 'react';\nimport classnames from 'classnames';\nimport XIcon from '../../icons/x.svg';\nimport useMessages from '../../hooks/useMessages';\n\ntype InputLabelProps = {\n  id?: string,\n  label?: string,\n  inline?: boolean,\n  showReset?: boolean,\n  resetButtonText?: string,\n  onReset?: () => void,\n  className?: string,\n  autofocus?: boolean,\n};\n\nconst InputLabel = ({\n  id, label, inline, showReset, resetButtonText, onReset, children, className, autofocus\n}: React.PropsWithChildren<InputLabelProps>) => {\n  const getMessage = useMessages();\n  const labelRef = useRef<HTMLDivElement>(null);\n\n  useEffect(() => {\n    if (autofocus) {\n      labelRef.current?.focus();\n    }\n  }, [autofocus]);\n\n  return (\n    // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n    <div className=\"flex justify-between\" ref={labelRef} tabIndex={autofocus ? 0 : undefined}>\n      <label\n        className={classnames(\n          'flex justify-between my-1 text-text-lg-semibold text-typography-black',\n          { 'inline-block mr-3': inline },\n          className,\n        )}\n        htmlFor={id}\n      >\n        <span className=\"inline-block\">\n          {children || label}\n        </span>\n      </label>\n      {showReset && (\n        <button\n          onClick={onReset}\n          type=\"button\"\n          className=\"flex items-center text-text-sm-medium text-typography-dark hover:text-hover\"\n        >\n          <span>{resetButtonText || getMessage('reset')}</span>\n          <XIcon className=\"ml-1 mobile:w-4 mobile:h-4\" />\n        </button>\n      )}\n    </div>\n  );\n};\n\nconst InputError = ({ message }: { message: string }) => (\n  <div className=\"text-interactions-input-error bg-transparent my-1 text-text-md-medium\" aria-live=\"polite\">\n    {message}\n  </div>\n);\n\nexport {\n  InputLabel, InputError,\n};\n", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgX = (props: SVGProps<SVGSVGElement>) => <svg width={10} height={10} viewBox=\"0 0 10 10\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M7.9375 3.0625L3.0625 7.9375\" stroke=\"currentColor\" strokeWidth={1.2} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M7.9375 7.9375L3.0625 3.0625\" stroke=\"currentColor\" strokeWidth={1.2} strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>;\nexport default SvgX;", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgEyeOpen = (props: SVGProps<SVGSVGElement>) => <svg xmlns=\"http://www.w3.org/2000/svg\" xmlnsXlink=\"http://www.w3.org/1999/xlink\" width=\"20px\" height=\"px\" viewBox=\"0 0 20 20\" {...props}><g id=\"surface1\"><path style={{\n      stroke: \"none\",\n      fillRule: \"evenodd\",\n      fill: \"rgb(3.137255%,1.176471%,25.490198%)\",\n      fillOpacity: 1\n    }} d=\"M 10 4.375 C 7.6875 4.375 5.664062 5.757812 4.273438 7.039062 C 3.566406 7.691406 2.996094 8.339844 2.605469 8.824219 C 2.40625 9.070312 2.253906 9.273438 2.148438 9.417969 C 2.09375 9.488281 2.054688 9.546875 2.027344 9.585938 C 2.011719 9.605469 2 9.621094 1.996094 9.632812 L 1.984375 9.644531 L 1.984375 9.648438 L 1.753906 10.011719 L 1.980469 10.347656 L 1.984375 10.351562 L 1.984375 10.355469 L 1.996094 10.367188 C 2 10.378906 2.011719 10.394531 2.027344 10.414062 C 2.054688 10.453125 2.09375 10.511719 2.148438 10.582031 C 2.253906 10.726562 2.40625 10.929688 2.605469 11.175781 C 2.996094 11.660156 3.566406 12.308594 4.273438 12.960938 C 5.664062 14.242188 7.6875 15.625 10 15.625 C 12.3125 15.625 14.335938 14.242188 15.726562 12.960938 C 16.433594 12.308594 17.003906 11.660156 17.394531 11.175781 C 17.59375 10.929688 17.746094 10.726562 17.851562 10.582031 C 17.90625 10.511719 17.945312 10.453125 17.972656 10.414062 C 17.988281 10.394531 18 10.378906 18.007812 10.367188 L 18.015625 10.355469 L 18.015625 10.351562 L 18.019531 10.347656 L 18.253906 10 L 18.019531 9.652344 L 18.015625 9.648438 L 18.015625 9.644531 L 18.007812 9.632812 C 18 9.621094 17.988281 9.605469 17.972656 9.585938 C 17.945312 9.546875 17.90625 9.488281 17.851562 9.417969 C 17.746094 9.273438 17.59375 9.070312 17.394531 8.824219 C 17.003906 8.339844 16.433594 7.691406 15.726562 7.039062 C 14.335938 5.757812 12.3125 4.375 10 4.375 Z M 3.574219 10.386719 C 3.457031 10.242188 3.355469 10.109375 3.269531 10 C 3.355469 9.890625 3.457031 9.757812 3.574219 9.613281 C 3.941406 9.160156 4.46875 8.558594 5.121094 7.960938 C 6.445312 6.742188 8.167969 5.625 10 5.625 C 11.832031 5.625 13.554688 6.742188 14.878906 7.960938 C 15.53125 8.558594 16.058594 9.160156 16.425781 9.613281 C 16.542969 9.757812 16.644531 9.890625 16.730469 10 C 16.644531 10.109375 16.542969 10.242188 16.425781 10.386719 C 16.058594 10.839844 15.53125 11.441406 14.878906 12.039062 C 13.554688 13.257812 11.832031 14.375 10 14.375 C 8.167969 14.375 6.445312 13.257812 5.121094 12.039062 C 4.46875 11.441406 3.941406 10.839844 3.574219 10.386719 Z M 11.875 10 C 11.875 11.035156 11.035156 11.875 10 11.875 C 8.964844 11.875 8.125 11.035156 8.125 10 C 8.125 8.964844 8.964844 8.125 10 8.125 C 11.035156 8.125 11.875 8.964844 11.875 10 Z M 13.125 10 C 13.125 11.726562 11.726562 13.125 10 13.125 C 8.273438 13.125 6.875 11.726562 6.875 10 C 6.875 8.273438 8.273438 6.875 10 6.875 C 11.726562 6.875 13.125 8.273438 13.125 10 Z M 13.125 10 \" /></g></svg>;\nexport default SvgEyeOpen;", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgEyeClosed = (props: SVGProps<SVGSVGElement>) => <svg xmlns=\"http://www.w3.org/2000/svg\" xmlnsXlink=\"http://www.w3.org/1999/xlink\" width=\"20px\" height=\"px\" viewBox=\"0 0 20 20\" {...props}><g id=\"surface1\"><path style={{\n      fill: \"none\",\n      strokeWidth: 2,\n      strokeLinecap: \"round\",\n      strokeLinejoin: \"round\",\n      stroke: \"rgb(0%,0%,0%)\",\n      strokeOpacity: 1,\n      strokeMiterlimit: 4\n    }} d=\"M 3 3 L 21 21 M 9.84375 9.914062 C 9.31875 10.453125 9 11.189062 9 12 C 9 13.654687 10.340625 15 12 15 C 12.820312 15 13.565625 14.667187 14.109375 14.132812 M 6.496875 6.646875 C 4.598437 7.898437 3.154687 9.782812 2.45625 12 C 3.73125 16.059375 7.523437 18.998437 12 18.998437 C 13.9875 18.998437 15.839062 18.417187 17.4 17.41875 M 10.996875 5.048437 C 11.329687 5.015625 11.6625 5.001562 12 5.001562 C 16.476562 5.001562 20.26875 7.940625 21.539062 12 C 21.2625 12.895312 20.859375 13.734375 20.353125 14.498437 \" transform=\"matrix(0.833333,0,0,0.833333,0,0)\" /></g></svg>;\nexport default SvgEyeClosed;", "/* eslint-disable react/button-has-type */\n\nimport * as React from 'react';\nimport {\n  ComponentType, PropsWithChildren, SVGProps, forwardRef,\n} from 'react';\n\ninterface Props {\n  onClick?: (e:React.KeyboardEvent<HTMLButtonElement> | React.MouseEvent<HTMLButtonElement>) => void,\n  styleType?: 'primary' | 'secondary' | 'ghost';\n  size?: 'large' | 'default' | 'small';\n  type?: 'button' | 'submit',\n  disabled?: boolean,\n  className?: string,\n  Icon?: ComponentType<SVGProps<SVGSVGElement>>;\n  ariaLabel?: string,\n}\n\nconst Button = forwardRef(({\n  onClick, styleType, size, disabled, className = '', children, type, Icon, ariaLabel,\n}: PropsWithChildren<Props>, ref: React.Ref<any>) => {\n  const primaryClasses = `${disabled\n    ? 'text-typography-dark bg-background-light border border-background-light'\n    : 'text-typography-white bg-main border border-main hover:bg-hover hover:border-hover'}`;\n  const secondaryClasses = `border border-stroke-grey-300 bg-none \n    ${disabled\n    ? 'text-typography-dark'\n    : 'text-main hover:text-hover hover:bg-light-100 hover:border-hover'}`;\n  const ghostClasses = `bg-none ${disabled\n    ? 'text-typography-dark'\n    : 'text-main hover:text-hover'}`;\n\n  const defaultSizeClasses = 'py-0 h-8 w-28 lg:w-44 lg:py-2 lg:h-auto';\n  const largeClasses = 'w-44 py-2 h-auto lg:w-72';\n  const smallClasses = 'text-text-sm-semibold w-20 px-3 lg:py-0 lg:h-8 lg:w-28 md:text-text-lg-semibold lg:px-6';\n\n  const getCorrectClasses: () => string = () => {\n    let classes;\n    switch (styleType) {\n      case 'ghost':\n        classes = ghostClasses;\n        break;\n      case 'secondary':\n        classes = secondaryClasses;\n        break;\n      case 'primary':\n      default:\n        classes = primaryClasses;\n        break;\n    }\n    switch (size) {\n      case 'large':\n        classes = `${classes} ${largeClasses}`;\n        break;\n      case 'small':\n        classes = `${classes} ${smallClasses}`;\n        break;\n      case 'default':\n      default:\n        classes = `${classes} ${defaultSizeClasses}`;\n        break;\n    }\n    return classes;\n  };\n\n  return (\n    <button\n      className={`px-6 py-2 text-text-lg-semibold rounded min-w-max select-none ${getCorrectClasses()} ${className}`}\n      type={type || 'button'}\n      onClick={onClick}\n      disabled={disabled}\n      aria-label={ariaLabel}\n      ref={ref}\n    >\n      {Icon && <Icon className=\"stroke-current inline-block mr-2\" />}\n      {children}\n    </button>\n  );\n});\n\nexport default Button;\n", "/* eslint-disable react/jsx-props-no-spreading */\nimport { RegisterOptions, useController, useFormContext } from 'react-hook-form';\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport { InputError, InputLabel } from '../InputLabel';\nimport Dropdown from '../../Dropdown/Dropdown';\n\nconst inputDefaultStyles = `inline-block px-2 py-1 font-normal text-typography-black bg-white bg-clip-padding\nborder border-solid border-stroke-grey-300 rounded transition ease-in-out my-1 text-text-md-semibold\nfocus:text-typography-black focus:bg-white focus:border-blue-600 focus:outline-none focus:border-solid`;\n\nexport interface SelectOption {\n  value: string,\n  optionLabel: string,\n}\ninterface FormSelectProps {\n  id: string,\n  label?: string,\n  className?: string,\n  inputClassName?: string,\n  inline?: boolean,\n  selectOptions: SelectOption[],\n  showReset?: boolean,\n  placeholder?: string,\n  options?: RegisterOptions,\n  autofocus?: boolean,\n  value?: string,\n  disabled?: boolean,\n}\ninterface SelectProps {\n  value: string,\n  onChange: (s: string) => void,\n  selectOptions: SelectOption[],\n  inputClassName?: string,\n  label?: string,\n  placeholder?: string,\n  autofocus?: boolean,\n  disabled?: boolean,\n}\n\nexport const Select = ({\n  selectOptions, inputClassName, value, onChange, label, placeholder = '', autofocus, disabled\n} : SelectProps) => {\n  const selectedOptionLabel = useMemo(\n    () => selectOptions?.find((option) => option.value === value)?.optionLabel,\n    [value, selectOptions],\n  );\n\n  return (\n    <Dropdown\n      label={selectedOptionLabel || placeholder}\n      labelClassName={classnames(inputDefaultStyles, inputClassName, 'w-full inline-flex justify-between')}\n      listClassName=\"bg-white rounded w-full border p-2\"\n      ariaLabel={label}\n      autofocus={autofocus}\n      disabled={disabled}\n    >\n      {selectOptions.map((option) => (\n        // eslint-disable-next-line jsx-a11y/no-static-element-interactions\n        <div\n          className={classnames(\n            inputDefaultStyles,\n            'w-full hover:text-hover hover:bg-light-200 border-none h-7',\n            { 'text-hover bg-light-200': option.optionLabel === selectedOptionLabel },\n          )}\n          key={option.value}\n          onClick={() => onChange(option.value)}\n          aria-selected={option.value === value}\n          // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n          tabIndex={0}\n          onKeyDown={(e) => {\n            if (e.key === 'Enter') onChange(option.value);\n          }}\n          role=\"option\"\n        >\n          {option.optionLabel}\n        </div>\n      ))}\n    </Dropdown>\n  );\n};\n\nconst FormSelect = ({\n  id, label, className, inputClassName, inline, selectOptions, showReset, placeholder, options, autofocus, value, disabled,\n}: FormSelectProps) => {\n  const { formState } = useFormContext();\n  const { field } = useController({ name: id, rules: options });\n\n  return (\n    <div className={classnames('flex-col items-start', className)}>\n      {label &&  (\n        <InputLabel\n          label={label}\n          inline={inline}\n          showReset={showReset && field.value}\n          onReset={() => field.onChange('')}\n        />\n      )}\n      <Select\n        value={field.value || value}\n        onChange={field.onChange}\n        selectOptions={selectOptions}\n        inputClassName={classnames(\n          inputClassName,\n          { 'border-interactions-input-error border-2': formState.errors[id] },\n        )}\n        label={label}\n        placeholder={placeholder}\n        autofocus={autofocus}\n        disabled={disabled}\n      />\n      {formState.errors[id]?.message && <InputError message={formState.errors[id]?.message as string} />}\n    </div>\n  );\n};\n\nexport default FormSelect;\n", "import * as React from 'react';\nimport { useRef, useState } from 'react';\nimport classnames from 'classnames';\nimport ArrowUp from '../../icons/dropdown-arrow-up.svg';\nimport ArrowDown from '../../icons/dropdown-arrow-down.svg';\nimport useClickOutside from '../../hooks/useClickOutside';\n\ninterface Props {\n  label: string,\n  labelClassName?: string,\n  children: JSX.Element | JSX.Element[],\n  listClassName?: string,\n  ariaLabel?: string,\n  autofocus?: boolean,\n  disabled?: boolean,\n}\n\nconst Dropdown = ({\n  label, labelClassName, children, listClassName, ariaLabel, autofocus, disabled\n}: Props) => {\n  const [open, setOpen] = useState(false);\n  const listRef = useRef(null);\n  const labelRef = useRef<HTMLSpanElement>(null);\n  const toggleOpen = () => {\n    !disabled ? setOpen((open) => !open) : setOpen(false);\n  };\n\n  useClickOutside(listRef, toggleOpen, [labelRef]);\n\n  const handleKeyUp = (e: React.KeyboardEvent) => {\n    if (e.key === 'Enter' || e.key === ' ') {\n      toggleOpen();\n    }\n  };\n\n  React.useEffect(() => {\n    if (autofocus && labelRef.current) labelRef.current.focus();\n  });\n\n  return (\n    <div className=\"relative\">\n      <span\n        role=\"button\"\n        onKeyUp={(e) => handleKeyUp(e)}\n        onClick={toggleOpen}\n        tabIndex={0}\n        className={`inline-block cursor-pointer ${labelClassName}`}\n        ref={labelRef}\n        aria-label={ariaLabel}\n      >\n        <span className=\"float-left h-[1.375rem] truncate text-text-md-semibold\">{label}</span>\n        {open ? <ArrowUp className=\"inline float-right ml-1 mt-2\" /> : <ArrowDown className=\"inline float-right ml-1 mt-2\" />}\n        {open && (\n          <div className={classnames('absolute top-8 z-30 left-0 rounded-b', listClassName)} ref={listRef}>\n            {children}\n          </div>\n        )}\n      </span>\n    </div>\n  );\n};\n\nexport default Dropdown;\n", "/* eslint-disable react/jsx-props-no-spreading */\nimport { RegisterOptions, useFormContext } from 'react-hook-form';\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport { InputError, InputLabel } from '../InputLabel';\n\nconst inputDefaultStyles = `inline-block px-2 py-1 font-normal text-typography-black bg-white bg-clip-padding\nborder border-solid border-stroke-grey-300 rounded transition ease-in-out my-1 text-text-md-semibold\nfocus:text-typography-black focus:bg-white focus:border-blue-600 focus:outline-none`;\n\ninterface FormTextareaProps {\n  id: string,\n  label?: string,\n  className?: string,\n  inputClassName?: string,\n  disabled?: boolean,\n  placeholder?: string,\n  options?: RegisterOptions,\n  rows?: number\n  ariaLabel?: string,\n  defaultValue?:string\n}\nconst FormTextarea = ({\n  id, label, className, inputClassName, disabled, options, placeholder, rows = 6, ariaLabel, defaultValue=''\n}: FormTextareaProps) => {\n  const { register, formState } = useFormContext();\n\n  return (\n    <div className={`flex-col items-start inline-block ${className}`}>\n      {label && <InputLabel id={id} label={label} />}\n      <textarea\n        id={id}\n        cols={56}\n        rows={rows}\n        disabled={disabled}\n        placeholder={placeholder}\n        {...register(id, options)}\n        className={classnames(\n          inputDefaultStyles,\n          inputClassName,\n          { 'border-interactions-input-error border-2': formState.errors[id] },\n        )}\n        aria-label={ariaLabel}\n      >\n       {defaultValue}\n      </textarea>  \n      {formState.errors[id]?.message && <InputError message={formState.errors[id]?.message as string} />}\n    </div>\n  );\n};\n\nexport default FormTextarea;\n", "/* eslint-disable react/jsx-props-no-spreading */\nimport { RegisterOptions, useFormContext } from 'react-hook-form';\nimport * as React from 'react';\nimport useMessages from '../../../hooks/useMessages';\nimport { InputError } from '../InputLabel';\n\nexport interface RadioButtonOption {\n  value: string,\n  label?: string,\n  element?: JSX.Element,\n}\n\ninterface FormRadioProps {\n  id: string,\n  inputOptions: RadioButtonOption[],\n  label: string,\n  disabled?: boolean,\n  options?: RegisterOptions,\n  className?: string,\n}\n\nconst FormRadioButtons = ({\n  id, label, inputOptions, disabled, options, className,\n}: FormRadioProps) => {\n  const { register, formState } = useFormContext();\n  const getMessage = useMessages();\n\n  return (\n    <>\n      {inputOptions.map((option: RadioButtonOption) => (\n        <label\n          key={option.value}\n          htmlFor={option.value}\n          className={\n            `flex border rounded mb-2 py-3 px-3 w-full\n            ${disabled ? 'text-gray-500' : 'hover:border-hover hover:cursor-pointer'}\n            ${formState.errors[id] ? 'border-interactions-input-error' : 'border-gray-100'}\n            ${className}`\n          }\n        >\n          <input\n            className=\"mr-3\"\n            type=\"radio\"\n            id={option.value}\n            disabled={disabled}\n            value={option.value}\n            {...register(id, options)}\n          />\n          {option.element || option.label || getMessage(`${label}.${option.value}`)}\n        </label>\n      ))}\n      {formState.errors[id]?.message && <InputError message={formState.errors[id]?.message as string} />}\n    </>\n  );\n};\n\nexport default FormRadioButtons;\n", "import * as React from 'react';\nimport { useController } from 'react-hook-form';\nimport classnames from 'classnames';\nimport DatePicker, { DateObject } from 'react-multi-date-picker';\nimport { useMonthsAndWeekDays } from '../../../hooks/useMessages';\nimport { InputLabel } from '../InputLabel';\n\nconst inputDefaultStyles = `inline-block px-2 py-1 font-normal text-typography-black bg-white bg-clip-padding\nborder border-solid border-stroke-grey-300 rounded transition ease-in-out my-1 text-text-md-semibold\nmobile:text-base focus:text-typography-black focus:bg-white focus:border-blue-600 focus:outline-none`;\n\ninterface FormDatePickerProps {\n  id: string,\n  className?: string,\n  inputClassName?: string,\n  containerClassName?: string,\n  label?: string,\n  required?: boolean,\n  minDate?: Date,\n  maxDate?: Date,\n}\n\nconst FormDatePicker = ({\n  id, className, label, inputClassName, required, minDate, maxDate, containerClassName,\n} : FormDatePickerProps) => {\n  const { months, weekDays } = useMonthsAndWeekDays();\n  const { field, fieldState } = useController({name: id});\n\n  return (\n    <div className={classnames('flex-col items-start inline-block', className)}>\n      {label && <InputLabel id={id} label={label} />}\n      <DatePicker\n        value={new Date(field.value) || ''}\n        onChange={(date: DateObject) => field.onChange(date?.format('YYYY-MM-DD'))}\n        name={id}\n        format=\"DD-MM-YYYY\"\n        inputClass={classnames(inputDefaultStyles, inputClassName)}\n        containerClassName={containerClassName}\n        className=\"red\"\n        months={months}\n        weekDays={weekDays}\n        weekStartDayIndex={1}\n        required={required}\n        minDate={minDate}\n        maxDate={maxDate}\n        id={id}\n      />\n      {fieldState.error && <p>{fieldState.error.message}</p>}\n    </div>\n  );\n};\n\nexport default FormDatePicker;\n", "import * as React from 'react';\nimport { useController } from 'react-hook-form';\nimport classnames from 'classnames';\nimport DatePicker, { DateObject } from 'react-multi-date-picker';\nimport { useMonthsAndWeekDays } from '../../../hooks/useMessages';\nimport { InputLabel } from '../InputLabel';\n\nconst inputDefaultStyles = `inline-block px-2 py-1 font-normal text-typography-black bg-white bg-clip-padding\nborder border-solid border-stroke-grey-300 rounded transition ease-in-out my-1 text-text-md-semibold\nmobile:text-base focus:text-typography-black focus:bg-white focus:border-blue-600 focus:outline-none`;\n\ninterface FormRangeDatePickerProps {\n  idFrom: string,\n  idTo: string,\n  className?: string,\n  inputClassName?: string,\n  label?: string,\n  showReset?: boolean,\n}\n\nconst FormRangeDatePicker = ({\n  idFrom, idTo, className, label, inputClassName, showReset,\n} : FormRangeDatePickerProps) => {\n  const { months, weekDays } = useMonthsAndWeekDays();\n  const { field: fieldFrom, fieldState: fieldStateFrom } = useController({ name: idFrom });\n  const { field: fieldTo, fieldState: fieldStateTo } = useController({ name: idTo });\n\n  return (\n    <div className={classnames('flex-col items-start inline-block', className)}>\n      {label && (\n        <InputLabel\n          id={idFrom}\n          label={label}\n          showReset={showReset && fieldFrom.value && fieldTo.value}\n          onReset={() => {\n            fieldFrom.onChange('');\n            fieldTo.onChange('');\n          }}\n        />\n      )}\n      <DatePicker\n        range\n        value={[new Date(fieldFrom.value) || '', new Date(fieldTo.value) || '']}\n        onChange={(dates: DateObject[]) => {\n          fieldFrom.onChange(dates[0].format('YYYY-MM-DD'));\n          if (dates.length === 2) {\n            fieldTo.onChange(dates[1].format('YYYY-MM-DD'));\n          } else {\n            fieldTo.onChange('');\n          }\n        }}\n        name={idFrom}\n        format=\"DD-MM-YYYY\"\n        inputClass={classnames(inputDefaultStyles, inputClassName)}\n        className=\"red\"\n        containerClassName=\"w-full\"\n        months={months}\n        weekDays={weekDays}\n        weekStartDayIndex={1}\n        id={idFrom}\n      />\n      {fieldStateFrom.error && <p>{fieldStateFrom.error.message}</p>}\n      {fieldStateTo.error && <p>{fieldStateTo.error.message}</p>}\n    </div>\n  );\n};\n\nexport default FormRangeDatePicker;\n", "/* eslint-disable react/jsx-props-no-spreading */\n\nimport { RegisterOptions, useFormContext } from 'react-hook-form';\nimport classnames from 'classnames';\nimport { ErrorMessage } from '@hookform/error-message';\nimport * as React from 'react';\nimport useMessages from '../../../hooks/useMessages';\nimport { InputError, InputLabel } from '../InputLabel';\nimport PaperClipIcon from '../../../icons/paper-clip.svg';\n\ninterface FormFileInputProps {\n  id: string,\n  className?: string,\n  inputClassName?: string,\n  disabled?: boolean,\n  options?: RegisterOptions,\n  multiple?: boolean,\n  labelText?: string,\n  withIcon?: boolean,\n  labelClassName?: string,\n}\n\nconst FormFileInput = ({\n  id, className, inputClassName, disabled, options, multiple, labelText, withIcon, labelClassName,\n}: React.PropsWithChildren<FormFileInputProps>) => {\n  const { register, formState } = useFormContext();\n  const getMessage = useMessages();\n\n  const isFileSizeLessThan5MB = (fileList: FileList) => {\n    if (fileList === null) {\n      return true;\n    }\n    if (fileList.length > 0 && fileList[0]?.size >= 5000000) return getMessage('tickets.ticket.error.attachment.biggerThan5mb');\n    return true;\n  };\n\n  const validateFileType = (fileList: FileList) => {\n    if (fileList === null) {\n      return true;\n    }\n    const validFileTypes = ['image/png', 'image/jpeg', 'application/pdf'];\n    if (fileList.length === 0 || validFileTypes.includes(fileList[0]?.type)) {\n      return true;\n    }\n    return getMessage('tickets.ticket.error.attachment.wrongFileType');\n  };\n\n  return (\n    <div className={className}>\n      {withIcon ? (\n        <InputLabel id={id}>\n          <div className={classnames(labelClassName, 'flex text-typography-dark text-text-lg-medium my-3 items-center')}>\n            <p>{labelText}</p>\n            <PaperClipIcon className=\"mx-2 text-transparent\" />\n          </div>\n        </InputLabel>\n      ) : (\n        <InputLabel id={id} label={labelText} className={labelClassName} />\n      )}\n      <input\n        className={classnames(\n          'mt-2 border-none text-xs',\n          inputClassName,\n          { 'bg-gray-100': disabled, 'border-interactions-input-error border-2': formState.errors[id] },\n        )}\n        type=\"file\"\n        id={id}\n        disabled={disabled}\n        multiple={multiple}\n        accept=\"image/png, image/jpeg, application/pdf\"\n        data-testid=\"file\"\n        {...register(id, {\n          ...options,\n          validate: {\n            isFileSizeLessThan5MB,\n            validateFileType,\n          },\n        })}\n      />\n      <ErrorMessage errors={formState.errors} name={id} render={({ message }) => <InputError message={message} />} />\n    </div>\n  );\n};\n\nexport default FormFileInput;\n", "import * as React from 'react';\nimport { useFormContext, get, FieldErrors } from 'react-hook-form';\nimport { Props } from './types';\n\nconst ErrorMessage = <\n  TFieldErrors extends FieldErrors,\n  TAs extends\n    | undefined\n    | React.ReactElement\n    | React.ComponentType<any>\n    | keyof JSX.IntrinsicElements = undefined\n>({\n  as,\n  errors,\n  name,\n  message,\n  render,\n  ...rest\n}: Props<TFieldErrors, TAs>) => {\n  const methods = useFormContext();\n  const error = get(errors || methods.formState.errors, name);\n\n  if (!error) {\n    return null;\n  }\n\n  const { message: messageFromRegister, types } = error;\n  const props = Object.assign({}, rest, {\n    children: messageFromRegister || message,\n  });\n\n  return React.isValidElement(as)\n    ? React.cloneElement(as, props)\n    : render\n    ? (render({\n        message: messageFromRegister || message,\n        messages: types,\n      }) as React.ReactElement)\n    : React.createElement((as as string) || React.Fragment, props);\n};\n\nexport { ErrorMessage };\n", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgPaperClip = (props: SVGProps<SVGSVGElement>) => <svg width={15} height={15} viewBox=\"0 0 15 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M10.8968 1.90482C10.4468 1.45489 9.83642 1.20214 9.20002 1.20214C8.56363 1.20214 7.95329 1.45489 7.50322 1.90482L1.90322 7.50482C1.46594 7.95736 1.22388 8.56355 1.2292 9.19283C1.23452 9.8221 1.48679 10.4241 1.93166 10.8692C2.37654 11.3143 2.97843 11.5668 3.6077 11.5724C4.23697 11.5781 4.84327 11.3363 5.29602 10.8992H5.29682L5.69442 10.4992C5.80721 10.3895 5.95859 10.3285 6.11595 10.3293C6.2733 10.3301 6.42403 10.3927 6.53567 10.5036C6.6473 10.6145 6.7109 10.7648 6.71277 10.9222C6.71463 11.0795 6.6546 11.2313 6.54562 11.3448L6.14722 11.7456L6.14562 11.7472C5.47049 12.4224 4.55481 12.8016 3.60002 12.8016C2.64524 12.8016 1.72956 12.4224 1.05442 11.7472C0.379287 11.0721 0 10.1564 0 9.20162C0 8.24684 0.379287 7.33116 1.05442 6.65602L6.65442 1.05602C7.32913 0.380463 8.24457 0.000600829 9.19936 7.12134e-07C10.1541 -0.000599404 11.0701 0.378112 11.7456 1.05282C12.4212 1.72753 12.801 2.64297 12.8016 3.59776C12.8022 4.55255 12.4235 5.46846 11.7488 6.14402L8.98482 8.98642C8.79184 9.18995 8.56004 9.35275 8.30311 9.46522C8.04618 9.5777 7.76932 9.63757 7.48887 9.64129C7.20842 9.64502 6.93007 9.59253 6.67024 9.48692C6.41041 9.38131 6.17437 9.22473 5.97604 9.0264C5.77772 8.82808 5.62113 8.59204 5.51553 8.33221C5.40992 8.07238 5.35743 7.79402 5.36115 7.51358C5.36488 7.23313 5.42475 6.95627 5.53722 6.69934C5.6497 6.44241 5.8125 6.21061 6.01602 6.01762L8.77602 3.25682C8.83134 3.19949 8.89753 3.15375 8.97072 3.12227C9.0439 3.09079 9.12263 3.0742 9.20229 3.07347C9.28196 3.07274 9.36098 3.08789 9.43473 3.11802C9.50848 3.14816 9.57549 3.19268 9.63185 3.24899C9.68822 3.30529 9.7328 3.37226 9.763 3.44599C9.7932 3.51971 9.80842 3.59871 9.80777 3.67838C9.80711 3.75805 9.7906 3.83679 9.75919 3.91C9.72778 3.98322 9.6821 4.04945 9.62482 4.10482L6.86482 6.86562C6.78104 6.94899 6.7145 7.04804 6.66899 7.15712C6.62349 7.2662 6.59991 7.38317 6.59962 7.50136C6.59932 7.61955 6.6223 7.73664 6.66726 7.84595C6.71221 7.95526 6.77826 8.05464 6.86162 8.13842C6.94498 8.22221 7.04403 8.28875 7.15311 8.33425C7.26219 8.37976 7.37917 8.40333 7.49736 8.40363C7.61555 8.40393 7.73264 8.38094 7.84195 8.33599C7.95126 8.29103 8.05064 8.22499 8.13442 8.14162L10.8976 5.29922C11.3476 4.84916 11.6003 4.23882 11.6003 3.60242C11.6003 2.96603 11.3476 2.35569 10.8976 1.90562L10.8968 1.90482Z\" fill=\"#B9B9CC\" /></svg>;\nexport default SvgPaperClip;", "/* eslint-disable react/jsx-props-no-spreading */\nimport { RegisterOptions, useFormContext } from 'react-hook-form';\nimport * as React from 'react';\nimport classnames from 'classnames';\nimport Tooltip from '../../Tooltip/Tooltip';\n\ninterface FormInputProps {\n  id: string,\n  label?: string,\n  className?: string,\n  options?: RegisterOptions,\n  disabled?: boolean,\n  tooltip?: string\n}\n\nconst FormCheckboxInput = ({\n  id, label, className, options, disabled, tooltip\n}: FormInputProps) => {\n  const { register } = useFormContext();\n\n  return (\n    <div className={classnames('group', className)}>\n      <Tooltip content={tooltip || ''}>\n\n        <input\n          className={classnames('m-2 group-hover:cursor-pointer', disabled ? 'group-hover:cursor-default' : 'group-hover:cursor-pointer')}\n          type=\"checkbox\"\n          id={id}\n          {...register(id, options)}\n          disabled={disabled}\n        />\n      </Tooltip>\n      {label && <label htmlFor={id} className={classnames('text-text-lg-semibold', disabled ? 'text-typography-dark' : 'text-typography-black group-hover:cursor-pointer')}>{label}</label>}\n    </div>\n  );\n};\n\nexport default FormCheckboxInput;\n", "import React, { useState, type HTMLProps, type ReactNode, useRef } from \"react\";\ninterface TooltipProps {\n  children: ReactNode;\n  content: string;\n}\nconst Tooltip = (props: React.HTMLProps<HTMLDivElement> & TooltipProps) => {\n  const [hover, setHover] = useState(false);\n  const hoverTimeout = useRef<NodeJS.Timeout | null>(null); // Use `number` instead of `NodeJS.Timeout` if you're not in a Node environment\n\n  const handleMouseEnter = () => {\n    hoverTimeout.current = setTimeout(() => {\n      setHover(true);\n    }, 300);\n  };\n\n  const handleMouseLeave = () => {\n    if (hoverTimeout.current) {\n      clearTimeout(hoverTimeout.current);\n      hoverTimeout.current = null;\n    }\n    setHover(false);\n  };\n\n  return (\n    <div\n      onMouseEnter={handleMouseEnter}\n      onMouseLeave={handleMouseLeave}\n      className=\"relative flex flex-col items-center\">\n      {hover && (\n        <div className=\"absolute left-0 top-0 mx-auto flex w-full items-center justify-center gap-0 [opacity:0.78] [z-index:999999] [transform:translateY(calc(-100%-10px))]\">\n          <div className=\"mx-auto flex flex-col items-center justify-center\">\n            <div className=\"whitespace-nowrap rounded-md bg-black p-2 text-[11px] text-white [font-weight:400] [letter-spacing:0] [line-height:13px]\">\n              {props.content}\n            </div>\n            <div className=\"-my-3 text-center text-black\">\u25BC</div>\n          </div>\n        </div>\n      )}\n      {props.children}\n    </div>\n  );\n};\nexport default Tooltip;\n", "/* eslint-disable react/jsx-props-no-spreading */\nimport { RegisterOptions, useFormContext } from 'react-hook-form';\nimport classnames from 'classnames';\nimport * as React from 'react';\nimport { useMemo } from 'react';\nimport { InputError, InputLabel } from '../InputLabel';\nimport Dropdown from '../../Dropdown/Dropdown';\n\nconst inputDefaultStyles = `inline-block px-2 py-1 font-normal text-typography-black bg-white bg-clip-padding\nborder border-solid border-stroke-grey-300 rounded transition ease-in-out my-1 text-text-md-semibold\nfocus:text-typography-black focus:bg-white focus:border-blue-600 focus:outline-none`;\n\ninterface SelectOption {\n  value: string,\n  optionLabel: string,\n}\ninterface FormSelectProps {\n  id: string,\n  label?: string,\n  className?: string,\n  inputClassName?: string,\n  inline?: boolean,\n  selectOptions: SelectOption[],\n  showReset?: boolean,\n  options?: RegisterOptions,\n}\n\nconst FormMultiSelect = ({\n  id, label, className, inputClassName, inline, selectOptions, showReset, options,\n}: FormSelectProps) => {\n  const {\n    formState, register, setValue, watch,\n  } = useFormContext();\n  const values = watch(id) || [];\n\n  const selectedOptionsLabels = useMemo(\n    () => values.map((value: string) => selectOptions.find((option) => option.value === value)?.optionLabel).join(', '),\n    [values, selectOptions],\n  );\n\n  return (\n    <div className={classnames('flex-col items-start', className)}>\n      {label && (\n        <InputLabel\n          label={label}\n          inline={inline}\n          showReset={showReset && values.length > 0}\n          onReset={() => setValue(id, [])}\n        />\n      )}\n      <Dropdown\n        label={selectedOptionsLabels || ''}\n        labelClassName={classnames(inputDefaultStyles, inputClassName, 'w-full inline-flex justify-between', { 'border-500 border-2': formState.errors[id] })}\n        listClassName=\"bg-white rounded w-full border p-2\"\n        ariaLabel={label}\n      >\n        {selectOptions.map((option) => (\n          // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events\n          <label\n            key={`${id}-${option.value}`}\n            htmlFor={`${id}-${option.value}`}\n            className=\"text-md-semibold p-1 rounded hover:bg-light-200 hover:cursor-pointer hover:text-hover block flex-grow-0\"\n            onClick={(event) => event?.stopPropagation()}\n          >\n            <input\n              type=\"checkbox\"\n              {...register(id, options)}\n              value={option.value}\n              id={`${id}-${option.value}`}\n              className=\"mr-2\"\n            />\n            {option.optionLabel}\n          </label>\n        ))}\n      </Dropdown>\n      {formState.errors[id]?.message && <InputError message={formState.errors[id]?.message as string} />}\n    </div>\n  );\n};\n\nexport default FormMultiSelect;\n", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgFilters = (props: SVGProps<SVGSVGElement>) => <svg width={20} height={20} viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M10.625 13.4375H3.125\" strokeWidth={1.62} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M16.875 13.4375H13.125\" strokeWidth={1.62} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M5.625 6.5625H3.125\" strokeWidth={1.62} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M16.875 6.5625H8.125\" strokeWidth={1.62} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M8.125 4.6875V8.4375\" strokeWidth={1.62} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M13.125 15.3125V11.5625\" strokeWidth={1.62} strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>;\nexport default SvgFilters;", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgPlus = (props: SVGProps<SVGSVGElement>) => <svg width={20} height={20} viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M3.125 10H16.875\" strokeWidth={1.62} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M10 3.125V16.875\" strokeWidth={1.62} strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>;\nexport default SvgPlus;", "import * as React from 'react';\nimport { useMemo } from 'react';\nimport useMessages from '../../../hooks/useMessages';\nimport {\n  useGetDocumentsCategoriesQuery,\n  useGetDocumentStatusesQuery,\n  useGetFullJournalsQuery,\n} from '../../../api/appApi';\nimport capitalize from '../../../../utils/formatters';\nimport { FilterConfig } from '../../../components/FilterInput/FilterInput';\nimport Filters from '../../../components/Filters/Filters';\nimport useTenantlessMode from '../../../hooks/useTenantlessMode';\n\ninterface DocumentsFilterProps {\n  documentType: 'incoming' | 'outgoing' | 'all';\n}\n\nconst EmployeeDocumentsFilters = ({ documentType }: DocumentsFilterProps) => {\n  const getMessage = useMessages();\n  const tenantlessMode = useTenantlessMode();\n  const { data: documentCategories } = useGetDocumentsCategoriesQuery();\n  const { data: documentStatuses } = useGetDocumentStatusesQuery();\n  const { data: journals } = useGetFullJournalsQuery({ items: '200', document_type: documentType });\n\n  const categoryOptionsValues = useMemo(() => documentCategories?.map(({ id, name }) => ({\n    value: id,\n    optionLabel: capitalize(name),\n  })), [documentCategories]);\n\n  const statusOptionsValues = useMemo(() => documentStatuses?.map(({ id, name }) => ({\n    value: id,\n    optionLabel: capitalize(name),\n  })), [documentStatuses]);\n\n  const journalOptionsValues = useMemo(() => journals?.journals?.map(({ id, name }) => ({\n    value: id,\n    optionLabel: capitalize(name),\n  })), [journals]);\n\n  const filterFields: FilterConfig[] = useMemo(() => [\n    {\n      type: 'multiselect',\n      id: 'status_ids',\n      label: getMessage('documents.column.status'),\n      selectOptions: statusOptionsValues || [],\n    },\n    {\n      type: 'dateRange',\n      id: 'from_created_at',\n      toDateId: 'to_created_at',\n      label: getMessage('documents.column.date'),\n    },\n    {\n      type: 'text',\n      id: 'number_title_search',\n      label: getMessage('documents.filter.titleOrNumber'),\n      ariaLabel: 'Szukaj po numerze lub tytule dokumentu',\n    },\n    {\n      type: 'multiselect',\n      id: 'category_ids',\n      label: getMessage('documents.column.category'),\n      selectOptions: categoryOptionsValues || [],\n    },\n    {\n      type: 'multiselect',\n      id: 'journal_ids',\n      label: getMessage('documents.column.journal'),\n      selectOptions: journalOptionsValues || [],\n    },\n    {\n      type: 'text',\n      id: 'creator_search',\n      label: getMessage('documents.column.creator'),\n      ariaLabel: 'Szukaj po imieniu i nazwisku autora',\n    },\n    {\n      type: 'text',\n      id: 'sender_search',\n      label: getMessage('documents.column.sender'),\n      ariaLabel: 'Szukaj po imieniu i nazwisku nadawcy',\n    },\n    {\n      type: 'text',\n      id: 'receiver_search',\n      label: getMessage('documents.column.receiver'),\n      ariaLabel: 'Szukaj po imieniu i nazwisku odbiorcy',\n    },\n    ...tenantlessMode ? [] : [{\n      type: 'text',\n      id: 'tenant_search',\n      label: getMessage('documents.column.tenant'),\n      ariaLabel: 'Szukaj po imieniu i nazwisku lub kodzie lokatora',\n    } as FilterConfig],\n    {\n      type: 'text',\n      id: 'realizer_search',\n      label: getMessage('documents.column.realizer'),\n      ariaLabel: 'Szukaj po imieniu i nazwisku realizuj\u0105cego',\n    },\n    {\n      type: 'multiselect',\n      id: 'revoked',\n      label: getMessage('documents.filter.revoked'),\n      defaultValue: ['true', 'false'],\n      selectOptions: [\n        { value: 'true', optionLabel: getMessage('documents.filter.revoked.revoked') },\n        { value: 'false', optionLabel: getMessage('documents.filter.revoked.valid') },\n      ],\n    },\n  ], [statusOptionsValues, categoryOptionsValues, journalOptionsValues, tenantlessMode]);\n\n  return (\n    <Filters\n      filterId=\"documentsList\"\n      filterFields={filterFields}\n    />\n  );\n};\n\nexport default EmployeeDocumentsFilters;\n", "import * as React from 'react';\nimport { useEffect, useMemo } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport FilterInput, { FilterConfig } from '../FilterInput/FilterInput';\nimport useMessages from '../../hooks/useMessages';\nimport useFilters from '../../hooks/useFilters';\nimport { TableId } from '../../store/appSlice';\nimport Button from '../Button/Button';\n\ninterface Props {\n  filterId: TableId,\n  filterFields: FilterConfig[],\n  showReset?: boolean,\n}\n\ninterface DefaultValues {\n  [key: string]: string | string[]\n}\n\nconst Filters = ({ filterId, filterFields, showReset = true }: Props) => {\n  const getMessage = useMessages();\n  const { saveFilterValues, filterValues } = useFilters(filterId);\n\n  const defaultValues: DefaultValues = useMemo(() => {\n    const defaults: DefaultValues = {};\n    filterFields.forEach((field) => {\n      switch (field.type) {\n        case 'multiselect':\n          defaults[field.id] = filterValues?.[field.id] || field.defaultValue || [];\n          break;\n        case 'dateRange':\n          defaults[field.id] = filterValues?.[field.id] || field.defaultValue || '';\n          defaults[field.toDateId] = filterValues?.[field.toDateId] || field.defaultValue || '';\n          break;\n        default:\n          defaults[field.id] = filterValues?.[field.id] || field.defaultValue || '';\n      }\n    });\n    return defaults;\n  }, [filterFields]);\n\n  const resetValues: DefaultValues = useMemo(() => {\n    const reset: DefaultValues = {};\n    filterFields.forEach((field) => {\n      switch (field.type) {\n        case 'multiselect':\n          reset[field.id] = [];\n          break;\n        case 'dateRange':\n          reset[field.id] = '';\n          reset[field.toDateId] = '';\n          break;\n        default:\n          reset[field.id] = '';\n      }\n    });\n    return reset;\n  }, [filterFields]);\n\n  const methods = useForm({\n    defaultValues,\n  });\n\n  useEffect(() => {\n    filterFields.forEach((field) => {\n      if (field.defaultValue) {\n        methods.setValue(field.id, field.defaultValue);\n      }\n    });\n  }, [filterFields]);\n\n  useEffect(() => {\n    methods.watch(\n      (filters) => {\n        saveFilterValues(filters);\n      },\n    );\n  }, [methods.watch]);\n\n  return (\n    // eslint-disable-next-line react/jsx-props-no-spreading\n    <FormProvider {...methods}>\n      <form\n        className=\"grid grid-cols-12 items-end gap-2 md:gap-4 w-full bg-light-100 border-t px-2 sm:px-3 md:px-7 lg:px-8 xl:px-12 py-4 md:py-6 lg:py-8\"\n        onSubmit={methods.handleSubmit(() => 'submit')}\n      >\n        {filterFields.map((field) => (\n          <FilterInput\n            key={field.id}\n            config={field}\n          />\n        ))}\n        {showReset && (\n          <div className=\"\n            col-span-12 md:col-span-4 lg:col-span-2 md:col-end-13 lg:col-end-13 flex flex-row items-end justify-end mt-6 md:mt-0\"\n          >\n            <Button\n              onClick={() => methods.reset(() => (resetValues))}\n              className=\"w-full md:w-auto mb-1 py-1 h-8\"\n              styleType=\"secondary\"\n            >\n              {getMessage('filters.clean')}\n            </Button>\n          </div>\n        )}\n      </form>\n    </FormProvider>\n  );\n};\n\nexport default Filters;\n", "import * as React from 'react';\nimport { SelectOption } from '../FormInputs/inputs/FormSelect';\nimport {\n  FormInput, FormMultiSelect, FormRangeDatePicker, FormSelect,\n} from '../FormInputs';\nimport useMessages from '../../hooks/useMessages';\n\ntype CommonInputConfig = {\n  id: string,\n  label: string,\n  defaultValue?: string | string[],\n  ariaLabel?: string,\n};\n\ninterface InputConfig extends CommonInputConfig {\n  type: 'text' | 'number',\n  selectOptions?: never,\n  toDateId?: never,\n}\n\ninterface SelectConfig extends CommonInputConfig {\n  type: 'select' | 'multiselect',\n  selectOptions: SelectOption[],\n  toDateId?: never,\n  showReset?: boolean,\n}\n\ninterface RangeConfig extends CommonInputConfig {\n  type: 'dateRange',\n  toDateId: string,\n  selectOptions?: never,\n  showReset?: boolean,\n}\n\nexport type FilterConfig = InputConfig | SelectConfig | RangeConfig;\n\ninterface Props {\n  config: FilterConfig,\n}\n\nconst FilterInput = ({ config }: Props) => {\n  const getMessage = useMessages();\n  const {\n    type, id, label, selectOptions, toDateId, ariaLabel,\n  } = config;\n\n  const classname = 'col-span-12 md:col-span-4 lg:col-span-2';\n\n  switch (type) {\n    case 'text':\n      return (\n        <FormInput\n          className={classname}\n          id={id}\n          label={label}\n          type=\"text\"\n          ariaLabel={ariaLabel}\n          inputClassName=\"w-full\"\n          placeholder={getMessage('filters.search')}\n        />\n      );\n    case 'number':\n      return (\n        <FormInput\n          className={classname}\n          id={id}\n          label={label}\n          type=\"number\"\n          inputClassName=\"w-full\"\n        />\n      );\n    case 'select':\n      return (\n        <FormSelect\n          className={classname}\n          id={id}\n          label={label}\n          selectOptions={selectOptions}\n          showReset={typeof config.showReset === 'boolean' ? config.showReset : true}\n        />\n      );\n    case 'multiselect':\n      return (\n        <FormMultiSelect\n          className={classname}\n          id={id}\n          label={label}\n          selectOptions={selectOptions}\n          showReset={typeof config.showReset === 'boolean' ? config.showReset : true}\n        />\n      );\n    case 'dateRange':\n      return (\n        <FormRangeDatePicker\n          className={classname}\n          idFrom={id}\n          idTo={toDateId}\n          inputClassName=\"w-full\"\n          label={label}\n          showReset={typeof config.showReset === 'boolean' ? config.showReset : true}\n        />\n      );\n    default:\n      return null;\n  }\n};\n\nexport default FilterInput;\n", "import * as React from 'react';\n\ninterface Props {\n  className?: string,\n}\n\nconst ContentWrapper = ({ children, className }: React.PropsWithChildren<Props>) => (\n  <div className={`overflow-y-auto px-2 sm:px-3 md:px-7 lg:px-8 xl:px-12 py-7 xl:py-8 border-t grid-cols-12 grid gap-y-6 md:gap-6 ${className}`}>\n    {children}\n  </div>\n);\n\nexport default ContentWrapper;\n", "import * as React from 'react';\nimport { useEffect } from 'react';\nimport { useMediaQuery } from 'react-responsive';\nimport { useGetDocumentsQuery } from '../../../api/appApi';\nimport usePagination from '../../../hooks/usePagination';\nimport useFilters from '../../../hooks/useFilters';\nimport useSortParams from '../../../hooks/useSortParams';\nimport { FilterValues } from '../../../store/appSlice';\nimport { md } from '../../../../utils/breakpoints';\nimport PaginationControls from '../../../components/Table/PaginationControls';\nimport EmployeeDocumentsTableDesktop from './EmployeeDocumentsTableDesktop';\nimport EmployeeDocumentsTableMobile from './EmployeeDocumentsTableMobile';\n\ninterface DocumentsProps {\n  documentType: 'incoming' | 'outgoing' | 'all';\n  documentStatus: 'open' | 'mine_in_progress' | 'unassigned' | 'created_by_me'\n}\n\nconst EmployeeDocumentsList = ({ documentType, documentStatus }: DocumentsProps) => {\n  const [selectedPage, setSelectedPage] = usePagination('documentsList');\n  const { filterValues } = useFilters('documentsList');\n  const { sortParamsValues } = useSortParams('documentsList');\n  const filters: FilterValues = { ...filterValues };\n  \n\n  useEffect(() => {\n    setSelectedPage(1);\n  }, []);\n\n  const { data } = useGetDocumentsQuery({\n    ...sortParamsValues,\n    ...filters,\n    page: selectedPage.toString(),\n    document_type: documentType,\n    document_status: documentStatus,\n  }, { refetchOnMountOrArgChange: true });\n  const isTabletOrDesktop = useMediaQuery({ query: `(min-width: ${md})` });\n  const documentsData = data?.documents;\n\n  return (\n    <>\n      {isTabletOrDesktop ? (\n        <EmployeeDocumentsTableDesktop documents={documentsData || []} />\n      ) : <EmployeeDocumentsTableMobile documents={documentsData || []} />}\n      {data?.metadata && (\n        <PaginationControls\n          className=\"col-span-full\"\n          selectedPage={selectedPage}\n          setSelectedPage={setSelectedPage}\n          paginationMetadata={data.metadata}\n        />\n      )}\n    </>\n  );\n};\n\nexport default EmployeeDocumentsList;\n", "import { useAppDispatch, useAppSelector } from './reduxHooks';\nimport { setPaginationPage, TableId } from '../store/appSlice';\n\nconst usePagination = (tableId: TableId): [number, (n: number) => void] => {\n  const dispatch = useAppDispatch();\n  const selectedPage = useAppSelector((state) => {\n    const pag = state.app.pagination.find((pagination) => pagination.tableId === tableId);\n    return pag?.selectedPage || 1;\n  });\n\n  const selectPage = (newPageNumber: number) => {\n    dispatch(setPaginationPage({\n      id: tableId,\n      selectedPage: newPageNumber,\n    }));\n  };\n\n  return [selectedPage, selectPage];\n};\n\nexport default usePagination;\n", "import { useCallback } from 'react';\nimport { useAppDispatch, useAppSelector } from './reduxHooks';\nimport { setSortParams, SortParamsValues, TableId } from '../store/appSlice';\n\nconst useSortParams = (tableId: TableId) => {\n  const dispatch = useAppDispatch();\n\n  const sortParamsValues = useAppSelector((state) => state.app.sortParams.find((sortParams) => sortParams.id === tableId)?.values) || {};\n  const { order: sortOrder, sort: sortBy } = sortParamsValues;\n\n  const saveSortParamsValues = useCallback(\n    (newSortParams: SortParamsValues) => dispatch(setSortParams({ id: tableId, values: newSortParams })),\n    [tableId],\n  );\n\n  const handleSaveSortParams = useCallback((columnName: string) => {\n    if (sortBy === columnName) {\n      const newOrder = sortOrder === 'desc' ? 'asc' : 'desc';\n      saveSortParamsValues({ sort: columnName, order: newOrder });\n    } else {\n      saveSortParamsValues({ sort: columnName, order: 'asc' });\n    }\n  }, [sortBy, sortOrder]);\n\n  return { saveSortParamsValues, sortParamsValues, handleSaveSortParams };\n};\n\nexport default useSortParams;\n", "import resolveConfig from 'tailwindcss/resolveConfig';\n\nconst tailwindConfig = require('../../../tailwind.config.js');\n\nexport const { sm, md, lg } = resolveConfig(tailwindConfig).theme?.screens as {\n  sm: string,\n  md: string,\n  lg: string,\n};\n\nexport const { mobile, tablet } = resolveConfig(tailwindConfig).theme?.screens as {\n  mobile: { raw: string },\n  tablet: { raw: string },\n};\n\nexport const PDF_PREVIEW_WIDTH_MOBILE = 300;\nexport const PDF_PREVIEW_WIDTH_TABLET = 647;\nexport const PDF_PREVIEW_WIDTH_DESKTOP = 638;\n", "import * as React from 'react';\nimport { useIntl } from 'react-intl';\nimport { PropsWithChildren } from 'react';\nimport classnames from 'classnames';\nimport { PaginationMetadata } from '../../api/paginationTypes';\n\ninterface Props {\n  selectedPage: number,\n  setSelectedPage: (n: number) => void,\n  paginationMetadata: PaginationMetadata,\n  className?: string,\n}\n\nconst PaginationControlDiv = ({ children }: PropsWithChildren) => (\n  <div className=\"bg-white rounded border border-gray-200 w-6 h-6 text-text-md-medium ml-1 flex justify-center items-center\">{children}</div>\n);\n\nconst PaginationControlButton = ({ children, onClick, ariaLabel }: PropsWithChildren<{ ariaLabel: string, onClick: () => void }>) => (\n  <button\n    className=\"bg-white rounded border border-gray-200 w-6 h-6 text-text-md-medium ml-1 hover:text-hover\"\n    type=\"button\"\n    onClick={onClick}\n    aria-label={ariaLabel}\n  >\n    {children}\n  </button>\n);\n\nconst PaginationControls = ({\n  selectedPage, setSelectedPage, paginationMetadata, className,\n}: Props) => {\n  const intl = useIntl();\n\n  return (\n    <div className={classnames(\n      'bg-background-white flex flex-col items-center py-4 px-2 relative col-span-full w-full border rounded mt-4'\n      + ' md:bg-transparent md:flex-row md:justify-between md:w-full md:px-5 md:p-0 md:mx-0 md:border-none md:mt-0',\n      className,\n    )}\n    >\n      <div className=\"text-text-md-medium mb-4\">\n        {intl.formatMessage(\n          { id: 'pagination.info' },\n          { start: paginationMetadata.from, end: paginationMetadata.to, all: paginationMetadata.count },\n        )}\n      </div>\n      <div className=\"flex justify-end\">\n        {!!paginationMetadata.prev && (\n          <PaginationControlButton\n            onClick={() => setSelectedPage(selectedPage - 1)}\n            ariaLabel={intl.formatMessage({ id: 'pagination.previousPage' })}\n          >\n            {'<'}\n          </PaginationControlButton>\n        )}\n        {paginationMetadata.series.map((pageSelect, index) => {\n          if (typeof pageSelect === 'string') {\n            // eslint-disable-next-line react/no-array-index-key\n            if (pageSelect === 'gap') return <PaginationControlDiv key={`gap-${index}`}>...</PaginationControlDiv>;\n            return <PaginationControlDiv key={`current-${pageSelect}`}><b>{pageSelect}</b></PaginationControlDiv>;\n          }\n          return (\n            <PaginationControlButton key={`control-${pageSelect}`} onClick={() => setSelectedPage(pageSelect)} ariaLabel={`${pageSelect}`}>\n              {pageSelect}\n            </PaginationControlButton>\n          );\n        })}\n        {!!paginationMetadata.next && (\n          <PaginationControlButton\n            onClick={() => setSelectedPage(selectedPage + 1)}\n            ariaLabel={intl.formatMessage({ id: 'pagination.nextPage' })}\n          >\n            {'>'}\n          </PaginationControlButton>\n        )}\n      </div>\n    </div>\n  );\n};\n\nexport default PaginationControls;\n", "import * as React from 'react';\nimport { useCallback, useEffect } from 'react';\nimport { format } from 'date-fns';\nimport classnames from 'classnames';\nimport { useAppDispatch, useAppSelector } from '../../../hooks/reduxHooks';\nimport useMessages from '../../../hooks/useMessages';\nimport {\n  resetSelectedDocumentIds, saveSelectedDocumentId, TableId,\n} from '../../../store/appSlice';\nimport TableActionsBar from '../../../components/Table/TableActionsBar';\nimport Table, {\n  TableBody, TableBodyCell,\n  TableBodyRow,\n  TableHeader,\n  TableHeaderCell,\n  TableHeaderRow,\n} from '../../../components/Table/Table';\nimport TableBodyPlaceholder from '../../../components/Table/TableBodyPlaceholder';\nimport Chip from '../../../components/Chip/Chip';\nimport {\n  Document, DocumentColumnId, tenantRelatedDocumentColumnIds,\n} from '../../../api/modules/documents/documentsTypes';\nimport DocumentBulkActions from './DocumentsBulkActions/DocumentBulkActions';\nimport DocumentTableCustomisation from './DocumentsBulkActions/DocumentTableCustomisation';\nimport { useGetSelectedDocumentsColumnsQuery } from '../../../api/appApi';\nimport useTenantlessMode from '../../../hooks/useTenantlessMode';\n\ninterface Props {\n  documents: Document[],\n}\n\nconst EmployeeDocumentsTableDesktop = ({ documents }: Props) => {\n  const getMessage = useMessages();\n  const tenantlessMode = useTenantlessMode();\n  const selectedDocumentsIds = useAppSelector((state) => state.app.selectedDocumentsIds);\n  const { data: selectedColumns } = useGetSelectedDocumentsColumnsQuery();\n  const isSelected = useCallback(\n    (columnId: DocumentColumnId): boolean => (\n      !!selectedColumns?.includes(columnId)\n      && (!tenantlessMode || !tenantRelatedDocumentColumnIds.includes(columnId))\n    ),\n    [selectedColumns, tenantlessMode],\n  );\n\n  const dispatch = useAppDispatch();\n\n  const handleChecked = (id: string) => {\n    dispatch(saveSelectedDocumentId({ id }));\n  };\n\n  useEffect(() => {\n    dispatch(resetSelectedDocumentIds());\n  }, []);\n\n  return (\n    <>\n      <TableActionsBar>\n        <div className=\"flex justify-center\">\n          <DocumentBulkActions selectedTasks={selectedDocumentsIds} />\n          <DocumentTableCustomisation />\n        </div>\n      </TableActionsBar>\n      <Table className=\"col-span-full px-0 py-0 table-fixed whitespace-nowrap overflow-auto overscroll-none !p-0\">\n        <TableHeader className=\"sticky top-0 z-20 bg-background-white border-none shadow-main shadow-sm\">\n          <TableHeaderRow className=\"[&>*:nth-child(2)]:pl-8 [&>*:last-child]:pr-8\">\n            <TableHeaderCell className=\"sticky top-0 left-0 pt-8 bg-main \" />\n            <TableHeaderCell className=\"pt-8 pb-4\" id=\"document_number\" tableName={'documentsList' as TableId}>\n              {getMessage('documents.column.documentNumber')}\n            </TableHeaderCell>\n            <TableHeaderCell className=\"pt-8 pb-4\" id=\"created_at\" tableName={'documentsList' as TableId}>\n              {getMessage('documents.column.date')}\n            </TableHeaderCell>\n            <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('documents.column.title')}</TableHeaderCell>\n            <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('documents.column.description')}</TableHeaderCell>\n            <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('documents.column.journal')}</TableHeaderCell>\n            <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('documents.column.status')}</TableHeaderCell>\n            <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('documents.column.creator')}</TableHeaderCell>\n            <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('documents.column.realizer')}</TableHeaderCell>\n            <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('documents.column.category')}</TableHeaderCell>\n            {isSelected('sender') && (<TableHeaderCell className=\"pt-8 pb-4\">{getMessage('documents.column.sender')}</TableHeaderCell>)}\n            {isSelected('receiver') && (<TableHeaderCell className=\"pt-8 pb-4\">{getMessage('documents.column.receiver')}</TableHeaderCell>)}\n            {isSelected('tenant') && (<TableHeaderCell className=\"pt-8 pb-4\">{getMessage('documents.column.tenant')}</TableHeaderCell>)}\n          </TableHeaderRow>\n        </TableHeader>\n        <TableBody>\n          {documents.length === 0\n            && (\n              <TableBodyPlaceholder />\n            )}\n          {documents.map(({\n            id, documentNumber, creationDate, title, description, journal, status,\n            creator, realizer, sender, receiver, tenant, category, revoked,\n          }) => (\n            <TableBodyRow key={id} className={classnames('relative border-none text-typography-black [&>*:nth-child(2)]:pl-8 [&>*:last-child]:pr-8', revoked ? '!bg-gray-200' : 'odd:bg-light-100')}>\n              <TableHeaderCell className=\"sticky left-0 z-15 m-10 pl-0 !pr-0 pt-0 bg-main border-main w-1\">\n                <label htmlFor={id} className=\"hover:cursor-pointer\">\n                  <div className=\"text-[0px] h-0\">{getMessage('documents.document.checkbox.label')}</div>\n                  <input\n                    className=\"m-4\"\n                    type=\"checkbox\"\n                    checked={selectedDocumentsIds.includes(id)}\n                    onChange={() => handleChecked(id)}\n                    id={id}\n                  />\n                </label>\n              </TableHeaderCell>\n              <TableBodyCell>{documentNumber}</TableBodyCell>\n              <TableBodyCell>\n                {creationDate && (\n                <Chip chipStyle=\"ghost\" className=\"w-fit\">\n                  {format(new Date(creationDate), 'dd-MM-yyyy')}\n                </Chip>\n                )}\n              </TableBodyCell>\n              <TableBodyCell\n                clickable={({ href: `/dokumenty/${id}`, ariaLabel: `Przejd\u017A do szczeg\u00F3\u0142\u00F3w dokumentu ${documentNumber} ${title}` })}\n                className=\"text-typography-black\"\n              >\n                {title}\n              </TableBodyCell>\n              <TableBodyCell className=\"overflow-ellipsis\">{revoked ? getMessage('documents.document.revoked') : description}</TableBodyCell>\n              <TableBodyCell>{journal}</TableBodyCell>\n              <TableBodyCell>\n                <Chip chipStyle=\"primary\" className=\"w-fit\">\n                  {status}\n                </Chip>\n              </TableBodyCell>\n              <TableBodyCell>{creator}</TableBodyCell>\n              <TableBodyCell>{realizer}</TableBodyCell>\n              <TableBodyCell>\n                <Chip chipStyle=\"primary\" className=\"w-fit\">\n                  {category}\n                </Chip>\n              </TableBodyCell>\n              {isSelected('sender') && (<TableBodyCell>{sender}</TableBodyCell>)}\n              {isSelected('receiver') && (<TableBodyCell>{receiver}</TableBodyCell>)}\n              {isSelected('tenant') && (<TableBodyCell>{tenant}</TableBodyCell>)}\n            </TableBodyRow>\n          ))}\n        </TableBody>\n      </Table>\n    </>\n  );\n};\n\nexport default EmployeeDocumentsTableDesktop;\n", "export default function toInteger(dirtyNumber) {\n  if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n    return NaN;\n  }\n\n  var number = Number(dirtyNumber);\n\n  if (isNaN(number)) {\n    return number;\n  }\n\n  return number < 0 ? Math.ceil(number) : Math.floor(number);\n}", "export default function requiredArgs(required, args) {\n  if (args.length < required) {\n    throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n  }\n}", "function _typeof(obj) { \"@babel/helpers - typeof\"; 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\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\n\nexport default function toDate(argument) {\n  requiredArgs(1, arguments);\n  var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n  if (argument instanceof Date || _typeof(argument) === 'object' && argStr === '[object Date]') {\n    // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n    return new Date(argument.getTime());\n  } else if (typeof argument === 'number' || argStr === '[object Number]') {\n    return new Date(argument);\n  } else {\n    if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n      // eslint-disable-next-line no-console\n      console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\"); // eslint-disable-next-line no-console\n\n      console.warn(new Error().stack);\n    }\n\n    return new Date(NaN);\n  }\n}", "import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var timestamp = toDate(dirtyDate).getTime();\n  var amount = toInteger(dirtyAmount);\n  return new Date(timestamp + amount);\n}", "var defaultOptions = {};\nexport function getDefaultOptions() {\n  return defaultOptions;\n}\nexport function setDefaultOptions(newOptions) {\n  defaultOptions = newOptions;\n}", "/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n  var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n  utcDate.setUTCFullYear(date.getFullYear());\n  return date.getTime() - utcDate.getTime();\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name closestIndexTo\n * @category Common Helpers\n * @summary Return an index of the closest date from the array comparing to the given date.\n *\n * @description\n * Return an index of the closest date from the array comparing to the given date.\n *\n * @param {Date | Number} dateToCompare - the date to compare with\n * @param {Array<Date> | Array<number>} datesArray - the array to search\n * @returns {Number | undefined} an index of the date closest to the given date or undefined if no valid value is given\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Which date is closer to 6 September 2015?\n * const dateToCompare = new Date(2015, 8, 6)\n * const datesArray = [\n *   new Date(2015, 0, 1),\n *   new Date(2016, 0, 1),\n *   new Date(2017, 0, 1)\n * ]\n * const result = closestIndexTo(dateToCompare, datesArray)\n * //=> 1\n */\n\nexport default function closestIndexTo(dirtyDateToCompare, dirtyDatesArray) {\n  requiredArgs(2, arguments);\n  var dateToCompare = toDate(dirtyDateToCompare);\n  if (isNaN(Number(dateToCompare))) return NaN;\n  var timeToCompare = dateToCompare.getTime();\n  var datesArray; // `dirtyDatesArray` is undefined or null\n\n  if (dirtyDatesArray == null) {\n    datesArray = []; // `dirtyDatesArray` is Array, Set or Map, or object with custom `forEach` method\n  } else if (typeof dirtyDatesArray.forEach === 'function') {\n    datesArray = dirtyDatesArray; // If `dirtyDatesArray` is Array-like Object, convert to Array. Otherwise, make it empty Array\n  } else {\n    datesArray = Array.prototype.slice.call(dirtyDatesArray);\n  }\n\n  var result;\n  var minDistance;\n  datesArray.forEach(function (dirtyDate, index) {\n    var currentDate = toDate(dirtyDate);\n\n    if (isNaN(Number(currentDate))) {\n      result = NaN;\n      minDistance = NaN;\n      return;\n    }\n\n    var distance = Math.abs(timeToCompare - currentDate.getTime());\n\n    if (result == null || distance < Number(minDistance)) {\n      result = index;\n      minDistance = distance;\n    }\n  });\n  return result;\n}", "function _typeof(obj) { \"@babel/helpers - typeof\"; 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\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\n\nexport default function isDate(value) {\n  requiredArgs(1, arguments);\n  return value instanceof Date || _typeof(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}", "import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\n\nexport default function isValid(dirtyDate) {\n  requiredArgs(1, arguments);\n\n  if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n    return false;\n  }\n\n  var date = toDate(dirtyDate);\n  return !isNaN(Number(date));\n}", "import addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n  requiredArgs(2, arguments);\n  var amount = toInteger(dirtyAmount);\n  return addMilliseconds(dirtyDate, -amount);\n}", "import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\nexport default function getUTCDayOfYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var timestamp = date.getTime();\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n  var startOfYearTimestamp = date.getTime();\n  var difference = timestamp - startOfYearTimestamp;\n  return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}", "import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeek(dirtyDate) {\n  requiredArgs(1, arguments);\n  var weekStartsOn = 1;\n  var date = toDate(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}", "import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nexport default function getUTCISOWeekYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getUTCFullYear();\n  var fourthOfJanuaryOfNextYear = new Date(0);\n  fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n  fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n  var fourthOfJanuaryOfThisYear = new Date(0);\n  fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n  fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}", "import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n  requiredArgs(1, arguments);\n  var year = getUTCISOWeekYear(dirtyDate);\n  var fourthOfJanuary = new Date(0);\n  fourthOfJanuary.setUTCFullYear(year, 0, 4);\n  fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n  var date = startOfUTCISOWeek(fourthOfJanuary);\n  return date;\n}", "import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCISOWeek(dirtyDate) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}", "import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeek(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\n  requiredArgs(1, arguments);\n  var defaultOptions = getDefaultOptions();\n  var weekStartsOn = toInteger((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n\n  var date = toDate(dirtyDate);\n  var day = date.getUTCDay();\n  var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n  date.setUTCDate(date.getUTCDate() - diff);\n  date.setUTCHours(0, 0, 0, 0);\n  return date;\n}", "import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function getUTCWeekYear(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var year = date.getUTCFullYear();\n  var defaultOptions = getDefaultOptions();\n  var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n\n  var firstWeekOfNextYear = new Date(0);\n  firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n  firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n  var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, options);\n  var firstWeekOfThisYear = new Date(0);\n  firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n  var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, options);\n\n  if (date.getTime() >= startOfNextYear.getTime()) {\n    return year + 1;\n  } else if (date.getTime() >= startOfThisYear.getTime()) {\n    return year;\n  } else {\n    return year - 1;\n  }\n}", "import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\";\nimport { getDefaultOptions } from \"../defaultOptions/index.js\";\nexport default function startOfUTCWeekYear(dirtyDate, options) {\n  var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n\n  requiredArgs(1, arguments);\n  var defaultOptions = getDefaultOptions();\n  var firstWeekContainsDate = toInteger((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n  var year = getUTCWeekYear(dirtyDate, options);\n  var firstWeek = new Date(0);\n  firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n  firstWeek.setUTCHours(0, 0, 0, 0);\n  var date = startOfUTCWeek(firstWeek, options);\n  return date;\n}", "import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000;\nexport default function getUTCWeek(dirtyDate, options) {\n  requiredArgs(1, arguments);\n  var date = toDate(dirtyDate);\n  var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n  // because the number of milliseconds in a week is not constant\n  // (e.g. it's different in the week of the daylight saving time clock shift)\n\n  return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}", "export default function addLeadingZeros(number, targetLength) {\n  var sign = number < 0 ? '-' : '';\n  var output = Math.abs(number).toString();\n\n  while (output.length < targetLength) {\n    output = '0' + output;\n  }\n\n  return sign + output;\n}", "import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* |                                |\n * |  d  | Day of month                   |  D  |                                |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  m  | Minute                         |  M  | Month                          |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  y  | Year (abs)                     |  Y  |                                |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n  // Year\n  y: function y(date, token) {\n    // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n    // | Year     |     y | yy |   yyy |  yyyy | yyyyy |\n    // |----------|-------|----|-------|-------|-------|\n    // | AD 1     |     1 | 01 |   001 |  0001 | 00001 |\n    // | AD 12    |    12 | 12 |   012 |  0012 | 00012 |\n    // | AD 123   |   123 | 23 |   123 |  0123 | 00123 |\n    // | AD 1234  |  1234 | 34 |  1234 |  1234 | 01234 |\n    // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n    var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n    var year = signedYear > 0 ? signedYear : 1 - signedYear;\n    return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n  },\n  // Month\n  M: function M(date, token) {\n    var month = date.getUTCMonth();\n    return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n  },\n  // Day of the month\n  d: function d(date, token) {\n    return addLeadingZeros(date.getUTCDate(), token.length);\n  },\n  // AM or PM\n  a: function a(date, token) {\n    var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n    switch (token) {\n      case 'a':\n      case 'aa':\n        return dayPeriodEnumValue.toUpperCase();\n\n      case 'aaa':\n        return dayPeriodEnumValue;\n\n      case 'aaaaa':\n        return dayPeriodEnumValue[0];\n\n      case 'aaaa':\n      default:\n        return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n    }\n  },\n  // Hour [1-12]\n  h: function h(date, token) {\n    return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n  },\n  // Hour [0-23]\n  H: function H(date, token) {\n    return addLeadingZeros(date.getUTCHours(), token.length);\n  },\n  // Minute\n  m: function m(date, token) {\n    return addLeadingZeros(date.getUTCMinutes(), token.length);\n  },\n  // Second\n  s: function s(date, token) {\n    return addLeadingZeros(date.getUTCSeconds(), token.length);\n  },\n  // Fraction of second\n  S: function S(date, token) {\n    var numberOfDigits = token.length;\n    var milliseconds = date.getUTCMilliseconds();\n    var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n    return addLeadingZeros(fractionalSeconds, token.length);\n  }\n};\nexport default formatters;", "import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n  am: 'am',\n  pm: 'pm',\n  midnight: 'midnight',\n  noon: 'noon',\n  morning: 'morning',\n  afternoon: 'afternoon',\n  evening: 'evening',\n  night: 'night'\n};\n\n/*\n * |     | Unit                           |     | Unit                           |\n * |-----|--------------------------------|-----|--------------------------------|\n * |  a  | AM, PM                         |  A* | Milliseconds in day            |\n * |  b  | AM, PM, noon, midnight         |  B  | Flexible day period            |\n * |  c  | Stand-alone local day of week  |  C* | Localized hour w/ day period   |\n * |  d  | Day of month                   |  D  | Day of year                    |\n * |  e  | Local day of week              |  E  | Day of week                    |\n * |  f  |                                |  F* | Day of week in month           |\n * |  g* | Modified Julian day            |  G  | Era                            |\n * |  h  | Hour [1-12]                    |  H  | Hour [0-23]                    |\n * |  i! | ISO day of week                |  I! | ISO week of year               |\n * |  j* | Localized hour w/ day period   |  J* | Localized hour w/o day period  |\n * |  k  | Hour [1-24]                    |  K  | Hour [0-11]                    |\n * |  l* | (deprecated)                   |  L  | Stand-alone month              |\n * |  m  | Minute                         |  M  | Month                          |\n * |  n  |                                |  N  |                                |\n * |  o! | Ordinal number modifier        |  O  | Timezone (GMT)                 |\n * |  p! | Long localized time            |  P! | Long localized date            |\n * |  q  | Stand-alone quarter            |  Q  | Quarter                        |\n * |  r* | Related Gregorian year         |  R! | ISO week-numbering year        |\n * |  s  | Second                         |  S  | Fraction of second             |\n * |  t! | Seconds timestamp              |  T! | Milliseconds timestamp         |\n * |  u  | Extended year                  |  U* | Cyclic year                    |\n * |  v* | Timezone (generic non-locat.)  |  V* | Timezone (location)            |\n * |  w  | Local week of year             |  W* | Week of month                  |\n * |  x  | Timezone (ISO-8601 w/o Z)      |  X  | Timezone (ISO-8601)            |\n * |  y  | Year (abs)                     |  Y  | Local week-numbering year      |\n * |  z  | Timezone (specific non-locat.) |  Z* | Timezone (aliases)             |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n *   i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n *   `R` is supposed to be used in conjunction with `I` and `i`\n *   for universal ISO week-numbering date, whereas\n *   `Y` is supposed to be used in conjunction with `w` and `e`\n *   for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\nvar formatters = {\n  // Era\n  G: function G(date, token, localize) {\n    var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\n    switch (token) {\n      // AD, BC\n      case 'G':\n      case 'GG':\n      case 'GGG':\n        return localize.era(era, {\n          width: 'abbreviated'\n        });\n      // A, B\n\n      case 'GGGGG':\n        return localize.era(era, {\n          width: 'narrow'\n        });\n      // Anno Domini, Before Christ\n\n      case 'GGGG':\n      default:\n        return localize.era(era, {\n          width: 'wide'\n        });\n    }\n  },\n  // Year\n  y: function y(date, token, localize) {\n    // Ordinal number\n    if (token === 'yo') {\n      var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n      var year = signedYear > 0 ? signedYear : 1 - signedYear;\n      return localize.ordinalNumber(year, {\n        unit: 'year'\n      });\n    }\n\n    return lightFormatters.y(date, token);\n  },\n  // Local week-numbering year\n  Y: function Y(date, token, localize, options) {\n    var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n    var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n    if (token === 'YY') {\n      var twoDigitYear = weekYear % 100;\n      return addLeadingZeros(twoDigitYear, 2);\n    } // Ordinal number\n\n\n    if (token === 'Yo') {\n      return localize.ordinalNumber(weekYear, {\n        unit: 'year'\n      });\n    } // Padding\n\n\n    return addLeadingZeros(weekYear, token.length);\n  },\n  // ISO week-numbering year\n  R: function R(date, token) {\n    var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\n    return addLeadingZeros(isoWeekYear, token.length);\n  },\n  // Extended year. This is a single number designating the year of this calendar system.\n  // The main difference between `y` and `u` localizers are B.C. years:\n  // | Year | `y` | `u` |\n  // |------|-----|-----|\n  // | AC 1 |   1 |   1 |\n  // | BC 1 |   1 |   0 |\n  // | BC 2 |   2 |  -1 |\n  // Also `yy` always returns the last two digits of a year,\n  // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n  u: function u(date, token) {\n    var year = date.getUTCFullYear();\n    return addLeadingZeros(year, token.length);\n  },\n  // Quarter\n  Q: function Q(date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'Q':\n        return String(quarter);\n      // 01, 02, 03, 04\n\n      case 'QQ':\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n\n      case 'Qo':\n        return localize.ordinalNumber(quarter, {\n          unit: 'quarter'\n        });\n      // Q1, Q2, Q3, Q4\n\n      case 'QQQ':\n        return localize.quarter(quarter, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n      case 'QQQQQ':\n        return localize.quarter(quarter, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // 1st quarter, 2nd quarter, ...\n\n      case 'QQQQ':\n      default:\n        return localize.quarter(quarter, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone quarter\n  q: function q(date, token, localize) {\n    var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n    switch (token) {\n      // 1, 2, 3, 4\n      case 'q':\n        return String(quarter);\n      // 01, 02, 03, 04\n\n      case 'qq':\n        return addLeadingZeros(quarter, 2);\n      // 1st, 2nd, 3rd, 4th\n\n      case 'qo':\n        return localize.ordinalNumber(quarter, {\n          unit: 'quarter'\n        });\n      // Q1, Q2, Q3, Q4\n\n      case 'qqq':\n        return localize.quarter(quarter, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n      case 'qqqqq':\n        return localize.quarter(quarter, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // 1st quarter, 2nd quarter, ...\n\n      case 'qqqq':\n      default:\n        return localize.quarter(quarter, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // Month\n  M: function M(date, token, localize) {\n    var month = date.getUTCMonth();\n\n    switch (token) {\n      case 'M':\n      case 'MM':\n        return lightFormatters.M(date, token);\n      // 1st, 2nd, ..., 12th\n\n      case 'Mo':\n        return localize.ordinalNumber(month + 1, {\n          unit: 'month'\n        });\n      // Jan, Feb, ..., Dec\n\n      case 'MMM':\n        return localize.month(month, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // J, F, ..., D\n\n      case 'MMMMM':\n        return localize.month(month, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // January, February, ..., December\n\n      case 'MMMM':\n      default:\n        return localize.month(month, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone month\n  L: function L(date, token, localize) {\n    var month = date.getUTCMonth();\n\n    switch (token) {\n      // 1, 2, ..., 12\n      case 'L':\n        return String(month + 1);\n      // 01, 02, ..., 12\n\n      case 'LL':\n        return addLeadingZeros(month + 1, 2);\n      // 1st, 2nd, ..., 12th\n\n      case 'Lo':\n        return localize.ordinalNumber(month + 1, {\n          unit: 'month'\n        });\n      // Jan, Feb, ..., Dec\n\n      case 'LLL':\n        return localize.month(month, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // J, F, ..., D\n\n      case 'LLLLL':\n        return localize.month(month, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // January, February, ..., December\n\n      case 'LLLL':\n      default:\n        return localize.month(month, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // Local week of year\n  w: function w(date, token, localize, options) {\n    var week = getUTCWeek(date, options);\n\n    if (token === 'wo') {\n      return localize.ordinalNumber(week, {\n        unit: 'week'\n      });\n    }\n\n    return addLeadingZeros(week, token.length);\n  },\n  // ISO week of year\n  I: function I(date, token, localize) {\n    var isoWeek = getUTCISOWeek(date);\n\n    if (token === 'Io') {\n      return localize.ordinalNumber(isoWeek, {\n        unit: 'week'\n      });\n    }\n\n    return addLeadingZeros(isoWeek, token.length);\n  },\n  // Day of the month\n  d: function d(date, token, localize) {\n    if (token === 'do') {\n      return localize.ordinalNumber(date.getUTCDate(), {\n        unit: 'date'\n      });\n    }\n\n    return lightFormatters.d(date, token);\n  },\n  // Day of year\n  D: function D(date, token, localize) {\n    var dayOfYear = getUTCDayOfYear(date);\n\n    if (token === 'Do') {\n      return localize.ordinalNumber(dayOfYear, {\n        unit: 'dayOfYear'\n      });\n    }\n\n    return addLeadingZeros(dayOfYear, token.length);\n  },\n  // Day of week\n  E: function E(date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\n\n    switch (token) {\n      // Tue\n      case 'E':\n      case 'EE':\n      case 'EEE':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n\n      case 'EEEEE':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n\n      case 'EEEEEE':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n\n      case 'EEEE':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Local day of week\n  e: function e(date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n    switch (token) {\n      // Numerical value (Nth day of week with current locale or weekStartsOn)\n      case 'e':\n        return String(localDayOfWeek);\n      // Padded numerical value\n\n      case 'ee':\n        return addLeadingZeros(localDayOfWeek, 2);\n      // 1st, 2nd, ..., 7th\n\n      case 'eo':\n        return localize.ordinalNumber(localDayOfWeek, {\n          unit: 'day'\n        });\n\n      case 'eee':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n\n      case 'eeeee':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n\n      case 'eeeeee':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n\n      case 'eeee':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Stand-alone local day of week\n  c: function c(date, token, localize, options) {\n    var dayOfWeek = date.getUTCDay();\n    var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n    switch (token) {\n      // Numerical value (same as in `e`)\n      case 'c':\n        return String(localDayOfWeek);\n      // Padded numerical value\n\n      case 'cc':\n        return addLeadingZeros(localDayOfWeek, token.length);\n      // 1st, 2nd, ..., 7th\n\n      case 'co':\n        return localize.ordinalNumber(localDayOfWeek, {\n          unit: 'day'\n        });\n\n      case 'ccc':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'standalone'\n        });\n      // T\n\n      case 'ccccc':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'standalone'\n        });\n      // Tu\n\n      case 'cccccc':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'standalone'\n        });\n      // Tuesday\n\n      case 'cccc':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'standalone'\n        });\n    }\n  },\n  // ISO day of week\n  i: function i(date, token, localize) {\n    var dayOfWeek = date.getUTCDay();\n    var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n    switch (token) {\n      // 2\n      case 'i':\n        return String(isoDayOfWeek);\n      // 02\n\n      case 'ii':\n        return addLeadingZeros(isoDayOfWeek, token.length);\n      // 2nd\n\n      case 'io':\n        return localize.ordinalNumber(isoDayOfWeek, {\n          unit: 'day'\n        });\n      // Tue\n\n      case 'iii':\n        return localize.day(dayOfWeek, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n      // T\n\n      case 'iiiii':\n        return localize.day(dayOfWeek, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n      // Tu\n\n      case 'iiiiii':\n        return localize.day(dayOfWeek, {\n          width: 'short',\n          context: 'formatting'\n        });\n      // Tuesday\n\n      case 'iiii':\n      default:\n        return localize.day(dayOfWeek, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // AM or PM\n  a: function a(date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n    switch (token) {\n      case 'a':\n      case 'aa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n\n      case 'aaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        }).toLowerCase();\n\n      case 'aaaaa':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n\n      case 'aaaa':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // AM, PM, midnight, noon\n  b: function b(date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n\n    if (hours === 12) {\n      dayPeriodEnumValue = dayPeriodEnum.noon;\n    } else if (hours === 0) {\n      dayPeriodEnumValue = dayPeriodEnum.midnight;\n    } else {\n      dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n    }\n\n    switch (token) {\n      case 'b':\n      case 'bb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n\n      case 'bbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        }).toLowerCase();\n\n      case 'bbbbb':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n\n      case 'bbbb':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // in the morning, in the afternoon, in the evening, at night\n  B: function B(date, token, localize) {\n    var hours = date.getUTCHours();\n    var dayPeriodEnumValue;\n\n    if (hours >= 17) {\n      dayPeriodEnumValue = dayPeriodEnum.evening;\n    } else if (hours >= 12) {\n      dayPeriodEnumValue = dayPeriodEnum.afternoon;\n    } else if (hours >= 4) {\n      dayPeriodEnumValue = dayPeriodEnum.morning;\n    } else {\n      dayPeriodEnumValue = dayPeriodEnum.night;\n    }\n\n    switch (token) {\n      case 'B':\n      case 'BB':\n      case 'BBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'abbreviated',\n          context: 'formatting'\n        });\n\n      case 'BBBBB':\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'narrow',\n          context: 'formatting'\n        });\n\n      case 'BBBB':\n      default:\n        return localize.dayPeriod(dayPeriodEnumValue, {\n          width: 'wide',\n          context: 'formatting'\n        });\n    }\n  },\n  // Hour [1-12]\n  h: function h(date, token, localize) {\n    if (token === 'ho') {\n      var hours = date.getUTCHours() % 12;\n      if (hours === 0) hours = 12;\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n\n    return lightFormatters.h(date, token);\n  },\n  // Hour [0-23]\n  H: function H(date, token, localize) {\n    if (token === 'Ho') {\n      return localize.ordinalNumber(date.getUTCHours(), {\n        unit: 'hour'\n      });\n    }\n\n    return lightFormatters.H(date, token);\n  },\n  // Hour [0-11]\n  K: function K(date, token, localize) {\n    var hours = date.getUTCHours() % 12;\n\n    if (token === 'Ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n  // Hour [1-24]\n  k: function k(date, token, localize) {\n    var hours = date.getUTCHours();\n    if (hours === 0) hours = 24;\n\n    if (token === 'ko') {\n      return localize.ordinalNumber(hours, {\n        unit: 'hour'\n      });\n    }\n\n    return addLeadingZeros(hours, token.length);\n  },\n  // Minute\n  m: function m(date, token, localize) {\n    if (token === 'mo') {\n      return localize.ordinalNumber(date.getUTCMinutes(), {\n        unit: 'minute'\n      });\n    }\n\n    return lightFormatters.m(date, token);\n  },\n  // Second\n  s: function s(date, token, localize) {\n    if (token === 'so') {\n      return localize.ordinalNumber(date.getUTCSeconds(), {\n        unit: 'second'\n      });\n    }\n\n    return lightFormatters.s(date, token);\n  },\n  // Fraction of second\n  S: function S(date, token) {\n    return lightFormatters.S(date, token);\n  },\n  // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n  X: function X(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    if (timezoneOffset === 0) {\n      return 'Z';\n    }\n\n    switch (token) {\n      // Hours and optional minutes\n      case 'X':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XX`\n\n      case 'XXXX':\n      case 'XX':\n        // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `XXX`\n\n      case 'XXXXX':\n      case 'XXX': // Hours and minutes with `:` delimiter\n\n      default:\n        return formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n  x: function x(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    switch (token) {\n      // Hours and optional minutes\n      case 'x':\n        return formatTimezoneWithOptionalMinutes(timezoneOffset);\n      // Hours, minutes and optional seconds without `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xx`\n\n      case 'xxxx':\n      case 'xx':\n        // Hours and minutes without `:` delimiter\n        return formatTimezone(timezoneOffset);\n      // Hours, minutes and optional seconds with `:` delimiter\n      // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n      // so this token always has the same output as `xxx`\n\n      case 'xxxxx':\n      case 'xxx': // Hours and minutes with `:` delimiter\n\n      default:\n        return formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (GMT)\n  O: function O(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case 'O':\n      case 'OO':\n      case 'OOO':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n      // Long\n\n      case 'OOOO':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Timezone (specific non-location)\n  z: function z(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timezoneOffset = originalDate.getTimezoneOffset();\n\n    switch (token) {\n      // Short\n      case 'z':\n      case 'zz':\n      case 'zzz':\n        return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n      // Long\n\n      case 'zzzz':\n      default:\n        return 'GMT' + formatTimezone(timezoneOffset, ':');\n    }\n  },\n  // Seconds timestamp\n  t: function t(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = Math.floor(originalDate.getTime() / 1000);\n    return addLeadingZeros(timestamp, token.length);\n  },\n  // Milliseconds timestamp\n  T: function T(date, token, _localize, options) {\n    var originalDate = options._originalDate || date;\n    var timestamp = originalDate.getTime();\n    return addLeadingZeros(timestamp, token.length);\n  }\n};\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = Math.floor(absOffset / 60);\n  var minutes = absOffset % 60;\n\n  if (minutes === 0) {\n    return sign + String(hours);\n  }\n\n  var delimiter = dirtyDelimiter || '';\n  return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n  if (offset % 60 === 0) {\n    var sign = offset > 0 ? '-' : '+';\n    return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n  }\n\n  return formatTimezone(offset, dirtyDelimiter);\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n  var delimiter = dirtyDelimiter || '';\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n  var minutes = addLeadingZeros(absOffset % 60, 2);\n  return sign + hours + delimiter + minutes;\n}\n\nexport default formatters;", "var dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'P':\n      return formatLong.date({\n        width: 'short'\n      });\n\n    case 'PP':\n      return formatLong.date({\n        width: 'medium'\n      });\n\n    case 'PPP':\n      return formatLong.date({\n        width: 'long'\n      });\n\n    case 'PPPP':\n    default:\n      return formatLong.date({\n        width: 'full'\n      });\n  }\n};\n\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n  switch (pattern) {\n    case 'p':\n      return formatLong.time({\n        width: 'short'\n      });\n\n    case 'pp':\n      return formatLong.time({\n        width: 'medium'\n      });\n\n    case 'ppp':\n      return formatLong.time({\n        width: 'long'\n      });\n\n    case 'pppp':\n    default:\n      return formatLong.time({\n        width: 'full'\n      });\n  }\n};\n\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n  var matchResult = pattern.match(/(P+)(p+)?/) || [];\n  var datePattern = matchResult[1];\n  var timePattern = matchResult[2];\n\n  if (!timePattern) {\n    return dateLongFormatter(pattern, formatLong);\n  }\n\n  var dateTimeFormat;\n\n  switch (datePattern) {\n    case 'P':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'short'\n      });\n      break;\n\n    case 'PP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'medium'\n      });\n      break;\n\n    case 'PPP':\n      dateTimeFormat = formatLong.dateTime({\n        width: 'long'\n      });\n      break;\n\n    case 'PPPP':\n    default:\n      dateTimeFormat = formatLong.dateTime({\n        width: 'full'\n      });\n      break;\n  }\n\n  return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\n\nvar longFormatters = {\n  p: timeLongFormatter,\n  P: dateTimeLongFormatter\n};\nexport default longFormatters;", "var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n  return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n  return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n  if (token === 'YYYY') {\n    throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  } else if (token === 'YY') {\n    throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  } else if (token === 'D') {\n    throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  } else if (token === 'DD') {\n    throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n  }\n}", "var formatDistanceLocale = {\n  lessThanXSeconds: {\n    one: 'less than a second',\n    other: 'less than {{count}} seconds'\n  },\n  xSeconds: {\n    one: '1 second',\n    other: '{{count}} seconds'\n  },\n  halfAMinute: 'half a minute',\n  lessThanXMinutes: {\n    one: 'less than a minute',\n    other: 'less than {{count}} minutes'\n  },\n  xMinutes: {\n    one: '1 minute',\n    other: '{{count}} minutes'\n  },\n  aboutXHours: {\n    one: 'about 1 hour',\n    other: 'about {{count}} hours'\n  },\n  xHours: {\n    one: '1 hour',\n    other: '{{count}} hours'\n  },\n  xDays: {\n    one: '1 day',\n    other: '{{count}} days'\n  },\n  aboutXWeeks: {\n    one: 'about 1 week',\n    other: 'about {{count}} weeks'\n  },\n  xWeeks: {\n    one: '1 week',\n    other: '{{count}} weeks'\n  },\n  aboutXMonths: {\n    one: 'about 1 month',\n    other: 'about {{count}} months'\n  },\n  xMonths: {\n    one: '1 month',\n    other: '{{count}} months'\n  },\n  aboutXYears: {\n    one: 'about 1 year',\n    other: 'about {{count}} years'\n  },\n  xYears: {\n    one: '1 year',\n    other: '{{count}} years'\n  },\n  overXYears: {\n    one: 'over 1 year',\n    other: 'over {{count}} years'\n  },\n  almostXYears: {\n    one: 'almost 1 year',\n    other: 'almost {{count}} years'\n  }\n};\n\nvar formatDistance = function formatDistance(token, count, options) {\n  var result;\n  var tokenValue = formatDistanceLocale[token];\n\n  if (typeof tokenValue === 'string') {\n    result = tokenValue;\n  } else if (count === 1) {\n    result = tokenValue.one;\n  } else {\n    result = tokenValue.other.replace('{{count}}', count.toString());\n  }\n\n  if (options !== null && options !== void 0 && options.addSuffix) {\n    if (options.comparison && options.comparison > 0) {\n      return 'in ' + result;\n    } else {\n      return result + ' ago';\n    }\n  }\n\n  return result;\n};\n\nexport default formatDistance;", "export default function buildFormatLongFn(args) {\n  return function () {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    // TODO: Remove String()\n    var width = options.width ? String(options.width) : args.defaultWidth;\n    var format = args.formats[width] || args.formats[args.defaultWidth];\n    return format;\n  };\n}", "import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n  full: 'EEEE, MMMM do, y',\n  long: 'MMMM do, y',\n  medium: 'MMM d, y',\n  short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n  full: 'h:mm:ss a zzzz',\n  long: 'h:mm:ss a z',\n  medium: 'h:mm:ss a',\n  short: 'h:mm a'\n};\nvar dateTimeFormats = {\n  full: \"{{date}} 'at' {{time}}\",\n  long: \"{{date}} 'at' {{time}}\",\n  medium: '{{date}}, {{time}}',\n  short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n  date: buildFormatLongFn({\n    formats: dateFormats,\n    defaultWidth: 'full'\n  }),\n  time: buildFormatLongFn({\n    formats: timeFormats,\n    defaultWidth: 'full'\n  }),\n  dateTime: buildFormatLongFn({\n    formats: dateTimeFormats,\n    defaultWidth: 'full'\n  })\n};\nexport default formatLong;", "var formatRelativeLocale = {\n  lastWeek: \"'last' eeee 'at' p\",\n  yesterday: \"'yesterday at' p\",\n  today: \"'today at' p\",\n  tomorrow: \"'tomorrow at' p\",\n  nextWeek: \"eeee 'at' p\",\n  other: 'P'\n};\n\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n  return formatRelativeLocale[token];\n};\n\nexport default formatRelative;", "export default function buildLocalizeFn(args) {\n  return function (dirtyIndex, options) {\n    var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n    var valuesArray;\n\n    if (context === 'formatting' && args.formattingValues) {\n      var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n      var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n      valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n    } else {\n      var _defaultWidth = args.defaultWidth;\n\n      var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n\n      valuesArray = args.values[_width] || args.values[_defaultWidth];\n    }\n\n    var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex; // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n\n    return valuesArray[index];\n  };\n}", "import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n  narrow: ['B', 'A'],\n  abbreviated: ['BC', 'AD'],\n  wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n  narrow: ['1', '2', '3', '4'],\n  abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n  wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n}; // Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\n\nvar monthValues = {\n  narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n  abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n  narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n  short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n  abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n  wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'morning',\n    afternoon: 'afternoon',\n    evening: 'evening',\n    night: 'night'\n  }\n};\nvar formattingDayPeriodValues = {\n  narrow: {\n    am: 'a',\n    pm: 'p',\n    midnight: 'mi',\n    noon: 'n',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  abbreviated: {\n    am: 'AM',\n    pm: 'PM',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  },\n  wide: {\n    am: 'a.m.',\n    pm: 'p.m.',\n    midnight: 'midnight',\n    noon: 'noon',\n    morning: 'in the morning',\n    afternoon: 'in the afternoon',\n    evening: 'in the evening',\n    night: 'at night'\n  }\n};\n\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n  var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n  // if they are different for different grammatical genders,\n  // use `options.unit`.\n  //\n  // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n  // 'day', 'hour', 'minute', 'second'.\n\n  var rem100 = number % 100;\n\n  if (rem100 > 20 || rem100 < 10) {\n    switch (rem100 % 10) {\n      case 1:\n        return number + 'st';\n\n      case 2:\n        return number + 'nd';\n\n      case 3:\n        return number + 'rd';\n    }\n  }\n\n  return number + 'th';\n};\n\nvar localize = {\n  ordinalNumber: ordinalNumber,\n  era: buildLocalizeFn({\n    values: eraValues,\n    defaultWidth: 'wide'\n  }),\n  quarter: buildLocalizeFn({\n    values: quarterValues,\n    defaultWidth: 'wide',\n    argumentCallback: function argumentCallback(quarter) {\n      return quarter - 1;\n    }\n  }),\n  month: buildLocalizeFn({\n    values: monthValues,\n    defaultWidth: 'wide'\n  }),\n  day: buildLocalizeFn({\n    values: dayValues,\n    defaultWidth: 'wide'\n  }),\n  dayPeriod: buildLocalizeFn({\n    values: dayPeriodValues,\n    defaultWidth: 'wide',\n    formattingValues: formattingDayPeriodValues,\n    defaultFormattingWidth: 'wide'\n  })\n};\nexport default localize;", "export default function buildMatchFn(args) {\n  return function (string) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var width = options.width;\n    var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n    var matchResult = string.match(matchPattern);\n\n    if (!matchResult) {\n      return null;\n    }\n\n    var matchedString = matchResult[0];\n    var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n    var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n      return pattern.test(matchedString);\n    }) : findKey(parsePatterns, function (pattern) {\n      return pattern.test(matchedString);\n    });\n    var value;\n    value = args.valueCallback ? args.valueCallback(key) : key;\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    var rest = string.slice(matchedString.length);\n    return {\n      value: value,\n      rest: rest\n    };\n  };\n}\n\nfunction findKey(object, predicate) {\n  for (var key in object) {\n    if (object.hasOwnProperty(key) && predicate(object[key])) {\n      return key;\n    }\n  }\n\n  return undefined;\n}\n\nfunction findIndex(array, predicate) {\n  for (var key = 0; key < array.length; key++) {\n    if (predicate(array[key])) {\n      return key;\n    }\n  }\n\n  return undefined;\n}", "export default function buildMatchPatternFn(args) {\n  return function (string) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var matchResult = string.match(args.matchPattern);\n    if (!matchResult) return null;\n    var matchedString = matchResult[0];\n    var parseResult = string.match(args.parsePattern);\n    if (!parseResult) return null;\n    var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n    value = options.valueCallback ? options.valueCallback(value) : value;\n    var rest = string.slice(matchedString.length);\n    return {\n      value: value,\n      rest: rest\n    };\n  };\n}", "import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n  narrow: /^(b|a)/i,\n  abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n  wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n  any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n  narrow: /^[1234]/i,\n  abbreviated: /^q[1234]/i,\n  wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n  any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n  narrow: /^[jfmasond]/i,\n  abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n  wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n  narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n  any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n  narrow: /^[smtwf]/i,\n  short: /^(su|mo|tu|we|th|fr|sa)/i,\n  abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n  wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n  narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n  any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n  narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n  any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n  any: {\n    am: /^a/i,\n    pm: /^p/i,\n    midnight: /^mi/i,\n    noon: /^no/i,\n    morning: /morning/i,\n    afternoon: /afternoon/i,\n    evening: /evening/i,\n    night: /night/i\n  }\n};\nvar match = {\n  ordinalNumber: buildMatchPatternFn({\n    matchPattern: matchOrdinalNumberPattern,\n    parsePattern: parseOrdinalNumberPattern,\n    valueCallback: function valueCallback(value) {\n      return parseInt(value, 10);\n    }\n  }),\n  era: buildMatchFn({\n    matchPatterns: matchEraPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseEraPatterns,\n    defaultParseWidth: 'any'\n  }),\n  quarter: buildMatchFn({\n    matchPatterns: matchQuarterPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseQuarterPatterns,\n    defaultParseWidth: 'any',\n    valueCallback: function valueCallback(index) {\n      return index + 1;\n    }\n  }),\n  month: buildMatchFn({\n    matchPatterns: matchMonthPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseMonthPatterns,\n    defaultParseWidth: 'any'\n  }),\n  day: buildMatchFn({\n    matchPatterns: matchDayPatterns,\n    defaultMatchWidth: 'wide',\n    parsePatterns: parseDayPatterns,\n    defaultParseWidth: 'any'\n  }),\n  dayPeriod: buildMatchFn({\n    matchPatterns: matchDayPeriodPatterns,\n    defaultMatchWidth: 'any',\n    parsePatterns: parseDayPeriodPatterns,\n    defaultParseWidth: 'any'\n  })\n};\nexport default match;", "import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n  code: 'en-US',\n  formatDistance: formatDistance,\n  formatLong: formatLong,\n  formatRelative: formatRelative,\n  localize: localize,\n  match: match,\n  options: {\n    weekStartsOn: 0\n    /* Sunday */\n    ,\n    firstWeekContainsDate: 1\n  }\n};\nexport default locale;", "import defaultLocale from \"../../locale/en-US/index.js\";\nexport default defaultLocale;", "import isValid from \"../isValid/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport { getDefaultOptions } from \"../_lib/defaultOptions/index.js\";\nimport defaultLocale from \"../_lib/defaultLocale/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n//   (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n//   except a single quote symbol, which ends the sequence.\n//   Two quote characters do not end the sequence.\n//   If there is no matching single quote\n//   then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > \u26A0\uFE0F Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit                            | Pattern | Result examples                   | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era                             | G..GGG  | AD, BC                            |       |\n * |                                 | GGGG    | Anno Domini, Before Christ        | 2     |\n * |                                 | GGGGG   | A, B                              |       |\n * | Calendar year                   | y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | yo      | 44th, 1st, 0th, 17th              | 5,7   |\n * |                                 | yy      | 44, 01, 00, 17                    | 5     |\n * |                                 | yyy     | 044, 001, 1900, 2017              | 5     |\n * |                                 | yyyy    | 0044, 0001, 1900, 2017            | 5     |\n * |                                 | yyyyy   | ...                               | 3,5   |\n * | Local week-numbering year       | Y       | 44, 1, 1900, 2017                 | 5     |\n * |                                 | Yo      | 44th, 1st, 1900th, 2017th         | 5,7   |\n * |                                 | YY      | 44, 01, 00, 17                    | 5,8   |\n * |                                 | YYY     | 044, 001, 1900, 2017              | 5     |\n * |                                 | YYYY    | 0044, 0001, 1900, 2017            | 5,8   |\n * |                                 | YYYYY   | ...                               | 3,5   |\n * | ISO week-numbering year         | R       | -43, 0, 1, 1900, 2017             | 5,7   |\n * |                                 | RR      | -43, 00, 01, 1900, 2017           | 5,7   |\n * |                                 | RRR     | -043, 000, 001, 1900, 2017        | 5,7   |\n * |                                 | RRRR    | -0043, 0000, 0001, 1900, 2017     | 5,7   |\n * |                                 | RRRRR   | ...                               | 3,5,7 |\n * | Extended year                   | u       | -43, 0, 1, 1900, 2017             | 5     |\n * |                                 | uu      | -43, 01, 1900, 2017               | 5     |\n * |                                 | uuu     | -043, 001, 1900, 2017             | 5     |\n * |                                 | uuuu    | -0043, 0001, 1900, 2017           | 5     |\n * |                                 | uuuuu   | ...                               | 3,5   |\n * | Quarter (formatting)            | Q       | 1, 2, 3, 4                        |       |\n * |                                 | Qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | QQ      | 01, 02, 03, 04                    |       |\n * |                                 | QQQ     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | QQQQ    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | QQQQQ   | 1, 2, 3, 4                        | 4     |\n * | Quarter (stand-alone)           | q       | 1, 2, 3, 4                        |       |\n * |                                 | qo      | 1st, 2nd, 3rd, 4th                | 7     |\n * |                                 | qq      | 01, 02, 03, 04                    |       |\n * |                                 | qqq     | Q1, Q2, Q3, Q4                    |       |\n * |                                 | qqqq    | 1st quarter, 2nd quarter, ...     | 2     |\n * |                                 | qqqqq   | 1, 2, 3, 4                        | 4     |\n * | Month (formatting)              | M       | 1, 2, ..., 12                     |       |\n * |                                 | Mo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | MM      | 01, 02, ..., 12                   |       |\n * |                                 | MMM     | Jan, Feb, ..., Dec                |       |\n * |                                 | MMMM    | January, February, ..., December  | 2     |\n * |                                 | MMMMM   | J, F, ..., D                      |       |\n * | Month (stand-alone)             | L       | 1, 2, ..., 12                     |       |\n * |                                 | Lo      | 1st, 2nd, ..., 12th               | 7     |\n * |                                 | LL      | 01, 02, ..., 12                   |       |\n * |                                 | LLL     | Jan, Feb, ..., Dec                |       |\n * |                                 | LLLL    | January, February, ..., December  | 2     |\n * |                                 | LLLLL   | J, F, ..., D                      |       |\n * | Local week of year              | w       | 1, 2, ..., 53                     |       |\n * |                                 | wo      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | ww      | 01, 02, ..., 53                   |       |\n * | ISO week of year                | I       | 1, 2, ..., 53                     | 7     |\n * |                                 | Io      | 1st, 2nd, ..., 53th               | 7     |\n * |                                 | II      | 01, 02, ..., 53                   | 7     |\n * | Day of month                    | d       | 1, 2, ..., 31                     |       |\n * |                                 | do      | 1st, 2nd, ..., 31st               | 7     |\n * |                                 | dd      | 01, 02, ..., 31                   |       |\n * | Day of year                     | D       | 1, 2, ..., 365, 366               | 9     |\n * |                                 | Do      | 1st, 2nd, ..., 365th, 366th       | 7     |\n * |                                 | DD      | 01, 02, ..., 365, 366             | 9     |\n * |                                 | DDD     | 001, 002, ..., 365, 366           |       |\n * |                                 | DDDD    | ...                               | 3     |\n * | Day of week (formatting)        | E..EEE  | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | EEEE    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | EEEEE   | M, T, W, T, F, S, S               |       |\n * |                                 | EEEEEE  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | ISO day of week (formatting)    | i       | 1, 2, 3, ..., 7                   | 7     |\n * |                                 | io      | 1st, 2nd, ..., 7th                | 7     |\n * |                                 | ii      | 01, 02, ..., 07                   | 7     |\n * |                                 | iii     | Mon, Tue, Wed, ..., Sun           | 7     |\n * |                                 | iiii    | Monday, Tuesday, ..., Sunday      | 2,7   |\n * |                                 | iiiii   | M, T, W, T, F, S, S               | 7     |\n * |                                 | iiiiii  | Mo, Tu, We, Th, Fr, Sa, Su        | 7     |\n * | Local day of week (formatting)  | e       | 2, 3, 4, ..., 1                   |       |\n * |                                 | eo      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | ee      | 02, 03, ..., 01                   |       |\n * |                                 | eee     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | eeee    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | eeeee   | M, T, W, T, F, S, S               |       |\n * |                                 | eeeeee  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | Local day of week (stand-alone) | c       | 2, 3, 4, ..., 1                   |       |\n * |                                 | co      | 2nd, 3rd, ..., 1st                | 7     |\n * |                                 | cc      | 02, 03, ..., 01                   |       |\n * |                                 | ccc     | Mon, Tue, Wed, ..., Sun           |       |\n * |                                 | cccc    | Monday, Tuesday, ..., Sunday      | 2     |\n * |                                 | ccccc   | M, T, W, T, F, S, S               |       |\n * |                                 | cccccc  | Mo, Tu, We, Th, Fr, Sa, Su        |       |\n * | AM, PM                          | a..aa   | AM, PM                            |       |\n * |                                 | aaa     | am, pm                            |       |\n * |                                 | aaaa    | a.m., p.m.                        | 2     |\n * |                                 | aaaaa   | a, p                              |       |\n * | AM, PM, noon, midnight          | b..bb   | AM, PM, noon, midnight            |       |\n * |                                 | bbb     | am, pm, noon, midnight            |       |\n * |                                 | bbbb    | a.m., p.m., noon, midnight        | 2     |\n * |                                 | bbbbb   | a, p, n, mi                       |       |\n * | Flexible day period             | B..BBB  | at night, in the morning, ...     |       |\n * |                                 | BBBB    | at night, in the morning, ...     | 2     |\n * |                                 | BBBBB   | at night, in the morning, ...     |       |\n * | Hour [1-12]                     | h       | 1, 2, ..., 11, 12                 |       |\n * |                                 | ho      | 1st, 2nd, ..., 11th, 12th         | 7     |\n * |                                 | hh      | 01, 02, ..., 11, 12               |       |\n * | Hour [0-23]                     | H       | 0, 1, 2, ..., 23                  |       |\n * |                                 | Ho      | 0th, 1st, 2nd, ..., 23rd          | 7     |\n * |                                 | HH      | 00, 01, 02, ..., 23               |       |\n * | Hour [0-11]                     | K       | 1, 2, ..., 11, 0                  |       |\n * |                                 | Ko      | 1st, 2nd, ..., 11th, 0th          | 7     |\n * |                                 | KK      | 01, 02, ..., 11, 00               |       |\n * | Hour [1-24]                     | k       | 24, 1, 2, ..., 23                 |       |\n * |                                 | ko      | 24th, 1st, 2nd, ..., 23rd         | 7     |\n * |                                 | kk      | 24, 01, 02, ..., 23               |       |\n * | Minute                          | m       | 0, 1, ..., 59                     |       |\n * |                                 | mo      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | mm      | 00, 01, ..., 59                   |       |\n * | Second                          | s       | 0, 1, ..., 59                     |       |\n * |                                 | so      | 0th, 1st, ..., 59th               | 7     |\n * |                                 | ss      | 00, 01, ..., 59                   |       |\n * | Fraction of second              | S       | 0, 1, ..., 9                      |       |\n * |                                 | SS      | 00, 01, ..., 99                   |       |\n * |                                 | SSS     | 000, 001, ..., 999                |       |\n * |                                 | SSSS    | ...                               | 3     |\n * | Timezone (ISO-8601 w/ Z)        | X       | -08, +0530, Z                     |       |\n * |                                 | XX      | -0800, +0530, Z                   |       |\n * |                                 | XXX     | -08:00, +05:30, Z                 |       |\n * |                                 | XXXX    | -0800, +0530, Z, +123456          | 2     |\n * |                                 | XXXXX   | -08:00, +05:30, Z, +12:34:56      |       |\n * | Timezone (ISO-8601 w/o Z)       | x       | -08, +0530, +00                   |       |\n * |                                 | xx      | -0800, +0530, +0000               |       |\n * |                                 | xxx     | -08:00, +05:30, +00:00            | 2     |\n * |                                 | xxxx    | -0800, +0530, +0000, +123456      |       |\n * |                                 | xxxxx   | -08:00, +05:30, +00:00, +12:34:56 |       |\n * | Timezone (GMT)                  | O...OOO | GMT-8, GMT+5:30, GMT+0            |       |\n * |                                 | OOOO    | GMT-08:00, GMT+05:30, GMT+00:00   | 2     |\n * | Timezone (specific non-locat.)  | z...zzz | GMT-8, GMT+5:30, GMT+0            | 6     |\n * |                                 | zzzz    | GMT-08:00, GMT+05:30, GMT+00:00   | 2,6   |\n * | Seconds timestamp               | t       | 512969520                         | 7     |\n * |                                 | tt      | ...                               | 3,7   |\n * | Milliseconds timestamp          | T       | 512969520900                      | 7     |\n * |                                 | TT      | ...                               | 3,7   |\n * | Long localized date             | P       | 04/29/1453                        | 7     |\n * |                                 | PP      | Apr 29, 1453                      | 7     |\n * |                                 | PPP     | April 29th, 1453                  | 7     |\n * |                                 | PPPP    | Friday, April 29th, 1453          | 2,7   |\n * | Long localized time             | p       | 12:00 AM                          | 7     |\n * |                                 | pp      | 12:00:00 AM                       | 7     |\n * |                                 | ppp     | 12:00:00 AM GMT+2                 | 7     |\n * |                                 | pppp    | 12:00:00 AM GMT+02:00             | 2,7   |\n * | Combination of date and time    | Pp      | 04/29/1453, 12:00 AM              | 7     |\n * |                                 | PPpp    | Apr 29, 1453, 12:00:00 AM         | 7     |\n * |                                 | PPPppp  | April 29th, 1453 at ...           | 7     |\n * |                                 | PPPPpppp| Friday, April 29th, 1453 at ...   | 2,7   |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n *    are the same as \"stand-alone\" units, but are different in some languages.\n *    \"Formatting\" units are declined according to the rules of the language\n *    in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n *    `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n *    `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n *    the single quote characters (see below).\n *    If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n *    the output will be the same as default pattern for this unit, usually\n *    the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n *    are marked with \"2\" in the last column of the table.\n *\n *    `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n *    `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n *    The output will be padded with zeros to match the length of the pattern.\n *\n *    `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n *    These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n *    | Year | `y` | `u` |\n *    |------|-----|-----|\n *    | AC 1 |   1 |   1 |\n *    | BC 1 |   1 |   0 |\n *    | BC 2 |   2 |  -1 |\n *\n *    Also `yy` always returns the last two digits of a year,\n *    while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n *    | Year | `yy` | `uu` |\n *    |------|------|------|\n *    | 1    |   01 |   01 |\n *    | 14   |   14 |   14 |\n *    | 376  |   76 |  376 |\n *    | 1453 |   53 | 1453 |\n *\n *    The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n *    except local week-numbering years are dependent on `options.weekStartsOn`\n *    and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n *    and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n *    so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n *    - `i`: ISO day of week\n *    - `I`: ISO week of year\n *    - `R`: ISO week-numbering year\n *    - `t`: seconds timestamp\n *    - `T`: milliseconds timestamp\n *    - `o`: ordinal number modifier\n *    - `P`: long localized date\n *    - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n *    You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n *    You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n *   see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n *   locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, options) {\n  var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n\n  requiredArgs(2, arguments);\n  var formatStr = String(dirtyFormatStr);\n  var defaultOptions = getDefaultOptions();\n  var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : defaultLocale;\n  var firstWeekContainsDate = toInteger((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n  }\n\n  var weekStartsOn = toInteger((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n  if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n  }\n\n  if (!locale.localize) {\n    throw new RangeError('locale must contain localize property');\n  }\n\n  if (!locale.formatLong) {\n    throw new RangeError('locale must contain formatLong property');\n  }\n\n  var originalDate = toDate(dirtyDate);\n\n  if (!isValid(originalDate)) {\n    throw new RangeError('Invalid time value');\n  } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n  // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n  // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n  var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n  var utcDate = subMilliseconds(originalDate, timezoneOffset);\n  var formatterOptions = {\n    firstWeekContainsDate: firstWeekContainsDate,\n    weekStartsOn: weekStartsOn,\n    locale: locale,\n    _originalDate: originalDate\n  };\n  var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n    var firstCharacter = substring[0];\n\n    if (firstCharacter === 'p' || firstCharacter === 'P') {\n      var longFormatter = longFormatters[firstCharacter];\n      return longFormatter(substring, locale.formatLong);\n    }\n\n    return substring;\n  }).join('').match(formattingTokensRegExp).map(function (substring) {\n    // Replace two single quote characters with one single quote character\n    if (substring === \"''\") {\n      return \"'\";\n    }\n\n    var firstCharacter = substring[0];\n\n    if (firstCharacter === \"'\") {\n      return cleanEscapedString(substring);\n    }\n\n    var formatter = formatters[firstCharacter];\n\n    if (formatter) {\n      if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && isProtectedWeekYearToken(substring)) {\n        throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n      }\n\n      if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && isProtectedDayOfYearToken(substring)) {\n        throwProtectedError(substring, dirtyFormatStr, String(dirtyDate));\n      }\n\n      return formatter(utcDate, substring, locale.localize, formatterOptions);\n    }\n\n    if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n      throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n    }\n\n    return substring;\n  }).join('');\n  return result;\n}\n\nfunction cleanEscapedString(input) {\n  var matched = input.match(escapedStringRegExp);\n\n  if (!matched) {\n    return input;\n  }\n\n  return matched[1].replace(doubleQuoteRegExp, \"'\");\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|Number} date - the date that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\n\nexport default function isAfter(dirtyDate, dirtyDateToCompare) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var dateToCompare = toDate(dirtyDateToCompare);\n  return date.getTime() > dateToCompare.getTime();\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|Number} date - the date that should be before the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\n\nexport default function isBefore(dirtyDate, dirtyDateToCompare) {\n  requiredArgs(2, arguments);\n  var date = toDate(dirtyDate);\n  var dateToCompare = toDate(dirtyDateToCompare);\n  return date.getTime() < dateToCompare.getTime();\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param {Date|Number} dateLeft - the first date to compare\n * @param {Date|Number} dateRight - the second date to compare\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * const result = isEqual(\n *   new Date(2014, 6, 2, 6, 30, 45, 0),\n *   new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\n\nexport default function isEqual(dirtyLeftDate, dirtyRightDate) {\n  requiredArgs(2, arguments);\n  var dateLeft = toDate(dirtyLeftDate);\n  var dateRight = toDate(dirtyRightDate);\n  return dateLeft.getTime() === dateRight.getTime();\n}", "import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isPast\n * @category Common Helpers\n * @summary Is the given date in the past?\n * @pure false\n *\n * @description\n * Is the given date in the past?\n *\n * > \u26A0\uFE0F Please note that this function is not present in the FP submodule as\n * > it uses `Date.now()` internally hence impure and can't be safely curried.\n *\n * @param {Date|Number} date - the date to check\n * @returns {Boolean} the date is in the past\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // If today is 6 October 2014, is 2 July 2014 in the past?\n * const result = isPast(new Date(2014, 6, 2))\n * //=> true\n */\n\nexport default function isPast(dirtyDate) {\n  requiredArgs(1, arguments);\n  return toDate(dirtyDate).getTime() < Date.now();\n}", "import * as React from 'react';\nimport { PropsWithChildren } from 'react';\n\nconst TableActionsBar = ({ children } : PropsWithChildren) => (\n  <div className=\"flex flex-row-reverse col-span-full\">\n    {children}\n  </div>\n);\n\nexport default TableActionsBar;\n", "import * as React from 'react';\nimport classnames from 'classnames';\nimport { Link } from 'react-router-dom';\nimport Card from '../Card/Card';\nimport SortArrows from './SortArrows';\nimport useSortParams from '../../hooks/useSortParams';\nimport { TableId } from '../../store/appSlice';\n\nexport interface TableProps {\n  children: React.ReactNode,\n  header?: React.ReactNode,\n  className?: string\n  tableClassName?: string,\n  tabIndex?: number\n}\nconst Table = ({\n  children, className, tableClassName, header, tabIndex,\n}: TableProps) => (\n  <Card className={classnames(className)}>\n    {header}\n    <table className={classnames('w-full text-left flex-row', tableClassName)} tabIndex={tabIndex}>\n      {children}\n    </table>\n  </Card>\n);\n\ninterface TableHeaderProps {\n  children: React.ReactNode,\n  className?: string,\n}\nconst TableHeader = ({ className, children }: TableHeaderProps) => (\n  <thead className={`h-11 ${className}`}>\n    {children}\n  </thead>\n);\n\nexport interface TableHeaderRowProps {\n  children: React.ReactNode,\n  className?: string,\n}\nconst TableHeaderRow = ({\n  children, className,\n}: TableHeaderRowProps) => (\n  <tr className={`border-b ${className}`}>\n    {children}\n  </tr>\n);\n\nexport interface TableHeaderCellProps {\n  children?: React.ReactNode,\n  id?: string,\n  className?: string,\n  divClassName?: string,\n  tableName?: TableId,\n  colspan?: number,\n}\n\nconst TableHeaderCell = ({\n  children, id, className, divClassName, tableName, colspan,\n}: TableHeaderCellProps) => {\n  const { sortParamsValues, handleSaveSortParams } = useSortParams(tableName as TableId);\n  const { order: sortOrder, sort: sortBy } = sortParamsValues;\n  const sortable = !!id;\n  const handleClick = () => {\n    if (sortable) handleSaveSortParams(id);\n  };\n\n  return (\n    <th\n      key={id}\n      className={classnames('h-10 pr-8 md:pr-3 last:pr-0 text-text-lg-semibold text-typography-dark', { 'hover:cursor-pointer': sortable }, className)}\n      onClick={handleClick}\n      colSpan={colspan}\n      scope=\"col\"\n    >\n      <div className={classnames('flex items-center', divClassName)}>\n        {children}\n        {sortable && <SortArrows id={id} sortBy={sortBy} sortOrder={sortOrder} />}\n      </div>\n    </th>\n  );\n};\n\nexport interface TableBodyProps {\n  children?: React.ReactNode,\n}\nconst TableBody = ({ children }: TableBodyProps) => (\n  <tbody className=\"text-typography-dark\">\n    {children}\n  </tbody>\n);\n\nexport interface TableBodyRowProps {\n  children: React.ReactNode,\n  id?: string,\n  className?: string,\n  tabIndex?: number,\n  clickable?: {\n    href : string,\n    linkState?: {},\n    onClick?: () => void,\n    ariaLabel?: string,\n  }\n}\n\nconst TableBodyRow = ({\n  children, id, className, tabIndex, clickable,\n}: TableBodyRowProps) => (\n  <tr\n    key={id}\n    className={classnames('grid-col border-b last:border-b-0', className, { 'cursor-pointer hover:bg-gray-50 focus-within:border focus-within:border-hover relative': clickable })}\n    tabIndex={tabIndex}\n  >\n    {children}\n    {clickable && (\n      <Link\n        to={clickable.href}\n        state={clickable.linkState}\n        aria-label={clickable.ariaLabel}\n        onClick={clickable.onClick}\n        className='after:absolute after:content-[\"\"] after:w-full after:h-full after:top-0 after:left-0'\n      />\n    )}\n  </tr>\n);\n\ninterface TableBodyCellProps {\n  children?: React.ReactNode,\n  id?: string,\n  className?: string,\n  colspan?: number,\n  title?: string,\n  cellPadding?: string | boolean\n  bold?: boolean\n  clickable?: {\n    href : string,\n    linkState?: {},\n    onClick?: () => void,\n    ariaLabel?: string,\n  }\n}\nconst TableBodyCell = ({\n  children, id, className, colspan, title, cellPadding, bold, clickable,\n}: TableBodyCellProps) => (\n  // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions\n  <td\n    colSpan={colspan}\n    key={id}\n    title={title}\n    className={classnames(\n      'h-10 md:h-16 mobile:truncate mobile:overflow-hidden pr-0 md:pr-8 mb-2 md:mb-0',\n      { 'hover:underline hover:cursor-pointer hover:text-hover mobile:select-none relative': clickable },\n      bold ? 'text-text-md-semibold md:text-text-lg-semibold' : 'text-text-md-medium md:text-text-lg-medium',\n      cellPadding || 'last:pr-0',\n      className,\n    )}\n  >\n    {clickable ? (\n      <Link\n        to={clickable.href}\n        state={clickable.linkState}\n        onClick={clickable.onClick}\n        className=\"inline-block py-2 hover:text-hover hover:underline after:absolute after:content-[''] after:w-full after:h-full after:top-0 after:left-0\"\n        aria-label={clickable.ariaLabel}\n      >\n        {children}\n      </Link>\n    ) : children }\n  </td>\n);\n\nexport default Table;\nexport {\n  TableHeader, TableHeaderRow, TableHeaderCell, TableBody, TableBodyRow, TableBodyCell,\n};\n", "import * as React from 'react';\n\ninterface Props {\n  children: React.ReactNode,\n  className?: string,\n}\n\nconst Card = ({ children, className = '' }: Props) => (\n  <div className={`bg-background-white w-full p-5 md:p-8 rounded border border-stroke-grey-100 ${className}`}>\n    {children}\n  </div>\n);\n\nexport const ArticleCard = ({ children, className = '' }: Props) => (\n  <article className={`bg-background-white w-full p-5 md:p-8 rounded border border-stroke-grey-100 ${className}`}>\n    {children}\n  </article>\n);\n\nexport default Card;\n", "import * as React from 'react';\nimport ArrowUp from '../../icons/table-arrow-up.svg';\nimport ArrowDown from '../../icons/table-arrow-down.svg';\n\ninterface SortArrowsProps {\n  id?: string,\n  sortBy?: string,\n  sortOrder?: string\n}\n\nconst SortArrows = ({ id, sortBy, sortOrder }: SortArrowsProps) => {\n  let arrows: React.ReactNode;\n\n  if (sortBy === id) {\n    arrows = sortOrder === 'asc' ? <ArrowUp /> : <ArrowDown />;\n  } else {\n    arrows = (\n      <>\n        <ArrowUp />\n        <ArrowDown className=\"mt-[0.15rem]\" />\n      </>\n    );\n  }\n\n  return <div className=\"ml-2\">{arrows}</div>;\n};\n\nexport default SortArrows;\n", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgTableArrowUp = (props: SVGProps<SVGSVGElement>) => <svg width={6} height={5} viewBox=\"0 0 6 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M6 4.5H0L3 0.5L6 4.5Z\" fill=\"#5C5C67\" /></svg>;\nexport default SvgTableArrowUp;", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgTableArrowDown = (props: SVGProps<SVGSVGElement>) => <svg width={6} height={5} viewBox=\"0 0 6 5\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M3.49691e-07 0.499999L6 0.5L3 4.5L3.49691e-07 0.499999Z\" fill=\"#5C5C67\" /></svg>;\nexport default SvgTableArrowDown;", "import * as React from 'react';\nimport { useMediaQuery } from 'react-responsive';\nimport useMessages from '../../hooks/useMessages';\nimport { TableBodyRow, TableHeaderCell, TableBodyCell } from './Table';\nimport { mobile } from '../../../utils/breakpoints';\nimport TableContentPlaceholder from './TableContentPlaceholder';\n\nconst TableBodyPlaceholder = ({ text }: { text?: string }) => {\n  const getMessage = useMessages();\n  const isMobile = useMediaQuery({ query: mobile.raw });\n\n  return (\n    isMobile ? (\n      <TableContentPlaceholder />\n    ) : (\n      <TableBodyRow>\n        <TableHeaderCell />\n        <TableBodyCell colspan={4}>{text || getMessage('filters.noResults')}</TableBodyCell>\n      </TableBodyRow>\n    )\n  );\n};\n\nexport default TableBodyPlaceholder;\n", "import * as React from 'react';\nimport useMessages from '../../hooks/useMessages';\n\nconst TableContentPlaceholder = () => {\n  const getMessage = useMessages();\n\n  return (\n    <thead className=\"col-span-full\">\n      <tr>\n        <th className=\"text-text-md-medium\">{getMessage('filters.noResults')}</th>\n        <td />\n      </tr>\n    </thead>\n  );\n};\n\nexport default TableContentPlaceholder;\n", "import * as React from 'react';\nimport { PropsWithChildren } from 'react';\nimport classnames from 'classnames';\n\ninterface Props {\n  chipStyle: 'primary' | 'success' | 'error' | 'gray' | 'ghost',\n  className?: string,\n  tooltipText?: string,\n  screenReaderOnlyText?: string,\n}\n\nconst Chip = ({\n  chipStyle, className, children, tooltipText, screenReaderOnlyText,\n}: PropsWithChildren<Props>) => {\n  const styleVariants = {\n    primary: 'bg-light-200 text-hover text-text-sm-semibold border-light-200',\n    gray: 'bg-background-light text-typography-dark text-text-sm-semibold border-background-light',\n    ghost: 'text-typography-dark text-text-sm-medium border-stroke-grey-100',\n    success: 'bg-interactions-success-bg text-interactions-success-text text-text-sm-semibold border-interactions-success-bg w-[80px]',\n    error: 'bg-interactions-error-bg text-interactions-error-text text-text-sm-semibold border-interactions-error-bg w-[80px]',\n  };\n\n  return (\n    <div\n      className={classnames(styleVariants[chipStyle], 'border rounded text-center py-1.5 px-2 min-w-[80px] max-w-[220px] h-fit my-1 mobile:my-0', className)}\n      title={tooltipText}\n    >\n      <p className=\"inline-block\">\n        {screenReaderOnlyText\n        && <span className=\"visually-hidden\">{screenReaderOnlyText}</span>}\n        {children}\n      </p>\n    </div>\n  );\n};\n\nexport default Chip;\n", "import { PaginationMetadata } from '../../paginationTypes';\nimport { ApiTask, Task } from '../tasks/tasksTypes';\n\nexport type ApiDocumentsResponse = {\n  documents: ApiDocument[],\n  metadata: PaginationMetadata,\n};\n\nexport type ApiDocument = {\n  category: string,\n  created_at: string,\n  creator: string,\n  description: string,\n  document_number: string,\n  id: string,\n  journal: string,\n  realizer: string,\n  receiver: string,\n  sender: string,\n  status: string,\n  tenant: string,\n  title: string,\n  revoked: boolean,\n};\n\nexport type ApiFullDocument = {\n  document: {\n    id: string,\n    document_number: string,\n    title: string,\n    sender: string,\n    receiver: string,\n    description: string,\n    created_at: string,\n    journal: FullJournal,\n    status: ApiDocumentStatus,\n    category: DocumentCategory,\n    creator: {\n      id: string,\n      full_name: string\n    },\n    realizer: {\n      id: string,\n      full_name: string\n    },\n    tenant?: {\n      id: string,\n      name: string,\n    },\n    attachments: ApiDocumentAttachment[],\n    comments: ApiDocumentComment[]\n    tasks: ApiTask[],\n    revoked: boolean,\n  }\n};\n\nexport type FullDocument = {\n  id: string,\n  documentNumber: string,\n  title: string,\n  sender: string,\n  receiver: string,\n  description: string,\n  creationDate: string,\n  journal: FullJournal,\n  status: DocumentStatus,\n  category: DocumentCategory,\n  creator: {\n    id: string,\n    name: string\n  },\n  realizer: {\n    id: string,\n    name: string\n  },\n  tenant?: {\n    id: string,\n    name: string,\n  },\n  tasks: Task[],\n  attachments: Attachment[],\n  comments: DocumentComment[],\n  revoked: boolean,\n};\n\nexport type ApiDocumentAttachment = {\n  description: string,\n  filename: string,\n  content_type: string,\n  path: string\n};\n\nexport interface ApiDocumentComment {\n  attachments: ApiDocumentAttachment[]\n  author: string,\n  content: string,\n  created_at: string,\n}\n\nexport interface DocumentComment {\n  author: string,\n  content: string,\n  createdAt: string,\n  attachments: Attachment[]\n}\n\nexport interface Attachment {\n  description: string,\n  filename: string,\n  path: string,\n  contentType: string,\n}\n\nexport type Document = Omit<ApiDocument, 'document_number' | 'created_at'> & { documentNumber: string, creationDate: string };\n\nexport type DocumentsResponse = {\n  documents: Document[],\n  metadata: PaginationMetadata,\n};\n\nexport type ApiDocumentStatus = {\n  id: string,\n  object_type: string,\n  name: string,\n  active: boolean,\n  internal_name: string,\n  external_name: string,\n  description: string,\n};\n\nexport type ApiDocumentStatuses = {\n  statuses: ApiDocumentStatus[]\n};\n\nexport type DocumentStatus = {\n  id: string,\n  name: string,\n};\n\nexport type FullDocumentStatus = {\n  id: string,\n  objectType: string,\n  name: 'open' | 'completed' | string,\n  active: boolean,\n  internalName: string,\n  externalName: string,\n  description: string,\n};\n\nexport type ApiInvoiceStatus = {\n  id: string,\n  object_type: string,\n  name: string,\n  active: boolean,\n  internal_name: string,\n  external_name: string,\n  description: string,\n};\n\nexport type ApiInvoiceStatuses = {\n  statuses: ApiInvoiceStatus[]\n};\n\nexport type InvoiceStatus = {\n  id: string,\n  name: string,\n};\n\nexport type FullInvoiceStatus = {\n  id: string,\n  objectType: 'ksef_invoice' | string,\n  name: 'open' | 'completed' | string,\n  active: boolean,\n  internalName: string,\n  externalName: string,\n  description: string,\n};\n\nexport interface DocumentCategory {\n  id: string,\n  name: string,\n}\n\nexport interface ApiDocumentCategories {\n  document_categories: DocumentCategory[]\n}\n\nexport interface ApiPostDocument {\n  category_id: string,\n  description: string,\n  document_number: string,\n  journal_id: string,\n  realizer_id?: string,\n  receiver: string,\n  sender: string,\n  status_id?: string,\n  tenant_id?: string,\n  title: string,\n  attachments: DocumentAttachment[],\n}\n\nexport type ApiPostDocumentComment = {\n  id: string,\n  payload: FormData,\n};\n\nexport type ApiPostKsefInvoiceComment = {\n  id: string,\n  payload: FormData,\n};\n\nexport type DocumentFormData = {\n  title: string,\n  journalId: string,\n  number: string,\n  sender: string,\n  receiver: string,\n  tenantId?: string,\n  description: string,\n  statusId?: string,\n  categoryId: string,\n  assigneeId?: string,\n  attachments: DocumentAttachment[],\n};\n\ntype DocumentAttachment = {\n  file: FileList | undefined,\n  description: string\n};\n\nexport type Journal = {\n  autonumbering: boolean,\n  id: string,\n  name: string,\n  prefix: string,\n  journal_type: string\n};\n\nexport type Journals = {\n  journals: Journal[]\n  metadata: PaginationMetadata,\n};\n\nexport type FullJournal = Omit<Journal, 'id'> & {\n  description: string\n};\n\nexport type ApiFullJournal = {\n  journal: FullJournal\n};\n\nexport type ApiPostFullJournal = ApiFullJournal & {\n  id: string,\n};\n\nexport type KsefJournal = {\n  id: string,\n  name: string,\n  prefix: string,\n};\n\nexport type KsefJournals = {\n  journals: KsefJournal[],\n  metadata: PaginationMetadata,\n};\n\nexport const ksefAccountingDispositions = ['pending', 'rejected', 'approved'] as const;\nexport type KsefAccountingDisposition = typeof ksefAccountingDispositions[number];\n\nexport const ksefInvoiceModules = ['FK', 'FT', 'ME', 'MG'] as const;\nexport type KsefInvoiceModule = typeof ksefInvoiceModules[number];\n\n// Value of the invoice_module list filter that matches invoices without any module\nexport const ksefInvoiceWithoutModuleFilterValue = 'none';\n\nexport type ApiKsefInvoicesResponse = {\n  invoices: ApiKsefInvoice[],\n  metadata: PaginationMetadata,\n};\n\nexport type ApiKsefInvoice = {\n  id: string,\n  external_id?: string | null,\n  invoice_number: string,\n  invoice_issue_date: string,\n  invoice_receipt_date: string,\n  ksef_receipt_date: string,\n  deadline: string,\n  amount: number,\n  ksef_external_id: string,\n  description: string,\n  journal: string,\n  firm: string,\n  status: string | null,\n  realizer: string | null,\n  accounting_disposition: KsefAccountingDisposition,\n  invoice_module: KsefInvoiceModule | null,\n};\n\nexport type KsefInvoice = {\n  id: string,\n  externalId?: string | null,\n  invoiceNumber: string,\n  invoiceIssueDate: string,\n  invoiceReceiptDate: string,\n  ksefReceiptDate: string,\n  deadline: string,\n  amount: number,\n  ksefExternalId: string,\n  description: string,\n  journal: string,\n  firm: string,\n  status: string | null,\n  realizer: string | null,\n  accountingDisposition: KsefAccountingDisposition,\n  invoiceModule: KsefInvoiceModule | null,\n};\n\nexport type ApiFullKsefInvoice = {\n  invoice: {\n    id: string,\n    external_id: string | null,\n    invoice_number: string,\n    invoice_issue_date: string | null,\n    invoice_receipt_date: string | null,\n    ksef_receipt_date: string | null,\n    deadline: string | null,\n    amount: number | null,\n    ksef_external_id: string,\n    description: string | null,\n    extension_type: string | null,\n    compressed: boolean,\n    created_at: string,\n    updated_at: string,\n    journal: {\n      id: string,\n      name: string,\n    },\n    firm?: {\n      id: string,\n      name: string,\n    } | null,\n    status?: {\n      id: string,\n      name: string,\n    } | null,\n    realizer?: {\n      id: string,\n      name: string,\n    } | null,\n    file_path?: string | null,\n    attachments?: ApiDocumentAttachment[],\n    comments?: ApiDocumentComment[],\n    merit_description: string | null,\n    accounting_description: string | null,\n    accounting_disposition: KsefAccountingDisposition,\n    invoice_module: KsefInvoiceModule | null,\n  }\n};\n\nexport type FullKsefInvoice = {\n  id: string,\n  externalId: string | null,\n  invoiceNumber: string,\n  invoiceIssueDate: string | null,\n  invoiceReceiptDate: string | null,\n  ksefReceiptDate: string | null,\n  deadline: string | null,\n  amount: number | null,\n  ksefExternalId: string,\n  description: string | null,\n  extensionType: string | null,\n  compressed: boolean,\n  createdAt: string,\n  updatedAt: string,\n  journal: {\n    id: string,\n    name: string,\n  },\n  firm?: {\n    id: string,\n    name: string,\n  } | null,\n  status?: {\n    id: string,\n    name: string,\n  } | null,\n  realizer?: {\n    id: string,\n    name: string,\n  } | null,\n  filePath?: string | null,\n  attachments: Attachment[],\n  comments: DocumentComment[],\n  meritDescription: string | null,\n  accountingDescription: string | null,\n  accountingDisposition: KsefAccountingDisposition,\n  invoiceModule: KsefInvoiceModule | null,\n};\n\nexport type KsefInvoicesResponse = {\n  invoices: KsefInvoice[],\n  metadata: PaginationMetadata,\n};\n\nexport type FullKsefJournal = KsefJournal & {\n  description: string\n};\n\nexport type KsefJournalFormData = Omit<FullKsefJournal, 'id'>;\n\nexport type ApiFullKsefJournal = {\n  journal: FullKsefJournal\n};\n\nexport type ApiPostFullKsefJournal = {\n  id: string,\n  journal: KsefJournalFormData,\n};\n\nexport interface ApiPostChangeDocumentData {\n  documents: {\n    [id: string]: {\n      status_id?: string,\n      category_id?: string,\n      realizer_id?: string,\n    }\n  }\n}\n\nexport interface ApiPostChangeKsefInvoiceData {\n  invoices: {\n    [id: string]: {\n      status_id?: string,\n      realizer_id?: string | null,\n      merit_description?: string,\n      accounting_description?: string,\n      accounting_disposition?: KsefAccountingDisposition,\n      invoice_module?: KsefInvoiceModule | null,\n    }\n  }\n}\n\nexport const documentDefaultColumnIds = [\n  'document_number', 'created_at', 'creator', 'description', 'journal', 'title', 'status', 'category', 'realizer',\n];\nexport const documentCustomizableColumnIds = documentDefaultColumnIds.concat([\n  'sender', 'receiver', 'tenant',\n]);\n\nexport type DocumentColumnId = typeof documentCustomizableColumnIds[number];\n\nexport const tenantRelatedDocumentColumnIds: DocumentColumnId[] = ['tenant'];\n\nexport const ksefInvoiceDefaultColumnIds = [\n  'invoice_number', 'invoice_issue_date', 'ksef_receipt_date', 'amount', 'journal', 'status', 'realizer',\n  'accounting_disposition', 'invoice_module',\n];\n\nexport const ksefInvoiceCustomizableColumnIds = [\n  ...ksefInvoiceDefaultColumnIds,\n  'invoice_receipt_date', 'deadline', 'ksef_external_id', 'description', 'firm',\n];\n\nexport type KsefInvoiceColumnId = typeof ksefInvoiceCustomizableColumnIds[number];\n", "import * as React from 'react';\nimport DocumentChangeCategoryAction from './DocumentChangeCategoryAction';\nimport DocumentAssignEmployeeAction from './DocumentAssignEmployeeAction';\nimport DocumentChangeStatusAction from './DocumentChangeStatusAction';\n\ninterface Props {\n  selectedTasks: string[];\n}\n\nconst DocumentBulkActions = ({ selectedTasks }: Props) => (\n  <div className=\"flex items-center border-r border-stroke-grey-300 pr-1\">\n    <DocumentAssignEmployeeAction selectedDocumentsIds={selectedTasks} />\n    <DocumentChangeCategoryAction selectedDocumentsIds={selectedTasks} />\n    <DocumentChangeStatusAction selectedDocumentsIds={selectedTasks} />\n  </div>\n);\n\nexport default DocumentBulkActions;\n", "import * as React from 'react';\nimport { useCallback, useMemo, useState } from 'react';\nimport classNames from 'classnames';\nimport {\n  useGetDocumentsCategoriesQuery,\n  usePostChangeDocumentMutation,\n} from '../../../../api/appApi';\nimport useMessages from '../../../../hooks/useMessages';\nimport capitalize from '../../../../../utils/formatters';\nimport CategoryIcon from '../../../../icons/category.svg';\nimport Dialog from '../../../../components/Dialog/Dialog';\nimport { InputLabel } from '../../../../components/FormInputs/InputLabel';\nimport { Select } from '../../../../components/FormInputs/inputs/FormSelect';\n\ninterface Props {\n  selectedDocumentsIds: string[],\n}\n\nconst DocumentChangeCategoryAction = ({ selectedDocumentsIds }: Props) => {\n  const [isPopupOpen, setIsPopupOpen] = useState(false);\n  const [selectedCategory, setSelectedCategory] = useState('');\n  const [postChangeDocument] = usePostChangeDocumentMutation();\n  const getMessage = useMessages();\n  const { data: documentCategories } = useGetDocumentsCategoriesQuery();\n\n  const categoryOptionsValues = useMemo(() => documentCategories?.map(({ id, name }) => ({\n    value: id,\n    optionLabel: capitalize(name),\n  })), [documentCategories]);\n\n  const handleClick = () => {\n    if (selectedDocumentsIds.length > 0) setIsPopupOpen(true);\n  };\n\n  const changeCategory = (value: string) => {\n    setSelectedCategory(value);\n  };\n\n  const onAccept = useCallback(() => {\n    const documents: {\n      [key: string]: {\n        category_id: string\n      }\n    } = {};\n    function populatePayload(id: string) {\n      documents[id] = { category_id: selectedCategory };\n    }\n    selectedDocumentsIds.forEach((item) => populatePayload(item));\n    postChangeDocument({ documents });\n  }, [selectedCategory]);\n\n  const onClose = () => {\n    setSelectedCategory('');\n    setIsPopupOpen(false);\n  };\n\n  const dynamicStyles = (selectedDocumentsIds.length > 0) ? 'border-typography-dark hover:border-hover hover:cursor-pointer hover:text-hover hover:bg-light-200' : 'text-stroke-grey-300 border-stroke-grey-300 hover:cursor-default';\n\n  return (\n    <div title={getMessage('documents.bulkAction.changeCategory')}>\n      <CategoryIcon\n        role=\"button\"\n        className={classNames(dynamicStyles, 'border rounded text-typography-dark p-2 mr-1')}\n        onClick={handleClick}\n        tabIndex={(selectedDocumentsIds.length > 0) ? 0 : undefined}\n        onKeyDown={(e) => e.key === 'Enter' && setIsPopupOpen(true)}\n        aria-label={getMessage('documents.bulkAction.changeCategory')}\n      />\n      {isPopupOpen\n        && (\n          <Dialog\n            isOpen={isPopupOpen}\n            acceptButtonText={getMessage('confirm')}\n            onClose={onClose}\n            closeButtonText={getMessage('cancel')}\n            onAccept={onAccept}\n            isAcceptButtonDisabled={!selectedCategory}\n          >\n            <div className=\"mb-10\">\n              <InputLabel\n                label={getMessage('documents.changeDocumentsCategory')}\n              />\n              {categoryOptionsValues && (\n                <Select\n                  selectOptions={categoryOptionsValues}\n                  onChange={(value) => changeCategory(value)}\n                  value={selectedCategory}\n                  placeholder={getMessage('choose')}\n                  autofocus\n                />\n              )}\n            </div>\n          </Dialog>\n        ) }\n    </div>\n  );\n};\n\nexport default DocumentChangeCategoryAction;\n", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgCategory = (props: SVGProps<SVGSVGElement>) => <svg width={34} height={33} viewBox=\"0 0 14 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M9.556 0C11.8153 0 13.3333 1.58533 13.3333 3.944V9.38933C13.3333 11.748 11.8153 13.3333 9.55533 13.3333H3.77667C1.51733 13.3333 0 11.748 0 9.38933V3.944C0 1.58533 1.51733 0 3.77667 0H9.556ZM9.556 1H3.77667C2.09 1 1 2.15533 1 3.944V9.38933C1 11.178 2.09 12.3333 3.77667 12.3333H9.55533C11.2427 12.3333 12.3333 11.178 12.3333 9.38933V3.944C12.3333 2.15533 11.2427 1 9.556 1ZM9.2988 6.00913C9.66747 6.00913 9.96547 6.30713 9.96547 6.6758C9.96547 7.04447 9.66747 7.34247 9.2988 7.34247C8.93013 7.34247 8.6288 7.04447 8.6288 6.6758C8.6288 6.30713 8.92413 6.00913 9.29213 6.00913H9.2988ZM6.62567 6.00913C6.99433 6.00913 7.29233 6.30713 7.29233 6.6758C7.29233 7.04447 6.99433 7.34247 6.62567 7.34247C6.257 7.34247 5.95633 7.04447 5.95633 6.6758C5.95633 6.30713 6.251 6.00913 6.61967 6.00913H6.62567ZM3.95313 6.00913C4.3218 6.00913 4.6198 6.30713 4.6198 6.6758C4.6198 7.04447 4.3218 7.34247 3.95313 7.34247C3.58447 7.34247 3.28313 7.04447 3.28313 6.6758C3.28313 6.30713 3.57847 6.00913 3.94713 6.00913H3.95313Z\" fill=\"currentColor\" /></svg>;\nexport default SvgCategory;", "import * as React from 'react';\nimport { useEffect, PropsWithChildren, useRef } from 'react';\nimport Popup from '../Popup/Popup';\nimport Button from '../Button/Button';\nimport useMessages from '../../hooks/useMessages';\n\ninterface Props {\n  isOpen: boolean,\n  onAccept: () => void,\n  onClose: () => void,\n  acceptButtonText?: string,\n  closeButtonText?: string,\n  isAcceptButtonDisabled?: boolean,\n  submitButton?: boolean,\n  className?: string,\n  preventCloseOnAccept?: boolean,\n  focusOnBtn?: boolean,\n  labelledBy?: string,\n  describedBy?: string,\n}\n\nconst Dialog = ({\n  isOpen, onAccept, onClose, acceptButtonText,\n  closeButtonText, isAcceptButtonDisabled, children,\n  submitButton, className, preventCloseOnAccept, focusOnBtn,\n  labelledBy, describedBy,\n}: PropsWithChildren<Props>) => {\n  const getMessage = useMessages();\n  const submitBtnRef = useRef<null | HTMLDivElement>(null);\n\n  useEffect(() => {\n    if (isOpen && focusOnBtn) submitBtnRef.current?.focus();\n  }, [isOpen]);\n\n  return (\n    <Popup isOpen={isOpen} labelledBy={labelledBy} describedBy={describedBy}>\n      <div className={`flex flex-col items-center w-full ${className}`}>\n        {children}\n      </div>\n      <div className=\"flex flex-col items-center w-full\">\n        <Button\n          className=\"mobile:w-full w-1/2 mb-4\"\n          styleType=\"primary\"\n          type={submitButton ? 'submit' : 'button'}\n          ref={submitBtnRef}\n          disabled={isAcceptButtonDisabled}\n          onClick={() => {\n            onAccept();\n            if (!preventCloseOnAccept) {\n              onClose();\n            }\n          }}\n        >\n          {acceptButtonText || getMessage('confirm')}\n        </Button>\n        <Button\n          className=\"mobile:w-full w-1/2\"\n          styleType=\"secondary\"\n          onClick={() => onClose()}\n        >\n          {closeButtonText || getMessage('cancel')}\n        </Button>\n      </div>\n    </Popup>\n  );\n};\n\nexport default Dialog;\n", "import * as React from 'react';\nimport ReactDOM from 'react-dom';\nimport { PropsWithChildren } from 'react';\n\ninterface Props {\n  isOpen: boolean,\n  labelledBy?: string,\n  describedBy?: string,\n}\n\nconst Popup = ({\n  isOpen, children, labelledBy, describedBy,\n}: PropsWithChildren<Props>) => {\n  if (!isOpen) return null;\n\n  const modal = (\n    <>\n      <div role=\"dialog\" aria-labelledby={labelledBy} aria-describedby={describedBy} className=\"fixed mobile:relative z-50 top-1/2 left-1/2 mobile:left-1/8 -translate-x-1/2 -translate-y-1/2 w-fit mobile:min-w-[90%] min-w-[500px] min-h-1/3 mobile:h-fit bg-white px-4 mobile:px-1 py-9 mobile:py-3 rounded flex flex-col items-center\">\n        {children}\n      </div>\n      <div className=\"fixed z-40 top-0 left-0 w-full h-full bg-gray-800 opacity-70\" />\n    </>\n  );\n\n  return ReactDOM.createPortal(modal, document.body);\n};\n\nexport default Popup;\n", "/* eslint-disable react/jsx-props-no-spreading */\n/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n\nimport * as React from 'react';\nimport { useCallback, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useLocation, useNavigate } from 'react-router';\nimport classNames from 'classnames';\nimport { useGetEmployeesQuery, usePostChangeDocumentMutation } from '../../../../api/appApi';\nimport useMessages from '../../../../hooks/useMessages';\nimport RealizerIcon from '../../../../icons/user.svg';\nimport Dialog from '../../../../components/Dialog/Dialog';\nimport { InputLabel } from '../../../../components/FormInputs/InputLabel';\nimport FormSearchableDropdown from '../../../../components/FormInputs/FormSearchableDropdown';\nimport { FormCheckboxInput } from '../../../../components/FormInputs';\n\ninterface Props {\n  selectedDocumentsIds: string[],\n}\n\nconst DocumentAssignEmployeeAction = ({ selectedDocumentsIds }: Props) => {\n  const [isPopupOpen, setIsPopupOpen] = useState(false);\n  const [postChangeDocument] = usePostChangeDocumentMutation();\n  const getMessage = useMessages();\n  const methods = useForm();\n  const watchRealizerId = methods.watch('realizer_id');\n  const watchRemoveRealizer = methods.watch('removeRealizer');\n  const navigate = useNavigate();\n  const location = useLocation();\n\n  const handleClick = () => {\n    if (selectedDocumentsIds.length > 0) setIsPopupOpen(true);\n  };\n\n  const onAccept = useCallback(() => {\n    const documents: {\n      [key: string]: {\n        realizer_id: string\n      }\n    } = {};\n\n    selectedDocumentsIds.forEach((documentId) => {\n      documents[documentId] = { realizer_id: watchRealizerId || null };\n    });\n    postChangeDocument({ documents });\n\n    methods.setValue('realizer_id', '');\n    methods.setValue('removeRealizer', false);\n    navigate(location.pathname);\n  }, [watchRealizerId, watchRemoveRealizer]);\n\n  const onClose = () => {\n    methods.setValue('realizer_id', '');\n    methods.setValue('removeRealizer', false);\n    setIsPopupOpen(false);\n  };\n\n  const dynamicStyles = (selectedDocumentsIds.length > 0)\n    ? 'border-typography-dark hover:border-hover hover:cursor-pointer hover:text-hover hover:bg-light-200'\n    : 'text-stroke-grey-300 border-stroke-grey-300 hover:cursor-default';\n\n  return (\n    <div title={getMessage('documents.bulkAction.changeRealizer')}>\n      <RealizerIcon\n        role=\"button\"\n        className={classNames(dynamicStyles, 'border rounded text-typography-dark p-2 mr-1')}\n        onClick={handleClick}\n        tabIndex={(selectedDocumentsIds.length > 0) ? 0 : undefined}\n        onKeyDown={(e) => e.key === 'Enter' && setIsPopupOpen(true)}\n        aria-label={getMessage('documents.bulkAction.changeRealizer')}\n      />\n      {isPopupOpen\n        && (\n          <Dialog\n            isOpen={isPopupOpen}\n            acceptButtonText={getMessage('confirm')}\n            onClose={onClose}\n            closeButtonText={getMessage('cancel')}\n            onAccept={onAccept}\n            isAcceptButtonDisabled={!watchRealizerId && !watchRemoveRealizer}\n          >\n            <div className=\"mb-10\">\n              <InputLabel label={getMessage('documents.changeDocumentsRealizer')} autofocus />\n              <FormProvider {...methods}>\n                <FormSearchableDropdown\n                  label=\" \"\n                  className=\"mt-4 w-full\"\n                  id=\"realizer_id\"\n                  query={useGetEmployeesQuery}\n                  disabled={watchRemoveRealizer}\n                  ariaLabel={getMessage('form.ariaLabel.realizer')}\n                />\n                <p className=\"text-center my-2\">{getMessage('documents.changeDocumentsRealizer.popUp.or')}</p>\n                <FormCheckboxInput\n                  label={getMessage('documents.changeDocumentsRealizer.popUp.removeRealizer')}\n                  id=\"removeRealizer\"\n                  className=\"hover:text-red-500\"\n                  disabled={watchRealizerId}\n                />\n              </FormProvider>\n            </div>\n          </Dialog>\n        ) }\n    </div>\n  );\n};\n\nexport default DocumentAssignEmployeeAction;\n", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgUser = (props: SVGProps<SVGSVGElement>) => <svg width={34} height={33} viewBox=\"0 0 12 15\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M5.39727 8.30727C7.56994 8.30727 10.4586 8.55194 10.4586 10.6686C10.4586 12.8983 7.09268 13.0321 5.64887 13.0401L5.12467 13.0401C3.58523 13.0321 0.335938 12.8991 0.335938 10.6819C0.335938 8.44975 3.70186 8.31582 5.14567 8.30778L5.31913 8.30729C5.34617 8.30727 5.37223 8.30727 5.39727 8.30727ZM5.39727 9.30727C3.5446 9.30727 1.33594 9.54527 1.33594 10.6819C1.33594 11.5833 2.7026 12.0406 5.39727 12.0406C8.09194 12.0406 9.4586 11.5786 9.4586 10.6686C9.4586 9.76527 8.09194 9.30727 5.39727 9.30727ZM11.4737 7.99587C13.2777 8.26587 13.6557 9.1012 13.6557 9.75387C13.6557 10.2399 13.4457 10.8979 12.4437 11.2772C12.3857 11.2992 12.3257 11.3099 12.2664 11.3099C12.0644 11.3099 11.8744 11.1865 11.7991 10.9872C11.7011 10.7292 11.8311 10.4399 12.0891 10.3425C12.6557 10.1279 12.6557 9.86587 12.6557 9.75387C12.6557 9.37587 12.2084 9.1172 11.3264 8.98587C11.0531 8.94454 10.8644 8.68987 10.9051 8.4172C10.9464 8.14387 11.2057 7.96054 11.4737 7.99587ZM5.39727 0.335938C7.2846 0.335938 8.82064 1.87194 8.82064 3.75927C8.8246 4.6686 8.47194 5.52727 7.82927 6.17394C7.18794 6.82127 6.33127 7.17927 5.41994 7.1826H5.39727C3.50927 7.1826 1.97327 5.6466 1.97327 3.75927C1.97327 1.87194 3.50927 0.335938 5.39727 0.335938ZM10.1223 1.08514C11.4323 1.2998 12.383 2.42047 12.383 3.74914C12.3803 5.0858 11.3823 6.2338 10.061 6.41914C10.0377 6.42247 10.0143 6.4238 9.991 6.4238C9.74567 6.4238 9.53167 6.24314 9.49634 5.99314C9.45834 5.7198 9.64834 5.46647 9.92167 5.42847C10.7537 5.3118 11.3817 4.5898 11.383 3.74847C11.383 2.91247 10.7843 2.20714 9.961 2.07247C9.68834 2.02714 9.50367 1.77047 9.54834 1.4978C9.59301 1.22514 9.851 1.0418 10.1223 1.08514ZM5.39727 1.33594C4.0606 1.33594 2.97327 2.42327 2.97327 3.75927C2.97327 5.09527 4.0606 6.1826 5.39727 6.1826H5.41794C6.0606 6.17994 6.66594 5.92727 7.11994 5.46927C7.5746 5.0126 7.82327 4.40527 7.82063 3.76127C7.82063 2.42327 6.73327 1.33594 5.39727 1.33594Z\" fill=\"currentColor\" /></svg>;\nexport default SvgUser;", "/* eslint-disable jsx-a11y/no-static-element-interactions */\nimport * as React from 'react';\nimport { useState, useCallback, useRef } from 'react';\nimport classnames from 'classnames';\nimport { QueryDefinition } from '@reduxjs/toolkit/dist/query';\nimport { UseQuery } from '@reduxjs/toolkit/dist/query/react/buildHooks';\nimport { useFormContext } from 'react-hook-form';\nimport { InputError, InputLabel } from './InputLabel';\nimport { baseQuery } from '../../api/baseQuery';\nimport useMessages from '../../hooks/useMessages';\nimport useClickOutside from '../../hooks/useClickOutside';\n\ninterface Option {\n  id: string,\n  name: string,\n}\n\nconst inputDefaultStyles = `inline-block px-2 py-1 font-normal text-typography-black bg-white bg-clip-padding\nborder border-solid border-stroke-grey-300 rounded transition ease-in-out my-1 text-text-md-semibold\nfocus:text-gray-black focus:bg-white focus:border-blue-600 focus:outline-none`;\n\ninterface Props {\n  id: string,\n  label?: string,\n  query: UseQuery<QueryDefinition<Record<string, string | null>, typeof baseQuery, string, Option[], string>>,\n  queryOptions?: Record<string, string | undefined>,\n  className?: string,\n  disabled?: boolean,\n  ariaLabel?: string,\n}\n\nconst FormSearchableDropdown = ({\n  id,\n  label,\n  query,\n  queryOptions,\n  className,\n  disabled,\n  ariaLabel,\n}: Props) => {\n  const [focusedIndex, setFocusedIndex] = useState(-1);\n  const [showResults, setShowResults] = useState(false);\n  const [typedValue, setTypedValue] = useState('');\n  const { data } = query({ search: typedValue, ...queryOptions });\n  const getMessage = useMessages();\n  const containterRef = useRef<HTMLDivElement>(null);\n  const listRef = useRef<HTMLDivElement>(null);\n\n  const { setValue, watch } = useFormContext();\n  const currentValue = watch(id);\n\n  const resetSearch = useCallback(() => {\n    setFocusedIndex(-1);\n    setShowResults(false);\n  }, []);\n\n  const handleSelection = (item: Option) => {\n    setTypedValue(item.name);\n    setValue(id, item.id);\n    resetSearch();\n  };\n\n  const handleKeyDown: React.KeyboardEventHandler<HTMLDivElement> = (e) => {\n    if (data) {\n      const { key } = e;\n      let nextIndexCount = 0;\n\n      if (key === 'ArrowDown') { nextIndexCount = (focusedIndex + 1) % data.length; }\n      if (key === 'ArrowUp') { nextIndexCount = (focusedIndex + data.length - 1) % data.length; }\n      if (key === 'Escape') { resetSearch(); }\n      if (key === 'Enter') {\n        e.preventDefault();\n        const item = data[focusedIndex];\n        if (item) handleSelection(item);\n      }\n\n      setFocusedIndex(nextIndexCount);\n      setTimeout(() => {\n        listRef.current?.querySelector('.active')?.scrollIntoView({ block: 'nearest' });\n      }, 300);\n    }\n  };\n\n  const handleChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n    setTypedValue(e.target.value);\n  };\n\n  const resetValues = useCallback(() => {\n    setTypedValue('');\n    setValue(id, null);\n    setShowResults(false);\n  }, [id, setValue]);\n\n  const showValues = useCallback(() => {\n    setShowResults(true);\n  }, [setShowResults]);\n\n  useClickOutside(listRef, resetValues, [containterRef]);\n\n  return (\n    <div\n      onKeyDown={handleKeyDown}\n      className={`relative ${className}`}\n      ref={containterRef}\n    >\n      {label && <InputLabel id={id} label={label} showReset={!!currentValue} onReset={resetValues} />}\n      <input\n        value={typedValue}\n        tabIndex={0}\n        onChange={handleChange}\n        onFocus={showValues}\n        type=\"text\"\n        placeholder={getMessage('filters.search')}\n        className={classnames(\n          'transition w-full',\n          inputDefaultStyles,\n          { 'bg-background-light': disabled || !!currentValue },\n        )}\n        autoComplete=\"off\"\n        disabled={disabled || !!currentValue}\n        aria-label={ariaLabel}\n      />\n      <input\n        id={id}\n        type=\"select\"\n        value={typedValue}\n        style={{ display: 'none' }}\n      />\n      {(typedValue && !currentValue) && data?.length === 0 && (\n        <InputError message={getMessage('noSearchResults')} />\n      )}\n      {showResults && !currentValue && data && data.length > 0 && (\n        <div\n          className=\"absolute w-full bg-white shadow-lg rounded-bl rounded-br max-h-56 overflow-y-auto z-50\"\n          ref={listRef}\n        >\n          {data?.map((item: {\n            id: string,\n            name: string,\n          }, index) => (\n            <div\n              key={item.id}\n              onKeyDown={(e) => { if (e.key === 'Enter') handleSelection(item); }}\n              onClick={() => handleSelection(item)}\n              className={classnames(\n                inputDefaultStyles,\n                'w-full hover:text-hover hover:bg-light-200 border-none',\n                { 'bg-light-200 active': index === focusedIndex },\n              )}\n            >\n              {item.name}\n            </div>\n          ))}\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport default FormSearchableDropdown;\n", "import * as React from 'react';\nimport { useCallback, useMemo, useState } from 'react';\nimport classNames from 'classnames';\nimport { useGetDocumentStatusesQuery, usePostChangeDocumentMutation } from '../../../../api/appApi';\nimport useMessages from '../../../../hooks/useMessages';\nimport capitalize from '../../../../../utils/formatters';\nimport StatusIcon from '../../../../icons/bell.svg';\nimport Dialog from '../../../../components/Dialog/Dialog';\nimport { InputLabel } from '../../../../components/FormInputs/InputLabel';\nimport { Select } from '../../../../components/FormInputs/inputs/FormSelect';\n\ninterface Props {\n  selectedDocumentsIds: string[],\n}\n\nconst DocumentChangeStatusAction = ({ selectedDocumentsIds }: Props) => {\n  const [isPopupOpen, setIsPopupOpen] = useState(false);\n  const [selectedStatus, setSelectedStatus] = useState('');\n  const [postChangeDocument] = usePostChangeDocumentMutation();\n  const { data: documentStatuses } = useGetDocumentStatusesQuery();\n  const getMessage = useMessages();\n\n  const statusOptionsValues = useMemo(() => documentStatuses?.map(({ id, name }) => ({\n    value: id,\n    optionLabel: capitalize(name),\n  })) || [], [documentStatuses]);\n\n  const handleClick = () => {\n    if (selectedDocumentsIds.length > 0) setIsPopupOpen(true);\n  };\n\n  const changeStatus = (value: string) => {\n    setSelectedStatus(value);\n  };\n\n  const onAccept = useCallback(() => {\n    const documents: {\n      [key: string]: {\n        status_id: string\n      }\n    } = {};\n    function populatePayload(id: string) {\n      documents[id] = { status_id: selectedStatus };\n    }\n    selectedDocumentsIds.forEach((item) => populatePayload(item));\n    postChangeDocument({ documents });\n  }, [selectedStatus]);\n\n  const onClose = () => {\n    setSelectedStatus('');\n    setIsPopupOpen(false);\n  };\n\n  const dynamicStyles = (selectedDocumentsIds.length > 0) ? 'border-typography-dark hover:border-hover hover:cursor-pointer hover:text-hover hover:bg-light-200' : 'text-stroke-grey-300 border-stroke-grey-300 hover:cursor-default';\n\n  return (\n    <div title={getMessage('documents.bulkAction.changeStatus')}>\n      <StatusIcon\n        role=\"button\"\n        className={classNames(dynamicStyles, 'border rounded text-typography-dark p-2 mr-1')}\n        onClick={handleClick}\n        tabIndex={(selectedDocumentsIds.length > 0) ? 0 : undefined}\n        onKeyDown={(e) => e.key === 'Enter' && setIsPopupOpen(true)}\n        aria-label={getMessage('documents.bulkAction.changeStatus')}\n      />\n      {isPopupOpen\n        && (\n          <Dialog\n            isOpen={isPopupOpen}\n            acceptButtonText={getMessage('confirm')}\n            onClose={onClose}\n            closeButtonText={getMessage('cancel')}\n            onAccept={onAccept}\n            isAcceptButtonDisabled={!selectedStatus}\n          >\n            <div className=\"mb-10\">\n              <InputLabel\n                label={getMessage('documents.changeDocumentsStatus')}\n              />\n              <Select\n                selectOptions={statusOptionsValues}\n                onChange={(value) => changeStatus(value)}\n                value={selectedStatus}\n                placeholder={getMessage('choose')}\n                autofocus\n              />\n            </div>\n          </Dialog>\n        ) }\n    </div>\n  );\n};\n\nexport default DocumentChangeStatusAction;\n", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgBell = (props: SVGProps<SVGSVGElement>) => <svg width={34} height={33} viewBox=\"0 0 12 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M4.88282 13.4014C5.22815 13.7861 5.67148 13.9974 6.13148 13.9974H6.13215C6.59415 13.9974 7.03948 13.7861 7.38548 13.4007C7.57082 13.1961 7.88682 13.1794 8.09148 13.3641C8.29682 13.5487 8.31349 13.8654 8.12882 14.0701C7.59015 14.6681 6.88148 14.9974 6.13215 14.9974H6.13082C5.38348 14.9967 4.67615 14.6674 4.13948 14.0694C3.95482 13.8647 3.97148 13.5481 4.17682 13.3641C4.38215 13.1787 4.69815 13.1954 4.88282 13.4014ZM6.16468 0.664062C9.12802 0.664062 11.1187 2.97206 11.1187 5.1274C11.1187 6.23606 11.4007 6.70606 11.7 7.20473C11.996 7.69673 12.3314 8.2554 12.3314 9.31139C12.0987 12.0094 9.28202 12.2294 6.16468 12.2294C3.04735 12.2294 0.230018 12.0094 8.82422e-06 9.35406C-0.00198227 8.2554 0.333351 7.69673 0.629351 7.20473L0.733847 7.02883C0.991134 6.58663 1.21068 6.10563 1.21068 5.1274C1.21068 2.97206 3.20135 0.664062 6.16468 0.664062ZM6.16468 1.66406C3.83468 1.66406 2.21068 3.4894 2.21068 5.1274C2.21068 6.5134 1.82602 7.15406 1.48602 7.7194C1.21335 8.1734 0.998018 8.53206 0.998018 9.31139C1.10935 10.5687 1.93935 11.2294 6.16468 11.2294C10.3667 11.2294 11.2227 10.5394 11.3334 9.26806C11.3314 8.53206 11.116 8.1734 10.8434 7.7194C10.5034 7.15406 10.1187 6.5134 10.1187 5.1274C10.1187 3.4894 8.49468 1.66406 6.16468 1.66406Z\" strokeWidth={0.9} stroke=\"none\" fill=\"currentColor\" /></svg>;\nexport default SvgBell;", "import * as React from 'react';\nimport { useMemo } from 'react';\nimport useMessages from '../../../../hooks/useMessages';\nimport {\n  useGetSelectedDocumentsColumnsQuery, usePostSelectedDocumentsColumnsMutation,\n} from '../../../../api/appApi';\nimport { SelectOption } from '../../../../components/FormInputs/inputs/FormSelect';\nimport TableCustomisationMenu from '../../../../components/TableCustomisationMenu/TableCustomisationMenu';\nimport {\n  documentCustomizableColumnIds,\n  documentDefaultColumnIds,\n  tenantRelatedDocumentColumnIds,\n} from '../../../../api/modules/documents/documentsTypes';\nimport useTenantlessMode from '../../../../hooks/useTenantlessMode';\n\nconst DocumentTableCustomisation = () => {\n  const getMessage = useMessages();\n  const tenantlessMode = useTenantlessMode();\n  const { data: selectedColumns } = useGetSelectedDocumentsColumnsQuery();\n  const [postSelectedDocumentColumns] = usePostSelectedDocumentsColumnsMutation();\n\n  const selectOptions: SelectOption[] = useMemo(() => documentCustomizableColumnIds\n    .filter((id) => !tenantlessMode || !tenantRelatedDocumentColumnIds.includes(id))\n    .map((id) => ({\n      value: id,\n      optionLabel: getMessage(`documents.columnConfig.${id}`),\n    })), [tenantlessMode]);\n\n  if (!selectedColumns || !postSelectedDocumentColumns) return null;\n\n  const handleSelectedColumns = (selectedColumns: string[]) => {\n    const columns = documentDefaultColumnIds.concat(selectedColumns);\n    postSelectedDocumentColumns({ columns });\n  };\n\n  return (\n    <TableCustomisationMenu\n      selectedColumns={selectedColumns}\n      setSelectedColumns={handleSelectedColumns}\n      selectOptions={selectOptions}\n      tableId=\"documentsList\"\n    />\n  );\n};\n\nexport default DocumentTableCustomisation;\n", "/* eslint-disable react/jsx-props-no-spreading */\n\nimport * as React from 'react';\nimport { useRef, useState } from 'react';\nimport { useForm } from 'react-hook-form';\nimport { SelectOption } from '../FormInputs/inputs/FormSelect';\nimport TableCustomisationIcon from '../../icons/table-customisation.svg';\nimport useClickOutside from '../../hooks/useClickOutside';\nimport useMessages from '../../hooks/useMessages';\n\ninterface Props {\n  selectedColumns: string[],\n  setSelectedColumns: (columns: string[]) => void,\n  selectOptions: SelectOption[],\n  tableId: string,\n}\n\ninterface Form {\n  [key: string]: string[],\n}\n\nconst TableCustomisationMenu = ({\n  selectedColumns, setSelectedColumns, selectOptions, tableId,\n}: Props) => {\n  const getMessage = useMessages();\n  const [open, setOpen] = useState(false);\n  const listRef = useRef(null);\n  const iconRef = useRef(null);\n  const { register, handleSubmit, getValues } = useForm<Form>({\n    defaultValues: {\n      [tableId]: selectedColumns,\n    },\n  });\n\n  const toggleOpen = () => {\n    setOpen((open) => !open);\n  };\n\n  const onSubmit = (values: Form) => {\n    if (values) {\n      setSelectedColumns(values[tableId]);\n    }\n  };\n\n  const onOutside = () => {\n    setOpen(false);\n    onSubmit(getValues());\n  };\n\n  useClickOutside(listRef, onOutside, [iconRef]);\n\n  const handleOnKeyDown = (e: React.KeyboardEvent) => {\n    if (e.key === 'Enter' || e.key === ' ') toggleOpen();\n    if (e.key === 'Escape') setOpen(false);\n  };\n\n  return (\n    <div className=\"pl-2 flex align-middle\">\n      <div ref={iconRef} className=\"flex items-center\" title={getMessage('table.customize')}>\n        <TableCustomisationIcon\n          aria-roledescription=\"application\"\n          onClick={toggleOpen}\n          onKeyDown={(e) => handleOnKeyDown(e)}\n          className=\"border rounded border-typography-dark  text-typography-dark hover:cursor-pointer hover:text-hover hover:border-hover hover:bg-light-200 p-2\"\n          tabIndex={0}\n          aria-label={getMessage('table.customize')}\n        />\n      </div>\n      <form\n        onSubmit={handleSubmit(onSubmit)}\n        className=\"relative\"\n      >\n        {open && (\n          <div\n            ref={listRef}\n            className=\"absolute top-4 z-30 right-0 bg-white rounded border p-2 w-max\"\n          >\n            {selectOptions.map((option) => (\n              // eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/click-events-have-key-events\n              <label\n                key={`${tableId}-${option.value}`}\n                htmlFor={`${tableId}-${option.value}`}\n                className=\"text-md-semibold p-1 rounded hover:bg-light-200 hover:cursor-pointer hover:text-main block flex-grow-0\n                font-normal text-gray-700 bg-clip-padding text-text-md-semibold focus:text-gray-700 focus:bg-white focus:border-blue-600 focus:outline-none\"\n                onClick={(event) => event?.stopPropagation()}\n              >\n                <input\n                  type=\"checkbox\"\n                  {...register(tableId)}\n                  value={option.value}\n                  id={`${tableId}-${option.value}`}\n                  onKeyDown={(e) => (e.key === 'Escape' || e.key === 'Enter') && onOutside()}\n                  className=\"mr-2\"\n                />\n                {option.optionLabel}\n              </label>\n            ))}\n          </div>\n        )}\n      </form>\n    </div>\n  );\n};\n\nexport default TableCustomisationMenu;\n", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgTableCustomisation = (props: SVGProps<SVGSVGElement>) => <svg width={35} height={33} viewBox=\"0 0 16 17\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M14.3158 0H1.68421C0.757895 0 0 0.8 0 1.77778V14.2222C0 15.2 0.757895 16 1.68421 16H14.3158C15.2421 16 16 15.2 16 14.2222V1.77778C16 0.8 15.2421 0 14.3158 0ZM14.3158 1.77778V4.44444H1.68421V1.77778H14.3158ZM10.1053 14.2222H5.89474V6.22222H10.1053V14.2222ZM1.68421 6.22222H4.21053V14.2222H1.68421V6.22222ZM11.7895 14.2222V6.22222H14.3158V14.2222H11.7895Z\" fill=\"currentColor\" /></svg>;\nexport default SvgTableCustomisation;", "import * as React from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport format from 'date-fns/format';\nimport classnames from 'classnames';\nimport useMessages from '../../../hooks/useMessages';\nimport ResponsiveTable, {\n  ResponsiveTableBody,\n  ResponsiveTableBodyRow,\n  ResponsiveTableHeader,\n} from '../../../components/Table/ResponsiveTable';\nimport TableBodyPlaceholder from '../../../components/Table/TableBodyPlaceholder';\nimport { TableId } from '../../../store/appSlice';\nimport { TableBodyCell } from '../../../components/Table/Table';\nimport Chip from '../../../components/Chip/Chip';\nimport Button from '../../../components/Button/Button';\nimport { Document } from '../../../api/modules/documents/documentsTypes';\n\ninterface Props {\n  documents: Document[]\n}\n\nconst EmployeeDocumentsTableMobile = ({ documents }: Props) => {\n  const navigate = useNavigate();\n  const handleNavigate = (id: string) => navigate(`/dokumenty/${id}`);\n  const getMessage = useMessages();\n\n  const ids = documents?.map(({ id }) => id);\n\n  const columnLabels = [\n    { label: 'documents.column.documentNumber' },\n    { label: 'documents.column.date' },\n    { label: 'documents.column.title' },\n    { label: 'documents.column.description' },\n    { label: 'documents.column.journal' },\n    { label: 'documents.column.status' },\n    { label: 'documents.column.category' },\n    { label: 'documents.document.placeholder', divClassName: 'sr-only' },\n  ];\n\n  return (\n    <ResponsiveTable className=\"col-span-full md:mb-0\">\n      {documents && documents?.length === 0 ? <TableBodyPlaceholder /> : (\n        <>\n          <ResponsiveTableHeader ids={ids} columnLabels={columnLabels} tableName={'documentsList' as TableId} />\n          <ResponsiveTableBody>\n            {documents && documents?.map(({\n              documentNumber, creationDate, title, description, journal, status, id, category, revoked,\n            }) => (\n              <ResponsiveTableBodyRow key={id} className={classnames('border-b last:border-b-0 border-separate font-medium', { '!bg-gray-200': revoked })}>\n                <TableBodyCell>\n                  {documentNumber}\n                </TableBodyCell>\n                <TableBodyCell>\n                  <Chip chipStyle=\"primary\" className=\"w-fit\">\n                    {format(new Date(creationDate), 'dd-MM-yyyy')}\n                  </Chip>\n                </TableBodyCell>\n                <TableBodyCell className=\"text-typography-black\">\n                  {title}\n                </TableBodyCell>\n                <TableBodyCell className=\"overflow-ellipsis\">{revoked ? getMessage('documents.document.revoked') : description}</TableBodyCell>\n                <TableBodyCell>{journal}</TableBodyCell>\n                <TableBodyCell>\n                  <Chip chipStyle=\"primary\" className=\"w-fit\">\n                    {status}\n                  </Chip>\n                </TableBodyCell>\n                <TableBodyCell>\n                  <Chip chipStyle=\"primary\" className=\"w-fit\">\n                    {category}\n                  </Chip>\n                </TableBodyCell>\n                <TableBodyCell>\n                  <Button\n                    onClick={() => handleNavigate(id)}\n                    styleType=\"secondary\"\n                    size=\"small\"\n                    ariaLabel={getMessage('documents.document.documentDetails')}\n                  >\n                    {getMessage('more')}\n                  </Button>\n                </TableBodyCell>\n              </ResponsiveTableBodyRow>\n            ))}\n          </ResponsiveTableBody>\n        </>\n      )}\n    </ResponsiveTable>\n  );\n};\n\nexport default EmployeeDocumentsTableMobile;\n", "import * as React from 'react';\nimport { useMediaQuery } from 'react-responsive';\nimport classnames from 'classnames';\nimport { useCallback, useState } from 'react';\nimport { Link } from 'react-router-dom';\nimport useSortParams from '../../hooks/useSortParams';\nimport useMessages from '../../hooks/useMessages';\nimport { mobile } from '../../../utils/breakpoints';\nimport Card from '../Card/Card';\nimport {\n  TableProps,\n  TableHeaderRowProps,\n  TableHeaderCellProps,\n  TableBodyProps,\n  TableBodyRowProps,\n  TableHeader,\n  TableHeaderRow,\n} from './Table';\nimport SortArrows from './SortArrows';\nimport { TableId } from '../../store/appSlice';\nimport ArrowUp from '../../icons/dropdown-arrow-up.svg';\nimport ArrowDown from '../../icons/dropdown-arrow-down.svg';\n\nconst ResponsiveTable = ({ children, className, header }: TableProps) => (\n  <Card className={classnames(className, 'p-5 gap-y-0')}>\n    {header}\n    <table className=\"w-full text-left grid grid-cols-3 md:grid-cols-none md:table overflow-hidden md:overflow-auto\">\n      {children}\n    </table>\n  </Card>\n);\n\ninterface ResponsiveTableHeaderProps {\n  columnLabels: {\n    label: string,\n    id?: string,\n    divClassName?: string,\n  }[]\n  ids: string[],\n  tableName?: TableId,\n  firstItemClassName?: string,\n}\n\nconst ResponsiveTableHeaderRow = ({\n  children, className,\n}: TableHeaderRowProps) => (\n  <tr className={`grid grid-col md:table-row pr-14 md:pr-0 pt-4 first:pt-0 md:pt-0 border-b ${className}`}>\n    {children}\n  </tr>\n);\n\nconst ResponsiveTableHeaderCell = ({\n  children, className, divClassName, tableName, id,\n}: TableHeaderCellProps) => {\n  const { sortParamsValues, handleSaveSortParams } = useSortParams(tableName as TableId);\n  const { order: sortOrder, sort: sortBy } = sortParamsValues;\n  const sortable = !!id;\n  const handleClick = () => {\n    if (sortable) handleSaveSortParams(id);\n  };\n\n  return (\n    <th\n      key={sortBy}\n      scope=\"col\"\n      className={classnames('h-10 md:h-5 pr-0 mb-2 md:mb-0 leading-normal text-text-md-semibold md:pr-8 last:pr-0 md:text-text-lg-semibold text-typography-dark', { 'hover:cursor-pointer': sortable }, className)}\n      onClick={handleClick}\n    >\n      <div className={classnames('flex items-center mobile:break-normal', divClassName)}>\n        {children}\n        {sortable && <SortArrows id={sortBy} sortBy={sortBy} sortOrder={sortOrder} />}\n      </div>\n    </th>\n  );\n};\n\nconst ResponsiveTableHeader = ({\n  columnLabels, ids, tableName, firstItemClassName,\n}: ResponsiveTableHeaderProps) => {\n  const isMobile = useMediaQuery({ query: mobile.raw });\n  const getMessage = useMessages();\n\n  return (\n    isMobile ? (\n      <TableHeader>\n        {ids.map((id) => (\n          <ResponsiveTableHeaderRow key={id}>\n            {columnLabels.map(({ label, divClassName }) => (\n              <ResponsiveTableHeaderCell key={label} divClassName={divClassName}>{getMessage(label)}</ResponsiveTableHeaderCell>\n            ))}\n          </ResponsiveTableHeaderRow>\n        ))}\n      </TableHeader>\n    )\n      : (\n        <TableHeader>\n          <TableHeaderRow>\n            {columnLabels.map(({ label, id, divClassName }, index) => (\n              <ResponsiveTableHeaderCell\n                key={label}\n                id={id}\n                tableName={tableName}\n                className={classnames({ [firstItemClassName || '']: !!firstItemClassName && index === 0 })}\n                divClassName={divClassName}\n              >\n                {getMessage(label)}\n              </ResponsiveTableHeaderCell>\n            ))}\n          </TableHeaderRow>\n        </TableHeader>\n      )\n  );\n};\n\nconst ResponsiveTableBody = ({ children }: TableBodyProps) => (\n  <tbody className=\"text-typography-dark col-span-2\">\n    {children}\n  </tbody>\n);\n\ninterface ExpandableTableRowProps extends TableBodyRowProps {\n  ExpandedChild?: React.ReactNode,\n  onClick?: () => void,\n}\n\nconst ExpandableResponsiveTableBodyRow = ({\n  children, id, className, onClick, ExpandedChild,\n}: ExpandableTableRowProps) => {\n  const isMobile = useMediaQuery({ query: mobile.raw });\n  const [open, setOpen] = useState(false);\n\n  const handleClick = useCallback(() => {\n    if (!isMobile) {\n      if (onClick) onClick();\n      setOpen((open) => !open);\n    }\n  }, [onClick, isMobile]);\n\n  return (\n    <>\n      <tr\n        key={id}\n        className={\n          classnames(\n            'grid grid-col md:table-row pt-4 md:pt-0 first:pt-0 cursor-pointer hover:bg-gray-50 shadow-gray relative',\n            className,\n            { 'border-b-0': open && !isMobile },\n          )\n        }\n      >\n        {children}\n        {!isMobile && (\n        <button\n          type=\"button\"\n          onClick={handleClick}\n          aria-label=\"Rozwi\u0144 szczeg\u00F3\u0142y dokumentu\"\n          className=\"absolute w-full h-full top-0 left-0 pr-2\"\n        >\n          {open ? <ArrowUp className=\"inline float-right\" /> : <ArrowDown className=\"inline float-right\" />}\n        </button>\n        )}\n      </tr>\n      {open && !isMobile && ExpandedChild}\n    </>\n  );\n};\n\nconst ResponsiveTableBodyRow = ({\n  children, id, className, onClick, ExpandedChild, clickable,\n}: ExpandableTableRowProps) => (ExpandedChild ? (\n  <ExpandableResponsiveTableBodyRow id={id} className={className} onClick={onClick} ExpandedChild={ExpandedChild}>\n    {children}\n  </ExpandableResponsiveTableBodyRow>\n) : (\n  <tr\n    key={id}\n    className={\n      classnames(\n        'grid grid-col md:table-row pt-4 first:pt-0 border-b',\n        className,\n        { 'hover:bg-gray-50 focus-within:bg-gray-50 focus-within:border focus-within:border-hover cursor-pointer shadow-gray mobile:select-none relative': clickable },\n      )\n}\n  >\n    {clickable ? (\n      <>\n        {children}\n        <Link\n          to={clickable.href}\n          state={clickable.linkState}\n          aria-label={clickable.ariaLabel}\n          onClick={clickable.onClick}\n          className='after:absolute after:content-[\"\"] after:w-full after:h-full after:top-0 after:left-0'\n        />\n      </>\n    ) : children}\n  </tr>\n));\n\nexport default ResponsiveTable;\nexport {\n  ResponsiveTableHeader,\n  ResponsiveTableHeaderRow,\n  ResponsiveTableHeaderCell,\n  ResponsiveTableBody,\n  ResponsiveTableBodyRow,\n  ExpandableResponsiveTableBodyRow,\n};\n", "import * as React from 'react';\nimport { useEffect } from 'react';\nimport { format } from 'date-fns';\nimport classnames from 'classnames';\nimport usePagination from '../../../hooks/usePagination';\nimport useFilters from '../../../hooks/useFilters';\nimport { useGetDocumentsQuery } from '../../../api/appApi';\nimport ResponsiveTable, {\n  ResponsiveTableBody,\n  ResponsiveTableBodyRow,\n  ResponsiveTableHeader,\n} from '../../../components/Table/ResponsiveTable';\nimport TableContentPlaceholder from '../../../components/Table/TableContentPlaceholder';\nimport { TableId } from '../../../store/appSlice';\nimport { TableBodyCell } from '../../../components/Table/Table';\nimport Chip from '../../../components/Chip/Chip';\nimport PaginationControls from '../../../components/Table/PaginationControls';\nimport { Document } from '../../../api/modules/documents/documentsTypes';\nimport useMessages from '../../../hooks/useMessages';\n\nconst TenantDocumentsList = () => {\n  const getMessage = useMessages();\n  const [selectedPage, setSelectedPage] = usePagination('documentsList');\n  const { filterValues } = useFilters('documentsList');\n\n  useEffect(() => {\n    setSelectedPage(1);\n  }, []);\n\n  const { data } = useGetDocumentsQuery({\n    ...filterValues,\n    page: selectedPage.toString(),\n  }, { refetchOnMountOrArgChange: true });\n  const documentsData = data?.documents || [] as Document[];\n\n  const ids = data?.documents.map(({ id }) => id) || [];\n\n  const columnLabels = [\n    { label: 'documents.column.documentNumber' },\n    { label: 'documents.column.date' },\n    { label: 'documents.column.title' },\n    { label: 'documents.column.description' },\n    { label: 'documents.column.creator' },\n  ];\n\n  return (\n    <>\n      <ResponsiveTable className=\"col-span-full\">\n        {documentsData.length === 0 ? <TableContentPlaceholder /> : (\n          <>\n            <ResponsiveTableHeader ids={ids} columnLabels={columnLabels} tableName={'ticketsTable' as TableId} />\n            <ResponsiveTableBody>\n              {documentsData.map(({\n                id, documentNumber, creationDate, title, description, creator, revoked,\n              }) => (\n                <ResponsiveTableBodyRow\n                  key={id}\n                  className={classnames('border-b last:border-b-0', { '!bg-gray-200': revoked })}\n                  clickable={(!revoked\n                    ? { href: `/dokumenty/${id}`, ariaLabel: `Przejd\u017A do szczeg\u00F3\u0142\u00F3w dokumentu ${documentNumber} ${title}` }\n                    : undefined)}\n                >\n                  <TableBodyCell>{documentNumber}</TableBodyCell>\n                  <TableBodyCell>\n                    <Chip chipStyle=\"ghost\" className=\"w-fit\">\n                      {format(new Date(creationDate), 'dd-MM-yyyy')}\n                    </Chip>\n                  </TableBodyCell>\n                  <TableBodyCell className=\"font-semibold text-typography-black\">{title}</TableBodyCell>\n                  <TableBodyCell className=\"overflow-ellipsis\">{revoked ? getMessage('documents.document.revoked') : description}</TableBodyCell>\n                  <TableBodyCell>{creator}</TableBodyCell>\n                </ResponsiveTableBodyRow>\n              ))}\n            </ResponsiveTableBody>\n          </>\n        )}\n      </ResponsiveTable>\n      {data?.metadata && (\n        <PaginationControls\n          className=\"col-span-full\"\n          selectedPage={selectedPage}\n          setSelectedPage={setSelectedPage}\n          paginationMetadata={data.metadata}\n        />\n      )}\n    </>\n  );\n};\n\nexport default TenantDocumentsList;\n", "import * as React from 'react';\nimport { useMemo } from 'react';\nimport useMessages from '../../../hooks/useMessages';\nimport { FilterConfig } from '../../../components/FilterInput/FilterInput';\nimport Filters from '../../../components/Filters/Filters';\n\nconst TenantDocumentsFilters = () => {\n  const getMessage = useMessages();\n\n  const filterFields: FilterConfig[] = useMemo(() => [\n    {\n      type: 'text',\n      id: 'number_title_search',\n      label: getMessage('documents.filter.titleOrNumber'),\n      ariaLabel: 'Szukaj po numerze lub tytule dokumentu',\n    },\n    {\n      type: 'dateRange',\n      id: 'from_created_at',\n      toDateId: 'to_created_at',\n      label: getMessage('documents.column.date'),\n    },\n    {\n      type: 'text',\n      id: 'creator_search',\n      label: getMessage('documents.column.creator'),\n      ariaLabel: 'Szukaj po imieniu i nazwisku autora',\n    },\n    {\n      type: 'multiselect',\n      id: 'revoked',\n      label: getMessage('documents.filter.revoked'),\n      defaultValue: ['true', 'false'],\n      selectOptions: [\n        { value: 'true', optionLabel: getMessage('documents.filter.revoked.revoked') },\n        { value: 'false', optionLabel: getMessage('documents.filter.revoked.valid') },\n      ],\n    },\n  ], []);\n\n  return (\n    <Filters\n      filterId=\"documentsList\"\n      filterFields={filterFields}\n    />\n  );\n};\n\nexport default TenantDocumentsFilters;\n", "import * as React from 'react';\nimport { useParams } from 'react-router-dom';\nimport { useMemo, useState } from 'react';\nimport format from 'date-fns/format';\nimport useMessages from '../../hooks/useMessages';\nimport PageHeader from '../../components/Layout/PageHeader';\nimport ContentWrapper from '../../components/ContentWrapper/ContentWrapper';\nimport Layout from '../../components/Layout/Layout';\nimport { usePermissions } from '../../hooks/usePermissions';\nimport { useGetDocumentQuery } from '../../api/appApi';\nimport MobileDocumentInfoCard from './EmployeeDocumentPage/MobileDocumentInfoCard';\nimport Card from '../../components/Card/Card';\nimport Chip from '../../components/Chip/Chip';\nimport AttachmentPreview from '../../components/AttachmentPreview/AttachmentPreview';\nimport CommentsList from '../../components/CommentsList/CommentsList';\nimport DocumentDesktopInfoCard from './EmployeeDocumentPage/DocumentDesktopInfoCard';\nimport { FullDocument } from '../../api/modules/documents/documentsTypes';\nimport InfoIcon from '../../icons/info.svg';\n\nconst DocumentPage = () => {\n  const { checkModuleEnabled } = usePermissions();\n  const { id } = useParams();\n  const { data: document, isSuccess } = useGetDocumentQuery(id, { skip: !id });\n  const { hasRoleType } = usePermissions();\n  const getMessage = useMessages();\n\n  checkModuleEnabled('documents');\n  if (!id) return null;\n\n\n  const {\n    title, journal, creationDate, documentNumber, description,\n    attachments, comments, id: documentId, revoked,\n  } = isSuccess ? document : {} as FullDocument;\n\n  return (\n    <Layout currentPage=\"documents\">\n      <PageHeader\n        pageTitle={`${getMessage('documents.document.header')} ${document ? document.documentNumber : ''}`}\n        currentPage=\"documents\"\n        path=\"/dokumenty\"\n      />\n      {hasRoleType('worker') && (\n        <MobileDocumentInfoCard />\n      )}\n      <ContentWrapper>\n        <Card className={`col-span-full row-span-1 ${hasRoleType('worker') ? 'lg:col-span-9' : 'lg:col-span-12'}`}>\n          <div className=\"flex justify-between\">\n            <h4 className=\"text-header-xs md:text-header-sm inline mr-6\">{title}</h4>\n            <div className=\"flex flex-wrap justify-end\">\n              <Chip chipStyle=\"ghost\" className=\"mb-1 md:mb-0\" screenReaderOnlyText=\"Data utworzenia\">\n                {creationDate && format(new Date(creationDate), 'dd-MM-yyyy')}\n              </Chip>\n            </div>\n          </div>\n          {hasRoleType('worker') && (\n            <div className=\"flex mt-2 text-text-lg-medium border-b\">\n              <p className=\"text-main my-5\">\n                <span className=\"visually-hidden\">Nazwa dziennika</span>\n                {`${getMessage('documents.document.journal')} ${journal?.name}: `}\n                <span className=\"visually-hidden\">Numer dokumentu</span>\n                {documentNumber}\n              </p>\n            </div>\n          )}\n          {revoked ? (\n            <p className=\"flex align-center text-typography-dark text-text-lg-medium my-7 whitespace-pre-line text-interactions-error-text\">\n              <InfoIcon className=\"mr-2\" />\n              {getMessage('documents.document.revoked')}\n            </p>\n          ) : (\n            <p className=\"text-typography-dark text-text-lg-medium my-7 whitespace-pre-line\">\n              {description}\n            </p>\n          )}\n          {attachments && attachments?.length > 0 && !revoked && (\n            <ol className=\"flex flex-wrap\">\n              {attachments?.map(({\n                filename, path, contentType, description,\n              }) => (\n                <AttachmentPreview filename={filename} path={path} contentType={contentType} description={description} key={path} />))}\n            </ol>\n          )}\n          {hasRoleType('worker') && (\n            <>\n              <h3 className=\"inline-block my-5 text-text-lg-semibold md:text-title-semibold\">{getMessage('documents.document.discussion')}</h3>\n              <CommentsList documentId={documentId} comments={comments} publicComment={false} revoked={revoked} />\n            </>\n          )}\n        </Card>\n        {document && hasRoleType('worker') && <DocumentDesktopInfoCard />}\n      </ContentWrapper>\n    </Layout>\n  );\n};\n\nexport default DocumentPage;\n", "import * as React from 'react';\nimport MobileInfoCard from '../../../components/InfoCard/MobileInfoCard/MobileInfoCard';\nimport DocumentInfoCard from './DocumentInfoCard';\nimport useMessages from '../../../hooks/useMessages';\n\nconst MobileDocumentInfoCard = () => {\n  const getMessage = useMessages();\n\n  return (\n    <MobileInfoCard title={getMessage('documents.document.info')}>\n      <DocumentInfoCard />\n    </MobileInfoCard>\n  );\n};\n\nexport default MobileDocumentInfoCard;\n", "import * as React from 'react';\nimport { PropsWithChildren } from 'react';\nimport ExpandableCard from '../../../components/ExpandableCard/ExpandableCard';\n\ninterface Props extends PropsWithChildren {\n  title?: string,\n  ariaLabel?: string\n}\n\nconst MobileInfoCard = ({ title, children, ariaLabel }: Props) => (\n  <ExpandableCard\n    title={title || ''}\n    className=\"bg-light-200 border border-light-300 col-span-full lg:hidden md:px-3 rounded-none\"\n    contentClassName=\"col-span-full md:flex md:flex-wrap md:justify-between pb-2\"\n    ariaLabel={ariaLabel}\n  >\n    {children}\n  </ExpandableCard>\n);\n\nexport default MobileInfoCard;\n", "import * as React from 'react';\nimport { useState } from 'react';\nimport classnames from 'classnames';\nimport ArrowUp from '../../icons/dropdown-arrow-up.svg';\nimport ArrowDown from '../../icons/dropdown-arrow-down.svg';\n\ninterface Props {\n  children: JSX.Element | JSX.Element[] | React.ReactNode | string | undefined,\n  title: JSX.Element | JSX.Element[] | string,\n  defaultOpen?: boolean,\n  className?: string,\n  additionalInfo?: string,\n  contentClassName?: string,\n  onOpen?: () => void,\n  onClose?: () => void,\n  ariaLabel?: string,\n}\n\nconst ExpandableCard = ({\n  children, title, defaultOpen, className, additionalInfo, contentClassName, onOpen, onClose, ariaLabel,\n}: Props) => {\n  const [isOpen, setIsOpen] = useState(defaultOpen || false);\n\n  const handleToggle = () => {\n    if (onClose && isOpen) {\n      onClose();\n    } else if (onOpen && !isOpen) {\n      onOpen();\n    }\n    setIsOpen((isOpen) => !isOpen);\n  };\n\n  return (\n    <div className={classnames('w-full bg-white border rounded border-stroke-grey-100 shadow-gray mobile:mt-6 first:mt-0', className)}>\n      <div\n        className=\"flex justify-between items-center w-full p-4 lg:p-8 group select-none\"\n        role=\"button\"\n        tabIndex={0}\n        onClick={handleToggle}\n        onKeyPress={handleToggle}\n      >\n        {typeof title === 'string'\n          ? <h3 className=\"font-bold capitalize text-xl inline-block\" aria-label={ariaLabel}>{title}</h3>\n          : title}\n        <div className=\"flex items-center\">\n          <span className=\"float-right text-sm text-green mr-2 leading-7\">{additionalInfo}</span>\n          {isOpen ? <ArrowUp className=\"w-3 h-3 inline group-hover:text-hover\" /> : <ArrowDown className=\"w-3 h-3 inline group-hover:text-hover\" />}\n        </div>\n      </div>\n      {isOpen && (\n        <div className={classnames('px-4 lg:px-8 pb-8', contentClassName)}>\n          {children}\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport default ExpandableCard;\n", "import * as React from 'react';\nimport {\n  useCallback, useMemo, useState, useEffect,\n} from 'react';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { useIntl } from 'react-intl';\nimport useMessages from '../../../hooks/useMessages';\nimport {\n  useGetDocumentQuery, useGetDocumentsCategoriesQuery,\n  useGetDocumentStatusesQuery,\n  useGetEmployeesQuery,\n  usePostChangeDocumentMutation, usePostRevokeDocumentMutation,\n} from '../../../api/appApi';\nimport capitalize from '../../../../utils/formatters';\nimport { InputLabel } from '../../../components/FormInputs/InputLabel';\nimport { Select } from '../../../components/FormInputs/inputs/FormSelect';\nimport SearchableDropdown from '../../../components/SearchableDropdown/SearchableDropdown';\nimport { FullDocument } from '../../../api/modules/documents/documentsTypes';\nimport Button from '../../../components/Button/Button';\nimport Dialog from '../../../components/Dialog/Dialog';\nimport { FormNotice } from '../../../components/FormNotice/FormNotice';\nimport { tasksLabel } from '../../../../utils/common';\nimport useTenantlessMode from '../../../hooks/useTenantlessMode';\n\nconst DocumentInfoCard = () => {\n  const [realizerState, setRealizerState] = useState<string | null>(null);\n  const tenantlessMode = useTenantlessMode();\n  const getMessage = useMessages();\n  const intl = useIntl();\n  const navigate = useNavigate();\n  const { id } = useParams();\n\n  const { data: documentStatuses } = useGetDocumentStatusesQuery();\n  const { data: documentCategories } = useGetDocumentsCategoriesQuery();\n  const { data: document, isSuccess } = useGetDocumentQuery(id);\n  const [postChange, changeDocumentResult] = usePostChangeDocumentMutation();\n  const [revokeDocument, revokeDocumentResult] = usePostRevokeDocumentMutation();\n  const [revokePopupOpen, setRevokePopupOpen] = useState(false);\n\n  const {\n    status, realizer, category, creator, sender, receiver, tenant, tasks, revoked,\n  } = isSuccess ? document : {} as FullDocument;\n\n  useEffect(() => {\n    if (realizer) setRealizerState(realizer.name);\n  }, [realizer]);\n\n  const statusOptionsValues = useMemo(() => documentStatuses?.map(({ id, name }) => ({\n    value: id,\n    optionLabel: capitalize(name),\n  })) || [], [documentStatuses]);\n\n  const categoriesOptionsValues = useMemo(() => documentCategories?.map(({ id, name }) => ({\n    value: id,\n    optionLabel: capitalize(name),\n  })) || [], [documentCategories]);\n\n  const changeParam = useCallback((paramName: string, paramValue: string | null): void => {\n    if (id) {\n      postChange({\n        documents: {\n          [id]: {\n            [paramName]: paramValue,\n          },\n        },\n      });\n    }\n  }, [id]);\n\n  if (!id) return null;\n\n  return (\n    <div className=\"w-full flex flex-col text-text-md-semibold\">\n      <Dialog\n        isOpen={revokePopupOpen}\n        onAccept={() => revokeDocument(id)}\n        onClose={() => setRevokePopupOpen(false)}\n      >\n        <h3 className=\"text-xl font-semibold\">\n          { intl.formatMessage({ id: 'documents.document.revokePopup.title' }, { documentNumber: document?.documentNumber }) }\n        </h3>\n        <p className=\"mb-12 mt-8 mx-16 text-sm text-interactions-error-text\">\n          { getMessage('documents.document.revokePopup.description') }\n        </p>\n      </Dialog>\n      <section className=\"border-b pb-4 tablet:flex tablet:w-full\">\n        <div className=\"tablet:mr-5 tablet:w-1/4\">\n          {documentStatuses && (\n            <>\n              <InputLabel\n                label={getMessage('documents.document.status')}\n              />\n              <Select\n                selectOptions={statusOptionsValues}\n                onChange={(id) => changeParam('status_id', id)}\n                value={status.id}\n                disabled={revoked}\n              />\n            </>\n          )}\n        </div>\n        <div className=\"tablet:mr-5 tablet:w-1/4\">\n          {documentCategories && (\n          <>\n            <InputLabel\n              label={getMessage('documents.document.category')}\n            />\n            <Select\n              selectOptions={categoriesOptionsValues}\n              onChange={(id) => changeParam('category_id', id)}\n              value={category.id}\n              disabled={revoked}\n            />\n          </>\n          )}\n        </div>\n        <div className=\"tablet:mr-5 tablet:w-1/4\">\n          <InputLabel\n            label={getMessage('documents.document.realizer')}\n            showReset={!!realizerState}\n            resetButtonText={getMessage('remove')}\n            onReset={() => {\n              changeParam('realizer_id', null);\n              setRealizerState(null);\n            }}\n          />\n          <SearchableDropdown\n            className=\"w-full\"\n            disabled={revoked}\n            query={useGetEmployeesQuery}\n            onSelect={(id) => changeParam('realizer_id', id)}\n            initialState={realizerState}\n            ariaLabel={getMessage('form.ariaLabel.realizer')}\n          />\n        </div>\n        {changeDocumentResult.error && (\n          /* @ts-ignore */\n          <FormNotice noticeClassName=\"col-span-full tablet:mr-5 mt-3\" type=\"error\" message={changeDocumentResult.error.data?.errors || getMessage('form.error')} />\n        )}\n        {!revoked && (\n          <Button\n            size=\"small\"\n            className=\"min-w-full tablet:min-w-fit lg:w-auto mt-4\"\n            onClick={() => setRevokePopupOpen(true)}\n          >\n            {getMessage('documents.document.revoke')}\n          </Button>\n        )}\n        {revokeDocumentResult.error && (\n          /* @ts-ignore */\n          <FormNotice noticeClassName=\"col-span-full tablet:mr-5 mt-3\" type=\"error\" message={revokeDocumentResult.error.data?.errors || getMessage('documents.document.revoked.error')} />\n        )}\n      </section>\n      <section className=\"w-full border-b py-4\">\n        <p className=\"text-text-md-semibold text-typography-dark\">\n          {getMessage('documents.document.creator')}\n          <span className=\"text-text-md-medium ml-2\">\n            {creator.name}\n          </span>\n        </p>\n        {sender && (\n          <p className=\"text-text-md-semibold text-typography-dark\">\n            {getMessage('documents.document.sender')}\n            <span className=\"text-text-md-medium ml-2\">\n              {sender}\n            </span>\n          </p>\n        )}\n        {receiver && (\n          <p className=\"text-text-md-semibold text-typography-dark\">\n            {getMessage('documents.document.receiver')}\n            <span className=\"text-text-md-medium ml-2\">\n              {receiver}\n            </span>\n          </p>\n        )}\n        {!tenantlessMode && tenant && (\n          <p className=\"text-text-md-semibold text-typography-dark\">\n            {getMessage('documents.document.tenant')}\n            <span className=\"text-text-md-medium ml-2\">\n              {tenant.name}\n            </span>\n          </p>\n        )}\n      </section>\n      <section className=\" w-full tablet:flex tablet:justify-between tablet:items-end mb-4 lg:mb-0 pt-4\">\n        {tasks && tasks.length > 0 && (\n          <div>\n            <p className=\"text-text-md-semibold text-typography-dark \">\n              {intl.formatMessage(\n                { id: 'documents.document.relatedTasks' },\n                { tasksCount: tasks.length, taskLabel: tasksLabel(tasks.length) },\n              )}\n            </p>\n            {tasks.map((task) => (\n              <a\n                key={task.id}\n                className=\"underline cursor-pointer text-typography-dark block hover:text-main mobile:select-none\"\n                href={`/zadania/${task.id}`}\n                tabIndex={0}\n                aria-label={intl.formatMessage(\n                  { id: 'tasks.task.goToTask' },\n                  { taskNumberTitle: `${task.taskNumber} ${task.title}` },\n                )}\n              >\n                {`Nr ${task.taskNumber} ${task.title}`}\n              </a>\n            ))}\n          </div>\n        )}\n        {!revoked && (\n        <Button\n          className=\"min-w-full tablet:min-w-fit lg:w-auto mt-4\"\n          onClick={() => navigate(`/dokumenty/nowe-zadanie/${id}`)}\n        >\n          {getMessage('documents.document.addTask')}\n        </Button>\n        )}\n      </section>\n    </div>\n  );\n};\n\nexport default DocumentInfoCard;\n", "/* eslint-disable jsx-a11y/no-static-element-interactions */\nimport * as React from 'react';\nimport {\n  useState, useCallback, useRef, useEffect,\n} from 'react';\nimport classnames from 'classnames';\nimport { QueryDefinition } from '@reduxjs/toolkit/dist/query';\nimport { UseQuery } from '@reduxjs/toolkit/dist/query/react/buildHooks';\nimport { baseQuery } from '../../api/baseQuery';\nimport useMessages from '../../hooks/useMessages';\n\ninterface Option {\n  id: string,\n  name: string,\n}\n\nconst inputDefaultStyles = `inline-block px-2 py-1 font-normal text-gray-700 bg-white bg-clip-padding\nborder border-solid border-stroke-grey-300 rounded transition ease-in-out my-1 text-text-md-semibold\nfocus:text-gray-700 focus:bg-white focus:border-blue-600 focus:outline-none`;\n\ninterface Props {\n  query: UseQuery<QueryDefinition<Record<string, string | null>, typeof baseQuery, string, Option[], string>>,\n  queryOptions?: Record<string, string | undefined>,\n  className?: string,\n  onSelect: (id: string) => void,\n  initialState: string | null,\n  ariaLabel?: string,\n  disabled?: boolean\n}\n\nconst SearchableDropdown = ({\n  onSelect,\n  query,\n  queryOptions,\n  className,\n  initialState,\n  ariaLabel,\n  disabled,\n}: Props) => {\n  const [focusedIndex, setFocusedIndex] = useState(-1);\n  const [showResults, setShowResults] = useState(false);\n  const [typedValue, setTypedValue] = useState(initialState);\n  const { data } = query({ search: typedValue, ...queryOptions });\n  const getMessage = useMessages();\n  const listRef = useRef<HTMLDivElement>(null);\n\n  useEffect(() => {\n    setTypedValue(initialState);\n  }, [initialState]);\n\n  const resetSearch = useCallback(() => {\n    setFocusedIndex(-1);\n    setShowResults(false);\n  }, []);\n\n  const handleSelection = (item: Option) => {\n    setTypedValue(item.name);\n    onSelect(item.id);\n    resetSearch();\n  };\n\n  const handleKeyDown: React.KeyboardEventHandler<HTMLDivElement> = (e) => {\n    if (data) {\n      const { key } = e;\n      let nextIndexCount = 0;\n      if (key === 'ArrowDown') { nextIndexCount = (focusedIndex + 1) % data.length; }\n      if (key === 'ArrowUp') { nextIndexCount = (focusedIndex + data.length - 1) % data.length; }\n      if (key === 'Escape') {\n        resetSearch();\n      }\n      if (key === 'Enter') {\n        e.preventDefault();\n        const item = data[focusedIndex];\n        handleSelection(item);\n      }\n\n      setFocusedIndex(nextIndexCount);\n      setTimeout(() => {\n        listRef.current?.querySelector('.active')?.scrollIntoView({ block: 'nearest' });\n      }, 300);\n    }\n  };\n\n  const handleChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n    setTypedValue(e.target.value);\n  };\n\n  const showValues = useCallback(() => {\n    setShowResults(true);\n  }, [setShowResults]);\n\n  return (\n    <div\n      onBlur={resetSearch}\n      onKeyDown={handleKeyDown}\n      className={`relative ${className}`}\n    >\n      <input\n        value={typedValue || ''}\n        // eslint-disable-next-line jsx-a11y/tabindex-no-positive\n        tabIndex={0}\n        onChange={handleChange}\n        onFocus={showValues}\n        type=\"search\"\n        placeholder={getMessage('filters.search')}\n        className={classnames('transition w-full', inputDefaultStyles, { 'bg-background-light': !!initialState })}\n        autoComplete=\"off\"\n        disabled={disabled || !!initialState}\n        aria-label={ariaLabel}\n      />\n      <input\n        type=\"select\"\n        value={typedValue || ''}\n        style={{ display: 'none' }}\n      />\n      {showResults && data && data.length > 0 && (\n        <div\n          className=\"absolute w-full bg-white shadow-lg rounded-bl rounded-br max-h-56 overflow-y-auto z-50\"\n          ref={listRef}\n        >\n          {data?.map((item: {\n            id: string,\n            name: string,\n          }, index) => (\n            // eslint-disable-next-line jsx-a11y/click-events-have-key-events\n            <div\n              key={item.id}\n              onMouseDown={() => handleSelection(item)}\n              className={classnames(\n                inputDefaultStyles,\n                'w-full hover:text-main hover:bg-light-200 border-none',\n                { 'bg-light-200 active': index === focusedIndex },\n              )}\n            >\n              {item.name}\n            </div>\n          ))}\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport default SearchableDropdown;\n", "import * as React from 'react';\nimport { PropsWithChildren } from 'react';\nimport classnames from 'classnames';\n\ninterface FormNoticeProps {\n  type: string,\n  noticeClassName?: string,\n  message: string[] | string,\n}\n\nexport const FormNotice = ({ type, message, noticeClassName }: PropsWithChildren<FormNoticeProps>) => {\n  const errorStyle = 'px-2 py-1 mb-2 bg-interactions-error-bg text-text-md-semibold text-interactions-error-text text-center rounded';\n  const successStyle = 'px-2 py-1 mb-2 bg-interactions-success-bg text-text-md-semibold text-interactions-success-text text-center rounded';\n\n  return (\n    <div className={classnames(type === 'error' ? errorStyle : successStyle, noticeClassName)} aria-live=\"polite\">\n      {Array.isArray(message)\n        ? message.map((messageItem) => <p>{messageItem}</p>)\n        : message}\n    </div>\n  );\n};\n", "import useMessages from \"../app/hooks/useMessages\";\n\nexport const tasksLabel = (nr:number) => {\n    const getMessage = useMessages();\n  \n    if(nr === 1){\n      return getMessage('tickets.ticket.relatedTasks.one')\n    } else if ((nr % 10 === 2 || nr % 10 === 3 || nr % 10 === 4) && (nr < 10 || nr > 20)) {\n      return getMessage('tickets.ticket.relatedTasks.few')\n    } else {\n      return getMessage('tickets.ticket.relatedTasks.other')\n    }\n  }", "import * as React from 'react';\nimport AttachmentTypeIcon from './AttachmentTypeIcon/AttachmentTypeIcon';\nimport PdfPreviewer from '../PdfPreviewer/PdfPreviewer';\nimport PreviewReplacement from './PreviewReplacement/PreviewReplacement';\nimport useMessages from '../../hooks/useMessages';\n\ntype Props = {\n  filename: string,\n  path: string,\n  href?: string,\n  description?: string,\n  contentType: string\n  className?: string,\n  imageClassName?: string,\n};\n\nconst FilePreview = ({\n  contentType, path, filename, imageClassName,\n}: {\n  contentType: string,\n  path: string,\n  filename: string,\n  imageClassName?: string,\n}) => {\n  switch (contentType) {\n    case 'application/pdf':\n      return <PdfPreviewer source={path} pageToDisplay={1} width={200} />;\n    case 'image/png':\n    case 'image/jpeg':\n    case 'image/jpg':\n      return <img src={path} alt={filename} className={imageClassName || 'overflow-hidden h-[160px] w-[200px]'} />;\n    default:\n      return <PreviewReplacement widthInPx=\"200\" heightInPx=\"160\" />;\n  }\n};\n\nconst AttachmentPreview = (attachment: Props) => {\n  const {\n    path, contentType, filename, description, href, className, imageClassName,\n  } = attachment;\n  const getMessage = useMessages();\n\n  return (\n    <li\n      className={`my-2 mr-3 flex items-center text-gray-500 ${className}`}\n      title={`${description ? (`opis: ${description} `) : ''}(${getMessage('opensInNewTab')})`}\n    >\n      <a\n        href={href || path}\n        target={href ? '' : '_blank'}\n        className=\"inline-block rounded border border-gray font-semibold text-gray-500 text-xs text-center hover:border-hover truncate relative\"\n        rel=\"noreferrer\"\n      >\n        <div className={imageClassName || 'overflow-hidden h-[160px] w-[200px]'}>\n          <FilePreview contentType={contentType} path={path} filename={filename} imageClassName={imageClassName} />\n        </div>\n        <div className=\"p-1 bg-gray-200 w-full flex self-end items-center absolute bottom-0 index-5\">\n          <AttachmentTypeIcon contentType={contentType} />\n          <p className=\"truncate grow-0 text-text-md-medium text-typography-dark\">\n            {filename}\n            <span className=\"inline-block h-0 w-0\">\n              {href ? '' : getMessage('opensInNewTab')}\n            </span>\n          </p>\n        </div>\n      </a>\n    </li>\n  );\n};\n\nexport default AttachmentPreview;\n", "import * as React from 'react';\nimport classNames from 'classnames';\n\nconst AttachmentTypeIcon = ({ contentType }: { contentType?: string }) => {\n  const fileType = contentType?.split('/').pop();\n  if (!fileType) return null;\n\n  let icon: {\n    bgColor: string,\n    textColor: string,\n    text: string,\n  };\n\n  switch (contentType) {\n    case 'application/pdf':\n      icon = {\n        bgColor: 'bg-black',\n        text: fileType?.toUpperCase(),\n        textColor: 'text-typography-white',\n      };\n      break;\n    case 'image/png':\n    case 'image/jpg':\n    case 'image/jpeg':\n      icon = {\n        bgColor: ' bg-red-700',\n        text: fileType?.toUpperCase(),\n        textColor: 'text-typography-white',\n      };\n      break;\n    default:\n      icon = {\n        bgColor: 'bg-gray-300',\n        text: '?',\n        textColor: 'text-typography-black',\n      };\n      break;\n  }\n\n  return (\n    <div className={classNames('w-[17px] h-[17px] rounded-sm mr-2 shrink-0', icon.bgColor)}>\n      <p className={classNames('inline-block align-middle text-[6px]', icon.textColor)}>{icon.text}</p>\n    </div>\n  );\n};\n\nexport default AttachmentTypeIcon;\n", "import * as React from 'react';\nimport { useState, PropsWithChildren } from 'react';\nimport { Document, Page } from 'react-pdf';\n\ninterface Props {\n  source: string | File,\n  pageToDisplay?: number,\n  width?: number,\n  height?: number,\n  scale?: number,\n  className?: string,\n  renderTextAndAnnotations?: boolean,\n}\n\nconst PdfPreviewer = ({\n  source, pageToDisplay, width, height, scale, className, children, renderTextAndAnnotations,\n}: PropsWithChildren<Props>) => {\n  const [numPages, setNumPages] = useState(1);\n\n  const onDocumentLoadSuccess = ({ numPages }: { numPages: number }) => {\n    setNumPages(numPages);\n  };\n\n  // provide http headers for already attached pdfs in order to keep their resizing smooth\n  const file = source instanceof File\n    ? source\n    : { url: source, httpHeaders: { 'cache-control': 'no-cache' } };\n\n  return (\n    <Document\n      file={file}\n      className={`w-full ${className}`}\n      onLoadSuccess={onDocumentLoadSuccess}\n    >\n      {pageToDisplay ? (\n        <Page\n          pageNumber={pageToDisplay}\n          width={width}\n          height={height}\n          scale={scale}\n          renderAnnotationLayer={renderTextAndAnnotations}\n          renderTextLayer={renderTextAndAnnotations}\n          className=\"shadow-lg\"\n        />\n      )\n        : Array.from(new Array(numPages), (el, index) => index).map((el, index) => (\n          <Page\n            key={`page_${index + 1}`}\n            pageNumber={index + 1}\n            width={width}\n            height={height}\n            scale={scale}\n            renderAnnotationLayer={renderTextAndAnnotations}\n            renderTextLayer={renderTextAndAnnotations}\n            className=\"shadow-lg my-4\"\n          />\n        ))}\n      {children}\n    </Document>\n  );\n};\n\nexport default PdfPreviewer;\n", "import * as React from 'react';\nimport useMessages from '../../../hooks/useMessages';\n\nconst PreviewReplacement = ({ widthInPx, heightInPx }: { widthInPx: string, heightInPx: string }) => {\n  const getMessage = useMessages();\n\n  return (\n    <div className={`text-typography-dark text-text-sm-medium w-[${widthInPx}px] h-[${heightInPx}px] flex justify-center items-center`}>\n      <span className=\"inline-block\">\n        {getMessage('attachment.previewUnavailable')}\n      </span>\n    </div>\n  );\n};\n\nexport default PreviewReplacement;\n", "import * as React from 'react';\nimport { useEffect, useRef } from 'react';\nimport format from 'date-fns/format';\nimport classNames from 'classnames';\nimport CommentForm from './CommentForm/CommentForm';\nimport AttachmentPreview from '../AttachmentPreview/AttachmentPreview';\nimport { TicketComment } from '../../api/modules/tickets/ticketsTypes';\nimport { useGetFullUserAccountQuery } from '../../api/appApi';\nimport useMessages from '../../hooks/useMessages';\n\ninterface Props {\n  ticketId?: string,\n  taskId?: string,\n  documentId?: string,\n  ksefInvoiceId?: string,\n  comments?: TicketComment[],\n  publicComment: boolean,\n  revoked: boolean\n}\n\nconst CommentsList = ({\n  ticketId, taskId, documentId, ksefInvoiceId, comments, publicComment, revoked\n}: Props) => {\n  const { data: user } = useGetFullUserAccountQuery();\n  const userFullName = user?.fullName;\n  const listRef = useRef<HTMLUListElement>(null);\n  const getMessage = useMessages();\n\n  useEffect(() => {\n    listRef.current?.lastElementChild?.scrollIntoView({ block: 'nearest' });\n  }, [comments]);\n\n  const hasComments = comments && comments?.length > 0;\n\n  return (\n    <div className=\"w-full\">\n      <ul\n        className={classNames(\n          'overflow-y-auto shadow-inner flex flex-col',\n          { 'h-[300px] pt-2': hasComments, 'py-6': !hasComments },\n          { 'bg-light-100': !publicComment}\n        )}\n        ref={listRef}\n        // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n        tabIndex={0}\n      >\n        {comments?.map((comment, index) => {\n          const currentUserComment = comment.author === userFullName;\n          return (\n          // eslint-disable-next-line react/no-array-index-key\n            <li key={index} className={classNames('mb-6 text-text-md-medium md:text-text-lg-medium w-fit max-w-2/3', { 'self-end': currentUserComment })} data-testid=\"commentRow\">\n              <div className=\"flex justify-between items-baseline\">\n                <div className=\"justify-end mr-6\">\n                  {currentUserComment ? getMessage('tickets.ticket.comments.me') : comment.author}\n                  :\n                </div>\n                <div className=\"flex justify-end text-text-sm-medium\">\n                  {format(new Date(comment.createdAt), 'dd-MM-yyyy / HH:mm')}\n                </div>\n              </div>\n              <div\n                className={classNames(\n                  'text-left bg-background-light py-2 px-4 rounded-md whitespace-pre-line',\n                  { 'bg-typography-black text-typography-white': currentUserComment },\n                  currentUserComment ? 'rounded-tr-none' : 'rounded-tl-none',\n                )}\n              >\n                {comment.content}\n              </div>\n              <div className=\"col-span-1\" />\n              {comment.attachments.length > 0 && (\n                <ul className={classNames(\n                  'flex flex-wrap w-full',\n                  { 'justify-end': currentUserComment },\n                )}\n                >\n                  {comment.attachments.map(({\n                    filename, path, contentType, description,\n                  }) => (\n                    <AttachmentPreview\n                      filename={filename}\n                      path={path}\n                      contentType={contentType}\n                      description={description}\n                      key={path}\n                      className=\"mr-0\"\n                    />\n                  ))}\n                </ul>\n              )}\n            </li>\n          );\n        })}\n      </ul>\n      {!hasComments && (<div>{getMessage('tickets.ticket.comments.noComments')}</div>)}\n      <CommentForm\n        ticketId={ticketId}\n        taskId={taskId}\n        documentId={documentId}\n        ksefInvoiceId={ksefInvoiceId}\n        publicComment={publicComment}\n        revoked={revoked}\n      />\n    </div>\n  );\n};\nexport default CommentsList;\n", "/* eslint-disable react/jsx-props-no-spreading */\nimport * as React from 'react';\nimport { useForm, FormProvider, useFieldArray } from 'react-hook-form';\nimport useMessages from '../../../hooks/useMessages';\nimport {\n  usePostKsefInvoiceCommentMutation,\n  usePostDocumentCommentMutation,\n  usePostTaskCommentMutation,\n  usePostTicketCommentMutation,\n} from '../../../api/appApi';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport { FormTextarea, FormInput, FormFileInput } from '../../FormInputs';\nimport Button from '../../Button/Button';\nimport FileUploadPreview from '../../AttachmentPreview/FileUploadPreview/FileUploadPreview';\nimport { translateTicketCommentToFormData } from '../../../api/modules/tickets/ticketsTranslator';\nimport { translateTaskCommentToFormData } from '../../../api/modules/tasks/tasksTranslator';\nimport { FormNotice } from '../../FormNotice/FormNotice';\nimport {\n  translateDocumentCommentToFormData,\n  translateKsefInvoiceCommentToFormData,\n} from '../../../api/modules/documents/documentsTranslator';\n\ntype CommentAttachment = {\n  file: FileList | undefined,\n  description: string\n};\n\nexport interface CommentFormData {\n  content: string,\n  publicComment: boolean\n  attachments: CommentAttachment[]\n  ticketId?: string\n  taskId?: string\n}\n\ninterface Props {\n  ticketId?: string,\n  taskId?: string,\n  documentId?: string,\n  ksefInvoiceId?: string,\n  publicComment: boolean,\n  revoked?: boolean\n}\n\nconst CommentForm = ({\n  ticketId, taskId, documentId, ksefInvoiceId, publicComment, revoked\n}: Props) => {\n  const getMessage = useMessages();\n  const [postTicketCommentData, { error: postTicketError }] = usePostTicketCommentMutation();\n  const [postTaskCommentData, { error: postTaskError }] = usePostTaskCommentMutation();\n  const [postDocumentCommentData, { error: postDocumentError }] = usePostDocumentCommentMutation();\n  const [postKsefInvoiceCommentData, { error: postKsefInvoiceError }] = usePostKsefInvoiceCommentMutation();\n  const methods = useForm<CommentFormData>({\n    defaultValues: {\n      attachments: [{ description: '' }],\n    },\n  });\n  const { fields, append, remove } = useFieldArray({ name: 'attachments', control: methods.control });\n  const attachments = methods.watch('attachments');\n  const allAttachmentsSelected = attachments.every((attachment) => attachment.file?.length);\n  const { hasRoleType } = usePermissions();\n\n  React.useEffect(() => {\n    if (allAttachmentsSelected) {\n      append({ file: undefined, description: '' });\n    }\n  }, [allAttachmentsSelected]);\n\n  const onSubmit = (data: CommentFormData) => {\n    if (ticketId) {\n      postTicketCommentData({\n        id: ticketId,\n        payload: translateTicketCommentToFormData({ ...data, publicComment }),\n      });\n    } else if (taskId) {\n      postTaskCommentData({\n        id: taskId,\n        payload: translateTaskCommentToFormData({ ...data }),\n      });\n    } else if (documentId) {\n      postDocumentCommentData({\n        id: documentId,\n        payload: translateDocumentCommentToFormData({ ...data }),\n      });\n    } else if (ksefInvoiceId) {\n      postKsefInvoiceCommentData({\n        id: ksefInvoiceId,\n        payload: translateKsefInvoiceCommentToFormData({ ...data }),\n      });\n    }\n    methods.reset();\n  };\n\n  return (\n    <FormProvider {...methods}>\n      {/* @ts-ignore */}\n      {postTicketError && <FormNotice type=\"error\" message={postTicketError?.data?.errors || getMessage('form.error')} />}\n      {/* @ts-ignore */}\n      {postTaskError && <FormNotice type=\"error\" message={postTaskError?.data?.errors || getMessage('form.error')} />}\n      {/* @ts-ignore */}\n      {postDocumentError && <FormNotice type=\"error\" message={postDocumentError?.data?.errors || getMessage('form.error')} />}\n      {/* @ts-ignore */}\n      {postKsefInvoiceError && <FormNotice type=\"error\" message={postKsefInvoiceError?.data?.errors || getMessage('form.error')} />}\n      <form onSubmit={methods.handleSubmit(onSubmit)} className=\"w-full pt-2 text-sm flex flex-col\">\n        <FormTextarea\n          className=\"block\"\n          inputClassName=\"w-full\"\n          id=\"content\"\n          options={{ required: getMessage('tickets.ticket.comments.error.content.required'),\n          validate: (value) => {\n            if (!/\\S/.test(value)) {\n              return getMessage('tickets.ticket.comments.error.content.required');\n            }\n            return true;\n          }\n           }}\n          placeholder={getMessage('tickets.ticket.comments.write')}\n          rows={1}\n          ariaLabel=\"Wprowad\u017A tre\u015B\u0107 komentarza do zg\u0142oszenia\"\n          label={hasRoleType('worker') && publicComment ? getMessage('tickets.ticket.comments.tenantComment') : getMessage('tickets.ticket.comments.comment')}\n        />\n        <div className=\"flex flex-wrap items-end justify-between mobile:mt-2\">\n          <div className=\"mobile:w-full\">\n            {fields.map(({ file, id }, index) => {\n              const fileSelected = file && file.length > 0;\n              return (\n                <div key={id} id={id} className=\"flex flex-wrap align-start my-3 \">\n                  {fileSelected && (\n                    <FileUploadPreview attachment={attachments[index]} onDelete={() => remove(index)} />\n                  )}\n                  <div className=\"mobile:w-full\">\n                    {fileSelected && (\n                      <FormInput\n                        className=\"mobile:w-full mobile:mt-1\"\n                        inputClassName=\"text-text-sm-medium mobile:w-full\"\n                        id={`attachments.${index}.description`}\n                        type=\"text\"\n                        placeholder={getMessage('tickets.ticket.addAttachmentDescription')}\n                        disabled={revoked}\n                      />\n                    )}\n                    <FormFileInput\n                      inputClassName={fileSelected ? 'hidden' : ''}\n                      id={`attachments.${index}.file`}\n                      labelText={getMessage('tickets.ticket.addAttachment')}\n                      labelClassName=\"overflow-hidden h-1 w-1\"\n                      disabled={revoked}\n                    />\n                  </div>\n                </div>\n              );\n            })}\n          </div>\n          <Button type=\"submit\" className=\"mobile:w-full mobile:mt-4\">{getMessage('sendResponse')}</Button>\n        </div>\n      </form>\n    </FormProvider>\n  );\n};\nexport default CommentForm;\n", "import * as React from 'react';\nimport { useState, useEffect } from 'react';\nimport AttachmentTypeIcon from '../AttachmentTypeIcon/AttachmentTypeIcon';\nimport PdfPreviewer from '../../PdfPreviewer/PdfPreviewer';\nimport DeleteIcon from '../../../icons/delete.svg';\nimport PreviewReplacement from '../PreviewReplacement/PreviewReplacement';\nimport useMessages from '../../../hooks/useMessages';\n\ntype Props = {\n  attachment: {\n    file: FileList | undefined,\n    description?: string\n  },\n  onDelete: () => void;\n};\n\nconst readFile = async (file: File) => new Promise<string>((resolve, reject) => {\n  const reader = new FileReader();\n  // FileReader.readAsDataURL() returns a string - base64-encoded representation of the img\n  reader.onload = () => resolve(reader.result as string);\n  reader.onerror = () => reject(new Error('Error reading file'));\n  reader.readAsDataURL(file);\n});\n\nconst FileUploadPreview = ({ attachment, onDelete }: Props) => {\n  const [pdfFile, setPdfFile] = useState<File>();\n  const [imageData, setImageData] = useState<{ data: string; file: File }>();\n  const [otherFile, setOtherFile] = useState<File>();\n  const getMessage = useMessages();\n\n  useEffect(() => {\n    if (attachment.file && attachment.file.length > 0) {\n      const file = attachment.file[0];\n\n      if (file.type === 'application/pdf') {\n        setPdfFile(file);\n      }\n      if (file.type === 'image/jpg' || file.type === 'image/jpeg' || file.type === 'image/png') {\n        readFile(file).then((data) => setImageData({ data, file }));\n      }\n      setOtherFile(file);\n    }\n  }, [attachment]);\n\n  return (\n    <div className=\"border border-gray rounded shadow-md shadow-gray-300 mr-6 relative\">\n      <button\n        type=\"button\"\n        onClick={onDelete}\n        className=\"h-fit absolute z-20 -right-2 -top-2\"\n        aria-label={getMessage('remove')}\n      >\n        <DeleteIcon className=\"hover:text-gray-400\" />\n      </button>\n      <div className=\"overflow-hidden h-[100px] w-[140px]\">\n        {pdfFile && <PdfPreviewer source={pdfFile} width={140} />}\n        {imageData && (\n          <img\n            src={imageData.data}\n            alt={imageData.file.name}\n            className=\"object-cover h-[100px] w-[140px]\"\n          />\n        )}\n        <PreviewReplacement widthInPx=\"140\" heightInPx=\"100\" />\n      </div>\n      <div className=\"p-1 bg-gray-100 w-full flex self-end absolute bottom-0 index-5 text-typography-dark text-xs text-center\">\n        <AttachmentTypeIcon contentType={imageData?.file.type || pdfFile?.type || otherFile?.type} />\n        <div className=\"truncate grow-0\">{imageData?.file.name || pdfFile?.name || otherFile?.name}</div>\n      </div>\n    </div>\n  );\n};\n\nexport default FileUploadPreview;\n", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgDelete = (props: SVGProps<SVGSVGElement>) => <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><circle cx={8} cy={8} r={7.5} fill=\"white\" stroke=\"#DBDFE4\" /><path d=\"M10.8125 5.1875L5.1875 10.8125\" stroke=\"#5C5C67\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M10.8125 10.8125L5.1875 5.1875\" stroke=\"#5C5C67\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>;\nexport default SvgDelete;", "import * as React from 'react';\nimport DesktopInfoCard from '../../../components/InfoCard/DesktopInfoCard/DesktopInfoCard';\nimport DocumentInfoCard from './DocumentInfoCard';\n\nconst DocumentDesktopInfoCard = () => (\n  <DesktopInfoCard className=\"row-span-2\">\n    <DocumentInfoCard />\n  </DesktopInfoCard>\n);\n\nexport default DocumentDesktopInfoCard;\n", "import * as React from 'react';\nimport { PropsWithChildren } from 'react';\nimport Card from '../../../components/Card/Card';\n\ninterface Props extends PropsWithChildren {\n  title?: string,\n  className?: string,\n  ariaLabel?: string,\n}\n\nconst DesktopInfoCard = ({\n  title, children, className, ariaLabel,\n}: Props) => (\n  <Card className={`bg-light-100 border border-light-300 hidden lg:block lg:col-span-3 h-fit p-6 ${className}`}>\n    {title && (\n      <div className=\"border-b border-b-light-300 pb-6 mb-5\">\n        <span>\n          <h4 className=\"inline text-header-sm mr-4\" aria-label={ariaLabel}>{title}</h4>\n        </span>\n      </div>\n    )}\n    {children}\n  </Card>\n);\n\nexport default DesktopInfoCard;\n", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgInfo = (props: SVGProps<SVGSVGElement>) => <svg width={24} height={24} viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M12 21C16.9706 21 21 16.9706 21 12C21 7.02944 16.9706 3 12 3C7.02944 3 3 7.02944 3 12C3 16.9706 7.02944 21 12 21Z\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M11.25 11.25H12V16.5H12.75\" stroke=\"currentColor\" strokeWidth={2} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M11.8125 9C12.4338 9 12.9375 8.49632 12.9375 7.875C12.9375 7.25368 12.4338 6.75 11.8125 6.75C11.1912 6.75 10.6875 7.25368 10.6875 7.875C10.6875 8.49632 11.1912 9 11.8125 9Z\" fill=\"currentColor\" /></svg>;\nexport default SvgInfo;", "import * as React from 'react';\nimport { useState } from 'react';\nimport PageHeader from '../../../components/Layout/PageHeader';\nimport useMessages from '../../../hooks/useMessages';\nimport Tabs, { TabElement } from '../../../components/Tabs/Tabs';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport MetersList from './MetersListPage/MetersList';\nimport MetersHistory from './MetersHistoryPage/MetersHistory';\nimport Button from '../../../components/Button/Button';\nimport { useAppSelector } from '../../../hooks/reduxHooks';\nimport MetersHistoryFilters from './MetersHistoryPage/MetersHistoryFilters';\nimport Layout from '../../../components/Layout/Layout';\nimport FiltersIcon from '../../../icons/filters.svg';\nimport { useGetFullUserAccountQuery } from '../../../api/appApi';\nimport ExpandableCard from '../../../components/ExpandableCard/ExpandableCard';\n\ninterface Props {\n  tab: 'list' | 'history',\n}\n\nconst TenantMetersPage = ({ tab }: Props) => {\n  const getMessage = useMessages();\n  const { data: user } = useGetFullUserAccountQuery();\n  const { checkPermission, checkModuleEnabled } = usePermissions();\n  const hasFilterSet = useAppSelector((state) => !!state.app.filters.find((filter) => filter.id === 'metersHistory'));\n  const [filtersOpen, setFiltersOpen] = useState(hasFilterSet);\n  const venueId = useAppSelector((state) => state.app.selectedVenueId);\n\n  const tabs: TabElement[] = [\n    {\n      label: getMessage('local.meters.readings'),\n      path: '/liczniki',\n    },\n    {\n      label: getMessage('local.meters.readingsHistory'),\n      path: '/liczniki/historia',\n    },\n  ];\n\n  checkPermission('meters_list');\n  checkModuleEnabled('meters');\n\n  return (\n    <Layout currentPage=\"local.meters\">\n      <PageHeader\n        pageTitle={getMessage('navigation.local.meters')}\n        currentPage=\"local.meters\"\n      >\n        {tab === 'history' && (\n          <Button\n            Icon={FiltersIcon}\n            size=\"small\"\n            styleType=\"secondary\"\n            onClick={() => setFiltersOpen((filtersOpen) => !filtersOpen)}\n            className=\"h-8 py-1\"\n          >\n            {getMessage('filters')}\n          </Button>\n        )}\n      </PageHeader>\n      <Tabs tabElements={tabs} />\n      {tab === 'history' && filtersOpen && <MetersHistoryFilters />}\n      <ContentWrapper>\n        {tab === 'list'\n          && (venueId ? <MetersList venueId={venueId} /> : (\n            <>\n              {(user?.tenant?.venues || []).map((venue) => (\n                <ExpandableCard className=\"col-span-full\" title={venue.address} key={venue.id}>\n                  <MetersList venueId={venue.id} />\n                </ExpandableCard>\n              ))}\n            </>\n          ))}\n        {tab === 'history' && (venueId ? <MetersHistory venueId={venueId} /> : (\n          <>\n            {(user?.tenant?.venues || []).map((venue) => (\n              <ExpandableCard className=\"col-span-full\" title={venue.address} key={venue.id}>\n                <MetersHistory venueId={venue.id} />\n              </ExpandableCard>\n            ))}\n          </>\n        ))}\n      </ContentWrapper>\n    </Layout>\n  );\n};\n\nexport default TenantMetersPage;\n", "import * as React from 'react';\nimport { useState } from 'react';\nimport { useIntl } from 'react-intl';\nimport { isPast } from 'date-fns';\nimport MetersCard from './MetersCard/MetersCard';\nimport { useGetMetersQuery } from '../../../../api/appApi';\nimport { translateApiToMeterGroups } from '../../../../api/modules/meters/metersTranslator';\nimport OutdatedMatersCard from './MetersCard/DisabledCard';\nimport useMessages from '../../../../hooks/useMessages';\nimport { usePermissions } from '../../../../hooks/usePermissions';\nimport { ApiMeterRequestParams } from '../../../../api/modules/meters/metersTypes';\nimport Spinner from '../../../../components/Spinner/Spinner';\nimport { FormNotice } from '../../../../components/FormNotice/FormNotice';\n\ninterface Props {\n  venueId: string,\n}\n\nconst MetersList = ({ venueId }: Props) => {\n  const queryParams: ApiMeterRequestParams = { measurement_required: true, venues_ids: venueId };\n  const [displayMeasurementSentNotice, setDisplayMeasurementSentNotice] = useState(false);\n  const { data, isLoading } = useGetMetersQuery(queryParams, { refetchOnMountOrArgChange: true });\n  const { hasPermission, checkPermission } = usePermissions();\n  const getMessage = useMessages();\n  const intl = useIntl();\n  const metersGroups = data ? translateApiToMeterGroups(data, intl) : undefined;\n\n  checkPermission('meters_list');\n\n  const displayFormSuccessNotice = () => setDisplayMeasurementSentNotice(true);\n\n  return (\n    <div className=\"col-span-full\">\n      {isLoading && <Spinner className=\"m-auto mt-5\" />}\n      {metersGroups && metersGroups.map((metersGroup) => {\n        if (metersGroup.find((meter) => !meter.canUpdate) || !hasPermission('meters_measurement_add')) {\n          return (\n            <OutdatedMatersCard\n              meterGroup={metersGroup}\n              key={`g-${metersGroup[0].meterId}`}\n              label={metersGroup.find((meter) => isPast(meter.validUntil))\n                ? getMessage('local.meters.outdated')\n                : getMessage('local.meters.cannotSend')}\n            />\n          );\n        }\n        return <MetersCard key={`g-${metersGroup[0].meterId}`} meterGroup={metersGroup} onSuccess={displayFormSuccessNotice} />;\n      })}\n      {displayMeasurementSentNotice && <FormNotice noticeClassName=\"col-span-full\" type=\"success\" message={getMessage('local.meters.measurementSent')} />}\n      {metersGroups && metersGroups.length === 0 && (\n        <div>\n          {getMessage('local.meters.noMeters')}\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport default MetersList;\n", "import * as React from 'react';\nimport { useMemo, useState, useEffect } from 'react';\nimport { format } from 'date-fns';\nimport { useForm, FormProvider } from 'react-hook-form';\nimport Button from '../../../../../components/Button/Button';\nimport Card from '../../../../../components/Card/Card';\nimport useMessages from '../../../../../hooks/useMessages';\nimport { usePostMeasurementsMutation } from '../../../../../api/appApi';\nimport { translateFormFieldsToApi } from '../../../../../api/modules/meters/metersTranslator';\nimport { MetersFormFields, ReadingRequest } from '../../../../../api/modules/meters/metersTypes';\nimport MetersUpdatePopup from '../MetersUpadatePopup/MetersUpdatePopup';\nimport MeterTitleLocationContainer from '../../../MeterTitleLocationContainer/MeterTitleLocationContainer';\nimport MeterReadingInput from '../../../MeterReadingInput/MeterReadingInput';\nimport { FormNotice } from '../../../../../components/FormNotice/FormNotice';\nimport Tooltip from '../../../../../components/Tooltip/Tooltip';\n\ninterface Props {\n  meterGroup: ReadingRequest[],\n  onSuccess: () => void,\n}\n\nconst MetersCard = ({ meterGroup, onSuccess }: Props) => {\n  const [isPopupOpen, setIsPopupOpen] = useState(false);\n  const getMessage = useMessages();\n  const [postMeasurements, result] = usePostMeasurementsMutation();\n  const methods = useForm<MetersFormFields>({\n    mode: 'onTouched',\n  });\n  const validUntil = useMemo(\n    () => Math.min(...meterGroup.map((reading) => reading.validUntil.getTime())),\n    [meterGroup],\n  );\n\n  const dataSent = result.status === 'fulfilled' || result.status === 'rejected';\n  const dataRejected = result.status === 'rejected';\n\n  const togglePopup = () => {\n    setIsPopupOpen(!isPopupOpen);\n  };\n\n  const sendMeasurements = (measurements: MetersFormFields) => {\n    if (dataSent) {\n      return;\n    }\n    togglePopup();\n    postMeasurements(translateFormFieldsToApi(measurements));\n  };\n\n  const handleSubmit = () => {\n    methods.handleSubmit(sendMeasurements)();\n  };\n\n  useEffect(() => {\n    if (result.isSuccess) {\n      onSuccess();\n    }\n  }, [result]);\n\n  return (\n    <Card className=\"mb-4\">\n      {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n      <FormProvider {...methods}>\n        <form onSubmit={(e) => {\n          e.preventDefault();\n          togglePopup();\n        }}\n        >\n          <div>\n            {meterGroup.map((meter) => (\n              <div key={meter.meterId} className=\"flex mobile:flex-col border-b justify-between w-full last:border-b-0 py-6 first:pt-0 mobile:items-start items-center last:mb-6 mobile:py-0\">\n                <MeterTitleLocationContainer\n                  meter={meter}\n                />\n                {dataSent ? (\n                  <div className=\"text-text-md-semibold mobile:mt-6\">\n                    {dataRejected && (<FormNotice type=\"error\" message={getMessage('local.meters.measurementSendingError')} />)}\n                  </div>\n                ) : (<MeterReadingInput measurementUnit={meter.measurementUnit} meterId={meter.meterId} meterType={meter.meterType} />)}\n              </div>\n            ))}\n          </div>\n          <div className=\"flex flex-wrap justify-end mr-6 items-center mobile:justify-start mobile:mr-0\">\n            <div className=\"mr-2 text-typography-dark text-text-md-semibold mobile:mb-3\">\n              {`${getMessage('local.meters.fillBefore')} ${format(validUntil, 'dd.MM.yyyy')}`}\n            </div>\n\n            <Tooltip content={getMessage('local.meters.measurementDisabledTooltip')}>\n              <Button\n                styleType=\"primary\"\n                disabled={dataSent || !methods.formState.isValid}\n                onClick={togglePopup}\n                className=\"mobile:w-full\"\n                ariaLabel={!methods.formState.isValid ? 'Wprowad\u017A warto\u015B\u0107 odczytu aby aktywowa\u0107 przycisk' : 'Wy\u015Blij odczyt'}\n              >\n                {getMessage('send')}\n              </Button>\n            </Tooltip>\n          </div>\n          <MetersUpdatePopup\n            isOpen={isPopupOpen}\n            meterGroup={meterGroup}\n            onAccept={handleSubmit}\n            onClose={togglePopup}\n            values={methods.getValues()}\n          />\n        </form>\n      </FormProvider>\n    </Card>\n  );\n};\n\nexport default MetersCard;\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { MetersFormFields, ReadingRequest } from '../../../../../api/modules/meters/metersTypes';\nimport useMessages from '../../../../../hooks/useMessages';\nimport Dialog from '../../../../../components/Dialog/Dialog';\nimport { formatNumber } from '../../../../../../utils/formatters';\nimport calculateChange from '../../../../../../utils/calculateReadingChange';\n\ninterface Props {\n  isOpen: boolean,\n  meterGroup: ReadingRequest[],\n  onAccept: () => void,\n  onClose: () => void,\n  values: MetersFormFields,\n}\n\nconst MetersUpdatePopup = ({\n  isOpen, meterGroup, onAccept, onClose, values,\n}: Props) => {\n  const getMessage = useMessages();\n\n  return (\n    <Dialog\n      isOpen={isOpen}\n      acceptButtonText={getMessage('confirm')}\n      onClose={onClose}\n      closeButtonText={getMessage('cancel')}\n      onAccept={onAccept}\n      labelledBy=\"confirmMetersReadingsPopUpTitle\"\n      focusOnBtn\n    >\n      <h3 className=\"visually-hidden\" id=\"confirmMetersReadingsPopUpTitle\">\n        Potwierd\u017A wprowadzon\u0105 warto\u015B\u0107 odczytu\n      </h3>\n      <table className={classNames('mobile:w-full mobile:table-fixed w-[75%] border-x-collapse border-y-separate mb-3 text-center p-4')}>\n        <thead>\n          <tr className={classNames('text-text-lg-medium text-typography-dark border-b border-stroke-grey-300')}>\n            <th className={classNames('h-14 text-left')}>\n              {getMessage('local.meters.meter')}\n            </th>\n            <th className={classNames('h-14 mobile:px-1 px-8')}>\n              {`${getMessage('local.meters.newReading')} `}\n            </th>\n            <th className={classNames('h-14 text-right')}>\n              {getMessage('local.meters.previousReading')}\n            </th>\n          </tr>\n        </thead>\n        <tbody className={classNames('mobile:overflow-y-auto')}>\n          {meterGroup.map(({\n            meterType, meterCode, meterId, lastValue, measurementUnit,\n          }) => {\n            const newValue = values[meterId];\n            const { change, percentageChange } = calculateChange(lastValue, newValue);\n\n            return (\n              <tr key={meterId} className=\"border-b border-stroke-grey-300 last:border-b-0 last:pb-0 whitespace-pre-wrap\">\n                <td className=\"text-left py-3\">\n                  <p className=\"text-title-semibold text-typography-black\">{meterType}</p>\n                  <p className=\"text-text-md-medium text-typography-dark\">{meterCode}</p>\n                </td>\n                <td className=\"py-3 mobile:px-1\"><p className=\"text-title-semibold\">{`${newValue && formatNumber(newValue)} ${measurementUnit}`}</p></td>\n                <td className=\"text-right py-3\">\n                  <p className=\"text-title-semibold text-typography-black\">{`${(typeof lastValue === 'number') ? formatNumber(lastValue) : '-'} ${measurementUnit}`}</p>\n                  {lastValue !== undefined && (\n                    <p className=\"text-text-md-medium text-typography-dark\">\n                      {!!percentageChange && `${formatNumber((percentageChange).toFixed(2))}%`}\n                    </p>\n                  )}\n                  <p className=\"text-text-md-medium text-typography-dark\">\n                    {`(${formatNumber(change)} ${measurementUnit}) ${change > 0 ? '\u2191' : '\u2193'}`}\n                  </p>\n                </td>\n              </tr>\n            );\n          })}\n        </tbody>\n      </table>\n    </Dialog>\n  );\n};\n\nexport default MetersUpdatePopup;\n", "const calculateChange = (initialValue: number | undefined, finalValue: number): {\n  percentageChange?: number,\n  change: number,\n} => {\n  let percentageChange;\n  let change;\n  if (initialValue) {\n    percentageChange = ((finalValue - initialValue) / initialValue) * 100;\n    change = finalValue - initialValue;\n  } else {\n    change = finalValue;\n  }\n  return ({\n    percentageChange,\n    change,\n  });\n};\n\nexport default calculateChange;\n", "import * as React from 'react';\nimport useMessages from '../../../hooks/useMessages';\nimport capitalize, { formatNumber } from '../../../../utils/formatters';\n\ninterface Props {\n  meterType?: string,\n  meterCode?: string,\n  meterLocation?: string | null,\n  measurementUnit?: string,\n  lastValue?: number,\n}\n\nconst MeterTitleLocationContainer = ({ meter }: { meter: Props }) => {\n  const getMessage = useMessages();\n  const {\n    meterType, lastValue, measurementUnit, meterCode, meterLocation,\n  } = meter;\n\n  return (\n    <div className=\"flex flex-wrap\">\n      <h4 className=\"inline text-header-sm mr-4 mobile:mb-3 mobile:mr-2 tablet:mb-2\" aria-label={`Rodzaj licznika - ${meterType}`}>{meterType}</h4>\n      <div className=\"flex flex-wrap text-text-md-medium text-typography-dark border rounded px-1 h-fit w-fit mr-4\">\n        <span className=\"inline-block mr-1\">\n          {`${meterLocation ? `${getMessage('local.meters.location')}: ${capitalize(meterLocation)} / ` : ''}`}\n        </span>\n        <span className=\"inline-block mr-1\">{` nr: ${meterCode}`}</span>\n        {lastValue && (\n          <span className=\"inline-block\">{` / ${getMessage('local.meters.previousReading')}: ${formatNumber(lastValue)} ${measurementUnit}`}</span>\n        )}\n      </div>\n    </div>\n  );\n};\nexport default MeterTitleLocationContainer;\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport useMessages from '../../../hooks/useMessages';\nimport { FormInput } from '../../../components/FormInputs';\n\ninterface Props {\n  meterId: string, measurementUnit: string, divClassName?: string, meterType: string,\n}\n\nconst MeterReadingInput = ({\n  meterId, measurementUnit, divClassName, meterType,\n}: Props) => {\n  const getMessage = useMessages();\n  const decimalTotal8Regex = \"/^(?:\\d{1,8}|\\d{1,7}\\.\\d{1}|\\d{1,6}\\.\\d{1,2}|\\d{1,5}\\.\\d{1,3}|\\d{1,4}\\.\\d{1,4})$/\"; //TODO - apply regex\n\n  return (\n    <div className={classNames('flex items-center w-52 mobile:mt-6', divClassName)}>\n      <label htmlFor={meterId} className=\"text-text-md-semibold mr-2\">{getMessage('local.meters.reading')}</label>\n      <FormInput\n        className=\"w-full mr-2\"\n        inputClassName=\"w-full\"\n        id={meterId}\n        type=\"number\"\n        options={{ required: true, min: { value: 0, message: getMessage('local.meters.error.minValue') } }}\n        ariaLabel={`Wprowad\u017A odczyt dla licznika ${meterType}`}\n      />\n      <span className=\"text-text-md-semibold w-6\">{measurementUnit}</span>\n    </div>\n  );\n};\n\nexport default MeterReadingInput;\n", "import * as React from 'react';\nimport Card from '../../../../../components/Card/Card';\nimport Button from '../../../../../components/Button/Button';\nimport useMessages from '../../../../../hooks/useMessages';\nimport { ReadingRequest } from '../../../../../api/modules/meters/metersTypes';\nimport MeterTitleLocationContainer from '../../../MeterTitleLocationContainer/MeterTitleLocationContainer';\n\ninterface Props {\n  meterGroup: ReadingRequest[],\n  label?: string,\n}\n\nconst DisabledCard = ({ meterGroup, label }: Props) => {\n  const getMessage = useMessages();\n\n  return (\n    <Card className=\"mb-4\">\n      <div>\n        {meterGroup.map((meter) => (\n          <div key={meter.meterId} className=\"flex flex-wrap border-b w-full last:border-b-0 py-6 first:pt-0 last:mb-6\">\n            <MeterTitleLocationContainer meter={meter} />\n          </div>\n        ))}\n      </div>\n      <div className=\"flex flex-wrap justify-between items-center mr-2\">\n        <div className=\"text-text-md-semibold mobile:mb-3\">\n          {label}\n        </div>\n        <Button\n          className=\"mr-4 mobile:w-full mobile:mr-0\"\n          styleType=\"primary\"\n          disabled\n          onClick={() => {}}\n          ariaLabel=\"Nie przes\u0142ano odczytu w wymaganym terminie\"\n        >\n          {getMessage('local.meters.unsent')}\n        </Button>\n      </div>\n    </Card>\n  );\n};\n\nexport default DisabledCard;\n", "import * as React from 'react';\nimport { useIntl } from 'react-intl';\nimport { useGetMetersQuery } from '../../../../api/appApi';\nimport { usePermissions } from '../../../../hooks/usePermissions';\nimport { translateApiToMetersList } from '../../../../api/modules/meters/metersTranslator';\nimport MetersHistoryCard from './MetersHistoryCard/MetersHistoryCard';\nimport { ApiMeterRequestParams } from '../../../../api/modules/meters/metersTypes';\nimport useFilters from '../../../../hooks/useFilters';\nimport useMessages from '../../../../hooks/useMessages';\nimport Spinner from '../../../../components/Spinner/Spinner';\n\ninterface Props {\n  venueId: string,\n}\n\nconst MetersHistory = ({ venueId }: Props) => {\n  const { filterValues } = useFilters('metersHistory');\n  const queryParams: ApiMeterRequestParams = { ...filterValues, venues_ids: venueId };\n  const { data, isLoading, isSuccess } = useGetMetersQuery(queryParams);\n  const { checkPermission } = usePermissions();\n  const intl = useIntl();\n  const meters = data ? translateApiToMetersList(data, intl) : [];\n  const getMessage = useMessages();\n\n  checkPermission('meters_list');\n\n  return (\n    <div className=\"col-span-full\">\n      {isLoading && <Spinner className=\"m-auto mt-5\" />}\n      {isSuccess && meters && meters.length === 0\n        ? (<div>{getMessage('filters.noResults')}</div>)\n        : meters.map((meter) => <MetersHistoryCard meter={meter} key={meter.meterId} />)}\n    </div>\n  );\n};\n\nexport default MetersHistory;\n", "import * as React from 'react';\nimport format from 'date-fns/format';\nimport { Meter } from '../../../../../api/modules/meters/metersTypes';\nimport ExpandableCard from '../../../../../components/ExpandableCard/ExpandableCard';\nimport { appApi } from '../../../../../api/appApi';\nimport HistoryCardHeader from './HistoryCardHeader';\nimport Table, {\n  TableBody, TableBodyCell,\n  TableBodyRow,\n  TableHeader,\n  TableHeaderCell,\n  TableHeaderRow,\n} from '../../../../../components/Table/Table';\nimport Chip from '../../../../../components/Chip/Chip';\nimport useMessages from '../../../../../hooks/useMessages';\nimport { formatNumber } from '../../../../../../utils/formatters';\n\ninterface Props {\n  meter: Meter,\n}\n\nconst MetersHistoryCard = ({ meter }: Props) => {\n  const getMessage = useMessages();\n  const [trigger, { data }] = appApi.endpoints.getMeterHistory.useLazyQuery();\n\n  return (\n    <ExpandableCard\n      className=\"mb-4 border\"\n      title={<HistoryCardHeader meterLocation={meter.meterLocation} meterCode={meter.meterCode} meterType={meter.meterType} />}\n      onOpen={() => trigger(meter.meterId, true)}\n    >\n      {data && data.find((measurement) => !!measurement.value) ? (\n        <Table className=\"col-span-full py-0\">\n          <TableHeader>\n            <TableHeaderRow>\n              <TableHeaderCell>{getMessage('local.meters.history.date')}</TableHeaderCell>\n              <TableHeaderCell>{getMessage('local.meters.history.value')}</TableHeaderCell>\n              <TableHeaderCell>{getMessage('local.meters.history.source')}</TableHeaderCell>\n            </TableHeaderRow>\n          </TableHeader>\n          <TableBody>\n            {data.filter((measurement) => !!measurement.value).map((measurement) => (\n              <TableBodyRow key={`${measurement.value}-${measurement.date}`}>\n                <TableBodyCell>\n                  <Chip chipStyle=\"ghost\" className=\"w-fit\">\n                    {format(new Date(measurement.date), 'dd-MM-yyyy')}\n                  </Chip>\n                </TableBodyCell>\n                <TableBodyCell>{`${formatNumber(measurement.value)} ${meter.measurementUnit}`}</TableBodyCell>\n                <TableBodyCell>{measurement.source}</TableBodyCell>\n              </TableBodyRow>\n            ))}\n          </TableBody>\n        </Table>\n      ) : getMessage('local.meters.history.noData')}\n    </ExpandableCard>\n  );\n};\n\nexport default MetersHistoryCard;\n", "import * as React from 'react';\nimport MeterTitleLocationContainer from '../../../MeterTitleLocationContainer/MeterTitleLocationContainer';\n\ninterface Props {\n  meterType: string,\n  meterLocation?: string | null,\n  meterCode?: string,\n}\n\nconst HistoryCardHeader = ({ meterType, meterLocation, meterCode }: Props) => (\n  <div className=\"flex flex-wrap\">\n    <MeterTitleLocationContainer\n      meter={{\n        meterType, meterCode, meterLocation,\n      }}\n    />\n  </div>\n);\n\nexport default HistoryCardHeader;\n", "import * as React from 'react';\nimport { useMemo } from 'react';\nimport { useIntl } from 'react-intl';\nimport { apiMeterType } from '../../../../api/modules/meters/metersTypes';\nimport { translateMeterType } from '../../../../api/modules/meters/metersTranslator';\nimport Filters from '../../../../components/Filters/Filters';\n\nconst MetersHistoryFilters = () => {\n  const intl = useIntl();\n\n  const typeOptionValues = useMemo(() => apiMeterType.map((type) => ({\n    value: type as string,\n    optionLabel: translateMeterType(type, intl).type,\n  })), []);\n\n  return (\n    <Filters\n      filterId=\"metersHistory\"\n      filterFields={[\n        {\n          type: 'multiselect',\n          id: 'type',\n          label: intl.formatMessage({ id: 'local.meters.filters.type' }),\n          selectOptions: typeOptionValues,\n        },\n        {\n          type: 'text',\n          id: 'location',\n          label: intl.formatMessage({ id: 'local.meters.filters.location' }),\n          ariaLabel: 'Szukaj po lokalizacji licznika',\n        },\n      ]}\n    />\n  );\n};\n\nexport default MetersHistoryFilters;\n", "import * as React from 'react';\nimport { useState } from 'react';\nimport { useAppSelector } from '../../../../hooks/reduxHooks';\nimport useMessages from '../../../../hooks/useMessages';\nimport { usePermissions } from '../../../../hooks/usePermissions';\nimport PageHeader from '../../../../components/Layout/PageHeader';\nimport ContentWrapper from '../../../../components/ContentWrapper/ContentWrapper';\nimport Layout from '../../../../components/Layout/Layout';\nimport Button from '../../../../components/Button/Button';\nimport MetersVenuesList from './MetersVenuesList';\nimport MetersVenuesFilters from './MetersVenuesFilters';\nimport FiltersIcon from '../../../../icons/filters.svg';\n\nconst MetersVenuesListPage = () => {\n  const getMessage = useMessages();\n  const { checkPermission, checkRoleType, checkModuleEnabled } = usePermissions();\n  const hasFilterSet = useAppSelector((state) => !!state.app.filters.find((filter) => filter.id === 'metersVenuesList'));\n  const [filtersOpen, setFiltersOpen] = useState(hasFilterSet);\n\n  checkRoleType('worker');\n  checkPermission('meters_list');\n  checkModuleEnabled('meters');\n\n  return (\n    <Layout currentPage=\"local.meters\">\n      <PageHeader pageTitle={getMessage('meters.venuesList')} currentPage=\"local.meters\">\n        <Button\n          Icon={FiltersIcon}\n          size=\"small\"\n          styleType=\"secondary\"\n          onClick={() => setFiltersOpen((filtersOpen) => !filtersOpen)}\n          className=\"h-8 py-1\"\n        >\n          {getMessage('filters')}\n        </Button>\n      </PageHeader>\n      {filtersOpen && <MetersVenuesFilters />}\n      <ContentWrapper>\n        <MetersVenuesList />\n      </ContentWrapper>\n    </Layout>\n  );\n};\n\nexport default MetersVenuesListPage;\n", "import * as React from 'react';\nimport format from 'date-fns/format';\nimport classNames from 'classnames';\nimport { useMemo, useEffect } from 'react';\nimport { useGetMetersVenuesListQuery } from '../../../../api/appApi';\nimport ResponsiveTable, { ResponsiveTableHeader, ResponsiveTableBody, ResponsiveTableBodyRow } from '../../../../components/Table/ResponsiveTable';\nimport { TableBodyCell } from '../../../../components/Table/Table';\nimport Chip from '../../../../components/Chip/Chip';\nimport { TableId } from '../../../../store/appSlice';\nimport usePagination from '../../../../hooks/usePagination';\nimport PaginationControls from '../../../../components/Table/PaginationControls';\nimport useFilters from '../../../../hooks/useFilters';\nimport useHomeownerAssociationsMode from '../../../../hooks/useHomeownerAssociationsMode';\nimport TableContentPlaceholder from '../../../../components/Table/TableContentPlaceholder';\nimport useSortParams from '../../../../hooks/useSortParams';\nimport useTenantlessMode from '../../../../hooks/useTenantlessMode';\n\nconst MetersVenuesList = () => {\n  const [selectedPage, setSelectedPage] = usePagination('metersVenuesList');\n  const { filterValues } = useFilters('metersVenuesList');\n  const { sortParamsValues } = useSortParams('metersVenuesList');\n\n  const filters = { ...filterValues };\n  const hoaMode = useHomeownerAssociationsMode();\n  const tenantlessMode = useTenantlessMode();\n\n  useEffect(() => {\n    setSelectedPage(1);\n  }, []);\n\n  const { data } = useGetMetersVenuesListQuery({\n    ...filters,\n    ...sortParamsValues,\n    page: selectedPage.toString(),\n  });\n\n  const ids = data?.venues.map(({ venueId }) => venueId) || [];\n  const columnLabels = useMemo(() => {\n    const columns = [\n      ...tenantlessMode ? [] : [\n        { label: 'meters.venuesList.columns.tenantExternalId', id: 'tenants_tenants.external_id' },\n        { label: 'meters.venuesList.columns.name', id: 'tenants_tenants.name' },\n      ],\n      { label: 'meters.venuesList.columns.venueCode', id: 'tenants_venues.code' },\n      { label: 'meters.venuesList.columns.city' },\n      { label: 'meters.venuesList.columns.address' },\n      ...tenantlessMode ? [] : [{ label: 'meters.venuesList.columns.residencyDates' }],\n    ];\n    if (hoaMode) {\n      columns.push({ label: 'meters.venuesList.columns.homeownerAssociation' });\n    }\n    return columns;\n  }, [hoaMode, tenantlessMode]);\n  return (\n    <>\n      <ResponsiveTable className=\"col-span-full\">\n        {data?.venues && data?.venues.length === 0 ? <TableContentPlaceholder /> : (\n          <>\n            <ResponsiveTableHeader ids={ids} columnLabels={columnLabels} tableName={'metersVenuesList' as TableId} />\n            <ResponsiveTableBody>\n              {data?.venues.map(({\n                address, city, code, homeownerAssociation, venueId, measurementRequired, residencyFrom, residencyUntil, tenant, tenantExternalId,\n              }) => (\n                <ResponsiveTableBodyRow\n                  key={venueId}\n                  className=\"border-b last:border-b-0 border-separate\"\n                  clickable={({\n                    href: measurementRequired\n                      ? `/liczniki/lokale/${venueId}/do-odczytu`\n                      : `/liczniki/lokale/${venueId}`,\n                    ariaLabel: `Przejd\u017A do ${measurementRequired ? 'podstrony wprowadzania odczyt\u00F3w licznik\u00F3w' : 'listy poprzednich odczyt\u00F3w licznik\u00F3w'} dla lokalu ${code} ${address}${tenantlessMode ? '' : ` dla lokatora ${tenant}`}`,\n                  })}\n                >\n                  {!tenantlessMode && (\n                  <TableBodyCell\n                    className={classNames(\n                      { \"before:content-[' '] before:-ml-4 before:bg-main before:w-[8px] before:h-[8px] before:rounded-full before:shrink-0 flex items-center\": measurementRequired },\n                    )}\n                  >\n                    <div className={`${measurementRequired && 'ml-2'}`}>{tenantExternalId}</div>\n                  </TableBodyCell>\n                  )}\n                  {!tenantlessMode && (\n                  <TableBodyCell>{tenant}</TableBodyCell>\n                  )}\n                  <TableBodyCell>{code}</TableBodyCell>\n                  <TableBodyCell>{city}</TableBodyCell>\n                  <TableBodyCell>{address}</TableBodyCell>\n                  {!tenantlessMode && (\n                  <TableBodyCell>\n                    <Chip chipStyle=\"ghost\" className=\"w-fit\">\n                      {residencyFrom && format(new Date(residencyFrom), 'dd-MM-yyyy')}\n                      {residencyUntil && ` - ${format(new Date(residencyUntil), 'dd-MM-yyyy')}`}\n                    </Chip>\n                  </TableBodyCell>\n                  )}\n                  {hoaMode && (\n                  <TableBodyCell>\n                    {homeownerAssociation}\n                  </TableBodyCell>\n                  )}\n                </ResponsiveTableBodyRow>\n              ))}\n            </ResponsiveTableBody>\n          </>\n        )}\n      </ResponsiveTable>\n      {data?.metadata && (\n      <PaginationControls\n        className=\"col-span-full\"\n        selectedPage={selectedPage}\n        setSelectedPage={setSelectedPage}\n        paginationMetadata={data.metadata}\n      />\n      )}\n    </>\n  );\n};\n\nexport default MetersVenuesList;\n", "import { useMemo } from 'react';\nimport { useGetCompanySettingsQuery } from '../api/appApi';\n\nconst useHomeownerAssociationsMode = (): boolean => {\n  const { data: settings } = useGetCompanySettingsQuery();\n\n  return useMemo(() => !!settings?.homeownerAssociationsMode, [settings]);\n};\n\nexport default useHomeownerAssociationsMode;\n", "import * as React from 'react';\nimport { useMemo } from 'react';\nimport useMessages from '../../../../hooks/useMessages';\nimport Filters from '../../../../components/Filters/Filters';\nimport useHomeownerAssociationsMode from '../../../../hooks/useHomeownerAssociationsMode';\nimport { FilterConfig } from '../../../../components/FilterInput/FilterInput';\nimport useTenantlessMode from '../../../../hooks/useTenantlessMode';\n\nconst MetersVenuesFilters = () => {\n  const getMessage = useMessages();\n  const hoaMode = useHomeownerAssociationsMode();\n  const tenantlessMode = useTenantlessMode();\n\n  const statusOptionValues = [\n    {\n      value: 'true',\n      optionLabel: getMessage('meters.venuesList.filters.status.measurementRequired'),\n    },\n    {\n      value: 'false',\n      optionLabel: getMessage('meters.venuesList.filters.status.measurementProvided'),\n    },\n  ];\n\n  const filtersFields: FilterConfig[] = useMemo(() => {\n    const filters: FilterConfig[] = [\n      {\n        type: 'select',\n        id: 'measurement_required',\n        label: getMessage('meters.venuesList.filters.status'),\n        selectOptions: statusOptionValues,\n      },\n      ...tenantlessMode ? [] : [{\n        type: 'text',\n        id: 'tenant_search',\n        label: getMessage('meters.venuesList.filters.tenantNameID'),\n        ariaLabel: 'Szukaj po imieniu i nazwisku lub ID lokatora',\n      } as FilterConfig],\n      {\n        type: 'text',\n        id: 'venue_search',\n        label: getMessage('meters.venuesList.filters.venueAddressCode'),\n        ariaLabel: 'Szukaj po adresie budynku lub kodzie lokalu',\n      },\n    ];\n\n    if (hoaMode) {\n      filters.push({\n        type: 'text',\n        id: 'homeowner_association_search',\n        label: getMessage('meters.venuesList.filters.homeownerAssoctiation'),\n        ariaLabel: 'Szukaj po nazwie wsp\u00F3lnoty',\n      });\n    }\n\n    return filters;\n  }, [hoaMode, tenantlessMode]);\n\n  return (\n    <Filters\n      filterId=\"metersVenuesList\"\n      filterFields={filtersFields}\n    />\n  );\n};\n\nexport default MetersVenuesFilters;\n", "import * as React from 'react';\nimport { useIntl } from 'react-intl';\nimport { useMatch, useParams } from 'react-router';\nimport { useState } from 'react';\nimport MetersCard from './EmployeeMetersCard/EmployeeMetersCard';\nimport { useGetMetersQuery } from '../../../../api/appApi';\nimport { translateApiToMeterGroups } from '../../../../api/modules/meters/metersTranslator';\nimport useMessages from '../../../../hooks/useMessages';\nimport { usePermissions } from '../../../../hooks/usePermissions';\nimport Layout from '../../../../components/Layout/Layout';\nimport ContentWrapper from '../../../../components/ContentWrapper/ContentWrapper';\nimport PageHeader from '../../../../components/Layout/PageHeader';\nimport DisabledCard from './EmployeeMetersCard/EmployeeDisabledCard';\nimport MeterListDesktopInfoCard from './MeterListInfoCard/MeterListDesktopInfoCard';\nimport MeterListMobileInfoCard from './MeterListInfoCard/MeterListMobileInfoCard';\nimport { FormNotice } from '../../../../components/FormNotice/FormNotice';\n\nconst EmployeeMetersListPage = () => {\n  const params = useParams();\n  const { id } = params;\n  const match = useMatch('/liczniki/lokale/:id/do-odczytu');\n\n  const { data } = useGetMetersQuery({ venues_ids: id, measurement_required: !!match || undefined });\n  const [displayMeasurementSentNotice, setDisplayMeasurementSentNotice] = useState(false);\n\n  const { checkPermission, checkModuleEnabled } = usePermissions();\n  const getMessage = useMessages();\n  const intl = useIntl();\n  const metersGroups = data ? translateApiToMeterGroups(data, intl) : undefined;\n\n  checkPermission('meters_list');\n  checkModuleEnabled('meters');\n\n  checkPermission('meters_list');\n\n  const displayFormSuccessNotice = () => setDisplayMeasurementSentNotice(true);\n\n  return (\n    <Layout currentPage=\"local.meters\">\n      <PageHeader\n        pageTitle={getMessage('navigation.local.meters')}\n        currentPage=\"local.meters\"\n        path=\"/liczniki/lokale\"\n      />\n      {id && <MeterListMobileInfoCard id={id} />}\n      <ContentWrapper>\n        {metersGroups && (\n          <div className=\"col-span-full lg:col-span-9\">\n            {displayMeasurementSentNotice && <FormNotice noticeClassName=\"col-span-full\" type=\"success\" message={getMessage('local.meters.measurementSent')} />}\n            {metersGroups.length === 0 ? (\n              getMessage('local.meters.noMeters')\n            ) : (\n              metersGroups.map((metersGroup) => (match\n                ? <MetersCard key={`g-${metersGroup[0].meterId}`} meterGroup={metersGroup} onSuccess={displayFormSuccessNotice} />\n                : <DisabledCard key={`g-${metersGroup[0].meterId}`} meterGroup={metersGroup} />))\n            )}\n          </div>\n        )}\n        {id && <MeterListDesktopInfoCard id={id} />}\n      </ContentWrapper>\n    </Layout>\n  );\n};\n\nexport default EmployeeMetersListPage;\n", "import * as React from 'react';\nimport { useState, useEffect } from 'react';\nimport { useForm, FormProvider } from 'react-hook-form';\nimport Button from '../../../../../components/Button/Button';\nimport Card from '../../../../../components/Card/Card';\nimport useMessages from '../../../../../hooks/useMessages';\nimport { usePostMeasurementsMutation } from '../../../../../api/appApi';\nimport { translateFormFieldsToApi } from '../../../../../api/modules/meters/metersTranslator';\nimport { MetersFormFields, ReadingRequest } from '../../../../../api/modules/meters/metersTypes';\nimport MetersUpdatePopup from '../../../TenantMetersPage/MetersListPage/MetersUpadatePopup/MetersUpdatePopup';\nimport MeterTitleLocationContainer from '../../../MeterTitleLocationContainer/MeterTitleLocationContainer';\nimport { FormNotice } from '../../../../../components/FormNotice/FormNotice';\nimport MeterReadingInput from '../../../MeterReadingInput/MeterReadingInput';\nimport Tooltip from '../../../../../components/Tooltip/Tooltip';\n\ninterface Props {\n  meterGroup: ReadingRequest[],\n  onSuccess: () => void\n}\n\nconst MetersCard = ({ meterGroup, onSuccess }: Props) => {\n  const [isPopupOpen, setIsPopupOpen] = useState(false);\n  const getMessage = useMessages();\n\n  const [postMeasurements, result] = usePostMeasurementsMutation();\n  const methods = useForm<MetersFormFields>({\n    mode: 'onTouched',\n  });\n\n  const dataSent = result.status === 'fulfilled' || result.status === 'rejected';\n  const dataRejected = result.status === 'rejected';\n\n  const togglePopup = () => {\n    setIsPopupOpen(!isPopupOpen);\n  };\n\n  const sendMeasurements = (measurements: MetersFormFields) => {\n    if (dataSent) {\n      return;\n    }\n    togglePopup();\n    postMeasurements(translateFormFieldsToApi(measurements));\n  };\n\n  const handleSubmit = () => {\n    methods.handleSubmit(sendMeasurements)();\n  };\n\n  useEffect(() => {\n    if (result.isSuccess) {\n      onSuccess();\n    }\n  }, [result]);\n\n  return (\n    <Card className=\"mb-4\">\n      {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n      <FormProvider {...methods}>\n        <form onSubmit={(e) => {\n          e.preventDefault();\n          togglePopup();\n        }}\n        >\n          <div>\n            {meterGroup.map((meter) => (\n              <div key={meter.meterId} className=\"border-b w-full last:border-b-0 py-6 first:pt-0\">\n                <MeterTitleLocationContainer meter={meter} />\n                {!meter.canUpdate && (<span className=\"block text-text-md-medium text-typography-dark mb-2 mt-6\">{getMessage('meters.metersList.unsent')}</span>)}\n                {dataSent ? (\n                  <div className=\"text-text-md-semibold mt-6\">\n                    {dataRejected && <FormNotice type=\"error\" message={getMessage('local.meters.measurementSendingError')} />}\n                  </div>\n                ) : (\n                  <MeterReadingInput measurementUnit={meter.measurementUnit} meterId={meter.meterId} meterType={meter.meterType} divClassName=\"mt-4\" />\n                )}\n              </div>\n            ))}\n          </div>\n          <div className=\"flex justify-end\">\n            <Tooltip content={getMessage('local.meters.measurementDisabledTooltip')}>\n            <Button\n              styleType=\"primary\"\n              disabled={dataSent || !methods.formState.isValid}\n              onClick={togglePopup}\n              className=\"mobile:w-full\"\n              ariaLabel={!methods.formState.isValid ? 'Wprowad\u017A warto\u015B\u0107 odczytu aby aktywowa\u0107 przycisk' : 'Wy\u015Blij odczyt'}\n            >\n              {getMessage('send')}\n            </Button>\n            </Tooltip>\n          </div>\n          <MetersUpdatePopup\n            isOpen={isPopupOpen}\n            meterGroup={meterGroup}\n            onAccept={handleSubmit}\n            onClose={togglePopup}\n            values={methods.getValues()}\n          />\n        </form>\n      </FormProvider>\n    </Card>\n  );\n};\n\nexport default MetersCard;\n", "import * as React from 'react';\nimport { ReadingRequest } from '../../../../../api/modules/meters/metersTypes';\nimport Card from '../../../../../components/Card/Card';\nimport MeterTitleLocationContainer from '../../../MeterTitleLocationContainer/MeterTitleLocationContainer';\n\ninterface Props {\n  meterGroup: ReadingRequest[],\n}\n\nconst DisabledCard = ({ meterGroup }: Props) => (\n  <Card className=\"mb-3\">\n    {meterGroup.map((meter) => (\n      <div key={meter.meterId} className=\"flex flex-wrap border-b last:border-b-0 py-6 last:pb-0 first:pt-0 items-center\">\n        <MeterTitleLocationContainer meter={meter} />\n      </div>\n    ))}\n  </Card>\n);\nexport default DisabledCard;\n", "import * as React from 'react';\nimport { useGetVenueDetailsQuery } from '../../../../../api/appApi';\nimport useMessages from '../../../../../hooks/useMessages';\nimport DetailsItemsList from './DetailsItemsList';\nimport DesktopInfoCard from '../../../../../components/InfoCard/DesktopInfoCard/DesktopInfoCard';\n\nconst MeterListDesktopInfoCard = ({ id }: { id: string }) => {\n  const { data } = useGetVenueDetailsQuery(id);\n  const getMessage = useMessages();\n\n  if (!data) return null;\n\n  return (\n    <DesktopInfoCard title={getMessage('meters.metersList.info')} ariaLabel=\"Informacje dotycz\u0105ce lokalu\">\n      <DetailsItemsList data={data} />\n    </DesktopInfoCard>\n  );\n};\n\nexport default MeterListDesktopInfoCard;\n", "import * as React from 'react';\nimport { format } from 'date-fns';\nimport useMessages from '../../../../../hooks/useMessages';\nimport { VenueDetails } from '../../../../../api/modules/venues/venuesTypes';\nimport DetailItem from './DetailItem';\nimport useHomeownerAssociationsMode from '../../../../../hooks/useHomeownerAssociationsMode';\nimport useTenantlessMode from '../../../../../hooks/useTenantlessMode';\n\nconst DetailsItemsList = ({ data }: { data: VenueDetails }) => {\n  const getMessage = useMessages();\n  const hoaMode = useHomeownerAssociationsMode();\n  const tenantlessMode = useTenantlessMode();\n\n  if (!data) return null;\n\n  const residencyFromString = data.residencyFrom ? format(new Date(data.residencyFrom), 'dd-MM-yyyy') : '';\n  const residencyUntilString = data.residencyUntil !== null ? ` - ${format(new Date(data.residencyUntil), 'dd-MM-yyyy')}` : '';\n  const residencyDatesString = `${residencyFromString}${residencyUntilString}`;\n\n  return (\n    <>\n      {!tenantlessMode && <DetailItem label={getMessage('meters.metersList.fullname')} value={data?.tenant} />}\n      {!tenantlessMode && <DetailItem label={getMessage('meters.metersList.id')} value={data?.tenantId} />}\n      <DetailItem label={getMessage('meters.metersList.building')} value={data?.building} />\n      <DetailItem label={getMessage('meters.metersList.venueCode')} value={data?.code} />\n      {!tenantlessMode && <DetailItem label={getMessage('meters.metersList.residencyDates')} value={residencyDatesString} />}\n      {hoaMode && <DetailItem label={getMessage('meters.metersList.homeownerAssociation')} value={data?.homeownerAssociation} />}\n    </>\n  );\n};\n\nexport default DetailsItemsList;\n", "import * as React from 'react';\n\nconst DetailItem = ({ label, value }: { label: string, value: string }) => (\n  <div className=\"mb-2\">\n    <span className=\"mb-1 text-text-md-semibold text-typography-black\">{label}</span>\n    <p className=\"text-text-md-medium text-typography-dark\">{value}</p>\n  </div>\n);\n\nexport default DetailItem;\n", "import * as React from 'react';\nimport { useGetVenueDetailsQuery } from '../../../../../api/appApi';\nimport DetailsItemsList from './DetailsItemsList';\nimport MobileInfoCard from '../../../../../components/InfoCard/MobileInfoCard/MobileInfoCard';\nimport useMessages from '../../../../../hooks/useMessages';\n\ninterface Props {\n  id: string,\n}\n\nconst MeterListMobileInfoCard = ({ id }: Props) => {\n  const { data } = useGetVenueDetailsQuery(id);\n  const getMessage = useMessages();\n\n  if (!data) return null;\n\n  return (\n    <MobileInfoCard title={getMessage('meters.metersList.info')} ariaLabel=\"Informacje dotycz\u0105ce lokalu\">\n      <DetailsItemsList data={data} />\n    </MobileInfoCard>\n  );\n};\n\nexport default MeterListMobileInfoCard;\n", "import * as React from 'react';\nimport { useMemo } from 'react';\nimport { useIntl } from 'react-intl';\nimport {\n  closestIndexTo, isAfter, isBefore, isEqual,\n} from 'date-fns';\nimport useMessages from '../../hooks/useMessages';\nimport { usePermissions } from '../../hooks/usePermissions';\nimport { useAppSelector } from '../../hooks/reduxHooks';\nimport PageHeader from '../../components/Layout/PageHeader';\nimport ContentWrapper from '../../components/ContentWrapper/ContentWrapper';\nimport ResidencyUpdateForm from './ResidencyUpdateForm';\nimport ResidencyUpdateHistory from './ResidencyUpdatesHistory';\nimport UpcomingResidencyUpdate from './UpcomingResidencyUpdate';\nimport Layout from '../../components/Layout/Layout';\nimport { useGetResidencyQuery } from '../../api/appApi';\nimport Card from '../../components/Card/Card';\n\nconst PeopleCountPage = () => {\n  const getMessage = useMessages();\n  const intl = useIntl();\n  const {\n    checkPermission, checkModuleEnabled, checkTenantDataEnabled, isTenantDataEnabled,\n  } = usePermissions();\n  const venueId = useAppSelector((state) => state.app.selectedVenueId);\n  const { data } = useGetResidencyQuery(venueId, { skip: !venueId || !isTenantDataEnabled() });\n\n  checkPermission('tenants_people_entries_manage');\n  checkModuleEnabled('tickets');\n  checkTenantDataEnabled();\n\n  const today = useMemo(() => new Date(), [data]);\n  const closestUpdate = useMemo(() => data?.find((item) => isAfter(new Date(item.validFrom), today)), [data]); // validFrom are always in asc order\n  let closestDateIndex: number | undefined;\n\n  useMemo(() => {\n    if (data) {\n      const dates = data?.map((item) => new Date(item.validFrom));\n      const pastAndTodayDates = dates?.filter((dateItem) => isBefore(dateItem, today) || isEqual(dateItem, today));\n      closestDateIndex = closestIndexTo(today, pastAndTodayDates);\n    }\n  }, [data]);\n\n  const currentTenantsNumber = useMemo(() => (data && closestDateIndex !== undefined ? data[closestDateIndex]?.tenantsNumber : 0), [data]);\n\n  return (\n    <Layout currentPage=\"local.peopleCount\">\n      <PageHeader pageTitle={getMessage('navigation.local.peopleCount')} currentPage=\"local\" />\n      <ContentWrapper>\n        {!venueId\n          ? <p className=\"col-span-12 text-title-sm\">{getMessage('local.tenants.residency.selectVenueWarning')}</p>\n          : (\n            <>\n              <p className=\"col-span-12 text-header-sm\">\n                {intl.formatMessage({ id: 'local.tenants.residency.currentTenantsNumber' }, { currentTenantsNumber })}\n              </p>\n              {closestUpdate && <UpcomingResidencyUpdate data={closestUpdate} />}\n              <div className=\"col-span-12 md:col-span-6\">\n                <p className=\"text-title-semibold mb-5\">\n                  {getMessage('local.tenants.residency.addNew')}\n                  <span className=\"visually-hidden\">zmiany liczby os\u00F3b</span>\n                </p>\n                <ResidencyUpdateForm />\n              </div>\n              <div className=\"col-span-12 md:col-span-6\">\n                <p className=\"text-title-semibold mb-5\">\n                  {getMessage('local.tenants.residency.history')}\n                  <span className=\"visually-hidden\">zmiany liczby os\u00F3b</span>\n                </p>\n                {data && data?.length > 0\n                  ? <ResidencyUpdateHistory data={data} />\n                  : (<Card>{getMessage('local.tenants.residency.noHistory')}</Card>)}\n              </div>\n            </>\n          )}\n      </ContentWrapper>\n    </Layout>\n  );\n};\n\nexport default PeopleCountPage;\n", "import * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport useMessages from '../../hooks/useMessages';\nimport { FormDatePicker, FormInput } from '../../components/FormInputs';\nimport Button from '../../components/Button/Button';\nimport { usePostResidencyUpdateMutation } from '../../api/appApi';\nimport { useAppSelector } from '../../hooks/reduxHooks';\nimport { translateResidencyUpdateToApi } from '../../api/modules/residency/residencyTranslator';\nimport Card from '../../components/Card/Card';\nimport { FormNotice } from '../../components/FormNotice/FormNotice';\n\nconst ResidencyUpdateForm = () => {\n  const getMessage = useMessages();\n  const venueId = useAppSelector((state) => state.app.selectedVenueId);\n  const [showSuccessNotice, setShowSuccessNotice] = useState(false);\n  const [showErrorNotice, setShowErrorNotice] = useState(false);\n  const methods = useForm();\n  const [postResidencyUpdate, { error, status }] = usePostResidencyUpdateMutation();\n\n  useEffect(() => {\n    methods.reset();\n    setShowErrorNotice(false);\n    setShowSuccessNotice(false);\n  }, [venueId]);\n\n  useEffect(() => {\n    if (status === 'fulfilled') {\n      methods.reset();\n      setShowSuccessNotice(true);\n    }\n  }, [status]);\n\n  useEffect(() => setShowErrorNotice(true), [error]);\n\n  const onSubmit = (data: any) => {\n    postResidencyUpdate(translateResidencyUpdateToApi(venueId, data));\n  };\n\n  return (\n    <Card>\n      {showSuccessNotice && <FormNotice type=\"success\" message={getMessage('local.tenants.residency.success')} />}\n      {/* @ts-ignore */}\n      {error && showErrorNotice && <FormNotice type=\"error\" message={error.data?.errors || getMessage('form.error')} />}\n      {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n      <FormProvider {...methods}>\n        <form onSubmit={methods.handleSubmit(onSubmit)} className=\"flex flex-col\">\n          <FormInput\n            id=\"tenantsNumber\"\n            type=\"number\"\n            inputClassName=\"smallRange:w-full\"\n            label={getMessage('local.tenants.residency.tenantsNumber')}\n            options={{\n              valueAsNumber: true,\n              required: getMessage('local.tenants.residency.error.required'),\n              min: { value: 0, message: getMessage('local.tenants.residency.error.minZero') },\n              max: { value: 9999, message: getMessage('local.tenants.residency.error.maxVal') },\n            }}\n          />\n          <FormDatePicker\n            id=\"validFrom\"\n            label={getMessage('local.tenants.residency.validFrom')}\n            required\n            containerClassName=\"smallRange:w-full\"\n            inputClassName=\"smallRange:w-full\"\n          />\n          <Button type=\"submit\" className=\"mt-4 smallRange:w-full\">{getMessage('local.tenants.residency.save')}</Button>\n        </form>\n      </FormProvider>\n    </Card>\n  );\n};\n\nexport default ResidencyUpdateForm;\n", "import * as React from 'react';\nimport format from 'date-fns/format';\nimport useMessages from '../../hooks/useMessages';\nimport Table, {\n  TableHeader, TableHeaderRow, TableHeaderCell, TableBody, TableBodyRow, TableBodyCell,\n} from '../../components/Table/Table';\n\nimport Chip from '../../components/Chip/Chip';\nimport { Residency } from '../../api/modules/residency/residencyTypes';\n\ninterface Props {\n  data: Residency[]\n}\n\nconst ResidencyUpdateHistory = ({ data }: Props) => {\n  const getMessage = useMessages();\n\n  return (\n    (\n      <Table className=\"max-h-64 overflow-y-auto !pt-0\" tabIndex={0}>\n        <TableHeader className=\"sticky top-0 z-20 bg-background-white \">\n          <TableHeaderRow className=\"text-typography-black\">\n            <TableHeaderCell className=\"pt-8 pb-4\">\n              {getMessage('local.tenants.residency.createdAt')}\n            </TableHeaderCell>\n            <TableHeaderCell divClassName=\"flex justify-center pt-8 pb-4\">\n              {getMessage('local.tenants.residency.number')}\n            </TableHeaderCell>\n            <TableHeaderCell divClassName=\"flex items-center justify-end pt-8 pb-4\">\n              {getMessage('local.tenants.residency.fromWhen')}\n            </TableHeaderCell>\n          </TableHeaderRow>\n        </TableHeader>\n        <TableBody>\n          {data?.map(({\n            createdAt, validFrom, tenantsNumber,\n          }) => (\n            <TableBodyRow key={createdAt + validFrom + tenantsNumber} className=\"relative\">\n              <TableBodyCell>\n                <Chip chipStyle=\"ghost\" className=\"w-fit\">\n                  {format(new Date(createdAt), 'dd-MM-yyyy')}\n                </Chip>\n              </TableBodyCell>\n              <TableBodyCell className=\"text-typography-black text-center\">{tenantsNumber}</TableBodyCell>\n              <TableBodyCell className=\"flex items-center justify-end\">\n                <Chip chipStyle=\"ghost\" className=\"w-fit\">\n                  {format(new Date(validFrom), 'dd-MM-yyyy')}\n                </Chip>\n              </TableBodyCell>\n            </TableBodyRow>\n          ))}\n        </TableBody>\n      </Table>\n    )\n  );\n};\n\nexport default ResidencyUpdateHistory;\n", "import * as React from 'react';\nimport { useIntl } from 'react-intl';\nimport { useAppSelector } from '../../hooks/reduxHooks';\nimport Info from '../../icons/info.svg';\nimport { Residency } from '../../api/modules/residency/residencyTypes';\n\nconst UpcomingResidencyUpdate = ({ data: upcomingUpdate }: { data: Residency }) => {\n  const intl = useIntl();\n  const venueName = useAppSelector((state) => state.app.selectedVenueName);\n\n  return (\n    <div className={`p-4 mb-12 col-span-12 border border-main rounded bg-light-100 text-main text-text-lg-medium flex ${!upcomingUpdate && 'hidden'}`}>\n      <div className=\"mr-4 w-12 h-12 bg-light-300 rounded flex justify-center items-center\"><Info /></div>\n      <div className=\"flex flex-col\">\n        <p className=\"pb-2\">\n          {intl.formatMessage({ id: 'local.tenants.residency.upcomingChange' }, { validFrom: upcomingUpdate?.validFrom, tenantsNumber: upcomingUpdate?.tenantsNumber })}\n        </p>\n        <p>{venueName}</p>\n      </div>\n    </div>\n  );\n};\n\nexport default UpcomingResidencyUpdate;\n", "import * as React from 'react';\nimport { useState } from 'react';\nimport useMessages from '../../hooks/useMessages';\nimport Tabs, { TabElement } from '../../components/Tabs/Tabs';\nimport PageHeader from '../../components/Layout/PageHeader';\nimport ContentWrapper from '../../components/ContentWrapper/ContentWrapper';\nimport Layout from '../../components/Layout/Layout';\nimport ProfileForm from './ProfileForm/ProfileForm';\nimport ActivityLog from './ActivityLog/ActivityLog';\nimport Button from '../../components/Button/Button';\nimport { useAppSelector } from '../../hooks/reduxHooks';\nimport ActivityLogFilters from './ActivityLog/ActivityLogFilters';\nimport FiltersIcon from '../../icons/filters.svg';\nimport SettingsForm from './SettingsForm/SettingsForm';\nimport NotificationSettingsForm from './NotificationSettingsForm/NotificationSettingsForm';\nimport { useGetFullUserAccountQuery } from './../../api/appApi';\nimport { usePermissions } from '../../hooks/usePermissions';\nimport { useGetCompanySettingsQuery } from './../../api/appApi';\n\n\ninterface Props {\n  tab: 'profile' | 'settings' | 'activityLog' | 'notificationSetting'\n}\n\nconst ProfilePage = ({ tab } : Props) => {\n  const getMessage = useMessages();\n  const hasFilterSet = useAppSelector((state) => !!state.app.filters.find((filter) => filter.id === 'myActivityLog'));\n  const [filtersOpen, setFiltersOpen] = useState(hasFilterSet);\n  const { data: user } = useGetFullUserAccountQuery();\n  const companySetting = useGetCompanySettingsQuery();\n  const { hasPermission, hasRoleType, isModuleEnabled } = usePermissions();\n  const notificationsAvailable = hasPermission('notifications_list') && companySetting.data?.notificationsModuleEnabled;\n\n  const tabs: TabElement[] = [\n    {\n      label: getMessage('local.profile.user'),\n      path: '/profil',\n    },\n    {\n      label: getMessage('local.profile.theme'),\n      path: '/profil/wyglad',\n    },\n    {\n      label: getMessage('local.profile.activityLog'),\n      path: '/profil/rejestr_zdarzen',\n    }\n  ];\n\n  if(notificationsAvailable && (hasRoleType('worker') || hasRoleType('tenant'))){\n    tabs.push({\n      label: getMessage('local.profile.notificationSetting'),\n      path: '/profil/powiadomienia',\n    })\n  }\n\n  return (\n    <Layout currentPage=\"profile\">\n      <PageHeader pageTitle={getMessage('navigation.profile')} currentPage=\"profile\">\n        {tab === 'activityLog' && (\n        <Button\n          styleType=\"secondary\"\n          size=\"small\"\n          Icon={FiltersIcon}\n          onClick={() => setFiltersOpen((filtersOpen) => !filtersOpen)}\n          className=\"my-6\"\n        >\n          {getMessage('filters')}\n        </Button>\n        )}\n      </PageHeader>\n      <Tabs tabElements={tabs} />\n      {tab === 'activityLog' && filtersOpen && <ActivityLogFilters />}\n      <ContentWrapper>\n        {tab === 'profile' && <ProfileForm />}\n        {tab === 'settings' && <SettingsForm /> }\n        {tab === 'activityLog' && <ActivityLog />}\n        {tab === 'notificationSetting' && <NotificationSettingsForm />}\n      </ContentWrapper>\n    </Layout>\n  );\n};\n\nexport default ProfilePage;\n", "/* eslint-disable react/jsx-props-no-spreading */\n\nimport * as React from 'react';\nimport { useState } from 'react';\nimport { useForm, FormProvider } from 'react-hook-form';\nimport useMessages from '../../../hooks/useMessages';\nimport Card from '../../../components/Card/Card';\nimport Button from '../../../components/Button/Button';\nimport { useGetProfileQuery, usePostProfileMutation, useGetFullUserAccountQuery } from '../../../api/appApi';\nimport { translateApiToProfile, translateProfileToApi } from '../../../api/modules/user/userTranslator';\nimport { FormCheckboxInput, FormInput } from '../../../components/FormInputs';\nimport { UserProfileData } from '../../../api/modules/user/userTypes';\nimport ChangeMyPasswordPopUp from './ChangeMyPasswordPopUp';\nimport { FormNotice } from '../../../components/FormNotice/FormNotice';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport Chip from '../../../components/Chip/Chip';\nimport { EMAIL_REGEX } from '../../../../utils/consts';\nimport { parseRolesFromToken } from '../../../../utils/roleUtils';\n\nconst ProfileForm = () => {\n  const [isDialogOpen, setIsDialogOpen] = useState(false);\n  const [isPasswordChanged, setIsPasswordChanged] = useState(false);\n  const getMessage = useMessages();\n  const { data } = useGetProfileQuery();\n  const { data: user } = useGetFullUserAccountQuery();\n  const [postUserData, result] = usePostProfileMutation();\n  const methods = useForm<UserProfileData>({\n    values: data ? translateApiToProfile(data) : undefined,\n    mode: 'onTouched',\n  });\n  const { hasRoleType } = usePermissions();\n  \n  // Get roles from access token instead of API response\n  const roles = parseRolesFromToken();\n\n  const onSubmit = (data: UserProfileData) => {\n    postUserData(translateProfileToApi(data));\n  };\n\n  const onPasswordChanged = () => {\n    setIsPasswordChanged(true);\n  };\n\n  return (\n    <>\n      <Card className=\"col-span-full\">\n        {isPasswordChanged && <FormNotice type=\"success\" message={getMessage('profile.user.changePassword.success')} />}\n        {result.status === 'fulfilled' && <FormNotice type=\"success\" message={getMessage('profile.user.success')} />}\n        {/* @ts-ignore */}\n        {result.isError && <FormNotice type=\"error\" message={result.error.data.errors || getMessage('form.error')} />}\n        <FormProvider {...methods}>\n          <form onSubmit={methods.handleSubmit(onSubmit)}>\n            <div className=\"w-full text-title-semibold mb-4\">Edytuj profil</div>\n            <section className=\"grid grid-cols-1 md:grid-cols-2 border-b pb-8\">\n              <div className=\"w-full md:w-2/3 grid-span-2 md:grid-span-1 flex flex-col\">\n                <FormInput\n                  className=\"w-full\"\n                  inputClassName=\"w-full\"\n                  id=\"profileId\"\n                  type=\"text\"\n                  label={getMessage('profile.user.id')}\n                  disabled\n                  options={{ required: getMessage('profile.user.error.required') }}\n                />\n                <FormInput\n                  className=\"mt-2 w-full\"\n                  inputClassName=\"w-full\"\n                  id=\"profileName\"\n                  type=\"text\"\n                  label={getMessage('profile.user.name')}\n                  disabled\n                  options={{ required: getMessage('profile.user.error.required') }}\n                />\n                <FormInput\n                  className=\"mt-2 w-full\"\n                  inputClassName=\"w-full\"\n                  id=\"profileEmail\"\n                  type=\"email\"\n                  label={getMessage('profile.user.email')}\n                  options={{\n                    pattern: {\n                      value: EMAIL_REGEX,\n                      message: getMessage('form.email.error.pattern'),\n                    },\n                  }}\n                />\n                <FormInput\n                  className=\"mt-2 w-full\"\n                  inputClassName=\"w-full\"\n                  id=\"profileLogin\"\n                  type=\"text\"\n                  label={getMessage('profile.user.login')}\n                />\n              </div>\n              <div className=\"grid-span-2 md:grid-span-1 flex flex-col\">\n                <FormInput\n                  type=\"tel\"\n                  className=\"mt-2 md:mt-0 w-full md:w-2/3 \"\n                  inputClassName=\"w-full\"\n                  id=\"profilePhoneNumber\"\n                  label={getMessage('profile.user.phone')}\n                  options={{\n                    pattern: {\n                      value: /^[0-9- +]+$/,\n                      message: getMessage('form.phone.error.pattern'),\n                    },\n                  }}\n                />\n                {hasRoleType('tenant') && (\n                  <div className=\"mt-2 grid grid-cols-1 grid-rows-3 md:grid-cols-3 md:grid-rows-2\">\n                    <FormInput\n                      className=\"w-full md:w-2/3 md:col-span-3 md:row-span-1\"\n                      inputClassName=\"w-full\"\n                      id=\"profileAddressStreet\"\n                      type=\"text\"\n                      label={getMessage('profile.user.address')}\n                    />\n                    <FormInput\n                      className=\"mt-2 md:mr-1 md:row-span-2 md:col-span-1\"\n                      id=\"profileAddressPostalCode\"\n                      inputClassName=\"w-full\"\n                      type=\"text\"\n                      placeholder={getMessage('profile.user.postalCode')}\n                      options={{\n                        pattern: {\n                          value: /^[0-9]{2}[-][0-9]{3}/,\n                          message: getMessage('form.postalCode.error.pattern'),\n                        },\n                      }}\n                    />\n                    <FormInput\n                      className=\"mt-2 md:ml-1 md:row-span-2\"\n                      inputClassName=\"w-full\"\n                      id=\"profileAddressCity\"\n                      type=\"text\"\n                      placeholder={getMessage('profile.user.city')}\n                    />\n                  </div>\n                )}\n                <div className=\"mt-6\">\n                  <div className=\"my-2 text-text-lg-semibold\">{getMessage('profile.user.group')}</div>\n                  <div className=\"flex\">\n                    {roles.map((role) => <Chip chipStyle=\"gray\" key={role.name} className=\"mr-1 px-6 py-1 text-sm rounded w-fit\">{getMessage(`permissions.roleType.${role.name}`)}</Chip>)}\n                  </div>\n                </div>\n              </div>\n              <section className=\"mt-8 flex flex-wrap justify-between\">\n                <Button type=\"submit\">{getMessage('save')}</Button>\n              </section>\n            </section>\n            <section className=\"border-b py-8\">\n              <div className=\"w-full mb-4 text-title-semibold\">{getMessage('profile.user.changePassword')}</div>\n              <Button styleType=\"primary\" onClick={() => setIsDialogOpen(true)}>{getMessage('profile.user.changePassword')}</Button>\n            </section>\n\n          </form>\n        </FormProvider>\n      </Card>\n      <ChangeMyPasswordPopUp\n        isOpen={isDialogOpen}\n        onClose={() => setIsDialogOpen(false)}\n        onPasswordChanged={onPasswordChanged}\n      />\n    </>\n  );\n};\n\nexport default ProfileForm;\n", "/* eslint-disable react/jsx-props-no-spreading */\n\nimport * as React from 'react';\nimport { useState, useEffect } from 'react';\nimport { useForm, FormProvider } from 'react-hook-form';\nimport { InputError } from '../../../components/FormInputs/InputLabel';\nimport useMessages from '../../../hooks/useMessages';\nimport { usePostChangePasswordMutation } from '../../../api/appApi';\nimport { translateMyPasswordToApi } from '../../../api/modules/user/userTranslator';\nimport { FormInput } from '../../../components/FormInputs';\nimport { MyNewPasswordData } from '../../../api/modules/user/userTypes';\nimport Dialog from '../../../components/Dialog/Dialog';\nimport { PASSWORD_REGEX } from '../../../../utils/consts';\n\ninterface Props {\n  isOpen: boolean,\n  onClose: () => void,\n  onPasswordChanged: () => void,\n}\nconst ChangeMyPasswordPopUp = ({\n  isOpen, onClose, onPasswordChanged,\n}: Props) => {\n  const getMessage = useMessages();\n  const [postChangePassword, result] = usePostChangePasswordMutation();\n  const methods = useForm<MyNewPasswordData>({ mode: 'onTouched' });\n  const [backendErrors, setBackendErrors] = useState([] as string[]);\n\n  useEffect(() => {\n    if (isOpen) {\n      methods.setFocus('oldPassword');\n    }\n  }, [isOpen]);\n\n  const onSubmit = (data: MyNewPasswordData) => {\n    postChangePassword(translateMyPasswordToApi(data));\n  };\n\n  useEffect(() => {\n    if (result.status === 'fulfilled') {\n      setBackendErrors([]);\n      methods.setValue('oldPassword', '');\n      methods.setValue('newPassword', '');\n      methods.setValue('confirmNewPassword', '');\n      onPasswordChanged();\n      onClose();\n    } else if (result.status === 'rejected') {\n      // @ts-ignore\n      const errors = result.error?.data?.errors || [];\n      setBackendErrors(Array.isArray(errors) ? errors : [errors]);\n    }\n  }, [result]);\n\n  const handleSubmit = () => {\n    methods.handleSubmit(onSubmit)();\n  };\n\n  return (\n    <Dialog isOpen={isOpen} onAccept={handleSubmit} onClose={onClose} submitButton preventCloseOnAccept className=\"w-full\" labelledBy=\"changeMyPasswordPopUpTitle\">\n      <FormProvider {...methods}>\n        <h2 className=\"border-b w-full pb-8 text-center text-header-sm\" id=\"changeMyPasswordPopUpTitle\">Zmie\u0144 has\u0142o</h2>\n        <form\n          onSubmit={methods.handleSubmit(onSubmit)}\n          className=\"flex flex-col my-7 w-full items-center\"\n        >\n          <FormInput\n            type=\"password\"\n            className=\"mobile:w-full w-2/3\"\n            inputClassName=\"w-full\"\n            id=\"oldPassword\"\n            label={getMessage('profile.user.changePassword.oldPassword')}\n            options={{ required: getMessage('profile.user.changePassword.oldPassword.error.required') }}\n          />\n          <FormInput\n            type=\"password\"\n            className=\"mobile:w-full w-2/3\"\n            inputClassName=\"w-full\"\n            id=\"newPassword\"\n            label={getMessage('profile.user.changePassword.newPassword')}\n            options={{\n              required: getMessage('profile.user.changePassword.newPassword.error.required'),\n              pattern: {\n                value: PASSWORD_REGEX,\n                message: getMessage('profile.user.changePassword.error.newPassword.pattern'),\n              },\n            }}\n          />\n          <FormInput\n            type=\"password\"\n            className=\"mt-4 mobile:w-full w-2/3\"\n            inputClassName=\"w-full\"\n            id=\"confirmNewPassword\"\n            label={getMessage('profile.user.changePassword.confirmNewPassword')}\n            options={{\n              required: getMessage('profile.user.changePassword.confirmNewPassword.error.required'),\n              pattern: {\n                value: PASSWORD_REGEX,\n                message: getMessage('profile.user.changePassword.error.changePassword.pattern'),\n              },\n            }}\n          />\n          {backendErrors && backendErrors.map((error) => (\n            <InputError key={error} message={error} />\n          ))}\n        </form>\n      </FormProvider>\n    </Dialog>\n  );\n};\n\nexport default ChangeMyPasswordPopUp;\n", "/**\n * Helper utilities for working with user roles\n */\n\nimport { getAccessTokenPayload } from './accessToken';\n\nexport interface RoleInfo {\n  name: string;\n}\n\n/**\n * Parses the role string from the access token into an array of role objects\n * The access token contains roles as a pipe-separated string (e.g., \"admin|worker\")\n * \n * @returns Array of role objects with name property, or empty array if no roles found\n */\nexport function parseRolesFromToken(): RoleInfo[] {\n  const accessTokenPayload = getAccessTokenPayload();\n  \n  if (!accessTokenPayload?.role || typeof accessTokenPayload.role !== 'string') {\n    return [];\n  }\n  \n  return accessTokenPayload.role\n    .split('|')\n    .map(role => ({ name: role.trim() }));\n}\n", "import * as React from 'react';\nimport { useMemo, useEffect } from 'react';\nimport format from 'date-fns/format';\nimport { useGetActivityLogQuery } from '../../../api/appApi';\nimport { TableBodyCell } from '../../../components/Table/Table';\nimport ResponsiveTable, { ResponsiveTableHeader, ResponsiveTableBody, ResponsiveTableBodyRow } from '../../../components/Table/ResponsiveTable';\nimport Chip from '../../../components/Chip/Chip';\nimport PaginationControls from '../../../components/Table/PaginationControls';\nimport useMessages from '../../../hooks/useMessages';\nimport usePagination from '../../../hooks/usePagination';\nimport useSortParams from '../../../hooks/useSortParams';\nimport useFilters from '../../../hooks/useFilters';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport { TableId } from '../../../store/appSlice';\nimport TableContentPlaceholder from '../../../components/Table/TableContentPlaceholder';\nimport useTenantlessMode from '../../../hooks/useTenantlessMode';\n\nconst ActivityLog = () => {\n  const getMessage = useMessages();\n  const tenantlessMode = useTenantlessMode();\n  const [selectedPage, setSelectedPage] = usePagination('myActivityLog');\n  const { sortParamsValues } = useSortParams('myActivityLog');\n  const { filterValues } = useFilters('myActivityLog');\n  const { hasRoleType } = usePermissions();\n\n  useEffect(() => {\n    setSelectedPage(1);\n  }, []);\n\n  const { data } = useGetActivityLogQuery({\n    page: selectedPage.toString(),\n    me_log: !!hasRoleType('admin'),\n    ...sortParamsValues,\n    ...filterValues,\n  });\n\n  const ids = data?.events.map(({ date }) => date) || [];\n\n  const columnLabels = useMemo(() => {\n    const columns = [\n      {\n        label: 'profile.user.activityLog.date',\n        id: 'created_at',\n      },\n      { label: 'profile.user.activityLog.description' },\n      { label: 'profile.user.activityLog.menuOption' },\n    ];\n    if (hasRoleType('admin')) {\n      columns.splice(1, 0, ...[\n        { label: 'profile.user.activityLog.role' },\n      ]);\n    }\n    if (hasRoleType('tenant') && !tenantlessMode) columns.push({ label: 'profile.user.activityLog.venue' });\n    return columns;\n  }, [hasRoleType, tenantlessMode]);\n\n  return (\n    <>\n      <ResponsiveTable className=\"col-span-full\">\n        {data?.events && data.events.length === 0 ? (<TableContentPlaceholder />) : (\n          <>\n            <ResponsiveTableHeader ids={ids} columnLabels={columnLabels} tableName={'myActivityLog' as TableId} />\n            <ResponsiveTableBody>\n              {data?.events.map(({\n                date, description, menuOption, venue, url,\n              }) => (\n                <ResponsiveTableBodyRow key={date} className=\"border-b last:border-b-0 border-separate font-medium\">\n                  <TableBodyCell>\n                    <Chip chipStyle=\"ghost\" className=\"w-fit whitespace-nowrap\">\n                      {format(new Date(date), 'dd-MM-yyyy / HH:mm')}\n                    </Chip>\n                  </TableBodyCell>\n                  {(hasRoleType('worker') || hasRoleType('tenant')) ? (\n                    <>\n                      {url && (\n                      <TableBodyCell\n                        className=\"w-fit text-typography-blue mobile:whitespace-pre-wrap\"\n                        clickable={({\n                          href: url,\n                          linkState: { returnTo: '/profil/rejestr_zdarzen' },\n                        })}\n                      >\n                        {description}\n                      </TableBodyCell>\n                      )}\n                      {!url && <TableBodyCell className=\"w-fit text-typography-black mobile:whitespace-pre-wrap\">{description}</TableBodyCell>}\n                    </>\n                  ) : (\n                    <TableBodyCell className=\"w-fit text-typography-black mobile:whitespace-pre-wrap\">{description}</TableBodyCell>\n                  )}\n                  <TableBodyCell className=\"w-fit text-typography-dark\">{getMessage(`profile.user.activityLog.menuOption.${menuOption}`)}</TableBodyCell>\n                  {hasRoleType('tenant') && !tenantlessMode && <TableBodyCell className=\"w-fit text-typography-dark\">{venue}</TableBodyCell>}\n                </ResponsiveTableBodyRow>\n              ))}\n            </ResponsiveTableBody>\n\n          </>\n        )}\n      </ResponsiveTable>\n      {data?.metadata && (\n        <PaginationControls\n          className=\"col-span-full\"\n          selectedPage={selectedPage}\n          setSelectedPage={setSelectedPage}\n          paginationMetadata={data.metadata}\n        />\n      )}\n    </>\n  );\n};\n\nexport default ActivityLog;\n", "import * as React from 'react';\nimport { useMemo } from 'react';\nimport { activityCategory } from '../../../api/modules/user/userTypes';\nimport useMessages from '../../../hooks/useMessages';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport { useGetFullUserAccountQuery } from '../../../api/appApi';\nimport Filters from '../../../components/Filters/Filters';\nimport { FilterConfig } from '../../../components/FilterInput/FilterInput';\nimport useTenantlessMode from '../../../hooks/useTenantlessMode';\n\nconst ActivityLogFilters = () => {\n  const getMessage = useMessages();\n  const tenantlessMode = useTenantlessMode();\n  const { hasRoleType, isModuleEnabled } = usePermissions();\n  const { data: user } = useGetFullUserAccountQuery();\n  const venues = useMemo(() => user?.tenant?.venues, [user]);\n\n  const categoryOptionValues = useMemo(() => {\n    let categories;\n    if (hasRoleType('admin') && !hasRoleType('worker')) {\n      categories = activityCategory.filter((activity) => activity === 'profiles' || activity === 'authentication');\n    } else if (hasRoleType('tenant')) {\n      categories = activityCategory.filter(\n        (activity) => activity !== 'tasks' && activity !== 'tickets' && activity !== 'announcements',\n      );\n    } else if (hasRoleType('worker')) {\n      categories = activityCategory.filter(\n        (activity) => (activity !== 'settlements')\n        && (activity !== 'resolutions')\n        && (activity !== 'residency_amendments'),\n      );\n    } else {\n      categories = activityCategory;\n    }\n    if (tenantlessMode || !isModuleEnabled('announcements')) {\n      categories = categories.filter((activity) => activity !== 'announcements');\n    }\n\n    return categories.map((category) => ({\n      value: category as string,\n      optionLabel: getMessage(`profile.user.activityLog.menuOption.${category}`),\n    }));\n  }, [activityCategory, tenantlessMode, isModuleEnabled]);\n\n  const venueOptionValues = useMemo(() => venues?.map((venue) => ({\n    value: venue.id as string,\n    optionLabel: venue.address as string,\n  })) || [], [user]);\n\n  const filterFields: FilterConfig[] = [\n    {\n      type: 'dateRange',\n      id: 'from_date',\n      toDateId: 'to_date',\n      label: getMessage('profile.user.activityLog.date'),\n    },\n    {\n      type: 'multiselect',\n      id: 'category',\n      label: getMessage('profile.user.activityLog.menuOption'),\n      selectOptions: categoryOptionValues,\n    },\n  ];\n\n  if (hasRoleType('tenant') && !tenantlessMode) {\n    filterFields.push({\n      type: 'multiselect',\n      id: 'venues_ids',\n      label: getMessage('profile.user.activityLog.venue'),\n      selectOptions: venueOptionValues,\n    });\n  }\n\n  return (\n    <Filters\n      filterId=\"myActivityLog\"\n      filterFields={filterFields}\n    />\n  );\n};\n\nexport default ActivityLogFilters;\n", "import { Permission } from '../../../../utils/generated/permissionsTypes';\nimport { PaginationMetadata } from '../../paginationTypes';\nimport { RoleType } from '../access/accessTypes';\nimport { ColorPalette } from '../company/companyTypes';\n\nexport interface ApiUserProfile {\n  full_name: string,\n  login: string,\n  external_id: string,\n  email: string,\n  profile?: {\n    correspondence_email: string,\n    phone: string,\n    address_street: string,\n    address_postal_code: string,\n    address_city: string,\n    email_agreement: boolean,\n  }\n}\n\nexport interface ApiPostUserProfile {\n  correspondence_email?: string,\n  email: string,\n  phone?: string,\n  address_street?: string,\n  address_postal_code?: string,\n  address_city?: string,\n  email_agreement?: boolean,\n  login: string,\n}\n\nexport const activityCategory = [\n  'meters', 'authentication', 'settlements', 'profiles', 'resolutions', 'tasks', 'tickets', 'residency_amendments', 'announcements',\n] as const;\nexport type ApiActivityLogCategory = typeof activityCategory[number];\n\nexport type EmployeeApiEvent = {\n  created_at: string,\n  description: string,\n  category: ApiActivityLogCategory,\n  url: string,\n};\n\nexport type TenantApiEvent = EmployeeApiEvent & {\n  venue_address?: string,\n};\n\nexport type AdminApiEvent = Pick<TenantApiEvent, Exclude<keyof TenantApiEvent, 'url'>> & {\n  account_external_id?: string,\n  account_full_name?: string,\n  account_roles?: [],\n};\n\nexport interface ApiActivityLogResponse {\n  events: EmployeeApiEvent[] | TenantApiEvent[] | AdminApiEvent[],\n  metadata: PaginationMetadata,\n}\n\nexport interface Event {\n  date: string,\n  description: string,\n  menuOption: string,\n  venue?: string,\n  externalId?: string,\n  fullName?: string,\n  url?: string,\n  roles?: [],\n}\n\nexport interface ActivityLog {\n  metadata: PaginationMetadata,\n  events: Event[],\n}\n\nexport interface ApiMe {\n  me: {\n    full_name: string,\n    login: string,\n    id: string,\n    tenant?: ApiTenant,\n    profile?: ApiUserProfileData,\n    new_notification_count?: number,\n    notification_setting: NotificationSettingFormData;\n  }\n}\n\nexport interface ApiTenant {\n  email: string,\n  venues: ApiVenue[],\n}\n\nexport interface ApiVenue {\n  id: string,\n  address: string,\n  code: string,\n  main_tenant: boolean,\n}\n\nexport interface UserAccount {\n  id: string,\n  fullName: string,\n  login: string,\n  active: boolean,\n  tenant?: Tenant,\n  colorPalette?: ColorPalette,\n  newNotificationCount?: number,\n  notificationSetting: any,\n}\n\nexport interface Tenant {\n  email: string,\n  venues: Venue[],\n}\n\nexport interface Venue {\n  id: string,\n  address: string,\n  code: string,\n  isMainTenant: boolean,\n}\n\nexport interface UserProfileData {\n  profileId: string,\n  profileName: string,\n  profileEmail: string,\n  profileTenantEmail: string,\n  profileCorrespondenceEmail?: string,\n  profilePassword: string,\n  profilePhoneNumber?: string,\n  profileAddressStreet?: string,\n  profileAddressPostalCode?: string,\n  profileAddressCity?: string,\n  profileEmailAgreement?: boolean,\n  profileLogin: string,\n}\n\nexport interface ApiUserAccountsResponse {\n  accounts: ApiUserAccount[],\n  metadata: PaginationMetadata,\n}\n\nexport interface ApiUserAccount {\n  correspondence_email: string\n  email: string\n  email_agreement: string\n  external_id: string\n  full_name: string\n  id: string\n  login: string\n  roles: string[]\n  active: boolean\n  assigned: boolean\n}\n\nexport interface Account {\n  correspondenceEmail: string\n  email: string\n  emailAgreement: string\n  externalId: string\n  fullName: string\n  id: string\n  login: string\n  roles: string[]\n  active: boolean\n  assigned: boolean\n}\n\nexport interface ApiUserProfileData {\n  correspondence_email: string,\n  phone: string,\n  address_street: string,\n  address_postal_code: string,\n  address_city: string,\n  email_agreement: boolean,\n  color_palette?: ColorPalette,\n}\n\nexport interface ApiAccountResponse {\n  account: {\n    active: boolean,\n    assigned: boolean,\n    email: string,\n    external_id: string,\n    full_name: string,\n    id: string,\n    login: string,\n    login_option: string,\n    permissions: Permission[],\n    profile?: ApiUserProfileData,\n    roles: ApiRole[],\n    access_groups: {\n      'tenants/homeowner_associations': AccessGroup[],\n      'tenants/buildings': AccessGroup[],\n      'tenants/estates': AccessGroup[],\n      'tickets/journals': AccessGroup[],\n      'documents/journals'?: AccessGroup[],\n    },\n  }\n}\n\nexport interface FullUserAccount {\n  accessGroups: {\n    'homeownerAssociations': AccessGroup[],\n    'buildings': AccessGroup[],\n    'estates': AccessGroup[],\n    'journals': AccessGroup[]\n  },\n  active: boolean,\n  assigned: boolean,\n  email: string,\n  externalId: string,\n  fullName: string,\n  id: string,\n  login: string,\n  loginOption: string,\n  correspondenceEmail?: string,\n  phone?: string,\n  addressStreet?: string,\n  addressPostalCode?: string,\n  addressCity?: string,\n  emailAgreement?: boolean,\n  roles: Role[],\n  permissions: Permission[],\n}\n\nexport interface Accounts {\n  metadata: PaginationMetadata,\n  accounts: Account[],\n}\nexport interface ApiRole {\n  id: string,\n  name: string,\n  permissions: Permission[],\n  role_type: RoleType | undefined,\n  default: boolean,\n}\n\nexport interface ApiRoles {\n  roles: ApiRole[],\n}\n\nexport interface Role {\n  id: string,\n  name: string,\n  permissions: Permission[],\n  isDefault: boolean,\n  roleType?: RoleType\n}\n\nexport interface ApiPostUserAccount {\n  email: string,\n  full_name: string,\n  login: string,\n  external_id: string,\n  phone: string,\n  role_ids: string[],\n  access_groups: {\n    'tenants/homeowner_associations': string[],\n    'tenants/buildings': string[],\n    'tenants/estates': string[],\n    'tickets/journals': string[],\n    'documents/journals': string[],\n  },\n}\n\nexport interface ApiChangeUserActivity {\n  active: boolean,\n  id: string,\n}\n\nexport interface ApiPutUserAccount {\n  id: string,\n  email: string,\n  full_name: string,\n  login: string,\n  active: boolean,\n  phone: string,\n  role_ids: string[],\n  access_groups: {\n    'tenants/homeowner_associations': string[],\n    'tenants/buildings': string[],\n    'tenants/estates': string[],\n    'tickets/journals': string[],\n    'documents/journals': string[],\n  },\n}\n\nexport interface ApiAccessGroupResponse {\n  access_groups: AccessGroup[],\n}\n\nexport interface AccessGroup {\n  id: string,\n  name: string,\n}\n\nexport interface NewPasswordData {\n  confirmNewPassword: string,\n  newPassword: string,\n}\n\nexport interface MyNewPasswordData extends NewPasswordData {\n  oldPassword: string,\n}\n\nexport interface ApiPostNewPassword {\n  password: string,\n  password_confirmation: string,\n}\nexport interface ApiPostMyNewPassword extends ApiPostNewPassword {\n  old_password: string,\n}\n\nexport interface ChangeUserFormData {\n  id: string,\n  email: string,\n  fullName: string,\n  login: string,\n  active: boolean,\n  phone: string,\n  roleIds: string[],\n  homeownerAssociationIds: string[]\n  buildingsIds: string[]\n  estatesIds: string[]\n  journalsIds: string[]\n}\n\nexport interface CreateUserFormData {\n  email: string,\n  fullName: string,\n  externalId: string,\n  login: string,\n  phone: string,\n  roleIds: string[],\n  homeownerAssociationIds: string[]\n  buildingsIds: string[]\n  estatesIds: string[]\n  journalsIds: string[]\n}\n\nexport interface ColorPaletteFormData {\n  colorPalette?: ColorPalette | 'default',\n}\n\nexport interface NotificationSettingFormData {\n  online_tenant_tickets: boolean,\n  email_tenant_tickets: boolean,\n  online_tenant_meters: boolean,\n  email_tenant_meters: boolean,\n  online_tenant_credits: boolean,\n  email_tenant_credits: boolean,\n  online_tenant_debits: boolean,\n  email_tenant_debits: boolean,\n  online_tenant_announcements: boolean,\n  email_tenant_announcements: boolean,\n  online_tenant_resolutions: boolean,\n  email_tenant_resolutions: boolean,\n  online_tenant_docuemnts: boolean,\n  email_tenant_documents: boolean,\n  online_worker_my_tickets: boolean,\n  email_worker_my_tickets: boolean,\n  online_worker_my_tasks: boolean,\n  email_worker_my_tasks: boolean,\n  online_worker_new_tickets: boolean,\n  email_worker_new_tickets: boolean,\n  online_worker_new_assignments: boolean,\n  email_worker_new_assignments: boolean,\n  online_worker_tenants: boolean,\n  email_worker_tenants: boolean,\n  online_worker_announcements: boolean,\n  email_worker_announcements: boolean,\n  online_worker_related_documents: boolean,\n  email_worker_related_documents: boolean,\n  online_worker_ksef_invoices: boolean,\n  email_worker_ksef_invoices: boolean,\n}\n", "import * as React from 'react';\nimport { useForm, FormProvider } from 'react-hook-form';\nimport { useEffect, useMemo } from 'react';\nimport useMessages from '../../../hooks/useMessages';\nimport { ColorPaletteFormData } from '../../../api/modules/user/userTypes';\nimport { useGetFullUserAccountQuery, usePatchColorPaletteMutation } from '../../../api/appApi';\nimport Card from '../../../components/Card/Card';\nimport { FormRadioButtons } from '../../../components/FormInputs';\nimport Chip from '../../../components/Chip/Chip';\nimport Button from '../../../components/Button/Button';\nimport { FormNotice } from '../../../components/FormNotice/FormNotice';\n\nconst SettingsForm = () => {\n  const getMessage = useMessages();\n  const { data: user } = useGetFullUserAccountQuery();\n  const [changeColor, result] = usePatchColorPaletteMutation();\n\n  const methods = useForm<ColorPaletteFormData>({\n    values: {\n      colorPalette: user?.colorPalette || 'default',\n    },\n  });\n\n  useEffect(() => {\n    methods.reset();\n  }, [user]);\n\n  const onSubmit = (data: ColorPaletteFormData) => {\n    changeColor(data.colorPalette !== 'default' ? data.colorPalette : null);\n  };\n\n  const colorPaletteOptions = useMemo(() => [\n    { value: 'default', element: <Chip className=\"w-full\" chipStyle=\"ghost\">{getMessage('company.settings.colorPalette.default')}</Chip> },\n    { value: 'red', element: <Chip className=\"red w-full bg-light-200\" chipStyle=\"primary\">{getMessage('company.settings.colorPalette.red')}</Chip> },\n    { value: 'green', element: <Chip className=\"green w-full bg-light-200\" chipStyle=\"primary\">{getMessage('company.settings.colorPalette.green')}</Chip> },\n    { value: 'violet', element: <Chip className=\"violet w-full bg-light-200\" chipStyle=\"primary\">{getMessage('company.settings.colorPalette.violet')}</Chip> },\n  ], []);\n\n  return (\n    <Card className=\"col-span-full\">\n      {result.status === 'fulfilled' && <FormNotice type=\"success\" message={getMessage('form.success')} />}\n      {/* @ts-ignore */}\n      {result.isError && <FormNotice type=\"error\" message={result.error?.data?.errors || getMessage('form.error')} />}\n      {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n      <FormProvider {...methods}>\n        <form onSubmit={methods.handleSubmit(onSubmit)}>\n          <div className=\"w-full text-title-semibold mb-4\">{getMessage('profile.settings.color')}</div>\n          <FormRadioButtons id=\"colorPalette\" inputOptions={colorPaletteOptions} label=\"profile.settings.color\" className=\"w-52\" />\n          <section className=\"mt-8 flex flex-wrap justify-end\">\n            <Button type=\"submit\">{getMessage('save')}</Button>\n          </section>\n        </form>\n      </FormProvider>\n    </Card>\n  );\n};\n\nexport default SettingsForm;\n", "import * as React from 'react';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport NotificationSettingsTenantForm from './NotificationSettingsTenantForm';\nimport NotificationSettingsWorkerForm from './NotificationSettingsWorkerForm';\n\n\nconst NotificationSettingsForm = () => {\n  const { hasRoleType } = usePermissions();\n\n if (hasRoleType('worker')) {\n    return <NotificationSettingsWorkerForm />\n  } else if (hasRoleType('tenant')) {\n    return <NotificationSettingsTenantForm />\n  }\n}\n\nexport default NotificationSettingsForm;\n", "import * as React from 'react';\nimport { useForm, FormProvider } from 'react-hook-form';\nimport { useEffect, useMemo } from 'react';\nimport useMessages from '../../../hooks/useMessages';\nimport { NotificationSettingFormData } from '../../../api/modules/user/userTypes';\nimport { useGetFullUserAccountQuery, usePatchNotificationSettingMutation } from '../../../api/appApi';\nimport Card from '../../../components/Card/Card';\nimport { FormCheckboxInput } from '../../../components/FormInputs';\nimport Chip from '../../../components/Chip/Chip';\nimport Button from '../../../components/Button/Button';\nimport { FormNotice } from '../../../components/FormNotice/FormNotice';\nimport useHomeownerAssociationsMode from '../../../hooks/useHomeownerAssociationsMode';\nimport { useGetCompanyNotificationSettingsQuery } from '../../../api/appApi';\nimport { usePermissions } from '../../../hooks/usePermissions';                                                                                                                                                 \n\n\nconst NotificationSettingsTenantForm = () => {\n  const getMessage = useMessages();\n  const { data: user } = useGetFullUserAccountQuery();\n  const [changeNotificationSetting, result] = usePatchNotificationSettingMutation();\n  const hoaMode = useHomeownerAssociationsMode();\n  const { checkModuleEnabled, checkPermission } = usePermissions();\n  const companyNotificationSetting = useGetCompanyNotificationSettingsQuery();\n\n  const onlineNot = companyNotificationSetting.data?.onlineNotifications;\n  const emailNot = companyNotificationSetting.data?.emailNotifications;\n\n  const disabledTooltip = getMessage('profile.settings.notifications.disabledOption');\n  const enabledOnline = getMessage('profile.settings.notifications.online');\n  const enabledEmail = getMessage('profile.settings.notifications.email');\n  const methods = useForm<NotificationSettingFormData>({\n    values: user?.notificationSetting\n  });\n\n  useEffect(() => {\n    methods.reset()//user?.notificationSetting);\n  }, [user]);\n\n  const onSubmit = (data: any) => {\n    changeNotificationSetting(data);\n  };\n\n  const [watchTickets, watchMeters, watchAnnouncements, watchResolutions, watchTenantsDocuments] = methods.watch(\n    ['online_tenant_tickets',\n      'online_tenant_meters',\n      'online_tenant_announcements',\n      'online_tenant_resolutions',\n      'online_tenant_documents']\n  );\n\n  checkModuleEnabled('notifications');\n  checkPermission('notifications_list');\n\n  useEffect(() => {\n    if (!watchTickets) {\n      methods.setValue('email_tenant_tickets', false);\n    }\n    if (!watchMeters) {\n      methods.setValue('email_tenant_meters', false);\n    }\n    if (!watchAnnouncements) {\n      methods.setValue('email_tenant_announcements', false);\n    }\n    if (!watchResolutions) {\n      methods.setValue('email_tenant_resolutions', false);\n    }\n    if (!watchTenantsDocuments) {\n      methods.setValue('email_tenant_documents', false);\n    }\n  }, [watchTickets, watchMeters, watchAnnouncements, watchResolutions, watchTenantsDocuments]);\n\n  return (\n    <Card className=\"col-span-full\">\n      {result.status === 'fulfilled' && <FormNotice type=\"success\" message={getMessage('form.success')} />}\n      {/* @ts-ignore */}\n      {result.isError && <FormNotice type=\"error\" message={result.error?.data?.errors || getMessage('form.error')} />}\n      {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n      <FormProvider {...methods}>\n        <form onSubmit={methods.handleSubmit(onSubmit)}>\n          <div className=\"w-full text-title-semibold mb-4 flex flew-row\">{getMessage('profile.settings.notifications')}</div>\n\n          <div className=\"mt-10 mb-8 w-full text-title-semibold flex flew-row\">\n            <span className=\"flex mb-2 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.group')}</span>\n            <span className=\"flex mb-2 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.online')}</span>\n            <span className=\"flex mb-2 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.email')}</span>\n          </div>\n\n          <div className=\"w-full text-title-semibold mb-4 flex flew-row\">\n            <span className=\"flex mb-1 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.announcements')}</span>\n            <FormCheckboxInput id=\"online_tenant_announcements\" className=\"flex mb-2 -ml-2 w-1/3\"  disabled={!onlineNot?.announcements} tooltip={onlineNot?.announcements ? enabledOnline : disabledTooltip }  />\n            <FormCheckboxInput id=\"email_tenant_announcements\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!watchAnnouncements || !emailNot?.announcements} tooltip={emailNot?.announcements ? enabledEmail : disabledTooltip } />\n          </div>\n\n          <div className=\"w-full text-title-semibold mb-4 flex flew-row\">\n            <span className=\"flex mb-1 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.meters')}</span>\n            <FormCheckboxInput id=\"online_tenant_meters\" className=\"flex mb-2 -ml-2 w-1/3\"  disabled={!onlineNot?.meters} tooltip={onlineNot?.meters ? enabledOnline : disabledTooltip } />\n            <FormCheckboxInput id=\"email_tenant_meters\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!watchMeters || !emailNot?.meters} tooltip={emailNot?.meters ? enabledEmail : disabledTooltip } />\n          </div>\n\n          <div className=\"w-full text-title-semibold mb-4 flex flew-row\">\n            <span className=\"flex mb-1 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.tenantsDocuments')}</span>\n            <FormCheckboxInput id=\"online_tenant_documents\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!onlineNot?.documents} tooltip={onlineNot?.documents ? enabledOnline : disabledTooltip } />\n            <FormCheckboxInput id=\"email_tenant_documents\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!watchTenantsDocuments || !emailNot?.documents} tooltip={emailNot?.documents ? enabledEmail : disabledTooltip } />\n          </div>\n\n          <div className=\"w-full text-title-semibold mb-4 flex flew-row\">\n            <span className=\"flex mb-1 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.tickets')}</span>\n            <FormCheckboxInput id=\"online_tenant_tickets\" className=\"flex mb-2 -ml-2 w-1/3\"  disabled={!onlineNot?.tickets} tooltip={onlineNot?.tickets ? enabledOnline : disabledTooltip }  />\n            <FormCheckboxInput id=\"email_tenant_tickets\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!watchTickets  || !emailNot?.tickets} tooltip={emailNot?.tickets ? enabledEmail : disabledTooltip }   />\n          </div>\n\n          {hoaMode && <div className=\"w-full text-title-semibold mb-4 flex flew-row\">\n            <span className=\"flex mb-1 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.resolutions')}</span>\n            <FormCheckboxInput id=\"online_tenant_resolutions\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!onlineNot?.resolutions} tooltip={onlineNot?.resolutions ? enabledOnline : disabledTooltip }  />\n            <FormCheckboxInput id=\"email_tenant_resolutions\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!watchResolutions || !emailNot?.resolutions} tooltip={emailNot?.resolutions ? enabledEmail : disabledTooltip }  />\n          </div>}\n\n          <section className=\"mt-8 flex flex-wrap justify-end\">\n            <Button type=\"submit\">{getMessage('save')}</Button>\n          </section>\n        </form>\n      </FormProvider>\n    </Card>\n  );\n};\n\nexport default NotificationSettingsTenantForm;\n", "import * as React from 'react';\nimport { useForm, FormProvider } from 'react-hook-form';\nimport { useEffect } from 'react';\nimport useMessages from '../../../hooks/useMessages';\nimport { NotificationSettingFormData } from '../../../api/modules/user/userTypes';\nimport { useGetFullUserAccountQuery, usePatchNotificationSettingMutation, useGetCompanyNotificationSettingsQuery } from '../../../api/appApi';\nimport Card from '../../../components/Card/Card';\nimport { FormCheckboxInput } from '../../../components/FormInputs';\nimport Button from '../../../components/Button/Button';\nimport { FormNotice } from '../../../components/FormNotice/FormNotice';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport useTenantlessMode from '../../../hooks/useTenantlessMode';\n\nconst NotificationSettingsWorkerForm = () => {\n  const getMessage = useMessages();\n  const tenantlessMode = useTenantlessMode();\n  const { checkModuleEnabled, checkPermission, isModuleEnabled } = usePermissions();\n  const { data: user } = useGetFullUserAccountQuery();\n  const [changeNotificationSetting, result] = usePatchNotificationSettingMutation();\n  const companyNotificationSetting = useGetCompanyNotificationSettingsQuery();\n\n  const onlineNot = companyNotificationSetting.data?.onlineNotifications;\n  const emailNot = companyNotificationSetting.data?.emailNotifications;\n\n  const disabledTooltip = getMessage('profile.settings.notifications.disabledOption');\n  const enabledOnline = getMessage('profile.settings.notifications.online');\n  const enabledEmail = getMessage('profile.settings.notifications.email');\n\n  const methods = useForm<NotificationSettingFormData>({\n    values: user?.notificationSetting,\n  });\n\n  useEffect(() => {\n    methods.reset();// user?.notificationSetting);\n  }, [user]);\n\n  const onSubmit = (data: any) => {\n    changeNotificationSetting(data);\n  };\n\n  const [\n    watchMyTickets, watchMyTasks, watchNewTickets, watchNewAssignment, watchTenants,\n    watchWorkerDocuments, watchWorkerKsefInvoices, watchAnnouncements,\n  ] = methods.watch(\n    [\n      'online_worker_my_tickets', 'online_worker_my_tasks', 'online_worker_new_tickets',\n      'online_worker_new_assignments', 'online_worker_tenants', 'online_worker_related_documents',\n      'online_worker_ksef_invoices', 'online_worker_announcements',\n    ],\n  );\n\n  checkModuleEnabled('notifications');\n  checkPermission('notifications_list');\n  const ticketNotificationsAvailable = !tenantlessMode || isModuleEnabled('tickets');\n\n  useEffect(() => {\n    if (!watchMyTickets) {\n      methods.setValue('email_worker_my_tickets', false);\n    }\n    if (!watchMyTasks) {\n      methods.setValue('email_worker_my_tasks', false);\n    }\n    if (!watchNewTickets) {\n      methods.setValue('email_worker_new_tickets', false);\n    }\n    if (!watchNewAssignment) {\n      methods.setValue('email_worker_new_assignments', false);\n    }\n    if (!watchTenants) {\n      methods.setValue('email_worker_tenants', false);\n    }\n    if (!watchWorkerDocuments) {\n      methods.setValue('email_worker_related_documents', false);\n    }\n    if (!watchWorkerKsefInvoices) {\n      methods.setValue('email_worker_ksef_invoices', false);\n    }\n    if (!watchAnnouncements) {\n      methods.setValue('email_worker_announcements', false);\n    }\n  }, [\n    watchMyTickets, watchMyTasks, watchNewTickets, watchNewAssignment, watchTenants,\n    watchWorkerDocuments, watchWorkerKsefInvoices, watchAnnouncements,\n  ]);\n\n  return (\n    <Card className=\"col-span-full\">\n      {result.status === 'fulfilled' && <FormNotice type=\"success\" message={getMessage('form.success')} />}\n      {/* @ts-ignore */}\n      {result.isError && <FormNotice type=\"error\" message={result.error?.data?.errors || getMessage('form.error')} />}\n      {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n      <FormProvider {...methods}>\n        <form onSubmit={methods.handleSubmit(onSubmit)}>\n          <div className=\"w-full text-title-semibold mb-4 flex flew-row\">{getMessage('profile.settings.notifications')}</div>\n\n          <div className=\"mt-10 mb-8 w-full text-title-semibold flex flew-row\">\n            <span className=\"flex mb-2 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.group')}</span>\n            <span className=\"flex mb-2 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.online')}</span>\n            <span className=\"flex mb-2 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.email')}</span>\n          </div>\n\n          {ticketNotificationsAvailable && (\n          <div className=\"w-full text-title-semibold mb-4 flex flew-row\">\n            <span className=\"flex mb-1 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.newTickets')}</span>\n            <FormCheckboxInput id=\"online_worker_new_tickets\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!onlineNot?.new_tickets} tooltip={onlineNot?.new_tickets ? enabledOnline : disabledTooltip} />\n            <FormCheckboxInput id=\"email_worker_new_tickets\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!watchNewTickets || !emailNot?.new_tickets} tooltip={emailNot?.new_tickets ? enabledEmail : disabledTooltip} />\n          </div>\n          )}\n\n          <div className=\"w-full text-title-semibold mb-4 flex flew-row\">\n            <span className=\"flex mb-1 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.newAssignements')}</span>\n            <FormCheckboxInput id=\"online_worker_new_assignments\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!onlineNot?.new_assignments} tooltip={onlineNot?.new_assignments ? enabledOnline : disabledTooltip} />\n            <FormCheckboxInput id=\"email_worker_new_assignments\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!watchNewAssignment || !emailNot?.new_assignments} tooltip={emailNot?.new_assignments ? enabledEmail : disabledTooltip} />\n          </div>\n\n          {ticketNotificationsAvailable && (\n          <div className=\"w-full text-title-semibold mb-4 flex flew-row\">\n            <span className=\"flex mb-1 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.myTickets')}</span>\n            <FormCheckboxInput id=\"online_worker_my_tickets\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!onlineNot?.my_tickets} tooltip={onlineNot?.my_tickets ? enabledOnline : disabledTooltip} />\n            <FormCheckboxInput id=\"email_worker_my_tickets\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!watchMyTickets || !emailNot?.my_tickets} tooltip={emailNot?.my_tickets ? enabledEmail : disabledTooltip} />\n          </div>\n          )}\n\n          <div className=\"w-full text-title-semibold mb-4 flex flew-row\">\n            <span className=\"flex mb-1 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.myTasks')}</span>\n            <FormCheckboxInput id=\"online_worker_my_tasks\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!onlineNot?.my_tasks} tooltip={onlineNot?.my_tasks ? enabledOnline : disabledTooltip} />\n            <FormCheckboxInput id=\"email_worker_my_tasks\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!watchMyTasks || !emailNot?.my_tasks} tooltip={emailNot?.my_tasks ? enabledEmail : disabledTooltip} />\n          </div>\n\n          {!tenantlessMode && (\n          <div className=\"w-full text-title-semibold mb-4 flex flew-row\">\n            <span className=\"flex mb-1 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.tenants')}</span>\n            <FormCheckboxInput id=\"online_worker_tenants\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!onlineNot?.tenants} tooltip={onlineNot?.tenants ? enabledOnline : disabledTooltip} />\n            <FormCheckboxInput id=\"email_worker_tenants\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!watchTenants || !emailNot?.tenants} tooltip={emailNot?.tenants ? enabledEmail : disabledTooltip} />\n          </div>\n          )}\n\n          {isModuleEnabled('announcements') && (\n          <div className=\"w-full text-title-semibold mb-4 flex flew-row\">\n            <span className=\"flex mb-1 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.announcements')}</span>\n            <FormCheckboxInput id=\"online_worker_announcements\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!onlineNot?.announcements} tooltip={onlineNot?.announcements ? enabledOnline : disabledTooltip} />\n            <FormCheckboxInput id=\"email_worker_announcements\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!watchAnnouncements || !emailNot?.announcements} tooltip={emailNot?.announcements ? enabledEmail : disabledTooltip} />\n          </div>\n          )}\n\n          <div className=\"w-full text-title-semibold mb-4 flex flew-row\">\n            <span className=\"flex mb-1 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.workerDocuments')}</span>\n            <FormCheckboxInput id=\"online_worker_related_documents\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!onlineNot?.related_documents} tooltip={onlineNot?.related_documents ? enabledOnline : disabledTooltip} />\n            <FormCheckboxInput id=\"email_worker_related_documents\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!watchWorkerDocuments || !emailNot?.related_documents} tooltip={emailNot?.related_documents ? enabledEmail : disabledTooltip} />\n          </div>\n\n          <div className=\"w-full text-title-semibold mb-4 flex flew-row\">\n            <span className=\"flex mb-1 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.workerKsefInvoices')}</span>\n            <FormCheckboxInput id=\"online_worker_ksef_invoices\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!onlineNot?.ksef_invoices} tooltip={onlineNot?.ksef_invoices ? enabledOnline : disabledTooltip} />\n            <FormCheckboxInput id=\"email_worker_ksef_invoices\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!watchWorkerKsefInvoices || !emailNot?.ksef_invoices} tooltip={emailNot?.ksef_invoices ? enabledEmail : disabledTooltip} />\n          </div>\n\n          <section className=\"mt-8 flex flex-wrap justify-end\">\n            <Button type=\"submit\">{getMessage('save')}</Button>\n          </section>\n        </form>\n      </FormProvider>\n    </Card>\n  );\n};\n\nexport default NotificationSettingsWorkerForm;\n", "import * as React from 'react';\nimport { usePermissions } from '../../hooks/usePermissions';\nimport EmployeeTicketsPage from './EmployeeTicketsPage';\nimport TenantTicketsPage from './TenantTicketsPage';\n\ninterface EmployeeTicketsPageProps {\n  tab?: 'createdByMe' | 'mineInProgress' | 'unassigned',\n}\n\nconst TicketsPage = ({ tab }: EmployeeTicketsPageProps) => {\n  const {\n    checkPermission, hasRoleType, checkModuleEnabled, checkTenantDataEnabled,\n  } = usePermissions();\n\n  checkPermission('tickets_list');\n  checkModuleEnabled('tickets');\n  if (!hasRoleType('worker')) checkTenantDataEnabled();\n\n  return (\n    hasRoleType('worker') ? <EmployeeTicketsPage tab={tab} /> : <TenantTicketsPage />\n  );\n};\n\nexport default TicketsPage;\n", "import * as React from 'react';\nimport { useMemo, useState, useEffect } from 'react';\nimport { useNavigate } from 'react-router';\nimport { useForm, FormProvider } from 'react-hook-form';\nimport { useAppSelector } from '../../hooks/reduxHooks';\nimport useMessages from '../../hooks/useMessages';\nimport useFilters from '../../hooks/useFilters';\nimport { usePermissions } from '../../hooks/usePermissions';\nimport Button from '../../components/Button/Button';\nimport EmployeeTicketsList from './TicketsList/EmployeeTicketsList/EmployeeTicketsList';\nimport PageHeader from '../../components/Layout/PageHeader';\nimport ContentWrapper from '../../components/ContentWrapper/ContentWrapper';\nimport Layout from '../../components/Layout/Layout';\nimport { FormInput } from '../../components/FormInputs';\nimport EmployeeTicketsFilters from './TicketsFilters/EmployeeTicketsFilters/EmployeeTicketsFilters';\nimport FiltersIcon from '../../icons/filters.svg';\nimport PlusIcon from '../../icons/plus.svg';\nimport Tabs, { TabElement } from '../../components/Tabs/Tabs';\n\ninterface TicketsFilterInputs {\n  number_title_search?: string | '',\n}\ninterface EmployeeTicketsPageProps {\n  tab?:  'createdByMe' | 'mineInProgress' | 'unassigned',\n}\n\nconst EmployeeTicketsPage = ({ tab }: EmployeeTicketsPageProps) => {\n  const getMessage = useMessages();\n  const navigate = useNavigate();\n  const { hasPermission, checkPermission } = usePermissions();\n  const hasFilterSet = useAppSelector((state) => !!state.app.filters.find((filter) => filter.id === 'employeeTicketsTable'));\n  const [filtersOpen, setFiltersOpen] = useState(hasFilterSet);\n  const { saveFilterValues, filterValues } = useFilters<TicketsFilterInputs>('employeeTicketsTable');\n  const methods = useForm<TicketsFilterInputs>({\n    defaultValues: {\n      number_title_search: filterValues?.number_title_search || '',\n    },\n  });\n\n  useEffect(() => {\n    methods.watch(\n      (filters) => {\n        saveFilterValues(filters);\n      },\n    );\n  }, [methods.watch]);\n\n  const tabs: TabElement[] = useMemo(() => {\n    if (hasPermission('tickets_add')) {\n      return [\n        {\n          label: getMessage('tabs.tickets.all'),\n          path: '/zgloszenia',\n        },\n        {\n          label: getMessage('tabs.tickets.mineInProgress'),\n          path: '/zgloszenia/w-trakcie',\n        }, {\n          label: getMessage('tabs.tickets.unassigned'),\n          path: '/zgloszenia/nieprzypisane',\n        },\n         {\n          label: getMessage('tabs.tickets.createdByMe'),\n          path: '/zgloszenia/moje',\n        },\n      ];\n    }\n\n    return [];\n  }, [hasPermission]);\n\n  checkPermission('tickets_add');\n\n  return (\n    <Layout currentPage=\"tickets\">\n      <PageHeader pageTitle={getMessage('local.tickets.ticketsList')} currentPage=\"tickets\">\n        {!filtersOpen && (\n          /* eslint-disable-next-line react/jsx-props-no-spreading */\n          <FormProvider {...methods}>\n            <FormInput\n              className=\"col-span-2\"\n              id=\"number_title_search\"\n              type=\"search\"\n              inputClassName=\"w-full my-0\"\n              placeholder={getMessage('filters.search')}\n              ariaLabel=\"Szukaj zg\u0142oszenia\"\n            />\n          </FormProvider>\n        )}\n        <Button\n          Icon={FiltersIcon}\n          styleType=\"secondary\"\n          size=\"small\"\n          onClick={() => setFiltersOpen((filtersOpen) => !filtersOpen)}\n          className=\"mx-3 py-1 appearance-none\"\n        >\n          {getMessage('filters')}\n        </Button>\n        <Button\n          onClick={() => navigate('/zgloszenia/nowe')}\n          className=\"py-1\"\n          size=\"small\"\n          Icon={PlusIcon}\n        >\n          {getMessage('local.tickets.newTicket')}\n        </Button>\n      </PageHeader>\n      <>\n        <Tabs tabElements={tabs} />\n        {filtersOpen && (<EmployeeTicketsFilters />)}\n        <ContentWrapper className=\"md:grid-rows-[auto_minmax(200px,_max-content)_auto]\">\n          <EmployeeTicketsList prefilter={tab} />\n        </ContentWrapper>\n      </>\n    </Layout>\n  );\n};\n\nexport default EmployeeTicketsPage;\n", "import * as React from 'react';\nimport { useEffect } from 'react';\nimport { useMediaQuery } from 'react-responsive';\nimport { useGetTicketsQuery } from '../../../../api/appApi';\nimport { EmployeeTicketsListItemData } from '../../../../api/modules/tickets/ticketsTypes';\nimport usePagination from '../../../../hooks/usePagination';\nimport PaginationControls from '../../../../components/Table/PaginationControls';\nimport useFilters from '../../../../hooks/useFilters';\nimport useSortParams from '../../../../hooks/useSortParams';\nimport { FilterValues } from '../../../../store/appSlice';\nimport { md } from '../../../../../utils/breakpoints';\nimport TicketsTableMobile from './TicketsTableMobile';\nimport TicketsTableDesktop from './TicketsTableDesktop';\n\ninterface TicketsPageProps {\n  prefilter?: 'createdByMe' | 'mineInProgress' | 'unassigned',\n}\n\nconst EmployeeTicketsList = ({ prefilter }: TicketsPageProps) => {\n  const [selectedPage, setSelectedPage] = usePagination('employeeTicketsTable');\n  const { filterValues } = useFilters('employeeTicketsTable');\n  const { sortParamsValues } = useSortParams('employeeTicketsTable');\n  const filters: FilterValues = { ...filterValues };\n  if (prefilter) filters.assigned = prefilter;\n\n  useEffect(() => {\n    setSelectedPage(1);\n  }, [prefilter]);\n\n  const { data } = useGetTicketsQuery({\n    ...sortParamsValues,\n    ...filters,\n    page: selectedPage.toString(),\n  }, { refetchOnMountOrArgChange: true });\n  const isTabletOrDesktop = useMediaQuery({ query: `(min-width: ${md})` });\n\n  const ticketsData = data?.tickets as EmployeeTicketsListItemData[] || [] as EmployeeTicketsListItemData[];\n\n  return (\n    <>\n      {isTabletOrDesktop ? (\n        <TicketsTableDesktop tickets={ticketsData} />\n      ) : <TicketsTableMobile tickets={ticketsData} />}\n      {data?.metadata && (\n        <PaginationControls\n          className=\"col-span-full\"\n          selectedPage={selectedPage}\n          setSelectedPage={setSelectedPage}\n          paginationMetadata={data.metadata}\n        />\n      )}\n    </>\n  );\n};\n\nexport default EmployeeTicketsList;\n", "import * as React from 'react';\nimport format from 'date-fns/format';\nimport { useNavigate } from 'react-router-dom';\nimport { TableBodyCell } from '../../../../components/Table/Table';\nimport ResponsiveTable, { ResponsiveTableHeader, ResponsiveTableBody, ResponsiveTableBodyRow } from '../../../../components/Table/ResponsiveTable';\nimport Chip from '../../../../components/Chip/Chip';\nimport { TableId } from '../../../../store/appSlice';\nimport capitalize from '../../../../../utils/formatters';\nimport Button from '../../../../components/Button/Button';\nimport useMessages from '../../../../hooks/useMessages';\nimport TableBodyPlaceholder from '../../../../components/Table/TableBodyPlaceholder';\n\ninterface Props {\n  tickets: {\n    id: string,\n    status: string,\n    reportedAt: string,\n    title: string,\n    lastCommentAt: string,\n    venueAddress: string,\n    ticketNumber: string,\n  }[]\n}\n\nconst TicketsTableMobile = ({ tickets }: Props) => {\n  const navigate = useNavigate();\n  const handleNavigate = (id: string) => navigate(`/zgloszenia/${id}`);\n  const getMessage = useMessages();\n\n  const ids = tickets?.map(({ id }) => id);\n\n  const columnLabels = [\n    { label: 'tickets.ticket.status' },\n    { label: 'tickets.ticket.reportedAt' },\n    { label: 'tickets.ticket.lastCommentAt' },\n    { label: 'tickets.ticket.id' },\n    { label: 'tickets.ticket.title' },\n    { label: 'tickets.ticket.venueAddress' },\n    { label: 'tickets.ticket.placeholder', divClassName: 'sr-only' },\n  ];\n\n  return (\n    <ResponsiveTable className=\"col-span-full md:mb-0\">\n      {tickets && tickets?.length === 0 ? <TableBodyPlaceholder /> : (\n        <>\n          <ResponsiveTableHeader ids={ids} columnLabels={columnLabels} tableName={'ticketsList' as TableId} />\n          <ResponsiveTableBody>\n            {tickets && tickets?.map(({\n              status, reportedAt, lastCommentAt, id, title, venueAddress, ticketNumber,\n            }) => (\n              <ResponsiveTableBodyRow key={id} className=\"border-b last:border-b-0 border-separate font-medium\">\n                <TableBodyCell>\n                  <Chip chipStyle={status === 'completed' ? 'gray' : 'primary'} className=\"w-fit\">\n                    {status && capitalize(status)}\n                  </Chip>\n                </TableBodyCell>\n                <TableBodyCell>\n                  <Chip chipStyle={status === 'unread' ? 'gray' : 'ghost'} className=\"w-fit\">\n                    {format(new Date(reportedAt), 'dd-MM-yyyy')}\n                  </Chip>\n                </TableBodyCell>\n                <TableBodyCell>\n                  <Chip chipStyle={status === 'unread' ? 'gray' : 'ghost'} className=\"w-fit\">\n                    {format(new Date(lastCommentAt), 'dd-MM-yyyy')}\n                  </Chip>\n                </TableBodyCell>\n                <TableBodyCell className=\"max-w-[4rem]\">{ticketNumber}</TableBodyCell>\n                <TableBodyCell className={`w-fit text-typography-black ${status === 'unread' ? 'font-bold' : ''}`}>{title}</TableBodyCell>\n                <TableBodyCell className=\"max-w-[13rem] truncate\">{venueAddress}</TableBodyCell>\n                <TableBodyCell>\n                  <Button\n                    onClick={() => handleNavigate(id)}\n                    styleType=\"secondary\"\n                    size=\"small\"\n                    ariaLabel={getMessage('tickets.ticket.ticketDetails')}\n                  >\n                    {getMessage('more')}\n                  </Button>\n                </TableBodyCell>\n              </ResponsiveTableBodyRow>\n            ))}\n          </ResponsiveTableBody>\n        </>\n      )}\n    </ResponsiveTable>\n  );\n};\n\nexport default TicketsTableMobile;\n", "import * as React from 'react';\nimport { format } from 'date-fns';\nimport { useCallback, useEffect } from 'react';\nimport useMessages from '../../../../hooks/useMessages';\nimport { useGetSelectedTicketsColumnsQuery } from '../../../../api/appApi';\nimport Table, {\n  TableHeader, TableHeaderRow, TableHeaderCell, TableBody, TableBodyRow, TableBodyCell,\n} from '../../../../components/Table/Table';\nimport Chip from '../../../../components/Chip/Chip';\nimport capitalize from '../../../../../utils/formatters';\nimport {\n  EmployeeTicketsListItemData, tenantRelatedTicketColumnIds, TicketColumnId,\n} from '../../../../api/modules/tickets/ticketsTypes';\nimport TableActionsBar from '../../../../components/Table/TableActionsBar';\nimport TicketsTableCustomisation from './TicketsTableCustomisation';\nimport { TableId, saveSelectedTicketId, resetSelectedTicketIds } from '../../../../store/appSlice';\nimport TableBodyPlaceholder from '../../../../components/Table/TableBodyPlaceholder';\nimport TicketsBulkActions from './TicketsBulkActions/TicketsBulkActions';\nimport { useAppDispatch, useAppSelector } from '../../../../hooks/reduxHooks';\nimport useHomeownerAssociationsMode from '../../../../hooks/useHomeownerAssociationsMode';\nimport useTenantlessMode from '../../../../hooks/useTenantlessMode';\n\ninterface Props {\n  tickets: EmployeeTicketsListItemData[]\n}\n\nconst TicketsTableDesktop = ({ tickets }: Props) => {\n  const selectedTicketsIds = useAppSelector((state) => state.app.selectedTicketsIds);\n  const dispatch = useAppDispatch();\n  const getMessage = useMessages();\n  const hoaMode = useHomeownerAssociationsMode();\n  const tenantlessMode = useTenantlessMode();\n\n  const { data: selectedColumns } = useGetSelectedTicketsColumnsQuery();\n  const isSelected = useCallback(\n    (columnId: TicketColumnId): boolean => (\n      !!selectedColumns?.includes(columnId)\n      && (!tenantlessMode || !tenantRelatedTicketColumnIds.includes(columnId))\n    ),\n    [selectedColumns, tenantlessMode],\n  );\n\n  const handleChecked = (id: string) => {\n    dispatch(saveSelectedTicketId({ id }));\n  };\n\n  useEffect(() => {\n    dispatch(resetSelectedTicketIds());\n  }, []);\n\n  return (\n    <>\n      <TableActionsBar>\n        <div className=\"flex justify-center\">\n          <TicketsBulkActions selectedTicketsIds={selectedTicketsIds} />\n          <TicketsTableCustomisation />\n        </div>\n      </TableActionsBar>\n      <Table className=\"col-span-full px-0 py-0 table-fixed whitespace-nowrap overflow-auto overscroll-none !p-0\">\n        <TableHeader className=\"sticky top-0 z-20 bg-background-white border-none shadow-main shadow-sm\">\n          <TableHeaderRow className=\"[&>*:nth-child(2)]:pl-8 [&>*:last-child]:pr-8\">\n            <TableHeaderCell className=\"sticky top-0 left-0 pt-8 bg-main \" />\n            <TableHeaderCell className=\"pt-8 pb-4 pl-8\">{getMessage('tickets.ticket.status')}</TableHeaderCell>\n            {isSelected('reported_at') && (\n            <TableHeaderCell className=\"pt-8 pb-4\" id=\"reported_at\" tableName={'employeeTicketsTable' as TableId}>\n              {getMessage('tickets.ticket.reportedAt')}\n            </TableHeaderCell>\n            )}\n            {isSelected('last_comment_at') && (\n            <TableHeaderCell className=\"pt-8 pb-4\" id=\"last_comment_at\" tableName={'employeeTicketsTable' as TableId}>\n              {getMessage('tickets.ticket.lastCommentAt')}\n            </TableHeaderCell>\n            )}\n            {isSelected('ticket_number') && (\n            <TableHeaderCell className=\"pt-8 pb-4\" id=\"ticket_number\" tableName={'employeeTicketsTable' as TableId}>\n              {getMessage('tickets.ticket.id')}\n            </TableHeaderCell>\n            )}\n            {isSelected('title') && <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('tickets.ticket.title')}</TableHeaderCell>}\n            {isSelected('venue_address') && <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('tickets.ticket.venueAddress')}</TableHeaderCell>}\n            {isSelected('venue_code') && <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('tickets.ticket.venueCode')}</TableHeaderCell>}\n            {hoaMode && isSelected('homeowner_association_code') && <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('tickets.ticket.homeownerAssociationCode')}</TableHeaderCell>}\n            {hoaMode && isSelected('homeowner_association_name') && <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('tickets.ticket.homeownerAssociationName')}</TableHeaderCell>}\n            {isSelected('category') && <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('tickets.ticket.category')}</TableHeaderCell>}\n            {isSelected('reporter_external_id') && <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('tickets.ticket.reporterCode')}</TableHeaderCell>}\n            {isSelected('reporter') && <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('tickets.ticket.reporterName')}</TableHeaderCell>}\n            {isSelected('realizer_external_id') && <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('tickets.ticket.realizerCode')}</TableHeaderCell>}\n            <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('tickets.ticket.realizer')}</TableHeaderCell>\n          </TableHeaderRow>\n        </TableHeader>\n        <TableBody>\n          {tickets.length === 0\n             && (\n               <TableBodyPlaceholder />\n             )}\n          {selectedColumns && selectedColumns.length > 0 && tickets.map(({\n            id, ticketNumber, reportedAt, title, status, homeownerAssociationCode, venueAddress, lastCommentAt, venueCode,\n            homeownerAssociationName, category, reporterCode, reporter, realizerCode, realizer,\n          }) => (\n            <TableBodyRow key={id} className=\"relative border-none odd:bg-light-100 text-typography-black [&>*:nth-child(2)]:pl-8 [&>*:last-child]:pr-8\">\n              <TableHeaderCell className=\"sticky left-0 z-15 m-10 pl-0 !pr-0 pt-0 bg-main border-main w-1\">\n                <label htmlFor={id} className=\"hover:cursor-pointer\">\n                  <div className=\"text-[0px] h-0\">{getMessage('tickets.ticket.checkbox.label')}</div>\n                  <input\n                    className=\"m-4\"\n                    type=\"checkbox\"\n                    checked={selectedTicketsIds.includes(id)}\n                    onChange={() => handleChecked(id)}\n                    id={id}\n                  />\n                </label>\n              </TableHeaderCell>\n              <TableBodyCell>\n                <Chip chipStyle={status === 'completed' ? 'gray' : 'primary'} className=\"w-fit\">\n                  {status && capitalize(status)}\n                </Chip>\n              </TableBodyCell>\n              {isSelected('reported_at') && (\n              <TableBodyCell>\n                {reportedAt && (\n                <Chip chipStyle=\"ghost\" className=\"w-fit\">\n                  {format(new Date(reportedAt), 'dd-MM-yyyy')}\n                </Chip>\n                )}\n              </TableBodyCell>\n              )}\n              {isSelected('last_comment_at') && (\n              <TableBodyCell>\n                {lastCommentAt && (\n                <Chip chipStyle=\"ghost\" className=\"w-fit\">\n                  {format(new Date(lastCommentAt), 'dd-MM-yyyy')}\n                </Chip>\n                )}\n              </TableBodyCell>\n              )}\n              {isSelected('ticket_number') && <TableBodyCell>{ticketNumber}</TableBodyCell>}\n              {isSelected('title') && (\n              <TableBodyCell clickable={({ href: `/zgloszenia/${id}`, ariaLabel: `Przejd\u017A do szczeg\u00F3\u0142\u00F3w zg\u0142oszenia nr ${ticketNumber} ${title}` })}>\n                {title}\n              </TableBodyCell>\n              )}\n              {isSelected('venue_address') && <TableBodyCell>{venueAddress}</TableBodyCell>}\n              {isSelected('venue_code') && <TableBodyCell>{venueCode}</TableBodyCell>}\n              {hoaMode && isSelected('homeowner_association_code') && (\n              <TableBodyCell>\n                {homeownerAssociationCode}\n              </TableBodyCell>\n              ) }\n              {hoaMode && isSelected('homeowner_association_name') && <TableBodyCell>{homeownerAssociationName}</TableBodyCell>}\n              {isSelected('category') && <TableBodyCell>{category && capitalize(category)}</TableBodyCell>}\n              {isSelected('reporter_external_id') && <TableBodyCell>{reporterCode}</TableBodyCell>}\n              {isSelected('reporter') && <TableBodyCell>{reporter}</TableBodyCell>}\n              {isSelected('realizer_external_id') && <TableBodyCell>{realizerCode}</TableBodyCell>}\n              <TableBodyCell>{realizer}</TableBodyCell>\n            </TableBodyRow>\n          ))}\n        </TableBody>\n      </Table>\n    </>\n  );\n};\n\nexport default TicketsTableDesktop;\n", "import { PaginationMetadata } from '../../paginationTypes';\nimport { ApiTask, Task } from '../tasks/tasksTypes';\n\nexport type ApiTicketsListItem = {\n  category: string,\n  id: string,\n  important: boolean,\n  reported_at: string,\n  reporter: string\n  status: string\n  ticket_number: string\n  title: string\n  venue_address: string\n};\n\nexport type EmployeeApiTicketsListItem = ApiTicketsListItem & {\n  homeowner_association_code: string,\n  homeowner_association_name: string,\n  last_comment_at: string,\n  realizer: string,\n  realizer_external_id: string,\n  reporter_external_id: string,\n  venue_code: string\n};\n\nexport type TenantApiSingleTicket = Omit<ApiTicketsListItem, 'status' | 'category'> & {\n  attachments: ApiAttachment[],\n  description: string,\n  public_comments: ApiTicketComment[],\n  status: ApiTicketStatus,\n  category: TicketCategory,\n};\n\nexport type EmployeeApiSingleTicket = TenantApiSingleTicket & Pick<EmployeeApiTicketsListItem, 'realizer' | 'homeowner_association_name'> & {\n  private_comments: ApiTicketComment[],\n  tasks: ApiTask[],\n  tenant_id: string,\n  tenant_name: string,\n  venue_id: string,\n  homeowner_association_id: string,\n  homeowner_association_name: string,\n};\n\nexport interface ApiTicketsResponse {\n  metadata: PaginationMetadata,\n  tickets: ApiTicketsListItem[] | EmployeeApiTicketsListItem[],\n}\n\nexport interface ApiTicketResponse {\n  ticket: TenantApiSingleTicket | EmployeeApiSingleTicket;\n}\n\nexport interface ApiPostTicket {\n  ticket: FormData\n}\n\nexport interface TicketCategory {\n  id: string,\n  name: string,\n}\n\nexport interface ApiTicketCategories {\n  ticket_categories: TicketCategory[]\n}\n\nexport interface ApiTicketStatus {\n  id: string,\n  object_type: string,\n  name: string,\n  active: boolean,\n  internal_name: string,\n  external_name: string,\n  description: string,\n}\n\nexport interface FullTicketStatus {\n  id: string,\n  objectType: string,\n  name: 'open' | 'completed' | string,\n  active: boolean,\n  internalName: string,\n  externalName: string,\n  description: string,\n}\n\nexport interface ApiTicketStatuses {\n  statuses: ApiTicketStatus[]\n}\n\nexport interface TicketStatus extends TicketCategory {}\n\nexport interface TicketStatuses {\n  statuses: TicketStatus[]\n}\n\nexport interface ApiAttachment {\n  description: string,\n  filename: string,\n  path: string,\n  content_type: string,\n}\n\nexport interface ApiTicketComment {\n  attachments: ApiAttachment[]\n  author: string,\n  content: string,\n  created_at: string,\n  public: boolean,\n}\n\nexport interface ApiPostTicketComment {\n  id: string,\n  payload: FormData\n}\n\nexport type TenantTicketsListItemData = {\n  id: string,\n  ticketNumber: string,\n  reportedAt: string,\n  title: string,\n  category: string,\n  status: string,\n};\n\nexport type EmployeeTicketsListItemData = TenantTicketsListItemData & {\n  homeownerAssociationCode: string,\n  lastCommentAt: string,\n  realizer: string,\n  realizerCode: string,\n  reporter: string,\n  reporterCode: string,\n  venueAddress: string,\n  venueCode: string,\n  homeownerAssociationName: string,\n};\n\nexport type Tickets = {\n  metadata: PaginationMetadata,\n  tickets: TenantTicketsListItemData[] | EmployeeTicketsListItemData[],\n};\n\nexport type TenantShowTicketData = Omit<TenantTicketsListItemData, 'status' | 'category'> & {\n  attachments?: TicketAttachment[],\n  description: string\n  publicComments: TicketComment[],\n  realizer: string,\n  venueAddress: string,\n  status: TicketStatus,\n  category: TicketCategory,\n};\n\nexport type EmployeeShowTicketData = Omit<TenantShowTicketData, 'status'> & Pick<EmployeeTicketsListItemData, 'reporter'> & {\n  homeownerAssociationName: string,\n  homeownerAssociationId: string,\n  privateComments?: TicketComment[],\n  tasks: Task[],\n  venueAddress: string,\n  status: TicketStatus,\n  tenantName: string,\n  tenantId: string,\n  venueId: string,\n  homeowner_associationId: string,\n  homeowner_associationName: string,\n};\n\nexport interface TicketAttachment {\n  description: string,\n  filename: string,\n  path: string,\n  contentType: string,\n}\n\nexport interface TicketComment {\n  author: string,\n  content: string,\n  createdAt: string,\n  attachments: TicketAttachment[]\n}\n\nexport type CommentAttachment = {\n  file: FileList | undefined,\n  description: string\n};\n\nexport const ticketDefaultColumnIds = [\n  'ticket_number', 'title', 'status', 'category', 'reported_at', 'last_comment_at',\n  'venue_address', 'homeowner_association_code', 'realizer',\n];\nexport const ticketCustomizableColumnIds = ticketDefaultColumnIds.concat([\n  'venue_code', 'homeowner_association_name', 'reporter_external_id',\n  'reporter', 'realizer_external_id',\n]);\nexport const tenantRelatedTicketColumnIds = ['reporter_external_id', 'reporter'];\n\nexport type TicketColumnId = typeof ticketCustomizableColumnIds[number] | typeof ticketCustomizableColumnIds[number];\n\nexport interface ApiColumnsSettings {\n  selected_columns: TicketColumnId[]\n}\n\nexport interface ApiPostColumnsSettings {\n  columns?: (TicketColumnId | undefined)[]\n}\n\nexport interface ApiPostChangeTicketData {\n  tickets: {\n    [id: string]: {\n      status_id?: string,\n      category_id?: string\n      realizer_id?: string,\n    }\n  }\n}\n", "import * as React from 'react';\nimport { useMemo } from 'react';\nimport { useGetSelectedTicketsColumnsQuery, usePostSelectedTicketsColumnsMutation } from '../../../../api/appApi';\nimport { SelectOption } from '../../../../components/FormInputs/inputs/FormSelect';\nimport {\n  tenantRelatedTicketColumnIds, ticketCustomizableColumnIds, ticketDefaultColumnIds,\n} from '../../../../api/modules/tickets/ticketsTypes';\nimport useMessages from '../../../../hooks/useMessages';\nimport TableCustomisationMenu from '../../../../components/TableCustomisationMenu/TableCustomisationMenu';\nimport useHomeownerAssociationsMode from '../../../../hooks/useHomeownerAssociationsMode';\nimport useTenantlessMode from '../../../../hooks/useTenantlessMode';\n\nconst TicketsTableCustomisation = () => {\n  const getMessage = useMessages();\n  const hoaMode = useHomeownerAssociationsMode();\n  const tenantlessMode = useTenantlessMode();\n\n  const { data: selectedColumns } = useGetSelectedTicketsColumnsQuery();\n  const [postSelectedTicketsColumns] = usePostSelectedTicketsColumnsMutation();\n\n  const selectOptions: SelectOption[] = useMemo(() => {\n    const customizableColumns = ticketCustomizableColumnIds\n      .filter((id) => !tenantlessMode || !tenantRelatedTicketColumnIds.includes(id))\n      .map((id) => ({\n        value: id,\n        optionLabel: getMessage(`tickets.column.${id}`),\n      }));\n\n    return hoaMode ? customizableColumns : customizableColumns.filter((option) => option.value !== 'homeowner_association_name');\n  }, [hoaMode, tenantlessMode]);\n\n  if (!selectedColumns || !postSelectedTicketsColumns) return null;\n\n  const handleSelectedColumns = (selectedColumns: string[]) => {\n    const columns = ticketDefaultColumnIds.concat(selectedColumns);\n    postSelectedTicketsColumns({ columns });\n  };\n\n  return (\n    <TableCustomisationMenu\n      selectedColumns={selectedColumns}\n      setSelectedColumns={handleSelectedColumns}\n      selectOptions={selectOptions}\n      tableId=\"TicketsTable\"\n    />\n  );\n};\n\nexport default TicketsTableCustomisation;\n", "import * as React from 'react';\nimport TicketChangeStatusAction from './TicketChangeStatusAction';\nimport TicketAssignEmployeeAction from './TicketAssignEmployeeAction';\nimport TicketChangeCategoryAction from './TicketChangeCategoryAction';\n\nconst TicketsBulkActions = ({ selectedTicketsIds }: { selectedTicketsIds: string[] }) => (\n  <div className=\"flex items-center border-r border-stroke-grey-300 pr-1\">\n    <TicketAssignEmployeeAction selectedTicketsIds={selectedTicketsIds} />\n    <TicketChangeCategoryAction selectedTicketsIds={selectedTicketsIds} />\n    <TicketChangeStatusAction selectedTicketsIds={selectedTicketsIds} />\n  </div>\n);\n\nexport default TicketsBulkActions;\n", "import * as React from 'react';\nimport { useState, useMemo, useCallback } from 'react';\nimport classNames from 'classnames';\nimport { useGetTicketStatusesQuery, usePostChangeTicketMutation } from '../../../../../api/appApi';\nimport { useAppDispatch } from '../../../../../hooks/reduxHooks';\nimport { resetSelectedTicketIds } from '../../../../../store/appSlice';\nimport useMessages from '../../../../../hooks/useMessages';\nimport StatusIcon from '../../../../../icons/bell.svg';\nimport Dialog from '../../../../../components/Dialog/Dialog';\nimport { InputLabel } from '../../../../../components/FormInputs/InputLabel';\nimport { Select } from '../../../../../components/FormInputs/inputs/FormSelect';\nimport capitalize from '../../../../../../utils/formatters';\n\nconst TicketChangeStatusAction = ({ selectedTicketsIds }: { selectedTicketsIds: string[] }) => {\n  const [isPopupOpen, setIsPopupOpen] = useState(false);\n  const [selectedStatus, setSelectedStatus] = useState('select.placeholder');\n  const { data: ticketStatuses } = useGetTicketStatusesQuery();\n  const [postChangeTicket] = usePostChangeTicketMutation();\n  const getMessage = useMessages();\n\n  const statusOptionsValues = useMemo(() => ticketStatuses?.map(({ id, name }) => ({\n    value: id,\n    optionLabel: capitalize(name),\n  })) || [], [ticketStatuses]);\n  const dispatch = useAppDispatch();\n\n  const handleClick = () => {\n    if (selectedTicketsIds.length > 0) setIsPopupOpen(true);\n  };\n\n  const changeStatus = (value: string) => {\n    setSelectedStatus(value);\n  };\n\n  const onAccept = useCallback(() => {\n    const tickets: {\n      [key: string]: {\n        status_id: string\n      }\n    } = {};\n    function populatePayload(id: string) {\n      tickets[id] = { status_id: selectedStatus };\n    }\n    selectedTicketsIds.forEach((item) => populatePayload(item));\n    postChangeTicket({ tickets });\n  }, [selectedStatus]);\n\n  const onClose = () => {\n    setSelectedStatus('select.placeholder');\n    setIsPopupOpen(false);\n    dispatch(resetSelectedTicketIds());\n  };\n\n  const dynamicStyles = (selectedTicketsIds.length > 0) ? 'border-typography-dark hover:border-hover hover:cursor-pointer hover:text-hover hover:bg-light-200' : 'text-stroke-grey-300 border-stroke-grey-300 hover:cursor-default';\n\n  return (\n    <div title={getMessage('tickets.bulkAction.changeStatus')}>\n      <StatusIcon\n        role=\"button\"\n        className={classNames(dynamicStyles, 'border rounded text-typography-dark p-2 mr-1')}\n        onClick={handleClick}\n        tabIndex={(selectedTicketsIds.length > 0) ? 0 : undefined}\n        onKeyDown={(e) => e.key === 'Enter' && setIsPopupOpen(true)}\n        aria-label={getMessage('tickets.bulkAction.changeStatus')}\n      />\n      {isPopupOpen\n        && (\n        <Dialog\n          isOpen={isPopupOpen}\n          acceptButtonText={getMessage('confirm')}\n          onClose={onClose}\n          closeButtonText={getMessage('cancel')}\n          onAccept={onAccept}\n        >\n          <div className=\"mb-10\">\n            <InputLabel\n              label={getMessage('tickets.ticket.changeTicketsStatus')}\n            />\n            <Select\n              selectOptions={statusOptionsValues}\n              onChange={(value) => changeStatus(value)}\n              value={selectedStatus}\n              placeholder={getMessage('choose')}\n              autofocus\n            />\n          </div>\n        </Dialog>\n        ) }\n    </div>\n  );\n};\n\nexport default TicketChangeStatusAction;\n", "/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n/* eslint-disable react/jsx-props-no-spreading */\n\nimport * as React from 'react';\nimport { useState, useCallback } from 'react';\nimport { useForm, FormProvider } from 'react-hook-form';\nimport classNames from 'classnames';\nimport { useGetEmployeesQuery, usePostChangeTicketMutation } from '../../../../../api/appApi';\nimport { useAppDispatch } from '../../../../../hooks/reduxHooks';\nimport { resetSelectedTicketIds } from '../../../../../store/appSlice';\nimport useMessages from '../../../../../hooks/useMessages';\nimport RealizerIcon from '../../../../../icons/user.svg';\nimport Dialog from '../../../../../components/Dialog/Dialog';\nimport FormSearchableDropdown from '../../../../../components/FormInputs/FormSearchableDropdown';\nimport { InputLabel } from '../../../../../components/FormInputs/InputLabel';\n\nconst TicketAssignEmployeeAction = ({ selectedTicketsIds }: { selectedTicketsIds: string[] }) => {\n  const [isPopupOpen, setIsPopupOpen] = useState(false);\n  const [postChangeTicket] = usePostChangeTicketMutation();\n  const getMessage = useMessages();\n  const methods = useForm();\n  const realizerId = methods.watch('realizer_id');\n  const dispatch = useAppDispatch();\n\n  const handleClick = () => {\n    if (selectedTicketsIds.length > 0) setIsPopupOpen(true);\n  };\n\n  const onAccept = useCallback(() => {\n    const tickets: {\n      [key: string]: {\n        realizer_id: string\n      }\n    } = {};\n    function populatePayload(id: string) {\n      tickets[id] = { realizer_id: realizerId };\n    }\n    selectedTicketsIds.forEach((item) => populatePayload(item));\n    postChangeTicket({ tickets });\n    methods.setValue('realizer_id', '');\n  }, [realizerId]);\n\n  const onClose = () => {\n    setIsPopupOpen(false);\n    dispatch(resetSelectedTicketIds());\n  };\n\n  const dynamicStyles = (selectedTicketsIds.length > 0) ? 'border-typography-dark hover:border-hover hover:cursor-pointer hover:text-hover hover:bg-light-200' : 'text-stroke-grey-300 border-stroke-grey-300 hover:cursor-default';\n\n  return (\n    <div title={getMessage('tickets.bulkAction.changeRealizer')}>\n      <RealizerIcon\n        role=\"button\"\n        className={classNames(dynamicStyles, 'border rounded text-typography-dark p-2 mr-1')}\n        onClick={handleClick}\n        tabIndex={(selectedTicketsIds.length > 0) ? 0 : undefined}\n        onKeyDown={(e) => e.key === 'Enter' && setIsPopupOpen(true)}\n        aria-label={getMessage('tickets.bulkAction.changeRealizer')}\n      />\n      {isPopupOpen\n        && (\n        <Dialog\n          isOpen={isPopupOpen}\n          acceptButtonText={getMessage('confirm')}\n          onClose={onClose}\n          closeButtonText={getMessage('cancel')}\n          onAccept={onAccept}\n        >\n          <div className=\"mb-10\">\n            <InputLabel label={getMessage('tickets.ticket.changeTicketsRealizer')} autofocus />\n            <FormProvider {...methods}>\n              <FormSearchableDropdown\n                label=\" \"\n                className=\"mt-4 w-full\"\n                id=\"realizer_id\"\n                query={useGetEmployeesQuery}\n                ariaLabel={getMessage('form.ariaLabel.realizer')}\n              />\n            </FormProvider>\n          </div>\n        </Dialog>\n        ) }\n    </div>\n  );\n};\n\nexport default TicketAssignEmployeeAction;\n", "import * as React from 'react';\nimport { useState, useMemo, useCallback } from 'react';\nimport classNames from 'classnames';\nimport { useGetTicketCategoriesQuery, usePostChangeTicketMutation } from '../../../../../api/appApi';\nimport { useAppDispatch } from '../../../../../hooks/reduxHooks';\nimport { resetSelectedTicketIds } from '../../../../../store/appSlice';\nimport useMessages from '../../../../../hooks/useMessages';\nimport CategoryIcon from '../../../../../icons/category.svg';\nimport Dialog from '../../../../../components/Dialog/Dialog';\nimport { InputLabel } from '../../../../../components/FormInputs/InputLabel';\nimport { Select } from '../../../../../components/FormInputs/inputs/FormSelect';\nimport capitalize from '../../../../../../utils/formatters';\n\nconst TicketChangeCategoryAction = ({ selectedTicketsIds }: { selectedTicketsIds: string[] }) => {\n  const [isPopupOpen, setIsPopupOpen] = useState(false);\n  const [selectedCategory, setSelectedCategory] = useState('select.placeholder');\n  const [postChangeTicket] = usePostChangeTicketMutation();\n  const getMessage = useMessages();\n  const { data: ticketCategories } = useGetTicketCategoriesQuery();\n\n  const categoryOptionsValues = useMemo(() => ticketCategories?.map(({ id, name }) => ({\n    value: id,\n    optionLabel: capitalize(name),\n  })), [ticketCategories]);\n  const dispatch = useAppDispatch();\n\n  const handleClick = () => {\n    if (selectedTicketsIds.length > 0) setIsPopupOpen(true);\n  };\n\n  const changeCategory = (value: string) => {\n    setSelectedCategory(value);\n  };\n\n  const onAccept = useCallback(() => {\n    const tickets: {\n      [key: string]: {\n        category_id: string\n      }\n    } = {};\n    function populatePayload(id: string) {\n      tickets[id] = { category_id: selectedCategory };\n    }\n    selectedTicketsIds.forEach((item) => populatePayload(item));\n    postChangeTicket({ tickets });\n  }, [selectedCategory]);\n\n  const onClose = () => {\n    setSelectedCategory('select.placeholder');\n    setIsPopupOpen(false);\n    dispatch(resetSelectedTicketIds());\n  };\n\n  const dynamicStyles = (selectedTicketsIds.length > 0) ? 'border-typography-dark hover:border-hover hover:cursor-pointer hover:text-hover hover:bg-light-200' : 'text-stroke-grey-300 border-stroke-grey-300 hover:cursor-default';\n\n  return (\n    <div title={getMessage('tickets.bulkAction.changeCategory')}>\n      <CategoryIcon\n        role=\"button\"\n        className={classNames(dynamicStyles, 'border rounded text-typography-dark p-2 mr-1')}\n        onClick={handleClick}\n        tabIndex={(selectedTicketsIds.length > 0) ? 0 : undefined}\n        onKeyDown={(e) => e.key === 'Enter' && setIsPopupOpen(true)}\n        aria-label={getMessage('tickets.bulkAction.changeCategory')}\n      />\n      {isPopupOpen\n        && (\n        <Dialog\n          isOpen={isPopupOpen}\n          acceptButtonText={getMessage('confirm')}\n          onClose={onClose}\n          closeButtonText={getMessage('cancel')}\n          onAccept={onAccept}\n        >\n          <div className=\"mb-10\">\n            <InputLabel\n              label={getMessage('tickets.ticket.changeTicketsCategory')}\n            />\n            {categoryOptionsValues && (\n            <Select\n              selectOptions={categoryOptionsValues}\n              onChange={(value) => changeCategory(value)}\n              value={selectedCategory}\n              placeholder={getMessage('choose')}\n              autofocus\n            />\n            )}\n          </div>\n        </Dialog>\n        ) }\n    </div>\n  );\n};\n\nexport default TicketChangeCategoryAction;\n", "import * as React from 'react';\nimport { useMemo } from 'react';\nimport useMessages from '../../../../hooks/useMessages';\nimport Filters from '../../../../components/Filters/Filters';\nimport {\n  useGetTicketCategoriesQuery, useGetTicketStatusesQuery,\n} from '../../../../api/appApi';\nimport capitalize from '../../../../../utils/formatters';\nimport useHomeownerAssociationsMode from '../../../../hooks/useHomeownerAssociationsMode';\nimport { FilterConfig } from '../../../../components/FilterInput/FilterInput';\nimport useTenantlessMode from '../../../../hooks/useTenantlessMode';\n\nconst EmployeeTicketsFilters = () => {\n  const getMessage = useMessages();\n  const { data: ticketCategories } = useGetTicketCategoriesQuery();\n  const { data: ticketStatuses } = useGetTicketStatusesQuery();\n  const hoaMode = useHomeownerAssociationsMode();\n  const tenantlessMode = useTenantlessMode();\n\n  const categoryOptionsValues = useMemo(() => ticketCategories?.map(({ id, name }) => ({\n    value: id,\n    optionLabel: capitalize(name),\n  })), [ticketCategories]);\n\n  const statusOptionsValues = useMemo(() => ticketStatuses?.map(({ id, name }) => ({\n    value: id,\n    optionLabel: capitalize(name),\n  })), [ticketStatuses]);\n\n  const filterFields: FilterConfig[] = useMemo(() => [\n    {\n      type: 'multiselect',\n      id: 'status_ids',\n      label: getMessage('tickets.ticket.status'),\n      selectOptions: statusOptionsValues || [],\n    },\n    {\n      type: 'dateRange',\n      id: 'from_date',\n      toDateId: 'to_date',\n      label: getMessage('tickets.ticket.reportedAt'),\n    },\n    {\n      type: 'dateRange',\n      id: 'from_last_comment_at',\n      toDateId: 'to_last_comment_at',\n      label: getMessage('tickets.ticket.lastCommentAt'),\n    },\n    {\n      type: 'text',\n      id: 'number_title_search',\n      label: getMessage('tickets.ticket.titleOrNumber'),\n      ariaLabel: 'Szukaj po tytule lub numerze zg\u0142oszenia',\n    },\n    {\n      type: 'text',\n      id: 'venue_search',\n      label: getMessage('tickets.ticket.venueCodeAddress'),\n      ariaLabel: 'Szukaj po adresie lub kodzie lokalu',\n    },\n    ...hoaMode ? [\n      {\n        type: 'text',\n        id: 'homeowner_association_search',\n        label: getMessage('tickets.ticket.homeownerAssociationCodeName'),\n        ariaLabel: 'Szukaj po kodzie lub nazwie wsp\u00F3lnoty',\n      } as FilterConfig,\n    ] : [],\n    {\n      type: 'multiselect',\n      id: 'category_ids',\n      label: getMessage('tickets.ticket.category'),\n      selectOptions: categoryOptionsValues || [],\n    },\n    ...tenantlessMode ? [] : [{\n      type: 'text',\n      id: 'reporter_search',\n      label: getMessage('tickets.ticket.reporterNameCode'),\n      ariaLabel: 'Szukaj po imieniu i nazwisku zg\u0142aszaj\u0105cego',\n    } as FilterConfig],\n    {\n      type: 'text',\n      id: 'realizer_search',\n      label: getMessage('tickets.ticket.realizerNameCode'),\n      ariaLabel: 'Szukaj po imieniu i nazwisku realizuj\u0105cego',\n    },\n  ], [hoaMode, tenantlessMode, ticketStatuses]);\n\n  return (\n    <Filters\n      filterId=\"employeeTicketsTable\"\n      filterFields={filterFields}\n    />\n  );\n};\n\nexport default EmployeeTicketsFilters;\n", "import * as React from 'react';\nimport { useState, useEffect } from 'react';\nimport { useNavigate } from 'react-router';\nimport { useForm, FormProvider } from 'react-hook-form';\nimport { useAppSelector } from '../../hooks/reduxHooks';\nimport useMessages from '../../hooks/useMessages';\nimport useFilters from '../../hooks/useFilters';\nimport { usePermissions } from '../../hooks/usePermissions';\nimport Button from '../../components/Button/Button';\nimport PageHeader from '../../components/Layout/PageHeader';\nimport TenantTicketsFilters from './TicketsFilters/TenantTicketsFilters/TenantTicketsFilters';\nimport ContentWrapper from '../../components/ContentWrapper/ContentWrapper';\nimport Layout from '../../components/Layout/Layout';\nimport { FormInput } from '../../components/FormInputs';\nimport TenantTicketsList from './TicketsList/TenantTicketsList/TenantTicketsList';\nimport FiltersIcon from '../../icons/filters.svg';\nimport PlusIcon from '../../icons/plus.svg';\n\ninterface TicketsFilterInputs {\n  number_title_search?: string | '',\n}\n\nconst TenantTicketsPage = () => {\n  const getMessage = useMessages();\n  const navigate = useNavigate();\n  const { checkPermission } = usePermissions();\n  const hasFilterSet = useAppSelector((state) => !!state.app.filters.find((filter) => filter.id === 'ticketsTable'));\n  const [filtersOpen, setFiltersOpen] = useState(hasFilterSet);\n  const { saveFilterValues, filterValues } = useFilters<TicketsFilterInputs>('ticketsTable');\n  const methods = useForm<TicketsFilterInputs>({\n    defaultValues: {\n      number_title_search: filterValues?.number_title_search || '',\n    },\n  });\n\n  useEffect(() => {\n    methods.watch(\n      (filters) => {\n        saveFilterValues(filters);\n      },\n    );\n  }, [methods.watch]);\n\n  checkPermission('tickets_add');\n\n  return (\n    <Layout currentPage=\"tickets\">\n      <PageHeader pageTitle={getMessage('local.tickets.ticketsList')} currentPage=\"tickets\">\n        {!filtersOpen && (\n          /* eslint-disable-next-line react/jsx-props-no-spreading */\n          <FormProvider {...methods}>\n            <FormInput\n              className=\"col-span-2\"\n              id=\"number_title_search\"\n              type=\"search\"\n              inputClassName=\"w-full my-0\"\n              placeholder={getMessage('filters.search')}\n              ariaLabel=\"Szukaj zg\u0142oszenia\"\n            />\n          </FormProvider>\n        )}\n        <Button\n          Icon={FiltersIcon}\n          styleType=\"secondary\"\n          size=\"small\"\n          onClick={() => setFiltersOpen((filtersOpen) => !filtersOpen)}\n          className=\"mx-3 py-1 appearance-none\"\n        >\n          {getMessage('filters')}\n        </Button>\n        <Button\n          onClick={() => navigate('/zgloszenia/nowe')}\n          className=\"py-1\"\n          size=\"small\"\n          Icon={PlusIcon}\n        >\n          {getMessage('local.tickets.newTicket')}\n        </Button>\n      </PageHeader>\n      <>\n        {filtersOpen && (<TenantTicketsFilters />)}\n        <ContentWrapper>\n          <TenantTicketsList />\n        </ContentWrapper>\n      </>\n    </Layout>\n  );\n};\n\nexport default TenantTicketsPage;\n", "import * as React from 'react';\nimport useMessages from '../../../../hooks/useMessages';\nimport Filters from '../../../../components/Filters/Filters';\nimport {\n  useGetTicketCategoriesQuery, useGetTicketStatusesQuery,\n} from '../../../../api/appApi';\nimport capitalize from '../../../../../utils/formatters';\n\nconst TicketsFilters = () => {\n  const getMessage = useMessages();\n  const { data: ticketCategories } = useGetTicketCategoriesQuery();\n  const { data: ticketStatuses } = useGetTicketStatusesQuery();\n\n  const categoryOptionsValues = ticketCategories?.map(({ id, name }) => ({\n    value: id,\n    optionLabel: capitalize(name),\n  }));\n\n  const statusOptionsValues = ticketStatuses?.map(({ id, name }) => ({\n    value: id,\n    optionLabel: capitalize(name),\n  }));\n\n  return (\n\n    <Filters\n      filterId=\"ticketsTable\"\n      filterFields={[\n        {\n          type: 'text',\n          id: 'number_title_search',\n          label: getMessage('tickets.ticket.titleOrNumber'),\n          ariaLabel: 'Szukaj po tytule lub numerze zg\u0142oszenia',\n        },\n        {\n          type: 'dateRange',\n          id: 'from_date',\n          toDateId: 'to_date',\n          label: getMessage('tickets.ticket.date'),\n        },\n        {\n          type: 'multiselect',\n          id: 'status_ids',\n          label: getMessage('tickets.ticket.status'),\n          selectOptions: statusOptionsValues || [],\n        },\n        {\n          type: 'multiselect',\n          id: 'category_ids',\n          label: getMessage('tickets.ticket.category'),\n          selectOptions: categoryOptionsValues || [],\n        },\n      ]}\n    />\n  );\n};\n\nexport default TicketsFilters;\n", "import * as React from 'react';\nimport { useEffect } from 'react';\nimport { format } from 'date-fns';\nimport { useGetTicketsQuery } from '../../../../api/appApi';\nimport { useAppSelector } from '../../../../hooks/reduxHooks';\nimport ResponsiveTable, {\n  ResponsiveTableHeader, ResponsiveTableBody, ResponsiveTableBodyRow,\n} from '../../../../components/Table/ResponsiveTable';\nimport { TableBodyCell } from '../../../../components/Table/Table';\nimport Chip from '../../../../components/Chip/Chip';\nimport capitalize from '../../../../../utils/formatters';\nimport { TenantTicketsListItemData } from '../../../../api/modules/tickets/ticketsTypes';\nimport usePagination from '../../../../hooks/usePagination';\nimport PaginationControls from '../../../../components/Table/PaginationControls';\nimport useFilters from '../../../../hooks/useFilters';\nimport useSortParams from '../../../../hooks/useSortParams';\nimport { TableId } from '../../../../store/appSlice';\nimport TableContentPlaceholder from '../../../../components/Table/TableContentPlaceholder';\n\nconst TicketsList = () => {\n  const [selectedPage, setSelectedPage] = usePagination('ticketsTable');\n  const { sortParamsValues } = useSortParams('ticketsTable');\n  const { filterValues } = useFilters('ticketsTable');\n  const { selectedVenueId } = useAppSelector((state) => state.app);\n\n  useEffect(() => {\n    setSelectedPage(1);\n  }, []);\n\n  const { data } = useGetTicketsQuery({\n    ...sortParamsValues,\n    ...filterValues,\n    venues_ids: selectedVenueId,\n    page: selectedPage.toString(),\n  }, { refetchOnMountOrArgChange: true });\n  const ticketsData = data?.tickets || [] as TenantTicketsListItemData[];\n\n  const ids = data?.tickets.map(({ id }) => id) || [];\n\n  const columnLabels = [\n    {\n      label: 'tickets.ticket.id',\n      id: 'ticket_number',\n    },\n    {\n      label: 'tickets.ticket.reportedAt',\n      id: 'reported_at',\n    },\n    { label: 'tickets.ticket.title' },\n    { label: 'tickets.ticket.category' },\n    { label: 'tickets.ticket.status' },\n  ];\n\n  return (\n    <>\n      <ResponsiveTable className=\"col-span-full\">\n        {ticketsData.length === 0 ? <TableContentPlaceholder /> : (\n          <>\n            <ResponsiveTableHeader ids={ids} columnLabels={columnLabels} tableName={'ticketsTable' as TableId} />\n            <ResponsiveTableBody>\n              {ticketsData.map(({\n                id, ticketNumber, reportedAt, title, category, status,\n              }) => (\n                <ResponsiveTableBodyRow\n                  key={id}\n                  clickable={({\n                    href: `/zgloszenia/${id}`,\n                    ariaLabel: `Przejd\u017A do szczeg\u00F3\u0142\u00F3w zg\u0142oszenia nr ${ticketNumber} ${title}`,\n                  })}\n                >\n                  <TableBodyCell>{ticketNumber}</TableBodyCell>\n                  <TableBodyCell>\n                    <Chip chipStyle=\"ghost\" className=\"w-fit\">\n                      {format(new Date(reportedAt), 'dd-MM-yyyy')}\n                    </Chip>\n                  </TableBodyCell>\n                  <TableBodyCell className=\"font-semibold text-typography-black\">{title}</TableBodyCell>\n                  <TableBodyCell className=\"font-semibold text-typography-black\">{category && capitalize(category)}</TableBodyCell>\n                  <TableBodyCell>\n                    <Chip chipStyle={status === 'completed' ? 'gray' : 'primary'} className=\"w-fit\">\n                      {status && capitalize(status)}\n                    </Chip>\n                  </TableBodyCell>\n                </ResponsiveTableBodyRow>\n              ))}\n            </ResponsiveTableBody>\n          </>\n        )}\n      </ResponsiveTable>\n      {data?.metadata && (\n        <PaginationControls\n          className=\"col-span-full\"\n          selectedPage={selectedPage}\n          setSelectedPage={setSelectedPage}\n          paginationMetadata={data.metadata}\n        />\n      )}\n    </>\n  );\n};\n\nexport default TicketsList;\n", "import * as React from 'react';\nimport { useParams } from 'react-router-dom';\nimport { useGetTicketQuery } from '../../../api/appApi';\nimport useMessages from '../../../hooks/useMessages';\nimport PageHeader from '../../../components/Layout/PageHeader';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport Layout from '../../../components/Layout/Layout';\nimport EmployeeTicketPage from './EmployeeTicketPage/EmployeeTicketPage';\nimport TenantTicketPage from './TenantTicketPage/TenantTicketPage';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport TicketMobileInfoCard from './EmployeeTicketPage/TicketInfoCard/TicketMobileInfoCard';\n\nconst TicketPage = () => {\n  const {\n    checkModuleEnabled, checkTenantDataEnabled, hasRoleType, isTenantDataEnabled,\n  } = usePermissions();\n  const { id } = useParams();\n  if (!id) return null;\n  const tenantAccessDisabled = !hasRoleType('worker') && !isTenantDataEnabled();\n  const { data: ticket } = useGetTicketQuery(id, { skip: tenantAccessDisabled });\n  const getMessage = useMessages();\n\n  checkModuleEnabled('tickets');\n  if (!hasRoleType('worker')) checkTenantDataEnabled();\n\n  return (\n    <Layout currentPage=\"tickets\">\n      <PageHeader pageTitle={`${getMessage('tickets.ticket.ticket')} ${ticket ? ticket.ticketNumber : ''}`} currentPage=\"tickets\" path=\"/zgloszenia\" />\n      {hasRoleType('worker')\n          && <TicketMobileInfoCard />}\n      <ContentWrapper>\n        {hasRoleType('worker')\n          ? (<EmployeeTicketPage />)\n          : (<TenantTicketPage />) }\n      </ContentWrapper>\n    </Layout>\n  );\n};\n\nexport default TicketPage;\n", "/* eslint-disable react/jsx-props-no-spreading */\nimport * as React from 'react';\nimport { useState } from 'react';\nimport { useParams } from 'react-router-dom';\nimport format from 'date-fns/format';\nimport classNames from 'classnames';\nimport { useGetTicketQuery } from '../../../../api/appApi';\nimport useMessages from '../../../../hooks/useMessages';\nimport Card from '../../../../components/Card/Card';\nimport Chip from '../../../../components/Chip/Chip';\nimport capitalize from '../../../../../utils/formatters';\nimport CommentsList from '../../../../components/CommentsList/CommentsList';\nimport AttachmentPreview from '../../../../components/AttachmentPreview/AttachmentPreview';\nimport { EmployeeShowTicketData } from '../../../../api/modules/tickets/ticketsTypes';\nimport DocumentIcon from '../../../../icons/document.svg';\nimport TicketDesktopInfoCard from './TicketInfoCard/TicketDesktopInfoCard';\nimport useDocumentTitle from '../../../../hooks/useDocumentTitle';\nimport useTenantlessMode from '../../../../hooks/useTenantlessMode';\n\nconst EmployeeTicketPage = () => {\n  const { id } = useParams();\n  const { data, isSuccess } = useGetTicketQuery(id);\n  const getMessage = useMessages();\n  const tenantlessMode = useTenantlessMode();\n\n  useDocumentTitle(getMessage('tickets.ticket.pageTitle', { number: data?.ticketNumber }));\n\n  const {\n    title, status, reportedAt, description, attachments, publicComments, privateComments, category, venueAddress,\n  } = isSuccess ? data as EmployeeShowTicketData : {} as EmployeeShowTicketData;\n\n  const [showPublicComments, setShowPublicComments] = useState(!tenantlessMode);\n\n  const openPublicComments = () => {\n    setShowPublicComments(true);\n  };\n\n  const openEmployeeComments = () => {\n    setShowPublicComments(false);\n  };\n\n  if (!id) return null;\n\n  return (\n    <>\n      <Card className=\"col-span-full lg:col-span-9 row-span-1\">\n        <div className=\"flex justify-between\">\n          <h4 className=\"text-header-xs md:text-header-sm inline mr-6\">{title}</h4>\n          <div className=\"flex flex-wrap justify-end\">\n            <Chip chipStyle=\"ghost\" className=\"mb-1 md:mb-0\" screenReaderOnlyText=\"Data utworzenia\">\n              {reportedAt && format(new Date(reportedAt), 'dd-MM-yyyy')}\n            </Chip>\n            <Chip chipStyle=\"primary\" className=\"ml-3\" screenReaderOnlyText=\"Status\">\n              {status && capitalize(status.name)}\n            </Chip>\n          </div>\n        </div>\n        <div className=\"flex mt-2 text-text-lg-medium\">\n          <div className=\"flex mr-4 text-main\">\n            <DocumentIcon className=\"stroke-current\" />\n            {category && (\n              <p className=\"inline-block ml-1\">\n                <span className=\"visually-hidden\">Kategoria</span>\n                {category.name}\n              </p>\n            )}\n          </div>\n          {venueAddress && (\n          <p className=\"text-typography-dark\">\n            <span className=\"visually-hidden\">Adres lokalu</span>\n            {venueAddress}\n          </p>\n          )}\n        </div>\n        <p className=\"text-typography-dark text-text-lg-medium my-7 whitespace-pre-line\">{description}</p>\n        {attachments && attachments?.length > 0 && (\n        <ol className=\"flex flex-wrap\">\n          {attachments?.map(({\n            filename, path, contentType, description,\n          }) => (\n            <AttachmentPreview filename={filename} path={path} contentType={contentType} description={description} key={path} />))}\n        </ol>\n        )}\n      </Card>\n      {data && <TicketDesktopInfoCard className=\"row-span-2\" />}\n      <div className=\"col-span-full lg:col-span-9\">\n        {!tenantlessMode && (\n        <div className=\"flex text-text-lg-semibold md:text-title-semibold\">\n          <button\n            className={classNames(\n              'border border-stroke-grey-100 rounded-tl-md w-[50%] px-5 md:px-8',\n              { 'py-4 bg-white text-main': showPublicComments },\n              { 'bg-stroke-grey-100 text-typography-dark': !showPublicComments },\n            )}\n            type=\"button\"\n            onClick={openPublicComments}\n          >\n            {getMessage('tickets.ticket.comments.discussionWithTenant')}\n          </button>\n          <button\n            className={classNames(\n              'border border-stroke-grey-100 rounded-tr-md w-[50%] px-5 md:px-8',\n              { 'py-4 bg-white text-main': !showPublicComments },\n              { 'bg-stroke-grey-100 text-typography-dark': showPublicComments },\n            )}\n            type=\"button\"\n            onClick={openEmployeeComments}\n          >\n            {getMessage('tickets.ticket.comments.discussionWithEmployee')}\n          </button>\n        </div>\n        )}\n        <Card className=\"col-span-full lg:col-span-9 row-span-1 rounded-t-none border-t-none !pt-0\">\n          {!tenantlessMode && showPublicComments && <CommentsList ticketId={id} comments={publicComments} publicComment />}\n          {(tenantlessMode || !showPublicComments) && <CommentsList ticketId={id} comments={privateComments} publicComment={false} />}\n        </Card>\n      </div>\n    </>\n  );\n};\n\nexport default EmployeeTicketPage;\n", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgDocument = (props: SVGProps<SVGSVGElement>) => <svg width={20} height={20} viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><g id=\"Iconly/Light/Document\"><g id=\"Document\"><path id=\"Stroke 1\" d=\"M13.0967 13.5194H7.08008\" strokeWidth={1.5} stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path id=\"Stroke 2\" d=\"M13.0967 10.0307H7.08008\" strokeWidth={1.5} stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path id=\"Stroke 3\" d=\"M9.37591 6.54997H7.08008\" strokeWidth={1.5} stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path id=\"Stroke 4\" fillRule=\"evenodd\" stroke=\"currentColor\" clipRule=\"evenodd\" d=\"M13.2572 2.2915C13.2572 2.2915 6.85965 2.29484 6.84965 2.29484C4.54965 2.309 3.12549 3.82234 3.12549 6.13067V13.794C3.12549 16.114 4.56049 17.6332 6.88049 17.6332C6.88049 17.6332 13.2772 17.6307 13.288 17.6307C15.588 17.6165 17.013 16.1023 17.013 13.794V6.13067C17.013 3.81067 15.5772 2.2915 13.2572 2.2915Z\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /></g></g></svg>;\nexport default SvgDocument;", "import * as React from 'react';\nimport DesktopInfoCard from '../../../../../components/InfoCard/DesktopInfoCard/DesktopInfoCard';\nimport TicketInfoCard from './TicketInfoCard';\n\nconst TicketDesktopInfoCard = ({ className }: { className?: string }) => (\n  <DesktopInfoCard className={className}>\n    <TicketInfoCard />\n  </DesktopInfoCard>\n);\n\nexport default TicketDesktopInfoCard;\n", "import * as React from 'react';\nimport {\n  useMemo, useCallback, useState, useEffect,\n} from 'react';\nimport { useNavigate } from 'react-router';\nimport { useIntl } from 'react-intl';\nimport { useParams } from 'react-router-dom';\nimport useMessages from '../../../../../hooks/useMessages';\nimport { InputLabel } from '../../../../../components/FormInputs/InputLabel';\nimport {\n  useGetEmployeesQuery,\n  usePostChangeTicketMutation,\n  useGetTicketCategoriesQuery,\n  useGetTicketQuery,\n  useGetTicketStatusesQuery,\n} from '../../../../../api/appApi';\nimport capitalize from '../../../../../../utils/formatters';\nimport { Select } from '../../../../../components/FormInputs/inputs/FormSelect';\nimport Button from '../../../../../components/Button/Button';\nimport { EmployeeShowTicketData } from '../../../../../api/modules/tickets/ticketsTypes';\nimport SearchableDropdown from '../../../../../components/SearchableDropdown/SearchableDropdown';\nimport useHomeownerAssociationsMode from '../../../../../hooks/useHomeownerAssociationsMode';\nimport { FormNotice } from '../../../../../components/FormNotice/FormNotice';\nimport { tasksLabel } from '../../../../../../utils/common';\nimport useTenantlessMode from '../../../../../hooks/useTenantlessMode';\n\nconst TicketInfoCard = () => {\n  const [realizerState, setRealizerState] = useState<string | null>(null);\n  const hoa = useHomeownerAssociationsMode();\n  const tenantlessMode = useTenantlessMode();\n\n  const getMessage = useMessages();\n  const navigate = useNavigate();\n  const intl = useIntl();\n  const { data: ticketCategories } = useGetTicketCategoriesQuery();\n  const { data: ticketStatuses } = useGetTicketStatusesQuery();\n  const [postChange, result] = usePostChangeTicketMutation();\n  const { id } = useParams();\n  const { data, isSuccess } = useGetTicketQuery(id);\n\n  const {\n    status, category, reporter, tasks, realizer, tenantName, venueAddress, homeownerAssociationName,\n  } = isSuccess ? data as EmployeeShowTicketData : {} as EmployeeShowTicketData;\n\n  useEffect(() => {\n    if (realizer) setRealizerState(realizer);\n  }, [realizer]);\n\n  const statusOptionsValues = useMemo(() => ticketStatuses?.map(({ id, name }) => ({\n    value: id,\n    optionLabel: capitalize(name),\n  })) || [], [ticketStatuses]);\n\n  const categoryOptionsValues = useMemo(() => ticketCategories?.map(({ id, name }) => ({\n    value: id,\n    optionLabel: capitalize(name),\n  })), [ticketCategories]);\n\n  const changeParam = useCallback((paramName: string, paramValue: string): void => {\n    if (id) {\n      postChange({\n        tickets: {\n          [id]: {\n            [paramName]: paramValue,\n          },\n        },\n      });\n    }\n  }, [id]);\n\n  return (\n    <div className=\"w-full flex flex-col text-text-md-semibold\">\n      <section className=\"border-b pb-4 tablet:flex tablet:w-full\">\n        <div className=\"tablet:mr-5 tablet:w-1/4\">\n          {ticketStatuses && (\n          <>\n            <InputLabel\n              label={getMessage('tickets.ticket.status')}\n            />\n            <Select\n              selectOptions={statusOptionsValues}\n              onChange={(id) => changeParam('status_id', id)}\n              value={status.id}\n            />\n          </>\n          )}\n        </div>\n        <div className=\"tablet:mr-5 tablet:w-1/4\">\n          <InputLabel\n            label={getMessage('tickets.ticket.category')}\n          />\n          {categoryOptionsValues && (\n          <Select\n            selectOptions={categoryOptionsValues}\n            onChange={(id) => changeParam('category_id', id)}\n            value={category.id}\n          />\n          )}\n        </div>\n        <div className=\"tablet:mr-5 tablet:w-1/4\">\n          <InputLabel\n            label={getMessage('tasks.task.realizer')}\n            showReset={!!realizerState}\n            resetButtonText={getMessage('remove')}\n            onReset={() => {\n              changeParam('realizer_id', '');\n              setRealizerState(null);\n            }}\n          />\n          <SearchableDropdown\n            className=\"w-full\"\n            query={useGetEmployeesQuery}\n            onSelect={(id) => changeParam('realizer_id', id)}\n            initialState={realizerState}\n            ariaLabel={getMessage('form.ariaLabel.realizer')}\n          />\n        </div>\n        {/* @ts-ignore */}\n        {result.isError && <FormNotice noticeClassName=\"col-span-full\" type=\"error\" message={result.error.data?.errors || getMessage('form.error')} />}\n      </section>\n      <section className=\"w-full border-b py-4\">\n        {!tenantlessMode && (\n        <p className=\"text-text-md-semibold text-typography-dark\">\n          {getMessage('tickets.ticket.reporterName')}\n          <span className=\"text-text-md-medium ml-2\">\n            {reporter}\n          </span>\n        </p>\n        )}\n        {!tenantlessMode && (\n        <p className=\"text-text-md-semibold text-typography-dark\">\n          {getMessage('tickets.ticket.tenant')}\n          <span className=\"text-text-md-medium ml-2\">\n            {tenantName || '-'}\n          </span>\n        </p>\n        )}\n        <p className=\"text-text-md-semibold text-typography-dark\">\n          {getMessage('tickets.ticket.venueAddress')}\n          <span className=\"text-text-md-medium ml-2\">\n            {venueAddress || '-'}\n          </span>\n        </p>\n        {hoa && (\n          <p className=\"text-text-md-semibold text-typography-dark\">\n            {getMessage('tickets.ticket.homeownerAssociationName')}\n            <span className=\"text-text-md-medium ml-2\">\n              {homeownerAssociationName || '-'}\n            </span>\n          </p>\n        )}\n      </section>\n      {!tenantlessMode && (\n      <section className=\" w-full tablet:flex tablet:justify-between tablet:items-end mb-4 lg:mb-0 pt-4\">\n        {tasks && tasks.length > 0 && (\n          <div>\n            <p className=\"text-text-md-semibold text-typography-dark \">\n              {intl.formatMessage(\n                { id: 'tickets.ticket.relatedTasks' },\n                {\n                  tasksCount: tasks.length,\n                  taskLabel: tasksLabel(tasks.length),\n                },\n              )}\n            </p>\n            {tasks.map((task) => (\n              <a\n                key={task.id}\n                className=\"underline cursor-pointer text-typography-dark block hover:text-main mobile:select-none\"\n                href={`/zadania/${task.id}`}\n                tabIndex={0}\n                aria-label={intl.formatMessage(\n                  { id: 'tasks.task.goToTask' },\n                  { taskNumberTitle: `${task.taskNumber} ${task.title}` },\n                )}\n              >\n                {`Nr ${task.taskNumber} ${task.title}`}\n              </a>\n            ))}\n          </div>\n        )}\n        <Button\n          className=\"min-w-full tablet:min-w-fit lg:w-auto mt-4\"\n          onClick={() => navigate(`/zgloszenia/nowe-zadanie/${id}`)}\n        >\n          {getMessage('tickets.ticket.addTask')}\n        </Button>\n      </section>\n      )}\n    </div>\n  );\n};\n\nexport default TicketInfoCard;\n", "import { useEffect } from \"react\";\n\nconst useDocumentTitle = (title: string) => {\n  useEffect(() => {\n    document.title = title;\n  }, [title]);\n};\n\nexport default useDocumentTitle;", "import * as React from 'react';\nimport { useParams } from 'react-router-dom';\nimport format from 'date-fns/format';\nimport { useGetTicketQuery } from '../../../../api/appApi';\nimport useMessages from '../../../../hooks/useMessages';\nimport Card from '../../../../components/Card/Card';\nimport Chip from '../../../../components/Chip/Chip';\nimport capitalize from '../../../../../utils/formatters';\nimport CommentsList from '../../../../components/CommentsList/CommentsList';\nimport AttachmentPreview from '../../../../components/AttachmentPreview/AttachmentPreview';\nimport { TenantShowTicketData } from '../../../../api/modules/tickets/ticketsTypes';\nimport DocumentIcon from '../../../../icons/document.svg';\nimport FallbackRender from '../../../FallbackRender/FallbackRender';\nimport Spinner from '../../../../components/Spinner/Spinner';\n\nconst TenantTicketPage = () => {\n  const { id } = useParams();\n  const {\n    data, isSuccess, isLoading, error,\n  } = useGetTicketQuery(id);\n  const getMessage = useMessages();\n\n  if (!id) return null;\n\n  const {\n    title, status, reportedAt, description, attachments, publicComments, category, venueAddress,\n  } = isSuccess ? data : {} as TenantShowTicketData;\n\n  if (isLoading) return (<Card className=\"col-span-full\"><Spinner /></Card>);\n  if (error && ('originalStatus' in error)) return (<Card className=\"col-span-full\"><FallbackRender status={error.originalStatus} /></Card>);\n\n  return (\n    <Card className=\"col-span-full\">\n      <section className=\"border-b py-3\">\n        <div className=\"flex justify-between\">\n          <h4 className=\"text-header-sm inline mr-6\">{title}</h4>\n          <div className=\"flex\">\n            <Chip chipStyle=\"ghost\" className=\"mx-3\" screenReaderOnlyText=\"Data utworzenia zg\u0142oszenia\" tooltipText=\"Data utworzenia\">\n              {reportedAt && format(new Date(reportedAt), 'dd-MM-yyyy')}\n            </Chip>\n            <Chip chipStyle=\"primary\" screenReaderOnlyText=\"Status\">\n              {status && capitalize(status.name)}\n            </Chip>\n          </div>\n        </div>\n        <div className=\"flex mt-2 text-text-lg-medium\">\n          <div className=\"flex mr-4 text-main\">\n            <DocumentIcon className=\"stroke-current\" />\n            {category && (\n              <p className=\"inline-block ml-1 text-text-lg-medium\">\n                <span className=\"visually-hidden\">Kategoria</span>\n                {category.name}\n              </p>\n            )}\n          </div>\n          {venueAddress && (\n            <p>\n              <span className=\"visually-hidden\">Adres lokalu</span>\n              {venueAddress}\n            </p>\n          )}\n        </div>\n        <p className=\"text-typography-dark text-text-lg-medium my-7 whitespace-pre-line\">{description}</p>\n        <div className=\"my-9\">\n          {attachments && attachments.length > 0 && (\n          <ol className=\"flex\">\n            {attachments?.map(({\n              filename, path, contentType, description,\n            }) => (\n              <AttachmentPreview filename={filename} path={path} contentType={contentType} description={description} key={path} />))}\n          </ol>\n          )}\n        </div>\n      </section>\n      <section>\n        <h3 className=\"inline-block my-5 text-title-semibold\">{getMessage('tickets.ticket.comments.discussion')}</h3>\n        <CommentsList ticketId={id} comments={publicComments} publicComment />\n      </section>\n    </Card>\n  );\n};\n\nexport default TenantTicketPage;\n", "import * as React from 'react';\nimport useMessages from '../../hooks/useMessages';\n\nconst FallbackRender = ({ status }: { status?: number }) => {\n  const getMessage = useMessages();\n\n  return (\n    <div className=\"text-center\">\n      <div>\n        <h4 className=\"mb-2 text-title-semibold\">{status === 404 ? getMessage(`fallbackRender.error.${status}.header`) : getMessage('fallbackRender.header')}</h4>\n      </div>\n      <p className=\"text-text-lg-medium text-typography-dark\">\n        {status === 404 && getMessage(`fallbackRender.error.${status}.paragraph`)}\n        <a href=\"/\" className=\"text-main hover:underline\">{getMessage('fallbackRender.backToHomepage')}</a>\n      </p>\n    </div>\n  );\n};\n\nexport default FallbackRender;\n", "import * as React from 'react';\nimport MobileInfoCard from '../../../../../components/InfoCard/MobileInfoCard/MobileInfoCard';\nimport TicketInfoCard from './TicketInfoCard';\n\nconst TicketMobileInfoCard = () => (\n  <MobileInfoCard title=\"Info\">\n    <TicketInfoCard />\n  </MobileInfoCard>\n);\n\nexport default TicketMobileInfoCard;\n", "/* eslint-disable react/jsx-props-no-spreading */\nimport * as React from 'react';\nimport useMessages from '../../../hooks/useMessages';\nimport PageHeader from '../../../components/Layout/PageHeader';\nimport Card from '../../../components/Card/Card';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport Layout from '../../../components/Layout/Layout';\nimport EmployeeTicketForm from './EmployeeTicketForm/EmployeeTicketForm';\nimport TenantTicketForm from './TenantTicketForm/TenantTicketForm';\nimport { usePermissions } from '../../../hooks/usePermissions';\n\ntype TicketAttachment = {\n  file: FileList | undefined,\n  description: string\n};\n\nexport type TicketInputs = {\n  title: string,\n  venue_id?: string,\n  category_id: string,\n  description: string,\n  attachments: TicketAttachment[],\n  homeowner_association_id?: string,\n  tenant_id?: string,\n  realizer_id?: string,\n  status_id?: string,\n};\n\nconst TicketForm = () => {\n  const getMessage = useMessages();\n  const { hasRoleType, checkModuleEnabled, checkTenantDataEnabled } = usePermissions();\n\n  checkModuleEnabled('tickets');\n  if (!hasRoleType('worker')) checkTenantDataEnabled();\n\n  return (\n    <Layout currentPage=\"tickets\">\n      <PageHeader pageTitle={getMessage('local.tickets.newTicket')} currentPage=\"tickets\" path=\"/zgloszenia\" />\n      <ContentWrapper>\n        <Card className=\"col-span-full\">\n          <h4 className=\"text-header-sm inline-block mb-7\">{getMessage('tickets.ticket.describeProblem')}</h4>\n          {hasRoleType('worker') ? <EmployeeTicketForm />\n            : <TenantTicketForm /> }\n        </Card>\n      </ContentWrapper>\n    </Layout>\n  );\n};\nexport default TicketForm;\n", "/* eslint-disable react/jsx-props-no-spreading */\n\nimport * as React from 'react';\nimport { useEffect, useMemo } from 'react';\nimport { useForm, FormProvider, useFieldArray } from 'react-hook-form';\nimport { useNavigate } from 'react-router';\nimport useMessages from '../../../../hooks/useMessages';\nimport {\n  usePostTicketMutation, useGetTicketCategoriesQuery, useGetTenantsQuery, useGetVenuesQuery, useGetHomeownerAssociationsQuery,\n  useGetEmployeesQuery, useGetFullTicketStatusesQuery,\n} from '../../../../api/appApi';\nimport {\n  FormInput, FormSelect, FormTextarea, FormFileInput,\n} from '../../../../components/FormInputs';\nimport Button from '../../../../components/Button/Button';\nimport FileUploadPreview from '../../../../components/AttachmentPreview/FileUploadPreview/FileUploadPreview';\nimport { translateTicketsToFormData } from '../../../../api/modules/tickets/ticketsTranslator';\nimport { TicketInputs } from '../TicketForm';\nimport FormSearchableDropdown from '../../../../components/FormInputs/FormSearchableDropdown';\nimport capitalize from '../../../../../utils/formatters';\nimport useHomeownerAssociationsMode from '../../../../hooks/useHomeownerAssociationsMode';\nimport { FormNotice } from '../../../../components/FormNotice/FormNotice';\nimport useTenantlessMode from '../../../../hooks/useTenantlessMode';\n\nconst EmployeeTicketForm = () => {\n  const getMessage = useMessages();\n  const navigate = useNavigate();\n  const [postTicketData, result] = usePostTicketMutation();\n  const { data: ticketCategories } = useGetTicketCategoriesQuery();\n  const { data: ticketStatuses } = useGetFullTicketStatusesQuery();\n  const hoaMode = useHomeownerAssociationsMode();\n  const tenantlessMode = useTenantlessMode();\n\n  const methods = useForm<TicketInputs>({\n    defaultValues: {\n      attachments: [{ description: '' }],\n    },\n  });\n\n  useEffect(() => {\n    methods.setValue('status_id', ticketStatuses?.find((status) => status.name === 'open')?.id);\n  }, [ticketStatuses]);\n\n  const homeownerAssociationId = methods.watch('homeowner_association_id');\n  const venueId = methods.watch('venue_id');\n  const tenantId = tenantlessMode ? undefined : methods.watch('tenant_id');\n\n  const { fields, append, remove } = useFieldArray({ name: 'attachments', control: methods.control });\n\n  const attachments = methods.watch('attachments');\n  const allAttachmentsSelected = attachments.every((attachment) => attachment.file?.length);\n\n  useEffect(() => {\n    if (allAttachmentsSelected) {\n      append({ file: undefined, description: '' });\n    }\n  }, [allAttachmentsSelected]);\n\n  const onSubmit = (data: TicketInputs) => {\n    postTicketData({\n      ticket: translateTicketsToFormData(data),\n    });\n  };\n\n  useEffect(() => {\n    if (result.status === 'fulfilled') navigate('/zgloszenia');\n  }, [result.status]);\n\n  const categorySelectOptions = useMemo(() => ticketCategories?.map(({ id, name }) => ({\n    value: id,\n    optionLabel: capitalize(name),\n  })), [ticketCategories]);\n\n  const statusSelectOptions = useMemo(() => ticketStatuses?.map(({ id, externalName }) => ({\n    value: id,\n    optionLabel: capitalize(externalName),\n  })) || [], [ticketStatuses]);\n\n  return (\n    <FormProvider {...methods}>\n      {/* @ts-ignore */}\n      {result.error && <FormNotice type=\"error\" message={result.error.data?.errors || getMessage('form.error')} />}\n      <form onSubmit={methods.handleSubmit(onSubmit)} className=\"grid grid-cols-12 col-span-12\">\n        <section className=\"col-span-12 md:col-span-6\">\n          {categorySelectOptions && (\n          <FormSelect\n            className=\"mt-4\"\n            id=\"category_id\"\n            label={`${getMessage('tickets.ticket.category')}*`}\n            inline\n            selectOptions={categorySelectOptions}\n            options={{ required: getMessage('tickets.ticket.error.category.required') }}\n          />\n          )}\n          {!tenantlessMode && (\n          <FormSearchableDropdown\n            label={getMessage('tickets.ticket.tenant')}\n            className=\"mt-4 w-full\"\n            id=\"tenant_id\"\n            query={useGetTenantsQuery}\n            queryOptions={{ venue_id: venueId }}\n            ariaLabel=\"Wyszukaj lokatora\"\n          />\n          )}\n          <FormSearchableDropdown\n            label={getMessage('tickets.ticket.venue')}\n            className=\"mt-4 w-full\"\n            id=\"venue_id\"\n            query={useGetVenuesQuery}\n            queryOptions={{ homeowner_association_id: homeownerAssociationId, tenant_id: tenantId }}\n            ariaLabel=\"Wyszukaj lokal\"\n          />\n          {hoaMode && (\n            <FormSearchableDropdown\n              label={getMessage('tickets.ticket.homeownerAssociation')}\n              className=\"mt-4 w-full\"\n              id=\"homeowner_association_id\"\n              query={useGetHomeownerAssociationsQuery}\n              queryOptions={{ tenant_id: tenantId, venue_id: venueId }}\n              ariaLabel=\"Wyszukaj wsp\u00F3lnot\u0119\"\n            />\n          )}\n          <FormInput\n            className=\"mt-4 w-full\"\n            inputClassName=\"w-full\"\n            id=\"title\"\n            type=\"text\"\n            label={`${getMessage('tickets.ticket.title')}*`}\n            options={{ required: getMessage('tickets.ticket.error.title.required'), maxLength: { value: 150, message: getMessage('tickets.ticket.error.title.maxLength') } }}\n          />\n          <FormTextarea\n            className=\"mt-6 w-full\"\n            inputClassName=\"w-full\"\n            id=\"description\"\n            label={`${getMessage('tickets.ticket.description')}*`}\n            options={{ required: getMessage('tickets.ticket.error.description.required') }}\n          />\n          {fields.map(({ file, id }, index) => {\n            const fileSelected = file && file.length > 0;\n            return (\n              <div key={id} id={id} className=\"flex align-start mb-4 w-full\">\n                {fileSelected && (\n                  <FileUploadPreview attachment={attachments[index]} onDelete={() => remove(index)} />\n                )}\n                <div className=\"w-full\">\n                  {fileSelected && (\n                    <FormInput\n                      className=\"w-full\"\n                      inputClassName=\"text-xs w-full\"\n                      id={`attachments.${index}.description`}\n                      type=\"text\"\n                      placeholder={getMessage('tickets.ticket.addAttachmentDescription')}\n                    />\n                  )}\n                  <FormFileInput\n                    inputClassName={fileSelected ? 'hidden' : ''}\n                    id={`attachments.${index}.file`}\n                    labelText={getMessage('tickets.ticket.addAttachment')}\n                    labelClassName={fileSelected ? 'hidden' : ''}\n                    withIcon\n                  />\n                </div>\n              </div>\n            );\n          })}\n        </section>\n        <section className=\"col-span-12 md:col-span-2 md:col-start-10\">\n          <FormSelect\n            className=\"mt-4\"\n            id=\"status_id\"\n            label={getMessage('tickets.ticket.status')}\n            inline\n            selectOptions={statusSelectOptions}\n          />\n          <FormSearchableDropdown\n            label={getMessage('tickets.ticket.assignedTo')}\n            className=\"mt-4 w-full\"\n            id=\"realizer_id\"\n            query={useGetEmployeesQuery}\n            ariaLabel={getMessage('form.ariaLabel.realizer')}\n          />\n        </section>\n        <div className=\"col-span-12 col-start-1\">\n          <Button type=\"submit\" className=\"mt-6\">{getMessage('save')}</Button>\n        </div>\n      </form>\n    </FormProvider>\n  );\n};\nexport default EmployeeTicketForm;\n", "/* eslint-disable react/jsx-props-no-spreading */\n\nimport * as React from 'react';\nimport { useState, useEffect, useMemo } from 'react';\nimport { useForm, FormProvider, useFieldArray } from 'react-hook-form';\nimport { useNavigate } from 'react-router';\nimport useMessages from '../../../../hooks/useMessages';\nimport { usePostTicketMutation, useGetFullUserAccountQuery, useGetTicketCategoriesQuery } from '../../../../api/appApi';\nimport {\n  FormInput, FormSelect, FormTextarea, FormFileInput,\n} from '../../../../components/FormInputs';\nimport Button from '../../../../components/Button/Button';\nimport FileUploadPreview from '../../../../components/AttachmentPreview/FileUploadPreview/FileUploadPreview';\nimport { translateTicketsToFormData } from '../../../../api/modules/tickets/ticketsTranslator';\nimport { useAppSelector } from '../../../../hooks/reduxHooks';\nimport capitalize from '../../../../../utils/formatters';\nimport { FormNotice } from '../../../../components/FormNotice/FormNotice';\n\ntype TicketAttachment = {\n  file: FileList | undefined,\n  description: string\n};\n\ntype SelectVenue = {\n  value: string,\n  optionLabel: string,\n};\n\nexport type TicketInputs = {\n  title: string,\n  venue_id: string,\n  category_id: string,  \n  description: string,\n  attachments: TicketAttachment[]\n};\n\nconst TenantTicketForm = () => {\n  const [venueSelectOptions, setVenueSelectOptions] = useState<SelectVenue[]>([{\n    value: '',\n    optionLabel: '',\n  }]);\n  const getMessage = useMessages();\n  const navigate = useNavigate();\n  const [postTicketData, result] = usePostTicketMutation();\n  const { selectedVenueId, selectedVenueName } = useAppSelector((state) => state.app);\n  const { data: user, isSuccess: userFetched } = useGetFullUserAccountQuery();\n  const { data: ticketCategories } = useGetTicketCategoriesQuery();\n\n  const venues = useMemo(() => user?.tenant?.venues, [user]);\n  const defaultValues = {\n    venue_id: selectedVenueId,\n    attachments: [{ description: '' }],\n  }\n\n  useEffect(() => {\n    if (venues !== undefined && venues?.length > 0) {\n      if (selectedVenueName === getMessage('navigation.allVenues')) {\n        const venueSelectOptions = venues?.map((venue) => ({\n          value: venue.id as string,\n          optionLabel: venue.address,\n        }));\n        setVenueSelectOptions(venueSelectOptions);\n      } else {\n        setVenueSelectOptions([{\n          value: selectedVenueId as string,\n          optionLabel: selectedVenueName as string,\n        }]);\n      }\n    }\n    methods.reset(defaultValues);\n  }, [selectedVenueId, selectedVenueName]);\n\n  const methods = useForm<TicketInputs>({defaultValues});\n\n  const { fields, append, remove } = useFieldArray({ name: 'attachments', control: methods.control });\n\n  const attachments = methods.watch('attachments');\n  const allAttachmentsSelected = attachments.every((attachment) => attachment.file?.length);\n\n  useEffect(() => {\n    if (allAttachmentsSelected) {\n      append({ file: undefined, description: '' });\n    }\n  }, [allAttachmentsSelected]);\n\n  const onSubmit = (data: TicketInputs) => {\n    postTicketData({\n      ticket: translateTicketsToFormData(data),\n    });\n  };\n\n  useEffect(() => {\n    if (result.status === 'fulfilled') navigate('/zgloszenia');\n  }, [result.status]);\n\n  const categorySelectOptions = ticketCategories?.map(({ id, name }) => ({\n    value: id,\n    optionLabel: capitalize(name),\n  }));\n\n  return (\n    <FormProvider {...methods}>\n      {/* @ts-ignore */}\n      {result.error && <FormNotice type=\"error\" message={result.error.data?.errors || getMessage('form.error')} />}\n      <form onSubmit={methods.handleSubmit(onSubmit)} className=\"grid grid-cols-12 col-span-12\">\n        <section className=\"col-span-12 md:col-span-6\">\n          {categorySelectOptions && (\n          <FormSelect\n            className=\"mt-4\"\n            id=\"category_id\"\n            label={getMessage('tickets.ticket.category')}\n            inline\n            selectOptions={categorySelectOptions}\n          />\n          )}\n          {userFetched && (\n          <FormSelect\n            className=\"mt-4\"\n            id=\"venue_id\"\n            value={selectedVenueId}\n            label={getMessage('tickets.ticket.venue')}\n            inline\n            options={{ required: getMessage('tickets.ticket.error.venue.required')}}\n            selectOptions={venueSelectOptions}\n          />\n          )}\n          <FormInput\n            className=\"mt-4 w-full\"\n            inputClassName=\"w-full\"\n            id=\"title\"\n            type=\"text\"\n            label={getMessage('tickets.ticket.title')}\n            options={{ required: getMessage('tickets.ticket.error.title.required'), maxLength: { value: 150, message: getMessage('tickets.ticket.error.title.maxLength') } }}\n          />\n          <FormTextarea\n            className=\"mt-6 w-full\"\n            inputClassName=\"w-full\"\n            id=\"description\"\n            label={getMessage('tickets.ticket.description')}\n          />\n          {fields.map(({ file, id }, index) => {\n            const fileSelected = file && file.length > 0;\n            return (\n              <div key={id} id={id} className=\"flex align-start mb-4 w-full\">\n                {fileSelected && (\n                <FileUploadPreview attachment={attachments[index]} onDelete={() => remove(index)} />\n                )}\n                <div className=\"w-full\">\n                  {fileSelected && (\n                  <FormInput\n                    className=\"w-full\"\n                    inputClassName=\"text-xs w-full\"\n                    id={`attachments.${index}.description`}\n                    type=\"text\"\n                    placeholder={getMessage('tickets.ticket.addAttachmentDescription')}\n                  />\n                  )}\n                  <FormFileInput\n                    inputClassName={fileSelected ? 'hidden' : ''}\n                    id={`attachments.${index}.file`}\n                    labelText={getMessage('tickets.ticket.addAttachment')}\n                    labelClassName={fileSelected ? 'hidden' : ''}\n                    withIcon\n                  />\n                </div>\n              </div>\n            );\n          })}\n        </section>\n        <div className=\"col-span-12 col-start-1\">\n          <Button type=\"submit\" className=\"mt-6\">{getMessage('save')}</Button>\n        </div>\n      </form>\n    </FormProvider>\n  );\n};\nexport default TenantTicketForm;\n", "import * as React from 'react';\nimport { useParams, useNavigate } from 'react-router-dom';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useIntl } from 'react-intl';\nimport PageHeader from '../../components/Layout/PageHeader';\nimport PermissionTreeDisplay from '../../components/PermissionTree/PermissionTreeDisplay';\nimport { useGetAccountQuery, usePostAssignPermissionsMutation } from '../../api/appApi';\nimport ExpandableCard from '../../components/ExpandableCard/ExpandableCard';\nimport PermissionEditTree from '../../components/PermissionTree/PermissionEditTree';\nimport { Permission } from '../../../utils/generated/permissionsTypes';\nimport Popup from '../../components/Popup/Popup';\nimport Button from '../../components/Button/Button';\nimport useMessages from '../../hooks/useMessages';\nimport { usePermissions } from '../../hooks/usePermissions';\nimport ContentWrapper from '../../components/ContentWrapper/ContentWrapper';\nimport Layout from '../../components/Layout/Layout';\nimport { FormNotice } from '../../components/FormNotice/FormNotice';\n\nconst UserPage = () => {\n  const { id } = useParams();\n  const getMessage = useMessages();\n  const userQuery = useGetAccountQuery(id as string, { refetchOnMountOrArgChange: true });\n  const [postPermissions, postPermissionsStatus] = usePostAssignPermissionsMutation();\n  const [popupOpened, setPopupOpened] = useState(false);\n  const user = useMemo(() => userQuery.data, [userQuery]);\n  const intl = useIntl();\n  const { checkRoleType } = usePermissions();\n  const navigate = useNavigate();\n  const hasWorkerRoleType = useMemo(() => user?.roles?.find((role) => role.roleType === 'worker') || false, [user?.roles]);\n\n  useEffect(() => {\n    if (postPermissionsStatus.status === 'fulfilled') {\n      setPopupOpened(true);\n    }\n    if (user && !hasWorkerRoleType) {\n      navigate(`/uzytkownicy/${id}`);\n    }\n  }, [postPermissionsStatus, user, hasWorkerRoleType]);\n\n  checkRoleType('admin');\n\n  return (\n    <Layout currentPage=\"users\">\n      <Popup isOpen={popupOpened}>\n        <div className=\"h-1/2 flex flex-col justify-around items-center\">\n          <p className=\"mb-8\">\n            {intl.formatMessage({ id: 'user.permissionsChanged' })}\n          </p>\n          <Button\n            styleType=\"primary\"\n            onClick={() => setPopupOpened(false)}\n          >\n            {getMessage('close')}\n          </Button>\n        </div>\n      </Popup>\n      <PageHeader pageTitle={user?.name} currentPage=\"users\" path={`/uzytkownicy/${id}`} />\n      {hasWorkerRoleType && (\n      <ContentWrapper>\n        {postPermissionsStatus.isError && (\n          /* @ts-ignore */\n          <FormNotice type=\"error\" noticeClassName=\"col-span-full\" message={postPermissionsStatus.error.data?.errors || getMessage('form.error')} />\n        )}\n        {user?.roles?.map((role) => (\n          <ExpandableCard\n            title={role.name}\n            key={role.id}\n            className=\"mt-2 col-span-full\"\n            additionalInfo={role.name === 'admin' ? '' : intl.formatMessage(\n              { id: 'user.role.permissionCount' },\n              { count: role.permissions.length },\n            )}\n          >\n            <PermissionTreeDisplay permissions={role.permissions} />\n          </ExpandableCard>\n        ))}\n        {user?.roles && user.roles.length > 0 && <div className=\"h-1 border-b w-full mt-2 col-span-full\" />}\n        <ExpandableCard\n          title={intl.formatMessage({ id: 'user.additionalPermissions' })}\n          className=\"mt-2 col-span-full\"\n          defaultOpen\n        >\n          <PermissionEditTree\n            startingPermissions={user?.permissions || []}\n            onSubmit={(permissions: Permission[]) => postPermissions({\n              id,\n              payload: {\n                permissions_names: permissions,\n              },\n            })}\n          />\n        </ExpandableCard>\n      </ContentWrapper>\n      )}\n    </Layout>\n  );\n};\n\nexport default UserPage;\n", "import * as React from 'react';\nimport { useMemo } from 'react';\nimport {\n  Permission,\n  PermissionCategory,\n  SimplifiedPermissionTree,\n} from '../../../utils/generated/permissionsTypes';\nimport { permissionTree } from '../../../utils/permissions';\nimport ArrowUp from '../../icons/dropdown-arrow-up.svg';\nimport ArrowDown from '../../icons/dropdown-arrow-down.svg';\nimport { usePermissionMessages } from '../../hooks/useMessages';\nimport useToggleArray from '../../hooks/useToggleArray';\n\nconst shakePermissionsTree = (permissions: Permission[]) => {\n  const shakenTree: Partial<SimplifiedPermissionTree> = {};\n  const allCategories = Object.keys(permissionTree) as PermissionCategory[];\n  allCategories.forEach((category: PermissionCategory) => {\n    const permissionsInCategory = (permissionTree[category] as Permission[]).filter((p) => permissions.includes(p));\n    if (permissionsInCategory.length > 0) {\n      shakenTree[category] = permissionsInCategory;\n    }\n  });\n  return shakenTree;\n};\n\nconst PermissionTreeDisplay = ({ permissions }: { permissions: Permission[] }) => {\n  const tree: Partial<SimplifiedPermissionTree> = useMemo(() => shakePermissionsTree(permissions), [permissions]);\n  const categories = Object.keys(tree) as PermissionCategory[];\n  const [isOpen, toggleOpen] = useToggleArray(categories);\n  const getPermissionMessage = usePermissionMessages();\n\n  return (\n    <div>\n      {categories.map((category) => (\n        <React.Fragment key={category}>\n          <div\n            key={`${category}-header`}\n            className=\"w-full border-b-2 border-black hover:bg-gray-50 py-3 pt-4\"\n            tabIndex={0}\n            role=\"button\"\n            onClick={() => toggleOpen(category)}\n            onKeyPress={() => toggleOpen(category)}\n          >\n            <span\n              className=\"font-bold\"\n            >\n              {getPermissionMessage(category, null)}\n            </span>\n            {isOpen(category) ? <ArrowUp className=\"inline ml-1 float-right m-2\" /> : <ArrowDown className=\"inline ml-1 float-right m-2\" />}\n          </div>\n          {isOpen(category) && (\n            <div role=\"list\" key={`${category}-content`}>\n              {(tree[category] as Permission[]).map((permission) => (\n                <div role=\"listitem\" key={category + permission} className=\"border-b py-3 pl-6 text-sm\">\n                  <span>{getPermissionMessage(category, permission)}</span>\n                </div>\n              ))}\n            </div>\n          )}\n        </React.Fragment>\n      ))}\n    </div>\n  );\n};\n\nexport default PermissionTreeDisplay;\n", "{\n    \"meters\": [\n        \"meters_list\",\n        \"meters_history_list\",\n        \"meters_measurement_add\"\n    ],\n    \"tickets\": [\n        \"tickets_list\",\n        \"tickets_add\"\n    ],\n    \"tasks\": [\n        \"tasks_list\",\n        \"tasks_add\"\n    ],\n    \"documents\": [\n        \"documents_list\",\n        \"documents_add\"\n    ],\n    \"resolutions\": [\n        \"resolutions_list\",\n        \"resolutions_vote_add\",\n        \"resolutions_votings_list\"\n    ],\n    \"announcements\": [\n        \"announcements_list\",\n        \"announcements_notice_add\"\n    ],\n    \"tenants\": [\n        \"tenants_people_entries_manage\"\n    ],\n    \"activity_log\": [\n        \"activity_log_register_entries_list\"\n    ],\n    \"notifications\": [\n      \"notifications_list\"\n    ],\n    \"settlements\": [\n        \"settlements_balance_list\",\n        \"settlements_document_read\",\n        \"settlements_payments_list\",\n        \"settlements_payment_make\"\n    ]\n}\n", "import permissions from '../../../config/permissions.json';\nimport { Permission, PermissionsTree, PermissionCategory } from './generated/permissionsTypes';\n\nexport const permissionTree: PermissionsTree = permissions as PermissionsTree;\nexport const permissionCategories: PermissionCategory[] = Object.keys(permissionTree) as PermissionCategory[];\nexport const allPermissions: Permission[] = (Object.keys(permissionTree) as PermissionCategory[]).reduce(\n  (arr, cat) => arr.concat(permissionTree[cat]),\n  [] as Permission[],\n);\nexport const roleTypes = ['worker', 'tenant', 'member', 'admin'] as const;\nexport type RoleType = typeof roleTypes[number];\n", "import { useCallback, useEffect, useState } from 'react';\n\ntype ToggleArrayType = [(toggleId: string) => boolean, (toggleId: string) => void, string[]];\n\nconst useToggleArray = (defaultToggledIds: string[]): ToggleArrayType => {\n  const [toggledIds, setToggledIds] = useState(defaultToggledIds);\n\n  useEffect(() => {\n    setToggledIds(defaultToggledIds);\n  }, [JSON.stringify(defaultToggledIds)]);\n\n  const toggle = useCallback((toggleId: string) => {\n    if (toggledIds.includes(toggleId)) {\n      setToggledIds((ids) => ids.filter((id) => id !== toggleId));\n    } else {\n      setToggledIds((ids) => ids.concat([toggleId]));\n    }\n  }, [toggledIds]);\n\n  const isToggled = useCallback(\n    (toggleId: string): boolean => toggledIds.includes(toggleId),\n    [toggledIds],\n  );\n\n  return [isToggled, toggle, toggledIds];\n};\n\nexport default useToggleArray;\n", "import * as React from 'react';\nimport ArrowUp from '../../icons/dropdown-arrow-up.svg';\nimport ArrowDown from '../../icons/dropdown-arrow-down.svg';\nimport { Permission, PermissionCategory, SimplifiedPermissionTree } from '../../../utils/generated/permissionsTypes';\nimport { permissionCategories, permissionTree } from '../../../utils/permissions';\nimport useMessages, { usePermissionMessages } from '../../hooks/useMessages';\nimport useToggleArray from '../../hooks/useToggleArray';\nimport useTenantlessMode from '../../hooks/useTenantlessMode';\nimport { usePermissions } from '../../hooks/usePermissions';\nimport Button from '../Button/Button';\n\ninterface Props {\n  startingPermissions: Permission[],\n  onSubmit: (selectedPermissions: Permission[]) => void,\n  secondButtonCallback?: () => void,\n  secondButtonText?: string,\n}\n\nconst PermissionEditTree = ({\n  startingPermissions, onSubmit, secondButtonCallback, secondButtonText,\n}: Props) => {\n  const getPermissionMessage = usePermissionMessages();\n  const getMessage = useMessages();\n  const tenantlessMode = useTenantlessMode();\n  const { isModuleEnabled } = usePermissions();\n  const availableCategories = permissionCategories.filter(\n    (category) => (!tenantlessMode || category !== 'tenants')\n      && (category !== 'announcements' || isModuleEnabled('announcements')),\n  );\n  const hiddenPermissions = tenantlessMode ? ['resolutions_vote_add', 'settlements_payment_make'] : [];\n  const availablePermissions = (category: PermissionCategory): Permission[] => (\n    (permissionTree[category] as Permission[])\n      .filter((permission) => !hiddenPermissions.includes(permission))\n  );\n  const [isOpen, toggleOpen] = useToggleArray(availableCategories);\n  const [isSelected, toggleSelect, allSelectedPermissions] = useToggleArray(startingPermissions);\n\n  // eslint-disable-next-line arrow-body-style\n  const isCategorySelected = (category: PermissionCategory): boolean => {\n    return (availablePermissions(category) as SimplifiedPermissionTree[PermissionCategory])\n      .filter((categoryPermission: string) => !allSelectedPermissions.includes(categoryPermission)).length === 0;\n  };\n\n  const selectCategory = (category: PermissionCategory): void => {\n    if (isCategorySelected(category)) {\n      availablePermissions(category).forEach((permission) => toggleSelect(permission));\n    } else {\n      availablePermissions(category).forEach((permission) => {\n        if (!isSelected(permission)) {\n          toggleSelect(permission);\n        }\n      });\n    }\n  };\n\n  return (\n    <div>\n      {availableCategories.map((category) => (\n        <React.Fragment key={category}>\n          <div\n            className=\"w-full border-b-2 border-black hover:bg-gray-50 py-3 pt-4 mt-4\"\n            tabIndex={0}\n            role=\"button\"\n            onClick={() => toggleOpen(category)}\n            onKeyPress={() => toggleOpen(category)}\n          >\n            <input\n              id={`${category}-checkbox`}\n              type=\"checkbox\"\n              checked={isCategorySelected(category)}\n              onChange={() => selectCategory(category)}\n              onClick={(e) => e.stopPropagation()}\n              className=\"h-4 w-4 mx-3 text-black bg-black border border-black rounded-xl accent-black\"\n            />\n            <label\n              htmlFor={`${category}-checkbox`}\n              className=\"font-bold\"\n            >\n              {getPermissionMessage(category, null)}\n            </label>\n            {isOpen(category) ? <ArrowUp className=\"inline ml-1 float-right m-2\" /> : <ArrowDown className=\"inline ml-1 float-right m-2\" />}\n          </div>\n          {isOpen(category) && (\n            <div role=\"list\">\n              {availablePermissions(category).map((permission) => (\n                <div role=\"listitem\" className=\"border-b py-3 pl-6 text-sm\" key={`${category}-${permission}`}>\n                  <span className=\"align-middle\">\n                    <input\n                      id={`${permission}-checkbox`}\n                      type=\"checkbox\"\n                      checked={isSelected(permission)}\n                      onChange={() => toggleSelect(permission)}\n                      className=\"h-4 w-4 mr-3 text-black bg-black border border-black rounded-xl accent-black\"\n                    />\n                  </span>\n                  <label htmlFor={`${permission}-checkbox`}>{getPermissionMessage(category, permission)}</label>\n                </div>\n              ))}\n            </div>\n          )}\n        </React.Fragment>\n      ))}\n      <Button type=\"submit\" onClick={() => onSubmit(allSelectedPermissions.filter((permission) => !hiddenPermissions.includes(permission)) as Permission[])} styleType=\"primary\" className=\"w-1/6 mt-12\">\n        {getMessage('save')}\n      </Button>\n      {secondButtonCallback && secondButtonText && (\n        <Button styleType=\"secondary\" onClick={() => secondButtonCallback()} className=\"mt-8 ml-4\">\n          {secondButtonText}\n        </Button>\n      )}\n    </div>\n  );\n};\n\nexport default PermissionEditTree;\n", "import * as React from 'react';\nimport { useEffect, useMemo } from 'react';\nimport { useParams, useNavigate } from 'react-router-dom';\nimport RolesSidebar from './RolesSidebar';\nimport PageHeader from '../../components/Layout/PageHeader';\nimport { useGetRolesQuery } from '../../api/appApi';\nimport RoleEditCard from './RoleEditCard/RoleEditCard';\nimport { usePermissions } from '../../hooks/usePermissions';\nimport ContentWrapper from '../../components/ContentWrapper/ContentWrapper';\nimport Layout from '../../components/Layout/Layout';\n\ninterface Props {\n  newRole?: boolean,\n}\n\nconst RolesPage = ({ newRole = false }: Props) => {\n  const { id } = useParams();\n  const navigate = useNavigate();\n  const rolesQuery = useGetRolesQuery();\n  const { checkRoleType } = usePermissions();\n\n  useEffect(() => {\n    if (!id && rolesQuery?.data && !newRole) {\n      const adminRole = rolesQuery.data.find((role) => role.isDefault && role.roleType === 'admin');\n      navigate(`/uprawnienia/role/${adminRole?.id}`);\n    }\n  }, [id, rolesQuery, newRole]);\n\n  const selectedRole = useMemo(() => rolesQuery?.data?.find((role) => role.id === id), [rolesQuery, id]);\n\n  checkRoleType('admin');\n\n  return (\n    <Layout currentPage=\"roles\">\n      <div className=\"flex flex-grow h-full\">\n        <RolesSidebar />\n        <div className=\"flex flex-col flex-grow items-stretch\">\n          <PageHeader pageTitle=\"Role\" currentPage=\"roles\" />\n          <ContentWrapper>\n            <RoleEditCard role={selectedRole} />\n          </ContentWrapper>\n        </div>\n      </div>\n    </Layout>\n  );\n};\n\nexport default RolesPage;\n", "import * as React from 'react';\nimport classNames from 'classnames';\nimport { useMemo } from 'react';\nimport { useParams, useNavigate } from 'react-router-dom';\nimport { useGetRolesQuery } from '../../api/appApi';\nimport { Role } from '../../api/modules/access/accessTypes';\nimport useMessages from '../../hooks/useMessages';\nimport AddNewIcon from '../../icons/add_new.svg';\n\ntype GroupedRoles = {\n  defaultRoles: Role[],\n  customRoles: Role[],\n};\n\nconst RolesSidebar = () => {\n  const getMessage = useMessages();\n  const navigate = useNavigate();\n  const { data: rolesArray } = useGetRolesQuery();\n  const { id } = useParams();\n\n  const sortedRoles = useMemo(() => {\n    if (rolesArray && rolesArray.length > 0) {\n      return [...rolesArray].sort((r1, r2) => (r1.name.toLowerCase() > r2.name.toLowerCase() ? 1 : -1));\n    }\n    return [];\n  }, [rolesArray]);\n\n  const roles: GroupedRoles = sortedRoles.reduce(\n    (acc: GroupedRoles, curr: Role) => {\n      if (curr.isDefault) {\n        return ({\n          ...acc,\n          defaultRoles: acc.defaultRoles.concat([curr]),\n        });\n      }\n      return ({\n        ...acc,\n        customRoles: acc.customRoles.concat([curr]),\n      });\n    },\n    { defaultRoles: [], customRoles: [] },\n  );\n\n  const renderRoleOption = (role: Role) => (\n    <div\n      key={role.id}\n      className={classNames('m-2 pl-3 py-1 rounded hover:bg-gray-200 cursor-pointer', { 'bg-gray-300': role.id === id })}\n      role=\"button\"\n      tabIndex={0}\n      onClick={() => { navigate(`/uprawnienia/role/${role.id}`); }}\n      onKeyPress={() => { navigate(`/uprawnienia/role/${role.id}`); }}\n    >\n      {role.name}\n    </div>\n  );\n\n  return (\n    <div className=\"flex flex-col w-56 border-r text-gray-800 pt-20 bg-gray-100 capitalize justify-between\">\n      <div className=\"flex flex-col w-full overflow-y-auto\">\n        {roles.defaultRoles?.map((role) => renderRoleOption(role))}\n        <div className=\"border-b w-auto mb-4 pb-4 mx-2\" />\n        {roles.customRoles?.map((role) => renderRoleOption(role))}\n      </div>\n      <div\n        className={classNames('mt-2 py-4 px-2 pl-4 bg-background-white text-title-semibold border rounded group hover:text-hover cursor-pointer', { 'bg-gray-300': !id })}\n        role=\"button\"\n        tabIndex={0}\n        onClick={() => { navigate('/uprawnienia/role/nowa_rola'); }}\n        onKeyPress={() => { navigate('/uprawnienia/role/nowa_rola'); }}\n      >\n        <span className=\"group-hover:text-main\">\n          {getMessage('user.roles.createRole')}\n        </span>\n        <AddNewIcon className=\"float-right mr-2 my-1 text-typography-dark group-hover:text-main\" />\n      </div>\n    </div>\n  );\n};\n\nexport default RolesSidebar;\n", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgAddNew = (props: SVGProps<SVGSVGElement>) => <svg width={19} height={14} viewBox=\"0 0 19 14\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M11 4H0V6H11V4ZM11 0H0V2H11V0ZM15 8V4H13V8H9V10H13V14H15V10H19V8H15ZM0 10H7V8H0V10Z\" fill=\"currentColor\" /></svg>;\nexport default SvgAddNew;", "import * as React from 'react';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useIntl } from 'react-intl';\nimport { useForm, FormProvider, FieldValues } from 'react-hook-form';\nimport { useNavigate } from 'react-router-dom';\nimport Card from '../../../components/Card/Card';\nimport PermissionEditTree from '../../../components/PermissionTree/PermissionEditTree';\nimport {\n  useGetAccountsQuery, useGetRolesQuery,\n  usePostCreateRoleMutation,\n} from '../../../api/appApi';\nimport RoleEditPopup from '../RolePopup/RoleEditPopup';\nimport { FormInput } from '../../../components/FormInputs';\nimport useMessages from '../../../hooks/useMessages';\nimport RoleDeletePopup from '../RolePopup/RoleDeletePopup';\nimport ToggleableInput from '../../../components/FormInputs/ToggleableInput';\nimport { Role } from '../../../api/modules/access/accessTypes';\nimport { FormNotice } from '../../../components/FormNotice/FormNotice';\n\ninterface Props {\n  role?: Role,\n}\n\nconst RoleEditCard = ({ role }: Props) => {\n  const intl = useIntl();\n  const navigate = useNavigate();\n  const getMessage = useMessages();\n\n  const methods = useForm({\n    values: {\n      roleName: role?.name || '',\n    },\n  });\n\n  const usersQuery = useGetAccountsQuery({ page: 1, filters: { role: role?.name } });\n  const rolesQuery = useGetRolesQuery();\n  const [postNewRole, newRoleQuery] = usePostCreateRoleMutation();\n\n  const [editPopupOpen, setEditPopupOpen] = useState(false);\n  const [deletePopupOpen, setDeletePopupOpen] = useState(false);\n\n  const [selectedPermissions, setSelectedPermissions] = useState(role?.permissions || []);\n  const [roleName, setRoleName] = useState(role?.name || '');\n\n  const affectedUsersCount = useMemo(\n    () => usersQuery?.data?.metadata.count,\n    [usersQuery],\n  );\n\n  useEffect(() => {\n    if (newRoleQuery.status === 'fulfilled') {\n      navigate(`/uprawnienia/role/${newRoleQuery.data.role.id}`);\n    }\n  }, [newRoleQuery]);\n\n  const onSubmit = (values: FieldValues) => {\n    if (!role) {\n      postNewRole({\n        name: values.roleName,\n        permissions_names: selectedPermissions,\n      });\n    } else {\n      setRoleName(values.roleName);\n      setEditPopupOpen(true);\n    }\n  };\n\n  return (\n    <Card className=\"col-span-full\">\n      { /* @ts-ignore */ }\n      {newRoleQuery.isError && <FormNotice type=\"error\" message={newRoleQuery.error.data?.errors || getMessage('form.error')} />}\n      {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n      <FormProvider {...methods}>\n        <form onSubmit={methods.handleSubmit(onSubmit)}>\n          {role && (\n            <>\n              <RoleEditPopup\n                isOpen={editPopupOpen}\n                role={role}\n                onClose={() => setEditPopupOpen(false)}\n                affectedUsersCount={affectedUsersCount}\n                newRoleName={roleName}\n                selectedPermissions={selectedPermissions}\n              />\n              <RoleDeletePopup\n                isOpen={deletePopupOpen}\n                role={role}\n                onClose={() => setDeletePopupOpen(false)}\n                affectedUsersCount={affectedUsersCount}\n              />\n            </>\n          )}\n          <h3 className=\"font-bold text-xl\">\n            {role ? (\n              <ToggleableInput\n                key={role.id}\n                id=\"roleName\"\n                startingValue={role.name}\n                options={{\n                  required: getMessage('user.roles.validation.nameRequired'),\n                  validate: (v) => {\n                    const unique = !rolesQuery?.data?.map((role) => role.name.toLowerCase())?.includes(v.toLowerCase());\n                    const nameNotChanged = role && role.name.toLowerCase() === v.toLowerCase();\n                    return unique || nameNotChanged || getMessage('user.roles.validation.nameUnique');\n                  },\n                }}\n              />\n            ) : (\n              <FormInput\n                className=\"w-1/3 mt-4\"\n                inputClassName=\"w-3/4\"\n                id=\"roleName\"\n                type=\"text\"\n                placeholder={getMessage('user.roles.fillName')}\n                options={{\n                  required: getMessage('user.roles.validation.nameRequired'),\n                  validate: (v) => {\n                    const unique = !rolesQuery?.data?.map((role) => role.name.toLowerCase())?.includes(v.toLowerCase());\n                    return unique || getMessage('user.roles.validation.nameUnique');\n                  },\n                }}\n              />\n            )}\n          </h3>\n          <PermissionEditTree\n            startingPermissions={role?.permissions || []}\n            onSubmit={(selectedPermissions) => {\n              setSelectedPermissions(selectedPermissions);\n            }}\n            secondButtonText={role?.isDefault || !role ? undefined : intl.formatMessage({ id: 'user.roles.deleteRole' }, { roleName: role?.name })}\n            secondButtonCallback={role?.isDefault || !role ? undefined : () => { setDeletePopupOpen(true); }}\n          />\n        </form>\n      </FormProvider>\n    </Card>\n  );\n};\n\nexport default RoleEditCard;\n", "import * as React from 'react';\nimport { useIntl } from 'react-intl';\nimport useMessages from '../../../hooks/useMessages';\nimport Dialog from '../../../components/Dialog/Dialog';\nimport { Role } from '../../../api/modules/access/accessTypes';\nimport { usePostChangeRoleMutation } from '../../../api/appApi';\nimport { Permission } from '../../../../utils/generated/permissionsTypes';\n\ninterface Props {\n  isOpen: boolean,\n  role: Role,\n  newRoleName: string,\n  selectedPermissions: Permission[],\n  affectedUsersCount?: number,\n  onClose: () => void,\n}\n\nconst RoleEditPopup = ({\n  isOpen, role, newRoleName, selectedPermissions, affectedUsersCount, onClose,\n}: Props) => {\n  const getMessage = useMessages();\n  const intl = useIntl();\n  const [postChangeRole] = usePostChangeRoleMutation();\n\n  const onAccept = () => {\n    postChangeRole({\n      id: role?.id || '',\n      payload: {\n        name: newRoleName,\n        permissions_names: selectedPermissions,\n      },\n    });\n  };\n\n  return (\n    <Dialog isOpen={isOpen} onAccept={onAccept} onClose={onClose}>\n      <h3 className=\"text-xl font-semibold\">\n        { getMessage('user.roles.confirmation.changeRole.header') }\n      </h3>\n      <p className=\"mb-12 mt-8 mx-16 text-sm\">\n        { intl.formatMessage({ id: 'user.roles.confirmation.changeRole.affectedUsers' }, { usersCount: affectedUsersCount }) }\n      </p>\n    </Dialog>\n  );\n};\n\nexport default RoleEditPopup;\n", "import * as React from 'react';\nimport { useIntl } from 'react-intl';\nimport { useEffect } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport Dialog from '../../../components/Dialog/Dialog';\nimport { useDeleteRoleMutation } from '../../../api/appApi';\nimport { Role } from '../../../api/modules/access/accessTypes';\nimport Popup from '../../../components/Popup/Popup';\nimport Button from '../../../components/Button/Button';\n\ninterface Props {\n  isOpen: boolean,\n  role: Role,\n  affectedUsersCount?: number,\n  onClose: () => void,\n}\n\nconst RoleDeletePopup = ({\n  isOpen, role, affectedUsersCount, onClose,\n}: Props) => {\n  const intl = useIntl();\n  const navigate = useNavigate();\n  const [deleteRole, deleteRoleQuery] = useDeleteRoleMutation();\n\n  useEffect(() => {\n    if (deleteRoleQuery.status === 'fulfilled') {\n      navigate('/uprawnienia/role');\n    }\n  });\n\n  const handleDeleteRole = () => {\n    deleteRole(role?.id as string);\n  };\n\n  if (affectedUsersCount === 0) {\n    return (\n      <Dialog isOpen={isOpen} onAccept={handleDeleteRole} onClose={onClose}>\n        <h3 className=\"text-xl font-semibold\">\n          {intl.formatMessage({ id: 'user.roles.confirmation.deleteRole.header' }, { roleName: role.name })}\n        </h3>\n        <p className=\"mb-12 mt-8 mx-16 text-sm\">\n          {intl.formatMessage({ id: 'user.roles.confirmation.deleteRole.description' }, { roleName: role.name })}\n        </p>\n      </Dialog>\n    );\n  }\n  return (\n    <Popup isOpen={isOpen}>\n      <div className=\"h-1/2 flex flex-col justify-around items-center\">\n        <p className=\"mb-8 text-center\">\n          {intl.formatMessage({ id: 'user.roles.confirmation.deleteRole.affectedUsers' }, { roleName: role.name, usersCount: affectedUsersCount })}\n        </p>\n        <Button styleType=\"primary\" onClick={onClose}>\n          {intl.formatMessage({ id: 'close' })}\n        </Button>\n      </div>\n    </Popup>\n  );\n};\n\nexport default RoleDeletePopup;\n", "import * as React from 'react';\nimport { RegisterOptions, useFormContext } from 'react-hook-form';\nimport { useEffect, useRef, useState } from 'react';\nimport classnames from 'classnames';\nimport EditPencilIcon from '../../icons/edit-pencil.svg';\nimport useClickOutside from '../../hooks/useClickOutside';\nimport FormInput from './inputs/FormInput';\nimport { InputError } from './InputLabel';\n\ninterface Props {\n  id: string,\n  startingValue?: string,\n  className?: string,\n  inputClassName?: string,\n  options?: RegisterOptions,\n  disabled?: boolean,\n}\n\nconst ToggleableInput = ({\n  id, className, inputClassName, options, startingValue, disabled,\n}: Props) => {\n  const [editOpen, setEditOpen] = useState(false);\n  const [value, setValue] = useState(startingValue);\n  const { formState } = useFormContext();\n\n  useEffect(() => {\n    setValue(startingValue);\n  }, [startingValue]);\n\n  const inputRef = useRef(null);\n  const handleOpen = () => {\n    if (!disabled) {\n      setEditOpen(true);\n    }\n  };\n\n  useClickOutside(inputRef, () => setEditOpen(false));\n\n  return (\n    <div ref={inputRef} className={`w-fit ${className}`}>\n      {!editOpen && (\n        <>\n          <div\n            role=\"button\"\n            tabIndex={0}\n            onClick={handleOpen}\n            onKeyPress={handleOpen}\n            className=\"flex justify-start items-center\"\n          >\n            <h3 className=\"inline-block capitalize\">{value}</h3>\n            {!disabled && (<EditPencilIcon className=\"inline-block ml-2 stroke-gray-500 text-gray-500 h-3\" />)}\n          </div>\n          {formState.errors[id]?.message && <InputError message={formState.errors[id]?.message as string} />}\n        </>\n      )}\n      <FormInput\n        id={id}\n        type=\"text\"\n        className={classnames(inputClassName, { hidden: !editOpen })}\n        options={{\n          ...options,\n          onChange: ((e) => {\n            setValue(e.target.value);\n          }),\n        }}\n      />\n    </div>\n  );\n};\n\nexport default ToggleableInput;\n", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgEditPencil = (props: SVGProps<SVGSVGElement>) => <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M15.3846 14.7327C15.7243 14.7327 16 15.0166 16 15.3663C16 15.7161 15.7243 15.9999 15.3846 15.9999H9.4336C9.09391 15.9999 8.81823 15.7161 8.81823 15.3663C8.81823 15.0166 9.09391 14.7327 9.4336 14.7327H15.3846ZM11.5823 0.55219C11.6233 0.585137 12.996 1.68336 12.996 1.68336C13.4949 1.98918 13.8846 2.53575 14.0323 3.18286C14.1792 3.82321 14.0725 4.48384 13.7304 5.04224C13.7281 5.04597 13.7258 5.04965 13.7179 5.0606L13.7117 5.06905C13.6562 5.14441 13.4147 5.45872 12.1963 7.03053C12.185 7.05113 12.1721 7.07042 12.1581 7.08917C12.1376 7.1168 12.1152 7.1422 12.0913 7.16533C12.0082 7.27307 11.9205 7.38628 11.8282 7.50531L11.6411 7.74646C11.2553 8.24402 10.7976 8.83403 10.2546 9.53383L9.9759 9.89297C8.92758 11.2439 7.58499 12.9736 5.86511 15.189C5.4885 15.6722 4.924 15.9535 4.31766 15.9611L1.33188 16H1.32368C1.03897 16 0.79118 15.7989 0.72472 15.5126L0.0527366 12.5803C-0.0859267 11.9729 0.0519161 11.3461 0.430163 10.8595L8.15921 0.906157C8.16249 0.902777 8.16495 0.898554 8.16823 0.895174C9.0158 -0.14814 10.5485 -0.301892 11.5823 0.55219ZM7.29746 4.044L1.39096 11.651C1.25066 11.8318 1.19897 12.065 1.25066 12.2888L1.80941 14.7261L4.30289 14.694C4.54001 14.6914 4.75908 14.5824 4.90431 14.3966C5.65218 13.4332 6.59211 12.2223 7.55849 10.9772L7.90039 10.5367L8.24287 10.0954C9.14917 8.92763 10.0445 7.7738 10.7937 6.80804L7.29746 4.044ZM9.1159 1.70364L8.06627 3.05391L11.5622 5.81716C12.2351 4.94936 12.6778 4.37781 12.7187 4.32333C12.8532 4.09861 12.9058 3.78097 12.8352 3.47516C12.763 3.16174 12.5735 2.89563 12.3002 2.72583C12.242 2.68444 10.8594 1.57945 10.8168 1.54482C10.2966 1.11566 9.53763 1.19001 9.1159 1.70364Z\" fill=\"#B9B9CC\" /></svg>;\nexport default SvgEditPencil;", "import * as React from 'react';\nimport { useMemo, useState } from 'react';\nimport useMessages from '../../hooks/useMessages';\nimport PageHeader from '../../components/Layout/PageHeader';\nimport { usePermissions } from '../../hooks/usePermissions';\nimport ContentWrapper from '../../components/ContentWrapper/ContentWrapper';\nimport Tabs, { TabElement } from '../../components/Tabs/Tabs';\nimport { useAppSelector } from '../../hooks/reduxHooks';\nimport Button from '../../components/Button/Button';\nimport TenantResolutionsList from './ResolutionsList/TenantResolutionsList/TenantResolutionsList';\nimport TenantResolutionsFilters from './ResolutionsFilters/TenantResolutionsFilters/TenantResolutionsFilters';\nimport EmployeeResolutionsList from './ResolutionsList/EmployeeResolutionsList/EmployeeResolutionsList';\nimport EmployeeResolutionsFilters from './ResolutionsFilters/EmployeeResolutionsFilters/EmployeeResolutionsFilters';\nimport Layout from '../../components/Layout/Layout';\nimport FiltersIcon from '../../icons/filters.svg';\n\ninterface Props {\n  active?: 'true' | 'false'\n}\n\nconst ResolutionsPage = ({ active }: Props) => {\n  const getMessage = useMessages();\n  const {\n    hasPermission, hasRoleType, checkPermission, checkModuleEnabled,\n  } = usePermissions();\n  const hasFilterSet = useAppSelector((state) => !!state.app.filters.find((filter) => filter.id === 'resolutionsList'));\n  const [filtersOpen, setFiltersOpen] = useState(hasFilterSet);\n\n  const tenantTabs: TabElement[] = useMemo(() => {\n    if (hasPermission('resolutions_list')) {\n      return [\n        {\n          label: getMessage('resolutions.tabs.all'),\n          path: '/uchwaly',\n        }, {\n          label: getMessage('resolutions.tabs.active'),\n          path: '/uchwaly/aktywne',\n        }, {\n          label: getMessage('resolutions.tabs.closed'),\n          path: '/uchwaly/zamkniete',\n        },\n      ];\n    }\n    return [];\n  }, [hasPermission]);\n\n  const employeeTabs: TabElement[] = useMemo(() => {\n    if (hasPermission('resolutions_list')) {\n      return [\n        {\n          label: getMessage('resolutions.tabs.all'),\n          path: '/uchwaly',\n        }, {\n          label: getMessage('resolutions.tabs.active'),\n          path: '/uchwaly/aktywne',\n        },\n      ];\n    }\n    return [];\n  }, [hasPermission]);\n\n  checkPermission('resolutions_list');\n  checkModuleEnabled('resolutions');\n\n  return (\n    <Layout currentPage=\"resolutions\">\n      <PageHeader pageTitle={getMessage('navigation.resolutions')} currentPage=\"resolutions\">\n        <Button\n          Icon={FiltersIcon}\n          styleType=\"secondary\"\n          size=\"small\"\n          onClick={() => setFiltersOpen((filtersOpen) => !filtersOpen)}\n          className=\"h-8 py-1\"\n        >\n          {getMessage('filters')}\n        </Button>\n      </PageHeader>\n      {hasRoleType('worker') ? (\n        <>\n          <Tabs tabElements={employeeTabs} />\n          {filtersOpen && <EmployeeResolutionsFilters />}\n          <ContentWrapper>\n            <EmployeeResolutionsList active={active} />\n          </ContentWrapper>\n        </>\n      ) : (\n        <>\n          <Tabs tabElements={tenantTabs} />\n          {filtersOpen && <TenantResolutionsFilters />}\n          <ContentWrapper>\n            <TenantResolutionsList active={active} />\n          </ContentWrapper>\n        </>\n      )}\n    </Layout>\n  );\n};\n\nexport default ResolutionsPage;\n", "import * as React from 'react';\nimport { useCallback, useEffect } from 'react';\nimport usePagination from '../../../../hooks/usePagination';\nimport { useGetResolutionsQuery } from '../../../../api/appApi';\nimport Card from '../../../../components/Card/Card';\nimport ResolutionItem from '../../ResolutionItem/ResolutionItem';\nimport PaginationControls from '../../../../components/Table/PaginationControls';\nimport { FilterValues } from '../../../../store/appSlice';\nimport useFilters from '../../../../hooks/useFilters';\nimport { Resolution } from '../../../../api/modules/resolutions/resolutionsTypes';\nimport useMessages from '../../../../hooks/useMessages';\n\ninterface Props {\n  active?: 'true' | 'false',\n}\n\nconst ResolutionsList = ({ active }: Props) => {\n  const [selectedPage, setSelectedPage] = usePagination('resolutionsList');\n  const { filterValues } = useFilters('resolutionsList');\n  const getMessage = useMessages();\n  const filters: FilterValues = { ...filterValues };\n\n  const setVotedFilterValue = useCallback((value: string | undefined) => {\n    if (value === 'voted') return true;\n    if (value === 'notVoted') return false;\n    return '';\n  }, []);\n\n  useEffect(() => {\n    setSelectedPage(1);\n  }, [active]);\n\n  const { data } = useGetResolutionsQuery({\n    ...filters,\n    voted: setVotedFilterValue(filters.voted),\n    active: active || '',\n    page: selectedPage.toString(),\n  });\n\n  return (\n    <>\n      <Card className=\"col-span-full\">\n        {data?.resolutions && data?.resolutions.length === 0 ? (<div>{getMessage('filters.noResults')}</div>)\n          : (\n            <ol>\n              {data?.resolutions.map((resolution) => <ResolutionItem key={resolution.id} item={resolution as Resolution} />)}\n            </ol>\n          )}\n      </Card>\n      {data?.metadata && (\n        <PaginationControls\n          className=\"col-span-full\"\n          selectedPage={selectedPage}\n          setSelectedPage={setSelectedPage}\n          paginationMetadata={data.metadata}\n        />\n      )}\n    </>\n  );\n};\n\nexport default ResolutionsList;\n", "import * as React from 'react';\nimport format from 'date-fns/format';\nimport { useNavigate } from 'react-router';\nimport { useIntl } from 'react-intl';\nimport useMessages from '../../../hooks/useMessages';\nimport Chip from '../../../components/Chip/Chip';\nimport TypeBadge from '../../../components/TypeBadge/TypeBadge';\nimport Button from '../../../components/Button/Button';\nimport { Resolution } from '../../../api/modules/resolutions/resolutionsTypes';\nimport OngoingIcon from '../../../icons/book-open.svg';\nimport OutvotedIcon from '../../../icons/outvoted.svg';\nimport RejectedIcon from '../../../icons/rejected.svg';\n\ninterface Props {\n  item: Resolution\n}\n\nconst statusIcon = {\n  ongoing: <OngoingIcon />,\n  outvoted: <OutvotedIcon />,\n  rejected: <RejectedIcon />,\n};\n\nconst ResolutionItem = ({ item }: Props) => {\n  const navigate = useNavigate();\n  const getMessage = useMessages();\n  const {\n    id, active, createdAt, title, text, votedAt, votingDeadline, status, resolutionNumber,\n  } = item;\n  const intl = useIntl();\n\n  return (\n    <li className=\"w-full border-b py-6 first:pt-0 flex md:justify-between gap-4\">\n      <div className=\"flex flex-none mobile:items-center\">\n        <TypeBadge\n          badgeStyle={active ? 'red' : 'grey'}\n          title={getMessage(`resolutions.status.${status}`)}\n          ariaLabel={`Status ${getMessage(`resolutions.status.${status}`)}`}\n        >\n          {statusIcon[status]}\n        </TypeBadge>\n      </div>\n      <div className=\"mobile:flex-grow md:w-[95%] md:flex md:justify-between mobile:truncate\">\n        <div className=\"flex flex-col md:w-[50%] mobile:truncate\">\n          <p className=\"text-title-semibold text-typography-black inline-block mb-2 mobile:truncate\">\n            <span className=\"text-typography-dark font-medium\">{`Nr ${resolutionNumber} - `}</span>\n            {title}\n          </p>\n          <p className=\"text-text-md-medium text-typography-dark truncate\">{text}</p>\n        </div>\n        <div className=\"mobile:mt-4 md:flex md:flex-col\">\n          <p className=\"text-typography-dark text-text-sm-medium my-2 md:mt-1 md:text-right md:mb-0 md:order-2\">\n            {`${getMessage('resolutions.createdAt')} ${format(new Date(createdAt), 'dd-MM-yyyy')}`}\n          </p>\n          <div className=\"mobile:mt-2 md:flex md:justify-between md:order-1 \">\n            <Chip className=\"w-fit md:order-2 md:ml-3 my-0\" chipStyle={votedAt ? 'gray' : 'ghost'}>\n              {votedAt ? (\n                <>\n                  <span className=\"font-semibold\">{getMessage('resolutions.voted')}</span>\n                  {format(new Date(votedAt), 'dd-MM-yyyy')}\n                </>\n              ) : (`${getMessage('resolutions.voteUntil')} ${format(new Date(votingDeadline), 'dd-MM-yyyy')}`)}\n            </Chip>\n            <Button\n              className=\"text-text-sm-semibold !h-7 !w-fit mobile:mt-4\"\n              styleType={active\n                ? 'primary' : 'secondary'}\n              onClick={() => navigate(`/uchwaly/${id}`)}\n              ariaLabel={intl.formatMessage(\n                { id: 'resolutions.displayAriaLabel' },\n                { title },\n              )}\n            >\n              {getMessage('resolutions.display')}\n            </Button>\n          </div>\n        </div>\n      </div>\n    </li>\n  );\n};\n\nexport default ResolutionItem;\n", "import * as React from 'react';\nimport classnames from 'classnames';\n\ninterface Props {\n  className?: string,\n  title?: string,\n  badgeStyle: 'red' | 'grey',\n  ariaLabel?: string,\n}\n\nconst TypeBadge = ({\n  className, title, badgeStyle, children, ariaLabel,\n}: React.PropsWithChildren<Props>) => {\n  const colorOption = {\n    red: 'bg-light-200 fill-bg-light-200 text-main',\n    grey: 'border border-stroke-grey-100 text-typography-dark ',\n  };\n  return (\n    <div\n      className={classnames(`min-w-[2.5rem] h-10 rounded font-semibold ${badgeStyle === 'red' ? colorOption.red : colorOption.grey} flex justify-center align-self-start items-center`, className)}\n      title={title}\n    >\n      <span className=\"visually-hidden\">\n        {ariaLabel}\n      </span>\n      {children}\n    </div>\n  );\n};\n\nexport default TypeBadge;\n", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgBookOpen = (props: SVGProps<SVGSVGElement>) => <svg width={20} height={20} viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M1.66699 2.5H6.66699C7.55105 2.5 8.39889 2.85119 9.02401 3.47631C9.64914 4.10143 10.0003 4.94928 10.0003 5.83333V17.5C10.0003 16.837 9.73693 16.2011 9.26809 15.7322C8.79925 15.2634 8.16337 15 7.50033 15H1.66699V2.5Z\" stroke=\"currentColor\" strokeWidth={1.25} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M18.3333 2.5H13.3333C12.4493 2.5 11.6014 2.85119 10.9763 3.47631C10.3512 4.10143 10 4.94928 10 5.83333V17.5C10 16.837 10.2634 16.2011 10.7322 15.7322C11.2011 15.2634 11.837 15 12.5 15H18.3333V2.5Z\" stroke=\"currentColor\" strokeWidth={1.25} strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>;\nexport default SvgBookOpen;", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgOutvoted = (props: SVGProps<SVGSVGElement>) => <svg width={18} height={18} viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M8.99935 17.333C11.3005 17.333 13.3839 16.4003 14.8919 14.8922C16.3999 13.3842 17.3327 11.3009 17.3327 8.99968C17.3327 6.69849 16.3999 4.61516 14.8919 3.10712C13.3839 1.59908 11.3005 0.666344 8.99935 0.666344C6.69816 0.666344 4.61483 1.59908 3.10679 3.10712C1.59876 4.61516 0.666016 6.69849 0.666016 8.99968C0.666016 11.3009 1.59876 13.3842 3.10679 14.8922C4.61483 16.4003 6.69816 17.333 8.99935 17.333Z\" stroke=\"#5C5C67\" strokeWidth={1.25} strokeLinejoin=\"round\" /><path d=\"M5.66602 8.99968L8.16602 11.4997L13.166 6.49968\" stroke=\"#5C5C67\" strokeWidth={1.25} strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>;\nexport default SvgOutvoted;", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgRejected = (props: SVGProps<SVGSVGElement>) => <svg width={20} height={20} viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M10 17.5C14.1421 17.5 17.5 14.1421 17.5 10C17.5 5.85786 14.1421 2.5 10 2.5C5.85786 2.5 2.5 5.85786 2.5 10C2.5 14.1421 5.85786 17.5 10 17.5Z\" stroke=\"#5C5C67\" strokeWidth={1.25} strokeMiterlimit={10} /><path d=\"M4.69531 4.69554L15.3047 15.3049\" stroke=\"#5C5C67\" strokeWidth={1.25} strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>;\nexport default SvgRejected;", "import * as React from 'react';\nimport { useMemo } from 'react';\nimport useMessages from '../../../../hooks/useMessages';\nimport Filters from '../../../../components/Filters/Filters';\n\nconst resolutionsStates = [\n  'voted', 'notVoted',\n] as const;\n\nconst TenantResolutionsFilters = () => {\n  const getMessage = useMessages();\n\n  const stateOptionValues = useMemo(() => resolutionsStates.map((state) => ({\n    value: state,\n    optionLabel: getMessage(`resolutions.filters.state.${state}`),\n  })), []);\n\n  return (\n    <Filters\n      filterId=\"resolutionsList\"\n      filterFields={[\n        {\n          type: 'text',\n          id: 'title_search',\n          label: getMessage('resolutions.filters.title'),\n          ariaLabel: 'Szukaj po tytule uchwa\u0142y',\n        },\n        {\n          type: 'select',\n          id: 'voted',\n          label: getMessage('resolutions.filters.state'),\n          selectOptions: stateOptionValues,\n        },\n        {\n          type: 'dateRange',\n          id: 'from_created_at',\n          toDateId: 'to_created_at',\n          label: getMessage('resolutions.filters.creationDate'),\n        },\n        {\n          type: 'dateRange',\n          id: 'from_voting_deadline',\n          toDateId: 'to_voting_deadline',\n          label: getMessage('resolutions.filters.voteDate'),\n        },\n      ]}\n    />\n  );\n};\n\nexport default TenantResolutionsFilters;\n", "import * as React from 'react';\nimport { format } from 'date-fns';\nimport { useCallback, useMemo, useEffect } from 'react';\nimport usePagination from '../../../../hooks/usePagination';\nimport { useGetResolutionsQuery } from '../../../../api/appApi';\nimport ResponsiveTable, {\n  ResponsiveTableHeader, ResponsiveTableBody, ResponsiveTableBodyRow,\n} from '../../../../components/Table/ResponsiveTable';\nimport PaginationControls from '../../../../components/Table/PaginationControls';\nimport { FilterValues, TableId } from '../../../../store/appSlice';\nimport useFilters from '../../../../hooks/useFilters';\nimport { TableBodyCell } from '../../../../components/Table/Table';\nimport Chip from '../../../../components/Chip/Chip';\nimport capitalize from '../../../../../utils/formatters';\nimport useMessages from '../../../../hooks/useMessages';\nimport { EmployeeResolution } from '../../../../api/modules/resolutions/resolutionsTypes';\nimport useHomeownerAssociationsMode from '../../../../hooks/useHomeownerAssociationsMode';\nimport TableContentPlaceholder from '../../../../components/Table/TableContentPlaceholder';\n\ninterface Props {\n  active?: 'true' | 'false',\n}\n\nconst ResolutionsList = ({ active }: Props) => {\n  const getMessage = useMessages();\n  const hoaMode = useHomeownerAssociationsMode();\n  const [selectedPage, setSelectedPage] = usePagination('employeeResolutionsList');\n  const { filterValues } = useFilters('employeeResolutionsList');\n  const filters: FilterValues = { ...filterValues };\n\n  const setVotedFilterValue = useCallback((value: string | undefined) => {\n    if (value === 'voted') return true;\n    if (value === 'notVoted') return false;\n    return '';\n  }, []);\n\n  useEffect(() => {\n    setSelectedPage(1);\n  }, [active]);\n\n  const { data } = useGetResolutionsQuery({\n    ...filters,\n    voted: setVotedFilterValue(filters.voted),\n    active: active || '',\n    page: selectedPage.toString(),\n  });\n\n  const resolutionsData = (data?.resolutions || []) as EmployeeResolution[];\n  const columnLabels = useMemo(() => [\n    ...hoaMode ? [{ label: 'resolutions.column.homeownerAssociationCode' }] : [],\n    { label: 'resolutions.column.resolutionNumber' },\n    { label: 'resolutions.column.title' },\n    { label: 'resolutions.column.onlineVotes' },\n    { label: 'resolutions.column.createdAt' },\n    { label: 'resolutions.column.votingDeadline' },\n    { label: 'resolutions.column.status' },\n  ], [hoaMode]);\n\n  const ids = data?.resolutions.map(({ id }) => id) || [];\n\n  return (\n    <>\n      <ResponsiveTable className=\"col-span-full\">\n        {data?.resolutions && data?.resolutions.length === 0 ? <TableContentPlaceholder /> : (\n          <>\n            <ResponsiveTableHeader ids={ids} columnLabels={columnLabels} tableName={'employeeResolutionsList' as TableId} />\n            <ResponsiveTableBody>\n              {resolutionsData.map(({\n                id, homeownerAssociationCode, resolutionNumber, title, pwiVotes, createdAt, votingDeadline, status,\n              }) => (\n                <ResponsiveTableBodyRow\n                  key={id}\n                  className=\"border-b last:border-b-0\"\n                  clickable={({ href: `/uchwaly/${id}`, ariaLabel: `Przejd\u017A do szczeg\u00F3\u0142\u00F3w uchwa\u0142y ${resolutionNumber} ${title}` })}\n                >\n                  {hoaMode && (<TableBodyCell>{homeownerAssociationCode}</TableBodyCell>)}\n                  <TableBodyCell>{resolutionNumber}</TableBodyCell>\n                  <TableBodyCell>{title}</TableBodyCell>\n                  <TableBodyCell title={getMessage('resolutions.tooltipText')}>{pwiVotes}</TableBodyCell>\n                  <TableBodyCell>\n                    <Chip chipStyle=\"ghost\" className=\"w-fit\">\n                      {createdAt && format(new Date(createdAt), 'dd-MM-yyyy')}\n                    </Chip>\n                  </TableBodyCell>\n                  <TableBodyCell>\n                    <Chip chipStyle=\"ghost\" className=\"w-fit\">\n                      {votingDeadline && format(new Date(votingDeadline), 'dd-MM-yyyy')}\n                    </Chip>\n                  </TableBodyCell>\n                  <TableBodyCell>\n                    <Chip chipStyle=\"primary\" className=\"w-fit\">\n                      {status && capitalize(getMessage(`resolutions.status.${status}`))}\n                    </Chip>\n                  </TableBodyCell>\n                </ResponsiveTableBodyRow>\n              ))}\n            </ResponsiveTableBody>\n          </>\n        )}\n      </ResponsiveTable>\n      {data?.metadata && (\n        <PaginationControls\n          className=\"col-span-full\"\n          selectedPage={selectedPage}\n          setSelectedPage={setSelectedPage}\n          paginationMetadata={data.metadata}\n        />\n      )}\n    </>\n  );\n};\n\nexport default ResolutionsList;\n", "import * as React from 'react';\nimport { useMemo } from 'react';\nimport useMessages from '../../../../hooks/useMessages';\nimport Filters from '../../../../components/Filters/Filters';\nimport useHomeownerAssociationsMode from '../../../../hooks/useHomeownerAssociationsMode';\nimport { FilterConfig } from '../../../../components/FilterInput/FilterInput';\n\nconst resolutionsStates = [\n  'voted', 'notVoted',\n] as const;\n\nconst EmployeeResolutionsFilters = () => {\n  const getMessage = useMessages();\n  const hoaMode = useHomeownerAssociationsMode();\n\n  const stateOptionValues = useMemo(() => resolutionsStates.map((state) => ({\n    value: state,\n    optionLabel: getMessage(`resolutions.filters.state.${state}`),\n  })), []);\n\n  const filterFields: FilterConfig[] = useMemo(() => [\n    ...hoaMode ? [{\n      type: 'text',\n      id: 'homeowner_association_search',\n      label: getMessage('resolutions.filters.homeownerAssociationCodeName'),\n      ariaLabel: 'Szukaj po kodzie lub nazwie wsp\u00F3lnoty',\n    } as FilterConfig] : [],\n    {\n      type: 'text',\n      id: 'number_search',\n      label: getMessage('resolutions.filters.number'),\n      ariaLabel: 'Szukaj po numerze uchwa\u0142y',\n    },\n    {\n      type: 'text',\n      id: 'title_search',\n      label: getMessage('resolutions.filters.title'),\n      ariaLabel: 'Szukaj po tytule uchwa\u0142y',\n    },\n    {\n      type: 'dateRange',\n      id: 'from_created_at',\n      toDateId: 'to_created_at',\n      label: getMessage('resolutions.filters.creationDate'),\n    },\n    {\n      type: 'dateRange',\n      id: 'from_voting_deadline',\n      toDateId: 'to_voting_deadline',\n      label: getMessage('resolutions.filters.voteDate'),\n    },\n    {\n      type: 'select',\n      id: 'voted',\n      label: getMessage('resolutions.filters.state'),\n      selectOptions: stateOptionValues,\n    },\n  ], [hoaMode]);\n\n  return (\n    <Filters\n      filterId=\"employeeResolutionsList\"\n      filterFields={filterFields}\n    />\n  );\n};\n\nexport default EmployeeResolutionsFilters;\n", "import * as React from 'react';\nimport { useParams } from 'react-router-dom';\nimport useMessages from '../../../hooks/useMessages';\nimport PageHeader from '../../../components/Layout/PageHeader';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport Layout from '../../../components/Layout/Layout';\nimport TenantResolutionPage from './TenantResolutionPage/TenantResolutionPage';\nimport EmployeeResolutionPage from './EmployeeResolutionPage/EmployeeResolutionPage';\nimport VotingsList from './EmployeeResolutionPage/VotingsList';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport { useGetResolutionQuery } from '../../../api/appApi';\n\nconst ResolutionPage = () => {\n  const getMessage = useMessages();\n  const { hasRoleType, checkModuleEnabled } = usePermissions();\n  const { id } = useParams();\n  const { data: resolution } = useGetResolutionQuery(id, { skip: !id });\n\n  checkModuleEnabled('resolutions');\n\n  return (\n    <Layout currentPage=\"resolutions\">\n      <PageHeader pageTitle={`${getMessage('resolutions.resolution')} ${resolution ? resolution.resolutionNumber : ''}`} currentPage=\"resolutions\" path=\"/uchwaly\" />\n      <ContentWrapper>\n        {hasRoleType('worker')\n          ? (\n            <>\n              <EmployeeResolutionPage />\n              <VotingsList />\n            </>\n          )\n          : (<TenantResolutionPage />) }\n      </ContentWrapper>\n    </Layout>\n  );\n};\n\nexport default ResolutionPage;\n", "/* eslint-disable react/jsx-props-no-spreading */\n\nimport * as React from 'react';\nimport { useParams } from 'react-router-dom';\nimport { useForm, FormProvider } from 'react-hook-form';\nimport { format } from 'date-fns';\nimport { useGetResolutionQuery, usePostResolutionVoteValueMutation } from '../../../../api/appApi';\nimport useMessages from '../../../../hooks/useMessages';\nimport AttachmentPreview from '../../../../components/AttachmentPreview/AttachmentPreview';\nimport Card from '../../../../components/Card/Card';\nimport Chip from '../../../../components/Chip/Chip';\nimport { FormRadioButtons } from '../../../../components/FormInputs';\nimport { ResolutionData } from '../../../../api/modules/resolutions/resolutionsTypes';\nimport Button from '../../../../components/Button/Button';\nimport { translateResolutionVoteValueToApi } from '../../../../api/modules/resolutions/resolutionsTranslator';\nimport LocationIcon from '../../../../icons/location.svg';\nimport { FormNotice } from '../../../../components/FormNotice/FormNotice';\n\ntype ResolutionVoteInputs = { voteValue: string };\n\ninterface VotingFormProps {\n  voteOptions: string[],\n  voteValue: string | null,\n  id: string,\n  active: boolean,\n}\n\nconst VotingForm = ({\n  voteOptions, voteValue, active, id,\n}: VotingFormProps) => {\n  const getMessage = useMessages();\n  const methods = useForm<ResolutionVoteInputs>({\n    defaultValues: {\n      voteValue: voteValue || '',\n    },\n  });\n\n  const [postVoteValue, result] = usePostResolutionVoteValueMutation();\n\n  const onSubmit = (data: any) => {\n    postVoteValue({\n      id,\n      payload: translateResolutionVoteValueToApi(data),\n    });\n  };\n\n  return (\n    <FormProvider {...methods}>\n      {/* @ts-ignore */}\n      {result.error && <FormNotice type=\"error\" noticeClassName=\"mt-2\" message={result.error.data?.errors || getMessage('resolutions.resolutions.voting.error.internalError')} />}\n      <form className=\"w-full md:w-1/3\" onSubmit={methods.handleSubmit(onSubmit)}>\n        <fieldset className=\"radio-container\">\n          <legend className=\"mb-1\">{getMessage('resolutions.resolution.myVote')}</legend>\n          <FormRadioButtons\n            inputOptions={voteOptions.map((option) => ({ value: option })) || []}\n            id=\"voteValue\"\n            label=\"resolutions.resolution.voteOptions\"\n            disabled={!!voteValue || !active}\n            options={{ required: getMessage('resolutions.resolutions.voting.error.required') }}\n          />\n        </fieldset>\n        <Button type=\"submit\" className=\"mt-4 w-full\" disabled={!!voteValue || !active}>\n          {voteValue ? getMessage('resolutions.resolution.voted') : getMessage('resolutions.resolution.vote')}\n        </Button>\n      </form>\n    </FormProvider>\n  );\n};\n\nconst TenantResolutionPage = () => {\n  const { id } = useParams();\n  if (!id) return null;\n  const { data, isSuccess } = useGetResolutionQuery(id);\n  const getMessage = useMessages();\n  if (!isSuccess) return null;\n  const {\n    active, title, text, createdAt, contentAcceptedAt, attachments,\n    votingDeadline, voteOptions, voteValue, status, votedAt, homeownerAssociationName,\n  } = data as ResolutionData;\n\n  return (\n    <Card className=\"col-span-full\">\n      <div className=\"mb-8 pb-6 border-b\">\n        <h2 className=\"text-header-sm\">{title}</h2>\n        <div className=\"md:flex justify-between items-center\">\n          <div className=\"flex mt-2 mb-3 md:mb-0 text-main\">\n            <LocationIcon />\n            <p className=\"ml-1 text-text-lg-medium\">\n              <span className=\"visually-hidden\">Wsp\u00F3lnota</span>\n              {homeownerAssociationName}\n            </p>\n          </div>\n          <div className=\"flex\">\n            <Chip chipStyle=\"primary\" className=\"min-w-fit h-fit\">{active ? getMessage('resolutions.resolution.votingActive') : getMessage(`resolutions.status.${status}`)}</Chip>\n            <Chip chipStyle=\"ghost\" className=\"min-w-fit h-fit ml-2\">\n              {getMessage('resolutions.resolution.createdAt')}\n              {createdAt && format(new Date(createdAt), 'dd-MM-yyyy')}\n            </Chip>\n            {votedAt && (\n            <Chip chipStyle=\"ghost\" className=\"min-w-fit h-fit ml-2\">\n              <span className=\"font-semibold\">{getMessage('resolutions.voted')}</span>\n              {format(new Date(votedAt), 'dd-MM-yyyy')}\n            </Chip>\n            )}\n          </div>\n        </div>\n\n      </div>\n      <section className=\"text-typography-dark text-text-lg-medium whitespace-pre-line\">\n        {text}\n        <p className=\"text-text-md-semibold my-4\">\n          {getMessage('resolutions.resolution.voteUntil')}\n          {votingDeadline && format(new Date(votingDeadline), 'dd-MM-yyyy')}\n        </p>\n      </section>\n      {attachments?.length > 0 && (\n      <section className=\"my-6 text-text-md-medium w-full\">\n        <ol className=\"flex flex-wrap\">\n          {attachments.map(({ filename, path, contentType }, index) => (\n            <AttachmentPreview key={path} filename={filename} path={path} href={`${id}/akceptuj/${index}`} contentType={contentType} />))}\n        </ol>\n        {active && (\n          !contentAcceptedAt\n            ? (\n              <a href={`${id}/akceptuj/${0}`}>\n                <div className=\"mt-8 px-8 py-4 text-typography-dark bg-background-light rounded\">\n                  {getMessage('resolutions.resolution.attachmentsNotice')}\n                </div>\n              </a>\n            )\n            : (\n              <div className=\"mt-8 px-8 py-4 text-typography-dark bg-background-light rounded\">\n                {getMessage('resolutions.resolution.attachmentsAccepted')}\n              </div>\n            )\n        )}\n      </section>\n      )}\n      {(contentAcceptedAt || attachments.length === 0 || !active) && (\n      <section className=\"pt-6 border-t\">\n        {voteValue && <p className=\"text-title-semibold mb-4\" aria-live=\"polite\">{getMessage('resolutions.resolution.voteSubmitted')}</p>}\n        <VotingForm id={id} voteValue={voteValue} voteOptions={voteOptions} active={active} />\n      </section>\n      )}\n    </Card>\n  );\n};\n\nexport default TenantResolutionPage;\n", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgLocation = (props: SVGProps<SVGSVGElement>) => <svg width={20} height={20} viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><g id=\"Iconly/Light/Location\"><g id=\"Location\"><path id=\"Stroke 1\" fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M12.0837 8.75038C12.0837 7.59932 11.151 6.66663 10.0007 6.66663C8.84969 6.66663 7.91699 7.59932 7.91699 8.75038C7.91699 9.9006 8.84969 10.8333 10.0007 10.8333C11.151 10.8333 12.0837 9.9006 12.0837 8.75038Z\" stroke=\"currentColor\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path id=\"Stroke 3\" fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M9.99959 17.5C9.00086 17.5 3.75 13.2486 3.75 8.80274C3.75 5.3222 6.54758 2.5 9.99959 2.5C13.4516 2.5 16.25 5.3222 16.25 8.80274C16.25 13.2486 10.9983 17.5 9.99959 17.5Z\" stroke=\"currentColor\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /></g></g></svg>;\nexport default SvgLocation;", "/* eslint-disable react/jsx-props-no-spreading */\n\nimport * as React from 'react';\nimport { useParams } from 'react-router-dom';\nimport { format } from 'date-fns';\nimport { useGetResolutionQuery } from '../../../../api/appApi';\nimport useMessages from '../../../../hooks/useMessages';\nimport AttachmentPreview from '../../../../components/AttachmentPreview/AttachmentPreview';\nimport Card from '../../../../components/Card/Card';\nimport Chip from '../../../../components/Chip/Chip';\nimport { ResolutionData } from '../../../../api/modules/resolutions/resolutionsTypes';\nimport LocationIcon from '../../../../icons/location.svg';\n\nconst EmployeeResolutionPage = () => {\n  const { id } = useParams();\n  const { data, isSuccess } = useGetResolutionQuery(id, { skip: !id });\n  const getMessage = useMessages();\n\n  if (!isSuccess) return null;\n\n  const {\n    active, title, text, createdAt, attachments,\n    votingDeadline, status, votedAt, homeownerAssociationName,\n  } = data as ResolutionData;\n\n  return (\n    <Card className=\"row-span-1 row-start-1 col-span-full\">\n      <div className=\"mb-8 pb-6 border-b\">\n        <h2 className=\"text-header-sm\">{title}</h2>\n        <div className=\"md:flex justify-between items-center\">\n          <div className=\"flex mt-2 mb-3 md:mb-0 text-main\">\n            <LocationIcon />\n            <p className=\"ml-1 text-text-lg-medium\">\n              <span className=\"visually-hidden\">Wsp\u00F3lnota</span>\n              {homeownerAssociationName}\n            </p>\n          </div>\n          <div className=\"flex\">\n            <Chip chipStyle=\"primary\" className=\"min-w-fit h-fit\">{active ? getMessage('resolutions.resolution.votingActive') : getMessage(`resolutions.status.${status}`)}</Chip>\n            <Chip chipStyle=\"ghost\" className=\"min-w-fit h-fit ml-2\">\n              {getMessage('resolutions.resolution.createdAt')}\n              {createdAt && format(new Date(createdAt), 'dd-MM-yyyy')}\n            </Chip>\n            {votedAt && (\n            <Chip chipStyle=\"ghost\" className=\"min-w-fit h-fit ml-2\">\n              <span className=\"font-semibold\">{getMessage('resolutions.voted')}</span>\n              {format(new Date(votedAt), 'dd-MM-yyyy')}\n            </Chip>\n            )}\n          </div>\n        </div>\n      </div>\n      <section className=\"text-typography-dark text-text-lg-medium whitespace-pre-line\">\n        {text}\n        <p className=\"text-text-md-semibold my-4\">\n          {getMessage('resolutions.resolution.voteUntil')}\n          {votingDeadline && format(new Date(votingDeadline), 'dd-MM-yyyy')}\n        </p>\n      </section>\n      {attachments?.length > 0 && (\n        <section className=\"my-6 text-text-md-medium\">\n          <ol className=\"flex flex-wrap\">\n            {attachments.map(({ filename, path, contentType }) => (\n              <AttachmentPreview key={path} filename={filename} path={path} contentType={contentType} />))}\n          </ol>\n        </section>\n      )}\n    </Card>\n  );\n};\n\nexport default EmployeeResolutionPage;\n", "/* eslint-disable react/jsx-props-no-spreading */\n\nimport * as React from 'react';\nimport { useParams } from 'react-router-dom';\nimport { format } from 'date-fns';\nimport { useGetResolutionVotingsListQuery, useGetResolutionQuery } from '../../../../api/appApi';\nimport useMessages from '../../../../hooks/useMessages';\nimport Chip from '../../../../components/Chip/Chip';\nimport PaginationControls from '../../../../components/Table/PaginationControls';\nimport useTenantlessMode from '../../../../hooks/useTenantlessMode';\nimport usePagination from '../../../../hooks/usePagination';\nimport ResponsiveTable, {\n  ResponsiveTableHeader, ResponsiveTableBodyRow, ResponsiveTableBody,\n} from '../../../../components/Table/ResponsiveTable';\nimport { TableId, FilterValues } from '../../../../store/appSlice';\nimport { TableBodyCell } from '../../../../components/Table/Table';\nimport useFilters from '../../../../hooks/useFilters';\nimport VotingsListFiltersBar from './VotingsListFiltersBar';\nimport TableContentPlaceholder from '../../../../components/Table/TableContentPlaceholder';\n\nconst VotingsList = () => {\n  const { id } = useParams();\n  const { data: resolutionData } = useGetResolutionQuery(id, { skip: !id });\n  const [selectedPage, setSelectedPage] = usePagination(`resolutionVotes${id}`);\n  const getMessage = useMessages();\n  const { filterValues } = useFilters(`resolutionVotes${id}`);\n  const tenantlessMode = useTenantlessMode();\n  const filters: FilterValues = { ...filterValues };\n\n  const { data } = useGetResolutionVotingsListQuery({\n    ...filters,\n    id,\n    page: selectedPage.toString(),\n  });\n\n  const columnLabels = [\n    ...tenantlessMode ? [] : [\n      { label: 'resolutions.votings.column.tenantExternalId' },\n      { label: 'resolutions.votings.column.tenantName' },\n    ],\n    { label: 'resolutions.votings.column.dataSource' },\n    { label: 'resolutions.votings.column.votedAt' },\n    { label: 'resolutions.votings.column.votedValue' },\n  ];\n\n  if (!data || !id) return null;\n  const ids = data.votings.map(({ id }) => id) || [];\n\n  return (\n    <>\n      {resolutionData\n      && <VotingsListFiltersBar voteOptions={resolutionData?.voteOptions} pwiVotes={resolutionData?.pwiVotes} id={id} />}\n      <ResponsiveTable className=\"row-span-1 row-start-3 col-span-full\">\n        {data?.votings && data?.votings.length === 0 ? <TableContentPlaceholder /> : (\n          <>\n            <ResponsiveTableHeader ids={ids} columnLabels={columnLabels} tableName={`resolutionVotes${id}` as TableId} />\n            <ResponsiveTableBody>\n              {data.votings.map(({\n                tenantExternalId, tenantName, dataSource, votedAt, voteValue,\n              }) => (\n                <ResponsiveTableBodyRow key={id} className=\"border-b last:border-b-0\">\n                  {!tenantlessMode && <TableBodyCell>{tenantExternalId}</TableBodyCell>}\n                  {!tenantlessMode && <TableBodyCell>{tenantName}</TableBodyCell>}\n                  <TableBodyCell>{dataSource}</TableBodyCell>\n                  <TableBodyCell>\n                    {votedAt && (\n                    <Chip chipStyle=\"ghost\" className=\"w-fit\">\n                      {format(new Date(votedAt), 'dd-MM-yyyy')}\n                    </Chip>\n                    )}\n                  </TableBodyCell>\n                  <TableBodyCell>\n                    {voteValue !== null ? getMessage(`resolutions.votings.${voteValue}`) : getMessage('resolutions.votings.noVoteValue')}\n                  </TableBodyCell>\n                </ResponsiveTableBodyRow>\n              ))}\n            </ResponsiveTableBody>\n          </>\n        )}\n      </ResponsiveTable>\n      {data?.metadata && (\n        <PaginationControls\n          className=\"col-span-full\"\n          selectedPage={selectedPage}\n          setSelectedPage={setSelectedPage}\n          paginationMetadata={data.metadata}\n        />\n      )}\n    </>\n  );\n};\n\nexport default VotingsList;\n", "import * as React from 'react';\nimport { useState } from 'react';\nimport { useIntl } from 'react-intl';\nimport useMessages from '../../../../hooks/useMessages';\nimport VotingsListFilters from './VotingsListFilters';\nimport Button from '../../../../components/Button/Button';\nimport FiltersIcon from '../../../../icons/filters.svg';\nimport { useAppSelector } from '../../../../hooks/reduxHooks';\n\ninterface Props {\n  pwiVotes: string,\n  voteOptions: string[],\n  id: string,\n}\n\nconst VotingsListFiltersBar = ({ pwiVotes, voteOptions, id }: Props) => {\n  const getMessage = useMessages();\n  const intl = useIntl();\n  const hasFilterSet = useAppSelector((state) => !!state.app.filters.find((filter) => (filter.id === `resolutionVotes${id}`)));\n  const [filtersOpen, setFiltersOpen] = useState(hasFilterSet);\n\n  return (\n    <div className=\"row-span-1 row-start-2 col-span-full\">\n      <div className=\"flex flex-wrap justify-between mb-2\">\n        { intl.formatMessage({ id: 'resolutions.votings.onlineVotesGiven' }, { pwiVotes }) }\n        <Button\n          Icon={FiltersIcon}\n          styleType=\"secondary\"\n          size=\"small\"\n          onClick={() => setFiltersOpen((filtersOpen) => !filtersOpen)}\n          className=\"h-8 py-1 bg-background-white\"\n        >\n          {getMessage('filters')}\n        </Button>\n      </div>\n\n      {filtersOpen && <VotingsListFilters voteOptions={voteOptions} id={id} />}\n    </div>\n  );\n};\n\nexport default VotingsListFiltersBar;\n", "import * as React from 'react';\nimport { useMemo } from 'react';\nimport useMessages from '../../../../hooks/useMessages';\nimport useTenantlessMode from '../../../../hooks/useTenantlessMode';\nimport Filters from '../../../../components/Filters/Filters';\nimport { FilterConfig } from '../../../../components/FilterInput/FilterInput';\n\ninterface Props {\n  voteOptions: string[],\n  id: string,\n}\n\nconst VotingsListFilters = ({ voteOptions, id }: Props) => {\n  const getMessage = useMessages();\n  const tenantlessMode = useTenantlessMode();\n\n  const pwiDataSourceOptions = ([{\n    value: 'true',\n    optionLabel: getMessage('resolutions.votings.filters.votedOnline'),\n  },\n  {\n    value: 'false',\n    optionLabel: getMessage('resolutions.votings.filters.votedNotOnline'),\n  }]);\n\n  const voteValueSearch = useMemo(() => voteOptions?.map((item) => ({\n    value: item,\n    optionLabel: getMessage(`resolutions.votings.${item}`),\n  })), []);\n\n  return (\n    <Filters\n      filterId={`resolutionVotes${id}`}\n      filterFields={[\n        ...tenantlessMode ? [] : [{\n          type: 'text',\n          id: 'account_association_search',\n          label: getMessage('resolutions.votings.filters.tenantExternalIdFullName'),\n          ariaLabel: 'Szukaj po imieniu i nazwisku lub kodzie lokatora',\n        } as FilterConfig],\n        {\n          type: 'select',\n          id: 'pwi_data_source',\n          label: getMessage('resolutions.votings.filters.votingVia'),\n          selectOptions: pwiDataSourceOptions,\n        },\n        {\n          type: 'dateRange',\n          id: 'from_voted_at',\n          toDateId: 'to_voted_at',\n          label: getMessage('resolutions.votings.filters.voteDate'),\n        },\n        {\n          type: 'select',\n          id: 'vote_value_search',\n          label: getMessage('resolutions.votings.filters.voteValue'),\n          selectOptions: voteValueSearch,\n        },\n      ]}\n    />\n  );\n};\n\nexport default VotingsListFilters;\n", "import * as React from 'react';\nimport { Link, useParams, useNavigate } from 'react-router-dom';\nimport { useMediaQuery } from 'react-responsive';\nimport { useGetResolutionQuery, usePostContentAcceptedMutation } from '../../../api/appApi';\nimport useMessages from '../../../hooks/useMessages';\nimport Card from '../../../components/Card/Card';\nimport PageHeader from '../../../components/Layout/PageHeader';\nimport PdfPreviewer from '../../../components/PdfPreviewer/PdfPreviewer';\nimport { ResolutionData } from '../../../api/modules/resolutions/resolutionsTypes';\nimport Button from '../../../components/Button/Button';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport Layout from '../../../components/Layout/Layout';\nimport DownloadAttachment from '../../../components/AttachmentPreview/DownloadAttachment/DownloadAttachment';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport {\n  mobile, tablet, PDF_PREVIEW_WIDTH_DESKTOP, PDF_PREVIEW_WIDTH_MOBILE, PDF_PREVIEW_WIDTH_TABLET,\n} from '../../../../utils/breakpoints';\nimport { FormNotice } from '../../../components/FormNotice/FormNotice';\n\nconst FilePreview = ({\n  contentType, path, filename, width,\n}: {\n  contentType: string, path: string, filename: string, width: number\n}) => {\n  switch (contentType) {\n    case 'application/pdf':\n      return <PdfPreviewer source={path} width={width} renderTextAndAnnotations />;\n    case 'image/png':\n    case 'image/jpg':\n    case 'image/jpeg':\n      return <img src={path} alt={filename} />;\n    default:\n      return <DownloadAttachment path={path} filename={filename} />;\n  }\n};\n\nconst ResolutionAttachmentPreview = () => {\n  const getMessage = useMessages();\n  const navigate = useNavigate();\n  const { id, index } = useParams();\n  const { checkModuleEnabled } = usePermissions();\n\n  checkModuleEnabled('resolutions');\n  if (!id || !index) return null;\n  const { data, isSuccess } = useGetResolutionQuery(id, { skip: !id });\n  const [postContentAcceptedMutation, result] = usePostContentAcceptedMutation();\n  const { contentAcceptedAt, attachments, active } = isSuccess ? data : {} as ResolutionData;\n  const length = attachments?.length;\n  const indexAsNumber = Number(index);\n  const isMobile = useMediaQuery({ query: mobile.raw });\n  const isTablet = useMediaQuery({ query: tablet.raw });\n\n  if (!attachments) return null;\n\n  const { contentType, path, filename } = attachments[indexAsNumber];\n  const isContentAccepted = contentAcceptedAt !== null;\n\n  let pdfWidth = PDF_PREVIEW_WIDTH_DESKTOP;\n  if (isMobile) pdfWidth = PDF_PREVIEW_WIDTH_MOBILE;\n  if (isTablet) pdfWidth = PDF_PREVIEW_WIDTH_TABLET;\n\n  return (\n    <Layout currentPage=\"resolutions\">\n      <PageHeader pageTitle={getMessage('resolutions.voting')} currentPage=\"resolutions\" path={`/uchwaly/${id}`} />\n      <ContentWrapper>\n        <Card className=\"col-span-full\">\n          <div className=\"mobile:p-0 w-fit m-auto\" id=\"fileContainer\">\n            <FilePreview contentType={contentType} path={path} filename={filename} width={pdfWidth} />\n          </div>\n          <div className=\"w-full\">\n            { (indexAsNumber !== 0) && (\n            <Link to={`/uchwaly/${id}/akceptuj/${indexAsNumber - 1}`} className=\"block text-left text-text-lg-semibold text-typography-dark hover:text-main hover:underline\">\n              &#60;\n              {' '}\n              {getMessage('resolutions.resolution.previous')}\n            </Link>\n            )}\n            { (indexAsNumber !== length - 1)\n              ? (\n                <Link to={`/uchwaly/${id}/akceptuj/${indexAsNumber + 1}`} className=\"block text-right text-text-lg-semibold text-typography-dark hover:text-main hover:underline\">\n                  {getMessage('resolutions.resolution.next')}\n                  {' '}\n                  &#62;\n                </Link>\n              )\n              : (\n                <div className=\"mt-6 pt-6 border-t\">\n                  {result.isError\n                    /* @ts-ignore */\n                    && <FormNotice noticeClassName=\"col-span-full mb-6\" type=\"error\" message={result.error.data?.errors || getMessage('form.error')} />}\n                  <div className=\"flex justify-between\">\n                    <label htmlFor=\"contentAccepted\" className={`text-title-medium ${!active && 'text-gray-500'} hover:underline hover:text-hover hover:cursor-pointer`}>\n                      <input\n                        type=\"checkbox\"\n                        id=\"contentAccepted\"\n                        className=\"mr-3 hover:cursor-pointer\"\n                        onChange={() => postContentAcceptedMutation(id)}\n                        checked={isContentAccepted}\n                        disabled={isContentAccepted || !active}\n                      />\n                      {getMessage('resolutions.resolution.acceptedContent')}\n                    </label>\n                    {active && (\n                    <Button\n                      disabled={!isContentAccepted}\n                      styleType=\"primary\"\n                      onClick={() => navigate(`/uchwaly/${id}`)}\n                    >\n                      {getMessage('resolutions.resolution.goToVoting')}\n                    </Button>\n                    )}\n                  </div>\n                </div>\n              )}\n          </div>\n        </Card>\n      </ContentWrapper>\n    </Layout>\n  );\n};\n\nexport default ResolutionAttachmentPreview;\n", "import * as React from 'react';\nimport { useIntl } from 'react-intl';\nimport useMessages from '../../../hooks/useMessages';\n\nconst DownloadAttachment = ({ path, filename }: { path: string, filename: string }) => {\n  const getMessage = useMessages();\n  const intl = useIntl();\n\n  return (\n    <div className=\"text-center\">\n      <span className=\"block text-text-lg-medium text-typography-black\">{getMessage('attachment.previewUnavailable.download')}</span>\n      <button type=\"button\" className=\"mt-8 mb-12\">\n        <a\n          href={path}\n          target={path ? '' : '_blank'}\n          rel=\"noreferrer\"\n          title={intl.formatMessage(\n            { id: 'download' },\n            { filename },\n          )}\n          className=\"py-2 px-8 lg:h-auto text-text-lg-semibold border border-stroke-grey-300 rounded bg-none text-main hover:text-hover hover:bg-light-100 hover:border-hover\"\n        >\n          {getMessage('attachment.download')}\n        </a>\n      </button>\n    </div>\n  );\n};\n\nexport default DownloadAttachment;\n", "import * as React from 'react';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useNavigate } from 'react-router';\nimport useMessages from '../../hooks/useMessages';\nimport PageHeader from '../../components/Layout/PageHeader';\nimport { usePermissions } from '../../hooks/usePermissions';\nimport Tabs, { TabElement } from '../../components/Tabs/Tabs';\nimport Button from '../../components/Button/Button';\nimport { useAppSelector } from '../../hooks/reduxHooks';\nimport AnnouncementsFilters from './AnnouncementsFilters/AnnouncementsFilters';\nimport ContentWrapper from '../../components/ContentWrapper/ContentWrapper';\nimport AnnouncementsList from './AnnouncementsList/AnnouncementsList';\nimport Layout from '../../components/Layout/Layout';\nimport FiltersIcon from '../../icons/filters.svg';\nimport PlusIcon from '../../icons/plus.svg';\n\ntype AnnouncementsPageProps = {\n  archived?: true;\n};\n\nconst AnnouncementsPage = ({ archived }: AnnouncementsPageProps) => {\n  const getMessage = useMessages();\n  const navigate = useNavigate();\n  const {\n    checkPermission, checkTenantDataEnabled, checkModuleEnabled, hasPermission, hasRoleType, isTenantDataEnabled, isModuleEnabled,\n  } = usePermissions();\n  const hasFilterSet = useAppSelector((state) => !!state.app.filters.find((filter) => filter.id === 'announcementsList'));\n  const [filtersOpen, setFiltersOpen] = useState(hasFilterSet);\n\n  const tabs: TabElement[] = useMemo(() => {\n    if (hasPermission('announcements_list')) {\n      return [\n        {\n          label: getMessage('tabs.announcements.all'),\n          path: '/aktualnosci',\n        }, {\n          label: getMessage('tabs.announcements.archived'),\n          path: '/aktualnosci/archiwum',\n        },\n      ];\n    }\n\n    return [];\n  }, [hasPermission]);\n\n  checkPermission('announcements_list');\n  if (!hasRoleType('worker')) checkTenantDataEnabled();\n  useEffect(() => {\n    checkModuleEnabled('announcements');\n  }, [checkModuleEnabled]);\n\n  if ((!isTenantDataEnabled() && !hasRoleType('worker')) || !isModuleEnabled('announcements')) return null;\n\n  return (\n    <Layout currentPage=\"announcements\">\n      <PageHeader pageTitle={getMessage('navigation.announcements')} currentPage=\"announcements\">\n        <Button\n          styleType=\"secondary\"\n          size=\"small\"\n          Icon={FiltersIcon}\n          onClick={() => setFiltersOpen((filtersOpen) => !filtersOpen)}\n          className=\"mx-3 h-8 py-1\"\n        >\n          {getMessage('filters')}\n        </Button>\n        {hasRoleType('worker') && hasPermission('announcements_notice_add') && (\n          <Button\n            onClick={() => navigate('/aktualnosci/nowe')}\n            className=\"py-1\"\n            size=\"small\"\n            Icon={PlusIcon}\n          >\n            {getMessage('announcements.newAnnouncement')}\n          </Button>\n        )}\n      </PageHeader>\n      {hasRoleType('tenant') && <Tabs tabElements={tabs} />}\n      {filtersOpen && <AnnouncementsFilters />}\n      <ContentWrapper>\n        <AnnouncementsList archived={archived} />\n      </ContentWrapper>\n    </Layout>\n  );\n};\n\nexport default AnnouncementsPage;\n", "import * as React from 'react';\nimport { useForm } from 'react-hook-form';\nimport { useEffect, useMemo } from 'react';\nimport useFilters from '../../../hooks/useFilters';\nimport useMessages from '../../../hooks/useMessages';\nimport { useGetAnnouncementsAuthorsQuery, useGetRecipientsForFilterQuery } from '../../../api/appApi';\nimport Filters from '../../../components/Filters/Filters';\nimport { FilterConfig } from '../../../components/FilterInput/FilterInput';\nimport { usePermissions } from '../../../hooks/usePermissions';\n\ninterface AnnouncementsFilterInputs {\n  search?: string,\n  from_date?: string,\n  to_date?: string,\n  created_by_ids?: [],\n}\n\nconst AnnouncementsFilters = () => {\n  const getMessage = useMessages();\n  const { saveFilterValues, filterValues } = useFilters<AnnouncementsFilterInputs>('announcementsList');\n  const { hasRoleType } = usePermissions();\n\n  const methods = useForm<AnnouncementsFilterInputs>({\n    defaultValues: {\n      search: filterValues?.search || '',\n      from_date: filterValues?.from_date || '',\n      to_date: filterValues?.to_date || '',\n      created_by_ids: filterValues?.created_by_ids || [],\n    },\n  });\n\n  useEffect(() => {\n    methods.watch(\n      (filters) => {\n        saveFilterValues(filters);\n      },\n    );\n  }, [methods.watch]);\n\n  const { data: authors } = useGetAnnouncementsAuthorsQuery();\n  const { data: recipients } = useGetRecipientsForFilterQuery();\n\n  const authorOptionsValues = useMemo(() => {\n    if (!authors) return [];\n\n    return authors.map(({ id, fullName }) => ({\n      value: id as string,\n      optionLabel: fullName,\n    }));\n  }, [authors]);\n\n  const recipientsOptionsValues = useMemo(() => {\n    if (!recipients) return [];\n\n    return recipients.map(({ id, fullName }) => ({\n      value: id as string,\n      optionLabel: fullName,\n    }));\n  }, [recipients]);\n\n  const recipientsFilter = {\n    type: 'multiselect',\n    id: 'created_for_ids',\n    label: getMessage('announcements.announcement.recipients'),\n    selectOptions: recipientsOptionsValues,\n  } as FilterConfig;\n\n  const filterFields: FilterConfig[] = useMemo(() => {\n    const fields: FilterConfig[] = [\n      {\n        type: 'dateRange',\n        id: 'from_date',\n        toDateId: 'to_date',\n        label: getMessage('announcements.announcement.date'),\n      },\n      {\n        type: 'text',\n        id: 'search',\n        label: getMessage('announcements.announcement.title'),\n        ariaLabel: 'Szukaj po tytule aktualno\u015Bci',\n      },\n      {\n        type: 'multiselect',\n        id: 'created_by_ids',\n        label: getMessage('announcements.announcement.author'),\n        selectOptions: authorOptionsValues,\n      },\n    ];\n    return fields;\n  }, [authors, recipients]);\n\n  const announcementsFilters = hasRoleType('worker') ? filterFields.concat([recipientsFilter]) : filterFields;\n\n  return (\n    <Filters\n      filterId=\"announcementsList\"\n      filterFields={announcementsFilters}\n    />\n  );\n};\n\nexport default AnnouncementsFilters;\n", "import * as React from 'react';\nimport format from 'date-fns/format';\nimport classNames from 'classnames';\nimport { useState, useEffect } from 'react';\nimport { useGetAnnouncementsQuery, usePostArchiveAnnouncementMutation, usePostMarkReadAnnouncementMutation } from '../../../api/appApi';\nimport { TableBodyCell } from '../../../components/Table/Table';\nimport ResponsiveTable, { ResponsiveTableHeader, ResponsiveTableBody, ResponsiveTableBodyRow } from '../../../components/Table/ResponsiveTable';\nimport Chip from '../../../components/Chip/Chip';\nimport PaginationControls from '../../../components/Table/PaginationControls';\nimport usePagination from '../../../hooks/usePagination';\nimport useFilters from '../../../hooks/useFilters';\nimport useSortParams from '../../../hooks/useSortParams';\nimport { FilterValues, TableId } from '../../../store/appSlice';\nimport TableContentPlaceholder from '../../../components/Table/TableContentPlaceholder';\nimport ArchiveIcon from '../../../icons/archiveBox.svg';\nimport useMessages from '../../../hooks/useMessages';\nimport ArchiveAnnouncementPopup from './ArchiveAnnouncementPopup';\nimport { usePermissions } from '../../../hooks/usePermissions';\n\ntype AnnouncementsListProps = {\n  archived?: true;\n};\n\ntype AnnouncementToArchive = {\n  id: string\n  number: string | number\n};\n\nconst initialState: AnnouncementToArchive = {\n  id: '',\n  number: '',\n};\n\nconst AnnouncementsList = ({ archived }: AnnouncementsListProps) => {\n  const [selectedPage, setSelectedPage] = usePagination('announcementsList');\n  const { sortParamsValues } = useSortParams('announcementsList');\n  const { filterValues } = useFilters('announcementsList');\n  const [postArchiveAnnouncement] = usePostArchiveAnnouncementMutation();\n  const [markReadAnnouncement] = usePostMarkReadAnnouncementMutation();\n  const getMessage = useMessages();\n  const [isPopupOpen, setIsPopupOpen] = useState(false);\n  const [announcementToArchive, setAnnouncementToArchive] = useState<AnnouncementToArchive>(initialState);\n  const { hasRoleType } = usePermissions();\n\n  const filters: FilterValues = { ...filterValues };\n  if (hasRoleType('tenant')) filters.archived = archived || false;\n\n  useEffect(() => {\n    setSelectedPage(1);\n  }, [archived]);\n\n  const { data } = useGetAnnouncementsQuery({\n    ...sortParamsValues,\n    ...filters,\n    page: selectedPage.toString(),\n  });\n\n  const handleClick = (id: string, status: string) => {\n    if (hasRoleType('tenant') && status === 'unread') markReadAnnouncement(id);\n  };\n\n  const toggleOpen = () => {\n    setIsPopupOpen(!isPopupOpen);\n  };\n\n  const handleClickArchiveButton = (id: string, announcementNumber: string | number) => {\n    toggleOpen();\n    setAnnouncementToArchive({ id, number: announcementNumber });\n  };\n\n  const onConfirm = () => {\n    toggleOpen();\n    postArchiveAnnouncement(announcementToArchive.id);\n  };\n\n  const onCancel = () => {\n    toggleOpen();\n    setAnnouncementToArchive(initialState);\n  };\n\n  const ids = data?.announcements.map(({ id }) => id) || [];\n\n  const columnLabels = [\n    {\n      label: 'announcements.announcement.id',\n      id: 'announcement_number',\n    },\n    {\n      label: 'announcements.announcement.date',\n      id: 'created_at',\n    },\n    { label: 'announcements.announcement.expires_at', id: 'expires_at' },\n    { label: 'announcements.announcement.title', id: 'title' },\n    { label: 'announcements.announcement.description' },\n    { label: 'announcements.announcement.author' },\n  ];\n\n  return (\n    <>\n      <ResponsiveTable className=\"col-span-full\">\n        {data?.announcements && data?.announcements.length === 0 ? <TableContentPlaceholder /> : (\n          <>\n            <ResponsiveTableHeader\n              ids={ids}\n              columnLabels={hasRoleType('tenant')\n                ? columnLabels.concat({ label: 'announcements.announcement.placeholder' })\n                : columnLabels}\n              tableName={'announcementsList' as TableId}\n            />\n            <ResponsiveTableBody>\n              {data?.announcements.map(({\n                id, announcementNumber, createdAt, description, title, author, status, expiresAt\n              }) => (\n                <ResponsiveTableBodyRow\n                  key={id}\n                  className=\"border-b last:border-b-0 border-separate font-medium\"\n                >\n                  {hasRoleType('tenant') ? (\n                    <TableBodyCell\n                      className={classNames(\n                        'max-w-[4rem]',\n                        { \"before:content-[' '] before:-ml-4 before:bg-main before:w-[8px] before:h-[8px] before:rounded-full before:shrink-0 flex items-center\": status === 'unread' },\n                      )}\n                    >\n                      <div className={`${status === 'unread' && 'ml-2'}`}>{announcementNumber}</div>\n                    </TableBodyCell>\n                  )\n                    : (\n                      <TableBodyCell className=\"max-w-[4rem]\">\n                        {announcementNumber}\n                      </TableBodyCell>\n                    )}\n                  <TableBodyCell>\n                    <Chip chipStyle={hasRoleType('tenant') && status === 'unread' ? 'gray' : 'ghost'} className=\"w-fit\">\n                      {format(new Date(createdAt), 'dd-MM-yyyy')}\n                    </Chip>\n                  </TableBodyCell>\n                  <TableBodyCell>\n                    {expiresAt && <Chip chipStyle={hasRoleType('tenant') && status === 'unread' ? 'gray' : 'ghost'} className=\"w-fit\">\n                      {format(new Date(expiresAt), 'dd-MM-yyyy')}\n                    </Chip>}\n                  </TableBodyCell>\n                  <TableBodyCell\n                    className=\"w-fit text-typography-black underline\"\n                    bold={status === 'unread' && hasRoleType('tenant')}\n                    clickable={({\n                      href: `/aktualnosci/${id}`,\n                      linkState: { returnTo: archived ? '/aktualnosci/archiwum' : '/aktualnosci' },\n                      onClick: () => handleClick(id, status),\n                      ariaLabel: `Przejd\u017A do szczeg\u00F3\u0142\u00F3w aktualno\u015Bci ${announcementNumber} ${title}`,\n                    })}\n                  >\n                    {title}\n                  </TableBodyCell>\n                  <TableBodyCell className=\"max-w-[13rem] truncate\">{description}</TableBodyCell>\n                  <TableBodyCell>\n                    <Chip chipStyle=\"primary\" className=\"w-fit\">\n                      {author}\n                    </Chip>\n                  </TableBodyCell>\n                  {(hasRoleType('tenant') && !archived) && (\n                    <TableBodyCell>\n                      <button\n                        type=\"button\"\n                        title={getMessage('announcements.announcement.archived')}\n                        onClick={() => handleClickArchiveButton(id, announcementNumber)}\n                        className={classNames('py-2 pl-2 text-typography-black hover:cursor-pointer hover:text-hover')}\n                      >\n                        <ArchiveIcon />\n                      </button>\n                    </TableBodyCell>\n                  )}\n                </ResponsiveTableBodyRow>\n              ))}\n            </ResponsiveTableBody>\n          </>\n        )}\n      </ResponsiveTable>\n      {data?.metadata && (\n        <PaginationControls\n          className=\"col-span-full\"\n          selectedPage={selectedPage}\n          setSelectedPage={setSelectedPage}\n          paginationMetadata={data.metadata}\n        />\n      )}\n      <ArchiveAnnouncementPopup\n        isOpen={isPopupOpen}\n        onConfirm={onConfirm}\n        onCancel={onCancel}\n        number={announcementToArchive.number}\n      />\n    </>\n  );\n};\n\nexport default AnnouncementsList;\n", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgArchiveBox = (props: SVGProps<SVGSVGElement>) => <svg width={16} height={16} viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><g id=\"ArchiveBox\"><path id=\"Vector\" d=\"M13 13.5H3C2.86739 13.5 2.74021 13.4473 2.64645 13.3536C2.55268 13.2598 2.5 13.1326 2.5 13V4.5L3.5 2.5H12.5L13.5 4.5V13C13.5 13.1326 13.4473 13.2598 13.3536 13.3536C13.2598 13.4473 13.1326 13.5 13 13.5Z\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path id=\"Vector_2\" d=\"M5.88184 9.38159L8.00059 11.5003L10.1193 9.38159\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path id=\"Vector_3\" d=\"M8 6.5V11.5\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path id=\"Vector_4\" d=\"M2.5 4.5H13.5\" stroke=\"currentColor\" strokeLinecap=\"round\" strokeLinejoin=\"round\" /></g></svg>;\nexport default SvgArchiveBox;", "import * as React from 'react';\nimport { useIntl } from 'react-intl';\nimport Dialog from '../../../components/Dialog/Dialog';\nimport useMessages from '../../../hooks/useMessages';\n\ntype Props = {\n  isOpen: boolean,\n  number: string | number,\n  onCancel: () => void,\n  onConfirm: () => void\n};\n\nconst ArchiveAnnouncementPopup = ({\n  isOpen, number, onCancel, onConfirm,\n}: Props) => {\n  const getMessage = useMessages();\n  const intl = useIntl();\n\n  return (\n    <Dialog\n      isOpen={isOpen}\n      onAccept={onConfirm}\n      onClose={onCancel}\n      labelledBy=\"archiveAnnouncementPopUpTitle\"\n      describedBy=\"archiveAnnouncementPopUpDescription\"\n      focusOnBtn\n    >\n      <h3 className=\"text-xl font-semibold text-center\" id=\"archiveAnnouncementPopUpTitle\">\n        { intl.formatMessage({ id: 'announcements.announcement.archivePopup.title' }, { announcementNumber: number }) }\n      </h3>\n      <p className=\"mb-12 mt-8 mx-16 text-sm text-typography-dark\" id=\"archiveAnnouncementPopUpDescription\">\n        { getMessage('announcements.announcement.archivePopup.description') }\n      </p>\n    </Dialog>\n  );\n};\n\nexport default ArchiveAnnouncementPopup;\n", "'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport format from 'date-fns/format';\nimport useMessages from '../../../hooks/useMessages';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport { useGetAnnouncementQuery, usePostArchiveAnnouncementMutation } from '../../../api/appApi';\nimport PageHeader from '../../../components/Layout/PageHeader';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport Card, { ArticleCard } from '../../../components/Card/Card';\nimport Chip from '../../../components/Chip/Chip';\nimport AttachmentPreview from '../../../components/AttachmentPreview/AttachmentPreview';\nimport { AnnouncementData, AnnouncementRecipientsData } from '../../../api/modules/announcements/announcementsTypes';\nimport SpeakerIcon from '../../../icons/volume.svg';\nimport Layout from '../../../components/Layout/Layout';\nimport RecipientGroupItem from './ReciepientsGroupItem';\nimport Button from '../../../components/Button/Button';\nimport useHomeownerAssociationsMode from '../../../hooks/useHomeownerAssociationsMode';\nimport useTenantlessMode from '../../../hooks/useTenantlessMode';\nimport ArchiveAnnouncementPopup from '../AnnouncementsList/ArchiveAnnouncementPopup';\nimport { TableBodyCell } from '../../../components/Table/Table';\nimport ArchiveIcon from '../../../icons/archiveBox.svg';\n\ntype AnnouncementToArchive = {\n  id: string\n  number: string | number\n};\n\nconst initialState: AnnouncementToArchive = {\n  id: '',\n  number: '',\n};\n\nconst AnnouncementPage = () => {\n  const { id } = useParams();\n  const getMessage = useMessages();\n  const hoaMode = useHomeownerAssociationsMode();\n  const tenantlessMode = useTenantlessMode();\n  const [postArchiveAnnouncement] = usePostArchiveAnnouncementMutation();\n\n  const navigate = useNavigate();\n  const {\n    checkTenantDataEnabled, checkModuleEnabled, hasPermission, hasRoleType, isTenantDataEnabled, isModuleEnabled,\n  } = usePermissions();\n  const announcementAvailable = (isTenantDataEnabled() || hasRoleType('worker')) && isModuleEnabled('announcements');\n  const { data, isSuccess } = useGetAnnouncementQuery(id, { skip: !announcementAvailable });\n  const [isPopupOpen, setIsPopupOpen] = React.useState(false);\n  const [announcementToArchive, setAnnouncementToArchive] = React.useState<AnnouncementToArchive>(initialState);\n\n  if (!hasRoleType('worker')) checkTenantDataEnabled();\n  React.useEffect(() => {\n    checkModuleEnabled('announcements');\n  }, [checkModuleEnabled]);\n\n  if (!announcementAvailable || !data) return null;\n\n  const toggleOpen = () => {\n    setIsPopupOpen(!isPopupOpen);\n  };\n\n  const handleClickArchiveButton = (id: string, announcementNumber: string | number) => {\n    toggleOpen();\n    setAnnouncementToArchive({ id, number: announcementNumber });\n  };\n\n  const onConfirm = () => {\n    toggleOpen();\n    postArchiveAnnouncement(announcementToArchive.id);\n    window.location.href = '/aktualnosci';\n  };\n\n  const onCancel = () => {\n    toggleOpen();\n    setAnnouncementToArchive(initialState);\n  };\n\n  const {\n    announcementNumber, title, description, category, createdAt, attachments, author, recipients, expiresAt,\n  } = isSuccess ? data : {} as AnnouncementData;\n\n  const {\n    homeownerAssociations, employees, estates, buildings, tenants, roles,\n  } = recipients || {} as AnnouncementRecipientsData;\n\n  const hasRecipients = recipients !== undefined && Object.keys(recipients).length > 0;\n\n  return (\n    <Layout currentPage=\"announcements\">\n      <PageHeader\n        currentPage=\"announcements\"\n        pageTitle={`${getMessage(`announcements.announcement.category.${category}`)} ${announcementNumber}`}\n        path=\"/aktualnosci\"\n      >\n        {hasRoleType('worker') && (\n          <Button\n            onClick={() => navigate(`/aktualnosci/${id}/edytuj`)}\n            className=\"py-1\"\n            size=\"small\"\n          >\n            {getMessage('announcements.notice.edit')}\n          </Button>\n        )}\n      </PageHeader>\n      <ContentWrapper>\n        <ArticleCard className=\"col-span-full\">\n          {hasRoleType('tenant') && (\n          <TableBodyCell>\n            <button\n              type=\"button\"\n              title={getMessage('announcements.announcement.archived')}\n              onClick={() => handleClickArchiveButton(id, announcementNumber)}\n              className={classNames('py-2 pl-2 text-typography-black hover:cursor-pointer hover:text-hover')}\n            >\n              <ArchiveIcon />\n            </button>\n          </TableBodyCell>\n          ) }\n          <ArchiveAnnouncementPopup\n            isOpen={isPopupOpen}\n            onConfirm={onConfirm}\n            onCancel={onCancel}\n            number={announcementToArchive.number}\n          />\n          <div>\n            <h2 className=\"text-header-sm\">{title}</h2>\n            <div className=\"flex justify-between my-4\">\n              <div className=\"flex items-center\">\n                <SpeakerIcon className=\"text-main mr-1\" />\n                <p className=\"text-text-lg-medium text-main\">\n                  <span className=\"visually-hidden\">Kategoria</span>\n                  {getMessage(`announcements.announcement.category.${category}`)}\n                </p>\n              </div>\n              <Chip chipStyle=\"ghost\" className=\"min-w-fit h-fit\" screenReaderOnlyText=\"Data utworzenia\">\n                {getMessage('announcements.announcement.createdAt')}\n                {' '}\n                {format(new Date(createdAt), 'dd-MM-yyyy')}\n              </Chip>\n              {expiresAt && (\n              <Chip chipStyle=\"ghost\" className=\"min-w-fit h-fit\" screenReaderOnlyText=\"Data wyga\u015Bni\u0119cia\">\n                {getMessage('announcements.announcement.expires_at')}\n                {' '}\n                {format(new Date(expiresAt), 'dd-MM-yyyy')}\n              </Chip>\n              )}\n            </div>\n          </div>\n          <div className=\"border-y py-6\">\n            <p className=\"text-typography-dark text-text-lg-medium whitespace-pre-line\">\n              {description}\n            </p>\n            {attachments.length > 0 && (\n              <ol className=\"flex flex-wrap mt-12\">\n                {attachments.map(({ filename, path, contentType }) => (\n                  <AttachmentPreview key={path} filename={filename} path={path} contentType={contentType} />))}\n              </ol>\n            )}\n          </div>\n          <p className=\"text-text-md-medium text-right text-typography-dark mt-4\">\n            <span className=\"visually-hidden\">Autor</span>\n            {author.toUpperCase()}\n          </p>\n        </ArticleCard>\n        {hasRoleType('worker') && hasPermission('announcements_notice_add') && hasRecipients && (\n          <>\n            <p className=\"text-header-sm my-4 col-span-full\">{getMessage('announcements.notice.form.receiversGroups')}</p>\n            <Card className=\"col-span-full\">\n              {employees && <RecipientGroupItem label=\"employees\" recipientGroup={employees} />}\n              {!tenantlessMode && hoaMode && homeownerAssociations && <RecipientGroupItem label=\"homeownerAssociations\" recipientGroup={homeownerAssociations} />}\n              {!tenantlessMode && estates && <RecipientGroupItem label=\"estates\" recipientGroup={estates} />}\n              {!tenantlessMode && buildings && <RecipientGroupItem label=\"buildings\" recipientGroup={buildings} />}\n              {!tenantlessMode && tenants && <RecipientGroupItem label=\"tenants\" recipientGroup={tenants} />}\n              {roles && <RecipientGroupItem label=\"roles\" recipientGroup={roles} />}\n            </Card>\n          </>\n        )}\n      </ContentWrapper>\n    </Layout>\n  );\n};\n\nexport default AnnouncementPage;\n", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgVolume = (props: SVGProps<SVGSVGElement>) => <svg width={20} height={20} viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><g id=\"Iconly/Light/Volume Down\"><g id=\"Volume Down\"><path id=\"Stroke 1\" fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M3.33455 10.0002C3.33223 11.0249 3.2865 12.4226 3.92046 12.945C4.51179 13.4323 4.92796 13.3068 6.00755 13.386C7.0879 13.466 9.36797 16.6417 11.1257 15.6372C12.0324 14.9242 12.0999 13.4293 12.0999 10.0002C12.0999 6.57104 12.0324 5.07621 11.1257 4.36317C9.36797 3.35789 7.0879 6.53442 6.00755 6.61439C4.92796 6.69362 4.51179 6.56805 3.92046 7.05537C3.2865 7.57781 3.33223 8.97549 3.33455 10.0002Z\" stroke=\"currentColor\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path id=\"Stroke 5\" d=\"M15.4839 6.92871C16.5766 8.83762 16.5766 11.1688 15.4839 13.0717\" stroke=\"currentColor\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /></g></g></svg>;\nexport default SvgVolume;", "import * as React from 'react';\nimport useMessages from '../../../hooks/useMessages';\nimport Pill from '../../../components/Pill/Pill';\nimport { AnnouncementsRecipient } from '../../../api/modules/announcements/announcementsTypes';\n\ninterface Props {\n  label: string,\n  recipientGroup: AnnouncementsRecipient[]\n}\n\nconst RecipientGroupItem = ({ label, recipientGroup }: Props) => {\n  const getMessage = useMessages();\n  const recipients = [...new Set(recipientGroup.map(({ id, name }) => ({ id, name })))];\n\n  return (\n    <div className=\"mb-2 flex items-baseline\">\n      <div className=\"text-text-lg-medium mr-6\">{getMessage(`announcements.notice.form.${label}`)}</div>\n      <div className=\"flex flex-wrap\">\n        {recipients?.map(({ id, name }) => <Pill label={name} key={id} />)}\n      </div>\n    </div>\n  );\n};\n\nexport default RecipientGroupItem;\n", "import * as React from 'react';\nimport XIcon from '../../icons/x.svg';\nimport useMessages from '../../hooks/useMessages';\n\ninterface Props {\n  label: string,\n  onRemove?: () => void;\n}\n\nconst Pill = ({ label, onRemove }: Props) => {\n  const getMessage = useMessages();\n\n  return (\n    <div className=\"flex items-center mb-1 mr-2 bg-light-200 rounded-full min-w-fit px-2 py-1 text-text-md-medium mobile:leading-5 text-hover\">\n      {label}\n      {onRemove && (\n      <button\n        onClick={onRemove}\n        onKeyDown={(e) => (e.key === 'Enter') && onRemove()}\n        type=\"button\"\n        className=\"flex items-center\"\n        aria-label={getMessage('remove')}\n      >\n        <XIcon className=\"ml-1 stroke-current mobile:w-4 mobile:h-4\" />\n      </button>\n      )}\n    </div>\n  );\n};\n\nexport default Pill;\n", "/* eslint-disable react/jsx-props-no-spreading */\n\nimport * as React from 'react';\nimport { useEffect } from 'react';\nimport { useForm, FormProvider, useFieldArray } from 'react-hook-form';\nimport { useNavigate } from 'react-router';\nimport Layout from '../../../components/Layout/Layout';\nimport PageHeader from '../../../components/Layout/PageHeader';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport Card from '../../../components/Card/Card';\nimport useMessages from '../../../hooks/useMessages';\nimport Button from '../../../components/Button/Button';\nimport {\n  FormInput, FormTextarea, FormDatePicker, FormFileInput,\n} from '../../../components/FormInputs';\nimport { useGetAnnouncementRecipientsQuery, usePostAnnouncementMutation } from '../../../api/appApi';\nimport FormSearchableMultiselectDropdown from '../../../components/FormInputs/inputs/FormSearchableMultiselectDropdown';\nimport { translateAnnouncementToApi } from '../../../api/modules/announcements/announcementsTranslator';\nimport { AnnouncementInputs } from '../../../api/modules/announcements/announcementsTypes';\nimport FileUploadPreview from '../../../components/AttachmentPreview/FileUploadPreview/FileUploadPreview';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport useHomeownerAssociationsMode from '../../../hooks/useHomeownerAssociationsMode';\nimport { FormNotice } from '../../../components/FormNotice/FormNotice';\nimport useTenantlessMode from '../../../hooks/useTenantlessMode';\n\nconst AnnouncementForm = () => {\n  const getMessage = useMessages();\n  const hoaMode = useHomeownerAssociationsMode();\n  const tenantlessMode = useTenantlessMode();\n  const [postAnnouncement, result] = usePostAnnouncementMutation();\n  const {\n    checkPermission, checkTenantDataEnabled, checkModuleEnabled, hasRoleType, isTenantDataEnabled, isModuleEnabled,\n  } = usePermissions();\n  const navigate = useNavigate();\n  const methods = useForm<AnnouncementInputs>({\n    defaultValues: {\n      attachments: [{ description: '' }],\n      employees: [],\n      homeownerAssociations: [],\n      estates: [],\n      buildings: [],\n      tenants: [],\n      roles: [],\n    },\n  });\n\n  const onSubmit = (data: AnnouncementInputs) => {\n    postAnnouncement(translateAnnouncementToApi(data));\n  };\n\n  const { fields, append, remove } = useFieldArray({ name: 'attachments', control: methods.control });\n\n  const attachments = methods.watch('attachments');\n  const allAttachmentsSelected = attachments.every((attachment) => attachment.file?.length);\n\n  useEffect(() => {\n    if (allAttachmentsSelected) {\n      append({ file: undefined, description: '' });\n    }\n  }, [allAttachmentsSelected]);\n\n  useEffect(() => {\n    if (result.status === 'fulfilled') navigate('/aktualnosci');\n  }, [result.status]);\n\n  checkPermission('announcements_notice_add');\n  if (!hasRoleType('worker')) checkTenantDataEnabled();\n  useEffect(() => {\n    checkModuleEnabled('announcements');\n  }, [checkModuleEnabled]);\n\n  if ((!isTenantDataEnabled() && !hasRoleType('worker')) || !isModuleEnabled('announcements')) return null;\n\n  return (\n    <Layout currentPage=\"announcements\">\n      <PageHeader pageTitle={getMessage('announcements.notice.new')} currentPage=\"announcements\" path=\"/aktualnosci\" />\n      <ContentWrapper>\n        <FormProvider {...methods}>\n          <form onSubmit={methods.handleSubmit(onSubmit)} className=\"col-span-full\">\n            <Card className=\"grid grid-cols-12\">\n              { /* @ts-ignore */ }\n              {result.isError && <FormNotice noticeClassName=\"col-span-full\" type=\"error\" message={result.error.data?.errors || getMessage('form.error')} />}\n              <section className=\"col-span-full md:col-span-6\">\n                <FormInput\n                  className=\"w-full\"\n                  inputClassName=\"w-full\"\n                  id=\"title\"\n                  type=\"text\"\n                  label={`${getMessage('announcements.notice.form.title')}*`}\n                  options={{\n                    required: getMessage('announcements.notice.form.error.title.required'),\n                    maxLength: { value: 150, message: getMessage('announcements.notice.form.error.title.maxLength') },\n                  }}\n                />\n                <FormTextarea\n                  className=\"mt-6 w-full\"\n                  inputClassName=\"w-full\"\n                  id=\"description\"\n                  label={`${getMessage('announcements.notice.form.description')}*`}\n                  options={{ required: getMessage('announcements.notice.form.error.description.required') }}\n                />\n                <div className=\"flex flex-wrap w-full\">\n                  {fields.map(({ file, id }, index) => {\n                    const fileSelected = file && file.length > 0;\n                    return (\n                      <div key={id} id={id} className=\"mb-4\">\n                        {fileSelected && (\n                          <FileUploadPreview attachment={attachments[index]} onDelete={() => remove(index)} />\n                        )}\n                        <FormFileInput\n                          inputClassName={fileSelected ? 'hidden' : ''}\n                          id={`attachments.${index}.file`}\n                          labelText={getMessage('tickets.ticket.addAttachment')}\n                          labelClassName={fileSelected ? 'hidden' : ''}\n                          withIcon\n                        />\n                      </div>\n                    );\n                  })}\n                </div>\n                <FormDatePicker\n                  id=\"expiresAt\"\n                  label={getMessage('announcements.notice.form.expirationDate')}\n                  minDate={new Date()}\n                />\n              </section>\n            </Card>\n            <p className=\"text-header-sm my-4\">{getMessage('announcements.notice.form.receiversGroups')}</p>\n            <Card className=\"grid\">\n              <section className=\"col-span-12\">\n                <FormSearchableMultiselectDropdown\n                  label={getMessage('announcements.notice.form.employees')}\n                  id=\"employees\"\n                  query={useGetAnnouncementRecipientsQuery}\n                  queryOptions={{ group: 'employees' }}\n                  ariaLabel={getMessage('form.ariaLabel.employees')}\n                />\n                {!tenantlessMode && (\n                  <>\n                    {hoaMode && (\n                      <FormSearchableMultiselectDropdown\n                        label={getMessage('announcements.notice.form.homeownerAssociations')}\n                        id=\"homeownerAssociations\"\n                        query={useGetAnnouncementRecipientsQuery}\n                        queryOptions={{ group: 'homeowner_associations' }}\n                        ariaLabel={getMessage('form.ariaLabel.hoa')}\n                      />\n                    )}\n                    <FormSearchableMultiselectDropdown\n                      label={getMessage('announcements.notice.form.estates')}\n                      id=\"estates\"\n                      query={useGetAnnouncementRecipientsQuery}\n                      queryOptions={{ group: 'estates' }}\n                      ariaLabel={getMessage('form.ariaLabel.estates')}\n                    />\n                    <FormSearchableMultiselectDropdown\n                      label={getMessage('announcements.notice.form.buildings')}\n                      id=\"buildings\"\n                      query={useGetAnnouncementRecipientsQuery}\n                      queryOptions={{ group: 'buildings' }}\n                      ariaLabel={getMessage('form.ariaLabel.buildings')}\n                    />\n                    <FormSearchableMultiselectDropdown\n                      label={getMessage('announcements.notice.form.tenants')}\n                      id=\"tenants\"\n                      query={useGetAnnouncementRecipientsQuery}\n                      queryOptions={{ group: 'tenants' }}\n                      ariaLabel={getMessage('form.ariaLabel.tenants')}\n                    />\n                  </>\n                )}\n                <FormSearchableMultiselectDropdown\n                  label={getMessage('announcements.notice.form.roles')}\n                  id=\"roles\"\n                  query={useGetAnnouncementRecipientsQuery}\n                  queryOptions={{ group: 'roles' }}\n                  ariaLabel={getMessage('form.ariaLabel.roles')}\n                />\n              </section>\n            </Card>\n            <div className=\"grid grid-cols-3\">\n              <Button type=\"submit\" className=\"mt-6 col-start-4\">{getMessage('save')}</Button>\n            </div>\n          </form>\n        </FormProvider>\n      </ContentWrapper>\n    </Layout>\n  );\n};\n\nexport default AnnouncementForm;\n", "/* eslint-disable jsx-a11y/no-static-element-interactions */\nimport * as React from 'react';\nimport {\n  useState, useCallback, useEffect, useRef, useMemo,\n} from 'react';\nimport classnames from 'classnames';\nimport { QueryDefinition } from '@reduxjs/toolkit/dist/query';\nimport { UseQuery } from '@reduxjs/toolkit/dist/query/react/buildHooks';\nimport { useFormContext } from 'react-hook-form';\nimport { InputLabel } from '../InputLabel';\nimport { baseQuery } from '../../../api/baseQuery';\nimport useMessages from '../../../hooks/useMessages';\nimport Pill from '../../Pill/Pill';\n\ninterface Option {\n  id: string,\n  name: string,\n}\n\nconst inputDefaultStyles = `inline-block px-2 py-1 font-normal text-typography-black bg-white bg-clip-padding\nborder border-solid border-stroke-grey-300 rounded transition ease-in-out my-1 text-text-md-semibold\nfocus:text-typography-black focus:bg-white focus:border-blue-600 focus:outline-none`;\n\ninterface Props {\n  id: string,\n  label?: string,\n  query: UseQuery<QueryDefinition<Record<string, string>, typeof baseQuery, string, Option[], string>>,\n  queryOptions?: Record<string, string | undefined>,\n  className?: string,\n  defaultValue?: Option[],\n  ariaLabel?: string,\n}\n\nconst FormSearchableMultiselectDropdown = ({\n  id,\n  label,\n  query,\n  queryOptions,\n  className,\n  defaultValue = [],\n  ariaLabel,\n}: Props) => {\n  const [focusedIndex, setFocusedIndex] = useState(-1);\n  const [showResults, setShowResults] = useState(false);\n  const [selectedItems, setSelectedItems] = useState<Option[]>(defaultValue);\n  const [typedValue, setTypedValue] = useState('');\n  const { data } = query({ search: typedValue, ...queryOptions });\n  const getMessage = useMessages();\n  const listRef = useRef<HTMLDivElement>(null);\n\n  const { setValue, watch } = useFormContext();\n  const currentValue = watch(id);\n\n  useEffect(() => setSelectedItems(defaultValue), [defaultValue?.length]);\n\n  const resetSearch = useCallback(() => {\n    setFocusedIndex(-1);\n    setShowResults(false);\n  }, []);\n\n  const handleSelection = (item: Option) => {\n    setTypedValue('');\n    if (!selectedItems.includes(item)) {\n      setSelectedItems(selectedItems.concat([item]));\n    }\n    if (currentValue && !currentValue.includes(item.id)) {\n      const value = (currentValue || []).concat([item.id]);\n      setValue(id, value);\n    }\n    resetSearch();\n  };\n\n  const handleKeyDown: React.KeyboardEventHandler<HTMLDivElement> = (e) => {\n    if (data) {\n      const { key } = e;\n      let nextIndexCount = 0;\n\n      if (key === 'ArrowDown') { nextIndexCount = (focusedIndex + 1) % data.length; }\n      if (key === 'ArrowUp') { nextIndexCount = (focusedIndex + data.length - 1) % data.length; }\n      if (key === 'Escape') { resetSearch(); }\n      if (key === 'Enter') {\n        e.preventDefault();\n        const item = data[focusedIndex];\n        if (item) handleSelection(item);\n      }\n\n      setFocusedIndex(nextIndexCount);\n      setTimeout(() => {\n        listRef.current?.querySelector('.active')?.scrollIntoView({ block: 'nearest' });\n      }, 300);\n    }\n  };\n\n  const resetValues = useCallback(() => {\n    setTypedValue('');\n    setValue(id, []);\n    setSelectedItems([]);\n  }, [id, setValue]);\n\n  const handleChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n    setTypedValue(e.target.value);\n    setShowResults(true);\n  };\n\n  const showValues = useCallback(() => {\n    setShowResults(true);\n  }, [setShowResults]);\n\n  const removeValue = (idToRemove: string) => {\n    setValue(id, currentValue.filter((itemId: string) => itemId !== idToRemove));\n    setSelectedItems(selectedItems.filter((item) => item.id !== idToRemove));\n  };\n\n  const selectedIds = useMemo(() => selectedItems.map(({ id }) => id), [selectedItems]);\n\n  return (\n    <div\n      onBlur={resetSearch}\n      onKeyDown={handleKeyDown}\n      className={`relative ${className} mb-2`}\n    >\n      {label && <InputLabel id={id} label={label} showReset={currentValue?.length !== 0} onReset={resetValues} />}\n      <input\n        value={typedValue}\n        id={id}\n        // eslint-disable-next-line jsx-a11y/tabindex-no-positive\n        tabIndex={0}\n        onChange={handleChange}\n        onFocus={showValues}\n        type=\"text\"\n        placeholder={getMessage('filters.search')}\n        className={classnames('transition w-full', inputDefaultStyles)}\n        autoComplete=\"off\"\n        aria-label={ariaLabel}\n      />\n      <input\n        type=\"select\"\n        value={currentValue}\n        style={{ display: 'none' }}\n      />\n      {showResults && data && data.length > 0 && (\n        <div\n          className=\"absolute w-full bg-white shadow-lg rounded-bl rounded-br max-h-56 overflow-y-auto z-50\"\n          ref={listRef}\n        >\n          {data?.filter((item) => selectedIds.includes(item.id) === false).map((item: {\n            id: string,\n            name: string,\n          }, index) => (\n            <div\n              key={item.id}\n              onMouseDown={() => handleSelection(item)}\n              className={classnames(\n                inputDefaultStyles,\n                'w-full hover:text-hover hover:bg-light-200 border-none',\n                { 'bg-light-200 active': index === focusedIndex },\n              )}\n            >\n              {item.name}\n            </div>\n          ))}\n        </div>\n      )}\n      <div className=\"text-text-md-medium text-main flex flex-wrap\">\n        {selectedItems.map(({ name, id }) => (\n          <Pill key={id} label={name} onRemove={() => removeValue(id)} />\n        ))}\n      </div>\n    </div>\n  );\n};\n\nexport default FormSearchableMultiselectDropdown;\n", "/* eslint-disable react/jsx-props-no-spreading */\n\nimport * as React from 'react';\nimport { useParams } from 'react-router-dom';\nimport Layout from '../../../components/Layout/Layout';\nimport PageHeader from '../../../components/Layout/PageHeader';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport useMessages from '../../../hooks/useMessages';\nimport { useGetAnnouncementQuery } from '../../../api/appApi';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport AnnouncementChangeForm from './AnnouncementChangeForm';\n\nconst AnnouncementChange = () => {\n  const getMessage = useMessages();\n  const { id } = useParams();\n  const {\n    checkPermission, checkTenantDataEnabled, checkModuleEnabled, hasRoleType, isTenantDataEnabled, isModuleEnabled,\n  } = usePermissions();\n  const announcementAvailable = (isTenantDataEnabled() || hasRoleType('worker')) && isModuleEnabled('announcements');\n  const { data } = useGetAnnouncementQuery(id, { skip: !announcementAvailable });\n\n  checkPermission('announcements_notice_add');\n  if (!hasRoleType('worker')) checkTenantDataEnabled();\n  React.useEffect(() => {\n    checkModuleEnabled('announcements');\n  }, [checkModuleEnabled]);\n\n  if (!announcementAvailable || !id || !data) return null;\n\n  return (\n    <Layout currentPage=\"announcements\">\n      <PageHeader pageTitle={getMessage('announcements.notice.editNotice')} currentPage=\"announcements\" path=\"/aktualnosci\" />\n      <ContentWrapper>\n        <AnnouncementChangeForm announcement={data} id={id} />\n      </ContentWrapper>\n    </Layout>\n  );\n};\n\nexport default AnnouncementChange;\n", "/* eslint-disable react/jsx-props-no-spreading */\n\nimport * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { useForm, FormProvider, useFieldArray } from 'react-hook-form';\nimport { useNavigate } from 'react-router-dom';\nimport Card from '../../../components/Card/Card';\nimport useMessages from '../../../hooks/useMessages';\nimport Button from '../../../components/Button/Button';\nimport {\n  FormInput, FormTextarea, FormDatePicker, FormFileInput,\n} from '../../../components/FormInputs';\nimport { useChangeAnnouncementMutation, useGetAnnouncementRecipientsQuery } from '../../../api/appApi';\nimport { translateChangeAnnouncementToApi } from '../../../api/modules/announcements/announcementsTranslator';\nimport { AnnouncementData, AnnouncementChangeInputs, AnnouncementAttachment } from '../../../api/modules/announcements/announcementsTypes';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport useHomeownerAssociationsMode from '../../../hooks/useHomeownerAssociationsMode';\nimport FileUploadPreview from '../../../components/AttachmentPreview/FileUploadPreview/FileUploadPreview';\nimport AttachmentPreview from '../../../components/AttachmentPreview/AttachmentPreview';\nimport FormSearchableMultiselectDropdown from '../../../components/FormInputs/inputs/FormSearchableMultiselectDropdown';\nimport { FormNotice } from '../../../components/FormNotice/FormNotice';\nimport useTenantlessMode from '../../../hooks/useTenantlessMode';\n\nconst AnnouncementChangeForm = ({ announcement, id }: { announcement: AnnouncementData, id: string }) => {\n  const getMessage = useMessages();\n  const hoaMode = useHomeownerAssociationsMode();\n  const tenantlessMode = useTenantlessMode();\n  const [changeAnnouncement, result] = useChangeAnnouncementMutation();\n  const { checkPermission } = usePermissions();\n  const navigate = useNavigate();\n  const [oldAttachmentsToDisplay, setOldAttachmentsToDisplay] = useState<AnnouncementAttachment[]>([]);\n\n  const {\n    title, description, expiresAt, attachments: oldAttachments, recipients,\n  } = announcement;\n\n  const methods = useForm<AnnouncementChangeInputs>({\n    defaultValues: {\n      title,\n      description,\n      expiresAt: expiresAt || undefined,\n      attachments: [{ description: '', file: undefined }],\n      employees: recipients?.employees?.map(({ id }) => id) || [],\n      homeownerAssociations: recipients?.homeownerAssociations?.map(({ id }) => id) || [],\n      estates: recipients?.estates?.map(({ id }) => id) || [],\n      buildings: recipients?.buildings?.map(({ id }) => id) || [],\n      tenants: recipients?.tenants?.map(({ id }) => id) || [],\n      roles: recipients?.roles?.map(({ id }) => id) || [],\n    },\n  });\n\n  const { fields, append, remove } = useFieldArray({ name: 'attachments', control: methods.control });\n\n  const attachmentsInputs = methods.watch('attachments');\n\n  const allAttachmentsSelected = attachmentsInputs?.every((attachment) => attachment.file?.length);\n\n  useEffect(() => {\n    if (allAttachmentsSelected) {\n      append({ file: undefined, description: '' });\n    }\n  }, [allAttachmentsSelected]);\n\n  useEffect(() => {\n    setOldAttachmentsToDisplay(oldAttachments);\n  }, [oldAttachments]);\n\n  useEffect(() => {\n    if (result.status === 'fulfilled') navigate('/aktualnosci');\n  }, [result.status]);\n\n  const onSubmit = (data: AnnouncementChangeInputs) => {\n    translateChangeAnnouncementToApi({\n      ...data,\n      oldAttachments: oldAttachmentsToDisplay || [],\n      id,\n    }).then((newData) => changeAnnouncement({ newData }));\n  };\n\n  checkPermission('announcements_notice_add');\n\n  const removeAttachments = (indexToRemove: number) => {\n    const updatedOldAttachmentsList = [...oldAttachmentsToDisplay].filter((_, index) => index !== indexToRemove);\n    setOldAttachmentsToDisplay(updatedOldAttachmentsList);\n  };\n\n  return (\n    <FormProvider {...methods}>\n      <form onSubmit={methods.handleSubmit(onSubmit)} className=\"col-span-full\">\n        <Card className=\"grid grid-cols-12\">\n          { /* @ts-ignore */}\n          {result.isError && <FormNotice noticeClassName=\"col-span-full\" type=\"error\" message={result.error.data?.errors || getMessage('form.error')} />}\n          <section className=\"col-span-full md:col-span-6\">\n            <FormInput\n              className=\"w-full\"\n              inputClassName=\"w-full\"\n              id=\"title\"\n              type=\"text\"\n              label={`${getMessage('announcements.notice.form.title')}*`}\n              options={{\n                required: getMessage('announcements.notice.form.error.title.required'),\n                maxLength: { value: 150, message: getMessage('announcements.notice.form.error.title.maxLength') },\n              }}\n            />\n            <FormTextarea\n              className=\"mt-6 w-full\"\n              inputClassName=\"w-full\"\n              id=\"description\"\n              label={`${getMessage('announcements.notice.form.description')}*`}\n              options={{ required: getMessage('announcements.notice.form.error.description.required') }}\n            />\n          </section>\n          <section className=\"col-span-full\">\n            <div className=\"w-full mb-4\">\n              {oldAttachmentsToDisplay.length > 0 && (\n                <>\n                  <div className=\"flex text-typography-dark text-text-lg-medium mt-12 mb-3 items-center\">\n                    <p>Edytuj istniej\u0105ce za\u0142\u0105czniki</p>\n                  </div>\n                  <ol className=\"flex flex-wrap gap-x-8 gap-y-2\">\n                    {oldAttachmentsToDisplay.map(({\n                      filename, path, contentType,\n                    }, index) => (\n                      <div className=\"flex items-start\" key={path}>\n                        <AttachmentPreview key={path} filename={filename} path={path} contentType={contentType} />\n                        <Button styleType=\"ghost\" className=\"hover:underline !w-auto !px-0\" onClick={() => removeAttachments(index)}>\n                          {getMessage('remove')}\n                        </Button>\n                      </div>\n                    ))}\n                  </ol>\n                </>\n              )}\n            </div>\n            <div className=\"flex flex-wrap w-full mb-4\">\n              {fields.map(({ file, id }, index) => {\n                const fileSelected = file && file.length > 0;\n                return (\n                  <div key={id} id={id} className=\"mb-4\">\n                    {fileSelected && (\n                    <FileUploadPreview attachment={attachmentsInputs[index]} onDelete={() => remove(index)} />\n                    )}\n                    <FormFileInput\n                      inputClassName={fileSelected ? 'hidden' : ''}\n                      id={`attachments.${index}.file`}\n                      labelText={getMessage('announcements.notice.edit.addAdditionalAttachments')}\n                      labelClassName={fileSelected ? 'hidden' : ''}\n                      withIcon\n                    />\n                  </div>\n                );\n              })}\n            </div>\n          </section>\n          <FormDatePicker\n            id=\"expiresAt\"\n            label={getMessage('announcements.notice.form.expirationDate')}\n            className=\"col-span-full\"\n          />\n        </Card>\n        <p className=\"text-header-sm my-4\">{getMessage('announcements.notice.form.receiversGroups')}</p>\n        <Card className=\"grid\">\n          <section className=\"col-span-12\">\n            <FormSearchableMultiselectDropdown\n              label={getMessage('announcements.notice.form.employees')}\n              id=\"employees\"\n              query={useGetAnnouncementRecipientsQuery}\n              queryOptions={{ group: 'employees' }}\n              defaultValue={recipients?.employees}\n              ariaLabel={getMessage('form.ariaLabel.employees')}\n            />\n            {!tenantlessMode && (\n              <>\n                {hoaMode && (\n                  <FormSearchableMultiselectDropdown\n                    label={getMessage('announcements.notice.form.homeownerAssociations')}\n                    id=\"homeownerAssociations\"\n                    query={useGetAnnouncementRecipientsQuery}\n                    queryOptions={{ group: 'homeowner_associations' }}\n                    defaultValue={recipients?.homeownerAssociations}\n                    ariaLabel={getMessage('form.ariaLabel.hoa')}\n                  />\n                )}\n                <FormSearchableMultiselectDropdown\n                  label={getMessage('announcements.notice.form.estates')}\n                  id=\"estates\"\n                  query={useGetAnnouncementRecipientsQuery}\n                  queryOptions={{ group: 'estates' }}\n                  defaultValue={recipients?.estates}\n                  ariaLabel={getMessage('form.ariaLabel.estates')}\n                />\n                <FormSearchableMultiselectDropdown\n                  label={getMessage('announcements.notice.form.buildings')}\n                  id=\"buildings\"\n                  query={useGetAnnouncementRecipientsQuery}\n                  queryOptions={{ group: 'buildings' }}\n                  defaultValue={recipients?.buildings}\n                  ariaLabel={getMessage('form.ariaLabel.buildings')}\n                />\n                <FormSearchableMultiselectDropdown\n                  label={getMessage('announcements.notice.form.tenants')}\n                  id=\"tenants\"\n                  query={useGetAnnouncementRecipientsQuery}\n                  queryOptions={{ group: 'tenants' }}\n                  defaultValue={recipients?.tenants}\n                  ariaLabel={getMessage('form.ariaLabel.tenants')}\n                />\n              </>\n            )}\n            <FormSearchableMultiselectDropdown\n              label={getMessage('announcements.notice.form.roles')}\n              id=\"roles\"\n              query={useGetAnnouncementRecipientsQuery}\n              queryOptions={{ group: 'roles' }}\n              defaultValue={recipients?.roles}\n              ariaLabel={getMessage('form.ariaLabel.roles')}\n            />\n          </section>\n        </Card>\n        <div className=\"grid grid-cols-3\">\n          <Button type=\"submit\" className=\"mt-6 col-start-4\">{getMessage('save')}</Button>\n        </div>\n      </form>\n    </FormProvider>\n  );\n};\n\nexport default AnnouncementChangeForm;\n", "import * as React from 'react';\nimport { useEffect, useMemo } from 'react';\nimport { useNavigate } from 'react-router';\nimport { useParams } from 'react-router-dom';\nimport PageHeader from '../../components/Layout/PageHeader';\nimport Layout from '../../components/Layout/Layout';\nimport useMessages from '../../hooks/useMessages';\nimport Tabs, { TabElement } from '../../components/Tabs/Tabs';\nimport ContentWrapper from '../../components/ContentWrapper/ContentWrapper';\nimport PaymentsPage from './PaymentsPage/PaymentsPage';\nimport YearsBalancePage from './YearsBalancePage/YearsBalancePage';\nimport MonthsBalancePage from './MonthsBalancePage/MonthsBalancePage';\nimport TitleBalancePage from './TitleBalancePage/TitleBalancePage';\nimport { useSettlementsYears } from '../../hooks/settlements/useSettlementsYears';\nimport { useSettlementsVenue } from '../../hooks/settlements/useSettlementsVenue';\nimport PaymentsHistoryPage from './PaymentsHistoryPage/PaymentsHistoryPage';\nimport { usePermissions } from '../../hooks/usePermissions';\n\ninterface Props {\n  tab: 'payments' | 'balance' | 'history',\n}\n\nconst SettlementsPage = ({ tab }: Props) => {\n  const getMessage = useMessages();\n  const { hasRoleType, checkModuleEnabled, isModuleEnabled } = usePermissions();\n  const navigate = useNavigate();\n  const { year, month, titleId } = useParams();\n  const years = useSettlementsYears();\n  const { venueId, venueAddress } = useSettlementsVenue();\n\n  const mostRecentYear = useMemo(() => years[0], [years]); // years array is sorted on backend\n\n  const tabs: TabElement[] = [{\n    label: getMessage('settlements.balance'),\n    path: `/rozrachunki/analiza_salda/${mostRecentYear || ''}${venueId ? `?venueId=${venueId}` : ''}`,\n  }];\n\n  const settlementsTabs = (isModuleEnabled('settlements') && isModuleEnabled('payments')) ? tabs.concat([{\n    label: getMessage('settlements.payments'),\n    path: `/rozrachunki/platnosci${venueId ? `?venueId=${venueId}` : ''}`,\n  }, {\n    label: getMessage('settlements.history'),\n    path: `/rozrachunki/historia${venueId ? `?venueId=${venueId}` : ''}`,\n  }]) : tabs;\n\n  useEffect(() => {\n    if (tab === 'balance' && !year && mostRecentYear) {\n      navigate(`/rozrachunki/analiza_salda/${mostRecentYear}${venueId ? `?venueId=${venueId}` : ''}`);\n    }\n  }, [tab, mostRecentYear, venueId]);\n\n  checkModuleEnabled('settlements');\n\n  return (\n    <Layout currentPage=\"settlements\">\n      {tab === 'payments' && (\n        <>\n          <PageHeader\n            pageTitle={getMessage('navigation.settlements.payments')}\n            currentPage=\"settlements\"\n            path={hasRoleType('worker') ? '/rozrachunki/lokale/aktywne' : undefined}\n            subheader={venueAddress}\n          />\n          <Tabs tabElements={settlementsTabs} />\n          <ContentWrapper>\n            <PaymentsPage />\n          </ContentWrapper>\n        </>\n      )}\n      {tab === 'balance' && !month && (\n        <YearsBalancePage tabs={settlementsTabs} year={year} />\n      )}\n      {tab === 'balance' && year && month && !titleId && (\n        <MonthsBalancePage year={year} month={month} />\n      )}\n      {tab === 'balance' && year && month && titleId && (\n        <TitleBalancePage year={year} month={month} titleId={titleId} />\n      )}\n      {tab === 'history' && (\n        <PaymentsHistoryPage tabs={settlementsTabs} />\n      )}\n    </Layout>\n  );\n};\n\nexport default SettlementsPage;\n", "import * as React from 'react';\nimport { useLocation } from 'react-router';\nimport queryString from 'query-string';\nimport { useState } from 'react';\nimport { useGetFullUserAccountQuery } from '../../../api/appApi';\nimport PaymentsTable from './PaymentsTable/PaymentsTable';\nimport ExpandableCard from '../../../components/ExpandableCard/ExpandableCard';\nimport Card from '../../../components/Card/Card';\nimport PaymentInProgressDialog from './PaymentInProgressDialog/PaymentInProgressDialog';\nimport { useSettlementsVenue } from '../../../hooks/settlements/useSettlementsVenue';\nimport { useSettlementsTenant } from '../../../hooks/settlements/useSettlementsTenant';\nimport { usePermissions } from '../../../hooks/usePermissions';\n\nconst PaymentsPage = () => {\n  const [progressDialogOpen, setProgressDialogOpen] = useState(true);\n  const { data: user } = useGetFullUserAccountQuery();\n  const { tenantId } = useSettlementsTenant();\n  const { search } = useLocation();\n  const { payment_id: paymentId } = queryString.parse(search);\n\n  const { venueId } = useSettlementsVenue();\n\n  const { checkModuleEnabled } = usePermissions();\n  checkModuleEnabled('settlements');\n  checkModuleEnabled('payments');\n\n  if (venueId) {\n    return (\n      <Card className=\"col-span-12\">\n        <PaymentsTable venueId={venueId} tenantId={tenantId} />\n      </Card>\n    );\n  }\n  return (\n    <>\n      {(user?.tenant?.venues || []).map((venue) => (\n        <React.Fragment key={venue.id}>\n          {paymentId && (\n            <PaymentInProgressDialog\n              paymentId={paymentId as string}\n              isOpen={progressDialogOpen}\n              close={() => setProgressDialogOpen(false)}\n            />\n          )}\n          <ExpandableCard className=\"col-span-12\" title={venue.address}>\n            <PaymentsTable venueId={venue.id} />\n          </ExpandableCard>\n        </React.Fragment>\n      ))}\n    </>\n  );\n};\n\nexport default PaymentsPage;\n", "import * as React from 'react';\nimport { useEffect, useMemo } from 'react';\nimport useMessages from '../../../../hooks/useMessages';\nimport { useGetFullUserAccountQuery, useGetPaymentsQuery, usePostMakePaymentMutation } from '../../../../api/appApi';\nimport ResponsiveTable, {\n  ResponsiveTableBody, ResponsiveTableBodyRow,\n  ResponsiveTableHeader,\n} from '../../../../components/Table/ResponsiveTable';\nimport { Payment } from '../../../../api/modules/settlements/settlementsTypes';\nimport { TableBodyCell } from '../../../../components/Table/Table';\nimport { formatNumber, formatBankAccount } from '../../../../../utils/formatters';\nimport Button from '../../../../components/Button/Button';\nimport { usePermissions } from '../../../../hooks/usePermissions';\nimport Spinner from '../../../../components/Spinner/Spinner';\nimport { FormNotice } from '../../../../components/FormNotice/FormNotice';\nimport { useSettlementsTenant } from '../../../../hooks/settlements/useSettlementsTenant';\n\ninterface Props {\n  venueId: string,\n  tenantId?: string,\n}\n\nconst PaymentsTable = ({ venueId, tenantId }: Props) => {\n  const getMessage = useMessages();\n  const { hasRoleType, isModuleEnabled } = usePermissions();\n  const { tenantRequired } = useSettlementsTenant();\n  const queryParams: { venue: string, tenantId?: string } = { venue: venueId };\n  if (hasRoleType('worker')) queryParams.tenantId = tenantId;\n  const { data, isLoading, isSuccess } = useGetPaymentsQuery(queryParams, { skip: tenantRequired && !tenantId });\n  const [makePayment, result] = usePostMakePaymentMutation();\n  const { data: user } = useGetFullUserAccountQuery();\n\n  const columnLabels = useMemo(() => ([\n    { label: 'settlements.payments.header.title' },\n    { label: 'settlements.payments.header.bankAccount' },\n    { label: 'settlements.payments.header.value', divClassName: 'md:text-right md:justify-end' },\n    ...isModuleEnabled('payments') ? [{ label: 'settlements.payments.header.makePayment' }] : [],\n  ]), [isModuleEnabled('payments')]);\n\n  useEffect(() => {\n    if (result?.status === 'fulfilled' && result?.data?.redirectUrl) {\n      window.location.href = result.data.redirectUrl;\n    }\n  }, [result]);\n\n  const handlePayment = (payment: Payment) => {\n    makePayment({\n      payment: {\n        amount: parseFloat(payment.value.toString()).toFixed(2),\n        description: payment.titleNames,\n        bank_account: payment.accountNumber,\n        email: user?.tenant?.email || '',\n        tenants_venue_id: venueId,\n      },\n    });\n  };\n\n  const ids = useMemo(() => (data || []).map((payment) => payment.titleNames), [data]);\n\n  return (\n    <>\n      {result.error && <FormNotice type=\"error\" message={getMessage('settlements.payments.make.error')} />}\n      <ResponsiveTable className=\"col-span-12 border-none !p-0\">\n        {isLoading && <Spinner className=\"m-auto\" />}\n        {isSuccess && data && (\n          <>\n            <ResponsiveTableHeader columnLabels={columnLabels} ids={ids} />\n            <ResponsiveTableBody>\n              {data.map((payment: Payment, index) => (\n                <ResponsiveTableBodyRow key={`payment_${payment.titleNames}_${index + 1}`}>\n                  <TableBodyCell>{payment.titleNames}</TableBodyCell>\n                  <TableBodyCell className=\"select-all\">{payment.accountNumber ? formatBankAccount(payment.accountNumber) : ''}</TableBodyCell>\n                  <TableBodyCell className=\"md:text-right\">{formatNumber(payment.value)}</TableBodyCell>\n                  {isModuleEnabled('payments') && (\n                  <TableBodyCell>\n                    {parseFloat(payment.value) > 0 && (\n                    <>\n                      {(!payment.bmPayment || payment.bmPayment.status === 'failure') && (\n                      <Button\n                        disabled={!hasRoleType('tenant') || !payment.accountNumber}\n                        onClick={() => handlePayment(payment)}\n                        ariaLabel={'Status p\u0142atno\u015Bci: nie zap\u0142acono'.concat(hasRoleType('tenant') ? `Kliknij aby zap\u0142aci\u0107 za ${payment.titleNames} w kwocie ${payment.value} z\u0142` : '')}\n                      >\n                        {getMessage('settlements.payments.pay')}\n                      </Button>\n                      )}\n                      {(payment.bmPayment && payment.bmPayment.status === 'success') && (\n                      <Button disabled styleType=\"secondary\" className=\"text-main\" ariaLabel=\"Status p\u0142atno\u015Bci - zap\u0142acono\">\n                        {getMessage('settlements.payments.paid')}\n                      </Button>\n                      )}\n                      {(payment.bmPayment && payment.bmPayment.status === 'pending') && (\n                      <Button disabled styleType=\"secondary\" className=\"text-main\" ariaLabel=\"Status p\u0142atno\u015Bci - w toku\">\n                        {getMessage('settlements.payments.paymentInProgress')}\n                      </Button>\n                      )}\n                    </>\n                    )}\n                  </TableBodyCell>\n                  )}\n                </ResponsiveTableBodyRow>\n              ))}\n            </ResponsiveTableBody>\n          </>\n        )}\n      </ResponsiveTable>\n    </>\n  );\n};\n\nexport default PaymentsTable;\n", "import { useGetFullUserAccountQuery } from '../../api/appApi';\nimport useTenantlessMode from '../useTenantlessMode';\nimport { usePermissions } from '../usePermissions';\n\nexport const useSettlementsTenant = () => {\n  const { data: user } = useGetFullUserAccountQuery();\n  const { hasRoleType } = usePermissions();\n  const tenantlessMode = useTenantlessMode();\n  const tenantRequired = hasRoleType('worker') && !tenantlessMode;\n  const tenantId = tenantRequired && user\n    ? localStorage.getItem(`selectedSettlementsTenantId-${user.id}`) || ''\n    : '';\n\n  return { tenantId, tenantRequired, tenantlessMode };\n};\n", "import * as React from 'react';\nimport { useGetBMPaymentQuery } from '../../../../api/appApi';\nimport Button from '../../../../components/Button/Button';\nimport Popup from '../../../../components/Popup/Popup';\nimport useMessages from '../../../../hooks/useMessages';\nimport Spinner from '../../../../components/Spinner/Spinner';\nimport SuccessIcon from '../../../../icons/payment-success.svg';\nimport FailureIcon from '../../../../icons/payment-error.svg';\n\ninterface Props {\n  isOpen: boolean,\n  close: () => void,\n  paymentId: string,\n}\n\nconst PaymentInProgressDialog = ({ paymentId, isOpen, close }: Props) => {\n  const getMessage = useMessages();\n  const { data: paymentData } = useGetBMPaymentQuery(\n    paymentId,\n    {\n      pollingInterval: 5000,\n      skip: !isOpen,\n    },\n  );\n\n  return (\n    <Popup isOpen={isOpen}>\n      {paymentData?.status === 'pending' && (\n        <>\n          <div className=\"text-typography-black text-lg-bold\">{getMessage('settlements.payment.inProgress')}</div>\n          <Spinner className=\"m-6\" />\n        </>\n      )}\n      {paymentData?.status === 'success' && (\n        <>\n          <div className=\"text-interactions-success-text text-lg-bold\">{getMessage('settlements.payment.success')}</div>\n          <SuccessIcon className=\"m-6\" />\n        </>\n      )}\n      {paymentData?.status === 'failure' && (\n        <>\n          <div className=\"text-interactions-error-text text-lg-bold\">{getMessage('settlements.payment.error')}</div>\n          <FailureIcon className=\"m-6\" />\n        </>\n      )}\n      <Button onClick={close}>{getMessage('settlements.payment.close')}</Button>\n    </Popup>\n  );\n};\n\nexport default PaymentInProgressDialog;\n", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgPaymentSuccess = (props: SVGProps<SVGSVGElement>) => <svg width={52} height={52} viewBox=\"0 0 52 52\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M52 25.9978C52 33.1795 49.0894 39.679 44.3803 44.3841C39.68 49.0892 33.1767 52 26 52C11.6422 52 0 40.3612 0 25.9978C0 18.8205 2.91055 12.321 7.6197 7.61592C12.32 2.9108 18.8233 0 26 0C33.1767 0 39.68 2.9108 44.3803 7.61592C49.0894 12.321 52 18.8205 52 25.9978Z\" fill=\"#E8F3F2\" /><path d=\"M35.625 19.875L23.375 32.125L17.25 26\" stroke=\"#167B6E\" strokeWidth={3.2} strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>;\nexport default SvgPaymentSuccess;", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgPaymentError = (props: SVGProps<SVGSVGElement>) => <svg width={52} height={52} viewBox=\"0 0 52 52\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><path d=\"M52 25.9978C52 33.1795 49.0894 39.679 44.3803 44.3841C39.68 49.0892 33.1767 52 26 52C11.6422 52 0 40.3612 0 25.9978C0 18.8205 2.91055 12.321 7.6197 7.61592C12.32 2.9108 18.8233 0 26 0C33.1767 0 39.68 2.9108 44.3803 7.61592C49.0894 12.321 52 18.8205 52 25.9978Z\" fill=\"#FBECEC\" /><path d=\"M33.875 18.125L18.125 33.875\" stroke=\"#CF2C30\" strokeWidth={3.2} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path d=\"M33.875 33.875L18.125 18.125\" stroke=\"#CF2C30\" strokeWidth={3.2} strokeLinecap=\"round\" strokeLinejoin=\"round\" /></svg>;\nexport default SvgPaymentError;", "import { useLocation } from 'react-router';\nimport queryString from 'query-string';\nimport { useMemo } from 'react';\nimport { useAppSelector } from '../reduxHooks';\nimport { useGetFullUserAccountQuery, useGetSettlementsVenuesQuery } from '../../api/appApi';\nimport { usePermissions } from '../usePermissions';\nimport { useSettlementsTenant } from './useSettlementsTenant';\n\nexport const useSettlementsVenue = () => {\n  const { hasRoleType } = usePermissions();\n  const { search } = useLocation();\n  const { venueId: urlVenueId } = queryString.parse(search);\n  const storeVenueId = useAppSelector((state) => state.app.selectedVenueId);\n  const venueId = hasRoleType('worker') ? urlVenueId as string : storeVenueId;\n  const { data: user } = useGetFullUserAccountQuery();\n  const { data: workerVenueList } = useGetSettlementsVenuesQuery(null, { skip: !hasRoleType('worker') });\n  const { tenantId, tenantRequired } = useSettlementsTenant();\n\n  const venueAddress = useMemo(() => {\n    if (hasRoleType('worker') && workerVenueList) {\n      const selectedVenue = workerVenueList?.venues\n        .find((venue) => (\n          venue.venueId === venueId && (!tenantRequired || venue.tenantId === tenantId)\n        ));\n      if (!selectedVenue) return '';\n\n      return tenantRequired ? `${selectedVenue.address}, ${selectedVenue.tenant}` : selectedVenue.address;\n    }\n    return user?.tenant?.venues.filter((venue) => venue.id === venueId)[0]?.address || '';\n  }, [tenantId, tenantRequired, user, workerVenueList, venueId]);\n  return { venueId, venueAddress };\n};\n", "import * as React from 'react';\nimport { useMemo } from 'react';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport { useSettlementsTenant } from '../../../hooks/settlements/useSettlementsTenant';\nimport useMessages from '../../../hooks/useMessages';\nimport { useGetFullUserAccountQuery } from '../../../api/appApi';\nimport YearsBalanceHeader from './YearsBalanceHeader/YearsBalanceHeader';\nimport Tabs, { TabElement } from '../../../components/Tabs/Tabs';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport YearsBalanceTable from './YearsBalanceTable/YearsBalanceTable';\nimport ExpandableCard from '../../../components/ExpandableCard/ExpandableCard';\nimport { useSettlementsVenue } from '../../../hooks/settlements/useSettlementsVenue';\n\ninterface Props {\n  year?: string,\n  tabs: TabElement[],\n}\n\nconst YearsBalancePage = ({ year, tabs }: Props) => {\n  const getMessage = useMessages();\n  const { checkPermission, checkModuleEnabled } = usePermissions();\n  const { data: user } = useGetFullUserAccountQuery();\n\n  const settlementVenue = useSettlementsVenue();\n  const usersVenues = useMemo(() => user?.tenant?.venues || [], [user]);\n\n  const { tenantId } = useSettlementsTenant();\n\n  checkModuleEnabled('settlements');\n  checkPermission('settlements_balance_list');\n\n  return (\n    <>\n      <YearsBalanceHeader year={year} tenantId={tenantId} />\n      <Tabs tabElements={tabs} />\n      <ContentWrapper>\n        {settlementVenue.venueId ? (\n          <YearsBalanceTable year={year} venue={settlementVenue} user={user} tenantId={tenantId} />\n        ) : (\n          <>\n            {usersVenues.map((venue) => (\n              <ExpandableCard className=\"col-span-12\" title={venue.address} key={venue.id}>\n                <YearsBalanceTable\n                  year={year}\n                  venue={{ venueAddress: venue.address, venueId: venue.id, venueName: getMessage('settlements.balance.all') }}\n                  user={user}\n                  tenantId={tenantId}\n                />\n              </ExpandableCard>\n            ))}\n            <ExpandableCard className=\"col-span-12\" title={getMessage('settlements.balance.all')} key=\"balanceAll\">\n              <YearsBalanceTable\n                year={year}\n                venue={{ venueAddress: '', venueId: 'all', venueName: getMessage('settlements.balance.all') }}\n                user={user}\n                tenantId={tenantId}\n              />\n            </ExpandableCard>\n          </>\n        )}\n      </ContentWrapper>\n    </>\n  );\n};\n\nexport default YearsBalancePage;\n", "import * as React from 'react';\nimport { useNavigate } from 'react-router';\nimport { useMemo } from 'react';\nimport { useDispatch } from 'react-redux';\nimport PageHeader from '../../../../components/Layout/PageHeader';\nimport useMessages from '../../../../hooks/useMessages';\nimport { Select, SelectOption } from '../../../../components/FormInputs/inputs/FormSelect';\nimport { InputLabel } from '../../../../components/FormInputs/InputLabel';\nimport { useSettlementsYears } from '../../../../hooks/settlements/useSettlementsYears';\nimport { useSettlementsTitles } from '../../../../hooks/settlements/useSettlementsTitles';\nimport { selectSettlementsTitle } from '../../../../store/appSlice';\nimport { useAppSelector } from '../../../../hooks/reduxHooks';\nimport { useSettlementsVenue } from '../../../../hooks/settlements/useSettlementsVenue';\nimport { usePermissions } from '../../../../hooks/usePermissions';\n\ninterface Props {\n  year?: string,\n  tenantId?: string,\n}\n\nconst YearsBalanceHeader = ({ year, tenantId }: Props) => {\n  const getMessage = useMessages();\n  const { hasRoleType } = usePermissions();\n  const navigate = useNavigate();\n  const dispatch = useDispatch();\n  const selectedTitleId = useAppSelector((state) => state.app.selectedSettlementsTitle);\n  const { venueId, venueAddress } = useSettlementsVenue();\n\n  const years = useSettlementsYears();\n  const titles = useSettlementsTitles();\n\n  const selectedTitle = useMemo(() => titles.find((title) => title.id === selectedTitleId), [selectedTitleId, titles]);\n\n  const yearsSelectOptions: SelectOption[] = useMemo(() => years?.map((year) => ({\n    value: year,\n    optionLabel: year,\n  })) || [], [years]);\n\n  const titlesSelectOptions: SelectOption[] = [{ value: '', optionLabel: 'Wszystkie' }].concat(titles?.map((title) => ({\n    value: title.id,\n    optionLabel: title.name,\n  })));\n\n  const selectTitle = (titleId: string) => {\n    dispatch(selectSettlementsTitle(titleId));\n  };\n\n  const selectYear = (newYear: string) => navigate(\n    hasRoleType('worker')\n      ? `/rozrachunki/analiza_salda/${newYear}?venueId=${venueId}${tenantId ? `&tenantId=${tenantId}` : ''}`\n      : `/rozrachunki/analiza_salda/${newYear}`,\n  );\n\n  const subheader = useMemo(() => {\n    const venue = venueId ? `${venueAddress} ` : '';\n    const title = selectedTitle ? `${selectedTitle?.name}${selectedTitle?.bankAccountNumber ? `: ${selectedTitle?.bankAccountNumber}` : ''}` : '';\n    return venue + title;\n  }, [venueAddress, selectedTitle]);\n\n  return (\n    <PageHeader\n      pageTitle={getMessage('navigation.settlements.balance')}\n      currentPage=\"settlements\"\n      subheader={subheader}\n      path={hasRoleType('worker') ? '/rozrachunki/lokale/aktywne' : undefined}\n    >\n      {year && (\n        <div className=\"flex items-center text-typography-dark\">\n          <InputLabel label={getMessage('settlements.balance.filters.year')} inline />\n          <Select value={year} onChange={(newYear) => selectYear(newYear)} selectOptions={yearsSelectOptions} />\n        </div>\n      )}\n      <div className=\"flex items-center text-typography-dark ml-4\">\n        <InputLabel label={getMessage('settlements.balance.filters.title')} inline />\n        <Select\n          value={selectedTitleId || ''}\n          onChange={(newTitle) => selectTitle(newTitle)}\n          selectOptions={titlesSelectOptions}\n          inputClassName=\"w-60\"\n          label={getMessage('settlements.balance.filters.title')}\n        />\n      </div>\n    </PageHeader>\n  );\n};\n\nexport default YearsBalanceHeader;\n", "import { useEffect, useMemo, useState } from 'react';\nimport { useNavigate } from 'react-router';\nimport { appApi, useGetFullUserAccountQuery } from '../../api/appApi';\nimport { useSettlementsVenue } from './useSettlementsVenue';\nimport { useSettlementsTenant } from './useSettlementsTenant';\n\nexport const useSettlementsYears = () => {\n  const { venueId } = useSettlementsVenue();\n  const { data: user } = useGetFullUserAccountQuery();\n  const multiVenuesIds = useMemo(() => (venueId ? [venueId] : user?.tenant?.venues.map((venue) => venue.id)), [user]);\n  const [fetchYears] = appApi.endpoints.getSettlementsYears.useLazyQuery();\n  const [years, setYears] = useState([] as string[]);\n  const navigate = useNavigate();\n  const { tenantId, tenantRequired } = useSettlementsTenant();\n\n  if (tenantRequired && !tenantId) navigate('/rozrachunki/lokale/aktywne');\n\n  useEffect(() => {\n    (multiVenuesIds || []).forEach((venueId) => {\n      fetchYears({ venue: venueId, tenantId }).then((res) => {\n        setYears((state) => [...new Set(state.concat(res?.data || []))]);\n      });\n    });\n  }, [multiVenuesIds, tenantId]);\n\n  return years;\n};\n", "import { useEffect, useMemo, useState } from 'react';\nimport { useNavigate } from 'react-router';\nimport { appApi, useGetFullUserAccountQuery } from '../../api/appApi';\nimport { SettlementTitle } from '../../api/modules/settlements/settlementsTypes';\nimport { useSettlementsVenue } from './useSettlementsVenue';\nimport { useSettlementsTenant } from './useSettlementsTenant';\n\nexport const useSettlementsTitles = () => {\n  const { venueId } = useSettlementsVenue();\n  const { data: user } = useGetFullUserAccountQuery();\n\n  const multiVenuesIds = useMemo(() => (venueId ? [venueId] : user?.tenant?.venues.map((venue) => venue.id)), [user, venueId]);\n  const [fetchTitles] = appApi.endpoints.getSettlementsTitles.useLazyQuery();\n  const navigate = useNavigate();\n\n  const [titles, setTitles] = useState([] as SettlementTitle[]);\n  const { tenantId, tenantRequired } = useSettlementsTenant();\n  if (tenantRequired && !tenantId) navigate('/rozrachunki/lokale/aktywne');\n\n  useEffect(() => {\n    (multiVenuesIds || []).forEach((venueId) => {\n      fetchTitles({ venue: venueId, tenantId }).then((res) => {\n        setTitles((state) => {\n          const fetchedTitles = res?.data || [];\n          const titlesToAdd = fetchedTitles.filter((fetchedTitle) => !state.find((stateTitle) => stateTitle.id === fetchedTitle.id));\n\n          return [...state, ...titlesToAdd];\n        });\n      });\n    });\n  }, [multiVenuesIds, tenantId]);\n\n  return titles;\n};\n", "import * as React from 'react';\nimport { useMemo } from 'react';\nimport { TableBodyCell } from '../../../../components/Table/Table';\nimport useMessages from '../../../../hooks/useMessages';\nimport { BalanceQuery, MonthBalance, months } from '../../../../api/modules/settlements/settlementsTypes';\nimport ResponsiveTable, {\n  ResponsiveTableBody,\n  ResponsiveTableBodyRow,\n  ResponsiveTableHeader,\n} from '../../../../components/Table/ResponsiveTable';\nimport { useGetSettlementsBalanceQuery } from '../../../../api/appApi';\nimport { useAppSelector, useAppDispatch } from '../../../../hooks/reduxHooks';\nimport Spinner from '../../../../components/Spinner/Spinner';\nimport { selectVenue } from '../../../../store/appSlice';\nimport { usePermissions } from '../../../../hooks/usePermissions';\nimport { useSettlementsTenant } from '../../../../hooks/settlements/useSettlementsTenant';\n\ninterface Props {\n  year?: string,\n  venue: {\n    venueId: string,\n    venueAddress: string,\n    venueName?: string,\n  },\n\n  user?: any,\n  tenantId?: string\n}\n\nconst columnLabels = [\n  { label: 'settlements.balance.month' },\n  { label: 'settlements.balance.debits', divClassName: 'md:justify-end' },\n  { label: 'settlements.balance.credits', divClassName: 'md:justify-end' },\n  { label: 'settlements.balance.balance', divClassName: 'md:justify-end md:pr-8' },\n];\n\nconst YearsBalanceTable = ({\n  year, venue, user, tenantId,\n}: Props) => {\n  const getMessage = useMessages();\n  const dispatch = useAppDispatch();\n  const titleId = useAppSelector((state) => state.app.selectedSettlementsTitle);\n  const { hasRoleType } = usePermissions();\n  const { tenantId: selectedSettlementsTenantId, tenantRequired } = useSettlementsTenant();\n  const { venueId, venueAddress } = venue;\n\n  const queryParams = useMemo(() => {\n    const params: BalanceQuery = {\n      venue: venueId,\n      year: year || '',\n    };\n    if (titleId) {\n      params.title_id = titleId;\n    }\n    if (selectedSettlementsTenantId && hasRoleType('worker')) {\n      params.tenant_id = selectedSettlementsTenantId;\n    }\n    return params;\n  }, [venueId, year, titleId, selectedSettlementsTenantId]);\n\n  const { data, isLoading, isSuccess } = useGetSettlementsBalanceQuery(\n    queryParams,\n    { skip: !year || !venueId || (tenantRequired && !selectedSettlementsTenantId) },\n  );\n\n  const ids = useMemo(() => ['openingBalance'].concat(months).concat(['sum']), []);\n\n  if (!year) return null;\n\n  const handleOnClick = () => {\n    dispatch(selectVenue({\n      selectedVenueId: venueId,\n      selectedVenueName: venueAddress,\n      userId: user?.id,\n    }));\n  };\n\n  return (\n    <ResponsiveTable className=\"col-span-full md:px-0\">\n      {isLoading && <Spinner className=\"m-auto\" />}\n      {isSuccess && data && (\n        <>\n          <ResponsiveTableHeader ids={ids} columnLabels={columnLabels} tableName=\"yearsBalanceTable\" firstItemClassName=\"md:pl-8\" />\n          <ResponsiveTableBody>\n            <ResponsiveTableBodyRow className=\"border-b md:bg-light-200 last:border-b-0 border-separate font-medium md:m-2 rounded\">\n              <TableBodyCell className=\"pl-8\">{getMessage('settlements.balance.openingBalance')}</TableBodyCell>\n              <TableBodyCell className=\"md:text-right\">{data.openingBalance.debits}</TableBodyCell>\n              <TableBodyCell className=\"md:text-right\">{data.openingBalance.credits}</TableBodyCell>\n              <TableBodyCell className=\"md:text-right\" cellPadding=\"!md:pr-8\">{data.openingBalance.balance}</TableBodyCell>\n            </ResponsiveTableBodyRow>\n            {data.months.map(({\n              month, debits, credits, balance,\n            }: MonthBalance, index: number) => (\n              <ResponsiveTableBodyRow\n                key={month}\n                clickable={({\n                  href: `/rozrachunki/analiza_salda/${year}/${index + 1}?venueId=${venueId}${tenantId ? `&tenantId=${tenantId}` : ''}`,\n                  linkState: { fromYears: true },\n                  onClick: handleOnClick,\n                  ariaLabel: `Przejd\u017A do analizy miesi\u0105ca ${getMessage(`datepicker.month.${month}`)} ${year} roku ${titleId ? 'dla wybranego tytu\u0142u' : ''}`,\n                })}\n                className=\"border-b last:border-b-0 border-separate font-medium\"\n              >\n                <TableBodyCell className=\"md:pl-8\">{getMessage(`datepicker.month.${month}`)}</TableBodyCell>\n                <TableBodyCell className=\"md:text-right\">{debits}</TableBodyCell>\n                <TableBodyCell className=\"md:text-right\">{credits}</TableBodyCell>\n                <TableBodyCell className=\"md:text-right\" cellPadding=\"!md:pr-8\">{balance}</TableBodyCell>\n              </ResponsiveTableBodyRow>\n            ))}\n            <ResponsiveTableBodyRow className=\"border-b md:bg-light-200 last:border-b-0 border-separate font-medium\">\n              <TableBodyCell className=\"pl-8\">{getMessage('settlements.balance.sum')}</TableBodyCell>\n              <TableBodyCell className=\"md:text-right\">{data.sum.debits}</TableBodyCell>\n              <TableBodyCell className=\"md:text-right\">{data.sum.credits}</TableBodyCell>\n              <TableBodyCell className=\"md:text-right\" cellPadding=\"!md:pr-8\">{data.sum.balance}</TableBodyCell>\n            </ResponsiveTableBodyRow>\n          </ResponsiveTableBody>\n        </>\n      )}\n    </ResponsiveTable>\n  );\n};\n\nexport default YearsBalanceTable;\n", "import * as React from 'react';\nimport { useMemo } from 'react';\nimport useMessages from '../../../hooks/useMessages';\nimport MonthsBalanceHeader from './MonthsBalanceHeader/MonthsBalanceHeader';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport Card from '../../../components/Card/Card';\nimport MonthsBalanceTable from './MonthsBalanceTable/MonthsBalanceTable';\nimport { useGetMonthsSettlementsBalanceQuery } from '../../../api/appApi';\nimport { useSettlementsVenue } from '../../../hooks/settlements/useSettlementsVenue';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport { MonthBalanceQuery } from '../../../api/modules/settlements/settlementsTypes';\nimport { useSettlementsTenant } from '../../../hooks/settlements/useSettlementsTenant';\n\ninterface Props {\n  year: string,\n  month: string,\n}\nconst MonthsBalancePage = ({ year, month }: Props) => {\n  const getMessage = useMessages();\n  const { hasRoleType } = usePermissions();\n  const { venueId } = useSettlementsVenue();\n  const { tenantId, tenantRequired } = useSettlementsTenant();\n\n  const queryParams = useMemo(() => {\n    const params: MonthBalanceQuery = {\n      venue: venueId,\n      year,\n      month,\n    };\n    if (hasRoleType('worker') && tenantId) {\n      params.tenant_id = tenantId;\n    }\n    return params;\n  }, [venueId, year, month, tenantId]);\n\n  const { data, isLoading, isSuccess } = useGetMonthsSettlementsBalanceQuery(\n    queryParams,\n    { skip: !venueId || !year || !month || (tenantRequired && !tenantId) },\n  );\n\n  return (\n    <>\n      <MonthsBalanceHeader\n        year={year}\n        month={month}\n        path={`/rozrachunki/analiza_salda/${year}${hasRoleType('worker') ? `?venueId=${venueId}${tenantId ? `&tenantId=${tenantId}` : ''}` : ''}`}\n        tenantId={tenantId}\n      />\n      <ContentWrapper>\n        {venueId ? (\n          <MonthsBalanceTable\n            data={data}\n            year={year}\n            month={month}\n            tenantId={tenantId}\n            isLoading={isLoading}\n            isSuccess={isSuccess}\n          />\n        ) : (\n          <Card className=\"col-span-12\">\n            {getMessage('settlements.balance.chooseVenue')}\n          </Card>\n        )}\n      </ContentWrapper>\n    </>\n  );\n};\n\nexport default MonthsBalancePage;\n", "import * as React from 'react';\nimport { useNavigate } from 'react-router';\nimport { useMemo } from 'react';\nimport { useDispatch } from 'react-redux';\nimport useMessages from '../../../../hooks/useMessages';\nimport PageHeader from '../../../../components/Layout/PageHeader';\nimport { InputLabel } from '../../../../components/FormInputs/InputLabel';\nimport { Select, SelectOption } from '../../../../components/FormInputs/inputs/FormSelect';\nimport { months } from '../../../../api/modules/settlements/settlementsTypes';\nimport {\n  useGetSettlementsTitlesQuery,\n  useGetSettlementsYearsQuery,\n} from '../../../../api/appApi';\nimport { useSettlementsVenue } from '../../../../hooks/settlements/useSettlementsVenue';\nimport { useAppSelector } from '../../../../hooks/reduxHooks';\nimport { selectSettlementsTitle } from '../../../../store/appSlice';\nimport { usePermissions } from '../../../../hooks/usePermissions';\nimport { useSettlementsTenant } from '../../../../hooks/settlements/useSettlementsTenant';\n\ninterface Props {\n  year: string,\n  month: string,\n  path?: string,\n  tenantId?: string,\n}\n\nconst MonthsBalanceHeader = ({\n  year, month, path, tenantId,\n}: Props) => {\n  const getMessage = useMessages();\n  const navigate = useNavigate();\n  const monthName = months[parseInt(month, 10) - 1];\n  const { venueId, venueAddress } = useSettlementsVenue();\n  const { hasRoleType } = usePermissions();\n  const { tenantRequired } = useSettlementsTenant();\n  const { data: years } = useGetSettlementsYearsQuery(\n    { venue: venueId, tenantId: hasRoleType('worker') ? tenantId : '' },\n    { skip: !venueId || (tenantRequired && !tenantId) },\n  );\n  const { data: titles } = useGetSettlementsTitlesQuery(\n    { venue: venueId, tenantId: hasRoleType('worker') ? tenantId : '' },\n    { skip: !venueId || (tenantRequired && !tenantId) },\n  );\n\n  const dispatch = useDispatch();\n  const selectedTitleId = useAppSelector((state) => state.app.selectedSettlementsTitle);\n\n  const yearsSelectOptions: SelectOption[] = useMemo(() => years?.map((year) => ({\n    value: year,\n    optionLabel: year,\n  })) || [], [years]);\n\n  const monthsSelectOptions: SelectOption[] = useMemo(() => months?.map((month, index) => ({\n    value: (index + 1).toString(),\n    optionLabel: getMessage(`datepicker.month.${month}`),\n  })) || [], [years]);\n\n  const titlesSelectOptions: SelectOption[] = useMemo(() => [{ value: '', optionLabel: 'Wszystkie' }].concat(titles?.map((title) => ({\n    value: title.id,\n    optionLabel: title.name,\n  })) || []), [titles || 0]);\n\n  const selectTitle = (titleId: string) => {\n    dispatch(selectSettlementsTitle(titleId));\n  };\n\n  return (\n    <PageHeader\n      pageTitle={`${getMessage('navigation.settlements.balance')}: ${getMessage(`datepicker.month.${monthName}`)}`}\n      currentPage=\"settlements\"\n      subheader={venueAddress}\n      path={path}\n    >\n      <div className=\"flex items-center text-typography-dark\">\n        <InputLabel label={getMessage('settlements.balance.filters.year')} inline />\n        <Select\n          value={year}\n          onChange={(newYear) => navigate(`/rozrachunki/analiza_salda/${newYear}/${month}?venueId=${venueId}${tenantId ? `&tenantId=${tenantId}` : ''}`)}\n          selectOptions={yearsSelectOptions}\n          label=\"year\"\n        />\n      </div>\n      <div className=\"flex items-center text-typography-dark ml-4\">\n        <InputLabel label={getMessage('settlements.balance.filters.month')} inline />\n        <Select\n          value={month}\n          onChange={(newMonth) => navigate(`/rozrachunki/analiza_salda/${year}/${newMonth}?venueId=${venueId}${tenantId ? `&tenantId=${tenantId}` : ''}`)}\n          selectOptions={monthsSelectOptions}\n          inputClassName=\"w-32\"\n          label=\"month\"\n        />\n      </div>\n      <div className=\"flex items-center text-typography-dark ml-4\">\n        <InputLabel label={getMessage('settlements.balance.filters.title')} inline />\n        <Select\n          value={selectedTitleId || ''}\n          onChange={(newTitle) => selectTitle(newTitle)}\n          selectOptions={titlesSelectOptions}\n          inputClassName=\"w-60\"\n          label={getMessage('settlements.balance.filters.title')}\n        />\n      </div>\n    </PageHeader>\n  );\n};\n\nexport default MonthsBalanceHeader;\n", "import * as React from 'react';\nimport { useMemo } from 'react';\nimport { MonthsTitle } from '../../../../api/modules/settlements/settlementsTypes';\nimport {\n  TableBodyCell,\n} from '../../../../components/Table/Table';\nimport ResponsiveTable, {\n  ResponsiveTableBody,\n  ResponsiveTableBodyRow,\n  ResponsiveTableHeader,\n} from '../../../../components/Table/ResponsiveTable';\nimport { useAppSelector } from '../../../../hooks/reduxHooks';\nimport { useSettlementsVenue } from '../../../../hooks/settlements/useSettlementsVenue';\nimport TableContentPlaceholder from '../../../../components/Table/TableContentPlaceholder';\nimport Spinner from '../../../../components/Spinner/Spinner';\n\ninterface Props {\n  year: string,\n  month: string,\n  data?: MonthsTitle[],\n  isLoading: boolean,\n  isSuccess: boolean,\n  tenantId?: string,\n}\n\nconst MonthsBalanceTable = ({\n  data, year, month, isLoading, isSuccess, tenantId,\n}: Props) => {\n  const selectedTitleId = useAppSelector((state) => state.app.selectedSettlementsTitle);\n\n  const { venueId } = useSettlementsVenue();\n  const columnLabels = useMemo(() => [\n    { label: 'settlements.monthsBalance.title' },\n    { label: 'settlements.monthsBalance.bankAccount' },\n    { label: 'settlements.monthsBalance.balance', divClassName: 'md:justify-end' },\n  ], []);\n\n  return (\n    <ResponsiveTable className=\"col-span-full\">\n      {isLoading && <Spinner />}\n      {isSuccess && (data && data.length > 0 ? (\n        <>\n          <ResponsiveTableHeader\n            columnLabels={columnLabels}\n            ids={data?.map((mt) => mt.id) || []}\n            tableName=\"monthsBalanceTable\"\n          />\n          <ResponsiveTableBody>\n            {data.filter((title) => (selectedTitleId ? title.id === selectedTitleId : true)).map(({\n              name, bankAccountNumber, balance, id,\n            }: MonthsTitle) => (\n              <ResponsiveTableBodyRow\n                key={name}\n                clickable={({\n                  href: `/rozrachunki/analiza_salda/${year}/${month}/${id}?venueId=${venueId}${tenantId ? `&tenantId=${tenantId}` : ''}`,\n                  ariaLabel: `Przejd\u017A do analizy tytu\u0142u ${name}`,\n                })}\n              >\n                <TableBodyCell>{name}</TableBodyCell>\n                <TableBodyCell>{bankAccountNumber}</TableBodyCell>\n                <TableBodyCell className=\"md:text-right\">{balance}</TableBodyCell>\n              </ResponsiveTableBodyRow>\n            ))}\n          </ResponsiveTableBody>\n        </>\n      ) : <TableContentPlaceholder />)}\n    </ResponsiveTable>\n  );\n};\n\nexport default MonthsBalanceTable;\n", "import * as React from 'react';\nimport { useEffect, useMemo } from 'react';\nimport { useNavigate } from 'react-router';\nimport { useMediaQuery } from 'react-responsive';\nimport { useGetTitleSettlementsBalanceQuery } from '../../../api/appApi';\nimport TitleBalanceHeader from './TitleBalanceHeader/TitleBalanceHeader';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport DesktopTitleBalanceTable from './TitleBalanceTable/DesktopTitleBalanceTable';\nimport { useSettlementsVenue } from '../../../hooks/settlements/useSettlementsVenue';\nimport { mobile } from '../../../../utils/breakpoints';\nimport MobileTitleBalanceTable from './TitleBalanceTable/MobileTitleBalanceTable/MobileTitleBalanceTable';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport { TitleBalanceQuery } from '../../../api/modules/settlements/settlementsTypes';\nimport Spinner from '../../../components/Spinner/Spinner';\nimport { useSettlementsTenant } from '../../../hooks/settlements/useSettlementsTenant';\n\ninterface Props {\n  year: string,\n  month: string,\n  titleId: string,\n}\n\nconst TitleBalancePage = ({ year, month, titleId }: Props) => {\n  const { venueId } = useSettlementsVenue();\n  const navigate = useNavigate();\n  const isMobile = useMediaQuery({ query: mobile.raw });\n  const { hasRoleType } = usePermissions();\n  const { tenantId, tenantRequired } = useSettlementsTenant();\n  const queryParams = useMemo(() => {\n    const params: TitleBalanceQuery = {\n      year,\n      month,\n      title_id: titleId,\n      venue: venueId,\n    };\n    if (tenantId && hasRoleType('worker')) {\n      params.tenant_id = tenantId;\n    }\n    return params;\n  }, [year, month, titleId, venueId, tenantId]);\n  const { data, isLoading } = useGetTitleSettlementsBalanceQuery(\n    queryParams,\n    { skip: !venueId || !year || !month || !titleId || (tenantRequired && !tenantId) },\n  );\n\n  const venueOnEnter = useMemo(() => venueId, []);\n  useEffect(() => {\n    if (venueOnEnter !== venueId) {\n      navigate(`/rozrachunki/analiza_salda/${year}/${month}?venueId=${venueId}${tenantId ? `&tenantId=${tenantId}` : ''}`);\n    }\n  }, [venueId]);\n\n  return (\n    <>\n      <TitleBalanceHeader\n        year={year}\n        month={month}\n        titleId={titleId}\n        path={`/rozrachunki/analiza_salda/${year}/${month}?venueId=${venueId}${tenantId ? `&tenantId=${tenantId}` : ''}`}\n        tenantId={tenantId}\n      />\n      <ContentWrapper>\n        {isLoading ? <Spinner /> : (\n          <>\n            {isMobile && <MobileTitleBalanceTable data={data} />}\n            {!isMobile && <DesktopTitleBalanceTable data={data} />}\n          </>\n        )}\n      </ContentWrapper>\n    </>\n  );\n};\n\nexport default TitleBalancePage;\n", "import * as React from 'react';\nimport { useNavigate } from 'react-router';\nimport { useMemo } from 'react';\nimport useMessages from '../../../../hooks/useMessages';\nimport { MonthBalanceQuery, months } from '../../../../api/modules/settlements/settlementsTypes';\nimport {\n  useGetMonthsSettlementsBalanceQuery,\n  useGetSettlementsYearsQuery,\n} from '../../../../api/appApi';\nimport { Select, SelectOption } from '../../../../components/FormInputs/inputs/FormSelect';\nimport PageHeader from '../../../../components/Layout/PageHeader';\nimport { InputLabel } from '../../../../components/FormInputs/InputLabel';\nimport { useSettlementsVenue } from '../../../../hooks/settlements/useSettlementsVenue';\nimport { usePermissions } from '../../../../hooks/usePermissions';\nimport { useSettlementsTenant } from '../../../../hooks/settlements/useSettlementsTenant';\n\ninterface Props {\n  year: string,\n  month: string,\n  titleId: string,\n  path?: string,\n  tenantId?: string,\n}\n\nconst TitleBalanceHeader = ({\n  year, month, titleId, path, tenantId,\n}: Props) => {\n  const getMessage = useMessages();\n  const navigate = useNavigate();\n  const { venueId, venueAddress } = useSettlementsVenue();\n  const { hasRoleType } = usePermissions();\n  const { tenantRequired } = useSettlementsTenant();\n\n  const yearsQueryParams: { venue: string, tenantId?: string } = { venue: venueId };\n  const monthsBalanceQueryParams: MonthBalanceQuery = {\n    venue: venueId,\n    year,\n    month,\n  };\n  if (hasRoleType('worker') && tenantId) {\n    yearsQueryParams.tenantId = tenantId;\n    monthsBalanceQueryParams.tenant_id = tenantId;\n  }\n  const { data: years } = useGetSettlementsYearsQuery(\n    yearsQueryParams,\n    { skip: !venueId || (tenantRequired && !tenantId) },\n  );\n  const { data: thisMonthsTitles } = useGetMonthsSettlementsBalanceQuery(\n    monthsBalanceQueryParams,\n    { skip: !venueId || !year || !month || (tenantRequired && !tenantId) },\n  );\n\n  const yearsSelectOptions: SelectOption[] = useMemo(() => years?.map((year: string) => ({\n    value: year,\n    optionLabel: year,\n  })) || [], [years]);\n\n  const monthsSelectOptions: SelectOption[] = useMemo(() => months?.map((month, index) => ({\n    value: (index + 1).toString(),\n    optionLabel: getMessage(`datepicker.month.${month}`),\n  })) || [], [months]);\n\n  const titlesSelectOptions: SelectOption[] = useMemo(() => thisMonthsTitles?.map((title) => ({\n    value: title.id,\n    optionLabel: title.name,\n  })) || [], [thisMonthsTitles]);\n\n  return (\n    <PageHeader\n      pageTitle={`${getMessage('navigation.settlements.balance')}:`}\n      subheader={`${venueAddress}: ${thisMonthsTitles?.find((title) => title.id === titleId)?.name || ''}`}\n      currentPage=\"settlements\"\n      path={path}\n    >\n      <div className=\"flex items-center text-typography-dark\">\n        <InputLabel label={getMessage('settlements.balance.filters.year')} inline />\n        <Select\n          value={year}\n          onChange={(newYear) => navigate(`/rozrachunki/analiza_salda/${newYear}/${month}?venueId=${venueId}${tenantId ? `&tenantId=${tenantId}` : ''}`)}\n          selectOptions={yearsSelectOptions}\n        />\n      </div>\n      <div className=\"flex items-center text-typography-dark ml-4\">\n        <InputLabel label={getMessage('settlements.balance.filters.month')} inline />\n        <Select\n          value={month}\n          onChange={(newMonth) => {\n            navigate(`/rozrachunki/analiza_salda/${year}/${newMonth}/${titleId}/?venueId=${venueId}${tenantId ? `&tenantId=${tenantId}` : ''}`);\n          }}\n          selectOptions={monthsSelectOptions}\n          inputClassName=\"w-32\"\n        />\n      </div>\n      <div className=\"flex items-center text-typography-dark ml-4\">\n        <InputLabel label={getMessage('settlements.balance.filters.title')} inline />\n        <Select\n          value={titleId}\n          onChange={(newTitle) => navigate(`/rozrachunki/analiza_salda/${year}/${month}/${newTitle}?venueId=${venueId}${tenantId ? `&tenantId=${tenantId}` : ''}`)}\n          selectOptions={titlesSelectOptions}\n          inputClassName=\"w-40\"\n        />\n      </div>\n    </PageHeader>\n  );\n};\n\nexport default TitleBalanceHeader;\n", "import * as React from 'react';\nimport format from 'date-fns/format';\nimport { useMemo } from 'react';\nimport { useIntl } from 'react-intl';\nimport { SettlementDocument, SettlementTitleBalance } from '../../../../api/modules/settlements/settlementsTypes';\nimport ResponsiveTable, {\n  ResponsiveTableBody,\n  ResponsiveTableBodyRow,\n  ResponsiveTableHeader,\n} from '../../../../components/Table/ResponsiveTable';\nimport { TableId } from '../../../../store/appSlice';\nimport { TableBodyCell } from '../../../../components/Table/Table';\nimport Chip from '../../../../components/Chip/Chip';\nimport useMessages from '../../../../hooks/useMessages';\nimport ItemsTable from './ItemsTable';\nimport TableBodyPlaceholder from '../../../../components/Table/TableBodyPlaceholder';\n\ninterface Props {\n  data?: SettlementTitleBalance\n}\n\nconst columnLabels = [\n  { label: 'settlements.titleBalance.header.operation' },\n  { label: 'settlements.titleBalance.header.creationDate' },\n  { label: 'settlements.titleBalance.header.paymentDate' },\n  { label: 'settlements.titleBalance.header.status' },\n  { label: 'settlements.titleBalance.header.deposits', divClassName: 'justify-end' },\n  { label: 'settlements.titleBalance.header.credits', divClassName: 'justify-end' },\n  { label: 'settlements.titleBalance.header.balance', divClassName: 'justify-end md:pr-8' },\n];\n\nconst DesktopTitleBalanceTable = ({ data }: Props) => {\n  const getMessage = useMessages();\n  const intl = useIntl();\n  const {\n    documents, openingBalance, sum, title,\n  } = data || {};\n\n  const ids = useMemo(() => ['openingBalance'].concat(documents?.map(({ description }) => description) || []).concat(['sum']), [data]);\n  const sortedDocuments = useMemo(\n    () => {\n      const docs: SettlementDocument[] = [];\n      documents?.forEach((doc) => docs.push(doc));\n      docs.sort((docA, docB) => {\n        if (docA.date >= docB.date) {\n          return 1;\n        }\n        return -1;\n      });\n      return docs;\n    },\n    [documents],\n  );\n\n  return (\n    <ResponsiveTable className=\"col-span-full lg:px-0\">\n      <ResponsiveTableHeader\n        ids={ids}\n        columnLabels={columnLabels}\n        tableName={'titlesBalanceTable' as TableId}\n        firstItemClassName=\"md:pl-8\"\n      />\n      <ResponsiveTableBody>\n        {openingBalance && (\n          <ResponsiveTableBodyRow key=\"openingBalance\" className=\"border-b md:bg-light-200 last:border-b-0 border-separate font-medium md:m-2 rounded\">\n            <TableBodyCell className=\"md:pl-8\">{getMessage('settlements.balance.openingBalance')}</TableBodyCell>\n            <TableBodyCell />\n            <TableBodyCell />\n            <TableBodyCell />\n            <TableBodyCell className=\"text-right\">{openingBalance.debits}</TableBodyCell>\n            <TableBodyCell className=\"text-right\">{openingBalance.credits}</TableBodyCell>\n            <TableBodyCell className=\"text-right\" cellPadding=\"md:pr-8\">{openingBalance.balance}</TableBodyCell>\n          </ResponsiveTableBodyRow>\n        )}\n        {sortedDocuments.length > 0 ? sortedDocuments.map(({\n          operation, date, deadline, open, debits, credits, balance, items, value, vat, attachment, id, readAt,\n        }) => (\n          <ResponsiveTableBodyRow\n            key={operation + date + balance}\n            className=\"border-b last:border-b-0 border-separate font-medium\"\n            ExpandedChild={items?.length > 0 && (\n              <tr>\n                <td colSpan={8}>\n                  <ItemsTable items={items} value={value} vat={vat} attachment={attachment} readAt={readAt} documentId={id} />\n                </td>\n              </tr>\n            )}\n          >\n            <TableBodyCell className=\"md:pl-8\">{operation}</TableBodyCell>\n            <TableBodyCell>\n              <Chip chipStyle=\"gray\" className=\"w-fit\">\n                {format(new Date(date), 'dd-MM-yyyy')}\n              </Chip>\n            </TableBodyCell>\n            <TableBodyCell>\n              {deadline && (\n                <Chip chipStyle=\"gray\" className=\"w-fit\">\n                  {format(new Date(deadline), 'dd-MM-yyyy')}\n                </Chip>\n              )}\n            </TableBodyCell>\n            <TableBodyCell>\n              <div id={`status-checkbox-${id}`} className=\"hidden\">\n                {open ? getMessage('settlements.titleBalance.header.status.open') : getMessage('settlements.titleBalance.header.status.notOpened')}\n              </div>\n              <input\n                type=\"checkbox\"\n                disabled\n                checked={!open}\n                aria-labelledby={`status-checkbox-${id}`}\n                title={open ? getMessage('settlements.titleBalance.header.status.open') : getMessage('settlements.titleBalance.header.status.notOpened')}\n              />\n            </TableBodyCell>\n            <TableBodyCell className=\"text-right\">{debits}</TableBodyCell>\n            <TableBodyCell className=\"text-right\">{credits}</TableBodyCell>\n            <TableBodyCell className=\"text-right\" cellPadding=\"md:pr-8\">{balance}</TableBodyCell>\n          </ResponsiveTableBodyRow>\n        )) : <TableBodyPlaceholder text={intl.formatMessage({ id: 'settlements.titleBalance.noResults' }, { title })} />}\n        {sum && (\n          <ResponsiveTableBodyRow key=\"sum\" className=\"border-b md:bg-light-200 last:border-b-0 border-separate font-medium md:m-2 rounded\">\n            <TableBodyCell className=\"md:pl-8\">{getMessage('settlements.balance.sum')}</TableBodyCell>\n            <TableBodyCell />\n            <TableBodyCell />\n            <TableBodyCell />\n            <TableBodyCell className=\"text-right\">{sum.debits}</TableBodyCell>\n            <TableBodyCell className=\"text-right\">{sum.credits}</TableBodyCell>\n            <TableBodyCell className=\"text-right\" cellPadding=\"md:pr-8\">{sum.balance}</TableBodyCell>\n          </ResponsiveTableBodyRow>\n        )}\n      </ResponsiveTableBody>\n    </ResponsiveTable>\n  );\n};\n\nexport default DesktopTitleBalanceTable;\n", "import * as React from 'react';\nimport format from 'date-fns/format';\nimport { useCallback } from 'react';\nimport { DocumentAttachment, DocumentItem } from '../../../../api/modules/settlements/settlementsTypes';\nimport useMessages from '../../../../hooks/useMessages';\nimport Table, {\n  TableBody, TableBodyCell,\n  TableBodyRow,\n  TableHeader,\n  TableHeaderCell,\n  TableHeaderRow,\n} from '../../../../components/Table/Table';\nimport DocumentIcon from '../../../../icons/document.svg';\nimport Chip from '../../../../components/Chip/Chip';\nimport { usePatchDocumentReadMutation } from '../../../../api/appApi';\nimport { usePermissions } from '../../../../hooks/usePermissions';\n\ninterface Props {\n  items?: DocumentItem[],\n  value: string,\n  vat: string\n  attachment?: DocumentAttachment | null,\n  readAt?: string,\n  documentId: string,\n}\n\nconst ItemsTable = ({\n  items, value, vat, attachment, readAt, documentId,\n}: Props) => {\n  const getMessage = useMessages();\n  const { hasRoleType, hasPermission } = usePermissions();\n  const [markAsRead] = usePatchDocumentReadMutation();\n\n  const handleOpenDocument = useCallback((id: string, readAt: string | undefined): void => {\n    if (!readAt && hasRoleType('tenant')) {\n      markAsRead({ documentId: id });\n    }\n  }, []);\n\n  return (\n    <Table\n      className=\"bg-light-100 rounded border border-light-200 col-span-full px-0 py-0 table-fixed whitespace-nowrap overflow-auto\"\n      tableClassName=\"mobile:m-4\"\n    >\n      <TableHeader>\n        <TableHeaderRow className=\"border-b-0\">\n          <TableHeaderCell colspan={5}>\n            <div className=\"flex flex-row justify-start mb-4 items-center\">\n              {attachment && hasPermission('settlements_document_read') && (\n                <a\n                  href={attachment.path}\n                  rel=\"noreferrer\"\n                  target=\"_blank\"\n                  className=\"flex flex-row justify-start\"\n                  onClick={() => handleOpenDocument(documentId, readAt)}\n                  title={getMessage('opensInNewTab')}\n                  aria-label=\"Pobierz dokument - otwiera si\u0119 w nowej zak\u0142adce\"\n                >\n                  <span className=\"text-typography-black text-text-lg-semibold\">\n                    {attachment.filename}\n                  </span>\n                  <DocumentIcon className=\"ml-2 text-typography-dark cursor-pointer stroke-typography-dark\" />\n                </a>\n              )}\n              {readAt && (\n                <Chip chipStyle=\"gray\" className=\"w-fit ml-2\">\n                  {`${getMessage('settlements.titleBalance.item.header.read')}: ${format(new Date(readAt), 'dd-MM-yyyy')}`}\n                </Chip>\n              )}\n            </div>\n          </TableHeaderCell>\n        </TableHeaderRow>\n        <TableHeaderRow>\n          <TableHeaderCell className=\"h-12\">{getMessage('settlements.titleBalance.item.header.code')}</TableHeaderCell>\n          <TableHeaderCell className=\"h-12\">{getMessage('settlements.titleBalance.item.header.name')}</TableHeaderCell>\n          <TableHeaderCell className=\"h-12\" divClassName=\"justify-end\">{getMessage('settlements.titleBalance.item.header.count')}</TableHeaderCell>\n          <TableHeaderCell className=\"h-12\" divClassName=\"justify-end\">{getMessage('settlements.titleBalance.item.header.price')}</TableHeaderCell>\n          <TableHeaderCell className=\"h-12\" divClassName=\"justify-end\">{getMessage('settlements.titleBalance.item.header.value')}</TableHeaderCell>\n        </TableHeaderRow>\n      </TableHeader>\n      <TableBody>\n        {items && items.map((item) => (\n          <TableBodyRow key={item.position} className=\"h-8\">\n            <TableBodyCell className=\"h-12\">{item.position}</TableBodyCell>\n            <TableBodyCell className=\"h-12\">{item.itemName}</TableBodyCell>\n            <TableBodyCell className=\"h-12 text-end\">{item.amount}</TableBodyCell>\n            <TableBodyCell className=\"h-12 text-end\">{`${item.price} ${getMessage('currency')}`}</TableBodyCell>\n            <TableBodyCell className=\"h-12 text-end text-text-lg-semibold text-typography-black\">{`${item.value} ${getMessage('currency')}`}</TableBodyCell>\n          </TableBodyRow>\n        ))}\n        <TableBodyRow>\n          <TableBodyCell colspan={4} />\n          <TableBodyCell className=\"h-12 text-end\">\n            <div className=\"flex flex-col items-end\">\n              <span>{`${getMessage('settlements.titleBalance.item.header.vat')} ${vat} ${getMessage('currency')}`}</span>\n              <span className=\"text-text-lg-semibold text-typography-black\">{`${getMessage('settlements.titleBalance.item.header.sum')} ${value} ${getMessage('currency')}`}</span>\n            </div>\n          </TableBodyCell>\n        </TableBodyRow>\n      </TableBody>\n    </Table>\n  );\n};\n\nexport default ItemsTable;\n", "import * as React from 'react';\nimport { useIntl } from 'react-intl';\nimport { SettlementTitleBalance } from '../../../../../api/modules/settlements/settlementsTypes';\nimport Card from '../../../../../components/Card/Card';\nimport useMessages from '../../../../../hooks/useMessages';\nimport MobileDocumentItem from './MobileDocumentItem';\nimport Spinner from '../../../../../components/Spinner/Spinner';\n\ninterface Props {\n  data?: SettlementTitleBalance\n}\n\nconst MobileTitleBalanceTable = ({ data }: Props) => {\n  const getMessage = useMessages();\n  const intl = useIntl();\n\n  return (\n    data ? (\n      <Card className=\"col-span-full\">\n        <div className=\"flex flex-row justify-between border-b leading-normal text-text-md-semibold text-typography-dark pb-4\">\n          <div className=\"flex flex-col justify-end text-typography-black\">\n            <span>{getMessage('settlements.balance.openingBalance')}</span>\n          </div>\n          <div className=\"flex flex-col justify-end items-end\">\n            <span>{getMessage('settlements.titleBalance.header.deposits')}</span>\n            <span>{data?.openingBalance?.debits}</span>\n          </div>\n          <div className=\"flex flex-col justify-end items-end\">\n            <span>{getMessage('settlements.titleBalance.header.credits')}</span>\n            <span>{data?.openingBalance?.credits}</span>\n          </div>\n          <div className=\"flex flex-col justify-end items-end\">\n            <span>\n              {getMessage('settlements.titleBalance.header.balance')}\n            </span>\n            <span className=\"text-typography-black\">{data?.openingBalance?.balance}</span>\n          </div>\n        </div>\n        {(data.documents?.length > 0)\n          ? data.documents.map((doc) => <MobileDocumentItem document={doc} />)\n          : (\n            <div className=\"py-4 leading-normal text-text-md-semibold text-typography-dark border-b\">\n              {intl.formatMessage({ id: 'settlements.titleBalance.noResults' }, { title: data.title })}\n            </div>\n          )}\n        <div className=\"flex flex-row justify-between leading-normal text-text-md-semibold text-typography-black pb-4\">\n          <div className=\"flex flex-col justify-end\">\n            <span>{getMessage('settlements.balance.sum')}</span>\n          </div>\n          <div className=\"flex flex-col justify-end items-end\">\n            <span>{getMessage('settlements.titleBalance.header.deposits')}</span>\n            <span>{data?.sum.debits}</span>\n          </div>\n          <div className=\"flex flex-col justify-end items-end\">\n            <span>{getMessage('settlements.titleBalance.header.credits')}</span>\n            <span>{data?.sum.credits}</span>\n          </div>\n          <div className=\"flex flex-col justify-end items-end\">\n            <span>\n              {getMessage('settlements.titleBalance.header.balance')}\n            </span>\n            <span className=\"\">{data?.sum.balance}</span>\n          </div>\n        </div>\n      </Card>\n    ) : <Card><Spinner /></Card>\n  );\n};\n\nexport default MobileTitleBalanceTable;\n", "import * as React from 'react';\nimport format from 'date-fns/format';\nimport { useState } from 'react';\nimport { SettlementDocument } from '../../../../../api/modules/settlements/settlementsTypes';\nimport useMessages from '../../../../../hooks/useMessages';\nimport Chip from '../../../../../components/Chip/Chip';\nimport ArrowUp from '../../../../../icons/dropdown-arrow-up.svg';\nimport ArrowDown from '../../../../../icons/dropdown-arrow-down.svg';\nimport ItemsTable from '../ItemsTable';\n\ninterface Props {\n  document: SettlementDocument,\n}\n\nconst MobileDocumentItem = ({ document }: Props) => {\n  const getMessage = useMessages();\n  const [itemsTableOpen, setItemsTableOpen] = useState(false);\n\n  return (\n    // eslint-disable-next-line jsx-a11y/click-events-have-key-events\n    <div\n      role=\"button\"\n      tabIndex={0}\n      className=\"grid grid-cols-12 my-4 leading-normal text-text-md-semibold text-typography-dark border-b\"\n      onClick={() => !!document.items && document.items.length && setItemsTableOpen((open) => !open)}\n    >\n      <div className=\"col-span-5\">\n        {getMessage('settlements.titleBalance.header.operation')}\n      </div>\n      <div className=\"mb-4 col-span-6 flex flex-col items-start\">\n        <span className=\"text-typography-black\">{document.operation}</span>\n        <span>{document.description}</span>\n      </div>\n      <div className=\"col-span-1 flex justify-end\">\n        {!!document.items && document.items.length > 0 && (\n          <div>\n            {itemsTableOpen ? <ArrowUp className=\"inline float-right ml-1 mt-2\" /> : <ArrowDown className=\"inline float-right ml-1 mt-2\" />}\n          </div>\n        )}\n      </div>\n      <div className=\"col-span-5\">\n        {getMessage('settlements.titleBalance.header.creationDate')}\n      </div>\n      <div className=\"mb-4 col-span-7\">\n        <Chip chipStyle=\"gray\" className=\"w-fit\">\n          {format(new Date(document.date), 'dd-MM-yyyy')}\n        </Chip>\n      </div>\n      <div className=\"col-span-5\">\n        {getMessage('settlements.titleBalance.header.paymentDate')}\n      </div>\n      <div className=\"mb-4 col-span-7\">\n        {document.deadline && (\n          <Chip chipStyle=\"gray\" className=\"w-fit\">\n            {format(new Date(document.deadline), 'dd-MM-yyyy')}\n          </Chip>\n        )}\n      </div>\n      <div className=\"col-span-5\">\n        {getMessage('settlements.titleBalance.header.status')}\n      </div>\n      <div className=\"mb-4 col-span-7\">\n        <div id={`status-checkbox-${document.id}`} className=\"hidden\">\n          {document.open\n            ? getMessage('settlements.titleBalance.header.status.open')\n            : getMessage('settlements.titleBalance.header.status.notOpened')}\n        </div>\n        <input\n          type=\"checkbox\"\n          disabled\n          checked={!document.open}\n          aria-labelledby={`status-checkbox-${document.id}`}\n          title={document.open ? getMessage('settlements.titleBalance.header.status.open') : getMessage('settlements.titleBalance.header.status.notOpened')}\n        />\n      </div>\n      <div className=\"col-span-5\">\n        {getMessage('settlements.titleBalance.header.deposits')}\n      </div>\n      <div className=\"mb-4 col-span-7\">\n        {document.debits}\n      </div>\n      <div className=\"col-span-5\">\n        {getMessage('settlements.titleBalance.header.credits')}\n      </div>\n      <div className=\"mb-4 col-span-7\">\n        {document.credits}\n      </div>\n      <div className=\"col-span-5\">\n        {getMessage('settlements.titleBalance.header.balance')}\n      </div>\n      <div className=\"mb-4 col-span-7\">\n        <span className=\"text-typography-black\">{document.balance}</span>\n      </div>\n      {document.items && document.items.length > 0 && itemsTableOpen && (\n        // eslint-disable-next-line jsx-a11y/click-events-have-key-events\n        <div\n          className=\"col-span-12\"\n          onClick={(e) => e.stopPropagation()}\n          role=\"button\"\n          aria-labelledby={`status-checkbox-${document.id}`}\n          tabIndex={0}\n        >\n          <ItemsTable\n            value={document.value}\n            vat={document.vat}\n            documentId={document.id}\n            items={document.items}\n            attachment={document.attachment}\n            readAt={document.readAt}\n          />\n        </div>\n      )}\n    </div>\n  );\n};\n\nexport default MobileDocumentItem;\n", "import * as React from 'react';\nimport { useState } from 'react';\nimport { useGetFullUserAccountQuery } from '../../../api/appApi';\nimport Card from '../../../components/Card/Card';\nimport ExpandableCard from '../../../components/ExpandableCard/ExpandableCard';\nimport { useSettlementsVenue } from '../../../hooks/settlements/useSettlementsVenue';\nimport PaymentsHistoryTable from './PaymentsHistoryTable';\nimport Tabs, { TabElement } from '../../../components/Tabs/Tabs';\nimport PageHeader from '../../../components/Layout/PageHeader';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport useMessages from '../../../hooks/useMessages';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport { useAppSelector } from '../../../hooks/reduxHooks';\nimport FiltersIcon from '../../../icons/filters.svg';\nimport Button from '../../../components/Button/Button';\nimport PaymentsHistoryFilters from './PaymentsHistoryFilters';\n\ninterface Props {\n  tabs: TabElement[],\n}\n\nconst PaymentsHistoryPage = ({ tabs }: Props) => {\n  const getMessage = useMessages();\n  const hasFilterSet = useAppSelector((state) => !!state.app.filters.find((filter) => filter.id === 'paymentsHistoryTable'));\n  const [filtersOpen, setFiltersOpen] = useState(hasFilterSet);\n  const { hasRoleType } = usePermissions();\n  const { data: user } = useGetFullUserAccountQuery();\n  const { venueId, venueAddress } = useSettlementsVenue();\n\n  const { checkModuleEnabled } = usePermissions();\n  checkModuleEnabled('settlements');\n  checkModuleEnabled('payments');\n\n  return (\n    <>\n      <PageHeader\n        pageTitle={getMessage('navigation.settlements.history')}\n        currentPage=\"settlements\"\n        path={hasRoleType('worker') ? '/rozrachunki/lokale/aktywne' : undefined}\n        subheader={venueAddress}\n      >\n        <Button\n          Icon={FiltersIcon}\n          size=\"small\"\n          styleType=\"secondary\"\n          onClick={() => setFiltersOpen((filtersOpen) => !filtersOpen)}\n          className=\"h-8 py-1\"\n        >\n          {getMessage('filters')}\n        </Button>\n      </PageHeader>\n      <Tabs tabElements={tabs} />\n      {filtersOpen && <PaymentsHistoryFilters />}\n      <ContentWrapper>\n        {venueId ? (\n          <Card className=\"col-span-12\">\n            <PaymentsHistoryTable venueId={venueId} />\n          </Card>\n        ) : (user?.tenant?.venues || []).map((venue) => (\n          <ExpandableCard className=\"col-span-12\" title={venue.address} key={venue.id}>\n            <PaymentsHistoryTable venueId={venue.id} />\n          </ExpandableCard>\n        ))}\n      </ContentWrapper>\n    </>\n  );\n};\n\nexport default PaymentsHistoryPage;\n", "import * as React from 'react';\nimport format from 'date-fns/format';\nimport { useGetPaymentsHistoryQuery } from '../../../api/appApi';\nimport useMessages from '../../../hooks/useMessages';\nimport usePagination from '../../../hooks/usePagination';\nimport useFilters from '../../../hooks/useFilters';\nimport ResponsiveTable, {\n  ResponsiveTableBody,\n  ResponsiveTableBodyRow,\n  ResponsiveTableHeader,\n} from '../../../components/Table/ResponsiveTable';\nimport { TableBodyCell, TableBodyRow } from '../../../components/Table/Table';\nimport Chip from '../../../components/Chip/Chip';\nimport PaginationControls from '../../../components/Table/PaginationControls';\nimport { formatBankAccount, formatNumber } from '../../../../utils/formatters';\nimport Spinner from '../../../components/Spinner/Spinner';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport { useSettlementsTenant } from '../../../hooks/settlements/useSettlementsTenant';\n\ninterface Props {\n  venueId: string\n}\n\nconst PaymentsHistoryTable = ({ venueId }: Props) => {\n  const getMessage = useMessages();\n  const [selectedPage, setSelectedPage] = usePagination(`paymentsHistoryTable${venueId}`);\n  const { filterValues } = useFilters('paymentsHistoryTable');\n  const filters = { ...filterValues };\n\n  const { tenantId } = useSettlementsTenant();\n\n  const { hasRoleType } = usePermissions();\n  const queryParams: { page:string, venue: string, tenant_id?: string } = {\n    ...filters,\n    page: selectedPage.toString(),\n    venue: venueId,\n  };\n  if (hasRoleType('worker') && tenantId) queryParams.tenant_id = tenantId;\n  const { data: history, isLoading } = useGetPaymentsHistoryQuery(queryParams);\n\n  const ids = history?.payments.map((payment) => payment.description + payment.amount) || [];\n  const columnLabels = [\n    { label: 'settlements.history.column.bankAccount' },\n    { label: 'settlements.history.column.title' },\n    { label: 'settlements.history.column.date' },\n    { label: 'settlements.history.column.amount', divClassName: 'md:justify-end' },\n    { label: 'settlements.history.column.status' },\n  ];\n\n  return (\n    isLoading ? <Spinner className=\"m-auto\" /> : (\n      <>\n        <ResponsiveTable className=\"col-span-full\">\n          <ResponsiveTableHeader ids={ids} columnLabels={columnLabels} />\n          <ResponsiveTableBody>\n            {history?.payments && history.payments.length === 0\n            && (\n              <TableBodyRow>\n                <TableBodyCell>{getMessage('settlements.history.noResults')}</TableBodyCell>\n              </TableBodyRow>\n            )}\n            {history?.payments.map(({\n              bankAccount, description, paymentDate, amount, status,\n            }, index) => (\n              // eslint-disable-next-line react/no-array-index-key\n              <ResponsiveTableBodyRow key={description + amount + index + selectedPage} className=\"border-b last:border-b-0 border-separate\">\n                <TableBodyCell>{bankAccount ? formatBankAccount(bankAccount) : ''}</TableBodyCell>\n                <TableBodyCell>{description}</TableBodyCell>\n                <TableBodyCell>\n                  {paymentDate && (\n                    <Chip chipStyle=\"ghost\" className=\"w-fit\">\n                      {format(new Date(paymentDate), 'dd-MM-yyyy HH:mm:ss')}\n                    </Chip>\n                  )}\n                </TableBodyCell>\n                <TableBodyCell className=\"md:text-right\">{formatNumber(amount)}</TableBodyCell>\n                <TableBodyCell>\n                  {status === 'pending' && (\n                    <Chip chipStyle=\"gray\" className=\"w-fit\">\n                      {getMessage('settlements.history.column.status.pending')}\n                    </Chip>\n                  )}\n                  {status === 'success' && (\n                    <Chip chipStyle=\"success\" className=\"w-fit\">\n                      {getMessage('settlements.history.column.status.success')}\n                    </Chip>\n                  )}\n                  {status === 'failure' && (\n                    <Chip chipStyle=\"error\" className=\"w-fit\">\n                      {getMessage('settlements.history.column.status.failure')}\n                    </Chip>\n                  )}\n                </TableBodyCell>\n              </ResponsiveTableBodyRow>\n            ))}\n          </ResponsiveTableBody>\n        </ResponsiveTable>\n        {history?.metadata && (\n          <PaginationControls\n            className=\"col-span-full\"\n            selectedPage={selectedPage}\n            setSelectedPage={setSelectedPage}\n            paginationMetadata={history.metadata}\n          />\n        )}\n      </>\n    )\n  );\n};\n\nexport default PaymentsHistoryTable;\n", "import * as React from 'react';\nimport { useMemo } from 'react';\nimport useMessages from '../../../hooks/useMessages';\nimport Filters from '../../../components/Filters/Filters';\nimport { paymentStatuses } from '../../../api/modules/settlements/settlementsTypes';\n\nconst PaymentsHistoryFilters = () => {\n  const getMessage = useMessages();\n\n  const statusOptionsValues = useMemo(() => paymentStatuses.map((status) => ({\n    value: status as string,\n    optionLabel: getMessage(`settlements.history.column.status.${status}`),\n  })), [paymentStatuses]) || [];\n\n  return (\n    <Filters\n      filterId=\"paymentsHistoryTable\"\n      filterFields={[\n        {\n          type: 'text',\n          id: 'description_search',\n          label: getMessage('settlements.history.filters.title'),\n          ariaLabel: 'Szukaj po tytule p\u0142atno\u015Bci',\n        },\n        {\n          type: 'dateRange',\n          id: 'from_payment_date',\n          toDateId: 'to_payment_date',\n          label: getMessage('settlements.history.filters.date'),\n        },\n        {\n          type: 'number',\n          id: 'from_amount',\n          label: getMessage('settlements.history.filters.minValue'),\n        },\n        {\n          type: 'number',\n          id: 'to_amount',\n          label: getMessage('settlements.history.filters.maxValue'),\n        },\n        {\n          type: 'select',\n          id: 'status',\n          label: getMessage('settlements.history.filters.status'),\n          selectOptions: statusOptionsValues,\n        },\n      ]}\n    />\n  );\n};\n\nexport default PaymentsHistoryFilters;\n", "import * as React from 'react';\nimport { useMemo, useState } from 'react';\nimport { usePermissions } from '../../hooks/usePermissions';\nimport Tabs, { TabElement } from '../../components/Tabs/Tabs';\nimport useMessages from '../../hooks/useMessages';\nimport Layout from '../../components/Layout/Layout';\nimport PageHeader from '../../components/Layout/PageHeader';\nimport ContentWrapper from '../../components/ContentWrapper/ContentWrapper';\nimport TasksList from './TasksList/TasksList';\nimport TasksFilters from './TasksFilters/TasksFilters';\nimport FiltersIcon from '../../icons/filters.svg';\nimport Button from '../../components/Button/Button';\nimport { useAppSelector } from '../../hooks/reduxHooks';\n\ninterface Props {\n  tab?: 'createdByMe' | 'mineInProgress' | 'unassigned',\n}\n\nconst TasksPage = ({ tab }: Props) => {\n  const getMessage = useMessages();\n  const { hasPermission, checkPermission, checkModuleEnabled } = usePermissions();\n  const hasFilterSet = useAppSelector((state) => !!state.app.filters.find((filter) => filter.id === 'tasksTable'));\n  const [filtersOpen, setFiltersOpen] = useState(hasFilterSet);\n\n  checkModuleEnabled('tickets');\n\n  const tabs: TabElement[] = useMemo(() => {\n    if (hasPermission('tasks_list')) {\n      return [\n        {\n          label: getMessage('tasks.tabs.all'),\n          path: '/zadania',\n        },\n        {\n          label: getMessage('tasks.tabs.mineInProgress'),\n          path: '/zadania/w-trakcie',\n        }, {\n          label: getMessage('tasks.tabs.unassigned'),\n          path: '/zadania/nieprzypisane',\n        },\n        {\n          label: getMessage('tasks.tabs.createdByMe'),\n          path: '/zadania/moje',\n        },\n      ];\n    }\n\n    return [];\n  }, [hasPermission]);\n\n  checkPermission('tasks_list');\n\n  return (\n    <Layout currentPage=\"tasks\">\n      <PageHeader pageTitle={getMessage('tasks.header')} currentPage=\"tasks\">\n        <Button\n          Icon={FiltersIcon}\n          styleType=\"secondary\"\n          size=\"small\"\n          onClick={() => setFiltersOpen((filtersOpen) => !filtersOpen)}\n          className=\"mx-3 py-1 appearance-none\"\n        >\n          {getMessage('filters')}\n        </Button>\n      </PageHeader>\n      <Tabs tabElements={tabs} />\n      {filtersOpen && <TasksFilters open={tab === 'mineInProgress'} />}\n      <ContentWrapper className=\"md:grid-rows-[auto_minmax(200px,_max-content)_auto]\">\n        <TasksList prefilter={tab} />\n      </ContentWrapper>\n    </Layout>\n  );\n};\n\nexport default TasksPage;\n", "import * as React from 'react';\nimport { useEffect } from 'react';\nimport { useMediaQuery } from 'react-responsive';\nimport {\n  useGetTaskStatusesQuery,\n  useGetTasksQuery,\n} from '../../../api/appApi';\nimport { FilterValues } from '../../../store/appSlice';\nimport usePagination from '../../../hooks/usePagination';\nimport useFilters from '../../../hooks/useFilters';\nimport PaginationControls from '../../../components/Table/PaginationControls';\nimport useSortParams from '../../../hooks/useSortParams';\nimport { md } from '../../../../utils/breakpoints';\nimport TasksListDesktop from './TasksListDesktop';\nimport TasksListMobile from './TasksListMobile';\n\ninterface Props {\n  prefilter?:  'createdByMe' | 'mineInProgress' | 'unassigned',\n}\n\nconst TasksList = ({ prefilter }: Props) => {\n  const [selectedPage, setSelectedPage] = usePagination('tasksTable');\n  const { filterValues } = useFilters('tasksTable');\n  const { sortParamsValues } = useSortParams('tasksTable');\n  const { data: taskStatuses } = useGetTaskStatusesQuery();\n  const filters: FilterValues = { ...filterValues };\n  const queryParameters: Record<string, string> = {\n    ...sortParamsValues,\n    ...filters,\n    page: selectedPage.toString(),\n  };\n\n  if(taskStatuses){\n    //queryParameters['status_ids[]'] = taskStatuses[0].id;\n  }\n\n  if (prefilter === 'mineInProgress') {\n    queryParameters.assigned = 'me';\n  }\n\n  if (prefilter === 'createdByMe') {\n    queryParameters.created_by = 'me';\n  }\n\n  if (prefilter === 'unassigned') {\n    queryParameters.unassigned = 'true';\n  }\n\n  const { data: tasksData } = useGetTasksQuery(queryParameters);\n\n  useEffect(() => {\n    setSelectedPage(1);\n  }, [prefilter]);\n\n  const isTabletOrDesktop = useMediaQuery({ query: `(min-width: ${md})` });\n\n  return (\n    <>\n      {isTabletOrDesktop ? (\n        <TasksListDesktop tasks={tasksData?.tasks || []} />\n      ) : <TasksListMobile tasks={tasksData?.tasks || []} />}\n      {tasksData?.metadata && (\n        <PaginationControls\n          className=\"col-span-full\"\n          selectedPage={selectedPage}\n          setSelectedPage={setSelectedPage}\n          paginationMetadata={tasksData.metadata}\n        />\n      )}\n    </>\n  );\n};\n\nexport default TasksList;\n", "import * as React from 'react';\nimport { format } from 'date-fns';\nimport { useCallback, useEffect } from 'react';\nimport {\n  Task, TaskColumnId, tenantRelatedTaskColumnIds,\n} from '../../../api/modules/tasks/tasksTypes';\nimport TableActionsBar from '../../../components/Table/TableActionsBar';\nimport TasksBulkActions from './TasksBulkActions/TasksBulkActions';\nimport TasksTableCustomisation from './TasksTableCustomisation';\nimport Table, {\n  TableBody, TableBodyCell,\n  TableBodyRow,\n  TableHeader,\n  TableHeaderCell,\n  TableHeaderRow,\n} from '../../../components/Table/Table';\nimport {\n  resetSelectedTaskIds,\n  saveSelectedTaskId,\n  TableId,\n} from '../../../store/appSlice';\nimport TableBodyPlaceholder from '../../../components/Table/TableBodyPlaceholder';\nimport Chip from '../../../components/Chip/Chip';\nimport capitalize from '../../../../utils/formatters';\nimport useMessages from '../../../hooks/useMessages';\nimport { useAppDispatch, useAppSelector } from '../../../hooks/reduxHooks';\nimport { useGetSelectedTasksColumnsQuery } from '../../../api/appApi';\nimport useHomeownerAssociationsMode from '../../../hooks/useHomeownerAssociationsMode';\nimport useTenantlessMode from '../../../hooks/useTenantlessMode';\n\ninterface Props {\n  tasks: Task[]\n}\n\nconst TasksListDesktop = ({ tasks }: Props) => {\n  const getMessage = useMessages();\n  const hoaMode = useHomeownerAssociationsMode();\n  const tenantlessMode = useTenantlessMode();\n  const { data: selectedColumns } = useGetSelectedTasksColumnsQuery();\n  const dispatch = useAppDispatch();\n\n  const isSelected = useCallback(\n    (columnId: TaskColumnId): boolean => (\n      !!selectedColumns?.includes(columnId)\n      && (!tenantlessMode || !tenantRelatedTaskColumnIds.includes(columnId))\n    ),\n    [selectedColumns, tenantlessMode],\n  );\n  const selectedTasksIds = useAppSelector((state) => state.app.selectedTasksIds);\n\n  const handleChecked = (id: string) => {\n    dispatch(saveSelectedTaskId({ id }));\n  };\n\n  useEffect(() => {\n    dispatch(resetSelectedTaskIds());\n  }, []);\n\n  return (\n    <>\n      <TableActionsBar>\n        <div className=\"flex justify-center\">\n          <TasksBulkActions selectedTasks={selectedTasksIds} />\n          <TasksTableCustomisation />\n        </div>\n      </TableActionsBar>\n      <Table className=\"col-span-full px-0 py-0 table-fixed whitespace-nowrap overflow-auto !p-0\">\n        <TableHeader className=\"sticky top-0 z-20 bg-background-white border-none shadow-main shadow-sm\">\n          <TableHeaderRow className=\"[&>*:nth-child(2)]:pl-8 [&>*:last-child]:pr-8\">\n            <TableHeaderCell className=\"sticky top-0 left-0 pt-8 bg-main \" />\n            {isSelected('status') && (<TableHeaderCell className=\"pt-8 pb-4 pl-8\">{getMessage('tasks.column.status')}</TableHeaderCell>)}\n            {isSelected('created_at') && (\n              <TableHeaderCell className=\"pt-8 pb-4\" id=\"created_at\" tableName={'tasksTable' as TableId}>\n                {getMessage('tasks.column.creationDate')}\n              </TableHeaderCell>\n            )}\n            {isSelected('last_comment_at') && (\n              <TableHeaderCell className=\"pt-8 pb-4\" id=\"last_comment_at\" tableName={'tasksTable' as TableId}>\n                {getMessage('tasks.column.lastCommentDate')}\n              </TableHeaderCell>\n            )}\n            {isSelected('task_number') && (\n              <TableHeaderCell className=\"pt-8 pb-4\" id=\"task_number\" tableName={'tasksTable' as TableId}>\n                {getMessage('tasks.column.number')}\n              </TableHeaderCell>\n            )}\n            {isSelected('title') && <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('tasks.column.title')}</TableHeaderCell>}\n            {isSelected('venue_address') && <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('tasks.column.venueAddress')}</TableHeaderCell>}\n            {isSelected('venue_code') && <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('tasks.column.venueCode')}</TableHeaderCell>}\n            {hoaMode && isSelected('homeowner_association_code') && <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('tasks.column.homeownersAssociationCode')}</TableHeaderCell>}\n            {hoaMode && isSelected('homeowner_association_name') && <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('tasks.column.homeownerAssociation')}</TableHeaderCell>}\n            {isSelected('category') && <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('tasks.column.category')}</TableHeaderCell>}\n            {isSelected('creator_external_id') && <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('tasks.column.reporterCode')}</TableHeaderCell>}\n            {isSelected('creator') && <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('tasks.column.reporterName')}</TableHeaderCell>}\n            {isSelected('realizer_external_id') && <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('tasks.column.realizerCode')}</TableHeaderCell>}\n            {isSelected('realizer') && <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('tasks.column.realizer')}</TableHeaderCell>}\n            {isSelected('estimated_start_time') && <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('tasks.column.plannedStartDate')}</TableHeaderCell>}\n            {isSelected('started_at') && <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('tasks.column.startDate')}</TableHeaderCell>}\n            {isSelected('estimated_finish_time') && <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('tasks.column.plannedEndDate')}</TableHeaderCell>}\n            {isSelected('finished_at') && <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('tasks.column.endDate')}</TableHeaderCell>}\n            {isSelected('ticket_number') && <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('tasks.column.ticketNumber')}</TableHeaderCell>}\n            {isSelected('document_number') && <TableHeaderCell className=\"pt-8 pb-4\">{getMessage('tasks.column.documentNumber')}</TableHeaderCell>}\n          </TableHeaderRow>\n        </TableHeader>\n        <TableBody>\n          {tasks && tasks.length === 0 && (<TableBodyPlaceholder />)}\n          {selectedColumns && selectedColumns.length > 0 && tasks && tasks.map(({\n            id, status, createdAt, lastCommentAt, taskNumber, title, venueAddress, venueCode, homeownerAssociationCode,\n            homeownerAssociationName, category, creator, creatorCode, realizerCode, realizer,\n            estimatedStartTime, estimatedFinishTime, startedAt, finishedAt, ticketNumber, documentNumber,\n          }) => (\n            <TableBodyRow\n              key={id}\n              className=\"relative border-none odd:bg-light-100 text-typography-black [&>*:nth-child(2)]:pl-8 [&>*:last-child]:pr-8\"\n            >\n              <TableHeaderCell className=\"sticky left-0 z-15 m-10 pl-0 !pr-0 pt-0 bg-main border-main w-1 mr-16\">\n                <label htmlFor={id} className=\"hover:cursor-pointer\">\n                  <div className=\"text-[0px] h-0\">{getMessage('tasks.checkbox.label')}</div>\n                  <input\n                    className=\"m-4\"\n                    type=\"checkbox\"\n                    checked={selectedTasksIds.includes(id)}\n                    onChange={() => handleChecked(id)}\n                    id={id}\n                  />\n                </label>\n              </TableHeaderCell>\n              <TableBodyCell>\n                <Chip chipStyle={status === 'completed' ? 'gray' : 'primary'} className=\"w-fit\">\n                  {status && capitalize(status)}\n                </Chip>\n              </TableBodyCell>\n              {isSelected('created_at') && (\n              <TableBodyCell>\n                {createdAt && (\n                <Chip chipStyle=\"ghost\" className=\"w-fit\">\n                  {format(new Date(createdAt), 'dd-MM-yyyy')}\n                </Chip>\n                )}\n              </TableBodyCell>\n              )}\n              {isSelected('last_comment_at') && (\n              <TableBodyCell>\n                {lastCommentAt && (\n                <Chip chipStyle=\"ghost\" className=\"w-fit\">\n                  {format(new Date(lastCommentAt), 'dd-MM-yyyy')}\n                </Chip>\n                )}\n              </TableBodyCell>\n              )}\n              {isSelected('task_number') && <TableBodyCell>{taskNumber}</TableBodyCell>}\n              {isSelected('title') && (\n                <TableBodyCell clickable={({ href: `/zadania/${id}`, ariaLabel: `Przejd\u017A do szczeg\u00F3\u0142\u00F3w zadania ${taskNumber} ${title}` })}>\n                  {title}\n                </TableBodyCell>\n              )}\n              {isSelected('venue_address') && <TableBodyCell>{venueAddress}</TableBodyCell>}\n              {isSelected('venue_code') && <TableBodyCell>{venueCode}</TableBodyCell>}\n              {hoaMode && isSelected('homeowner_association_code') && (\n              <TableBodyCell>\n                {homeownerAssociationCode}\n              </TableBodyCell>\n              ) }\n              {hoaMode && isSelected('homeowner_association_name') && <TableBodyCell>{homeownerAssociationName}</TableBodyCell>}\n              {isSelected('category') && <TableBodyCell>{category}</TableBodyCell>}\n              {isSelected('creator_external_id') && <TableBodyCell>{creatorCode}</TableBodyCell>}\n              {isSelected('creator') && <TableBodyCell>{creator}</TableBodyCell>}\n              {isSelected('realizer_external_id') && <TableBodyCell>{realizerCode}</TableBodyCell>}\n              {isSelected('realizer') && <TableBodyCell>{realizer}</TableBodyCell>}\n              {isSelected('estimated_start_time') && (\n              <TableBodyCell>\n                {estimatedStartTime && (\n                <Chip chipStyle=\"ghost\" className=\"w-fit\">\n                  {format(new Date(estimatedStartTime), 'dd-MM-yyyy')}\n                </Chip>\n                )}\n              </TableBodyCell>\n              )}\n              {isSelected('started_at') && (\n              <TableBodyCell>\n                {startedAt && (\n                <Chip chipStyle=\"ghost\" className=\"w-fit\">\n                  {format(new Date(startedAt), 'dd-MM-yyyy')}\n                </Chip>\n                )}\n              </TableBodyCell>\n              )}\n              {isSelected('estimated_finish_time') && (\n              <TableBodyCell>\n                {estimatedFinishTime && (\n                <Chip chipStyle=\"ghost\" className=\"w-fit\">\n                  {format(new Date(estimatedFinishTime), 'dd-MM-yyyy')}\n                </Chip>\n                )}\n              </TableBodyCell>\n              )}\n              {isSelected('finished_at') && (\n              <TableBodyCell>\n                {finishedAt && (\n                <Chip chipStyle=\"ghost\" className=\"w-fit\">\n                  {format(new Date(finishedAt), 'dd-MM-yyyy')}\n                </Chip>\n                )}\n              </TableBodyCell>\n              )}\n              {isSelected('ticket_number') && <TableBodyCell>{ticketNumber}</TableBodyCell>}\n              {isSelected('document_number') && <TableBodyCell>{documentNumber}</TableBodyCell>}\n            </TableBodyRow>\n          ))}\n        </TableBody>\n      </Table>\n    </>\n  );\n};\n\nexport default TasksListDesktop;\n", "import { PaginationMetadata } from '../../paginationTypes';\n\nexport interface ApiTasksResponse {\n  tasks: ApiTask[],\n  metadata: PaginationMetadata,\n}\n\nexport interface ApiTaskResponse {\n  task: FullApiTask,\n}\n\nexport type ApiPortalProServiceGroupResponse = {\n  commission_portal_pro_service_groups: ApiPortalProServiceGroup[]\n};\n\nexport type ApiPortalProServiceResponse = {\n  commission_portal_pro_services: ApiPortalProService[]\n};\n\nexport type ApiPortalProServiceGroup = {\n  service_group_code: string,\n  name: string,\n  services: ApiPortalProService[]\n};\n\nexport type ApiPortalProService = {\n  service_id: string,\n  service_code: string,\n  name: string\n};\n\nexport interface Tasks {\n  tasks: Task[],\n  metadata: PaginationMetadata,\n}\n\nexport type ApiTask = {\n  id: string,\n  status: string,\n  created_at: string,\n  last_comment_at: string,\n  task_number: string,\n  title: string,\n  venue_address: string,\n  venue_code: string,\n  venue_postal_code: string,\n  venue_city: string,\n  contact_email: string,\n  contact_phone_number: string,\n  homeowner_association_code: string,\n  homeowner_association_name: string,\n  comments: ApiTaskComment[],\n  task_commissions: ApiTaskCommission[],\n  category: string,\n  creator: string,\n  creator_external_id: string,\n  realizer: string,\n  realizer_external_id: string,\n  estimated_start_time: string,\n  estimated_finish_time: string,\n  started_at: string,\n  finished_at: string,\n  ticket_number: number,\n  document_number: string\n};\n\nexport interface ApiTaskComment {\n  attachments: ApiAttachment[]\n  author: string,\n  content: string,\n  created_at: string,\n  public: boolean,\n}\n\nexport interface ApiTaskCommission {\n  id: string,\n  portal_pro: ApiPortalPro,\n  internal_commission_status: string,\n  provider: string,\n}\n\nexport interface ApiPortalPro {\n  status: string,\n  external_id: string,\n  job_tracking_url: string,\n}\n\nexport interface ApiAttachment {\n  description: string,\n  filename: string,\n  path: string,\n  content_type: string,\n}\n\nexport type FullApiTask = Omit<ApiTask, 'status' | 'category'> & {\n  attachments: ApiAttachment[],\n  category: TaskCategory,\n  comments: ApiTaskComment[],\n  commissions: TaskCommission[],\n  created_at: string,\n  description: string,\n  status: ApiTaskStatus,\n  ticket: {\n    id: string,\n  },\n  document: {\n    id: string,\n  }\n};\n\nexport type Task = {\n  id: string,\n  status: string,\n  createdAt: string,\n  lastCommentAt: string,\n  taskNumber: string,\n  title: string,\n  venueAddress: string,\n  venueCode: string,\n  venuePostalCode: string,\n  venueCity: string,\n  contactPhoneNumber: string,\n  contactEmail: string,\n  homeownerAssociationCode: string,\n  homeownerAssociationName: string,\n  category: string,\n  creator: string,\n  creatorCode: string,\n  realizer: string,\n  realizerCode: string,\n  estimatedStartTime: string,\n  estimatedFinishTime: string,\n  startedAt: string,\n  finishedAt: string,\n  ticketNumber: number,\n  documentNumber: string,\n};\n\nexport type FullTask = Omit<Task, 'status' | 'category'> & {\n  description: string,\n  attachments: TaskAttachment[],\n  ticketId?: string,\n  comments: TaskComment[],\n  commissions: TaskCommission[],\n  status: TaskStatus,\n  category: TaskCategory,\n  documentId?: string,\n};\n\nexport type TaskComment = {\n  author: string,\n  content: string,\n  createdAt: string,\n  attachments: TaskAttachment[]\n};\n\nexport type TaskAttachment = {\n  description: string,\n  filename: string,\n  path: string,\n  contentType: string,\n};\n\nexport type TaskCommission = {\n  id: string,\n  provider: string,\n  internalCommissionStatus: string,\n  portalPro?: PortalPro\n};\n\nexport type PortalPro = {\n  externalId: string,\n  status: string,\n  jobTrackingUrl: string,\n};\n\nexport type PortalProServiceGroup = {\n  name: string,\n  code: string,\n  services: PortalProService[]\n};\n\nexport type PortalProService = {\n  name: string,\n  code: string,\n  id: string\n};\n\nexport type ApiPostTask = {\n  task: FormData,\n  id: string,\n};\n\nexport type Attachment = {\n  file: FileList | undefined,\n  description: string\n};\n\nexport type TaskCategory = {\n  id: string,\n  name: string,\n};\n\nexport type ApiTaskCategories = {\n  task_categories: TaskCategory[]\n};\n\nexport type ApiTaskStatus = {\n  id: string,\n  object_type: string,\n  name: string,\n  active: boolean,\n  internal_name: string,\n  external_name: string,\n  description: string,\n};\n\nexport interface FullTaskStatus {\n  id: string,\n  objectType: string,\n  name: 'open' | 'completed' | string,\n  active: boolean,\n  internalName: string,\n  externalName: string,\n  description: string,\n}\n\nexport type ApiTaskStatuses = {\n  statuses: ApiTaskStatus[]\n};\n\nexport type TaskStatus = TaskCategory;\n\nexport interface TaskStatuses {\n  statuses: TaskStatus[]\n}\n\nexport interface ApiPostTaskComment {\n  id: string,\n  payload: FormData\n}\n\nexport interface ApiPostTaskCommission {\n  id: string,\n  payload: {\n    commission:\n    {\n      provider: string,\n      service_id: string,\n      description: string\n      street_address: string,\n      postal_code: string,\n      contact_phone: string,\n      contact_email: string,\n      city: string,\n      deadline?: Date,\n      offer_limit?: Date\n    } }\n}\n\nexport type ApiTaskCommissionStatusResponse = {\n  commission: ApiTaskCommissionStatus\n};\n\nexport type ApiTaskCommissionStatus = {\n  id: string,\n  provider: string,\n  internal_commission_status: string,\n  portal_pro: ApiPortalProStatus\n};\n\nexport type ApiPortalProStatus = {\n  external_id: string,\n  status: string,\n  job_tracking_url: string,\n};\n\nexport type TaskCommissionStatus = {\n  provider: string,\n  internalCommissionStatus: string,\n  portalPro: PortalProStatus\n};\n\nexport type PortalProStatus = {\n  externalId: string,\n  status: string,\n  jobTrackingUrl: string,\n};\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport type postTaskCommissionsPayload = {\n  serviceId: string,\n  description: string,\n  streetAddress: string,\n  postalCode: string,\n  city: string,\n  contactPhone: string,\n  contactEmail: string,\n  deadline?: Date,\n  offerLimit?: Date\n};\n\nexport const taskDefaultColumnIds = [\n  'status', 'created_at', 'last_comment_at', 'task_number', 'title',\n  'venue_address', 'homeowner_association_code', 'category', 'realizer',\n];\nexport const taskCustomizableColumnIds = taskDefaultColumnIds.concat([\n  'venue_code', 'homeowner_association_name', 'creator_external_id', 'creator',\n  'estimated_start_time', 'started_at', 'estimated_finish_time', 'finished_at',\n  'realizer_external_id', 'ticket_number', 'document_number',\n]);\n\nexport type TaskColumnId = typeof taskCustomizableColumnIds[number] | typeof taskCustomizableColumnIds[number];\n\nexport const tenantRelatedTaskColumnIds: TaskColumnId[] = [\n  'venue_address', 'venue_code', 'homeowner_association_code', 'homeowner_association_name', 'ticket_number',\n];\n\nexport interface ApiPostColumnsSettings {\n  columns?: (TaskColumnId | undefined)[]\n}\n\nexport interface ApiColumnsSettings {\n  selected_columns: TaskColumnId[]\n}\n\nexport interface TaskInputs {\n  title: string,\n  ticket_id?: string,\n  document_id?: string,\n  category_id: string,\n  realizer_id: string,\n  status_id: string,\n  description: string,\n  attachments: Attachment[],\n  estimated_start_time: string,\n  estimated_finish_time: string,\n  started_at: string,\n  finished_at: string,\n  tenant: string,\n  venue: string,\n  homeownerAssociation: string,\n}\n\nexport interface ApiPostChangeTaskData {\n  tasks: {\n    [id: string]: {\n      status_id?: string,\n      category_id?: string\n      realizer_id?: string | null,\n    }\n  }\n}\n", "import * as React from 'react';\nimport TaskAssignEmployeeAction from './TaskAssignEmployeeAction';\nimport TaskChangeCategoryAction from './TaskChangeCategoryAction';\nimport TaskChangeStatusAction from './TaskChangeStatusAction';\n\ninterface Props {\n  selectedTasks: string[];\n}\n\nconst TasksBulkActions = ({ selectedTasks }: Props) => (\n  <div className=\"flex items-center border-r border-stroke-grey-300 pr-1\">\n    <TaskAssignEmployeeAction selectedTasksIds={selectedTasks} />\n    <TaskChangeCategoryAction selectedTasksIds={selectedTasks} />\n    <TaskChangeStatusAction selectedTasksIds={selectedTasks} />\n  </div>\n);\n\nexport default TasksBulkActions;\n", "/* eslint-disable react/jsx-props-no-spreading */\n/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n\nimport * as React from 'react';\nimport { useCallback, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useLocation, useNavigate } from 'react-router';\nimport classNames from 'classnames';\nimport { useGetEmployeesQuery, usePostChangeTaskMutation } from '../../../../api/appApi';\nimport useMessages from '../../../../hooks/useMessages';\nimport RealizerIcon from '../../../../icons/user.svg';\nimport Dialog from '../../../../components/Dialog/Dialog';\nimport { InputLabel } from '../../../../components/FormInputs/InputLabel';\nimport FormSearchableDropdown from '../../../../components/FormInputs/FormSearchableDropdown';\nimport { FormCheckboxInput } from '../../../../components/FormInputs';\n\ninterface Props {\n  selectedTasksIds: string[],\n}\n\nconst TaskAssignEmployeeAction = ({ selectedTasksIds }: Props) => {\n  const [isPopupOpen, setIsPopupOpen] = useState<boolean>(false);\n  const [postChangeTask] = usePostChangeTaskMutation();\n  const getMessage = useMessages();\n  const methods = useForm();\n  const watchRealizerId = methods.watch('realizer_id');\n  const watchRemoveRealizer = methods.watch('removeRealizer');\n  const navigate = useNavigate();\n  const location = useLocation();\n\n  const handleClick = () => {\n    if (selectedTasksIds.length > 0) setIsPopupOpen(true);\n  };\n\n  const onAccept = useCallback(() => {\n    const tasks: {\n      [key: string]: {\n        realizer_id: string | null\n      }\n    } = {};\n\n    selectedTasksIds.forEach((taskId) => {\n      tasks[taskId] = { realizer_id: watchRealizerId || null };\n    });\n    postChangeTask({ tasks });\n\n    methods.setValue('realizer_id', '');\n    methods.setValue('removeRealizer', false);\n    navigate(location.pathname);\n  }, [watchRealizerId, watchRemoveRealizer]);\n\n  const onClose = () => {\n    methods.setValue('realizer_id', '');\n    methods.setValue('removeRealizer', false);\n    setIsPopupOpen(false);\n  };\n\n  const dynamicStyles = (selectedTasksIds.length > 0)\n    ? 'border-typography-dark hover:border-hover hover:cursor-pointer hover:text-hover hover:bg-light-200'\n    : 'text-stroke-grey-300 border-stroke-grey-300 hover:cursor-default';\n\n  return (\n    <div title={getMessage('tasks.bulkAction.changeRealizer')}>\n      <RealizerIcon\n        role=\"button\"\n        className={classNames(dynamicStyles, 'border rounded text-typography-dark p-2 mr-1')}\n        onClick={handleClick}\n        tabIndex={(selectedTasksIds.length > 0) ? 0 : undefined}\n        onKeyDown={(e) => e.key === 'Enter' && setIsPopupOpen(true)}\n        aria-label={getMessage('tasks.bulkAction.changeRealizer')}\n      />\n      {isPopupOpen\n        && (\n          <Dialog\n            isOpen={isPopupOpen}\n            acceptButtonText={getMessage('confirm')}\n            onClose={onClose}\n            closeButtonText={getMessage('cancel')}\n            onAccept={onAccept}\n            isAcceptButtonDisabled={!watchRealizerId && !watchRemoveRealizer}\n          >\n            <div className=\"mb-10\">\n              <InputLabel label={getMessage('tasks.changeTasksRealizer.popUp.label')} autofocus />\n              <FormProvider {...methods}>\n                <FormSearchableDropdown\n                  label=\" \"\n                  className=\"mt-4 w-full\"\n                  id=\"realizer_id\"\n                  query={useGetEmployeesQuery}\n                  disabled={watchRemoveRealizer}\n                  ariaLabel={getMessage('form.ariaLabel.realizer')}\n                />\n                <p className=\"text-center my-2\">{getMessage('tasks.changeTasksRealizer.popUp.or')}</p>\n                <FormCheckboxInput\n                  label={getMessage('tasks.changeTasksRealizer.popUp.removeRealizer')}\n                  id=\"removeRealizer\"\n                  className=\"hover:text-red-500\"\n                  disabled={watchRealizerId}\n                />\n              </FormProvider>\n            </div>\n          </Dialog>\n        ) }\n    </div>\n  );\n};\n\nexport default TaskAssignEmployeeAction;\n", "import * as React from 'react';\nimport { useState, useMemo, useCallback } from 'react';\nimport classNames from 'classnames';\nimport CategoryIcon from '../../../../icons/category.svg';\nimport {\n  useGetTaskCategoriesQuery,\n  usePostChangeTaskMutation,\n} from '../../../../api/appApi';\nimport Dialog from '../../../../components/Dialog/Dialog';\nimport useMessages from '../../../../hooks/useMessages';\nimport { InputLabel } from '../../../../components/FormInputs/InputLabel';\nimport { Select } from '../../../../components/FormInputs/inputs/FormSelect';\nimport capitalize from '../../../../../utils/formatters';\n\ninterface Props {\n  selectedTasksIds: string[];\n}\n\nconst TaskChangeCategoryAction = ({ selectedTasksIds }: Props) => {\n  const [isPopupOpen, setIsPopupOpen] = useState<boolean>(false);\n  const [selectedCategory, setSelectedCategory] = useState<string>('');\n  const [postChangeTask] = usePostChangeTaskMutation();\n  const getMessage = useMessages();\n  const { data: taskCategories } = useGetTaskCategoriesQuery();\n\n  const categoryOptionsValues = useMemo(() => taskCategories?.map(({ id, name }) => ({\n    value: id,\n    optionLabel: capitalize(name),\n  })), [taskCategories]);\n\n  const handleClick = () => {\n    if (selectedTasksIds.length > 0) setIsPopupOpen(true);\n  };\n\n  const changeCategory = (value: string) => {\n    setSelectedCategory(value);\n  };\n\n  const onAccept = useCallback(() => {\n    const tasks: {\n      [key: string]: {\n        category_id: string\n      }\n    } = {};\n    function populatePayload(id: string) {\n      tasks[id] = { category_id: selectedCategory };\n    }\n    selectedTasksIds.forEach((item) => populatePayload(item));\n    postChangeTask({ tasks });\n  }, [selectedCategory]);\n\n  const onClose = () => {\n    setSelectedCategory('');\n    setIsPopupOpen(false);\n  };\n\n  const dynamicStyles = (selectedTasksIds.length > 0) ? 'border-typography-dark hover:border-hover hover:cursor-pointer hover:text-hover hover:bg-light-200' : 'text-stroke-grey-300 border-stroke-grey-300 hover:cursor-default';\n\n  return (\n    <div title={getMessage('tasks.bulkAction.changeCategory')}>\n      <CategoryIcon\n        role=\"button\"\n        className={classNames(dynamicStyles, 'border rounded text-typography-dark p-2 mr-1')}\n        onClick={handleClick}\n        tabIndex={(selectedTasksIds.length > 0) ? 0 : undefined}\n        onKeyDown={(e) => e.key === 'Enter' && setIsPopupOpen(true)}\n        aria-label={getMessage('tasks.bulkAction.changeCategory')}\n      />\n      {isPopupOpen\n        && (\n          <Dialog\n            isOpen={isPopupOpen}\n            acceptButtonText={getMessage('confirm')}\n            onClose={onClose}\n            closeButtonText={getMessage('cancel')}\n            onAccept={onAccept}\n            isAcceptButtonDisabled={!selectedCategory}\n          >\n            <div className=\"mb-10\">\n              <InputLabel\n                label={getMessage('tasks.changeTasksCategory')}\n              />\n              {categoryOptionsValues && (\n                <Select\n                  selectOptions={categoryOptionsValues}\n                  onChange={(value) => changeCategory(value)}\n                  value={selectedCategory}\n                  placeholder={getMessage('choose')}\n                  autofocus\n                />\n              )}\n            </div>\n          </Dialog>\n        ) }\n    </div>\n  );\n};\n\nexport default TaskChangeCategoryAction;\n", "import * as React from 'react';\nimport { useState, useMemo, useCallback } from 'react';\nimport classNames from 'classnames';\nimport StatusIcon from '../../../../icons/bell.svg';\nimport { useGetTaskStatusesQuery, usePostChangeTaskMutation } from '../../../../api/appApi';\nimport Dialog from '../../../../components/Dialog/Dialog';\nimport useMessages from '../../../../hooks/useMessages';\nimport { InputLabel } from '../../../../components/FormInputs/InputLabel';\nimport { Select } from '../../../../components/FormInputs/inputs/FormSelect';\nimport capitalize from '../../../../../utils/formatters';\n\ninterface Props {\n  selectedTasksIds: string[];\n}\n\nconst TaskChangeStatusAction = ({ selectedTasksIds }: Props) => {\n  const [isPopupOpen, setIsPopupOpen] = useState<boolean>(false);\n  const [selectedStatus, setSelectedStatus] = useState<string>('');\n  const [postChangeTask] = usePostChangeTaskMutation();\n  const { data: taskStatuses } = useGetTaskStatusesQuery();\n  const getMessage = useMessages();\n\n  const statusOptionsValues = useMemo(() => taskStatuses?.map(({ id, name }) => ({\n    value: id,\n    optionLabel: capitalize(name),\n  })) || [], [taskStatuses]);\n\n  const handleClick = () => {\n    if (selectedTasksIds.length > 0) setIsPopupOpen(true);\n  };\n\n  const changeStatus = (value: string) => {\n    setSelectedStatus(value);\n  };\n\n  const onAccept = useCallback(() => {\n    const tasks: {\n      [key: string]: {\n        status_id: string\n      }\n    } = {};\n    function populatePayload(id: string) {\n      tasks[id] = { status_id: selectedStatus };\n    }\n    selectedTasksIds.forEach((item) => populatePayload(item));\n    postChangeTask({ tasks });\n  }, [selectedStatus]);\n\n  const onClose = () => {\n    setSelectedStatus('');\n    setIsPopupOpen(false);\n  };\n\n  const dynamicStyles = (selectedTasksIds.length > 0) ? 'border-typography-dark hover:border-hover hover:cursor-pointer hover:text-hover hover:bg-light-200' : 'text-stroke-grey-300 border-stroke-grey-300 hover:cursor-default';\n\n  return (\n    <div title={getMessage('tasks.bulkAction.changeStatus')}>\n      <StatusIcon\n        role=\"button\"\n        className={classNames(dynamicStyles, 'border rounded text-typography-dark p-2 mr-1')}\n        onClick={handleClick}\n        tabIndex={(selectedTasksIds.length > 0) ? 0 : undefined}\n        onKeyDown={(e) => e.key === 'Enter' && setIsPopupOpen(true)}\n        aria-label={getMessage('tasks.bulkAction.changeStatus')}\n      />\n      {isPopupOpen\n        && (\n          <Dialog\n            isOpen={isPopupOpen}\n            acceptButtonText={getMessage('confirm')}\n            onClose={onClose}\n            closeButtonText={getMessage('cancel')}\n            onAccept={onAccept}\n            isAcceptButtonDisabled={!selectedStatus}\n          >\n            <div className=\"mb-10\">\n              <InputLabel\n                label={getMessage('tasks.changeTasksStatus')}\n              />\n              <Select\n                selectOptions={statusOptionsValues}\n                onChange={(value) => changeStatus(value)}\n                value={selectedStatus}\n                placeholder={getMessage('choose')}\n                autofocus\n              />\n            </div>\n          </Dialog>\n        ) }\n    </div>\n  );\n};\n\nexport default TaskChangeStatusAction;\n", "import * as React from 'react';\nimport { useMemo } from 'react';\nimport {\n  useGetSelectedTasksColumnsQuery,\n  usePostSelectedTasksColumnsMutation,\n} from '../../../api/appApi';\nimport { SelectOption } from '../../../components/FormInputs/inputs/FormSelect';\nimport useMessages from '../../../hooks/useMessages';\nimport TableCustomisationMenu from '../../../components/TableCustomisationMenu/TableCustomisationMenu';\nimport {\n  taskCustomizableColumnIds, tenantRelatedTaskColumnIds,\n} from '../../../api/modules/tasks/tasksTypes';\nimport useHomeownerAssociationsMode from '../../../hooks/useHomeownerAssociationsMode';\nimport useTenantlessMode from '../../../hooks/useTenantlessMode';\n\nconst TasksTableCustomisation = () => {\n  const getMessage = useMessages();\n  const hoaMode = useHomeownerAssociationsMode();\n  const tenantlessMode = useTenantlessMode();\n  const { data: selectedColumns } = useGetSelectedTasksColumnsQuery();\n  const [postSelectedTaskColumns] = usePostSelectedTasksColumnsMutation();\n\n  const selectOptions: SelectOption[] = useMemo(() => {\n    const customizableColumns = taskCustomizableColumnIds.map((id) => ({\n      value: id,\n      optionLabel: getMessage(`tasks.columnConfig.${id}`),\n    }));\n\n    return customizableColumns.filter((option) => (\n      (!tenantlessMode || !tenantRelatedTaskColumnIds.includes(option.value))\n      && (hoaMode || !['homeowner_association_name', 'homeowner_association_code'].includes(option.value))\n    ));\n  }, [hoaMode, tenantlessMode]);\n\n  if (!selectedColumns || !postSelectedTaskColumns) return null;\n\n  const handleSelectedColumns = (selectedColumns: string[]) => {\n    postSelectedTaskColumns({ columns: selectedColumns });\n  };\n\n  return (\n    <TableCustomisationMenu\n      selectedColumns={selectedColumns}\n      setSelectedColumns={handleSelectedColumns}\n      selectOptions={selectOptions}\n      tableId=\"TasksTable\"\n    />\n  );\n};\n\nexport default TasksTableCustomisation;\n", "import * as React from 'react';\nimport format from 'date-fns/format';\nimport { useNavigate } from 'react-router-dom';\nimport { TableBodyCell } from '../../../components/Table/Table';\nimport ResponsiveTable, { ResponsiveTableHeader, ResponsiveTableBody, ResponsiveTableBodyRow } from '../../../components/Table/ResponsiveTable';\nimport Chip from '../../../components/Chip/Chip';\nimport { TableId } from '../../../store/appSlice';\nimport capitalize from '../../../../utils/formatters';\nimport Button from '../../../components/Button/Button';\nimport useMessages from '../../../hooks/useMessages';\nimport { Task } from '../../../api/modules/tasks/tasksTypes';\nimport TableBodyPlaceholder from '../../../components/Table/TableBodyPlaceholder';\nimport useTenantlessMode from '../../../hooks/useTenantlessMode';\n\ninterface Props {\n  tasks: Task[]\n}\n\nconst TasksListMobile = ({ tasks }: Props) => {\n  const navigate = useNavigate();\n  const handleNavigate = (id: string) => navigate(`/zadania/${id}`);\n  const getMessage = useMessages();\n  const tenantlessMode = useTenantlessMode();\n\n  const ids = tasks?.map(({ id }) => id);\n\n  const columnLabels = [\n    { label: 'tasks.column.status' },\n    { label: 'tasks.column.creationDate' },\n    { label: 'tasks.column.lastCommentDate' },\n    { label: 'tasks.column.number' },\n    { label: 'tasks.column.title' },\n    ...tenantlessMode ? [] : [{ label: 'tasks.column.venueAddress' }],\n    { label: 'tasks.column.placeholder', divClassName: 'sr-only' },\n  ];\n\n  return (\n    <ResponsiveTable className=\"col-span-full md:mb-0\">\n      {tasks && tasks?.length === 0 ? <TableBodyPlaceholder /> : (\n        <>\n          <ResponsiveTableHeader ids={ids} columnLabels={columnLabels} tableName={'tasksTable' as TableId} />\n          <ResponsiveTableBody>\n            {tasks && tasks?.map(({\n              status, createdAt, lastCommentAt, taskNumber, title, venueAddress, id,\n            }) => (\n\n              <ResponsiveTableBodyRow key={taskNumber} className=\"border-b last:border-b-0 border-separate font-medium\">\n                <TableBodyCell>\n                  <Chip chipStyle={status === 'completed' ? 'gray' : 'primary'} className=\"w-fit\">\n                    {status && capitalize(status)}\n                  </Chip>\n                </TableBodyCell>\n                <TableBodyCell>\n                  <Chip chipStyle=\"ghost\" className=\"w-fit\">\n                    {format(new Date(createdAt), 'dd-MM-yyyy')}\n                  </Chip>\n                </TableBodyCell>\n                <TableBodyCell>\n                  {lastCommentAt && (\n                  <Chip chipStyle=\"ghost\" className=\"w-fit\">\n                    {format(new Date(lastCommentAt), 'dd-MM-yyyy')}\n                  </Chip>\n                  )}\n                </TableBodyCell>\n                <TableBodyCell className=\"max-w-[4rem]\">{taskNumber}</TableBodyCell>\n                <TableBodyCell className={`w-fit text-typography-black ${status === 'completed' ? '' : 'font-bold'}`}>{title}</TableBodyCell>\n                {!tenantlessMode && <TableBodyCell className=\"max-w-[13rem] truncate\">{venueAddress}</TableBodyCell>}\n                <TableBodyCell>\n                  <Button\n                    onClick={() => handleNavigate(id)}\n                    styleType=\"secondary\"\n                    size=\"small\"\n                    ariaLabel={getMessage('tasks.task.taskDetails')}\n                  >\n                    {getMessage('more')}\n                  </Button>\n                </TableBodyCell>\n              </ResponsiveTableBodyRow>\n            ))}\n          </ResponsiveTableBody>\n        </>\n      )}\n    </ResponsiveTable>\n  );\n};\n\nexport default TasksListMobile;\n", "import * as React from 'react';\nimport { useMemo } from 'react';\nimport useMessages from '../../../hooks/useMessages';\nimport Filters from '../../../components/Filters/Filters';\nimport { FilterConfig } from '../../../components/FilterInput/FilterInput';\nimport { useGetTaskCategoriesQuery, useGetTaskStatusesQuery } from '../../../api/appApi';\nimport capitalize from '../../../../utils/formatters';\nimport useHomeownerAssociationsMode from '../../../hooks/useHomeownerAssociationsMode';\nimport useTenantlessMode from '../../../hooks/useTenantlessMode';\n\ninterface Props {\n  open: boolean,\n}\n\nconst TasksFilters = ({ open }: Props) => {\n  const getMessage = useMessages();\n  const hoaMode = useHomeownerAssociationsMode();\n  const tenantlessMode = useTenantlessMode();\n  const { data: taskCategories } = useGetTaskCategoriesQuery();\n  const { data: taskStatuses } = useGetTaskStatusesQuery();\n\n  const statusOptionsValues = useMemo(() => taskStatuses?.map(({ id, name }) => ({\n    value: id,\n    optionLabel: capitalize(name),\n  })), [taskStatuses]);\n\n  const categoryOptionsValues = useMemo(() => taskCategories?.map(({ id, name }) => ({\n    value: id,\n    optionLabel: capitalize(name),\n  })), [taskCategories]);\n\n  const filterFields : FilterConfig[] = useMemo(() => [\n    ...open ? [] : [{\n      type: 'multiselect',\n      id: 'status_ids',\n      label: getMessage('tasks.column.status'),\n      selectOptions: statusOptionsValues,\n    } as FilterConfig],\n    {\n      type: 'dateRange',\n      id: 'from_created_at',\n      toDateId: 'to_created_at',\n      label: getMessage('tasks.column.creationDate'),\n    },\n    {\n      type: 'dateRange',\n      id: 'from_last_comment_at',\n      toDateId: 'to_last_comment_at',\n      label: getMessage('tasks.column.lastCommentDate'),\n    },\n    {\n      type: 'text',\n      id: 'number_title_search',\n      label: getMessage('tasks.filter.numberTitle'),\n      ariaLabel: 'Szukaj po numerze lub tytule zadania',\n    },\n    ...tenantlessMode ? [] : [{\n      type: 'text',\n      id: 'venue_search',\n      label: getMessage('tasks.filter.venueSearch'),\n      ariaLabel: 'Szukaj po kodzie lub adresie lokalu',\n    } as FilterConfig],\n    ...hoaMode && !tenantlessMode ? [{\n      type: 'text',\n      id: 'homeowner_association_search',\n      label: getMessage('tasks.filter.homeownersAssociationSearch'),\n      ariaLabel: 'Szukaj po kodzie lub nazwie wsp\u00F3lnoty',\n    } as FilterConfig] : [],\n    {\n      type: 'text',\n      id: 'creator_search',\n      label: getMessage('tasks.filter.creatorNameCode'),\n      ariaLabel: 'Szukaj po imieniu i nazwisku zg\u0142aszaj\u0105cego',\n    },\n    {\n      type: 'multiselect',\n      id: 'category_id',\n      label: getMessage('tickets.ticket.category'),\n      selectOptions: categoryOptionsValues || [],\n    },\n    {\n      type: 'text',\n      id: 'realizer_search',\n      label: getMessage('tasks.filter.realizerNameCode'),\n      ariaLabel: 'Szukaj po imieniu i nazwisku realizuj\u0105cego',\n    },\n    {\n      type: 'dateRange',\n      id: 'from_estimated_start_time',\n      toDateId: 'to_estimated_start_time',\n      label: getMessage('tasks.column.plannedStartDate'),\n    },\n    {\n      type: 'dateRange',\n      id: 'from_estimated_finish_time',\n      toDateId: 'to_estimated_finish_time',\n      label: getMessage('tasks.column.plannedEndDate'),\n    },\n    {\n      type: 'dateRange',\n      id: 'from_started_at',\n      toDateId: 'to_started_at',\n      label: getMessage('tasks.column.startDate'),\n    },\n    {\n      type: 'dateRange',\n      id: 'from_finished_at',\n      toDateId: 'to_finished_at',\n      label: getMessage('tasks.column.endDate'),\n    },\n  ], [open, hoaMode, tenantlessMode]);\n\n  return (\n    <Filters\n      filterId=\"tasksTable\"\n      filterFields={filterFields}\n    />\n  );\n};\n\nexport default TasksFilters;\n", "import * as React from 'react';\nimport { useParams } from 'react-router-dom';\nimport { useEffect } from 'react';\nimport { useNavigate } from 'react-router';\nimport PageHeader from '../../../components/Layout/PageHeader';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport Layout from '../../../components/Layout/Layout';\nimport useMessages from '../../../hooks/useMessages';\nimport { useGetDocumentQuery, useGetTicketQuery } from '../../../api/appApi';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport NewTaskForm from './NewTaskForm';\nimport { EmployeeShowTicketData } from '../../../api/modules/tickets/ticketsTypes';\n\ninterface Props {\n  taskType: 'ticket' | 'document'\n}\n\nconst TaskFormPage = ({ taskType }: Props) => {\n  const getMessage = useMessages();\n  const {\n    checkPermission, checkModuleEnabled, checkTenantDataEnabled, isTenantDataEnabled,\n  } = usePermissions();\n  const { id } = useParams();\n  const navigate = useNavigate();\n  const { data: ticketData } = useGetTicketQuery(id, { skip: taskType !== 'ticket' || !isTenantDataEnabled() });\n  const { data: documentData } = useGetDocumentQuery(id, { skip: taskType !== 'document' });\n\n  checkPermission('tasks_add');\n  checkModuleEnabled('tickets');\n  if (taskType === 'ticket') checkTenantDataEnabled();\n\n  useEffect(() => {\n    if (documentData?.revoked) {\n      navigate(`/dokumenty/${id}`);\n    }\n  }, [documentData, id, navigate]);\n\n  return (\n    <Layout currentPage=\"tasks\">\n      <PageHeader\n        pageTitle={getMessage('tasks.newTask')}\n        currentPage=\"tasks\"\n        path={`${taskType === 'ticket' ? `/zgloszenia/${id}` : `/dokumenty/${id}`}`}\n      />\n      <ContentWrapper>\n        {(ticketData || (documentData && !documentData.revoked)) && (\n          <NewTaskForm ticket={ticketData as EmployeeShowTicketData} document={documentData} />\n        )}\n      </ContentWrapper>\n    </Layout>\n  );\n};\n\nexport default TaskFormPage;\n", "/* eslint-disable react/jsx-props-no-spreading */\nimport * as React from 'react';\nimport { FormProvider, useFieldArray, useForm } from 'react-hook-form';\nimport { useEffect, useMemo } from 'react';\nimport { useNavigate } from 'react-router';\nimport { EmployeeShowTicketData } from '../../../api/modules/tickets/ticketsTypes';\nimport useMessages from '../../../hooks/useMessages';\nimport {\n  useGetEmployeesQuery,\n  useGetTaskCategoriesQuery,\n  useGetFullTaskStatusesQuery,\n  usePostTaskForDocumentMutation,\n  usePostTaskForTicketMutation,\n} from '../../../api/appApi';\nimport {\n  FormDatePicker, FormFileInput,\n  FormInput, FormSelect, FormTextarea,\n} from '../../../components/FormInputs';\nimport Button from '../../../components/Button/Button';\nimport Card from '../../../components/Card/Card';\nimport {\n  FullTaskStatus, TaskCategory, TaskInputs,\n} from '../../../api/modules/tasks/tasksTypes';\nimport FormSearchableDropdown from '../../../components/FormInputs/FormSearchableDropdown';\nimport FileUploadPreview from '../../../components/AttachmentPreview/FileUploadPreview/FileUploadPreview';\nimport { translateTaskToFormData } from '../../../api/modules/tasks/tasksTranslator';\nimport useHomeownerAssociationsMode from '../../../hooks/useHomeownerAssociationsMode';\nimport { FormNotice } from '../../../components/FormNotice/FormNotice';\nimport capitalize from '../../../../utils/formatters';\nimport { FullDocument } from '../../../api/modules/documents/documentsTypes';\nimport useTenantlessMode from '../../../hooks/useTenantlessMode';\n\ninterface Props {\n  ticket?: EmployeeShowTicketData,\n  document?: FullDocument,\n}\n\nconst NewTaskForm = ({ ticket, document }: Props) => {\n  const getMessage = useMessages();\n  const hoaMode = useHomeownerAssociationsMode();\n  const tenantlessMode = useTenantlessMode();\n  const [postTaskDataForTicket, ticketResult] = usePostTaskForTicketMutation();\n  const [postTaskDataForDocument, documentResult] = usePostTaskForDocumentMutation();\n  const { data: categories } = useGetTaskCategoriesQuery();\n  const { data: statuses } = useGetFullTaskStatusesQuery();\n  const navigate = useNavigate();\n\n  const methods = useForm<TaskInputs>({\n    defaultValues: {\n      attachments: [{ description: '' }],\n      tenant: ticket?.tenantName || document?.tenant?.name || '',\n      venue: ticket?.venueAddress || '',\n      homeownerAssociation: ticket?.homeownerAssociationName || '',\n      ticket_id: ticket?.id,\n      document_id: document?.id,\n    },\n  });\n\n  useEffect(() => {\n    methods.setValue('status_id', statuses?.find((status) => status.name === 'open')?.id || '');\n  }, [statuses]);\n\n  const { fields, append, remove } = useFieldArray({ name: 'attachments', control: methods.control });\n\n  const attachments = methods.watch('attachments');\n  const allAttachmentsSelected = attachments.every((attachment) => attachment.file?.length);\n\n  useEffect(() => {\n    if (allAttachmentsSelected) {\n      append({ file: undefined, description: '' });\n    }\n  }, [allAttachmentsSelected]);\n\n  useEffect(() => {\n    if (ticketResult.status === 'fulfilled' || documentResult.status === 'fulfilled') {\n      navigate('/zadania');\n    }\n  }, [ticketResult, documentResult]);\n\n  const statusSelectOptions = useMemo(() => (statuses || []).map((status: FullTaskStatus) => ({\n    value: status.id,\n    optionLabel: capitalize(status.externalName),\n  })), [statuses]);\n\n  const categorySelectOptions = useMemo(() => (categories || []).map((category: TaskCategory) => ({\n    value: category.id,\n    optionLabel: category.name,\n  })), [categories]);\n\n  const onSubmit = (data: TaskInputs) => {\n    if (data.ticket_id) {\n      postTaskDataForTicket({ id: data.ticket_id, task: translateTaskToFormData(data) });\n    } else if (data.document_id) {\n      postTaskDataForDocument({ id: data.document_id, task: translateTaskToFormData(data) });\n    }\n  };\n\n  const estimatedStartTime = methods.watch('estimated_start_time');\n  const estimatedFinishTime = methods.watch('estimated_finish_time');\n  const startTime = methods.watch('started_at');\n  const finishTime = methods.watch('finished_at');\n\n  return (\n    <Card className=\"col-span-12 grid-cols-12\">\n      {/* @ts-ignore */}\n      {ticketResult.error && <FormNotice type=\"error\" message={ticketResult.error.data?.errors || getMessage('form.error')} />}\n      {/* @ts-ignore */}\n      {documentResult.error && <FormNotice type=\"error\" message={documentResult.error.data?.errors || getMessage('form.error')} />}\n      <FormProvider {...methods}>\n        <form onSubmit={methods.handleSubmit(onSubmit)} className=\"grid grid-cols-12 col-span-12\">\n          { ticket && (\n            <div className=\"col-span-12 text-header-sm mb-8\">\n              {`${getMessage('tasks.newTask.taskToTicket')} ${ticket.ticketNumber} ${ticket.title}`}\n            </div>\n          )}\n          { document && (\n            <div className=\"col-span-12 text-header-sm mb-8\">\n              {`${getMessage('tasks.newTask.taskToDocument')} ${document.documentNumber} ${document.title}`}\n            </div>\n          )}\n          <div className=\"border-b col-span-12 grid grid-cols-12 pb-4\">\n            <section className=\"col-span-12 md:col-span-6\">\n              <FormSelect\n                className=\"mt-4\"\n                id=\"category_id\"\n                label={`${getMessage('tickets.ticket.category')}*`}\n                selectOptions={categorySelectOptions}\n                options={{ required: getMessage('tasks.newTask.category.error.required') }}\n              />\n              <FormInput\n                className=\"mt-4 w-full\"\n                inputClassName=\"w-full\"\n                id=\"title\"\n                type=\"text\"\n                label={`${getMessage('tasks.newTask.title')}*`}\n                options={{ required: getMessage('tasks.newTask.title.error.required'), maxLength: { value: 150, message: getMessage('tasks.newTask.title.error.maxLength') } }}\n              />\n              <FormTextarea\n                className=\"mt-6 w-full\"\n                inputClassName=\"w-full\"\n                id=\"description\"\n                label={`${getMessage('tasks.newTask.description')}*`}\n                options={{ required: getMessage('tasks.newTask.description.error.required') }}\n              />\n              {fields.map(({ file, id }, index) => {\n                const fileSelected = file && file.length > 0;\n                return (\n                  <div key={id} id={id} className=\"flex align-start mb-4 w-full\">\n                    {fileSelected && (\n                      <FileUploadPreview attachment={attachments[index]} onDelete={() => remove(index)} />\n                    )}\n                    <div className=\"w-full\">\n                      {fileSelected && (\n                        <FormInput\n                          className=\"w-full\"\n                          inputClassName=\"text-xs w-full\"\n                          id={`attachments.${index}.description`}\n                          type=\"text\"\n                          placeholder={getMessage('tickets.ticket.addAttachmentDescription')}\n                        />\n                      )}\n                      <FormFileInput\n                        inputClassName={fileSelected ? 'hidden' : ''}\n                        id={`attachments.${index}.file`}\n                        labelText={getMessage('tickets.ticket.addAttachment')}\n                        labelClassName={fileSelected ? 'hidden' : ''}\n                        withIcon\n                      />\n                    </div>\n                  </div>\n                );\n              })}\n            </section>\n            <section className=\"col-span-12 md:col-span-2 md:col-start-10\">\n              <FormSelect\n                className=\"mt-4\"\n                id=\"status_id\"\n                label={getMessage('tickets.ticket.status')}\n                inline\n                selectOptions={statusSelectOptions}\n                options={{ required: getMessage('tasks.newTask.status.error.required') }}\n              />\n              <FormSearchableDropdown\n                label={getMessage('tickets.ticket.assignedTo')}\n                className=\"mt-4 w-full\"\n                id=\"realizer_id\"\n                query={useGetEmployeesQuery}\n                ariaLabel={getMessage('form.ariaLabel.realizer')}\n              />\n            </section>\n          </div>\n          {!tenantlessMode && (\n          <div className=\"col-span-12 grid grid-cols-12 mt-4\">\n            <section className=\"col-span-12 md:col-span-6\">\n              <FormInput\n                className=\"mt-4 w-full\"\n                inputClassName=\"w-full\"\n                id=\"tenant\"\n                type=\"text\"\n                disabled\n                label={getMessage('tasks.newTask.tenant')}\n              />\n              <FormInput\n                className=\"mt-4 w-full\"\n                inputClassName=\"w-full\"\n                id=\"venue\"\n                type=\"text\"\n                disabled\n                label={getMessage('tasks.newTask.venue')}\n              />\n              {hoaMode && (\n              <FormInput\n                className=\"mt-4 w-full\"\n                inputClassName=\"w-full\"\n                id=\"homeownerAssociation\"\n                type=\"text\"\n                disabled\n                label={getMessage('tasks.newTask.homeownerAssociation')}\n              />\n              )}\n            </section>\n            <section className=\"col-span-12 md:col-span-2 md:col-start-10\">\n              <FormDatePicker\n                className=\"mt-4 w-full\"\n                id=\"estimated_start_time\"\n                label={getMessage('tasks.newTask.estimated_start_time')}\n                maxDate={estimatedFinishTime ? new Date(estimatedFinishTime) : undefined}\n              />\n              <FormDatePicker\n                className=\"mt-4 w-full\"\n                id=\"estimated_finish_time\"\n                label={getMessage('tasks.newTask.estimated_finish_time')}\n                minDate={estimatedStartTime ? new Date(estimatedStartTime) : undefined}\n              />\n              <FormDatePicker\n                className=\"mt-4 w-full\"\n                id=\"started_at\"\n                label={getMessage('tasks.newTask.started_at')}\n                maxDate={finishTime ? new Date(finishTime) : undefined}\n              />\n              <FormDatePicker\n                className=\"mt-4 w-full\"\n                id=\"finished_at\"\n                label={getMessage('tasks.newTask.finished_at')}\n                minDate={startTime ? new Date(startTime) : undefined}\n              />\n            </section>\n          </div>\n          )}\n          <div className=\"col-span-12 col-start-1\">\n            <Button type=\"submit\" className=\"mt-6\">{getMessage('save')}</Button>\n          </div>\n        </form>\n      </FormProvider>\n    </Card>\n  );\n};\n\nexport default NewTaskForm;\n", "import * as React from 'react';\nimport { useParams } from 'react-router-dom';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport useMessages from '../../../hooks/useMessages';\nimport PageHeader from '../../../components/Layout/PageHeader';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport Layout from '../../../components/Layout/Layout';\nimport { useGetTaskQuery } from '../../../api/appApi';\nimport MainTaskCard from './MainTaskCard';\nimport TaskDesktopInfoCard from './TaskInfoCard/TaskDesktopInfoCard';\nimport TaskMobileInfoCard from './TaskInfoCard/TaskMobileInfoCard';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport useDocumentTitle from '../../../hooks/useDocumentTitle';\n\nconst TaskPage = () => {\n  const { id } = useParams();\n  const { checkModuleEnabled } = usePermissions();\n  const getMessage = useMessages();\n  const { data: task } = useGetTaskQuery(id || '', { skip: !id });\n\n  useDocumentTitle(getMessage('tasks.pageTitle', {number: task?.taskNumber}));\n\n\n  checkModuleEnabled('tickets');\n  if (!id) return null;\n\n  return (\n    <Layout currentPage=\"tasks\">\n      <PageHeader pageTitle={`${getMessage('tasks.task')} ${task ? task.taskNumber : ''}`} currentPage=\"tasks\" path=\"/zadania\" />\n      {task && <TaskMobileInfoCard task={task} title={getMessage('meters.metersList.info')} />}\n      <ContentWrapper>\n        {task && (\n          <>\n            <MainTaskCard task={task} />\n            <TaskDesktopInfoCard task={task} />\n          </>\n        )}\n      </ContentWrapper>\n    </Layout>\n  );\n};\n\nexport default TaskPage;\n", "import * as React from 'react';\nimport format from 'date-fns/format';\nimport { FullTask } from '../../../api/modules/tasks/tasksTypes';\nimport Card from '../../../components/Card/Card';\nimport Chip from '../../../components/Chip/Chip';\nimport capitalize from '../../../../utils/formatters';\nimport DocumentIcon from '../../../icons/document.svg';\nimport AttachmentPreview from '../../../components/AttachmentPreview/AttachmentPreview';\nimport useMessages from '../../../hooks/useMessages';\nimport CommentsList from '../../../components/CommentsList/CommentsList';\n\ninterface Props {\n  task: FullTask,\n}\n\nconst MainTaskCard = ({ task }: Props) => {\n  const getMessage = useMessages();\n  const {\n    title, createdAt, estimatedStartTime, estimatedFinishTime, category, description, attachments, status,\n  } = task;\n\n  return (\n    <Card className=\"col-span-full lg:col-span-9\">\n      <div className=\"border-b py-3\">\n        <div className=\"flex justify-between\">\n          <h4 className=\"text-header-xs md:text-header-sm inline mr-6\">{title}</h4>\n          <div className=\"flex flex-wrap justify-end\">\n            <Chip chipStyle=\"ghost\" className=\"mb-1 md:mb-0\" tooltipText={getMessage('tasks.task.createdAt')} screenReaderOnlyText=\"Data utworzenia\">\n              {createdAt && format(new Date(createdAt), 'dd-MM-yyyy')}\n            </Chip>\n            {(estimatedStartTime || estimatedFinishTime) && (\n              <Chip chipStyle=\"ghost\" className=\"ml-3 mb-1 md:mb-0\" tooltipText={getMessage('tasks.task.estimatedStart.estimatedEnd')}>\n                  {estimatedStartTime && `${getMessage('tasks.date.from')} ${format(new Date(estimatedStartTime), 'dd-MM-yyyy')}`}\n                  {' '}\n                  {estimatedFinishTime && `${getMessage('tasks.date.until')} ${format(new Date(estimatedFinishTime), 'dd-MM-yyyy')}`}\n              </Chip>\n            )}\n            <Chip chipStyle=\"primary\" className=\"ml-3 mb-1 md:mb-0\" screenReaderOnlyText=\"Status\">\n              {status?.name && capitalize(status.name)}\n            </Chip>\n          </div>\n        </div>\n        <div className=\"flex mt-2 text-text-lg-medium\">\n          <div className=\"flex mr-4 text-main\">\n            <DocumentIcon className=\"stroke-current\" />\n            {category && (\n              <p className=\"inline-block ml-1\">\n                <span className=\"visually-hidden\">Kategoria</span>\n                {capitalize(category.name)}\n              </p>\n            )}\n          </div>\n        </div>\n        <p className=\"text-typography-dark text-text-lg-medium my-7 whitespace-pre-line\">{description}</p>\n        <div className=\"my-9\">\n          {attachments?.length > 0 && (\n            <ol className=\"flex flex-wrap\">\n              {attachments?.map(({\n                filename, path, contentType, description,\n              }) => (\n                <AttachmentPreview filename={filename} path={path} contentType={contentType} description={description} key={path} />))}\n            </ol>\n          )}\n        </div>\n      </div>\n      <h3 className=\"inline-block my-5 text-text-lg-semibold md:text-title-semibold\">{getMessage('tasks.task.comments.discussion')}</h3>\n      <CommentsList taskId={task.id} comments={task.comments} publicComment={false} />\n    </Card>\n  );\n};\n\nexport default MainTaskCard;\n", "import * as React from 'react';\nimport DesktopInfoCard from '../../../../components/InfoCard/DesktopInfoCard/DesktopInfoCard';\nimport TaskInfoCard from './TaskInfoCard';\nimport { FullTask } from '../../../../api/modules/tasks/tasksTypes';\n\ninterface Props {\n  task: FullTask,\n}\n\nconst TaskDesktopInfoCard = ({ task }: Props) => (\n  <DesktopInfoCard>\n    <TaskInfoCard task={task} />\n  </DesktopInfoCard>\n);\n\nexport default TaskDesktopInfoCard;\n", "import * as React from 'react';\nimport {\n  useCallback, useMemo, useEffect, useState,\n} from 'react';\nimport DatePicker, { DateObject } from 'react-multi-date-picker';\nimport classNames from 'classnames';\nimport { FetchBaseQueryError } from '@reduxjs/toolkit/dist/query';\nimport { SerializedError } from '@reduxjs/toolkit';\nimport {\n  FullTask, TaskCategory, TaskStatus,\n} from '../../../../api/modules/tasks/tasksTypes';\nimport {\n  useGetEmployeesQuery,\n  useGetTicketQuery,\n  useGetTaskCategoriesQuery,\n  useGetTaskStatusesQuery,\n  usePostChangeTaskMutation, useGetDocumentQuery,\n} from '../../../../api/appApi';\nimport { InputLabel, InputError } from '../../../../components/FormInputs/InputLabel';\nimport { Select } from '../../../../components/FormInputs/inputs/FormSelect';\nimport useMessages, { useMonthsAndWeekDays } from '../../../../hooks/useMessages';\nimport SearchableDropdown from '../../../../components/SearchableDropdown/SearchableDropdown';\nimport capitalize from '../../../../../utils/formatters';\nimport { inputDefaultStyles } from '../../../../components/FormInputs/inputs/FormInput';\nimport { FormNotice } from '../../../../components/FormNotice/FormNotice';\nimport { EmployeeShowTicketData } from '../../../../api/modules/tickets/ticketsTypes';\nimport ConnectedTicketSection from './ConnectedTicketSection';\nimport ConnectedDocumentSection from './ConnectedDocumentSection';\nimport CommissionSection from './ConnectedCommissionSection';\n\nimport useTenantlessMode from '../../../../hooks/useTenantlessMode';\n\ninterface Props {\n  task: FullTask,\n}\n\n// eslint-disable-next-line max-len\nconst isFetchBaseQueryError = (error: SerializedError | FetchBaseQueryError): error is FetchBaseQueryError => (error as FetchBaseQueryError).status !== undefined;\n\nconst isDateValid = (value: string) => {\n  const strings = value.split('-');\n  const numbers = strings.map(Number);\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  const [day, month, year] = numbers;\n\n  if (value && numbers.some((number) => Number.isNaN(number))) {\n    return false; // in case user enter something other than digits\n  }\n\n  if (month > 12 || month < 0) return false;\n  if (day < 0 || day > 31) return false;\n  if (year < 0) return false;\n  if (strings.some((val: string) => val.startsWith('00'))) return false;\n\n  return true;\n};\n\nconst TaskInfoCard = ({ task }: Props) => {\n  const [startDate, setStartDate] = useState<null | Date>(null);\n  const [finishDate, setFinishDate] = useState<null | Date>(null);\n  const [realizerState, setRealizerState] = useState<string | null>(null);\n  const [backendErrors, setBackendErrors] = useState({ errors: [] as string[], isDateError: false });\n\n  const getMessage = useMessages();\n  const tenantlessMode = useTenantlessMode();\n  const { months, weekDays } = useMonthsAndWeekDays();\n\n  const { data: ticketData } = useGetTicketQuery(task.ticketId, { skip: !task.ticketId || tenantlessMode });\n  const { data: document } = useGetDocumentQuery(task.documentId, { skip: !task.documentId });\n\n  const { data: categories } = useGetTaskCategoriesQuery();\n  const { data: statuses } = useGetTaskStatusesQuery();\n  const [postChange, postChangeResult] = usePostChangeTaskMutation();\n  const {\n    status, category, realizer, id, startedAt, finishedAt,\n  } = task;\n\n  useEffect(() => {\n    if (startedAt) setStartDate(new Date(startedAt));\n    if (finishedAt) setFinishDate(new Date(finishedAt));\n    if (realizer) setRealizerState(realizer);\n  }, [startedAt, finishedAt, realizer]);\n\n  const ticket = ticketData as EmployeeShowTicketData;\n\n  const statusSelectOptions = useMemo(() => (statuses || []).map((status: TaskStatus) => ({\n    value: status.id,\n    optionLabel: capitalize(status.name),\n  })), [statuses]);\n\n  const categoryOptionsValues = useMemo(() => categories?.map((category: TaskCategory) => ({\n    value: category.id,\n    optionLabel: capitalize(category.name),\n  })), [categories]);\n\n  const changeParam = useCallback((paramName: string, paramValue: string | null): void => {\n    postChange({\n      tasks: {\n        [id]: {\n          [paramName]: paramValue,\n        },\n      },\n    });\n  }, [id]);\n\n  useEffect(() => {\n    if (postChangeResult.status === 'fulfilled') {\n      setBackendErrors({\n        errors: [],\n        isDateError: false,\n      });\n    } else if (postChangeResult.status === 'rejected') {\n      /* @ts-ignore */\n      const errors = postChangeResult.error.data?.errors || [];\n      const errorsArray = Array.isArray(errors) ? errors : [errors];\n      setBackendErrors({\n        errors: errorsArray,\n        isDateError: errorsArray.filter((error) => error.includes('Data')).length > 0,\n      });\n    }\n  }, [postChangeResult]);\n\n  return (\n    <>\n      <section className=\"border-b pb-4 tablet:flex tablet:w-full tablet:mb-4\">\n        {postChangeResult.isError && isFetchBaseQueryError(postChangeResult.error) && (typeof (postChangeResult.error.status) !== 'number') && (\n          <FormNotice type=\"error\" message={getMessage('form.error')} />\n        )}\n        <div className=\"tablet:mr-5 tablet:w-1/5\">\n          <InputLabel\n            label={getMessage('tasks.task.status')}\n          />\n          <Select\n            selectOptions={statusSelectOptions}\n            onChange={(id) => changeParam('status_id', id)}\n            value={status.id}\n            inputClassName=\"mb-4\"\n          />\n        </div>\n        <div className=\"tablet:mr-5 tablet:w-1/5\">\n          <InputLabel\n            label={getMessage('tasks.task.category')}\n          />\n          {categoryOptionsValues && (\n            <Select\n              selectOptions={categoryOptionsValues}\n              onChange={(id) => changeParam('category_id', id)}\n              value={category.id}\n            />\n          )}\n        </div>\n        <div className=\"tablet:mr-5 tablet:w-1/5\">\n          <InputLabel\n            label={getMessage('tasks.task.realizer')}\n            showReset={!!realizerState}\n            resetButtonText={getMessage('remove')}\n            onReset={() => {\n              changeParam('realizer_id', null);\n              setRealizerState(null);\n            }}\n          />\n          <SearchableDropdown\n            className=\"w-full\"\n            query={useGetEmployeesQuery}\n            onSelect={(id) => changeParam('realizer_id', id)}\n            initialState={realizerState}\n            ariaLabel={getMessage('form.ariaLabel.realizer')}\n          />\n        </div>\n        <div className=\"tablet:mr-5 tablet:w-1/5\">\n          <InputLabel\n            label={getMessage('tasks.task.startedAt')}\n            id=\"started_at\"\n            showReset={!!startDate}\n            resetButtonText={getMessage('remove')}\n            onReset={() => {\n              setStartDate(null);\n              changeParam('started_at', null);\n            }}\n          />\n          <DatePicker\n            id=\"started_at\"\n            value={startDate || null}\n            months={months}\n            weekDays={weekDays}\n            weekStartDayIndex={1}\n            format=\"DD-MM-YYYY\"\n            inputClass={classNames(\n              'w-full',\n              inputDefaultStyles,\n              { 'border-interactions-input-error border-2': backendErrors.isDateError },\n            )}\n            className=\"red\"\n            containerClassName=\"w-full\"\n            onOpenPickNewDate={false}\n            onChange={(\n              date: DateObject,\n              { input, isTyping }: { input: HTMLInputElement, isTyping: boolean },\n            ) => {\n              if (!isTyping) {\n                if (input.value.length === 0) {\n                  // user clears input using keyboard\n                  setStartDate(null);\n                  changeParam('started_at', null);\n                } else {\n                  // user selects the date from the calendar\n                  return changeParam('started_at', date?.format('YYYY-MM-DD'));\n                }\n              }\n\n              if (isDateValid(input.value)) {\n                return changeParam('started_at', date?.format('YYYY-MM-DD'));\n              }\n              return false;\n            }}\n          />\n        </div>\n        <div className=\"tablet:mr-5 tablet:w-1/5\">\n          <InputLabel\n            label={getMessage('tasks.task.finishedAt')}\n            id=\"finished_at\"\n            showReset={!!finishDate}\n            resetButtonText={getMessage('remove')}\n            onReset={() => {\n              setFinishDate(null);\n              changeParam('finished_at', null);\n            }}\n          />\n          <DatePicker\n            id=\"finished_at\"\n            value={finishDate || null}\n            months={months}\n            weekDays={weekDays}\n            weekStartDayIndex={1}\n            format=\"DD-MM-YYYY\"\n            inputClass={classNames(\n              'w-full',\n              inputDefaultStyles,\n              { 'border-interactions-input-error border-2': backendErrors.isDateError },\n            )}\n            className=\"red\"\n            containerClassName=\"w-full\"\n            onOpenPickNewDate={false}\n            onChange={(\n              date: DateObject,\n              { input, isTyping }: { input: HTMLInputElement, isTyping: boolean },\n            ) => {\n              if (!isTyping) {\n                if (input.value.length === 0) {\n                  // user clears input using keyboard\n                  setFinishDate(null);\n                  changeParam('finished_at', null);\n                } else {\n                  // user selects the date from the calendar\n                  return changeParam('finished_at', date?.format('YYYY-MM-DD'));\n                }\n              }\n\n              if (isDateValid(input.value)) {\n                return changeParam('finished_at', date?.format('YYYY-MM-DD'));\n              }\n              return false;\n            }}\n          />\n          { /* @ts-ignore */}\n          {backendErrors && backendErrors.errors?.map((item) => <InputError message={item} />)}\n        </div>\n      </section>\n      <CommissionSection task={task} />\n      {!tenantlessMode && ticket && <ConnectedTicketSection task={task} ticket={ticket} />}\n      {document && <ConnectedDocumentSection task={task} document={document} />}\n    </>\n  );\n};\n\nexport default TaskInfoCard;\n", "import * as React from 'react';\nimport { useIntl } from 'react-intl';\nimport { useMemo } from 'react';\nimport { EmployeeShowTicketData } from '../../../../api/modules/tickets/ticketsTypes';\nimport useMessages from '../../../../hooks/useMessages';\nimport useHomeownerAssociationsMode from '../../../../hooks/useHomeownerAssociationsMode';\nimport { FullTask, Task } from '../../../../api/modules/tasks/tasksTypes';\nimport { tasksLabel } from '../../../../../utils/common';\n\ninterface Props {\n  task: FullTask,\n  ticket: EmployeeShowTicketData,\n}\n\n\n\nconst ConnectedTicketSection = ({ task, ticket }: Props) => {\n  const intl = useIntl();\n  const getMessage = useMessages();\n  const hoaMode = useHomeownerAssociationsMode();\n\n  const connectedTasks = useMemo(\n    () => ticket?.tasks?.filter((ticketsTask: Task) => ticketsTask.id !== task.id) || [],\n    [ticket, task],\n  );\n\n  return (\n    <>\n      <section>\n        <table className=\"text-text-md-semibold text-typography-dark w-full mt-4 tablet:mt-0\">\n          <tbody>\n            <tr>\n              <td\n                colSpan={2}\n                className=\"pt-2 tablet:pt-0\"\n              >\n                <a\n                  className=\"text-main cursor-pointer underline hover:text-hover\"\n                  href={`/zgloszenia/${ticket.id}`}\n                  aria-label={intl.formatMessage(\n                    { id: 'tasks.task.goToTicket' },\n                    { ticketNumber: ticket.ticketNumber },\n                  )}\n                >\n                  {`${getMessage('tasks.task.ticket')} nr ${ticket.ticketNumber}`}\n                </a>\n              </td>\n            </tr>\n            <tr>\n              <td className=\"pt-2\">{getMessage('tasks.task.ticket.creator')}</td>\n              <td className=\"text-text-md-medium pt-2 text-right\">{ticket.reporter}</td>\n            </tr>\n            {hoaMode && ticket.homeownerAssociationName && (\n            <tr>\n              <td className=\"pt-2\">{getMessage('tasks.task.ticket.homeownerAssociation')}</td>\n              <td className=\"text-text-md-medium pt-2 text-right\">{ticket.homeownerAssociationName}</td>\n            </tr>\n            )}\n            {ticket.venueAddress && (\n            <tr>\n              <td className=\"pt-2\">{getMessage('tasks.task.ticket.venue')}</td>\n              <td className=\"text-text-md-medium pt-2 text-right\">{ticket.venueAddress}</td>\n            </tr>\n            )}\n          </tbody>\n        </table>\n      </section>\n      {connectedTasks && connectedTasks.length > 0 && (\n        <section className=\"text-typography-dark mb-4 lg:mb-0\">\n          <p className=\"border-t tablet:border-none mt-4 pt-4 tablet:pt-0 tablet:mt-0 text-text-md-semibold\">\n            { intl.formatMessage(\n              {id : 'tickets.ticket.relatedTasks'} , \n              { tasksCount: connectedTasks.length, taskLabel: tasksLabel(connectedTasks.length) },\n            )}\n          </p>\n          {connectedTasks.map((task) => (\n            <a\n              key={task.id}\n              className=\"underline cursor-pointer text-text-md-medium block hover:text-hover mobile:select-none\"\n              href={`/zadania/${task.id}`}\n              tabIndex={0}\n              aria-label={intl.formatMessage(\n                { id: 'tasks.task.goToTask' },\n                { taskNumberTitle: `${task.taskNumber} ${task.title}` },\n              )}\n            >\n              {`${task.taskNumber} ${task.title}`}\n            </a>\n          ))}\n        </section>\n      )}\n    </>\n  );\n};\n\nexport default ConnectedTicketSection;\n", "import * as React from 'react';\nimport { useIntl } from 'react-intl';\nimport { useMemo } from 'react';\nimport { FullTask, Task } from '../../../../api/modules/tasks/tasksTypes';\nimport { FullDocument } from '../../../../api/modules/documents/documentsTypes';\nimport useMessages from '../../../../hooks/useMessages';\nimport { tasksLabel } from '../../../../../utils/common';\n\ninterface Props {\n  task: FullTask,\n  document: FullDocument,\n}\n\nconst ConnectedDocumentSection = ({ task, document }: Props) => {\n  const intl = useIntl();\n  const getMessage = useMessages();\n\n  const connectedTasks = useMemo(\n    () => document?.tasks?.filter((documentsTask: Task) => documentsTask.id !== task.id) || [],\n    [document, task],\n  );\n\n  return (\n    <>\n      <section>\n        <table className=\"text-text-md-semibold text-typography-dark w-full mt-4 tablet:mt-0\">\n          <tbody>\n            <tr>\n              <td\n                colSpan={2}\n                className=\"pt-2 tablet:pt-0\"\n              >\n                <a\n                  className=\"text-main cursor-pointer underline hover:text-hover\"\n                  href={`/dokumenty/${document.id}`}\n                  aria-label={intl.formatMessage(\n                    { id: 'tasks.task.goToDocument' },\n                    { documentNumber: document.documentNumber },\n                  )}\n                >\n                  {`${getMessage('tasks.task.document')} nr ${document.documentNumber}`}\n                </a>\n              </td>\n            </tr>\n            <tr>\n              <td className=\"pt-2\">{getMessage('tasks.task.document.title')}</td>\n              <td className=\"text-text-md-medium pt-2 text-right\">{document.title}</td>\n            </tr>\n            {document?.creator?.name && (\n              <tr>\n                <td className=\"pt-2\">{getMessage('tasks.task.document.creator')}</td>\n                <td className=\"text-text-md-medium pt-2 text-right\">{document.creator.name}</td>\n              </tr>\n            )}\n            {document?.journal?.name && (\n              <tr>\n                <td className=\"pt-2\">{getMessage('tasks.task.document.journal')}</td>\n                <td className=\"text-text-md-medium pt-2 text-right\">{document.journal.name}</td>\n              </tr>\n            )}\n          </tbody>\n        </table>\n      </section>\n      {connectedTasks && connectedTasks.length > 0 && (\n        <section className=\"text-typography-dark mb-4 lg:mb-0\">\n          <p className=\"border-t tablet:border-none mt-4 pt-4 tablet:pt-0 tablet:mt-0 text-text-md-semibold\">\n            {intl.formatMessage(\n              { id: 'documents.document.relatedTasks' },\n              { tasksCount: connectedTasks.length, taskLabel: tasksLabel(connectedTasks.length)  },\n            )}\n          </p>\n          {connectedTasks.map((task) => (\n            <a\n              key={task.id}\n              className=\"underline cursor-pointer text-text-md-medium block hover:text-hover mobile:select-none\"\n              href={`/zadania/${task.id}`}\n              tabIndex={0}\n              aria-label={intl.formatMessage(\n                { id: 'tasks.task.goToTask' },\n                { taskNumberTitle: `${task.taskNumber} ${task.title}` },\n              )}\n            >\n              {`${task.taskNumber} ${task.title}`}\n            </a>\n          ))}\n        </section>\n      )}\n    </>\n  );\n};\n\nexport default ConnectedDocumentSection;\n", "import * as React from 'react';\nimport { useState } from 'react';\n\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { FormSelect } from '../../../../components/FormInputs';\n\nimport useMessages from '../../../../hooks/useMessages';\nimport { FullTask, postTaskCommissionsPayload } from '../../../../api/modules/tasks/tasksTypes';\nimport Button from '../../../../components/Button/Button';\nimport {\n  usePostTaskCommissionMutation,\n  useGetPortalProServicesQuery,\n  usePutTaskCommissionsMutation,\n} from '../../../../api/appApi';\nimport FormSearchableDropdown from '../../../../components/FormInputs/FormSearchableDropdown';\nimport { InputLabel } from '../../../../components/FormInputs/InputLabel';\nimport { usePermissions } from '../../../../hooks/usePermissions';\n\nimport PortalProPopup from './PortalProPopup';\n\ninterface Props {\n  task: FullTask,\n}\n\nconst ConnectedCommissionSection = ({ task }: Props) => {\n  const methods = useForm()\n  const getMessage = useMessages();\n  const [updateTaskCommissionsData] = usePutTaskCommissionsMutation();\n  const { isModuleEnabled } = usePermissions();\n  const [popupOpen, setPopupOpen] = useState(false);\n\n\n  const onStatusCheckSubmit = () => {\n    updateTaskCommissionsData({\n      id: task.id\n    });\n    methods.reset();\n  };\n\n  const onPopupOpen = () => {\n    setPopupOpen(true);\n  }\n\n  if (!isModuleEnabled('portal_pro')) {\n    return null;\n  }\n\n  return (\n    <>\n      {task.ticketId !== undefined &&\n        <section>\n          {task.commissions.length === 0 &&\n            <div>\n              <FormProvider {...methods}>\n                <form onSubmit={methods.handleSubmit(onPopupOpen)} className=\"w-full pt-2 text-sm flex flex-col\">\n                  <Button type=\"submit\" className=\"mobile:w-full mobile:mt-4\">{getMessage('tasks.taskCommission.apiSubmit')}</Button>\n                </form>\n                <PortalProPopup\n                  isOpen={popupOpen}\n                  task={task}\n                  onClose={() => setPopupOpen(false)}\n                  setPopupOpen={setPopupOpen}\n                  />\n              </FormProvider>\n            </div>\n          }\n          {task.commissions.length > 0 && task.commissions.map((commission) => (\n            <div id={commission.id}>\n              <p className='text-typography-dark mb-4 lg:mb-1 bg-green-200 py-2 px-4 rounded-md'>{commission.provider}</p>\n              <div className='text-typography-dark mb-4 lg:mb-1 bg-background-light py-2 px-4 rounded-md whitespace-pre-line'>\n                {getMessage(`tasks.taskCommission.status.${commission.internalCommissionStatus}`)}\n              </div>\n              {commission?.portalPro?.jobTrackingUrl && <div className='text-typography-dark mb-4 lg:mb-1 bg-green-200 py-2 px-4 rounded-md whitespace-pre-line'>\n                <a href={commission?.portalPro?.jobTrackingUrl} target=\"_blank\">{getMessage('tasks.taskCommission.jobTrackingUrl')}</a>\n              </div>\n              }\n              <FormProvider {...methods}>\n                <form onSubmit={methods.handleSubmit(onStatusCheckSubmit)} className=\"w-full pt-2 text-sm flex flex-col\">\n                  <Button type=\"submit\" className=\"mobile:w-full mobile:mt-4\">{getMessage('tasks.taskCommission.apiStatus')}</Button>\n                </form>\n              </FormProvider>\n            </div>\n          ))}\n        </section>}\n    </>\n  );\n};\n\nexport default ConnectedCommissionSection;\n", "import * as React from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport useMessages from '../../../../hooks/useMessages';\nimport Popup from '../../../../components/Popup/Popup';\nimport Button from '../../../../components/Button/Button';\n\nimport FormSearchableDropdown from '../../../../components/FormInputs/FormSearchableDropdown';\nimport { FormTextarea, FormDatePicker, FormInput } from '../../../../components/FormInputs';\nimport { InputLabel } from '../../../../components/FormInputs/InputLabel';\nimport { FullTask, postTaskCommissionsPayload } from '../../../../api/modules/tasks/tasksTypes';\n\nimport {\n    usePostTaskCommissionMutation,\n    useGetPortalProServicesQuery,\n} from '../../../../api/appApi';\n\ninterface Props {\n    isOpen: boolean,\n    task: FullTask,\n    onClose: () => void,\n    setPopupOpen: (val: boolean) => void,\n}\n\nconst PortalProPopup = ({\n    isOpen, onClose, task, setPopupOpen\n}: Props) => {\n\n    const methods = useForm();\n    const getMessage = useMessages();\n    const [postTaskCommissionsData] = usePostTaskCommissionMutation();\n\n    const onPostSubmit = (data: postTaskCommissionsPayload) => {\n        postTaskCommissionsData({\n            id: task.id,\n            payload: {\n                commission:\n                {\n                    provider: 'PortalPro',\n                    service_id: data.serviceId,\n                    description: data.description,\n                    street_address: data.streetAddress,\n                    postal_code: data.postalCode,\n                    city: data.city,\n                    contact_phone: data.contactPhone,\n                    contact_email: data.contactEmail,\n                    deadline: data.deadline,\n                    offer_limit: data.offerLimit,\n                }\n            }\n        });\n        methods.reset();\n\n        setPopupOpen(false);\n    };\n\n    return (\n        <Popup isOpen={isOpen}>\n            <div className=\"h-1/2 flex flex-col justify-around items-center w-full\">\n                <p className=\"mb-8 text-center text-lg font-semibold\">Edytuj dane do PortalPro</p>\n                <FormProvider {...methods}>\n                    <form onSubmit={methods.handleSubmit(onPostSubmit)} className=\"lg-w-full mobile:w-3/4 pt-2 text-sm flex flex-col\">\n                        <InputLabel label={getMessage('tasks.taskCommission.form.serviceId')} autofocus />\n                        <FormSearchableDropdown\n                            label=\" \"\n                            className=\"w-full\"\n                            id=\"serviceId\"\n                            required={true}\n                            query={useGetPortalProServicesQuery}\n                        />\n\n                        <FormTextarea\n                            label={getMessage('tasks.taskCommission.form.description')}\n                            inputClassName=\"mobile:w-72\"\n                            id=\"description\"\n                            defaultValue={task.description}\n                            rows={4}\n                            options={{ required: getMessage('tasks.taskCommission.form.error.required') }}\n                        />\n\n                        <div className=\"flex mobile:flex-col\">\n                            <div className=\"flex-none px-1 md:flex-col\">\n                                <FormInput\n                                    type=\"text\"\n                                    label={getMessage('tasks.taskCommission.form.contactEmail')}\n                                    className=\"mt-1 w-full\"\n                                    id=\"contactEmail\"\n                                    defaultValue={task.contactEmail}\n                                    options={{ required: getMessage('tasks.taskCommission.form.error.required') }}\n\n                                />\n                            </div>\n                            <div className=\"flex-none px-1\">\n                                <FormInput\n                                    type=\"text\"\n                                    label={getMessage('tasks.taskCommission.form.contactPhone')}\n                                    className=\"mt-1 w-full\"\n                                    id=\"contactPhone\"\n                                    defaultValue={task.contactPhoneNumber}\n                                />\n                            </div>\n                        </div>\n\n                        <div className=\"flex mobile:flex-col\">\n                            <div className=\"flex-none px-1\">\n                                <FormInput\n                                    type=\"text\"\n                                    label={getMessage('tasks.taskCommission.form.streetAddress')}\n                                    className=\"mt-1 w-full\"\n                                    id=\"streetAddress\"\n                                    defaultValue={task.venueAddress}\n                                    options={{ required: getMessage('tasks.taskCommission.form.error.required') }}\n\n                                />\n                            </div>\n                            <div className=\"flex-none px-1\">\n                                <FormInput\n                                    type=\"text\"\n                                    label={getMessage('tasks.taskCommission.form.postalCode')}\n                                    className=\"mt-1 w-full\"\n                                    id=\"postalCode\"\n                                    defaultValue={task.venuePostalCode}\n                                />\n                            </div>\n\n                            <div className=\"flex-none px-1\">\n                                <FormInput\n                                    type=\"text\"\n                                    label={getMessage('tasks.taskCommission.form.city')}\n                                    className=\"mt-1 w-full\"\n                                    id=\"city\"\n                                    defaultValue={task.venueCity}\n                                    options={{ required: getMessage('tasks.taskCommission.form.error.required') }}\n                                />\n                            </div>\n                        </div>\n\n                        <div className=\"flex mobile:flex-col\">\n                            <div className=\"flex-none px-1\">\n                                <FormDatePicker\n                                    className=\"mt-1 w-full\"\n                                    id=\"deadline\"\n                                    minDate={new Date()}\n                                    label={getMessage('tasks.taskCommission.form.deadline')}\n                                />\n                            </div>\n                            <div className=\"flex-none px-1\">\n                                <FormDatePicker\n                                    className=\"mt-1 w-full\"\n                                    id=\"offerLimit\"\n                                    minDate={new Date()}\n                                    label={getMessage('tasks.taskCommission.form.offerLimit')}\n                                />\n                            </div>\n                        </div>\n\n                        <div className=\"flex mt-5 mobile:mt-2\">\n                            <div className=\"flex-none px-5 mobile:px-1\">\n                                <Button type=\"submit\" styleType=\"primary\">\n                                    {getMessage('tasks.taskCommission.form.submit')}\n                                </Button>\n                            </div>\n                            <div className=\"flex-none px-5 mobile:px-1\">\n                                <Button styleType=\"secondary\" onClick={onClose} size=\"small\">\n                                    {getMessage('tasks.taskCommission.form.close')}\n                                </Button>\n                            </div>\n                        </div>\n                    </form>\n                </FormProvider>\n            </div>\n        </Popup>\n    );\n};\n\nexport default PortalProPopup;\n", "import * as React from 'react';\nimport MobileInfoCard from '../../../../components/InfoCard/MobileInfoCard/MobileInfoCard';\nimport TaskInfoCard from './TaskInfoCard';\nimport { FullTask } from '../../../../api/modules/tasks/tasksTypes';\n\ninterface Props {\n  title?: string,\n  task: FullTask,\n}\n\nconst TaskMobileInfoCard = ({ title, task }: Props) => (\n  <MobileInfoCard title={title}>\n    <TaskInfoCard task={task} />\n  </MobileInfoCard>\n);\n\nexport default TaskMobileInfoCard;\n", "import * as React from 'react';\nimport { useMemo, useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport Layout from '../../components/Layout/Layout';\nimport PageHeader from '../../components/Layout/PageHeader';\nimport Tabs, { TabElement } from '../../components/Tabs/Tabs';\nimport ContentWrapper from '../../components/ContentWrapper/ContentWrapper';\nimport useMessages from '../../hooks/useMessages';\nimport UsersList from './UsersList/UsersList';\nimport Button from '../../components/Button/Button';\nimport FiltersIcon from '../../icons/filters.svg';\nimport { useAppSelector } from '../../hooks/reduxHooks';\nimport UsersFilters from './UsersFilters/UsersFilters';\nimport PlusIcon from '../../icons/plus.svg';\nimport UsersActivityLog from './UsersActivityLog/UsersActivityLog';\nimport UsersActivityLogFilters from './UsersActivityLog/UsersActivityLogFilters';\nimport { usePermissions } from '../../hooks/usePermissions';\n\ninterface Props {\n  tab: 'all' | 'workers' | 'activityLog';\n}\n\nconst UsersPage = ({ tab } : Props) => {\n  const getMessage = useMessages();\n  const navigate = useNavigate();\n  const hasFilterSet = useAppSelector((state) => !!state.app.filters.find((filter) => filter.id === 'usersTable'));\n  const [filtersOpen, setFiltersOpen] = useState(hasFilterSet);\n  const { checkRoleType } = usePermissions();\n\n  const tabs: TabElement[] = useMemo(() => [\n    {\n      label: getMessage('users.tabs.all'),\n      path: '/uzytkownicy',\n    },\n    {\n      label: getMessage('users.tabs.workers'),\n      path: '/uzytkownicy/pracownicy',\n    },\n    {\n      label: getMessage('users.tabs.activityLog'),\n      path: '/uzytkownicy/rejestr_zdarzen',\n    },\n  ], []);\n  checkRoleType('admin');\n\n  return (\n    <Layout currentPage=\"users\">\n      <PageHeader pageTitle={getMessage('users.header')} currentPage=\"users\">\n        <Button\n          Icon={FiltersIcon}\n          styleType=\"secondary\"\n          size=\"small\"\n          onClick={() => setFiltersOpen((filtersOpen) => !filtersOpen)}\n          className=\"mx-3 py-1 appearance-none\"\n        >\n          {getMessage('filters')}\n        </Button>\n        <Button\n          onClick={() => navigate('/uzytkownicy/nowy')}\n          className=\"py-1\"\n          size=\"small\"\n          Icon={PlusIcon}\n        >\n          {getMessage('users.newUser.create')}\n        </Button>\n      </PageHeader>\n      <Tabs tabElements={tabs} />\n      {filtersOpen && (\n        tab === 'activityLog' ? <UsersActivityLogFilters /> : <UsersFilters includeRoleType={tab === 'all'} />\n      )}\n      <ContentWrapper>\n        {tab === 'activityLog' ? <UsersActivityLog /> : <UsersList prefilter={tab} />}\n      </ContentWrapper>\n    </Layout>\n  );\n};\n\nexport default UsersPage;\n", "import * as React from 'react';\nimport { useEffect } from 'react';\nimport { useGetUsersAccountsQuery } from '../../../api/appApi';\nimport useMessages from '../../../hooks/useMessages';\nimport usePagination from '../../../hooks/usePagination';\nimport { TableBodyCell } from '../../../components/Table/Table';\nimport { FilterValues, TableId } from '../../../store/appSlice';\nimport TableContentPlaceholder from '../../../components/Table/TableContentPlaceholder';\nimport Chip from '../../../components/Chip/Chip';\nimport PaginationControls from '../../../components/Table/PaginationControls';\nimport ResponsiveTable, {\n  ResponsiveTableBody,\n  ResponsiveTableBodyRow,\n  ResponsiveTableHeader,\n} from '../../../components/Table/ResponsiveTable';\nimport useFilters from '../../../hooks/useFilters';\nimport useSortParams from '../../../hooks/useSortParams';\n\n\ninterface Props {\n  prefilter: 'all' | 'workers',\n}\n\nconst UsersList = ({ prefilter }: Props) => {\n  const [selectedPage, setSelectedPage] = usePagination('usersTable');\n  const { filterValues } = useFilters('usersTable');\n  const { sortParamsValues } = useSortParams('usersTable');\n  const filters: FilterValues = { ...filterValues };\n  const getMessage = useMessages();\n  if (prefilter === 'workers') filters.role_type = 'worker';\n\n  useEffect(() => {\n    setSelectedPage(1);\n  }, [prefilter]);\n\n  const { data } = useGetUsersAccountsQuery({\n    ...filters,\n    ...sortParamsValues,\n    page: selectedPage.toString(),\n  }, { refetchOnMountOrArgChange: true });\n\n  const ids = data?.accounts.map(({ id }) => id) || [];\n  const columnLabels = [\n    { label: 'users.column.id', id: 'external_id' },\n    { label: 'users.column.name', id: 'full_name' },\n    { label: 'users.column.login', id: 'login' },\n    { label: 'users.column.roles' },\n    { label: 'users.column.email', id: 'email' },\n    { label: 'users.column.active', id: 'active' },\n  ];\n\n  return (\n    <>\n      <ResponsiveTable className=\"col-span-full\">\n        {data?.accounts.length === 0\n          ? (\n            <TableContentPlaceholder />\n          ) : (\n            <>\n              <ResponsiveTableHeader ids={ids} columnLabels={columnLabels} tableName={'usersTable' as TableId} />\n              <ResponsiveTableBody>\n                {(data?.accounts || []).map(({\n                  externalId, fullName, login, roles, email, id, active,\n                }) => (\n                  <ResponsiveTableBodyRow\n                    key={id}\n                    className=\"border-b last:border-b-0\"\n                    clickable={({\n                      href: `/uzytkownicy/${id}`,\n                      ariaLabel: `Przejd\u017A do szczeg\u00F3\u0142ow na temat ${fullName} ${externalId || ''}`,\n                    })}\n                  >\n                    <TableBodyCell>{externalId}</TableBodyCell>\n                    <TableBodyCell>{fullName}</TableBodyCell>\n                    <TableBodyCell>{login}</TableBodyCell>\n                    <TableBodyCell>\n                      {roles.map((role) => (\n                        <Chip className=\"w-fit\" chipStyle=\"gray\" key={role}>\n                          {role}\n                        </Chip>\n                      ))}\n                    </TableBodyCell>\n                    <TableBodyCell>{email}</TableBodyCell>\n                    <TableBodyCell>{active ? getMessage('users.values.status.active') : getMessage('users.values.status.inactive')}</TableBodyCell>\n                  </ResponsiveTableBodyRow>\n                ))}\n              </ResponsiveTableBody>\n            </>\n          )}\n\n      </ResponsiveTable>\n      {data?.metadata && (\n        <PaginationControls\n          className=\"col-span-full\"\n          selectedPage={selectedPage}\n          setSelectedPage={setSelectedPage}\n          paginationMetadata={data.metadata}\n        />\n      )}\n    </>\n  );\n};\n\nexport default UsersList;\n", "import * as React from 'react';\nimport { useMemo } from 'react';\nimport useMessages from '../../../hooks/useMessages';\nimport Filters from '../../../components/Filters/Filters';\nimport { roleTypes } from '../../../../utils/permissions';\nimport { FilterConfig } from '../../../components/FilterInput/FilterInput';\nimport useTenantlessMode from '../../../hooks/useTenantlessMode';\n\ninterface Props {\n  includeRoleType: boolean\n}\n\nconst UsersFilters = ({ includeRoleType }: Props) => {\n  const getMessage = useMessages();\n  const tenantlessMode = useTenantlessMode();\n\n  const roleTypeOptionsValues = roleTypes\n    .filter((roleType) => !tenantlessMode || !['tenant', 'member'].includes(roleType))\n    .map((roleType) => ({\n      value: roleType,\n      optionLabel: getMessage(`permissions.roleType.${roleType}`),\n    }));\n\n  const statusOptionValues = [\n    {\n      value: 'true',\n      optionLabel: getMessage('users.values.status.active'),\n    },\n    {\n      value: 'false',\n      optionLabel: getMessage('users.values.status.inactive'),\n    },\n  ];\n\n  const filterConfig = useMemo(() => {\n    const filters: FilterConfig[] = [\n      {\n        type: 'text',\n        id: 'login_option_search',\n        label: getMessage('users.filter.login'),\n        ariaLabel: 'Szukaj po loginie',\n      },\n      {\n        type: 'text',\n        id: 'full_name',\n        label: getMessage('users.filter.fullName'),\n        ariaLabel: 'Szukaj po u\u017Cytkowniku',\n      },\n      {\n        type: 'select',\n        id: 'active',\n        label: getMessage('users.filter.status'),\n        ariaLabel: 'Szukaj wg statusu',\n        selectOptions: statusOptionValues,\n      },\n    ];\n    if (includeRoleType) {\n      filters.push({\n        type: 'multiselect',\n        id: 'role_type',\n        label: getMessage('users.filter.roleType'),\n        selectOptions: roleTypeOptionsValues,\n      });\n    }\n    return filters;\n  }, [includeRoleType, tenantlessMode]);\n\n  return (\n    <Filters\n      filterId=\"usersTable\"\n      filterFields={filterConfig}\n    />\n  );\n};\n\nexport default UsersFilters;\n", "import * as React from 'react';\nimport { useMemo, useEffect } from 'react';\nimport format from 'date-fns/format';\nimport { useGetActivityLogQuery } from '../../../api/appApi';\nimport { TableBodyCell } from '../../../components/Table/Table';\nimport ResponsiveTable, { ResponsiveTableHeader, ResponsiveTableBody, ResponsiveTableBodyRow } from '../../../components/Table/ResponsiveTable';\nimport Chip from '../../../components/Chip/Chip';\nimport PaginationControls from '../../../components/Table/PaginationControls';\nimport useMessages from '../../../hooks/useMessages';\nimport usePagination from '../../../hooks/usePagination';\nimport useSortParams from '../../../hooks/useSortParams';\nimport useFilters from '../../../hooks/useFilters';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport { TableId } from '../../../store/appSlice';\nimport TableContentPlaceholder from '../../../components/Table/TableContentPlaceholder';\nimport useTenantlessMode from '../../../hooks/useTenantlessMode';\n\nconst UsersActivityLog = () => {\n  const getMessage = useMessages();\n  const tenantlessMode = useTenantlessMode();\n  const [selectedPage, setSelectedPage] = usePagination('usersActivityLog');\n  const { sortParamsValues } = useSortParams('usersActivityLog');\n  const { filterValues } = useFilters('usersActivityLog');\n  const { hasRoleType } = usePermissions();\n\n  useEffect(() => {\n    setSelectedPage(1);\n  }, []);\n\n  const { data } = useGetActivityLogQuery({\n    page: selectedPage.toString(),\n    ...sortParamsValues,\n    ...filterValues,\n  });\n\n  const ids = data?.events.map(({ date }) => date) || [];\n\n  const columnLabels = useMemo(() => {\n    const columns = [\n      {\n        label: 'users.activityLog.date',\n        id: 'created_at',\n      },\n      { label: 'users.activityLog.id' },\n      { label: 'users.activityLog.fullName' },\n      { label: 'users.activityLog.role' },\n      { label: 'users.activityLog.description' },\n      { label: 'users.activityLog.menuOption' },\n      ...tenantlessMode ? [] : [{ label: 'users.activityLog.venue' }],\n    ];\n    return columns;\n  }, [tenantlessMode]);\n\n  return (\n    <>\n      <ResponsiveTable className=\"col-span-full\">\n        {data?.events && data.events.length === 0 ? (<TableContentPlaceholder />) : (\n          <>\n            <ResponsiveTableHeader ids={ids} columnLabels={columnLabels} tableName={'usersActivityLog' as TableId} />\n            <ResponsiveTableBody>\n              {data?.events.map(({\n                date, description, menuOption, venue, externalId, fullName, roles, url,\n              }) => (\n                <ResponsiveTableBodyRow key={date} className=\"border-b last:border-b-0 border-separate font-medium\">\n                  <TableBodyCell>\n                    <Chip chipStyle=\"ghost\" className=\"w-fit whitespace-nowrap\">\n                      {format(new Date(date), 'dd-MM-yyyy / HH:mm')}\n                    </Chip>\n                  </TableBodyCell>\n                  <TableBodyCell className=\"w-fit text-typography-black\">{externalId}</TableBodyCell>\n                  <TableBodyCell className=\"w-fit text-typography-black whitespace-nowrap\">{fullName}</TableBodyCell>\n                  <TableBodyCell className=\"w-fit text-typography-black\">\n                    <div className=\"mobile:flex flex-wrap\">\n                      {roles?.map((roleItem, index) => (\n                        <Chip key={`${roleItem}-${index + 1}`} chipStyle=\"gray\" className=\"w-fit mobile:mr-1 mobile:mb-1\">\n                          {roleItem}\n                        </Chip>\n                      ))}\n                    </div>\n                  </TableBodyCell>\n                  {hasRoleType('worker') ? (\n                    <>\n                      {url && <TableBodyCell className=\"w-fit text-typography-blue mobile:whitespace-pre-wrap\"><a href={url} className=\"hover:text-hover hover:underline\">{description}</a></TableBodyCell>}\n                      {!url && <TableBodyCell className=\"w-fit text-typography-black mobile:whitespace-pre-wrap\">{description}</TableBodyCell>}\n                    </>\n                  ) : (\n                    <TableBodyCell className=\"w-fit text-typography-black mobile:whitespace-pre-wrap\">{description}</TableBodyCell>\n                  )}\n                  <TableBodyCell className=\"w-fit text-typography-dark\">{getMessage(`users.activityLog.menuOption.${menuOption}`)}</TableBodyCell>\n                  {!tenantlessMode && <TableBodyCell className=\"w-fit text-typography-dark\">{venue}</TableBodyCell>}\n                </ResponsiveTableBodyRow>\n              ))}\n            </ResponsiveTableBody>\n\n          </>\n        )}\n      </ResponsiveTable>\n      {data?.metadata && (\n        <PaginationControls\n          className=\"col-span-full\"\n          selectedPage={selectedPage}\n          setSelectedPage={setSelectedPage}\n          paginationMetadata={data.metadata}\n        />\n      )}\n    </>\n  );\n};\n\nexport default UsersActivityLog;\n", "import * as React from 'react';\nimport { useMemo } from 'react';\nimport { activityCategory } from '../../../api/modules/user/userTypes';\nimport useMessages from '../../../hooks/useMessages';\nimport Filters from '../../../components/Filters/Filters';\nimport { FilterConfig } from '../../../components/FilterInput/FilterInput';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport useTenantlessMode from '../../../hooks/useTenantlessMode';\n\nconst UsersActivityLogFilters = () => {\n  const getMessage = useMessages();\n  const { isModuleEnabled } = usePermissions();\n  const tenantlessMode = useTenantlessMode();\n\n  const categoryOptionValues = useMemo(() => activityCategory.filter(\n    (category) => category !== 'announcements' || (!tenantlessMode && isModuleEnabled('announcements')),\n  ).map((category) => ({\n    value: category as string,\n    optionLabel: getMessage(`users.activityLog.menuOption.${category}`),\n  })), [activityCategory, tenantlessMode, isModuleEnabled]);\n\n  const filterFields: FilterConfig[] = [\n    {\n      type: 'dateRange',\n      id: 'from_date',\n      toDateId: 'to_date',\n      label: getMessage('users.activityLog.date'),\n    },\n    {\n      type: 'multiselect',\n      id: 'category',\n      label: getMessage('users.activityLog.menuOption'),\n      selectOptions: categoryOptionValues,\n    },\n    {\n      type: 'text',\n      id: 'account_search',\n      label: getMessage('users.activityLog.fullName'),\n      ariaLabel: 'Szukaj po imieniu i nazwisku',\n    },\n  ];\n\n  return (\n    <Filters\n      filterId=\"usersActivityLog\"\n      filterFields={filterFields}\n    />\n  );\n};\n\nexport default UsersActivityLogFilters;\n", "import * as React from 'react';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport PageHeader from '../../../components/Layout/PageHeader';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport Layout from '../../../components/Layout/Layout';\nimport useMessages from '../../../hooks/useMessages';\nimport NewUserForm from './NewUserForm';\n\nconst NewUserPage = () => {\n  const getMessage = useMessages();\n  const { checkRoleType } = usePermissions();\n\n  checkRoleType('admin');\n\n  return (\n    <Layout currentPage=\"users\">\n      <PageHeader pageTitle={getMessage('users.newUser.header')} currentPage=\"users\" path=\"/uzytkownicy\" />\n      <ContentWrapper>\n        <NewUserForm />\n      </ContentWrapper>\n    </Layout>\n  );\n};\n\nexport default NewUserPage;\n", "/* eslint-disable react/jsx-props-no-spreading */\nimport * as React from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useEffect, useMemo, useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport Card from '../../../components/Card/Card';\nimport { FormInput, FormMultiSelect } from '../../../components/FormInputs';\nimport Button from '../../../components/Button/Button';\nimport useMessages from '../../../hooks/useMessages';\nimport { CreateUserFormData } from '../../../api/modules/user/userTypes';\nimport {\n  useGetAccessGroupsQuery,\n  useGetCompanySettingsQuery,\n  useGetRolesForUserQuery,\n  usePostUserAccountMutation,\n  useGetUserJournalsQuery,\n} from '../../../api/appApi';\nimport { SelectOption } from '../../../components/FormInputs/inputs/FormSelect';\nimport { InputError } from '../../../components/FormInputs/InputLabel';\nimport FormSearchableMultiselectDropdown from '../../../components/FormInputs/inputs/FormSearchableMultiselectDropdown';\nimport { translateUserFormToPostRequest } from '../../../api/modules/user/userTranslator';\nimport { FormNotice } from '../../../components/FormNotice/FormNotice';\nimport { EMAIL_REGEX } from '../../../../utils/consts';\nimport useTenantlessMode from '../../../hooks/useTenantlessMode';\n\nconst NewUserForm = () => {\n  const getMessage = useMessages();\n  const tenantlessMode = useTenantlessMode();\n  const navigate = useNavigate();\n  const [postNewUser, result] = usePostUserAccountMutation();\n  const { data: roles, isLoading } = useGetRolesForUserQuery();\n  const { data: settings } = useGetCompanySettingsQuery();\n  const [backendErrors, setBackendErrors] = useState([] as string[]);\n  const methods = useForm<CreateUserFormData>({\n    defaultValues: {\n      email: '',\n      fullName: '',\n      externalId: '',\n      login: '',\n      phone: '',\n      homeownerAssociationIds: [],\n      buildingsIds: [],\n      estatesIds: [],\n      journalsIds: [],\n    },\n    mode: 'onTouched',\n  });\n\n  const onSubmit = (formData: CreateUserFormData) => {\n    postNewUser(translateUserFormToPostRequest(formData));\n  };\n\n  const rolesSelectOptions = useMemo(() => (roles || []).reduce((rolesToSelect, role) => {\n    if (role.roleType === 'worker' || role.roleType === 'admin') {\n      return rolesToSelect.concat([{\n        value: role.id,\n        optionLabel: role.name,\n      }]);\n    }\n    return rolesToSelect;\n  }, [] as SelectOption[]), [roles]);\n\n  useEffect(() => {\n    if (!isLoading && roles) {\n      const defaultRoleId = roles.find((role) => role.isDefault && role.roleType === 'worker')?.id || '';\n      methods.setValue('roleIds', [defaultRoleId]);\n    }\n  }, [roles]);\n\n  useEffect(() => {\n    if (result.status === 'fulfilled') {\n      navigate('/uzytkownicy');\n    }\n    // @ts-ignore\n    if (result.status === 'rejected' && result.error?.data?.errors) {\n      // @ts-ignore\n      const errors = result.error.data.errors || [];\n      setBackendErrors(Array.isArray(errors) ? errors : [errors]);\n    }\n  }, [result]);\n\n  return (\n    <Card className=\"col-span-full\">\n      {result.isError && <FormNotice type=\"error\" message={getMessage('form.error')} />}\n      <FormProvider {...methods}>\n        <form onSubmit={methods.handleSubmit(onSubmit)} className=\"grid grid-cols-12 col-span-full\">\n          <section className=\"col-span-full md:col-span-4\">\n            <FormMultiSelect\n              label={getMessage('users.newUser.roles')}\n              id=\"roleIds\"\n              selectOptions={rolesSelectOptions}\n              options={{\n                validate: {\n                  required: (val: any[]) => val.length > 0 || getMessage('users.newUser.roles.error.required'),\n                },\n              }}\n            />\n            <FormInput\n              className=\"w-full mt-2\"\n              inputClassName=\"w-full\"\n              id=\"externalId\"\n              type=\"text\"\n              label={`${getMessage('users.newUser.externalId')}`}\n              options={{ required: getMessage('users.newUser.id.error.required') }}\n            />\n            <FormInput\n              className=\"w-full mt-2\"\n              inputClassName=\"w-full\"\n              id=\"login\"\n              type=\"text\"\n              label={`${getMessage('users.newUser.login')}`}\n            />\n            <FormInput\n              className=\"w-full mt-2\"\n              inputClassName=\"w-full\"\n              id=\"fullName\"\n              type=\"text\"\n              label={`${getMessage('users.newUser.name')}`}\n              options={{ required: getMessage('users.newUser.name.error.required') }}\n            />\n            <FormInput\n              className=\"w-full mt-2\"\n              inputClassName=\"w-full\"\n              id=\"email\"\n              type=\"text\"\n              label={`${getMessage('users.newUser.email')}`}\n              options={{\n                required: getMessage('users.newUser.email.error.required'),\n                pattern: {\n                  value: EMAIL_REGEX,\n                  message: getMessage('form.email.error.pattern'),\n                },\n              }}\n            />\n            <FormInput\n              className=\"w-full mt-2 mb-2\"\n              inputClassName=\"w-full\"\n              id=\"phone\"\n              type=\"text\"\n              label={`${getMessage('users.newUser.phone')}`}\n              options={{\n                pattern: {\n                  value: /^[0-9- +]+$/,\n                  message: getMessage('form.phone.error.pattern'),\n                },\n              }}\n            />\n            {backendErrors && backendErrors.map((error) => (\n              <InputError key={error} message={error} />\n            ))}\n          </section>\n          <section className=\"col-span-12 border-t mt-4\">\n            <p className=\"text-header-sm my-4\">{getMessage('users.user.accessGroups')}</p>\n            {!tenantlessMode && (\n              <>\n                {settings?.homeownerAssociationsMode && (\n                  <FormSearchableMultiselectDropdown\n                    label={getMessage('users.user.accessGroup.homeownerAssociations')}\n                    id=\"homeownerAssociationIds\"\n                    query={useGetAccessGroupsQuery}\n                    queryOptions={{ accessGroup: 'homeowner_associations' }}\n                    ariaLabel={getMessage('form.ariaLabel.hoa')}\n                  />\n                )}\n                <FormSearchableMultiselectDropdown\n                  label={getMessage('users.user.accessGroup.estates')}\n                  id=\"estatesIds\"\n                  query={useGetAccessGroupsQuery}\n                  queryOptions={{ accessGroup: 'estates' }}\n                  ariaLabel={getMessage('form.ariaLabel.estates')}\n                />\n                <FormSearchableMultiselectDropdown\n                  label={getMessage('users.user.accessGroup.buildings')}\n                  id=\"buildingsIds\"\n                  query={useGetAccessGroupsQuery}\n                  queryOptions={{ accessGroup: 'buildings' }}\n                  ariaLabel={getMessage('form.ariaLabel.buildings')}\n                />\n              </>\n            )}\n            <FormSearchableMultiselectDropdown\n              label={getMessage('users.user.accessGroup.journals')}\n              id=\"journalsIds\"\n              query={useGetUserJournalsQuery}\n              ariaLabel=\"Wyszukaj dzienniki\"\n            />\n          </section>\n          <div className=\"grid grid-cols-3 col-span-full\">\n            <Button type=\"submit\" className=\"mt-6 col-start-4\">{getMessage('save')}</Button>\n          </div>\n        </form>\n      </FormProvider>\n    </Card>\n  );\n};\n\nexport default NewUserForm;\n", "import * as React from 'react';\nimport useMessages from '../../../hooks/useMessages';\nimport Layout from '../../../components/Layout/Layout';\nimport PageHeader from '../../../components/Layout/PageHeader';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport ParametersSidebar from '../ParametersSidebar';\nimport CategoriesTable from '../CategoryTable/CategoriesTable';\nimport { useGetTaskCategoriesQuery } from '../../../api/appApi';\nimport { usePermissions } from '../../../hooks/usePermissions';\n\nconst TasksParametersPage = () => {\n  const getMessage = useMessages();\n  const { checkModuleEnabled } = usePermissions();\n  const { data: taskCategories } = useGetTaskCategoriesQuery();\n\n  checkModuleEnabled('tickets');\n\n  return (\n    <Layout currentPage=\"parameters\">\n      <div className=\"flex flex-grow h-full\">\n        <ParametersSidebar selectedPage=\"tasksParameters\" />\n        <div className=\"flex flex-col flex-grow\">\n          <PageHeader currentPage=\"parameters\" pageTitle={getMessage('navigation.parameters.tasks')} />\n          <ContentWrapper>\n            <CategoriesTable categoryType=\"task\" categories={taskCategories || []} />\n          </ContentWrapper>\n        </div>\n      </div>\n    </Layout>\n  );\n};\n\nexport default TasksParametersPage;\n", "import * as React from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport classNames from 'classnames';\nimport useMessages from '../../hooks/useMessages';\nimport { usePermissions } from '../../hooks/usePermissions';\n\ninterface Props {\n  selectedPage: 'tasksParameters' | 'ticketsParameters' | 'documentsParameters' | 'statuses' | 'journals' | 'ksefJournals'\n}\n\nconst ParametersSidebar = ({ selectedPage }: Props) => {\n  const getMessage = useMessages();\n  const navigate = useNavigate();\n  const {\n    checkRoleType, isModuleEnabled, checkModuleEnabled,\n  } = usePermissions();\n\n  checkRoleType('admin');\n  if (!isModuleEnabled('tickets')) checkModuleEnabled('documents');\n  if (!isModuleEnabled('documents')) checkModuleEnabled('tickets');\n\n  return (\n    <div className=\"flex flex-col w-52 border-r text-gray-800 pt-20 bg-gray-100 capitalize justify-between\">\n      <div className=\"flex flex-col w-full\">\n        <div\n          className={classNames('m-2 pl-3 py-2 rounded hover:bg-gray-200 cursor-pointer', { 'bg-gray-300': selectedPage === 'statuses' })}\n          role=\"button\"\n          tabIndex={0}\n          onClick={() => { navigate('/parametry/statusy'); }}\n          onKeyPress={() => { navigate('/parametry/statusy'); }}\n        >\n          {getMessage('navigation.parameters.statuses')}\n        </div>\n        {isModuleEnabled('documents') && (\n          <div\n            className={classNames('m-2 pl-3 py-2 rounded hover:bg-gray-200 cursor-pointer', { 'bg-gray-300': selectedPage === 'journals' })}\n            role=\"button\"\n            tabIndex={0}\n            onClick={() => { navigate('/parametry/dzienniki'); }}\n            onKeyPress={() => { navigate('/parametry/dzienniki'); }}\n          >\n            {getMessage('navigation.parameters.journals')}\n          </div>\n        )}\n        {isModuleEnabled('documents') && (\n          <div\n            className={classNames('m-2 pl-3 py-2 rounded hover:bg-gray-200 cursor-pointer', { 'bg-gray-300': selectedPage === 'ksefJournals' })}\n            role=\"button\"\n            tabIndex={0}\n            onClick={() => { navigate('/parametry/dzienniki_ksef'); }}\n            onKeyPress={() => { navigate('/parametry/dzienniki_ksef'); }}\n          >\n            {getMessage('navigation.parameters.ksefJournals')}\n          </div>\n        )}\n        {isModuleEnabled('tickets') && (\n          <>\n            <div\n              className={classNames('m-2 pl-3 py-2 rounded hover:bg-gray-200 cursor-pointer', { 'bg-gray-300': selectedPage === 'ticketsParameters' })}\n              role=\"button\"\n              tabIndex={0}\n              onClick={() => { navigate('/parametry/zgloszenia'); }}\n              onKeyPress={() => { navigate('/parametry/zgloszenia'); }}\n            >\n              {getMessage('navigation.parameters.tickets')}\n            </div>\n            <div\n              className={classNames('m-2 pl-3 py-2 rounded hover:bg-gray-200 cursor-pointer', { 'bg-gray-300': selectedPage === 'tasksParameters' })}\n              role=\"button\"\n              tabIndex={0}\n              onClick={() => { navigate('/parametry/zadania'); }}\n              onKeyPress={() => { navigate('/parametry/zadania'); }}\n            >\n              {getMessage('navigation.parameters.tasks')}\n            </div>\n          </>\n        )}\n        {isModuleEnabled('documents') && (\n          <div\n            className={classNames('m-2 pl-3 py-2 rounded hover:bg-gray-200 cursor-pointer', { 'bg-gray-300': selectedPage === 'documentsParameters' })}\n            role=\"button\"\n            tabIndex={0}\n            onClick={() => { navigate('/parametry/dokumenty'); }}\n            onKeyPress={() => { navigate('/parametry/dokumenty'); }}\n          >\n            {getMessage('navigation.parameters.documents')}\n          </div>\n        )}\n      </div>\n    </div>\n  );\n};\n\nexport default ParametersSidebar;\n", "import * as React from 'react';\nimport { useState } from 'react';\nimport { TableBodyCell } from '../../../components/Table/Table';\nimport ResponsiveTable, {\n  ResponsiveTableBody,\n  ResponsiveTableBodyRow,\n} from '../../../components/Table/ResponsiveTable';\nimport useMessages from '../../../hooks/useMessages';\nimport Button from '../../../components/Button/Button';\nimport AddCategoryPopup from './AddCategoryPopup';\nimport ChangeCategoryPopup from './ChangeCategoryPopup';\nimport DeleteCategoryPopup from './DeleteCategoryPopup';\nimport { TaskCategory } from '../../../api/modules/tasks/tasksTypes';\nimport { TicketCategory } from '../../../api/modules/tickets/ticketsTypes';\nimport { DocumentCategory } from '../../../api/modules/documents/documentsTypes';\n\ninterface Props {\n  categoryType: 'ticket' | 'task' | 'document',\n  categories: TaskCategory[] | TicketCategory[] | DocumentCategory[],\n}\n\nconst CategoriesTable = ({ categoryType, categories }: Props) => {\n  const getMessage = useMessages();\n  const [addCategoryOpen, setAddCategoryOpen] = useState(false);\n  const [changeCategoryPopupCategory, setChangeCategoryPopupCategory] = useState(null as { id: string, name: string } | null);\n  const [deleteCategoryPopupId, setDeleteCategoryPopupId] = useState('');\n\n  const TableHeader = (\n    <div className=\"flex justify-between w-full items-center mb-2\">\n      <div className=\"text-header-sm\">{getMessage('parameters.categories')}</div>\n      <Button size=\"small\" onClick={() => setAddCategoryOpen(true)}>\n        {getMessage('parameters.categories.add')}\n      </Button>\n    </div>\n  );\n\n  return (\n    <>\n      <AddCategoryPopup isOpen={addCategoryOpen} onClose={() => setAddCategoryOpen(false)} categoryType={categoryType} />\n      <ChangeCategoryPopup\n        isOpen={!!changeCategoryPopupCategory}\n        onClose={() => setChangeCategoryPopupCategory(null)}\n        categoryType={categoryType}\n        category={changeCategoryPopupCategory}\n      />\n      <DeleteCategoryPopup\n        isOpen={!!deleteCategoryPopupId}\n        onClose={() => setDeleteCategoryPopupId('')}\n        categoryType={categoryType}\n        categoryId={deleteCategoryPopupId}\n      />\n      <ResponsiveTable className=\"col-span-full\" header={TableHeader}>\n        <ResponsiveTableBody>\n          {categories && categories.map((category) => (\n            <ResponsiveTableBodyRow key={category.id} className=\"border-b last:border-b-0 border-separate font-medium\">\n              <TableBodyCell>\n                {category.name}\n              </TableBodyCell>\n              <TableBodyCell className=\"text-end\">\n                <Button size=\"small\" styleType=\"ghost\" onClick={() => setChangeCategoryPopupCategory(category)}>\n                  {getMessage('parameters.categories.change')}\n                </Button>\n                <Button size=\"small\" styleType=\"ghost\" onClick={() => setDeleteCategoryPopupId(category.id)}>\n                  {getMessage('parameters.categories.remove')}\n                </Button>\n              </TableBodyCell>\n            </ResponsiveTableBodyRow>\n          ))}\n\n        </ResponsiveTableBody>\n      </ResponsiveTable>\n    </>\n  );\n};\n\nexport default CategoriesTable;\n", "/* eslint-disable react/jsx-props-no-spreading */\nimport * as React from 'react';\nimport { useForm, FormProvider } from 'react-hook-form';\nimport { useCallback, useEffect, useState } from 'react';\nimport Dialog from '../../../components/Dialog/Dialog';\nimport useMessages from '../../../hooks/useMessages';\nimport {\n  usePostDocumentCategoryMutation,\n  usePostTaskCategoryMutation,\n  usePostTicketCategoryMutation,\n} from '../../../api/appApi';\nimport { FormInput } from '../../../components/FormInputs';\nimport { InputError } from '../../../components/FormInputs/InputLabel';\n\ninterface Props {\n  isOpen: boolean,\n  onClose: () => void,\n  categoryType: 'ticket' | 'task' | 'document',\n}\n\nconst AddCategoryPopup = ({ isOpen, onClose, categoryType }: Props) => {\n  const getMessage = useMessages();\n  const [postTicketCategory, ticketResult] = usePostTicketCategoryMutation();\n  const [postTaskCategory, taskResult] = usePostTaskCategoryMutation();\n  const [postDocumentCategory, documentResult] = usePostDocumentCategoryMutation();\n  const methods = useForm<{ name: string }>();\n  const [backendErrors, setBackendErrors] = useState([] as string[]);\n\n  const onSubmit = (data: { name: string }) => {\n    if (categoryType === 'ticket') {\n      postTicketCategory(data);\n    } else if (categoryType === 'task') {\n      postTaskCategory(data);\n    } else if (categoryType === 'document') {\n      postDocumentCategory(data);\n    }\n  };\n\n  const handleErrorsFromResult = useCallback((result: any) => {\n    if (result.status === 'fulfilled') {\n      setBackendErrors([]);\n      onClose();\n    } else if (result.status === 'rejected') {\n      const errors = result.error?.data?.errors || [];\n      setBackendErrors(Array.isArray(errors) ? errors : [errors]);\n    }\n  }, []);\n\n  useEffect(() => {\n    handleErrorsFromResult(ticketResult);\n  }, [ticketResult]);\n\n  useEffect(() => {\n    handleErrorsFromResult(taskResult);\n  }, [taskResult]);\n\n  useEffect(() => {\n    handleErrorsFromResult(documentResult);\n  }, [documentResult]);\n\n  return (\n    <FormProvider {...methods}>\n      <Dialog\n        isOpen={isOpen}\n        onAccept={methods.handleSubmit(onSubmit)}\n        onClose={onClose}\n        acceptButtonText={getMessage('parameters.categories.addDialog.button')}\n        submitButton\n        preventCloseOnAccept\n      >\n        <div className=\"text-head-sm mb-8\">\n          {getMessage('parameters.categories.addDialog.header')}\n        </div>\n        <FormInput\n          className=\"mb-8 flex !flex-row items-center justify-between w-full\"\n          inputClassName=\"w-3/4 mx-4\"\n          id=\"name\"\n          type=\"text\"\n          label={getMessage('parameters.categories.dialog.name')}\n          options={{ required: getMessage('parameters.categories.dialog.name.error') }}\n        />\n        {backendErrors && backendErrors.map((error) => (\n          <InputError key={error} message={error} />\n        ))}\n      </Dialog>\n    </FormProvider>\n  );\n};\n\nexport default AddCategoryPopup;\n", "/* eslint-disable react/jsx-props-no-spreading */\nimport * as React from 'react';\nimport { useForm, FormProvider } from 'react-hook-form';\nimport { useCallback, useEffect, useState } from 'react';\nimport { useIntl } from 'react-intl';\nimport Dialog from '../../../components/Dialog/Dialog';\nimport useMessages from '../../../hooks/useMessages';\nimport {\n  usePatchDocumentCategoryMutation,\n  usePatchTaskCategoryMutation,\n  usePatchTicketCategoryMutation,\n} from '../../../api/appApi';\nimport { FormInput } from '../../../components/FormInputs';\nimport { InputError } from '../../../components/FormInputs/InputLabel';\n\ninterface Props {\n  isOpen: boolean,\n  onClose: () => void,\n  categoryType: 'ticket' | 'task' | 'document',\n  category: {\n    name: string,\n    id: string,\n  } | null\n}\n\nconst ChangeCategoryPopup = ({\n  isOpen, onClose, categoryType, category,\n}: Props) => {\n  const getMessage = useMessages();\n  const intl = useIntl();\n  const [patchTicketCategory, ticketResult] = usePatchTicketCategoryMutation();\n  const [patchTaskCategory, taskResult] = usePatchTaskCategoryMutation();\n  const [patchDocumentCategory, documentResult] = usePatchDocumentCategoryMutation();\n  const [backendErrors, setBackendErrors] = useState([] as string[]);\n\n  const methods = useForm<{ name: string, id: string }>({\n    defaultValues: {\n      id: category?.id || '',\n      name: category?.name || '',\n    },\n    mode: 'onTouched',\n  });\n\n  const onSubmit = (data: { name: string, id: string }) => {\n    if (categoryType === 'ticket') {\n      patchTicketCategory(data);\n    } else if (categoryType === 'task') {\n      patchTaskCategory(data);\n    } else if (categoryType === 'document') {\n      patchDocumentCategory(data);\n    }\n  };\n\n  const handleErrorsFromResult = useCallback((result: any) => {\n    if (result.status === 'fulfilled') {\n      setBackendErrors([]);\n      onClose();\n    } else if (result.status === 'rejected') {\n      const errors = result.error?.data?.errors || [];\n      setBackendErrors(Array.isArray(errors) ? errors : [errors]);\n    }\n  }, []);\n\n  useEffect(() => {\n    handleErrorsFromResult(ticketResult);\n  }, [ticketResult]);\n\n  useEffect(() => {\n    handleErrorsFromResult(taskResult);\n  }, [taskResult]);\n\n  useEffect(() => {\n    handleErrorsFromResult(documentResult);\n  }, [documentResult]);\n\n  useEffect(() => {\n    methods.reset({\n      id: category?.id || '',\n      name: category?.name || '',\n    });\n    setBackendErrors([]);\n  }, [category]);\n\n  return (\n    <FormProvider {...methods}>\n      <Dialog\n        isOpen={isOpen}\n        onAccept={methods.handleSubmit(onSubmit)}\n        onClose={onClose}\n        acceptButtonText={getMessage('parameters.categories.changeDialog.button')}\n        submitButton\n        preventCloseOnAccept\n      >\n        <div className=\"text-head-sm mb-8\">\n          {getMessage('parameters.categories.changeDialog.header')}\n        </div>\n        <FormInput\n          className=\"mb-8 flex !flex-row items-center justify-between w-full\"\n          inputClassName=\"w-3/4 mx-4\"\n          id=\"name\"\n          type=\"text\"\n          label={getMessage('parameters.categories.dialog.name')}\n          options={{ required: getMessage('parameters.categories.dialog.name.error'), maxLength: { value: 64, message: intl.formatMessage({ id: 'form.name.error.tooLong' }, { maxLength: 64 }) } }}\n        />\n        {backendErrors && backendErrors.map((error) => (\n          <InputError key={error} message={error} />\n        ))}\n      </Dialog>\n    </FormProvider>\n  );\n};\n\nexport default ChangeCategoryPopup;\n", "/* eslint-disable react/jsx-props-no-spreading */\nimport * as React from 'react';\nimport { useForm, FormProvider } from 'react-hook-form';\nimport { useCallback, useEffect, useState } from 'react';\nimport Dialog from '../../../components/Dialog/Dialog';\nimport useMessages from '../../../hooks/useMessages';\nimport {\n  useDeleteDocumentCategoryMutation,\n  useDeleteTaskCategoryMutation,\n  useDeleteTicketCategoryMutation,\n} from '../../../api/appApi';\nimport { InputError } from '../../../components/FormInputs/InputLabel';\n\ninterface Props {\n  isOpen: boolean,\n  onClose: () => void,\n  categoryType: 'ticket' | 'task' | 'document',\n  categoryId: string | null,\n}\n\nconst DeleteCategoryPopup = ({\n  isOpen, onClose, categoryType, categoryId,\n}: Props) => {\n  const getMessage = useMessages();\n  const [deleteTicketCategory, ticketResult] = useDeleteTicketCategoryMutation();\n  const [deleteTaskCategory, taskResult] = useDeleteTaskCategoryMutation();\n  const [deleteDocumentCategory, documentResult] = useDeleteDocumentCategoryMutation();\n\n  const [backendErrors, setBackendErrors] = useState([] as string[]);\n\n  const methods = useForm<{ id: string }>({\n    defaultValues: {\n      id: categoryId || '',\n    },\n  });\n\n  const onSubmit = (data: { id: string }) => {\n    if (categoryType === 'ticket') {\n      deleteTicketCategory(data);\n    } else if (categoryType === 'task') {\n      deleteTaskCategory(data);\n    } else if (categoryType === 'document') {\n      deleteDocumentCategory(data);\n    }\n  };\n\n  const handleErrorsFromResult = useCallback((result: any) => {\n    if (result.status === 'fulfilled') {\n      setBackendErrors([]);\n      onClose();\n    } else if (result.status === 'rejected') {\n      const errors = result.error?.data?.errors || [getMessage('parameters.categories.deleteDialog.error')];\n      setBackendErrors(Array.isArray(errors) ? errors : [errors]);\n    }\n  }, []);\n\n  useEffect(() => {\n    handleErrorsFromResult(ticketResult);\n  }, [ticketResult]);\n\n  useEffect(() => {\n    handleErrorsFromResult(taskResult);\n  }, [taskResult]);\n\n  useEffect(() => {\n    handleErrorsFromResult(documentResult);\n  }, [documentResult]);\n\n  useEffect(() => {\n    methods.reset({\n      id: categoryId || '',\n    });\n    setBackendErrors([]);\n  }, [categoryId]);\n\n  return (\n    <FormProvider {...methods}>\n      <Dialog\n        isOpen={isOpen}\n        onAccept={methods.handleSubmit(onSubmit)}\n        onClose={onClose}\n        acceptButtonText={getMessage('parameters.categories.deleteDialog.button')}\n        submitButton\n        preventCloseOnAccept\n      >\n        <div className=\"text-head-sm mb-2\">\n          {getMessage('parameters.categories.deleteDialog.header')}\n        </div>\n        <div className=\"text-text-md-medium mb-8\">\n          {categoryType === 'ticket' && getMessage('parameters.categories.deleteDialog.ticketsSubHeader')}\n          {categoryType === 'task' && getMessage('parameters.categories.deleteDialog.tasksSubHeader')}\n          {categoryType === 'document' && getMessage('parameters.categories.deleteDialog.documentsSubHeader')}\n        </div>\n        {backendErrors && backendErrors.map((error) => (\n          <InputError key={error} message={error} />\n        ))}\n      </Dialog>\n    </FormProvider>\n  );\n};\n\nexport default DeleteCategoryPopup;\n", "import * as React from 'react';\nimport useMessages from '../../../hooks/useMessages';\nimport Layout from '../../../components/Layout/Layout';\nimport PageHeader from '../../../components/Layout/PageHeader';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport ParametersSidebar from '../ParametersSidebar';\nimport CategoriesTable from '../CategoryTable/CategoriesTable';\nimport { useGetTicketCategoriesQuery } from '../../../api/appApi';\nimport { usePermissions } from '../../../hooks/usePermissions';\n\nconst TicketsParametersPage = () => {\n  const getMessage = useMessages();\n  const { checkModuleEnabled } = usePermissions();\n  const { data: ticketCategories } = useGetTicketCategoriesQuery();\n\n  checkModuleEnabled('tickets');\n\n  return (\n    <Layout currentPage=\"parameters\">\n      <div className=\"flex flex-grow h-full\">\n        <ParametersSidebar selectedPage=\"ticketsParameters\" />\n        <div className=\"flex flex-col flex-grow\">\n          <PageHeader currentPage=\"parameters\" pageTitle={getMessage('navigation.parameters.tickets')} />\n          <ContentWrapper>\n            <CategoriesTable categoryType=\"ticket\" categories={ticketCategories || []} />\n          </ContentWrapper>\n        </div>\n      </div>\n    </Layout>\n  );\n};\n\nexport default TicketsParametersPage;\n", "import * as React from 'react';\nimport { useMemo, useState } from 'react';\nimport PageHeader from '../../../components/Layout/PageHeader';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport Layout from '../../../components/Layout/Layout';\nimport useMessages from '../../../hooks/useMessages';\nimport SettlementsVenueList from './SettlementsVenueList';\nimport Button from '../../../components/Button/Button';\nimport FiltersIcon from '../../../icons/filters.svg';\nimport { useAppSelector } from '../../../hooks/reduxHooks';\nimport SettlementsVenueFilters from './SettlementsVenueFilters';\nimport Tabs, { TabElement } from '../../../components/Tabs/Tabs';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport useTenantlessMode from '../../../hooks/useTenantlessMode';\n\ninterface Props {\n  tab: 'all' | 'active',\n}\n\nconst SettlementsVenueListPage = ({ tab }: Props) => {\n  const getMessage = useMessages();\n  const { checkModuleEnabled } = usePermissions();\n  const tenantlessMode = useTenantlessMode();\n  const hasFilterSet = useAppSelector((state) => !!state.app.filters.find((filter) => filter.id === 'metersVenuesList'));\n  const [filtersOpen, setFiltersOpen] = useState(hasFilterSet);\n\n  checkModuleEnabled('settlements');\n\n  const tabs: TabElement[] = useMemo(() => [\n    {\n      label: getMessage('settlements.venuesList.tabs.active'),\n      path: '/rozrachunki/lokale/aktywne',\n    },\n    {\n      label: getMessage('settlements.venuesList.tabs.all'),\n      path: '/rozrachunki/lokale',\n    },\n  ], []);\n\n  return (\n    <Layout currentPage=\"settlements\">\n      <PageHeader pageTitle={getMessage('navigation.settlements')} currentPage=\"settlements\">\n        <Button\n          Icon={FiltersIcon}\n          size=\"small\"\n          styleType=\"secondary\"\n          onClick={() => setFiltersOpen((filtersOpen) => !filtersOpen)}\n          className=\"h-8 py-1\"\n        >\n          {getMessage('filters')}\n        </Button>\n      </PageHeader>\n      {!tenantlessMode && <Tabs tabElements={tabs} />}\n      {filtersOpen && <SettlementsVenueFilters tab={tab} />}\n      <ContentWrapper>\n        <SettlementsVenueList tab={tab} />\n      </ContentWrapper>\n    </Layout>\n  );\n};\n\nexport default SettlementsVenueListPage;\n", "import * as React from 'react';\nimport format from 'date-fns/format';\nimport { useEffect } from 'react';\nimport {\n  useGetFullUserAccountQuery,\n  useGetSettlementsVenuesQuery,\n} from '../../../api/appApi';\nimport ResponsiveTable, {\n  ResponsiveTableBody,\n  ResponsiveTableBodyRow,\n  ResponsiveTableHeader,\n} from '../../../components/Table/ResponsiveTable';\nimport { TableId, selectSettlementsTenantId } from '../../../store/appSlice';\nimport { TableBodyCell } from '../../../components/Table/Table';\nimport Chip from '../../../components/Chip/Chip';\nimport PaginationControls from '../../../components/Table/PaginationControls';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport usePagination from '../../../hooks/usePagination';\nimport useMessages from '../../../hooks/useMessages';\nimport useFilters from '../../../hooks/useFilters';\nimport useHomeownerAssociationsMode from '../../../hooks/useHomeownerAssociationsMode';\nimport { useAppDispatch } from '../../../hooks/reduxHooks';\nimport useSortParams from '../../../hooks/useSortParams';\nimport { useSettlementsTenant } from '../../../hooks/settlements/useSettlementsTenant';\n\ninterface Props {\n  tab: 'all' | 'active',\n}\n\nconst SettlementsVenueList = ({ tab }: Props) => {\n  const getMessage = useMessages();\n  const hoaMode = useHomeownerAssociationsMode();\n  const { isModuleEnabled } = usePermissions();\n  const dispatch = useAppDispatch();\n  const [selectedPage, setSelectedPage] = usePagination('settlementsVenuesList');\n  const { filterValues } = useFilters('settlementsVenuesList');\n  const { sortParamsValues } = useSortParams('settlementsVenuesList');\n  const filters = { ...filterValues };\n  const { data: user } = useGetFullUserAccountQuery();\n  const { tenantRequired, tenantlessMode } = useSettlementsTenant();\n\n  if (tab === 'active' && !tenantlessMode) filters.residency_active = 'true';\n\n  useEffect(() => {\n    setSelectedPage(1);\n  }, [tab]);\n\n  const { data } = useGetSettlementsVenuesQuery({\n    ...filters,\n    ...sortParamsValues,\n    page: selectedPage.toString(),\n  });\n\n  const { checkPermission, checkRoleType } = usePermissions();\n\n  const handleClick = (venueId: string, tenantId: string) => {\n    if (user && tenantRequired) {\n      dispatch(selectSettlementsTenantId({ userId: user.id, selectedSettlementsTenantId: tenantId }));\n    }\n  };\n\n  checkRoleType('worker');\n  checkPermission('settlements_balance_list');\n\n  const ids = data?.venues.map((venue) => venue.venueId) || [];\n  const columnLabels = [\n    ...tenantlessMode ? [] : [\n      { label: 'settlements.venuesList.columns.tenantId', id: 'main_tenant_external_id' },\n      { label: 'settlements.venuesList.columns.name', id: 'tenants_tenants.name' },\n    ],\n    { label: 'settlements.venuesList.columns.code', id: 'tenants_venues.code' },\n    { label: 'settlements.venuesList.columns.city' },\n    { label: 'settlements.venuesList.columns.address' },\n    ...tenantlessMode ? [] : [{ label: 'settlements.venuesList.columns.residencyDates' }],\n    ...tenantlessMode ? [] : [{\n      label: hoaMode\n        ? 'settlements.venuesList.columns.homeownerAssociation'\n        : 'settlements.venuesList.columns.membership',\n    }],\n    ...tenantlessMode && hoaMode ? [{ label: 'settlements.venuesList.columns.homeownerAssociation' }] : [],\n  ];\n  return (\n    <>\n      <ResponsiveTable className=\"col-span-full\">\n        <ResponsiveTableHeader ids={ids} columnLabels={columnLabels} tableName={'settlementsVenuesList' as TableId} />\n        <ResponsiveTableBody>\n          {data?.venues.map(({\n            tenantId, venueId, city, address, code, homeownerAssociation, residencyFrom, residencyUntil, tenant, tenantExternalId, membership,\n          }) => (\n            <ResponsiveTableBodyRow\n              key={tenantId + venueId + residencyFrom + residencyFrom}\n              className=\"border-b last:border-b-0 border-separate\"\n              clickable={({\n                href: `${isModuleEnabled('payments') ? '/rozrachunki/platnosci' : '/rozrachunki/analiza_salda'}?venueId=${venueId}${tenantRequired ? `&tenantId=${tenantId}` : ''}`,\n                onClick: () => handleClick(venueId, tenantId),\n                ariaLabel: `Przejd\u017A do rozrachunk\u00F3w dla lokalu ${code} ${address}${tenantlessMode ? '' : ` dla lokatora ${tenant}`}`,\n              })}\n            >\n              {!tenantlessMode && <TableBodyCell>{tenantExternalId}</TableBodyCell>}\n              {!tenantlessMode && <TableBodyCell>{tenant}</TableBodyCell>}\n              <TableBodyCell>{code}</TableBodyCell>\n              <TableBodyCell>{city}</TableBodyCell>\n              <TableBodyCell>{address}</TableBodyCell>\n              {!tenantlessMode && (\n              <TableBodyCell>\n                <Chip chipStyle=\"ghost\" className=\"w-fit\">\n                  {residencyFrom && format(new Date(residencyFrom), 'dd-MM-yyyy')}\n                  {residencyUntil && ` - ${format(new Date(residencyUntil), 'dd-MM-yyyy')}`}\n                </Chip>\n              </TableBodyCell>\n              )}\n              {!tenantlessMode && (hoaMode ? (\n                <TableBodyCell>\n                  {homeownerAssociation}\n                </TableBodyCell>\n              ) : (\n                <TableBodyCell>\n                  {membership && (\n                    <Chip chipStyle=\"success\" className=\"w-fit\">\n                      {getMessage('settlements.venuesList.member')}\n                    </Chip>\n                  )}\n                </TableBodyCell>\n              ))}\n              {tenantlessMode && hoaMode && <TableBodyCell>{homeownerAssociation}</TableBodyCell>}\n            </ResponsiveTableBodyRow>\n          ))}\n        </ResponsiveTableBody>\n      </ResponsiveTable>\n      {data?.metadata && (\n        <PaginationControls\n          className=\"col-span-full\"\n          selectedPage={selectedPage}\n          setSelectedPage={setSelectedPage}\n          paginationMetadata={data.metadata}\n        />\n      )}\n    </>\n  );\n};\n\nexport default SettlementsVenueList;\n", "import * as React from 'react';\nimport { useMemo } from 'react';\nimport useMessages from '../../../hooks/useMessages';\nimport Filters from '../../../components/Filters/Filters';\nimport { FilterConfig } from '../../../components/FilterInput/FilterInput';\nimport useHomeownerAssociationsMode from '../../../hooks/useHomeownerAssociationsMode';\nimport useTenantlessMode from '../../../hooks/useTenantlessMode';\n\ninterface Props {\n  tab: 'all' | 'active',\n}\n\nconst SettlementsVenueFilters = ({ tab }:Props) => {\n  const getMessage = useMessages();\n  const hoaMode = useHomeownerAssociationsMode();\n  const tenantlessMode = useTenantlessMode();\n\n  const statusOptionValues = [\n    {\n      value: 'true',\n      optionLabel: getMessage('settlements.venuesList.filters.status.resident'),\n    },\n    {\n      value: 'false',\n      optionLabel: getMessage('settlements.venuesList.filters.status.notResident'),\n    },\n  ];\n\n  const membershipOptionValues = [\n    {\n      value: 'true',\n      optionLabel: getMessage('settlements.venuesList.filters.membership.member'),\n    },\n    {\n      value: 'false',\n      optionLabel: getMessage('settlements.venuesList.filters.membership.notMember'),\n    },\n  ];\n\n  const filterFields: FilterConfig[] = useMemo(() => {\n    const statusFilter: FilterConfig[] = tenantlessMode ? [] : [{\n      type: 'select',\n      id: 'residency_active',\n      label: getMessage('settlements.venuesList.filters.status'),\n      selectOptions: statusOptionValues,\n    }];\n\n    const fields: FilterConfig[] = [\n      ...tenantlessMode ? [] : [{\n        type: 'text',\n        id: 'tenant_search',\n        label: getMessage('settlements.venuesList.filters.tenant'),\n        ariaLabel: 'Szukaj po imieniu i nazwisku lub kodzie lokatora',\n      } as FilterConfig],\n      {\n        type: 'text',\n        id: 'venue_search',\n        label: getMessage('settlements.venuesList.filters.venue'),\n        ariaLabel: 'Szukaj po adresie budynku lub kodzie lokalu',\n\n      },\n      ...tenantlessMode ? [] : [{\n        type: 'dateRange',\n        id: 'from_residency_date',\n        toDateId: 'to_residency_date',\n        label: getMessage('settlements.venuesList.filters.residencyDate'),\n      } as FilterConfig],\n    ];\n    if (hoaMode) {\n      fields.push({\n        type: 'text',\n        id: 'homeowner_association_search',\n        label: getMessage('settlements.venuesList.filters.homeownerAssociation'),\n        ariaLabel: 'Szukaj po nazwie wsp\u00F3lnoty',\n      });\n    } else if (!tenantlessMode) {\n      fields.push({\n        type: 'select',\n        id: 'membership',\n        label: getMessage('settlements.venuesList.filters.membership'),\n        selectOptions: membershipOptionValues,\n      });\n    }\n\n    return tab === 'active' ? fields : statusFilter.concat(fields);\n  }, [hoaMode, tab, tenantlessMode]);\n\n  return (\n    <Filters\n      filterId=\"settlementsVenuesList\"\n      filterFields={filterFields}\n    />\n  );\n};\n\nexport default SettlementsVenueFilters;\n", "import * as React from 'react';\nimport { useParams } from 'react-router-dom';\nimport { useMemo, useState } from 'react';\nimport { useIntl } from 'react-intl';\nimport Layout from '../../../components/Layout/Layout';\nimport PageHeader from '../../../components/Layout/PageHeader';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport { useChangeUserActivityStatusMutation, useGetUserAccountQuery } from '../../../api/appApi';\nimport UserForm from './UserForm';\nimport Dialog from '../../../components/Dialog/Dialog';\nimport Button from '../../../components/Button/Button';\nimport ChangeUserPasswordPopUp from './ChangeUserPasswordPopUp';\nimport { FormNotice } from '../../../components/FormNotice/FormNotice';\nimport useMessages from '../../../hooks/useMessages';\n\nconst UserPage = () => {\n  const { id } = useParams();\n  const intl = useIntl();\n  const { data: user } = useGetUserAccountQuery(id as string);\n  const [changeUserStatePopupOpen, setChangeUserStatePopupOpen] = useState(false);\n  const [changeUserPasswordPopupOpen, setChangeUserPasswordPopupOpen] = useState(false);\n  const [isPasswordChanged, setIsPasswordChanged] = useState(false);\n  const [changeActivity] = useChangeUserActivityStatusMutation();\n  const getMessage = useMessages();\n\n  const userModifiable: boolean = useMemo(\n    () => !!user?.roles.find((role) => role.roleType === 'admin' || role.roleType === 'worker'),\n    [user],\n  );\n\n  const toggleState = () => {\n    if (user) {\n      changeActivity({\n        id: user.id,\n        active: !user.active,\n      });\n    }\n  };\n\n  return (\n    <Layout currentPage=\"users\">\n      <Dialog\n        isOpen={changeUserStatePopupOpen}\n        onAccept={toggleState}\n        onClose={() => setChangeUserStatePopupOpen(false)}\n      >\n        <p className=\"mb-12 mt-8 mobile:mx-0 mx-16 text-center text-typography-black text-text-lg-medium\">\n          {user && !user.active && <>{intl.formatMessage({ id: 'users.user.activate.popup' }, { userName: user?.fullName || '' })}</>}\n          {user && user.active && user.assigned && <>{intl.formatMessage({ id: 'users.user.deactivateAssigned.popup' }, { userName: user?.fullName || '' })}</>}\n          {user && user.active && !user.assigned && <>{intl.formatMessage({ id: 'users.user.deactivate.popup' }, { userName: user?.fullName || '' })}</>}\n        </p>\n      </Dialog>\n      {user?.id && (\n        <ChangeUserPasswordPopUp\n          isOpen={changeUserPasswordPopupOpen}\n          onClose={() => setChangeUserPasswordPopupOpen(false)}\n          onPasswordChanged={() => setIsPasswordChanged(true)}\n          id={user?.id}\n        />\n      )}\n      <PageHeader\n        currentPage=\"users\"\n        pageTitle={user?.fullName || ''}\n        path=\"/uzytkownicy\"\n      >\n        {user?.id && (\n          <Button styleType=\"secondary\" onClick={() => setChangeUserPasswordPopupOpen(true)}>\n            {getMessage('users.user.resetUserPassword')}\n          </Button>\n        )}\n        {user && userModifiable && (\n          <Button onClick={() => setChangeUserStatePopupOpen(true)} className=\"!ml-4\">\n            {user.active\n              ? intl.formatMessage({ id: 'users.user.deactivate' }, { userName: user.fullName })\n              : intl.formatMessage({ id: 'users.user.activate' }, { userName: user.fullName })}\n          </Button>\n        )}\n      </PageHeader>\n      <ContentWrapper>\n        {isPasswordChanged && <FormNotice type=\"success\" noticeClassName=\"col-span-full\" message={getMessage('profile.user.changePassword.success')} />}\n        <UserForm userModifiable={userModifiable} />\n      </ContentWrapper>\n    </Layout>\n  );\n};\n\nexport default UserPage;\n", "import * as React from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { useEffect, useMemo } from 'react';\nimport { ChangeUserFormData } from '../../../api/modules/user/userTypes';\nimport Card from '../../../components/Card/Card';\nimport { FormInput, FormMultiSelect } from '../../../components/FormInputs';\nimport useMessages from '../../../hooks/useMessages';\nimport {\n  useGetAccessGroupsQuery,\n  useGetCompanySettingsQuery,\n  useGetRolesForUserQuery,\n  useGetUserAccountQuery,\n  usePutUserAccountMutation,\n  useGetUserJournalsQuery,\n  useGetFullUserAccountQuery,\n} from '../../../api/appApi';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport Button from '../../../components/Button/Button';\nimport Chip from '../../../components/Chip/Chip';\nimport { SelectOption } from '../../../components/FormInputs/inputs/FormSelect';\nimport FormSearchableMultiselectDropdown from '../../../components/FormInputs/inputs/FormSearchableMultiselectDropdown';\nimport { translateUserFormToPutRequest } from '../../../api/modules/user/userTranslator';\nimport { FormNotice } from '../../../components/FormNotice/FormNotice';\nimport PermissionTreeDisplay from '../../../components/PermissionTree/PermissionTreeDisplay';\nimport { EMAIL_REGEX } from '../../../../utils/consts';\nimport useTenantlessMode from '../../../hooks/useTenantlessMode';\n\ninterface Props {\n  userModifiable: boolean,\n}\n\nconst UserForm = ({ userModifiable }: Props) => {\n  const navigate = useNavigate();\n  const tenantlessMode = useTenantlessMode();\n  const { id } = useParams();\n  const getMessage = useMessages();\n  const meQuery = useGetFullUserAccountQuery();\n  const { data: user } = useGetUserAccountQuery(id as string);\n  const { data: roles } = useGetRolesForUserQuery();\n  const { data: settings } = useGetCompanySettingsQuery();\n  const [changeUserData, result] = usePutUserAccountMutation();\n  const methods = useForm<ChangeUserFormData>({\n    values: {\n      id: id || '',\n      email: user?.email || '',\n      fullName: user?.fullName || '',\n      login: user?.login || '',\n      active: user?.active || false,\n      phone: user?.phone || '',\n      roleIds: user?.roles.map((role) => role.id) || [],\n      homeownerAssociationIds: user?.accessGroups?.homeownerAssociations?.map((hoa) => hoa.id) || [],\n      estatesIds: user?.accessGroups?.estates?.map((estate) => estate.id) || [],\n      buildingsIds: user?.accessGroups?.buildings?.map((building) => building.id) || [],\n      journalsIds: user?.accessGroups?.journals?.map((journal) => journal.id) || [],\n    },\n    mode: 'onTouched',\n  });\n  const { checkRoleType } = usePermissions();\n\n  checkRoleType('admin');\n\n  const onSubmit = (formData: ChangeUserFormData) => {\n    changeUserData(translateUserFormToPutRequest(formData));\n  };\n\n  useEffect(() => {\n    if (result.status === 'fulfilled') navigate('/uzytkownicy');\n  }, [result]);\n\n  const userIsMe = useMemo(() => !!meQuery.data && !!user && user.id === meQuery.data.id, [meQuery, user]);\n  const hasAdminRoleType = useMemo(() => user?.roles?.find((role) => role.roleType === 'admin'), [user?.roles]);\n\n  const rolesSelectOptions = useMemo(() => (roles || []).reduce((rolesToSelect, role) => {\n    if (role.roleType === 'worker' || role.roleType === 'admin') {\n      return rolesToSelect.concat([{\n        value: role.id,\n        optionLabel: role.name,\n      }]);\n    }\n    return rolesToSelect;\n  }, [] as SelectOption[]), [roles, userIsMe]);\n\n  const hasWorkerRoleType = useMemo(() => user?.roles?.find((role) => role.roleType === 'worker'), [user?.roles]);\n\n  const validateAdminHasRoleAdmin = (val: any[]) => {\n    if (userIsMe && !!hasAdminRoleType) {\n      return (val.length > 0 && val.includes(hasAdminRoleType.id)) || getMessage('users.user.roles.error.meAdmin');\n    }\n    return true;\n  };\n\n  return (\n    <Card className=\"col-span-full\">\n      {/* @ts-ignore */}\n      {result.isError && <FormNotice type=\"error\" message={result.error.data?.errors || getMessage('form.error')} />}\n      {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n      <FormProvider {...methods}>\n        <form onSubmit={methods.handleSubmit(onSubmit)}>\n          <section className=\"grid grid-cols-1 md:grid-cols-2 border-b pb-8\">\n            <div className=\"w-full md:w-2/3 grid-span-2 md:grid-span-1 flex flex-col\">\n              <div className=\"flex justify-start my-1 text-text-lg-semibold text-typography-black items-center mb-6\">\n                <span className=\"mr-2\">{getMessage('users.user.status')}</span>\n                <Chip chipStyle=\"gray\">{user?.active ? getMessage('users.user.status.active') : getMessage('users.user.status.notActive')}</Chip>\n              </div>\n              <div />\n              {userModifiable ? (\n                <FormMultiSelect\n                  className=\"mb-6\"\n                  label={getMessage('users.user.roles')}\n                  id=\"roleIds\"\n                  selectOptions={rolesSelectOptions}\n                  options={{\n                    validate: {\n                      required: (val: any[]) => val.length > 0 || getMessage('users.newUser.roles.error.required'),\n                      meAdmin: (val: any[]) => validateAdminHasRoleAdmin(val),\n                    },\n                  }}\n                />\n              ) : (\n                <div className=\"flex justify-start my-1 text-text-lg-semibold text-typography-black items-center mb-6\">\n                  <span className=\"mr-2\">{getMessage('users.user.roles')}</span>\n                  {(user?.roles || []).map((role) => (\n                    <Chip\n                      key={role.id}\n                      chipStyle=\"gray\"\n                    >\n                      {role.name}\n                    </Chip>\n                  ))}\n                </div>\n              )}\n              <FormInput\n                className=\"mt-2 w-full\"\n                inputClassName=\"w-full\"\n                id=\"login\"\n                type=\"text\"\n                label={getMessage('users.user.login')}\n                disabled\n              />\n              <FormInput\n                className=\"mt-2 w-full\"\n                inputClassName=\"w-full\"\n                id=\"fullName\"\n                type=\"text\"\n                label={getMessage('users.user.name')}\n                options={{ required: getMessage('users.user.name.error.required') }}\n                disabled={!userModifiable}\n              />\n              <FormInput\n                className=\"mt-2 w-full\"\n                inputClassName=\"w-full\"\n                id=\"email\"\n                type=\"email\"\n                label={getMessage('users.user.email')}\n                options={{\n                  pattern: {\n                    value: EMAIL_REGEX,\n                    message: getMessage('form.email.error.pattern'),\n                  },\n                  required: getMessage('users.user.email.error.required'),\n                }}\n              // disabled={!userModifiable}\n              />\n              <FormInput\n                type=\"tel\"\n                className=\"mt-2 w-full\"\n                inputClassName=\"w-full\"\n                id=\"phone\"\n                label={getMessage('users.user.phone')}\n                options={{\n                  pattern: {\n                    value: /^[0-9- +]+$/,\n                    message: getMessage('form.phone.error.pattern'),\n                  },\n                }}\n                disabled={!userModifiable}\n              />\n            </div>\n            {hasWorkerRoleType && (\n              <div>\n                <div className=\"flex flex-wrap justify-between mb-2\">\n                  <p className=\"text-text-lg-semibold\">{getMessage('user.additionalPermissions')}</p>\n                  <Button styleType=\"ghost\" className=\"!p-0\" onClick={() => navigate(`/uprawnienia/${id}`)}>{getMessage('user.managePermissions')}</Button>\n                </div>\n                {user?.permissions && user.permissions.length > 0\n                  ? <PermissionTreeDisplay permissions={user.permissions} />\n                  : <p className=\"text-xs text-typography-dark\">{getMessage('user.noAdditionalPermissions')}</p>}\n              </div>\n            )}\n          </section>\n          {userModifiable && (\n            <>\n              <p className=\"text-header-sm my-4\">{getMessage('users.user.accessGroups')}</p>\n              <section className=\"col-span-12\">\n                {!tenantlessMode && (\n                  <>\n                    {settings?.homeownerAssociationsMode && (\n                      <FormSearchableMultiselectDropdown\n                        label={getMessage('users.user.accessGroup.homeownerAssociations')}\n                        id=\"homeownerAssociationIds\"\n                        query={useGetAccessGroupsQuery}\n                        queryOptions={{ accessGroup: 'homeowner_associations' }}\n                        defaultValue={user?.accessGroups?.homeownerAssociations}\n                        ariaLabel={getMessage('form.ariaLabel.hoa')}\n                      />\n                    )}\n                    <FormSearchableMultiselectDropdown\n                      label={getMessage('users.user.accessGroup.estates')}\n                      id=\"estatesIds\"\n                      query={useGetAccessGroupsQuery}\n                      queryOptions={{ accessGroup: 'estates' }}\n                      defaultValue={user?.accessGroups?.estates}\n                      ariaLabel={getMessage('form.ariaLabel.estates')}\n                    />\n                    <FormSearchableMultiselectDropdown\n                      label={getMessage('users.user.accessGroup.buildings')}\n                      id=\"buildingsIds\"\n                      query={useGetAccessGroupsQuery}\n                      queryOptions={{ accessGroup: 'buildings' }}\n                      defaultValue={user?.accessGroups?.buildings}\n                      ariaLabel={getMessage('form.ariaLabel.buildings')}\n                    />\n                  </>\n                )}\n                <FormSearchableMultiselectDropdown\n                  label={getMessage('users.user.accessGroup.journals')}\n                  id=\"journalsIds\"\n                  query={useGetUserJournalsQuery}\n                  defaultValue={user?.accessGroups?.journals}\n                  ariaLabel=\"Wyszukaj dzienniki\"\n                />\n              </section>\n\n            </>\n          )}\n          <section className=\"mt-8 flex flex-wrap justify-between\">\n            <Button type=\"submit\">{getMessage('save')}</Button>\n          </section>\n        </form>\n      </FormProvider>\n    </Card>\n  );\n};\n\nexport default UserForm;\n", "/* eslint-disable react/jsx-props-no-spreading */\n\nimport * as React from 'react';\nimport { useState, useEffect } from 'react';\nimport { useForm, FormProvider } from 'react-hook-form';\nimport { InputError } from '../../../components/FormInputs/InputLabel';\nimport useMessages from '../../../hooks/useMessages';\nimport { usePutChangeUserPasswordMutation } from '../../../api/appApi';\nimport { FormInput } from '../../../components/FormInputs';\nimport { MyNewPasswordData } from '../../../api/modules/user/userTypes';\nimport Dialog from '../../../components/Dialog/Dialog';\nimport { translateUserPasswordToApi } from '../../../api/modules/user/userTranslator';\nimport { PASSWORD_REGEX } from '../../../../utils/consts';\n\ninterface Props {\n  isOpen: boolean,\n  onClose: () => void,\n  onPasswordChanged: () => void,\n  id: string\n}\nconst ChangeUserPasswordPopUp = ({\n  isOpen, onClose, onPasswordChanged, id,\n}: Props) => {\n  const getMessage = useMessages();\n  const [postChangePassword, result] = usePutChangeUserPasswordMutation();\n  const methods = useForm<MyNewPasswordData>({ mode: 'onTouched' });\n  const [backendErrors, setBackendErrors] = useState([] as string[]);\n\n  useEffect(() => {\n    if (isOpen) {\n      methods.setFocus('newPassword');\n    }\n  }, [isOpen]);\n\n  const onSubmit = (data: MyNewPasswordData) => {\n    postChangePassword({\n      id,\n      payload: translateUserPasswordToApi(data),\n    });\n  };\n\n  useEffect(() => {\n    if (result.status === 'fulfilled') {\n      setBackendErrors([]);\n      methods.setValue('newPassword', '');\n      methods.setValue('confirmNewPassword', '');\n      onPasswordChanged();\n      onClose();\n    } else if (result.status === 'rejected') {\n      // @ts-ignore\n      const errors = result.error?.data?.errors || [];\n      setBackendErrors(Array.isArray(errors) ? errors : [errors]);\n    }\n  }, [result]);\n\n  const handleSubmit = () => {\n    methods.handleSubmit(onSubmit)();\n  };\n\n  return (\n    <Dialog isOpen={isOpen} onAccept={handleSubmit} onClose={onClose} submitButton preventCloseOnAccept className=\"w-full\">\n      <FormProvider {...methods}>\n        <h2 className=\"border-b w-full pb-8 text-center text-header-sm\">Zmie\u0144 has\u0142o</h2>\n        <form\n          onSubmit={methods.handleSubmit(onSubmit)}\n          className=\"flex flex-col my-7 w-full items-center\"\n        >\n          <FormInput\n            type=\"password\"\n            className=\"mobile:w-full w-2/3\"\n            inputClassName=\"w-full\"\n            id=\"newPassword\"\n            label={getMessage('users.user.changePassword.newPassword')}\n            options={{\n              required: getMessage('users.user.changePassword.newPassword.error.required'),\n              pattern: {\n                value: PASSWORD_REGEX,\n                message: getMessage('users.user.changePassword.error.pattern'),\n              },\n            }}\n          />\n          <FormInput\n            type=\"password\"\n            className=\"mt-4 mobile:w-full w-2/3\"\n            inputClassName=\"w-full\"\n            id=\"confirmNewPassword\"\n            label={getMessage('users.user.changePassword.confirmNewPassword')}\n            options={{\n              required: getMessage('users.user.changePassword.confirmNewPassword.error.required'),\n              pattern: {\n                value: PASSWORD_REGEX,\n                message: getMessage('users.user.changePassword.error.pattern'),\n              },\n            }}\n          />\n          {backendErrors && backendErrors.map((error) => (\n            <InputError key={error} message={error} />\n          ))}\n        </form>\n      </FormProvider>\n    </Dialog>\n  );\n};\n\nexport default ChangeUserPasswordPopUp;\n", "import * as React from 'react';\nimport PageHeader from '../../components/Layout/PageHeader';\nimport useMessages from '../../hooks/useMessages';\nimport ContentWrapper from '../../components/ContentWrapper/ContentWrapper';\nimport Layout from '../../components/Layout/Layout';\nimport CompanyDetailsForm from './CompanyDetailsForm';\nimport CompanyTaxDetailsForm from './CompanyTaxDetailsForm';\nimport { useGetCompanyDataQuery, useGetCompanyTaxDataQuery, useGetCompanySettingsQuery } from '../../api/appApi';\nimport Tabs, { TabElement } from '../../components/Tabs/Tabs';\nimport MailServerConfig from './MailServerConfig';\nimport { usePermissions } from '../../hooks/usePermissions';\nimport NotificationSettingsAdminForm from './NotificationSettingsAdminForm';\n\ninterface Props {\n  tab: 'companyDetails' | 'companyTaxDetails' | 'MailServerConfig' | 'NotificationSetting'\n}\n\nconst CompanyDetailsPage = ({ tab }: Props) => {\n  const getMessage = useMessages();\n  const { data: companyDetails } = useGetCompanyDataQuery();\n  const { data: companyTaxDetails } = useGetCompanyTaxDataQuery();  \n  const { data: companySettings } = useGetCompanySettingsQuery();\n  const { checkRoleType, isModuleEnabled } = usePermissions();\n\n  const tabs: TabElement[] = [\n    {\n      label: getMessage('tabs.settings.companyDetails'),\n      path: '/ustawienia/dane',\n    },\n    {\n      label: getMessage('tabs.settings.companyTaxDetails'),\n      path: '/ustawienia/dane_podatkowe',\n    },\n    {\n      label: getMessage('tabs.settings.mailServerConfig'),\n      path: '/ustawienia/poczta',\n    }\n  ];\n\n  if(isModuleEnabled('notifications')){\n    tabs.push({\n      label: getMessage('tabs.settings.notificationSetting'),\n      path: '/ustawienia/powiadomienia',\n    })\n  }\n\n  checkRoleType('admin');\n  \n  return (\n    <Layout currentPage=\"settings\">\n      <PageHeader pageTitle={getMessage('navigation.settings')} currentPage=\"settings\" />\n      <Tabs tabElements={tabs} />\n      <ContentWrapper>\n        {tab === 'companyDetails' && companyDetails && companySettings && <CompanyDetailsForm companyData={companyDetails} companySettings={companySettings} />}\n        {tab === 'companyTaxDetails' && companyTaxDetails && companySettings && <CompanyTaxDetailsForm companyTaxData={companyTaxDetails} companySettings={companySettings} />}\n        {tab === 'MailServerConfig' && <MailServerConfig />}\n        {tab === 'NotificationSetting' && <NotificationSettingsAdminForm />}\n      </ContentWrapper>\n    </Layout>\n  );\n};\nexport default CompanyDetailsPage;\n", "/* eslint-disable react/jsx-props-no-spreading */\n\nimport * as React from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useEffect } from 'react';\nimport {\n  usePostCompanyAttachmentsMutation,\n  usePutColorPaletteMutation,\n  usePutCompanyDetailsMutation,\n} from '../../api/appApi';\nimport useMessages from '../../hooks/useMessages';\nimport Card from '../../components/Card/Card';\nimport {\n  CompanyData, CompanyFormInputs, CompanySettings,\n} from '../../api/modules/company/companyTypes';\nimport { FormInput, FormRadioButtons } from '../../components/FormInputs';\nimport Button from '../../components/Button/Button';\nimport {\n  translateCompanyAttachmentsToApi,\n  translateCompanyDetailsToApi,\n} from '../../api/modules/company/companyTranslator';\nimport { FormNotice } from '../../components/FormNotice/FormNotice';\nimport CompanyAttachmentInput from './CompanyAttachmentInput';\nimport Chip from '../../components/Chip/Chip';\n\ninterface Props {\n  companyData: CompanyData,\n  companySettings: CompanySettings,\n}\n\nconst CompanyDetailsForm = ({ companyData, companySettings }: Props) => {\n  const getMessage = useMessages();\n\n  const methods = useForm<CompanyFormInputs>({\n    values: {\n      name: companyData.name || '',\n      streetAddress: companyData.streetAddress || '',\n      postalCode: companyData.postalCode || '',\n      city: companyData.city || '',\n      phone: companyData.phone || '',\n      website: companyData.website || '',\n      oldLogo: companyData.logo,\n      oldRegulations: companyData.regulations,\n      oldBackgroundImage: companyData.backgroundImage,\n      colorPalette: companySettings.colorPalette,\n    },\n    mode: 'onTouched',\n  });\n\n  const [postCompanyDetails, detailsResult] = usePutCompanyDetailsMutation();\n  const [postCompanyAttachments, attachmentsResult] = usePostCompanyAttachmentsMutation();\n  const [putColorPalette, paletteResult] = usePutColorPaletteMutation();\n\n  const onSubmit = (data: CompanyFormInputs) => {\n    postCompanyDetails(translateCompanyDetailsToApi(data));\n    if (data.colorPalette) putColorPalette(data.colorPalette);\n    translateCompanyAttachmentsToApi(data).then((data) => postCompanyAttachments(data));\n  };\n\n  const oldLogo = methods.watch('oldLogo');\n  const oldBackgroundImage = methods.watch('oldBackgroundImage');\n  const oldRegulations = methods.watch('oldRegulations');\n\n  const colorPaletteOptions = [\n    { value: 'red', element: <Chip className=\"red w-full bg-light-200\" chipStyle=\"primary\">{getMessage('company.settings.colorPalette.red')}</Chip> },\n    { value: 'green', element: <Chip className=\"green w-full bg-light-200\" chipStyle=\"primary\">{getMessage('company.settings.colorPalette.green')}</Chip> },\n    { value: 'violet', element: <Chip className=\"violet w-full bg-light-200\" chipStyle=\"primary\">{getMessage('company.settings.colorPalette.violet')}</Chip> },\n  ];\n\n  useEffect(() => {\n    methods.reset();\n    methods.setValue('oldLogo', companyData.logo);\n    methods.setValue('oldRegulations', companyData.regulations);\n    methods.setValue('oldBackgroundImage', companyData.backgroundImage);\n  }, [companyData]);\n\n  return (\n    <Card className=\"col-span-full grid grid-cols-1\">\n      {detailsResult.isSuccess && paletteResult.isSuccess && <FormNotice type=\"success\" message={getMessage('form.success')} />}\n      {attachmentsResult.isSuccess && <FormNotice type=\"success\" message={getMessage('company.attachments.success')} />}\n      {detailsResult.isError && <FormNotice type=\"error\" message={getMessage('form.error')} />}\n      {/* @ts-ignore */}\n      {paletteResult.isError && <FormNotice type=\"error\" message={paletteResult.error?.data?.errors || getMessage('form.error')} />}\n      {attachmentsResult.isError && <FormNotice type=\"error\" message={getMessage('company.attachments.error')} />}\n      <FormProvider {...methods}>\n        <form onSubmit={methods.handleSubmit(onSubmit)} className=\"col-span-full grid grid-cols-1 md:grid-cols-2\">\n          <section className=\"col-span-full md:col-span-1\">\n            <FormInput\n              id=\"name\"\n              type=\"text\"\n              label={getMessage('company.details.name')}\n              className=\"w-full md:w-2/3\"\n              inputClassName=\"w-full\"\n              options={{ required: getMessage('company.details.form.name.error.required') }}\n            />\n            <FormInput\n              id=\"postalCode\"\n              type=\"text\"\n              label={getMessage('company.details.postalCode')}\n              className=\"w-full md:w-2/3\"\n              inputClassName=\"w-full\"\n              options={{\n                pattern: {\n                  value: /^[0-9]{2}[-][0-9]{3}/,\n                  message: getMessage('form.postalCode.error.pattern'),\n                },\n              }}\n            />\n            <FormInput\n              id=\"city\"\n              type=\"text\"\n              label={getMessage('company.details.city')}\n              className=\"w-full md:w-2/3\"\n              inputClassName=\"w-full\"\n            />\n            <FormInput\n              id=\"streetAddress\"\n              type=\"text\"\n              label={getMessage('company.details.streetAddress')}\n              className=\"w-full md:w-2/3\"\n              inputClassName=\"w-full\"\n            />\n          </section>\n          <section className=\"col-span-full md:col-span-1\">\n            <FormInput\n              id=\"phone\"\n              type=\"text\"\n              label={getMessage('company.details.phone')}\n              className=\"w-full md:w-2/3\"\n              inputClassName=\"w-full\"\n              options={{\n                pattern: {\n                  value: /^[0-9- +]+$/,\n                  message: getMessage('form.phone.error.pattern'),\n                },\n              }}\n            />\n            <FormInput\n              id=\"website\"\n              type=\"text\"\n              label={getMessage('company.details.website')}\n              className=\"w-full md:w-2/3\"\n              inputClassName=\"w-full\"\n            />\n          </section>\n          <section className=\"col-span-full border-t mt-4 pt-4\">\n            <CompanyAttachmentInput\n              id=\"logo\"\n              oldAttachment={oldLogo}\n              changeAttachmentLabel={getMessage('company.details.changeLogo')}\n              newAttachmentLabel={getMessage('company.details.addLogo')}\n              oldId=\"oldLogo\"\n            />\n            <CompanyAttachmentInput\n              id=\"backgroundImage\"\n              oldAttachment={oldBackgroundImage}\n              changeAttachmentLabel={getMessage('company.details.changeBackgroundImage')}\n              newAttachmentLabel={getMessage('company.details.addBackgroundImage')}\n              oldId=\"oldBackgroundImage\"\n            />\n            <CompanyAttachmentInput\n              id=\"regulations\"\n              oldAttachment={oldRegulations}\n              changeAttachmentLabel={getMessage('company.details.changeRegulations')}\n              newAttachmentLabel={getMessage('company.details.addRegulations')}\n              oldId=\"oldRegulations\"\n            />\n          </section>\n          <section className=\"col-span-full border-t mt-4 pt-4\">\n            <FormRadioButtons id=\"colorPalette\" inputOptions={colorPaletteOptions} label=\"company.settings.colorPalette\" className=\"w-52\" />\n          </section>\n          <div className=\"col-span-2 flex justify-end mt-8\">\n            <Button className=\"smallRange:w-full\" type=\"submit\">{getMessage('save')}</Button>\n          </div>\n        </form>\n      </FormProvider>\n    </Card>\n  );\n};\nexport default CompanyDetailsForm;\n", "import * as React from 'react';\nimport { useFormContext } from 'react-hook-form';\nimport AttachmentPreview from '../../components/AttachmentPreview/AttachmentPreview';\nimport FileUploadPreview from '../../components/AttachmentPreview/FileUploadPreview/FileUploadPreview';\nimport { FormFileInput } from '../../components/FormInputs';\nimport { CompanyAttachment } from '../../api/modules/company/companyTypes';\nimport Button from '../../components/Button/Button';\nimport useMessages from '../../hooks/useMessages';\n\ninterface Props {\n  oldAttachment?: CompanyAttachment,\n  id: string,\n  changeAttachmentLabel: string,\n  newAttachmentLabel: string,\n  oldId: string,\n}\n\nconst CompanyAttachmentInput = ({\n  oldAttachment, id, changeAttachmentLabel, newAttachmentLabel, oldId,\n}: Props) => {\n  const getMessage = useMessages();\n  const methods = useFormContext();\n  const newAttachment = methods.watch(id);\n\n  return (\n    <div className=\"flex justify-between w-full\">\n      <div className=\"flex flex-wrap items-center mb-8\">\n        {oldAttachment && (!newAttachment || newAttachment.length === 0) && (\n          <AttachmentPreview\n            filename={oldAttachment.filename}\n            path={oldAttachment.path}\n            contentType={oldAttachment.content_type}\n            className=\"border border-gray rounded shadow-md shadow-gray-300 mr-6 relative overflow-hidden h-[100px] w-[140px] my-0 mx-0\"\n            imageClassName=\"object-cover h-[100px] w-[140px]\"\n          />\n        )}\n        {newAttachment && newAttachment.length > 0 && (\n          <FileUploadPreview\n            attachment={{ file: newAttachment, description: id }}\n            onDelete={() => {\n              methods.setValue(id, null);\n            }}\n          />\n        )}\n        <FormFileInput\n          id={id}\n          labelText={oldAttachment ? changeAttachmentLabel : newAttachmentLabel}\n          withIcon\n        />\n      </div>\n      {oldAttachment && (!newAttachment || newAttachment.length === 0) && (\n        <Button styleType=\"ghost\" className=\"hover:underline\" onClick={() => methods.setValue(oldId, null)}>\n          {getMessage('remove')}\n        </Button>\n      )}\n    </div>\n  );\n};\n\nexport default CompanyAttachmentInput;\n", "/* eslint-disable react/jsx-props-no-spreading */\n\nimport * as React from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useEffect } from 'react';\nimport {\n  usePutCompanyTaxDetailsMutation,\n} from '../../api/appApi';\nimport useMessages from '../../hooks/useMessages';\nimport Card from '../../components/Card/Card';\nimport {\n  FormCompanyTaxDetails,\n  CompanyTaxDetails,\n} from '../../api/modules/company/companyTypes';\nimport { FormInput } from '../../components/FormInputs';\nimport Button from '../../components/Button/Button';\nimport {\n  translateCompanyTaxDetailsToApi,\n} from '../../api/modules/company/companyTranslator';\nimport { FormNotice } from '../../components/FormNotice/FormNotice';\n\ninterface Props {\n  companyTaxData: CompanyTaxDetails,\n}\n\nconst CompanyTaxDetailsForm = ({ companyTaxData }: Props) => {\n  const getMessage = useMessages();\n  const methods = useForm<CompanyTaxDetails>({\n    values: {\n      vatCode: companyTaxData.vatCode || '',\n      companyCode: companyTaxData.companyCode || '',\n      contactEmail: companyTaxData.contactEmail || '',\n      contactPhoneNumber: companyTaxData.contactPhoneNumber || ''\n    },\n    mode: 'onTouched',\n  });\n\n  const [postCompanyTaxDetails, detailsTaxResult] = usePutCompanyTaxDetailsMutation();\n\n  const onSubmit = (data: CompanyTaxDetails) => {\n    postCompanyTaxDetails(translateCompanyTaxDetailsToApi(data));\n  };\n\n\n  return (\n    <Card className=\"col-span-full grid grid-cols-1\">\n      {detailsTaxResult.isSuccess && <FormNotice type=\"success\" message={getMessage('form.success')} />}\n      {detailsTaxResult.isError && <FormNotice type=\"error\" message={getMessage('form.error')} />}\n      {/* @ts-ignore */}\n      <FormProvider {...methods}>\n        <form onSubmit={methods.handleSubmit(onSubmit)} className=\"col-span-full grid grid-cols-1 md:grid-cols-2\">\n          <section className=\"col-span-full md:col-span-1\">\n            <FormInput\n              id=\"vatCode\"\n              type=\"text\"\n              label={getMessage('company.taxDetails.vatCode')}\n              className=\"w-full md:w-2/3\"\n              inputClassName=\"w-full\"\n              options={{}}\n            />\n            <FormInput\n              id=\"companyCode\"\n              type=\"text\"\n              label={getMessage('company.taxDetails.companyCode')}\n              className=\"w-full md:w-2/3\"\n              inputClassName=\"w-full\"\n              options={{}}\n            />\n          </section>\n          <section>\n            <FormInput\n              id=\"contactEmail\"\n              type=\"text\"\n              label={getMessage('company.taxDetails.contactEmail')}\n              className=\"w-full md:w-2/3\"\n              inputClassName=\"w-full\"\n            />\n            <FormInput\n              id=\"contactPhoneNumber\"\n              type=\"text\"\n              label={getMessage('company.taxDetails.contactPhoneNumber')}\n              className=\"w-full md:w-2/3\"\n              inputClassName=\"w-full\"\n            />\n          </section>\n          <div className=\"col-span-2 flex justify-end mt-8\">\n            <Button className=\"smallRange:w-full\" type=\"submit\">{getMessage('save')}</Button>\n          </div>\n        </form>\n      </FormProvider>\n    </Card>\n  );\n};\nexport default CompanyTaxDetailsForm;\n", "/* eslint-disable react/jsx-props-no-spreading */\nimport * as React from 'react';\nimport MailServerConfigForm from './MailServerConfigForm';\nimport Card from '../../components/Card/Card';\nimport TestMailServerConfigForm from './TestMailServerConfigForm';\n\nconst MailServerConfig = () => (\n  <Card className=\"col-span-full grid grid-cols-1\">\n    <MailServerConfigForm />\n    <TestMailServerConfigForm />\n  </Card>\n);\n\nexport default MailServerConfig;\n", "/* eslint-disable react/jsx-props-no-spreading */\nimport * as React from 'react';\nimport { useState, useEffect } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useGetMailServerConfigQuery, usePutChangeMailServerConfigMutation } from '../../api/appApi';\nimport { FormInput, FormSelect } from '../../components/FormInputs';\nimport Button from '../../components/Button/Button';\nimport useMessages from '../../hooks/useMessages';\nimport { MailServerConfigFormInputs, authentications, communicationEncryptions } from '../../api/modules/company/companyTypes';\nimport { translateMailServerConfigToApi } from '../../api/modules/company/companyTranslator';\nimport { FormNotice } from '../../components/FormNotice/FormNotice';\n\nconst MailServerConfigForm = () => {\n  const getMessage = useMessages();\n  const { data: currentConfig } = useGetMailServerConfigQuery();\n  const [isNoAuthenticationSelected, setIsNoAuthenticationSelected] = useState(false);\n  const [changeMailServerConfig, { isError, isSuccess }] = usePutChangeMailServerConfigMutation();\n\n  const methods = useForm<MailServerConfigFormInputs>({\n    values: {\n      address: currentConfig?.address || '',\n      authentication: currentConfig?.authentication || authentications[0],\n      domain: currentConfig?.domain || '',\n      port: currentConfig?.port || '',\n      userName: currentConfig?.userName || '',\n      password: '',\n      fromEmail: currentConfig?.fromEmail || '',\n      communicationEncryption: currentConfig?.communicationEncryption || communicationEncryptions[0],\n    },\n    mode: 'onTouched',\n  });\n\n  const watchAuthentication = methods.watch('authentication');\n\n  useEffect(() => {\n    if (watchAuthentication && watchAuthentication.toLowerCase() === 'none') {\n      setIsNoAuthenticationSelected(true);\n    } else {\n      setIsNoAuthenticationSelected(false);\n    }\n  }, [watchAuthentication]);\n\n  const onSubmit = (data: MailServerConfigFormInputs) => {\n    changeMailServerConfig(translateMailServerConfigToApi(data));\n  };\n\n  const authenticationOptions = authentications.map((method) => ({ value: method, optionLabel: method.toUpperCase() }));\n  const communicationEncryptionOptions = communicationEncryptions.map((method) => ({ value: method, optionLabel: method === 'none' ? method : method.toUpperCase() }));\n\n  const validateLength = (value: string) => {\n    if (!isNoAuthenticationSelected && value.length === 0) {\n      return getMessage('company.mailServerConfig.form.error.required');\n    }\n    return true;\n  };\n\n  return (\n    <FormProvider {...methods}>\n      {isError && <FormNotice noticeClassName=\"col-span-full\" type=\"error\" message={getMessage('form.error')} />}\n      {isSuccess && <FormNotice noticeClassName=\"col-span-full\" type=\"success\" message={getMessage('form.success')} />}\n      <form onSubmit={methods.handleSubmit(onSubmit)} className=\"col-span-full grid grid-cols-1 md:grid-cols-2 pb-6\">\n        <FormInput\n          id=\"address\"\n          type=\"text\"\n          label={`${getMessage('company.mailServerConfig.form.address')}*`}\n          inputClassName=\"w-full md:w-2/3\"\n          placeholder=\"np. http://mail.example.com\"\n          options={{ required: getMessage('company.mailServerConfig.form.error.required') }}\n        />\n        <FormInput\n          id=\"domain\"\n          type=\"text\"\n          label={`${getMessage('company.mailServerConfig.form.domain')}*`}\n          className=\"md:col-start-1\"\n          inputClassName=\"w-full md:w-2/3\"\n          placeholder=\"np. example.com\"\n          options={{ required: getMessage('company.mailServerConfig.form.error.required') }}\n        />\n        <FormInput\n          id=\"port\"\n          type=\"text\"\n          label={`${getMessage('company.mailServerConfig.form.port')}*`}\n          className=\"md:col-start-1\"\n          inputClassName=\"w-full md:w-2/3\"\n          placeholder=\"np. 8080\"\n          options={{ required: getMessage('company.mailServerConfig.form.error.required') }}\n        />\n        <FormSelect\n          id=\"communicationEncryption\"\n          label={`${getMessage('company.mailServerConfig.form.communicationEncryption')}*`}\n          className=\"md:col-start-1\"\n          inputClassName=\"w-full md:w-2/3\"\n          selectOptions={communicationEncryptionOptions}\n          options={{ required: getMessage('company.mailServerConfig.form.error.required') }}\n        />\n        <FormSelect\n          id=\"authentication\"\n          label={`${getMessage('company.mailServerConfig.form.authentication')}*`}\n          className=\"md:row-start-1 md:col-start-2\"\n          inputClassName=\"w-full md:w-2/3\"\n          selectOptions={authenticationOptions}\n          options={{ required: getMessage('company.mailServerConfig.form.error.required') }}\n        />\n        <FormInput\n          id=\"userName\"\n          type=\"text\"\n          label={`${getMessage('company.mailServerConfig.form.userName')}${isNoAuthenticationSelected ? '' : '*'}`}\n          className=\"md:row-start-2 md:col-start-2\"\n          inputClassName=\"w-full md:w-2/3\"\n          disabled={isNoAuthenticationSelected}\n          options={{ validate: (value) => validateLength(value) }}\n\n        />\n        <div className=\"md:row-start-3 md:col-start-2 w-full md:w-2/3 flex justify-between items-end\">\n          <FormInput\n            id=\"password\"\n            type=\"password\"\n            label={`${getMessage('company.mailServerConfig.form.password')}${isNoAuthenticationSelected ? '' : '*'}`}\n            className=\"w-1/2\"\n            inputClassName=\"w-full\"\n            disabled={isNoAuthenticationSelected}\n            options={{ validate: (value) => validateLength(value) }}\n          />\n        </div>\n        <FormInput\n          id=\"fromEmail\"\n          type=\"email\"\n          label={`${getMessage('company.mailServerConfig.form.fromEmail')}*`}\n          className=\"md:row-start-4 md:col-start-2\"\n          inputClassName=\"w-full md:w-2/3\"\n          options={{ required: getMessage('company.mailServerConfig.form.error.required') }}\n          placeholder=\"np. noreply@example.com\"\n        />\n        <div className=\"md:col-span-2 flex justify-end mt-8\">\n          <Button type=\"submit\">{getMessage('save')}</Button>\n        </div>\n      </form>\n    </FormProvider>\n  );\n};\n\nexport default MailServerConfigForm;\n", "export interface ApiCompanySettingsResponse {\n  settings: {\n    color_palette: ColorPalette,\n    hoa_mode: boolean,\n    tenantless_mode: boolean,\n    meters_enabled: boolean,\n    resolutions_enabled: boolean,\n    settlements_enabled: boolean,\n    payments_enabled: boolean,\n    tickets_enabled: boolean,\n    documents_enabled: boolean,\n    announcements_enabled: boolean,\n    portal_pro_enabled: boolean,\n    notifications_enabled: boolean,\n    version: string,\n  }\n}\n\nexport interface ApiCompanyNotificationSettingsResponse {\n  notification_settings: {\n    email_notifications: any,\n    online_notifications: any\n  }\n}\n\nexport interface CompanySettings {\n  colorPalette: ColorPalette,\n  homeownerAssociationsMode: boolean,\n  tenantlessMode: boolean,\n  metersModuleEnabled: boolean,\n  resolutionsModuleEnabled: boolean,\n  settlementsModuleEnabled: boolean,\n  paymentsModuleEnabled: boolean,\n  ticketsModuleEnabled: boolean,\n  documentsModuleEnabled: boolean,\n  announcementsModuleEnabled: boolean,\n  notificationsModuleEnabled: boolean,\n  portalProModuleEnabled: boolean,\n  version: string,\n}\nexport interface CompanyNotificationSettings {\n  onlineNotifications: any,\n  emailNotifications: any\n}\n\nexport interface ApiCompanyDetailsResponse {\n  details: ApiCompanyDetails,\n  attachments: ApiCompanyAttachments,\n}\n\nexport interface ApiCompanyTaxDetailsResponse {\n  tax_details: ApiCompanyTaxDetails,\n}\n\nexport interface ApiCompanyDetails {\n  name: string,\n  street_address: string,\n  postcode: string,\n  city: string,\n  phone: string,\n  website: string\n}\n\nexport interface ApiCompanyTaxDetails {\n  vat_code: string,\n  company_code: string,\n  contact_email: string,\n  contact_phone_number: string,\n}\n\nexport interface ApiCompanyAttachments {\n  background_photo: CompanyAttachment,\n  logo: CompanyAttachment,\n  regulations: CompanyAttachment,\n}\n\nexport interface CompanyAttachment {\n  filename: string,\n  path: string,\n  content_type: string,\n}\n\nexport interface CompanyDetails {\n  name: string,\n  streetAddress: string,\n  postalCode: string,\n  city: string,\n  phone: string,\n  website: string,\n}\n\nexport interface CompanyTaxDetails {\n  vatCode: string,\n  companyCode: string,\n  contactEmail: string,\n  contactPhoneNumber: string\n}\n\nexport interface CompanyData extends CompanyDetails {\n  backgroundImage?: CompanyAttachment,\n  logo?: CompanyAttachment,\n  regulations?: CompanyAttachment,\n}\n\nexport interface CompanyFormInputs extends CompanyDetails {\n  oldLogo?: CompanyAttachment,\n  oldBackgroundImage?: CompanyAttachment,\n  oldRegulations?: CompanyAttachment,\n  backgroundImage?: FileList,\n  logo?: FileList,\n  regulations?: FileList,\n  colorPalette?: ColorPalette,\n}\n\nexport const colorPalettes = ['red', 'green', 'violet'] as const;\nexport type ColorPalette = typeof colorPalettes[number];\n\nexport interface FormCompanyDetails extends ApiCompanyDetails {}\nexport interface FormCompanyTaxDetails extends ApiCompanyTaxDetails {}\n\ntype ApiMailServerConfig = {\n  address: string,\n  authentication: Authentication,\n  domain: string,\n  port: string,\n  user_name: string,\n  from_email: string,\n  communication_encryption: CommunicationEncryption,\n};\n\nexport type ApiMailServerConfigResponse = {\n  mail_server_config: ApiMailServerConfig\n};\n\nexport const communicationEncryptions = ['none', 'starttls', 'ssl', 'tls'] as const;\nexport type CommunicationEncryption = typeof communicationEncryptions[number];\n\nexport const authentications = ['none', 'plain', 'login', 'cram_md5'] as const;\nexport type Authentication = typeof authentications[number];\n\nexport type MailServerConfig = Omit<ApiMailServerConfig, 'user_name' | 'from_email' | 'communication_encryption'> & {\n  userName: string,\n  fromEmail: string,\n  communicationEncryption: CommunicationEncryption,\n};\n\nexport type MailServerConfigFormInputs = MailServerConfig & {\n  password: string,\n};\n\nexport type ApiPutMailServerConfig = ApiMailServerConfig & {\n  password?: string,\n};\n\nexport type ApiTestMailServerConfig = {\n  email: string\n};\n", "/* eslint-disable react/jsx-props-no-spreading */\nimport * as React from 'react';\nimport { useEffect } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport useMessages from '../../hooks/useMessages';\nimport { FormInput } from '../../components/FormInputs';\nimport Button from '../../components/Button/Button';\nimport { usePostTestMailServerConfigMutation } from '../../api/appApi';\nimport { FormNotice } from '../../components/FormNotice/FormNotice';\nimport { ApiTestMailServerConfig } from '../../api/modules/company/companyTypes';\n\nconst TestMailServerConfigForm = () => {\n  const getMessage = useMessages();\n  const [testMailServerConfig, { isError, isSuccess }] = usePostTestMailServerConfigMutation();\n  const methods = useForm<{ email: string }>({\n    values: {\n      email: '',\n    },\n  });\n\n  useEffect(() => {\n    if (isSuccess) methods.setValue('email', '');\n  }, [isSuccess]);\n\n  const onSubmit = (data: ApiTestMailServerConfig) => testMailServerConfig(data);\n\n  return (\n    <div className=\"border-t border-t-stroke-grey-300 py-6\">\n      {isError && <FormNotice type=\"error\" message={getMessage('company.mailServerConfig.test.error')} />}\n      {isSuccess && <FormNotice type=\"success\" message={getMessage('company.mailServerConfig.test.success')} />}\n      <div className=\"text-title-semibold mb-4\">{getMessage('company.mailServerConfig.test.form.label')}</div>\n      <FormProvider {...methods}>\n        <form onSubmit={methods.handleSubmit(onSubmit)} className=\"grid grid-cols-1 md:grid-cols-2 mt-4\">\n          <FormInput\n            type=\"email\"\n            id=\"email\"\n            inputClassName=\"w-full md:w-2/3\"\n            label={getMessage('company.mailServerConfig.test.form.email')}\n            options={{ required: getMessage('company.mailServerConfig.test.form.email.required') }}\n          />\n          <div className=\"flex justify-end items-center mt-8\">\n            <Button type=\"submit\">{getMessage('company.mailServerConfig.test.form.button')}</Button>\n          </div>\n        </form>\n      </FormProvider>\n    </div>\n  );\n};\n\nexport default TestMailServerConfigForm;\n", "import * as React from 'react';\nimport { useForm, FormProvider } from 'react-hook-form';\nimport { useEffect } from 'react';\nimport useMessages from '../../hooks/useMessages';\nimport { useGetCompanyNotificationSettingsQuery, usePatchCompanyNotificationSettingMutation } from '../../api/appApi';\nimport Card from '../../components/Card/Card';\nimport { FormCheckboxInput } from '../../components/FormInputs';\nimport Button from '../../components/Button/Button';\nimport { FormNotice } from '../../components/FormNotice/FormNotice';\nimport useHomeownerAssociationsMode from '../../hooks/useHomeownerAssociationsMode';\nimport { usePermissions } from '../../hooks/usePermissions';\nimport useTenantlessMode from '../../hooks/useTenantlessMode';\n\nconst NotificationSettingsAdminForm = () => {\n  const getMessage = useMessages();\n  const tenantlessMode = useTenantlessMode();\n  const { checkModuleEnabled, isModuleEnabled } = usePermissions();\n  const [changeCompanyNotificationSetting, result] = usePatchCompanyNotificationSettingMutation();\n  const companySettings = useGetCompanyNotificationSettingsQuery();\n  const hoaMode = useHomeownerAssociationsMode();\n  const enabledOnline = getMessage('profile.settings.notifications.online');\n  const enabledEmail = getMessage('profile.settings.notifications.email');\n  const ticketNotificationsAvailable = !tenantlessMode || isModuleEnabled('tickets');\n\n  const transformedNotificationsSettings = {\n    online_worker_new_tickets: companySettings.data?.onlineNotifications?.new_tickets,\n    online_worker_my_tickets: companySettings.data?.onlineNotifications?.my_tickets,\n    online_worker_my_tasks: companySettings.data?.onlineNotifications?.my_tasks,\n    online_worker_new_assignments: companySettings.data?.onlineNotifications?.new_assignments,\n    online_worker_tenants: companySettings.data?.onlineNotifications?.tenants,\n    online_tenant_announcements: companySettings.data?.onlineNotifications?.announcements,\n    online_tenant_meters: companySettings.data?.onlineNotifications?.meters,\n    online_tenant_tickets: companySettings.data?.onlineNotifications?.tickets,\n    online_tenant_resolutions: companySettings.data?.onlineNotifications?.resolutions,\n\n    email_worker_new_tickets: companySettings.data?.emailNotifications?.new_tickets,\n    email_worker_my_tickets: companySettings.data?.emailNotifications?.my_tickets,\n    email_worker_my_tasks: companySettings.data?.emailNotifications?.my_tasks,\n    email_worker_new_assignments: companySettings.data?.emailNotifications?.new_assignments,\n    email_worker_tenants: companySettings.data?.emailNotifications?.tenants,\n    email_tenant_announcements: companySettings.data?.emailNotifications?.announcements,\n    email_tenant_meters: companySettings.data?.emailNotifications?.meters,\n    email_tenant_tickets: companySettings.data?.emailNotifications?.tickets,\n    email_tenant_resolutions: companySettings.data?.emailNotifications?.resolutions,\n\n    online_worker_related_documents: companySettings.data?.onlineNotifications?.related_documents,\n    online_worker_ksef_invoices: companySettings.data?.onlineNotifications?.ksef_invoices,\n    online_tenants_documents: companySettings.data?.onlineNotifications?.documents,\n    email_worker_related_documents: companySettings.data?.emailNotifications?.related_documents,\n    email_worker_ksef_invoices: companySettings.data?.emailNotifications?.ksef_invoices,\n    email_tenants_documents: companySettings.data?.emailNotifications?.documents,\n  };\n\n  const methods = useForm<any>({\n    values: transformedNotificationsSettings,\n  });\n\n  const onSubmit = (data: any) => {\n    changeCompanyNotificationSetting(data);\n  };\n\n  const [\n    watchTickets, watchMeters, watchAnnouncements, watchResolutions,\n    watchWorkerDocuments, watchTenantsDocuments, watchWorkerKsefInvoices,\n  ] = methods.watch(\n    [\n      'online_tenant_tickets',\n      'online_tenant_meters',\n      'online_tenant_announcements',\n      'online_tenant_resolutions',\n      'online_worker_related_documents',\n      'online_tenants_documents',\n      'online_worker_ksef_invoices',\n    ],\n  );\n\n  checkModuleEnabled('notifications');\n\n  useEffect(() => {\n    if (!watchTickets) {\n      methods.setValue('email_tenant_tickets', false);\n    }\n    if (!watchMeters) {\n      methods.setValue('email_tenant_meters', false);\n    }\n    if (!watchAnnouncements) {\n      methods.setValue('email_tenant_announcements', false);\n    }\n    if (!watchResolutions) {\n      methods.setValue('email_tenant_resolutions', false);\n    }\n  }, [watchTickets, watchMeters, watchAnnouncements, watchResolutions]);\n\n  const [watchMyTickets, watchMyTasks, watchNewTickets, watchNewAssignment, watchTenants] = methods.watch(\n    ['online_worker_my_tickets', 'online_worker_my_tasks', 'online_worker_new_tickets', 'online_worker_new_assignments', 'online_worker_tenants'],\n  );\n\n  useEffect(() => {\n    if (!watchMyTickets) {\n      methods.setValue('email_worker_my_tickets', false);\n    }\n    if (!watchMyTasks) {\n      methods.setValue('email_worker_my_tasks', false);\n    }\n    if (!watchNewTickets) {\n      methods.setValue('email_worker_new_tickets', false);\n    }\n    if (!watchNewAssignment) {\n      methods.setValue('email_worker_new_assignments', false);\n    }\n    if (!watchTenants) {\n      methods.setValue('email_worker_tenants', false);\n    }\n    if (!watchWorkerDocuments) {\n      methods.setValue('email_worker_related_documents', false);\n    }\n    if (!watchWorkerKsefInvoices) {\n      methods.setValue('email_worker_ksef_invoices', false);\n    }\n    if (!watchTenantsDocuments) {\n      methods.setValue('email_tenants_documents', false);\n    }\n  }, [\n    watchMyTickets, watchMyTasks, watchNewTickets, watchNewAssignment, watchTenants,\n    watchWorkerDocuments, watchWorkerKsefInvoices, watchTenantsDocuments,\n  ]);\n\n  return (\n    <Card className=\"col-span-full\">\n      {result.status === 'fulfilled' && <FormNotice type=\"success\" message={getMessage('form.success')} />}\n      {/* @ts-ignore */}\n      {result.isError && <FormNotice type=\"error\" message={result.error?.data?.errors || getMessage('form.error')} />}\n      {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n      <FormProvider {...methods}>\n        <form onSubmit={methods.handleSubmit(onSubmit)}>\n          <div className=\"w-full text-title mb-10 flex flew-row\">{getMessage('profile.settings.adminNotificationsExpl')}</div>\n\n          <div className=\"w-full text-title-semibold mb-4 flex flew-row p-1 border-2 border-dashed \">{getMessage('profile.settings.workerNotifications')}</div>\n\n          <div className=\"mt-10 mb-8 w-full text-title-semibold flex flew-row\">\n            <span className=\"flex mb-2 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.group')}</span>\n            <span className=\"flex mb-2 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.online')}</span>\n            <span className=\"flex mb-2 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.email')}</span>\n          </div>\n\n          {ticketNotificationsAvailable && (\n            <div className=\"w-full text-title-semibold mb-4 flex flew-row\">\n              <span className=\"flex mb-1 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.newTickets')}</span>\n              <FormCheckboxInput id=\"online_worker_new_tickets\" className=\"flex mb-2 -ml-2 w-1/3\" tooltip={enabledOnline} />\n              <FormCheckboxInput id=\"email_worker_new_tickets\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!watchNewTickets} tooltip={enabledEmail} />\n            </div>\n          )}\n\n          <div className=\"w-full text-title-semibold mb-4 flex flew-row\">\n            <span className=\"flex mb-1 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.newAssignements')}</span>\n            <FormCheckboxInput id=\"online_worker_new_assignments\" className=\"flex mb-2 -ml-2 w-1/3\" tooltip={enabledOnline} />\n            <FormCheckboxInput id=\"email_worker_new_assignments\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!watchNewAssignment} tooltip={enabledEmail} />\n          </div>\n\n          {ticketNotificationsAvailable && (\n            <div className=\"w-full text-title-semibold mb-4 flex flew-row\">\n              <span className=\"flex mb-1 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.myTickets')}</span>\n              <FormCheckboxInput id=\"online_worker_my_tickets\" className=\"flex mb-2 -ml-2 w-1/3\" tooltip={enabledOnline} />\n              <FormCheckboxInput id=\"email_worker_my_tickets\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!watchMyTickets} tooltip={enabledEmail} />\n            </div>\n          )}\n\n          <div className=\"w-full text-title-semibold mb-4 flex flew-row\">\n            <span className=\"flex mb-1 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.myTasks')}</span>\n            <FormCheckboxInput id=\"online_worker_my_tasks\" className=\"flex mb-2 -ml-2 w-1/3\" tooltip={enabledOnline} />\n            <FormCheckboxInput id=\"email_worker_my_tasks\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!watchMyTasks} tooltip={enabledEmail} />\n          </div>\n\n          {!tenantlessMode && (\n            <div className=\"w-full text-title-semibold mb-4 flex flew-row\">\n              <span className=\"flex mb-1 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.tenants')}</span>\n              <FormCheckboxInput id=\"online_worker_tenants\" className=\"flex mb-2 -ml-2 w-1/3\" tooltip={enabledOnline} />\n              <FormCheckboxInput id=\"email_worker_tenants\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!watchTenants} tooltip={enabledEmail} />\n            </div>\n          )}\n\n          {tenantlessMode && isModuleEnabled('announcements') && (\n            <div className=\"w-full text-title-semibold mb-4 flex flew-row\">\n              <span className=\"flex mb-1 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.announcements')}</span>\n              <FormCheckboxInput id=\"online_tenant_announcements\" className=\"flex mb-2 -ml-2 w-1/3\" tooltip={enabledOnline} />\n              <FormCheckboxInput id=\"email_tenant_announcements\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!watchAnnouncements} tooltip={enabledEmail} />\n            </div>\n          )}\n\n          <div className=\"w-full text-title-semibold mb-4 flex flew-row\">\n            <span className=\"flex mb-1 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.workerDocuments')}</span>\n            <FormCheckboxInput id=\"online_worker_related_documents\" className=\"flex mb-2 -ml-2 w-1/3\" tooltip={enabledOnline} />\n            <FormCheckboxInput id=\"email_worker_related_documents\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!watchWorkerDocuments} tooltip={enabledEmail} />\n          </div>\n\n          <div className=\"w-full text-title-semibold mb-4 flex flew-row\">\n            <span className=\"flex mb-1 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.workerKsefInvoices')}</span>\n            <FormCheckboxInput id=\"online_worker_ksef_invoices\" className=\"flex mb-2 -ml-2 w-1/3\" tooltip={enabledOnline} />\n            <FormCheckboxInput id=\"email_worker_ksef_invoices\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!watchWorkerKsefInvoices} tooltip={enabledEmail} />\n          </div>\n\n          {!tenantlessMode && (\n            <>\n              <div className=\"w-full text-title-semibold my-4 flex flew-row p-1 border-2 border-dashed \">{getMessage('profile.settings.tenantNotifications')}</div>\n\n              <div className=\"mt-10 mb-8 w-full text-title-semibold flex flew-row\">\n                <span className=\"flex mb-2 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.group')}</span>\n                <span className=\"flex mb-2 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.online')}</span>\n                <span className=\"flex mb-2 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.email')}</span>\n              </div>\n\n              <div className=\"w-full text-title-semibold mb-4 flex flew-row\">\n                <span className=\"flex mb-1 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.announcements')}</span>\n                <FormCheckboxInput id=\"online_tenant_announcements\" className=\"flex mb-2 -ml-2 w-1/3\" tooltip={enabledOnline} />\n                <FormCheckboxInput id=\"email_tenant_announcements\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!watchAnnouncements} tooltip={enabledEmail} />\n              </div>\n\n              <div className=\"w-full text-title-semibold mb-4 flex flew-row\">\n                <span className=\"flex mb-1 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.meters')}</span>\n                <FormCheckboxInput id=\"online_tenant_meters\" className=\"flex mb-2 -ml-2 w-1/3\" tooltip={enabledOnline} />\n                <FormCheckboxInput id=\"email_tenant_meters\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!watchMeters} tooltip={enabledEmail} />\n              </div>\n\n              <div className=\"w-full text-title-semibold mb-4 flex flew-row\">\n                <span className=\"flex mb-1 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.tenantsDocuments')}</span>\n                <FormCheckboxInput id=\"online_tenants_documents\" className=\"flex mb-2 -ml-2 w-1/3\" tooltip={enabledOnline} />\n                <FormCheckboxInput id=\"email_tenants_documents\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!watchTenantsDocuments} tooltip={enabledEmail} />\n              </div>\n\n              <div className=\"w-full text-title-semibold mb-4 flex flew-row\">\n                <span className=\"flex mb-1 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.tickets')}</span>\n                <FormCheckboxInput id=\"online_tenant_tickets\" className=\"flex mb-2 -ml-2 w-1/3\" tooltip={enabledOnline} />\n                <FormCheckboxInput id=\"email_tenant_tickets\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!watchTickets} tooltip={enabledEmail} />\n              </div>\n\n              {hoaMode && (\n              <div className=\"w-full text-title-semibold mb-4 flex flew-row\">\n                <span className=\"flex mb-1 -ml-2 w-1/3\">{getMessage('profile.settings.notifications.resolutions')}</span>\n                <FormCheckboxInput id=\"online_tenant_resolutions\" className=\"flex mb-2 -ml-2 w-1/3\" tooltip={enabledOnline} />\n                <FormCheckboxInput id=\"email_tenant_resolutions\" className=\"flex mb-2 -ml-2 w-1/3\" disabled={!watchResolutions} tooltip={enabledEmail} />\n              </div>\n              )}\n            </>\n          )}\n\n          <section className=\"mt-8 flex flex-wrap justify-end\">\n            <Button type=\"submit\">{getMessage('save')}</Button>\n          </section>\n        </form>\n      </FormProvider>\n    </Card>\n  );\n};\n\nexport default NotificationSettingsAdminForm;\n", "import * as React from 'react';\nimport { useEffect } from 'react';\nimport { useIntl } from 'react-intl';\nimport PageHeader from '../../components/Layout/PageHeader';\nimport Layout from '../../components/Layout/Layout';\nimport { useGetFullUserAccountQuery } from '../../api/appApi';\nimport { usePermissions } from '../../hooks/usePermissions';\nimport TenantDashboardPage from './TenantDashboardPage';\nimport WorkerDashboardPage from './WorkerDashboardPage';\n\nconst DashboardPage = () => {\n  const { data: user } = useGetFullUserAccountQuery();\n  const intl = useIntl();\n  const { hasRoleType, checkPermission, isTenantDataEnabled } = usePermissions();\n\n  useEffect(() => {\n    if (isTenantDataEnabled()) checkPermission('announcements_list'); // redirect for admin\n  }, [user, isTenantDataEnabled]);\n\n  return (\n    <Layout currentPage=\"dashboard\">\n      <PageHeader pageTitle={intl.formatMessage({ id: 'dashboard.header' }, { username: user?.fullName })} currentPage=\"dashboard\" />\n      {hasRoleType('tenant') && isTenantDataEnabled() && <TenantDashboardPage />}\n      {hasRoleType('worker') && <WorkerDashboardPage />}\n    </Layout>\n  );\n};\n\nexport default DashboardPage;\n", "import * as React from 'react';\nimport AnnouncementsWidget from './Widgets/AnnouncementsWidget';\nimport TicketsWidget from './Widgets/TicketsWidget';\nimport SettlementsWidget from './Widgets/SettlementsWidget';\nimport { usePermissions } from '../../hooks/usePermissions';\nimport ContentWrapper from '../../components/ContentWrapper/ContentWrapper';\nimport MetersWidget from './Widgets/MetersWidget';\nimport ResolutionsWidget from './Widgets/ResolutionsWidget';\n\nconst TenantDashboardPage = () => {\n  const { hasPermission, isModuleEnabled } = usePermissions();\n\n  return (\n    <ContentWrapper>\n      <div className=\"col-span-12 lg:col-span-4 lg:col-start-9 lg:row-start-1 lg:row-span-1 flex flex-wrap lg:flex-none gap-y-6\">\n        {isModuleEnabled('settlements') && hasPermission('settlements_balance_list') && <SettlementsWidget />}\n        {isModuleEnabled('meters') && hasPermission('meters_measurement_add') && <MetersWidget />}\n        {isModuleEnabled('resolutions') && hasPermission('resolutions_vote_add') && <ResolutionsWidget />}\n      </div>\n      <div className=\"col-span-12 col-start-1 lg:col-span-8 lg:col-start-1 lg:row-start-1 lg:row-span-2\">\n        {isModuleEnabled('announcements') && hasPermission('announcements_list') && <AnnouncementsWidget />}\n        {isModuleEnabled('tickets') && hasPermission('tickets_add') && <TicketsWidget />}\n      </div>\n    </ContentWrapper>\n  );\n};\n\nexport default TenantDashboardPage;\n", "/* eslint-disable react/no-array-index-key */\n/* eslint-disable jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions */\nimport * as React from 'react';\nimport format from 'date-fns/format';\nimport { useNavigate, Link } from 'react-router-dom';\nimport classNames from 'classnames';\nimport { useGetAnnouncementsQuery } from '../../../api/appApi';\nimport Chip from '../../../components/Chip/Chip';\nimport TableContentPlaceholder from '../../../components/Table/TableContentPlaceholder';\nimport TypeBadge from '../../../components/TypeBadge/TypeBadge';\nimport Card from '../../../components/Card/Card';\nimport AnnouncementIcon from '../../../icons/announcements.svg';\nimport useMessages from '../../../hooks/useMessages';\nimport SpinnerItem from '../../../components/Spinner/SpinnerItem';\nimport { usePermissions } from '../../../hooks/usePermissions';\n\nconst AnnouncementsWidget = () => {\n  const { data, isLoading } = useGetAnnouncementsQuery({ archived: false });\n  const getMessage = useMessages();\n  const navigate = useNavigate();\n  const { hasRoleType } = usePermissions();\n\n  const announcements = data ? data.announcements.slice(0, 4) : [];\n\n  return (\n    <div className=\"col-span-full lg:col-span-8\">\n      <div className=\"col-span-12 flex justify-between\">\n        <p className=\"text-header-xs mb-2\">{getMessage('dashboard.widget.announcements', {number: data?.metadata?.count})}</p>\n        {hasRoleType('worker') && (\n          <button onClick={() => navigate('/aktualnosci/nowe', { state: { returnTo: '/' } })} type=\"button\" className=\"text-main bg-background-white rounded-sm text-xs font-bold hover:text-hover hover:underline px-4 mb-1\">\n            {getMessage('dashboard.widget.announcements.addAnnouncement')}\n          </button>\n        )}\n      </div>\n      <Card className={`${announcements.length === 4 ? 'h-[509px] md:h-[365px]' : 'auto'}  md:!p-6`}>\n        {isLoading && [...Array(4)].map((_, index) => (\n          <SpinnerItem\n            key={index}\n            containerStyles=\"first:h-[109px] last:h-[109px] h-[125px] md:h-auto md:last:h-auto md:first:h-auto w-full border-b last:border-b-0 py-4 first:pt-0 last:pb-0 flex gap-4\"\n          />\n        ))}\n        {announcements.length === 0\n          ? <TableContentPlaceholder />\n          : announcements.map(({\n            id, createdAt, title, description, status, announcementNumber,\n          }) => (\n            <li\n              className=\"w-full border-b last:border-b-0 py-4 first:pt-0 last:pb-0 flex gap-4\n              hover:cursor-pointer hover:bg-gray-50 shadow-gray\n              focus-within:border focus-within:border-hover relative\"\n              key={id}\n            >\n              <TypeBadge className=\"flex-none\" badgeStyle={status === 'unread' ? 'red' : 'grey'}>\n                <AnnouncementIcon />\n              </TypeBadge>\n              <div className=\"flex-grow md:flex md:justify-between md:gap-4 truncate\">\n                <div className=\"flex flex-col md:flex-grow truncate\">\n                  <p className={classNames(\n                    'text-typography-black mb-2 truncate',\n                    status === 'unread' ? 'text-title-semibold' : 'text-title-medium',\n                  )}\n                  >\n                    {title}\n                  </p>\n                  <p className=\"text-text-md-medium text-typography-dark truncate\">{description}</p>\n                </div>\n                <Chip chipStyle=\"gray\" className=\"mobile:mt-4 md:flex-none w-fit\">\n                  {format(new Date(createdAt), 'dd-MM-yyyy')}\n                </Chip>\n              </div>\n              <Link\n                to={`/aktualnosci/${id}`}\n                state={{ returnTo: '/' }}\n                aria-label={`Przejd\u017A do szczeg\u00F3\u0142\u00F3w aktualno\u015Bci nr ${announcementNumber} ${title}`}\n                className='after:absolute after:content-[\"\"] after:h-full after:w-full after:left-0 after:top-0'\n              />\n            </li>\n          ))}\n      </Card>\n    </div>\n  );\n};\n\nexport default AnnouncementsWidget;\n", "import * as React from 'react';\nimport Spinner from './Spinner';\n\ninterface Props {\n  containerStyles?: string,\n  spinnerStyles?: string\n}\n\nconst SpinnerItem = ({ containerStyles, spinnerStyles }: Props) => (\n  <li className={containerStyles}>\n    <Spinner className={spinnerStyles} />\n  </li>\n);\n\nexport default SpinnerItem;\n", "/* eslint-disable react/no-array-index-key */\n/* eslint-disable jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions */\nimport * as React from 'react';\nimport { useState } from 'react';\nimport format from 'date-fns/format';\nimport { Link } from 'react-router-dom';\nimport classNames from 'classnames';\nimport { useGetTicketStatusesQuery, useGetTicketsQuery } from '../../../api/appApi';\nimport Chip from '../../../components/Chip/Chip';\nimport TableContentPlaceholder from '../../../components/Table/TableContentPlaceholder';\nimport TypeBadge from '../../../components/TypeBadge/TypeBadge';\nimport TicketsIcon from '../../../icons/tickets.svg';\nimport useMessages from '../../../hooks/useMessages';\nimport capitalize from '../../../../utils/formatters';\nimport WidgetTabs from '../../../components/Tabs/WidgetTabs';\nimport SpinnerItem from '../../../components/Spinner/SpinnerItem';\n\nconst TicketsWidget = () => {\n  const { data: ticketsStatuses } = useGetTicketStatusesQuery();\n  const [activeTab, setActiveTab] = useState('all');\n  const getMessage = useMessages();\n\n  const queryParameters: Record<string, string> = {};\n  if (activeTab === 'open' && ticketsStatuses) {\n    queryParameters['status_ids[]'] = ticketsStatuses[0].id;\n  }\n  const { data, isSuccess, isLoading } = useGetTicketsQuery(queryParameters);\n  const tickets = data ? data.tickets.slice(0, 3) : [];\n\n  const tabElements = [{\n    label: getMessage('tabs.tickets.all'),\n    onClick: () => setActiveTab('all'),\n    isActive: activeTab === 'all',\n  },\n  {\n    label: getMessage('tabs.tickets.open'),\n    onClick: () => setActiveTab('open'),\n    isActive: activeTab === 'open',\n  }];\n\n  return (\n    <div className=\"mt-6\">\n      <div className=\"col-span-12 flex justify-between\">\n        <p className=\"text-header-xs mb-2 inline-block\">{getMessage('dashboard.widget.tickets.inProgress', {number: data?.metadata?.count})}</p>\n        <WidgetTabs tabElements={tabElements} />\n      </div>\n      <div className=\"col-span-12 flex mobile:overflow-x-auto mobile:no-scrollbar md:justify-between gap-1\">\n        {isLoading && [...Array(3)].map((_, index) => (\n          <SpinnerItem\n            key={index}\n            containerStyles=\"h-[198px] list-none p-6 bg-background-white border rounded border-stroke-grey-100 flex-shrink-0 mobile:w-[15rem] md:basis-1/3 flex items-center\"\n            spinnerStyles=\"m-auto\"\n          />\n        ))}\n        {isSuccess && ((tickets.length === 0 || !data)\n          ? <TableContentPlaceholder />\n          : tickets?.map(({\n            id, reportedAt, title, status, ticketNumber,\n          }) => (\n            <li\n              className=\"list-none p-5 bg-background-white border rounded border-stroke-grey-100\n                flex-shrink-0 mobile:w-[15rem] md:basis-1/3 md:truncate\n                hover:border-hover hover:cursor-pointer focus-within:border-hover relative\"\n              key={id}\n            >\n              <TypeBadge className=\"flex-none w-fit mb-5\" badgeStyle={status === 'otwarte' ? 'red' : 'grey'} title={`status: ${status}`}>\n                <TicketsIcon />\n              </TypeBadge>\n              <p className=\"text-typography-gray text-text-md-medium\">\n                {format(new Date(reportedAt), 'dd-MM-yyyy')}\n              </p>\n              <p className={classNames(\n                'text-typography-black mb-2 truncate',\n                status === 'completed' ? 'text-title-medium' : 'text-title-semibold',\n              )}\n              >\n                {title}\n              </p>\n              <Chip chipStyle={status === 'zako\u0144czone' ? 'gray' : 'primary'} className=\"mt-4 mb-0 md:flex-none w-fit\">\n                {status && capitalize(status)}\n              </Chip>\n              <Link\n                to={`/zgloszenia/${id}`}\n                state={{ returnTo: '/' }}\n                aria-label={`Przejd\u017A do szczeg\u00F3\u0142\u00F3w zg\u0142oszenia nr ${ticketNumber} ${title}`}\n                className='after:absolute after:content-[\"\"] after:h-full after:w-full after:left-0 after:top-0'\n              />\n            </li>\n          )))}\n      </div>\n    </div>\n  );\n};\n\nexport default TicketsWidget;\n", "import classNames from 'classnames';\nimport * as React from 'react';\nimport { useMediaQuery } from 'react-responsive';\nimport { mobile } from '../../../utils/breakpoints';\nimport Dropdown from '../Dropdown/Dropdown';\n\ninterface Props {\n  tabElements: {\n    label: string,\n    isActive: boolean,\n    onClick: () => void,\n  }[]\n}\n\ninterface TabButtonProps {\n  label: string,\n  onClick: () => void,\n  styles: string,\n  activeStyles: string,\n}\n\nconst TabButton = ({\n  label, onClick, styles, activeStyles,\n}: TabButtonProps) => (\n  <button type=\"button\" onClick={onClick} className={classNames(styles, activeStyles)}>\n    {label}\n  </button>\n);\n\nconst WidgetTabs = ({ tabElements }: Props) => {\n  const isMobile = useMediaQuery({ query: mobile.raw });\n\n  return (\n    <div className=\"md:flex\">\n      {isMobile ? (\n        <Dropdown label={tabElements.find((item) => item.isActive)?.label || 'wszystkie'} listClassName=\"bg-background-white border border-stroke-grey-100 w-fit -translate-x-4\">\n          {tabElements.map((tabItem) => (\n            <TabButton\n              key={tabItem.label}\n              label={tabItem.label}\n              onClick={tabItem.onClick}\n              styles=\"text-text-md-semibold hover:text-main hover:underline h-fit py-2 px-4 w-full\"\n              activeStyles={tabItem.isActive ? 'bg-light-200 text-main' : 'text-typography-dark'}\n            />\n          ))}\n        </Dropdown>\n      ) : tabElements.map((tabItem) => (\n        <TabButton\n          key={tabItem.label}\n          label={tabItem.label}\n          onClick={tabItem.onClick}\n          styles=\"text-text-md-semibold hover:text-main h-fit px-3 ml-2 rounded\"\n          activeStyles={tabItem.isActive ? 'bg-background-white text-main' : 'bg-transparent text-typography-dark'}\n        />\n      ))}\n    </div>\n  );\n};\n\nexport default WidgetTabs;\n", "/* eslint-disable jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions */\nimport * as React from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { useMemo } from 'react';\nimport { useGetFullUserAccountQuery, useGetPaymentsBalanceQuery } from '../../../api/appApi';\nimport { useSettlementsVenue } from '../../../hooks/settlements/useSettlementsVenue';\nimport Button from '../../../components/Button/Button';\nimport useMessages from '../../../hooks/useMessages';\nimport Spinner from '../../../components/Spinner/Spinner';\nimport { VenuePaymentsBalance } from '../../../api/modules/settlements/settlementsTypes';\nimport { usePermissions } from '../../../hooks/usePermissions';\n\ntype VenueItemProps = {\n  id: string,\n  address: string,\n  settlements: VenuePaymentsBalance,\n  details?: boolean\n};\n\nconst VenueItem = ({ id, address, settlements, details = true }: VenueItemProps) => {\n  const getMessage = useMessages();\n\n  return (\n    <div className=\"w-full last:mb-0\" key={id}>\n      <div className=\"flex justify-between text-title-semibold text-main pb-2 border-b\">\n        {`${settlements.balance} PLN`}\n        <span className=\"text-typography-dark\">\n          {address}\n        </span>\n      </div>\n      {details && \n      <div className=\"text-text-md-medium py-4 h-24\">\n        <div className=\"mb-2 flex justify-between\">\n          {getMessage('dashboard.widget.settlements.debit')}\n          <span className=\"text-typography-dark\">{settlements?.liability}</span>\n        </div>\n          <div className=\"flex justify-between\">\n            {getMessage('dashboard.widget.settlements.credit')}\n            <span className=\"text-typography-dark\">\n              {settlements.overpayment}\n            </span>\n          </div>\n      </div>}\n    </div>\n  );\n};\n\nconst SettlementsWidget = () => {\n  const { data: user } = useGetFullUserAccountQuery();\n  const getMessage = useMessages();\n  const navigate = useNavigate();\n  const handleNavigate = () => navigate('/rozrachunki/platnosci');\n  const { isModuleEnabled } = usePermissions();\n\n  const { venueId } = useSettlementsVenue();\n  const usersVenues = useMemo(() => user?.tenant?.venues || [], [user, venueId]);\n  const filteredVenues = venueId ? usersVenues.filter((venue) => venue.id === venueId) : usersVenues;\n  const filteredVenuesIds = filteredVenues.map(({ id }) => id);\n  const { data: paymentsBalances } = useGetPaymentsBalanceQuery({ venueId });\n\n\n  const isButtonVisible = useMemo(\n    () => (paymentsBalances\n      ? !!filteredVenuesIds.find((id: string) => (paymentsBalances[id] && paymentsBalances[id]?.balance !== '0,00'))\n      : false),\n    [paymentsBalances, filteredVenuesIds],\n  );\n\n  return (\n    <div className=\"w-full\">\n      <p className=\"text-header-xs mb-2 inline-block\">{getMessage('dashboard.widget.settlements.balance')}</p>\n      {paymentsBalances ? (\n        <div className=\"p-6 bg-background-white border rounded\">\n          {filteredVenues.map((venue) => (\n            paymentsBalances[venue.id]\n              ? <VenueItem key={venue.id} id={venue.id} address={venue.address} settlements={paymentsBalances[venue.id]} />\n              : <Spinner className=\"h-24\" />))}\n          {filteredVenues.length > 1 &&\n            <VenueItem\n              key='all-venue-balance'\n              id='all-venue-balance'\n              address={getMessage('dashboard.widget.settlements.allVenues')}\n              settlements={paymentsBalances['all']}\n              details={false}\n            />}\n          {isModuleEnabled('payments') && isButtonVisible && (\n            <Button onClick={handleNavigate} className=\"!w-full\">\n              {getMessage('settlements.payments.pay')}\n            </Button>\n          )}\n        </div>\n      ) : <Spinner className=\"h-24\" />}\n    </div>\n  );\n};\n\nexport default SettlementsWidget;\n", "/* eslint-disable react/no-array-index-key */\n/* eslint-disable jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions */\nimport * as React from 'react';\nimport { useIntl } from 'react-intl';\nimport { useNavigate } from 'react-router-dom';\nimport { useGetMetersQuery } from '../../../api/appApi';\nimport Card from '../../../components/Card/Card';\nimport useMessages from '../../../hooks/useMessages';\nimport SpinnerItem from '../../../components/Spinner/SpinnerItem';\nimport Button from '../../../components/Button/Button';\nimport { useAppSelector } from '../../../hooks/reduxHooks';\nimport { ApiMeterRequestParams } from '../../../api/modules/meters/metersTypes';\n\nconst MetersWidget = () => {\n  const venueId = useAppSelector((state) => state.app.selectedVenueId);\n  const queryParams: ApiMeterRequestParams = { measurement_required: true, venues_ids: venueId || undefined };\n  const { data, isLoading, isSuccess } = useGetMetersQuery(queryParams);\n  const getMessage = useMessages();\n  const navigate = useNavigate();\n  const intl = useIntl();\n\n  return (\n    <div className=\"w-full tablet:basis-1/2\">\n      <p className=\"text-header-xs mb-2\">{getMessage('local.meters.readings')}</p>\n      <Card className=\"md:!p-6\">\n        {isLoading && <SpinnerItem containerStyles=\"flex items-center justify-center\" spinnerStyles=\"h-6\" />}\n        {isSuccess && (\n          (!data || data?.meters?.length === 0) ? (<div className=\"text-xs\">{getMessage('local.meters.noMeters')}</div>) : (\n            <div className=\"text-typography-black text-title-semibold\">\n              {intl.formatMessage({ id: 'dashboard.widget.meters.measurementRequired' }, { metersNumber: data.meters.length })}\n              <Button onClick={() => navigate('/liczniki')} className=\"!w-fit !p-0 hover:underline\" styleType=\"ghost\">\n                {getMessage('dashboard.widget.meters.display')}\n              </Button>\n            </div>\n          )\n        )}\n      </Card>\n    </div>\n  );\n};\n\nexport default MetersWidget;\n", "/* eslint-disable react/no-array-index-key */\n/* eslint-disable jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions */\nimport * as React from 'react';\nimport format from 'date-fns/format';\nimport { useNavigate } from 'react-router-dom';\nimport { useGetResolutionsQuery } from '../../../api/appApi';\nimport TypeBadge from '../../../components/TypeBadge/TypeBadge';\nimport Card from '../../../components/Card/Card';\nimport ResolutionsIcon from '../../../icons/book-open.svg';\nimport useMessages from '../../../hooks/useMessages';\nimport SpinnerItem from '../../../components/Spinner/SpinnerItem';\nimport Button from '../../../components/Button/Button';\n\nconst ResolutionsWidget = () => {\n  const { data, isLoading, isSuccess } = useGetResolutionsQuery({\n    active: true,\n  });\n  const getMessage = useMessages();\n  const navigate = useNavigate();\n\n  const resolution = data?.resolutions[0];\n\n  return (\n    <div className=\"w-full tablet:basis-1/2\">\n      <p className=\"text-header-xs mb-2\">{getMessage('dashboard.widget.resolutions.activeVotings')}</p>\n      <Card className=\"h-[216px] md:!p-6\">\n        {isLoading && (<SpinnerItem containerStyles=\"flex items-center justify-center\" />)}\n        {isSuccess && (\n          resolution ? (\n            <>\n              <div className=\"flex justify-between gap-3 mb-4\">\n                <div>\n                  <p className=\"text-typography-black mb-2 text-title-semibold\">\n                    <span className=\"text-typography-dark font-normal\">\n                      <span className=\"visually-hidden\">Uchwa\u0142a numer</span>\n                      {`${resolution.resolutionNumber} - `}\n                    </span>\n                    {resolution.title}\n                  </p>\n                  <p className=\"text-text-md-medium text-typography-dark\">\n                    <span className=\"visually-hidden\">Na zag\u0142osowanie masz czas</span>\n                    {`do ${resolution && format(new Date(resolution.votingDeadline), 'dd-MM-yyyy')}`}\n                  </p>\n                </div>\n                <TypeBadge badgeStyle={resolution.active ? 'red' : 'grey'} title={getMessage(`resolutions.status.${resolution.status}`)} ariaLabel={`status ${getMessage(`resolutions.status.${resolution.status}`)}`}>\n                  <ResolutionsIcon />\n                </TypeBadge>\n              </div>\n              <Button onClick={() => navigate(`/uchwaly/${resolution.id}`, { state: { returnTo: '/' } })} className=\"!w-full mb-4\" ariaLabel=\"Zapoznaj si\u0119 z tre\u015Bci\u0105 uchwa\u0142y\">\n                {getMessage('resolutions.display')}\n              </Button>\n              <Button onClick={() => navigate('/uchwaly')} className=\"!w-full !py-0\" styleType=\"ghost\" ariaLabel=\"Przejd\u017A do listy uchwa\u0142\">\n                {getMessage('dashboard.widget.resolutions.allResolutions')}\n              </Button>\n            </>\n          ) : <div className=\"text-xs\">{getMessage('dashboard.widget.resolutions.noActiveVotings')}</div>\n        )}\n      </Card>\n    </div>\n  );\n};\n\nexport default ResolutionsWidget;\n", "import * as React from 'react';\nimport AnnouncementsWidget from './Widgets/AnnouncementsWidget';\nimport { usePermissions } from '../../hooks/usePermissions';\nimport ContentWrapper from '../../components/ContentWrapper/ContentWrapper';\nimport TasksWidget from './Widgets/TasksWidget';\nimport TicketsWidget from './Widgets/TicketsWidget';\nimport DocumentsWidget from './Widgets/DocumentsWidget';\n\nconst WorkerDashboardPage = () => {\n  const { hasPermission, isModuleEnabled } = usePermissions();\n\n  return (\n    <ContentWrapper>\n      <div className=\"col-span-12 lg:col-span-4 lg:col-start-9 lg:row-start-1 tablet:grid tablet:grid-cols-2 tablet:gap-6\">\n        {isModuleEnabled('tickets') && <TasksWidget />}\n        {isModuleEnabled('documents') && <DocumentsWidget />}\n      </div>\n      <div className=\"col-span-12 col-start-1 lg:col-span-8 lg:col-start-1 lg:row-start-1\">\n        {isModuleEnabled('announcements') && hasPermission('announcements_list') && <AnnouncementsWidget />}\n        {isModuleEnabled('tickets') && <TicketsWidget />}\n      </div>\n    </ContentWrapper>\n  );\n};\n\nexport default WorkerDashboardPage;\n", "/* eslint-disable react/no-array-index-key */\n/* eslint-disable jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions */\nimport * as React from 'react';\nimport { Link } from 'react-router-dom';\nimport format from 'date-fns/format';\nimport { useGetFullTaskStatusesQuery, useGetTasksQuery } from '../../../api/appApi';\nimport Chip from '../../../components/Chip/Chip';\nimport TableContentPlaceholder from '../../../components/Table/TableContentPlaceholder';\nimport HourglassIcon from '../../../icons/hourglass.svg';\nimport useMessages from '../../../hooks/useMessages';\nimport capitalize from '../../../../utils/formatters';\nimport SpinnerItem from '../../../components/Spinner/SpinnerItem';\n\nconst TasksWidget = () => {\n  const getMessage = useMessages();\n  const { data: allStatuses, isLoading: isStatusesLoading } = useGetFullTaskStatusesQuery();\n\n  // only fetch tasks with statuses other than open and completed\n  const statusesIds = (allStatuses\n    ?.filter((statusItem) => statusItem.name !== 'open' && statusItem.name !== 'completed') || [])\n    .map((item) => item.id);\n  const { data, isLoading, isSuccess } = useGetTasksQuery({\n    status_ids: statusesIds,\n    assigned: 'me'\n  }, { skip: !allStatuses });\n\n  const tasks = data ? data.tasks.slice(0, 3) : [];\n\n  return (\n    <div className=\"col-start-1 col-span-full md:col-start-1 md:col-span-1 lg:col-start-9 lg:col-span-4 mb-6 tablet:mb-0 \">\n      <div className=\"col-span-12\">\n        <p className=\"text-header-xs mb-2 inline-block\">{getMessage('dashboard.widget.tasks.inProgress', {number: data?.metadata?.count})}</p>\n      </div>\n      <div className=\"col-span-12 w-full\">\n        {(isStatusesLoading || isLoading) && [...Array(3)].map((_, index) => (\n          <SpinnerItem\n            key={index}\n            containerStyles=\"h-[108px] md:h-[110px] list-none p-5 mb-1 last:mb-0 bg-background-white border rounded border-stroke-grey-100 flex items-center\"\n            spinnerStyles=\"m-auto\"\n          />\n        ))}\n        {isSuccess && (tasks.length === 0\n          ? <TableContentPlaceholder />\n          : tasks.map(({\n            id, title, status, venueAddress, estimatedFinishTime, taskNumber,\n          }) => (\n            <li\n              className=\"list-none p-5 bg-background-white border rounded border-stroke-grey-100 mb-1 last:mb-0\n                truncate flex hover:border-hover hover:cursor-pointer focus-within:border-hover relative\"\n              key={id}\n            >\n              <div className=\"bg-light-200 fill-bg-light-200 text-main p-4 rounded h-fit flex items-center mr-5\">\n                <HourglassIcon />\n              </div>\n              <div className=\"w-full truncate\">\n                <p className=\"text-typography-black truncate text-title-semibold\">\n                  {title}\n                </p>\n                <p className=\"text-xs\">{venueAddress}</p>\n                <div className=\"flex flex-wrap justify-between items-center mt-1\">\n                  {status && (\n                    <Chip chipStyle={status === 'zako\u0144czone' ? 'gray' : 'primary'}>\n                      {capitalize(status)}\n                    </Chip>\n                  )}\n                  {estimatedFinishTime && (\n                    <Chip chipStyle=\"ghost\" className=\"mobile:mt-1\">\n                      {`do ${format(new Date(estimatedFinishTime), 'dd-MM-yyyy')}`}\n                    </Chip>\n                  )}\n                </div>\n              </div>\n              <Link\n                to={`/zadania/${id}`}\n                state={{ returnTo: '/' }}\n                aria-label={`Przejd\u017A do szczeg\u00F3\u0142\u00F3w zadania nr ${taskNumber} ${title}`}\n                className='after:absolute after:content-[\"\"] after:h-full after:w-full after:left-0 after:top-0'\n              />\n            </li>\n          )))}\n      </div>\n    </div>\n  );\n};\n\nexport default TasksWidget;\n", "import * as React from \"react\";\nimport { SVGProps } from \"react\";\nconst SvgHourglass = (props: SVGProps<SVGSVGElement>) => <svg width={20} height={20} viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" {...props}><g id=\"Hourglass\"><path id=\"Vector\" d=\"M10 10L5.25 6.4375C5.17282 6.37887 5.11014 6.30329 5.0668 6.2166C5.02345 6.12991 5.0006 6.03442 5 5.9375V3.125C5 2.95924 5.06585 2.80027 5.18306 2.68306C5.30027 2.56585 5.45924 2.5 5.625 2.5H14.375C14.5408 2.5 14.6997 2.56585 14.8169 2.68306C14.9342 2.80027 15 2.95924 15 3.125V5.90625C14.9994 6.00317 14.9766 6.09866 14.9332 6.18535C14.8899 6.27204 14.8272 6.34762 14.75 6.40625L10 10Z\" stroke=\"currentColor\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /><path id=\"Vector_2\" d=\"M10 10L5.25 13.5625C5.17282 13.6211 5.11014 13.6967 5.0668 13.7834C5.02345 13.8701 5.0006 13.9656 5 14.0625V16.875C5 17.0408 5.06585 17.1997 5.18306 17.3169C5.30027 17.4342 5.45924 17.5 5.625 17.5H14.375C14.5408 17.5 14.6997 17.4342 14.8169 17.3169C14.9342 17.1997 15 17.0408 15 16.875V14.0937C14.9994 13.9968 14.9766 13.9013 14.9332 13.8146C14.8899 13.728 14.8272 13.6524 14.75 13.5938L10 10Z\" stroke=\"currentColor\" strokeWidth={1.5} strokeLinecap=\"round\" strokeLinejoin=\"round\" /></g></svg>;\nexport default SvgHourglass;", "/* eslint-disable react/no-array-index-key */\n/* eslint-disable jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions */\nimport * as React from 'react';\nimport { Link, useNavigate } from 'react-router-dom';\nimport format from 'date-fns/format';\nimport { useGetDocumentsQuery } from '../../../api/appApi';\nimport Chip from '../../../components/Chip/Chip';\nimport TableContentPlaceholder from '../../../components/Table/TableContentPlaceholder';\nimport DocumentsIcon from '../../../icons/documents.svg';\nimport useMessages from '../../../hooks/useMessages';\nimport SpinnerItem from '../../../components/Spinner/SpinnerItem';\nimport TypeBadge from '../../../components/TypeBadge/TypeBadge';\nimport Card from '../../../components/Card/Card';\n\nconst DocumentsWidget = () => {\n  const getMessage = useMessages();\n  const navigate = useNavigate();\n\n  const { data, isLoading, isSuccess } = useGetDocumentsQuery();\n  const documents = data ? data.documents.slice(0, 3) : [];\n\n  return (\n    <div className=\"col-start-1 col-span-full md:col-start-2 md:col-span-1 lg:col-start-9 lg:col-span-4\">\n      <div className=\"col-span-12 flex justify-between\">\n        <p className=\"text-header-xs mb-2 inline-block\">{getMessage('dashboard.widget.documents', {number: data?.metadata?.count})}</p>\n        <button onClick={() => navigate('/dokumenty/nowy', { state: { returnTo: '/' } })} type=\"button\" className=\"text-main bg-background-white text-xs rounded-sm font-bold hover:text-hover hover:underline px-4 mb-1\">\n          {getMessage('dashboard.widget.documents.addDocument')}\n        </button>\n      </div>\n      <Card className=\"col-span-12 w-full grid grid-cols-1 gap-1 !p-5\">\n        {isLoading && [...Array(3)].map((_, index) => (\n          <SpinnerItem\n            key={index}\n            containerStyles=\"first:h-[92px] last:h-[92px] h-[109px] md:h-[59px] md:last:h-[59px] md:first:h-[59px] w-full border-b last:border-b-0 py-4 first:pt-0 last:pb-0 flex gap-4\"\n          />\n        ))}\n        {isSuccess && (\n          documents.length === 0\n            ? <TableContentPlaceholder />\n            : documents.map(({\n              id, title, creationDate, documentNumber,\n            }) => (\n              <li\n                className=\"w-full border-b last:border-b-0 py-4 first:pt-0 last:pb-0 flex gap-4\n                hover:cursor-pointer hover:bg-gray-50 shadow-gray\n                focus-within:border focus-within:border-hover relative\"\n              >\n                <TypeBadge className=\"flex-none\" badgeStyle=\"red\">\n                  <DocumentsIcon />\n                </TypeBadge>\n                <div className=\"flex-grow md:flex md:justify-between md:gap-4 truncate\">\n                  <div className=\"flex flex-col md:flex-grow truncate\">\n                    <p className=\"text-typography-black truncate text-title-semibold\">\n                      {title}\n                    </p>\n                    <p className=\"text-text-md-medium text-typography-dark truncate\">{documentNumber}</p>\n                  </div>\n                  <Chip chipStyle=\"gray\" className=\"mobile:mt-2 md:flex-none w-fit my-0\">\n                    {format(new Date(creationDate), 'dd-MM-yyyy')}\n                  </Chip>\n                </div>\n                <Link\n                  to={`/dokumenty/${id}`}\n                  state={{ returnTo: '/' }}\n                  aria-label={`Przejd\u017A do szczeg\u00F3\u0142\u00F3w dokumentu nr ${documentNumber} ${title}`}\n                  className='after:absolute after:content-[\"\"] after:h-full after:w-full after:left-0 after:top-0'\n                />\n              </li>\n            ))\n        )}\n      </Card>\n    </div>\n  );\n};\n\nexport default DocumentsWidget;\n", "import * as React from 'react';\nimport Layout from '../../../components/Layout/Layout';\nimport ParametersSidebar from '../ParametersSidebar';\nimport PageHeader from '../../../components/Layout/PageHeader';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport useMessages from '../../../hooks/useMessages';\nimport StatusesList from './StatusesList';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport {\n  useGetFullTicketStatusesQuery,\n  useGetFullDocumentStatusesQuery,\n  useGetFullInvoiceStatusesQuery,\n  useGetFullTaskStatusesQuery,\n} from '../../../api/appApi';\n\nconst StatusesPage = () => {\n  const getMessage = useMessages();\n  const { isModuleEnabled, checkModuleEnabled } = usePermissions();\n\n  const { data: ticketStatuses } = useGetFullTicketStatusesQuery();\n  const { data: taskStatuses } = useGetFullTaskStatusesQuery();\n  const { data: documentStatuses } = useGetFullDocumentStatusesQuery();\n  const { data: invoiceStatuses } = useGetFullInvoiceStatusesQuery();\n\n  if (!isModuleEnabled('tickets')) checkModuleEnabled('documents');\n  if (!isModuleEnabled('documents')) checkModuleEnabled('tickets');\n\n  return (\n    <Layout currentPage=\"parameters\">\n      <div className=\"flex flex-grow h-full\">\n        <ParametersSidebar selectedPage=\"statuses\" />\n        <div className=\"flex flex-col flex-grow\">\n          <PageHeader currentPage=\"parameters\" pageTitle={getMessage('navigation.parameters.statuses')} />\n          <ContentWrapper>\n            {isModuleEnabled('tickets') && ticketStatuses && (\n              <StatusesList title={getMessage('parameters.statuses.tickets')} statuses={ticketStatuses} />)}\n            {isModuleEnabled('tickets') && taskStatuses && (\n              <StatusesList title={getMessage('parameters.statuses.tasks')} statuses={taskStatuses} />\n            )}\n            {isModuleEnabled('documents') && documentStatuses && (\n              <StatusesList title={getMessage('parameters.statuses.documents')} statuses={documentStatuses} />\n            )}\n            {isModuleEnabled('documents') && invoiceStatuses && (\n              <StatusesList title={getMessage('parameters.statuses.ksefInvoices')} statuses={invoiceStatuses} />\n            )}\n          </ContentWrapper>\n        </div>\n      </div>\n    </Layout>\n  );\n};\n\nexport default StatusesPage;\n", "import * as React from 'react';\nimport { useMemo } from 'react';\nimport { FullTicketStatus } from '../../../api/modules/tickets/ticketsTypes';\nimport { FullTaskStatus } from '../../../api/modules/tasks/tasksTypes';\nimport { FullDocumentStatus, FullInvoiceStatus } from '../../../api/modules/documents/documentsTypes';\nimport ResponsiveTable, {\n  ResponsiveTableBody,\n  ResponsiveTableBodyRow,\n  ResponsiveTableHeader,\n} from '../../../components/Table/ResponsiveTable';\nimport { TableBodyCell } from '../../../components/Table/Table';\n\ninterface Props {\n  title: string,\n  statuses: FullTicketStatus[] | FullTaskStatus[] | FullDocumentStatus[] | FullInvoiceStatus[],\n}\n\nconst StatusesList = ({ title, statuses }: Props) => {\n  const columnLabels = [\n    { label: 'parameters.statuses.list.active' },\n    { label: 'parameters.statuses.list.externalName' },\n    { label: 'parameters.statuses.list.internalName' },\n  ];\n  const ids = useMemo(() => statuses.map((status) => status.id), [statuses]);\n\n  return (\n    <ResponsiveTable header={(<div className=\"text-header-sm\">{title}</div>)} className=\"col-span-full\">\n      <ResponsiveTableHeader ids={ids} columnLabels={columnLabels} />\n      <ResponsiveTableBody>\n        {statuses.map((status) => (\n          <ResponsiveTableBodyRow\n            key={status.id}\n            className=\"border-b last:border-b-0 border-separate font-medium\"\n            clickable={({ href: (`/parametry/statusy/${status.id}`), ariaLabel: 'Przejd\u017A do edycji statusu' })}\n          >\n            <TableBodyCell className=\"max-w-[4rem]\">\n              <div>\n                <input\n                  type=\"checkbox\"\n                  checked={status.active}\n                  disabled\n                  className=\"m-2 ml-4\"\n                  aria-label={status.active ? 'Status aktywny' : 'Status nieaktywny'}\n                />\n              </div>\n            </TableBodyCell>\n            <TableBodyCell>\n              {status.externalName}\n            </TableBodyCell>\n            <TableBodyCell>\n              {status.internalName}\n            </TableBodyCell>\n          </ResponsiveTableBodyRow>\n        ))}\n      </ResponsiveTableBody>\n    </ResponsiveTable>\n  );\n};\n\nexport default StatusesList;\n", "import * as React from 'react';\nimport { useIntl } from 'react-intl';\nimport { useParams } from 'react-router-dom';\nimport { useMemo } from 'react';\nimport Layout from '../../../components/Layout/Layout';\nimport ParametersSidebar from '../ParametersSidebar';\nimport PageHeader from '../../../components/Layout/PageHeader';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport {\n  useGetFullDocumentStatusesQuery,\n  useGetFullInvoiceStatusesQuery,\n  useGetFullTaskStatusesQuery,\n  useGetFullTicketStatusesQuery,\n} from '../../../api/appApi';\nimport StatusForm from './StatusForm';\n\nconst StatusEditPage = () => {\n  const intl = useIntl();\n  const { id: statusId } = useParams();\n\n  const { data: ticketStatuses } = useGetFullTicketStatusesQuery();\n  const { data: taskStatuses } = useGetFullTaskStatusesQuery();\n  const { data: documentStatuses } = useGetFullDocumentStatusesQuery();\n  const { data: invoiceStatuses } = useGetFullInvoiceStatusesQuery();\n\n  const status = useMemo(() => {\n    if (ticketStatuses && taskStatuses && documentStatuses && invoiceStatuses) {\n      return ticketStatuses\n        .concat(taskStatuses)\n        .concat(documentStatuses)\n        .concat(invoiceStatuses)\n        .find((status) => status.id === statusId);\n    }\n    return null;\n  }, [statusId, ticketStatuses, taskStatuses, documentStatuses, invoiceStatuses]);\n\n  return (\n    <Layout currentPage=\"parameters\">\n      <div className=\"flex flex-grow h-full\">\n        <ParametersSidebar selectedPage=\"statuses\" />\n        <div className=\"flex flex-col flex-grow\">\n          <PageHeader\n            currentPage=\"parameters\"\n            pageTitle={intl.formatMessage({ id: 'parameters.statuses.status' }, { statusName: status?.externalName })}\n            path=\"/parametry/statusy\"\n          />\n          <ContentWrapper>\n            {status && (\n              <StatusForm status={status} />\n            )}\n          </ContentWrapper>\n        </div>\n      </div>\n    </Layout>\n  );\n};\n\nexport default StatusEditPage;\n", "import * as React from 'react';\nimport { useForm, FormProvider } from 'react-hook-form';\nimport { FullTaskStatus } from '../../../api/modules/tasks/tasksTypes';\nimport { FullTicketStatus } from '../../../api/modules/tickets/ticketsTypes';\nimport { FullDocumentStatus, FullInvoiceStatus } from '../../../api/modules/documents/documentsTypes';\nimport Card from '../../../components/Card/Card';\nimport { usePutInvoiceStatusMutation, usePutStatusMutation } from '../../../api/appApi';\nimport { FormCheckboxInput, FormInput, FormTextarea } from '../../../components/FormInputs';\nimport Button from '../../../components/Button/Button';\nimport useMessages from '../../../hooks/useMessages';\nimport { FormNotice } from '../../../components/FormNotice/FormNotice';\n\ninterface Props {\n  status: FullTaskStatus | FullTicketStatus | FullDocumentStatus | FullInvoiceStatus,\n}\n\nconst StatusForm = ({ status }: Props) => {\n  const getMessage = useMessages();\n  const [putStatus, statusMutation] = usePutStatusMutation();\n  const [putInvoiceStatus, invoiceStatusMutation] = usePutInvoiceStatusMutation();\n\n  const methods = useForm({\n    values: {\n      id: status?.id,\n      external_name: status?.externalName,\n      internal_name: status?.internalName,\n      description: status?.description,\n      active: status?.active,\n    },\n  });\n\n  const activeMutation = status?.objectType === 'ksef_invoice' ? invoiceStatusMutation : statusMutation;\n\n  const onSubmit = (data: any) => (status?.objectType === 'ksef_invoice' ? putInvoiceStatus(data) : putStatus(data));\n\n  return (\n    <Card className=\"col-span-full flex flex-col\">\n      {activeMutation.isSuccess && <FormNotice type=\"success\" message={getMessage('form.success')} />}\n      {/* @ts-ignore */}\n      {activeMutation.error && <FormNotice type=\"error\" message={activeMutation.error.data.errors || getMessage('form.error')} />}\n      {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n      <FormProvider {...methods}>\n        <form onSubmit={methods.handleSubmit(onSubmit)} className=\"nice-form\">\n          <FormInput\n            id=\"external_name\"\n            type=\"text\"\n            label={getMessage('parameters.statuses.form.externalName')}\n            className=\"form-group\"\n            options={{ required: getMessage('parameters.statuses.form.externalName.required') }}\n          />\n          <FormInput\n            id=\"internal_name\"\n            type=\"text\"\n            label={getMessage('parameters.statuses.form.internalName')}\n            className=\"form-group\"\n            options={{ required: getMessage('parameters.statuses.form.internalName.required') }}\n          />\n          <FormTextarea id=\"description\" label={getMessage('parameters.statuses.form.description')} className=\"form-group\" />\n          <FormCheckboxInput\n            id=\"active\"\n            label={getMessage('parameters.statuses.form.active')}\n            className=\"form-group checkbox-group\"\n            disabled={status?.name === 'open' || status?.name === 'completed'}\n          />\n          <Button type=\"submit\" styleType=\"primary\" className=\"submit-btn\">{getMessage('save')}</Button>\n        </form>\n      </FormProvider>\n    </Card>\n  );\n};\n\nexport default StatusForm;\n", "import * as React from 'react';\nimport { useEffect } from 'react';\nimport { useNavigate } from 'react-router';\nimport Layout from '../../../components/Layout/Layout';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport ParametersSidebar from '../ParametersSidebar';\nimport PageHeader from '../../../components/Layout/PageHeader';\nimport useMessages from '../../../hooks/useMessages';\nimport { useGetFullJournalsQuery } from '../../../api/appApi';\nimport Table, {\n  TableHeader, TableHeaderRow, TableHeaderCell, TableBody, TableBodyRow, TableBodyCell,\n} from '../../../components/Table/Table';\nimport PaginationControls from '../../../components/Table/PaginationControls';\nimport usePagination from '../../../hooks/usePagination';\nimport Button from '../../../components/Button/Button';\nimport { usePermissions } from '../../../hooks/usePermissions';\n\nconst JournalsPage = () => {\n  const [selectedPage, setSelectedPage] = usePagination('journalsList');\n  const getMessage = useMessages();\n  useEffect(() => {\n    setSelectedPage(1);\n  }, []);\n\n  const { data } = useGetFullJournalsQuery({\n    page: selectedPage.toString(),\n  });\n  const navigate = useNavigate();\n  const { checkModuleEnabled } = usePermissions();\n\n  checkModuleEnabled('documents');\n\n\n  return (\n    <Layout currentPage=\"parameters\">\n      <div className=\"flex flex-grow h-full\">\n        <ParametersSidebar selectedPage=\"journals\" />\n        <div className=\"flex flex-col flex-grow\">\n          <PageHeader currentPage=\"parameters\" pageTitle={getMessage('navigation.parameters.journals')}>\n            <Button onClick={() => navigate('/parametry/dzienniki/nowy')}>{getMessage('parameters.journals.create')}</Button>\n          </PageHeader>\n          <ContentWrapper>\n            {data?.journals && (\n              <Table className=\"col-span-12\">\n                <TableHeader>\n                  <TableHeaderRow>\n                    <TableHeaderCell>{getMessage('parameters.journals.prefixes')}</TableHeaderCell>\n                    <TableHeaderCell>{getMessage('parameters.journals.name')}</TableHeaderCell>\n                    <TableHeaderCell>{getMessage('parameters.journals.type')}</TableHeaderCell>\n                    <TableHeaderCell divClassName=\"justify-end\">{getMessage('parameters.journals.numeration')}</TableHeaderCell>\n                  </TableHeaderRow>\n                </TableHeader>\n                <TableBody>\n                  {data.journals.map((item: any) => (\n                    <TableBodyRow\n                      key={item.id}\n                      clickable={({ href: `/parametry/dzienniki/${item.id}`, ariaLabel: `Przejd\u017A do edycji dziennika ${item.name}` })}\n                    >\n                      <TableBodyCell>{item.prefix}</TableBodyCell>\n                      <TableBodyCell>{item.name}</TableBodyCell>\n                      <TableBodyCell>{getMessage(`parameters.journals.${item.journal_type}`)}</TableBodyCell>\n                      <TableBodyCell className=\"text-right\">{item.autonumbering && getMessage('parameters.journals.autonumbering')}</TableBodyCell>\n                    </TableBodyRow>\n                  ))}\n                </TableBody>\n              </Table>\n            )}\n            {data?.metadata && (\n            <PaginationControls\n              className=\"col-span-full\"\n              selectedPage={selectedPage}\n              setSelectedPage={setSelectedPage}\n              paginationMetadata={data.metadata}\n            />\n            )}\n          </ContentWrapper>\n        </div>\n      </div>\n    </Layout>\n  );\n};\n\nexport default JournalsPage;\n", "import * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { useIntl } from 'react-intl';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport Layout from '../../../components/Layout/Layout';\nimport ParametersSidebar from '../ParametersSidebar';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport PageHeader from '../../../components/Layout/PageHeader';\nimport Card from '../../../components/Card/Card';\nimport { useChangeJournalMutation, useDeleteJournalMutation, useGetJournalQuery } from '../../../api/appApi';\nimport JournalForm from '../JournalFormPage/JournalForm';\nimport { FullJournal } from '../../../api/modules/documents/documentsTypes';\nimport { FormNotice } from '../../../components/FormNotice/FormNotice';\nimport useMessages from '../../../hooks/useMessages';\nimport RemoveJournalPopUp from '../JournalEditPage/RemoveJournalPopUp';\nimport Button from '../../../components/Button/Button';\n\nconst JournalEditPage = () => {\n  const intl = useIntl();\n  const { id } = useParams();\n  const { data: journal } = useGetJournalQuery(id, { skip: !id });\n  const [deleteJournal, { error: deleteError, status: deleteStatus }] = useDeleteJournalMutation();\n  const [patchJournal, { isSuccess: isChangeSuccess, error: changeError, status: changeStatus }] = useChangeJournalMutation();\n  const navigate = useNavigate();\n  const getMessage = useMessages();\n  const [isDialogOpen, setIsDialogOpen] = useState(false);\n\n  useEffect(() => {\n    if (deleteStatus === 'fulfilled') navigate('/parametry/dzienniki');\n  }, [changeStatus, deleteStatus]);\n\n  if (!id) return null;\n  const onSubmit = (data: FullJournal) => patchJournal({ id, journal: data });\n\n  const handleDeleteJournal = () => {\n    deleteJournal({ id });\n  };\n\n  return (\n    <Layout currentPage=\"parameters\">\n      <div className=\"flex flex-grow h-full\">\n        <ParametersSidebar selectedPage=\"journals\" />\n        <div className=\"flex flex-col flex-grow\">\n          <PageHeader\n            currentPage=\"parameters\"\n            pageTitle={intl.formatMessage(\n              { id: 'parameters.journals.journal' },\n              { journalName: journal?.name },\n            )}\n            path=\"/parametry/dzienniki\"\n          >\n            <Button type=\"button\" styleType=\"secondary\" onClick={() => setIsDialogOpen(true)}>{getMessage('remove')}</Button>\n          </PageHeader>\n          <ContentWrapper>\n            <Card className=\"col-span-12\">\n              {isChangeSuccess && <FormNotice type=\"success\" message={getMessage('form.success')} />}\n              {/* @ts-ignore */}\n              {deleteError && <FormNotice type=\"error\" message={deleteError.data.errors || getMessage('form.error')} />}\n              {/* @ts-ignore */}\n              {changeError && <FormNotice type=\"error\" message={changeError.data.errors || getMessage('form.error')} />}\n              <JournalForm journal={journal} onSubmit={onSubmit} />\n              <RemoveJournalPopUp\n                isOpen={isDialogOpen}\n                onClose={() => setIsDialogOpen(false)}\n                onAccept={handleDeleteJournal}\n                name={journal?.name || ''}\n              />\n            </Card>\n          </ContentWrapper>\n        </div>\n      </div>\n    </Layout>\n  );\n};\n\nexport default JournalEditPage;\n", "import * as React from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useIntl } from 'react-intl';\nimport { FormCheckboxInput, FormInput, FormTextarea, FormSelect } from '../../../components/FormInputs';\nimport Button from '../../../components/Button/Button';\nimport useMessages from '../../../hooks/useMessages';\nimport { FullJournal } from '../../../api/modules/documents/documentsTypes';\n\ntype Props = {\n  journal?: FullJournal\n  onSubmit: (data: FullJournal) => void,\n};\n\nconst JournalForm = ({ journal, onSubmit }: Props) => {\n  const getMessage = useMessages();\n  const intl = useIntl();\n  const methods = useForm<FullJournal>({   \n    values: {\n      autonumbering: journal?.autonumbering || false,\n      prefix: journal?.prefix || '',\n      name: journal?.name || '',\n      description: journal?.description || '',\n      journal_type: journal?.journal_type || ''\n    },\n    mode: 'onChange',\n  });\n\n  const journalSelectOptions = ['incoming','outgoing'].map((val) => ({ value: val, optionLabel: getMessage(`parameters.journals.${val}`)}));\n\n  return (\n    <div className=\"col-span-12\">\n      {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n      <FormProvider {...methods}>\n        <form onSubmit={methods.handleSubmit(onSubmit)} className=\"flex flex-col\">\n          <FormCheckboxInput id=\"autonumbering\" label={getMessage('parameters.journals.form.autonumbering')} className=\"flex mb-2 -ml-2 w-1/3\" />\n          <FormInput\n            id=\"prefix\"\n            type=\"text\"\n            label={getMessage('parameters.journals.form.prefix')}\n            options={{ required: getMessage('parameters.journals.form.prefix.required') }}\n          />\n          <FormInput\n            id=\"name\"\n            type=\"text\"\n            label={getMessage('parameters.journals.form.name')}\n            options={{\n              required: getMessage('parameters.journals.form.name.required'),\n              maxLength: { value: 64, message: intl.formatMessage({ id: 'form.name.error.tooLong' }, { maxLength: 64 }) },\n            }}\n          />\n          <FormSelect\n            id=\"journal_type\"\n            label={getMessage('parameters.journals.form.journalType')}\n            className=\"md:row-start-1 md:col-start-2\"\n            inputClassName=\"w-full md:w-2/3\"\n            selectOptions={journalSelectOptions}\n            options={{\n              required: getMessage('parameters.journals.form.journalType.required'),\n            }}\n          />\n          <FormTextarea id=\"description\" label={getMessage('parameters.journals.form.description')} />\n          <div className=\"col-span-12 self-end\">\n            <Button type=\"submit\" className=\"mt-6\">{getMessage('save')}</Button>\n          </div>\n        </form>\n      </FormProvider>\n    </div>\n  );\n};\n\nexport default JournalForm;\n", "import * as React from 'react';\nimport { useIntl } from 'react-intl';\nimport useMessages from '../../../hooks/useMessages';\nimport Dialog from '../../../components/Dialog/Dialog';\n\ninterface Props {\n  isOpen: boolean,\n  onClose: () => void,\n  onAccept: () => void,\n  name: string,\n}\n\nconst RemoveJournalPopUp = ({\n  isOpen, onClose, onAccept, name,\n}: Props) => {\n  const getMessage = useMessages();\n  const intl = useIntl();\n\n  return (\n    <Dialog\n      isOpen={isOpen}\n      acceptButtonText={getMessage('confirm')}\n      onClose={onClose}\n      closeButtonText={getMessage('cancel')}\n      onAccept={onAccept}\n    >\n      <p className=\"mb-10\">\n        {intl.formatMessage(\n          { id: 'parameters.journals.journal.confirmRemoving' },\n          { journalName: name },\n        )}\n      </p>\n    </Dialog>\n  );\n};\n\nexport default RemoveJournalPopUp;\n", "import * as React from 'react';\nimport { useEffect } from 'react';\nimport { useNavigate } from 'react-router';\nimport Layout from '../../../components/Layout/Layout';\nimport ParametersSidebar from '../ParametersSidebar';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport PageHeader from '../../../components/Layout/PageHeader';\nimport useMessages from '../../../hooks/useMessages';\nimport Card from '../../../components/Card/Card';\nimport { usePostJournalMutation } from '../../../api/appApi';\nimport { FormNotice } from '../../../components/FormNotice/FormNotice';\nimport JournalForm from './JournalForm';\nimport { FullJournal } from '../../../api/modules/documents/documentsTypes';\n\nconst JournalFormPage = () => {\n  const getMessage = useMessages();\n  const [postJournal, { error, status }] = usePostJournalMutation();\n  const navigate = useNavigate();\n\n  const onSubmit = (data: FullJournal) => postJournal(data);\n\n  useEffect(() => {\n    if (status === 'fulfilled') navigate('/parametry/dzienniki');\n  }, [status]);\n\n  return (\n    <Layout currentPage=\"parameters\">\n      <div className=\"flex flex-grow h-full\">\n        <ParametersSidebar selectedPage=\"journals\" />\n        <div className=\"flex flex-col flex-grow\">\n          <PageHeader\n            currentPage=\"parameters\"\n            pageTitle={getMessage('parameters.journals.newJournal')}\n            path=\"/parametry/dzienniki\"\n          />\n          <ContentWrapper>\n            <Card className=\"col-span-12\">\n              {/* @ts-ignore */}\n              {error && <FormNotice type=\"error\" message={error.data.errors || getMessage('form.error')} />}\n              <JournalForm onSubmit={onSubmit} />\n            </Card>\n          </ContentWrapper>\n        </div>\n      </div>\n    </Layout>\n  );\n};\nexport default JournalFormPage;\n", "import * as React from 'react';\nimport { useEffect } from 'react';\nimport Layout from '../../../components/Layout/Layout';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport ParametersSidebar from '../ParametersSidebar';\nimport PageHeader from '../../../components/Layout/PageHeader';\nimport useMessages from '../../../hooks/useMessages';\nimport { useGetFullKsefJournalsQuery } from '../../../api/appApi';\nimport Table, {\n  TableHeader, TableHeaderRow, TableHeaderCell, TableBody, TableBodyRow, TableBodyCell,\n} from '../../../components/Table/Table';\nimport PaginationControls from '../../../components/Table/PaginationControls';\nimport usePagination from '../../../hooks/usePagination';\nimport { usePermissions } from '../../../hooks/usePermissions';\n\nconst KsefJournalsPage = () => {\n  const [selectedPage, setSelectedPage] = usePagination('ksefJournalsList');\n  const getMessage = useMessages();\n\n  useEffect(() => {\n    setSelectedPage(1);\n  }, []);\n\n  const { data } = useGetFullKsefJournalsQuery({\n    page: selectedPage.toString(),\n  });\n  const { checkModuleEnabled } = usePermissions();\n\n  checkModuleEnabled('documents');\n\n  return (\n    <Layout currentPage=\"parameters\">\n      <div className=\"flex flex-grow h-full\">\n        <ParametersSidebar selectedPage=\"ksefJournals\" />\n        <div className=\"flex flex-col flex-grow\">\n          <PageHeader currentPage=\"parameters\" pageTitle={getMessage('navigation.parameters.ksefJournals')} />\n          <ContentWrapper>\n            {data?.journals && (\n              <Table className=\"col-span-12\">\n                <TableHeader>\n                  <TableHeaderRow>\n                    <TableHeaderCell>{getMessage('parameters.journals.prefixes')}</TableHeaderCell>\n                    <TableHeaderCell>{getMessage('parameters.journals.name')}</TableHeaderCell>\n                  </TableHeaderRow>\n                </TableHeader>\n                <TableBody>\n                  {data.journals.map((item: any) => (\n                    <TableBodyRow\n                      key={item.id}\n                      clickable={({ href: `/parametry/dzienniki_ksef/${item.id}`, ariaLabel: `Przejd\u017A do edycji dziennika KSeF ${item.name}` })}\n                    >\n                      <TableBodyCell>{item.prefix}</TableBodyCell>\n                      <TableBodyCell>{item.name}</TableBodyCell>\n                    </TableBodyRow>\n                  ))}\n                </TableBody>\n              </Table>\n            )}\n            {data?.metadata && (\n              <PaginationControls\n                className=\"col-span-full\"\n                selectedPage={selectedPage}\n                setSelectedPage={setSelectedPage}\n                paginationMetadata={data.metadata}\n              />\n            )}\n          </ContentWrapper>\n        </div>\n      </div>\n    </Layout>\n  );\n};\n\nexport default KsefJournalsPage;\n", "import * as React from 'react';\nimport { useIntl } from 'react-intl';\nimport { useParams } from 'react-router-dom';\nimport Layout from '../../../components/Layout/Layout';\nimport ParametersSidebar from '../ParametersSidebar';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport PageHeader from '../../../components/Layout/PageHeader';\nimport Card from '../../../components/Card/Card';\nimport { useChangeKsefJournalMutation, useGetKsefJournalQuery } from '../../../api/appApi';\nimport { FormNotice } from '../../../components/FormNotice/FormNotice';\nimport useMessages from '../../../hooks/useMessages';\nimport KsefJournalForm from './KsefJournalForm';\nimport { KsefJournalFormData } from '../../../api/modules/documents/documentsTypes';\n\nconst KsefJournalEditPage = () => {\n  const intl = useIntl();\n  const { id } = useParams();\n  const { data: journal } = useGetKsefJournalQuery(id, { skip: !id });\n  const [patchJournal, { isSuccess, error }] = useChangeKsefJournalMutation();\n  const getMessage = useMessages();\n\n  if (!id) return null;\n\n  const onSubmit = (data: KsefJournalFormData) => patchJournal({ id, journal: data });\n\n  return (\n    <Layout currentPage=\"parameters\">\n      <div className=\"flex flex-grow h-full\">\n        <ParametersSidebar selectedPage=\"ksefJournals\" />\n        <div className=\"flex flex-col flex-grow\">\n          <PageHeader\n            currentPage=\"parameters\"\n            pageTitle={intl.formatMessage(\n              { id: 'parameters.ksefJournals.journal' },\n              { journalName: journal?.name },\n            )}\n            path=\"/parametry/dzienniki_ksef\"\n          />\n          <ContentWrapper>\n            <Card className=\"col-span-12\">\n              {isSuccess && <FormNotice type=\"success\" message={getMessage('form.success')} />}\n              {/* @ts-ignore */}\n              {error && <FormNotice type=\"error\" message={error.data.errors || getMessage('form.error')} />}\n              <KsefJournalForm journal={journal} onSubmit={onSubmit} />\n            </Card>\n          </ContentWrapper>\n        </div>\n      </div>\n    </Layout>\n  );\n};\n\nexport default KsefJournalEditPage;\n", "import * as React from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useIntl } from 'react-intl';\nimport { FormInput, FormTextarea } from '../../../components/FormInputs';\nimport Button from '../../../components/Button/Button';\nimport useMessages from '../../../hooks/useMessages';\nimport { FullKsefJournal, KsefJournalFormData } from '../../../api/modules/documents/documentsTypes';\n\ntype Props = {\n  journal?: FullKsefJournal\n  onSubmit: (data: KsefJournalFormData) => void,\n};\n\nconst KsefJournalForm = ({ journal, onSubmit }: Props) => {\n  const getMessage = useMessages();\n  const intl = useIntl();\n  const methods = useForm<KsefJournalFormData>({\n    values: {\n      prefix: journal?.prefix || '',\n      name: journal?.name || '',\n      description: journal?.description || '',\n    },\n    mode: 'onChange',\n  });\n\n  return (\n    <div className=\"col-span-12\">\n      {/* eslint-disable-next-line react/jsx-props-no-spreading */}\n      <FormProvider {...methods}>\n        <form onSubmit={methods.handleSubmit(onSubmit)} className=\"flex flex-col\">\n          <FormInput\n            id=\"prefix\"\n            type=\"text\"\n            label={getMessage('parameters.journals.form.prefix')}\n            options={{\n              maxLength: { value: 64, message: intl.formatMessage({ id: 'form.name.error.tooLong' }, { maxLength: 64 }) },\n            }}\n          />\n          <FormInput\n            id=\"name\"\n            type=\"text\"\n            label={getMessage('parameters.journals.form.name')}\n            options={{\n              required: getMessage('parameters.journals.form.name.required'),\n              maxLength: { value: 64, message: intl.formatMessage({ id: 'form.name.error.tooLong' }, { maxLength: 64 }) },\n            }}\n          />\n          <FormTextarea id=\"description\" label={getMessage('parameters.journals.form.description')} />\n          <div className=\"col-span-12 self-end\">\n            <Button type=\"submit\" className=\"mt-6\">{getMessage('save')}</Button>\n          </div>\n        </form>\n      </FormProvider>\n    </div>\n  );\n};\n\nexport default KsefJournalForm;\n", "import * as React from 'react';\nimport { useEffect, useMemo, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport Tabs, { TabElement } from '../../../components/Tabs/Tabs';\nimport useMessages from '../../../hooks/useMessages';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport { useAppSelector } from '../../../hooks/reduxHooks';\nimport useFilters from '../../../hooks/useFilters';\nimport Layout from '../../../components/Layout/Layout';\nimport PageHeader from '../../../components/Layout/PageHeader';\nimport { FormInput } from '../../../components/FormInputs';\nimport Button from '../../../components/Button/Button';\nimport FiltersIcon from '../../../icons/filters.svg';\nimport KsefInvoicesFilters from './KsefInvoicesFilters';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport KsefInvoicesList from './KsefInvoicesList';\n\ninterface KsefInvoiceSearchInput {\n  name_search?: string | '',\n}\n\ninterface KsefInvoicesPageProps {\n  documentStatus: 'open' | 'mine_in_progress' | 'unassigned'\n}\n\nconst KsefInvoicesPage = ({ documentStatus }: KsefInvoicesPageProps) => {\n  const getMessage = useMessages();\n  const {\n    hasPermission, hasRoleType, checkPermission, checkModuleEnabled,\n  } = usePermissions();\n  const hasFilterSet = useAppSelector((state) => !!state.app.filters.find((filter) => filter.id === 'ksefInvoicesList'));\n  const [filtersOpen, setFiltersOpen] = useState(hasFilterSet);\n  const { saveFilterValues, filterValues } = useFilters<KsefInvoiceSearchInput>('ksefInvoicesList');\n  const tabs: TabElement[] = useMemo(() => {\n    if (!hasPermission('tasks_list')) return [];\n\n    return [\n      { label: getMessage('documents.tabs.all'), path: '/dokumenty/ksef' },\n      { label: getMessage('documents.tabs.mine_in_progress'), path: '/dokumenty/ksef/w-trakcie' },\n      { label: getMessage('documents.tabs.unassigned'), path: '/dokumenty/ksef/nieprzypisane' },\n    ];\n  }, [hasPermission]);\n  const methods = useForm<KsefInvoiceSearchInput>({\n    defaultValues: {\n      name_search: filterValues?.name_search || '',\n    },\n  });\n\n  useEffect(() => {\n    methods.watch(\n      (filters) => {\n        saveFilterValues(filters);\n      },\n    );\n  }, [methods.watch]);\n\n  if (!hasRoleType('admin')) checkPermission('documents_list');\n  checkModuleEnabled('documents');\n\n  return (\n    <Layout currentPage=\"documents_ksef\">\n      <PageHeader pageTitle={getMessage('ksefInvoices.list.title')} currentPage=\"documents\">\n        {!filtersOpen && (\n          // eslint-disable-next-line react/jsx-props-no-spreading\n          <FormProvider {...methods}>\n            <FormInput\n              className=\"col-span-2\"\n              id=\"name_search\"\n              type=\"search\"\n              inputClassName=\"w-full my-0\"\n              placeholder={getMessage('filters.search')}\n              ariaLabel={getMessage('ksefInvoices.filter.name')}\n            />\n          </FormProvider>\n        )}\n        <Button\n          Icon={FiltersIcon}\n          styleType=\"secondary\"\n          size=\"small\"\n          onClick={() => setFiltersOpen((open) => !open)}\n          className=\"mx-3 py-1 appearance-none\"\n        >\n          {getMessage('filters')}\n        </Button>\n      </PageHeader>\n      <Tabs tabElements={tabs} />\n\n      {filtersOpen && (<KsefInvoicesFilters />)}\n      <ContentWrapper className=\"md:grid-rows-[auto_minmax(200px,_max-content)_auto]\">\n        <KsefInvoicesList documentStatus={documentStatus} />\n      </ContentWrapper>\n    </Layout>\n  );\n};\n\nexport default KsefInvoicesPage;\n", "import * as React from 'react';\nimport { useMemo } from 'react';\nimport useMessages from '../../../hooks/useMessages';\nimport { useGetInvoiceStatusesQuery } from '../../../api/appApi';\nimport capitalize from '../../../../utils/formatters';\nimport { FilterConfig } from '../../../components/FilterInput/FilterInput';\nimport Filters from '../../../components/Filters/Filters';\nimport {\n  ksefAccountingDispositions,\n  ksefInvoiceModules,\n  ksefInvoiceWithoutModuleFilterValue,\n} from '../../../api/modules/documents/documentsTypes';\n\nconst KsefInvoicesFilters = () => {\n  const getMessage = useMessages();\n  const { data: invoiceStatuses } = useGetInvoiceStatusesQuery();\n\n  const statusOptionsValues = useMemo(() => invoiceStatuses?.map(({ id, name }) => ({\n    value: id,\n    optionLabel: capitalize(name),\n  })) || [], [invoiceStatuses]);\n\n  const dispositionOptionsValues = useMemo(() => ksefAccountingDispositions.map((disposition) => ({\n    value: disposition,\n    optionLabel: getMessage(`ksefInvoices.accountingDisposition.${disposition}`),\n  })), []);\n\n  const moduleOptionsValues = useMemo(() => [\n    ...ksefInvoiceModules.map((invoiceModule) => ({\n      value: invoiceModule,\n      optionLabel: getMessage(`ksefInvoices.invoiceModule.${invoiceModule}`),\n    })),\n    {\n      value: ksefInvoiceWithoutModuleFilterValue,\n      optionLabel: getMessage('ksefInvoices.filter.noModule'),\n    },\n  ], []);\n\n  const filterFields: FilterConfig[] = useMemo(() => [\n    {\n      type: 'multiselect',\n      id: 'status_ids',\n      label: getMessage('ksefInvoices.column.status'),\n      selectOptions: statusOptionsValues,\n    },\n    {\n      type: 'multiselect',\n      id: 'accounting_disposition',\n      label: getMessage('ksefInvoices.column.accountingDisposition'),\n      selectOptions: dispositionOptionsValues,\n    },\n    {\n      type: 'multiselect',\n      id: 'invoice_module',\n      label: getMessage('ksefInvoices.column.invoiceModule'),\n      selectOptions: moduleOptionsValues,\n    },\n    {\n      type: 'text',\n      id: 'name_search',\n      label: getMessage('ksefInvoices.filter.name'),\n      ariaLabel: getMessage('ksefInvoices.filter.name'),\n    },\n    {\n      type: 'text',\n      id: 'ksef_external_id_search',\n      label: getMessage('ksefInvoices.column.ksefExternalId'),\n      ariaLabel: getMessage('ksefInvoices.column.ksefExternalId'),\n    },\n    {\n      type: 'text',\n      id: 'firm_search',\n      label: getMessage('ksefInvoices.column.firm'),\n      ariaLabel: getMessage('ksefInvoices.column.firm'),\n    },\n    {\n      type: 'text',\n      id: 'realizer_search',\n      label: getMessage('ksefInvoices.column.realizer'),\n      ariaLabel: getMessage('ksefInvoices.column.realizer'),\n    },\n    {\n      type: 'dateRange',\n      id: 'from_invoice_issue_date',\n      toDateId: 'to_invoice_issue_date',\n      label: getMessage('ksefInvoices.column.invoiceIssueDate'),\n    },\n    {\n      type: 'dateRange',\n      id: 'from_invoice_receipt_date',\n      toDateId: 'to_invoice_receipt_date',\n      label: getMessage('ksefInvoices.column.invoiceReceiptDate'),\n    },\n    {\n      type: 'dateRange',\n      id: 'from_ksef_receipt_date',\n      toDateId: 'to_ksef_receipt_date',\n      label: getMessage('ksefInvoices.column.ksefReceiptDate'),\n    },\n    {\n      type: 'dateRange',\n      id: 'from_deadline',\n      toDateId: 'to_deadline',\n      label: getMessage('ksefInvoices.column.deadline'),\n    },\n    {\n      type: 'number',\n      id: 'amount_from',\n      label: getMessage('ksefInvoices.filter.amountFrom'),\n    },\n    {\n      type: 'number',\n      id: 'amount_to',\n      label: getMessage('ksefInvoices.filter.amountTo'),\n    },\n  ], [getMessage, statusOptionsValues, dispositionOptionsValues, moduleOptionsValues]);\n\n  return (\n    <Filters\n      filterId=\"ksefInvoicesList\"\n      filterFields={filterFields}\n    />\n  );\n};\n\nexport default KsefInvoicesFilters;\n", "import * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { useMediaQuery } from 'react-responsive';\nimport { useGetKsefInvoicesQuery } from '../../../api/appApi';\nimport usePagination from '../../../hooks/usePagination';\nimport useFilters from '../../../hooks/useFilters';\nimport useSortParams from '../../../hooks/useSortParams';\nimport { FilterValues } from '../../../store/appSlice';\nimport { md } from '../../../../utils/breakpoints';\nimport PaginationControls from '../../../components/Table/PaginationControls';\nimport KsefInvoicesTableDesktop from './KsefInvoicesTableDesktop';\nimport KsefInvoicesTableMobile from './KsefInvoicesTableMobile';\nimport { KsefInvoiceColumnId, ksefInvoiceCustomizableColumnIds } from '../../../api/modules/documents/documentsTypes';\n\ninterface KsefInvoicesListProps {\n  documentStatus: 'open' | 'mine_in_progress' | 'unassigned'\n}\n\nconst KsefInvoicesList = ({ documentStatus }: KsefInvoicesListProps) => {\n  const [selectedPage, setSelectedPage] = usePagination('ksefInvoicesList');\n  const { filterValues } = useFilters('ksefInvoicesList');\n  const { sortParamsValues } = useSortParams('ksefInvoicesList');\n  const [selectedColumns, setSelectedColumns] = useState<KsefInvoiceColumnId[]>(ksefInvoiceCustomizableColumnIds);\n  const filters: FilterValues = { ...filterValues };\n\n  useEffect(() => {\n    setSelectedPage(1);\n  }, []);\n\n  const { data } = useGetKsefInvoicesQuery({\n    ...sortParamsValues,\n    ...filters,\n    page: selectedPage.toString(),\n    document_status: documentStatus,\n  }, { refetchOnMountOrArgChange: true });\n\n  const isTabletOrDesktop = useMediaQuery({ query: `(min-width: ${md})` });\n  const invoicesData = data?.invoices || [];\n\n  return (\n    <>\n      {isTabletOrDesktop ? (\n        <KsefInvoicesTableDesktop\n          invoices={invoicesData}\n          selectedColumns={selectedColumns}\n          setSelectedColumns={setSelectedColumns}\n        />\n      ) : <KsefInvoicesTableMobile invoices={invoicesData} />}\n      {data?.metadata && (\n        <PaginationControls\n          className=\"col-span-full\"\n          selectedPage={selectedPage}\n          setSelectedPage={setSelectedPage}\n          paginationMetadata={data.metadata}\n        />\n      )}\n    </>\n  );\n};\n\nexport default KsefInvoicesList;\n", "import * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport format from 'date-fns/format';\nimport useMessages from '../../../hooks/useMessages';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport TableActionsBar from '../../../components/Table/TableActionsBar';\nimport Table, {\n  TableBody,\n  TableBodyCell,\n  TableBodyRow,\n  TableHeader,\n  TableHeaderCell,\n  TableHeaderRow,\n} from '../../../components/Table/Table';\nimport TableBodyPlaceholder from '../../../components/Table/TableBodyPlaceholder';\nimport Chip from '../../../components/Chip/Chip';\nimport { KsefInvoice, KsefInvoiceColumnId } from '../../../api/modules/documents/documentsTypes';\nimport { formatNumber } from '../../../../utils/formatters';\nimport KsefInvoicesTableCustomisation from './KsefInvoicesTableCustomisation';\nimport KsefInvoiceBulkActions from './KsefInvoicesBulkActions/KsefInvoiceBulkActions';\nimport { TableId } from '../../../store/appSlice';\n\ninterface Props {\n  invoices: KsefInvoice[],\n  selectedColumns: KsefInvoiceColumnId[],\n  setSelectedColumns: (columns: KsefInvoiceColumnId[]) => void,\n}\n\nconst KsefInvoicesTableDesktop = ({ invoices, selectedColumns, setSelectedColumns }: Props) => {\n  const getMessage = useMessages();\n  const { hasPermission, hasRoleType } = usePermissions();\n  const [selectedInvoicesIds, setSelectedInvoicesIds] = useState<string[]>([]);\n\n  const canChangeInvoices = hasRoleType('admin') || hasPermission('documents_add');\n  const isSelected = (columnId: KsefInvoiceColumnId): boolean => selectedColumns.includes(columnId);\n  const rowPaddingClass = canChangeInvoices\n    ? '[&>*:nth-child(2)]:pl-8 [&>*:last-child]:pr-8'\n    : '[&>*:first-child]:pl-8 [&>*:last-child]:pr-8';\n\n  useEffect(() => {\n    setSelectedInvoicesIds([]);\n  }, [invoices]);\n\n  const handleChecked = (id: string) => {\n    if (selectedInvoicesIds.includes(id)) {\n      setSelectedInvoicesIds((ids) => ids.filter((invoiceId) => invoiceId !== id));\n    } else {\n      setSelectedInvoicesIds((ids) => ids.concat([id]));\n    }\n  };\n\n  return (\n    <>\n      <TableActionsBar>\n        <div className=\"flex justify-center\">\n          {canChangeInvoices && (<KsefInvoiceBulkActions selectedInvoicesIds={selectedInvoicesIds} />)}\n          <KsefInvoicesTableCustomisation selectedColumns={selectedColumns} setSelectedColumns={setSelectedColumns} />\n        </div>\n      </TableActionsBar>\n      <Table className=\"col-span-full px-0 py-0 table-fixed whitespace-nowrap overflow-auto overscroll-none !p-0\">\n        <TableHeader className=\"sticky top-0 z-20 bg-background-white border-none shadow-main shadow-sm\">\n          <TableHeaderRow className={rowPaddingClass}>\n            {canChangeInvoices && (<TableHeaderCell className=\"sticky top-0 left-0 pt-8 bg-main \" />)}\n            {isSelected('invoice_number') && (\n              <TableHeaderCell className=\"pt-8 pb-4\" id=\"invoice_number\" tableName={'ksefInvoicesList' as TableId}>\n                {getMessage('ksefInvoices.column.invoiceNumber')}\n              </TableHeaderCell>\n            )}\n            {isSelected('invoice_issue_date') && (\n              <TableHeaderCell className=\"pt-8 pb-4\" id=\"invoice_issue_date\" tableName={'ksefInvoicesList' as TableId}>\n                {getMessage('ksefInvoices.column.invoiceIssueDate')}\n              </TableHeaderCell>\n            )}\n            {isSelected('ksef_receipt_date') && (\n              <TableHeaderCell className=\"pt-8 pb-4\" id=\"ksef_receipt_date\" tableName={'ksefInvoicesList' as TableId}>\n                {getMessage('ksefInvoices.column.ksefReceiptDate')}\n              </TableHeaderCell>\n            )}\n            {isSelected('amount') && (\n              <TableHeaderCell className=\"pt-8 pb-4\" id=\"amount\" tableName={'ksefInvoicesList' as TableId}>\n                {getMessage('ksefInvoices.column.amount')}\n              </TableHeaderCell>\n            )}\n            {isSelected('journal') && (\n              <TableHeaderCell className=\"pt-8 pb-4\" id=\"journal\" tableName={'ksefInvoicesList' as TableId}>\n                {getMessage('ksefInvoices.column.journal')}\n              </TableHeaderCell>\n            )}\n            {isSelected('invoice_receipt_date') && (\n              <TableHeaderCell className=\"pt-8 pb-4\" id=\"invoice_receipt_date\" tableName={'ksefInvoicesList' as TableId}>\n                {getMessage('ksefInvoices.column.invoiceReceiptDate')}\n              </TableHeaderCell>\n            )}\n            {isSelected('deadline') && (\n              <TableHeaderCell className=\"pt-8 pb-4\" id=\"deadline\" tableName={'ksefInvoicesList' as TableId}>\n                {getMessage('ksefInvoices.column.deadline')}\n              </TableHeaderCell>\n            )}\n            {isSelected('ksef_external_id') && (\n              <TableHeaderCell className=\"pt-8 pb-4\" id=\"ksef_external_id\" tableName={'ksefInvoicesList' as TableId}>\n                {getMessage('ksefInvoices.column.ksefExternalId')}\n              </TableHeaderCell>\n            )}\n            {isSelected('description') && (\n              <TableHeaderCell className=\"pt-8 pb-4\" id=\"description\" tableName={'ksefInvoicesList' as TableId}>\n                {getMessage('ksefInvoices.column.description')}\n              </TableHeaderCell>\n            )}\n            {isSelected('firm') && (\n              <TableHeaderCell className=\"pt-8 pb-4\" id=\"firm\" tableName={'ksefInvoicesList' as TableId}>\n                {getMessage('ksefInvoices.column.firm')}\n              </TableHeaderCell>\n            )}\n            {isSelected('status') && (\n              <TableHeaderCell className=\"pt-8 pb-4\">\n                {getMessage('ksefInvoices.column.status')}\n              </TableHeaderCell>\n            )}\n            {isSelected('realizer') && (\n              <TableHeaderCell className=\"pt-8 pb-4\">\n                {getMessage('ksefInvoices.column.realizer')}\n              </TableHeaderCell>\n            )}\n            {isSelected('accounting_disposition') && (\n              <TableHeaderCell className=\"pt-8 pb-4\">\n                {getMessage('ksefInvoices.column.accountingDisposition')}\n              </TableHeaderCell>\n            )}\n            {isSelected('invoice_module') && (\n              <TableHeaderCell className=\"pt-8 pb-4\">\n                {getMessage('ksefInvoices.column.invoiceModule')}\n              </TableHeaderCell>\n            )}\n          </TableHeaderRow>\n        </TableHeader>\n        <TableBody>\n          {invoices.length === 0 && (<TableBodyPlaceholder />)}\n          {invoices.map((invoice) => (\n            <TableBodyRow key={invoice.id} className={`relative border-none text-typography-black odd:bg-light-100 ${rowPaddingClass}`}>\n              {canChangeInvoices && (\n                <TableHeaderCell className=\"sticky left-0 z-15 m-10 pl-0 !pr-0 pt-0 bg-main border-main w-1\">\n                  <label htmlFor={invoice.id} className=\"hover:cursor-pointer\">\n                    <div className=\"text-[0px] h-0\">{getMessage('ksefInvoices.invoice.checkbox.label')}</div>\n                    <input\n                      className=\"m-4\"\n                      type=\"checkbox\"\n                      checked={selectedInvoicesIds.includes(invoice.id)}\n                      onChange={() => handleChecked(invoice.id)}\n                      id={invoice.id}\n                    />\n                  </label>\n                </TableHeaderCell>\n              )}\n              {isSelected('invoice_number') && (\n                <TableBodyCell\n                  clickable={{\n                    href: `/dokumenty/ksef/${invoice.externalId || invoice.id}`,\n                    ariaLabel: getMessage('ksefInvoices.invoice.detailsAriaLabel', { invoiceNumber: invoice.invoiceNumber }),\n                  }}\n                >\n                  {invoice.invoiceNumber}\n                </TableBodyCell>\n              )}\n              {isSelected('invoice_issue_date') && (\n                <TableBodyCell>\n                  {invoice.invoiceIssueDate && (\n                    <Chip chipStyle=\"ghost\" className=\"w-fit\">{format(new Date(invoice.invoiceIssueDate), 'dd-MM-yyyy')}</Chip>\n                  )}\n                </TableBodyCell>\n              )}\n              {isSelected('ksef_receipt_date') && (\n                <TableBodyCell>\n                  {invoice.ksefReceiptDate && (\n                    <Chip chipStyle=\"ghost\" className=\"w-fit\">{format(new Date(invoice.ksefReceiptDate), 'dd-MM-yyyy')}</Chip>\n                  )}\n                </TableBodyCell>\n              )}\n              {isSelected('amount') && (<TableBodyCell>{formatNumber(invoice.amount || 0)}</TableBodyCell>)}\n              {isSelected('journal') && (<TableBodyCell>{invoice.journal}</TableBodyCell>)}\n              {isSelected('invoice_receipt_date') && (\n                <TableBodyCell>{invoice.invoiceReceiptDate ? format(new Date(invoice.invoiceReceiptDate), 'dd-MM-yyyy') : ''}</TableBodyCell>\n              )}\n              {isSelected('deadline') && (\n                <TableBodyCell>{invoice.deadline ? format(new Date(invoice.deadline), 'dd-MM-yyyy') : ''}</TableBodyCell>\n              )}\n              {isSelected('ksef_external_id') && (<TableBodyCell>{invoice.ksefExternalId}</TableBodyCell>)}\n              {isSelected('description') && (<TableBodyCell>{invoice.description}</TableBodyCell>)}\n              {isSelected('firm') && (<TableBodyCell>{invoice.firm}</TableBodyCell>)}\n              {isSelected('status') && (\n                <TableBodyCell>\n                  {invoice.status ? <Chip chipStyle=\"primary\" className=\"w-fit\">{invoice.status}</Chip> : ''}\n                </TableBodyCell>\n              )}\n              {isSelected('realizer') && (<TableBodyCell>{invoice.realizer}</TableBodyCell>)}\n              {isSelected('accounting_disposition') && (\n                <TableBodyCell>\n                  {invoice.accountingDisposition ? getMessage(`ksefInvoices.accountingDisposition.${invoice.accountingDisposition}`) : ''}\n                </TableBodyCell>\n              )}\n              {isSelected('invoice_module') && (\n                <TableBodyCell>\n                  {invoice.invoiceModule ? getMessage(`ksefInvoices.invoiceModule.${invoice.invoiceModule}`) : ''}\n                </TableBodyCell>\n              )}\n            </TableBodyRow>\n          ))}\n        </TableBody>\n      </Table>\n    </>\n  );\n};\n\nexport default KsefInvoicesTableDesktop;\n", "import * as React from 'react';\nimport { useMemo } from 'react';\nimport useMessages from '../../../hooks/useMessages';\nimport { SelectOption } from '../../../components/FormInputs/inputs/FormSelect';\nimport TableCustomisationMenu from '../../../components/TableCustomisationMenu/TableCustomisationMenu';\nimport { KsefInvoiceColumnId, ksefInvoiceCustomizableColumnIds } from '../../../api/modules/documents/documentsTypes';\n\ninterface Props {\n  selectedColumns: KsefInvoiceColumnId[],\n  setSelectedColumns: (columns: KsefInvoiceColumnId[]) => void,\n}\n\nconst KsefInvoicesTableCustomisation = ({ selectedColumns, setSelectedColumns }: Props) => {\n  const getMessage = useMessages();\n\n  const selectOptions: SelectOption[] = useMemo(() => ksefInvoiceCustomizableColumnIds.map((id) => ({\n    value: id,\n    optionLabel: getMessage(`ksefInvoices.columnConfig.${id}`),\n  })), []);\n\n  return (\n    <TableCustomisationMenu\n      selectedColumns={selectedColumns}\n      setSelectedColumns={(columns) => setSelectedColumns(columns as KsefInvoiceColumnId[])}\n      selectOptions={selectOptions}\n      tableId=\"ksefInvoicesList\"\n    />\n  );\n};\n\nexport default KsefInvoicesTableCustomisation;\n", "import * as React from 'react';\nimport KsefInvoiceAssignEmployeeAction from './KsefInvoiceAssignEmployeeAction';\nimport KsefInvoiceChangeStatusAction from './KsefInvoiceChangeStatusAction';\n\ninterface Props {\n  selectedInvoicesIds: string[];\n}\n\nconst KsefInvoiceBulkActions = ({ selectedInvoicesIds }: Props) => (\n  <div className=\"flex items-center border-r border-stroke-grey-300 pr-1\">\n    <KsefInvoiceAssignEmployeeAction selectedInvoicesIds={selectedInvoicesIds} />\n    <KsefInvoiceChangeStatusAction selectedInvoicesIds={selectedInvoicesIds} />\n  </div>\n);\n\nexport default KsefInvoiceBulkActions;\n", "/* eslint-disable react/jsx-props-no-spreading */\n/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n\nimport * as React from 'react';\nimport { useCallback, useState } from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useLocation, useNavigate } from 'react-router';\nimport classNames from 'classnames';\nimport { useGetEmployeesQuery, usePostChangeKsefInvoiceMutation } from '../../../../api/appApi';\nimport useMessages from '../../../../hooks/useMessages';\nimport RealizerIcon from '../../../../icons/user.svg';\nimport Dialog from '../../../../components/Dialog/Dialog';\nimport { InputLabel } from '../../../../components/FormInputs/InputLabel';\nimport FormSearchableDropdown from '../../../../components/FormInputs/FormSearchableDropdown';\nimport { FormCheckboxInput } from '../../../../components/FormInputs';\n\ninterface Props {\n  selectedInvoicesIds: string[],\n}\n\nconst KsefInvoiceAssignEmployeeAction = ({ selectedInvoicesIds }: Props) => {\n  const [isPopupOpen, setIsPopupOpen] = useState(false);\n  const [postChangeKsefInvoice] = usePostChangeKsefInvoiceMutation();\n  const getMessage = useMessages();\n  const methods = useForm();\n  const watchRealizerId = methods.watch('realizer_id');\n  const watchRemoveRealizer = methods.watch('removeRealizer');\n  const navigate = useNavigate();\n  const location = useLocation();\n\n  const handleClick = () => {\n    if (selectedInvoicesIds.length > 0) setIsPopupOpen(true);\n  };\n\n  const onAccept = useCallback(() => {\n    const invoices: {\n      [key: string]: {\n        realizer_id: string | null\n      }\n    } = {};\n\n    selectedInvoicesIds.forEach((invoiceId) => {\n      invoices[invoiceId] = { realizer_id: watchRealizerId || null };\n    });\n    postChangeKsefInvoice({ invoices });\n\n    methods.setValue('realizer_id', '');\n    methods.setValue('removeRealizer', false);\n    navigate(location.pathname);\n  }, [watchRealizerId, watchRemoveRealizer]);\n\n  const onClose = () => {\n    methods.setValue('realizer_id', '');\n    methods.setValue('removeRealizer', false);\n    setIsPopupOpen(false);\n  };\n\n  const dynamicStyles = (selectedInvoicesIds.length > 0)\n    ? 'border-typography-dark hover:border-hover hover:cursor-pointer hover:text-hover hover:bg-light-200'\n    : 'text-stroke-grey-300 border-stroke-grey-300 hover:cursor-default';\n\n  return (\n    <div title={getMessage('ksefInvoices.bulkAction.changeRealizer')}>\n      <RealizerIcon\n        role=\"button\"\n        className={classNames(dynamicStyles, 'border rounded text-typography-dark p-2 mr-1')}\n        onClick={handleClick}\n        tabIndex={(selectedInvoicesIds.length > 0) ? 0 : undefined}\n        onKeyDown={(e) => e.key === 'Enter' && setIsPopupOpen(true)}\n        aria-label={getMessage('ksefInvoices.bulkAction.changeRealizer')}\n      />\n      {isPopupOpen\n        && (\n          <Dialog\n            isOpen={isPopupOpen}\n            acceptButtonText={getMessage('confirm')}\n            onClose={onClose}\n            closeButtonText={getMessage('cancel')}\n            onAccept={onAccept}\n            isAcceptButtonDisabled={!watchRealizerId && !watchRemoveRealizer}\n          >\n            <div className=\"mb-10\">\n              <InputLabel label={getMessage('ksefInvoices.changeInvoicesRealizer')} autofocus />\n              <FormProvider {...methods}>\n                <FormSearchableDropdown\n                  label=\" \"\n                  className=\"mt-4 w-full\"\n                  id=\"realizer_id\"\n                  query={useGetEmployeesQuery}\n                  disabled={watchRemoveRealizer}\n                  ariaLabel={getMessage('form.ariaLabel.realizer')}\n                />\n                <p className=\"text-center my-2\">{getMessage('ksefInvoices.changeInvoicesRealizer.popUp.or')}</p>\n                <FormCheckboxInput\n                  label={getMessage('ksefInvoices.changeInvoicesRealizer.popUp.removeRealizer')}\n                  id=\"removeRealizer\"\n                  className=\"hover:text-red-500\"\n                  disabled={watchRealizerId}\n                />\n              </FormProvider>\n            </div>\n          </Dialog>\n        ) }\n    </div>\n  );\n};\n\nexport default KsefInvoiceAssignEmployeeAction;\n", "import * as React from 'react';\nimport { useCallback, useMemo, useState } from 'react';\nimport classNames from 'classnames';\nimport { useGetInvoiceStatusesQuery, usePostChangeKsefInvoiceMutation } from '../../../../api/appApi';\nimport useMessages from '../../../../hooks/useMessages';\nimport capitalize from '../../../../../utils/formatters';\nimport StatusIcon from '../../../../icons/bell.svg';\nimport Dialog from '../../../../components/Dialog/Dialog';\nimport { InputLabel } from '../../../../components/FormInputs/InputLabel';\nimport { Select } from '../../../../components/FormInputs/inputs/FormSelect';\n\ninterface Props {\n  selectedInvoicesIds: string[],\n}\n\nconst KsefInvoiceChangeStatusAction = ({ selectedInvoicesIds }: Props) => {\n  const [isPopupOpen, setIsPopupOpen] = useState(false);\n  const [selectedStatus, setSelectedStatus] = useState('');\n  const [postChangeKsefInvoice] = usePostChangeKsefInvoiceMutation();\n  const { data: invoiceStatuses } = useGetInvoiceStatusesQuery();\n  const getMessage = useMessages();\n\n  const statusOptionsValues = useMemo(() => invoiceStatuses?.map(({ id, name }) => ({\n    value: id,\n    optionLabel: capitalize(name),\n  })) || [], [invoiceStatuses]);\n\n  const handleClick = () => {\n    if (selectedInvoicesIds.length > 0) setIsPopupOpen(true);\n  };\n\n  const changeStatus = (value: string) => {\n    setSelectedStatus(value);\n  };\n\n  const onAccept = useCallback(() => {\n    const invoices: {\n      [key: string]: {\n        status_id: string\n      }\n    } = {};\n\n    selectedInvoicesIds.forEach((invoiceId) => {\n      invoices[invoiceId] = { status_id: selectedStatus };\n    });\n\n    postChangeKsefInvoice({ invoices });\n  }, [selectedStatus]);\n\n  const onClose = () => {\n    setSelectedStatus('');\n    setIsPopupOpen(false);\n  };\n\n  const dynamicStyles = (selectedInvoicesIds.length > 0)\n    ? 'border-typography-dark hover:border-hover hover:cursor-pointer hover:text-hover hover:bg-light-200'\n    : 'text-stroke-grey-300 border-stroke-grey-300 hover:cursor-default';\n\n  return (\n    <div title={getMessage('ksefInvoices.bulkAction.changeStatus')}>\n      <StatusIcon\n        role=\"button\"\n        className={classNames(dynamicStyles, 'border rounded text-typography-dark p-2 mr-1')}\n        onClick={handleClick}\n        tabIndex={(selectedInvoicesIds.length > 0) ? 0 : undefined}\n        onKeyDown={(e) => e.key === 'Enter' && setIsPopupOpen(true)}\n        aria-label={getMessage('ksefInvoices.bulkAction.changeStatus')}\n      />\n      {isPopupOpen\n        && (\n          <Dialog\n            isOpen={isPopupOpen}\n            acceptButtonText={getMessage('confirm')}\n            onClose={onClose}\n            closeButtonText={getMessage('cancel')}\n            onAccept={onAccept}\n            isAcceptButtonDisabled={!selectedStatus}\n          >\n            <div className=\"mb-10\">\n              <InputLabel\n                label={getMessage('ksefInvoices.changeInvoicesStatus')}\n              />\n              <Select\n                selectOptions={statusOptionsValues}\n                onChange={(value) => changeStatus(value)}\n                value={selectedStatus}\n                placeholder={getMessage('choose')}\n                autofocus\n              />\n            </div>\n          </Dialog>\n        ) }\n    </div>\n  );\n};\n\nexport default KsefInvoiceChangeStatusAction;\n", "import * as React from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport format from 'date-fns/format';\nimport useMessages from '../../../hooks/useMessages';\nimport ResponsiveTable, {\n  ResponsiveTableBody,\n  ResponsiveTableBodyRow,\n  ResponsiveTableHeader,\n} from '../../../components/Table/ResponsiveTable';\nimport TableBodyPlaceholder from '../../../components/Table/TableBodyPlaceholder';\nimport { TableId } from '../../../store/appSlice';\nimport { TableBodyCell } from '../../../components/Table/Table';\nimport Chip from '../../../components/Chip/Chip';\nimport Button from '../../../components/Button/Button';\nimport { KsefInvoice } from '../../../api/modules/documents/documentsTypes';\nimport { formatNumber } from '../../../../utils/formatters';\n\ninterface Props {\n  invoices: KsefInvoice[],\n}\n\nconst KsefInvoicesTableMobile = ({ invoices }: Props) => {\n  const navigate = useNavigate();\n  const getMessage = useMessages();\n  const ids = invoices?.map(({ id }) => id) || [];\n  const handleNavigate = (invoicePathId: string) => navigate(`/dokumenty/ksef/${invoicePathId}`);\n\n  const columnLabels = [\n    { label: 'ksefInvoices.column.invoiceNumber' },\n    { label: 'ksefInvoices.column.invoiceIssueDate' },\n    { label: 'ksefInvoices.column.ksefReceiptDate' },\n    { label: 'ksefInvoices.column.amount' },\n    { label: 'ksefInvoices.column.journal' },\n    { label: 'ksefInvoices.column.status' },\n    { label: 'ksefInvoices.column.realizer' },\n    { label: 'ksefInvoices.column.accountingDisposition' },\n    { label: 'ksefInvoices.column.invoiceModule' },\n    { label: 'ksefInvoices.invoice.detailsButton', divClassName: 'sr-only' },\n  ];\n\n  return (\n    <ResponsiveTable className=\"col-span-full md:mb-0\">\n      {invoices.length === 0 ? <TableBodyPlaceholder /> : (\n        <>\n          <ResponsiveTableHeader ids={ids} columnLabels={columnLabels} tableName={'ksefInvoicesList' as TableId} />\n          <ResponsiveTableBody>\n            {invoices.map((invoice) => (\n              <ResponsiveTableBodyRow key={invoice.id} className=\"border-b last:border-b-0 border-separate font-medium\">\n                <TableBodyCell>{invoice.invoiceNumber}</TableBodyCell>\n                <TableBodyCell>\n                  {invoice.invoiceIssueDate ? format(new Date(invoice.invoiceIssueDate), 'dd-MM-yyyy') : ''}\n                </TableBodyCell>\n                <TableBodyCell>\n                  {invoice.ksefReceiptDate ? (\n                    <Chip chipStyle=\"primary\" className=\"w-fit\">\n                      {format(new Date(invoice.ksefReceiptDate), 'dd-MM-yyyy')}\n                    </Chip>\n                  ) : ''}\n                </TableBodyCell>\n                <TableBodyCell>{formatNumber(invoice.amount || 0)}</TableBodyCell>\n                <TableBodyCell>{invoice.journal}</TableBodyCell>\n                <TableBodyCell>\n                  {invoice.status ? <Chip chipStyle=\"primary\" className=\"w-fit\">{invoice.status}</Chip> : ''}\n                </TableBodyCell>\n                <TableBodyCell>{invoice.realizer}</TableBodyCell>\n                <TableBodyCell>\n                  {invoice.accountingDisposition ? getMessage(`ksefInvoices.accountingDisposition.${invoice.accountingDisposition}`) : ''}\n                </TableBodyCell>\n                <TableBodyCell>\n                  {invoice.invoiceModule ? getMessage(`ksefInvoices.invoiceModule.${invoice.invoiceModule}`) : ''}\n                </TableBodyCell>\n                <TableBodyCell>\n                  <Button\n                    onClick={() => handleNavigate(invoice.externalId || invoice.id)}\n                    styleType=\"secondary\"\n                    size=\"small\"\n                    ariaLabel={getMessage('ksefInvoices.invoice.detailsAriaLabel', { invoiceNumber: invoice.invoiceNumber })}\n                  >\n                    {getMessage('more')}\n                  </Button>\n                </TableBodyCell>\n              </ResponsiveTableBodyRow>\n            ))}\n          </ResponsiveTableBody>\n        </>\n      )}\n    </ResponsiveTable>\n  );\n};\n\nexport default KsefInvoicesTableMobile;\n", "import * as React from 'react';\nimport format from 'date-fns/format';\nimport { useParams } from 'react-router-dom';\nimport Layout from '../../../components/Layout/Layout';\nimport PageHeader from '../../../components/Layout/PageHeader';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport Card from '../../../components/Card/Card';\nimport Chip from '../../../components/Chip/Chip';\nimport AttachmentPreview from '../../../components/AttachmentPreview/AttachmentPreview';\nimport CommentsList from '../../../components/CommentsList/CommentsList';\nimport { useGetKsefInvoiceQuery } from '../../../api/appApi';\nimport useMessages from '../../../hooks/useMessages';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport { formatNumber } from '../../../../utils/formatters';\nimport KsefInvoiceDesktopInfoCard from './KsefInvoiceDesktopInfoCard';\nimport KsefInvoiceMobileInfoCard from './KsefInvoiceMobileInfoCard';\nimport KsefInvoiceMarkdownField from './KsefInvoiceMarkdownField';\n\nconst KsefInvoicePage = () => {\n  const {\n    hasRoleType, hasPermission, checkPermission, checkModuleEnabled,\n  } = usePermissions();\n  const { externalId } = useParams();\n  const { data: invoice } = useGetKsefInvoiceQuery(externalId, { skip: !externalId });\n  const getMessage = useMessages();\n\n  const formatDate = (date?: string | null, dateFormat = 'dd-MM-yyyy') => (date ? format(new Date(date), dateFormat) : '-');\n\n  const canChangeInvoice = hasRoleType('admin') || hasPermission('documents_add');\n\n  if (!hasRoleType('admin')) checkPermission('documents_list');\n  checkModuleEnabled('documents');\n\n  if (!externalId) return null;\n\n  let compressedValue = '-';\n  if (invoice) {\n    compressedValue = invoice.compressed\n      ? getMessage('ksefInvoices.invoice.compressed.yes')\n      : getMessage('ksefInvoices.invoice.compressed.no');\n  }\n\n  const details = [\n    { label: getMessage('ksefInvoices.column.ksefExternalId'), value: invoice?.ksefExternalId || '-' },\n    { label: getMessage('ksefInvoices.invoice.externalId'), value: invoice?.externalId || '-' },\n    { label: getMessage('ksefInvoices.column.invoiceIssueDate'), value: formatDate(invoice?.invoiceIssueDate) },\n    { label: getMessage('ksefInvoices.column.invoiceReceiptDate'), value: formatDate(invoice?.invoiceReceiptDate) },\n    { label: getMessage('ksefInvoices.column.ksefReceiptDate'), value: formatDate(invoice?.ksefReceiptDate) },\n    { label: getMessage('ksefInvoices.column.deadline'), value: formatDate(invoice?.deadline) },\n    { label: getMessage('ksefInvoices.column.amount'), value: invoice?.amount != null ? formatNumber(invoice.amount) : '-' },\n    { label: getMessage('ksefInvoices.column.journal'), value: invoice?.journal?.name || '-' },\n    { label: getMessage('ksefInvoices.column.firm'), value: invoice?.firm?.name || '-' },\n    { label: getMessage('ksefInvoices.invoice.extensionType'), value: invoice?.extensionType || '-' },\n    { label: getMessage('ksefInvoices.invoice.compressed'), value: compressedValue },\n    { label: getMessage('ksefInvoices.invoice.createdAt'), value: formatDate(invoice?.createdAt, 'dd-MM-yyyy HH:mm') },\n    { label: getMessage('ksefInvoices.invoice.updatedAt'), value: formatDate(invoice?.updatedAt, 'dd-MM-yyyy HH:mm') },\n  ];\n\n  return (\n    <Layout currentPage=\"documents_ksef\">\n      <PageHeader\n        pageTitle={`${getMessage('ksefInvoices.invoice.header')} ${invoice?.invoiceNumber || ''}`}\n        currentPage=\"documents\"\n        path=\"/dokumenty/ksef\"\n      />\n      <KsefInvoiceMobileInfoCard />\n      <ContentWrapper>\n        <Card className=\"col-span-full lg:col-span-9 row-span-1\">\n          <div className=\"flex justify-between\">\n            <h4 className=\"text-header-xs md:text-header-sm inline mr-6\">{invoice?.invoiceNumber || '-'}</h4>\n            <div className=\"flex flex-wrap justify-end\">\n              {invoice?.invoiceIssueDate && (\n                <Chip chipStyle=\"ghost\" className=\"mb-1 md:mb-0\">\n                  {formatDate(invoice.invoiceIssueDate)}\n                </Chip>\n              )}\n            </div>\n          </div>\n          <section className=\"grid grid-cols-1 md:grid-cols-2 gap-y-4 gap-x-8 border-t mt-4 pt-6\">\n            {details.map(({ label, value }) => (\n              <p key={label} className=\"text-text-md-semibold text-typography-dark break-words\">\n                {label}\n                <span className=\"text-text-md-medium ml-2\">{value}</span>\n              </p>\n            ))}\n          </section>\n          <section className=\"border-t mt-6 pt-6\">\n            <p className=\"text-text-md-semibold text-typography-dark break-words\">\n              {getMessage('ksefInvoices.column.description')}\n              <span className=\"text-text-md-medium ml-2\">{invoice?.description || '-'}</span>\n            </p>\n          </section>\n          <KsefInvoiceMarkdownField\n            invoiceId={invoice?.id}\n            attribute=\"merit_description\"\n            label={getMessage('ksefInvoices.column.meritDescription')}\n            value={invoice?.meritDescription}\n            canEdit={canChangeInvoice}\n          />\n          <KsefInvoiceMarkdownField\n            invoiceId={invoice?.id}\n            attribute=\"accounting_description\"\n            label={getMessage('ksefInvoices.column.accountingDescription')}\n            value={invoice?.accountingDescription}\n            canEdit={canChangeInvoice}\n          />\n          {invoice?.attachments?.length > 0 && (\n            <section className=\"border-t mt-6 pt-6\">\n              <ol className=\"flex flex-wrap\">\n                {invoice.attachments.map(({\n                  filename, path, contentType, description,\n                }) => (\n                  <AttachmentPreview filename={filename} path={path} contentType={contentType} description={description} key={path} />\n                ))}\n              </ol>\n            </section>\n          )}\n          <section className=\"border-t mt-6 pt-6\">\n            <h3 className=\"inline-block my-5 text-text-lg-semibold md:text-title-semibold\">\n              {getMessage('documents.document.discussion')}\n            </h3>\n            <CommentsList\n              ksefInvoiceId={invoice?.id}\n              comments={invoice?.comments}\n              publicComment={false}\n              revoked={false}\n            />\n          </section>\n        </Card>\n        <KsefInvoiceDesktopInfoCard />\n      </ContentWrapper>\n    </Layout>\n  );\n};\n\nexport default KsefInvoicePage;\n", "import * as React from 'react';\nimport DesktopInfoCard from '../../../components/InfoCard/DesktopInfoCard/DesktopInfoCard';\nimport useMessages from '../../../hooks/useMessages';\nimport KsefInvoiceInfoCard from './KsefInvoiceInfoCard';\n\nconst KsefInvoiceDesktopInfoCard = () => {\n  const getMessage = useMessages();\n\n  return (\n    <DesktopInfoCard className=\"row-span-1\" title={getMessage('ksefInvoices.invoice.info')}>\n      <KsefInvoiceInfoCard />\n    </DesktopInfoCard>\n  );\n};\n\nexport default KsefInvoiceDesktopInfoCard;\n", "import * as React from 'react';\nimport {\n  useMemo, useCallback, useEffect, useState,\n} from 'react';\nimport { useParams } from 'react-router-dom';\nimport {\n  useGetEmployeesQuery,\n  useGetInvoiceStatusesQuery,\n  useGetKsefInvoiceQuery,\n  usePostChangeKsefInvoiceMutation,\n} from '../../../api/appApi';\nimport useMessages from '../../../hooks/useMessages';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport capitalize from '../../../../utils/formatters';\nimport { ksefAccountingDispositions, ksefInvoiceModules } from '../../../api/modules/documents/documentsTypes';\nimport { InputLabel } from '../../../components/FormInputs/InputLabel';\nimport { Select } from '../../../components/FormInputs/inputs/FormSelect';\nimport SearchableDropdown from '../../../components/SearchableDropdown/SearchableDropdown';\nimport { FormNotice } from '../../../components/FormNotice/FormNotice';\n\nconst KsefInvoiceInfoCard = () => {\n  const [realizerState, setRealizerState] = useState<string | null>(null);\n  const getMessage = useMessages();\n  const { hasPermission, hasRoleType } = usePermissions();\n  const { externalId } = useParams();\n  const { data: invoice } = useGetKsefInvoiceQuery(externalId, { skip: !externalId });\n  const { data: invoiceStatuses } = useGetInvoiceStatusesQuery();\n  const [postChangeKsefInvoice, result] = usePostChangeKsefInvoiceMutation();\n\n  const canChangeInvoice = hasRoleType('admin') || hasPermission('documents_add');\n\n  useEffect(() => {\n    setRealizerState(invoice?.realizer?.name || null);\n  }, [invoice?.realizer?.name]);\n\n  const statusOptionsValues = useMemo(() => invoiceStatuses?.map(({ id, name }) => ({\n    value: id,\n    optionLabel: capitalize(name),\n  })) || [], [invoiceStatuses]);\n\n  const dispositionOptionsValues = ksefAccountingDispositions.map((disposition) => ({\n    value: disposition,\n    optionLabel: getMessage(`ksefInvoices.accountingDisposition.${disposition}`),\n  }));\n\n  const moduleOptionsValues = ksefInvoiceModules.map((invoiceModule) => ({\n    value: invoiceModule,\n    optionLabel: getMessage(`ksefInvoices.invoiceModule.${invoiceModule}`),\n  }));\n\n  const changeParam = useCallback((\n    paramName: 'status_id' | 'realizer_id' | 'accounting_disposition' | 'invoice_module',\n    paramValue: string | null,\n  ): void => {\n    if (!invoice?.id) return;\n\n    postChangeKsefInvoice({\n      invoices: {\n        [invoice.id]: {\n          [paramName]: paramValue,\n        },\n      },\n    });\n  }, [invoice?.id, postChangeKsefInvoice]);\n\n  if (!externalId) return null;\n\n  return (\n    <div className=\"w-full flex flex-col text-text-md-semibold\">\n      <section className=\"border-b pb-4 tablet:flex tablet:w-full\">\n        <div className=\"tablet:mr-5 tablet:w-1/2\">\n          <InputLabel\n            label={getMessage('ksefInvoices.column.status')}\n          />\n          <Select\n            selectOptions={statusOptionsValues}\n            onChange={(statusId) => changeParam('status_id', statusId)}\n            value={invoice?.status?.id || ''}\n            placeholder={getMessage('choose')}\n            disabled={!canChangeInvoice}\n          />\n        </div>\n        <div className=\"tablet:mr-5 tablet:w-1/2 mt-4 tablet:mt-0\">\n          <InputLabel\n            label={getMessage('ksefInvoices.column.realizer')}\n            showReset={canChangeInvoice && !!realizerState}\n            resetButtonText={getMessage('remove')}\n            onReset={() => {\n              changeParam('realizer_id', null);\n              setRealizerState(null);\n            }}\n          />\n          <SearchableDropdown\n            className=\"w-full\"\n            query={useGetEmployeesQuery}\n            onSelect={(realizerId) => changeParam('realizer_id', realizerId)}\n            initialState={realizerState}\n            ariaLabel={getMessage('form.ariaLabel.realizer')}\n            disabled={!canChangeInvoice}\n          />\n        </div>\n      </section>\n      <section className=\"border-b py-4 tablet:flex tablet:w-full\">\n        <div className=\"tablet:mr-5 tablet:w-1/2\">\n          <InputLabel\n            label={getMessage('ksefInvoices.column.accountingDisposition')}\n          />\n          <Select\n            selectOptions={dispositionOptionsValues}\n            onChange={(disposition) => changeParam('accounting_disposition', disposition)}\n            value={invoice?.accountingDisposition || ''}\n            placeholder={getMessage('choose')}\n            disabled={!canChangeInvoice}\n          />\n        </div>\n        <div className=\"tablet:mr-5 tablet:w-1/2 mt-4 tablet:mt-0\">\n          <InputLabel\n            label={getMessage('ksefInvoices.column.invoiceModule')}\n            showReset={canChangeInvoice && !!invoice?.invoiceModule}\n            resetButtonText={getMessage('remove')}\n            onReset={() => changeParam('invoice_module', null)}\n          />\n          <Select\n            selectOptions={moduleOptionsValues}\n            onChange={(invoiceModule) => changeParam('invoice_module', invoiceModule)}\n            value={invoice?.invoiceModule || ''}\n            placeholder={getMessage('choose')}\n            disabled={!canChangeInvoice}\n          />\n        </div>\n      </section>\n      {result.isError && (\n        // @ts-ignore\n        <FormNotice noticeClassName=\"tablet:mr-5 mt-3\" type=\"error\" message={result.error.data?.errors || getMessage('form.error')} />\n      )}\n    </div>\n  );\n};\n\nexport default KsefInvoiceInfoCard;\n", "import * as React from 'react';\nimport MobileInfoCard from '../../../components/InfoCard/MobileInfoCard/MobileInfoCard';\nimport useMessages from '../../../hooks/useMessages';\nimport KsefInvoiceInfoCard from './KsefInvoiceInfoCard';\n\nconst KsefInvoiceMobileInfoCard = () => {\n  const getMessage = useMessages();\n\n  return (\n    <MobileInfoCard title={getMessage('ksefInvoices.invoice.info')}>\n      <KsefInvoiceInfoCard />\n    </MobileInfoCard>\n  );\n};\n\nexport default KsefInvoiceMobileInfoCard;\n", "import * as React from 'react';\nimport { useEffect, useState } from 'react';\nimport { usePostChangeKsefInvoiceMutation } from '../../../api/appApi';\nimport useMessages from '../../../hooks/useMessages';\nimport Button from '../../../components/Button/Button';\nimport { FormNotice } from '../../../components/FormNotice/FormNotice';\nimport MarkdownEditor from '../../../components/MarkdownEditor/MarkdownEditor';\n\ninterface Props {\n  invoiceId?: string,\n  attribute: 'merit_description' | 'accounting_description',\n  label: string,\n  value?: string | null,\n  canEdit: boolean,\n}\n\nconst KsefInvoiceMarkdownField = ({\n  invoiceId, attribute, label, value, canEdit,\n}: Props) => {\n  const getMessage = useMessages();\n  const savedValue = value || '';\n  const hasValue = savedValue.trim() !== '';\n  const [draft, setDraft] = useState(savedValue);\n  const [editing, setEditing] = useState(false);\n  const [postChangeKsefInvoice, result] = usePostChangeKsefInvoiceMutation();\n  const fieldId = `ksef-invoice-${attribute}`;\n  // Descriptions that are already filled in are shown formatted; the editor opens on demand.\n  // Empty descriptions start with the editor open (once the invoice is loaded).\n  const showEditor = canEdit && !!invoiceId && (editing || !hasValue);\n\n  useEffect(() => {\n    setDraft(savedValue);\n  }, [savedValue]);\n\n  useEffect(() => {\n    setEditing(false);\n  }, [invoiceId]);\n\n  const save = () => {\n    if (!invoiceId) return;\n\n    postChangeKsefInvoice({ invoices: { [invoiceId]: { [attribute]: draft } } })\n      .unwrap()\n      .then(() => setEditing(false))\n      .catch(() => {});\n  };\n\n  const cancel = () => {\n    setDraft(savedValue);\n    setEditing(false);\n    result.reset();\n  };\n\n  return (\n    <section className=\"border-t mt-6 pt-6\">\n      <div className=\"flex justify-between items-center mb-2\">\n        <h3 className=\"text-text-md-semibold text-typography-dark\">{label}</h3>\n        {canEdit && !!invoiceId && !showEditor && (\n          <Button\n            type=\"button\"\n            size=\"small\"\n            styleType=\"secondary\"\n            onClick={() => setEditing(true)}\n            ariaLabel={`${getMessage('ksefInvoices.markdown.edit')} ${label}`}\n          >\n            {getMessage('ksefInvoices.markdown.edit')}\n          </Button>\n        )}\n      </div>\n      {showEditor ? (\n        <>\n          <MarkdownEditor id={fieldId} label={label} value={draft} onChange={setDraft} />\n          <div className=\"flex justify-end mt-2 gap-2\">\n            {hasValue && (\n              <Button\n                type=\"button\"\n                size=\"small\"\n                styleType=\"secondary\"\n                onClick={cancel}\n                disabled={result.isLoading}\n                ariaLabel={`${getMessage('cancel')} ${label}`}\n              >\n                {getMessage('cancel')}\n              </Button>\n            )}\n            <Button\n              type=\"button\"\n              size=\"small\"\n              onClick={save}\n              disabled={result.isLoading || draft === savedValue}\n              ariaLabel={`${getMessage('save')} ${label}`}\n            >\n              {getMessage('save')}\n            </Button>\n          </div>\n          {result.isError && (\n            // @ts-ignore\n            <FormNotice noticeClassName=\"mt-2\" type=\"error\" message={result.error.data?.errors || getMessage('form.error')} />\n          )}\n        </>\n      ) : (\n        <MarkdownEditor id={fieldId} label={label} value={hasValue ? savedValue : '-'} readOnly />\n      )}\n    </section>\n  );\n};\n\nexport default KsefInvoiceMarkdownField;\n", "import * as React from 'react';\nimport MDEditor from '@uiw/react-md-editor';\nimport rehypeSanitize from 'rehype-sanitize';\n\ninterface MarkdownEditorProps {\n  id: string,\n  label: string,\n  value: string,\n  onChange?: (value: string) => void,\n  readOnly?: boolean,\n  className?: string,\n}\n\n// The preview renders raw HTML found in markdown, so it has to be sanitized (XSS protection)\nconst rehypePlugins = [rehypeSanitize];\n\nconst MarkdownEditor = ({\n  id, label, value, onChange, readOnly = false, className,\n}: MarkdownEditorProps) => (\n  <div className={className} data-color-mode=\"light\">\n    {readOnly ? (\n      <MDEditor.Markdown source={value} rehypePlugins={rehypePlugins} />\n    ) : (\n      <MDEditor\n        value={value}\n        onChange={(newValue) => onChange?.(newValue || '')}\n        preview=\"edit\"\n        height={240}\n        textareaProps={{ id, 'aria-label': label }}\n        previewOptions={{ rehypePlugins }}\n      />\n    )}\n  </div>\n);\n\nexport default MarkdownEditor;\n", "function _extends() {\n  return _extends = Object.assign ? Object.assign.bind() : function (n) {\n    for (var e = 1; e < arguments.length; e++) {\n      var t = arguments[e];\n      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n    }\n    return n;\n  }, _extends.apply(null, arguments);\n}\nexport { _extends as default };", "import _extends from \"@babel/runtime/helpers/extends\";\nimport React from 'react';\nimport rehypePrism from 'rehype-prism-plus';\nimport rehypeRewrite from 'rehype-rewrite';\nimport rehypeAttrs from 'rehype-attr';\nimport rehypeRaw from 'rehype-raw';\nimport MarkdownPreview from \"./preview.js\";\nimport { reservedMeta } from \"./plugins/reservedMeta.js\";\nimport { retrieveMeta } from \"./plugins/retrieveMeta.js\";\nimport { rehypeRewriteHandle, defaultRehypePlugins } from \"./rehypePlugins.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport * from \"./Props.js\";\nexport default /*#__PURE__*/React.forwardRef((props, ref) => {\n  var _props$disableCopy;\n  var rehypePlugins = [reservedMeta, rehypeRaw, retrieveMeta, ...defaultRehypePlugins, [rehypeRewrite, {\n    rewrite: rehypeRewriteHandle((_props$disableCopy = props.disableCopy) != null ? _props$disableCopy : false, props.rehypeRewrite)\n  }], [rehypeAttrs, {\n    properties: 'attr'\n  }], ...(props.rehypePlugins || []), [rehypePrism, {\n    ignoreMissing: true\n  }]];\n  return /*#__PURE__*/_jsx(MarkdownPreview, _extends({}, props, {\n    rehypePlugins: rehypePlugins,\n    ref: ref\n  }));\n});", "/**\n * @import {Node, Parent} from 'unist'\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n *   Check that an arbitrary value is a node.\n * @param {unknown} this\n *   The given context.\n * @param {unknown} [node]\n *   Anything (typically a node).\n * @param {number | null | undefined} [index]\n *   The node\u2019s position in its parent.\n * @param {Parent | null | undefined} [parent]\n *   The node\u2019s parent.\n * @returns {boolean}\n *   Whether this is a node and passes a test.\n *\n * @typedef {Record<string, unknown> | Node} Props\n *   Object to check for equivalence.\n *\n *   Note: `Node` is included as it is common but is not indexable.\n *\n * @typedef {Array<Props | TestFunction | string> | ReadonlyArray<Props | TestFunction | string> | Props | TestFunction | string | null | undefined} Test\n *   Check for an arbitrary node.\n *\n * @callback TestFunction\n *   Check if a node passes a test.\n * @param {unknown} this\n *   The given context.\n * @param {Node} node\n *   A node.\n * @param {number | undefined} [index]\n *   The node\u2019s position in its parent.\n * @param {Parent | undefined} [parent]\n *   The node\u2019s parent.\n * @returns {boolean | undefined | void}\n *   Whether this node passes the test.\n *\n *   Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `node` is a `Node` and whether it passes the given test.\n *\n * @param {unknown} node\n *   Thing to check, typically `Node`.\n * @param {Test} test\n *   A check for a specific node.\n * @param {number | null | undefined} index\n *   The node\u2019s position in its parent.\n * @param {Parent | null | undefined} parent\n *   The node\u2019s parent.\n * @param {unknown} context\n *   Context object (`this`) to pass to `test` functions.\n * @returns {boolean}\n *   Whether `node` is a node and passes a test.\n */\nexport const is =\n  // Note: overloads in JSDoc can\u2019t yet use different `@template`s.\n  /**\n   * @type {(\n   *   (<Condition extends ReadonlyArray<string>>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n   *   (<Condition extends Array<string>>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition[number]}) &\n   *   (<Condition extends string>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n   *   (<Condition extends Props>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n   *   (<Condition extends TestFunction>(node: unknown, test: Condition, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n   *   ((node?: null | undefined) => false) &\n   *   ((node: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n   *   ((node: unknown, test?: Test, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => boolean)\n   * )}\n   */\n  (\n    /**\n     * @param {unknown} [node]\n     * @param {Test} [test]\n     * @param {number | null | undefined} [index]\n     * @param {Parent | null | undefined} [parent]\n     * @param {unknown} [context]\n     * @returns {boolean}\n     */\n    // eslint-disable-next-line max-params\n    function (node, test, index, parent, context) {\n      const check = convert(test)\n\n      if (\n        index !== undefined &&\n        index !== null &&\n        (typeof index !== 'number' ||\n          index < 0 ||\n          index === Number.POSITIVE_INFINITY)\n      ) {\n        throw new Error('Expected positive finite index')\n      }\n\n      if (\n        parent !== undefined &&\n        parent !== null &&\n        (!is(parent) || !parent.children)\n      ) {\n        throw new Error('Expected parent node')\n      }\n\n      if (\n        (parent === undefined || parent === null) !==\n        (index === undefined || index === null)\n      ) {\n        throw new Error('Expected both parent and index')\n      }\n\n      return looksLikeANode(node)\n        ? check.call(context, node, index, parent)\n        : false\n    }\n  )\n\n/**\n * Generate an assertion from a test.\n *\n * Useful if you\u2019re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * a `node`, `index`, and `parent`.\n *\n * @param {Test} test\n *   *   when nullish, checks if `node` is a `Node`.\n *   *   when `string`, works like passing `(node) => node.type === test`.\n *   *   when `function` checks if function passed the node is true.\n *   *   when `object`, checks that all keys in test are in node, and that they have (strictly) equal values.\n *   *   when `array`, checks if any one of the subtests pass.\n * @returns {Check}\n *   An assertion.\n */\nexport const convert =\n  // Note: overloads in JSDoc can\u2019t yet use different `@template`s.\n  /**\n   * @type {(\n   *   (<Condition extends string>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & {type: Condition}) &\n   *   (<Condition extends Props>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Condition) &\n   *   (<Condition extends TestFunction>(test: Condition) => (node: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node & Predicate<Condition, Node>) &\n   *   ((test?: null | undefined) => (node?: unknown, index?: number | null | undefined, parent?: Parent | null | undefined, context?: unknown) => node is Node) &\n   *   ((test?: Test) => Check)\n   * )}\n   */\n  (\n    /**\n     * @param {Test} [test]\n     * @returns {Check}\n     */\n    function (test) {\n      if (test === null || test === undefined) {\n        return ok\n      }\n\n      if (typeof test === 'function') {\n        return castFactory(test)\n      }\n\n      if (typeof test === 'object') {\n        return Array.isArray(test)\n          ? anyFactory(test)\n          : // Cast because `ReadonlyArray` goes into the above but `isArray`\n            // narrows to `Array`.\n            propertiesFactory(/** @type {Props} */ (test))\n      }\n\n      if (typeof test === 'string') {\n        return typeFactory(test)\n      }\n\n      throw new Error('Expected function, string, or object as test')\n    }\n  )\n\n/**\n * @param {Array<Props | TestFunction | string>} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n  /** @type {Array<Check>} */\n  const checks = []\n  let index = -1\n\n  while (++index < tests.length) {\n    checks[index] = convert(tests[index])\n  }\n\n  return castFactory(any)\n\n  /**\n   * @this {unknown}\n   * @type {TestFunction}\n   */\n  function any(...parameters) {\n    let index = -1\n\n    while (++index < checks.length) {\n      if (checks[index].apply(this, parameters)) return true\n    }\n\n    return false\n  }\n}\n\n/**\n * Turn an object into a test for a node with a certain fields.\n *\n * @param {Props} check\n * @returns {Check}\n */\nfunction propertiesFactory(check) {\n  const checkAsRecord = /** @type {Record<string, unknown>} */ (check)\n\n  return castFactory(all)\n\n  /**\n   * @param {Node} node\n   * @returns {boolean}\n   */\n  function all(node) {\n    const nodeAsRecord = /** @type {Record<string, unknown>} */ (\n      /** @type {unknown} */ (node)\n    )\n\n    /** @type {string} */\n    let key\n\n    for (key in check) {\n      if (nodeAsRecord[key] !== checkAsRecord[key]) return false\n    }\n\n    return true\n  }\n}\n\n/**\n * Turn a string into a test for a node with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction typeFactory(check) {\n  return castFactory(type)\n\n  /**\n   * @param {Node} node\n   */\n  function type(node) {\n    return node && node.type === check\n  }\n}\n\n/**\n * Turn a custom test into a test for a node that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n  return check\n\n  /**\n   * @this {unknown}\n   * @type {Check}\n   */\n  function check(value, index, parent) {\n    return Boolean(\n      looksLikeANode(value) &&\n        testFunction.call(\n          this,\n          value,\n          typeof index === 'number' ? index : undefined,\n          parent || undefined\n        )\n    )\n  }\n}\n\nfunction ok() {\n  return true\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Node}\n */\nfunction looksLikeANode(value) {\n  return value !== null && typeof value === 'object' && 'type' in value\n}\n", "/**\n * @param {string} d\n * @returns {string}\n */\nexport function color(d) {\n  return d\n}\n", "/**\n * @import {Node as UnistNode, Parent as UnistParent} from 'unist'\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n *   Test from `unist-util-is`.\n *\n *   Note: we have remove and add `undefined`, because otherwise when generating\n *   automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n *   which doesn\u2019t work when publishing on npm.\n */\n\n/**\n * @typedef {(\n *   Fn extends (value: any) => value is infer Thing\n *   ? Thing\n *   : Fallback\n * )} Predicate\n *   Get the value of a type guard `Fn`.\n * @template Fn\n *   Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n *   Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n *   Check extends null | undefined // No test.\n *   ? Value\n *   : Value extends {type: Check} // String (type) test.\n *   ? Value\n *   : Value extends Check // Partial test.\n *   ? Value\n *   : Check extends Function // Function test.\n *   ? Predicate<Check, Value> extends Value\n *     ? Predicate<Check, Value>\n *     : never\n *   : never // Some other test?\n * )} MatchesOne\n *   Check whether a node matches a primitive check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n *   Check extends ReadonlyArray<infer T>\n *   ? MatchesOne<Value, T>\n *   : Check extends Array<infer T>\n *   ? MatchesOne<Value, T>\n *   : MatchesOne<Value, Check>\n * )} Matches\n *   Check whether a node matches a check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n *   Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n *   Increment a number in the type system.\n * @template {Uint} [I=0]\n *   Index.\n */\n\n/**\n * @typedef {(\n *   Node extends UnistParent\n *   ? Node extends {children: Array<infer Children>}\n *     ? Child extends Children ? Node : never\n *     : never\n *   : never\n * )} InternalParent\n *   Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n *   Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {(\n *   Depth extends Max\n *   ? never\n *   :\n *     | InternalParent<Node, Child>\n *     | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n *   Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @typedef {InternalAncestor<InclusiveDescendant<Tree>, Child>} Ancestor\n *   Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Tree\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {(\n *   Tree extends UnistParent\n *     ? Depth extends Max\n *       ? Tree\n *       : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n *     : Tree\n * )} InclusiveDescendant\n *   Collect all (inclusive) descendants of `Tree`.\n *\n *   > \uD83D\uDC49 **Note**: for performance reasons, this seems to be the fastest way to\n *   > recurse without actually running into an infinite loop, which the\n *   > previous version did.\n *   >\n *   > Practically, a max of `2` is typically enough assuming a `Root` is\n *   > passed, but it doesn\u2019t improve performance.\n *   > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n *   > Using up to `10` doesn\u2019t hurt or help either.\n * @template {UnistNode} Tree\n *   Tree type.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @typedef {'skip' | boolean} Action\n *   Union of the action types.\n *\n * @typedef {number} Index\n *   Move to the sibling at `index` next (after node itself is completely\n *   traversed).\n *\n *   Useful if mutating the tree, such as removing the node the visitor is\n *   currently on, or any of its previous siblings.\n *   Results less than 0 or greater than or equal to `children.length` stop\n *   traversing the parent.\n *\n * @typedef {[(Action | null | undefined | void)?, (Index | null | undefined)?]} ActionTuple\n *   List with one or two values, the first an action, the second an index.\n *\n * @typedef {Action | ActionTuple | Index | null | undefined | void} VisitorResult\n *   Any value that can be returned from a visitor.\n */\n\n/**\n * @callback Visitor\n *   Handle a node (matching `test`, if given).\n *\n *   Visitors are free to transform `node`.\n *   They can also transform the parent of node (the last of `ancestors`).\n *\n *   Replacing `node` itself, if `SKIP` is not returned, still causes its\n *   descendants to be walked (which is a bug).\n *\n *   When adding or removing previous siblings of `node` (or next siblings, in\n *   case of reverse), the `Visitor` should return a new `Index` to specify the\n *   sibling to traverse after `node` is traversed.\n *   Adding or removing next siblings of `node` (or previous siblings, in case\n *   of reverse) is handled as expected without needing to return a new `Index`.\n *\n *   Removing the children property of an ancestor still results in them being\n *   traversed.\n * @param {Visited} node\n *   Found node.\n * @param {Array<VisitedParents>} ancestors\n *   Ancestors of `node`.\n * @returns {VisitorResult}\n *   What to do next.\n *\n *   An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n *   An `Action` is treated as a tuple of `[Action]`.\n *\n *   Passing a tuple back only makes sense if the `Action` is `SKIP`.\n *   When the `Action` is `EXIT`, that action can be returned.\n *   When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n *   Visited node type.\n * @template {UnistParent} [VisitedParents=UnistParent]\n *   Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Matches<InclusiveDescendant<Tree>, Check>, Ancestor<Tree, Matches<InclusiveDescendant<Tree>, Check>>>} BuildVisitor\n *   Build a typed `Visitor` function from a tree and a test.\n *\n *   It will infer which values are passed as `node` and which as `parents`.\n * @template {UnistNode} [Tree=UnistNode]\n *   Tree type.\n * @template {Test} [Check=Test]\n *   Test type.\n */\n\nimport {convert} from 'unist-util-is'\nimport {color} from 'unist-util-visit-parents/do-not-use-color'\n\n/** @type {Readonly<ActionTuple>} */\nconst empty = []\n\n/**\n * Continue traversing as normal.\n */\nexport const CONTINUE = true\n\n/**\n * Stop traversing immediately.\n */\nexport const EXIT = false\n\n/**\n * Do not traverse this node\u2019s children.\n */\nexport const SKIP = 'skip'\n\n/**\n * Visit nodes, with ancestral information.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n *   Tree to traverse.\n * @param {Visitor | Test} test\n *   `unist-util-is`-compatible test\n * @param {Visitor | boolean | null | undefined} [visitor]\n *   Handle each node.\n * @param {boolean | null | undefined} [reverse]\n *   Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n *   Nothing.\n *\n * @template {UnistNode} Tree\n *   Node type.\n * @template {Test} Check\n *   `unist-util-is`-compatible test.\n */\nexport function visitParents(tree, test, visitor, reverse) {\n  /** @type {Test} */\n  let check\n\n  if (typeof test === 'function' && typeof visitor !== 'function') {\n    reverse = visitor\n    // @ts-expect-error no visitor given, so `visitor` is test.\n    visitor = test\n  } else {\n    // @ts-expect-error visitor given, so `test` isn\u2019t a visitor.\n    check = test\n  }\n\n  const is = convert(check)\n  const step = reverse ? -1 : 1\n\n  factory(tree, undefined, [])()\n\n  /**\n   * @param {UnistNode} node\n   * @param {number | undefined} index\n   * @param {Array<UnistParent>} parents\n   */\n  function factory(node, index, parents) {\n    const value = /** @type {Record<string, unknown>} */ (\n      node && typeof node === 'object' ? node : {}\n    )\n\n    if (typeof value.type === 'string') {\n      const name =\n        // `hast`\n        typeof value.tagName === 'string'\n          ? value.tagName\n          : // `xast`\n            typeof value.name === 'string'\n            ? value.name\n            : undefined\n\n      Object.defineProperty(visit, 'name', {\n        value:\n          'node (' + color(node.type + (name ? '<' + name + '>' : '')) + ')'\n      })\n    }\n\n    return visit\n\n    function visit() {\n      /** @type {Readonly<ActionTuple>} */\n      let result = empty\n      /** @type {Readonly<ActionTuple>} */\n      let subresult\n      /** @type {number} */\n      let offset\n      /** @type {Array<UnistParent>} */\n      let grandparents\n\n      if (!test || is(node, index, parents[parents.length - 1] || undefined)) {\n        // @ts-expect-error: `visitor` is now a visitor.\n        result = toResult(visitor(node, parents))\n\n        if (result[0] === EXIT) {\n          return result\n        }\n      }\n\n      if ('children' in node && node.children) {\n        const nodeAsParent = /** @type {UnistParent} */ (node)\n\n        if (nodeAsParent.children && result[0] !== SKIP) {\n          offset = (reverse ? nodeAsParent.children.length : -1) + step\n          grandparents = parents.concat(nodeAsParent)\n\n          while (offset > -1 && offset < nodeAsParent.children.length) {\n            const child = nodeAsParent.children[offset]\n\n            subresult = factory(child, offset, grandparents)()\n\n            if (subresult[0] === EXIT) {\n              return subresult\n            }\n\n            offset =\n              typeof subresult[1] === 'number' ? subresult[1] : offset + step\n          }\n        }\n      }\n\n      return result\n    }\n  }\n}\n\n/**\n * Turn a return value into a clean result.\n *\n * @param {VisitorResult} value\n *   Valid return values from visitors.\n * @returns {Readonly<ActionTuple>}\n *   Clean result.\n */\nfunction toResult(value) {\n  if (Array.isArray(value)) {\n    return value\n  }\n\n  if (typeof value === 'number') {\n    return [CONTINUE, value]\n  }\n\n  return value === null || value === undefined ? empty : [value]\n}\n", "/**\n * @import {Node as UnistNode, Parent as UnistParent} from 'unist'\n * @import {VisitorResult} from 'unist-util-visit-parents'\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n *   Test from `unist-util-is`.\n *\n *   Note: we have remove and add `undefined`, because otherwise when generating\n *   automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n *   which doesn\u2019t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it\u2019s released.\n\n/**\n * @typedef {(\n *   Fn extends (value: any) => value is infer Thing\n *   ? Thing\n *   : Fallback\n * )} Predicate\n *   Get the value of a type guard `Fn`.\n * @template Fn\n *   Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n *   Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n *   Check extends null | undefined // No test.\n *   ? Value\n *   : Value extends {type: Check} // String (type) test.\n *   ? Value\n *   : Value extends Check // Partial test.\n *   ? Value\n *   : Check extends Function // Function test.\n *   ? Predicate<Check, Value> extends Value\n *     ? Predicate<Check, Value>\n *     : never\n *   : never // Some other test?\n * )} MatchesOne\n *   Check whether a node matches a primitive check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n *   Check extends ReadonlyArray<any>\n *   ? MatchesOne<Value, Check[number]>\n *   : MatchesOne<Value, Check>\n * )} Matches\n *   Check whether a node matches a check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n *   Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n *   Increment a number in the type system.\n * @template {Uint} [I=0]\n *   Index.\n */\n\n/**\n * @typedef {(\n *   Node extends UnistParent\n *   ? Node extends {children: Array<infer Children>}\n *     ? Child extends Children ? Node : never\n *     : never\n *   : never\n * )} InternalParent\n *   Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n *   Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {(\n *   Depth extends Max\n *   ? never\n *   :\n *     | InternalParent<Node, Child>\n *     | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n *   Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @typedef {(\n *   Tree extends UnistParent\n *     ? Depth extends Max\n *       ? Tree\n *       : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n *     : Tree\n * )} InclusiveDescendant\n *   Collect all (inclusive) descendants of `Tree`.\n *\n *   > \uD83D\uDC49 **Note**: for performance reasons, this seems to be the fastest way to\n *   > recurse without actually running into an infinite loop, which the\n *   > previous version did.\n *   >\n *   > Practically, a max of `2` is typically enough assuming a `Root` is\n *   > passed, but it doesn\u2019t improve performance.\n *   > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n *   > Using up to `10` doesn\u2019t hurt or help either.\n * @template {UnistNode} Tree\n *   Tree type.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @callback Visitor\n *   Handle a node (matching `test`, if given).\n *\n *   Visitors are free to transform `node`.\n *   They can also transform `parent`.\n *\n *   Replacing `node` itself, if `SKIP` is not returned, still causes its\n *   descendants to be walked (which is a bug).\n *\n *   When adding or removing previous siblings of `node` (or next siblings, in\n *   case of reverse), the `Visitor` should return a new `Index` to specify the\n *   sibling to traverse after `node` is traversed.\n *   Adding or removing next siblings of `node` (or previous siblings, in case\n *   of reverse) is handled as expected without needing to return a new `Index`.\n *\n *   Removing the children property of `parent` still results in them being\n *   traversed.\n * @param {Visited} node\n *   Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n *   Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n *   Parent of `node`.\n * @returns {VisitorResult}\n *   What to do next.\n *\n *   An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n *   An `Action` is treated as a tuple of `[Action]`.\n *\n *   Passing a tuple back only makes sense if the `Action` is `SKIP`.\n *   When the `Action` is `EXIT`, that action can be returned.\n *   When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n *   Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n *   Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Visited, Parent<Ancestor, Visited>>} BuildVisitorFromMatch\n *   Build a typed `Visitor` function from a node and all possible parents.\n *\n *   It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n *   Node type.\n * @template {UnistParent} Ancestor\n *   Parent type.\n */\n\n/**\n * @typedef {(\n *   BuildVisitorFromMatch<\n *     Matches<Descendant, Check>,\n *     Extract<Descendant, UnistParent>\n *   >\n * )} BuildVisitorFromDescendants\n *   Build a typed `Visitor` function from a list of descendants and a test.\n *\n *   It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n *   Node type.\n * @template {Test} Check\n *   Test type.\n */\n\n/**\n * @typedef {(\n *   BuildVisitorFromDescendants<\n *     InclusiveDescendant<Tree>,\n *     Check\n *   >\n * )} BuildVisitor\n *   Build a typed `Visitor` function from a tree and a test.\n *\n *   It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n *   Node type.\n * @template {Test} [Check=Test]\n *   Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n *   Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n *   `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n *   Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n *   Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n *   Nothing.\n *\n * @template {UnistNode} Tree\n *   Node type.\n * @template {Test} Check\n *   `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n  /** @type {boolean | null | undefined} */\n  let reverse\n  /** @type {Test} */\n  let test\n  /** @type {Visitor} */\n  let visitor\n\n  if (\n    typeof testOrVisitor === 'function' &&\n    typeof visitorOrReverse !== 'function'\n  ) {\n    test = undefined\n    visitor = testOrVisitor\n    reverse = visitorOrReverse\n  } else {\n    // @ts-expect-error: assume the overload with test was given.\n    test = testOrVisitor\n    // @ts-expect-error: assume the overload with test was given.\n    visitor = visitorOrReverse\n    reverse = maybeReverse\n  }\n\n  visitParents(tree, test, overload, reverse)\n\n  /**\n   * @param {UnistNode} node\n   * @param {Array<UnistParent>} parents\n   */\n  function overload(node, parents) {\n    const parent = parents[parents.length - 1]\n    const index = parent ? parent.children.indexOf(node) : undefined\n    return visitor(node, index, parent)\n  }\n}\n", "/**\n * @import {Nodes, Parents} from 'hast'\n */\n\n/**\n * Get the plain-text value of a hast node.\n *\n * @param {Nodes} node\n *   Node to serialize.\n * @returns {string}\n *   Serialized node.\n */\nexport function toString(node) {\n  // \u201CThe concatenation of data of all the Text node descendants of the context\n  // object, in tree order.\u201D\n  if ('children' in node) {\n    return all(node)\n  }\n\n  // \u201CContext object\u2019s data.\u201D\n  return 'value' in node ? node.value : ''\n}\n\n/**\n * @param {Nodes} node\n *   Node.\n * @returns {string}\n *   Serialized node.\n */\nfunction one(node) {\n  if (node.type === 'text') {\n    return node.value\n  }\n\n  return 'children' in node ? all(node) : ''\n}\n\n/**\n * @param {Parents} node\n *   Node.\n * @returns {string}\n *   Serialized node.\n */\nfunction all(node) {\n  let index = -1\n  /** @type {Array<string>} */\n  const result = []\n\n  while (++index < node.children.length) {\n    result[index] = one(node.children[index])\n  }\n\n  return result.join('')\n}\n", "/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Parent} Parent\n *\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n *   Test from `unist-util-is`.\n *\n *   Note: we have remove and add `undefined`, because otherwise when generating\n *   automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n *   which doesn\u2019t work when publishing on npm.\n */\n\n/**\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [cascade=true]\n *   Whether to drop parent nodes if they had children, but all their children\n *   were filtered out (default: `true`).\n */\n\nimport {convert} from 'unist-util-is'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Create a new `tree` of copies of all nodes that pass `test`.\n *\n * The tree is walked in *preorder* (NLR), visiting the node itself, then its\n * head, etc.\n *\n * @template {Node} Tree\n * @template {Test} Check\n *\n * @overload\n * @param {Tree} tree\n * @param {Options | null | undefined} options\n * @param {Check} test\n * @returns {import('./complex-types.js').Matches<Tree, Check>}\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} test\n * @returns {import('./complex-types.js').Matches<Tree, Check>}\n *\n * @overload\n * @param {Tree} tree\n * @param {null | undefined} [options]\n * @returns {Tree}\n *\n * @param {Node} tree\n *   Tree to filter.\n * @param {Options | Test} [options]\n *   Configuration (optional).\n * @param {Test} [test]\n *   `unist-util-is` compatible test.\n * @returns {Node | undefined}\n *   New filtered tree.\n *\n *   `undefined` is returned if `tree` itself didn\u2019t pass the test, or is\n *   cascaded away.\n */\nexport function filter(tree, options, test) {\n  const is = convert(test || options)\n  const cascadeRaw =\n    options && typeof options === 'object' && 'cascade' in options\n      ? /** @type {boolean | null | undefined} */ (options.cascade)\n      : undefined\n  const cascade =\n    cascadeRaw === undefined || cascadeRaw === null ? true : cascadeRaw\n\n  return preorder(tree)\n\n  /**\n   * @param {Node} node\n   *   Current node.\n   * @param {number | undefined} [index]\n   *   Index of `node` in `parent`.\n   * @param {Parent | undefined} [parentNode]\n   *   Parent node.\n   * @returns {Node | undefined}\n   *   Shallow copy of `node`.\n   */\n  function preorder(node, index, parentNode) {\n    /** @type {Array<Node>} */\n    const children = []\n\n    if (!is(node, index, parentNode)) return undefined\n\n    if (parent(node)) {\n      let childIndex = -1\n\n      while (++childIndex < node.children.length) {\n        const result = preorder(node.children[childIndex], childIndex, node)\n\n        if (result) {\n          children.push(result)\n        }\n      }\n\n      if (cascade && node.children.length > 0 && children.length === 0) {\n        return undefined\n      }\n    }\n\n    // Create a shallow clone, using the new children.\n    /** @type {typeof node} */\n    // @ts-expect-error all the fields will be copied over.\n    const next = {}\n    /** @type {string} */\n    let key\n\n    for (key in node) {\n      if (own.call(node, key)) {\n        // @ts-expect-error: Looks like a record.\n        next[key] = key === 'children' ? children : node[key]\n      }\n    }\n\n    return next\n  }\n}\n\n/**\n * @param {Node} node\n * @returns {node is Parent}\n */\nfunction parent(node) {\n  return 'children' in node && node.children !== undefined\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nclike.displayName = 'clike'\nclike.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function clike(Prism) {\n  Prism.languages.clike = {\n    comment: [\n      {\n        pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n        lookbehind: true,\n        greedy: true\n      },\n      {\n        pattern: /(^|[^\\\\:])\\/\\/.*/,\n        lookbehind: true,\n        greedy: true\n      }\n    ],\n    string: {\n      pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      greedy: true\n    },\n    'class-name': {\n      pattern:\n        /(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n      lookbehind: true,\n      inside: {\n        punctuation: /[.\\\\]/\n      }\n    },\n    keyword:\n      /\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    function: /\\b\\w+(?=\\()/,\n    number: /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n    operator: /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,\n    punctuation: /[{}[\\];(),.:]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\nc.displayName = 'c'\nc.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function c(Prism) {\n  Prism.register(refractorClike)\n  Prism.languages.c = Prism.languages.extend('clike', {\n    comment: {\n      pattern:\n        /\\/\\/(?:[^\\r\\n\\\\]|\\\\(?:\\r\\n?|\\n|(?![\\r\\n])))*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n      greedy: true\n    },\n    string: {\n      // https://en.cppreference.com/w/c/language/string_literal\n      pattern: /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n      greedy: true\n    },\n    'class-name': {\n      pattern:\n        /(\\b(?:enum|struct)\\s+(?:__attribute__\\s*\\(\\([\\s\\S]*?\\)\\)\\s*)?)\\w+|\\b[a-z]\\w*_t\\b/,\n      lookbehind: true\n    },\n    keyword:\n      /\\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\\b/,\n    function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n    number:\n      /(?:\\b0x(?:[\\da-f]+(?:\\.[\\da-f]*)?|\\.[\\da-f]+)(?:p[+-]?\\d+)?|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)[ful]{0,4}/i,\n    operator: />>=?|<<=?|->|([-+&|:])\\1|[?:~]|[-+*/%&|^!=<>]=?/\n  })\n  Prism.languages.insertBefore('c', 'string', {\n    char: {\n      // https://en.cppreference.com/w/c/language/character_constant\n      pattern: /'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n]){0,32}'/,\n      greedy: true\n    }\n  })\n  Prism.languages.insertBefore('c', 'string', {\n    macro: {\n      // allow for multiline macro definitions\n      // spaces after the # character compile fine with gcc\n      pattern:\n        /(^[\\t ]*)#\\s*[a-z](?:[^\\r\\n\\\\/]|\\/(?!\\*)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|\\\\(?:\\r\\n|[\\s\\S]))*/im,\n      lookbehind: true,\n      greedy: true,\n      alias: 'property',\n      inside: {\n        string: [\n          {\n            // highlight the path of the include statement as a string\n            pattern: /^(#\\s*include\\s*)<[^>]+>/,\n            lookbehind: true\n          },\n          Prism.languages.c['string']\n        ],\n        char: Prism.languages.c['char'],\n        comment: Prism.languages.c['comment'],\n        'macro-name': [\n          {\n            pattern: /(^#\\s*define\\s+)\\w+\\b(?!\\()/i,\n            lookbehind: true\n          },\n          {\n            pattern: /(^#\\s*define\\s+)\\w+\\b(?=\\()/i,\n            lookbehind: true,\n            alias: 'function'\n          }\n        ],\n        // highlight macro directives as keywords\n        directive: {\n          pattern: /^(#\\s*)[a-z]+/,\n          lookbehind: true,\n          alias: 'keyword'\n        },\n        'directive-hash': /^#/,\n        punctuation: /##|\\\\(?=[\\r\\n])/,\n        expression: {\n          pattern: /\\S[\\s\\S]*/,\n          inside: Prism.languages.c\n        }\n      }\n    }\n  })\n  Prism.languages.insertBefore('c', 'function', {\n    // highlight predefined macros as constants\n    constant:\n      /\\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\\b/\n  })\n  delete Prism.languages.c['boolean']\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorC from './c.js'\ncpp.displayName = 'cpp'\ncpp.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function cpp(Prism) {\n  Prism.register(refractorC)\n  ;(function (Prism) {\n    var keyword =\n      /\\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\\b/\n    var modName = /\\b(?!<keyword>)\\w+(?:\\s*\\.\\s*\\w+)*\\b/.source.replace(\n      /<keyword>/g,\n      function () {\n        return keyword.source\n      }\n    )\n    Prism.languages.cpp = Prism.languages.extend('c', {\n      'class-name': [\n        {\n          pattern: RegExp(\n            /(\\b(?:class|concept|enum|struct|typename)\\s+)(?!<keyword>)\\w+/.source.replace(\n              /<keyword>/g,\n              function () {\n                return keyword.source\n              }\n            )\n          ),\n          lookbehind: true\n        },\n        // This is intended to capture the class name of method implementations like:\n        //   void foo::bar() const {}\n        // However! The `foo` in the above example could also be a namespace, so we only capture the class name if\n        // it starts with an uppercase letter. This approximation should give decent results.\n        /\\b[A-Z]\\w*(?=\\s*::\\s*\\w+\\s*\\()/,\n        // This will capture the class name before destructors like:\n        //   Foo::~Foo() {}\n        /\\b[A-Z_]\\w*(?=\\s*::\\s*~\\w+\\s*\\()/i,\n        // This also intends to capture the class name of method implementations but here the class has template\n        // parameters, so it can't be a namespace (until C++ adds generic namespaces).\n        /\\b\\w+(?=\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\\s*::\\s*\\w+\\s*\\()/\n      ],\n      keyword: keyword,\n      number: {\n        pattern:\n          /(?:\\b0b[01']+|\\b0x(?:[\\da-f']+(?:\\.[\\da-f']*)?|\\.[\\da-f']+)(?:p[+-]?[\\d']+)?|(?:\\b[\\d']+(?:\\.[\\d']*)?|\\B\\.[\\d']+)(?:e[+-]?[\\d']+)?)[ful]{0,4}/i,\n        greedy: true\n      },\n      operator:\n        />>=?|<<=?|->|--|\\+\\+|&&|\\|\\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\\b/,\n      boolean: /\\b(?:false|true)\\b/\n    })\n    Prism.languages.insertBefore('cpp', 'string', {\n      module: {\n        // https://en.cppreference.com/w/cpp/language/modules\n        pattern: RegExp(\n          /(\\b(?:import|module)\\s+)/.source +\n            '(?:' +\n            // header-name\n            /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|<[^<>\\r\\n]*>/.source +\n            '|' +\n            // module name or partition or both\n            /<mod-name>(?:\\s*:\\s*<mod-name>)?|:\\s*<mod-name>/.source.replace(\n              /<mod-name>/g,\n              function () {\n                return modName\n              }\n            ) +\n            ')'\n        ),\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          string: /^[<\"][\\s\\S]+/,\n          operator: /:/,\n          punctuation: /\\./\n        }\n      },\n      'raw-string': {\n        pattern: /R\"([^()\\\\ ]{0,16})\\([\\s\\S]*?\\)\\1\"/,\n        alias: 'string',\n        greedy: true\n      }\n    })\n    Prism.languages.insertBefore('cpp', 'keyword', {\n      'generic-function': {\n        pattern: /\\b(?!operator\\b)[a-z_]\\w*\\s*<(?:[^<>]|<[^<>]*>)*>(?=\\s*\\()/i,\n        inside: {\n          function: /^\\w+/,\n          generic: {\n            pattern: /<[\\s\\S]+/,\n            alias: 'class-name',\n            inside: Prism.languages.cpp\n          }\n        }\n      }\n    })\n    Prism.languages.insertBefore('cpp', 'operator', {\n      'double-colon': {\n        pattern: /::/,\n        alias: 'punctuation'\n      }\n    })\n    Prism.languages.insertBefore('cpp', 'class-name', {\n      // the base clause is an optional list of parent classes\n      // https://en.cppreference.com/w/cpp/language/class\n      'base-clause': {\n        pattern:\n          /(\\b(?:class|struct)\\s+\\w+\\s*:\\s*)[^;{}\"'\\s]+(?:\\s+[^;{}\"'\\s]+)*(?=\\s*[;{])/,\n        lookbehind: true,\n        greedy: true,\n        inside: Prism.languages.extend('cpp', {})\n      }\n    })\n    Prism.languages.insertBefore(\n      'inside',\n      'double-colon',\n      {\n        // All untokenized words that are not namespaces should be class names\n        'class-name': /\\b[a-z_]\\w*\\b(?!\\s*::)/i\n      },\n      Prism.languages.cpp['base-clause']\n    )\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorCpp from './cpp.js'\narduino.displayName = 'arduino'\narduino.aliases = ['ino']\n\n/** @param {Refractor} Prism */\nexport default function arduino(Prism) {\n  Prism.register(refractorCpp)\n  Prism.languages.arduino = Prism.languages.extend('cpp', {\n    keyword:\n      /\\b(?:String|array|bool|boolean|break|byte|case|catch|continue|default|do|double|else|finally|for|function|goto|if|in|instanceof|int|integer|long|loop|new|null|return|setup|string|switch|throw|try|void|while|word)\\b/,\n    constant:\n      /\\b(?:ANALOG_MESSAGE|DEFAULT|DIGITAL_MESSAGE|EXTERNAL|FIRMATA_STRING|HIGH|INPUT|INPUT_PULLUP|INTERNAL|INTERNAL1V1|INTERNAL2V56|LED_BUILTIN|LOW|OUTPUT|REPORT_ANALOG|REPORT_DIGITAL|SET_PIN_MODE|SYSEX_START|SYSTEM_RESET)\\b/,\n    builtin:\n      /\\b(?:Audio|BSSID|Bridge|Client|Console|EEPROM|Esplora|EsploraTFT|Ethernet|EthernetClient|EthernetServer|EthernetUDP|File|FileIO|FileSystem|Firmata|GPRS|GSM|GSMBand|GSMClient|GSMModem|GSMPIN|GSMScanner|GSMServer|GSMVoiceCall|GSM_SMS|HttpClient|IPAddress|IRread|Keyboard|KeyboardController|LiquidCrystal|LiquidCrystal_I2C|Mailbox|Mouse|MouseController|PImage|Process|RSSI|RobotControl|RobotMotor|SD|SPI|SSID|Scheduler|Serial|Server|Servo|SoftwareSerial|Stepper|Stream|TFT|Task|USBHost|WiFi|WiFiClient|WiFiServer|WiFiUDP|Wire|YunClient|YunServer|abs|addParameter|analogRead|analogReadResolution|analogReference|analogWrite|analogWriteResolution|answerCall|attach|attachGPRS|attachInterrupt|attached|autoscroll|available|background|beep|begin|beginPacket|beginSD|beginSMS|beginSpeaker|beginTFT|beginTransmission|beginWrite|bit|bitClear|bitRead|bitSet|bitWrite|blink|blinkVersion|buffer|changePIN|checkPIN|checkPUK|checkReg|circle|cityNameRead|cityNameWrite|clear|clearScreen|click|close|compassRead|config|connect|connected|constrain|cos|countryNameRead|countryNameWrite|createChar|cursor|debugPrint|delay|delayMicroseconds|detach|detachInterrupt|digitalRead|digitalWrite|disconnect|display|displayLogos|drawBMP|drawCompass|encryptionType|end|endPacket|endSMS|endTransmission|endWrite|exists|exitValue|fill|find|findUntil|flush|gatewayIP|get|getAsynchronously|getBand|getButton|getCurrentCarrier|getIMEI|getKey|getModifiers|getOemKey|getPINUsed|getResult|getSignalStrength|getSocket|getVoiceCallStatus|getXChange|getYChange|hangCall|height|highByte|home|image|interrupts|isActionDone|isDirectory|isListening|isPIN|isPressed|isValid|keyPressed|keyReleased|keyboardRead|knobRead|leftToRight|line|lineFollowConfig|listen|listenOnLocalhost|loadImage|localIP|lowByte|macAddress|maintain|map|max|messageAvailable|micros|millis|min|mkdir|motorsStop|motorsWrite|mouseDragged|mouseMoved|mousePressed|mouseReleased|move|noAutoscroll|noBlink|noBuffer|noCursor|noDisplay|noFill|noInterrupts|noListenOnLocalhost|noStroke|noTone|onReceive|onRequest|open|openNextFile|overflow|parseCommand|parseFloat|parseInt|parsePacket|pauseMode|peek|pinMode|playFile|playMelody|point|pointTo|position|pow|prepare|press|print|printFirmwareVersion|printVersion|println|process|processInput|pulseIn|put|random|randomSeed|read|readAccelerometer|readBlue|readButton|readBytes|readBytesUntil|readGreen|readJoystickButton|readJoystickSwitch|readJoystickX|readJoystickY|readLightSensor|readMessage|readMicrophone|readNetworks|readRed|readSlider|readString|readStringUntil|readTemperature|ready|rect|release|releaseAll|remoteIP|remoteNumber|remotePort|remove|requestFrom|retrieveCallingNumber|rewindDirectory|rightToLeft|rmdir|robotNameRead|robotNameWrite|run|runAsynchronously|runShellCommand|runShellCommandAsynchronously|running|scanNetworks|scrollDisplayLeft|scrollDisplayRight|seek|sendAnalog|sendDigitalPortPair|sendDigitalPorts|sendString|sendSysex|serialEvent|setBand|setBitOrder|setClockDivider|setCursor|setDNS|setDataMode|setFirmwareVersion|setMode|setPINUsed|setSpeed|setTextSize|setTimeout|shiftIn|shiftOut|shutdown|sin|size|sqrt|startLoop|step|stop|stroke|subnetMask|switchPIN|tan|tempoWrite|text|tone|transfer|tuneWrite|turn|updateIR|userNameRead|userNameWrite|voiceCall|waitContinue|width|write|writeBlue|writeGreen|writeJSON|writeMessage|writeMicroseconds|writeRGB|writeRed|yield)\\b/\n  })\n  Prism.languages.ino = Prism.languages.arduino\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nbash.displayName = 'bash'\nbash.aliases = ['sh', 'shell']\n\n/** @param {Refractor} Prism */\nexport default function bash(Prism) {\n  ;(function (Prism) {\n    // $ set | grep '^[A-Z][^[:space:]]*=' | cut -d= -f1 | tr '\\n' '|'\n    // + LC_ALL, RANDOM, REPLY, SECONDS.\n    // + make sure PS1..4 are here as they are not always set,\n    // - some useless things.\n    var envVars =\n      '\\\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\\\b'\n    var commandAfterHeredoc = {\n      pattern: /(^([\"']?)\\w+\\2)[ \\t]+\\S.*/,\n      lookbehind: true,\n      alias: 'punctuation',\n      // this looks reasonably well in all themes\n      inside: null // see below\n    }\n    var insideString = {\n      bash: commandAfterHeredoc,\n      environment: {\n        pattern: RegExp('\\\\$' + envVars),\n        alias: 'constant'\n      },\n      variable: [\n        // [0]: Arithmetic Environment\n        {\n          pattern: /\\$?\\(\\([\\s\\S]+?\\)\\)/,\n          greedy: true,\n          inside: {\n            // If there is a $ sign at the beginning highlight $(( and )) as variable\n            variable: [\n              {\n                pattern: /(^\\$\\(\\([\\s\\S]+)\\)\\)/,\n                lookbehind: true\n              },\n              /^\\$\\(\\(/\n            ],\n            number:\n              /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,\n            // Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic\n            operator:\n              /--|\\+\\+|\\*\\*=?|<<=?|>>=?|&&|\\|\\||[=!+\\-*/%<>^&|]=?|[?~:]/,\n            // If there is no $ sign at the beginning highlight (( and )) as punctuation\n            punctuation: /\\(\\(?|\\)\\)?|,|;/\n          }\n        },\n        // [1]: Command Substitution\n        {\n          pattern: /\\$\\((?:\\([^)]+\\)|[^()])+\\)|`[^`]+`/,\n          greedy: true,\n          inside: {\n            variable: /^\\$\\(|^`|\\)$|`$/\n          }\n        },\n        // [2]: Brace expansion\n        {\n          pattern: /\\$\\{[^}]+\\}/,\n          greedy: true,\n          inside: {\n            operator: /:[-=?+]?|[!\\/]|##?|%%?|\\^\\^?|,,?/,\n            punctuation: /[\\[\\]]/,\n            environment: {\n              pattern: RegExp('(\\\\{)' + envVars),\n              lookbehind: true,\n              alias: 'constant'\n            }\n          }\n        },\n        /\\$(?:\\w+|[#?*!@$])/\n      ],\n      // Escape sequences from echo and printf's manuals, and escaped quotes.\n      entity:\n        /\\\\(?:[abceEfnrtv\\\\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/\n    }\n    Prism.languages.bash = {\n      shebang: {\n        pattern: /^#!\\s*\\/.*/,\n        alias: 'important'\n      },\n      comment: {\n        pattern: /(^|[^\"{\\\\$])#.*/,\n        lookbehind: true\n      },\n      'function-name': [\n        // a) function foo {\n        // b) foo() {\n        // c) function foo() {\n        // but not \u201Cfoo {\u201D\n        {\n          // a) and c)\n          pattern: /(\\bfunction\\s+)[\\w-]+(?=(?:\\s*\\(?:\\s*\\))?\\s*\\{)/,\n          lookbehind: true,\n          alias: 'function'\n        },\n        {\n          // b)\n          pattern: /\\b[\\w-]+(?=\\s*\\(\\s*\\)\\s*\\{)/,\n          alias: 'function'\n        }\n      ],\n      // Highlight variable names as variables in for and select beginnings.\n      'for-or-select': {\n        pattern: /(\\b(?:for|select)\\s+)\\w+(?=\\s+in\\s)/,\n        alias: 'variable',\n        lookbehind: true\n      },\n      // Highlight variable names as variables in the left-hand part\n      // of assignments (\u201C=\u201D and \u201C+=\u201D).\n      'assign-left': {\n        pattern: /(^|[\\s;|&]|[<>]\\()\\w+(?:\\.\\w+)*(?=\\+?=)/,\n        inside: {\n          environment: {\n            pattern: RegExp('(^|[\\\\s;|&]|[<>]\\\\()' + envVars),\n            lookbehind: true,\n            alias: 'constant'\n          }\n        },\n        alias: 'variable',\n        lookbehind: true\n      },\n      // Highlight parameter names as variables\n      parameter: {\n        pattern: /(^|\\s)-{1,2}(?:\\w+:[+-]?)?\\w+(?:\\.\\w+)*(?=[=\\s]|$)/,\n        alias: 'variable',\n        lookbehind: true\n      },\n      string: [\n        // Support for Here-documents https://en.wikipedia.org/wiki/Here_document\n        {\n          pattern: /((?:^|[^<])<<-?\\s*)(\\w+)\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\2/,\n          lookbehind: true,\n          greedy: true,\n          inside: insideString\n        },\n        // Here-document with quotes around the tag\n        // \u2192 No expansion (so no \u201Cinside\u201D).\n        {\n          pattern: /((?:^|[^<])<<-?\\s*)([\"'])(\\w+)\\2\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\3/,\n          lookbehind: true,\n          greedy: true,\n          inside: {\n            bash: commandAfterHeredoc\n          }\n        },\n        // \u201CNormal\u201D string\n        {\n          // https://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html\n          pattern:\n            /(^|[^\\\\](?:\\\\\\\\)*)\"(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|\\$(?!\\()|`[^`]+`|[^\"\\\\`$])*\"/,\n          lookbehind: true,\n          greedy: true,\n          inside: insideString\n        },\n        {\n          // https://www.gnu.org/software/bash/manual/html_node/Single-Quotes.html\n          pattern: /(^|[^$\\\\])'[^']*'/,\n          lookbehind: true,\n          greedy: true\n        },\n        {\n          // https://www.gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html\n          pattern: /\\$'(?:[^'\\\\]|\\\\[\\s\\S])*'/,\n          greedy: true,\n          inside: {\n            entity: insideString.entity\n          }\n        }\n      ],\n      environment: {\n        pattern: RegExp('\\\\$?' + envVars),\n        alias: 'constant'\n      },\n      variable: insideString.variable,\n      function: {\n        pattern:\n          /(^|[\\s;|&]|[<>]\\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\\s;|&])/,\n        lookbehind: true\n      },\n      keyword: {\n        pattern:\n          /(^|[\\s;|&]|[<>]\\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\\s;|&])/,\n        lookbehind: true\n      },\n      // https://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n      builtin: {\n        pattern:\n          /(^|[\\s;|&]|[<>]\\()(?:\\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\\s;|&])/,\n        lookbehind: true,\n        // Alias added to make those easier to distinguish from strings.\n        alias: 'class-name'\n      },\n      boolean: {\n        pattern: /(^|[\\s;|&]|[<>]\\()(?:false|true)(?=$|[)\\s;|&])/,\n        lookbehind: true\n      },\n      'file-descriptor': {\n        pattern: /\\B&\\d\\b/,\n        alias: 'important'\n      },\n      operator: {\n        // Lots of redirections here, but not just that.\n        pattern:\n          /\\d?<>|>\\||\\+=|=[=~]?|!=?|<<[<-]?|[&\\d]?>>|\\d[<>]&?|[<>][&=]?|&[>&]?|\\|[&|]?/,\n        inside: {\n          'file-descriptor': {\n            pattern: /^\\d/,\n            alias: 'important'\n          }\n        }\n      },\n      punctuation: /\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];\\\\]/,\n      number: {\n        pattern: /(^|\\s)(?:[1-9]\\d*|0)(?:[.,]\\d+)?\\b/,\n        lookbehind: true\n      }\n    }\n    commandAfterHeredoc.inside = Prism.languages.bash\n\n    /* Patterns in command substitution. */\n    var toBeCopied = [\n      'comment',\n      'function-name',\n      'for-or-select',\n      'assign-left',\n      'parameter',\n      'string',\n      'environment',\n      'function',\n      'keyword',\n      'builtin',\n      'boolean',\n      'file-descriptor',\n      'operator',\n      'punctuation',\n      'number'\n    ]\n    var inside = insideString.variable[1].inside\n    for (var i = 0; i < toBeCopied.length; i++) {\n      inside[toBeCopied[i]] = Prism.languages.bash[toBeCopied[i]]\n    }\n    Prism.languages.sh = Prism.languages.bash\n    Prism.languages.shell = Prism.languages.bash\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\ncsharp.displayName = 'csharp'\ncsharp.aliases = ['cs', 'dotnet']\n\n/** @param {Refractor} Prism */\nexport default function csharp(Prism) {\n  Prism.register(refractorClike)\n  ;(function (Prism) {\n    /**\n     * Replaces all placeholders \"<<n>>\" of given pattern with the n-th replacement (zero based).\n     *\n     * Note: This is a simple text based replacement. Be careful when using backreferences!\n     *\n     * @param {string} pattern the given pattern.\n     * @param {string[]} replacements a list of replacement which can be inserted into the given pattern.\n     * @returns {string} the pattern with all placeholders replaced with their corresponding replacements.\n     * @example replace(/a<<0>>a/.source, [/b+/.source]) === /a(?:b+)a/.source\n     */\n    function replace(pattern, replacements) {\n      return pattern.replace(/<<(\\d+)>>/g, function (m, index) {\n        return '(?:' + replacements[+index] + ')'\n      })\n    }\n    /**\n     * @param {string} pattern\n     * @param {string[]} replacements\n     * @param {string} [flags]\n     * @returns {RegExp}\n     */\n    function re(pattern, replacements, flags) {\n      return RegExp(replace(pattern, replacements), flags || '')\n    }\n\n    /**\n     * Creates a nested pattern where all occurrences of the string `<<self>>` are replaced with the pattern itself.\n     *\n     * @param {string} pattern\n     * @param {number} depthLog2\n     * @returns {string}\n     */\n    function nested(pattern, depthLog2) {\n      for (var i = 0; i < depthLog2; i++) {\n        pattern = pattern.replace(/<<self>>/g, function () {\n          return '(?:' + pattern + ')'\n        })\n      }\n      return pattern.replace(/<<self>>/g, '[^\\\\s\\\\S]')\n    }\n\n    // https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/\n    var keywordKinds = {\n      // keywords which represent a return or variable type\n      type: 'bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void',\n      // keywords which are used to declare a type\n      typeDeclaration: 'class enum interface record struct',\n      // contextual keywords\n      // (\"var\" and \"dynamic\" are missing because they are used like types)\n      contextual:\n        'add alias and ascending async await by descending from(?=\\\\s*(?:\\\\w|$)) get global group into init(?=\\\\s*;) join let nameof not notnull on or orderby partial remove select set unmanaged value when where with(?=\\\\s*{)',\n      // all other keywords\n      other:\n        'abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield'\n    }\n\n    // keywords\n    function keywordsToPattern(words) {\n      return '\\\\b(?:' + words.trim().replace(/ /g, '|') + ')\\\\b'\n    }\n    var typeDeclarationKeywords = keywordsToPattern(\n      keywordKinds.typeDeclaration\n    )\n    var keywords = RegExp(\n      keywordsToPattern(\n        keywordKinds.type +\n          ' ' +\n          keywordKinds.typeDeclaration +\n          ' ' +\n          keywordKinds.contextual +\n          ' ' +\n          keywordKinds.other\n      )\n    )\n    var nonTypeKeywords = keywordsToPattern(\n      keywordKinds.typeDeclaration +\n        ' ' +\n        keywordKinds.contextual +\n        ' ' +\n        keywordKinds.other\n    )\n    var nonContextualKeywords = keywordsToPattern(\n      keywordKinds.type +\n        ' ' +\n        keywordKinds.typeDeclaration +\n        ' ' +\n        keywordKinds.other\n    )\n\n    // types\n    var generic = nested(/<(?:[^<>;=+\\-*/%&|^]|<<self>>)*>/.source, 2) // the idea behind the other forbidden characters is to prevent false positives. Same for tupleElement.\n    var nestedRound = nested(/\\((?:[^()]|<<self>>)*\\)/.source, 2)\n    var name = /@?\\b[A-Za-z_]\\w*\\b/.source\n    var genericName = replace(/<<0>>(?:\\s*<<1>>)?/.source, [name, generic])\n    var identifier = replace(/(?!<<0>>)<<1>>(?:\\s*\\.\\s*<<1>>)*/.source, [\n      nonTypeKeywords,\n      genericName\n    ])\n    var array = /\\[\\s*(?:,\\s*)*\\]/.source\n    var typeExpressionWithoutTuple = replace(\n      /<<0>>(?:\\s*(?:\\?\\s*)?<<1>>)*(?:\\s*\\?)?/.source,\n      [identifier, array]\n    )\n    var tupleElement = replace(\n      /[^,()<>[\\];=+\\-*/%&|^]|<<0>>|<<1>>|<<2>>/.source,\n      [generic, nestedRound, array]\n    )\n    var tuple = replace(/\\(<<0>>+(?:,<<0>>+)+\\)/.source, [tupleElement])\n    var typeExpression = replace(\n      /(?:<<0>>|<<1>>)(?:\\s*(?:\\?\\s*)?<<2>>)*(?:\\s*\\?)?/.source,\n      [tuple, identifier, array]\n    )\n    var typeInside = {\n      keyword: keywords,\n      punctuation: /[<>()?,.:[\\]]/\n    }\n\n    // strings & characters\n    // https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/lexical-structure#character-literals\n    // https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/lexical-structure#string-literals\n    var character = /'(?:[^\\r\\n'\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'/.source // simplified pattern\n    var regularString = /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/.source\n    var verbatimString = /@\"(?:\"\"|\\\\[\\s\\S]|[^\\\\\"])*\"(?!\")/.source\n    Prism.languages.csharp = Prism.languages.extend('clike', {\n      string: [\n        {\n          pattern: re(/(^|[^$\\\\])<<0>>/.source, [verbatimString]),\n          lookbehind: true,\n          greedy: true\n        },\n        {\n          pattern: re(/(^|[^@$\\\\])<<0>>/.source, [regularString]),\n          lookbehind: true,\n          greedy: true\n        }\n      ],\n      'class-name': [\n        {\n          // Using static\n          // using static System.Math;\n          pattern: re(/(\\busing\\s+static\\s+)<<0>>(?=\\s*;)/.source, [\n            identifier\n          ]),\n          lookbehind: true,\n          inside: typeInside\n        },\n        {\n          // Using alias (type)\n          // using Project = PC.MyCompany.Project;\n          pattern: re(/(\\busing\\s+<<0>>\\s*=\\s*)<<1>>(?=\\s*;)/.source, [\n            name,\n            typeExpression\n          ]),\n          lookbehind: true,\n          inside: typeInside\n        },\n        {\n          // Using alias (alias)\n          // using Project = PC.MyCompany.Project;\n          pattern: re(/(\\busing\\s+)<<0>>(?=\\s*=)/.source, [name]),\n          lookbehind: true\n        },\n        {\n          // Type declarations\n          // class Foo<A, B>\n          // interface Foo<out A, B>\n          pattern: re(/(\\b<<0>>\\s+)<<1>>/.source, [\n            typeDeclarationKeywords,\n            genericName\n          ]),\n          lookbehind: true,\n          inside: typeInside\n        },\n        {\n          // Single catch exception declaration\n          // catch(Foo)\n          // (things like catch(Foo e) is covered by variable declaration)\n          pattern: re(/(\\bcatch\\s*\\(\\s*)<<0>>/.source, [identifier]),\n          lookbehind: true,\n          inside: typeInside\n        },\n        {\n          // Name of the type parameter of generic constraints\n          // where Foo : class\n          pattern: re(/(\\bwhere\\s+)<<0>>/.source, [name]),\n          lookbehind: true\n        },\n        {\n          // Casts and checks via as and is.\n          // as Foo<A>, is Bar<B>\n          // (things like if(a is Foo b) is covered by variable declaration)\n          pattern: re(/(\\b(?:is(?:\\s+not)?|as)\\s+)<<0>>/.source, [\n            typeExpressionWithoutTuple\n          ]),\n          lookbehind: true,\n          inside: typeInside\n        },\n        {\n          // Variable, field and parameter declaration\n          // (Foo bar, Bar baz, Foo[,,] bay, Foo<Bar, FooBar<Bar>> bax)\n          pattern: re(\n            /\\b<<0>>(?=\\s+(?!<<1>>|with\\s*\\{)<<2>>(?:\\s*[=,;:{)\\]]|\\s+(?:in|when)\\b))/\n              .source,\n            [typeExpression, nonContextualKeywords, name]\n          ),\n          inside: typeInside\n        }\n      ],\n      keyword: keywords,\n      // https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/language-specification/lexical-structure#literals\n      number:\n        /(?:\\b0(?:x[\\da-f_]*[\\da-f]|b[01_]*[01])|(?:\\B\\.\\d+(?:_+\\d+)*|\\b\\d+(?:_+\\d+)*(?:\\.\\d+(?:_+\\d+)*)?)(?:e[-+]?\\d+(?:_+\\d+)*)?)(?:[dflmu]|lu|ul)?\\b/i,\n      operator: />>=?|<<=?|[-=]>|([-+&|])\\1|~|\\?\\?=?|[-+*/%&|^!=<>]=?/,\n      punctuation: /\\?\\.?|::|[{}[\\];(),.:]/\n    })\n    Prism.languages.insertBefore('csharp', 'number', {\n      range: {\n        pattern: /\\.\\./,\n        alias: 'operator'\n      }\n    })\n    Prism.languages.insertBefore('csharp', 'punctuation', {\n      'named-parameter': {\n        pattern: re(/([(,]\\s*)<<0>>(?=\\s*:)/.source, [name]),\n        lookbehind: true,\n        alias: 'punctuation'\n      }\n    })\n    Prism.languages.insertBefore('csharp', 'class-name', {\n      namespace: {\n        // namespace Foo.Bar {}\n        // using Foo.Bar;\n        pattern: re(\n          /(\\b(?:namespace|using)\\s+)<<0>>(?:\\s*\\.\\s*<<0>>)*(?=\\s*[;{])/.source,\n          [name]\n        ),\n        lookbehind: true,\n        inside: {\n          punctuation: /\\./\n        }\n      },\n      'type-expression': {\n        // default(Foo), typeof(Foo<Bar>), sizeof(int)\n        pattern: re(\n          /(\\b(?:default|sizeof|typeof)\\s*\\(\\s*(?!\\s))(?:[^()\\s]|\\s(?!\\s)|<<0>>)*(?=\\s*\\))/\n            .source,\n          [nestedRound]\n        ),\n        lookbehind: true,\n        alias: 'class-name',\n        inside: typeInside\n      },\n      'return-type': {\n        // Foo<Bar> ForBar(); Foo IFoo.Bar() => 0\n        // int this[int index] => 0; T IReadOnlyList<T>.this[int index] => this[index];\n        // int Foo => 0; int Foo { get; set } = 0;\n        pattern: re(\n          /<<0>>(?=\\s+(?:<<1>>\\s*(?:=>|[({]|\\.\\s*this\\s*\\[)|this\\s*\\[))/.source,\n          [typeExpression, identifier]\n        ),\n        inside: typeInside,\n        alias: 'class-name'\n      },\n      'constructor-invocation': {\n        // new List<Foo<Bar[]>> { }\n        pattern: re(/(\\bnew\\s+)<<0>>(?=\\s*[[({])/.source, [typeExpression]),\n        lookbehind: true,\n        inside: typeInside,\n        alias: 'class-name'\n      },\n      /*'explicit-implementation': {\n// int IFoo<Foo>.Bar => 0; void IFoo<Foo<Foo>>.Foo<T>();\npattern: replace(/\\b<<0>>(?=\\.<<1>>)/, className, methodOrPropertyDeclaration),\ninside: classNameInside,\nalias: 'class-name'\n},*/\n      'generic-method': {\n        // foo<Bar>()\n        pattern: re(/<<0>>\\s*<<1>>(?=\\s*\\()/.source, [name, generic]),\n        inside: {\n          function: re(/^<<0>>/.source, [name]),\n          generic: {\n            pattern: RegExp(generic),\n            alias: 'class-name',\n            inside: typeInside\n          }\n        }\n      },\n      'type-list': {\n        // The list of types inherited or of generic constraints\n        // class Foo<F> : Bar, IList<FooBar>\n        // where F : Bar, IList<int>\n        pattern: re(\n          /\\b((?:<<0>>\\s+<<1>>|record\\s+<<1>>\\s*<<5>>|where\\s+<<2>>)\\s*:\\s*)(?:<<3>>|<<4>>|<<1>>\\s*<<5>>|<<6>>)(?:\\s*,\\s*(?:<<3>>|<<4>>|<<6>>))*(?=\\s*(?:where|[{;]|=>|$))/\n            .source,\n          [\n            typeDeclarationKeywords,\n            genericName,\n            name,\n            typeExpression,\n            keywords.source,\n            nestedRound,\n            /\\bnew\\s*\\(\\s*\\)/.source\n          ]\n        ),\n        lookbehind: true,\n        inside: {\n          'record-arguments': {\n            pattern: re(/(^(?!new\\s*\\()<<0>>\\s*)<<1>>/.source, [\n              genericName,\n              nestedRound\n            ]),\n            lookbehind: true,\n            greedy: true,\n            inside: Prism.languages.csharp\n          },\n          keyword: keywords,\n          'class-name': {\n            pattern: RegExp(typeExpression),\n            greedy: true,\n            inside: typeInside\n          },\n          punctuation: /[,()]/\n        }\n      },\n      preprocessor: {\n        pattern: /(^[\\t ]*)#.*/m,\n        lookbehind: true,\n        alias: 'property',\n        inside: {\n          // highlight preprocessor directives as keywords\n          directive: {\n            pattern:\n              /(#)\\b(?:define|elif|else|endif|endregion|error|if|line|nullable|pragma|region|undef|warning)\\b/,\n            lookbehind: true,\n            alias: 'keyword'\n          }\n        }\n      }\n    })\n\n    // attributes\n    var regularStringOrCharacter = regularString + '|' + character\n    var regularStringCharacterOrComment = replace(\n      /\\/(?![*/])|\\/\\/[^\\r\\n]*[\\r\\n]|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|<<0>>/.source,\n      [regularStringOrCharacter]\n    )\n    var roundExpression = nested(\n      replace(/[^\"'/()]|<<0>>|\\(<<self>>*\\)/.source, [\n        regularStringCharacterOrComment\n      ]),\n      2\n    )\n\n    // https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/attributes/#attribute-targets\n    var attrTarget =\n      /\\b(?:assembly|event|field|method|module|param|property|return|type)\\b/\n        .source\n    var attr = replace(/<<0>>(?:\\s*\\(<<1>>*\\))?/.source, [\n      identifier,\n      roundExpression\n    ])\n    Prism.languages.insertBefore('csharp', 'class-name', {\n      attribute: {\n        // Attributes\n        // [Foo], [Foo(1), Bar(2, Prop = \"foo\")], [return: Foo(1), Bar(2)], [assembly: Foo(Bar)]\n        pattern: re(\n          /((?:^|[^\\s\\w>)?])\\s*\\[\\s*)(?:<<0>>\\s*:\\s*)?<<1>>(?:\\s*,\\s*<<1>>)*(?=\\s*\\])/\n            .source,\n          [attrTarget, attr]\n        ),\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          target: {\n            pattern: re(/^<<0>>(?=\\s*:)/.source, [attrTarget]),\n            alias: 'keyword'\n          },\n          'attribute-arguments': {\n            pattern: re(/\\(<<0>>*\\)/.source, [roundExpression]),\n            inside: Prism.languages.csharp\n          },\n          'class-name': {\n            pattern: RegExp(identifier),\n            inside: {\n              punctuation: /\\./\n            }\n          },\n          punctuation: /[:,]/\n        }\n      }\n    })\n\n    // string interpolation\n    var formatString = /:[^}\\r\\n]+/.source\n    // multi line\n    var mInterpolationRound = nested(\n      replace(/[^\"'/()]|<<0>>|\\(<<self>>*\\)/.source, [\n        regularStringCharacterOrComment\n      ]),\n      2\n    )\n    var mInterpolation = replace(/\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}/.source, [\n      mInterpolationRound,\n      formatString\n    ])\n    // single line\n    var sInterpolationRound = nested(\n      replace(\n        /[^\"'/()]|\\/(?!\\*)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|<<0>>|\\(<<self>>*\\)/\n          .source,\n        [regularStringOrCharacter]\n      ),\n      2\n    )\n    var sInterpolation = replace(/\\{(?!\\{)(?:(?![}:])<<0>>)*<<1>>?\\}/.source, [\n      sInterpolationRound,\n      formatString\n    ])\n    function createInterpolationInside(interpolation, interpolationRound) {\n      return {\n        interpolation: {\n          pattern: re(/((?:^|[^{])(?:\\{\\{)*)<<0>>/.source, [interpolation]),\n          lookbehind: true,\n          inside: {\n            'format-string': {\n              pattern: re(/(^\\{(?:(?![}:])<<0>>)*)<<1>>(?=\\}$)/.source, [\n                interpolationRound,\n                formatString\n              ]),\n              lookbehind: true,\n              inside: {\n                punctuation: /^:/\n              }\n            },\n            punctuation: /^\\{|\\}$/,\n            expression: {\n              pattern: /[\\s\\S]+/,\n              alias: 'language-csharp',\n              inside: Prism.languages.csharp\n            }\n          }\n        },\n        string: /[\\s\\S]+/\n      }\n    }\n    Prism.languages.insertBefore('csharp', 'string', {\n      'interpolation-string': [\n        {\n          pattern: re(\n            /(^|[^\\\\])(?:\\$@|@\\$)\"(?:\"\"|\\\\[\\s\\S]|\\{\\{|<<0>>|[^\\\\{\"])*\"/.source,\n            [mInterpolation]\n          ),\n          lookbehind: true,\n          greedy: true,\n          inside: createInterpolationInside(mInterpolation, mInterpolationRound)\n        },\n        {\n          pattern: re(/(^|[^@\\\\])\\$\"(?:\\\\.|\\{\\{|<<0>>|[^\\\\\"{])*\"/.source, [\n            sInterpolation\n          ]),\n          lookbehind: true,\n          greedy: true,\n          inside: createInterpolationInside(sInterpolation, sInterpolationRound)\n        }\n      ],\n      char: {\n        pattern: RegExp(character),\n        greedy: true\n      }\n    })\n    Prism.languages.dotnet = Prism.languages.cs = Prism.languages.csharp\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nmarkup.displayName = 'markup'\nmarkup.aliases = ['atom', 'html', 'mathml', 'rss', 'ssml', 'svg', 'xml']\n\n/** @param {Refractor} Prism */\nexport default function markup(Prism) {\n  Prism.languages.markup = {\n    comment: {\n      pattern: /<!--(?:(?!<!--)[\\s\\S])*?-->/,\n      greedy: true\n    },\n    prolog: {\n      pattern: /<\\?[\\s\\S]+?\\?>/,\n      greedy: true\n    },\n    doctype: {\n      // https://www.w3.org/TR/xml/#NT-doctypedecl\n      pattern:\n        /<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,\n      greedy: true,\n      inside: {\n        'internal-subset': {\n          pattern: /(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,\n          lookbehind: true,\n          greedy: true,\n          inside: null // see below\n        },\n        string: {\n          pattern: /\"[^\"]*\"|'[^']*'/,\n          greedy: true\n        },\n        punctuation: /^<!|>$|[[\\]]/,\n        'doctype-tag': /^DOCTYPE/i,\n        name: /[^\\s<>'\"]+/\n      }\n    },\n    cdata: {\n      pattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n      greedy: true\n    },\n    tag: {\n      pattern:\n        /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,\n      greedy: true,\n      inside: {\n        tag: {\n          pattern: /^<\\/?[^\\s>\\/]+/,\n          inside: {\n            punctuation: /^<\\/?/,\n            namespace: /^[^\\s>\\/:]+:/\n          }\n        },\n        'special-attr': [],\n        'attr-value': {\n          pattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,\n          inside: {\n            punctuation: [\n              {\n                pattern: /^=/,\n                alias: 'attr-equals'\n              },\n              {\n                pattern: /^(\\s*)[\"']|[\"']$/,\n                lookbehind: true\n              }\n            ]\n          }\n        },\n        punctuation: /\\/?>/,\n        'attr-name': {\n          pattern: /[^\\s>\\/]+/,\n          inside: {\n            namespace: /^[^\\s>\\/:]+:/\n          }\n        }\n      }\n    },\n    entity: [\n      {\n        pattern: /&[\\da-z]{1,8};/i,\n        alias: 'named-entity'\n      },\n      /&#x?[\\da-f]{1,8};/i\n    ]\n  }\n  Prism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n    Prism.languages.markup['entity']\n  Prism.languages.markup['doctype'].inside['internal-subset'].inside =\n    Prism.languages.markup\n\n  // Plugin to make entity title show the real entity, idea by Roman Komarov\n  Prism.hooks.add('wrap', function (env) {\n    if (env.type === 'entity') {\n      env.attributes['title'] = env.content.value.replace(/&amp;/, '&')\n    }\n  })\n  Object.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n    /**\n     * Adds an inlined language to markup.\n     *\n     * An example of an inlined language is CSS with `<style>` tags.\n     *\n     * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n     * case insensitive.\n     * @param {string} lang The language key.\n     * @example\n     * addInlined('style', 'css');\n     */\n    value: function addInlined(tagName, lang) {\n      var includedCdataInside = {}\n      includedCdataInside['language-' + lang] = {\n        pattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n        lookbehind: true,\n        inside: Prism.languages[lang]\n      }\n      includedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i\n      var inside = {\n        'included-cdata': {\n          pattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n          inside: includedCdataInside\n        }\n      }\n      inside['language-' + lang] = {\n        pattern: /[\\s\\S]+/,\n        inside: Prism.languages[lang]\n      }\n      var def = {}\n      def[tagName] = {\n        pattern: RegExp(\n          /(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)/.source.replace(\n            /__/g,\n            function () {\n              return tagName\n            }\n          ),\n          'i'\n        ),\n        lookbehind: true,\n        greedy: true,\n        inside: inside\n      }\n      Prism.languages.insertBefore('markup', 'cdata', def)\n    }\n  })\n  Object.defineProperty(Prism.languages.markup.tag, 'addAttribute', {\n    /**\n     * Adds an pattern to highlight languages embedded in HTML attributes.\n     *\n     * An example of an inlined language is CSS with `style` attributes.\n     *\n     * @param {string} attrName The name of the tag that contains the inlined language. This name will be treated as\n     * case insensitive.\n     * @param {string} lang The language key.\n     * @example\n     * addAttribute('style', 'css');\n     */\n    value: function (attrName, lang) {\n      Prism.languages.markup.tag.inside['special-attr'].push({\n        pattern: RegExp(\n          /(^|[\"'\\s])/.source +\n            '(?:' +\n            attrName +\n            ')' +\n            /\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))/.source,\n          'i'\n        ),\n        lookbehind: true,\n        inside: {\n          'attr-name': /^[^\\s=]+/,\n          'attr-value': {\n            pattern: /=[\\s\\S]+/,\n            inside: {\n              value: {\n                pattern: /(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,\n                lookbehind: true,\n                alias: [lang, 'language-' + lang],\n                inside: Prism.languages[lang]\n              },\n              punctuation: [\n                {\n                  pattern: /^=/,\n                  alias: 'attr-equals'\n                },\n                /\"|'/\n              ]\n            }\n          }\n        }\n      })\n    }\n  })\n  Prism.languages.html = Prism.languages.markup\n  Prism.languages.mathml = Prism.languages.markup\n  Prism.languages.svg = Prism.languages.markup\n  Prism.languages.xml = Prism.languages.extend('markup', {})\n  Prism.languages.ssml = Prism.languages.xml\n  Prism.languages.atom = Prism.languages.xml\n  Prism.languages.rss = Prism.languages.xml\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ncss.displayName = 'css'\ncss.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function css(Prism) {\n  ;(function (Prism) {\n    var string =\n      /(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/\n    Prism.languages.css = {\n      comment: /\\/\\*[\\s\\S]*?\\*\\//,\n      atrule: {\n        pattern: RegExp(\n          '@[\\\\w-](?:' +\n            /[^;{\\s\"']|\\s+(?!\\s)/.source +\n            '|' +\n            string.source +\n            ')*?' +\n            /(?:;|(?=\\s*\\{))/.source\n        ),\n        inside: {\n          rule: /^@[\\w-]+/,\n          'selector-function-argument': {\n            pattern:\n              /(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,\n            lookbehind: true,\n            alias: 'selector'\n          },\n          keyword: {\n            pattern: /(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,\n            lookbehind: true\n          }\n          // See rest below\n        }\n      },\n      url: {\n        // https://drafts.csswg.org/css-values-3/#urls\n        pattern: RegExp(\n          '\\\\burl\\\\((?:' +\n            string.source +\n            '|' +\n            /(?:[^\\\\\\r\\n()\"']|\\\\[\\s\\S])*/.source +\n            ')\\\\)',\n          'i'\n        ),\n        greedy: true,\n        inside: {\n          function: /^url/i,\n          punctuation: /^\\(|\\)$/,\n          string: {\n            pattern: RegExp('^' + string.source + '$'),\n            alias: 'url'\n          }\n        }\n      },\n      selector: {\n        pattern: RegExp(\n          '(^|[{}\\\\s])[^{}\\\\s](?:[^{};\"\\'\\\\s]|\\\\s+(?![\\\\s{])|' +\n            string.source +\n            ')*(?=\\\\s*\\\\{)'\n        ),\n        lookbehind: true\n      },\n      string: {\n        pattern: string,\n        greedy: true\n      },\n      property: {\n        pattern:\n          /(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,\n        lookbehind: true\n      },\n      important: /!important\\b/i,\n      function: {\n        pattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,\n        lookbehind: true\n      },\n      punctuation: /[(){};:,]/\n    }\n    Prism.languages.css['atrule'].inside.rest = Prism.languages.css\n    var markup = Prism.languages.markup\n    if (markup) {\n      markup.tag.addInlined('style', 'css')\n      markup.tag.addAttribute('style', 'css')\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ndiff.displayName = 'diff'\ndiff.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function diff(Prism) {\n  ;(function (Prism) {\n    Prism.languages.diff = {\n      coord: [\n        // Match all kinds of coord lines (prefixed by \"+++\", \"---\" or \"***\").\n        /^(?:\\*{3}|-{3}|\\+{3}).*$/m,\n        // Match \"@@ ... @@\" coord lines in unified diff.\n        /^@@.*@@$/m,\n        // Match coord lines in normal diff (starts with a number).\n        /^\\d.*$/m\n      ]\n\n      // deleted, inserted, unchanged, diff\n    }\n\n    /**\n     * A map from the name of a block to its line prefix.\n     *\n     * @type {Object<string, string>}\n     */\n    var PREFIXES = {\n      'deleted-sign': '-',\n      'deleted-arrow': '<',\n      'inserted-sign': '+',\n      'inserted-arrow': '>',\n      unchanged: ' ',\n      diff: '!'\n    }\n\n    // add a token for each prefix\n    Object.keys(PREFIXES).forEach(function (name) {\n      var prefix = PREFIXES[name]\n      var alias = []\n      if (!/^\\w+$/.test(name)) {\n        // \"deleted-sign\" -> \"deleted\"\n        alias.push(/\\w+/.exec(name)[0])\n      }\n      if (name === 'diff') {\n        alias.push('bold')\n      }\n      Prism.languages.diff[name] = {\n        pattern: RegExp(\n          '^(?:[' + prefix + '].*(?:\\r\\n?|\\n|(?![\\\\s\\\\S])))+',\n          'm'\n        ),\n        alias: alias,\n        inside: {\n          line: {\n            pattern: /(.)(?=[\\s\\S]).*(?:\\r\\n?|\\n)?/,\n            lookbehind: true\n          },\n          prefix: {\n            pattern: /[\\s\\S]/,\n            alias: /\\w+/.exec(name)[0]\n          }\n        }\n      }\n    })\n\n    // make prefixes available to Diff plugin\n    Object.defineProperty(Prism.languages.diff, 'PREFIXES', {\n      value: PREFIXES\n    })\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\ngo.displayName = 'go'\ngo.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function go(Prism) {\n  Prism.register(refractorClike)\n  Prism.languages.go = Prism.languages.extend('clike', {\n    string: {\n      pattern: /(^|[^\\\\])\"(?:\\\\.|[^\"\\\\\\r\\n])*\"|`[^`]*`/,\n      lookbehind: true,\n      greedy: true\n    },\n    keyword:\n      /\\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\\b/,\n    boolean: /\\b(?:_|false|iota|nil|true)\\b/,\n    number: [\n      // binary and octal integers\n      /\\b0(?:b[01_]+|o[0-7_]+)i?\\b/i,\n      // hexadecimal integers and floats\n      /\\b0x(?:[a-f\\d_]+(?:\\.[a-f\\d_]*)?|\\.[a-f\\d_]+)(?:p[+-]?\\d+(?:_\\d+)*)?i?(?!\\w)/i,\n      // decimal integers and floats\n      /(?:\\b\\d[\\d_]*(?:\\.[\\d_]*)?|\\B\\.\\d[\\d_]*)(?:e[+-]?[\\d_]+)?i?(?!\\w)/i\n    ],\n    operator:\n      /[*\\/%^!=]=?|\\+[=+]?|-[=-]?|\\|[=|]?|&(?:=|&|\\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\\.\\.\\./,\n    builtin:\n      /\\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\\b/\n  })\n  Prism.languages.insertBefore('go', 'string', {\n    char: {\n      pattern: /'(?:\\\\.|[^'\\\\\\r\\n]){0,10}'/,\n      greedy: true\n    }\n  })\n  delete Prism.languages.go['class-name']\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nini.displayName = 'ini'\nini.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function ini(Prism) {\n  Prism.languages.ini = {\n    /**\n     * The component mimics the behavior of the Win32 API parser.\n     *\n     * @see {@link https://github.com/PrismJS/prism/issues/2775#issuecomment-787477723}\n     */\n\n    comment: {\n      pattern: /(^[ \\f\\t\\v]*)[#;][^\\n\\r]*/m,\n      lookbehind: true\n    },\n    section: {\n      pattern: /(^[ \\f\\t\\v]*)\\[[^\\n\\r\\]]*\\]?/m,\n      lookbehind: true,\n      inside: {\n        'section-name': {\n          pattern: /(^\\[[ \\f\\t\\v]*)[^ \\f\\t\\v\\]]+(?:[ \\f\\t\\v]+[^ \\f\\t\\v\\]]+)*/,\n          lookbehind: true,\n          alias: 'selector'\n        },\n        punctuation: /\\[|\\]/\n      }\n    },\n    key: {\n      pattern:\n        /(^[ \\f\\t\\v]*)[^ \\f\\n\\r\\t\\v=]+(?:[ \\f\\t\\v]+[^ \\f\\n\\r\\t\\v=]+)*(?=[ \\f\\t\\v]*=)/m,\n      lookbehind: true,\n      alias: 'attr-name'\n    },\n    value: {\n      pattern: /(=[ \\f\\t\\v]*)[^ \\f\\n\\r\\t\\v]+(?:[ \\f\\t\\v]+[^ \\f\\n\\r\\t\\v]+)*/,\n      lookbehind: true,\n      alias: 'attr-value',\n      inside: {\n        'inner-value': {\n          pattern: /^(\"|').+(?=\\1$)/,\n          lookbehind: true\n        }\n      }\n    },\n    punctuation: /=/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\njava.displayName = 'java'\njava.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function java(Prism) {\n  Prism.register(refractorClike)\n  ;(function (Prism) {\n    var keywords =\n      /\\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record(?!\\s*[(){}[\\]<>=%~.:,;?+\\-*/&|^])|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\\b/\n\n    // full package (optional) + parent classes (optional)\n    var classNamePrefix = /(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*/.source\n\n    // based on the java naming conventions\n    var className = {\n      pattern: RegExp(\n        /(^|[^\\w.])/.source +\n          classNamePrefix +\n          /[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b/.source\n      ),\n      lookbehind: true,\n      inside: {\n        namespace: {\n          pattern: /^[a-z]\\w*(?:\\s*\\.\\s*[a-z]\\w*)*(?:\\s*\\.)?/,\n          inside: {\n            punctuation: /\\./\n          }\n        },\n        punctuation: /\\./\n      }\n    }\n    Prism.languages.java = Prism.languages.extend('clike', {\n      string: {\n        pattern: /(^|[^\\\\])\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,\n        lookbehind: true,\n        greedy: true\n      },\n      'class-name': [\n        className,\n        {\n          // variables, parameters, and constructor references\n          // this to support class names (or generic parameters) which do not contain a lower case letter (also works for methods)\n          pattern: RegExp(\n            /(^|[^\\w.])/.source +\n              classNamePrefix +\n              /[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()]|\\s*(?:\\[[\\s,]*\\]\\s*)?::\\s*new\\b)/\n                .source\n          ),\n          lookbehind: true,\n          inside: className.inside\n        },\n        {\n          // class names based on keyword\n          // this to support class names (or generic parameters) which do not contain a lower case letter (also works for methods)\n          pattern: RegExp(\n            /(\\b(?:class|enum|extends|implements|instanceof|interface|new|record|throws)\\s+)/\n              .source +\n              classNamePrefix +\n              /[A-Z]\\w*\\b/.source\n          ),\n          lookbehind: true,\n          inside: className.inside\n        }\n      ],\n      keyword: keywords,\n      function: [\n        Prism.languages.clike.function,\n        {\n          pattern: /(::\\s*)[a-z_]\\w*/,\n          lookbehind: true\n        }\n      ],\n      number:\n        /\\b0b[01][01_]*L?\\b|\\b0x(?:\\.[\\da-f_p+-]+|[\\da-f_]+(?:\\.[\\da-f_p+-]+)?)\\b|(?:\\b\\d[\\d_]*(?:\\.[\\d_]*)?|\\B\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[dfl]?/i,\n      operator: {\n        pattern:\n          /(^|[^.])(?:<<=?|>>>?=?|->|--|\\+\\+|&&|\\|\\||::|[?:~]|[-+*/%&|^!=<>]=?)/m,\n        lookbehind: true\n      },\n      constant: /\\b[A-Z][A-Z_\\d]+\\b/\n    })\n    Prism.languages.insertBefore('java', 'string', {\n      'triple-quoted-string': {\n        // http://openjdk.java.net/jeps/355#Description\n        pattern: /\"\"\"[ \\t]*[\\r\\n](?:(?:\"|\"\")?(?:\\\\.|[^\"\\\\]))*\"\"\"/,\n        greedy: true,\n        alias: 'string'\n      },\n      char: {\n        pattern: /'(?:\\\\.|[^'\\\\\\r\\n]){1,6}'/,\n        greedy: true\n      }\n    })\n    Prism.languages.insertBefore('java', 'class-name', {\n      annotation: {\n        pattern: /(^|[^.])@\\w+(?:\\s*\\.\\s*\\w+)*/,\n        lookbehind: true,\n        alias: 'punctuation'\n      },\n      generics: {\n        pattern:\n          /<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&)|<(?:[\\w\\s,.?]|&(?!&))*>)*>)*>)*>/,\n        inside: {\n          'class-name': className,\n          keyword: keywords,\n          punctuation: /[<>(),.:]/,\n          operator: /[?&|]/\n        }\n      },\n      import: [\n        {\n          pattern: RegExp(\n            /(\\bimport\\s+)/.source +\n              classNamePrefix +\n              /(?:[A-Z]\\w*|\\*)(?=\\s*;)/.source\n          ),\n          lookbehind: true,\n          inside: {\n            namespace: className.inside.namespace,\n            punctuation: /\\./,\n            operator: /\\*/,\n            'class-name': /\\w+/\n          }\n        },\n        {\n          pattern: RegExp(\n            /(\\bimport\\s+static\\s+)/.source +\n              classNamePrefix +\n              /(?:\\w+|\\*)(?=\\s*;)/.source\n          ),\n          lookbehind: true,\n          alias: 'static',\n          inside: {\n            namespace: className.inside.namespace,\n            static: /\\b\\w+$/,\n            punctuation: /\\./,\n            operator: /\\*/,\n            'class-name': /\\w+/\n          }\n        }\n      ],\n      namespace: {\n        pattern: RegExp(\n          /(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)(?!<keyword>)[a-z]\\w*(?:\\.[a-z]\\w*)*\\.?/.source.replace(\n            /<keyword>/g,\n            function () {\n              return keywords.source\n            }\n          )\n        ),\n        lookbehind: true,\n        inside: {\n          punctuation: /\\./\n        }\n      }\n    })\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nregex.displayName = 'regex'\nregex.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function regex(Prism) {\n  ;(function (Prism) {\n    var specialEscape = {\n      pattern: /\\\\[\\\\(){}[\\]^$+*?|.]/,\n      alias: 'escape'\n    }\n    var escape =\n      /\\\\(?:x[\\da-fA-F]{2}|u[\\da-fA-F]{4}|u\\{[\\da-fA-F]+\\}|0[0-7]{0,2}|[123][0-7]{2}|c[a-zA-Z]|.)/\n    var charSet = {\n      pattern: /\\.|\\\\[wsd]|\\\\p\\{[^{}]+\\}/i,\n      alias: 'class-name'\n    }\n    var charSetWithoutDot = {\n      pattern: /\\\\[wsd]|\\\\p\\{[^{}]+\\}/i,\n      alias: 'class-name'\n    }\n    var rangeChar = '(?:[^\\\\\\\\-]|' + escape.source + ')'\n    var range = RegExp(rangeChar + '-' + rangeChar)\n\n    // the name of a capturing group\n    var groupName = {\n      pattern: /(<|')[^<>']+(?=[>']$)/,\n      lookbehind: true,\n      alias: 'variable'\n    }\n    Prism.languages.regex = {\n      'char-class': {\n        pattern: /((?:^|[^\\\\])(?:\\\\\\\\)*)\\[(?:[^\\\\\\]]|\\\\[\\s\\S])*\\]/,\n        lookbehind: true,\n        inside: {\n          'char-class-negation': {\n            pattern: /(^\\[)\\^/,\n            lookbehind: true,\n            alias: 'operator'\n          },\n          'char-class-punctuation': {\n            pattern: /^\\[|\\]$/,\n            alias: 'punctuation'\n          },\n          range: {\n            pattern: range,\n            inside: {\n              escape: escape,\n              'range-punctuation': {\n                pattern: /-/,\n                alias: 'operator'\n              }\n            }\n          },\n          'special-escape': specialEscape,\n          'char-set': charSetWithoutDot,\n          escape: escape\n        }\n      },\n      'special-escape': specialEscape,\n      'char-set': charSet,\n      backreference: [\n        {\n          // a backreference which is not an octal escape\n          pattern: /\\\\(?![123][0-7]{2})[1-9]/,\n          alias: 'keyword'\n        },\n        {\n          pattern: /\\\\k<[^<>']+>/,\n          alias: 'keyword',\n          inside: {\n            'group-name': groupName\n          }\n        }\n      ],\n      anchor: {\n        pattern: /[$^]|\\\\[ABbGZz]/,\n        alias: 'function'\n      },\n      escape: escape,\n      group: [\n        {\n          // https://docs.oracle.com/javase/10/docs/api/java/util/regex/Pattern.html\n          // https://docs.microsoft.com/en-us/dotnet/standard/base-types/regular-expression-language-quick-reference?view=netframework-4.7.2#grouping-constructs\n\n          // (), (?<name>), (?'name'), (?>), (?:), (?=), (?!), (?<=), (?<!), (?is-m), (?i-m:)\n          pattern:\n            /\\((?:\\?(?:<[^<>']+>|'[^<>']+'|[>:]|<?[=!]|[idmnsuxU]+(?:-[idmnsuxU]+)?:?))?/,\n          alias: 'punctuation',\n          inside: {\n            'group-name': groupName\n          }\n        },\n        {\n          pattern: /\\)/,\n          alias: 'punctuation'\n        }\n      ],\n      quantifier: {\n        pattern: /(?:[+*?]|\\{\\d+(?:,\\d*)?\\})[?+]?/,\n        alias: 'number'\n      },\n      alternation: {\n        pattern: /\\|/,\n        alias: 'keyword'\n      }\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\njavascript.displayName = 'javascript'\njavascript.aliases = ['js']\n\n/** @param {Refractor} Prism */\nexport default function javascript(Prism) {\n  Prism.register(refractorClike)\n  Prism.languages.javascript = Prism.languages.extend('clike', {\n    'class-name': [\n      Prism.languages.clike['class-name'],\n      {\n        pattern:\n          /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,\n        lookbehind: true\n      }\n    ],\n    keyword: [\n      {\n        pattern: /((?:^|\\})\\s*)catch\\b/,\n        lookbehind: true\n      },\n      {\n        pattern:\n          /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n        lookbehind: true\n      }\n    ],\n    // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n    function:\n      /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n    number: {\n      pattern: RegExp(\n        /(^|[^\\w$])/.source +\n          '(?:' +\n          // constant\n          (/NaN|Infinity/.source +\n            '|' +\n            // binary integer\n            /0[bB][01]+(?:_[01]+)*n?/.source +\n            '|' +\n            // octal integer\n            /0[oO][0-7]+(?:_[0-7]+)*n?/.source +\n            '|' +\n            // hexadecimal integer\n            /0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?/.source +\n            '|' +\n            // decimal bigint\n            /\\d+(?:_\\d+)*n/.source +\n            '|' +\n            // decimal number (integer or float) but no bigint\n            /(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?/\n              .source) +\n          ')' +\n          /(?![\\w$])/.source\n      ),\n      lookbehind: true\n    },\n    operator:\n      /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n  })\n  Prism.languages.javascript['class-name'][0].pattern =\n    /(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/\n  Prism.languages.insertBefore('javascript', 'keyword', {\n    regex: {\n      pattern: RegExp(\n        // lookbehind\n        // eslint-disable-next-line regexp/no-dupe-characters-character-class\n        /((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/.source +\n          // Regex pattern:\n          // There are 2 regex patterns here. The RegExp set notation proposal added support for nested character\n          // classes if the `v` flag is present. Unfortunately, nested CCs are both context-free and incompatible\n          // with the only syntax, so we have to define 2 different regex patterns.\n          /\\//.source +\n          '(?:' +\n          /(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}/\n            .source +\n          '|' +\n          // `v` flag syntax. This supports 3 levels of nested character classes.\n          /(?:\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}v[dgimyus]{0,7}/\n            .source +\n          ')' +\n          // lookahead\n          /(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/\n            .source\n      ),\n      lookbehind: true,\n      greedy: true,\n      inside: {\n        'regex-source': {\n          pattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n          lookbehind: true,\n          alias: 'language-regex',\n          inside: Prism.languages.regex\n        },\n        'regex-delimiter': /^\\/|\\/$/,\n        'regex-flags': /^[a-z]+$/\n      }\n    },\n    // This must be declared before keyword because we use \"function\" inside the look-forward\n    'function-variable': {\n      pattern:\n        /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n      alias: 'function'\n    },\n    parameter: [\n      {\n        pattern:\n          /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n        lookbehind: true,\n        inside: Prism.languages.javascript\n      },\n      {\n        pattern:\n          /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n        lookbehind: true,\n        inside: Prism.languages.javascript\n      },\n      {\n        pattern:\n          /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n        lookbehind: true,\n        inside: Prism.languages.javascript\n      },\n      {\n        pattern:\n          /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,\n        lookbehind: true,\n        inside: Prism.languages.javascript\n      }\n    ],\n    constant: /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n  })\n  Prism.languages.insertBefore('javascript', 'string', {\n    hashbang: {\n      pattern: /^#!.*/,\n      greedy: true,\n      alias: 'comment'\n    },\n    'template-string': {\n      pattern:\n        /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n      greedy: true,\n      inside: {\n        'template-punctuation': {\n          pattern: /^`|`$/,\n          alias: 'string'\n        },\n        interpolation: {\n          pattern:\n            /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n          lookbehind: true,\n          inside: {\n            'interpolation-punctuation': {\n              pattern: /^\\$\\{|\\}$/,\n              alias: 'punctuation'\n            },\n            rest: Prism.languages.javascript\n          }\n        },\n        string: /[\\s\\S]+/\n      }\n    },\n    'string-property': {\n      pattern:\n        /((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,\n      lookbehind: true,\n      greedy: true,\n      alias: 'property'\n    }\n  })\n  Prism.languages.insertBefore('javascript', 'operator', {\n    'literal-property': {\n      pattern:\n        /((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,\n      lookbehind: true,\n      alias: 'property'\n    }\n  })\n  if (Prism.languages.markup) {\n    Prism.languages.markup.tag.addInlined('script', 'javascript')\n\n    // add attribute support for all DOM events.\n    // https://developer.mozilla.org/en-US/docs/Web/Events#Standard_events\n    Prism.languages.markup.tag.addAttribute(\n      /on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/\n        .source,\n      'javascript'\n    )\n  }\n  Prism.languages.js = Prism.languages.javascript\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\njson.displayName = 'json'\njson.aliases = ['webmanifest']\n\n/** @param {Refractor} Prism */\nexport default function json(Prism) {\n  // https://www.json.org/json-en.html\n  Prism.languages.json = {\n    property: {\n      pattern: /(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/,\n      lookbehind: true,\n      greedy: true\n    },\n    string: {\n      pattern: /(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?!\\s*:)/,\n      lookbehind: true,\n      greedy: true\n    },\n    comment: {\n      pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n      greedy: true\n    },\n    number: /-?\\b\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,\n    punctuation: /[{}[\\],]/,\n    operator: /:/,\n    boolean: /\\b(?:false|true)\\b/,\n    null: {\n      pattern: /\\bnull\\b/,\n      alias: 'keyword'\n    }\n  }\n  Prism.languages.webmanifest = Prism.languages.json\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\nkotlin.displayName = 'kotlin'\nkotlin.aliases = ['kt', 'kts']\n\n/** @param {Refractor} Prism */\nexport default function kotlin(Prism) {\n  Prism.register(refractorClike)\n  ;(function (Prism) {\n    Prism.languages.kotlin = Prism.languages.extend('clike', {\n      keyword: {\n        // The lookbehind prevents wrong highlighting of e.g. kotlin.properties.get\n        pattern:\n          /(^|[^.])\\b(?:abstract|actual|annotation|as|break|by|catch|class|companion|const|constructor|continue|crossinline|data|do|dynamic|else|enum|expect|external|final|finally|for|fun|get|if|import|in|infix|init|inline|inner|interface|internal|is|lateinit|noinline|null|object|open|operator|out|override|package|private|protected|public|reified|return|sealed|set|super|suspend|tailrec|this|throw|to|try|typealias|val|var|vararg|when|where|while)\\b/,\n        lookbehind: true\n      },\n      function: [\n        {\n          pattern: /(?:`[^\\r\\n`]+`|\\b\\w+)(?=\\s*\\()/,\n          greedy: true\n        },\n        {\n          pattern: /(\\.)(?:`[^\\r\\n`]+`|\\w+)(?=\\s*\\{)/,\n          lookbehind: true,\n          greedy: true\n        }\n      ],\n      number:\n        /\\b(?:0[xX][\\da-fA-F]+(?:_[\\da-fA-F]+)*|0[bB][01]+(?:_[01]+)*|\\d+(?:_\\d+)*(?:\\.\\d+(?:_\\d+)*)?(?:[eE][+-]?\\d+(?:_\\d+)*)?[fFL]?)\\b/,\n      operator:\n        /\\+[+=]?|-[-=>]?|==?=?|!(?:!|==?)?|[\\/*%<>]=?|[?:]:?|\\.\\.|&&|\\|\\||\\b(?:and|inv|or|shl|shr|ushr|xor)\\b/\n    })\n    delete Prism.languages.kotlin['class-name']\n    var interpolationInside = {\n      'interpolation-punctuation': {\n        pattern: /^\\$\\{?|\\}$/,\n        alias: 'punctuation'\n      },\n      expression: {\n        pattern: /[\\s\\S]+/,\n        inside: Prism.languages.kotlin\n      }\n    }\n    Prism.languages.insertBefore('kotlin', 'string', {\n      // https://kotlinlang.org/spec/expressions.html#string-interpolation-expressions\n      'string-literal': [\n        {\n          pattern: /\"\"\"(?:[^$]|\\$(?:(?!\\{)|\\{[^{}]*\\}))*?\"\"\"/,\n          alias: 'multiline',\n          inside: {\n            interpolation: {\n              pattern: /\\$(?:[a-z_]\\w*|\\{[^{}]*\\})/i,\n              inside: interpolationInside\n            },\n            string: /[\\s\\S]+/\n          }\n        },\n        {\n          pattern: /\"(?:[^\"\\\\\\r\\n$]|\\\\.|\\$(?:(?!\\{)|\\{[^{}]*\\}))*\"/,\n          alias: 'singleline',\n          inside: {\n            interpolation: {\n              pattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$(?:[a-z_]\\w*|\\{[^{}]*\\})/i,\n              lookbehind: true,\n              inside: interpolationInside\n            },\n            string: /[\\s\\S]+/\n          }\n        }\n      ],\n      char: {\n        // https://kotlinlang.org/spec/expressions.html#character-literals\n        pattern: /'(?:[^'\\\\\\r\\n]|\\\\(?:.|u[a-fA-F0-9]{0,4}))'/,\n        greedy: true\n      }\n    })\n    delete Prism.languages.kotlin['string']\n    Prism.languages.insertBefore('kotlin', 'keyword', {\n      annotation: {\n        pattern: /\\B@(?:\\w+:)?(?:[A-Z]\\w*|\\[[^\\]]+\\])/,\n        alias: 'builtin'\n      }\n    })\n    Prism.languages.insertBefore('kotlin', 'function', {\n      label: {\n        pattern: /\\b\\w+@|@\\w+\\b/,\n        alias: 'symbol'\n      }\n    })\n    Prism.languages.kt = Prism.languages.kotlin\n    Prism.languages.kts = Prism.languages.kotlin\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorCss from './css.js'\nless.displayName = 'less'\nless.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function less(Prism) {\n  Prism.register(refractorCss)\n  /* FIXME :\n:extend() is not handled specifically : its highlighting is buggy.\nMixin usage must be inside a ruleset to be highlighted.\nAt-rules (e.g. import) containing interpolations are buggy.\nDetached rulesets are highlighted as at-rules.\nA comment before a mixin usage prevents the latter to be properly highlighted.\n*/\n\n  Prism.languages.less = Prism.languages.extend('css', {\n    comment: [\n      /\\/\\*[\\s\\S]*?\\*\\//,\n      {\n        pattern: /(^|[^\\\\])\\/\\/.*/,\n        lookbehind: true\n      }\n    ],\n    atrule: {\n      pattern:\n        /@[\\w-](?:\\((?:[^(){}]|\\([^(){}]*\\))*\\)|[^(){};\\s]|\\s+(?!\\s))*?(?=\\s*\\{)/,\n      inside: {\n        punctuation: /[:()]/\n      }\n    },\n    // selectors and mixins are considered the same\n    selector: {\n      pattern:\n        /(?:@\\{[\\w-]+\\}|[^{};\\s@])(?:@\\{[\\w-]+\\}|\\((?:[^(){}]|\\([^(){}]*\\))*\\)|[^(){};@\\s]|\\s+(?!\\s))*?(?=\\s*\\{)/,\n      inside: {\n        // mixin parameters\n        variable: /@+[\\w-]+/\n      }\n    },\n    property: /(?:@\\{[\\w-]+\\}|[\\w-])+(?:\\+_?)?(?=\\s*:)/,\n    operator: /[+\\-*\\/]/\n  })\n  Prism.languages.insertBefore('less', 'property', {\n    variable: [\n      // Variable declaration (the colon must be consumed!)\n      {\n        pattern: /@[\\w-]+\\s*:/,\n        inside: {\n          punctuation: /:/\n        }\n      },\n      // Variable usage\n      /@@?[\\w-]+/\n    ],\n    'mixin-usage': {\n      pattern: /([{;]\\s*)[.#](?!\\d)[\\w-].*?(?=[(;])/,\n      lookbehind: true,\n      alias: 'function'\n    }\n  })\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nlua.displayName = 'lua'\nlua.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function lua(Prism) {\n  Prism.languages.lua = {\n    comment: /^#!.+|--(?:\\[(=*)\\[[\\s\\S]*?\\]\\1\\]|.*)/m,\n    // \\z may be used to skip the following space\n    string: {\n      pattern:\n        /([\"'])(?:(?!\\1)[^\\\\\\r\\n]|\\\\z(?:\\r\\n|\\s)|\\\\(?:\\r\\n|[^z]))*\\1|\\[(=*)\\[[\\s\\S]*?\\]\\2\\]/,\n      greedy: true\n    },\n    number:\n      /\\b0x[a-f\\d]+(?:\\.[a-f\\d]*)?(?:p[+-]?\\d+)?\\b|\\b\\d+(?:\\.\\B|(?:\\.\\d*)?(?:e[+-]?\\d+)?\\b)|\\B\\.\\d+(?:e[+-]?\\d+)?\\b/i,\n    keyword:\n      /\\b(?:and|break|do|else|elseif|end|false|for|function|goto|if|in|local|nil|not|or|repeat|return|then|true|until|while)\\b/,\n    function: /(?!\\d)\\w+(?=\\s*(?:[({]))/,\n    operator: [\n      /[-+*%^&|#]|\\/\\/?|<[<=]?|>[>=]?|[=~]=?/,\n      {\n        // Match \"..\" but don't break \"...\"\n        pattern: /(^|[^.])\\.\\.(?!\\.)/,\n        lookbehind: true\n      }\n    ],\n    punctuation: /[\\[\\](){},;]|\\.+|:+/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nmakefile.displayName = 'makefile'\nmakefile.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function makefile(Prism) {\n  Prism.languages.makefile = {\n    comment: {\n      pattern: /(^|[^\\\\])#(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n])*/,\n      lookbehind: true\n    },\n    string: {\n      pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      greedy: true\n    },\n    'builtin-target': {\n      pattern: /\\.[A-Z][^:#=\\s]+(?=\\s*:(?!=))/,\n      alias: 'builtin'\n    },\n    target: {\n      pattern: /^(?:[^:=\\s]|[ \\t]+(?![\\s:]))+(?=\\s*:(?!=))/m,\n      alias: 'symbol',\n      inside: {\n        variable: /\\$+(?:(?!\\$)[^(){}:#=\\s]+|(?=[({]))/\n      }\n    },\n    variable: /\\$+(?:(?!\\$)[^(){}:#=\\s]+|\\([@*%<^+?][DF]\\)|(?=[({]))/,\n    // Directives\n    keyword:\n      /-include\\b|\\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\\b/,\n    function: {\n      pattern:\n        /(\\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \\t])/,\n      lookbehind: true\n    },\n    operator: /(?:::|[?:+!])?=|[|@]/,\n    punctuation: /[:;(){}]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nyaml.displayName = 'yaml'\nyaml.aliases = ['yml']\n\n/** @param {Refractor} Prism */\nexport default function yaml(Prism) {\n  ;(function (Prism) {\n    // https://yaml.org/spec/1.2/spec.html#c-ns-anchor-property\n    // https://yaml.org/spec/1.2/spec.html#c-ns-alias-node\n    var anchorOrAlias = /[*&][^\\s[\\]{},]+/\n    // https://yaml.org/spec/1.2/spec.html#c-ns-tag-property\n    var tag =\n      /!(?:<[\\w\\-%#;/?:@&=+$,.!~*'()[\\]]+>|(?:[a-zA-Z\\d-]*!)?[\\w\\-%#;/?:@&=+$.~*'()]+)?/\n    // https://yaml.org/spec/1.2/spec.html#c-ns-properties(n,c)\n    var properties =\n      '(?:' +\n      tag.source +\n      '(?:[ \\t]+' +\n      anchorOrAlias.source +\n      ')?|' +\n      anchorOrAlias.source +\n      '(?:[ \\t]+' +\n      tag.source +\n      ')?)'\n    // https://yaml.org/spec/1.2/spec.html#ns-plain(n,c)\n    // This is a simplified version that doesn't support \"#\" and multiline keys\n    // All these long scarry character classes are simplified versions of YAML's characters\n    var plainKey =\n      /(?:[^\\s\\x00-\\x08\\x0e-\\x1f!\"#%&'*,\\-:>?@[\\]`{|}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]|[?:-]<PLAIN>)(?:[ \\t]*(?:(?![#:])<PLAIN>|:<PLAIN>))*/.source.replace(\n        /<PLAIN>/g,\n        function () {\n          return /[^\\s\\x00-\\x08\\x0e-\\x1f,[\\]{}\\x7f-\\x84\\x86-\\x9f\\ud800-\\udfff\\ufffe\\uffff]/\n            .source\n        }\n      )\n    var string = /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"|'(?:[^'\\\\\\r\\n]|\\\\.)*'/.source\n\n    /**\n     *\n     * @param {string} value\n     * @param {string} [flags]\n     * @returns {RegExp}\n     */\n    function createValuePattern(value, flags) {\n      flags = (flags || '').replace(/m/g, '') + 'm' // add m flag\n      var pattern =\n        /([:\\-,[{]\\s*(?:\\s<<prop>>[ \\t]+)?)(?:<<value>>)(?=[ \\t]*(?:$|,|\\]|\\}|(?:[\\r\\n]\\s*)?#))/.source\n          .replace(/<<prop>>/g, function () {\n            return properties\n          })\n          .replace(/<<value>>/g, function () {\n            return value\n          })\n      return RegExp(pattern, flags)\n    }\n    Prism.languages.yaml = {\n      scalar: {\n        pattern: RegExp(\n          /([\\-:]\\s*(?:\\s<<prop>>[ \\t]+)?[|>])[ \\t]*(?:((?:\\r?\\n|\\r)[ \\t]+)\\S[^\\r\\n]*(?:\\2[^\\r\\n]+)*)/.source.replace(\n            /<<prop>>/g,\n            function () {\n              return properties\n            }\n          )\n        ),\n        lookbehind: true,\n        alias: 'string'\n      },\n      comment: /#.*/,\n      key: {\n        pattern: RegExp(\n          /((?:^|[:\\-,[{\\r\\n?])[ \\t]*(?:<<prop>>[ \\t]+)?)<<key>>(?=\\s*:\\s)/.source\n            .replace(/<<prop>>/g, function () {\n              return properties\n            })\n            .replace(/<<key>>/g, function () {\n              return '(?:' + plainKey + '|' + string + ')'\n            })\n        ),\n        lookbehind: true,\n        greedy: true,\n        alias: 'atrule'\n      },\n      directive: {\n        pattern: /(^[ \\t]*)%.+/m,\n        lookbehind: true,\n        alias: 'important'\n      },\n      datetime: {\n        pattern: createValuePattern(\n          /\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ \\t]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?(?:[ \\t]*(?:Z|[-+]\\d\\d?(?::\\d{2})?))?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?/\n            .source\n        ),\n        lookbehind: true,\n        alias: 'number'\n      },\n      boolean: {\n        pattern: createValuePattern(/false|true/.source, 'i'),\n        lookbehind: true,\n        alias: 'important'\n      },\n      null: {\n        pattern: createValuePattern(/null|~/.source, 'i'),\n        lookbehind: true,\n        alias: 'important'\n      },\n      string: {\n        pattern: createValuePattern(string),\n        lookbehind: true,\n        greedy: true\n      },\n      number: {\n        pattern: createValuePattern(\n          /[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)/\n            .source,\n          'i'\n        ),\n        lookbehind: true\n      },\n      tag: tag,\n      important: anchorOrAlias,\n      punctuation: /---|[:[\\]{}\\-,|>?]|\\.\\.\\./\n    }\n    Prism.languages.yml = Prism.languages.yaml\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorMarkup from './markup.js'\nmarkdown.displayName = 'markdown'\nmarkdown.aliases = ['md']\n\n/** @param {Refractor} Prism */\nexport default function markdown(Prism) {\n  Prism.register(refractorMarkup)\n  ;(function (Prism) {\n    // Allow only one line break\n    var inner = /(?:\\\\.|[^\\\\\\n\\r]|(?:\\n|\\r\\n?)(?![\\r\\n]))/.source\n\n    /**\n     * This function is intended for the creation of the bold or italic pattern.\n     *\n     * This also adds a lookbehind group to the given pattern to ensure that the pattern is not backslash-escaped.\n     *\n     * _Note:_ Keep in mind that this adds a capturing group.\n     *\n     * @param {string} pattern\n     * @returns {RegExp}\n     */\n    function createInline(pattern) {\n      pattern = pattern.replace(/<inner>/g, function () {\n        return inner\n      })\n      return RegExp(/((?:^|[^\\\\])(?:\\\\{2})*)/.source + '(?:' + pattern + ')')\n    }\n    var tableCell = /(?:\\\\.|``(?:[^`\\r\\n]|`(?!`))+``|`[^`\\r\\n]+`|[^\\\\|\\r\\n`])+/\n      .source\n    var tableRow =\n      /\\|?__(?:\\|__)+\\|?(?:(?:\\n|\\r\\n?)|(?![\\s\\S]))/.source.replace(\n        /__/g,\n        function () {\n          return tableCell\n        }\n      )\n    var tableLine =\n      /\\|?[ \\t]*:?-{3,}:?[ \\t]*(?:\\|[ \\t]*:?-{3,}:?[ \\t]*)+\\|?(?:\\n|\\r\\n?)/\n        .source\n    Prism.languages.markdown = Prism.languages.extend('markup', {})\n    Prism.languages.insertBefore('markdown', 'prolog', {\n      'front-matter-block': {\n        pattern: /(^(?:\\s*[\\r\\n])?)---(?!.)[\\s\\S]*?[\\r\\n]---(?!.)/,\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          punctuation: /^---|---$/,\n          'front-matter': {\n            pattern: /\\S+(?:\\s+\\S+)*/,\n            alias: ['yaml', 'language-yaml'],\n            inside: Prism.languages.yaml\n          }\n        }\n      },\n      blockquote: {\n        // > ...\n        pattern: /^>(?:[\\t ]*>)*/m,\n        alias: 'punctuation'\n      },\n      table: {\n        pattern: RegExp(\n          '^' + tableRow + tableLine + '(?:' + tableRow + ')*',\n          'm'\n        ),\n        inside: {\n          'table-data-rows': {\n            pattern: RegExp(\n              '^(' + tableRow + tableLine + ')(?:' + tableRow + ')*$'\n            ),\n            lookbehind: true,\n            inside: {\n              'table-data': {\n                pattern: RegExp(tableCell),\n                inside: Prism.languages.markdown\n              },\n              punctuation: /\\|/\n            }\n          },\n          'table-line': {\n            pattern: RegExp('^(' + tableRow + ')' + tableLine + '$'),\n            lookbehind: true,\n            inside: {\n              punctuation: /\\||:?-{3,}:?/\n            }\n          },\n          'table-header-row': {\n            pattern: RegExp('^' + tableRow + '$'),\n            inside: {\n              'table-header': {\n                pattern: RegExp(tableCell),\n                alias: 'important',\n                inside: Prism.languages.markdown\n              },\n              punctuation: /\\|/\n            }\n          }\n        }\n      },\n      code: [\n        {\n          // Prefixed by 4 spaces or 1 tab and preceded by an empty line\n          pattern:\n            /((?:^|\\n)[ \\t]*\\n|(?:^|\\r\\n?)[ \\t]*\\r\\n?)(?: {4}|\\t).+(?:(?:\\n|\\r\\n?)(?: {4}|\\t).+)*/,\n          lookbehind: true,\n          alias: 'keyword'\n        },\n        {\n          // ```optional language\n          // code block\n          // ```\n          pattern: /^```[\\s\\S]*?^```$/m,\n          greedy: true,\n          inside: {\n            'code-block': {\n              pattern: /^(```.*(?:\\n|\\r\\n?))[\\s\\S]+?(?=(?:\\n|\\r\\n?)^```$)/m,\n              lookbehind: true\n            },\n            'code-language': {\n              pattern: /^(```).+/,\n              lookbehind: true\n            },\n            punctuation: /```/\n          }\n        }\n      ],\n      title: [\n        {\n          // title 1\n          // =======\n\n          // title 2\n          // -------\n          pattern: /\\S.*(?:\\n|\\r\\n?)(?:==+|--+)(?=[ \\t]*$)/m,\n          alias: 'important',\n          inside: {\n            punctuation: /==+$|--+$/\n          }\n        },\n        {\n          // # title 1\n          // ###### title 6\n          pattern: /(^\\s*)#.+/m,\n          lookbehind: true,\n          alias: 'important',\n          inside: {\n            punctuation: /^#+|#+$/\n          }\n        }\n      ],\n      hr: {\n        // ***\n        // ---\n        // * * *\n        // -----------\n        pattern: /(^\\s*)([*-])(?:[\\t ]*\\2){2,}(?=\\s*$)/m,\n        lookbehind: true,\n        alias: 'punctuation'\n      },\n      list: {\n        // * item\n        // + item\n        // - item\n        // 1. item\n        pattern: /(^\\s*)(?:[*+-]|\\d+\\.)(?=[\\t ].)/m,\n        lookbehind: true,\n        alias: 'punctuation'\n      },\n      'url-reference': {\n        // [id]: http://example.com \"Optional title\"\n        // [id]: http://example.com 'Optional title'\n        // [id]: http://example.com (Optional title)\n        // [id]: <http://example.com> \"Optional title\"\n        pattern:\n          /!?\\[[^\\]]+\\]:[\\t ]+(?:\\S+|<(?:\\\\.|[^>\\\\])+>)(?:[\\t ]+(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\)))?/,\n        inside: {\n          variable: {\n            pattern: /^(!?\\[)[^\\]]+/,\n            lookbehind: true\n          },\n          string:\n            /(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\))$/,\n          punctuation: /^[\\[\\]!:]|[<>]/\n        },\n        alias: 'url'\n      },\n      bold: {\n        // **strong**\n        // __strong__\n\n        // allow one nested instance of italic text using the same delimiter\n        pattern: createInline(\n          /\\b__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__\\b|\\*\\*(?:(?!\\*)<inner>|\\*(?:(?!\\*)<inner>)+\\*)+\\*\\*/\n            .source\n        ),\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          content: {\n            pattern: /(^..)[\\s\\S]+(?=..$)/,\n            lookbehind: true,\n            inside: {} // see below\n          },\n          punctuation: /\\*\\*|__/\n        }\n      },\n      italic: {\n        // *em*\n        // _em_\n\n        // allow one nested instance of bold text using the same delimiter\n        pattern: createInline(\n          /\\b_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_\\b|\\*(?:(?!\\*)<inner>|\\*\\*(?:(?!\\*)<inner>)+\\*\\*)+\\*/\n            .source\n        ),\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          content: {\n            pattern: /(^.)[\\s\\S]+(?=.$)/,\n            lookbehind: true,\n            inside: {} // see below\n          },\n          punctuation: /[*_]/\n        }\n      },\n      strike: {\n        // ~~strike through~~\n        // ~strike~\n        // eslint-disable-next-line regexp/strict\n        pattern: createInline(/(~~?)(?:(?!~)<inner>)+\\2/.source),\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          content: {\n            pattern: /(^~~?)[\\s\\S]+(?=\\1$)/,\n            lookbehind: true,\n            inside: {} // see below\n          },\n          punctuation: /~~?/\n        }\n      },\n      'code-snippet': {\n        // `code`\n        // ``code``\n        pattern:\n          /(^|[^\\\\`])(?:``[^`\\r\\n]+(?:`[^`\\r\\n]+)*``(?!`)|`[^`\\r\\n]+`(?!`))/,\n        lookbehind: true,\n        greedy: true,\n        alias: ['code', 'keyword']\n      },\n      url: {\n        // [example](http://example.com \"Optional title\")\n        // [example][id]\n        // [example] [id]\n        pattern: createInline(\n          /!?\\[(?:(?!\\])<inner>)+\\](?:\\([^\\s)]+(?:[\\t ]+\"(?:\\\\.|[^\"\\\\])*\")?\\)|[ \\t]?\\[(?:(?!\\])<inner>)+\\])/\n            .source\n        ),\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          operator: /^!/,\n          content: {\n            pattern: /(^\\[)[^\\]]+(?=\\])/,\n            lookbehind: true,\n            inside: {} // see below\n          },\n          variable: {\n            pattern: /(^\\][ \\t]?\\[)[^\\]]+(?=\\]$)/,\n            lookbehind: true\n          },\n          url: {\n            pattern: /(^\\]\\()[^\\s)]+/,\n            lookbehind: true\n          },\n          string: {\n            pattern: /(^[ \\t]+)\"(?:\\\\.|[^\"\\\\])*\"(?=\\)$)/,\n            lookbehind: true\n          }\n        }\n      }\n    })\n    ;['url', 'bold', 'italic', 'strike'].forEach(function (token) {\n      ;['url', 'bold', 'italic', 'strike', 'code-snippet'].forEach(\n        function (inside) {\n          if (token !== inside) {\n            Prism.languages.markdown[token].inside.content.inside[inside] =\n              Prism.languages.markdown[inside]\n          }\n        }\n      )\n    })\n    Prism.hooks.add('after-tokenize', function (env) {\n      if (env.language !== 'markdown' && env.language !== 'md') {\n        return\n      }\n      function walkTokens(tokens) {\n        if (!tokens || typeof tokens === 'string') {\n          return\n        }\n        for (var i = 0, l = tokens.length; i < l; i++) {\n          var token = tokens[i]\n          if (token.type !== 'code') {\n            walkTokens(token.content)\n            continue\n          }\n\n          /*\n           * Add the correct `language-xxxx` class to this code block. Keep in mind that the `code-language` token\n           * is optional. But the grammar is defined so that there is only one case we have to handle:\n           *\n           * token.content = [\n           *     <span class=\"punctuation\">```</span>,\n           *     <span class=\"code-language\">xxxx</span>,\n           *     '\\n', // exactly one new lines (\\r or \\n or \\r\\n)\n           *     <span class=\"code-block\">...</span>,\n           *     '\\n', // exactly one new lines again\n           *     <span class=\"punctuation\">```</span>\n           * ];\n           */\n\n          var codeLang = token.content[1]\n          var codeBlock = token.content[3]\n          if (\n            codeLang &&\n            codeBlock &&\n            codeLang.type === 'code-language' &&\n            codeBlock.type === 'code-block' &&\n            typeof codeLang.content === 'string'\n          ) {\n            // this might be a language that Prism does not support\n\n            // do some replacements to support C++, C#, and F#\n            var lang = codeLang.content\n              .replace(/\\b#/g, 'sharp')\n              .replace(/\\b\\+\\+/g, 'pp')\n            // only use the first word\n            lang = (/[a-z][\\w-]*/i.exec(lang) || [''])[0].toLowerCase()\n            var alias = 'language-' + lang\n\n            // add alias\n            if (!codeBlock.alias) {\n              codeBlock.alias = [alias]\n            } else if (typeof codeBlock.alias === 'string') {\n              codeBlock.alias = [codeBlock.alias, alias]\n            } else {\n              codeBlock.alias.push(alias)\n            }\n          }\n        }\n      }\n      walkTokens(env.tokens)\n    })\n    Prism.hooks.add('wrap', function (env) {\n      if (env.type !== 'code-block') {\n        return\n      }\n      var codeLang = ''\n      for (var i = 0, l = env.classes.length; i < l; i++) {\n        var cls = env.classes[i]\n        var match = /language-(.+)/.exec(cls)\n        if (match) {\n          codeLang = match[1]\n          break\n        }\n      }\n      var grammar = Prism.languages[codeLang]\n      if (!grammar) {\n        if (codeLang && codeLang !== 'none' && Prism.plugins.autoloader) {\n          var id =\n            'md-' +\n            new Date().valueOf() +\n            '-' +\n            Math.floor(Math.random() * 1e16)\n          env.attributes['id'] = id\n          Prism.plugins.autoloader.loadLanguages(codeLang, function () {\n            var ele = document.getElementById(id)\n            if (ele) {\n              ele.innerHTML = Prism.highlight(\n                ele.textContent,\n                Prism.languages[codeLang],\n                codeLang\n              )\n            }\n          })\n        }\n      } else {\n        env.content = Prism.highlight(env.content.value, grammar, codeLang)\n      }\n    })\n    var tagPattern = RegExp(Prism.languages.markup.tag.pattern.source, 'gi')\n\n    /**\n     * A list of known entity names.\n     *\n     * This will always be incomplete to save space. The current list is the one used by lowdash's unescape function.\n     *\n     * @see {@link https://github.com/lodash/lodash/blob/2da024c3b4f9947a48517639de7560457cd4ec6c/unescape.js#L2}\n     */\n    var KNOWN_ENTITY_NAMES = {\n      amp: '&',\n      lt: '<',\n      gt: '>',\n      quot: '\"'\n    }\n\n    // IE 11 doesn't support `String.fromCodePoint`\n    var fromCodePoint = String.fromCodePoint || String.fromCharCode\n\n    /**\n     * Returns the text content of a given HTML source code string.\n     *\n     * @param {string} html\n     * @returns {string}\n     */\n    function textContent(html) {\n      // remove all tags\n      var text = html.replace(tagPattern, '')\n\n      // decode known entities\n      text = text.replace(/&(\\w{1,8}|#x?[\\da-f]{1,8});/gi, function (m, code) {\n        code = code.toLowerCase()\n        if (code[0] === '#') {\n          var value\n          if (code[1] === 'x') {\n            value = parseInt(code.slice(2), 16)\n          } else {\n            value = Number(code.slice(1))\n          }\n          return fromCodePoint(value)\n        } else {\n          var known = KNOWN_ENTITY_NAMES[code]\n          if (known) {\n            return known\n          }\n\n          // unable to decode\n          return m\n        }\n      })\n      return text\n    }\n    Prism.languages.md = Prism.languages.markdown\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorC from './c.js'\nobjectivec.displayName = 'objectivec'\nobjectivec.aliases = ['objc']\n\n/** @param {Refractor} Prism */\nexport default function objectivec(Prism) {\n  Prism.register(refractorC)\n  Prism.languages.objectivec = Prism.languages.extend('c', {\n    string: {\n      pattern: /@?\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n      greedy: true\n    },\n    keyword:\n      /\\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\\b/,\n    operator: /-[->]?|\\+\\+?|!=?|<<?=?|>>?=?|==?|&&?|\\|\\|?|[~^%?*\\/@]/\n  })\n  delete Prism.languages.objectivec['class-name']\n  Prism.languages.objc = Prism.languages.objectivec\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nperl.displayName = 'perl'\nperl.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function perl(Prism) {\n  ;(function (Prism) {\n    var brackets =\n      /(?:\\((?:[^()\\\\]|\\\\[\\s\\S])*\\)|\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\}|\\[(?:[^[\\]\\\\]|\\\\[\\s\\S])*\\]|<(?:[^<>\\\\]|\\\\[\\s\\S])*>)/\n        .source\n    Prism.languages.perl = {\n      comment: [\n        {\n          // POD\n          pattern: /(^\\s*)=\\w[\\s\\S]*?=cut.*/m,\n          lookbehind: true,\n          greedy: true\n        },\n        {\n          pattern: /(^|[^\\\\$])#.*/,\n          lookbehind: true,\n          greedy: true\n        }\n      ],\n      // TODO Could be nice to handle Heredoc too.\n      string: [\n        {\n          pattern: RegExp(\n            /\\b(?:q|qq|qw|qx)(?![a-zA-Z0-9])\\s*/.source +\n              '(?:' +\n              [\n                // q/.../\n                /([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/.source,\n                // q a...a\n                // eslint-disable-next-line regexp/strict\n                /([a-zA-Z0-9])(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2/.source,\n                // q(...)\n                // q{...}\n                // q[...]\n                // q<...>\n                brackets\n              ].join('|') +\n              ')'\n          ),\n          greedy: true\n        },\n        // \"...\", `...`\n        {\n          pattern: /(\"|`)(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/,\n          greedy: true\n        },\n        // '...'\n        // FIXME Multi-line single-quoted strings are not supported as they would break variables containing '\n        {\n          pattern: /'(?:[^'\\\\\\r\\n]|\\\\.)*'/,\n          greedy: true\n        }\n      ],\n      regex: [\n        {\n          pattern: RegExp(\n            /\\b(?:m|qr)(?![a-zA-Z0-9])\\s*/.source +\n              '(?:' +\n              [\n                // m/.../\n                /([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/.source,\n                // m a...a\n                // eslint-disable-next-line regexp/strict\n                /([a-zA-Z0-9])(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2/.source,\n                // m(...)\n                // m{...}\n                // m[...]\n                // m<...>\n                brackets\n              ].join('|') +\n              ')' +\n              /[msixpodualngc]*/.source\n          ),\n          greedy: true\n        },\n        // The lookbehinds prevent -s from breaking\n        {\n          pattern: RegExp(\n            /(^|[^-])\\b(?:s|tr|y)(?![a-zA-Z0-9])\\s*/.source +\n              '(?:' +\n              [\n                // s/.../.../\n                // eslint-disable-next-line regexp/strict\n                /([^a-zA-Z0-9\\s{(\\[<])(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2/\n                  .source,\n                // s a...a...a\n                // eslint-disable-next-line regexp/strict\n                /([a-zA-Z0-9])(?:(?!\\3)[^\\\\]|\\\\[\\s\\S])*\\3(?:(?!\\3)[^\\\\]|\\\\[\\s\\S])*\\3/\n                  .source,\n                // s(...)(...)\n                // s{...}{...}\n                // s[...][...]\n                // s<...><...>\n                // s(...)[...]\n                brackets + /\\s*/.source + brackets\n              ].join('|') +\n              ')' +\n              /[msixpodualngcer]*/.source\n          ),\n          lookbehind: true,\n          greedy: true\n        },\n        // /.../\n        // The look-ahead tries to prevent two divisions on\n        // the same line from being highlighted as regex.\n        // This does not support multi-line regex.\n        {\n          pattern:\n            /\\/(?:[^\\/\\\\\\r\\n]|\\\\.)*\\/[msixpodualngc]*(?=\\s*(?:$|[\\r\\n,.;})&|\\-+*~<>!?^]|(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|x|xor)\\b))/,\n          greedy: true\n        }\n      ],\n      // FIXME Not sure about the handling of ::, ', and #\n      variable: [\n        // ${^POSTMATCH}\n        /[&*$@%]\\{\\^[A-Z]+\\}/,\n        // $^V\n        /[&*$@%]\\^[A-Z_]/,\n        // ${...}\n        /[&*$@%]#?(?=\\{)/,\n        // $foo\n        /[&*$@%]#?(?:(?:::)*'?(?!\\d)[\\w$]+(?![\\w$]))+(?:::)*/,\n        // $1\n        /[&*$@%]\\d+/,\n        // $_, @_, %!\n        // The negative lookahead prevents from breaking the %= operator\n        /(?!%=)[$@%][!\"#$%&'()*+,\\-.\\/:;<=>?@[\\\\\\]^_`{|}~]/\n      ],\n      filehandle: {\n        // <>, <FOO>, _\n        pattern: /<(?![<=])\\S*?>|\\b_\\b/,\n        alias: 'symbol'\n      },\n      'v-string': {\n        // v1.2, 1.2.3\n        pattern: /v\\d+(?:\\.\\d+)*|\\d+(?:\\.\\d+){2,}/,\n        alias: 'string'\n      },\n      function: {\n        pattern: /(\\bsub[ \\t]+)\\w+/,\n        lookbehind: true\n      },\n      keyword:\n        /\\b(?:any|break|continue|default|delete|die|do|else|elsif|eval|for|foreach|given|goto|if|last|local|my|next|our|package|print|redo|require|return|say|state|sub|switch|undef|unless|until|use|when|while)\\b/,\n      number:\n        /\\b(?:0x[\\dA-Fa-f](?:_?[\\dA-Fa-f])*|0b[01](?:_?[01])*|(?:(?:\\d(?:_?\\d)*)?\\.)?\\d(?:_?\\d)*(?:[Ee][+-]?\\d+)?)\\b/,\n      operator:\n        /-[rwxoRWXOezsfdlpSbctugkTBMAC]\\b|\\+[+=]?|-[-=>]?|\\*\\*?=?|\\/\\/?=?|=[=~>]?|~[~=]?|\\|\\|?=?|&&?=?|<(?:=>?|<=?)?|>>?=?|![~=]?|[%^]=?|\\.(?:=|\\.\\.?)?|[\\\\?]|\\bx(?:=|\\b)|\\b(?:and|cmp|eq|ge|gt|le|lt|ne|not|or|xor)\\b/,\n      punctuation: /[{}[\\];(),:]/\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorMarkup from './markup.js'\nmarkupTemplating.displayName = 'markup-templating'\nmarkupTemplating.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function markupTemplating(Prism) {\n  Prism.register(refractorMarkup)\n  ;(function (Prism) {\n    /**\n     * Returns the placeholder for the given language id and index.\n     *\n     * @param {string} language\n     * @param {string|number} index\n     * @returns {string}\n     */\n    function getPlaceholder(language, index) {\n      return '___' + language.toUpperCase() + index + '___'\n    }\n    Object.defineProperties((Prism.languages['markup-templating'] = {}), {\n      buildPlaceholders: {\n        /**\n         * Tokenize all inline templating expressions matching `placeholderPattern`.\n         *\n         * If `replaceFilter` is provided, only matches of `placeholderPattern` for which `replaceFilter` returns\n         * `true` will be replaced.\n         *\n         * @param {object} env The environment of the `before-tokenize` hook.\n         * @param {string} language The language id.\n         * @param {RegExp} placeholderPattern The matches of this pattern will be replaced by placeholders.\n         * @param {(match: string) => boolean} [replaceFilter]\n         */\n        value: function (env, language, placeholderPattern, replaceFilter) {\n          if (env.language !== language) {\n            return\n          }\n          var tokenStack = (env.tokenStack = [])\n          env.code = env.code.replace(placeholderPattern, function (match) {\n            if (typeof replaceFilter === 'function' && !replaceFilter(match)) {\n              return match\n            }\n            var i = tokenStack.length\n            var placeholder\n\n            // Check for existing strings\n            while (\n              env.code.indexOf((placeholder = getPlaceholder(language, i))) !==\n              -1\n            ) {\n              ++i\n            }\n\n            // Create a sparse array\n            tokenStack[i] = match\n            return placeholder\n          })\n\n          // Switch the grammar to markup\n          env.grammar = Prism.languages.markup\n        }\n      },\n      tokenizePlaceholders: {\n        /**\n         * Replace placeholders with proper tokens after tokenizing.\n         *\n         * @param {object} env The environment of the `after-tokenize` hook.\n         * @param {string} language The language id.\n         */\n        value: function (env, language) {\n          if (env.language !== language || !env.tokenStack) {\n            return\n          }\n\n          // Switch the grammar back\n          env.grammar = Prism.languages[language]\n          var j = 0\n          var keys = Object.keys(env.tokenStack)\n          function walkTokens(tokens) {\n            for (var i = 0; i < tokens.length; i++) {\n              // all placeholders are replaced already\n              if (j >= keys.length) {\n                break\n              }\n              var token = tokens[i]\n              if (\n                typeof token === 'string' ||\n                (token.content && typeof token.content === 'string')\n              ) {\n                var k = keys[j]\n                var t = env.tokenStack[k]\n                var s = typeof token === 'string' ? token : token.content\n                var placeholder = getPlaceholder(language, k)\n                var index = s.indexOf(placeholder)\n                if (index > -1) {\n                  ++j\n                  var before = s.substring(0, index)\n                  var middle = new Prism.Token(\n                    language,\n                    Prism.tokenize(t, env.grammar),\n                    'language-' + language,\n                    t\n                  )\n                  var after = s.substring(index + placeholder.length)\n                  var replacement = []\n                  if (before) {\n                    replacement.push.apply(replacement, walkTokens([before]))\n                  }\n                  replacement.push(middle)\n                  if (after) {\n                    replacement.push.apply(replacement, walkTokens([after]))\n                  }\n                  if (typeof token === 'string') {\n                    tokens.splice.apply(tokens, [i, 1].concat(replacement))\n                  } else {\n                    token.content = replacement\n                  }\n                }\n              } else if (\n                token.content /* && typeof token.content !== 'string' */\n              ) {\n                walkTokens(token.content)\n              }\n            }\n            return tokens\n          }\n          walkTokens(env.tokens)\n        }\n      }\n    })\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorMarkupTemplating from './markup-templating.js'\nphp.displayName = 'php'\nphp.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function php(Prism) {\n  Prism.register(refractorMarkupTemplating)\n  /**\n   * Original by Aaron Harun: http://aahacreative.com/2012/07/31/php-syntax-highlighting-prism/\n   * Modified by Miles Johnson: http://milesj.me\n   * Rewritten by Tom Pavelec\n   *\n   * Supports PHP 5.3 - 8.0\n   */\n  ;(function (Prism) {\n    var comment = /\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*|#(?!\\[).*/\n    var constant = [\n      {\n        pattern: /\\b(?:false|true)\\b/i,\n        alias: 'boolean'\n      },\n      {\n        pattern: /(::\\s*)\\b[a-z_]\\w*\\b(?!\\s*\\()/i,\n        greedy: true,\n        lookbehind: true\n      },\n      {\n        pattern: /(\\b(?:case|const)\\s+)\\b[a-z_]\\w*(?=\\s*[;=])/i,\n        greedy: true,\n        lookbehind: true\n      },\n      /\\b(?:null)\\b/i,\n      /\\b[A-Z_][A-Z0-9_]*\\b(?!\\s*\\()/\n    ]\n    var number =\n      /\\b0b[01]+(?:_[01]+)*\\b|\\b0o[0-7]+(?:_[0-7]+)*\\b|\\b0x[\\da-f]+(?:_[\\da-f]+)*\\b|(?:\\b\\d+(?:_\\d+)*\\.?(?:\\d+(?:_\\d+)*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i\n    var operator =\n      /<?=>|\\?\\?=?|\\.{3}|\\??->|[!=]=?=?|::|\\*\\*=?|--|\\+\\+|&&|\\|\\||<<|>>|[?~]|[/^|%*&<>.+-]=?/\n    var punctuation = /[{}\\[\\](),:;]/\n    Prism.languages.php = {\n      delimiter: {\n        pattern: /\\?>$|^<\\?(?:php(?=\\s)|=)?/i,\n        alias: 'important'\n      },\n      comment: comment,\n      variable: /\\$+(?:\\w+\\b|(?=\\{))/,\n      package: {\n        pattern:\n          /(namespace\\s+|use\\s+(?:function\\s+)?)(?:\\\\?\\b[a-z_]\\w*)+\\b(?!\\\\)/i,\n        lookbehind: true,\n        inside: {\n          punctuation: /\\\\/\n        }\n      },\n      'class-name-definition': {\n        pattern: /(\\b(?:class|enum|interface|trait)\\s+)\\b[a-z_]\\w*(?!\\\\)\\b/i,\n        lookbehind: true,\n        alias: 'class-name'\n      },\n      'function-definition': {\n        pattern: /(\\bfunction\\s+)[a-z_]\\w*(?=\\s*\\()/i,\n        lookbehind: true,\n        alias: 'function'\n      },\n      keyword: [\n        {\n          pattern:\n            /(\\(\\s*)\\b(?:array|bool|boolean|float|int|integer|object|string)\\b(?=\\s*\\))/i,\n          alias: 'type-casting',\n          greedy: true,\n          lookbehind: true\n        },\n        {\n          pattern:\n            /([(,?]\\s*)\\b(?:array(?!\\s*\\()|bool|callable|(?:false|null)(?=\\s*\\|)|float|int|iterable|mixed|object|self|static|string)\\b(?=\\s*\\$)/i,\n          alias: 'type-hint',\n          greedy: true,\n          lookbehind: true\n        },\n        {\n          pattern:\n            /(\\)\\s*:\\s*(?:\\?\\s*)?)\\b(?:array(?!\\s*\\()|bool|callable|(?:false|null)(?=\\s*\\|)|float|int|iterable|mixed|never|object|self|static|string|void)\\b/i,\n          alias: 'return-type',\n          greedy: true,\n          lookbehind: true\n        },\n        {\n          pattern:\n            /\\b(?:array(?!\\s*\\()|bool|float|int|iterable|mixed|object|string|void)\\b/i,\n          alias: 'type-declaration',\n          greedy: true\n        },\n        {\n          pattern: /(\\|\\s*)(?:false|null)\\b|\\b(?:false|null)(?=\\s*\\|)/i,\n          alias: 'type-declaration',\n          greedy: true,\n          lookbehind: true\n        },\n        {\n          pattern: /\\b(?:parent|self|static)(?=\\s*::)/i,\n          alias: 'static-context',\n          greedy: true\n        },\n        {\n          // yield from\n          pattern: /(\\byield\\s+)from\\b/i,\n          lookbehind: true\n        },\n        // `class` is always a keyword unlike other keywords\n        /\\bclass\\b/i,\n        {\n          // https://www.php.net/manual/en/reserved.keywords.php\n          //\n          // keywords cannot be preceded by \"->\"\n          // the complex lookbehind means `(?<!(?:->|::)\\s*)`\n          pattern:\n            /((?:^|[^\\s>:]|(?:^|[^-])>|(?:^|[^:]):)\\s*)\\b(?:abstract|and|array|as|break|callable|case|catch|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|enum|eval|exit|extends|final|finally|fn|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|match|namespace|never|new|or|parent|print|private|protected|public|readonly|require|require_once|return|self|static|switch|throw|trait|try|unset|use|var|while|xor|yield|__halt_compiler)\\b/i,\n          lookbehind: true\n        }\n      ],\n      'argument-name': {\n        pattern: /([(,]\\s*)\\b[a-z_]\\w*(?=\\s*:(?!:))/i,\n        lookbehind: true\n      },\n      'class-name': [\n        {\n          pattern:\n            /(\\b(?:extends|implements|instanceof|new(?!\\s+self|\\s+static))\\s+|\\bcatch\\s*\\()\\b[a-z_]\\w*(?!\\\\)\\b/i,\n          greedy: true,\n          lookbehind: true\n        },\n        {\n          pattern: /(\\|\\s*)\\b[a-z_]\\w*(?!\\\\)\\b/i,\n          greedy: true,\n          lookbehind: true\n        },\n        {\n          pattern: /\\b[a-z_]\\w*(?!\\\\)\\b(?=\\s*\\|)/i,\n          greedy: true\n        },\n        {\n          pattern: /(\\|\\s*)(?:\\\\?\\b[a-z_]\\w*)+\\b/i,\n          alias: 'class-name-fully-qualified',\n          greedy: true,\n          lookbehind: true,\n          inside: {\n            punctuation: /\\\\/\n          }\n        },\n        {\n          pattern: /(?:\\\\?\\b[a-z_]\\w*)+\\b(?=\\s*\\|)/i,\n          alias: 'class-name-fully-qualified',\n          greedy: true,\n          inside: {\n            punctuation: /\\\\/\n          }\n        },\n        {\n          pattern:\n            /(\\b(?:extends|implements|instanceof|new(?!\\s+self\\b|\\s+static\\b))\\s+|\\bcatch\\s*\\()(?:\\\\?\\b[a-z_]\\w*)+\\b(?!\\\\)/i,\n          alias: 'class-name-fully-qualified',\n          greedy: true,\n          lookbehind: true,\n          inside: {\n            punctuation: /\\\\/\n          }\n        },\n        {\n          pattern: /\\b[a-z_]\\w*(?=\\s*\\$)/i,\n          alias: 'type-declaration',\n          greedy: true\n        },\n        {\n          pattern: /(?:\\\\?\\b[a-z_]\\w*)+(?=\\s*\\$)/i,\n          alias: ['class-name-fully-qualified', 'type-declaration'],\n          greedy: true,\n          inside: {\n            punctuation: /\\\\/\n          }\n        },\n        {\n          pattern: /\\b[a-z_]\\w*(?=\\s*::)/i,\n          alias: 'static-context',\n          greedy: true\n        },\n        {\n          pattern: /(?:\\\\?\\b[a-z_]\\w*)+(?=\\s*::)/i,\n          alias: ['class-name-fully-qualified', 'static-context'],\n          greedy: true,\n          inside: {\n            punctuation: /\\\\/\n          }\n        },\n        {\n          pattern: /([(,?]\\s*)[a-z_]\\w*(?=\\s*\\$)/i,\n          alias: 'type-hint',\n          greedy: true,\n          lookbehind: true\n        },\n        {\n          pattern: /([(,?]\\s*)(?:\\\\?\\b[a-z_]\\w*)+(?=\\s*\\$)/i,\n          alias: ['class-name-fully-qualified', 'type-hint'],\n          greedy: true,\n          lookbehind: true,\n          inside: {\n            punctuation: /\\\\/\n          }\n        },\n        {\n          pattern: /(\\)\\s*:\\s*(?:\\?\\s*)?)\\b[a-z_]\\w*(?!\\\\)\\b/i,\n          alias: 'return-type',\n          greedy: true,\n          lookbehind: true\n        },\n        {\n          pattern: /(\\)\\s*:\\s*(?:\\?\\s*)?)(?:\\\\?\\b[a-z_]\\w*)+\\b(?!\\\\)/i,\n          alias: ['class-name-fully-qualified', 'return-type'],\n          greedy: true,\n          lookbehind: true,\n          inside: {\n            punctuation: /\\\\/\n          }\n        }\n      ],\n      constant: constant,\n      function: {\n        pattern: /(^|[^\\\\\\w])\\\\?[a-z_](?:[\\w\\\\]*\\w)?(?=\\s*\\()/i,\n        lookbehind: true,\n        inside: {\n          punctuation: /\\\\/\n        }\n      },\n      property: {\n        pattern: /(->\\s*)\\w+/,\n        lookbehind: true\n      },\n      number: number,\n      operator: operator,\n      punctuation: punctuation\n    }\n    var string_interpolation = {\n      pattern:\n        /\\{\\$(?:\\{(?:\\{[^{}]+\\}|[^{}]+)\\}|[^{}])+\\}|(^|[^\\\\{])\\$+(?:\\w+(?:\\[[^\\r\\n\\[\\]]+\\]|->\\w+)?)/,\n      lookbehind: true,\n      inside: Prism.languages.php\n    }\n    var string = [\n      {\n        pattern: /<<<'([^']+)'[\\r\\n](?:.*[\\r\\n])*?\\1;/,\n        alias: 'nowdoc-string',\n        greedy: true,\n        inside: {\n          delimiter: {\n            pattern: /^<<<'[^']+'|[a-z_]\\w*;$/i,\n            alias: 'symbol',\n            inside: {\n              punctuation: /^<<<'?|[';]$/\n            }\n          }\n        }\n      },\n      {\n        pattern:\n          /<<<(?:\"([^\"]+)\"[\\r\\n](?:.*[\\r\\n])*?\\1;|([a-z_]\\w*)[\\r\\n](?:.*[\\r\\n])*?\\2;)/i,\n        alias: 'heredoc-string',\n        greedy: true,\n        inside: {\n          delimiter: {\n            pattern: /^<<<(?:\"[^\"]+\"|[a-z_]\\w*)|[a-z_]\\w*;$/i,\n            alias: 'symbol',\n            inside: {\n              punctuation: /^<<<\"?|[\";]$/\n            }\n          },\n          interpolation: string_interpolation\n        }\n      },\n      {\n        pattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n        alias: 'backtick-quoted-string',\n        greedy: true\n      },\n      {\n        pattern: /'(?:\\\\[\\s\\S]|[^\\\\'])*'/,\n        alias: 'single-quoted-string',\n        greedy: true\n      },\n      {\n        pattern: /\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"/,\n        alias: 'double-quoted-string',\n        greedy: true,\n        inside: {\n          interpolation: string_interpolation\n        }\n      }\n    ]\n    Prism.languages.insertBefore('php', 'variable', {\n      string: string,\n      attribute: {\n        pattern:\n          /#\\[(?:[^\"'\\/#]|\\/(?![*/])|\\/\\/.*$|#(?!\\[).*$|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/|\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|'(?:\\\\[\\s\\S]|[^\\\\'])*')+\\](?=\\s*[a-z$#])/im,\n        greedy: true,\n        inside: {\n          'attribute-content': {\n            pattern: /^(#\\[)[\\s\\S]+(?=\\]$)/,\n            lookbehind: true,\n            // inside can appear subset of php\n            inside: {\n              comment: comment,\n              string: string,\n              'attribute-class-name': [\n                {\n                  pattern: /([^:]|^)\\b[a-z_]\\w*(?!\\\\)\\b/i,\n                  alias: 'class-name',\n                  greedy: true,\n                  lookbehind: true\n                },\n                {\n                  pattern: /([^:]|^)(?:\\\\?\\b[a-z_]\\w*)+/i,\n                  alias: ['class-name', 'class-name-fully-qualified'],\n                  greedy: true,\n                  lookbehind: true,\n                  inside: {\n                    punctuation: /\\\\/\n                  }\n                }\n              ],\n              constant: constant,\n              number: number,\n              operator: operator,\n              punctuation: punctuation\n            }\n          },\n          delimiter: {\n            pattern: /^#\\[|\\]$/,\n            alias: 'punctuation'\n          }\n        }\n      }\n    })\n    Prism.hooks.add('before-tokenize', function (env) {\n      if (!/<\\?/.test(env.code)) {\n        return\n      }\n      var phpPattern =\n        /<\\?(?:[^\"'/#]|\\/(?![*/])|(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|(?:\\/\\/|#(?!\\[))(?:[^?\\n\\r]|\\?(?!>))*(?=$|\\?>|[\\r\\n])|#\\[|\\/\\*(?:[^*]|\\*(?!\\/))*(?:\\*\\/|$))*?(?:\\?>|$)/g\n      Prism.languages['markup-templating'].buildPlaceholders(\n        env,\n        'php',\n        phpPattern\n      )\n    })\n    Prism.hooks.add('after-tokenize', function (env) {\n      Prism.languages['markup-templating'].tokenizePlaceholders(env, 'php')\n    })\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\npython.displayName = 'python'\npython.aliases = ['py']\n\n/** @param {Refractor} Prism */\nexport default function python(Prism) {\n  Prism.languages.python = {\n    comment: {\n      pattern: /(^|[^\\\\])#.*/,\n      lookbehind: true,\n      greedy: true\n    },\n    'string-interpolation': {\n      pattern:\n        /(?:f|fr|rf)(?:(\"\"\"|''')[\\s\\S]*?\\1|(\"|')(?:\\\\.|(?!\\2)[^\\\\\\r\\n])*\\2)/i,\n      greedy: true,\n      inside: {\n        interpolation: {\n          // \"{\" <expression> <optional \"!s\", \"!r\", or \"!a\"> <optional \":\" format specifier> \"}\"\n          pattern:\n            /((?:^|[^{])(?:\\{\\{)*)\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}]|\\{(?!\\{)(?:[^{}])+\\})+\\})+\\}/,\n          lookbehind: true,\n          inside: {\n            'format-spec': {\n              pattern: /(:)[^:(){}]+(?=\\}$)/,\n              lookbehind: true\n            },\n            'conversion-option': {\n              pattern: /![sra](?=[:}]$)/,\n              alias: 'punctuation'\n            },\n            rest: null\n          }\n        },\n        string: /[\\s\\S]+/\n      }\n    },\n    'triple-quoted-string': {\n      pattern: /(?:[rub]|br|rb)?(\"\"\"|''')[\\s\\S]*?\\1/i,\n      greedy: true,\n      alias: 'string'\n    },\n    string: {\n      pattern: /(?:[rub]|br|rb)?(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/i,\n      greedy: true\n    },\n    function: {\n      pattern: /((?:^|\\s)def[ \\t]+)[a-zA-Z_]\\w*(?=\\s*\\()/g,\n      lookbehind: true\n    },\n    'class-name': {\n      pattern: /(\\bclass\\s+)\\w+/i,\n      lookbehind: true\n    },\n    decorator: {\n      pattern: /(^[\\t ]*)@\\w+(?:\\.\\w+)*/m,\n      lookbehind: true,\n      alias: ['annotation', 'punctuation'],\n      inside: {\n        punctuation: /\\./\n      }\n    },\n    keyword:\n      /\\b(?:_(?=\\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\\b/,\n    builtin:\n      /\\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\\b/,\n    boolean: /\\b(?:False|None|True)\\b/,\n    number:\n      /\\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\\b|(?:\\b\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\B\\.\\d+(?:_\\d+)*)(?:e[+-]?\\d+(?:_\\d+)*)?j?(?!\\w)/i,\n    operator: /[-+%=]=?|!=|:=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,\n    punctuation: /[{}[\\];(),.:]/\n  }\n  Prism.languages.python['string-interpolation'].inside[\n    'interpolation'\n  ].inside.rest = Prism.languages.python\n  Prism.languages.py = Prism.languages.python\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nr.displayName = 'r'\nr.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function r(Prism) {\n  Prism.languages.r = {\n    comment: /#.*/,\n    string: {\n      pattern: /(['\"])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      greedy: true\n    },\n    'percent-operator': {\n      // Includes user-defined operators\n      // and %%, %*%, %/%, %in%, %o%, %x%\n      pattern: /%[^%\\s]*%/,\n      alias: 'operator'\n    },\n    boolean: /\\b(?:FALSE|TRUE)\\b/,\n    ellipsis: /\\.\\.(?:\\.|\\d+)/,\n    number: [\n      /\\b(?:Inf|NaN)\\b/,\n      /(?:\\b0x[\\dA-Fa-f]+(?:\\.\\d*)?|\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[EePp][+-]?\\d+)?[iL]?/\n    ],\n    keyword:\n      /\\b(?:NA|NA_character_|NA_complex_|NA_integer_|NA_real_|NULL|break|else|for|function|if|in|next|repeat|while)\\b/,\n    operator: /->?>?|<(?:=|<?-)?|[>=!]=?|::?|&&?|\\|\\|?|[+*\\/^$@~]/,\n    punctuation: /[(){}\\[\\],;]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\nruby.displayName = 'ruby'\nruby.aliases = ['rb']\n\n/** @param {Refractor} Prism */\nexport default function ruby(Prism) {\n  Prism.register(refractorClike)\n  /**\n   * Original by Samuel Flores\n   *\n   * Adds the following new token classes:\n   *     constant, builtin, variable, symbol, regex\n   */\n  ;(function (Prism) {\n    Prism.languages.ruby = Prism.languages.extend('clike', {\n      comment: {\n        pattern: /#.*|^=begin\\s[\\s\\S]*?^=end/m,\n        greedy: true\n      },\n      'class-name': {\n        pattern:\n          /(\\b(?:class|module)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+|\\b[A-Z_]\\w*(?=\\s*\\.\\s*new\\b)/,\n        lookbehind: true,\n        inside: {\n          punctuation: /[.\\\\]/\n        }\n      },\n      keyword:\n        /\\b(?:BEGIN|END|alias|and|begin|break|case|class|def|define_method|defined|do|each|else|elsif|end|ensure|extend|for|if|in|include|module|new|next|nil|not|or|prepend|private|protected|public|raise|redo|require|rescue|retry|return|self|super|then|throw|undef|unless|until|when|while|yield)\\b/,\n      operator:\n        /\\.{2,3}|&\\.|===|<?=>|[!=]?~|(?:&&|\\|\\||<<|>>|\\*\\*|[+\\-*/%<>!^&|=])=?|[?:]/,\n      punctuation: /[(){}[\\].,;]/\n    })\n    Prism.languages.insertBefore('ruby', 'operator', {\n      'double-colon': {\n        pattern: /::/,\n        alias: 'punctuation'\n      }\n    })\n    var interpolation = {\n      pattern: /((?:^|[^\\\\])(?:\\\\{2})*)#\\{(?:[^{}]|\\{[^{}]*\\})*\\}/,\n      lookbehind: true,\n      inside: {\n        content: {\n          pattern: /^(#\\{)[\\s\\S]+(?=\\}$)/,\n          lookbehind: true,\n          inside: Prism.languages.ruby\n        },\n        delimiter: {\n          pattern: /^#\\{|\\}$/,\n          alias: 'punctuation'\n        }\n      }\n    }\n    delete Prism.languages.ruby.function\n    var percentExpression =\n      '(?:' +\n      [\n        /([^a-zA-Z0-9\\s{(\\[<=])(?:(?!\\1)[^\\\\]|\\\\[\\s\\S])*\\1/.source,\n        /\\((?:[^()\\\\]|\\\\[\\s\\S]|\\((?:[^()\\\\]|\\\\[\\s\\S])*\\))*\\)/.source,\n        /\\{(?:[^{}\\\\]|\\\\[\\s\\S]|\\{(?:[^{}\\\\]|\\\\[\\s\\S])*\\})*\\}/.source,\n        /\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S]|\\[(?:[^\\[\\]\\\\]|\\\\[\\s\\S])*\\])*\\]/.source,\n        /<(?:[^<>\\\\]|\\\\[\\s\\S]|<(?:[^<>\\\\]|\\\\[\\s\\S])*>)*>/.source\n      ].join('|') +\n      ')'\n    var symbolName =\n      /(?:\"(?:\\\\.|[^\"\\\\\\r\\n])*\"|(?:\\b[a-zA-Z_]\\w*|[^\\s\\0-\\x7F]+)[?!]?|\\$.)/\n        .source\n    Prism.languages.insertBefore('ruby', 'keyword', {\n      'regex-literal': [\n        {\n          pattern: RegExp(\n            /%r/.source + percentExpression + /[egimnosux]{0,6}/.source\n          ),\n          greedy: true,\n          inside: {\n            interpolation: interpolation,\n            regex: /[\\s\\S]+/\n          }\n        },\n        {\n          pattern:\n            /(^|[^/])\\/(?!\\/)(?:\\[[^\\r\\n\\]]+\\]|\\\\.|[^[/\\\\\\r\\n])+\\/[egimnosux]{0,6}(?=\\s*(?:$|[\\r\\n,.;})#]))/,\n          lookbehind: true,\n          greedy: true,\n          inside: {\n            interpolation: interpolation,\n            regex: /[\\s\\S]+/\n          }\n        }\n      ],\n      variable: /[@$]+[a-zA-Z_]\\w*(?:[?!]|\\b)/,\n      symbol: [\n        {\n          pattern: RegExp(/(^|[^:]):/.source + symbolName),\n          lookbehind: true,\n          greedy: true\n        },\n        {\n          pattern: RegExp(\n            /([\\r\\n{(,][ \\t]*)/.source + symbolName + /(?=:(?!:))/.source\n          ),\n          lookbehind: true,\n          greedy: true\n        }\n      ],\n      'method-definition': {\n        pattern: /(\\bdef\\s+)\\w+(?:\\s*\\.\\s*\\w+)?/,\n        lookbehind: true,\n        inside: {\n          function: /\\b\\w+$/,\n          keyword: /^self\\b/,\n          'class-name': /^\\w+/,\n          punctuation: /\\./\n        }\n      }\n    })\n    Prism.languages.insertBefore('ruby', 'string', {\n      'string-literal': [\n        {\n          pattern: RegExp(/%[qQiIwWs]?/.source + percentExpression),\n          greedy: true,\n          inside: {\n            interpolation: interpolation,\n            string: /[\\s\\S]+/\n          }\n        },\n        {\n          pattern:\n            /(\"|')(?:#\\{[^}]+\\}|#(?!\\{)|\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\#\\r\\n])*\\1/,\n          greedy: true,\n          inside: {\n            interpolation: interpolation,\n            string: /[\\s\\S]+/\n          }\n        },\n        {\n          pattern: /<<[-~]?([a-z_]\\w*)[\\r\\n](?:.*[\\r\\n])*?[\\t ]*\\1/i,\n          alias: 'heredoc-string',\n          greedy: true,\n          inside: {\n            delimiter: {\n              pattern: /^<<[-~]?[a-z_]\\w*|\\b[a-z_]\\w*$/i,\n              inside: {\n                symbol: /\\b\\w+/,\n                punctuation: /^<<[-~]?/\n              }\n            },\n            interpolation: interpolation,\n            string: /[\\s\\S]+/\n          }\n        },\n        {\n          pattern: /<<[-~]?'([a-z_]\\w*)'[\\r\\n](?:.*[\\r\\n])*?[\\t ]*\\1/i,\n          alias: 'heredoc-string',\n          greedy: true,\n          inside: {\n            delimiter: {\n              pattern: /^<<[-~]?'[a-z_]\\w*'|\\b[a-z_]\\w*$/i,\n              inside: {\n                symbol: /\\b\\w+/,\n                punctuation: /^<<[-~]?'|'$/\n              }\n            },\n            string: /[\\s\\S]+/\n          }\n        }\n      ],\n      'command-literal': [\n        {\n          pattern: RegExp(/%x/.source + percentExpression),\n          greedy: true,\n          inside: {\n            interpolation: interpolation,\n            command: {\n              pattern: /[\\s\\S]+/,\n              alias: 'string'\n            }\n          }\n        },\n        {\n          pattern: /`(?:#\\{[^}]+\\}|#(?!\\{)|\\\\(?:\\r\\n|[\\s\\S])|[^\\\\`#\\r\\n])*`/,\n          greedy: true,\n          inside: {\n            interpolation: interpolation,\n            command: {\n              pattern: /[\\s\\S]+/,\n              alias: 'string'\n            }\n          }\n        }\n      ]\n    })\n    delete Prism.languages.ruby.string\n    Prism.languages.insertBefore('ruby', 'number', {\n      builtin:\n        /\\b(?:Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Fixnum|Float|Hash|IO|Integer|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|Stat|String|Struct|Symbol|TMS|Thread|ThreadGroup|Time|TrueClass)\\b/,\n      constant: /\\b[A-Z][A-Z0-9_]*(?:[?!]|\\b)/\n    })\n    Prism.languages.rb = Prism.languages.ruby\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nrust.displayName = 'rust'\nrust.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function rust(Prism) {\n  ;(function (Prism) {\n    var multilineComment = /\\/\\*(?:[^*/]|\\*(?!\\/)|\\/(?!\\*)|<self>)*\\*\\//.source\n    for (var i = 0; i < 2; i++) {\n      // support 4 levels of nested comments\n      multilineComment = multilineComment.replace(/<self>/g, function () {\n        return multilineComment\n      })\n    }\n    multilineComment = multilineComment.replace(/<self>/g, function () {\n      return /[^\\s\\S]/.source\n    })\n    Prism.languages.rust = {\n      comment: [\n        {\n          pattern: RegExp(/(^|[^\\\\])/.source + multilineComment),\n          lookbehind: true,\n          greedy: true\n        },\n        {\n          pattern: /(^|[^\\\\:])\\/\\/.*/,\n          lookbehind: true,\n          greedy: true\n        }\n      ],\n      string: {\n        pattern: /b?\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|b?r(#*)\"(?:[^\"]|\"(?!\\1))*\"\\1/,\n        greedy: true\n      },\n      char: {\n        pattern:\n          /b?'(?:\\\\(?:x[0-7][\\da-fA-F]|u\\{(?:[\\da-fA-F]_*){1,6}\\}|.)|[^\\\\\\r\\n\\t'])'/,\n        greedy: true\n      },\n      attribute: {\n        pattern: /#!?\\[(?:[^\\[\\]\"]|\"(?:\\\\[\\s\\S]|[^\\\\\"])*\")*\\]/,\n        greedy: true,\n        alias: 'attr-name',\n        inside: {\n          string: null // see below\n        }\n      },\n      // Closure params should not be confused with bitwise OR |\n      'closure-params': {\n        pattern: /([=(,:]\\s*|\\bmove\\s*)\\|[^|]*\\||\\|[^|]*\\|(?=\\s*(?:\\{|->))/,\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          'closure-punctuation': {\n            pattern: /^\\||\\|$/,\n            alias: 'punctuation'\n          },\n          rest: null // see below\n        }\n      },\n      'lifetime-annotation': {\n        pattern: /'\\w+/,\n        alias: 'symbol'\n      },\n      'fragment-specifier': {\n        pattern: /(\\$\\w+:)[a-z]+/,\n        lookbehind: true,\n        alias: 'punctuation'\n      },\n      variable: /\\$\\w+/,\n      'function-definition': {\n        pattern: /(\\bfn\\s+)\\w+/,\n        lookbehind: true,\n        alias: 'function'\n      },\n      'type-definition': {\n        pattern: /(\\b(?:enum|struct|trait|type|union)\\s+)\\w+/,\n        lookbehind: true,\n        alias: 'class-name'\n      },\n      'module-declaration': [\n        {\n          pattern: /(\\b(?:crate|mod)\\s+)[a-z][a-z_\\d]*/,\n          lookbehind: true,\n          alias: 'namespace'\n        },\n        {\n          pattern:\n            /(\\b(?:crate|self|super)\\s*)::\\s*[a-z][a-z_\\d]*\\b(?:\\s*::(?:\\s*[a-z][a-z_\\d]*\\s*::)*)?/,\n          lookbehind: true,\n          alias: 'namespace',\n          inside: {\n            punctuation: /::/\n          }\n        }\n      ],\n      keyword: [\n        // https://github.com/rust-lang/reference/blob/master/src/keywords.md\n        /\\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\\b/,\n        // primitives and str\n        // https://doc.rust-lang.org/stable/rust-by-example/primitives.html\n        /\\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\\b/\n      ],\n      // functions can technically start with an upper-case letter, but this will introduce a lot of false positives\n      // and Rust's naming conventions recommend snake_case anyway.\n      // https://doc.rust-lang.org/1.0.0/style/style/naming/README.html\n      function: /\\b[a-z_]\\w*(?=\\s*(?:::\\s*<|\\())/,\n      macro: {\n        pattern: /\\b\\w+!/,\n        alias: 'property'\n      },\n      constant: /\\b[A-Z_][A-Z_\\d]+\\b/,\n      'class-name': /\\b[A-Z]\\w*\\b/,\n      namespace: {\n        pattern: /(?:\\b[a-z][a-z_\\d]*\\s*::\\s*)*\\b[a-z][a-z_\\d]*\\s*::(?!\\s*<)/,\n        inside: {\n          punctuation: /::/\n        }\n      },\n      // Hex, oct, bin, dec numbers with visual separators and type suffix\n      number:\n        /\\b(?:0x[\\dA-Fa-f](?:_?[\\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\\d(?:_?\\d)*)?\\.)?\\d(?:_?\\d)*(?:[Ee][+-]?\\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\\b/,\n      boolean: /\\b(?:false|true)\\b/,\n      punctuation: /->|\\.\\.=|\\.{1,3}|::|[{}[\\];(),:]/,\n      operator: /[-+*\\/%!^]=?|=[=>]?|&[&=]?|\\|[|=]?|<<?=?|>>?=?|[@?]/\n    }\n    Prism.languages.rust['closure-params'].inside.rest = Prism.languages.rust\n    Prism.languages.rust['attribute'].inside['string'] =\n      Prism.languages.rust['string']\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorCss from './css.js'\nsass.displayName = 'sass'\nsass.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function sass(Prism) {\n  Prism.register(refractorCss)\n  ;(function (Prism) {\n    Prism.languages.sass = Prism.languages.extend('css', {\n      // Sass comments don't need to be closed, only indented\n      comment: {\n        pattern: /^([ \\t]*)\\/[\\/*].*(?:(?:\\r?\\n|\\r)\\1[ \\t].+)*/m,\n        lookbehind: true,\n        greedy: true\n      }\n    })\n    Prism.languages.insertBefore('sass', 'atrule', {\n      // We want to consume the whole line\n      'atrule-line': {\n        // Includes support for = and + shortcuts\n        pattern: /^(?:[ \\t]*)[@+=].+/m,\n        greedy: true,\n        inside: {\n          atrule: /(?:@[\\w-]+|[+=])/\n        }\n      }\n    })\n    delete Prism.languages.sass.atrule\n    var variable = /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n    var operator = [\n      /[+*\\/%]|[=!]=|<=?|>=?|\\b(?:and|not|or)\\b/,\n      {\n        pattern: /(\\s)-(?=\\s)/,\n        lookbehind: true\n      }\n    ]\n    Prism.languages.insertBefore('sass', 'property', {\n      // We want to consume the whole line\n      'variable-line': {\n        pattern: /^[ \\t]*\\$.+/m,\n        greedy: true,\n        inside: {\n          punctuation: /:/,\n          variable: variable,\n          operator: operator\n        }\n      },\n      // We want to consume the whole line\n      'property-line': {\n        pattern: /^[ \\t]*(?:[^:\\s]+ *:.*|:[^:\\s].*)/m,\n        greedy: true,\n        inside: {\n          property: [\n            /[^:\\s]+(?=\\s*:)/,\n            {\n              pattern: /(:)[^:\\s]+/,\n              lookbehind: true\n            }\n          ],\n          punctuation: /:/,\n          variable: variable,\n          operator: operator,\n          important: Prism.languages.sass.important\n        }\n      }\n    })\n    delete Prism.languages.sass.property\n    delete Prism.languages.sass.important\n\n    // Now that whole lines for other patterns are consumed,\n    // what's left should be selectors\n    Prism.languages.insertBefore('sass', 'punctuation', {\n      selector: {\n        pattern:\n          /^([ \\t]*)\\S(?:,[^,\\r\\n]+|[^,\\r\\n]*)(?:,[^,\\r\\n]+)*(?:,(?:\\r?\\n|\\r)\\1[ \\t]+\\S(?:,[^,\\r\\n]+|[^,\\r\\n]*)(?:,[^,\\r\\n]+)*)*/m,\n        lookbehind: true,\n        greedy: true\n      }\n    })\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorCss from './css.js'\nscss.displayName = 'scss'\nscss.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function scss(Prism) {\n  Prism.register(refractorCss)\n  Prism.languages.scss = Prism.languages.extend('css', {\n    comment: {\n      pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n      lookbehind: true\n    },\n    atrule: {\n      pattern: /@[\\w-](?:\\([^()]+\\)|[^()\\s]|\\s+(?!\\s))*?(?=\\s+[{;])/,\n      inside: {\n        rule: /@[\\w-]+/\n        // See rest below\n      }\n    },\n    // url, compassified\n    url: /(?:[-a-z]+-)?url(?=\\()/i,\n    // CSS selector regex is not appropriate for Sass\n    // since there can be lot more things (var, @ directive, nesting..)\n    // a selector must start at the end of a property or after a brace (end of other rules or nesting)\n    // it can contain some characters that aren't used for defining rules or end of selector, & (parent selector), or interpolated variable\n    // the end of a selector is found when there is no rules in it ( {} or {\\s}) or if there is a property (because an interpolated var\n    // can \"pass\" as a selector- e.g: proper#{$erty})\n    // this one was hard to do, so please be careful if you edit this one :)\n    selector: {\n      // Initial look-ahead is used to prevent matching of blank selectors\n      pattern:\n        /(?=\\S)[^@;{}()]?(?:[^@;{}()\\s]|\\s+(?!\\s)|#\\{\\$[-\\w]+\\})+(?=\\s*\\{(?:\\}|\\s|[^}][^:{}]*[:{][^}]))/,\n      inside: {\n        parent: {\n          pattern: /&/,\n          alias: 'important'\n        },\n        placeholder: /%[-\\w]+/,\n        variable: /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n      }\n    },\n    property: {\n      pattern: /(?:[-\\w]|\\$[-\\w]|#\\{\\$[-\\w]+\\})+(?=\\s*:)/,\n      inside: {\n        variable: /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n      }\n    }\n  })\n  Prism.languages.insertBefore('scss', 'atrule', {\n    keyword: [\n      /@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\\b/i,\n      {\n        pattern: /( )(?:from|through)(?= )/,\n        lookbehind: true\n      }\n    ]\n  })\n  Prism.languages.insertBefore('scss', 'important', {\n    // var and interpolated vars\n    variable: /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n  })\n  Prism.languages.insertBefore('scss', 'function', {\n    'module-modifier': {\n      pattern: /\\b(?:as|hide|show|with)\\b/i,\n      alias: 'keyword'\n    },\n    placeholder: {\n      pattern: /%[-\\w]+/,\n      alias: 'selector'\n    },\n    statement: {\n      pattern: /\\B!(?:default|optional)\\b/i,\n      alias: 'keyword'\n    },\n    boolean: /\\b(?:false|true)\\b/,\n    null: {\n      pattern: /\\bnull\\b/,\n      alias: 'keyword'\n    },\n    operator: {\n      pattern: /(\\s)(?:[-+*\\/%]|[=!]=|<=?|>=?|and|not|or)(?=\\s)/,\n      lookbehind: true\n    }\n  })\n  Prism.languages.scss['atrule'].inside.rest = Prism.languages.scss\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nsql.displayName = 'sql'\nsql.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function sql(Prism) {\n  Prism.languages.sql = {\n    comment: {\n      pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|(?:--|\\/\\/|#).*)/,\n      lookbehind: true\n    },\n    variable: [\n      {\n        pattern: /@([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])+\\1/,\n        greedy: true\n      },\n      /@[\\w.$]+/\n    ],\n    string: {\n      pattern: /(^|[^@\\\\])(\"|')(?:\\\\[\\s\\S]|(?!\\2)[^\\\\]|\\2\\2)*\\2/,\n      greedy: true,\n      lookbehind: true\n    },\n    identifier: {\n      pattern: /(^|[^@\\\\])`(?:\\\\[\\s\\S]|[^`\\\\]|``)*`/,\n      greedy: true,\n      lookbehind: true,\n      inside: {\n        punctuation: /^`|`$/\n      }\n    },\n    function:\n      /\\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\\s*\\()/i,\n    // Should we highlight user defined functions too?\n    keyword:\n      /\\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\\b/i,\n    boolean: /\\b(?:FALSE|NULL|TRUE)\\b/i,\n    number: /\\b0x[\\da-f]+\\b|\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+\\b/i,\n    operator:\n      /[-+*\\/=%^~]|&&?|\\|\\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\\b/i,\n    punctuation: /[;[\\]()`,.]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nswift.displayName = 'swift'\nswift.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function swift(Prism) {\n  Prism.languages.swift = {\n    comment: {\n      // Nested comments are supported up to 2 levels\n      pattern:\n        /(^|[^\\\\:])(?:\\/\\/.*|\\/\\*(?:[^/*]|\\/(?!\\*)|\\*(?!\\/)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*\\*\\/)/,\n      lookbehind: true,\n      greedy: true\n    },\n    'string-literal': [\n      // https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html\n      {\n        pattern: RegExp(\n          /(^|[^\"#])/.source +\n            '(?:' +\n            // single-line string\n            /\"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|\\r\\n|[^(])|[^\\\\\\r\\n\"])*\"/\n              .source +\n            '|' +\n            // multi-line string\n            /\"\"\"(?:\\\\(?:\\((?:[^()]|\\([^()]*\\))*\\)|[^(])|[^\\\\\"]|\"(?!\"\"))*\"\"\"/\n              .source +\n            ')' +\n            /(?![\"#])/.source\n        ),\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          interpolation: {\n            pattern: /(\\\\\\()(?:[^()]|\\([^()]*\\))*(?=\\))/,\n            lookbehind: true,\n            inside: null // see below\n          },\n          'interpolation-punctuation': {\n            pattern: /^\\)|\\\\\\($/,\n            alias: 'punctuation'\n          },\n          punctuation: /\\\\(?=[\\r\\n])/,\n          string: /[\\s\\S]+/\n        }\n      },\n      {\n        pattern: RegExp(\n          /(^|[^\"#])(#+)/.source +\n            '(?:' +\n            // single-line string\n            /\"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|\\r\\n|[^#])|[^\\\\\\r\\n])*?\"/\n              .source +\n            '|' +\n            // multi-line string\n            /\"\"\"(?:\\\\(?:#+\\((?:[^()]|\\([^()]*\\))*\\)|[^#])|[^\\\\])*?\"\"\"/.source +\n            ')' +\n            '\\\\2'\n        ),\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          interpolation: {\n            pattern: /(\\\\#+\\()(?:[^()]|\\([^()]*\\))*(?=\\))/,\n            lookbehind: true,\n            inside: null // see below\n          },\n          'interpolation-punctuation': {\n            pattern: /^\\)|\\\\#+\\($/,\n            alias: 'punctuation'\n          },\n          string: /[\\s\\S]+/\n        }\n      }\n    ],\n    directive: {\n      // directives with conditions\n      pattern: RegExp(\n        /#/.source +\n          '(?:' +\n          (/(?:elseif|if)\\b/.source +\n            '(?:[ \\t]*' +\n            // This regex is a little complex. It's equivalent to this:\n            //   (?:![ \\t]*)?(?:\\b\\w+\\b(?:[ \\t]*<round>)?|<round>)(?:[ \\t]*(?:&&|\\|\\|))?\n            // where <round> is a general parentheses expression.\n            /(?:![ \\t]*)?(?:\\b\\w+\\b(?:[ \\t]*\\((?:[^()]|\\([^()]*\\))*\\))?|\\((?:[^()]|\\([^()]*\\))*\\))(?:[ \\t]*(?:&&|\\|\\|))?/\n              .source +\n            ')+') +\n          '|' +\n          /(?:else|endif)\\b/.source +\n          ')'\n      ),\n      alias: 'property',\n      inside: {\n        'directive-name': /^#\\w+/,\n        boolean: /\\b(?:false|true)\\b/,\n        number: /\\b\\d+(?:\\.\\d+)*\\b/,\n        operator: /!|&&|\\|\\||[<>]=?/,\n        punctuation: /[(),]/\n      }\n    },\n    literal: {\n      pattern:\n        /#(?:colorLiteral|column|dsohandle|file(?:ID|Literal|Path)?|function|imageLiteral|line)\\b/,\n      alias: 'constant'\n    },\n    'other-directive': {\n      pattern: /#\\w+\\b/,\n      alias: 'property'\n    },\n    attribute: {\n      pattern: /@\\w+/,\n      alias: 'atrule'\n    },\n    'function-definition': {\n      pattern: /(\\bfunc\\s+)\\w+/,\n      lookbehind: true,\n      alias: 'function'\n    },\n    label: {\n      // https://docs.swift.org/swift-book/LanguageGuide/ControlFlow.html#ID141\n      pattern:\n        /\\b(break|continue)\\s+\\w+|\\b[a-zA-Z_]\\w*(?=\\s*:\\s*(?:for|repeat|while)\\b)/,\n      lookbehind: true,\n      alias: 'important'\n    },\n    keyword:\n      /\\b(?:Any|Protocol|Self|Type|actor|as|assignment|associatedtype|associativity|async|await|break|case|catch|class|continue|convenience|default|defer|deinit|didSet|do|dynamic|else|enum|extension|fallthrough|fileprivate|final|for|func|get|guard|higherThan|if|import|in|indirect|infix|init|inout|internal|is|isolated|lazy|left|let|lowerThan|mutating|none|nonisolated|nonmutating|open|operator|optional|override|postfix|precedencegroup|prefix|private|protocol|public|repeat|required|rethrows|return|right|safe|self|set|some|static|struct|subscript|super|switch|throw|throws|try|typealias|unowned|unsafe|var|weak|where|while|willSet)\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    nil: {\n      pattern: /\\bnil\\b/,\n      alias: 'constant'\n    },\n    'short-argument': /\\$\\d+\\b/,\n    omit: {\n      pattern: /\\b_\\b/,\n      alias: 'keyword'\n    },\n    number:\n      /\\b(?:[\\d_]+(?:\\.[\\de_]+)?|0x[a-f0-9_]+(?:\\.[a-f0-9p_]+)?|0b[01_]+|0o[0-7_]+)\\b/i,\n    // A class name must start with an upper-case letter and be either 1 letter long or contain a lower-case letter.\n    'class-name': /\\b[A-Z](?:[A-Z_\\d]*[a-z]\\w*)?\\b/,\n    function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n    constant: /\\b(?:[A-Z_]{2,}|k[A-Z][A-Za-z_]+)\\b/,\n    // Operators are generic in Swift. Developers can even create new operators (e.g. +++).\n    // https://docs.swift.org/swift-book/ReferenceManual/zzSummaryOfTheGrammar.html#ID481\n    // This regex only supports ASCII operators.\n    operator: /[-+*/%=!<>&|^~?]+|\\.[.\\-+*/%=!<>&|^~?]+/,\n    punctuation: /[{}[\\]();,.:\\\\]/\n  }\n  Prism.languages.swift['string-literal'].forEach(function (rule) {\n    rule.inside['interpolation'].inside = Prism.languages.swift\n  })\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorJavascript from './javascript.js'\ntypescript.displayName = 'typescript'\ntypescript.aliases = ['ts']\n\n/** @param {Refractor} Prism */\nexport default function typescript(Prism) {\n  Prism.register(refractorJavascript)\n  ;(function (Prism) {\n    Prism.languages.typescript = Prism.languages.extend('javascript', {\n      'class-name': {\n        pattern:\n          /(\\b(?:class|extends|implements|instanceof|interface|new|type)\\s+)(?!keyof\\b)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?:\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,\n        lookbehind: true,\n        greedy: true,\n        inside: null // see below\n      },\n      builtin:\n        /\\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\\b/\n    })\n\n    // The keywords TypeScript adds to JavaScript\n    Prism.languages.typescript.keyword.push(\n      /\\b(?:abstract|declare|is|keyof|readonly|require)\\b/,\n      // keywords that have to be followed by an identifier\n      /\\b(?:asserts|infer|interface|module|namespace|type)\\b(?=\\s*(?:[{_$a-zA-Z\\xA0-\\uFFFF]|$))/,\n      // This is for `import type *, {}`\n      /\\btype\\b(?=\\s*(?:[\\{*]|$))/\n    )\n\n    // doesn't work with TS because TS is too complex\n    delete Prism.languages.typescript['parameter']\n    delete Prism.languages.typescript['literal-property']\n\n    // a version of typescript specifically for highlighting types\n    var typeInside = Prism.languages.extend('typescript', {})\n    delete typeInside['class-name']\n    Prism.languages.typescript['class-name'].inside = typeInside\n    Prism.languages.insertBefore('typescript', 'function', {\n      decorator: {\n        pattern: /@[$\\w\\xA0-\\uFFFF]+/,\n        inside: {\n          at: {\n            pattern: /^@/,\n            alias: 'operator'\n          },\n          function: /^[\\s\\S]+/\n        }\n      },\n      'generic-function': {\n        // e.g. foo<T extends \"bar\" | \"baz\">( ...\n        pattern:\n          /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\\s*\\()/,\n        greedy: true,\n        inside: {\n          function: /^#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*/,\n          generic: {\n            pattern: /<[\\s\\S]+/,\n            // everything after the first <\n            alias: 'class-name',\n            inside: typeInside\n          }\n        }\n      }\n    })\n    Prism.languages.ts = Prism.languages.typescript\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nbasic.displayName = 'basic'\nbasic.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function basic(Prism) {\n  Prism.languages.basic = {\n    comment: {\n      pattern: /(?:!|REM\\b).+/i,\n      inside: {\n        keyword: /^REM/i\n      }\n    },\n    string: {\n      pattern: /\"(?:\"\"|[!#$%&'()*,\\/:;<=>?^\\w +\\-.])*\"/,\n      greedy: true\n    },\n    number: /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:E[+-]?\\d+)?/i,\n    keyword:\n      /\\b(?:AS|BEEP|BLOAD|BSAVE|CALL(?: ABSOLUTE)?|CASE|CHAIN|CHDIR|CLEAR|CLOSE|CLS|COM|COMMON|CONST|DATA|DECLARE|DEF(?: FN| SEG|DBL|INT|LNG|SNG|STR)|DIM|DO|DOUBLE|ELSE|ELSEIF|END|ENVIRON|ERASE|ERROR|EXIT|FIELD|FILES|FOR|FUNCTION|GET|GOSUB|GOTO|IF|INPUT|INTEGER|IOCTL|KEY|KILL|LINE INPUT|LOCATE|LOCK|LONG|LOOP|LSET|MKDIR|NAME|NEXT|OFF|ON(?: COM| ERROR| KEY| TIMER)?|OPEN|OPTION BASE|OUT|POKE|PUT|READ|REDIM|REM|RESTORE|RESUME|RETURN|RMDIR|RSET|RUN|SELECT CASE|SHARED|SHELL|SINGLE|SLEEP|STATIC|STEP|STOP|STRING|SUB|SWAP|SYSTEM|THEN|TIMER|TO|TROFF|TRON|TYPE|UNLOCK|UNTIL|USING|VIEW PRINT|WAIT|WEND|WHILE|WRITE)(?:\\$|\\b)/i,\n    function:\n      /\\b(?:ABS|ACCESS|ACOS|ANGLE|AREA|ARITHMETIC|ARRAY|ASIN|ASK|AT|ATN|BASE|BEGIN|BREAK|CAUSE|CEIL|CHR|CLIP|COLLATE|COLOR|CON|COS|COSH|COT|CSC|DATE|DATUM|DEBUG|DECIMAL|DEF|DEG|DEGREES|DELETE|DET|DEVICE|DISPLAY|DOT|ELAPSED|EPS|ERASABLE|EXLINE|EXP|EXTERNAL|EXTYPE|FILETYPE|FIXED|FP|GO|GRAPH|HANDLER|IDN|IMAGE|IN|INT|INTERNAL|IP|IS|KEYED|LBOUND|LCASE|LEFT|LEN|LENGTH|LET|LINE|LINES|LOG|LOG10|LOG2|LTRIM|MARGIN|MAT|MAX|MAXNUM|MID|MIN|MISSING|MOD|NATIVE|NUL|NUMERIC|OF|OPTION|ORD|ORGANIZATION|OUTIN|OUTPUT|PI|POINT|POINTER|POINTS|POS|PRINT|PROGRAM|PROMPT|RAD|RADIANS|RANDOMIZE|RECORD|RECSIZE|RECTYPE|RELATIVE|REMAINDER|REPEAT|REST|RETRY|REWRITE|RIGHT|RND|ROUND|RTRIM|SAME|SEC|SELECT|SEQUENTIAL|SET|SETTER|SGN|SIN|SINH|SIZE|SKIP|SQR|STANDARD|STATUS|STR|STREAM|STYLE|TAB|TAN|TANH|TEMPLATE|TEXT|THERE|TIME|TIMEOUT|TRACE|TRANSFORM|TRUNCATE|UBOUND|UCASE|USE|VAL|VARIABLE|VIEWPORT|WHEN|WINDOW|WITH|ZER|ZONEWIDTH)(?:\\$|\\b)/i,\n    operator: /<[=>]?|>=?|[+\\-*\\/^=&]|\\b(?:AND|EQV|IMP|NOT|OR|XOR)\\b/i,\n    punctuation: /[,;:()]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorBasic from './basic.js'\nvbnet.displayName = 'vbnet'\nvbnet.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function vbnet(Prism) {\n  Prism.register(refractorBasic)\n  Prism.languages.vbnet = Prism.languages.extend('basic', {\n    comment: [\n      {\n        pattern: /(?:!|REM\\b).+/i,\n        inside: {\n          keyword: /^REM/i\n        }\n      },\n      {\n        pattern: /(^|[^\\\\:])'.*/,\n        lookbehind: true,\n        greedy: true\n      }\n    ],\n    string: {\n      pattern: /(^|[^\"])\"(?:\"\"|[^\"])*\"(?!\")/,\n      lookbehind: true,\n      greedy: true\n    },\n    keyword:\n      /(?:\\b(?:ADDHANDLER|ADDRESSOF|ALIAS|AND|ANDALSO|AS|BEEP|BLOAD|BOOLEAN|BSAVE|BYREF|BYTE|BYVAL|CALL(?: ABSOLUTE)?|CASE|CATCH|CBOOL|CBYTE|CCHAR|CDATE|CDBL|CDEC|CHAIN|CHAR|CHDIR|CINT|CLASS|CLEAR|CLNG|CLOSE|CLS|COBJ|COM|COMMON|CONST|CONTINUE|CSBYTE|CSHORT|CSNG|CSTR|CTYPE|CUINT|CULNG|CUSHORT|DATA|DATE|DECIMAL|DECLARE|DEF(?: FN| SEG|DBL|INT|LNG|SNG|STR)|DEFAULT|DELEGATE|DIM|DIRECTCAST|DO|DOUBLE|ELSE|ELSEIF|END|ENUM|ENVIRON|ERASE|ERROR|EVENT|EXIT|FALSE|FIELD|FILES|FINALLY|FOR(?: EACH)?|FRIEND|FUNCTION|GET|GETTYPE|GETXMLNAMESPACE|GLOBAL|GOSUB|GOTO|HANDLES|IF|IMPLEMENTS|IMPORTS|IN|INHERITS|INPUT|INTEGER|INTERFACE|IOCTL|IS|ISNOT|KEY|KILL|LET|LIB|LIKE|LINE INPUT|LOCATE|LOCK|LONG|LOOP|LSET|ME|MKDIR|MOD|MODULE|MUSTINHERIT|MUSTOVERRIDE|MYBASE|MYCLASS|NAME|NAMESPACE|NARROWING|NEW|NEXT|NOT|NOTHING|NOTINHERITABLE|NOTOVERRIDABLE|OBJECT|OF|OFF|ON(?: COM| ERROR| KEY| TIMER)?|OPEN|OPERATOR|OPTION(?: BASE)?|OPTIONAL|OR|ORELSE|OUT|OVERLOADS|OVERRIDABLE|OVERRIDES|PARAMARRAY|PARTIAL|POKE|PRIVATE|PROPERTY|PROTECTED|PUBLIC|PUT|RAISEEVENT|READ|READONLY|REDIM|REM|REMOVEHANDLER|RESTORE|RESUME|RETURN|RMDIR|RSET|RUN|SBYTE|SELECT(?: CASE)?|SET|SHADOWS|SHARED|SHELL|SHORT|SINGLE|SLEEP|STATIC|STEP|STOP|STRING|STRUCTURE|SUB|SWAP|SYNCLOCK|SYSTEM|THEN|THROW|TIMER|TO|TROFF|TRON|TRUE|TRY|TRYCAST|TYPE|TYPEOF|UINTEGER|ULONG|UNLOCK|UNTIL|USHORT|USING|VIEW PRINT|WAIT|WEND|WHEN|WHILE|WIDENING|WITH|WITHEVENTS|WRITE|WRITEONLY|XOR)|\\B(?:#CONST|#ELSE|#ELSEIF|#END|#IF))(?:\\$|\\b)/i,\n    punctuation: /[,;:(){}]/\n  })\n}\n", "/**\n * @import {Schema as SchemaType, Space} from 'property-information'\n */\n\n/** @type {SchemaType} */\nexport class Schema {\n  /**\n   * @param {SchemaType['property']} property\n   *   Property.\n   * @param {SchemaType['normal']} normal\n   *   Normal.\n   * @param {Space | undefined} [space]\n   *   Space.\n   * @returns\n   *   Schema.\n   */\n  constructor(property, normal, space) {\n    this.normal = normal\n    this.property = property\n\n    if (space) {\n      this.space = space\n    }\n  }\n}\n\nSchema.prototype.normal = {}\nSchema.prototype.property = {}\nSchema.prototype.space = undefined\n", "/**\n * @import {Info, Space} from 'property-information'\n */\n\nimport {Schema} from './schema.js'\n\n/**\n * @param {ReadonlyArray<Schema>} definitions\n *   Definitions.\n * @param {Space | undefined} [space]\n *   Space.\n * @returns {Schema}\n *   Schema.\n */\nexport function merge(definitions, space) {\n  /** @type {Record<string, Info>} */\n  const property = {}\n  /** @type {Record<string, string>} */\n  const normal = {}\n\n  for (const definition of definitions) {\n    Object.assign(property, definition.property)\n    Object.assign(normal, definition.normal)\n  }\n\n  return new Schema(property, normal, space)\n}\n", "/**\n * Get the cleaned case insensitive form of an attribute or property.\n *\n * @param {string} value\n *   An attribute-like or property-like name.\n * @returns {string}\n *   Value that can be used to look up the properly cased property on a\n *   `Schema`.\n */\nexport function normalize(value) {\n  return value.toLowerCase()\n}\n", "/**\n * @import {Info as InfoType} from 'property-information'\n */\n\n/** @type {InfoType} */\nexport class Info {\n  /**\n   * @param {string} property\n   *   Property.\n   * @param {string} attribute\n   *   Attribute.\n   * @returns\n   *   Info.\n   */\n  constructor(property, attribute) {\n    this.attribute = attribute\n    this.property = property\n  }\n}\n\nInfo.prototype.attribute = ''\nInfo.prototype.booleanish = false\nInfo.prototype.boolean = false\nInfo.prototype.commaOrSpaceSeparated = false\nInfo.prototype.commaSeparated = false\nInfo.prototype.defined = false\nInfo.prototype.mustUseProperty = false\nInfo.prototype.number = false\nInfo.prototype.overloadedBoolean = false\nInfo.prototype.property = ''\nInfo.prototype.spaceSeparated = false\nInfo.prototype.space = undefined\n", "let powers = 0\n\nexport const boolean = increment()\nexport const booleanish = increment()\nexport const overloadedBoolean = increment()\nexport const number = increment()\nexport const spaceSeparated = increment()\nexport const commaSeparated = increment()\nexport const commaOrSpaceSeparated = increment()\n\nfunction increment() {\n  return 2 ** ++powers\n}\n", "/**\n * @import {Space} from 'property-information'\n */\n\nimport {Info} from './info.js'\nimport * as types from './types.js'\n\nconst checks = /** @type {ReadonlyArray<keyof typeof types>} */ (\n  Object.keys(types)\n)\n\nexport class DefinedInfo extends Info {\n  /**\n   * @constructor\n   * @param {string} property\n   *   Property.\n   * @param {string} attribute\n   *   Attribute.\n   * @param {number | null | undefined} [mask]\n   *   Mask.\n   * @param {Space | undefined} [space]\n   *   Space.\n   * @returns\n   *   Info.\n   */\n  constructor(property, attribute, mask, space) {\n    let index = -1\n\n    super(property, attribute)\n\n    mark(this, 'space', space)\n\n    if (typeof mask === 'number') {\n      while (++index < checks.length) {\n        const check = checks[index]\n        mark(this, checks[index], (mask & types[check]) === types[check])\n      }\n    }\n  }\n}\n\nDefinedInfo.prototype.defined = true\n\n/**\n * @template {keyof DefinedInfo} Key\n *   Key type.\n * @param {DefinedInfo} values\n *   Info.\n * @param {Key} key\n *   Key.\n * @param {DefinedInfo[Key]} value\n *   Value.\n * @returns {undefined}\n *   Nothing.\n */\nfunction mark(values, key, value) {\n  if (value) {\n    values[key] = value\n  }\n}\n", "/**\n * @import {Info, Space} from 'property-information'\n */\n\n/**\n * @typedef Definition\n *   Definition of a schema.\n * @property {Record<string, string> | undefined} [attributes]\n *   Normalzed names to special attribute case.\n * @property {ReadonlyArray<string> | undefined} [mustUseProperty]\n *   Normalized names that must be set as properties.\n * @property {Record<string, number | null>} properties\n *   Property names to their types.\n * @property {Space | undefined} [space]\n *   Space.\n * @property {Transform} transform\n *   Transform a property name.\n */\n\n/**\n * @callback Transform\n *   Transform.\n * @param {Record<string, string>} attributes\n *   Attributes.\n * @param {string} property\n *   Property.\n * @returns {string}\n *   Attribute.\n */\n\nimport {normalize} from '../normalize.js'\nimport {DefinedInfo} from './defined-info.js'\nimport {Schema} from './schema.js'\n\n/**\n * @param {Definition} definition\n *   Definition.\n * @returns {Schema}\n *   Schema.\n */\nexport function create(definition) {\n  /** @type {Record<string, Info>} */\n  const properties = {}\n  /** @type {Record<string, string>} */\n  const normals = {}\n\n  for (const [property, value] of Object.entries(definition.properties)) {\n    const info = new DefinedInfo(\n      property,\n      definition.transform(definition.attributes || {}, property),\n      value,\n      definition.space\n    )\n\n    if (\n      definition.mustUseProperty &&\n      definition.mustUseProperty.includes(property)\n    ) {\n      info.mustUseProperty = true\n    }\n\n    properties[property] = info\n\n    normals[normalize(property)] = property\n    normals[normalize(info.attribute)] = property\n  }\n\n  return new Schema(properties, normals, definition.space)\n}\n", "import {create} from './util/create.js'\nimport {booleanish, number, spaceSeparated} from './util/types.js'\n\nexport const aria = create({\n  properties: {\n    ariaActiveDescendant: null,\n    ariaAtomic: booleanish,\n    ariaAutoComplete: null,\n    ariaBusy: booleanish,\n    ariaChecked: booleanish,\n    ariaColCount: number,\n    ariaColIndex: number,\n    ariaColSpan: number,\n    ariaControls: spaceSeparated,\n    ariaCurrent: null,\n    ariaDescribedBy: spaceSeparated,\n    ariaDetails: null,\n    ariaDisabled: booleanish,\n    ariaDropEffect: spaceSeparated,\n    ariaErrorMessage: null,\n    ariaExpanded: booleanish,\n    ariaFlowTo: spaceSeparated,\n    ariaGrabbed: booleanish,\n    ariaHasPopup: null,\n    ariaHidden: booleanish,\n    ariaInvalid: null,\n    ariaKeyShortcuts: null,\n    ariaLabel: null,\n    ariaLabelledBy: spaceSeparated,\n    ariaLevel: number,\n    ariaLive: null,\n    ariaModal: booleanish,\n    ariaMultiLine: booleanish,\n    ariaMultiSelectable: booleanish,\n    ariaOrientation: null,\n    ariaOwns: spaceSeparated,\n    ariaPlaceholder: null,\n    ariaPosInSet: number,\n    ariaPressed: booleanish,\n    ariaReadOnly: booleanish,\n    ariaRelevant: null,\n    ariaRequired: booleanish,\n    ariaRoleDescription: spaceSeparated,\n    ariaRowCount: number,\n    ariaRowIndex: number,\n    ariaRowSpan: number,\n    ariaSelected: booleanish,\n    ariaSetSize: number,\n    ariaSort: null,\n    ariaValueMax: number,\n    ariaValueMin: number,\n    ariaValueNow: number,\n    ariaValueText: null,\n    role: null\n  },\n  transform(_, property) {\n    return property === 'role'\n      ? property\n      : 'aria-' + property.slice(4).toLowerCase()\n  }\n})\n", "/**\n * @param {Record<string, string>} attributes\n *   Attributes.\n * @param {string} attribute\n *   Attribute.\n * @returns {string}\n *   Transformed attribute.\n */\nexport function caseSensitiveTransform(attributes, attribute) {\n  return attribute in attributes ? attributes[attribute] : attribute\n}\n", "import {caseSensitiveTransform} from './case-sensitive-transform.js'\n\n/**\n * @param {Record<string, string>} attributes\n *   Attributes.\n * @param {string} property\n *   Property.\n * @returns {string}\n *   Transformed property.\n */\nexport function caseInsensitiveTransform(attributes, property) {\n  return caseSensitiveTransform(attributes, property.toLowerCase())\n}\n", "import {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n  booleanish,\n  boolean,\n  commaSeparated,\n  number,\n  overloadedBoolean,\n  spaceSeparated\n} from './util/types.js'\n\nexport const html = create({\n  attributes: {\n    acceptcharset: 'accept-charset',\n    classname: 'class',\n    htmlfor: 'for',\n    httpequiv: 'http-equiv'\n  },\n  mustUseProperty: ['checked', 'multiple', 'muted', 'selected'],\n  properties: {\n    // Standard Properties.\n    abbr: null,\n    accept: commaSeparated,\n    acceptCharset: spaceSeparated,\n    accessKey: spaceSeparated,\n    action: null,\n    allow: null,\n    allowFullScreen: boolean,\n    allowPaymentRequest: boolean,\n    allowUserMedia: boolean,\n    alpha: boolean,\n    alt: null,\n    as: null,\n    async: boolean,\n    autoCapitalize: null,\n    autoComplete: spaceSeparated,\n    autoFocus: boolean,\n    autoPlay: boolean,\n    blocking: spaceSeparated,\n    capture: null,\n    charSet: null,\n    checked: boolean,\n    cite: null,\n    className: spaceSeparated,\n    closedBy: null,\n    colorSpace: null,\n    cols: number,\n    colSpan: number,\n    command: null,\n    commandFor: null,\n    content: null,\n    contentEditable: booleanish,\n    controls: boolean,\n    controlsList: spaceSeparated,\n    coords: number | commaSeparated,\n    crossOrigin: null,\n    data: null,\n    dateTime: null,\n    decoding: null,\n    default: boolean,\n    defer: boolean,\n    dir: null,\n    dirName: null,\n    disabled: boolean,\n    download: overloadedBoolean,\n    draggable: booleanish,\n    encType: null,\n    enterKeyHint: null,\n    fetchPriority: null,\n    form: null,\n    formAction: null,\n    formEncType: null,\n    formMethod: null,\n    formNoValidate: boolean,\n    formTarget: null,\n    headers: spaceSeparated,\n    height: number,\n    hidden: overloadedBoolean,\n    high: number,\n    href: null,\n    hrefLang: null,\n    htmlFor: spaceSeparated,\n    httpEquiv: spaceSeparated,\n    id: null,\n    imageSizes: null,\n    imageSrcSet: null,\n    inert: boolean,\n    inputMode: null,\n    integrity: null,\n    is: null,\n    isMap: boolean,\n    itemId: null,\n    itemProp: spaceSeparated,\n    itemRef: spaceSeparated,\n    itemScope: boolean,\n    itemType: spaceSeparated,\n    kind: null,\n    label: null,\n    lang: null,\n    language: null,\n    list: null,\n    loading: null,\n    loop: boolean,\n    low: number,\n    manifest: null,\n    max: null,\n    maxLength: number,\n    media: null,\n    method: null,\n    min: null,\n    minLength: number,\n    multiple: boolean,\n    muted: boolean,\n    name: null,\n    nonce: null,\n    noModule: boolean,\n    noValidate: boolean,\n    onAbort: null,\n    onAfterPrint: null,\n    onAuxClick: null,\n    onBeforeMatch: null,\n    onBeforePrint: null,\n    onBeforeToggle: null,\n    onBeforeUnload: null,\n    onBlur: null,\n    onCancel: null,\n    onCanPlay: null,\n    onCanPlayThrough: null,\n    onChange: null,\n    onClick: null,\n    onClose: null,\n    onContextLost: null,\n    onContextMenu: null,\n    onContextRestored: null,\n    onCopy: null,\n    onCueChange: null,\n    onCut: null,\n    onDblClick: null,\n    onDrag: null,\n    onDragEnd: null,\n    onDragEnter: null,\n    onDragExit: null,\n    onDragLeave: null,\n    onDragOver: null,\n    onDragStart: null,\n    onDrop: null,\n    onDurationChange: null,\n    onEmptied: null,\n    onEnded: null,\n    onError: null,\n    onFocus: null,\n    onFormData: null,\n    onHashChange: null,\n    onInput: null,\n    onInvalid: null,\n    onKeyDown: null,\n    onKeyPress: null,\n    onKeyUp: null,\n    onLanguageChange: null,\n    onLoad: null,\n    onLoadedData: null,\n    onLoadedMetadata: null,\n    onLoadEnd: null,\n    onLoadStart: null,\n    onMessage: null,\n    onMessageError: null,\n    onMouseDown: null,\n    onMouseEnter: null,\n    onMouseLeave: null,\n    onMouseMove: null,\n    onMouseOut: null,\n    onMouseOver: null,\n    onMouseUp: null,\n    onOffline: null,\n    onOnline: null,\n    onPageHide: null,\n    onPageShow: null,\n    onPaste: null,\n    onPause: null,\n    onPlay: null,\n    onPlaying: null,\n    onPopState: null,\n    onProgress: null,\n    onRateChange: null,\n    onRejectionHandled: null,\n    onReset: null,\n    onResize: null,\n    onScroll: null,\n    onScrollEnd: null,\n    onSecurityPolicyViolation: null,\n    onSeeked: null,\n    onSeeking: null,\n    onSelect: null,\n    onSlotChange: null,\n    onStalled: null,\n    onStorage: null,\n    onSubmit: null,\n    onSuspend: null,\n    onTimeUpdate: null,\n    onToggle: null,\n    onUnhandledRejection: null,\n    onUnload: null,\n    onVolumeChange: null,\n    onWaiting: null,\n    onWheel: null,\n    open: boolean,\n    optimum: number,\n    pattern: null,\n    ping: spaceSeparated,\n    placeholder: null,\n    playsInline: boolean,\n    popover: null,\n    popoverTarget: null,\n    popoverTargetAction: null,\n    poster: null,\n    preload: null,\n    readOnly: boolean,\n    referrerPolicy: null,\n    rel: spaceSeparated,\n    required: boolean,\n    reversed: boolean,\n    rows: number,\n    rowSpan: number,\n    sandbox: spaceSeparated,\n    scope: null,\n    scoped: boolean,\n    seamless: boolean,\n    selected: boolean,\n    shadowRootClonable: boolean,\n    shadowRootCustomElementRegistry: boolean,\n    shadowRootDelegatesFocus: boolean,\n    shadowRootMode: null,\n    shadowRootSerializable: boolean,\n    shape: null,\n    size: number,\n    sizes: null,\n    slot: null,\n    span: number,\n    spellCheck: booleanish,\n    src: null,\n    srcDoc: null,\n    srcLang: null,\n    srcSet: null,\n    start: number,\n    step: null,\n    style: null,\n    tabIndex: number,\n    target: null,\n    title: null,\n    translate: null,\n    type: null,\n    typeMustMatch: boolean,\n    useMap: null,\n    value: booleanish,\n    width: number,\n    wrap: null,\n    writingSuggestions: null,\n\n    // Legacy.\n    // See: https://html.spec.whatwg.org/#other-elements,-attributes-and-apis\n    align: null, // Several. Use CSS `text-align` instead,\n    aLink: null, // `<body>`. Use CSS `a:active {color}` instead\n    archive: spaceSeparated, // `<object>`. List of URIs to archives\n    axis: null, // `<td>` and `<th>`. Use `scope` on `<th>`\n    background: null, // `<body>`. Use CSS `background-image` instead\n    bgColor: null, // `<body>` and table elements. Use CSS `background-color` instead\n    border: number, // `<table>`. Use CSS `border-width` instead,\n    borderColor: null, // `<table>`. Use CSS `border-color` instead,\n    bottomMargin: number, // `<body>`\n    cellPadding: null, // `<table>`\n    cellSpacing: null, // `<table>`\n    char: null, // Several table elements. When `align=char`, sets the character to align on\n    charOff: null, // Several table elements. When `char`, offsets the alignment\n    classId: null, // `<object>`\n    clear: null, // `<br>`. Use CSS `clear` instead\n    code: null, // `<object>`\n    codeBase: null, // `<object>`\n    codeType: null, // `<object>`\n    color: null, // `<font>` and `<hr>`. Use CSS instead\n    compact: boolean, // Lists. Use CSS to reduce space between items instead\n    declare: boolean, // `<object>`\n    event: null, // `<script>`\n    face: null, // `<font>`. Use CSS instead\n    frame: null, // `<table>`\n    frameBorder: null, // `<iframe>`. Use CSS `border` instead\n    hSpace: number, // `<img>` and `<object>`\n    leftMargin: number, // `<body>`\n    link: null, // `<body>`. Use CSS `a:link {color: *}` instead\n    longDesc: null, // `<frame>`, `<iframe>`, and `<img>`. Use an `<a>`\n    lowSrc: null, // `<img>`. Use a `<picture>`\n    marginHeight: number, // `<body>`\n    marginWidth: number, // `<body>`\n    noResize: boolean, // `<frame>`\n    noHref: boolean, // `<area>`. Use no href instead of an explicit `nohref`\n    noShade: boolean, // `<hr>`. Use background-color and height instead of borders\n    noWrap: boolean, // `<td>` and `<th>`\n    object: null, // `<applet>`\n    profile: null, // `<head>`\n    prompt: null, // `<isindex>`\n    rev: null, // `<link>`\n    rightMargin: number, // `<body>`\n    rules: null, // `<table>`\n    scheme: null, // `<meta>`\n    scrolling: booleanish, // `<frame>`. Use overflow in the child context\n    standby: null, // `<object>`\n    summary: null, // `<table>`\n    text: null, // `<body>`. Use CSS `color` instead\n    topMargin: number, // `<body>`\n    valueType: null, // `<param>`\n    version: null, // `<html>`. Use a doctype.\n    vAlign: null, // Several. Use CSS `vertical-align` instead\n    vLink: null, // `<body>`. Use CSS `a:visited {color}` instead\n    vSpace: number, // `<img>` and `<object>`\n\n    // Non-standard Properties.\n    allowTransparency: null,\n    autoCorrect: null,\n    autoSave: null,\n    credentialless: boolean,\n    disablePictureInPicture: boolean,\n    disableRemotePlayback: boolean,\n    exportParts: commaSeparated,\n    part: spaceSeparated,\n    prefix: null,\n    property: null,\n    results: number,\n    security: null,\n    unselectable: null\n  },\n  space: 'html',\n  transform: caseInsensitiveTransform\n})\n", "import {caseSensitiveTransform} from './util/case-sensitive-transform.js'\nimport {create} from './util/create.js'\nimport {\n  boolean,\n  commaOrSpaceSeparated,\n  commaSeparated,\n  number,\n  spaceSeparated\n} from './util/types.js'\n\nexport const svg = create({\n  attributes: {\n    accentHeight: 'accent-height',\n    alignmentBaseline: 'alignment-baseline',\n    arabicForm: 'arabic-form',\n    baselineShift: 'baseline-shift',\n    capHeight: 'cap-height',\n    className: 'class',\n    clipPath: 'clip-path',\n    clipRule: 'clip-rule',\n    colorInterpolation: 'color-interpolation',\n    colorInterpolationFilters: 'color-interpolation-filters',\n    colorProfile: 'color-profile',\n    colorRendering: 'color-rendering',\n    crossOrigin: 'crossorigin',\n    dataType: 'datatype',\n    dominantBaseline: 'dominant-baseline',\n    enableBackground: 'enable-background',\n    fillOpacity: 'fill-opacity',\n    fillRule: 'fill-rule',\n    floodColor: 'flood-color',\n    floodOpacity: 'flood-opacity',\n    fontFamily: 'font-family',\n    fontSize: 'font-size',\n    fontSizeAdjust: 'font-size-adjust',\n    fontStretch: 'font-stretch',\n    fontStyle: 'font-style',\n    fontVariant: 'font-variant',\n    fontWeight: 'font-weight',\n    glyphName: 'glyph-name',\n    glyphOrientationHorizontal: 'glyph-orientation-horizontal',\n    glyphOrientationVertical: 'glyph-orientation-vertical',\n    hrefLang: 'hreflang',\n    horizAdvX: 'horiz-adv-x',\n    horizOriginX: 'horiz-origin-x',\n    horizOriginY: 'horiz-origin-y',\n    imageRendering: 'image-rendering',\n    letterSpacing: 'letter-spacing',\n    lightingColor: 'lighting-color',\n    markerEnd: 'marker-end',\n    markerMid: 'marker-mid',\n    markerStart: 'marker-start',\n    maskType: 'mask-type',\n    navDown: 'nav-down',\n    navDownLeft: 'nav-down-left',\n    navDownRight: 'nav-down-right',\n    navLeft: 'nav-left',\n    navNext: 'nav-next',\n    navPrev: 'nav-prev',\n    navRight: 'nav-right',\n    navUp: 'nav-up',\n    navUpLeft: 'nav-up-left',\n    navUpRight: 'nav-up-right',\n    onAbort: 'onabort',\n    onActivate: 'onactivate',\n    onAfterPrint: 'onafterprint',\n    onBeforePrint: 'onbeforeprint',\n    onBegin: 'onbegin',\n    onCancel: 'oncancel',\n    onCanPlay: 'oncanplay',\n    onCanPlayThrough: 'oncanplaythrough',\n    onChange: 'onchange',\n    onClick: 'onclick',\n    onClose: 'onclose',\n    onCopy: 'oncopy',\n    onCueChange: 'oncuechange',\n    onCut: 'oncut',\n    onDblClick: 'ondblclick',\n    onDrag: 'ondrag',\n    onDragEnd: 'ondragend',\n    onDragEnter: 'ondragenter',\n    onDragExit: 'ondragexit',\n    onDragLeave: 'ondragleave',\n    onDragOver: 'ondragover',\n    onDragStart: 'ondragstart',\n    onDrop: 'ondrop',\n    onDurationChange: 'ondurationchange',\n    onEmptied: 'onemptied',\n    onEnd: 'onend',\n    onEnded: 'onended',\n    onError: 'onerror',\n    onFocus: 'onfocus',\n    onFocusIn: 'onfocusin',\n    onFocusOut: 'onfocusout',\n    onHashChange: 'onhashchange',\n    onInput: 'oninput',\n    onInvalid: 'oninvalid',\n    onKeyDown: 'onkeydown',\n    onKeyPress: 'onkeypress',\n    onKeyUp: 'onkeyup',\n    onLoad: 'onload',\n    onLoadedData: 'onloadeddata',\n    onLoadedMetadata: 'onloadedmetadata',\n    onLoadStart: 'onloadstart',\n    onMessage: 'onmessage',\n    onMouseDown: 'onmousedown',\n    onMouseEnter: 'onmouseenter',\n    onMouseLeave: 'onmouseleave',\n    onMouseMove: 'onmousemove',\n    onMouseOut: 'onmouseout',\n    onMouseOver: 'onmouseover',\n    onMouseUp: 'onmouseup',\n    onMouseWheel: 'onmousewheel',\n    onOffline: 'onoffline',\n    onOnline: 'ononline',\n    onPageHide: 'onpagehide',\n    onPageShow: 'onpageshow',\n    onPaste: 'onpaste',\n    onPause: 'onpause',\n    onPlay: 'onplay',\n    onPlaying: 'onplaying',\n    onPopState: 'onpopstate',\n    onProgress: 'onprogress',\n    onRateChange: 'onratechange',\n    onRepeat: 'onrepeat',\n    onReset: 'onreset',\n    onResize: 'onresize',\n    onScroll: 'onscroll',\n    onSeeked: 'onseeked',\n    onSeeking: 'onseeking',\n    onSelect: 'onselect',\n    onShow: 'onshow',\n    onStalled: 'onstalled',\n    onStorage: 'onstorage',\n    onSubmit: 'onsubmit',\n    onSuspend: 'onsuspend',\n    onTimeUpdate: 'ontimeupdate',\n    onToggle: 'ontoggle',\n    onUnload: 'onunload',\n    onVolumeChange: 'onvolumechange',\n    onWaiting: 'onwaiting',\n    onZoom: 'onzoom',\n    overlinePosition: 'overline-position',\n    overlineThickness: 'overline-thickness',\n    paintOrder: 'paint-order',\n    panose1: 'panose-1',\n    pointerEvents: 'pointer-events',\n    referrerPolicy: 'referrerpolicy',\n    renderingIntent: 'rendering-intent',\n    shapeRendering: 'shape-rendering',\n    stopColor: 'stop-color',\n    stopOpacity: 'stop-opacity',\n    strikethroughPosition: 'strikethrough-position',\n    strikethroughThickness: 'strikethrough-thickness',\n    strokeDashArray: 'stroke-dasharray',\n    strokeDashOffset: 'stroke-dashoffset',\n    strokeLineCap: 'stroke-linecap',\n    strokeLineJoin: 'stroke-linejoin',\n    strokeMiterLimit: 'stroke-miterlimit',\n    strokeOpacity: 'stroke-opacity',\n    strokeWidth: 'stroke-width',\n    tabIndex: 'tabindex',\n    textAnchor: 'text-anchor',\n    textDecoration: 'text-decoration',\n    textRendering: 'text-rendering',\n    transformOrigin: 'transform-origin',\n    typeOf: 'typeof',\n    underlinePosition: 'underline-position',\n    underlineThickness: 'underline-thickness',\n    unicodeBidi: 'unicode-bidi',\n    unicodeRange: 'unicode-range',\n    unitsPerEm: 'units-per-em',\n    vAlphabetic: 'v-alphabetic',\n    vHanging: 'v-hanging',\n    vIdeographic: 'v-ideographic',\n    vMathematical: 'v-mathematical',\n    vectorEffect: 'vector-effect',\n    vertAdvY: 'vert-adv-y',\n    vertOriginX: 'vert-origin-x',\n    vertOriginY: 'vert-origin-y',\n    wordSpacing: 'word-spacing',\n    writingMode: 'writing-mode',\n    xHeight: 'x-height',\n    // These were camelcased in Tiny. Now lowercased in SVG 2\n    playbackOrder: 'playbackorder',\n    timelineBegin: 'timelinebegin'\n  },\n  properties: {\n    about: commaOrSpaceSeparated,\n    accentHeight: number,\n    accumulate: null,\n    additive: null,\n    alignmentBaseline: null,\n    alphabetic: number,\n    amplitude: number,\n    arabicForm: null,\n    ascent: number,\n    attributeName: null,\n    attributeType: null,\n    azimuth: number,\n    bandwidth: null,\n    baselineShift: null,\n    baseFrequency: null,\n    baseProfile: null,\n    bbox: null,\n    begin: null,\n    bias: number,\n    by: null,\n    calcMode: null,\n    capHeight: number,\n    className: spaceSeparated,\n    clip: null,\n    clipPath: null,\n    clipPathUnits: null,\n    clipRule: null,\n    color: null,\n    colorInterpolation: null,\n    colorInterpolationFilters: null,\n    colorProfile: null,\n    colorRendering: null,\n    content: null,\n    contentScriptType: null,\n    contentStyleType: null,\n    crossOrigin: null,\n    cursor: null,\n    cx: null,\n    cy: null,\n    d: null,\n    dataType: null,\n    defaultAction: null,\n    descent: number,\n    diffuseConstant: number,\n    direction: null,\n    display: null,\n    dur: null,\n    divisor: number,\n    dominantBaseline: null,\n    download: boolean,\n    dx: null,\n    dy: null,\n    edgeMode: null,\n    editable: null,\n    elevation: number,\n    enableBackground: null,\n    end: null,\n    event: null,\n    exponent: number,\n    externalResourcesRequired: null,\n    fill: null,\n    fillOpacity: number,\n    fillRule: null,\n    filter: null,\n    filterRes: null,\n    filterUnits: null,\n    floodColor: null,\n    floodOpacity: null,\n    focusable: null,\n    focusHighlight: null,\n    fontFamily: null,\n    fontSize: null,\n    fontSizeAdjust: null,\n    fontStretch: null,\n    fontStyle: null,\n    fontVariant: null,\n    fontWeight: null,\n    format: null,\n    fr: null,\n    from: null,\n    fx: null,\n    fy: null,\n    g1: commaSeparated,\n    g2: commaSeparated,\n    glyphName: commaSeparated,\n    glyphOrientationHorizontal: null,\n    glyphOrientationVertical: null,\n    glyphRef: null,\n    gradientTransform: null,\n    gradientUnits: null,\n    handler: null,\n    hanging: number,\n    hatchContentUnits: null,\n    hatchUnits: null,\n    height: null,\n    href: null,\n    hrefLang: null,\n    horizAdvX: number,\n    horizOriginX: number,\n    horizOriginY: number,\n    id: null,\n    ideographic: number,\n    imageRendering: null,\n    initialVisibility: null,\n    in: null,\n    in2: null,\n    intercept: number,\n    k: number,\n    k1: number,\n    k2: number,\n    k3: number,\n    k4: number,\n    kernelMatrix: commaOrSpaceSeparated,\n    kernelUnitLength: null,\n    keyPoints: null, // SEMI_COLON_SEPARATED\n    keySplines: null, // SEMI_COLON_SEPARATED\n    keyTimes: null, // SEMI_COLON_SEPARATED\n    kerning: null,\n    lang: null,\n    lengthAdjust: null,\n    letterSpacing: null,\n    lightingColor: null,\n    limitingConeAngle: number,\n    local: null,\n    markerEnd: null,\n    markerMid: null,\n    markerStart: null,\n    markerHeight: null,\n    markerUnits: null,\n    markerWidth: null,\n    mask: null,\n    maskContentUnits: null,\n    maskType: null,\n    maskUnits: null,\n    mathematical: null,\n    max: null,\n    media: null,\n    mediaCharacterEncoding: null,\n    mediaContentEncodings: null,\n    mediaSize: number,\n    mediaTime: null,\n    method: null,\n    min: null,\n    mode: null,\n    name: null,\n    navDown: null,\n    navDownLeft: null,\n    navDownRight: null,\n    navLeft: null,\n    navNext: null,\n    navPrev: null,\n    navRight: null,\n    navUp: null,\n    navUpLeft: null,\n    navUpRight: null,\n    numOctaves: null,\n    observer: null,\n    offset: null,\n    onAbort: null,\n    onActivate: null,\n    onAfterPrint: null,\n    onBeforePrint: null,\n    onBegin: null,\n    onCancel: null,\n    onCanPlay: null,\n    onCanPlayThrough: null,\n    onChange: null,\n    onClick: null,\n    onClose: null,\n    onCopy: null,\n    onCueChange: null,\n    onCut: null,\n    onDblClick: null,\n    onDrag: null,\n    onDragEnd: null,\n    onDragEnter: null,\n    onDragExit: null,\n    onDragLeave: null,\n    onDragOver: null,\n    onDragStart: null,\n    onDrop: null,\n    onDurationChange: null,\n    onEmptied: null,\n    onEnd: null,\n    onEnded: null,\n    onError: null,\n    onFocus: null,\n    onFocusIn: null,\n    onFocusOut: null,\n    onHashChange: null,\n    onInput: null,\n    onInvalid: null,\n    onKeyDown: null,\n    onKeyPress: null,\n    onKeyUp: null,\n    onLoad: null,\n    onLoadedData: null,\n    onLoadedMetadata: null,\n    onLoadStart: null,\n    onMessage: null,\n    onMouseDown: null,\n    onMouseEnter: null,\n    onMouseLeave: null,\n    onMouseMove: null,\n    onMouseOut: null,\n    onMouseOver: null,\n    onMouseUp: null,\n    onMouseWheel: null,\n    onOffline: null,\n    onOnline: null,\n    onPageHide: null,\n    onPageShow: null,\n    onPaste: null,\n    onPause: null,\n    onPlay: null,\n    onPlaying: null,\n    onPopState: null,\n    onProgress: null,\n    onRateChange: null,\n    onRepeat: null,\n    onReset: null,\n    onResize: null,\n    onScroll: null,\n    onSeeked: null,\n    onSeeking: null,\n    onSelect: null,\n    onShow: null,\n    onStalled: null,\n    onStorage: null,\n    onSubmit: null,\n    onSuspend: null,\n    onTimeUpdate: null,\n    onToggle: null,\n    onUnload: null,\n    onVolumeChange: null,\n    onWaiting: null,\n    onZoom: null,\n    opacity: null,\n    operator: null,\n    order: null,\n    orient: null,\n    orientation: null,\n    origin: null,\n    overflow: null,\n    overlay: null,\n    overlinePosition: number,\n    overlineThickness: number,\n    paintOrder: null,\n    panose1: null,\n    path: null,\n    pathLength: number,\n    patternContentUnits: null,\n    patternTransform: null,\n    patternUnits: null,\n    phase: null,\n    ping: spaceSeparated,\n    pitch: null,\n    playbackOrder: null,\n    pointerEvents: null,\n    points: null,\n    pointsAtX: number,\n    pointsAtY: number,\n    pointsAtZ: number,\n    preserveAlpha: null,\n    preserveAspectRatio: null,\n    primitiveUnits: null,\n    propagate: null,\n    property: commaOrSpaceSeparated,\n    r: null,\n    radius: null,\n    referrerPolicy: null,\n    refX: null,\n    refY: null,\n    rel: commaOrSpaceSeparated,\n    rev: commaOrSpaceSeparated,\n    renderingIntent: null,\n    repeatCount: null,\n    repeatDur: null,\n    requiredExtensions: commaOrSpaceSeparated,\n    requiredFeatures: commaOrSpaceSeparated,\n    requiredFonts: commaOrSpaceSeparated,\n    requiredFormats: commaOrSpaceSeparated,\n    resource: null,\n    restart: null,\n    result: null,\n    rotate: null,\n    rx: null,\n    ry: null,\n    scale: null,\n    seed: null,\n    shapeRendering: null,\n    side: null,\n    slope: null,\n    snapshotTime: null,\n    specularConstant: number,\n    specularExponent: number,\n    spreadMethod: null,\n    spacing: null,\n    startOffset: null,\n    stdDeviation: null,\n    stemh: null,\n    stemv: null,\n    stitchTiles: null,\n    stopColor: null,\n    stopOpacity: null,\n    strikethroughPosition: number,\n    strikethroughThickness: number,\n    string: null,\n    stroke: null,\n    strokeDashArray: commaOrSpaceSeparated,\n    strokeDashOffset: null,\n    strokeLineCap: null,\n    strokeLineJoin: null,\n    strokeMiterLimit: number,\n    strokeOpacity: number,\n    strokeWidth: null,\n    style: null,\n    surfaceScale: number,\n    syncBehavior: null,\n    syncBehaviorDefault: null,\n    syncMaster: null,\n    syncTolerance: null,\n    syncToleranceDefault: null,\n    systemLanguage: commaOrSpaceSeparated,\n    tabIndex: number,\n    tableValues: null,\n    target: null,\n    targetX: number,\n    targetY: number,\n    textAnchor: null,\n    textDecoration: null,\n    textRendering: null,\n    textLength: null,\n    timelineBegin: null,\n    title: null,\n    transformBehavior: null,\n    type: null,\n    typeOf: commaOrSpaceSeparated,\n    to: null,\n    transform: null,\n    transformOrigin: null,\n    u1: null,\n    u2: null,\n    underlinePosition: number,\n    underlineThickness: number,\n    unicode: null,\n    unicodeBidi: null,\n    unicodeRange: null,\n    unitsPerEm: number,\n    values: null,\n    vAlphabetic: number,\n    vMathematical: number,\n    vectorEffect: null,\n    vHanging: number,\n    vIdeographic: number,\n    version: null,\n    vertAdvY: number,\n    vertOriginX: number,\n    vertOriginY: number,\n    viewBox: null,\n    viewTarget: null,\n    visibility: null,\n    width: null,\n    widths: null,\n    wordSpacing: null,\n    writingMode: null,\n    x: null,\n    x1: null,\n    x2: null,\n    xChannelSelector: null,\n    xHeight: number,\n    y: null,\n    y1: null,\n    y2: null,\n    yChannelSelector: null,\n    z: null,\n    zoomAndPan: null\n  },\n  space: 'svg',\n  transform: caseSensitiveTransform\n})\n", "import {create} from './util/create.js'\n\nexport const xlink = create({\n  properties: {\n    xLinkActuate: null,\n    xLinkArcRole: null,\n    xLinkHref: null,\n    xLinkRole: null,\n    xLinkShow: null,\n    xLinkTitle: null,\n    xLinkType: null\n  },\n  space: 'xlink',\n  transform(_, property) {\n    return 'xlink:' + property.slice(5).toLowerCase()\n  }\n})\n", "import {create} from './util/create.js'\nimport {caseInsensitiveTransform} from './util/case-insensitive-transform.js'\n\nexport const xmlns = create({\n  attributes: {xmlnsxlink: 'xmlns:xlink'},\n  properties: {xmlnsXLink: null, xmlns: null},\n  space: 'xmlns',\n  transform: caseInsensitiveTransform\n})\n", "import {create} from './util/create.js'\n\nexport const xml = create({\n  properties: {xmlBase: null, xmlLang: null, xmlSpace: null},\n  space: 'xml',\n  transform(_, property) {\n    return 'xml:' + property.slice(3).toLowerCase()\n  }\n})\n", "/**\n * Special cases for React (`Record<string, string>`).\n *\n * `hast` is close to `React` but differs in a couple of cases.\n * To get a React property from a hast property,\n * check if it is in `hastToReact`.\n * If it is, use the corresponding value;\n * otherwise, use the hast property.\n *\n * @type {Record<string, string>}\n */\nexport const hastToReact = {\n  classId: 'classID',\n  dataType: 'datatype',\n  itemId: 'itemID',\n  strokeDashArray: 'strokeDasharray',\n  strokeDashOffset: 'strokeDashoffset',\n  strokeLineCap: 'strokeLinecap',\n  strokeLineJoin: 'strokeLinejoin',\n  strokeMiterLimit: 'strokeMiterlimit',\n  typeOf: 'typeof',\n  xLinkActuate: 'xlinkActuate',\n  xLinkArcRole: 'xlinkArcrole',\n  xLinkHref: 'xlinkHref',\n  xLinkRole: 'xlinkRole',\n  xLinkShow: 'xlinkShow',\n  xLinkTitle: 'xlinkTitle',\n  xLinkType: 'xlinkType',\n  xmlnsXLink: 'xmlnsXlink'\n}\n", "/**\n * @import {Schema} from 'property-information'\n */\n\nimport {DefinedInfo} from './util/defined-info.js'\nimport {Info} from './util/info.js'\nimport {normalize} from './normalize.js'\n\nconst cap = /[A-Z]/g\nconst dash = /-[a-z]/g\nconst valid = /^data[-\\w.:]+$/i\n\n/**\n * Look up info on a property.\n *\n * In most cases the given `schema` contains info on the property.\n * All standard,\n * most legacy,\n * and some non-standard properties are supported.\n * For these cases,\n * the returned `Info` has hints about the value of the property.\n *\n * `name` can also be a valid data attribute or property,\n * in which case an `Info` object with the correctly cased `attribute` and\n * `property` is returned.\n *\n * `name` can be an unknown attribute,\n * in which case an `Info` object with `attribute` and `property` set to the\n * given name is returned.\n * It is not recommended to provide unsupported legacy or recently specced\n * properties.\n *\n *\n * @param {Schema} schema\n *   Schema;\n *   either the `html` or `svg` export.\n * @param {string} value\n *   An attribute-like or property-like name;\n *   it will be passed through `normalize` to hopefully find the correct info.\n * @returns {Info}\n *   Info.\n */\nexport function find(schema, value) {\n  const normal = normalize(value)\n  let property = value\n  let Type = Info\n\n  if (normal in schema.normal) {\n    return schema.property[schema.normal[normal]]\n  }\n\n  if (normal.length > 4 && normal.slice(0, 4) === 'data' && valid.test(value)) {\n    // Attribute or property.\n    if (value.charAt(4) === '-') {\n      // Turn it into a property.\n      const rest = value.slice(5).replace(dash, camelcase)\n      property = 'data' + rest.charAt(0).toUpperCase() + rest.slice(1)\n    } else {\n      // Turn it into an attribute.\n      const rest = value.slice(4)\n\n      if (!dash.test(rest)) {\n        let dashes = rest.replace(cap, kebab)\n\n        if (dashes.charAt(0) !== '-') {\n          dashes = '-' + dashes\n        }\n\n        value = 'data' + dashes\n      }\n    }\n\n    Type = DefinedInfo\n  }\n\n  return new Type(property, value)\n}\n\n/**\n * @param {string} $0\n *   Value.\n * @returns {string}\n *   Kebab.\n */\nfunction kebab($0) {\n  return '-' + $0.toLowerCase()\n}\n\n/**\n * @param {string} $0\n *   Value.\n * @returns {string}\n *   Camel.\n */\nfunction camelcase($0) {\n  return $0.charAt(1).toUpperCase()\n}\n", "// Note: types exposed from `index.d.ts`.\nimport {merge} from './lib/util/merge.js'\nimport {aria} from './lib/aria.js'\nimport {html as htmlBase} from './lib/html.js'\nimport {svg as svgBase} from './lib/svg.js'\nimport {xlink} from './lib/xlink.js'\nimport {xmlns} from './lib/xmlns.js'\nimport {xml} from './lib/xml.js'\n\nexport {hastToReact} from './lib/hast-to-react.js'\n\nexport const html = merge([aria, htmlBase, xlink, xmlns, xml], 'html')\n\nexport {find} from './lib/find.js'\nexport {normalize} from './lib/normalize.js'\n\nexport const svg = merge([aria, svgBase, xlink, xmlns, xml], 'svg')\n", "/**\n * @typedef Options\n *   Configuration for `stringify`.\n * @property {boolean} [padLeft=true]\n *   Whether to pad a space before a token.\n * @property {boolean} [padRight=false]\n *   Whether to pad a space after a token.\n */\n\n/**\n * @typedef {Options} StringifyOptions\n *   Please use `StringifyOptions` instead.\n */\n\n/**\n * Parse comma-separated tokens to an array.\n *\n * @param {string} value\n *   Comma-separated tokens.\n * @returns {Array<string>}\n *   List of tokens.\n */\nexport function parse(value) {\n  /** @type {Array<string>} */\n  const tokens = []\n  const input = String(value || '')\n  let index = input.indexOf(',')\n  let start = 0\n  /** @type {boolean} */\n  let end = false\n\n  while (!end) {\n    if (index === -1) {\n      index = input.length\n      end = true\n    }\n\n    const token = input.slice(start, index).trim()\n\n    if (token || !end) {\n      tokens.push(token)\n    }\n\n    start = index + 1\n    index = input.indexOf(',', start)\n  }\n\n  return tokens\n}\n\n/**\n * Serialize an array of strings or numbers to comma-separated tokens.\n *\n * @param {Array<string|number>} values\n *   List of tokens.\n * @param {Options} [options]\n *   Configuration for `stringify` (optional).\n * @returns {string}\n *   Comma-separated tokens.\n */\nexport function stringify(values, options) {\n  const settings = options || {}\n\n  // Ensure the last empty entry is seen.\n  const input = values[values.length - 1] === '' ? [...values, ''] : values\n\n  return input\n    .join(\n      (settings.padRight ? ' ' : '') +\n        ',' +\n        (settings.padLeft === false ? '' : ' ')\n    )\n    .trim()\n}\n", "/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Properties} Properties\n */\n\n/**\n * @template {string} SimpleSelector\n *   Selector type.\n * @template {string} DefaultTagName\n *   Default tag name.\n * @typedef {(\n *   SimpleSelector extends ''\n *     ? DefaultTagName\n *     : SimpleSelector extends `${infer TagName}.${infer Rest}`\n *     ? ExtractTagName<TagName, DefaultTagName>\n *     : SimpleSelector extends `${infer TagName}#${infer Rest}`\n *     ? ExtractTagName<TagName, DefaultTagName>\n *     : SimpleSelector extends string\n *     ? SimpleSelector\n *     : DefaultTagName\n * )} ExtractTagName\n *   Extract tag name from a simple selector.\n */\n\nconst search = /[#.]/g\n\n/**\n * Create a hast element from a simple CSS selector.\n *\n * @template {string} Selector\n *   Type of selector.\n * @template {string} [DefaultTagName='div']\n *   Type of default tag name (default: `'div'`).\n * @param {Selector | null | undefined} [selector]\n *   Simple CSS selector (optional).\n *\n *   Can contain a tag name (`foo`), classes (`.bar`), and an ID (`#baz`).\n *   Multiple classes are allowed.\n *   Uses the last ID if multiple IDs are found.\n * @param {DefaultTagName | null | undefined} [defaultTagName='div']\n *   Tag name to use if `selector` does not specify one (default: `'div'`).\n * @returns {Element & {tagName: ExtractTagName<Selector, DefaultTagName>}}\n *   Built element.\n */\nexport function parseSelector(selector, defaultTagName) {\n  const value = selector || ''\n  /** @type {Properties} */\n  const props = {}\n  let start = 0\n  /** @type {string | undefined} */\n  let previous\n  /** @type {string | undefined} */\n  let tagName\n\n  while (start < value.length) {\n    search.lastIndex = start\n    const match = search.exec(value)\n    const subvalue = value.slice(start, match ? match.index : value.length)\n\n    if (subvalue) {\n      if (!previous) {\n        tagName = subvalue\n      } else if (previous === '#') {\n        props.id = subvalue\n      } else if (Array.isArray(props.className)) {\n        props.className.push(subvalue)\n      } else {\n        props.className = [subvalue]\n      }\n\n      start += subvalue.length\n    }\n\n    if (match) {\n      previous = match[0]\n      start++\n    }\n  }\n\n  return {\n    type: 'element',\n    // @ts-expect-error: tag name is parsed.\n    tagName: tagName || defaultTagName || 'div',\n    properties: props,\n    children: []\n  }\n}\n", "/**\n * Parse space-separated tokens to an array of strings.\n *\n * @param {string} value\n *   Space-separated tokens.\n * @returns {Array<string>}\n *   List of tokens.\n */\nexport function parse(value) {\n  const input = String(value || '').trim()\n  return input ? input.split(/[ \\t\\n\\r\\f]+/g) : []\n}\n\n/**\n * Serialize an array of strings as space separated-tokens.\n *\n * @param {Array<string|number>} values\n *   List of tokens.\n * @returns {string}\n *   Space-separated tokens.\n */\nexport function stringify(values) {\n  return values.join(' ').trim()\n}\n", "/**\n * @import {Element, Nodes, RootContent, Root} from 'hast'\n * @import {Info, Schema} from 'property-information'\n */\n\n/**\n * @typedef {Array<Nodes | PrimitiveChild>} ArrayChildNested\n *   List of children (deep).\n */\n\n/**\n * @typedef {Array<ArrayChildNested | Nodes | PrimitiveChild>} ArrayChild\n *   List of children.\n */\n\n/**\n * @typedef {Array<number | string>} ArrayValue\n *   List of property values for space- or comma separated values (such as `className`).\n */\n\n/**\n * @typedef {ArrayChild | Nodes | PrimitiveChild} Child\n *   Acceptable child value.\n */\n\n/**\n * @typedef {number | string | null | undefined} PrimitiveChild\n *   Primitive children, either ignored (nullish), or turned into text nodes.\n */\n\n/**\n * @typedef {boolean | number | string | null | undefined} PrimitiveValue\n *   Primitive property value.\n */\n\n/**\n * @typedef {Record<string, PropertyValue | Style>} Properties\n *   Acceptable value for element properties.\n */\n\n/**\n * @typedef {ArrayValue | PrimitiveValue} PropertyValue\n *   Primitive value or list value.\n */\n\n/**\n * @typedef {Element | Root} Result\n *   Result from a `h` (or `s`) call.\n */\n\n/**\n * @typedef {number | string} StyleValue\n *   Value for a CSS style field.\n */\n\n/**\n * @typedef {Record<string, StyleValue>} Style\n *   Supported value of a `style` prop.\n */\n\nimport {parse as parseCommas} from 'comma-separated-tokens'\nimport {parseSelector} from 'hast-util-parse-selector'\nimport {find, normalize} from 'property-information'\nimport {parse as parseSpaces} from 'space-separated-tokens'\n\n/**\n * @param {Schema} schema\n *   Schema to use.\n * @param {string} defaultTagName\n *   Default tag name.\n * @param {ReadonlyArray<string> | undefined} [caseSensitive]\n *   Case-sensitive tag names (default: `undefined`).\n * @returns\n *   `h`.\n */\nexport function createH(schema, defaultTagName, caseSensitive) {\n  const adjust = caseSensitive ? createAdjustMap(caseSensitive) : undefined\n\n  /**\n   * Hyperscript compatible DSL for creating virtual hast trees.\n   *\n   * @overload\n   * @param {null | undefined} [selector]\n   * @param {...Child} children\n   * @returns {Root}\n   *\n   * @overload\n   * @param {string} selector\n   * @param {Properties} properties\n   * @param {...Child} children\n   * @returns {Element}\n   *\n   * @overload\n   * @param {string} selector\n   * @param {...Child} children\n   * @returns {Element}\n   *\n   * @param {string | null | undefined} [selector]\n   *   Selector.\n   * @param {Child | Properties | null | undefined} [properties]\n   *   Properties (or first child) (default: `undefined`).\n   * @param {...Child} children\n   *   Children.\n   * @returns {Result}\n   *   Result.\n   */\n  function h(selector, properties, ...children) {\n    /** @type {Result} */\n    let node\n\n    if (selector === null || selector === undefined) {\n      node = {type: 'root', children: []}\n      // Properties are not supported for roots.\n      const child = /** @type {Child} */ (properties)\n      children.unshift(child)\n    } else {\n      node = parseSelector(selector, defaultTagName)\n      // Normalize the name.\n      const lower = node.tagName.toLowerCase()\n      const adjusted = adjust ? adjust.get(lower) : undefined\n      node.tagName = adjusted || lower\n\n      // Handle properties.\n      if (isChild(properties)) {\n        children.unshift(properties)\n      } else {\n        for (const [key, value] of Object.entries(properties)) {\n          addProperty(schema, node.properties, key, value)\n        }\n      }\n    }\n\n    // Handle children.\n    for (const child of children) {\n      addChild(node.children, child)\n    }\n\n    if (node.type === 'element' && node.tagName === 'template') {\n      node.content = {type: 'root', children: node.children}\n      node.children = []\n    }\n\n    return node\n  }\n\n  return h\n}\n\n/**\n * Check if something is properties or a child.\n *\n * @param {Child | Properties} value\n *   Value to check.\n * @returns {value is Child}\n *   Whether `value` is definitely a child.\n */\nfunction isChild(value) {\n  // Never properties if not an object.\n  if (value === null || typeof value !== 'object' || Array.isArray(value)) {\n    return true\n  }\n\n  // Never node without `type`; that\u2019s the main discriminator.\n  if (typeof value.type !== 'string') return false\n\n  // Slower check: never property value if object or array with\n  // non-number/strings.\n  const record = /** @type {Record<string, unknown>} */ (value)\n  const keys = Object.keys(value)\n\n  for (const key of keys) {\n    const value = record[key]\n\n    if (value && typeof value === 'object') {\n      if (!Array.isArray(value)) return true\n\n      const list = /** @type {ReadonlyArray<unknown>} */ (value)\n\n      for (const item of list) {\n        if (typeof item !== 'number' && typeof item !== 'string') {\n          return true\n        }\n      }\n    }\n  }\n\n  // Also see empty `children` as a node.\n  if ('children' in value && Array.isArray(value.children)) {\n    return true\n  }\n\n  // Default to properties, someone can always pass an empty object,\n  // put `data: {}` in a node,\n  // or wrap it in an array.\n  return false\n}\n\n/**\n * @param {Schema} schema\n *   Schema.\n * @param {Properties} properties\n *   Properties object.\n * @param {string} key\n *   Property name.\n * @param {PropertyValue | Style} value\n *   Property value.\n * @returns {undefined}\n *   Nothing.\n */\nfunction addProperty(schema, properties, key, value) {\n  const info = find(schema, key)\n  /** @type {PropertyValue} */\n  let result\n\n  // Ignore nullish and NaN values.\n  if (value === null || value === undefined) return\n\n  if (typeof value === 'number') {\n    // Ignore NaN.\n    if (Number.isNaN(value)) return\n\n    result = value\n  }\n  // Booleans.\n  else if (typeof value === 'boolean') {\n    result = value\n  }\n  // Handle list values.\n  else if (typeof value === 'string') {\n    if (info.spaceSeparated) {\n      result = parseSpaces(value)\n    } else if (info.commaSeparated) {\n      result = parseCommas(value)\n    } else if (info.commaOrSpaceSeparated) {\n      result = parseSpaces(parseCommas(value).join(' '))\n    } else {\n      result = parsePrimitive(info, info.property, value)\n    }\n  } else if (Array.isArray(value)) {\n    result = [...value]\n  } else {\n    result = info.property === 'style' ? style(value) : String(value)\n  }\n\n  if (Array.isArray(result)) {\n    /** @type {Array<number | string>} */\n    const finalResult = []\n\n    for (const item of result) {\n      // Assume no booleans in array.\n      finalResult.push(\n        /** @type {number | string} */ (\n          parsePrimitive(info, info.property, item)\n        )\n      )\n    }\n\n    result = finalResult\n  }\n\n  // Class names (which can be added both on the `selector` and here).\n  if (info.property === 'className' && Array.isArray(properties.className)) {\n    // Assume no booleans in `className`.\n    result = properties.className.concat(\n      /** @type {Array<number | string> | number | string} */ (result)\n    )\n  }\n\n  properties[info.property] = result\n}\n\n/**\n * @param {Array<RootContent>} nodes\n *   Children.\n * @param {Child} value\n *   Child.\n * @returns {undefined}\n *   Nothing.\n */\nfunction addChild(nodes, value) {\n  if (value === null || value === undefined) {\n    // Empty.\n  } else if (typeof value === 'number' || typeof value === 'string') {\n    nodes.push({type: 'text', value: String(value)})\n  } else if (Array.isArray(value)) {\n    for (const child of value) {\n      addChild(nodes, child)\n    }\n  } else if (typeof value === 'object' && 'type' in value) {\n    if (value.type === 'root') {\n      addChild(nodes, value.children)\n    } else {\n      nodes.push(value)\n    }\n  } else {\n    throw new Error('Expected node, nodes, or string, got `' + value + '`')\n  }\n}\n\n/**\n * Parse a single primitives.\n *\n * @param {Info} info\n *   Property information.\n * @param {string} name\n *   Property name.\n * @param {PrimitiveValue} value\n *   Property value.\n * @returns {PrimitiveValue}\n *   Property value.\n */\nfunction parsePrimitive(info, name, value) {\n  if (typeof value === 'string') {\n    if (info.number && value && !Number.isNaN(Number(value))) {\n      return Number(value)\n    }\n\n    if (\n      (info.boolean || info.overloadedBoolean) &&\n      (value === '' || normalize(value) === normalize(name))\n    ) {\n      return true\n    }\n  }\n\n  return value\n}\n\n/**\n * Serialize a `style` object as a string.\n *\n * @param {Style} styles\n *   Style object.\n * @returns {string}\n *   CSS string.\n */\nfunction style(styles) {\n  /** @type {Array<string>} */\n  const result = []\n\n  for (const [key, value] of Object.entries(styles)) {\n    result.push([key, value].join(': '))\n  }\n\n  return result.join('; ')\n}\n\n/**\n * Create a map to adjust casing.\n *\n * @param {ReadonlyArray<string>} values\n *   List of properly cased keys.\n * @returns {Map<string, string>}\n *   Map of lowercase keys to uppercase keys.\n */\nfunction createAdjustMap(values) {\n  /** @type {Map<string, string>} */\n  const result = new Map()\n\n  for (const value of values) {\n    result.set(value.toLowerCase(), value)\n  }\n\n  return result\n}\n", "/**\n * List of case-sensitive SVG tag names.\n *\n * @type {ReadonlyArray<string>}\n */\nexport const svgCaseSensitiveTagNames = [\n  'altGlyph',\n  'altGlyphDef',\n  'altGlyphItem',\n  'animateColor',\n  'animateMotion',\n  'animateTransform',\n  'clipPath',\n  'feBlend',\n  'feColorMatrix',\n  'feComponentTransfer',\n  'feComposite',\n  'feConvolveMatrix',\n  'feDiffuseLighting',\n  'feDisplacementMap',\n  'feDistantLight',\n  'feDropShadow',\n  'feFlood',\n  'feFuncA',\n  'feFuncB',\n  'feFuncG',\n  'feFuncR',\n  'feGaussianBlur',\n  'feImage',\n  'feMerge',\n  'feMergeNode',\n  'feMorphology',\n  'feOffset',\n  'fePointLight',\n  'feSpecularLighting',\n  'feSpotLight',\n  'feTile',\n  'feTurbulence',\n  'foreignObject',\n  'glyphRef',\n  'linearGradient',\n  'radialGradient',\n  'solidColor',\n  'textArea',\n  'textPath'\n]\n", "// Register the JSX namespace on `h`.\n/**\n * @typedef {import('./jsx-classic.js').Element} h.JSX.Element\n * @typedef {import('./jsx-classic.js').ElementChildrenAttribute} h.JSX.ElementChildrenAttribute\n * @typedef {import('./jsx-classic.js').IntrinsicAttributes} h.JSX.IntrinsicAttributes\n * @typedef {import('./jsx-classic.js').IntrinsicElements} h.JSX.IntrinsicElements\n */\n\n// Register the JSX namespace on `s`.\n/**\n * @typedef {import('./jsx-classic.js').Element} s.JSX.Element\n * @typedef {import('./jsx-classic.js').ElementChildrenAttribute} s.JSX.ElementChildrenAttribute\n * @typedef {import('./jsx-classic.js').IntrinsicAttributes} s.JSX.IntrinsicAttributes\n * @typedef {import('./jsx-classic.js').IntrinsicElements} s.JSX.IntrinsicElements\n */\n\nimport {html, svg} from 'property-information'\nimport {createH} from './create-h.js'\nimport {svgCaseSensitiveTagNames} from './svg-case-sensitive-tag-names.js'\n\n// Note: this explicit type is needed, otherwise TS creates broken types.\n/** @type {ReturnType<createH>} */\nexport const h = createH(html, 'div')\n\n// Note: this explicit type is needed, otherwise TS creates broken types.\n/** @type {ReturnType<createH>} */\nexport const s = createH(svg, 'g', svgCaseSensitiveTagNames)\n", "/**\n * List of legacy HTML named character references that don\u2019t need a trailing semicolon.\n *\n * @type {Array<string>}\n */\nexport const characterEntitiesLegacy = [\n  'AElig',\n  'AMP',\n  'Aacute',\n  'Acirc',\n  'Agrave',\n  'Aring',\n  'Atilde',\n  'Auml',\n  'COPY',\n  'Ccedil',\n  'ETH',\n  'Eacute',\n  'Ecirc',\n  'Egrave',\n  'Euml',\n  'GT',\n  'Iacute',\n  'Icirc',\n  'Igrave',\n  'Iuml',\n  'LT',\n  'Ntilde',\n  'Oacute',\n  'Ocirc',\n  'Ograve',\n  'Oslash',\n  'Otilde',\n  'Ouml',\n  'QUOT',\n  'REG',\n  'THORN',\n  'Uacute',\n  'Ucirc',\n  'Ugrave',\n  'Uuml',\n  'Yacute',\n  'aacute',\n  'acirc',\n  'acute',\n  'aelig',\n  'agrave',\n  'amp',\n  'aring',\n  'atilde',\n  'auml',\n  'brvbar',\n  'ccedil',\n  'cedil',\n  'cent',\n  'copy',\n  'curren',\n  'deg',\n  'divide',\n  'eacute',\n  'ecirc',\n  'egrave',\n  'eth',\n  'euml',\n  'frac12',\n  'frac14',\n  'frac34',\n  'gt',\n  'iacute',\n  'icirc',\n  'iexcl',\n  'igrave',\n  'iquest',\n  'iuml',\n  'laquo',\n  'lt',\n  'macr',\n  'micro',\n  'middot',\n  'nbsp',\n  'not',\n  'ntilde',\n  'oacute',\n  'ocirc',\n  'ograve',\n  'ordf',\n  'ordm',\n  'oslash',\n  'otilde',\n  'ouml',\n  'para',\n  'plusmn',\n  'pound',\n  'quot',\n  'raquo',\n  'reg',\n  'sect',\n  'shy',\n  'sup1',\n  'sup2',\n  'sup3',\n  'szlig',\n  'thorn',\n  'times',\n  'uacute',\n  'ucirc',\n  'ugrave',\n  'uml',\n  'uuml',\n  'yacute',\n  'yen',\n  'yuml'\n]\n", "/**\n * Map of invalid numeric character references to their replacements, according to HTML.\n *\n * @type {Record<number, string>}\n */\nexport const characterReferenceInvalid = {\n  0: '\uFFFD',\n  128: '\u20AC',\n  130: '\u201A',\n  131: '\u0192',\n  132: '\u201E',\n  133: '\u2026',\n  134: '\u2020',\n  135: '\u2021',\n  136: '\u02C6',\n  137: '\u2030',\n  138: '\u0160',\n  139: '\u2039',\n  140: '\u0152',\n  142: '\u017D',\n  145: '\u2018',\n  146: '\u2019',\n  147: '\u201C',\n  148: '\u201D',\n  149: '\u2022',\n  150: '\u2013',\n  151: '\u2014',\n  152: '\u02DC',\n  153: '\u2122',\n  154: '\u0161',\n  155: '\u203A',\n  156: '\u0153',\n  158: '\u017E',\n  159: '\u0178'\n}\n", "/**\n * Check if the given character code, or the character code at the first\n * character, is decimal.\n *\n * @param {string|number} character\n * @returns {boolean} Whether `character` is a decimal\n */\nexport function isDecimal(character) {\n  const code =\n    typeof character === 'string' ? character.charCodeAt(0) : character\n\n  return code >= 48 && code <= 57 /* 0-9 */\n}\n", "/**\n * Check if the given character code, or the character code at the first\n * character, is hexadecimal.\n *\n * @param {string|number} character\n * @returns {boolean} Whether `character` is hexadecimal\n */\nexport function isHexadecimal(character) {\n  const code =\n    typeof character === 'string' ? character.charCodeAt(0) : character\n\n  return (\n    (code >= 97 /* a */ && code <= 102) /* z */ ||\n    (code >= 65 /* A */ && code <= 70) /* Z */ ||\n    (code >= 48 /* A */ && code <= 57) /* Z */\n  )\n}\n", "/**\n * Check if the given character code, or the character code at the first\n * character, is alphabetical.\n *\n * @param {string|number} character\n * @returns {boolean} Whether `character` is alphabetical.\n */\nexport function isAlphabetical(character) {\n  const code =\n    typeof character === 'string' ? character.charCodeAt(0) : character\n\n  return (\n    (code >= 97 && code <= 122) /* a-z */ ||\n    (code >= 65 && code <= 90) /* A-Z */\n  )\n}\n", "import {isAlphabetical} from 'is-alphabetical'\nimport {isDecimal} from 'is-decimal'\n\n/**\n * Check if the given character code, or the character code at the first\n * character, is alphanumerical.\n *\n * @param {string|number} character\n * @returns {boolean} Whether `character` is alphanumerical.\n */\nexport function isAlphanumerical(character) {\n  return isAlphabetical(character) || isDecimal(character)\n}\n", "/// <reference lib=\"dom\" />\n\n/* global document */\n\nconst element = document.createElement('i')\n\n/**\n * @param {string} value\n * @returns {string | false}\n */\nexport function decodeNamedCharacterReference(value) {\n  const characterReference = '&' + value + ';'\n  element.innerHTML = characterReference\n  const character = element.textContent\n\n  // Some named character references do not require the closing semicolon\n  // (`&not`, for instance), which leads to situations where parsing the assumed\n  // named reference of `&notit;` will result in the string `\u00ACit;`.\n  // When we encounter a trailing semicolon after parsing, and the character\n  // reference to decode was not a semicolon (`&semi;`), we can assume that the\n  // matching was not complete.\n  if (\n    character.charCodeAt(character.length - 1) === 59 /* `;` */ &&\n    value !== 'semi'\n  ) {\n    return false\n  }\n\n  // If the decoded string is equal to the input, the character reference was\n  // not valid.\n  return character === characterReference ? false : character\n}\n", "/**\n * @import {Point} from 'unist'\n * @import {Options} from '../index.js'\n */\n\nimport {characterEntitiesLegacy} from 'character-entities-legacy'\nimport {characterReferenceInvalid} from 'character-reference-invalid'\nimport {isDecimal} from 'is-decimal'\nimport {isHexadecimal} from 'is-hexadecimal'\nimport {isAlphanumerical} from 'is-alphanumerical'\nimport {decodeNamedCharacterReference} from 'decode-named-character-reference'\n\n// Warning messages.\nconst messages = [\n  '',\n  /* 1: Non terminated (named) */\n  'Named character references must be terminated by a semicolon',\n  /* 2: Non terminated (numeric) */\n  'Numeric character references must be terminated by a semicolon',\n  /* 3: Empty (named) */\n  'Named character references cannot be empty',\n  /* 4: Empty (numeric) */\n  'Numeric character references cannot be empty',\n  /* 5: Unknown (named) */\n  'Named character references must be known',\n  /* 6: Disallowed (numeric) */\n  'Numeric character references cannot be disallowed',\n  /* 7: Prohibited (numeric) */\n  'Numeric character references cannot be outside the permissible Unicode range'\n]\n\n/**\n * Parse HTML character references.\n *\n * @param {string} value\n * @param {Readonly<Options> | null | undefined} [options]\n */\nexport function parseEntities(value, options) {\n  const settings = options || {}\n  const additional =\n    typeof settings.additional === 'string'\n      ? settings.additional.charCodeAt(0)\n      : settings.additional\n  /** @type {Array<string>} */\n  const result = []\n  let index = 0\n  let lines = -1\n  let queue = ''\n  /** @type {Point | undefined} */\n  let point\n  /** @type {Array<number>|undefined} */\n  let indent\n\n  if (settings.position) {\n    if ('start' in settings.position || 'indent' in settings.position) {\n      // @ts-expect-error: points don\u2019t have indent.\n      indent = settings.position.indent\n      // @ts-expect-error: points don\u2019t have indent.\n      point = settings.position.start\n    } else {\n      point = settings.position\n    }\n  }\n\n  let line = (point ? point.line : 0) || 1\n  let column = (point ? point.column : 0) || 1\n\n  // Cache the current point.\n  let previous = now()\n  /** @type {number|undefined} */\n  let character\n\n  // Ensure the algorithm walks over the first character (inclusive).\n  index--\n\n  while (++index <= value.length) {\n    // If the previous character was a newline.\n    if (character === 10 /* `\\n` */) {\n      column = (indent ? indent[lines] : 0) || 1\n    }\n\n    character = value.charCodeAt(index)\n\n    if (character === 38 /* `&` */) {\n      const following = value.charCodeAt(index + 1)\n\n      // The behavior depends on the identity of the next character.\n      if (\n        following === 9 /* `\\t` */ ||\n        following === 10 /* `\\n` */ ||\n        following === 12 /* `\\f` */ ||\n        following === 32 /* ` ` */ ||\n        following === 38 /* `&` */ ||\n        following === 60 /* `<` */ ||\n        Number.isNaN(following) ||\n        (additional && following === additional)\n      ) {\n        // Not a character reference.\n        // No characters are consumed, and nothing is returned.\n        // This is not an error, either.\n        queue += String.fromCharCode(character)\n        column++\n        continue\n      }\n\n      const start = index + 1\n      let begin = start\n      let end = start\n      /** @type {string} */\n      let type\n\n      if (following === 35 /* `#` */) {\n        // Numerical reference.\n        end = ++begin\n\n        // The behavior further depends on the next character.\n        const following = value.charCodeAt(end)\n\n        if (following === 88 /* `X` */ || following === 120 /* `x` */) {\n          // ASCII hexadecimal digits.\n          type = 'hexadecimal'\n          end = ++begin\n        } else {\n          // ASCII decimal digits.\n          type = 'decimal'\n        }\n      } else {\n        // Named reference.\n        type = 'named'\n      }\n\n      let characterReferenceCharacters = ''\n      let characterReference = ''\n      let characters = ''\n      // Each type of character reference accepts different characters.\n      // This test is used to detect whether a reference has ended (as the semicolon\n      // is not strictly needed).\n      const test =\n        type === 'named'\n          ? isAlphanumerical\n          : type === 'decimal'\n            ? isDecimal\n            : isHexadecimal\n\n      end--\n\n      while (++end <= value.length) {\n        const following = value.charCodeAt(end)\n\n        if (!test(following)) {\n          break\n        }\n\n        characters += String.fromCharCode(following)\n\n        // Check if we can match a legacy named reference.\n        // If so, we cache that as the last viable named reference.\n        // This ensures we do not need to walk backwards later.\n        if (type === 'named' && characterEntitiesLegacy.includes(characters)) {\n          characterReferenceCharacters = characters\n          // @ts-expect-error: always able to decode.\n          characterReference = decodeNamedCharacterReference(characters)\n        }\n      }\n\n      let terminated = value.charCodeAt(end) === 59 /* `;` */\n\n      if (terminated) {\n        end++\n\n        const namedReference =\n          type === 'named' ? decodeNamedCharacterReference(characters) : false\n\n        if (namedReference) {\n          characterReferenceCharacters = characters\n          characterReference = namedReference\n        }\n      }\n\n      let diff = 1 + end - start\n      let reference = ''\n\n      if (!terminated && settings.nonTerminated === false) {\n        // Empty.\n      } else if (!characters) {\n        // An empty (possible) reference is valid, unless it\u2019s numeric (thus an\n        // ampersand followed by an octothorp).\n        if (type !== 'named') {\n          warning(4 /* Empty (numeric) */, diff)\n        }\n      } else if (type === 'named') {\n        // An ampersand followed by anything unknown, and not terminated, is\n        // invalid.\n        if (terminated && !characterReference) {\n          warning(5 /* Unknown (named) */, 1)\n        } else {\n          // If there\u2019s something after an named reference which is not known,\n          // cap the reference.\n          if (characterReferenceCharacters !== characters) {\n            end = begin + characterReferenceCharacters.length\n            diff = 1 + end - begin\n            terminated = false\n          }\n\n          // If the reference is not terminated, warn.\n          if (!terminated) {\n            const reason = characterReferenceCharacters\n              ? 1 /* Non terminated (named) */\n              : 3 /* Empty (named) */\n\n            if (settings.attribute) {\n              const following = value.charCodeAt(end)\n\n              if (following === 61 /* `=` */) {\n                warning(reason, diff)\n                characterReference = ''\n              } else if (isAlphanumerical(following)) {\n                characterReference = ''\n              } else {\n                warning(reason, diff)\n              }\n            } else {\n              warning(reason, diff)\n            }\n          }\n        }\n\n        reference = characterReference\n      } else {\n        if (!terminated) {\n          // All nonterminated numeric references are not rendered, and emit a\n          // warning.\n          warning(2 /* Non terminated (numeric) */, diff)\n        }\n\n        // When terminated and numerical, parse as either hexadecimal or\n        // decimal.\n        let referenceCode = Number.parseInt(\n          characters,\n          type === 'hexadecimal' ? 16 : 10\n        )\n\n        // Emit a warning when the parsed number is prohibited, and replace with\n        // replacement character.\n        if (prohibited(referenceCode)) {\n          warning(7 /* Prohibited (numeric) */, diff)\n          reference = String.fromCharCode(65533 /* `\uFFFD` */)\n        } else if (referenceCode in characterReferenceInvalid) {\n          // Emit a warning when the parsed number is disallowed, and replace by\n          // an alternative.\n          warning(6 /* Disallowed (numeric) */, diff)\n          reference = characterReferenceInvalid[referenceCode]\n        } else {\n          // Parse the number.\n          let output = ''\n\n          // Emit a warning when the parsed number should not be used.\n          if (disallowed(referenceCode)) {\n            warning(6 /* Disallowed (numeric) */, diff)\n          }\n\n          // Serialize the number.\n          if (referenceCode > 0xffff) {\n            referenceCode -= 0x10000\n            output += String.fromCharCode(\n              (referenceCode >>> (10 & 0x3ff)) | 0xd800\n            )\n            referenceCode = 0xdc00 | (referenceCode & 0x3ff)\n          }\n\n          reference = output + String.fromCharCode(referenceCode)\n        }\n      }\n\n      // Found it!\n      // First eat the queued characters as normal text, then eat a reference.\n      if (reference) {\n        flush()\n\n        previous = now()\n        index = end - 1\n        column += end - start + 1\n        result.push(reference)\n        const next = now()\n        next.offset++\n\n        if (settings.reference) {\n          settings.reference.call(\n            settings.referenceContext || undefined,\n            reference,\n            {start: previous, end: next},\n            value.slice(start - 1, end)\n          )\n        }\n\n        previous = next\n      } else {\n        // If we could not find a reference, queue the checked characters (as\n        // normal characters), and move the pointer to their end.\n        // This is possible because we can be certain neither newlines nor\n        // ampersands are included.\n        characters = value.slice(start - 1, end)\n        queue += characters\n        column += characters.length\n        index = end - 1\n      }\n    } else {\n      // Handle anything other than an ampersand, including newlines and EOF.\n      if (character === 10 /* `\\n` */) {\n        line++\n        lines++\n        column = 0\n      }\n\n      if (Number.isNaN(character)) {\n        flush()\n      } else {\n        queue += String.fromCharCode(character)\n        column++\n      }\n    }\n  }\n\n  // Return the reduced nodes.\n  return result.join('')\n\n  // Get current position.\n  function now() {\n    return {\n      line,\n      column,\n      offset: index + ((point ? point.offset : 0) || 0)\n    }\n  }\n\n  /**\n   * Handle the warning.\n   *\n   * @param {1|2|3|4|5|6|7} code\n   * @param {number} offset\n   */\n  function warning(code, offset) {\n    /** @type {ReturnType<now>} */\n    let position\n\n    if (settings.warning) {\n      position = now()\n      position.column += offset\n      position.offset += offset\n\n      settings.warning.call(\n        settings.warningContext || undefined,\n        messages[code],\n        position,\n        code\n      )\n    }\n  }\n\n  /**\n   * Flush `queue` (normal text).\n   * Macro invoked before each reference and at the end of `value`.\n   * Does nothing when `queue` is empty.\n   */\n  function flush() {\n    if (queue) {\n      result.push(queue)\n\n      if (settings.text) {\n        settings.text.call(settings.textContext || undefined, queue, {\n          start: previous,\n          end: now()\n        })\n      }\n\n      queue = ''\n    }\n  }\n}\n\n/**\n * Check if `character` is outside the permissible unicode range.\n *\n * @param {number} code\n * @returns {boolean}\n */\nfunction prohibited(code) {\n  return (code >= 0xd800 && code <= 0xdfff) || code > 0x10ffff\n}\n\n/**\n * Check if `character` is disallowed.\n *\n * @param {number} code\n * @returns {boolean}\n */\nfunction disallowed(code) {\n  return (\n    (code >= 0x0001 && code <= 0x0008) ||\n    code === 0x000b ||\n    (code >= 0x000d && code <= 0x001f) ||\n    (code >= 0x007f && code <= 0x009f) ||\n    (code >= 0xfdd0 && code <= 0xfdef) ||\n    (code & 0xffff) === 0xffff ||\n    (code & 0xffff) === 0xfffe\n  )\n}\n", "// @ts-nocheck\n\n// This is a slimmed down version of `prism-core.js`, to remove globals,\n// document, workers, `util.encode`, `Token.stringify`\n\n// Private helper vars\nvar lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i\nvar uniqueId = 0\n\n// The grammar object for plaintext\nvar plainTextGrammar = {}\n\nvar _ = {\n  /**\n   * A namespace for utility methods.\n   *\n   * All function in this namespace that are not explicitly marked as _public_ are for __internal use only__ and may\n   * change or disappear at any time.\n   *\n   * @namespace\n   * @memberof Prism\n   */\n  util: {\n    /**\n     * Returns the name of the type of the given value.\n     *\n     * @param {any} o\n     * @returns {string}\n     * @example\n     * type(null)      === 'Null'\n     * type(undefined) === 'Undefined'\n     * type(123)       === 'Number'\n     * type('foo')     === 'String'\n     * type(true)      === 'Boolean'\n     * type([1, 2])    === 'Array'\n     * type({})        === 'Object'\n     * type(String)    === 'Function'\n     * type(/abc+/)    === 'RegExp'\n     */\n    type: function (o) {\n      return Object.prototype.toString.call(o).slice(8, -1)\n    },\n\n    /**\n     * Returns a unique number for the given object. Later calls will still return the same number.\n     *\n     * @param {Object} obj\n     * @returns {number}\n     */\n    objId: function (obj) {\n      if (!obj['__id']) {\n        Object.defineProperty(obj, '__id', {value: ++uniqueId})\n      }\n      return obj['__id']\n    },\n\n    /**\n     * Creates a deep clone of the given object.\n     *\n     * The main intended use of this function is to clone language definitions.\n     *\n     * @param {T} o\n     * @param {Record<number, any>} [visited]\n     * @returns {T}\n     * @template T\n     */\n    clone: function deepClone(o, visited) {\n      visited = visited || {}\n\n      var clone\n      var id\n      switch (_.util.type(o)) {\n        case 'Object':\n          id = _.util.objId(o)\n          if (visited[id]) {\n            return visited[id]\n          }\n          clone = /** @type {Record<string, any>} */ ({})\n          visited[id] = clone\n\n          for (var key in o) {\n            if (o.hasOwnProperty(key)) {\n              clone[key] = deepClone(o[key], visited)\n            }\n          }\n\n          return /** @type {any} */ (clone)\n\n        case 'Array':\n          id = _.util.objId(o)\n          if (visited[id]) {\n            return visited[id]\n          }\n          clone = []\n          visited[id] = clone\n\n          ;/** @type {Array} */ (/** @type {any} */ (o)).forEach(\n            function (v, i) {\n              clone[i] = deepClone(v, visited)\n            }\n          )\n\n          return /** @type {any} */ (clone)\n\n        default:\n          return o\n      }\n    }\n  },\n\n  /**\n   * This namespace contains all currently loaded languages and the some helper functions to create and modify languages.\n   *\n   * @namespace\n   * @memberof Prism\n   * @public\n   */\n  languages: {\n    /**\n     * The grammar for plain, unformatted text.\n     */\n    plain: plainTextGrammar,\n    plaintext: plainTextGrammar,\n    text: plainTextGrammar,\n    txt: plainTextGrammar,\n\n    /**\n     * Creates a deep copy of the language with the given id and appends the given tokens.\n     *\n     * If a token in `redef` also appears in the copied language, then the existing token in the copied language\n     * will be overwritten at its original position.\n     *\n     * ## Best practices\n     *\n     * Since the position of overwriting tokens (token in `redef` that overwrite tokens in the copied language)\n     * doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to\n     * understand the language definition because, normally, the order of tokens matters in Prism grammars.\n     *\n     * Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens.\n     * Furthermore, all non-overwriting tokens should be placed after the overwriting ones.\n     *\n     * @param {string} id The id of the language to extend. This has to be a key in `Prism.languages`.\n     * @param {Grammar} redef The new tokens to append.\n     * @returns {Grammar} The new language created.\n     * @public\n     * @example\n     * Prism.languages['css-with-colors'] = Prism.languages.extend('css', {\n     *     // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token\n     *     // at its original position\n     *     'comment': { ... },\n     *     // CSS doesn't have a 'color' token, so this token will be appended\n     *     'color': /\\b(?:red|green|blue)\\b/\n     * });\n     */\n    extend: function (id, redef) {\n      var lang = _.util.clone(_.languages[id])\n\n      for (var key in redef) {\n        lang[key] = redef[key]\n      }\n\n      return lang\n    },\n\n    /**\n     * Inserts tokens _before_ another token in a language definition or any other grammar.\n     *\n     * ## Usage\n     *\n     * This helper method makes it easy to modify existing languages. For example, the CSS language definition\n     * not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded\n     * in HTML through `<style>` elements. To do this, it needs to modify `Prism.languages.markup` and add the\n     * appropriate tokens. However, `Prism.languages.markup` is a regular JavaScript object literal, so if you do\n     * this:\n     *\n     * ```js\n     * Prism.languages.markup.style = {\n     *     // token\n     * };\n     * ```\n     *\n     * then the `style` token will be added (and processed) at the end. `insertBefore` allows you to insert tokens\n     * before existing tokens. For the CSS example above, you would use it like this:\n     *\n     * ```js\n     * Prism.languages.insertBefore('markup', 'cdata', {\n     *     'style': {\n     *         // token\n     *     }\n     * });\n     * ```\n     *\n     * ## Special cases\n     *\n     * If the grammars of `inside` and `insert` have tokens with the same name, the tokens in `inside`'s grammar\n     * will be ignored.\n     *\n     * This behavior can be used to insert tokens after `before`:\n     *\n     * ```js\n     * Prism.languages.insertBefore('markup', 'comment', {\n     *     'comment': Prism.languages.markup.comment,\n     *     // tokens after 'comment'\n     * });\n     * ```\n     *\n     * ## Limitations\n     *\n     * The main problem `insertBefore` has to solve is iteration order. Since ES2015, the iteration order for object\n     * properties is guaranteed to be the insertion order (except for integer keys) but some browsers behave\n     * differently when keys are deleted and re-inserted. So `insertBefore` can't be implemented by temporarily\n     * deleting properties which is necessary to insert at arbitrary positions.\n     *\n     * To solve this problem, `insertBefore` doesn't actually insert the given tokens into the target object.\n     * Instead, it will create a new object and replace all references to the target object with the new one. This\n     * can be done without temporarily deleting properties, so the iteration order is well-defined.\n     *\n     * However, only references that can be reached from `Prism.languages` or `insert` will be replaced. I.e. if\n     * you hold the target object in a variable, then the value of the variable will not change.\n     *\n     * ```js\n     * var oldMarkup = Prism.languages.markup;\n     * var newMarkup = Prism.languages.insertBefore('markup', 'comment', { ... });\n     *\n     * assert(oldMarkup !== Prism.languages.markup);\n     * assert(newMarkup === Prism.languages.markup);\n     * ```\n     *\n     * @param {string} inside The property of `root` (e.g. a language id in `Prism.languages`) that contains the\n     * object to be modified.\n     * @param {string} before The key to insert before.\n     * @param {Grammar} insert An object containing the key-value pairs to be inserted.\n     * @param {Object<string, any>} [root] The object containing `inside`, i.e. the object that contains the\n     * object to be modified.\n     *\n     * Defaults to `Prism.languages`.\n     * @returns {Grammar} The new grammar object.\n     * @public\n     */\n    insertBefore: function (inside, before, insert, root) {\n      root = root || /** @type {any} */ (_.languages)\n      var grammar = root[inside]\n      /** @type {Grammar} */\n      var ret = {}\n\n      for (var token in grammar) {\n        if (grammar.hasOwnProperty(token)) {\n          if (token == before) {\n            for (var newToken in insert) {\n              if (insert.hasOwnProperty(newToken)) {\n                ret[newToken] = insert[newToken]\n              }\n            }\n          }\n\n          // Do not insert token which also occur in insert. See #1525\n          if (!insert.hasOwnProperty(token)) {\n            ret[token] = grammar[token]\n          }\n        }\n      }\n\n      var old = root[inside]\n      root[inside] = ret\n\n      // Update references in other language definitions\n      _.languages.DFS(_.languages, function (key, value) {\n        if (value === old && key != inside) {\n          this[key] = ret\n        }\n      })\n\n      return ret\n    },\n\n    // Traverse a language definition with Depth First Search\n    DFS: function DFS(o, callback, type, visited) {\n      visited = visited || {}\n\n      var objId = _.util.objId\n\n      for (var i in o) {\n        if (o.hasOwnProperty(i)) {\n          callback.call(o, i, o[i], type || i)\n\n          var property = o[i]\n          var propertyType = _.util.type(property)\n\n          if (propertyType === 'Object' && !visited[objId(property)]) {\n            visited[objId(property)] = true\n            DFS(property, callback, null, visited)\n          } else if (propertyType === 'Array' && !visited[objId(property)]) {\n            visited[objId(property)] = true\n            DFS(property, callback, i, visited)\n          }\n        }\n      }\n    }\n  },\n\n  plugins: {},\n\n  /**\n   * Low-level function, only use if you know what you\u2019re doing. It accepts a string of text as input\n   * and the language definitions to use, and returns a string with the HTML produced.\n   *\n   * The following hooks will be run:\n   * 1. `before-tokenize`\n   * 2. `after-tokenize`\n   * 3. `wrap`: On each {@link Token}.\n   *\n   * @param {string} text A string with the code to be highlighted.\n   * @param {Grammar} grammar An object containing the tokens to use.\n   *\n   * Usually a language definition like `Prism.languages.markup`.\n   * @param {string} language The name of the language definition passed to `grammar`.\n   * @returns {string} The highlighted HTML.\n   * @memberof Prism\n   * @public\n   * @example\n   * Prism.highlight('var foo = true;', Prism.languages.javascript, 'javascript');\n   */\n  highlight: function (text, grammar, language) {\n    var env = {\n      code: text,\n      grammar: grammar,\n      language: language\n    }\n    _.hooks.run('before-tokenize', env)\n    if (!env.grammar) {\n      throw new Error('The language \"' + env.language + '\" has no grammar.')\n    }\n    env.tokens = _.tokenize(env.code, env.grammar)\n    _.hooks.run('after-tokenize', env)\n    return Token.stringify(_.util.encode(env.tokens), env.language)\n  },\n\n  /**\n   * This is the heart of Prism, and the most low-level function you can use. It accepts a string of text as input\n   * and the language definitions to use, and returns an array with the tokenized code.\n   *\n   * When the language definition includes nested tokens, the function is called recursively on each of these tokens.\n   *\n   * This method could be useful in other contexts as well, as a very crude parser.\n   *\n   * @param {string} text A string with the code to be highlighted.\n   * @param {Grammar} grammar An object containing the tokens to use.\n   *\n   * Usually a language definition like `Prism.languages.markup`.\n   * @returns {TokenStream} An array of strings and tokens, a token stream.\n   * @memberof Prism\n   * @public\n   * @example\n   * let code = `var foo = 0;`;\n   * let tokens = Prism.tokenize(code, Prism.languages.javascript);\n   * tokens.forEach(token => {\n   *     if (token instanceof Prism.Token && token.type === 'number') {\n   *         console.log(`Found numeric literal: ${token.content}`);\n   *     }\n   * });\n   */\n  tokenize: function (text, grammar) {\n    var rest = grammar.rest\n    if (rest) {\n      for (var token in rest) {\n        grammar[token] = rest[token]\n      }\n\n      delete grammar.rest\n    }\n\n    var tokenList = new LinkedList()\n    addAfter(tokenList, tokenList.head, text)\n\n    matchGrammar(text, tokenList, grammar, tokenList.head, 0)\n\n    return toArray(tokenList)\n  },\n\n  /**\n   * @namespace\n   * @memberof Prism\n   * @public\n   */\n  hooks: {\n    all: {},\n\n    /**\n     * Adds the given callback to the list of callbacks for the given hook.\n     *\n     * The callback will be invoked when the hook it is registered for is run.\n     * Hooks are usually directly run by a highlight function but you can also run hooks yourself.\n     *\n     * One callback function can be registered to multiple hooks and the same hook multiple times.\n     *\n     * @param {string} name The name of the hook.\n     * @param {HookCallback} callback The callback function which is given environment variables.\n     * @public\n     */\n    add: function (name, callback) {\n      var hooks = _.hooks.all\n\n      hooks[name] = hooks[name] || []\n\n      hooks[name].push(callback)\n    },\n\n    /**\n     * Runs a hook invoking all registered callbacks with the given environment variables.\n     *\n     * Callbacks will be invoked synchronously and in the order in which they were registered.\n     *\n     * @param {string} name The name of the hook.\n     * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered.\n     * @public\n     */\n    run: function (name, env) {\n      var callbacks = _.hooks.all[name]\n\n      if (!callbacks || !callbacks.length) {\n        return\n      }\n\n      for (var i = 0, callback; (callback = callbacks[i++]); ) {\n        callback(env)\n      }\n    }\n  },\n\n  Token: Token\n}\n\n// Typescript note:\n// The following can be used to import the Token type in JSDoc:\n//\n//   @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token\n\n/**\n * Creates a new token.\n *\n * @param {string} type See {@link Token#type type}\n * @param {string | TokenStream} content See {@link Token#content content}\n * @param {string|string[]} [alias] The alias(es) of the token.\n * @param {string} [matchedStr=\"\"] A copy of the full string this token was created from.\n * @class\n * @global\n * @public\n */\nfunction Token(type, content, alias, matchedStr) {\n  /**\n   * The type of the token.\n   *\n   * This is usually the key of a pattern in a {@link Grammar}.\n   *\n   * @type {string}\n   * @see GrammarToken\n   * @public\n   */\n  this.type = type\n  /**\n   * The strings or tokens contained by this token.\n   *\n   * This will be a token stream if the pattern matched also defined an `inside` grammar.\n   *\n   * @type {string | TokenStream}\n   * @public\n   */\n  this.content = content\n  /**\n   * The alias(es) of the token.\n   *\n   * @type {string|string[]}\n   * @see GrammarToken\n   * @public\n   */\n  this.alias = alias\n  // Copy of the full string this token was created from\n  this.length = (matchedStr || '').length | 0\n}\n\n/**\n * A token stream is an array of strings and {@link Token Token} objects.\n *\n * Token streams have to fulfill a few properties that are assumed by most functions (mostly internal ones) that process\n * them.\n *\n * 1. No adjacent strings.\n * 2. No empty strings.\n *\n *    The only exception here is the token stream that only contains the empty string and nothing else.\n *\n * @typedef {Array<string | Token>} TokenStream\n * @global\n * @public\n */\n\n/**\n * @param {RegExp} pattern\n * @param {number} pos\n * @param {string} text\n * @param {boolean} lookbehind\n * @returns {RegExpExecArray | null}\n */\nfunction matchPattern(pattern, pos, text, lookbehind) {\n  pattern.lastIndex = pos\n  var match = pattern.exec(text)\n  if (match && lookbehind && match[1]) {\n    // change the match to remove the text matched by the Prism lookbehind group\n    var lookbehindLength = match[1].length\n    match.index += lookbehindLength\n    match[0] = match[0].slice(lookbehindLength)\n  }\n  return match\n}\n\n/**\n * @param {string} text\n * @param {LinkedList<string | Token>} tokenList\n * @param {any} grammar\n * @param {LinkedListNode<string | Token>} startNode\n * @param {number} startPos\n * @param {RematchOptions} [rematch]\n * @returns {void}\n * @private\n *\n * @typedef RematchOptions\n * @property {string} cause\n * @property {number} reach\n */\nfunction matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) {\n  for (var token in grammar) {\n    if (!grammar.hasOwnProperty(token) || !grammar[token]) {\n      continue\n    }\n\n    var patterns = grammar[token]\n    patterns = Array.isArray(patterns) ? patterns : [patterns]\n\n    for (var j = 0; j < patterns.length; ++j) {\n      if (rematch && rematch.cause == token + ',' + j) {\n        return\n      }\n\n      var patternObj = patterns[j]\n      var inside = patternObj.inside\n      var lookbehind = !!patternObj.lookbehind\n      var greedy = !!patternObj.greedy\n      var alias = patternObj.alias\n\n      if (greedy && !patternObj.pattern.global) {\n        // Without the global flag, lastIndex won't work\n        var flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0]\n        patternObj.pattern = RegExp(patternObj.pattern.source, flags + 'g')\n      }\n\n      /** @type {RegExp} */\n      var pattern = patternObj.pattern || patternObj\n\n      for (\n        // iterate the token list and keep track of the current token/string position\n        var currentNode = startNode.next, pos = startPos;\n        currentNode !== tokenList.tail;\n        pos += currentNode.value.length, currentNode = currentNode.next\n      ) {\n        if (rematch && pos >= rematch.reach) {\n          break\n        }\n\n        var str = currentNode.value\n\n        if (tokenList.length > text.length) {\n          // Something went terribly wrong, ABORT, ABORT!\n          return\n        }\n\n        if (str instanceof Token) {\n          continue\n        }\n\n        var removeCount = 1 // this is the to parameter of removeBetween\n        var match\n\n        if (greedy) {\n          match = matchPattern(pattern, pos, text, lookbehind)\n          if (!match || match.index >= text.length) {\n            break\n          }\n\n          var from = match.index\n          var to = match.index + match[0].length\n          var p = pos\n\n          // find the node that contains the match\n          p += currentNode.value.length\n          while (from >= p) {\n            currentNode = currentNode.next\n            p += currentNode.value.length\n          }\n          // adjust pos (and p)\n          p -= currentNode.value.length\n          pos = p\n\n          // the current node is a Token, then the match starts inside another Token, which is invalid\n          if (currentNode.value instanceof Token) {\n            continue\n          }\n\n          // find the last node which is affected by this match\n          for (\n            var k = currentNode;\n            k !== tokenList.tail && (p < to || typeof k.value === 'string');\n            k = k.next\n          ) {\n            removeCount++\n            p += k.value.length\n          }\n          removeCount--\n\n          // replace with the new match\n          str = text.slice(pos, p)\n          match.index -= pos\n        } else {\n          match = matchPattern(pattern, 0, str, lookbehind)\n          if (!match) {\n            continue\n          }\n        }\n\n        // eslint-disable-next-line no-redeclare\n        var from = match.index\n        var matchStr = match[0]\n        var before = str.slice(0, from)\n        var after = str.slice(from + matchStr.length)\n\n        var reach = pos + str.length\n        if (rematch && reach > rematch.reach) {\n          rematch.reach = reach\n        }\n\n        var removeFrom = currentNode.prev\n\n        if (before) {\n          removeFrom = addAfter(tokenList, removeFrom, before)\n          pos += before.length\n        }\n\n        removeRange(tokenList, removeFrom, removeCount)\n\n        var wrapped = new Token(\n          token,\n          inside ? _.tokenize(matchStr, inside) : matchStr,\n          alias,\n          matchStr\n        )\n        currentNode = addAfter(tokenList, removeFrom, wrapped)\n\n        if (after) {\n          addAfter(tokenList, currentNode, after)\n        }\n\n        if (removeCount > 1) {\n          // at least one Token object was removed, so we have to do some rematching\n          // this can only happen if the current pattern is greedy\n\n          /** @type {RematchOptions} */\n          var nestedRematch = {\n            cause: token + ',' + j,\n            reach: reach\n          }\n          matchGrammar(\n            text,\n            tokenList,\n            grammar,\n            currentNode.prev,\n            pos,\n            nestedRematch\n          )\n\n          // the reach might have been extended because of the rematching\n          if (rematch && nestedRematch.reach > rematch.reach) {\n            rematch.reach = nestedRematch.reach\n          }\n        }\n      }\n    }\n  }\n}\n\n/**\n * @typedef LinkedListNode\n * @property {T} value\n * @property {LinkedListNode<T> | null} prev The previous node.\n * @property {LinkedListNode<T> | null} next The next node.\n * @template T\n * @private\n */\n\n/**\n * @template T\n * @private\n */\nfunction LinkedList() {\n  /** @type {LinkedListNode<T>} */\n  var head = {value: null, prev: null, next: null}\n  /** @type {LinkedListNode<T>} */\n  var tail = {value: null, prev: head, next: null}\n  head.next = tail\n\n  /** @type {LinkedListNode<T>} */\n  this.head = head\n  /** @type {LinkedListNode<T>} */\n  this.tail = tail\n  this.length = 0\n}\n\n/**\n * Adds a new node with the given value to the list.\n *\n * @param {LinkedList<T>} list\n * @param {LinkedListNode<T>} node\n * @param {T} value\n * @returns {LinkedListNode<T>} The added node.\n * @template T\n */\nfunction addAfter(list, node, value) {\n  // assumes that node != list.tail && values.length >= 0\n  var next = node.next\n\n  var newNode = {value: value, prev: node, next: next}\n  node.next = newNode\n  next.prev = newNode\n  list.length++\n\n  return newNode\n}\n/**\n * Removes `count` nodes after the given node. The given node will not be removed.\n *\n * @param {LinkedList<T>} list\n * @param {LinkedListNode<T>} node\n * @param {number} count\n * @template T\n */\nfunction removeRange(list, node, count) {\n  var next = node.next\n  for (var i = 0; i < count && next !== list.tail; i++) {\n    next = next.next\n  }\n  node.next = next\n  next.prev = node\n  list.length -= i\n}\n/**\n * @param {LinkedList<T>} list\n * @returns {T[]}\n * @template T\n */\nfunction toArray(list) {\n  var array = []\n  var node = list.head.next\n  while (node !== list.tail) {\n    array.push(node.value)\n    node = node.next\n  }\n  return array\n}\n\nexport const Prism = _\n", "/**\n * @import {Element, Root, Text} from 'hast'\n * @import {Grammar, Languages} from 'prismjs'\n */\n\n/**\n * @typedef _Token\n *   Hidden Prism token.\n * @property {string} alias\n *   Alias.\n * @property {string} content\n *   Content.\n * @property {number} length\n *   Length.\n * @property {string} type\n *   Type.\n */\n\n/**\n * @typedef _Env\n *   Hidden Prism environment.\n * @property {Record<string, string>} attributes\n *   Attributes.\n * @property {Array<string>} classes\n *   Classes.\n * @property {Array<Element | Text> | Element | Text} content\n *   Content.\n * @property {string} language\n *   Language.\n * @property {string} tag\n *   Tag.\n * @property {string} type\n *   Type.\n */\n\n/**\n * @typedef {((prism: Refractor) => undefined | void) & {aliases?: Array<string> | undefined, displayName: string}} Syntax\n *   Refractor syntax function.\n */\n\n/**\n * @typedef Refractor\n *   Virtual syntax highlighting\n * @property {typeof alias} alias\n * @property {Languages} languages\n * @property {typeof listLanguages} listLanguages\n * @property {typeof highlight} highlight\n * @property {typeof registered} registered\n * @property {typeof register} register\n */\n\n// Load all stuff in `prism.js` itself, except for `prism-file-highlight.js`.\n// The wrapped non-leaky grammars are loaded instead of Prism\u2019s originals.\nimport {h} from 'hastscript'\nimport {parseEntities} from 'parse-entities'\nimport {Prism} from './prism-core.js'\n\n// Inherit.\nfunction Refractor() {}\n\nRefractor.prototype = Prism\n\n/** @type {Refractor} */\n// @ts-expect-error: TS is wrong.\nexport const refractor = new Refractor()\n\n// Create.\nrefractor.highlight = highlight\nrefractor.register = register\nrefractor.alias = alias\nrefractor.registered = registered\nrefractor.listLanguages = listLanguages\n\n// @ts-expect-error Overwrite Prism.\nrefractor.util.encode = encode\n// @ts-expect-error Overwrite Prism.\nrefractor.Token.stringify = stringify\n\n/**\n * Highlight `value` (code) as `language` (programming language).\n *\n * @param {string} value\n *   Code to highlight.\n * @param {Grammar | string} language\n *   Programming language name, alias, or grammar.\n * @returns {Root}\n *   Node representing highlighted code.\n */\nfunction highlight(value, language) {\n  if (typeof value !== 'string') {\n    throw new TypeError('Expected `string` for `value`, got `' + value + '`')\n  }\n\n  /** @type {Grammar} */\n  let grammar\n  /** @type {string | undefined} */\n  let name\n\n  // `name` is a grammar object.\n  // This was called internally by Prism.js before 1.28.0.\n  /* c8 ignore next 2 */\n  if (language && typeof language === 'object') {\n    grammar = language\n  } else {\n    name = language\n\n    if (typeof name !== 'string') {\n      throw new TypeError('Expected `string` for `name`, got `' + name + '`')\n    }\n\n    if (Object.hasOwn(refractor.languages, name)) {\n      grammar = refractor.languages[name]\n    } else {\n      throw new Error('Unknown language: `' + name + '` is not registered')\n    }\n  }\n\n  return {\n    type: 'root',\n    // @ts-expect-error: we hacked Prism to accept and return the things we want.\n    children: Prism.highlight.call(refractor, value, grammar, name)\n  }\n}\n\n/**\n * Register a syntax.\n *\n * @param {Syntax} syntax\n *   Language function made for refractor, as in, the files in\n *   `refractor/lang/*.js`.\n * @returns {undefined}\n *   Nothing.\n */\nfunction register(syntax) {\n  if (typeof syntax !== 'function' || !syntax.displayName) {\n    throw new Error('Expected `function` for `syntax`, got `' + syntax + '`')\n  }\n\n  // Do not duplicate registrations.\n  if (!Object.hasOwn(refractor.languages, syntax.displayName)) {\n    syntax(refractor)\n  }\n}\n\n/**\n * Register aliases for already registered languages.\n *\n * @param {Record<string, ReadonlyArray<string> | string> | string} language\n *   Language to alias.\n * @param {ReadonlyArray<string> | string | null | undefined} [alias]\n *   Aliases.\n * @returns {undefined}\n *   Nothing.\n */\nfunction alias(language, alias) {\n  const languages = refractor.languages\n  /** @type {Record<string, ReadonlyArray<string> | string>} */\n  let map = {}\n\n  if (typeof language === 'string') {\n    if (alias) {\n      map[language] = alias\n    }\n  } else {\n    map = language\n  }\n\n  /** @type {string} */\n  let key\n\n  for (key in map) {\n    if (Object.hasOwn(map, key)) {\n      const value = map[key]\n      const list = typeof value === 'string' ? [value] : value\n      let index = -1\n\n      while (++index < list.length) {\n        languages[list[index]] = languages[key]\n      }\n    }\n  }\n}\n\n/**\n * Check whether an `alias` or `language` is registered.\n *\n * @param {string} aliasOrLanguage\n *   Language or alias to check.\n * @returns {boolean}\n *   Whether the language is registered.\n */\nfunction registered(aliasOrLanguage) {\n  if (typeof aliasOrLanguage !== 'string') {\n    throw new TypeError(\n      'Expected `string` for `aliasOrLanguage`, got `' + aliasOrLanguage + '`'\n    )\n  }\n\n  return Object.hasOwn(refractor.languages, aliasOrLanguage)\n}\n\n/**\n * List all registered languages (names and aliases).\n *\n * @returns {Array<string>}\n *   List of language names.\n */\nfunction listLanguages() {\n  const languages = refractor.languages\n  /** @type {Array<string>} */\n  const list = []\n  /** @type {string} */\n  let language\n\n  for (language in languages) {\n    if (\n      Object.hasOwn(languages, language) &&\n      typeof languages[language] === 'object'\n    ) {\n      list.push(language)\n    }\n  }\n\n  return list\n}\n\n/**\n * @param {Array<_Token | string> | _Token | string} value\n *   Token to stringify.\n * @param {string} language\n *   Language of the token.\n * @returns {Array<Element | Text> | Element | Text}\n *   Node representing the token.\n */\nfunction stringify(value, language) {\n  if (typeof value === 'string') {\n    return {type: 'text', value}\n  }\n\n  if (Array.isArray(value)) {\n    /** @type {Array<Element | Text>} */\n    const result = []\n    let index = -1\n\n    while (++index < value.length) {\n      if (\n        value[index] !== null &&\n        value[index] !== undefined &&\n        value[index] !== ''\n      ) {\n        // Cast because we assume no sub-arrays.\n        result.push(\n          /** @type {Element | Text} */ (stringify(value[index], language))\n        )\n      }\n    }\n\n    return result\n  }\n\n  /** @type {_Env} */\n  const env = {\n    attributes: {},\n    classes: ['token', value.type],\n    content: stringify(value.content, language),\n    language,\n    tag: 'span',\n    type: value.type\n  }\n\n  if (value.alias) {\n    env.classes.push(\n      ...(typeof value.alias === 'string' ? [value.alias] : value.alias)\n    )\n  }\n\n  // @ts-expect-error Prism.\n  refractor.hooks.run('wrap', env)\n\n  return h(\n    env.tag + '.' + env.classes.join('.'),\n    attributes(env.attributes),\n    env.content\n  )\n}\n\n/**\n * @template {unknown} T\n *   Tokens.\n * @param {T} tokens\n *   Input.\n * @returns {T}\n *   Output, same as input.\n */\nfunction encode(tokens) {\n  return tokens\n}\n\n/**\n * @param {Record<string, string>} record\n *   Attributes.\n * @returns {Record<string, string>}\n *   Attributes.\n */\nfunction attributes(record) {\n  /** @type {string} */\n  let key\n\n  for (key in record) {\n    if (Object.hasOwn(record, key)) {\n      record[key] = parseEntities(record[key])\n    }\n  }\n\n  return record\n}\n", "/**\n * @typedef {import('./core.js').Syntax} Syntax\n */\n\nimport clike from '../lang/clike.js'\nimport c from '../lang/c.js'\nimport cpp from '../lang/cpp.js'\nimport arduino from '../lang/arduino.js'\nimport bash from '../lang/bash.js'\nimport csharp from '../lang/csharp.js'\nimport markup from '../lang/markup.js'\nimport css from '../lang/css.js'\nimport diff from '../lang/diff.js'\nimport go from '../lang/go.js'\nimport ini from '../lang/ini.js'\nimport java from '../lang/java.js'\nimport regex from '../lang/regex.js'\nimport javascript from '../lang/javascript.js'\nimport json from '../lang/json.js'\nimport kotlin from '../lang/kotlin.js'\nimport less from '../lang/less.js'\nimport lua from '../lang/lua.js'\nimport makefile from '../lang/makefile.js'\nimport yaml from '../lang/yaml.js'\nimport markdown from '../lang/markdown.js'\nimport objectivec from '../lang/objectivec.js'\nimport perl from '../lang/perl.js'\nimport markupTemplating from '../lang/markup-templating.js'\nimport php from '../lang/php.js'\nimport python from '../lang/python.js'\nimport r from '../lang/r.js'\nimport ruby from '../lang/ruby.js'\nimport rust from '../lang/rust.js'\nimport sass from '../lang/sass.js'\nimport scss from '../lang/scss.js'\nimport sql from '../lang/sql.js'\nimport swift from '../lang/swift.js'\nimport typescript from '../lang/typescript.js'\nimport basic from '../lang/basic.js'\nimport vbnet from '../lang/vbnet.js'\nimport {refractor} from './core.js'\n\nrefractor.register(clike)\nrefractor.register(c)\nrefractor.register(cpp)\nrefractor.register(arduino)\nrefractor.register(bash)\nrefractor.register(csharp)\nrefractor.register(markup)\nrefractor.register(css)\nrefractor.register(diff)\nrefractor.register(go)\nrefractor.register(ini)\nrefractor.register(java)\nrefractor.register(regex)\nrefractor.register(javascript)\nrefractor.register(json)\nrefractor.register(kotlin)\nrefractor.register(less)\nrefractor.register(lua)\nrefractor.register(makefile)\nrefractor.register(yaml)\nrefractor.register(markdown)\nrefractor.register(objectivec)\nrefractor.register(perl)\nrefractor.register(markupTemplating)\nrefractor.register(php)\nrefractor.register(python)\nrefractor.register(r)\nrefractor.register(ruby)\nrefractor.register(rust)\nrefractor.register(sass)\nrefractor.register(scss)\nrefractor.register(sql)\nrefractor.register(swift)\nrefractor.register(typescript)\nrefractor.register(basic)\nrefractor.register(vbnet)\n\nexport {refractor} from './core.js'\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nabap.displayName = 'abap'\nabap.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function abap(Prism) {\n  Prism.languages.abap = {\n    comment: /^\\*.*/m,\n    string: /(`|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n    'string-template': {\n      pattern: /([|}])(?:\\\\.|[^\\\\|{\\r\\n])*(?=[|{])/,\n      lookbehind: true,\n      alias: 'string'\n    },\n    /* End Of Line comments should not interfere with strings when the\nquote character occurs within them. We assume a string being highlighted\ninside an EOL comment is more acceptable than the opposite.\n*/\n    'eol-comment': {\n      pattern: /(^|\\s)\".*/m,\n      lookbehind: true,\n      alias: 'comment'\n    },\n    keyword: {\n      pattern:\n        /(\\s|\\.|^)(?:\\*-INPUT|\\?TO|ABAP-SOURCE|ABBREVIATED|ABS|ABSTRACT|ACCEPT|ACCEPTING|ACCESSPOLICY|ACCORDING|ACOS|ACTIVATION|ACTUAL|ADD|ADD-CORRESPONDING|ADJACENT|AFTER|ALIAS|ALIASES|ALIGN|ALL|ALLOCATE|ALPHA|ANALYSIS|ANALYZER|AND|ANY|APPEND|APPENDAGE|APPENDING|APPLICATION|ARCHIVE|AREA|ARITHMETIC|AS|ASCENDING|ASIN|ASPECT|ASSERT|ASSIGN|ASSIGNED|ASSIGNING|ASSOCIATION|ASYNCHRONOUS|AT|ATAN|ATTRIBUTES|AUTHORITY|AUTHORITY-CHECK|AVG|BACK|BACKGROUND|BACKUP|BACKWARD|BADI|BASE|BEFORE|BEGIN|BETWEEN|BIG|BINARY|BINDING|BIT|BIT-AND|BIT-NOT|BIT-OR|BIT-XOR|BLACK|BLANK|BLANKS|BLOB|BLOCK|BLOCKS|BLUE|BOUND|BOUNDARIES|BOUNDS|BOXED|BREAK-POINT|BT|BUFFER|BY|BYPASSING|BYTE|BYTE-CA|BYTE-CN|BYTE-CO|BYTE-CS|BYTE-NA|BYTE-NS|BYTE-ORDER|C|CA|CALL|CALLING|CASE|CAST|CASTING|CATCH|CEIL|CENTER|CENTERED|CHAIN|CHAIN-INPUT|CHAIN-REQUEST|CHANGE|CHANGING|CHANNELS|CHAR-TO-HEX|CHARACTER|CHARLEN|CHECK|CHECKBOX|CIRCULAR|CI_|CLASS|CLASS-CODING|CLASS-DATA|CLASS-EVENTS|CLASS-METHODS|CLASS-POOL|CLEANUP|CLEAR|CLIENT|CLOB|CLOCK|CLOSE|CN|CNT|CO|COALESCE|CODE|CODING|COLLECT|COLOR|COLUMN|COLUMNS|COL_BACKGROUND|COL_GROUP|COL_HEADING|COL_KEY|COL_NEGATIVE|COL_NORMAL|COL_POSITIVE|COL_TOTAL|COMMENT|COMMENTS|COMMIT|COMMON|COMMUNICATION|COMPARING|COMPONENT|COMPONENTS|COMPRESSION|COMPUTE|CONCAT|CONCATENATE|COND|CONDENSE|CONDITION|CONNECT|CONNECTION|CONSTANTS|CONTEXT|CONTEXTS|CONTINUE|CONTROL|CONTROLS|CONV|CONVERSION|CONVERT|COPIES|COPY|CORRESPONDING|COS|COSH|COUNT|COUNTRY|COVER|CP|CPI|CREATE|CREATING|CRITICAL|CS|CURRENCY|CURRENCY_CONVERSION|CURRENT|CURSOR|CURSOR-SELECTION|CUSTOMER|CUSTOMER-FUNCTION|DANGEROUS|DATA|DATABASE|DATAINFO|DATASET|DATE|DAYLIGHT|DBMAXLEN|DD\\/MM\\/YY|DD\\/MM\\/YYYY|DDMMYY|DEALLOCATE|DECIMALS|DECIMAL_SHIFT|DECLARATIONS|DEEP|DEFAULT|DEFERRED|DEFINE|DEFINING|DEFINITION|DELETE|DELETING|DEMAND|DEPARTMENT|DESCENDING|DESCRIBE|DESTINATION|DETAIL|DIALOG|DIRECTORY|DISCONNECT|DISPLAY|DISPLAY-MODE|DISTANCE|DISTINCT|DIV|DIVIDE|DIVIDE-CORRESPONDING|DIVISION|DO|DUMMY|DUPLICATE|DUPLICATES|DURATION|DURING|DYNAMIC|DYNPRO|E|EACH|EDIT|EDITOR-CALL|ELSE|ELSEIF|EMPTY|ENABLED|ENABLING|ENCODING|END|END-ENHANCEMENT-SECTION|END-LINES|END-OF-DEFINITION|END-OF-FILE|END-OF-PAGE|END-OF-SELECTION|ENDAT|ENDCASE|ENDCATCH|ENDCHAIN|ENDCLASS|ENDDO|ENDENHANCEMENT|ENDEXEC|ENDFOR|ENDFORM|ENDFUNCTION|ENDIAN|ENDIF|ENDING|ENDINTERFACE|ENDLOOP|ENDMETHOD|ENDMODULE|ENDON|ENDPROVIDE|ENDSELECT|ENDTRY|ENDWHILE|ENGINEERING|ENHANCEMENT|ENHANCEMENT-POINT|ENHANCEMENT-SECTION|ENHANCEMENTS|ENTRIES|ENTRY|ENVIRONMENT|EQ|EQUAL|EQUIV|ERRORMESSAGE|ERRORS|ESCAPE|ESCAPING|EVENT|EVENTS|EXACT|EXCEPT|EXCEPTION|EXCEPTION-TABLE|EXCEPTIONS|EXCLUDE|EXCLUDING|EXEC|EXECUTE|EXISTS|EXIT|EXIT-COMMAND|EXP|EXPAND|EXPANDING|EXPIRATION|EXPLICIT|EXPONENT|EXPORT|EXPORTING|EXTEND|EXTENDED|EXTENSION|EXTRACT|FAIL|FETCH|FIELD|FIELD-GROUPS|FIELD-SYMBOL|FIELD-SYMBOLS|FIELDS|FILE|FILTER|FILTER-TABLE|FILTERS|FINAL|FIND|FIRST|FIRST-LINE|FIXED-POINT|FKEQ|FKGE|FLOOR|FLUSH|FONT|FOR|FORM|FORMAT|FORWARD|FOUND|FRAC|FRAME|FRAMES|FREE|FRIENDS|FROM|FUNCTION|FUNCTION-POOL|FUNCTIONALITY|FURTHER|GAPS|GE|GENERATE|GET|GIVING|GKEQ|GKGE|GLOBAL|GRANT|GREATER|GREEN|GROUP|GROUPS|GT|HANDLE|HANDLER|HARMLESS|HASHED|HAVING|HDB|HEAD-LINES|HEADER|HEADERS|HEADING|HELP-ID|HELP-REQUEST|HIDE|HIGH|HINT|HOLD|HOTSPOT|I|ICON|ID|IDENTIFICATION|IDENTIFIER|IDS|IF|IGNORE|IGNORING|IMMEDIATELY|IMPLEMENTATION|IMPLEMENTATIONS|IMPLEMENTED|IMPLICIT|IMPORT|IMPORTING|IN|INACTIVE|INCL|INCLUDE|INCLUDES|INCLUDING|INCREMENT|INDEX|INDEX-LINE|INFOTYPES|INHERITING|INIT|INITIAL|INITIALIZATION|INNER|INOUT|INPUT|INSERT|INSTANCES|INTENSIFIED|INTERFACE|INTERFACE-POOL|INTERFACES|INTERNAL|INTERVALS|INTO|INVERSE|INVERTED-DATE|IS|ISO|ITERATOR|ITNO|JOB|JOIN|KEEP|KEEPING|KERNEL|KEY|KEYS|KEYWORDS|KIND|LANGUAGE|LAST|LATE|LAYOUT|LE|LEADING|LEAVE|LEFT|LEFT-JUSTIFIED|LEFTPLUS|LEFTSPACE|LEGACY|LENGTH|LESS|LET|LEVEL|LEVELS|LIKE|LINE|LINE-COUNT|LINE-SELECTION|LINE-SIZE|LINEFEED|LINES|LIST|LIST-PROCESSING|LISTBOX|LITTLE|LLANG|LOAD|LOAD-OF-PROGRAM|LOB|LOCAL|LOCALE|LOCATOR|LOG|LOG-POINT|LOG10|LOGFILE|LOGICAL|LONG|LOOP|LOW|LOWER|LPAD|LPI|LT|M|MAIL|MAIN|MAJOR-ID|MAPPING|MARGIN|MARK|MASK|MATCH|MATCHCODE|MAX|MAXIMUM|MEDIUM|MEMBERS|MEMORY|MESH|MESSAGE|MESSAGE-ID|MESSAGES|MESSAGING|METHOD|METHODS|MIN|MINIMUM|MINOR-ID|MM\\/DD\\/YY|MM\\/DD\\/YYYY|MMDDYY|MOD|MODE|MODIF|MODIFIER|MODIFY|MODULE|MOVE|MOVE-CORRESPONDING|MULTIPLY|MULTIPLY-CORRESPONDING|NA|NAME|NAMETAB|NATIVE|NB|NE|NESTED|NESTING|NEW|NEW-LINE|NEW-PAGE|NEW-SECTION|NEXT|NO|NO-DISPLAY|NO-EXTENSION|NO-GAP|NO-GAPS|NO-GROUPING|NO-HEADING|NO-SCROLLING|NO-SIGN|NO-TITLE|NO-TOPOFPAGE|NO-ZERO|NODE|NODES|NON-UNICODE|NON-UNIQUE|NOT|NP|NS|NULL|NUMBER|NUMOFCHAR|O|OBJECT|OBJECTS|OBLIGATORY|OCCURRENCE|OCCURRENCES|OCCURS|OF|OFF|OFFSET|OLE|ON|ONLY|OPEN|OPTION|OPTIONAL|OPTIONS|OR|ORDER|OTHER|OTHERS|OUT|OUTER|OUTPUT|OUTPUT-LENGTH|OVERFLOW|OVERLAY|PACK|PACKAGE|PAD|PADDING|PAGE|PAGES|PARAMETER|PARAMETER-TABLE|PARAMETERS|PART|PARTIALLY|PATTERN|PERCENTAGE|PERFORM|PERFORMING|PERSON|PF|PF-STATUS|PINK|PLACES|POOL|POSITION|POS_HIGH|POS_LOW|PRAGMAS|PRECOMPILED|PREFERRED|PRESERVING|PRIMARY|PRINT|PRINT-CONTROL|PRIORITY|PRIVATE|PROCEDURE|PROCESS|PROGRAM|PROPERTY|PROTECTED|PROVIDE|PUBLIC|PUSHBUTTON|PUT|QUEUE-ONLY|QUICKINFO|RADIOBUTTON|RAISE|RAISING|RANGE|RANGES|RAW|READ|READ-ONLY|READER|RECEIVE|RECEIVED|RECEIVER|RECEIVING|RED|REDEFINITION|REDUCE|REDUCED|REF|REFERENCE|REFRESH|REGEX|REJECT|REMOTE|RENAMING|REPLACE|REPLACEMENT|REPLACING|REPORT|REQUEST|REQUESTED|RESERVE|RESET|RESOLUTION|RESPECTING|RESPONSIBLE|RESULT|RESULTS|RESUMABLE|RESUME|RETRY|RETURN|RETURNCODE|RETURNING|RIGHT|RIGHT-JUSTIFIED|RIGHTPLUS|RIGHTSPACE|RISK|RMC_COMMUNICATION_FAILURE|RMC_INVALID_STATUS|RMC_SYSTEM_FAILURE|ROLE|ROLLBACK|ROUND|ROWS|RTTI|RUN|SAP|SAP-SPOOL|SAVING|SCALE_PRESERVING|SCALE_PRESERVING_SCIENTIFIC|SCAN|SCIENTIFIC|SCIENTIFIC_WITH_LEADING_ZERO|SCREEN|SCROLL|SCROLL-BOUNDARY|SCROLLING|SEARCH|SECONDARY|SECONDS|SECTION|SELECT|SELECT-OPTIONS|SELECTION|SELECTION-SCREEN|SELECTION-SET|SELECTION-SETS|SELECTION-TABLE|SELECTIONS|SELECTOR|SEND|SEPARATE|SEPARATED|SET|SHARED|SHIFT|SHORT|SHORTDUMP-ID|SIGN|SIGN_AS_POSTFIX|SIMPLE|SIN|SINGLE|SINH|SIZE|SKIP|SKIPPING|SMART|SOME|SORT|SORTABLE|SORTED|SOURCE|SPACE|SPECIFIED|SPLIT|SPOOL|SPOTS|SQL|SQLSCRIPT|SQRT|STABLE|STAMP|STANDARD|START-OF-SELECTION|STARTING|STATE|STATEMENT|STATEMENTS|STATIC|STATICS|STATUSINFO|STEP-LOOP|STOP|STRLEN|STRUCTURE|STRUCTURES|STYLE|SUBKEY|SUBMATCHES|SUBMIT|SUBROUTINE|SUBSCREEN|SUBSTRING|SUBTRACT|SUBTRACT-CORRESPONDING|SUFFIX|SUM|SUMMARY|SUMMING|SUPPLIED|SUPPLY|SUPPRESS|SWITCH|SWITCHSTATES|SYMBOL|SYNCPOINTS|SYNTAX|SYNTAX-CHECK|SYNTAX-TRACE|SYSTEM-CALL|SYSTEM-EXCEPTIONS|SYSTEM-EXIT|TAB|TABBED|TABLE|TABLES|TABLEVIEW|TABSTRIP|TAN|TANH|TARGET|TASK|TASKS|TEST|TESTING|TEXT|TEXTPOOL|THEN|THROW|TIME|TIMES|TIMESTAMP|TIMEZONE|TITLE|TITLE-LINES|TITLEBAR|TO|TOKENIZATION|TOKENS|TOP-LINES|TOP-OF-PAGE|TRACE-FILE|TRACE-TABLE|TRAILING|TRANSACTION|TRANSFER|TRANSFORMATION|TRANSLATE|TRANSPORTING|TRMAC|TRUNC|TRUNCATE|TRUNCATION|TRY|TYPE|TYPE-POOL|TYPE-POOLS|TYPES|ULINE|UNASSIGN|UNDER|UNICODE|UNION|UNIQUE|UNIT|UNIT_CONVERSION|UNIX|UNPACK|UNTIL|UNWIND|UP|UPDATE|UPPER|USER|USER-COMMAND|USING|UTF-8|VALID|VALUE|VALUE-REQUEST|VALUES|VARY|VARYING|VERIFICATION-MESSAGE|VERSION|VIA|VIEW|VISIBLE|WAIT|WARNING|WHEN|WHENEVER|WHERE|WHILE|WIDTH|WINDOW|WINDOWS|WITH|WITH-HEADING|WITH-TITLE|WITHOUT|WORD|WORK|WRITE|WRITER|X|XML|XOR|XSD|XSTRLEN|YELLOW|YES|YYMMDD|Z|ZERO|ZONE)(?![\\w-])/i,\n      lookbehind: true\n    },\n    /* Numbers can be only integers. Decimal or Hex appear only as strings */\n    number: /\\b\\d+\\b/,\n    /* Operators must always be surrounded by whitespace, they cannot be put\nadjacent to operands.\n*/\n    operator: {\n      pattern: /(\\s)(?:\\*\\*?|<[=>]?|>=?|\\?=|[-+\\/=])(?=\\s)/,\n      lookbehind: true\n    },\n    'string-operator': {\n      pattern: /(\\s)&&?(?=\\s)/,\n      lookbehind: true,\n      /* The official editor highlights */\n      alias: 'keyword'\n    },\n    'token-operator': [\n      {\n        /* Special operators used to access structure components, class methods/attributes, etc. */\n        pattern: /(\\w)(?:->?|=>|[~|{}])(?=\\w)/,\n        lookbehind: true,\n        alias: 'punctuation'\n      },\n      {\n        /* Special tokens used do delimit string templates */\n        pattern: /[|{}]/,\n        alias: 'punctuation'\n      }\n    ],\n    punctuation: /[,.:()]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nabnf.displayName = 'abnf'\nabnf.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function abnf(Prism) {\n  ;(function (Prism) {\n    var coreRules =\n      '(?:ALPHA|BIT|CHAR|CR|CRLF|CTL|DIGIT|DQUOTE|HEXDIG|HTAB|LF|LWSP|OCTET|SP|VCHAR|WSP)'\n    Prism.languages.abnf = {\n      comment: /;.*/,\n      string: {\n        pattern: /(?:%[is])?\"[^\"\\n\\r]*\"/,\n        greedy: true,\n        inside: {\n          punctuation: /^%[is]/\n        }\n      },\n      range: {\n        pattern: /%(?:b[01]+-[01]+|d\\d+-\\d+|x[A-F\\d]+-[A-F\\d]+)/i,\n        alias: 'number'\n      },\n      terminal: {\n        pattern:\n          /%(?:b[01]+(?:\\.[01]+)*|d\\d+(?:\\.\\d+)*|x[A-F\\d]+(?:\\.[A-F\\d]+)*)/i,\n        alias: 'number'\n      },\n      repetition: {\n        pattern: /(^|[^\\w-])(?:\\d*\\*\\d*|\\d+)/,\n        lookbehind: true,\n        alias: 'operator'\n      },\n      definition: {\n        pattern: /(^[ \\t]*)(?:[a-z][\\w-]*|<[^<>\\r\\n]*>)(?=\\s*=)/m,\n        lookbehind: true,\n        alias: 'keyword',\n        inside: {\n          punctuation: /<|>/\n        }\n      },\n      'core-rule': {\n        pattern: RegExp(\n          '(?:(^|[^<\\\\w-])' + coreRules + '|<' + coreRules + '>)(?![\\\\w-])',\n          'i'\n        ),\n        lookbehind: true,\n        alias: ['rule', 'constant'],\n        inside: {\n          punctuation: /<|>/\n        }\n      },\n      rule: {\n        pattern: /(^|[^<\\w-])[a-z][\\w-]*|<[^<>\\r\\n]*>/i,\n        lookbehind: true,\n        inside: {\n          punctuation: /<|>/\n        }\n      },\n      operator: /=\\/?|\\//,\n      punctuation: /[()\\[\\]]/\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorJavascript from './javascript.js'\nactionscript.displayName = 'actionscript'\nactionscript.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function actionscript(Prism) {\n  Prism.register(refractorJavascript)\n  Prism.languages.actionscript = Prism.languages.extend('javascript', {\n    keyword:\n      /\\b(?:as|break|case|catch|class|const|default|delete|do|dynamic|each|else|extends|final|finally|for|function|get|if|implements|import|in|include|instanceof|interface|internal|is|namespace|native|new|null|override|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|use|var|void|while|with)\\b/,\n    operator: /\\+\\+|--|(?:[+\\-*\\/%^]|&&?|\\|\\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/\n  })\n  Prism.languages.actionscript['class-name'].alias = 'function'\n\n  // doesn't work with AS because AS is too complex\n  delete Prism.languages.actionscript['parameter']\n  delete Prism.languages.actionscript['literal-property']\n  if (Prism.languages.markup) {\n    Prism.languages.insertBefore('actionscript', 'string', {\n      xml: {\n        pattern:\n          /(^|[^.])<\\/?\\w+(?:\\s+[^\\s>\\/=]+=(\"|')(?:\\\\[\\s\\S]|(?!\\2)[^\\\\])*\\2)*\\s*\\/?>/,\n        lookbehind: true,\n        inside: Prism.languages.markup\n      }\n    })\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nada.displayName = 'ada'\nada.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function ada(Prism) {\n  Prism.languages.ada = {\n    comment: /--.*/,\n    string: /\"(?:\"\"|[^\"\\r\\f\\n])*\"/,\n    number: [\n      {\n        pattern:\n          /\\b\\d(?:_?\\d)*#[\\dA-F](?:_?[\\dA-F])*(?:\\.[\\dA-F](?:_?[\\dA-F])*)?#(?:E[+-]?\\d(?:_?\\d)*)?/i\n      },\n      {\n        pattern: /\\b\\d(?:_?\\d)*(?:\\.\\d(?:_?\\d)*)?(?:E[+-]?\\d(?:_?\\d)*)?\\b/i\n      }\n    ],\n    attribute: {\n      pattern: /\\b'\\w+/,\n      alias: 'attr-name'\n    },\n    keyword:\n      /\\b(?:abort|abs|abstract|accept|access|aliased|all|and|array|at|begin|body|case|constant|declare|delay|delta|digits|do|else|elsif|end|entry|exception|exit|for|function|generic|goto|if|in|interface|is|limited|loop|mod|new|not|null|of|or|others|out|overriding|package|pragma|private|procedure|protected|raise|range|record|rem|renames|requeue|return|reverse|select|separate|some|subtype|synchronized|tagged|task|terminate|then|type|until|use|when|while|with|xor)\\b/i,\n    boolean: /\\b(?:false|true)\\b/i,\n    operator: /<[=>]?|>=?|=>?|:=|\\/=?|\\*\\*?|[&+-]/,\n    punctuation: /\\.\\.?|[,;():]/,\n    char: /'.'/,\n    variable: /\\b[a-z](?:\\w)*\\b/i\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nagda.displayName = 'agda'\nagda.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function agda(Prism) {\n  ;(function (Prism) {\n    Prism.languages.agda = {\n      comment: /\\{-[\\s\\S]*?(?:-\\}|$)|--.*/,\n      string: {\n        pattern: /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n\"])*\"/,\n        greedy: true\n      },\n      punctuation: /[(){}\u2983\u2984.;@]/,\n      'class-name': {\n        pattern: /((?:data|record) +)\\S+/,\n        lookbehind: true\n      },\n      function: {\n        pattern: /(^[ \\t]*)(?!\\s)[^:\\r\\n]+(?=:)/m,\n        lookbehind: true\n      },\n      operator: {\n        pattern: /(^\\s*|\\s)(?:[=|:\u2200\u2192\u03BB\\\\?_]|->)(?=\\s)/,\n        lookbehind: true\n      },\n      keyword:\n        /\\b(?:Set|abstract|constructor|data|eta-equality|field|forall|hiding|import|in|inductive|infix|infixl|infixr|instance|let|macro|module|mutual|no-eta-equality|open|overlap|pattern|postulate|primitive|private|public|quote|quoteContext|quoteGoal|quoteTerm|record|renaming|rewrite|syntax|tactic|unquote|unquoteDecl|unquoteDef|using|variable|where|with)\\b/\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nal.displayName = 'al'\nal.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function al(Prism) {\n  // based on https://github.com/microsoft/AL/blob/master/grammar/alsyntax.tmlanguage\n\n  Prism.languages.al = {\n    comment: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n    string: {\n      pattern: /'(?:''|[^'\\r\\n])*'(?!')|\"(?:\"\"|[^\"\\r\\n])*\"(?!\")/,\n      greedy: true\n    },\n    function: {\n      pattern:\n        /(\\b(?:event|procedure|trigger)\\s+|(?:^|[^.])\\.\\s*)[a-z_]\\w*(?=\\s*\\()/i,\n      lookbehind: true\n    },\n    keyword: [\n      // keywords\n      /\\b(?:array|asserterror|begin|break|case|do|downto|else|end|event|exit|for|foreach|function|if|implements|in|indataset|interface|internal|local|of|procedure|program|protected|repeat|runonclient|securityfiltering|suppressdispose|temporary|then|to|trigger|until|var|while|with|withevents)\\b/i,\n      // objects and metadata that are used like keywords\n      /\\b(?:action|actions|addafter|addbefore|addfirst|addlast|area|assembly|chartpart|codeunit|column|controladdin|cuegroup|customizes|dataitem|dataset|dotnet|elements|enum|enumextension|extends|field|fieldattribute|fieldelement|fieldgroup|fieldgroups|fields|filter|fixed|grid|group|key|keys|label|labels|layout|modify|moveafter|movebefore|movefirst|movelast|page|pagecustomization|pageextension|part|profile|query|repeater|report|requestpage|schema|separator|systempart|table|tableelement|tableextension|textattribute|textelement|type|usercontrol|value|xmlport)\\b/i\n    ],\n    number:\n      /\\b(?:0x[\\da-f]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?)(?:F|LL?|U(?:LL?)?)?\\b/i,\n    boolean: /\\b(?:false|true)\\b/i,\n    variable: /\\b(?:Curr(?:FieldNo|Page|Report)|x?Rec|RequestOptionsPage)\\b/,\n    'class-name':\n      /\\b(?:automation|biginteger|bigtext|blob|boolean|byte|char|clienttype|code|completiontriggererrorlevel|connectiontype|database|dataclassification|datascope|date|dateformula|datetime|decimal|defaultlayout|dialog|dictionary|dotnetassembly|dotnettypedeclaration|duration|errorinfo|errortype|executioncontext|executionmode|fieldclass|fieldref|fieldtype|file|filterpagebuilder|guid|httpclient|httpcontent|httpheaders|httprequestmessage|httpresponsemessage|instream|integer|joker|jsonarray|jsonobject|jsontoken|jsonvalue|keyref|list|moduledependencyinfo|moduleinfo|none|notification|notificationscope|objecttype|option|outstream|pageresult|record|recordid|recordref|reportformat|securityfilter|sessionsettings|tableconnectiontype|tablefilter|testaction|testfield|testfilterfield|testpage|testpermissions|testrequestpage|text|textbuilder|textconst|textencoding|time|transactionmodel|transactiontype|variant|verbosity|version|view|views|webserviceactioncontext|webserviceactionresultcode|xmlattribute|xmlattributecollection|xmlcdata|xmlcomment|xmldeclaration|xmldocument|xmldocumenttype|xmlelement|xmlnamespacemanager|xmlnametable|xmlnode|xmlnodelist|xmlprocessinginstruction|xmlreadoptions|xmltext|xmlwriteoptions)\\b/i,\n    operator: /\\.\\.|:[=:]|[-+*/]=?|<>|[<>]=?|=|\\b(?:and|div|mod|not|or|xor)\\b/i,\n    punctuation: /[()\\[\\]{}:.;,]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nantlr4.displayName = 'antlr4'\nantlr4.aliases = ['g4']\n\n/** @param {Refractor} Prism */\nexport default function antlr4(Prism) {\n  Prism.languages.antlr4 = {\n    comment: /\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n    string: {\n      pattern: /'(?:\\\\.|[^\\\\'\\r\\n])*'/,\n      greedy: true\n    },\n    'character-class': {\n      pattern: /\\[(?:\\\\.|[^\\\\\\]\\r\\n])*\\]/,\n      greedy: true,\n      alias: 'regex',\n      inside: {\n        range: {\n          pattern: /([^[]|(?:^|[^\\\\])(?:\\\\\\\\)*\\\\\\[)-(?!\\])/,\n          lookbehind: true,\n          alias: 'punctuation'\n        },\n        escape:\n          /\\\\(?:u(?:[a-fA-F\\d]{4}|\\{[a-fA-F\\d]+\\})|[pP]\\{[=\\w-]+\\}|[^\\r\\nupP])/,\n        punctuation: /[\\[\\]]/\n      }\n    },\n    action: {\n      pattern: /\\{(?:[^{}]|\\{(?:[^{}]|\\{(?:[^{}]|\\{[^{}]*\\})*\\})*\\})*\\}/,\n      greedy: true,\n      inside: {\n        content: {\n          // this might be C, C++, Python, Java, C#, or any other language ANTLR4 compiles to\n          pattern: /(\\{)[\\s\\S]+(?=\\})/,\n          lookbehind: true\n        },\n        punctuation: /[{}]/\n      }\n    },\n    command: {\n      pattern:\n        /(->\\s*(?!\\s))(?:\\s*(?:,\\s*)?\\b[a-z]\\w*(?:\\s*\\([^()\\r\\n]*\\))?)+(?=\\s*;)/i,\n      lookbehind: true,\n      inside: {\n        function: /\\b\\w+(?=\\s*(?:[,(]|$))/,\n        punctuation: /[,()]/\n      }\n    },\n    annotation: {\n      pattern: /@\\w+(?:::\\w+)*/,\n      alias: 'keyword'\n    },\n    label: {\n      pattern: /#[ \\t]*\\w+/,\n      alias: 'punctuation'\n    },\n    keyword:\n      /\\b(?:catch|channels|finally|fragment|grammar|import|lexer|locals|mode|options|parser|returns|throws|tokens)\\b/,\n    definition: [\n      {\n        pattern: /\\b[a-z]\\w*(?=\\s*:)/,\n        alias: ['rule', 'class-name']\n      },\n      {\n        pattern: /\\b[A-Z]\\w*(?=\\s*:)/,\n        alias: ['token', 'constant']\n      }\n    ],\n    constant: /\\b[A-Z][A-Z_]*\\b/,\n    operator: /\\.\\.|->|[|~]|[*+?]\\??/,\n    punctuation: /[;:()=]/\n  }\n  Prism.languages.g4 = Prism.languages.antlr4\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\napacheconf.displayName = 'apacheconf'\napacheconf.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function apacheconf(Prism) {\n  Prism.languages.apacheconf = {\n    comment: /#.*/,\n    'directive-inline': {\n      pattern:\n        /(^[\\t ]*)\\b(?:AcceptFilter|AcceptPathInfo|AccessFileName|Action|Add(?:Alt|AltByEncoding|AltByType|Charset|DefaultCharset|Description|Encoding|Handler|Icon|IconByEncoding|IconByType|InputFilter|Language|ModuleInfo|OutputFilter|OutputFilterByType|Type)|Alias|AliasMatch|Allow(?:CONNECT|EncodedSlashes|Methods|Override|OverrideList)?|Anonymous(?:_LogEmail|_MustGiveEmail|_NoUserID|_VerifyEmail)?|AsyncRequestWorkerFactor|Auth(?:BasicAuthoritative|BasicFake|BasicProvider|BasicUseDigestAlgorithm|DBDUserPWQuery|DBDUserRealmQuery|DBMGroupFile|DBMType|DBMUserFile|Digest(?:Algorithm|Domain|NonceLifetime|Provider|Qop|ShmemSize)|Form(?:Authoritative|Body|DisableNoStore|FakeBasicAuth|Location|LoginRequiredLocation|LoginSuccessLocation|LogoutLocation|Method|Mimetype|Password|Provider|SitePassphrase|Size|Username)|GroupFile|LDAP(?:AuthorizePrefix|BindAuthoritative|BindDN|BindPassword|CharsetConfig|CompareAsUser|CompareDNOnServer|DereferenceAliases|GroupAttribute|GroupAttributeIsDN|InitialBindAsUser|InitialBindPattern|MaxSubGroupDepth|RemoteUserAttribute|RemoteUserIsDN|SearchAsUser|SubGroupAttribute|SubGroupClass|Url)|Merging|Name|nCache(?:Context|Enable|ProvideFor|SOCache|Timeout)|nzFcgiCheckAuthnProvider|nzFcgiDefineProvider|Type|UserFile|zDBDLoginToReferer|zDBDQuery|zDBDRedirectQuery|zDBMType|zSendForbiddenOnFailure)|BalancerGrowth|BalancerInherit|BalancerMember|BalancerPersist|BrowserMatch|BrowserMatchNoCase|BufferedLogs|BufferSize|Cache(?:DefaultExpire|DetailHeader|DirLength|DirLevels|Disable|Enable|File|Header|IgnoreCacheControl|IgnoreHeaders|IgnoreNoLastMod|IgnoreQueryString|IgnoreURLSessionIdentifiers|KeyBaseURL|LastModifiedFactor|Lock|LockMaxAge|LockPath|MaxExpire|MaxFileSize|MinExpire|MinFileSize|NegotiatedDocs|QuickHandler|ReadSize|ReadTime|Root|Socache(?:MaxSize|MaxTime|MinTime|ReadSize|ReadTime)?|StaleOnError|StoreExpired|StoreNoStore|StorePrivate)|CGIDScriptTimeout|CGIMapExtension|CharsetDefault|CharsetOptions|CharsetSourceEnc|CheckCaseOnly|CheckSpelling|ChrootDir|ContentDigest|CookieDomain|CookieExpires|CookieName|CookieStyle|CookieTracking|CoreDumpDirectory|CustomLog|Dav|DavDepthInfinity|DavGenericLockDB|DavLockDB|DavMinTimeout|DBDExptime|DBDInitSQL|DBDKeep|DBDMax|DBDMin|DBDParams|DBDPersist|DBDPrepareSQL|DBDriver|DefaultIcon|DefaultLanguage|DefaultRuntimeDir|DefaultType|Define|Deflate(?:BufferSize|CompressionLevel|FilterNote|InflateLimitRequestBody|InflateRatio(?:Burst|Limit)|MemLevel|WindowSize)|Deny|DirectoryCheckHandler|DirectoryIndex|DirectoryIndexRedirect|DirectorySlash|DocumentRoot|DTracePrivileges|DumpIOInput|DumpIOOutput|EnableExceptionHook|EnableMMAP|EnableSendfile|Error|ErrorDocument|ErrorLog|ErrorLogFormat|Example|ExpiresActive|ExpiresByType|ExpiresDefault|ExtendedStatus|ExtFilterDefine|ExtFilterOptions|FallbackResource|FileETag|FilterChain|FilterDeclare|FilterProtocol|FilterProvider|FilterTrace|ForceLanguagePriority|ForceType|ForensicLog|GprofDir|GracefulShutdownTimeout|Group|Header|HeaderName|Heartbeat(?:Address|Listen|MaxServers|Storage)|HostnameLookups|IdentityCheck|IdentityCheckTimeout|ImapBase|ImapDefault|ImapMenu|Include|IncludeOptional|Index(?:HeadInsert|Ignore|IgnoreReset|Options|OrderDefault|StyleSheet)|InputSed|ISAPI(?:AppendLogToErrors|AppendLogToQuery|CacheFile|FakeAsync|LogNotSupported|ReadAheadBuffer)|KeepAlive|KeepAliveTimeout|KeptBodySize|LanguagePriority|LDAP(?:CacheEntries|CacheTTL|ConnectionPoolTTL|ConnectionTimeout|LibraryDebug|OpCacheEntries|OpCacheTTL|ReferralHopLimit|Referrals|Retries|RetryDelay|SharedCacheFile|SharedCacheSize|Timeout|TrustedClientCert|TrustedGlobalCert|TrustedMode|VerifyServerCert)|Limit(?:InternalRecursion|Request(?:Body|Fields|FieldSize|Line)|XMLRequestBody)|Listen|ListenBackLog|LoadFile|LoadModule|LogFormat|LogLevel|LogMessage|LuaAuthzProvider|LuaCodeCache|Lua(?:Hook(?:AccessChecker|AuthChecker|CheckUserID|Fixups|InsertFilter|Log|MapToStorage|TranslateName|TypeChecker)|Inherit|InputFilter|MapHandler|OutputFilter|PackageCPath|PackagePath|QuickHandler|Root|Scope)|Max(?:ConnectionsPerChild|KeepAliveRequests|MemFree|RangeOverlaps|RangeReversals|Ranges|RequestWorkers|SpareServers|SpareThreads|Threads)|MergeTrailers|MetaDir|MetaFiles|MetaSuffix|MimeMagicFile|MinSpareServers|MinSpareThreads|MMapFile|ModemStandard|ModMimeUsePathInfo|MultiviewsMatch|Mutex|NameVirtualHost|NoProxy|NWSSLTrustedCerts|NWSSLUpgradeable|Options|Order|OutputSed|PassEnv|PidFile|PrivilegesMode|Protocol|ProtocolEcho|Proxy(?:AddHeaders|BadHeader|Block|Domain|ErrorOverride|ExpressDBMFile|ExpressDBMType|ExpressEnable|FtpDirCharset|FtpEscapeWildcards|FtpListOnWildcard|HTML(?:BufSize|CharsetOut|DocType|Enable|Events|Extended|Fixups|Interp|Links|Meta|StripComments|URLMap)|IOBufferSize|MaxForwards|Pass(?:Inherit|InterpolateEnv|Match|Reverse|ReverseCookieDomain|ReverseCookiePath)?|PreserveHost|ReceiveBufferSize|Remote|RemoteMatch|Requests|SCGIInternalRedirect|SCGISendfile|Set|SourceAddress|Status|Timeout|Via)|ReadmeName|ReceiveBufferSize|Redirect|RedirectMatch|RedirectPermanent|RedirectTemp|ReflectorHeader|RemoteIP(?:Header|InternalProxy|InternalProxyList|ProxiesHeader|TrustedProxy|TrustedProxyList)|RemoveCharset|RemoveEncoding|RemoveHandler|RemoveInputFilter|RemoveLanguage|RemoveOutputFilter|RemoveType|RequestHeader|RequestReadTimeout|Require|Rewrite(?:Base|Cond|Engine|Map|Options|Rule)|RLimitCPU|RLimitMEM|RLimitNPROC|Satisfy|ScoreBoardFile|Script(?:Alias|AliasMatch|InterpreterSource|Log|LogBuffer|LogLength|Sock)?|SecureListen|SeeRequestTail|SendBufferSize|Server(?:Admin|Alias|Limit|Name|Path|Root|Signature|Tokens)|Session(?:Cookie(?:Name|Name2|Remove)|Crypto(?:Cipher|Driver|Passphrase|PassphraseFile)|DBD(?:CookieName|CookieName2|CookieRemove|DeleteLabel|InsertLabel|PerUser|SelectLabel|UpdateLabel)|Env|Exclude|Header|Include|MaxAge)?|SetEnv|SetEnvIf|SetEnvIfExpr|SetEnvIfNoCase|SetHandler|SetInputFilter|SetOutputFilter|SSIEndTag|SSIErrorMsg|SSIETag|SSILastModified|SSILegacyExprParser|SSIStartTag|SSITimeFormat|SSIUndefinedEcho|SSL(?:CACertificateFile|CACertificatePath|CADNRequestFile|CADNRequestPath|CARevocationCheck|CARevocationFile|CARevocationPath|CertificateChainFile|CertificateFile|CertificateKeyFile|CipherSuite|Compression|CryptoDevice|Engine|FIPS|HonorCipherOrder|InsecureRenegotiation|OCSP(?:DefaultResponder|Enable|OverrideResponder|ResponderTimeout|ResponseMaxAge|ResponseTimeSkew|UseRequestNonce)|OpenSSLConfCmd|Options|PassPhraseDialog|Protocol|Proxy(?:CACertificateFile|CACertificatePath|CARevocation(?:Check|File|Path)|CheckPeer(?:CN|Expire|Name)|CipherSuite|Engine|MachineCertificate(?:ChainFile|File|Path)|Protocol|Verify|VerifyDepth)|RandomSeed|RenegBufferSize|Require|RequireSSL|Session(?:Cache|CacheTimeout|TicketKeyFile|Tickets)|SRPUnknownUserSeed|SRPVerifierFile|Stapling(?:Cache|ErrorCacheTimeout|FakeTryLater|ForceURL|ResponderTimeout|ResponseMaxAge|ResponseTimeSkew|ReturnResponderErrors|StandardCacheTimeout)|StrictSNIVHostCheck|UserName|UseStapling|VerifyClient|VerifyDepth)|StartServers|StartThreads|Substitute|Suexec|SuexecUserGroup|ThreadLimit|ThreadsPerChild|ThreadStackSize|TimeOut|TraceEnable|TransferLog|TypesConfig|UnDefine|UndefMacro|UnsetEnv|Use|UseCanonicalName|UseCanonicalPhysicalPort|User|UserDir|VHostCGIMode|VHostCGIPrivs|VHostGroup|VHostPrivs|VHostSecure|VHostUser|Virtual(?:DocumentRoot|ScriptAlias)(?:IP)?|WatchdogInterval|XBitHack|xml2EncAlias|xml2EncDefault|xml2StartParse)\\b/im,\n      lookbehind: true,\n      alias: 'property'\n    },\n    'directive-block': {\n      pattern:\n        /<\\/?\\b(?:Auth[nz]ProviderAlias|Directory|DirectoryMatch|Else|ElseIf|Files|FilesMatch|If|IfDefine|IfModule|IfVersion|Limit|LimitExcept|Location|LocationMatch|Macro|Proxy|Require(?:All|Any|None)|VirtualHost)\\b.*>/i,\n      inside: {\n        'directive-block': {\n          pattern: /^<\\/?\\w+/,\n          inside: {\n            punctuation: /^<\\/?/\n          },\n          alias: 'tag'\n        },\n        'directive-block-parameter': {\n          pattern: /.*[^>]/,\n          inside: {\n            punctuation: /:/,\n            string: {\n              pattern: /(\"|').*\\1/,\n              inside: {\n                variable: /[$%]\\{?(?:\\w\\.?[-+:]?)+\\}?/\n              }\n            }\n          },\n          alias: 'attr-value'\n        },\n        punctuation: />/\n      },\n      alias: 'tag'\n    },\n    'directive-flags': {\n      pattern: /\\[(?:[\\w=],?)+\\]/,\n      alias: 'keyword'\n    },\n    string: {\n      pattern: /(\"|').*\\1/,\n      inside: {\n        variable: /[$%]\\{?(?:\\w\\.?[-+:]?)+\\}?/\n      }\n    },\n    variable: /[$%]\\{?(?:\\w\\.?[-+:]?)+\\}?/,\n    regex: /\\^?.*\\$|\\^.*\\$?/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\nimport refractorSql from './sql.js'\napex.displayName = 'apex'\napex.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function apex(Prism) {\n  Prism.register(refractorClike)\n  Prism.register(refractorSql)\n  ;(function (Prism) {\n    var keywords =\n      /\\b(?:(?:after|before)(?=\\s+[a-z])|abstract|activate|and|any|array|as|asc|autonomous|begin|bigdecimal|blob|boolean|break|bulk|by|byte|case|cast|catch|char|class|collect|commit|const|continue|currency|date|datetime|decimal|default|delete|desc|do|double|else|end|enum|exception|exit|export|extends|final|finally|float|for|from|get(?=\\s*[{};])|global|goto|group|having|hint|if|implements|import|in|inner|insert|instanceof|int|integer|interface|into|join|like|limit|list|long|loop|map|merge|new|not|null|nulls|number|object|of|on|or|outer|override|package|parallel|pragma|private|protected|public|retrieve|return|rollback|select|set|short|sObject|sort|static|string|super|switch|synchronized|system|testmethod|then|this|throw|time|transaction|transient|trigger|try|undelete|update|upsert|using|virtual|void|webservice|when|where|while|(?:inherited|with|without)\\s+sharing)\\b/i\n    var className =\n      /\\b(?:(?=[a-z_]\\w*\\s*[<\\[])|(?!<keyword>))[A-Z_]\\w*(?:\\s*\\.\\s*[A-Z_]\\w*)*\\b(?:\\s*(?:\\[\\s*\\]|<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>))*/.source.replace(\n        /<keyword>/g,\n        function () {\n          return keywords.source\n        }\n      )\n    /** @param {string} pattern */\n    function insertClassName(pattern) {\n      return RegExp(\n        pattern.replace(/<CLASS-NAME>/g, function () {\n          return className\n        }),\n        'i'\n      )\n    }\n    var classNameInside = {\n      keyword: keywords,\n      punctuation: /[()\\[\\]{};,:.<>]/\n    }\n    Prism.languages.apex = {\n      comment: Prism.languages.clike.comment,\n      string: Prism.languages.clike.string,\n      sql: {\n        pattern: /((?:[=,({:]|\\breturn)\\s*)\\[[^\\[\\]]*\\]/i,\n        lookbehind: true,\n        greedy: true,\n        alias: 'language-sql',\n        inside: Prism.languages.sql\n      },\n      annotation: {\n        pattern: /@\\w+\\b/,\n        alias: 'punctuation'\n      },\n      'class-name': [\n        {\n          pattern: insertClassName(\n            /(\\b(?:class|enum|extends|implements|instanceof|interface|new|trigger\\s+\\w+\\s+on)\\s+)<CLASS-NAME>/\n              .source\n          ),\n          lookbehind: true,\n          inside: classNameInside\n        },\n        {\n          // cast\n          pattern: insertClassName(\n            /(\\(\\s*)<CLASS-NAME>(?=\\s*\\)\\s*[\\w(])/.source\n          ),\n          lookbehind: true,\n          inside: classNameInside\n        },\n        {\n          // variable/parameter declaration and return types\n          pattern: insertClassName(/<CLASS-NAME>(?=\\s*\\w+\\s*[;=,(){:])/.source),\n          inside: classNameInside\n        }\n      ],\n      trigger: {\n        pattern: /(\\btrigger\\s+)\\w+\\b/i,\n        lookbehind: true,\n        alias: 'class-name'\n      },\n      keyword: keywords,\n      function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n      boolean: /\\b(?:false|true)\\b/i,\n      number: /(?:\\B\\.\\d+|\\b\\d+(?:\\.\\d+|L)?)\\b/i,\n      operator:\n        /[!=](?:==?)?|\\?\\.?|&&|\\|\\||--|\\+\\+|[-+*/^&|]=?|:|<<?=?|>{1,3}=?/,\n      punctuation: /[()\\[\\]{};,.]/\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\napl.displayName = 'apl'\napl.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function apl(Prism) {\n  Prism.languages.apl = {\n    comment: /(?:\u235D|#[! ]).*$/m,\n    string: {\n      pattern: /'(?:[^'\\r\\n]|'')*'/,\n      greedy: true\n    },\n    number:\n      /\u00AF?(?:\\d*\\.?\\b\\d+(?:e[+\u00AF]?\\d+)?|\u00AF|\u221E)(?:j\u00AF?(?:(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:e[+\u00AF]?\\d+)?|\u00AF|\u221E))?/i,\n    statement: /:[A-Z][a-z][A-Za-z]*\\b/,\n    'system-function': {\n      pattern: /\u2395[A-Z]+/i,\n      alias: 'function'\n    },\n    constant: /[\u236C\u233E#\u2395\u235E]/,\n    function:\n      /[-+\u00D7\u00F7\u2308\u230A\u2223|\u2373\u2378?*\u235F\u25CB!\u2339<\u2264=>\u2265\u2260\u2261\u2262\u220A\u2377\u222A\u2229~\u2228\u2227\u2371\u2372\u2374,\u236A\u233D\u2296\u2349\u2191\u2193\u2282\u2283\u2286\u2287\u2337\u234B\u2352\u22A4\u22A5\u2355\u234E\u22A3\u22A2\u2341\u2342\u2248\u236F\u2197\u00A4\u2192]/,\n    'monadic-operator': {\n      pattern: /[\\\\\\/\u233F\u2340\u00A8\u2368\u2336&\u2225]/,\n      alias: 'operator'\n    },\n    'dyadic-operator': {\n      pattern: /[.\u2363\u2360\u2364\u2218\u2338@\u233A\u2365]/,\n      alias: 'operator'\n    },\n    assignment: {\n      pattern: /\u2190/,\n      alias: 'keyword'\n    },\n    punctuation: /[\\[;\\]()\u25C7\u22C4]/,\n    dfn: {\n      pattern: /[{}\u237A\u2375\u2376\u2379\u2207\u236B:]/,\n      alias: 'builtin'\n    }\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\napplescript.displayName = 'applescript'\napplescript.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function applescript(Prism) {\n  Prism.languages.applescript = {\n    comment: [\n      // Allow one level of nesting\n      /\\(\\*(?:\\(\\*(?:[^*]|\\*(?!\\)))*\\*\\)|(?!\\(\\*)[\\s\\S])*?\\*\\)/,\n      /--.+/,\n      /#.+/\n    ],\n    string: /\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,\n    number: /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e-?\\d+)?\\b/i,\n    operator: [\n      /[&=\u2260\u2264\u2265*+\\-\\/\u00F7^]|[<>]=?/,\n      /\\b(?:(?:begin|end|start)s? with|(?:contains?|(?:does not|doesn't) contain)|(?:is|isn't|is not) (?:contained by|in)|(?:(?:is|isn't|is not) )?(?:greater|less) than(?: or equal)?(?: to)?|(?:comes|(?:does not|doesn't) come) (?:after|before)|(?:is|isn't|is not) equal(?: to)?|(?:(?:does not|doesn't) equal|equal to|equals|is not|isn't)|(?:a )?(?:ref(?: to)?|reference to)|(?:and|as|div|mod|not|or))\\b/\n    ],\n    keyword:\n      /\\b(?:about|above|after|against|apart from|around|aside from|at|back|before|beginning|behind|below|beneath|beside|between|but|by|considering|continue|copy|does|eighth|else|end|equal|error|every|exit|false|fifth|first|for|fourth|from|front|get|given|global|if|ignoring|in|instead of|into|is|it|its|last|local|me|middle|my|ninth|of|on|onto|out of|over|prop|property|put|repeat|return|returning|second|set|seventh|since|sixth|some|tell|tenth|that|the|then|third|through|thru|timeout|times|to|transaction|true|try|until|where|while|whose|with|without)\\b/,\n    'class-name':\n      /\\b(?:POSIX file|RGB color|alias|application|boolean|centimeters|centimetres|class|constant|cubic centimeters|cubic centimetres|cubic feet|cubic inches|cubic meters|cubic metres|cubic yards|date|degrees Celsius|degrees Fahrenheit|degrees Kelvin|feet|file|gallons|grams|inches|integer|kilograms|kilometers|kilometres|list|liters|litres|meters|metres|miles|number|ounces|pounds|quarts|real|record|reference|script|square feet|square kilometers|square kilometres|square meters|square metres|square miles|square yards|text|yards)\\b/,\n    punctuation: /[{}():,\u00AC\u00AB\u00BB\u300A\u300B]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\naql.displayName = 'aql'\naql.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function aql(Prism) {\n  Prism.languages.aql = {\n    comment: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n    property: {\n      pattern:\n        /([{,]\\s*)(?:(?!\\d)\\w+|([\"'\u00B4`])(?:(?!\\2)[^\\\\\\r\\n]|\\\\.)*\\2)(?=\\s*:)/,\n      lookbehind: true,\n      greedy: true\n    },\n    string: {\n      pattern: /([\"'])(?:(?!\\1)[^\\\\\\r\\n]|\\\\.)*\\1/,\n      greedy: true\n    },\n    identifier: {\n      pattern: /([\u00B4`])(?:(?!\\1)[^\\\\\\r\\n]|\\\\.)*\\1/,\n      greedy: true\n    },\n    variable: /@@?\\w+/,\n    keyword: [\n      {\n        pattern: /(\\bWITH\\s+)COUNT(?=\\s+INTO\\b)/i,\n        lookbehind: true\n      },\n      /\\b(?:AGGREGATE|ALL|AND|ANY|ASC|COLLECT|DESC|DISTINCT|FILTER|FOR|GRAPH|IN|INBOUND|INSERT|INTO|K_PATHS|K_SHORTEST_PATHS|LET|LIKE|LIMIT|NONE|NOT|NULL|OR|OUTBOUND|REMOVE|REPLACE|RETURN|SHORTEST_PATH|SORT|UPDATE|UPSERT|WINDOW|WITH)\\b/i,\n      // pseudo keywords get a lookbehind to avoid false positives\n      {\n        pattern: /(^|[^\\w.[])(?:KEEP|PRUNE|SEARCH|TO)\\b/i,\n        lookbehind: true\n      },\n      {\n        pattern: /(^|[^\\w.[])(?:CURRENT|NEW|OLD)\\b/,\n        lookbehind: true\n      },\n      {\n        pattern: /\\bOPTIONS(?=\\s*\\{)/i\n      }\n    ],\n    function: /\\b(?!\\d)\\w+(?=\\s*\\()/,\n    boolean: /\\b(?:false|true)\\b/i,\n    range: {\n      pattern: /\\.\\./,\n      alias: 'operator'\n    },\n    number: [\n      /\\b0b[01]+/i,\n      /\\b0x[0-9a-f]+/i,\n      /(?:\\B\\.\\d+|\\b(?:0|[1-9]\\d*)(?:\\.\\d+)?)(?:e[+-]?\\d+)?/i\n    ],\n    operator: /\\*{2,}|[=!]~|[!=<>]=?|&&|\\|\\||[-+*/%]/,\n    punctuation: /::|[?.:,;()[\\]{}]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\narff.displayName = 'arff'\narff.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function arff(Prism) {\n  Prism.languages.arff = {\n    comment: /%.*/,\n    string: {\n      pattern: /([\"'])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      greedy: true\n    },\n    keyword: /@(?:attribute|data|end|relation)\\b/i,\n    number: /\\b\\d+(?:\\.\\d+)?\\b/,\n    punctuation: /[{},]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\narmasm.displayName = 'armasm'\narmasm.aliases = ['arm-asm']\n\n/** @param {Refractor} Prism */\nexport default function armasm(Prism) {\n  Prism.languages.armasm = {\n    comment: {\n      pattern: /;.*/,\n      greedy: true\n    },\n    string: {\n      pattern: /\"(?:[^\"\\r\\n]|\"\")*\"/,\n      greedy: true,\n      inside: {\n        variable: {\n          pattern: /((?:^|[^$])(?:\\${2})*)\\$\\w+/,\n          lookbehind: true\n        }\n      }\n    },\n    char: {\n      pattern: /'(?:[^'\\r\\n]{0,4}|'')'/,\n      greedy: true\n    },\n    'version-symbol': {\n      pattern: /\\|[\\w@]+\\|/,\n      greedy: true,\n      alias: 'property'\n    },\n    boolean: /\\b(?:FALSE|TRUE)\\b/,\n    directive: {\n      pattern:\n        /\\b(?:ALIAS|ALIGN|AREA|ARM|ASSERT|ATTR|CN|CODE|CODE16|CODE32|COMMON|CP|DATA|DCB|DCD|DCDO|DCDU|DCFD|DCFDU|DCI|DCQ|DCQU|DCW|DCWU|DN|ELIF|ELSE|END|ENDFUNC|ENDIF|ENDP|ENTRY|EQU|EXPORT|EXPORTAS|EXTERN|FIELD|FILL|FN|FUNCTION|GBLA|GBLL|GBLS|GET|GLOBAL|IF|IMPORT|INCBIN|INCLUDE|INFO|KEEP|LCLA|LCLL|LCLS|LTORG|MACRO|MAP|MEND|MEXIT|NOFP|OPT|PRESERVE8|PROC|QN|READONLY|RELOC|REQUIRE|REQUIRE8|RLIST|ROUT|SETA|SETL|SETS|SN|SPACE|SUBT|THUMB|THUMBX|TTL|WEND|WHILE)\\b/,\n      alias: 'property'\n    },\n    instruction: {\n      pattern:\n        /((?:^|(?:^|[^\\\\])(?:\\r\\n?|\\n))[ \\t]*(?:(?:[A-Z][A-Z0-9_]*[a-z]\\w*|[a-z]\\w*|\\d+)[ \\t]+)?)\\b[A-Z.]+\\b/,\n      lookbehind: true,\n      alias: 'keyword'\n    },\n    variable: /\\$\\w+/,\n    number:\n      /(?:\\b[2-9]_\\d+|(?:\\b\\d+(?:\\.\\d+)?|\\B\\.\\d+)(?:e-?\\d+)?|\\b0(?:[fd]_|x)[0-9a-f]+|&[0-9a-f]+)\\b/i,\n    register: {\n      pattern: /\\b(?:r\\d|lr)\\b/,\n      alias: 'symbol'\n    },\n    operator: /<>|<<|>>|&&|\\|\\||[=!<>/]=?|[+\\-*%#?&|^]|:[A-Z]+:/,\n    punctuation: /[()[\\],]/\n  }\n  Prism.languages['arm-asm'] = Prism.languages.armasm\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\narturo.displayName = 'arturo'\narturo.aliases = ['art']\n\n/** @param {Refractor} Prism */\nexport default function arturo(Prism) {\n  ;(function (Prism) {\n    /**\n     * @param {string} lang\n     * @param {string} pattern\n     */\n    var createLanguageString = function (lang, pattern) {\n      return {\n        pattern: RegExp(\n          /\\{!/.source + '(?:' + (pattern || lang) + ')' + /$[\\s\\S]*\\}/.source,\n          'm'\n        ),\n        greedy: true,\n        inside: {\n          embedded: {\n            pattern: /(^\\{!\\w+\\b)[\\s\\S]+(?=\\}$)/,\n            lookbehind: true,\n            alias: 'language-' + lang,\n            inside: Prism.languages[lang]\n          },\n          string: /[\\s\\S]+/\n        }\n      }\n    }\n    Prism.languages.arturo = {\n      comment: {\n        pattern: /;.*/,\n        greedy: true\n      },\n      character: {\n        pattern: /`.`/,\n        alias: 'char',\n        greedy: true\n      },\n      number: {\n        pattern: /\\b\\d+(?:\\.\\d+(?:\\.\\d+(?:-[\\w+-]+)?)?)?\\b/\n      },\n      string: {\n        pattern: /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"/,\n        greedy: true\n      },\n      regex: {\n        pattern: /\\{\\/.*?\\/\\}/,\n        greedy: true\n      },\n      'html-string': createLanguageString('html'),\n      'css-string': createLanguageString('css'),\n      'js-string': createLanguageString('js'),\n      'md-string': createLanguageString('md'),\n      'sql-string': createLanguageString('sql'),\n      'sh-string': createLanguageString('shell', 'sh'),\n      multistring: {\n        pattern: /\u00BB.*|\\{:[\\s\\S]*?:\\}|\\{[\\s\\S]*?\\}|^-{6}$[\\s\\S]*/m,\n        alias: 'string',\n        greedy: true\n      },\n      label: {\n        pattern: /\\w+\\b\\??:/,\n        alias: 'property'\n      },\n      literal: {\n        pattern: /'(?:\\w+\\b\\??:?)/,\n        alias: 'constant'\n      },\n      type: {\n        pattern: /:(?:\\w+\\b\\??:?)/,\n        alias: 'class-name'\n      },\n      color: /#\\w+/,\n      predicate: {\n        pattern:\n          /\\b(?:all|and|any|ascii|attr|attribute|attributeLabel|binary|block|char|contains|database|date|dictionary|empty|equal|even|every|exists|false|floating|function|greater|greaterOrEqual|if|in|inline|integer|is|key|label|leap|less|lessOrEqual|literal|logical|lower|nand|negative|nor|not|notEqual|null|numeric|odd|or|path|pathLabel|positive|prefix|prime|regex|same|set|some|sorted|standalone|string|subset|suffix|superset|symbol|symbolLiteral|true|try|type|unless|upper|when|whitespace|word|xnor|xor|zero)\\?/,\n        alias: 'keyword'\n      },\n      'builtin-function': {\n        pattern:\n          /\\b(?:abs|acos|acosh|acsec|acsech|actan|actanh|add|after|alert|alias|and|angle|append|arg|args|arity|array|as|asec|asech|asin|asinh|atan|atan2|atanh|attr|attrs|average|before|benchmark|blend|break|call|capitalize|case|ceil|chop|clear|clip|close|color|combine|conj|continue|copy|cos|cosh|crc|csec|csech|ctan|ctanh|cursor|darken|dec|decode|define|delete|desaturate|deviation|dialog|dictionary|difference|digest|digits|div|do|download|drop|dup|e|else|empty|encode|ensure|env|escape|execute|exit|exp|extend|extract|factors|fdiv|filter|first|flatten|floor|fold|from|function|gamma|gcd|get|goto|hash|hypot|if|inc|indent|index|infinity|info|input|insert|inspect|intersection|invert|jaro|join|keys|kurtosis|last|let|levenshtein|lighten|list|ln|log|loop|lower|mail|map|match|max|median|min|mod|module|mul|nand|neg|new|nor|normalize|not|now|null|open|or|outdent|pad|palette|panic|path|pause|permissions|permutate|pi|pop|popup|pow|powerset|powmod|prefix|print|prints|process|product|query|random|range|read|relative|remove|rename|render|repeat|replace|request|return|reverse|round|sample|saturate|script|sec|sech|select|serve|set|shl|shr|shuffle|sin|sinh|size|skewness|slice|sort|spin|split|sqrt|squeeze|stack|strip|sub|suffix|sum|switch|symbols|symlink|sys|take|tan|tanh|terminal|terminate|to|truncate|try|type|unclip|union|unique|unless|until|unzip|upper|values|var|variance|volume|webview|while|with|wordwrap|write|xnor|xor|zip)\\b/,\n        alias: 'keyword'\n      },\n      sugar: {\n        pattern: /->|=>|\\||::/,\n        alias: 'operator'\n      },\n      punctuation: /[()[\\],]/,\n      symbol: {\n        pattern: /<:|-:|\u00F8|@|#|\\+|\\||\\*|\\$|---|-|%|\\/|\\.\\.|\\^|~|=|<|>|\\\\/\n      },\n      boolean: {\n        pattern: /\\b(?:false|maybe|true)\\b/\n      }\n    }\n    Prism.languages.art = Prism.languages['arturo']\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nasciidoc.displayName = 'asciidoc'\nasciidoc.aliases = ['adoc']\n\n/** @param {Refractor} Prism */\nexport default function asciidoc(Prism) {\n  ;(function (Prism) {\n    var attributes = {\n      pattern:\n        /(^[ \\t]*)\\[(?!\\[)(?:([\"'$`])(?:(?!\\2)[^\\\\]|\\\\.)*\\2|\\[(?:[^\\[\\]\\\\]|\\\\.)*\\]|[^\\[\\]\\\\\"'$`]|\\\\.)*\\]/m,\n      lookbehind: true,\n      inside: {\n        quoted: {\n          pattern: /([$`])(?:(?!\\1)[^\\\\]|\\\\.)*\\1/,\n          inside: {\n            punctuation: /^[$`]|[$`]$/\n          }\n        },\n        interpreted: {\n          pattern: /'(?:[^'\\\\]|\\\\.)*'/,\n          inside: {\n            punctuation: /^'|'$/\n            // See rest below\n          }\n        },\n        string: /\"(?:[^\"\\\\]|\\\\.)*\"/,\n        variable: /\\w+(?==)/,\n        punctuation: /^\\[|\\]$|,/,\n        operator: /=/,\n        // The negative look-ahead prevents blank matches\n        'attr-value': /(?!^\\s+$).+/\n      }\n    }\n    var asciidoc = (Prism.languages.asciidoc = {\n      'comment-block': {\n        pattern: /^(\\/{4,})$[\\s\\S]*?^\\1/m,\n        alias: 'comment'\n      },\n      table: {\n        pattern: /^\\|={3,}(?:(?:\\r?\\n|\\r(?!\\n)).*)*?(?:\\r?\\n|\\r)\\|={3,}$/m,\n        inside: {\n          specifiers: {\n            pattern:\n              /(?:(?:(?:\\d+(?:\\.\\d+)?|\\.\\d+)[+*](?:[<^>](?:\\.[<^>])?|\\.[<^>])?|[<^>](?:\\.[<^>])?|\\.[<^>])[a-z]*|[a-z]+)(?=\\|)/,\n            alias: 'attr-value'\n          },\n          punctuation: {\n            pattern: /(^|[^\\\\])[|!]=*/,\n            lookbehind: true\n          }\n          // See rest below\n        }\n      },\n      'passthrough-block': {\n        pattern: /^(\\+{4,})$[\\s\\S]*?^\\1$/m,\n        inside: {\n          punctuation: /^\\++|\\++$/\n          // See rest below\n        }\n      },\n      // Literal blocks and listing blocks\n      'literal-block': {\n        pattern: /^(-{4,}|\\.{4,})$[\\s\\S]*?^\\1$/m,\n        inside: {\n          punctuation: /^(?:-+|\\.+)|(?:-+|\\.+)$/\n          // See rest below\n        }\n      },\n      // Sidebar blocks, quote blocks, example blocks and open blocks\n      'other-block': {\n        pattern: /^(--|\\*{4,}|_{4,}|={4,})$[\\s\\S]*?^\\1$/m,\n        inside: {\n          punctuation: /^(?:-+|\\*+|_+|=+)|(?:-+|\\*+|_+|=+)$/\n          // See rest below\n        }\n      },\n      // list-punctuation and list-label must appear before indented-block\n      'list-punctuation': {\n        pattern:\n          /(^[ \\t]*)(?:-|\\*{1,5}|\\.{1,5}|(?:[a-z]|\\d+)\\.|[xvi]+\\))(?= )/im,\n        lookbehind: true,\n        alias: 'punctuation'\n      },\n      'list-label': {\n        pattern: /(^[ \\t]*)[a-z\\d].+(?::{2,4}|;;)(?=\\s)/im,\n        lookbehind: true,\n        alias: 'symbol'\n      },\n      'indented-block': {\n        pattern: /((\\r?\\n|\\r)\\2)([ \\t]+)\\S.*(?:(?:\\r?\\n|\\r)\\3.+)*(?=\\2{2}|$)/,\n        lookbehind: true\n      },\n      comment: /^\\/\\/.*/m,\n      title: {\n        pattern:\n          /^.+(?:\\r?\\n|\\r)(?:={3,}|-{3,}|~{3,}|\\^{3,}|\\+{3,})$|^={1,5} .+|^\\.(?![\\s.]).*/m,\n        alias: 'important',\n        inside: {\n          punctuation: /^(?:\\.|=+)|(?:=+|-+|~+|\\^+|\\++)$/\n          // See rest below\n        }\n      },\n      'attribute-entry': {\n        pattern: /^:[^:\\r\\n]+:(?: .*?(?: \\+(?:\\r?\\n|\\r).*?)*)?$/m,\n        alias: 'tag'\n      },\n      attributes: attributes,\n      hr: {\n        pattern: /^'{3,}$/m,\n        alias: 'punctuation'\n      },\n      'page-break': {\n        pattern: /^<{3,}$/m,\n        alias: 'punctuation'\n      },\n      admonition: {\n        pattern: /^(?:CAUTION|IMPORTANT|NOTE|TIP|WARNING):/m,\n        alias: 'keyword'\n      },\n      callout: [\n        {\n          pattern: /(^[ \\t]*)<?\\d*>/m,\n          lookbehind: true,\n          alias: 'symbol'\n        },\n        {\n          pattern: /<\\d+>/,\n          alias: 'symbol'\n        }\n      ],\n      macro: {\n        pattern:\n          /\\b[a-z\\d][a-z\\d-]*::?(?:[^\\s\\[\\]]*\\[(?:[^\\]\\\\\"']|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*\\1|\\\\.)*\\])/,\n        inside: {\n          function: /^[a-z\\d-]+(?=:)/,\n          punctuation: /^::?/,\n          attributes: {\n            pattern: /(?:\\[(?:[^\\]\\\\\"']|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*\\1|\\\\.)*\\])/,\n            inside: attributes.inside\n          }\n        }\n      },\n      inline: {\n        /*\nThe initial look-behind prevents the highlighting of escaped quoted text.\nQuoted text can be multi-line but cannot span an empty line.\nAll quoted text can have attributes before [foobar, 'foobar', baz=\"bar\"].\nFirst, we handle the constrained quotes.\nThose must be bounded by non-word chars and cannot have spaces between the delimiter and the first char.\nThey are, in order: _emphasis_, ``double quotes'', `single quotes', `monospace`, 'emphasis', *strong*, +monospace+ and #unquoted#\nThen we handle the unconstrained quotes.\nThose do not have the restrictions of the constrained quotes.\nThey are, in order: __emphasis__, **strong**, ++monospace++, +++passthrough+++, ##unquoted##, $$passthrough$$, ~subscript~, ^superscript^, {attribute-reference}, [[anchor]], [[[bibliography anchor]]], <<xref>>, (((indexes))) and ((indexes))\n*/\n        pattern:\n          /(^|[^\\\\])(?:(?:\\B\\[(?:[^\\]\\\\\"']|([\"'])(?:(?!\\2)[^\\\\]|\\\\.)*\\2|\\\\.)*\\])?(?:\\b_(?!\\s)(?: _|[^_\\\\\\r\\n]|\\\\.)+(?:(?:\\r?\\n|\\r)(?: _|[^_\\\\\\r\\n]|\\\\.)+)*_\\b|\\B``(?!\\s).+?(?:(?:\\r?\\n|\\r).+?)*''\\B|\\B`(?!\\s)(?:[^`'\\s]|\\s+\\S)+['`]\\B|\\B(['*+#])(?!\\s)(?: \\3|(?!\\3)[^\\\\\\r\\n]|\\\\.)+(?:(?:\\r?\\n|\\r)(?: \\3|(?!\\3)[^\\\\\\r\\n]|\\\\.)+)*\\3\\B)|(?:\\[(?:[^\\]\\\\\"']|([\"'])(?:(?!\\4)[^\\\\]|\\\\.)*\\4|\\\\.)*\\])?(?:(__|\\*\\*|\\+\\+\\+?|##|\\$\\$|[~^]).+?(?:(?:\\r?\\n|\\r).+?)*\\5|\\{[^}\\r\\n]+\\}|\\[\\[\\[?.+?(?:(?:\\r?\\n|\\r).+?)*\\]?\\]\\]|<<.+?(?:(?:\\r?\\n|\\r).+?)*>>|\\(\\(\\(?.+?(?:(?:\\r?\\n|\\r).+?)*\\)?\\)\\)))/m,\n        lookbehind: true,\n        inside: {\n          attributes: attributes,\n          url: {\n            pattern: /^(?:\\[\\[\\[?.+?\\]?\\]\\]|<<.+?>>)$/,\n            inside: {\n              punctuation: /^(?:\\[\\[\\[?|<<)|(?:\\]\\]\\]?|>>)$/\n            }\n          },\n          'attribute-ref': {\n            pattern: /^\\{.+\\}$/,\n            inside: {\n              variable: {\n                pattern: /(^\\{)[a-z\\d,+_-]+/,\n                lookbehind: true\n              },\n              operator: /^[=?!#%@$]|!(?=[:}])/,\n              punctuation: /^\\{|\\}$|::?/\n            }\n          },\n          italic: {\n            pattern: /^(['_])[\\s\\S]+\\1$/,\n            inside: {\n              punctuation: /^(?:''?|__?)|(?:''?|__?)$/\n            }\n          },\n          bold: {\n            pattern: /^\\*[\\s\\S]+\\*$/,\n            inside: {\n              punctuation: /^\\*\\*?|\\*\\*?$/\n            }\n          },\n          punctuation:\n            /^(?:``?|\\+{1,3}|##?|\\$\\$|[~^]|\\(\\(\\(?)|(?:''?|\\+{1,3}|##?|\\$\\$|[~^`]|\\)?\\)\\))$/\n        }\n      },\n      replacement: {\n        pattern: /\\((?:C|R|TM)\\)/,\n        alias: 'builtin'\n      },\n      entity: /&#?[\\da-z]{1,8};/i,\n      'line-continuation': {\n        pattern: /(^| )\\+$/m,\n        lookbehind: true,\n        alias: 'punctuation'\n      }\n    })\n\n    // Allow some nesting. There is no recursion though, so cloning should not be needed.\n\n    function copyFromAsciiDoc(keys) {\n      keys = keys.split(' ')\n      var o = {}\n      for (var i = 0, l = keys.length; i < l; i++) {\n        o[keys[i]] = asciidoc[keys[i]]\n      }\n      return o\n    }\n    attributes.inside['interpreted'].inside.rest = copyFromAsciiDoc(\n      'macro inline replacement entity'\n    )\n    asciidoc['passthrough-block'].inside.rest = copyFromAsciiDoc('macro')\n    asciidoc['literal-block'].inside.rest = copyFromAsciiDoc('callout')\n    asciidoc['table'].inside.rest = copyFromAsciiDoc(\n      'comment-block passthrough-block literal-block other-block list-punctuation indented-block comment title attribute-entry attributes hr page-break admonition list-label callout macro inline replacement entity line-continuation'\n    )\n    asciidoc['other-block'].inside.rest = copyFromAsciiDoc(\n      'table list-punctuation indented-block comment attribute-entry attributes hr page-break admonition list-label macro inline replacement entity line-continuation'\n    )\n    asciidoc['title'].inside.rest = copyFromAsciiDoc(\n      'macro inline replacement entity'\n    )\n\n    // Plugin to make entity title show the real entity, idea by Roman Komarov\n    Prism.hooks.add('wrap', function (env) {\n      if (env.type === 'entity') {\n        env.attributes['title'] = env.content.value.replace(/&amp;/, '&')\n      }\n    })\n    Prism.languages.adoc = Prism.languages.asciidoc\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorCsharp from './csharp.js'\nimport refractorMarkup from './markup.js'\naspnet.displayName = 'aspnet'\naspnet.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function aspnet(Prism) {\n  Prism.register(refractorCsharp)\n  Prism.register(refractorMarkup)\n  Prism.languages.aspnet = Prism.languages.extend('markup', {\n    'page-directive': {\n      pattern: /<%\\s*@.*%>/,\n      alias: 'tag',\n      inside: {\n        'page-directive': {\n          pattern:\n            /<%\\s*@\\s*(?:Assembly|Control|Implements|Import|Master(?:Type)?|OutputCache|Page|PreviousPageType|Reference|Register)?|%>/i,\n          alias: 'tag'\n        },\n        rest: Prism.languages.markup.tag.inside\n      }\n    },\n    directive: {\n      pattern: /<%.*%>/,\n      alias: 'tag',\n      inside: {\n        directive: {\n          pattern: /<%\\s*?[$=%#:]{0,2}|%>/,\n          alias: 'tag'\n        },\n        rest: Prism.languages.csharp\n      }\n    }\n  })\n  // Regexp copied from prism-markup, with a negative look-ahead added\n  Prism.languages.aspnet.tag.pattern =\n    /<(?!%)\\/?[^\\s>\\/]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/\n\n  // match directives of attribute value foo=\"<% Bar %>\"\n  Prism.languages.insertBefore(\n    'inside',\n    'punctuation',\n    {\n      directive: Prism.languages.aspnet['directive']\n    },\n    Prism.languages.aspnet.tag.inside['attr-value']\n  )\n  Prism.languages.insertBefore('aspnet', 'comment', {\n    'asp-comment': {\n      pattern: /<%--[\\s\\S]*?--%>/,\n      alias: ['asp', 'comment']\n    }\n  })\n\n  // script runat=\"server\" contains csharp, not javascript\n  Prism.languages.insertBefore(\n    'aspnet',\n    Prism.languages.javascript ? 'script' : 'tag',\n    {\n      'asp-script': {\n        pattern:\n          /(<script(?=.*runat=['\"]?server\\b)[^>]*>)[\\s\\S]*?(?=<\\/script>)/i,\n        lookbehind: true,\n        alias: ['asp', 'script'],\n        inside: Prism.languages.csharp || {}\n      }\n    }\n  )\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nasm6502.displayName = 'asm6502'\nasm6502.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function asm6502(Prism) {\n  Prism.languages.asm6502 = {\n    comment: /;.*/,\n    directive: {\n      pattern: /\\.\\w+(?= )/,\n      alias: 'property'\n    },\n    string: /([\"'`])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n    'op-code': {\n      pattern:\n        /\\b(?:ADC|AND|ASL|BCC|BCS|BEQ|BIT|BMI|BNE|BPL|BRK|BVC|BVS|CLC|CLD|CLI|CLV|CMP|CPX|CPY|DEC|DEX|DEY|EOR|INC|INX|INY|JMP|JSR|LDA|LDX|LDY|LSR|NOP|ORA|PHA|PHP|PLA|PLP|ROL|ROR|RTI|RTS|SBC|SEC|SED|SEI|STA|STX|STY|TAX|TAY|TSX|TXA|TXS|TYA|adc|and|asl|bcc|bcs|beq|bit|bmi|bne|bpl|brk|bvc|bvs|clc|cld|cli|clv|cmp|cpx|cpy|dec|dex|dey|eor|inc|inx|iny|jmp|jsr|lda|ldx|ldy|lsr|nop|ora|pha|php|pla|plp|rol|ror|rti|rts|sbc|sec|sed|sei|sta|stx|sty|tax|tay|tsx|txa|txs|tya)\\b/,\n      alias: 'keyword'\n    },\n    'hex-number': {\n      pattern: /#?\\$[\\da-f]{1,4}\\b/i,\n      alias: 'number'\n    },\n    'binary-number': {\n      pattern: /#?%[01]+\\b/,\n      alias: 'number'\n    },\n    'decimal-number': {\n      pattern: /#?\\b\\d+\\b/,\n      alias: 'number'\n    },\n    register: {\n      pattern: /\\b[xya]\\b/i,\n      alias: 'variable'\n    },\n    punctuation: /[(),:]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nasmatmel.displayName = 'asmatmel'\nasmatmel.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function asmatmel(Prism) {\n  Prism.languages.asmatmel = {\n    comment: {\n      pattern: /;.*/,\n      greedy: true\n    },\n    string: {\n      pattern: /([\"'`])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      greedy: true\n    },\n    constant: /\\b(?:PORT[A-Z]|DDR[A-Z]|(?:DD|P)[A-Z](?:\\d|[0-2]\\d|3[01]))\\b/,\n    directive: {\n      pattern: /\\.\\w+(?= )/,\n      alias: 'property'\n    },\n    'r-register': {\n      pattern: /\\br(?:\\d|[12]\\d|3[01])\\b/,\n      alias: 'variable'\n    },\n    'op-code': {\n      pattern:\n        /\\b(?:ADC|ADD|ADIW|AND|ANDI|ASR|BCLR|BLD|BRBC|BRBS|BRCC|BRCS|BREAK|BREQ|BRGE|BRHC|BRHS|BRID|BRIE|BRLO|BRLT|BRMI|BRNE|BRPL|BRSH|BRTC|BRTS|BRVC|BRVS|BSET|BST|CALL|CBI|CBR|CLC|CLH|CLI|CLN|CLR|CLS|CLT|CLV|CLZ|COM|CP|CPC|CPI|CPSE|DEC|DES|EICALL|EIJMP|ELPM|EOR|FMUL|FMULS|FMULSU|ICALL|IJMP|IN|INC|JMP|LAC|LAS|LAT|LD|LD[A-Za-z0-9]|LPM|LSL|LSR|MOV|MOVW|MUL|MULS|MULSU|NEG|NOP|OR|ORI|OUT|POP|PUSH|RCALL|RET|RETI|RJMP|ROL|ROR|SBC|SBCI|SBI|SBIC|SBIS|SBIW|SBR|SBRC|SBRS|SEC|SEH|SEI|SEN|SER|SES|SET|SEV|SEZ|SLEEP|SPM|ST|ST[A-Z0-9]|SUB|SUBI|SWAP|TST|WDR|XCH|adc|add|adiw|and|andi|asr|bclr|bld|brbc|brbs|brcc|brcs|break|breq|brge|brhc|brhs|brid|brie|brlo|brlt|brmi|brne|brpl|brsh|brtc|brts|brvc|brvs|bset|bst|call|cbi|cbr|clc|clh|cli|cln|clr|cls|clt|clv|clz|com|cp|cpc|cpi|cpse|dec|des|eicall|eijmp|elpm|eor|fmul|fmuls|fmulsu|icall|ijmp|in|inc|jmp|lac|las|lat|ld|ld[a-z0-9]|lpm|lsl|lsr|mov|movw|mul|muls|mulsu|neg|nop|or|ori|out|pop|push|rcall|ret|reti|rjmp|rol|ror|sbc|sbci|sbi|sbic|sbis|sbiw|sbr|sbrc|sbrs|sec|seh|sei|sen|ser|ses|set|sev|sez|sleep|spm|st|st[a-zA-Z0-9]|sub|subi|swap|tst|wdr|xch)\\b/,\n      alias: 'keyword'\n    },\n    'hex-number': {\n      pattern: /#?\\$[\\da-f]{2,4}\\b/i,\n      alias: 'number'\n    },\n    'binary-number': {\n      pattern: /#?%[01]+\\b/,\n      alias: 'number'\n    },\n    'decimal-number': {\n      pattern: /#?\\b\\d+\\b/,\n      alias: 'number'\n    },\n    register: {\n      pattern: /\\b[acznvshtixy]\\b/i,\n      alias: 'variable'\n    },\n    operator: />>=?|<<=?|&[&=]?|\\|[\\|=]?|[-+*/%^!=<>?]=?/,\n    punctuation: /[(),:]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nautohotkey.displayName = 'autohotkey'\nautohotkey.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function autohotkey(Prism) {\n  // NOTES - follows first-first highlight method, block is locked after highlight, different from SyntaxHl\n  Prism.languages.autohotkey = {\n    comment: [\n      {\n        pattern: /(^|\\s);.*/,\n        lookbehind: true\n      },\n      {\n        pattern:\n          /(^[\\t ]*)\\/\\*(?:[\\r\\n](?![ \\t]*\\*\\/)|[^\\r\\n])*(?:[\\r\\n][ \\t]*\\*\\/)?/m,\n        lookbehind: true,\n        greedy: true\n      }\n    ],\n    tag: {\n      // labels\n      pattern: /^([ \\t]*)[^\\s,`\":]+(?=:[ \\t]*$)/m,\n      lookbehind: true\n    },\n    string: /\"(?:[^\"\\n\\r]|\"\")*\"/,\n    variable: /%\\w+%/,\n    number: /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,\n    operator:\n      /\\?|\\/\\/?=?|:=|\\|[=|]?|&[=&]?|\\+[=+]?|-[=-]?|\\*[=*]?|<(?:<=?|>|=)?|>>?=?|[.^!=~]=?|\\b(?:AND|NOT|OR)\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    command: {\n      pattern:\n        /\\b(?:AutoTrim|BlockInput|Break|Click|ClipWait|Continue|Control|ControlClick|ControlFocus|ControlGet|ControlGetFocus|ControlGetPos|ControlGetText|ControlMove|ControlSend|ControlSendRaw|ControlSetText|CoordMode|Critical|DetectHiddenText|DetectHiddenWindows|Drive|DriveGet|DriveSpaceFree|EnvAdd|EnvDiv|EnvGet|EnvMult|EnvSet|EnvSub|EnvUpdate|Exit|ExitApp|FileAppend|FileCopy|FileCopyDir|FileCreateDir|FileCreateShortcut|FileDelete|FileEncoding|FileGetAttrib|FileGetShortcut|FileGetSize|FileGetTime|FileGetVersion|FileInstall|FileMove|FileMoveDir|FileRead|FileReadLine|FileRecycle|FileRecycleEmpty|FileRemoveDir|FileSelectFile|FileSelectFolder|FileSetAttrib|FileSetTime|FormatTime|GetKeyState|Gosub|Goto|GroupActivate|GroupAdd|GroupClose|GroupDeactivate|Gui|GuiControl|GuiControlGet|Hotkey|ImageSearch|IniDelete|IniRead|IniWrite|Input|InputBox|KeyWait|ListHotkeys|ListLines|ListVars|Loop|Menu|MouseClick|MouseClickDrag|MouseGetPos|MouseMove|MsgBox|OnExit|OutputDebug|Pause|PixelGetColor|PixelSearch|PostMessage|Process|Progress|Random|RegDelete|RegRead|RegWrite|Reload|Repeat|Return|Run|RunAs|RunWait|Send|SendEvent|SendInput|SendMessage|SendMode|SendPlay|SendRaw|SetBatchLines|SetCapslockState|SetControlDelay|SetDefaultMouseSpeed|SetEnv|SetFormat|SetKeyDelay|SetMouseDelay|SetNumlockState|SetRegView|SetScrollLockState|SetStoreCapslockMode|SetTimer|SetTitleMatchMode|SetWinDelay|SetWorkingDir|Shutdown|Sleep|Sort|SoundBeep|SoundGet|SoundGetWaveVolume|SoundPlay|SoundSet|SoundSetWaveVolume|SplashImage|SplashTextOff|SplashTextOn|SplitPath|StatusBarGetText|StatusBarWait|StringCaseSense|StringGetPos|StringLeft|StringLen|StringLower|StringMid|StringReplace|StringRight|StringSplit|StringTrimLeft|StringTrimRight|StringUpper|Suspend|SysGet|Thread|ToolTip|Transform|TrayTip|URLDownloadToFile|WinActivate|WinActivateBottom|WinClose|WinGet|WinGetActiveStats|WinGetActiveTitle|WinGetClass|WinGetPos|WinGetText|WinGetTitle|WinHide|WinKill|WinMaximize|WinMenuSelectItem|WinMinimize|WinMinimizeAll|WinMinimizeAllUndo|WinMove|WinRestore|WinSet|WinSetTitle|WinShow|WinWait|WinWaitActive|WinWaitClose|WinWaitNotActive)\\b/i,\n      alias: 'selector'\n    },\n    constant:\n      /\\b(?:a_ahkpath|a_ahkversion|a_appdata|a_appdatacommon|a_autotrim|a_batchlines|a_caretx|a_carety|a_computername|a_controldelay|a_cursor|a_dd|a_ddd|a_dddd|a_defaultmousespeed|a_desktop|a_desktopcommon|a_detecthiddentext|a_detecthiddenwindows|a_endchar|a_eventinfo|a_exitreason|a_fileencoding|a_formatfloat|a_formatinteger|a_gui|a_guicontrol|a_guicontrolevent|a_guievent|a_guiheight|a_guiwidth|a_guix|a_guiy|a_hour|a_iconfile|a_iconhidden|a_iconnumber|a_icontip|a_index|a_ipaddress1|a_ipaddress2|a_ipaddress3|a_ipaddress4|a_is64bitos|a_isadmin|a_iscompiled|a_iscritical|a_ispaused|a_issuspended|a_isunicode|a_keydelay|a_language|a_lasterror|a_linefile|a_linenumber|a_loopfield|a_loopfileattrib|a_loopfiledir|a_loopfileext|a_loopfilefullpath|a_loopfilelongpath|a_loopfilename|a_loopfileshortname|a_loopfileshortpath|a_loopfilesize|a_loopfilesizekb|a_loopfilesizemb|a_loopfiletimeaccessed|a_loopfiletimecreated|a_loopfiletimemodified|a_loopreadline|a_loopregkey|a_loopregname|a_loopregsubkey|a_loopregtimemodified|a_loopregtype|a_mday|a_min|a_mm|a_mmm|a_mmmm|a_mon|a_mousedelay|a_msec|a_mydocuments|a_now|a_nowutc|a_numbatchlines|a_ostype|a_osversion|a_priorhotkey|a_priorkey|a_programfiles|a_programs|a_programscommon|a_ptrsize|a_regview|a_screendpi|a_screenheight|a_screenwidth|a_scriptdir|a_scriptfullpath|a_scripthwnd|a_scriptname|a_sec|a_space|a_startmenu|a_startmenucommon|a_startup|a_startupcommon|a_stringcasesense|a_tab|a_temp|a_thisfunc|a_thishotkey|a_thislabel|a_thismenu|a_thismenuitem|a_thismenuitempos|a_tickcount|a_timeidle|a_timeidlephysical|a_timesincepriorhotkey|a_timesincethishotkey|a_titlematchmode|a_titlematchmodespeed|a_username|a_wday|a_windelay|a_windir|a_workingdir|a_yday|a_year|a_yweek|a_yyyy|clipboard|clipboardall|comspec|errorlevel|programfiles)\\b/i,\n    builtin:\n      /\\b(?:abs|acos|asc|asin|atan|ceil|chr|class|comobjactive|comobjarray|comobjconnect|comobjcreate|comobjerror|comobjflags|comobjget|comobjquery|comobjtype|comobjvalue|cos|dllcall|exp|fileexist|Fileopen|floor|format|il_add|il_create|il_destroy|instr|isfunc|islabel|IsObject|ln|log|ltrim|lv_add|lv_delete|lv_deletecol|lv_getcount|lv_getnext|lv_gettext|lv_insert|lv_insertcol|lv_modify|lv_modifycol|lv_setimagelist|mod|numget|numput|onmessage|regexmatch|regexreplace|registercallback|round|rtrim|sb_seticon|sb_setparts|sb_settext|sin|sqrt|strlen|strreplace|strsplit|substr|tan|tv_add|tv_delete|tv_get|tv_getchild|tv_getcount|tv_getnext|tv_getparent|tv_getprev|tv_getselection|tv_gettext|tv_modify|varsetcapacity|winactive|winexist|__Call|__Get|__New|__Set)\\b/i,\n    symbol:\n      /\\b(?:alt|altdown|altup|appskey|backspace|browser_back|browser_favorites|browser_forward|browser_home|browser_refresh|browser_search|browser_stop|bs|capslock|ctrl|ctrlbreak|ctrldown|ctrlup|del|delete|down|end|enter|esc|escape|f1|f10|f11|f12|f13|f14|f15|f16|f17|f18|f19|f2|f20|f21|f22|f23|f24|f3|f4|f5|f6|f7|f8|f9|home|ins|insert|joy1|joy10|joy11|joy12|joy13|joy14|joy15|joy16|joy17|joy18|joy19|joy2|joy20|joy21|joy22|joy23|joy24|joy25|joy26|joy27|joy28|joy29|joy3|joy30|joy31|joy32|joy4|joy5|joy6|joy7|joy8|joy9|joyaxes|joybuttons|joyinfo|joyname|joypov|joyr|joyu|joyv|joyx|joyy|joyz|lalt|launch_app1|launch_app2|launch_mail|launch_media|lbutton|lcontrol|lctrl|left|lshift|lwin|lwindown|lwinup|mbutton|media_next|media_play_pause|media_prev|media_stop|numlock|numpad0|numpad1|numpad2|numpad3|numpad4|numpad5|numpad6|numpad7|numpad8|numpad9|numpadadd|numpadclear|numpaddel|numpaddiv|numpaddot|numpaddown|numpadend|numpadenter|numpadhome|numpadins|numpadleft|numpadmult|numpadpgdn|numpadpgup|numpadright|numpadsub|numpadup|pgdn|pgup|printscreen|ralt|rbutton|rcontrol|rctrl|right|rshift|rwin|rwindown|rwinup|scrolllock|shift|shiftdown|shiftup|space|tab|up|volume_down|volume_mute|volume_up|wheeldown|wheelleft|wheelright|wheelup|xbutton1|xbutton2)\\b/i,\n    directive: {\n      pattern: /#[a-z]+\\b/i,\n      alias: 'important'\n    },\n    keyword:\n      /\\b(?:Abort|AboveNormal|Add|ahk_class|ahk_exe|ahk_group|ahk_id|ahk_pid|All|Alnum|Alpha|AltSubmit|AltTab|AltTabAndMenu|AltTabMenu|AltTabMenuDismiss|AlwaysOnTop|AutoSize|Background|BackgroundTrans|BelowNormal|between|BitAnd|BitNot|BitOr|BitShiftLeft|BitShiftRight|BitXOr|Bold|Border|Button|ByRef|Catch|Checkbox|Checked|CheckedGray|Choose|ChooseString|Close|Color|ComboBox|Contains|ControlList|Count|Date|DateTime|Days|DDL|Default|DeleteAll|Delimiter|Deref|Destroy|Digit|Disable|Disabled|DropDownList|Edit|Eject|Else|Enable|Enabled|Error|Exist|Expand|ExStyle|FileSystem|Finally|First|Flash|Float|FloatFast|Focus|Font|for|global|Grid|Group|GroupBox|GuiClose|GuiContextMenu|GuiDropFiles|GuiEscape|GuiSize|Hdr|Hidden|Hide|High|HKCC|HKCR|HKCU|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_LOCAL_MACHINE|HKEY_USERS|HKLM|HKU|Hours|HScroll|Icon|IconSmall|ID|IDLast|If|IfEqual|IfExist|IfGreater|IfGreaterOrEqual|IfInString|IfLess|IfLessOrEqual|IfMsgBox|IfNotEqual|IfNotExist|IfNotInString|IfWinActive|IfWinExist|IfWinNotActive|IfWinNotExist|Ignore|ImageList|in|Integer|IntegerFast|Interrupt|is|italic|Join|Label|LastFound|LastFoundExist|Limit|Lines|List|ListBox|ListView|local|Lock|Logoff|Low|Lower|Lowercase|MainWindow|Margin|Maximize|MaximizeBox|MaxSize|Minimize|MinimizeBox|MinMax|MinSize|Minutes|MonthCal|Mouse|Move|Multi|NA|No|NoActivate|NoDefault|NoHide|NoIcon|NoMainWindow|norm|Normal|NoSort|NoSortHdr|NoStandard|Not|NoTab|NoTimers|Number|Off|Ok|On|OwnDialogs|Owner|Parse|Password|Picture|Pixel|Pos|Pow|Priority|ProcessName|Radio|Range|Read|ReadOnly|Realtime|Redraw|Region|REG_BINARY|REG_DWORD|REG_EXPAND_SZ|REG_MULTI_SZ|REG_SZ|Relative|Rename|Report|Resize|Restore|Retry|RGB|Screen|Seconds|Section|Serial|SetLabel|ShiftAltTab|Show|Single|Slider|SortDesc|Standard|static|Status|StatusBar|StatusCD|strike|Style|Submit|SysMenu|Tab2|TabStop|Text|Theme|Throw|Tile|ToggleCheck|ToggleEnable|ToolWindow|Top|Topmost|TransColor|Transparent|Tray|TreeView|Try|TryAgain|Type|UnCheck|underline|Unicode|Unlock|Until|UpDown|Upper|Uppercase|UseErrorLevel|Vis|VisFirst|Visible|VScroll|Wait|WaitClose|WantCtrlA|WantF2|WantReturn|While|Wrap|Xdigit|xm|xp|xs|Yes|ym|yp|ys)\\b/i,\n    function: /[^(); \\t,\\n+*\\-=?>:\\\\\\/<&%\\[\\]]+(?=\\()/,\n    punctuation: /[{}[\\]():,]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nautoit.displayName = 'autoit'\nautoit.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function autoit(Prism) {\n  Prism.languages.autoit = {\n    comment: [\n      /;.*/,\n      {\n        // The multi-line comments delimiters can actually be commented out with \";\"\n        pattern:\n          /(^[\\t ]*)#(?:comments-start|cs)[\\s\\S]*?^[ \\t]*#(?:ce|comments-end)/m,\n        lookbehind: true\n      }\n    ],\n    url: {\n      pattern: /(^[\\t ]*#include\\s+)(?:<[^\\r\\n>]+>|\"[^\\r\\n\"]+\")/m,\n      lookbehind: true\n    },\n    string: {\n      pattern: /([\"'])(?:\\1\\1|(?!\\1)[^\\r\\n])*\\1/,\n      greedy: true,\n      inside: {\n        variable: /([%$@])\\w+\\1/\n      }\n    },\n    directive: {\n      pattern: /(^[\\t ]*)#[\\w-]+/m,\n      lookbehind: true,\n      alias: 'keyword'\n    },\n    function: /\\b\\w+(?=\\()/,\n    // Variables and macros\n    variable: /[$@]\\w+/,\n    keyword:\n      /\\b(?:Case|Const|Continue(?:Case|Loop)|Default|Dim|Do|Else(?:If)?|End(?:Func|If|Select|Switch|With)|Enum|Exit(?:Loop)?|For|Func|Global|If|In|Local|Next|Null|ReDim|Select|Static|Step|Switch|Then|To|Until|Volatile|WEnd|While|With)\\b/i,\n    number: /\\b(?:0x[\\da-f]+|\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?)\\b/i,\n    boolean: /\\b(?:False|True)\\b/i,\n    operator: /<[=>]?|[-+*\\/=&>]=?|[?^]|\\b(?:And|Not|Or)\\b/i,\n    punctuation: /[\\[\\]().,:]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\navisynth.displayName = 'avisynth'\navisynth.aliases = ['avs']\n\n/** @param {Refractor} Prism */\nexport default function avisynth(Prism) {\n  // http://avisynth.nl/index.php/The_full_AviSynth_grammar\n  ;(function (Prism) {\n    function replace(pattern, replacements) {\n      return pattern.replace(/<<(\\d+)>>/g, function (m, index) {\n        return replacements[+index]\n      })\n    }\n    function re(pattern, replacements, flags) {\n      return RegExp(replace(pattern, replacements), flags || '')\n    }\n    var types = /bool|clip|float|int|string|val/.source\n    var internals = [\n      // bools\n      /is(?:bool|clip|float|int|string)|defined|(?:(?:internal)?function|var)?exists?/\n        .source,\n      // control\n      /apply|assert|default|eval|import|nop|select|undefined/.source,\n      // global\n      /opt_(?:allowfloataudio|avipadscanlines|dwchannelmask|enable_(?:b64a|planartopackedrgb|v210|y3_10_10|y3_10_16)|usewaveextensible|vdubplanarhack)|set(?:cachemode|maxcpu|memorymax|planarlegacyalignment|workingdir)/\n        .source,\n      // conv\n      /hex(?:value)?|value/.source,\n      // numeric\n      /abs|ceil|continued(?:denominator|numerator)?|exp|floor|fmod|frac|log(?:10)?|max|min|muldiv|pi|pow|rand|round|sign|spline|sqrt/\n        .source,\n      // trig\n      /a?sinh?|a?cosh?|a?tan[2h]?/.source,\n      // bit\n      /(?:bit(?:and|not|x?or|[lr]?shift[aslu]?|sh[lr]|sa[lr]|[lr]rotatel?|ro[rl]|te?st|set(?:count)?|cl(?:ea)?r|ch(?:an)?ge?))/\n        .source,\n      // runtime\n      /average(?:[bgr]|chroma[uv]|luma)|(?:[rgb]|chroma[uv]|luma|rgb|[yuv](?=difference(?:fromprevious|tonext)))difference(?:fromprevious|tonext)?|[yuvrgb]plane(?:median|min|max|minmaxdifference)/\n        .source,\n      // script\n      /getprocessinfo|logmsg|script(?:dir(?:utf8)?|file(?:utf8)?|name(?:utf8)?)|setlogparams/\n        .source,\n      // string\n      /chr|(?:fill|find|left|mid|replace|rev|right)str|format|[lu]case|ord|str(?:cmpi?|fromutf8|len|toutf8)|time|trim(?:all|left|right)/\n        .source,\n      // version\n      /isversionorgreater|version(?:number|string)/.source,\n      // helper\n      /buildpixeltype|colorspacenametopixeltype/.source,\n      // avsplus\n      /addautoloaddir|on(?:cpu|cuda)|prefetch|setfiltermtmode/.source\n    ].join('|')\n    var properties = [\n      // content\n      /has(?:audio|video)/.source,\n      // resolution\n      /height|width/.source,\n      // framerate\n      /frame(?:count|rate)|framerate(?:denominator|numerator)/.source,\n      // interlacing\n      /getparity|is(?:field|frame)based/.source,\n      // color format\n      /bitspercomponent|componentsize|hasalpha|is(?:planar(?:rgba?)?|interleaved|rgb(?:24|32|48|64)?|y(?:8|u(?:va?|y2))?|yv(?:12|16|24|411)|420|422|444|packedrgb)|numcomponents|pixeltype/\n        .source,\n      // audio\n      /audio(?:bits|channels|duration|length(?:[fs]|hi|lo)?|rate)|isaudio(?:float|int)/\n        .source\n    ].join('|')\n    var filters = [\n      // source\n      /avi(?:file)?source|directshowsource|image(?:reader|source|sourceanim)|opendmlsource|segmented(?:avisource|directshowsource)|wavsource/\n        .source,\n      // color\n      /coloryuv|convertbacktoyuy2|convertto(?:RGB(?:24|32|48|64)|(?:planar)?RGBA?|Y8?|YV(?:12|16|24|411)|YUVA?(?:411|420|422|444)|YUY2)|fixluminance|gr[ae]yscale|invert|levels|limiter|mergea?rgb|merge(?:chroma|luma)|rgbadjust|show(?:alpha|blue|green|red)|swapuv|tweak|[uv]toy8?|ytouv/\n        .source,\n      // overlay\n      /(?:colorkey|reset)mask|layer|mask(?:hs)?|merge|overlay|subtract/.source,\n      // geometry\n      /addborders|(?:bicubic|bilinear|blackman|gauss|lanczos4|lanczos|point|sinc|spline(?:16|36|64))resize|crop(?:bottom)?|flip(?:horizontal|vertical)|(?:horizontal|vertical)?reduceby2|letterbox|skewrows|turn(?:180|left|right)/\n        .source,\n      // pixel\n      /blur|fixbrokenchromaupsampling|generalconvolution|(?:spatial|temporal)soften|sharpen/\n        .source,\n      // timeline\n      /trim|(?:un)?alignedsplice|(?:assume|assumescaled|change|convert)FPS|(?:delete|duplicate)frame|dissolve|fade(?:in|io|out)[02]?|freezeframe|interleave|loop|reverse|select(?:even|odd|(?:range)?every)/\n        .source,\n      // interlace\n      /assume[bt]ff|assume(?:field|frame)based|bob|complementparity|doubleweave|peculiarblend|pulldown|separate(?:columns|fields|rows)|swapfields|weave(?:columns|rows)?/\n        .source,\n      // audio\n      /amplify(?:db)?|assumesamplerate|audiodub(?:ex)?|audiotrim|convertaudioto(?:(?:8|16|24|32)bit|float)|converttomono|delayaudio|ensurevbrmp3sync|get(?:left|right)?channel|kill(?:audio|video)|mergechannels|mixaudio|monotostereo|normalize|resampleaudio|ssrc|supereq|timestretch/\n        .source,\n      // conditional\n      /animate|applyrange|conditional(?:filter|reader|select)|frameevaluate|scriptclip|tcp(?:server|source)|writefile(?:end|if|start)?/\n        .source,\n      // export\n      /imagewriter/.source,\n      // debug\n      /blackness|blankclip|colorbars(?:hd)?|compare|dumpfiltergraph|echo|histogram|info|messageclip|preroll|setgraphanalysis|show(?:framenumber|smpte|time)|showfiveversions|stack(?:horizontal|vertical)|subtitle|tone|version/\n        .source\n    ].join('|')\n    var allinternals = [internals, properties, filters].join('|')\n    Prism.languages.avisynth = {\n      comment: [\n        {\n          // Matches [* *] nestable block comments, but only supports 1 level of nested comments\n          // /\\[\\*(?:[^\\[*]|\\[(?!\\*)|\\*(?!\\])|<self>)*\\*\\]/\n          pattern:\n            /(^|[^\\\\])\\[\\*(?:[^\\[*]|\\[(?!\\*)|\\*(?!\\])|\\[\\*(?:[^\\[*]|\\[(?!\\*)|\\*(?!\\]))*\\*\\])*\\*\\]/,\n          lookbehind: true,\n          greedy: true\n        },\n        {\n          // Matches /* */ block comments\n          pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n          lookbehind: true,\n          greedy: true\n        },\n        {\n          // Matches # comments\n          pattern: /(^|[^\\\\$])#.*/,\n          lookbehind: true,\n          greedy: true\n        }\n      ],\n      // Handle before strings because optional arguments are surrounded by double quotes\n      argument: {\n        pattern: re(/\\b(?:<<0>>)\\s+(\"?)\\w+\\1/.source, [types], 'i'),\n        inside: {\n          keyword: /^\\w+/\n        }\n      },\n      // Optional argument assignment\n      'argument-label': {\n        pattern: /([,(][\\s\\\\]*)\\w+\\s*=(?!=)/,\n        lookbehind: true,\n        inside: {\n          'argument-name': {\n            pattern: /^\\w+/,\n            alias: 'punctuation'\n          },\n          punctuation: /=$/\n        }\n      },\n      string: [\n        {\n          // triple double-quoted\n          pattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n          greedy: true\n        },\n        {\n          // single double-quoted\n          pattern: /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n          greedy: true,\n          inside: {\n            constant: {\n              // These *are* case-sensitive!\n              pattern:\n                /\\b(?:DEFAULT_MT_MODE|(?:MAINSCRIPT|PROGRAM|SCRIPT)DIR|(?:MACHINE|USER)_(?:CLASSIC|PLUS)_PLUGINS)\\b/\n            }\n          }\n        }\n      ],\n      // The special \"last\" variable that takes the value of the last implicitly returned clip\n      variable: /\\b(?:last)\\b/i,\n      boolean: /\\b(?:false|no|true|yes)\\b/i,\n      keyword:\n        /\\b(?:catch|else|for|function|global|if|return|try|while|__END__)\\b/i,\n      constant: /\\bMT_(?:MULTI_INSTANCE|NICE_FILTER|SERIALIZED|SPECIAL_MT)\\b/,\n      // AviSynth's internal functions, filters, and properties\n      'builtin-function': {\n        pattern: re(/\\b(?:<<0>>)\\b/.source, [allinternals], 'i'),\n        alias: 'function'\n      },\n      'type-cast': {\n        pattern: re(/\\b(?:<<0>>)(?=\\s*\\()/.source, [types], 'i'),\n        alias: 'keyword'\n      },\n      // External/user-defined filters\n      function: {\n        pattern: /\\b[a-z_]\\w*(?=\\s*\\()|(\\.)[a-z_]\\w*\\b/i,\n        lookbehind: true\n      },\n      // Matches a \\ as the first or last character on a line\n      'line-continuation': {\n        pattern: /(^[ \\t]*)\\\\|\\\\(?=[ \\t]*$)/m,\n        lookbehind: true,\n        alias: 'punctuation'\n      },\n      number:\n        /\\B\\$(?:[\\da-f]{6}|[\\da-f]{8})\\b|(?:(?:\\b|\\B-)\\d+(?:\\.\\d*)?\\b|\\B\\.\\d+\\b)/i,\n      operator: /\\+\\+?|[!=<>]=?|&&|\\|\\||[?:*/%-]/,\n      punctuation: /[{}\\[\\]();,.]/\n    }\n    Prism.languages.avs = Prism.languages.avisynth\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\navroIdl.displayName = 'avro-idl'\navroIdl.aliases = ['avdl']\n\n/** @param {Refractor} Prism */\nexport default function avroIdl(Prism) {\n  // GitHub: https://github.com/apache/avro\n  // Docs: https://avro.apache.org/docs/current/idl.html\n\n  Prism.languages['avro-idl'] = {\n    comment: {\n      pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n      greedy: true\n    },\n    string: {\n      pattern: /(^|[^\\\\])\"(?:[^\\r\\n\"\\\\]|\\\\.)*\"/,\n      lookbehind: true,\n      greedy: true\n    },\n    annotation: {\n      pattern: /@(?:[$\\w.-]|`[^\\r\\n`]+`)+/,\n      greedy: true,\n      alias: 'function'\n    },\n    'function-identifier': {\n      pattern: /`[^\\r\\n`]+`(?=\\s*\\()/,\n      greedy: true,\n      alias: 'function'\n    },\n    identifier: {\n      pattern: /`[^\\r\\n`]+`/,\n      greedy: true\n    },\n    'class-name': {\n      pattern: /(\\b(?:enum|error|protocol|record|throws)\\b\\s+)[$\\w]+/,\n      lookbehind: true,\n      greedy: true\n    },\n    keyword:\n      /\\b(?:array|boolean|bytes|date|decimal|double|enum|error|false|fixed|float|idl|import|int|local_timestamp_ms|long|map|null|oneway|protocol|record|schema|string|throws|time_ms|timestamp_ms|true|union|uuid|void)\\b/,\n    function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n    number: [\n      {\n        pattern:\n          /(^|[^\\w.])-?(?:(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|0x(?:[a-f0-9]+(?:\\.[a-f0-9]*)?|\\.[a-f0-9]+)(?:p[+-]?\\d+)?)[dfl]?(?![\\w.])/i,\n        lookbehind: true\n      },\n      /-?\\b(?:Infinity|NaN)\\b/\n    ],\n    operator: /=/,\n    punctuation: /[()\\[\\]{}<>.:,;-]/\n  }\n  Prism.languages.avdl = Prism.languages['avro-idl']\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nawk.displayName = 'awk'\nawk.aliases = ['gawk']\n\n/** @param {Refractor} Prism */\nexport default function awk(Prism) {\n  Prism.languages.awk = {\n    hashbang: {\n      pattern: /^#!.*/,\n      greedy: true,\n      alias: 'comment'\n    },\n    comment: {\n      pattern: /#.*/,\n      greedy: true\n    },\n    string: {\n      pattern: /(^|[^\\\\])\"(?:[^\\\\\"\\r\\n]|\\\\.)*\"/,\n      lookbehind: true,\n      greedy: true\n    },\n    regex: {\n      pattern: /((?:^|[^\\w\\s)])\\s*)\\/(?:[^\\/\\\\\\r\\n]|\\\\.)*\\//,\n      lookbehind: true,\n      greedy: true\n    },\n    variable: /\\$\\w+/,\n    keyword:\n      /\\b(?:BEGIN|BEGINFILE|END|ENDFILE|break|case|continue|default|delete|do|else|exit|for|function|getline|if|in|next|nextfile|printf?|return|switch|while)\\b|@(?:include|load)\\b/,\n    function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n    number: /\\b(?:\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?|0x[a-fA-F0-9]+)\\b/,\n    operator: /--|\\+\\+|!?~|>&|>>|<<|(?:\\*\\*|[<>!=+\\-*/%^])=?|&&|\\|[|&]|[?:]/,\n    punctuation: /[()[\\]{},;]/\n  }\n  Prism.languages.gawk = Prism.languages.awk\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nbatch.displayName = 'batch'\nbatch.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function batch(Prism) {\n  ;(function (Prism) {\n    var variable = /%%?[~:\\w]+%?|!\\S+!/\n    var parameter = {\n      pattern: /\\/[a-z?]+(?=[ :]|$):?|-[a-z]\\b|--[a-z-]+\\b/im,\n      alias: 'attr-name',\n      inside: {\n        punctuation: /:/\n      }\n    }\n    var string = /\"(?:[\\\\\"]\"|[^\"])*\"(?!\")/\n    var number = /(?:\\b|-)\\d+\\b/\n    Prism.languages.batch = {\n      comment: [\n        /^::.*/m,\n        {\n          pattern: /((?:^|[&(])[ \\t]*)rem\\b(?:[^^&)\\r\\n]|\\^(?:\\r\\n|[\\s\\S]))*/im,\n          lookbehind: true\n        }\n      ],\n      label: {\n        pattern: /^:.*/m,\n        alias: 'property'\n      },\n      command: [\n        {\n          // FOR command\n          pattern:\n            /((?:^|[&(])[ \\t]*)for(?: \\/[a-z?](?:[ :](?:\"[^\"]*\"|[^\\s\"/]\\S*))?)* \\S+ in \\([^)]+\\) do/im,\n          lookbehind: true,\n          inside: {\n            keyword: /\\b(?:do|in)\\b|^for\\b/i,\n            string: string,\n            parameter: parameter,\n            variable: variable,\n            number: number,\n            punctuation: /[()',]/\n          }\n        },\n        {\n          // IF command\n          pattern:\n            /((?:^|[&(])[ \\t]*)if(?: \\/[a-z?](?:[ :](?:\"[^\"]*\"|[^\\s\"/]\\S*))?)* (?:not )?(?:cmdextversion \\d+|defined \\w+|errorlevel \\d+|exist \\S+|(?:\"[^\"]*\"|(?!\")(?:(?!==)\\S)+)?(?:==| (?:equ|geq|gtr|leq|lss|neq) )(?:\"[^\"]*\"|[^\\s\"]\\S*))/im,\n          lookbehind: true,\n          inside: {\n            keyword:\n              /\\b(?:cmdextversion|defined|errorlevel|exist|not)\\b|^if\\b/i,\n            string: string,\n            parameter: parameter,\n            variable: variable,\n            number: number,\n            operator: /\\^|==|\\b(?:equ|geq|gtr|leq|lss|neq)\\b/i\n          }\n        },\n        {\n          // ELSE command\n          pattern: /((?:^|[&()])[ \\t]*)else\\b/im,\n          lookbehind: true,\n          inside: {\n            keyword: /^else\\b/i\n          }\n        },\n        {\n          // SET command\n          pattern:\n            /((?:^|[&(])[ \\t]*)set(?: \\/[a-z](?:[ :](?:\"[^\"]*\"|[^\\s\"/]\\S*))?)* (?:[^^&)\\r\\n]|\\^(?:\\r\\n|[\\s\\S]))*/im,\n          lookbehind: true,\n          inside: {\n            keyword: /^set\\b/i,\n            string: string,\n            parameter: parameter,\n            variable: [variable, /\\w+(?=(?:[*\\/%+\\-&^|]|<<|>>)?=)/],\n            number: number,\n            operator: /[*\\/%+\\-&^|]=?|<<=?|>>=?|[!~_=]/,\n            punctuation: /[()',]/\n          }\n        },\n        {\n          // Other commands\n          pattern:\n            /((?:^|[&(])[ \\t]*@?)\\w+\\b(?:\"(?:[\\\\\"]\"|[^\"])*\"(?!\")|[^\"^&)\\r\\n]|\\^(?:\\r\\n|[\\s\\S]))*/m,\n          lookbehind: true,\n          inside: {\n            keyword: /^\\w+\\b/,\n            string: string,\n            parameter: parameter,\n            label: {\n              pattern: /(^\\s*):\\S+/m,\n              lookbehind: true,\n              alias: 'property'\n            },\n            variable: variable,\n            number: number,\n            operator: /\\^/\n          }\n        }\n      ],\n      operator: /[&@]/,\n      punctuation: /[()']/\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nbbcode.displayName = 'bbcode'\nbbcode.aliases = ['shortcode']\n\n/** @param {Refractor} Prism */\nexport default function bbcode(Prism) {\n  Prism.languages.bbcode = {\n    tag: {\n      pattern:\n        /\\[\\/?[^\\s=\\]]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\"\\]=]+))?(?:\\s+[^\\s=\\]]+\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\"\\]=]+))*\\s*\\]/,\n      inside: {\n        tag: {\n          pattern: /^\\[\\/?[^\\s=\\]]+/,\n          inside: {\n            punctuation: /^\\[\\/?/\n          }\n        },\n        'attr-value': {\n          pattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\"\\]=]+)/,\n          inside: {\n            punctuation: [\n              /^=/,\n              {\n                pattern: /^(\\s*)[\"']|[\"']$/,\n                lookbehind: true\n              }\n            ]\n          }\n        },\n        punctuation: /\\]/,\n        'attr-name': /[^\\s=\\]]+/\n      }\n    }\n  }\n  Prism.languages.shortcode = Prism.languages.bbcode\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nbbj.displayName = 'bbj'\nbbj.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function bbj(Prism) {\n  ;(function (Prism) {\n    Prism.languages.bbj = {\n      comment: {\n        pattern: /(^|[^\\\\:])rem\\s+.*/i,\n        lookbehind: true,\n        greedy: true\n      },\n      string: {\n        pattern: /(['\"])(?:(?!\\1|\\\\).|\\\\.)*\\1/,\n        greedy: true\n      },\n      number: /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:E[+-]?\\d+)?/i,\n      keyword:\n        /\\b(?:abstract|all|argc|begin|bye|callback|case|chn|class|classend|ctl|day|declare|delete|dim|dom|dread|dsz|else|end|endif|err|exitto|extends|fi|field|for|from|gosub|goto|if|implements|interface|interfaceend|iol|iolist|let|list|load|method|methodend|methodret|on|opts|pfx|print|private|process_events|protected|psz|public|read|read_resource|release|remove_callback|repeat|restore|return|rev|seterr|setesc|sqlchn|sqlunt|ssn|start|static|swend|switch|sys|then|tim|unt|until|use|void|wend|where|while)\\b/i,\n      function: /\\b\\w+(?=\\()/,\n      boolean: /\\b(?:BBjAPI\\.TRUE|BBjAPI\\.FALSE)\\b/i,\n      operator: /<[=>]?|>=?|[+\\-*\\/^=&]|\\b(?:and|not|or|xor)\\b/i,\n      punctuation: /[.,;:()]/\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nbicep.displayName = 'bicep'\nbicep.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function bicep(Prism) {\n  // based loosely upon: https://github.com/Azure/bicep/blob/main/src/textmate/bicep.tmlanguage\n  Prism.languages.bicep = {\n    comment: [\n      {\n        // multiline comments eg /* ASDF */\n        pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n        lookbehind: true,\n        greedy: true\n      },\n      {\n        // singleline comments eg // ASDF\n        pattern: /(^|[^\\\\:])\\/\\/.*/,\n        lookbehind: true,\n        greedy: true\n      }\n    ],\n    property: [\n      {\n        pattern: /([\\r\\n][ \\t]*)[a-z_]\\w*(?=[ \\t]*:)/i,\n        lookbehind: true\n      },\n      {\n        pattern: /([\\r\\n][ \\t]*)'(?:\\\\.|\\$(?!\\{)|[^'\\\\\\r\\n$])*'(?=[ \\t]*:)/,\n        lookbehind: true,\n        greedy: true\n      }\n    ],\n    string: [\n      {\n        pattern: /'''[^'][\\s\\S]*?'''/,\n        greedy: true\n      },\n      {\n        pattern: /(^|[^\\\\'])'(?:\\\\.|\\$(?!\\{)|[^'\\\\\\r\\n$])*'/,\n        lookbehind: true,\n        greedy: true\n      }\n    ],\n    'interpolated-string': {\n      pattern: /(^|[^\\\\'])'(?:\\\\.|\\$(?:(?!\\{)|\\{[^{}\\r\\n]*\\})|[^'\\\\\\r\\n$])*'/,\n      lookbehind: true,\n      greedy: true,\n      inside: {\n        interpolation: {\n          pattern: /\\$\\{[^{}\\r\\n]*\\}/,\n          inside: {\n            expression: {\n              pattern: /(^\\$\\{)[\\s\\S]+(?=\\}$)/,\n              lookbehind: true\n            },\n            punctuation: /^\\$\\{|\\}$/\n          }\n        },\n        string: /[\\s\\S]+/\n      }\n    },\n    datatype: {\n      pattern: /(\\b(?:output|param)\\b[ \\t]+\\w+[ \\t]+)\\w+\\b/,\n      lookbehind: true,\n      alias: 'class-name'\n    },\n    boolean: /\\b(?:false|true)\\b/,\n    // https://github.com/Azure/bicep/blob/114a3251b4e6e30082a58729f19a8cc4e374ffa6/src/textmate/bicep.tmlanguage#L184\n    keyword:\n      /\\b(?:existing|for|if|in|module|null|output|param|resource|targetScope|var)\\b/,\n    decorator: /@\\w+\\b/,\n    function: /\\b[a-z_]\\w*(?=[ \\t]*\\()/i,\n    number: /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:E[+-]?\\d+)?/i,\n    operator:\n      /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/,\n    punctuation: /[{}[\\];(),.:]/\n  }\n  Prism.languages.bicep['interpolated-string'].inside['interpolation'].inside[\n    'expression'\n  ].inside = Prism.languages.bicep\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\nbirb.displayName = 'birb'\nbirb.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function birb(Prism) {\n  Prism.register(refractorClike)\n  Prism.languages.birb = Prism.languages.extend('clike', {\n    string: {\n      pattern: /r?(\"|')(?:\\\\.|(?!\\1)[^\\\\])*\\1/,\n      greedy: true\n    },\n    'class-name': [\n      /\\b[A-Z](?:[\\d_]*[a-zA-Z]\\w*)?\\b/,\n      // matches variable and function return types (parameters as well).\n      /\\b(?:[A-Z]\\w*|(?!(?:var|void)\\b)[a-z]\\w*)(?=\\s+\\w+\\s*[;,=()])/\n    ],\n    keyword:\n      /\\b(?:assert|break|case|class|const|default|else|enum|final|follows|for|grab|if|nest|new|next|noSeeb|return|static|switch|throw|var|void|while)\\b/,\n    operator: /\\+\\+|--|&&|\\|\\||<<=?|>>=?|~(?:\\/=?)?|[+\\-*\\/%&^|=!<>]=?|\\?|:/,\n    variable: /\\b[a-z_]\\w*\\b/\n  })\n  Prism.languages.insertBefore('birb', 'function', {\n    metadata: {\n      pattern: /<\\w+>/,\n      greedy: true,\n      alias: 'symbol'\n    }\n  })\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorC from './c.js'\nbison.displayName = 'bison'\nbison.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function bison(Prism) {\n  Prism.register(refractorC)\n  Prism.languages.bison = Prism.languages.extend('c', {})\n  Prism.languages.insertBefore('bison', 'comment', {\n    bison: {\n      // This should match all the beginning of the file\n      // including the prologue(s), the bison declarations and\n      // the grammar rules.\n      pattern: /^(?:[^%]|%(?!%))*%%[\\s\\S]*?%%/,\n      inside: {\n        c: {\n          // Allow for one level of nested braces\n          pattern: /%\\{[\\s\\S]*?%\\}|\\{(?:\\{[^}]*\\}|[^{}])*\\}/,\n          inside: {\n            delimiter: {\n              pattern: /^%?\\{|%?\\}$/,\n              alias: 'punctuation'\n            },\n            'bison-variable': {\n              pattern: /[$@](?:<[^\\s>]+>)?[\\w$]+/,\n              alias: 'variable',\n              inside: {\n                punctuation: /<|>/\n              }\n            },\n            rest: Prism.languages.c\n          }\n        },\n        comment: Prism.languages.c.comment,\n        string: Prism.languages.c.string,\n        property: /\\S+(?=:)/,\n        keyword: /%\\w+/,\n        number: {\n          pattern: /(^|[^@])\\b(?:0x[\\da-f]+|\\d+)/i,\n          lookbehind: true\n        },\n        punctuation: /%[%?]|[|:;\\[\\]<>]/\n      }\n    }\n  })\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nbnf.displayName = 'bnf'\nbnf.aliases = ['rbnf']\n\n/** @param {Refractor} Prism */\nexport default function bnf(Prism) {\n  Prism.languages.bnf = {\n    string: {\n      pattern: /\"[^\\r\\n\"]*\"|'[^\\r\\n']*'/\n    },\n    definition: {\n      pattern: /<[^<>\\r\\n\\t]+>(?=\\s*::=)/,\n      alias: ['rule', 'keyword'],\n      inside: {\n        punctuation: /^<|>$/\n      }\n    },\n    rule: {\n      pattern: /<[^<>\\r\\n\\t]+>/,\n      inside: {\n        punctuation: /^<|>$/\n      }\n    },\n    operator: /::=|[|()[\\]{}*+?]|\\.{3}/\n  }\n  Prism.languages.rbnf = Prism.languages.bnf\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nbqn.displayName = 'bqn'\nbqn.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function bqn(Prism) {\n  Prism.languages.bqn = {\n    shebang: {\n      pattern: /^#![ \\t]*\\/.*/,\n      alias: 'important',\n      greedy: true\n    },\n    comment: {\n      pattern: /#.*/,\n      greedy: true\n    },\n    'string-literal': {\n      pattern: /\"(?:[^\"]|\"\")*\"/,\n      greedy: true,\n      alias: 'string'\n    },\n    'character-literal': {\n      pattern: /'(?:[\\s\\S]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF])'/,\n      greedy: true,\n      alias: 'char'\n    },\n    function: /\u2022[\\w\u00AF.\u221E\u03C0]+[\\w\u00AF.\u221E\u03C0]*/,\n    'dot-notation-on-brackets': {\n      pattern: /\\{(?=.*\\}\\.)|\\}\\./,\n      alias: 'namespace'\n    },\n    'special-name': {\n      pattern: /(?:\uD835\uDD68|\uD835\uDD69|\uD835\uDD57|\uD835\uDD58|\uD835\uDD64|\uD835\uDD63|\uD835\uDD4E|\uD835\uDD4F|\uD835\uDD3D|\uD835\uDD3E|\uD835\uDD4A|_\uD835\uDD63_|_\uD835\uDD63)/,\n      alias: 'keyword'\n    },\n    'dot-notation-on-name': {\n      pattern: /[A-Za-z_][\\w\u00AF\u221E\u03C0]*\\./,\n      alias: 'namespace'\n    },\n    'word-number-scientific': {\n      pattern: /\\d+(?:\\.\\d+)?[eE]\u00AF?\\d+/,\n      alias: 'number'\n    },\n    'word-name': {\n      pattern: /[A-Za-z_][\\w\u00AF\u221E\u03C0]*/,\n      alias: 'symbol'\n    },\n    'word-number': {\n      pattern:\n        /[\u00AF\u221E\u03C0]?(?:\\d*\\.?\\b\\d+(?:e[+\u00AF]?\\d+|E[+\u00AF]?\\d+)?|\u00AF|\u221E|\u03C0)(?:j\u00AF?(?:(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:e[+\u00AF]?\\d+|E[+\u00AF]?\\d+)?|\u00AF|\u221E|\u03C0))?/,\n      alias: 'number'\n    },\n    'null-literal': {\n      pattern: /@/,\n      alias: 'char'\n    },\n    'primitive-functions': {\n      pattern: /[-+\u00D7\u00F7\u22C6\u221A\u230A\u2308|\u00AC\u2227\u2228<>\u2260=\u2264\u2265\u2261\u2262\u22A3\u22A2\u294A\u223E\u224D\u22C8\u2191\u2193\u2195\u00AB\u00BB\u233D\u2349/\u234B\u2352\u228F\u2291\u2290\u2292\u220A\u2377\u2294!]/,\n      alias: 'operator'\n    },\n    'primitive-1-operators': {\n      pattern: /[`\u02DC\u02D8\u00A8\u207C\u231C\u00B4\u02DD\u02D9]/,\n      alias: 'operator'\n    },\n    'primitive-2-operators': {\n      pattern: /[\u2218\u22B8\u27DC\u25CB\u233E\u2389\u2687\u235F\u2298\u25F6\u238A]/,\n      alias: 'operator'\n    },\n    punctuation: /[\u2190\u21D0\u21A9(){}\u27E8\u27E9[\\]\u203F\u00B7\u22C4,.;:?]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nbrainfuck.displayName = 'brainfuck'\nbrainfuck.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function brainfuck(Prism) {\n  Prism.languages.brainfuck = {\n    pointer: {\n      pattern: /<|>/,\n      alias: 'keyword'\n    },\n    increment: {\n      pattern: /\\+/,\n      alias: 'inserted'\n    },\n    decrement: {\n      pattern: /-/,\n      alias: 'deleted'\n    },\n    branching: {\n      pattern: /\\[|\\]/,\n      alias: 'important'\n    },\n    operator: /[.,]/,\n    comment: /\\S+/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nbrightscript.displayName = 'brightscript'\nbrightscript.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function brightscript(Prism) {\n  Prism.languages.brightscript = {\n    comment: /(?:\\brem|').*/i,\n    'directive-statement': {\n      pattern: /(^[\\t ]*)#(?:const|else(?:[\\t ]+if)?|end[\\t ]+if|error|if).*/im,\n      lookbehind: true,\n      alias: 'property',\n      inside: {\n        'error-message': {\n          pattern: /(^#error).+/,\n          lookbehind: true\n        },\n        directive: {\n          pattern: /^#(?:const|else(?:[\\t ]+if)?|end[\\t ]+if|error|if)/,\n          alias: 'keyword'\n        },\n        expression: {\n          pattern: /[\\s\\S]+/,\n          inside: null // see below\n        }\n      }\n    },\n    property: {\n      pattern:\n        /([\\r\\n{,][\\t ]*)(?:(?!\\d)\\w+|\"(?:[^\"\\r\\n]|\"\")*\"(?!\"))(?=[ \\t]*:)/,\n      lookbehind: true,\n      greedy: true\n    },\n    string: {\n      pattern: /\"(?:[^\"\\r\\n]|\"\")*\"(?!\")/,\n      greedy: true\n    },\n    'class-name': {\n      pattern: /(\\bAs[\\t ]+)\\w+/i,\n      lookbehind: true\n    },\n    keyword:\n      /\\b(?:As|Dim|Each|Else|Elseif|End|Exit|For|Function|Goto|If|In|Print|Return|Step|Stop|Sub|Then|To|While)\\b/i,\n    boolean: /\\b(?:false|true)\\b/i,\n    function: /\\b(?!\\d)\\w+(?=[\\t ]*\\()/,\n    number: /(?:\\b\\d+(?:\\.\\d+)?(?:[ed][+-]\\d+)?|&h[a-f\\d]+)\\b[%&!#]?/i,\n    operator:\n      /--|\\+\\+|>>=?|<<=?|<>|[-+*/\\\\<>]=?|[:^=?]|\\b(?:and|mod|not|or)\\b/i,\n    punctuation: /[.,;()[\\]{}]/,\n    constant: /\\b(?:LINE_NUM)\\b/i\n  }\n  Prism.languages.brightscript['directive-statement'].inside.expression.inside =\n    Prism.languages.brightscript\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nbro.displayName = 'bro'\nbro.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function bro(Prism) {\n  Prism.languages.bro = {\n    comment: {\n      pattern: /(^|[^\\\\$])#.*/,\n      lookbehind: true,\n      inside: {\n        italic: /\\b(?:FIXME|TODO|XXX)\\b/\n      }\n    },\n    string: {\n      pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      greedy: true\n    },\n    boolean: /\\b[TF]\\b/,\n    function: {\n      pattern: /(\\b(?:event|function|hook)[ \\t]+)\\w+(?:::\\w+)?/,\n      lookbehind: true\n    },\n    builtin:\n      /(?:@(?:load(?:-(?:plugin|sigs))?|unload|prefixes|ifn?def|else|(?:end)?if|DIR|FILENAME))|(?:&?(?:add_func|create_expire|default|delete_func|encrypt|error_handler|expire_func|group|log|mergeable|optional|persistent|priority|raw_output|read_expire|redef|rotate_interval|rotate_size|synchronized|type_column|write_expire))/,\n    constant: {\n      pattern: /(\\bconst[ \\t]+)\\w+/i,\n      lookbehind: true\n    },\n    keyword:\n      /\\b(?:add|addr|alarm|any|bool|break|const|continue|count|delete|double|else|enum|event|export|file|for|function|global|hook|if|in|int|interval|local|module|next|of|opaque|pattern|port|print|record|return|schedule|set|string|subnet|table|time|timeout|using|vector|when)\\b/,\n    operator: /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n    number: /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n    punctuation: /[{}[\\];(),.:]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nbsl.displayName = 'bsl'\nbsl.aliases = ['oscript']\n\n/** @param {Refractor} Prism */\nexport default function bsl(Prism) {\n  /* eslint-disable no-misleading-character-class */\n\n  // 1C:Enterprise\n  // https://github.com/Diversus23/\n  //\n  Prism.languages.bsl = {\n    comment: /\\/\\/.*/,\n    string: [\n      // \u0421\u0442\u0440\u043E\u043A\u0438\n      // Strings\n      {\n        pattern: /\"(?:[^\"]|\"\")*\"(?!\")/,\n        greedy: true\n      },\n      // \u0414\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043C\u044F\n      // Date & time\n      {\n        pattern: /'(?:[^'\\r\\n\\\\]|\\\\.)*'/\n      }\n    ],\n    keyword: [\n      {\n        // RU\n        pattern:\n          /(^|[^\\w\\u0400-\\u0484\\u0487-\\u052f\\u1d2b\\u1d78\\u2de0-\\u2dff\\ua640-\\ua69f\\ufe2e\\ufe2f])(?:\u043F\u043E\u043A\u0430|\u0434\u043B\u044F|\u043D\u043E\u0432\u044B\u0439|\u043F\u0440\u0435\u0440\u0432\u0430\u0442\u044C|\u043F\u043E\u043F\u044B\u0442\u043A\u0430|\u0438\u0441\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435|\u0432\u044B\u0437\u0432\u0430\u0442\u044C\u0438\u0441\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435|\u0438\u043D\u0430\u0447\u0435|\u043A\u043E\u043D\u0435\u0446\u043F\u043E\u043F\u044B\u0442\u043A\u0438|\u043D\u0435\u043E\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u043E|\u0444\u0443\u043D\u043A\u0446\u0438\u044F|\u043F\u0435\u0440\u0435\u043C|\u0432\u043E\u0437\u0432\u0440\u0430\u0442|\u043A\u043E\u043D\u0435\u0446\u0444\u0443\u043D\u043A\u0446\u0438\u0438|\u0435\u0441\u043B\u0438|\u0438\u043D\u0430\u0447\u0435\u0435\u0441\u043B\u0438|\u043F\u0440\u043E\u0446\u0435\u0434\u0443\u0440\u0430|\u043A\u043E\u043D\u0435\u0446\u043F\u0440\u043E\u0446\u0435\u0434\u0443\u0440\u044B|\u0442\u043E\u0433\u0434\u0430|\u0437\u043D\u0430\u0447|\u044D\u043A\u0441\u043F\u043E\u0440\u0442|\u043A\u043E\u043D\u0435\u0446\u0435\u0441\u043B\u0438|\u0438\u0437|\u043A\u0430\u0436\u0434\u043E\u0433\u043E|\u0438\u0441\u0442\u0438\u043D\u0430|\u043B\u043E\u0436\u044C|\u043F\u043E|\u0446\u0438\u043A\u043B|\u043A\u043E\u043D\u0435\u0446\u0446\u0438\u043A\u043B\u0430|\u0432\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u044C)(?![\\w\\u0400-\\u0484\\u0487-\\u052f\\u1d2b\\u1d78\\u2de0-\\u2dff\\ua640-\\ua69f\\ufe2e\\ufe2f])/i,\n        lookbehind: true\n      },\n      {\n        // EN\n        pattern:\n          /\\b(?:break|do|each|else|elseif|enddo|endfunction|endif|endprocedure|endtry|except|execute|export|false|for|function|if|in|new|null|procedure|raise|return|then|to|true|try|undefined|val|var|while)\\b/i\n      }\n    ],\n    number: {\n      pattern:\n        /(^(?=\\d)|[^\\w\\u0400-\\u0484\\u0487-\\u052f\\u1d2b\\u1d78\\u2de0-\\u2dff\\ua640-\\ua69f\\ufe2e\\ufe2f])(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:E[+-]?\\d+)?/i,\n      lookbehind: true\n    },\n    operator: [\n      /[<>+\\-*/]=?|[%=]/,\n      // RU\n      {\n        pattern:\n          /(^|[^\\w\\u0400-\\u0484\\u0487-\\u052f\\u1d2b\\u1d78\\u2de0-\\u2dff\\ua640-\\ua69f\\ufe2e\\ufe2f])(?:\u0438|\u0438\u043B\u0438|\u043D\u0435)(?![\\w\\u0400-\\u0484\\u0487-\\u052f\\u1d2b\\u1d78\\u2de0-\\u2dff\\ua640-\\ua69f\\ufe2e\\ufe2f])/i,\n        lookbehind: true\n      },\n      // EN\n      {\n        pattern: /\\b(?:and|not|or)\\b/i\n      }\n    ],\n    punctuation: /\\(\\.|\\.\\)|[()\\[\\]:;,.]/,\n    directive: [\n      // \u0422\u0435\u0433\u0438 \u043F\u0440\u0435\u043F\u0440\u043E\u0446\u0435\u0441\u0441\u043E\u0440\u0430 \u0432\u0438\u0434\u0430 &\u041A\u043B\u0438\u0435\u043D\u0442, &\u0421\u0435\u0440\u0432\u0435\u0440, ...\n      // Preprocessor tags of the type &Client, &Server, ...\n      {\n        pattern: /^([ \\t]*)&.*/m,\n        lookbehind: true,\n        greedy: true,\n        alias: 'important'\n      },\n      // \u0418\u043D\u0441\u0442\u0440\u0443\u043A\u0446\u0438\u0438 \u043F\u0440\u0435\u043F\u0440\u043E\u0446\u0435\u0441\u0441\u043E\u0440\u0430 \u0432\u0438\u0434\u0430:\n      // #\u0415\u0441\u043B\u0438 \u0421\u0435\u0440\u0432\u0435\u0440 \u0422\u043E\u0433\u0434\u0430\n      // ...\n      // #\u041A\u043E\u043D\u0435\u0446\u0415\u0441\u043B\u0438\n      // Preprocessor instructions of the form:\n      // #If Server Then\n      // ...\n      // #EndIf\n      {\n        pattern: /^([ \\t]*)#.*/gm,\n        lookbehind: true,\n        greedy: true,\n        alias: 'important'\n      }\n    ]\n  }\n  Prism.languages.oscript = Prism.languages['bsl']\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\ncfscript.displayName = 'cfscript'\ncfscript.aliases = ['cfc']\n\n/** @param {Refractor} Prism */\nexport default function cfscript(Prism) {\n  Prism.register(refractorClike)\n  // https://cfdocs.org/script\n  Prism.languages.cfscript = Prism.languages.extend('clike', {\n    comment: [\n      {\n        pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n        lookbehind: true,\n        inside: {\n          annotation: {\n            pattern: /(?:^|[^.])@[\\w\\.]+/,\n            alias: 'punctuation'\n          }\n        }\n      },\n      {\n        pattern: /(^|[^\\\\:])\\/\\/.*/,\n        lookbehind: true,\n        greedy: true\n      }\n    ],\n    keyword:\n      /\\b(?:abstract|break|catch|component|continue|default|do|else|extends|final|finally|for|function|if|in|include|package|private|property|public|remote|required|rethrow|return|static|switch|throw|try|var|while|xml)\\b(?!\\s*=)/,\n    operator: [\n      /\\+\\+|--|&&|\\|\\||::|=>|[!=]==|[-+*/%&|^!=<>]=?|\\?(?:\\.|:)?|:/,\n      /\\b(?:and|contains|eq|equal|eqv|gt|gte|imp|is|lt|lte|mod|not|or|xor)\\b/\n    ],\n    scope: {\n      pattern:\n        /\\b(?:application|arguments|cgi|client|cookie|local|session|super|this|variables)\\b/,\n      alias: 'global'\n    },\n    type: {\n      pattern:\n        /\\b(?:any|array|binary|boolean|date|guid|numeric|query|string|struct|uuid|void|xml)\\b/,\n      alias: 'builtin'\n    }\n  })\n  Prism.languages.insertBefore('cfscript', 'keyword', {\n    // This must be declared before keyword because we use \"function\" inside the lookahead\n    'function-variable': {\n      pattern:\n        /[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n      alias: 'function'\n    }\n  })\n  delete Prism.languages.cfscript['class-name']\n  Prism.languages.cfc = Prism.languages['cfscript']\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\nimport refractorCpp from './cpp.js'\nchaiscript.displayName = 'chaiscript'\nchaiscript.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function chaiscript(Prism) {\n  Prism.register(refractorClike)\n  Prism.register(refractorCpp)\n  Prism.languages.chaiscript = Prism.languages.extend('clike', {\n    string: {\n      pattern: /(^|[^\\\\])'(?:[^'\\\\]|\\\\[\\s\\S])*'/,\n      lookbehind: true,\n      greedy: true\n    },\n    'class-name': [\n      {\n        // e.g. class Rectangle { ... }\n        pattern: /(\\bclass\\s+)\\w+/,\n        lookbehind: true\n      },\n      {\n        // e.g. attr Rectangle::height, def Rectangle::area() { ... }\n        pattern: /(\\b(?:attr|def)\\s+)\\w+(?=\\s*::)/,\n        lookbehind: true\n      }\n    ],\n    keyword:\n      /\\b(?:attr|auto|break|case|catch|class|continue|def|default|else|finally|for|fun|global|if|return|switch|this|try|var|while)\\b/,\n    number: [Prism.languages.cpp.number, /\\b(?:Infinity|NaN)\\b/],\n    operator:\n      />>=?|<<=?|\\|\\||&&|:[:=]?|--|\\+\\+|[=!<>+\\-*/%|&^]=?|[?~]|`[^`\\r\\n]{1,4}`/\n  })\n  Prism.languages.insertBefore('chaiscript', 'operator', {\n    'parameter-type': {\n      // e.g. def foo(int x, Vector y) {...}\n      pattern: /([,(]\\s*)\\w+(?=\\s+\\w)/,\n      lookbehind: true,\n      alias: 'class-name'\n    }\n  })\n  Prism.languages.insertBefore('chaiscript', 'string', {\n    'string-interpolation': {\n      pattern:\n        /(^|[^\\\\])\"(?:[^\"$\\\\]|\\\\[\\s\\S]|\\$(?!\\{)|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^{}]*\\})*\\})*\\})*\"/,\n      lookbehind: true,\n      greedy: true,\n      inside: {\n        interpolation: {\n          pattern:\n            /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^{}]*\\})*\\})*\\}/,\n          lookbehind: true,\n          inside: {\n            'interpolation-expression': {\n              pattern: /(^\\$\\{)[\\s\\S]+(?=\\}$)/,\n              lookbehind: true,\n              inside: Prism.languages.chaiscript\n            },\n            'interpolation-punctuation': {\n              pattern: /^\\$\\{|\\}$/,\n              alias: 'punctuation'\n            }\n          }\n        },\n        string: /[\\s\\S]+/\n      }\n    }\n  })\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ncil.displayName = 'cil'\ncil.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function cil(Prism) {\n  Prism.languages.cil = {\n    comment: /\\/\\/.*/,\n    string: {\n      pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      greedy: true\n    },\n    directive: {\n      pattern: /(^|\\W)\\.[a-z]+(?=\\s)/,\n      lookbehind: true,\n      alias: 'class-name'\n    },\n    // Actually an assembly reference\n    variable: /\\[[\\w\\.]+\\]/,\n    keyword:\n      /\\b(?:abstract|ansi|assembly|auto|autochar|beforefieldinit|bool|bstr|byvalstr|catch|char|cil|class|currency|date|decimal|default|enum|error|explicit|extends|extern|famandassem|family|famorassem|final(?:ly)?|float32|float64|hidebysig|u?int(?:8|16|32|64)?|iant|idispatch|implements|import|initonly|instance|interface|iunknown|literal|lpstr|lpstruct|lptstr|lpwstr|managed|method|native(?:Type)?|nested|newslot|object(?:ref)?|pinvokeimpl|private|privatescope|public|reqsecobj|rtspecialname|runtime|sealed|sequential|serializable|specialname|static|string|struct|syschar|tbstr|unicode|unmanagedexp|unsigned|value(?:type)?|variant|virtual|void)\\b/,\n    function:\n      /\\b(?:(?:constrained|no|readonly|tail|unaligned|volatile)\\.)?(?:conv\\.(?:[iu][1248]?|ovf\\.[iu][1248]?(?:\\.un)?|r\\.un|r4|r8)|ldc\\.(?:i4(?:\\.\\d+|\\.[mM]1|\\.s)?|i8|r4|r8)|ldelem(?:\\.[iu][1248]?|\\.r[48]|\\.ref|a)?|ldind\\.(?:[iu][1248]?|r[48]|ref)|stelem\\.?(?:i[1248]?|r[48]|ref)?|stind\\.(?:i[1248]?|r[48]|ref)?|end(?:fault|filter|finally)|ldarg(?:\\.[0-3s]|a(?:\\.s)?)?|ldloc(?:\\.\\d+|\\.s)?|sub(?:\\.ovf(?:\\.un)?)?|mul(?:\\.ovf(?:\\.un)?)?|add(?:\\.ovf(?:\\.un)?)?|stloc(?:\\.[0-3s])?|refany(?:type|val)|blt(?:\\.un)?(?:\\.s)?|ble(?:\\.un)?(?:\\.s)?|bgt(?:\\.un)?(?:\\.s)?|bge(?:\\.un)?(?:\\.s)?|unbox(?:\\.any)?|init(?:blk|obj)|call(?:i|virt)?|brfalse(?:\\.s)?|bne\\.un(?:\\.s)?|ldloca(?:\\.s)?|brzero(?:\\.s)?|brtrue(?:\\.s)?|brnull(?:\\.s)?|brinst(?:\\.s)?|starg(?:\\.s)?|leave(?:\\.s)?|shr(?:\\.un)?|rem(?:\\.un)?|div(?:\\.un)?|clt(?:\\.un)?|alignment|castclass|ldvirtftn|beq(?:\\.s)?|ckfinite|ldsflda|ldtoken|localloc|mkrefany|rethrow|cgt\\.un|arglist|switch|stsfld|sizeof|newobj|newarr|ldsfld|ldnull|ldflda|isinst|throw|stobj|stfld|ldstr|ldobj|ldlen|ldftn|ldfld|cpobj|cpblk|break|br\\.s|xor|shl|ret|pop|not|nop|neg|jmp|dup|cgt|ceq|box|and|or|br)\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    number: /\\b-?(?:0x[0-9a-f]+|\\d+)(?:\\.[0-9a-f]+)?\\b/i,\n    punctuation: /[{}[\\];(),:=]|IL_[0-9A-Za-z]+/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorC from './c.js'\ncilkc.displayName = 'cilkc'\ncilkc.aliases = ['cilk-c']\n\n/** @param {Refractor} Prism */\nexport default function cilkc(Prism) {\n  Prism.register(refractorC)\n  Prism.languages.cilkc = Prism.languages.insertBefore('c', 'function', {\n    'parallel-keyword': {\n      pattern: /\\bcilk_(?:for|reducer|s(?:cope|pawn|ync))\\b/,\n      alias: 'keyword'\n    }\n  })\n  Prism.languages['cilk-c'] = Prism.languages['cilkc']\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorCpp from './cpp.js'\ncilkcpp.displayName = 'cilkcpp'\ncilkcpp.aliases = ['cilk', 'cilk-cpp']\n\n/** @param {Refractor} Prism */\nexport default function cilkcpp(Prism) {\n  Prism.register(refractorCpp)\n  Prism.languages.cilkcpp = Prism.languages.insertBefore('cpp', 'function', {\n    'parallel-keyword': {\n      pattern: /\\bcilk_(?:for|reducer|s(?:cope|pawn|ync))\\b/,\n      alias: 'keyword'\n    }\n  })\n  Prism.languages['cilk-cpp'] = Prism.languages['cilkcpp']\n  Prism.languages['cilk'] = Prism.languages['cilkcpp']\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nclojure.displayName = 'clojure'\nclojure.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function clojure(Prism) {\n  // Copied from https://github.com/jeluard/prism-clojure\n  Prism.languages.clojure = {\n    comment: {\n      pattern: /;.*/,\n      greedy: true\n    },\n    string: {\n      pattern: /\"(?:[^\"\\\\]|\\\\.)*\"/,\n      greedy: true\n    },\n    char: /\\\\\\w+/,\n    symbol: {\n      pattern: /(^|[\\s()\\[\\]{},])::?[\\w*+!?'<>=/.-]+/,\n      lookbehind: true\n    },\n    keyword: {\n      pattern:\n        /(\\()(?:-|->|->>|\\.|\\.\\.|\\*|\\/|\\+|<|<=|=|==|>|>=|accessor|agent|agent-errors|aget|alength|all-ns|alter|and|append-child|apply|array-map|aset|aset-boolean|aset-byte|aset-char|aset-double|aset-float|aset-int|aset-long|aset-short|assert|assoc|await|await-for|bean|binding|bit-and|bit-not|bit-or|bit-shift-left|bit-shift-right|bit-xor|boolean|branch\\?|butlast|byte|cast|char|children|class|clear-agent-errors|comment|commute|comp|comparator|complement|concat|cond|conj|cons|constantly|construct-proxy|contains\\?|count|create-ns|create-struct|cycle|dec|declare|def|def-|definline|definterface|defmacro|defmethod|defmulti|defn|defn-|defonce|defproject|defprotocol|defrecord|defstruct|deftype|deref|difference|disj|dissoc|distinct|do|doall|doc|dorun|doseq|dosync|dotimes|doto|double|down|drop|drop-while|edit|end\\?|ensure|eval|every\\?|false\\?|ffirst|file-seq|filter|find|find-doc|find-ns|find-var|first|float|flush|fn|fnseq|for|frest|gensym|get|get-proxy-class|hash-map|hash-set|identical\\?|identity|if|if-let|if-not|import|in-ns|inc|index|insert-child|insert-left|insert-right|inspect-table|inspect-tree|instance\\?|int|interleave|intersection|into|into-array|iterate|join|key|keys|keyword|keyword\\?|last|lazy-cat|lazy-cons|left|lefts|let|line-seq|list|list\\*|load|load-file|locking|long|loop|macroexpand|macroexpand-1|make-array|make-node|map|map-invert|map\\?|mapcat|max|max-key|memfn|merge|merge-with|meta|min|min-key|monitor-enter|name|namespace|neg\\?|new|newline|next|nil\\?|node|not|not-any\\?|not-every\\?|not=|ns|ns-imports|ns-interns|ns-map|ns-name|ns-publics|ns-refers|ns-resolve|ns-unmap|nth|nthrest|or|parse|partial|path|peek|pop|pos\\?|pr|pr-str|print|print-str|println|println-str|prn|prn-str|project|proxy|proxy-mappings|quot|quote|rand|rand-int|range|re-find|re-groups|re-matcher|re-matches|re-pattern|re-seq|read|read-line|recur|reduce|ref|ref-set|refer|rem|remove|remove-method|remove-ns|rename|rename-keys|repeat|replace|replicate|resolve|rest|resultset-seq|reverse|rfirst|right|rights|root|rrest|rseq|second|select|select-keys|send|send-off|seq|seq-zip|seq\\?|set|set!|short|slurp|some|sort|sort-by|sorted-map|sorted-map-by|sorted-set|special-symbol\\?|split-at|split-with|str|string\\?|struct|struct-map|subs|subvec|symbol|symbol\\?|sync|take|take-nth|take-while|test|throw|time|to-array|to-array-2d|tree-seq|true\\?|try|union|up|update-proxy|val|vals|var|var-get|var-set|var\\?|vector|vector-zip|vector\\?|when|when-first|when-let|when-not|with-local-vars|with-meta|with-open|with-out-str|xml-seq|xml-zip|zero\\?|zipmap|zipper)(?=[\\s)]|$)/,\n      lookbehind: true\n    },\n    boolean: /\\b(?:false|nil|true)\\b/,\n    number: {\n      pattern:\n        /(^|[^\\w$@])(?:\\d+(?:[/.]\\d+)?(?:e[+-]?\\d+)?|0x[a-f0-9]+|[1-9]\\d?r[a-z0-9]+)[lmn]?(?![\\w$@])/i,\n      lookbehind: true\n    },\n    function: {\n      pattern: /((?:^|[^'])\\()[\\w*+!?'<>=/.-]+(?=[\\s)]|$)/,\n      lookbehind: true\n    },\n    operator: /[#@^`~]/,\n    punctuation: /[{}\\[\\](),]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ncmake.displayName = 'cmake'\ncmake.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function cmake(Prism) {\n  Prism.languages.cmake = {\n    comment: /#.*/,\n    string: {\n      pattern: /\"(?:[^\\\\\"]|\\\\.)*\"/,\n      greedy: true,\n      inside: {\n        interpolation: {\n          pattern: /\\$\\{(?:[^{}$]|\\$\\{[^{}$]*\\})*\\}/,\n          inside: {\n            punctuation: /\\$\\{|\\}/,\n            variable: /\\w+/\n          }\n        }\n      }\n    },\n    variable:\n      /\\b(?:CMAKE_\\w+|\\w+_(?:(?:BINARY|SOURCE)_DIR|DESCRIPTION|HOMEPAGE_URL|ROOT|VERSION(?:_MAJOR|_MINOR|_PATCH|_TWEAK)?)|(?:ANDROID|APPLE|BORLAND|BUILD_SHARED_LIBS|CACHE|CPACK_(?:ABSOLUTE_DESTINATION_FILES|COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY|ERROR_ON_ABSOLUTE_INSTALL_DESTINATION|INCLUDE_TOPLEVEL_DIRECTORY|INSTALL_DEFAULT_DIRECTORY_PERMISSIONS|INSTALL_SCRIPT|PACKAGING_INSTALL_PREFIX|SET_DESTDIR|WARN_ON_ABSOLUTE_INSTALL_DESTINATION)|CTEST_(?:BINARY_DIRECTORY|BUILD_COMMAND|BUILD_NAME|BZR_COMMAND|BZR_UPDATE_OPTIONS|CHANGE_ID|CHECKOUT_COMMAND|CONFIGURATION_TYPE|CONFIGURE_COMMAND|COVERAGE_COMMAND|COVERAGE_EXTRA_FLAGS|CURL_OPTIONS|CUSTOM_(?:COVERAGE_EXCLUDE|ERROR_EXCEPTION|ERROR_MATCH|ERROR_POST_CONTEXT|ERROR_PRE_CONTEXT|MAXIMUM_FAILED_TEST_OUTPUT_SIZE|MAXIMUM_NUMBER_OF_(?:ERRORS|WARNINGS)|MAXIMUM_PASSED_TEST_OUTPUT_SIZE|MEMCHECK_IGNORE|POST_MEMCHECK|POST_TEST|PRE_MEMCHECK|PRE_TEST|TESTS_IGNORE|WARNING_EXCEPTION|WARNING_MATCH)|CVS_CHECKOUT|CVS_COMMAND|CVS_UPDATE_OPTIONS|DROP_LOCATION|DROP_METHOD|DROP_SITE|DROP_SITE_CDASH|DROP_SITE_PASSWORD|DROP_SITE_USER|EXTRA_COVERAGE_GLOB|GIT_COMMAND|GIT_INIT_SUBMODULES|GIT_UPDATE_CUSTOM|GIT_UPDATE_OPTIONS|HG_COMMAND|HG_UPDATE_OPTIONS|LABELS_FOR_SUBPROJECTS|MEMORYCHECK_(?:COMMAND|COMMAND_OPTIONS|SANITIZER_OPTIONS|SUPPRESSIONS_FILE|TYPE)|NIGHTLY_START_TIME|P4_CLIENT|P4_COMMAND|P4_OPTIONS|P4_UPDATE_OPTIONS|RUN_CURRENT_SCRIPT|SCP_COMMAND|SITE|SOURCE_DIRECTORY|SUBMIT_URL|SVN_COMMAND|SVN_OPTIONS|SVN_UPDATE_OPTIONS|TEST_LOAD|TEST_TIMEOUT|TRIGGER_SITE|UPDATE_COMMAND|UPDATE_OPTIONS|UPDATE_VERSION_ONLY|USE_LAUNCHERS)|CYGWIN|ENV|EXECUTABLE_OUTPUT_PATH|GHS-MULTI|IOS|LIBRARY_OUTPUT_PATH|MINGW|MSVC(?:10|11|12|14|60|70|71|80|90|_IDE|_TOOLSET_VERSION|_VERSION)?|MSYS|PROJECT_NAME|UNIX|WIN32|WINCE|WINDOWS_PHONE|WINDOWS_STORE|XCODE))\\b/,\n    property:\n      /\\b(?:cxx_\\w+|(?:ARCHIVE_OUTPUT_(?:DIRECTORY|NAME)|COMPILE_DEFINITIONS|COMPILE_PDB_NAME|COMPILE_PDB_OUTPUT_DIRECTORY|EXCLUDE_FROM_DEFAULT_BUILD|IMPORTED_(?:IMPLIB|LIBNAME|LINK_DEPENDENT_LIBRARIES|LINK_INTERFACE_LANGUAGES|LINK_INTERFACE_LIBRARIES|LINK_INTERFACE_MULTIPLICITY|LOCATION|NO_SONAME|OBJECTS|SONAME)|INTERPROCEDURAL_OPTIMIZATION|LIBRARY_OUTPUT_DIRECTORY|LIBRARY_OUTPUT_NAME|LINK_FLAGS|LINK_INTERFACE_LIBRARIES|LINK_INTERFACE_MULTIPLICITY|LOCATION|MAP_IMPORTED_CONFIG|OSX_ARCHITECTURES|OUTPUT_NAME|PDB_NAME|PDB_OUTPUT_DIRECTORY|RUNTIME_OUTPUT_DIRECTORY|RUNTIME_OUTPUT_NAME|STATIC_LIBRARY_FLAGS|VS_CSHARP|VS_DOTNET_REFERENCEPROP|VS_DOTNET_REFERENCE|VS_GLOBAL_SECTION_POST|VS_GLOBAL_SECTION_PRE|VS_GLOBAL|XCODE_ATTRIBUTE)_\\w+|\\w+_(?:CLANG_TIDY|COMPILER_LAUNCHER|CPPCHECK|CPPLINT|INCLUDE_WHAT_YOU_USE|OUTPUT_NAME|POSTFIX|VISIBILITY_PRESET)|ABSTRACT|ADDITIONAL_MAKE_CLEAN_FILES|ADVANCED|ALIASED_TARGET|ALLOW_DUPLICATE_CUSTOM_TARGETS|ANDROID_(?:ANT_ADDITIONAL_OPTIONS|API|API_MIN|ARCH|ASSETS_DIRECTORIES|GUI|JAR_DEPENDENCIES|NATIVE_LIB_DEPENDENCIES|NATIVE_LIB_DIRECTORIES|PROCESS_MAX|PROGUARD|PROGUARD_CONFIG_PATH|SECURE_PROPS_PATH|SKIP_ANT_STEP|STL_TYPE)|ARCHIVE_OUTPUT_DIRECTORY|ATTACHED_FILES|ATTACHED_FILES_ON_FAIL|AUTOGEN_(?:BUILD_DIR|ORIGIN_DEPENDS|PARALLEL|SOURCE_GROUP|TARGETS_FOLDER|TARGET_DEPENDS)|AUTOMOC|AUTOMOC_(?:COMPILER_PREDEFINES|DEPEND_FILTERS|EXECUTABLE|MACRO_NAMES|MOC_OPTIONS|SOURCE_GROUP|TARGETS_FOLDER)|AUTORCC|AUTORCC_EXECUTABLE|AUTORCC_OPTIONS|AUTORCC_SOURCE_GROUP|AUTOUIC|AUTOUIC_EXECUTABLE|AUTOUIC_OPTIONS|AUTOUIC_SEARCH_PATHS|BINARY_DIR|BUILDSYSTEM_TARGETS|BUILD_RPATH|BUILD_RPATH_USE_ORIGIN|BUILD_WITH_INSTALL_NAME_DIR|BUILD_WITH_INSTALL_RPATH|BUNDLE|BUNDLE_EXTENSION|CACHE_VARIABLES|CLEAN_NO_CUSTOM|COMMON_LANGUAGE_RUNTIME|COMPATIBLE_INTERFACE_(?:BOOL|NUMBER_MAX|NUMBER_MIN|STRING)|COMPILE_(?:DEFINITIONS|FEATURES|FLAGS|OPTIONS|PDB_NAME|PDB_OUTPUT_DIRECTORY)|COST|CPACK_DESKTOP_SHORTCUTS|CPACK_NEVER_OVERWRITE|CPACK_PERMANENT|CPACK_STARTUP_SHORTCUTS|CPACK_START_MENU_SHORTCUTS|CPACK_WIX_ACL|CROSSCOMPILING_EMULATOR|CUDA_EXTENSIONS|CUDA_PTX_COMPILATION|CUDA_RESOLVE_DEVICE_SYMBOLS|CUDA_SEPARABLE_COMPILATION|CUDA_STANDARD|CUDA_STANDARD_REQUIRED|CXX_EXTENSIONS|CXX_STANDARD|CXX_STANDARD_REQUIRED|C_EXTENSIONS|C_STANDARD|C_STANDARD_REQUIRED|DEBUG_CONFIGURATIONS|DEFINE_SYMBOL|DEFINITIONS|DEPENDS|DEPLOYMENT_ADDITIONAL_FILES|DEPLOYMENT_REMOTE_DIRECTORY|DISABLED|DISABLED_FEATURES|ECLIPSE_EXTRA_CPROJECT_CONTENTS|ECLIPSE_EXTRA_NATURES|ENABLED_FEATURES|ENABLED_LANGUAGES|ENABLE_EXPORTS|ENVIRONMENT|EXCLUDE_FROM_ALL|EXCLUDE_FROM_DEFAULT_BUILD|EXPORT_NAME|EXPORT_PROPERTIES|EXTERNAL_OBJECT|EchoString|FAIL_REGULAR_EXPRESSION|FIND_LIBRARY_USE_LIB32_PATHS|FIND_LIBRARY_USE_LIB64_PATHS|FIND_LIBRARY_USE_LIBX32_PATHS|FIND_LIBRARY_USE_OPENBSD_VERSIONING|FIXTURES_CLEANUP|FIXTURES_REQUIRED|FIXTURES_SETUP|FOLDER|FRAMEWORK|Fortran_FORMAT|Fortran_MODULE_DIRECTORY|GENERATED|GENERATOR_FILE_NAME|GENERATOR_IS_MULTI_CONFIG|GHS_INTEGRITY_APP|GHS_NO_SOURCE_GROUP_FILE|GLOBAL_DEPENDS_DEBUG_MODE|GLOBAL_DEPENDS_NO_CYCLES|GNUtoMS|HAS_CXX|HEADER_FILE_ONLY|HELPSTRING|IMPLICIT_DEPENDS_INCLUDE_TRANSFORM|IMPORTED|IMPORTED_(?:COMMON_LANGUAGE_RUNTIME|CONFIGURATIONS|GLOBAL|IMPLIB|LIBNAME|LINK_DEPENDENT_LIBRARIES|LINK_INTERFACE_(?:LANGUAGES|LIBRARIES|MULTIPLICITY)|LOCATION|NO_SONAME|OBJECTS|SONAME)|IMPORT_PREFIX|IMPORT_SUFFIX|INCLUDE_DIRECTORIES|INCLUDE_REGULAR_EXPRESSION|INSTALL_NAME_DIR|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|INTERFACE_(?:AUTOUIC_OPTIONS|COMPILE_DEFINITIONS|COMPILE_FEATURES|COMPILE_OPTIONS|INCLUDE_DIRECTORIES|LINK_DEPENDS|LINK_DIRECTORIES|LINK_LIBRARIES|LINK_OPTIONS|POSITION_INDEPENDENT_CODE|SOURCES|SYSTEM_INCLUDE_DIRECTORIES)|INTERPROCEDURAL_OPTIMIZATION|IN_TRY_COMPILE|IOS_INSTALL_COMBINED|JOB_POOLS|JOB_POOL_COMPILE|JOB_POOL_LINK|KEEP_EXTENSION|LABELS|LANGUAGE|LIBRARY_OUTPUT_DIRECTORY|LINKER_LANGUAGE|LINK_(?:DEPENDS|DEPENDS_NO_SHARED|DIRECTORIES|FLAGS|INTERFACE_LIBRARIES|INTERFACE_MULTIPLICITY|LIBRARIES|OPTIONS|SEARCH_END_STATIC|SEARCH_START_STATIC|WHAT_YOU_USE)|LISTFILE_STACK|LOCATION|MACOSX_BUNDLE|MACOSX_BUNDLE_INFO_PLIST|MACOSX_FRAMEWORK_INFO_PLIST|MACOSX_PACKAGE_LOCATION|MACOSX_RPATH|MACROS|MANUALLY_ADDED_DEPENDENCIES|MEASUREMENT|MODIFIED|NAME|NO_SONAME|NO_SYSTEM_FROM_IMPORTED|OBJECT_DEPENDS|OBJECT_OUTPUTS|OSX_ARCHITECTURES|OUTPUT_NAME|PACKAGES_FOUND|PACKAGES_NOT_FOUND|PARENT_DIRECTORY|PASS_REGULAR_EXPRESSION|PDB_NAME|PDB_OUTPUT_DIRECTORY|POSITION_INDEPENDENT_CODE|POST_INSTALL_SCRIPT|PREDEFINED_TARGETS_FOLDER|PREFIX|PRE_INSTALL_SCRIPT|PRIVATE_HEADER|PROCESSORS|PROCESSOR_AFFINITY|PROJECT_LABEL|PUBLIC_HEADER|REPORT_UNDEFINED_PROPERTIES|REQUIRED_FILES|RESOURCE|RESOURCE_LOCK|RULE_LAUNCH_COMPILE|RULE_LAUNCH_CUSTOM|RULE_LAUNCH_LINK|RULE_MESSAGES|RUNTIME_OUTPUT_DIRECTORY|RUN_SERIAL|SKIP_AUTOGEN|SKIP_AUTOMOC|SKIP_AUTORCC|SKIP_AUTOUIC|SKIP_BUILD_RPATH|SKIP_RETURN_CODE|SOURCES|SOURCE_DIR|SOVERSION|STATIC_LIBRARY_FLAGS|STATIC_LIBRARY_OPTIONS|STRINGS|SUBDIRECTORIES|SUFFIX|SYMBOLIC|TARGET_ARCHIVES_MAY_BE_SHARED_LIBS|TARGET_MESSAGES|TARGET_SUPPORTS_SHARED_LIBS|TESTS|TEST_INCLUDE_FILE|TEST_INCLUDE_FILES|TIMEOUT|TIMEOUT_AFTER_MATCH|TYPE|USE_FOLDERS|VALUE|VARIABLES|VERSION|VISIBILITY_INLINES_HIDDEN|VS_(?:CONFIGURATION_TYPE|COPY_TO_OUT_DIR|DEBUGGER_(?:COMMAND|COMMAND_ARGUMENTS|ENVIRONMENT|WORKING_DIRECTORY)|DEPLOYMENT_CONTENT|DEPLOYMENT_LOCATION|DOTNET_REFERENCES|DOTNET_REFERENCES_COPY_LOCAL|INCLUDE_IN_VSIX|IOT_STARTUP_TASK|KEYWORD|RESOURCE_GENERATOR|SCC_AUXPATH|SCC_LOCALPATH|SCC_PROJECTNAME|SCC_PROVIDER|SDK_REFERENCES|SHADER_(?:DISABLE_OPTIMIZATIONS|ENABLE_DEBUG|ENTRYPOINT|FLAGS|MODEL|OBJECT_FILE_NAME|OUTPUT_HEADER_FILE|TYPE|VARIABLE_NAME)|STARTUP_PROJECT|TOOL_OVERRIDE|USER_PROPS|WINRT_COMPONENT|WINRT_EXTENSIONS|WINRT_REFERENCES|XAML_TYPE)|WILL_FAIL|WIN32_EXECUTABLE|WINDOWS_EXPORT_ALL_SYMBOLS|WORKING_DIRECTORY|WRAP_EXCLUDE|XCODE_(?:EMIT_EFFECTIVE_PLATFORM_NAME|EXPLICIT_FILE_TYPE|FILE_ATTRIBUTES|LAST_KNOWN_FILE_TYPE|PRODUCT_TYPE|SCHEME_(?:ADDRESS_SANITIZER|ADDRESS_SANITIZER_USE_AFTER_RETURN|ARGUMENTS|DISABLE_MAIN_THREAD_CHECKER|DYNAMIC_LIBRARY_LOADS|DYNAMIC_LINKER_API_USAGE|ENVIRONMENT|EXECUTABLE|GUARD_MALLOC|MAIN_THREAD_CHECKER_STOP|MALLOC_GUARD_EDGES|MALLOC_SCRIBBLE|MALLOC_STACK|THREAD_SANITIZER(?:_STOP)?|UNDEFINED_BEHAVIOUR_SANITIZER(?:_STOP)?|ZOMBIE_OBJECTS))|XCTEST)\\b/,\n    keyword:\n      /\\b(?:add_compile_definitions|add_compile_options|add_custom_command|add_custom_target|add_definitions|add_dependencies|add_executable|add_library|add_link_options|add_subdirectory|add_test|aux_source_directory|break|build_command|build_name|cmake_host_system_information|cmake_minimum_required|cmake_parse_arguments|cmake_policy|configure_file|continue|create_test_sourcelist|ctest_build|ctest_configure|ctest_coverage|ctest_empty_binary_directory|ctest_memcheck|ctest_read_custom_files|ctest_run_script|ctest_sleep|ctest_start|ctest_submit|ctest_test|ctest_update|ctest_upload|define_property|else|elseif|enable_language|enable_testing|endforeach|endfunction|endif|endmacro|endwhile|exec_program|execute_process|export|export_library_dependencies|file|find_file|find_library|find_package|find_path|find_program|fltk_wrap_ui|foreach|function|get_cmake_property|get_directory_property|get_filename_component|get_property|get_source_file_property|get_target_property|get_test_property|if|include|include_directories|include_external_msproject|include_guard|include_regular_expression|install|install_files|install_programs|install_targets|link_directories|link_libraries|list|load_cache|load_command|macro|make_directory|mark_as_advanced|math|message|option|output_required_files|project|qt_wrap_cpp|qt_wrap_ui|remove|remove_definitions|return|separate_arguments|set|set_directory_properties|set_property|set_source_files_properties|set_target_properties|set_tests_properties|site_name|source_group|string|subdir_depends|subdirs|target_compile_definitions|target_compile_features|target_compile_options|target_include_directories|target_link_directories|target_link_libraries|target_link_options|target_sources|try_compile|try_run|unset|use_mangled_mesa|utility_source|variable_requires|variable_watch|while|write_file)(?=\\s*\\()\\b/,\n    boolean: /\\b(?:FALSE|OFF|ON|TRUE)\\b/,\n    namespace:\n      /\\b(?:INTERFACE|PRIVATE|PROPERTIES|PUBLIC|SHARED|STATIC|TARGET_OBJECTS)\\b/,\n    operator:\n      /\\b(?:AND|DEFINED|EQUAL|GREATER|LESS|MATCHES|NOT|OR|STREQUAL|STRGREATER|STRLESS|VERSION_EQUAL|VERSION_GREATER|VERSION_LESS)\\b/,\n    inserted: {\n      pattern: /\\b\\w+::\\w+\\b/,\n      alias: 'class-name'\n    },\n    number: /\\b\\d+(?:\\.\\d+)*\\b/,\n    function: /\\b[a-z_]\\w*(?=\\s*\\()\\b/i,\n    punctuation: /[()>}]|\\$[<{]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ncobol.displayName = 'cobol'\ncobol.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function cobol(Prism) {\n  Prism.languages.cobol = {\n    comment: {\n      pattern: /\\*>.*|(^[ \\t]*)\\*.*/m,\n      lookbehind: true,\n      greedy: true\n    },\n    string: {\n      pattern: /[xzgn]?(?:\"(?:[^\\r\\n\"]|\"\")*\"(?!\")|'(?:[^\\r\\n']|'')*'(?!'))/i,\n      greedy: true\n    },\n    level: {\n      pattern: /(^[ \\t]*)\\d+\\b/m,\n      lookbehind: true,\n      greedy: true,\n      alias: 'number'\n    },\n    'class-name': {\n      // https://github.com/antlr/grammars-v4/blob/42edd5b687d183b5fa679e858a82297bd27141e7/cobol85/Cobol85.g4#L1015\n      pattern:\n        /(\\bpic(?:ture)?\\s+)(?:(?:[-\\w$/,:*+<>]|\\.(?!\\s|$))(?:\\(\\d+\\))?)+/i,\n      lookbehind: true,\n      inside: {\n        number: {\n          pattern: /(\\()\\d+/,\n          lookbehind: true\n        },\n        punctuation: /[()]/\n      }\n    },\n    keyword: {\n      pattern:\n        /(^|[^\\w-])(?:ABORT|ACCEPT|ACCESS|ADD|ADDRESS|ADVANCING|AFTER|ALIGNED|ALL|ALPHABET|ALPHABETIC|ALPHABETIC-LOWER|ALPHABETIC-UPPER|ALPHANUMERIC|ALPHANUMERIC-EDITED|ALSO|ALTER|ALTERNATE|ANY|ARE|AREA|AREAS|AS|ASCENDING|ASCII|ASSIGN|ASSOCIATED-DATA|ASSOCIATED-DATA-LENGTH|AT|ATTRIBUTE|AUTHOR|AUTO|AUTO-SKIP|BACKGROUND-COLOR|BACKGROUND-COLOUR|BASIS|BEEP|BEFORE|BEGINNING|BELL|BINARY|BIT|BLANK|BLINK|BLOCK|BOTTOM|BOUNDS|BY|BYFUNCTION|BYTITLE|CALL|CANCEL|CAPABLE|CCSVERSION|CD|CF|CH|CHAINING|CHANGED|CHANNEL|CHARACTER|CHARACTERS|CLASS|CLASS-ID|CLOCK-UNITS|CLOSE|CLOSE-DISPOSITION|COBOL|CODE|CODE-SET|COL|COLLATING|COLUMN|COM-REG|COMMA|COMMITMENT|COMMON|COMMUNICATION|COMP|COMP-1|COMP-2|COMP-3|COMP-4|COMP-5|COMPUTATIONAL|COMPUTATIONAL-1|COMPUTATIONAL-2|COMPUTATIONAL-3|COMPUTATIONAL-4|COMPUTATIONAL-5|COMPUTE|CONFIGURATION|CONTAINS|CONTENT|CONTINUE|CONTROL|CONTROL-POINT|CONTROLS|CONVENTION|CONVERTING|COPY|CORR|CORRESPONDING|COUNT|CRUNCH|CURRENCY|CURSOR|DATA|DATA-BASE|DATE|DATE-COMPILED|DATE-WRITTEN|DAY|DAY-OF-WEEK|DBCS|DE|DEBUG-CONTENTS|DEBUG-ITEM|DEBUG-LINE|DEBUG-NAME|DEBUG-SUB-1|DEBUG-SUB-2|DEBUG-SUB-3|DEBUGGING|DECIMAL-POINT|DECLARATIVES|DEFAULT|DEFAULT-DISPLAY|DEFINITION|DELETE|DELIMITED|DELIMITER|DEPENDING|DESCENDING|DESTINATION|DETAIL|DFHRESP|DFHVALUE|DISABLE|DISK|DISPLAY|DISPLAY-1|DIVIDE|DIVISION|DONTCARE|DOUBLE|DOWN|DUPLICATES|DYNAMIC|EBCDIC|EGCS|EGI|ELSE|EMI|EMPTY-CHECK|ENABLE|END|END-ACCEPT|END-ADD|END-CALL|END-COMPUTE|END-DELETE|END-DIVIDE|END-EVALUATE|END-IF|END-MULTIPLY|END-OF-PAGE|END-PERFORM|END-READ|END-RECEIVE|END-RETURN|END-REWRITE|END-SEARCH|END-START|END-STRING|END-SUBTRACT|END-UNSTRING|END-WRITE|ENDING|ENTER|ENTRY|ENTRY-PROCEDURE|ENVIRONMENT|EOL|EOP|EOS|ERASE|ERROR|ESCAPE|ESI|EVALUATE|EVENT|EVERY|EXCEPTION|EXCLUSIVE|EXHIBIT|EXIT|EXPORT|EXTEND|EXTENDED|EXTERNAL|FD|FILE|FILE-CONTROL|FILLER|FINAL|FIRST|FOOTING|FOR|FOREGROUND-COLOR|FOREGROUND-COLOUR|FROM|FULL|FUNCTION|FUNCTION-POINTER|FUNCTIONNAME|GENERATE|GIVING|GLOBAL|GO|GOBACK|GRID|GROUP|HEADING|HIGH-VALUE|HIGH-VALUES|HIGHLIGHT|I-O|I-O-CONTROL|ID|IDENTIFICATION|IF|IMPLICIT|IMPORT|IN|INDEX|INDEXED|INDICATE|INITIAL|INITIALIZE|INITIATE|INPUT|INPUT-OUTPUT|INSPECT|INSTALLATION|INTEGER|INTO|INVALID|INVOKE|IS|JUST|JUSTIFIED|KANJI|KEPT|KEY|KEYBOARD|LABEL|LANGUAGE|LAST|LB|LD|LEADING|LEFT|LEFTLINE|LENGTH|LENGTH-CHECK|LIBACCESS|LIBPARAMETER|LIBRARY|LIMIT|LIMITS|LINAGE|LINAGE-COUNTER|LINE|LINE-COUNTER|LINES|LINKAGE|LIST|LOCAL|LOCAL-STORAGE|LOCK|LONG-DATE|LONG-TIME|LOW-VALUE|LOW-VALUES|LOWER|LOWLIGHT|MEMORY|MERGE|MESSAGE|MMDDYYYY|MODE|MODULES|MORE-LABELS|MOVE|MULTIPLE|MULTIPLY|NAMED|NATIONAL|NATIONAL-EDITED|NATIVE|NEGATIVE|NETWORK|NEXT|NO|NO-ECHO|NULL|NULLS|NUMBER|NUMERIC|NUMERIC-DATE|NUMERIC-EDITED|NUMERIC-TIME|OBJECT-COMPUTER|OCCURS|ODT|OF|OFF|OMITTED|ON|OPEN|OPTIONAL|ORDER|ORDERLY|ORGANIZATION|OTHER|OUTPUT|OVERFLOW|OVERLINE|OWN|PACKED-DECIMAL|PADDING|PAGE|PAGE-COUNTER|PASSWORD|PERFORM|PF|PH|PIC|PICTURE|PLUS|POINTER|PORT|POSITION|POSITIVE|PRINTER|PRINTING|PRIVATE|PROCEDURE|PROCEDURE-POINTER|PROCEDURES|PROCEED|PROCESS|PROGRAM|PROGRAM-ID|PROGRAM-LIBRARY|PROMPT|PURGE|QUEUE|QUOTE|QUOTES|RANDOM|RD|READ|READER|REAL|RECEIVE|RECEIVED|RECORD|RECORDING|RECORDS|RECURSIVE|REDEFINES|REEL|REF|REFERENCE|REFERENCES|RELATIVE|RELEASE|REMAINDER|REMARKS|REMOTE|REMOVAL|REMOVE|RENAMES|REPLACE|REPLACING|REPORT|REPORTING|REPORTS|REQUIRED|RERUN|RESERVE|RESET|RETURN|RETURN-CODE|RETURNING|REVERSE-VIDEO|REVERSED|REWIND|REWRITE|RF|RH|RIGHT|ROUNDED|RUN|SAME|SAVE|SCREEN|SD|SEARCH|SECTION|SECURE|SECURITY|SEGMENT|SEGMENT-LIMIT|SELECT|SEND|SENTENCE|SEPARATE|SEQUENCE|SEQUENTIAL|SET|SHARED|SHAREDBYALL|SHAREDBYRUNUNIT|SHARING|SHIFT-IN|SHIFT-OUT|SHORT-DATE|SIGN|SIZE|SORT|SORT-CONTROL|SORT-CORE-SIZE|SORT-FILE-SIZE|SORT-MERGE|SORT-MESSAGE|SORT-MODE-SIZE|SORT-RETURN|SOURCE|SOURCE-COMPUTER|SPACE|SPACES|SPECIAL-NAMES|STANDARD|STANDARD-1|STANDARD-2|START|STATUS|STOP|STRING|SUB-QUEUE-1|SUB-QUEUE-2|SUB-QUEUE-3|SUBTRACT|SUM|SUPPRESS|SYMBOL|SYMBOLIC|SYNC|SYNCHRONIZED|TABLE|TALLY|TALLYING|TAPE|TASK|TERMINAL|TERMINATE|TEST|TEXT|THEN|THREAD|THREAD-LOCAL|THROUGH|THRU|TIME|TIMER|TIMES|TITLE|TO|TODAYS-DATE|TODAYS-NAME|TOP|TRAILING|TRUNCATED|TYPE|TYPEDEF|UNDERLINE|UNIT|UNSTRING|UNTIL|UP|UPON|USAGE|USE|USING|VALUE|VALUES|VARYING|VIRTUAL|WAIT|WHEN|WHEN-COMPILED|WITH|WORDS|WORKING-STORAGE|WRITE|YEAR|YYYYDDD|YYYYMMDD|ZERO-FILL|ZEROES|ZEROS)(?![\\w-])/i,\n      lookbehind: true\n    },\n    boolean: {\n      pattern: /(^|[^\\w-])(?:false|true)(?![\\w-])/i,\n      lookbehind: true\n    },\n    number: {\n      pattern:\n        /(^|[^\\w-])(?:[+-]?(?:(?:\\d+(?:[.,]\\d+)?|[.,]\\d+)(?:e[+-]?\\d+)?|zero))(?![\\w-])/i,\n      lookbehind: true\n    },\n    operator: [\n      /<>|[<>]=?|[=+*/&]/,\n      {\n        pattern: /(^|[^\\w-])(?:-|and|equal|greater|less|not|or|than)(?![\\w-])/i,\n        lookbehind: true\n      }\n    ],\n    punctuation: /[.:,()]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorJavascript from './javascript.js'\ncoffeescript.displayName = 'coffeescript'\ncoffeescript.aliases = ['coffee']\n\n/** @param {Refractor} Prism */\nexport default function coffeescript(Prism) {\n  Prism.register(refractorJavascript)\n  ;(function (Prism) {\n    // Ignore comments starting with { to privilege string interpolation highlighting\n    var comment = /#(?!\\{).+/\n    var interpolation = {\n      pattern: /#\\{[^}]+\\}/,\n      alias: 'variable'\n    }\n    Prism.languages.coffeescript = Prism.languages.extend('javascript', {\n      comment: comment,\n      string: [\n        // Strings are multiline\n        {\n          pattern: /'(?:\\\\[\\s\\S]|[^\\\\'])*'/,\n          greedy: true\n        },\n        {\n          // Strings are multiline\n          pattern: /\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"/,\n          greedy: true,\n          inside: {\n            interpolation: interpolation\n          }\n        }\n      ],\n      keyword:\n        /\\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\\b/,\n      'class-member': {\n        pattern: /@(?!\\d)\\w+/,\n        alias: 'variable'\n      }\n    })\n    Prism.languages.insertBefore('coffeescript', 'comment', {\n      'multiline-comment': {\n        pattern: /###[\\s\\S]+?###/,\n        alias: 'comment'\n      },\n      // Block regexp can contain comments and interpolation\n      'block-regex': {\n        pattern: /\\/{3}[\\s\\S]*?\\/{3}/,\n        alias: 'regex',\n        inside: {\n          comment: comment,\n          interpolation: interpolation\n        }\n      }\n    })\n    Prism.languages.insertBefore('coffeescript', 'string', {\n      'inline-javascript': {\n        pattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n        inside: {\n          delimiter: {\n            pattern: /^`|`$/,\n            alias: 'punctuation'\n          },\n          script: {\n            pattern: /[\\s\\S]+/,\n            alias: 'language-javascript',\n            inside: Prism.languages.javascript\n          }\n        }\n      },\n      // Block strings\n      'multiline-string': [\n        {\n          pattern: /'''[\\s\\S]*?'''/,\n          greedy: true,\n          alias: 'string'\n        },\n        {\n          pattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n          greedy: true,\n          alias: 'string',\n          inside: {\n            interpolation: interpolation\n          }\n        }\n      ]\n    })\n    Prism.languages.insertBefore('coffeescript', 'keyword', {\n      // Object property\n      property: /(?!\\d)\\w+(?=\\s*:(?!:))/\n    })\n    delete Prism.languages.coffeescript['template-string']\n    Prism.languages.coffee = Prism.languages.coffeescript\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nconcurnas.displayName = 'concurnas'\nconcurnas.aliases = ['conc']\n\n/** @param {Refractor} Prism */\nexport default function concurnas(Prism) {\n  Prism.languages.concurnas = {\n    comment: {\n      pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?(?:\\*\\/|$)|\\/\\/.*)/,\n      lookbehind: true,\n      greedy: true\n    },\n    langext: {\n      pattern: /\\b\\w+\\s*\\|\\|[\\s\\S]+?\\|\\|/,\n      greedy: true,\n      inside: {\n        'class-name': /^\\w+/,\n        string: {\n          pattern: /(^\\s*\\|\\|)[\\s\\S]+(?=\\|\\|$)/,\n          lookbehind: true\n        },\n        punctuation: /\\|\\|/\n      }\n    },\n    function: {\n      pattern: /((?:^|\\s)def[ \\t]+)[a-zA-Z_]\\w*(?=\\s*\\()/,\n      lookbehind: true\n    },\n    keyword:\n      /\\b(?:abstract|actor|also|annotation|assert|async|await|bool|boolean|break|byte|case|catch|changed|char|class|closed|constant|continue|def|default|del|double|elif|else|enum|every|extends|false|finally|float|for|from|global|gpudef|gpukernel|if|import|in|init|inject|int|lambda|local|long|loop|match|new|nodefault|null|of|onchange|open|out|override|package|parfor|parforsync|post|pre|private|protected|provide|provider|public|return|shared|short|single|size_t|sizeof|super|sync|this|throw|trait|trans|transient|true|try|typedef|unchecked|using|val|var|void|while|with)\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    number:\n      /\\b0b[01][01_]*L?\\b|\\b0x(?:[\\da-f_]*\\.)?[\\da-f_p+-]+\\b|(?:\\b\\d[\\d_]*(?:\\.[\\d_]*)?|\\B\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[dfls]?/i,\n    punctuation: /[{}[\\];(),.:]/,\n    operator:\n      /<==|>==|=>|->|<-|<>|&==|&<>|\\?:?|\\.\\?|\\+\\+|--|[-+*/=<>]=?|[!^~]|\\b(?:and|as|band|bor|bxor|comp|is|isnot|mod|or)\\b=?/,\n    annotation: {\n      pattern: /@(?:\\w+:)?(?:\\w+|\\[[^\\]]+\\])?/,\n      alias: 'builtin'\n    }\n  }\n  Prism.languages.insertBefore('concurnas', 'langext', {\n    'regex-literal': {\n      pattern: /\\br(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      greedy: true,\n      inside: {\n        interpolation: {\n          pattern:\n            /((?:^|[^\\\\])(?:\\\\{2})*)\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n          lookbehind: true,\n          inside: Prism.languages.concurnas\n        },\n        regex: /[\\s\\S]+/\n      }\n    },\n    'string-literal': {\n      pattern: /(?:\\B|\\bs)(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      greedy: true,\n      inside: {\n        interpolation: {\n          pattern:\n            /((?:^|[^\\\\])(?:\\\\{2})*)\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n          lookbehind: true,\n          inside: Prism.languages.concurnas\n        },\n        string: /[\\s\\S]+/\n      }\n    }\n  })\n  Prism.languages.conc = Prism.languages.concurnas\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ncsp.displayName = 'csp'\ncsp.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function csp(Prism) {\n  /**\n   * Original by Scott Helme.\n   *\n   * Reference: https://scotthelme.co.uk/csp-cheat-sheet/\n   *\n   * Supports the following:\n   *  - https://www.w3.org/TR/CSP1/\n   *  - https://www.w3.org/TR/CSP2/\n   *  - https://www.w3.org/TR/CSP3/\n   */\n\n  ;(function (Prism) {\n    /**\n     * @param {string} source\n     * @returns {RegExp}\n     */\n    function value(source) {\n      return RegExp(\n        /([ \\t])/.source + '(?:' + source + ')' + /(?=[\\s;]|$)/.source,\n        'i'\n      )\n    }\n    Prism.languages.csp = {\n      directive: {\n        pattern:\n          /(^|[\\s;])(?:base-uri|block-all-mixed-content|(?:child|connect|default|font|frame|img|manifest|media|object|prefetch|script|style|worker)-src|disown-opener|form-action|frame-(?:ancestors|options)|input-protection(?:-(?:clip|selectors))?|navigate-to|plugin-types|policy-uri|referrer|reflected-xss|report-(?:to|uri)|require-sri-for|sandbox|(?:script|style)-src-(?:attr|elem)|upgrade-insecure-requests)(?=[\\s;]|$)/i,\n        lookbehind: true,\n        alias: 'property'\n      },\n      scheme: {\n        pattern: value(/[a-z][a-z0-9.+-]*:/.source),\n        lookbehind: true\n      },\n      none: {\n        pattern: value(/'none'/.source),\n        lookbehind: true,\n        alias: 'keyword'\n      },\n      nonce: {\n        pattern: value(/'nonce-[-+/\\w=]+'/.source),\n        lookbehind: true,\n        alias: 'number'\n      },\n      hash: {\n        pattern: value(/'sha(?:256|384|512)-[-+/\\w=]+'/.source),\n        lookbehind: true,\n        alias: 'number'\n      },\n      host: {\n        pattern: value(\n          /[a-z][a-z0-9.+-]*:\\/\\/[^\\s;,']*/.source +\n            '|' +\n            /\\*[^\\s;,']*/.source +\n            '|' +\n            /[a-z0-9-]+(?:\\.[a-z0-9-]+)+(?::[\\d*]+)?(?:\\/[^\\s;,']*)?/.source\n        ),\n        lookbehind: true,\n        alias: 'url',\n        inside: {\n          important: /\\*/\n        }\n      },\n      keyword: [\n        {\n          pattern: value(/'unsafe-[a-z-]+'/.source),\n          lookbehind: true,\n          alias: 'unsafe'\n        },\n        {\n          pattern: value(/'[a-z-]+'/.source),\n          lookbehind: true,\n          alias: 'safe'\n        }\n      ],\n      punctuation: /;/\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ncooklang.displayName = 'cooklang'\ncooklang.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function cooklang(Prism) {\n  ;(function (Prism) {\n    // see https://github.com/cooklang/spec/blob/main/EBNF.md\n\n    var single_token_suffix = /(?:(?!\\s)[\\d$+<=a-zA-Z\\x80-\\uFFFF])+/.source\n    var multi_token_infix = /[^{}@#]+/.source\n    var multi_token_suffix = /\\{[^}#@]*\\}/.source\n    var multi_token = multi_token_infix + multi_token_suffix\n    var timer_units = /(?:h|hours|hrs|m|min|minutes)/.source\n    var amount_group_impl = {\n      pattern: /\\{[^{}]*\\}/,\n      inside: {\n        amount: {\n          pattern: /([\\{|])[^{}|*%]+/,\n          lookbehind: true,\n          alias: 'number'\n        },\n        unit: {\n          pattern: /(%)[^}]+/,\n          lookbehind: true,\n          alias: 'symbol'\n        },\n        'servings-scaler': {\n          pattern: /\\*/,\n          alias: 'operator'\n        },\n        'servings-alternative-separator': {\n          pattern: /\\|/,\n          alias: 'operator'\n        },\n        'unit-separator': {\n          pattern: /(?:%|(\\*)%)/,\n          lookbehind: true,\n          alias: 'operator'\n        },\n        punctuation: /[{}]/\n      }\n    }\n    Prism.languages.cooklang = {\n      comment: {\n        // [- comment -]\n        // -- comment\n        pattern: /\\[-[\\s\\S]*?-\\]|--.*/,\n        greedy: true\n      },\n      meta: {\n        // >> key: value\n        pattern: />>.*:.*/,\n        inside: {\n          property: {\n            // key:\n            pattern: /(>>\\s*)[^\\s:](?:[^:]*[^\\s:])?/,\n            lookbehind: true\n          }\n        }\n      },\n      'cookware-group': {\n        // #...{...}, #...\n        pattern: new RegExp(\n          '#(?:' + multi_token + '|' + single_token_suffix + ')'\n        ),\n        inside: {\n          cookware: {\n            pattern: new RegExp('(^#)(?:' + multi_token_infix + ')'),\n            lookbehind: true,\n            alias: 'variable'\n          },\n          'cookware-keyword': {\n            pattern: /^#/,\n            alias: 'keyword'\n          },\n          'quantity-group': {\n            pattern: new RegExp(/\\{[^{}@#]*\\}/),\n            inside: {\n              quantity: {\n                pattern: new RegExp(/(^\\{)/.source + multi_token_infix),\n                lookbehind: true,\n                alias: 'number'\n              },\n              punctuation: /[{}]/\n            }\n          }\n        }\n      },\n      'ingredient-group': {\n        // @...{...}, @...\n        pattern: new RegExp(\n          '@(?:' + multi_token + '|' + single_token_suffix + ')'\n        ),\n        inside: {\n          ingredient: {\n            pattern: new RegExp('(^@)(?:' + multi_token_infix + ')'),\n            lookbehind: true,\n            alias: 'variable'\n          },\n          'ingredient-keyword': {\n            pattern: /^@/,\n            alias: 'keyword'\n          },\n          'amount-group': amount_group_impl\n        }\n      },\n      'timer-group': {\n        // ~timer{...}\n        // eslint-disable-next-line regexp/sort-alternatives\n        pattern: /~(?!\\s)[^@#~{}]*\\{[^{}]*\\}/,\n        inside: {\n          timer: {\n            pattern: /(^~)[^{]+/,\n            lookbehind: true,\n            alias: 'variable'\n          },\n          'duration-group': {\n            // {...}\n            pattern: /\\{[^{}]*\\}/,\n            inside: {\n              punctuation: /[{}]/,\n              unit: {\n                pattern: new RegExp(\n                  /(%\\s*)/.source + timer_units + /\\b/.source\n                ),\n                lookbehind: true,\n                alias: 'symbol'\n              },\n              operator: /%/,\n              duration: {\n                pattern: /\\d+/,\n                alias: 'number'\n              }\n            }\n          },\n          'timer-keyword': {\n            pattern: /^~/,\n            alias: 'keyword'\n          }\n        }\n      }\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ncoq.displayName = 'coq'\ncoq.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function coq(Prism) {\n  ;(function (Prism) {\n    // https://github.com/coq/coq\n\n    var commentSource = /\\(\\*(?:[^(*]|\\((?!\\*)|\\*(?!\\))|<self>)*\\*\\)/.source\n    for (var i = 0; i < 2; i++) {\n      commentSource = commentSource.replace(/<self>/g, function () {\n        return commentSource\n      })\n    }\n    commentSource = commentSource.replace(/<self>/g, '[]')\n    Prism.languages.coq = {\n      comment: RegExp(commentSource),\n      string: {\n        pattern: /\"(?:[^\"]|\"\")*\"(?!\")/,\n        greedy: true\n      },\n      attribute: [\n        {\n          pattern: RegExp(\n            /#\\[(?:[^\\[\\](\"]|\"(?:[^\"]|\"\")*\"(?!\")|\\((?!\\*)|<comment>)*\\]/.source.replace(\n              /<comment>/g,\n              function () {\n                return commentSource\n              }\n            )\n          ),\n          greedy: true,\n          alias: 'attr-name',\n          inside: {\n            comment: RegExp(commentSource),\n            string: {\n              pattern: /\"(?:[^\"]|\"\")*\"(?!\")/,\n              greedy: true\n            },\n            operator: /=/,\n            punctuation: /^#\\[|\\]$|[,()]/\n          }\n        },\n        {\n          pattern:\n            /\\b(?:Cumulative|Global|Local|Monomorphic|NonCumulative|Polymorphic|Private|Program)\\b/,\n          alias: 'attr-name'\n        }\n      ],\n      keyword:\n        /\\b(?:Abort|About|Add|Admit|Admitted|All|Arguments|As|Assumptions|Axiom|Axioms|Back|BackTo|Backtrace|BinOp|BinOpSpec|BinRel|Bind|Blacklist|Canonical|Case|Cd|Check|Class|Classes|Close|CoFixpoint|CoInductive|Coercion|Coercions|Collection|Combined|Compute|Conjecture|Conjectures|Constant|Constants|Constraint|Constructors|Context|Corollary|Create|CstOp|Custom|Cut|Debug|Declare|Defined|Definition|Delimit|Dependencies|Dependent|Derive|Diffs|Drop|Elimination|End|Entry|Equality|Eval|Example|Existential|Existentials|Existing|Export|Extern|Extraction|Fact|Fail|Field|File|Firstorder|Fixpoint|Flags|Focus|From|Funclass|Function|Functional|GC|Generalizable|Goal|Grab|Grammar|Graph|Guarded|Haskell|Heap|Hide|Hint|HintDb|Hints|Hypotheses|Hypothesis|IF|Identity|Immediate|Implicit|Implicits|Import|Include|Induction|Inductive|Infix|Info|Initial|InjTyp|Inline|Inspect|Instance|Instances|Intro|Intros|Inversion|Inversion_clear|JSON|Language|Left|Lemma|Let|Lia|Libraries|Library|Load|LoadPath|Locate|Ltac|Ltac2|ML|Match|Method|Minimality|Module|Modules|Morphism|Next|NoInline|Notation|Number|OCaml|Obligation|Obligations|Opaque|Open|Optimize|Parameter|Parameters|Parametric|Path|Paths|Prenex|Preterm|Primitive|Print|Profile|Projections|Proof|Prop|PropBinOp|PropOp|PropUOp|Property|Proposition|Pwd|Qed|Quit|Rec|Record|Recursive|Redirect|Reduction|Register|Relation|Remark|Remove|Require|Reserved|Reset|Resolve|Restart|Rewrite|Right|Ring|Rings|SProp|Saturate|Save|Scheme|Scope|Scopes|Search|SearchHead|SearchPattern|SearchRewrite|Section|Separate|Set|Setoid|Show|Signatures|Solve|Solver|Sort|Sortclass|Sorted|Spec|Step|Strategies|Strategy|String|Structure|SubClass|Subgraph|SuchThat|Tactic|Term|TestCompile|Theorem|Time|Timeout|To|Transparent|Type|Typeclasses|Types|Typing|UnOp|UnOpSpec|Undelimit|Undo|Unfocus|Unfocused|Unfold|Universe|Universes|Unshelve|Variable|Variables|Variant|Verbose|View|Visibility|Zify|_|apply|as|at|by|cofix|else|end|exists|exists2|fix|for|forall|fun|if|in|let|match|measure|move|removed|return|struct|then|using|wf|where|with)\\b/,\n      number:\n        /\\b(?:0x[a-f0-9][a-f0-9_]*(?:\\.[a-f0-9_]+)?(?:p[+-]?\\d[\\d_]*)?|\\d[\\d_]*(?:\\.[\\d_]+)?(?:e[+-]?\\d[\\d_]*)?)\\b/i,\n      punct: {\n        pattern: /@\\{|\\{\\||\\[=|:>/,\n        alias: 'punctuation'\n      },\n      operator:\n        /\\/\\\\|\\\\\\/|\\.{2,3}|:{1,2}=|\\*\\*|[-=]>|<(?:->?|[+:=>]|<:)|>(?:=|->)|\\|[-|]?|[-!%&*+/<=>?@^~']/,\n      punctuation: /\\.\\(|`\\(|@\\{|`\\{|\\{\\||\\[=|:>|[:.,;(){}\\[\\]]/\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorRuby from './ruby.js'\ncrystal.displayName = 'crystal'\ncrystal.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function crystal(Prism) {\n  Prism.register(refractorRuby)\n  ;(function (Prism) {\n    Prism.languages.crystal = Prism.languages.extend('ruby', {\n      keyword: [\n        /\\b(?:__DIR__|__END_LINE__|__FILE__|__LINE__|abstract|alias|annotation|as|asm|begin|break|case|class|def|do|else|elsif|end|ensure|enum|extend|for|fun|if|ifdef|include|instance_sizeof|lib|macro|module|next|of|out|pointerof|private|protected|ptr|require|rescue|return|select|self|sizeof|struct|super|then|type|typeof|undef|uninitialized|union|unless|until|when|while|with|yield)\\b/,\n        {\n          pattern: /(\\.\\s*)(?:is_a|responds_to)\\?/,\n          lookbehind: true\n        }\n      ],\n      number:\n        /\\b(?:0b[01_]*[01]|0o[0-7_]*[0-7]|0x[\\da-fA-F_]*[\\da-fA-F]|(?:\\d(?:[\\d_]*\\d)?)(?:\\.[\\d_]*\\d)?(?:[eE][+-]?[\\d_]*\\d)?)(?:_(?:[uif](?:8|16|32|64))?)?\\b/,\n      operator: [/->/, Prism.languages.ruby.operator],\n      punctuation: /[(){}[\\].,;\\\\]/\n    })\n    Prism.languages.insertBefore('crystal', 'string-literal', {\n      attribute: {\n        pattern: /@\\[.*?\\]/,\n        inside: {\n          delimiter: {\n            pattern: /^@\\[|\\]$/,\n            alias: 'punctuation'\n          },\n          attribute: {\n            pattern: /^(\\s*)\\w+/,\n            lookbehind: true,\n            alias: 'class-name'\n          },\n          args: {\n            pattern: /\\S(?:[\\s\\S]*\\S)?/,\n            inside: Prism.languages.crystal\n          }\n        }\n      },\n      expansion: {\n        pattern: /\\{(?:\\{.*?\\}|%.*?%)\\}/,\n        inside: {\n          content: {\n            pattern: /^(\\{.)[\\s\\S]+(?=.\\}$)/,\n            lookbehind: true,\n            inside: Prism.languages.crystal\n          },\n          delimiter: {\n            pattern: /^\\{[\\{%]|[\\}%]\\}$/,\n            alias: 'operator'\n          }\n        }\n      },\n      char: {\n        pattern:\n          /'(?:[^\\\\\\r\\n]{1,2}|\\\\(?:.|u(?:[A-Fa-f0-9]{1,4}|\\{[A-Fa-f0-9]{1,6}\\})))'/,\n        greedy: true\n      }\n    })\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorCss from './css.js'\ncssExtras.displayName = 'css-extras'\ncssExtras.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function cssExtras(Prism) {\n  Prism.register(refractorCss)\n  ;(function (Prism) {\n    var string = /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/\n    var selectorInside\n    Prism.languages.css.selector = {\n      pattern: Prism.languages.css.selector.pattern,\n      lookbehind: true,\n      inside: (selectorInside = {\n        'pseudo-element':\n          /:(?:after|before|first-letter|first-line|selection)|::[-\\w]+/,\n        'pseudo-class': /:[-\\w]+/,\n        class: /\\.[-\\w]+/,\n        id: /#[-\\w]+/,\n        attribute: {\n          pattern: RegExp('\\\\[(?:[^[\\\\]\"\\']|' + string.source + ')*\\\\]'),\n          greedy: true,\n          inside: {\n            punctuation: /^\\[|\\]$/,\n            'case-sensitivity': {\n              pattern: /(\\s)[si]$/i,\n              lookbehind: true,\n              alias: 'keyword'\n            },\n            namespace: {\n              pattern: /^(\\s*)(?:(?!\\s)[-*\\w\\xA0-\\uFFFF])*\\|(?!=)/,\n              lookbehind: true,\n              inside: {\n                punctuation: /\\|$/\n              }\n            },\n            'attr-name': {\n              pattern: /^(\\s*)(?:(?!\\s)[-\\w\\xA0-\\uFFFF])+/,\n              lookbehind: true\n            },\n            'attr-value': [\n              string,\n              {\n                pattern: /(=\\s*)(?:(?!\\s)[-\\w\\xA0-\\uFFFF])+(?=\\s*$)/,\n                lookbehind: true\n              }\n            ],\n            operator: /[|~*^$]?=/\n          }\n        },\n        'n-th': [\n          {\n            pattern: /(\\(\\s*)[+-]?\\d*[\\dn](?:\\s*[+-]\\s*\\d+)?(?=\\s*\\))/,\n            lookbehind: true,\n            inside: {\n              number: /[\\dn]+/,\n              operator: /[+-]/\n            }\n          },\n          {\n            pattern: /(\\(\\s*)(?:even|odd)(?=\\s*\\))/i,\n            lookbehind: true\n          }\n        ],\n        combinator: />|\\+|~|\\|\\|/,\n        // the `tag` token has been existed and removed.\n        // because we can't find a perfect tokenize to match it.\n        // if you want to add it, please read https://github.com/PrismJS/prism/pull/2373 first.\n\n        punctuation: /[(),]/\n      })\n    }\n    Prism.languages.css['atrule'].inside['selector-function-argument'].inside =\n      selectorInside\n    Prism.languages.insertBefore('css', 'property', {\n      variable: {\n        pattern:\n          /(^|[^-\\w\\xA0-\\uFFFF])--(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*/i,\n        lookbehind: true\n      }\n    })\n    var unit = {\n      pattern: /(\\b\\d+)(?:%|[a-z]+(?![\\w-]))/,\n      lookbehind: true\n    }\n    // 123 -123 .123 -.123 12.3 -12.3\n    var number = {\n      pattern: /(^|[^\\w.-])-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/,\n      lookbehind: true\n    }\n    Prism.languages.insertBefore('css', 'function', {\n      operator: {\n        pattern: /(\\s)[+\\-*\\/](?=\\s)/,\n        lookbehind: true\n      },\n      // CAREFUL!\n      // Previewers and Inline color use hexcode and color.\n      hexcode: {\n        pattern: /\\B#[\\da-f]{3,8}\\b/i,\n        alias: 'color'\n      },\n      color: [\n        {\n          pattern:\n            /(^|[^\\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|RebeccaPurple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\\w-])/i,\n          lookbehind: true\n        },\n        {\n          pattern:\n            /\\b(?:hsl|rgb)\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*\\)\\B|\\b(?:hsl|rgb)a\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*,\\s*(?:0|0?\\.\\d+|1)\\s*\\)\\B/i,\n          inside: {\n            unit: unit,\n            number: number,\n            function: /[\\w-]+(?=\\()/,\n            punctuation: /[(),]/\n          }\n        }\n      ],\n      // it's important that there is no boundary assertion after the hex digits\n      entity: /\\\\[\\da-f]{1,8}/i,\n      unit: unit,\n      number: number\n    })\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ncsv.displayName = 'csv'\ncsv.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function csv(Prism) {\n  // https://tools.ietf.org/html/rfc4180\n\n  Prism.languages.csv = {\n    value: /[^\\r\\n,\"]+|\"(?:[^\"]|\"\")*\"(?!\")/,\n    punctuation: /,/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ncue.displayName = 'cue'\ncue.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function cue(Prism) {\n  ;(function (Prism) {\n    // https://cuelang.org/docs/references/spec/\n\n    // eslint-disable-next-line regexp/strict\n    var stringEscape = /\\\\(?:(?!\\2)|\\2(?:[^()\\r\\n]|\\([^()]*\\)))/.source\n    // eslint-disable-next-line regexp/strict\n    var stringTypes =\n      /\"\"\"(?:[^\\\\\"]|\"(?!\"\"\\2)|<esc>)*\"\"\"/.source +\n      // eslint-disable-next-line regexp/strict\n      '|' +\n      /'''(?:[^\\\\']|'(?!''\\2)|<esc>)*'''/.source +\n      // eslint-disable-next-line regexp/strict\n      '|' +\n      /\"(?:[^\\\\\\r\\n\"]|\"(?!\\2)|<esc>)*\"/.source +\n      // eslint-disable-next-line regexp/strict\n      '|' +\n      /'(?:[^\\\\\\r\\n']|'(?!\\2)|<esc>)*'/.source\n    var stringLiteral =\n      '(?:' + stringTypes.replace(/<esc>/g, stringEscape) + ')'\n    Prism.languages.cue = {\n      comment: {\n        pattern: /\\/\\/.*/,\n        greedy: true\n      },\n      'string-literal': {\n        // eslint-disable-next-line regexp/strict\n        pattern: RegExp(\n          /(^|[^#\"'\\\\])(#*)/.source + stringLiteral + /(?![\"'])\\2/.source\n        ),\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          // I'm using dirty hack here. We have to know the number hashes at the start of the string somehow,\n          // but we can't look back. So instead, we will use a lookahead, go to the end of the string, and\n          // capture the hashes at the end of the string.\n          escape: {\n            pattern:\n              /(?=[\\s\\S]*[\"'](#*)$)\\\\\\1(?:U[a-fA-F0-9]{1,8}|u[a-fA-F0-9]{1,4}|x[a-fA-F0-9]{1,2}|\\d{2,3}|[^(])/,\n            greedy: true,\n            alias: 'string'\n          },\n          interpolation: {\n            pattern: /(?=[\\s\\S]*[\"'](#*)$)\\\\\\1\\([^()]*\\)/,\n            greedy: true,\n            inside: {\n              punctuation: /^\\\\#*\\(|\\)$/,\n              expression: {\n                pattern: /[\\s\\S]+/,\n                inside: null\n              }\n            }\n          },\n          string: /[\\s\\S]+/\n        }\n      },\n      keyword: {\n        pattern: /(^|[^\\w$])(?:for|if|import|in|let|null|package)(?![\\w$])/,\n        lookbehind: true\n      },\n      boolean: {\n        pattern: /(^|[^\\w$])(?:false|true)(?![\\w$])/,\n        lookbehind: true\n      },\n      builtin: {\n        pattern:\n          /(^|[^\\w$])(?:bool|bytes|float|float(?:32|64)|u?int(?:8|16|32|64|128)?|number|rune|string)(?![\\w$])/,\n        lookbehind: true\n      },\n      attribute: {\n        pattern: /@[\\w$]+(?=\\s*\\()/,\n        alias: 'function'\n      },\n      function: {\n        pattern: /(^|[^\\w$])[a-z_$][\\w$]*(?=\\s*\\()/i,\n        lookbehind: true\n      },\n      number: {\n        pattern:\n          /(^|[^\\w$.])(?:0b[01]+(?:_[01]+)*|0o[0-7]+(?:_[0-7]+)*|0[xX][0-9A-Fa-f]+(?:_[0-9A-Fa-f]+)*|(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[eE][+-]?\\d+(?:_\\d+)*)?(?:[KMGTP]i?)?)(?![\\w$])/,\n        lookbehind: true\n      },\n      operator: /\\.{3}|_\\|_|&&?|\\|\\|?|[=!]~|[<>=!]=?|[+\\-*/?]/,\n      punctuation: /[()[\\]{},.:]/\n    }\n    Prism.languages.cue[\n      'string-literal'\n    ].inside.interpolation.inside.expression.inside = Prism.languages.cue\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ncypher.displayName = 'cypher'\ncypher.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function cypher(Prism) {\n  Prism.languages.cypher = {\n    // https://neo4j.com/docs/cypher-manual/current/syntax/comments/\n    comment: /\\/\\/.*/,\n    string: {\n      pattern: /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"|'(?:[^'\\\\\\r\\n]|\\\\.)*'/,\n      greedy: true\n    },\n    'class-name': {\n      pattern: /(:\\s*)(?:\\w+|`(?:[^`\\\\\\r\\n])*`)(?=\\s*[{):])/,\n      lookbehind: true,\n      greedy: true\n    },\n    relationship: {\n      pattern:\n        /(-\\[\\s*(?:\\w+\\s*|`(?:[^`\\\\\\r\\n])*`\\s*)?:\\s*|\\|\\s*:\\s*)(?:\\w+|`(?:[^`\\\\\\r\\n])*`)/,\n      lookbehind: true,\n      greedy: true,\n      alias: 'property'\n    },\n    identifier: {\n      pattern: /`(?:[^`\\\\\\r\\n])*`/,\n      greedy: true\n    },\n    variable: /\\$\\w+/,\n    // https://neo4j.com/docs/cypher-manual/current/syntax/reserved/\n    keyword:\n      /\\b(?:ADD|ALL|AND|AS|ASC|ASCENDING|ASSERT|BY|CALL|CASE|COMMIT|CONSTRAINT|CONTAINS|CREATE|CSV|DELETE|DESC|DESCENDING|DETACH|DISTINCT|DO|DROP|ELSE|END|ENDS|EXISTS|FOR|FOREACH|IN|INDEX|IS|JOIN|KEY|LIMIT|LOAD|MANDATORY|MATCH|MERGE|NODE|NOT|OF|ON|OPTIONAL|OR|ORDER(?=\\s+BY)|PERIODIC|REMOVE|REQUIRE|RETURN|SCALAR|SCAN|SET|SKIP|START|STARTS|THEN|UNION|UNIQUE|UNWIND|USING|WHEN|WHERE|WITH|XOR|YIELD)\\b/i,\n    function: /\\b\\w+\\b(?=\\s*\\()/,\n    boolean: /\\b(?:false|null|true)\\b/i,\n    number: /\\b(?:0x[\\da-fA-F]+|\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)\\b/,\n    // https://neo4j.com/docs/cypher-manual/current/syntax/operators/\n    operator: /:|<--?|--?>?|<>|=~?|[<>]=?|[+*/%^|]|\\.\\.\\.?/,\n    punctuation: /[()[\\]{},;.]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\nd.displayName = 'd'\nd.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function d(Prism) {\n  Prism.register(refractorClike)\n  Prism.languages.d = Prism.languages.extend('clike', {\n    comment: [\n      {\n        // Shebang\n        pattern: /^\\s*#!.+/,\n        greedy: true\n      },\n      {\n        pattern: RegExp(\n          /(^|[^\\\\])/.source +\n            '(?:' +\n            [\n              // /+ comment +/\n              // Allow one level of nesting\n              /\\/\\+(?:\\/\\+(?:[^+]|\\+(?!\\/))*\\+\\/|(?!\\/\\+)[\\s\\S])*?\\+\\//.source,\n              // // comment\n              /\\/\\/.*/.source,\n              // /* comment */\n              /\\/\\*[\\s\\S]*?\\*\\//.source\n            ].join('|') +\n            ')'\n        ),\n        lookbehind: true,\n        greedy: true\n      }\n    ],\n    string: [\n      {\n        pattern: RegExp(\n          [\n            // r\"\", x\"\"\n            /\\b[rx]\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"[cwd]?/.source,\n            // q\"[]\", q\"()\", q\"<>\", q\"{}\"\n            /\\bq\"(?:\\[[\\s\\S]*?\\]|\\([\\s\\S]*?\\)|<[\\s\\S]*?>|\\{[\\s\\S]*?\\})\"/.source,\n            // q\"IDENT\n            // ...\n            // IDENT\"\n            /\\bq\"((?!\\d)\\w+)$[\\s\\S]*?^\\1\"/.source,\n            // q\"//\", q\"||\", etc.\n            // eslint-disable-next-line regexp/strict\n            /\\bq\"(.)[\\s\\S]*?\\2\"/.source,\n            // eslint-disable-next-line regexp/strict\n            /([\"`])(?:\\\\[\\s\\S]|(?!\\3)[^\\\\])*\\3[cwd]?/.source\n          ].join('|'),\n          'm'\n        ),\n        greedy: true\n      },\n      {\n        pattern: /\\bq\\{(?:\\{[^{}]*\\}|[^{}])*\\}/,\n        greedy: true,\n        alias: 'token-string'\n      }\n    ],\n    // In order: $, keywords and special tokens, globally defined symbols\n    keyword:\n      /\\$|\\b(?:__(?:(?:DATE|EOF|FILE|FUNCTION|LINE|MODULE|PRETTY_FUNCTION|TIMESTAMP|TIME|VENDOR|VERSION)__|gshared|parameters|traits|vector)|abstract|alias|align|asm|assert|auto|body|bool|break|byte|case|cast|catch|cdouble|cent|cfloat|char|class|const|continue|creal|dchar|debug|default|delegate|delete|deprecated|do|double|dstring|else|enum|export|extern|false|final|finally|float|for|foreach|foreach_reverse|function|goto|idouble|if|ifloat|immutable|import|inout|int|interface|invariant|ireal|lazy|long|macro|mixin|module|new|nothrow|null|out|override|package|pragma|private|protected|ptrdiff_t|public|pure|real|ref|return|scope|shared|short|size_t|static|string|struct|super|switch|synchronized|template|this|throw|true|try|typedef|typeid|typeof|ubyte|ucent|uint|ulong|union|unittest|ushort|version|void|volatile|wchar|while|with|wstring)\\b/,\n    number: [\n      // The lookbehind and the negative look-ahead try to prevent bad highlighting of the .. operator\n      // Hexadecimal numbers must be handled separately to avoid problems with exponent \"e\"\n      /\\b0x\\.?[a-f\\d_]+(?:(?!\\.\\.)\\.[a-f\\d_]*)?(?:p[+-]?[a-f\\d_]+)?[ulfi]{0,4}/i,\n      {\n        pattern:\n          /((?:\\.\\.)?)(?:\\b0b\\.?|\\b|\\.)\\d[\\d_]*(?:(?!\\.\\.)\\.[\\d_]*)?(?:e[+-]?\\d[\\d_]*)?[ulfi]{0,4}/i,\n        lookbehind: true\n      }\n    ],\n    operator:\n      /\\|[|=]?|&[&=]?|\\+[+=]?|-[-=]?|\\.?\\.\\.|=[>=]?|!(?:i[ns]\\b|<>?=?|>=?|=)?|\\bi[ns]\\b|(?:<[<>]?|>>?>?|\\^\\^|[*\\/%^~])=?/\n  })\n  Prism.languages.insertBefore('d', 'string', {\n    // Characters\n    // 'a', '\\\\', '\\n', '\\xFF', '\\377', '\\uFFFF', '\\U0010FFFF', '\\quot'\n    char: /'(?:\\\\(?:\\W|\\w+)|[^\\\\])'/\n  })\n  Prism.languages.insertBefore('d', 'keyword', {\n    property: /\\B@\\w*/\n  })\n  Prism.languages.insertBefore('d', 'function', {\n    register: {\n      // Iasm registers\n      pattern:\n        /\\b(?:[ABCD][LHX]|E?(?:BP|DI|SI|SP)|[BS]PL|[ECSDGF]S|CR[0234]|[DS]IL|DR[012367]|E[ABCD]X|X?MM[0-7]|R(?:1[0-5]|[89])[BWD]?|R[ABCD]X|R[BS]P|R[DS]I|TR[3-7]|XMM(?:1[0-5]|[89])|YMM(?:1[0-5]|\\d))\\b|\\bST(?:\\([0-7]\\)|\\b)/,\n      alias: 'variable'\n    }\n  })\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\ndart.displayName = 'dart'\ndart.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function dart(Prism) {\n  Prism.register(refractorClike)\n  ;(function (Prism) {\n    var keywords = [\n      /\\b(?:async|sync|yield)\\*/,\n      /\\b(?:abstract|assert|async|await|break|case|catch|class|const|continue|covariant|default|deferred|do|dynamic|else|enum|export|extends|extension|external|factory|final|finally|for|get|hide|if|implements|import|in|interface|library|mixin|new|null|on|operator|part|rethrow|return|set|show|static|super|switch|sync|this|throw|try|typedef|var|void|while|with|yield)\\b/\n    ]\n\n    // Handles named imports, such as http.Client\n    var packagePrefix = /(^|[^\\w.])(?:[a-z]\\w*\\s*\\.\\s*)*(?:[A-Z]\\w*\\s*\\.\\s*)*/\n      .source\n\n    // based on the dart naming conventions\n    var className = {\n      pattern: RegExp(packagePrefix + /[A-Z](?:[\\d_A-Z]*[a-z]\\w*)?\\b/.source),\n      lookbehind: true,\n      inside: {\n        namespace: {\n          pattern: /^[a-z]\\w*(?:\\s*\\.\\s*[a-z]\\w*)*(?:\\s*\\.)?/,\n          inside: {\n            punctuation: /\\./\n          }\n        }\n      }\n    }\n    Prism.languages.dart = Prism.languages.extend('clike', {\n      'class-name': [\n        className,\n        {\n          // variables and parameters\n          // this to support class names (or generic parameters) which do not contain a lower case letter (also works for methods)\n          pattern: RegExp(\n            packagePrefix + /[A-Z]\\w*(?=\\s+\\w+\\s*[;,=()])/.source\n          ),\n          lookbehind: true,\n          inside: className.inside\n        }\n      ],\n      keyword: keywords,\n      operator:\n        /\\bis!|\\b(?:as|is)\\b|\\+\\+|--|&&|\\|\\||<<=?|>>=?|~(?:\\/=?)?|[+\\-*\\/%&^|=!<>]=?|\\?/\n    })\n    Prism.languages.insertBefore('dart', 'string', {\n      'string-literal': {\n        pattern:\n          /r?(?:(\"\"\"|''')[\\s\\S]*?\\1|([\"'])(?:\\\\.|(?!\\2)[^\\\\\\r\\n])*\\2(?!\\2))/,\n        greedy: true,\n        inside: {\n          interpolation: {\n            pattern:\n              /((?:^|[^\\\\])(?:\\\\{2})*)\\$(?:\\w+|\\{(?:[^{}]|\\{[^{}]*\\})*\\})/,\n            lookbehind: true,\n            inside: {\n              punctuation: /^\\$\\{?|\\}$/,\n              expression: {\n                pattern: /[\\s\\S]+/,\n                inside: Prism.languages.dart\n              }\n            }\n          },\n          string: /[\\s\\S]+/\n        }\n      },\n      string: undefined\n    })\n    Prism.languages.insertBefore('dart', 'class-name', {\n      metadata: {\n        pattern: /@\\w+/,\n        alias: 'function'\n      }\n    })\n    Prism.languages.insertBefore('dart', 'class-name', {\n      generics: {\n        pattern:\n          /<(?:[\\w\\s,.&?]|<(?:[\\w\\s,.&?]|<(?:[\\w\\s,.&?]|<[\\w\\s,.&?]*>)*>)*>)*>/,\n        inside: {\n          'class-name': className,\n          keyword: keywords,\n          punctuation: /[<>(),.:]/,\n          operator: /[?&|]/\n        }\n      }\n    })\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ndataweave.displayName = 'dataweave'\ndataweave.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function dataweave(Prism) {\n  ;(function (Prism) {\n    Prism.languages.dataweave = {\n      url: /\\b[A-Za-z]+:\\/\\/[\\w/:.?=&-]+|\\burn:[\\w:.?=&-]+/,\n      property: {\n        pattern: /(?:\\b\\w+#)?(?:\"(?:\\\\.|[^\\\\\"\\r\\n])*\"|\\b\\w+)(?=\\s*[:@])/,\n        greedy: true\n      },\n      string: {\n        pattern: /([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n        greedy: true\n      },\n      'mime-type':\n        /\\b(?:application|audio|image|multipart|text|video)\\/[\\w+-]+/,\n      date: {\n        pattern: /\\|[\\w:+-]+\\|/,\n        greedy: true\n      },\n      comment: [\n        {\n          pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n          lookbehind: true,\n          greedy: true\n        },\n        {\n          pattern: /(^|[^\\\\:])\\/\\/.*/,\n          lookbehind: true,\n          greedy: true\n        }\n      ],\n      regex: {\n        pattern: /\\/(?:[^\\\\\\/\\r\\n]|\\\\[^\\r\\n])+\\//,\n        greedy: true\n      },\n      keyword:\n        /\\b(?:and|as|at|case|do|else|fun|if|input|is|match|not|ns|null|or|output|type|unless|update|using|var)\\b/,\n      function: /\\b[A-Z_]\\w*(?=\\s*\\()/i,\n      number: /-?\\b\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,\n      punctuation: /[{}[\\];(),.:@]/,\n      operator: /<<|>>|->|[<>~=]=?|!=|--?-?|\\+\\+?|!|\\?/,\n      boolean: /\\b(?:false|true)\\b/\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ndax.displayName = 'dax'\ndax.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function dax(Prism) {\n  Prism.languages.dax = {\n    comment: {\n      pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|(?:--|\\/\\/).*)/,\n      lookbehind: true\n    },\n    'data-field': {\n      pattern:\n        /'(?:[^']|'')*'(?!')(?:\\[[ \\w\\xA0-\\uFFFF]+\\])?|\\w+\\[[ \\w\\xA0-\\uFFFF]+\\]/,\n      alias: 'symbol'\n    },\n    measure: {\n      pattern: /\\[[ \\w\\xA0-\\uFFFF]+\\]/,\n      alias: 'constant'\n    },\n    string: {\n      pattern: /\"(?:[^\"]|\"\")*\"(?!\")/,\n      greedy: true\n    },\n    function:\n      /\\b(?:ABS|ACOS|ACOSH|ACOT|ACOTH|ADDCOLUMNS|ADDMISSINGITEMS|ALL|ALLCROSSFILTERED|ALLEXCEPT|ALLNOBLANKROW|ALLSELECTED|AND|APPROXIMATEDISTINCTCOUNT|ASIN|ASINH|ATAN|ATANH|AVERAGE|AVERAGEA|AVERAGEX|BETA\\.DIST|BETA\\.INV|BLANK|CALCULATE|CALCULATETABLE|CALENDAR|CALENDARAUTO|CEILING|CHISQ\\.DIST|CHISQ\\.DIST\\.RT|CHISQ\\.INV|CHISQ\\.INV\\.RT|CLOSINGBALANCEMONTH|CLOSINGBALANCEQUARTER|CLOSINGBALANCEYEAR|COALESCE|COMBIN|COMBINA|COMBINEVALUES|CONCATENATE|CONCATENATEX|CONFIDENCE\\.NORM|CONFIDENCE\\.T|CONTAINS|CONTAINSROW|CONTAINSSTRING|CONTAINSSTRINGEXACT|CONVERT|COS|COSH|COT|COTH|COUNT|COUNTA|COUNTAX|COUNTBLANK|COUNTROWS|COUNTX|CROSSFILTER|CROSSJOIN|CURRENCY|CURRENTGROUP|CUSTOMDATA|DATATABLE|DATE|DATEADD|DATEDIFF|DATESBETWEEN|DATESINPERIOD|DATESMTD|DATESQTD|DATESYTD|DATEVALUE|DAY|DEGREES|DETAILROWS|DISTINCT|DISTINCTCOUNT|DISTINCTCOUNTNOBLANK|DIVIDE|EARLIER|EARLIEST|EDATE|ENDOFMONTH|ENDOFQUARTER|ENDOFYEAR|EOMONTH|ERROR|EVEN|EXACT|EXCEPT|EXP|EXPON\\.DIST|FACT|FALSE|FILTER|FILTERS|FIND|FIRSTDATE|FIRSTNONBLANK|FIRSTNONBLANKVALUE|FIXED|FLOOR|FORMAT|GCD|GENERATE|GENERATEALL|GENERATESERIES|GEOMEAN|GEOMEANX|GROUPBY|HASONEFILTER|HASONEVALUE|HOUR|IF|IF\\.EAGER|IFERROR|IGNORE|INT|INTERSECT|ISBLANK|ISCROSSFILTERED|ISEMPTY|ISERROR|ISEVEN|ISFILTERED|ISINSCOPE|ISLOGICAL|ISNONTEXT|ISNUMBER|ISO\\.CEILING|ISODD|ISONORAFTER|ISSELECTEDMEASURE|ISSUBTOTAL|ISTEXT|KEEPFILTERS|KEYWORDMATCH|LASTDATE|LASTNONBLANK|LASTNONBLANKVALUE|LCM|LEFT|LEN|LN|LOG|LOG10|LOOKUPVALUE|LOWER|MAX|MAXA|MAXX|MEDIAN|MEDIANX|MID|MIN|MINA|MINUTE|MINX|MOD|MONTH|MROUND|NATURALINNERJOIN|NATURALLEFTOUTERJOIN|NEXTDAY|NEXTMONTH|NEXTQUARTER|NEXTYEAR|NONVISUAL|NORM\\.DIST|NORM\\.INV|NORM\\.S\\.DIST|NORM\\.S\\.INV|NOT|NOW|ODD|OPENINGBALANCEMONTH|OPENINGBALANCEQUARTER|OPENINGBALANCEYEAR|OR|PARALLELPERIOD|PATH|PATHCONTAINS|PATHITEM|PATHITEMREVERSE|PATHLENGTH|PERCENTILE\\.EXC|PERCENTILE\\.INC|PERCENTILEX\\.EXC|PERCENTILEX\\.INC|PERMUT|PI|POISSON\\.DIST|POWER|PREVIOUSDAY|PREVIOUSMONTH|PREVIOUSQUARTER|PREVIOUSYEAR|PRODUCT|PRODUCTX|QUARTER|QUOTIENT|RADIANS|RAND|RANDBETWEEN|RANK\\.EQ|RANKX|RELATED|RELATEDTABLE|REMOVEFILTERS|REPLACE|REPT|RIGHT|ROLLUP|ROLLUPADDISSUBTOTAL|ROLLUPGROUP|ROLLUPISSUBTOTAL|ROUND|ROUNDDOWN|ROUNDUP|ROW|SAMEPERIODLASTYEAR|SAMPLE|SEARCH|SECOND|SELECTCOLUMNS|SELECTEDMEASURE|SELECTEDMEASUREFORMATSTRING|SELECTEDMEASURENAME|SELECTEDVALUE|SIGN|SIN|SINH|SQRT|SQRTPI|STARTOFMONTH|STARTOFQUARTER|STARTOFYEAR|STDEV\\.P|STDEV\\.S|STDEVX\\.P|STDEVX\\.S|SUBSTITUTE|SUBSTITUTEWITHINDEX|SUM|SUMMARIZE|SUMMARIZECOLUMNS|SUMX|SWITCH|T\\.DIST|T\\.DIST\\.2T|T\\.DIST\\.RT|T\\.INV|T\\.INV\\.2T|TAN|TANH|TIME|TIMEVALUE|TODAY|TOPN|TOPNPERLEVEL|TOPNSKIP|TOTALMTD|TOTALQTD|TOTALYTD|TREATAS|TRIM|TRUE|TRUNC|UNICHAR|UNICODE|UNION|UPPER|USERELATIONSHIP|USERNAME|USEROBJECTID|USERPRINCIPALNAME|UTCNOW|UTCTODAY|VALUE|VALUES|VAR\\.P|VAR\\.S|VARX\\.P|VARX\\.S|WEEKDAY|WEEKNUM|XIRR|XNPV|YEAR|YEARFRAC)(?=\\s*\\()/i,\n    keyword:\n      /\\b(?:DEFINE|EVALUATE|MEASURE|ORDER\\s+BY|RETURN|VAR|START\\s+AT|ASC|DESC)\\b/i,\n    boolean: {\n      pattern: /\\b(?:FALSE|NULL|TRUE)\\b/i,\n      alias: 'constant'\n    },\n    number: /\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+\\b/,\n    operator: /:=|[-+*\\/=^]|&&?|\\|\\||<(?:=>?|<|>)?|>[>=]?|\\b(?:IN|NOT)\\b/i,\n    punctuation: /[;\\[\\](){}`,.]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ndhall.displayName = 'dhall'\ndhall.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function dhall(Prism) {\n  // ABNF grammar:\n  // https://github.com/dhall-lang/dhall-lang/blob/master/standard/dhall.abnf\n\n  Prism.languages.dhall = {\n    // Multi-line comments can be nested. E.g. {- foo {- bar -} -}\n    // The multi-line pattern is essentially this:\n    //   \\{-(?:[^-{]|-(?!\\})|\\{(?!-)|<SELF>)*-\\}\n    comment:\n      /--.*|\\{-(?:[^-{]|-(?!\\})|\\{(?!-)|\\{-(?:[^-{]|-(?!\\})|\\{(?!-))*-\\})*-\\}/,\n    string: {\n      pattern: /\"(?:[^\"\\\\]|\\\\.)*\"|''(?:[^']|'(?!')|'''|''\\$\\{)*''(?!'|\\$)/,\n      greedy: true,\n      inside: {\n        interpolation: {\n          pattern: /\\$\\{[^{}]*\\}/,\n          inside: {\n            expression: {\n              pattern: /(^\\$\\{)[\\s\\S]+(?=\\}$)/,\n              lookbehind: true,\n              alias: 'language-dhall',\n              inside: null // see blow\n            },\n            punctuation: /\\$\\{|\\}/\n          }\n        }\n      }\n    },\n    label: {\n      pattern: /`[^`]*`/,\n      greedy: true\n    },\n    url: {\n      // https://github.com/dhall-lang/dhall-lang/blob/5fde8ef1bead6fb4e999d3c1ffe7044cd019d63a/standard/dhall.abnf#L596\n      pattern:\n        /\\bhttps?:\\/\\/[\\w.:%!$&'*+;=@~-]+(?:\\/[\\w.:%!$&'*+;=@~-]*)*(?:\\?[/?\\w.:%!$&'*+;=@~-]*)?/,\n      greedy: true\n    },\n    env: {\n      // https://github.com/dhall-lang/dhall-lang/blob/5fde8ef1bead6fb4e999d3c1ffe7044cd019d63a/standard/dhall.abnf#L661\n      pattern: /\\benv:(?:(?!\\d)\\w+|\"(?:[^\"\\\\=]|\\\\.)*\")/,\n      greedy: true,\n      inside: {\n        function: /^env/,\n        operator: /^:/,\n        variable: /[\\s\\S]+/\n      }\n    },\n    hash: {\n      // https://github.com/dhall-lang/dhall-lang/blob/5fde8ef1bead6fb4e999d3c1ffe7044cd019d63a/standard/dhall.abnf#L725\n      pattern: /\\bsha256:[\\da-fA-F]{64}\\b/,\n      inside: {\n        function: /sha256/,\n        operator: /:/,\n        number: /[\\da-fA-F]{64}/\n      }\n    },\n    // https://github.com/dhall-lang/dhall-lang/blob/5fde8ef1bead6fb4e999d3c1ffe7044cd019d63a/standard/dhall.abnf#L359\n    keyword:\n      /\\b(?:as|assert|else|forall|if|in|let|merge|missing|then|toMap|using|with)\\b|\\u2200/,\n    builtin: /\\b(?:None|Some)\\b/,\n    boolean: /\\b(?:False|True)\\b/,\n    number:\n      /\\bNaN\\b|-?\\bInfinity\\b|[+-]?\\b(?:0x[\\da-fA-F]+|\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?)\\b/,\n    operator:\n      /\\/\\\\|\\/\\/\\\\\\\\|&&|\\|\\||===|[!=]=|\\/\\/|->|\\+\\+|::|[+*#@=:?<>|\\\\\\u2227\\u2a53\\u2261\\u2afd\\u03bb\\u2192]/,\n    punctuation: /\\.\\.|[{}\\[\\](),./]/,\n    // we'll just assume that every capital word left is a type name\n    'class-name': /\\b[A-Z]\\w*\\b/\n  }\n  Prism.languages.dhall.string.inside.interpolation.inside.expression.inside =\n    Prism.languages.dhall\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorMarkupTemplating from './markup-templating.js'\ndjango.displayName = 'django'\ndjango.aliases = ['jinja2']\n\n/** @param {Refractor} Prism */\nexport default function django(Prism) {\n  Prism.register(refractorMarkupTemplating)\n  // Django/Jinja2 syntax definition for Prism.js <http://prismjs.com> syntax highlighter.\n  // Mostly it works OK but can paint code incorrectly on complex html/template tag combinations.\n\n  ;(function (Prism) {\n    Prism.languages.django = {\n      comment: /^\\{#[\\s\\S]*?#\\}$/,\n      tag: {\n        pattern: /(^\\{%[+-]?\\s*)\\w+/,\n        lookbehind: true,\n        alias: 'keyword'\n      },\n      delimiter: {\n        pattern: /^\\{[{%][+-]?|[+-]?[}%]\\}$/,\n        alias: 'punctuation'\n      },\n      string: {\n        pattern: /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n        greedy: true\n      },\n      filter: {\n        pattern: /(\\|)\\w+/,\n        lookbehind: true,\n        alias: 'function'\n      },\n      test: {\n        pattern: /(\\bis\\s+(?:not\\s+)?)(?!not\\b)\\w+/,\n        lookbehind: true,\n        alias: 'function'\n      },\n      function: /\\b[a-z_]\\w+(?=\\s*\\()/i,\n      keyword:\n        /\\b(?:and|as|by|else|for|if|import|in|is|loop|not|or|recursive|with|without)\\b/,\n      operator: /[-+%=]=?|!=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,\n      number: /\\b\\d+(?:\\.\\d+)?\\b/,\n      boolean: /[Ff]alse|[Nn]one|[Tt]rue/,\n      variable: /\\b\\w+\\b/,\n      punctuation: /[{}[\\](),.:;]/\n    }\n    var pattern = /\\{\\{[\\s\\S]*?\\}\\}|\\{%[\\s\\S]*?%\\}|\\{#[\\s\\S]*?#\\}/g\n    var markupTemplating = Prism.languages['markup-templating']\n    Prism.hooks.add('before-tokenize', function (env) {\n      markupTemplating.buildPlaceholders(env, 'django', pattern)\n    })\n    Prism.hooks.add('after-tokenize', function (env) {\n      markupTemplating.tokenizePlaceholders(env, 'django')\n    })\n\n    // Add an Jinja2 alias\n    Prism.languages.jinja2 = Prism.languages.django\n    Prism.hooks.add('before-tokenize', function (env) {\n      markupTemplating.buildPlaceholders(env, 'jinja2', pattern)\n    })\n    Prism.hooks.add('after-tokenize', function (env) {\n      markupTemplating.tokenizePlaceholders(env, 'jinja2')\n    })\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ndnsZoneFile.displayName = 'dns-zone-file'\ndnsZoneFile.aliases = ['dns-zone']\n\n/** @param {Refractor} Prism */\nexport default function dnsZoneFile(Prism) {\n  Prism.languages['dns-zone-file'] = {\n    comment: /;.*/,\n    string: {\n      pattern: /\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,\n      greedy: true\n    },\n    variable: [\n      {\n        pattern: /(^\\$ORIGIN[ \\t]+)\\S+/m,\n        lookbehind: true\n      },\n      {\n        pattern: /(^|\\s)@(?=\\s|$)/,\n        lookbehind: true\n      }\n    ],\n    keyword: /^\\$(?:INCLUDE|ORIGIN|TTL)(?=\\s|$)/m,\n    class: {\n      // https://tools.ietf.org/html/rfc1035#page-13\n      pattern: /(^|\\s)(?:CH|CS|HS|IN)(?=\\s|$)/,\n      lookbehind: true,\n      alias: 'keyword'\n    },\n    type: {\n      // https://en.wikipedia.org/wiki/List_of_DNS_record_types\n      pattern:\n        /(^|\\s)(?:A|A6|AAAA|AFSDB|APL|ATMA|CAA|CDNSKEY|CDS|CERT|CNAME|DHCID|DLV|DNAME|DNSKEY|DS|EID|GID|GPOS|HINFO|HIP|IPSECKEY|ISDN|KEY|KX|LOC|MAILA|MAILB|MB|MD|MF|MG|MINFO|MR|MX|NAPTR|NB|NBSTAT|NIMLOC|NINFO|NS|NSAP|NSAP-PTR|NSEC|NSEC3|NSEC3PARAM|NULL|NXT|OPENPGPKEY|PTR|PX|RKEY|RP|RRSIG|RT|SIG|SINK|SMIMEA|SOA|SPF|SRV|SSHFP|TA|TKEY|TLSA|TSIG|TXT|UID|UINFO|UNSPEC|URI|WKS|X25)(?=\\s|$)/,\n      lookbehind: true,\n      alias: 'keyword'\n    },\n    punctuation: /[()]/\n  }\n  Prism.languages['dns-zone'] = Prism.languages['dns-zone-file']\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ndocker.displayName = 'docker'\ndocker.aliases = ['dockerfile']\n\n/** @param {Refractor} Prism */\nexport default function docker(Prism) {\n  ;(function (Prism) {\n    // Many of the following regexes will contain negated lookaheads like `[ \\t]+(?![ \\t])`. This is a trick to ensure\n    // that quantifiers behave *atomically*. Atomic quantifiers are necessary to prevent exponential backtracking.\n\n    var spaceAfterBackSlash =\n      /\\\\[\\r\\n](?:\\s|\\\\[\\r\\n]|#.*(?!.))*(?![\\s#]|\\\\[\\r\\n])/.source\n    // At least one space, comment, or line break\n    var space = /(?:[ \\t]+(?![ \\t])(?:<SP_BS>)?|<SP_BS>)/.source.replace(\n      /<SP_BS>/g,\n      function () {\n        return spaceAfterBackSlash\n      }\n    )\n    var string =\n      /\"(?:[^\"\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*\"|'(?:[^'\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*'/\n        .source\n    var option = /--[\\w-]+=(?:<STR>|(?![\"'])(?:[^\\s\\\\]|\\\\.)+)/.source.replace(\n      /<STR>/g,\n      function () {\n        return string\n      }\n    )\n    var stringRule = {\n      pattern: RegExp(string),\n      greedy: true\n    }\n    var commentRule = {\n      pattern: /(^[ \\t]*)#.*/m,\n      lookbehind: true,\n      greedy: true\n    }\n\n    /**\n     * @param {string} source\n     * @param {string} flags\n     * @returns {RegExp}\n     */\n    function re(source, flags) {\n      source = source\n        .replace(/<OPT>/g, function () {\n          return option\n        })\n        .replace(/<SP>/g, function () {\n          return space\n        })\n      return RegExp(source, flags)\n    }\n    Prism.languages.docker = {\n      instruction: {\n        pattern:\n          /(^[ \\t]*)(?:ADD|ARG|CMD|COPY|ENTRYPOINT|ENV|EXPOSE|FROM|HEALTHCHECK|LABEL|MAINTAINER|ONBUILD|RUN|SHELL|STOPSIGNAL|USER|VOLUME|WORKDIR)(?=\\s)(?:\\\\.|[^\\r\\n\\\\])*(?:\\\\$(?:\\s|#.*$)*(?![\\s#])(?:\\\\.|[^\\r\\n\\\\])*)*/im,\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          options: {\n            pattern: re(\n              /(^(?:ONBUILD<SP>)?\\w+<SP>)<OPT>(?:<SP><OPT>)*/.source,\n              'i'\n            ),\n            lookbehind: true,\n            greedy: true,\n            inside: {\n              property: {\n                pattern: /(^|\\s)--[\\w-]+/,\n                lookbehind: true\n              },\n              string: [\n                stringRule,\n                {\n                  pattern: /(=)(?![\"'])(?:[^\\s\\\\]|\\\\.)+/,\n                  lookbehind: true\n                }\n              ],\n              operator: /\\\\$/m,\n              punctuation: /=/\n            }\n          },\n          keyword: [\n            {\n              // https://docs.docker.com/engine/reference/builder/#healthcheck\n              pattern: re(\n                /(^(?:ONBUILD<SP>)?HEALTHCHECK<SP>(?:<OPT><SP>)*)(?:CMD|NONE)\\b/\n                  .source,\n                'i'\n              ),\n              lookbehind: true,\n              greedy: true\n            },\n            {\n              // https://docs.docker.com/engine/reference/builder/#from\n              pattern: re(\n                /(^(?:ONBUILD<SP>)?FROM<SP>(?:<OPT><SP>)*(?!--)[^ \\t\\\\]+<SP>)AS/\n                  .source,\n                'i'\n              ),\n              lookbehind: true,\n              greedy: true\n            },\n            {\n              // https://docs.docker.com/engine/reference/builder/#onbuild\n              pattern: re(/(^ONBUILD<SP>)\\w+/.source, 'i'),\n              lookbehind: true,\n              greedy: true\n            },\n            {\n              pattern: /^\\w+/,\n              greedy: true\n            }\n          ],\n          comment: commentRule,\n          string: stringRule,\n          variable: /\\$(?:\\w+|\\{[^{}\"'\\\\]*\\})/,\n          operator: /\\\\$/m\n        }\n      },\n      comment: commentRule\n    }\n    Prism.languages.dockerfile = Prism.languages.docker\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ndot.displayName = 'dot'\ndot.aliases = ['gv']\n\n/** @param {Refractor} Prism */\nexport default function dot(Prism) {\n  // https://www.graphviz.org/doc/info/lang.html\n\n  ;(function (Prism) {\n    var ID =\n      '(?:' +\n      [\n        // an identifier\n        /[a-zA-Z_\\x80-\\uFFFF][\\w\\x80-\\uFFFF]*/.source,\n        // a number\n        /-?(?:\\.\\d+|\\d+(?:\\.\\d*)?)/.source,\n        // a double-quoted string\n        /\"[^\"\\\\]*(?:\\\\[\\s\\S][^\"\\\\]*)*\"/.source,\n        // HTML-like string\n        /<(?:[^<>]|(?!<!--)<(?:[^<>\"']|\"[^\"]*\"|'[^']*')+>|<!--(?:[^-]|-(?!->))*-->)*>/\n          .source\n      ].join('|') +\n      ')'\n    var IDInside = {\n      markup: {\n        pattern: /(^<)[\\s\\S]+(?=>$)/,\n        lookbehind: true,\n        alias: ['language-markup', 'language-html', 'language-xml'],\n        inside: Prism.languages.markup\n      }\n    }\n\n    /**\n     * @param {string} source\n     * @param {string} flags\n     * @returns {RegExp}\n     */\n    function withID(source, flags) {\n      return RegExp(\n        source.replace(/<ID>/g, function () {\n          return ID\n        }),\n        flags\n      )\n    }\n    Prism.languages.dot = {\n      comment: {\n        pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\/|^#.*/m,\n        greedy: true\n      },\n      'graph-name': {\n        pattern: withID(\n          /(\\b(?:digraph|graph|subgraph)[ \\t\\r\\n]+)<ID>/.source,\n          'i'\n        ),\n        lookbehind: true,\n        greedy: true,\n        alias: 'class-name',\n        inside: IDInside\n      },\n      'attr-value': {\n        pattern: withID(/(=[ \\t\\r\\n]*)<ID>/.source),\n        lookbehind: true,\n        greedy: true,\n        inside: IDInside\n      },\n      'attr-name': {\n        pattern: withID(/([\\[;, \\t\\r\\n])<ID>(?=[ \\t\\r\\n]*=)/.source),\n        lookbehind: true,\n        greedy: true,\n        inside: IDInside\n      },\n      keyword: /\\b(?:digraph|edge|graph|node|strict|subgraph)\\b/i,\n      'compass-point': {\n        pattern: /(:[ \\t\\r\\n]*)(?:[ewc_]|[ns][ew]?)(?![\\w\\x80-\\uFFFF])/,\n        lookbehind: true,\n        alias: 'builtin'\n      },\n      node: {\n        pattern: withID(/(^|[^-.\\w\\x80-\\uFFFF\\\\])<ID>/.source),\n        lookbehind: true,\n        greedy: true,\n        inside: IDInside\n      },\n      operator: /[=:]|-[->]/,\n      punctuation: /[\\[\\]{};,]/\n    }\n    Prism.languages.gv = Prism.languages.dot\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nebnf.displayName = 'ebnf'\nebnf.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function ebnf(Prism) {\n  Prism.languages.ebnf = {\n    comment: /\\(\\*[\\s\\S]*?\\*\\)/,\n    string: {\n      pattern: /\"[^\"\\r\\n]*\"|'[^'\\r\\n]*'/,\n      greedy: true\n    },\n    special: {\n      pattern: /\\?[^?\\r\\n]*\\?/,\n      greedy: true,\n      alias: 'class-name'\n    },\n    definition: {\n      pattern: /^([\\t ]*)[a-z]\\w*(?:[ \\t]+[a-z]\\w*)*(?=\\s*=)/im,\n      lookbehind: true,\n      alias: ['rule', 'keyword']\n    },\n    rule: /\\b[a-z]\\w*(?:[ \\t]+[a-z]\\w*)*\\b/i,\n    punctuation: /\\([:/]|[:/]\\)|[.,;()[\\]{}]/,\n    operator: /[-=|*/!]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\neditorconfig.displayName = 'editorconfig'\neditorconfig.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function editorconfig(Prism) {\n  Prism.languages.editorconfig = {\n    // https://editorconfig-specification.readthedocs.io\n    comment: /[;#].*/,\n    section: {\n      pattern: /(^[ \\t]*)\\[.+\\]/m,\n      lookbehind: true,\n      alias: 'selector',\n      inside: {\n        regex: /\\\\\\\\[\\[\\]{},!?.*]/,\n        // Escape special characters with '\\\\'\n        operator: /[!?]|\\.\\.|\\*{1,2}/,\n        punctuation: /[\\[\\]{},]/\n      }\n    },\n    key: {\n      pattern: /(^[ \\t]*)[^\\s=]+(?=[ \\t]*=)/m,\n      lookbehind: true,\n      alias: 'attr-name'\n    },\n    value: {\n      pattern: /=.*/,\n      alias: 'attr-value',\n      inside: {\n        punctuation: /^=/\n      }\n    }\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\neiffel.displayName = 'eiffel'\neiffel.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function eiffel(Prism) {\n  Prism.languages.eiffel = {\n    comment: /--.*/,\n    string: [\n      // Aligned-verbatim-strings\n      {\n        pattern: /\"([^[]*)\\[[\\s\\S]*?\\]\\1\"/,\n        greedy: true\n      },\n      // Non-aligned-verbatim-strings\n      {\n        pattern: /\"([^{]*)\\{[\\s\\S]*?\\}\\1\"/,\n        greedy: true\n      },\n      // Single-line string\n      {\n        pattern: /\"(?:%(?:(?!\\n)\\s)*\\n\\s*%|%\\S|[^%\"\\r\\n])*\"/,\n        greedy: true\n      }\n    ],\n    // normal char | special char | char code\n    char: /'(?:%.|[^%'\\r\\n])+'/,\n    keyword:\n      /\\b(?:across|agent|alias|all|and|as|assign|attached|attribute|check|class|convert|create|Current|debug|deferred|detachable|do|else|elseif|end|ensure|expanded|export|external|feature|from|frozen|if|implies|inherit|inspect|invariant|like|local|loop|not|note|obsolete|old|once|or|Precursor|redefine|rename|require|rescue|Result|retry|select|separate|some|then|undefine|until|variant|Void|when|xor)\\b/i,\n    boolean: /\\b(?:False|True)\\b/i,\n    // Convention: class-names are always all upper-case characters\n    'class-name': /\\b[A-Z][\\dA-Z_]*\\b/,\n    number: [\n      // hexa | octal | bin\n      /\\b0[xcb][\\da-f](?:_*[\\da-f])*\\b/i,\n      // Decimal\n      /(?:\\b\\d(?:_*\\d)*)?\\.(?:(?:\\d(?:_*\\d)*)?e[+-]?)?\\d(?:_*\\d)*\\b|\\b\\d(?:_*\\d)*\\b\\.?/i\n    ],\n    punctuation: /:=|<<|>>|\\(\\||\\|\\)|->|\\.(?=\\w)|[{}[\\];(),:?]/,\n    operator: /\\\\\\\\|\\|\\.\\.\\||\\.\\.|\\/[~\\/=]?|[><]=?|[-+*^=~]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorJavascript from './javascript.js'\nimport refractorMarkupTemplating from './markup-templating.js'\nejs.displayName = 'ejs'\nejs.aliases = ['eta']\n\n/** @param {Refractor} Prism */\nexport default function ejs(Prism) {\n  Prism.register(refractorJavascript)\n  Prism.register(refractorMarkupTemplating)\n  ;(function (Prism) {\n    Prism.languages.ejs = {\n      delimiter: {\n        pattern: /^<%[-_=]?|[-_]?%>$/,\n        alias: 'punctuation'\n      },\n      comment: /^#[\\s\\S]*/,\n      'language-javascript': {\n        pattern: /[\\s\\S]+/,\n        inside: Prism.languages.javascript\n      }\n    }\n    Prism.hooks.add('before-tokenize', function (env) {\n      var ejsPattern = /<%(?!%)[\\s\\S]+?%>/g\n      Prism.languages['markup-templating'].buildPlaceholders(\n        env,\n        'ejs',\n        ejsPattern\n      )\n    })\n    Prism.hooks.add('after-tokenize', function (env) {\n      Prism.languages['markup-templating'].tokenizePlaceholders(env, 'ejs')\n    })\n    Prism.languages.eta = Prism.languages.ejs\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nelixir.displayName = 'elixir'\nelixir.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function elixir(Prism) {\n  Prism.languages.elixir = {\n    doc: {\n      pattern:\n        /@(?:doc|moduledoc)\\s+(?:(\"\"\"|''')[\\s\\S]*?\\1|(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2)/,\n      inside: {\n        attribute: /^@\\w+/,\n        string: /['\"][\\s\\S]+/\n      }\n    },\n    comment: {\n      pattern: /#.*/,\n      greedy: true\n    },\n    // ~r\"\"\"foo\"\"\" (multi-line), ~r'''foo''' (multi-line), ~r/foo/, ~r|foo|, ~r\"foo\", ~r'foo', ~r(foo), ~r[foo], ~r{foo}, ~r<foo>\n    regex: {\n      pattern:\n        /~[rR](?:(\"\"\"|''')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])+\\1|([\\/|\"'])(?:\\\\.|(?!\\2)[^\\\\\\r\\n])+\\2|\\((?:\\\\.|[^\\\\)\\r\\n])+\\)|\\[(?:\\\\.|[^\\\\\\]\\r\\n])+\\]|\\{(?:\\\\.|[^\\\\}\\r\\n])+\\}|<(?:\\\\.|[^\\\\>\\r\\n])+>)[uismxfr]*/,\n      greedy: true\n    },\n    string: [\n      {\n        // ~s\"\"\"foo\"\"\" (multi-line), ~s'''foo''' (multi-line), ~s/foo/, ~s|foo|, ~s\"foo\", ~s'foo', ~s(foo), ~s[foo], ~s{foo} (with interpolation care), ~s<foo>\n        pattern:\n          /~[cCsSwW](?:(\"\"\"|''')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])+\\1|([\\/|\"'])(?:\\\\.|(?!\\2)[^\\\\\\r\\n])+\\2|\\((?:\\\\.|[^\\\\)\\r\\n])+\\)|\\[(?:\\\\.|[^\\\\\\]\\r\\n])+\\]|\\{(?:\\\\.|#\\{[^}]+\\}|#(?!\\{)|[^#\\\\}\\r\\n])+\\}|<(?:\\\\.|[^\\\\>\\r\\n])+>)[csa]?/,\n        greedy: true,\n        inside: {\n          // See interpolation below\n        }\n      },\n      {\n        pattern: /(\"\"\"|''')[\\s\\S]*?\\1/,\n        greedy: true,\n        inside: {\n          // See interpolation below\n        }\n      },\n      {\n        // Multi-line strings are allowed\n        pattern: /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n        greedy: true,\n        inside: {\n          // See interpolation below\n        }\n      }\n    ],\n    atom: {\n      // Look-behind prevents bad highlighting of the :: operator\n      pattern: /(^|[^:]):\\w+/,\n      lookbehind: true,\n      alias: 'symbol'\n    },\n    module: {\n      pattern: /\\b[A-Z]\\w*\\b/,\n      alias: 'class-name'\n    },\n    // Look-ahead prevents bad highlighting of the :: operator\n    'attr-name': /\\b\\w+\\??:(?!:)/,\n    argument: {\n      // Look-behind prevents bad highlighting of the && operator\n      pattern: /(^|[^&])&\\d+/,\n      lookbehind: true,\n      alias: 'variable'\n    },\n    attribute: {\n      pattern: /@\\w+/,\n      alias: 'variable'\n    },\n    function: /\\b[_a-zA-Z]\\w*[?!]?(?:(?=\\s*(?:\\.\\s*)?\\()|(?=\\/\\d))/,\n    number: /\\b(?:0[box][a-f\\d_]+|\\d[\\d_]*)(?:\\.[\\d_]+)?(?:e[+-]?[\\d_]+)?\\b/i,\n    keyword:\n      /\\b(?:after|alias|and|case|catch|cond|def(?:callback|delegate|exception|impl|macro|module|n|np|p|protocol|struct)?|do|else|end|fn|for|if|import|not|or|quote|raise|require|rescue|try|unless|unquote|use|when)\\b/,\n    boolean: /\\b(?:false|nil|true)\\b/,\n    operator: [\n      /\\bin\\b|&&?|\\|[|>]?|\\\\\\\\|::|\\.\\.\\.?|\\+\\+?|-[->]?|<[-=>]|>=|!==?|\\B!|=(?:==?|[>~])?|[*\\/^]/,\n      {\n        // We don't want to match <<\n        pattern: /([^<])<(?!<)/,\n        lookbehind: true\n      },\n      {\n        // We don't want to match >>\n        pattern: /([^>])>(?!>)/,\n        lookbehind: true\n      }\n    ],\n    punctuation: /<<|>>|[.,%\\[\\]{}()]/\n  }\n  Prism.languages.elixir.string.forEach(function (o) {\n    o.inside = {\n      interpolation: {\n        pattern: /#\\{[^}]+\\}/,\n        inside: {\n          delimiter: {\n            pattern: /^#\\{|\\}$/,\n            alias: 'punctuation'\n          },\n          rest: Prism.languages.elixir\n        }\n      }\n    }\n  })\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nelm.displayName = 'elm'\nelm.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function elm(Prism) {\n  Prism.languages.elm = {\n    comment: /--.*|\\{-[\\s\\S]*?-\\}/,\n    char: {\n      pattern:\n        /'(?:[^\\\\'\\r\\n]|\\\\(?:[abfnrtv\\\\']|\\d+|x[0-9a-fA-F]+|u\\{[0-9a-fA-F]+\\}))'/,\n      greedy: true\n    },\n    string: [\n      {\n        // Multiline strings are wrapped in triple \". Quotes may appear unescaped.\n        pattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n        greedy: true\n      },\n      {\n        pattern: /\"(?:[^\\\\\"\\r\\n]|\\\\.)*\"/,\n        greedy: true\n      }\n    ],\n    'import-statement': {\n      // The imported or hidden names are not included in this import\n      // statement. This is because we want to highlight those exactly like\n      // we do for the names in the program.\n      pattern:\n        /(^[\\t ]*)import\\s+[A-Z]\\w*(?:\\.[A-Z]\\w*)*(?:\\s+as\\s+(?:[A-Z]\\w*)(?:\\.[A-Z]\\w*)*)?(?:\\s+exposing\\s+)?/m,\n      lookbehind: true,\n      inside: {\n        keyword: /\\b(?:as|exposing|import)\\b/\n      }\n    },\n    keyword:\n      /\\b(?:alias|as|case|else|exposing|if|in|infixl|infixr|let|module|of|then|type)\\b/,\n    // These are builtin variables only. Constructors are highlighted later as a constant.\n    builtin:\n      /\\b(?:abs|acos|always|asin|atan|atan2|ceiling|clamp|compare|cos|curry|degrees|e|flip|floor|fromPolar|identity|isInfinite|isNaN|logBase|max|min|negate|never|not|pi|radians|rem|round|sin|sqrt|tan|toFloat|toPolar|toString|truncate|turns|uncurry|xor)\\b/,\n    // decimal integers and floating point numbers | hexadecimal integers\n    number: /\\b(?:\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?|0x[0-9a-f]+)\\b/i,\n    // Most of this is needed because of the meaning of a single '.'.\n    // If it stands alone freely, it is the function composition.\n    // It may also be a separator between a module name and an identifier => no\n    // operator. If it comes together with other special characters it is an\n    // operator too.\n    // Valid operator characters in 0.18: +-/*=.$<>:&|^?%#@~!\n    // Ref: https://groups.google.com/forum/#!msg/elm-dev/0AHSnDdkSkQ/E0SVU70JEQAJ\n    operator: /\\s\\.\\s|[+\\-/*=.$<>:&|^?%#@~!]{2,}|[+\\-/*=$<>:&|^?%#@~!]/,\n    // In Elm, nearly everything is a variable, do not highlight these.\n    hvariable: /\\b(?:[A-Z]\\w*\\.)*[a-z]\\w*\\b/,\n    constant: /\\b(?:[A-Z]\\w*\\.)*[A-Z]\\w*\\b/,\n    punctuation: /[{}[\\]|(),.:]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorLua from './lua.js'\nimport refractorMarkupTemplating from './markup-templating.js'\netlua.displayName = 'etlua'\netlua.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function etlua(Prism) {\n  Prism.register(refractorLua)\n  Prism.register(refractorMarkupTemplating)\n  ;(function (Prism) {\n    Prism.languages.etlua = {\n      delimiter: {\n        pattern: /^<%[-=]?|-?%>$/,\n        alias: 'punctuation'\n      },\n      'language-lua': {\n        pattern: /[\\s\\S]+/,\n        inside: Prism.languages.lua\n      }\n    }\n    Prism.hooks.add('before-tokenize', function (env) {\n      var pattern = /<%[\\s\\S]+?%>/g\n      Prism.languages['markup-templating'].buildPlaceholders(\n        env,\n        'etlua',\n        pattern\n      )\n    })\n    Prism.hooks.add('after-tokenize', function (env) {\n      Prism.languages['markup-templating'].tokenizePlaceholders(env, 'etlua')\n    })\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorMarkupTemplating from './markup-templating.js'\nimport refractorRuby from './ruby.js'\nerb.displayName = 'erb'\nerb.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function erb(Prism) {\n  Prism.register(refractorMarkupTemplating)\n  Prism.register(refractorRuby)\n  ;(function (Prism) {\n    Prism.languages.erb = {\n      delimiter: {\n        pattern: /^(\\s*)<%=?|%>(?=\\s*$)/,\n        lookbehind: true,\n        alias: 'punctuation'\n      },\n      ruby: {\n        pattern: /\\s*\\S[\\s\\S]*/,\n        alias: 'language-ruby',\n        inside: Prism.languages.ruby\n      }\n    }\n    Prism.hooks.add('before-tokenize', function (env) {\n      var erbPattern =\n        /<%=?(?:[^\\r\\n]|[\\r\\n](?!=begin)|[\\r\\n]=begin\\s(?:[^\\r\\n]|[\\r\\n](?!=end))*[\\r\\n]=end)+?%>/g\n      Prism.languages['markup-templating'].buildPlaceholders(\n        env,\n        'erb',\n        erbPattern\n      )\n    })\n    Prism.hooks.add('after-tokenize', function (env) {\n      Prism.languages['markup-templating'].tokenizePlaceholders(env, 'erb')\n    })\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nerlang.displayName = 'erlang'\nerlang.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function erlang(Prism) {\n  Prism.languages.erlang = {\n    comment: /%.+/,\n    string: {\n      pattern: /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/,\n      greedy: true\n    },\n    'quoted-function': {\n      pattern: /'(?:\\\\.|[^\\\\'\\r\\n])+'(?=\\()/,\n      alias: 'function'\n    },\n    'quoted-atom': {\n      pattern: /'(?:\\\\.|[^\\\\'\\r\\n])+'/,\n      alias: 'atom'\n    },\n    boolean: /\\b(?:false|true)\\b/,\n    keyword: /\\b(?:after|begin|case|catch|end|fun|if|of|receive|try|when)\\b/,\n    number: [\n      /\\$\\\\?./,\n      /\\b\\d+#[a-z0-9]+/i,\n      /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i\n    ],\n    function: /\\b[a-z][\\w@]*(?=\\()/,\n    variable: {\n      // Look-behind is used to prevent wrong highlighting of atoms containing \"@\"\n      pattern: /(^|[^@])(?:\\b|\\?)[A-Z_][\\w@]*/,\n      lookbehind: true\n    },\n    operator: [\n      /[=\\/<>:]=|=[:\\/]=|\\+\\+?|--?|[=*\\/!]|\\b(?:and|andalso|band|bnot|bor|bsl|bsr|bxor|div|not|or|orelse|rem|xor)\\b/,\n      {\n        // We don't want to match <<\n        pattern: /(^|[^<])<(?!<)/,\n        lookbehind: true\n      },\n      {\n        // We don't want to match >>\n        pattern: /(^|[^>])>(?!>)/,\n        lookbehind: true\n      }\n    ],\n    atom: /\\b[a-z][\\w@]*/,\n    punctuation: /[()[\\]{}:;,.#|]|<<|>>/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nexcelFormula.displayName = 'excel-formula'\nexcelFormula.aliases = ['xls', 'xlsx']\n\n/** @param {Refractor} Prism */\nexport default function excelFormula(Prism) {\n  Prism.languages['excel-formula'] = {\n    comment: {\n      pattern: /(\\bN\\(\\s*)\"(?:[^\"]|\"\")*\"(?=\\s*\\))/i,\n      lookbehind: true,\n      greedy: true\n    },\n    string: {\n      pattern: /\"(?:[^\"]|\"\")*\"(?!\")/,\n      greedy: true\n    },\n    reference: {\n      // https://www.ablebits.com/office-addins-blog/2015/12/08/excel-reference-another-sheet-workbook/\n\n      // Sales!B2\n      // 'Winter sales'!B2\n      // [Sales.xlsx]Jan!B2:B5\n      // D:\\Reports\\[Sales.xlsx]Jan!B2:B5\n      // '[Sales.xlsx]Jan sales'!B2:B5\n      // 'D:\\Reports\\[Sales.xlsx]Jan sales'!B2:B5\n\n      pattern:\n        /(?:'[^']*'|(?:[^\\s()[\\]{}<>*?\"';,$&]*\\[[^^\\s()[\\]{}<>*?\"']+\\])?\\w+)!/,\n      greedy: true,\n      alias: 'string',\n      inside: {\n        operator: /!$/,\n        punctuation: /'/,\n        sheet: {\n          pattern: /[^[\\]]+$/,\n          alias: 'function'\n        },\n        file: {\n          pattern: /\\[[^[\\]]+\\]$/,\n          inside: {\n            punctuation: /[[\\]]/\n          }\n        },\n        path: /[\\s\\S]+/\n      }\n    },\n    'function-name': {\n      pattern: /\\b[A-Z]\\w*(?=\\()/i,\n      alias: 'builtin'\n    },\n    range: {\n      pattern:\n        /\\$?\\b(?:[A-Z]+\\$?\\d+:\\$?[A-Z]+\\$?\\d+|[A-Z]+:\\$?[A-Z]+|\\d+:\\$?\\d+)\\b/i,\n      alias: 'selector',\n      inside: {\n        operator: /:/,\n        cell: /\\$?[A-Z]+\\$?\\d+/i,\n        column: /\\$?[A-Z]+/i,\n        row: /\\$?\\d+/\n      }\n    },\n    cell: {\n      // Excel is case insensitive, so the string \"foo1\" could be either a variable or a cell.\n      // To combat this, we match cells case insensitive, if the contain at least one \"$\", and case sensitive otherwise.\n      pattern: /\\b[A-Z]+\\d+\\b|\\$[A-Za-z]+\\$?\\d+\\b|\\b[A-Za-z]+\\$\\d+\\b/,\n      alias: 'selector'\n    },\n    number: /(?:\\b\\d+(?:\\.\\d+)?|\\B\\.\\d+)(?:e[+-]?\\d+)?\\b/i,\n    boolean: /\\b(?:FALSE|TRUE)\\b/i,\n    operator: /[-+*/^%=&,]|<[=>]?|>=?/,\n    punctuation: /[[\\]();{}|]/\n  }\n  Prism.languages['xlsx'] = Prism.languages['xls'] =\n    Prism.languages['excel-formula']\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\nfsharp.displayName = 'fsharp'\nfsharp.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function fsharp(Prism) {\n  Prism.register(refractorClike)\n  Prism.languages.fsharp = Prism.languages.extend('clike', {\n    comment: [\n      {\n        pattern: /(^|[^\\\\])\\(\\*(?!\\))[\\s\\S]*?\\*\\)/,\n        lookbehind: true,\n        greedy: true\n      },\n      {\n        pattern: /(^|[^\\\\:])\\/\\/.*/,\n        lookbehind: true,\n        greedy: true\n      }\n    ],\n    string: {\n      pattern: /(?:\"\"\"[\\s\\S]*?\"\"\"|@\"(?:\"\"|[^\"])*\"|\"(?:\\\\[\\s\\S]|[^\\\\\"])*\")B?/,\n      greedy: true\n    },\n    'class-name': {\n      pattern:\n        /(\\b(?:exception|inherit|interface|new|of|type)\\s+|\\w\\s*:\\s*|\\s:\\??>\\s*)[.\\w]+\\b(?:\\s*(?:->|\\*)\\s*[.\\w]+\\b)*(?!\\s*[:.])/,\n      lookbehind: true,\n      inside: {\n        operator: /->|\\*/,\n        punctuation: /\\./\n      }\n    },\n    keyword:\n      /\\b(?:let|return|use|yield)(?:!\\B|\\b)|\\b(?:abstract|and|as|asr|assert|atomic|base|begin|break|checked|class|component|const|constraint|constructor|continue|default|delegate|do|done|downcast|downto|eager|elif|else|end|event|exception|extern|external|false|finally|fixed|for|fun|function|functor|global|if|in|include|inherit|inline|interface|internal|land|lazy|lor|lsl|lsr|lxor|match|member|method|mixin|mod|module|mutable|namespace|new|not|null|object|of|open|or|override|parallel|private|process|protected|public|pure|rec|sealed|select|sig|static|struct|tailcall|then|to|trait|true|try|type|upcast|val|virtual|void|volatile|when|while|with)\\b/,\n    number: [\n      /\\b0x[\\da-fA-F]+(?:LF|lf|un)?\\b/,\n      /\\b0b[01]+(?:uy|y)?\\b/,\n      /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[fm]|e[+-]?\\d+)?\\b/i,\n      /\\b\\d+(?:[IlLsy]|UL|u[lsy]?)?\\b/\n    ],\n    operator:\n      /([<>~&^])\\1\\1|([*.:<>&])\\2|<-|->|[!=:]=|<?\\|{1,3}>?|\\??(?:<=|>=|<>|[-+*/%=<>])\\??|[!?^&]|~[+~-]|:>|:\\?>?/\n  })\n  Prism.languages.insertBefore('fsharp', 'keyword', {\n    preprocessor: {\n      pattern: /(^[\\t ]*)#.*/m,\n      lookbehind: true,\n      alias: 'property',\n      inside: {\n        directive: {\n          pattern: /(^#)\\b(?:else|endif|if|light|line|nowarn)\\b/,\n          lookbehind: true,\n          alias: 'keyword'\n        }\n      }\n    }\n  })\n  Prism.languages.insertBefore('fsharp', 'punctuation', {\n    'computation-expression': {\n      pattern: /\\b[_a-z]\\w*(?=\\s*\\{)/i,\n      alias: 'keyword'\n    }\n  })\n  Prism.languages.insertBefore('fsharp', 'string', {\n    annotation: {\n      pattern: /\\[<.+?>\\]/,\n      greedy: true,\n      inside: {\n        punctuation: /^\\[<|>\\]$/,\n        'class-name': {\n          pattern: /^\\w+$|(^|;\\s*)[A-Z]\\w*(?=\\()/,\n          lookbehind: true\n        },\n        'annotation-content': {\n          pattern: /[\\s\\S]+/,\n          inside: Prism.languages.fsharp\n        }\n      }\n    },\n    char: {\n      pattern:\n        /'(?:[^\\\\']|\\\\(?:.|\\d{3}|x[a-fA-F\\d]{2}|u[a-fA-F\\d]{4}|U[a-fA-F\\d]{8}))'B?/,\n      greedy: true\n    }\n  })\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nfactor.displayName = 'factor'\nfactor.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function factor(Prism) {\n  ;(function (Prism) {\n    var comment_inside = {\n      function:\n        /\\b(?:BUGS?|FIX(?:MES?)?|NOTES?|TODOS?|XX+|HACKS?|WARN(?:ING)?|\\?{2,}|!{2,})\\b/\n    }\n    var string_inside = {\n      number: /\\\\[^\\s']|%\\w/\n    }\n    var factor = {\n      comment: [\n        {\n          // ! single-line exclamation point comments with whitespace after/around the !\n          pattern: /(^|\\s)(?:! .*|!$)/,\n          lookbehind: true,\n          inside: comment_inside\n        } /* from basis/multiline: */,\n        {\n          // /* comment */, /* comment*/\n          pattern: /(^|\\s)\\/\\*\\s[\\s\\S]*?\\*\\/(?=\\s|$)/,\n          lookbehind: true,\n          greedy: true,\n          inside: comment_inside\n        },\n        {\n          // ![[ comment ]] , ![===[ comment]===]\n          pattern: /(^|\\s)!\\[(={0,6})\\[\\s[\\s\\S]*?\\]\\2\\](?=\\s|$)/,\n          lookbehind: true,\n          greedy: true,\n          inside: comment_inside\n        }\n      ],\n      number: [\n        {\n          // basic base 10 integers 9, -9\n          pattern: /(^|\\s)[+-]?\\d+(?=\\s|$)/,\n          lookbehind: true\n        },\n        {\n          // base prefix integers 0b010 0o70 0xad 0d10 0XAD -0xa9\n          pattern: /(^|\\s)[+-]?0(?:b[01]+|o[0-7]+|d\\d+|x[\\dA-F]+)(?=\\s|$)/i,\n          lookbehind: true\n        },\n        {\n          // fractional ratios 1/5 -1/5 and the literal float approximations 1/5. -1/5.\n          pattern: /(^|\\s)[+-]?\\d+\\/\\d+\\.?(?=\\s|$)/,\n          lookbehind: true\n        },\n        {\n          // positive mixed numbers 23+1/5 +23+1/5\n          pattern: /(^|\\s)\\+?\\d+\\+\\d+\\/\\d+(?=\\s|$)/,\n          lookbehind: true\n        },\n        {\n          // negative mixed numbers -23-1/5\n          pattern: /(^|\\s)-\\d+-\\d+\\/\\d+(?=\\s|$)/,\n          lookbehind: true\n        },\n        {\n          // basic decimal floats -0.01 0. .0 .1 -.1 -1. -12.13 +12.13\n          // and scientific notation with base 10 exponents 3e4 3e-4 .3e-4\n          pattern:\n            /(^|\\s)[+-]?(?:\\d*\\.\\d+|\\d+\\.\\d*|\\d+)(?:e[+-]?\\d+)?(?=\\s|$)/i,\n          lookbehind: true\n        },\n        {\n          // NAN literal syntax NAN: 80000deadbeef, NAN: a\n          pattern: /(^|\\s)NAN:\\s+[\\da-fA-F]+(?=\\s|$)/,\n          lookbehind: true\n        },\n        {\n          /*\nbase prefix floats 0x1.0p3 (8.0) 0b1.010p2 (5.0) 0x1.p1 0b1.11111111p11111...\n\"The normalized hex form \u00B10x1.MMMMMMMMMMMMM[pP]\u00B1EEEE allows any floating-point number to be specified precisely.\nThe values of MMMMMMMMMMMMM and EEEE map directly to the mantissa and exponent fields of the binary IEEE 754 representation.\"\n<https://docs.factorcode.org/content/article-syntax-floats.html>\n*/\n          pattern:\n            /(^|\\s)[+-]?0(?:b1\\.[01]*|o1\\.[0-7]*|d1\\.\\d*|x1\\.[\\dA-F]*)p\\d+(?=\\s|$)/i,\n          lookbehind: true\n        }\n      ],\n      // R/ regexp?\\/\\\\/\n      regexp: {\n        pattern:\n          /(^|\\s)R\\/\\s(?:\\\\\\S|[^\\\\/])*\\/(?:[idmsr]*|[idmsr]+-[idmsr]+)(?=\\s|$)/,\n        lookbehind: true,\n        alias: 'number',\n        inside: {\n          variable: /\\\\\\S/,\n          keyword: /[+?*\\[\\]^$(){}.|]/,\n          operator: {\n            pattern: /(\\/)[idmsr]+(?:-[idmsr]+)?/,\n            lookbehind: true\n          }\n        }\n      },\n      boolean: {\n        pattern: /(^|\\s)[tf](?=\\s|$)/,\n        lookbehind: true\n      },\n      // SBUF\" asd\", URL\" ://...\", P\" /etc/\"\n      'custom-string': {\n        pattern: /(^|\\s)[A-Z0-9\\-]+\"\\s(?:\\\\\\S|[^\"\\\\])*\"/,\n        lookbehind: true,\n        greedy: true,\n        alias: 'string',\n        inside: {\n          number: /\\\\\\S|%\\w|\\//\n        }\n      },\n      'multiline-string': [\n        {\n          // STRING: name \\n content \\n ; -> CONSTANT: name \"content\" (symbol)\n          pattern: /(^|\\s)STRING:\\s+\\S+(?:\\n|\\r\\n).*(?:\\n|\\r\\n)\\s*;(?=\\s|$)/,\n          lookbehind: true,\n          greedy: true,\n          alias: 'string',\n          inside: {\n            number: string_inside.number,\n            // trailing semicolon on its own line\n            'semicolon-or-setlocal': {\n              pattern: /([\\r\\n][ \\t]*);(?=\\s|$)/,\n              lookbehind: true,\n              alias: 'function'\n            }\n          }\n        },\n        {\n          // HEREDOC: marker \\n content \\n marker ; -> \"content\" (immediate)\n          pattern: /(^|\\s)HEREDOC:\\s+\\S+(?:\\n|\\r\\n).*(?:\\n|\\r\\n)\\s*\\S+(?=\\s|$)/,\n          lookbehind: true,\n          greedy: true,\n          alias: 'string',\n          inside: string_inside\n        },\n        {\n          // [[ string ]], [==[ string]==]\n          pattern: /(^|\\s)\\[(={0,6})\\[\\s[\\s\\S]*?\\]\\2\\](?=\\s|$)/,\n          lookbehind: true,\n          greedy: true,\n          alias: 'string',\n          inside: string_inside\n        }\n      ],\n      'special-using': {\n        pattern: /(^|\\s)USING:(?:\\s\\S+)*(?=\\s+;(?:\\s|$))/,\n        lookbehind: true,\n        alias: 'function',\n        inside: {\n          // this is essentially a regex for vocab names, which i don't want to specify\n          // but the USING: gets picked up as a vocab name\n          string: {\n            pattern: /(\\s)[^:\\s]+/,\n            lookbehind: true\n          }\n        }\n      },\n      /* this description of stack effect literal syntax is not complete and not as specific as theoretically possible\ntrying to do better is more work and regex-computation-time than it's worth though.\n- we'd like to have the \"delimiter\" parts of the stack effect [ (, --, and ) ] be a different (less-important or comment-like) colour to the stack effect contents\n- we'd like if nested stack effects were treated as such rather than just appearing flat (with `inside`)\n- we'd like if the following variable name conventions were recognised specifically:\nspecial row variables = ..a b..\ntype and stack effect annotations end with a colon = ( quot: ( a: ( -- ) -- b ) -- x ), ( x: number -- )\nword throws unconditional error = *\nany other word-like variable name = a ? q' etc\nhttps://docs.factorcode.org/content/article-effects.html\nthese are pretty complicated to highlight properly without a real parser, and therefore out of scope\nthe old pattern, which may be later useful, was: (^|\\s)(?:call|execute|eval)?\\((?:\\s+[^\"\\r\\n\\t ]\\S*)*?\\s+--(?:\\s+[^\"\\n\\t ]\\S*)*?\\s+\\)(?=\\s|$)\n*/\n\n      // current solution is not great\n      'stack-effect-delimiter': [\n        {\n          // opening parenthesis\n          pattern: /(^|\\s)(?:call|eval|execute)?\\((?=\\s)/,\n          lookbehind: true,\n          alias: 'operator'\n        },\n        {\n          // middle --\n          pattern: /(\\s)--(?=\\s)/,\n          lookbehind: true,\n          alias: 'operator'\n        },\n        {\n          // closing parenthesis\n          pattern: /(\\s)\\)(?=\\s|$)/,\n          lookbehind: true,\n          alias: 'operator'\n        }\n      ],\n      combinators: {\n        pattern: null,\n        lookbehind: true,\n        alias: 'keyword'\n      },\n      'kernel-builtin': {\n        pattern: null,\n        lookbehind: true,\n        alias: 'variable'\n      },\n      'sequences-builtin': {\n        pattern: null,\n        lookbehind: true,\n        alias: 'variable'\n      },\n      'math-builtin': {\n        pattern: null,\n        lookbehind: true,\n        alias: 'variable'\n      },\n      'constructor-word': {\n        // <array> but not <=>\n        pattern: /(^|\\s)<(?!=+>|-+>)\\S+>(?=\\s|$)/,\n        lookbehind: true,\n        alias: 'keyword'\n      },\n      'other-builtin-syntax': {\n        pattern: null,\n        lookbehind: true,\n        alias: 'operator'\n      },\n      /*\nfull list of supported word naming conventions: (the convention appears outside of the [brackets])\nset-[x]\nchange-[x]\nwith-[x]\nnew-[x]\n>[string]\n[base]>\n[string]>[number]\n+[symbol]+\n[boolean-word]?\n?[of]\n[slot-reader]>>\n>>[slot-setter]\n[slot-writer]<<\n([implementation-detail])\n[mutater]!\n[variant]*\n[prettyprint].\n$[help-markup]\n<constructors>, SYNTAX:, etc are supported by their own patterns.\n`with` and `new` from `kernel` are their own builtins.\nsee <https://docs.factorcode.org/content/article-conventions.html>\n*/\n      'conventionally-named-word': {\n        pattern:\n          /(^|\\s)(?!\")(?:(?:change|new|set|with)-\\S+|\\$\\S+|>[^>\\s]+|[^:>\\s]+>|[^>\\s]+>[^>\\s]+|\\+[^+\\s]+\\+|[^?\\s]+\\?|\\?[^?\\s]+|[^>\\s]+>>|>>[^>\\s]+|[^<\\s]+<<|\\([^()\\s]+\\)|[^!\\s]+!|[^*\\s]\\S*\\*|[^.\\s]\\S*\\.)(?=\\s|$)/,\n        lookbehind: true,\n        alias: 'keyword'\n      },\n      'colon-syntax': {\n        pattern: /(^|\\s)(?:[A-Z0-9\\-]+#?)?:{1,2}\\s+(?:;\\S+|(?!;)\\S+)(?=\\s|$)/,\n        lookbehind: true,\n        greedy: true,\n        alias: 'function'\n      },\n      'semicolon-or-setlocal': {\n        pattern: /(\\s)(?:;|:>)(?=\\s|$)/,\n        lookbehind: true,\n        alias: 'function'\n      },\n      // do not highlight leading } or trailing X{ at the begin/end of the file as it's invalid syntax\n      'curly-brace-literal-delimiter': [\n        {\n          // opening\n          pattern: /(^|\\s)[a-z]*\\{(?=\\s)/i,\n          lookbehind: true,\n          alias: 'operator'\n        },\n        {\n          // closing\n          pattern: /(\\s)\\}(?=\\s|$)/,\n          lookbehind: true,\n          alias: 'operator'\n        }\n      ],\n      // do not highlight leading ] or trailing [ at the begin/end of the file as it's invalid syntax\n      'quotation-delimiter': [\n        {\n          // opening\n          pattern: /(^|\\s)\\[(?=\\s)/,\n          lookbehind: true,\n          alias: 'operator'\n        },\n        {\n          // closing\n          pattern: /(\\s)\\](?=\\s|$)/,\n          lookbehind: true,\n          alias: 'operator'\n        }\n      ],\n      'normal-word': {\n        pattern: /(^|\\s)[^\"\\s]\\S*(?=\\s|$)/,\n        lookbehind: true\n      },\n      /*\nbasic first-class string \"a\"\nwith escaped double-quote \"a\\\"\"\nescaped backslash \"\\\\\"\nand general escapes since Factor has so many \"\\N\"\nsyntax that works in the reference implementation that isn't fully\nsupported because it's an implementation detail:\n\"string 1\"\"string 2\" -> 2 strings (works anyway)\n\"string\"5 -> string, 5\n\"string\"[ ] -> string, quotation\n{ \"a\"} -> array<string>\nthe rest of those examples all properly recognise the string, but not\nthe other object (number, quotation, etc)\nthis is fine for a regex-only implementation.\n*/\n      string: {\n        pattern: /\"(?:\\\\\\S|[^\"\\\\])*\"/,\n        greedy: true,\n        inside: string_inside\n      }\n    }\n    var escape = function (str) {\n      return (str + '').replace(/([.?*+\\^$\\[\\]\\\\(){}|\\-])/g, '\\\\$1')\n    }\n    var arrToWordsRegExp = function (arr) {\n      return new RegExp('(^|\\\\s)(?:' + arr.map(escape).join('|') + ')(?=\\\\s|$)')\n    }\n    var builtins = {\n      'kernel-builtin': [\n        'or',\n        '2nipd',\n        '4drop',\n        'tuck',\n        'wrapper',\n        'nip',\n        'wrapper?',\n        'callstack>array',\n        'die',\n        'dupd',\n        'callstack',\n        'callstack?',\n        '3dup',\n        'hashcode',\n        'pick',\n        '4nip',\n        'build',\n        '>boolean',\n        'nipd',\n        'clone',\n        '5nip',\n        'eq?',\n        '?',\n        '=',\n        'swapd',\n        '2over',\n        'clear',\n        '2dup',\n        'get-retainstack',\n        'not',\n        'tuple?',\n        'dup',\n        '3nipd',\n        'call',\n        '-rotd',\n        'object',\n        'drop',\n        'assert=',\n        'assert?',\n        '-rot',\n        'execute',\n        'boa',\n        'get-callstack',\n        'curried?',\n        '3drop',\n        'pickd',\n        'overd',\n        'over',\n        'roll',\n        '3nip',\n        'swap',\n        'and',\n        '2nip',\n        'rotd',\n        'throw',\n        '(clone)',\n        'hashcode*',\n        'spin',\n        'reach',\n        '4dup',\n        'equal?',\n        'get-datastack',\n        'assert',\n        '2drop',\n        '<wrapper>',\n        'boolean?',\n        'identity-hashcode',\n        'identity-tuple?',\n        'null',\n        'composed?',\n        'new',\n        '5drop',\n        'rot',\n        '-roll',\n        'xor',\n        'identity-tuple',\n        'boolean'\n      ],\n      'other-builtin-syntax': [\n        // syntax\n        '=======',\n        'recursive',\n        'flushable',\n        '>>',\n        '<<<<<<',\n        'M\\\\',\n        'B',\n        'PRIVATE>',\n        '\\\\',\n        '======',\n        'final',\n        'inline',\n        'delimiter',\n        'deprecated',\n        '<PRIVATE',\n        '>>>>>>',\n        '<<<<<<<',\n        'parse-complex',\n        'malformed-complex',\n        'read-only',\n        '>>>>>>>',\n        'call-next-method',\n        '<<',\n        'foldable',\n        // literals\n        '$',\n        '$[',\n        '${'\n      ],\n      'sequences-builtin': [\n        'member-eq?',\n        'mismatch',\n        'append',\n        'assert-sequence=',\n        'longer',\n        'repetition',\n        'clone-like',\n        '3sequence',\n        'assert-sequence?',\n        'last-index-from',\n        'reversed',\n        'index-from',\n        'cut*',\n        'pad-tail',\n        'join-as',\n        'remove-eq!',\n        'concat-as',\n        'but-last',\n        'snip',\n        'nths',\n        'nth',\n        'sequence',\n        'longest',\n        'slice?',\n        '<slice>',\n        'remove-nth',\n        'tail-slice',\n        'empty?',\n        'tail*',\n        'member?',\n        'virtual-sequence?',\n        'set-length',\n        'drop-prefix',\n        'iota',\n        'unclip',\n        'bounds-error?',\n        'unclip-last-slice',\n        'non-negative-integer-expected',\n        'non-negative-integer-expected?',\n        'midpoint@',\n        'longer?',\n        '?set-nth',\n        '?first',\n        'rest-slice',\n        'prepend-as',\n        'prepend',\n        'fourth',\n        'sift',\n        'subseq-start',\n        'new-sequence',\n        '?last',\n        'like',\n        'first4',\n        '1sequence',\n        'reverse',\n        'slice',\n        'virtual@',\n        'repetition?',\n        'set-last',\n        'index',\n        '4sequence',\n        'max-length',\n        'set-second',\n        'immutable-sequence',\n        'first2',\n        'first3',\n        'supremum',\n        'unclip-slice',\n        'suffix!',\n        'insert-nth',\n        'tail',\n        '3append',\n        'short',\n        'suffix',\n        'concat',\n        'flip',\n        'immutable?',\n        'reverse!',\n        '2sequence',\n        'sum',\n        'delete-all',\n        'indices',\n        'snip-slice',\n        '<iota>',\n        'check-slice',\n        'sequence?',\n        'head',\n        'append-as',\n        'halves',\n        'sequence=',\n        'collapse-slice',\n        '?second',\n        'slice-error?',\n        'product',\n        'bounds-check?',\n        'bounds-check',\n        'immutable',\n        'virtual-exemplar',\n        'harvest',\n        'remove',\n        'pad-head',\n        'last',\n        'set-fourth',\n        'cartesian-product',\n        'remove-eq',\n        'shorten',\n        'shorter',\n        'reversed?',\n        'shorter?',\n        'shortest',\n        'head-slice',\n        'pop*',\n        'tail-slice*',\n        'but-last-slice',\n        'iota?',\n        'append!',\n        'cut-slice',\n        'new-resizable',\n        'head-slice*',\n        'sequence-hashcode',\n        'pop',\n        'set-nth',\n        '?nth',\n        'second',\n        'join',\n        'immutable-sequence?',\n        '<reversed>',\n        '3append-as',\n        'virtual-sequence',\n        'subseq?',\n        'remove-nth!',\n        'length',\n        'last-index',\n        'lengthen',\n        'assert-sequence',\n        'copy',\n        'move',\n        'third',\n        'first',\n        'tail?',\n        'set-first',\n        'prefix',\n        'bounds-error',\n        '<repetition>',\n        'exchange',\n        'surround',\n        'cut',\n        'min-length',\n        'set-third',\n        'push-all',\n        'head?',\n        'subseq-start-from',\n        'delete-slice',\n        'rest',\n        'sum-lengths',\n        'head*',\n        'infimum',\n        'remove!',\n        'glue',\n        'slice-error',\n        'subseq',\n        'push',\n        'replace-slice',\n        'subseq-as',\n        'unclip-last'\n      ],\n      'math-builtin': [\n        'number=',\n        'next-power-of-2',\n        '?1+',\n        'fp-special?',\n        'imaginary-part',\n        'float>bits',\n        'number?',\n        'fp-infinity?',\n        'bignum?',\n        'fp-snan?',\n        'denominator',\n        'gcd',\n        '*',\n        '+',\n        'fp-bitwise=',\n        '-',\n        'u>=',\n        '/',\n        '>=',\n        'bitand',\n        'power-of-2?',\n        'log2-expects-positive',\n        'neg?',\n        '<',\n        'log2',\n        '>',\n        'integer?',\n        'number',\n        'bits>double',\n        '2/',\n        'zero?',\n        'bits>float',\n        'float?',\n        'shift',\n        'ratio?',\n        'rect>',\n        'even?',\n        'ratio',\n        'fp-sign',\n        'bitnot',\n        '>fixnum',\n        'complex?',\n        '/i',\n        'integer>fixnum',\n        '/f',\n        'sgn',\n        '>bignum',\n        'next-float',\n        'u<',\n        'u>',\n        'mod',\n        'recip',\n        'rational',\n        '>float',\n        '2^',\n        'integer',\n        'fixnum?',\n        'neg',\n        'fixnum',\n        'sq',\n        'bignum',\n        '>rect',\n        'bit?',\n        'fp-qnan?',\n        'simple-gcd',\n        'complex',\n        '<fp-nan>',\n        'real',\n        '>fraction',\n        'double>bits',\n        'bitor',\n        'rem',\n        'fp-nan-payload',\n        'real-part',\n        'log2-expects-positive?',\n        'prev-float',\n        'align',\n        'unordered?',\n        'float',\n        'fp-nan?',\n        'abs',\n        'bitxor',\n        'integer>fixnum-strict',\n        'u<=',\n        'odd?',\n        '<=',\n        '/mod',\n        '>integer',\n        'real?',\n        'rational?',\n        'numerator'\n      ]\n      // that's all for now\n    }\n    Object.keys(builtins).forEach(function (k) {\n      factor[k].pattern = arrToWordsRegExp(builtins[k])\n    })\n    var combinators = [\n      // kernel\n      '2bi',\n      'while',\n      '2tri',\n      'bi*',\n      '4dip',\n      'both?',\n      'same?',\n      'tri@',\n      'curry',\n      'prepose',\n      '3bi',\n      '?if',\n      'tri*',\n      '2keep',\n      '3keep',\n      'curried',\n      '2keepd',\n      'when',\n      '2bi*',\n      '2tri*',\n      '4keep',\n      'bi@',\n      'keepdd',\n      'do',\n      'unless*',\n      'tri-curry',\n      'if*',\n      'loop',\n      'bi-curry*',\n      'when*',\n      '2bi@',\n      '2tri@',\n      'with',\n      '2with',\n      'either?',\n      'bi',\n      'until',\n      '3dip',\n      '3curry',\n      'tri-curry*',\n      'tri-curry@',\n      'bi-curry',\n      'keepd',\n      'compose',\n      '2dip',\n      'if',\n      '3tri',\n      'unless',\n      'tuple',\n      'keep',\n      '2curry',\n      'tri',\n      'most',\n      'while*',\n      'dip',\n      'composed',\n      'bi-curry@',\n      // sequences\n      'find-last-from',\n      'trim-head-slice',\n      'map-as',\n      'each-from',\n      'none?',\n      'trim-tail',\n      'partition',\n      'if-empty',\n      'accumulate*',\n      'reject!',\n      'find-from',\n      'accumulate-as',\n      'collector-for-as',\n      'reject',\n      'map',\n      'map-sum',\n      'accumulate!',\n      '2each-from',\n      'follow',\n      'supremum-by',\n      'map!',\n      'unless-empty',\n      'collector',\n      'padding',\n      'reduce-index',\n      'replicate-as',\n      'infimum-by',\n      'trim-tail-slice',\n      'count',\n      'find-index',\n      'filter',\n      'accumulate*!',\n      'reject-as',\n      'map-integers',\n      'map-find',\n      'reduce',\n      'selector',\n      'interleave',\n      '2map',\n      'filter-as',\n      'binary-reduce',\n      'map-index-as',\n      'find',\n      'produce',\n      'filter!',\n      'replicate',\n      'cartesian-map',\n      'cartesian-each',\n      'find-index-from',\n      'map-find-last',\n      '3map-as',\n      '3map',\n      'find-last',\n      'selector-as',\n      '2map-as',\n      '2map-reduce',\n      'accumulate',\n      'each',\n      'each-index',\n      'accumulate*-as',\n      'when-empty',\n      'all?',\n      'collector-as',\n      'push-either',\n      'new-like',\n      'collector-for',\n      '2selector',\n      'push-if',\n      '2all?',\n      'map-reduce',\n      '3each',\n      'any?',\n      'trim-slice',\n      '2reduce',\n      'change-nth',\n      'produce-as',\n      '2each',\n      'trim',\n      'trim-head',\n      'cartesian-find',\n      'map-index',\n      // math\n      'if-zero',\n      'each-integer',\n      'unless-zero',\n      '(find-integer)',\n      'when-zero',\n      'find-last-integer',\n      '(all-integers?)',\n      'times',\n      '(each-integer)',\n      'find-integer',\n      'all-integers?',\n      // math.combinators\n      'unless-negative',\n      'if-positive',\n      'when-positive',\n      'when-negative',\n      'unless-positive',\n      'if-negative',\n      // combinators\n      'case',\n      '2cleave',\n      'cond>quot',\n      'case>quot',\n      '3cleave',\n      'wrong-values',\n      'to-fixed-point',\n      'alist>quot',\n      'cond',\n      'cleave',\n      'call-effect',\n      'recursive-hashcode',\n      'spread',\n      'deep-spread>quot',\n      // combinators.short-circuit\n      '2||',\n      '0||',\n      'n||',\n      '0&&',\n      '2&&',\n      '3||',\n      '1||',\n      '1&&',\n      'n&&',\n      '3&&',\n      // combinators.smart\n      'smart-unless*',\n      'keep-inputs',\n      'reduce-outputs',\n      'smart-when*',\n      'cleave>array',\n      'smart-with',\n      'smart-apply',\n      'smart-if',\n      'inputs/outputs',\n      'output>sequence-n',\n      'map-outputs',\n      'map-reduce-outputs',\n      'dropping',\n      'output>array',\n      'smart-map-reduce',\n      'smart-2map-reduce',\n      'output>array-n',\n      'nullary',\n      'input<sequence',\n      'append-outputs',\n      'drop-inputs',\n      'inputs',\n      'smart-2reduce',\n      'drop-outputs',\n      'smart-reduce',\n      'preserving',\n      'smart-when',\n      'outputs',\n      'append-outputs-as',\n      'smart-unless',\n      'smart-if*',\n      'sum-outputs',\n      'input<sequence-unsafe',\n      'output>sequence'\n      // tafn\n    ]\n    factor.combinators.pattern = arrToWordsRegExp(combinators)\n    Prism.languages.factor = factor\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\n$false.displayName = 'false'\n$false.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function $false(Prism) {\n  ;(function (Prism) {\n    /**\n     * Based on the manual by Wouter van Oortmerssen.\n     *\n     * @see {@link https://github.com/PrismJS/prism/issues/2801#issue-829717504}\n     */\n    Prism.languages['false'] = {\n      comment: {\n        pattern: /\\{[^}]*\\}/\n      },\n      string: {\n        pattern: /\"[^\"]*\"/,\n        greedy: true\n      },\n      'character-code': {\n        pattern: /'(?:[^\\r]|\\r\\n?)/,\n        alias: 'number'\n      },\n      'assembler-code': {\n        pattern: /\\d+`/,\n        alias: 'important'\n      },\n      number: /\\d+/,\n      operator: /[-!#$%&'*+,./:;=>?@\\\\^_`|~\u00DF\u00F8]/,\n      punctuation: /\\[|\\]/,\n      variable: /[a-z]/,\n      'non-standard': {\n        pattern: /[()<BDO\u00AE]/,\n        alias: 'bold'\n      }\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\nfirestoreSecurityRules.displayName = 'firestore-security-rules'\nfirestoreSecurityRules.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function firestoreSecurityRules(Prism) {\n  Prism.register(refractorClike)\n  Prism.languages['firestore-security-rules'] = Prism.languages.extend(\n    'clike',\n    {\n      comment: /\\/\\/.*/,\n      keyword:\n        /\\b(?:allow|function|if|match|null|return|rules_version|service)\\b/,\n      operator: /&&|\\|\\||[<>!=]=?|[-+*/%]|\\b(?:in|is)\\b/\n    }\n  )\n  delete Prism.languages['firestore-security-rules']['class-name']\n  Prism.languages.insertBefore('firestore-security-rules', 'keyword', {\n    path: {\n      pattern:\n        /(^|[\\s(),])(?:\\/(?:[\\w\\xA0-\\uFFFF]+|\\{[\\w\\xA0-\\uFFFF]+(?:=\\*\\*)?\\}|\\$\\([\\w\\xA0-\\uFFFF.]+\\)))+/,\n      lookbehind: true,\n      greedy: true,\n      inside: {\n        variable: {\n          pattern: /\\{[\\w\\xA0-\\uFFFF]+(?:=\\*\\*)?\\}|\\$\\([\\w\\xA0-\\uFFFF.]+\\)/,\n          inside: {\n            operator: /=/,\n            keyword: /\\*\\*/,\n            punctuation: /[.$(){}]/\n          }\n        },\n        punctuation: /\\//\n      }\n    },\n    method: {\n      // to make the pattern shorter, the actual method names are omitted\n      pattern: /(\\ballow\\s+)[a-z]+(?:\\s*,\\s*[a-z]+)*(?=\\s*[:;])/,\n      lookbehind: true,\n      alias: 'builtin',\n      inside: {\n        punctuation: /,/\n      }\n    }\n  })\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorJavascript from './javascript.js'\nflow.displayName = 'flow'\nflow.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function flow(Prism) {\n  Prism.register(refractorJavascript)\n  ;(function (Prism) {\n    Prism.languages.flow = Prism.languages.extend('javascript', {})\n    Prism.languages.insertBefore('flow', 'keyword', {\n      type: [\n        {\n          pattern:\n            /\\b(?:[Bb]oolean|Function|[Nn]umber|[Ss]tring|[Ss]ymbol|any|mixed|null|void)\\b/,\n          alias: 'class-name'\n        }\n      ]\n    })\n    Prism.languages.flow['function-variable'].pattern =\n      /(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=\\s*(?:function\\b|(?:\\([^()]*\\)(?:\\s*:\\s*\\w+)?|(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/i\n    delete Prism.languages.flow['parameter']\n    Prism.languages.insertBefore('flow', 'operator', {\n      'flow-punctuation': {\n        pattern: /\\{\\||\\|\\}/,\n        alias: 'punctuation'\n      }\n    })\n    if (!Array.isArray(Prism.languages.flow.keyword)) {\n      Prism.languages.flow.keyword = [Prism.languages.flow.keyword]\n    }\n    Prism.languages.flow.keyword.unshift(\n      {\n        pattern: /(^|[^$]\\b)(?:Class|declare|opaque|type)\\b(?!\\$)/,\n        lookbehind: true\n      },\n      {\n        pattern:\n          /(^|[^$]\\B)\\$(?:Diff|Enum|Exact|Keys|ObjMap|PropertyType|Record|Shape|Subtype|Supertype|await)\\b(?!\\$)/,\n        lookbehind: true\n      }\n    )\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nfortran.displayName = 'fortran'\nfortran.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function fortran(Prism) {\n  Prism.languages.fortran = {\n    'quoted-number': {\n      pattern: /[BOZ](['\"])[A-F0-9]+\\1/i,\n      alias: 'number'\n    },\n    string: {\n      pattern:\n        /(?:\\b\\w+_)?(['\"])(?:\\1\\1|&(?:\\r\\n?|\\n)(?:[ \\t]*!.*(?:\\r\\n?|\\n)|(?![ \\t]*!))|(?!\\1).)*(?:\\1|&)/,\n      inside: {\n        comment: {\n          pattern: /(&(?:\\r\\n?|\\n)\\s*)!.*/,\n          lookbehind: true\n        }\n      }\n    },\n    comment: {\n      pattern: /!.*/,\n      greedy: true\n    },\n    boolean: /\\.(?:FALSE|TRUE)\\.(?:_\\w+)?/i,\n    number: /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[ED][+-]?\\d+)?(?:_\\w+)?/i,\n    keyword: [\n      // Types\n      /\\b(?:CHARACTER|COMPLEX|DOUBLE ?PRECISION|INTEGER|LOGICAL|REAL)\\b/i,\n      // END statements\n      /\\b(?:END ?)?(?:BLOCK ?DATA|DO|FILE|FORALL|FUNCTION|IF|INTERFACE|MODULE(?! PROCEDURE)|PROGRAM|SELECT|SUBROUTINE|TYPE|WHERE)\\b/i,\n      // Statements\n      /\\b(?:ALLOCATABLE|ALLOCATE|BACKSPACE|CALL|CASE|CLOSE|COMMON|CONTAINS|CONTINUE|CYCLE|DATA|DEALLOCATE|DIMENSION|DO|END|EQUIVALENCE|EXIT|EXTERNAL|FORMAT|GO ?TO|IMPLICIT(?: NONE)?|INQUIRE|INTENT|INTRINSIC|MODULE PROCEDURE|NAMELIST|NULLIFY|OPEN|OPTIONAL|PARAMETER|POINTER|PRINT|PRIVATE|PUBLIC|READ|RETURN|REWIND|SAVE|SELECT|STOP|TARGET|WHILE|WRITE)\\b/i,\n      // Others\n      /\\b(?:ASSIGNMENT|DEFAULT|ELEMENTAL|ELSE|ELSEIF|ELSEWHERE|ENTRY|IN|INCLUDE|INOUT|KIND|NULL|ONLY|OPERATOR|OUT|PURE|RECURSIVE|RESULT|SEQUENCE|STAT|THEN|USE)\\b/i\n    ],\n    operator: [\n      /\\*\\*|\\/\\/|=>|[=\\/]=|[<>]=?|::|[+\\-*=%]|\\.[A-Z]+\\./i,\n      {\n        // Use lookbehind to prevent confusion with (/ /)\n        pattern: /(^|(?!\\().)\\/(?!\\))/,\n        lookbehind: true\n      }\n    ],\n    punctuation: /\\(\\/|\\/\\)|[(),;:&]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorMarkupTemplating from './markup-templating.js'\nftl.displayName = 'ftl'\nftl.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function ftl(Prism) {\n  Prism.register(refractorMarkupTemplating)\n  ;(function (Prism) {\n    // https://freemarker.apache.org/docs/dgui_template_exp.html\n\n    // FTL expression with 4 levels of nesting supported\n    var FTL_EXPR =\n      /[^<()\"']|\\((?:<expr>)*\\)|<(?!#--)|<#--(?:[^-]|-(?!->))*-->|\"(?:[^\\\\\"]|\\\\.)*\"|'(?:[^\\\\']|\\\\.)*'/\n        .source\n    for (var i = 0; i < 2; i++) {\n      FTL_EXPR = FTL_EXPR.replace(/<expr>/g, function () {\n        return FTL_EXPR\n      })\n    }\n    FTL_EXPR = FTL_EXPR.replace(/<expr>/g, /[^\\s\\S]/.source)\n    var ftl = {\n      comment: /<#--[\\s\\S]*?-->/,\n      string: [\n        {\n          // raw string\n          pattern: /\\br(\"|')(?:(?!\\1)[^\\\\]|\\\\.)*\\1/,\n          greedy: true\n        },\n        {\n          pattern: RegExp(\n            /(\"|')(?:(?!\\1|\\$\\{)[^\\\\]|\\\\.|\\$\\{(?:(?!\\})(?:<expr>))*\\})*\\1/.source.replace(\n              /<expr>/g,\n              function () {\n                return FTL_EXPR\n              }\n            )\n          ),\n          greedy: true,\n          inside: {\n            interpolation: {\n              pattern: RegExp(\n                /((?:^|[^\\\\])(?:\\\\\\\\)*)\\$\\{(?:(?!\\})(?:<expr>))*\\}/.source.replace(\n                  /<expr>/g,\n                  function () {\n                    return FTL_EXPR\n                  }\n                )\n              ),\n              lookbehind: true,\n              inside: {\n                'interpolation-punctuation': {\n                  pattern: /^\\$\\{|\\}$/,\n                  alias: 'punctuation'\n                },\n                rest: null\n              }\n            }\n          }\n        }\n      ],\n      keyword: /\\b(?:as)\\b/,\n      boolean: /\\b(?:false|true)\\b/,\n      'builtin-function': {\n        pattern: /((?:^|[^?])\\?\\s*)\\w+/,\n        lookbehind: true,\n        alias: 'function'\n      },\n      function: /\\b\\w+(?=\\s*\\()/,\n      number: /\\b\\d+(?:\\.\\d+)?\\b/,\n      operator:\n        /\\.\\.[<*!]?|->|--|\\+\\+|&&|\\|\\||\\?{1,2}|[-+*/%!=<>]=?|\\b(?:gt|gte|lt|lte)\\b/,\n      punctuation: /[,;.:()[\\]{}]/\n    }\n    ftl.string[1].inside.interpolation.inside.rest = ftl\n    Prism.languages.ftl = {\n      'ftl-comment': {\n        // the pattern is shortened to be more efficient\n        pattern: /^<#--[\\s\\S]*/,\n        alias: 'comment'\n      },\n      'ftl-directive': {\n        pattern: /^<[\\s\\S]+>$/,\n        inside: {\n          directive: {\n            pattern: /(^<\\/?)[#@][a-z]\\w*/i,\n            lookbehind: true,\n            alias: 'keyword'\n          },\n          punctuation: /^<\\/?|\\/?>$/,\n          content: {\n            pattern: /\\s*\\S[\\s\\S]*/,\n            alias: 'ftl',\n            inside: ftl\n          }\n        }\n      },\n      'ftl-interpolation': {\n        pattern: /^\\$\\{[\\s\\S]*\\}$/,\n        inside: {\n          punctuation: /^\\$\\{|\\}$/,\n          content: {\n            pattern: /\\s*\\S[\\s\\S]*/,\n            alias: 'ftl',\n            inside: ftl\n          }\n        }\n      }\n    }\n    Prism.hooks.add('before-tokenize', function (env) {\n      // eslint-disable-next-line regexp/no-useless-lazy\n      var pattern = RegExp(\n        /<#--[\\s\\S]*?-->|<\\/?[#@][a-zA-Z](?:<expr>)*?>|\\$\\{(?:<expr>)*?\\}/.source.replace(\n          /<expr>/g,\n          function () {\n            return FTL_EXPR\n          }\n        ),\n        'gi'\n      )\n      Prism.languages['markup-templating'].buildPlaceholders(\n        env,\n        'ftl',\n        pattern\n      )\n    })\n    Prism.hooks.add('after-tokenize', function (env) {\n      Prism.languages['markup-templating'].tokenizePlaceholders(env, 'ftl')\n    })\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\ngml.displayName = 'gml'\ngml.aliases = ['gamemakerlanguage']\n\n/** @param {Refractor} Prism */\nexport default function gml(Prism) {\n  Prism.register(refractorClike)\n  Prism.languages.gamemakerlanguage = Prism.languages.gml =\n    Prism.languages.extend('clike', {\n      keyword:\n        /\\b(?:break|case|continue|default|do|else|enum|exit|for|globalvar|if|repeat|return|switch|until|var|while)\\b/,\n      number:\n        /(?:\\b0x[\\da-f]+|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)[ulf]{0,4}/i,\n      operator:\n        /--|\\+\\+|[-+%/=]=?|!=|\\*\\*?=?|<[<=>]?|>[=>]?|&&?|\\^\\^?|\\|\\|?|~|\\b(?:and|at|not|or|with|xor)\\b/,\n      constant:\n        /\\b(?:GM_build_date|GM_version|action_(?:continue|restart|reverse|stop)|all|gamespeed_(?:fps|microseconds)|global|local|noone|other|pi|pointer_(?:invalid|null)|self|timezone_(?:local|utc)|undefined|ev_(?:create|destroy|step|alarm|keyboard|mouse|collision|other|draw|draw_(?:begin|end|post|pre)|keypress|keyrelease|trigger|(?:left|middle|no|right)_button|(?:left|middle|right)_press|(?:left|middle|right)_release|mouse_(?:enter|leave|wheel_down|wheel_up)|global_(?:left|middle|right)_button|global_(?:left|middle|right)_press|global_(?:left|middle|right)_release|joystick(?:1|2)_(?:button1|button2|button3|button4|button5|button6|button7|button8|down|left|right|up)|outside|boundary|game_start|game_end|room_start|room_end|no_more_lives|animation_end|end_of_path|no_more_health|user\\d|gui|gui_begin|gui_end|step_(?:begin|end|normal))|vk_(?:alt|anykey|backspace|control|delete|down|end|enter|escape|home|insert|left|nokey|pagedown|pageup|pause|printscreen|return|right|shift|space|tab|up|f\\d|numpad\\d|add|decimal|divide|lalt|lcontrol|lshift|multiply|ralt|rcontrol|rshift|subtract)|achievement_(?:filter_(?:all_players|favorites_only|friends_only)|friends_info|info|leaderboard_info|our_info|pic_loaded|show_(?:achievement|bank|friend_picker|leaderboard|profile|purchase_prompt|ui)|type_challenge|type_score_challenge)|asset_(?:font|object|path|room|script|shader|sound|sprite|tiles|timeline|unknown)|audio_(?:3d|falloff_(?:exponent_distance|exponent_distance_clamped|inverse_distance|inverse_distance_clamped|linear_distance|linear_distance_clamped|none)|mono|new_system|old_system|stereo)|bm_(?:add|complex|dest_alpha|dest_color|dest_colour|inv_dest_alpha|inv_dest_color|inv_dest_colour|inv_src_alpha|inv_src_color|inv_src_colour|max|normal|one|src_alpha|src_alpha_sat|src_color|src_colour|subtract|zero)|browser_(?:chrome|firefox|ie|ie_mobile|not_a_browser|opera|safari|safari_mobile|tizen|unknown|windows_store)|buffer_(?:bool|f16|f32|f64|fast|fixed|generalerror|grow|invalidtype|network|outofbounds|outofspace|s16|s32|s8|seek_end|seek_relative|seek_start|string|text|u16|u32|u64|u8|vbuffer|wrap)|c_(?:aqua|black|blue|dkgray|fuchsia|gray|green|lime|ltgray|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow)|cmpfunc_(?:always|equal|greater|greaterequal|less|lessequal|never|notequal)|cr_(?:appstart|arrow|beam|cross|default|drag|handpoint|hourglass|none|size_all|size_nesw|size_ns|size_nwse|size_we|uparrow)|cull_(?:clockwise|counterclockwise|noculling)|device_(?:emulator|tablet)|device_ios_(?:ipad|ipad_retina|iphone|iphone5|iphone6|iphone6plus|iphone_retina|unknown)|display_(?:landscape|landscape_flipped|portrait|portrait_flipped)|dll_(?:cdecl|cdel|stdcall)|ds_type_(?:grid|list|map|priority|queue|stack)|ef_(?:cloud|ellipse|explosion|firework|flare|rain|ring|smoke|smokeup|snow|spark|star)|fa_(?:archive|bottom|center|directory|hidden|left|middle|readonly|right|sysfile|top|volumeid)|fb_login_(?:default|fallback_to_webview|forcing_safari|forcing_webview|no_fallback_to_webview|use_system_account)|iap_(?:available|canceled|ev_consume|ev_product|ev_purchase|ev_restore|ev_storeload|failed|purchased|refunded|status_available|status_loading|status_processing|status_restoring|status_unavailable|status_uninitialised|storeload_failed|storeload_ok|unavailable)|leaderboard_type_(?:number|time_mins_secs)|lighttype_(?:dir|point)|matrix_(?:projection|view|world)|mb_(?:any|left|middle|none|right)|network_(?:config_(?:connect_timeout|disable_reliable_udp|enable_reliable_udp|use_non_blocking_socket)|socket_(?:bluetooth|tcp|udp)|type_(?:connect|data|disconnect|non_blocking_connect))|of_challenge_(?:lose|tie|win)|os_(?:android|ios|linux|macosx|ps3|ps4|psvita|unknown|uwp|win32|win8native|windows|winphone|xboxone)|phy_debug_render_(?:aabb|collision_pairs|coms|core_shapes|joints|obb|shapes)|phy_joint_(?:anchor_1_x|anchor_1_y|anchor_2_x|anchor_2_y|angle|angle_limits|damping_ratio|frequency|length_1|length_2|lower_angle_limit|max_force|max_length|max_motor_force|max_motor_torque|max_torque|motor_force|motor_speed|motor_torque|reaction_force_x|reaction_force_y|reaction_torque|speed|translation|upper_angle_limit)|phy_particle_data_flag_(?:category|color|colour|position|typeflags|velocity)|phy_particle_flag_(?:colormixing|colourmixing|elastic|powder|spring|tensile|viscous|wall|water|zombie)|phy_particle_group_flag_(?:rigid|solid)|pr_(?:linelist|linestrip|pointlist|trianglefan|trianglelist|trianglestrip)|ps_(?:distr|shape)_(?:diamond|ellipse|gaussian|invgaussian|line|linear|rectangle)|pt_shape_(?:circle|cloud|disk|explosion|flare|line|pixel|ring|smoke|snow|spark|sphere|square|star)|ty_(?:real|string)|gp_(?:face\\d|axislh|axislv|axisrh|axisrv|padd|padl|padr|padu|select|shoulderl|shoulderlb|shoulderr|shoulderrb|start|stickl|stickr)|lb_disp_(?:none|numeric|time_ms|time_sec)|lb_sort_(?:ascending|descending|none)|ov_(?:achievements|community|friends|gamegroup|players|settings)|ugc_(?:filetype_(?:community|microtrans)|list_(?:Favorited|Followed|Published|Subscribed|UsedOrPlayed|VotedDown|VotedOn|VotedUp|WillVoteLater)|match_(?:AllGuides|Artwork|Collections|ControllerBindings|IntegratedGuides|Items|Items_Mtx|Items_ReadyToUse|Screenshots|UsableInGame|Videos|WebGuides)|query_(?:AcceptedForGameRankedByAcceptanceDate|CreatedByFriendsRankedByPublicationDate|FavoritedByFriendsRankedByPublicationDate|NotYetRated)|query_RankedBy(?:NumTimesReported|PublicationDate|TextSearch|TotalVotesAsc|Trend|Vote|VotesUp)|result_success|sortorder_CreationOrder(?:Asc|Desc)|sortorder_(?:ForModeration|LastUpdatedDesc|SubscriptionDateDesc|TitleAsc|VoteScoreDesc)|visibility_(?:friends_only|private|public))|vertex_usage_(?:binormal|blendindices|blendweight|color|colour|depth|fog|normal|position|psize|sample|tangent|texcoord|textcoord)|vertex_type_(?:float\\d|color|colour|ubyte4)|input_type|layerelementtype_(?:background|instance|oldtilemap|particlesystem|sprite|tile|tilemap|undefined)|se_(?:chorus|compressor|echo|equalizer|flanger|gargle|none|reverb)|text_type|tile_(?:flip|index_mask|mirror|rotate)|(?:obj|rm|scr|spr)\\w+)\\b/,\n      variable:\n        /\\b(?:alarm|application_surface|async_load|background_(?:alpha|blend|color|colour|foreground|height|hspeed|htiled|index|showcolor|showcolour|visible|vspeed|vtiled|width|x|xscale|y|yscale)|bbox_(?:bottom|left|right|top)|browser_(?:height|width)|caption_(?:health|lives|score)|current_(?:day|hour|minute|month|second|time|weekday|year)|cursor_sprite|debug_mode|delta_time|direction|display_aa|error_(?:last|occurred)|event_(?:action|number|object|type)|fps|fps_real|friction|game_(?:display|project|save)_(?:id|name)|gamemaker_(?:pro|registered|version)|gravity|gravity_direction|(?:h|v)speed|health|iap_data|id|image_(?:alpha|angle|blend|depth|index|number|speed|xscale|yscale)|instance_(?:count|id)|keyboard_(?:key|lastchar|lastkey|string)|layer|lives|mask_index|mouse_(?:button|lastbutton|x|y)|object_index|os_(?:browser|device|type|version)|path_(?:endaction|index|orientation|position|positionprevious|scale|speed)|persistent|phy_(?:rotation|(?:col_normal|collision|com|linear_velocity|position|speed)_(?:x|y)|angular_(?:damping|velocity)|position_(?:x|y)previous|speed|linear_damping|bullet|fixed_rotation|active|mass|inertia|dynamic|kinematic|sleeping|collision_points)|pointer_(?:invalid|null)|room|room_(?:caption|first|height|last|persistent|speed|width)|score|secure_mode|show_(?:health|lives|score)|solid|speed|sprite_(?:height|index|width|xoffset|yoffset)|temp_directory|timeline_(?:index|loop|position|running|speed)|transition_(?:color|kind|steps)|undefined|view_(?:angle|current|enabled|(?:h|v)(?:border|speed)|(?:h|w|x|y)port|(?:h|w|x|y)view|object|surface_id|visible)|visible|webgl_enabled|working_directory|(?:x|y)(?:previous|start)|x|y|argument(?:_relitive|_count|\\d)|argument|global|local|other|self)\\b/\n    })\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ngap.displayName = 'gap'\ngap.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function gap(Prism) {\n  // https://www.gap-system.org/Manuals/doc/ref/chap4.html\n  // https://www.gap-system.org/Manuals/doc/ref/chap27.html\n\n  Prism.languages.gap = {\n    shell: {\n      pattern: /^gap>[\\s\\S]*?(?=^gap>|$(?![\\s\\S]))/m,\n      greedy: true,\n      inside: {\n        gap: {\n          pattern: /^(gap>).+(?:(?:\\r(?:\\n|(?!\\n))|\\n)>.*)*/,\n          lookbehind: true,\n          inside: null // see below\n        },\n        punctuation: /^gap>/\n      }\n    },\n    comment: {\n      pattern: /#.*/,\n      greedy: true\n    },\n    string: {\n      pattern:\n        /(^|[^\\\\'\"])(?:'(?:[^\\r\\n\\\\']|\\\\.){1,10}'|\"(?:[^\\r\\n\\\\\"]|\\\\.)*\"(?!\")|\"\"\"[\\s\\S]*?\"\"\")/,\n      lookbehind: true,\n      greedy: true,\n      inside: {\n        continuation: {\n          pattern: /([\\r\\n])>/,\n          lookbehind: true,\n          alias: 'punctuation'\n        }\n      }\n    },\n    keyword:\n      /\\b(?:Assert|Info|IsBound|QUIT|TryNextMethod|Unbind|and|atomic|break|continue|do|elif|else|end|fi|for|function|if|in|local|mod|not|od|or|quit|readonly|readwrite|rec|repeat|return|then|until|while)\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n    number: {\n      pattern:\n        /(^|[^\\w.]|\\.\\.)(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?(?:_[a-z]?)?(?=$|[^\\w.]|\\.\\.)/,\n      lookbehind: true\n    },\n    continuation: {\n      pattern: /([\\r\\n])>/,\n      lookbehind: true,\n      alias: 'punctuation'\n    },\n    operator: /->|[-+*/^~=!]|<>|[<>]=?|:=|\\.\\./,\n    punctuation: /[()[\\]{},;.:]/\n  }\n  Prism.languages.gap.shell.inside.gap.inside = Prism.languages.gap\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ngcode.displayName = 'gcode'\ngcode.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function gcode(Prism) {\n  Prism.languages.gcode = {\n    comment: /;.*|\\B\\(.*?\\)\\B/,\n    string: {\n      pattern: /\"(?:\"\"|[^\"])*\"/,\n      greedy: true\n    },\n    keyword: /\\b[GM]\\d+(?:\\.\\d+)?\\b/,\n    property: /\\b[A-Z]/,\n    checksum: {\n      pattern: /(\\*)\\d+/,\n      lookbehind: true,\n      alias: 'number'\n    },\n    // T0:0:0\n    punctuation: /[:*]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ngdscript.displayName = 'gdscript'\ngdscript.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function gdscript(Prism) {\n  Prism.languages.gdscript = {\n    comment: /#.*/,\n    string: {\n      pattern:\n        /@?(?:(\"|')(?:(?!\\1)[^\\n\\\\]|\\\\[\\s\\S])*\\1(?!\"|')|\"\"\"(?:[^\\\\]|\\\\[\\s\\S])*?\"\"\")/,\n      greedy: true\n    },\n    'class-name': {\n      // class_name Foo, extends Bar, class InnerClass\n      // export(int) var baz, export(int, 0) var i\n      // as Node\n      // const FOO: int = 9, var bar: bool = true\n      // func add(reference: Item, amount: int) -> Item:\n      pattern:\n        /(^(?:class|class_name|extends)[ \\t]+|^export\\([ \\t]*|\\bas[ \\t]+|(?:\\b(?:const|var)[ \\t]|[,(])[ \\t]*\\w+[ \\t]*:[ \\t]*|->[ \\t]*)[a-zA-Z_]\\w*/m,\n      lookbehind: true\n    },\n    keyword:\n      /\\b(?:and|as|assert|break|breakpoint|class|class_name|const|continue|elif|else|enum|export|extends|for|func|if|in|is|master|mastersync|match|not|null|onready|or|pass|preload|puppet|puppetsync|remote|remotesync|return|self|setget|signal|static|tool|var|while|yield)\\b/,\n    function: /\\b[a-z_]\\w*(?=[ \\t]*\\()/i,\n    variable: /\\$\\w+/,\n    number: [\n      /\\b0b[01_]+\\b|\\b0x[\\da-fA-F_]+\\b|(?:\\b\\d[\\d_]*(?:\\.[\\d_]*)?|\\B\\.[\\d_]+)(?:e[+-]?[\\d_]+)?\\b/,\n      /\\b(?:INF|NAN|PI|TAU)\\b/\n    ],\n    constant: /\\b[A-Z][A-Z_\\d]*\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    operator: /->|:=|&&|\\|\\||<<|>>|[-+*/%&|!<>=]=?|[~^]/,\n    punctuation: /[.:,;()[\\]{}]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ngedcom.displayName = 'gedcom'\ngedcom.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function gedcom(Prism) {\n  Prism.languages.gedcom = {\n    'line-value': {\n      // Preceded by level, optional pointer, and tag\n      pattern:\n        /(^[\\t ]*\\d+ +(?:@\\w[\\w!\"$%&'()*+,\\-./:;<=>?[\\\\\\]^`{|}~\\x80-\\xfe #]*@ +)?\\w+ ).+/m,\n      lookbehind: true,\n      inside: {\n        pointer: {\n          pattern: /^@\\w[\\w!\"$%&'()*+,\\-./:;<=>?[\\\\\\]^`{|}~\\x80-\\xfe #]*@$/,\n          alias: 'variable'\n        }\n      }\n    },\n    record: {\n      // Preceded by level and optional pointer\n      pattern:\n        /(^[\\t ]*\\d+ +(?:@\\w[\\w!\"$%&'()*+,\\-./:;<=>?[\\\\\\]^`{|}~\\x80-\\xfe #]*@ +)?)\\w+/m,\n      lookbehind: true,\n      alias: 'tag'\n    },\n    level: {\n      pattern: /(^[\\t ]*)\\d+/m,\n      lookbehind: true,\n      alias: 'number'\n    },\n    pointer: {\n      pattern: /@\\w[\\w!\"$%&'()*+,\\-./:;<=>?[\\\\\\]^`{|}~\\x80-\\xfe #]*@/,\n      alias: 'variable'\n    }\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ngettext.displayName = 'gettext'\ngettext.aliases = ['po']\n\n/** @param {Refractor} Prism */\nexport default function gettext(Prism) {\n  Prism.languages.gettext = {\n    comment: [\n      {\n        pattern: /# .*/,\n        greedy: true,\n        alias: 'translator-comment'\n      },\n      {\n        pattern: /#\\..*/,\n        greedy: true,\n        alias: 'extracted-comment'\n      },\n      {\n        pattern: /#:.*/,\n        greedy: true,\n        alias: 'reference-comment'\n      },\n      {\n        pattern: /#,.*/,\n        greedy: true,\n        alias: 'flag-comment'\n      },\n      {\n        pattern: /#\\|.*/,\n        greedy: true,\n        alias: 'previously-untranslated-comment'\n      },\n      {\n        pattern: /#.*/,\n        greedy: true\n      }\n    ],\n    string: {\n      pattern: /(^|[^\\\\])\"(?:[^\"\\\\]|\\\\.)*\"/,\n      lookbehind: true,\n      greedy: true\n    },\n    keyword: /^msg(?:ctxt|id|id_plural|str)\\b/m,\n    number: /\\b\\d+\\b/,\n    punctuation: /[\\[\\]]/\n  }\n  Prism.languages.po = Prism.languages.gettext\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ngherkin.displayName = 'gherkin'\ngherkin.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function gherkin(Prism) {\n  ;(function (Prism) {\n    var tableRow = /(?:\\r?\\n|\\r)[ \\t]*\\|.+\\|(?:(?!\\|).)*/.source\n    Prism.languages.gherkin = {\n      pystring: {\n        pattern: /(\"\"\"|''')[\\s\\S]+?\\1/,\n        alias: 'string'\n      },\n      comment: {\n        pattern: /(^[ \\t]*)#.*/m,\n        lookbehind: true\n      },\n      tag: {\n        pattern: /(^[ \\t]*)@\\S*/m,\n        lookbehind: true\n      },\n      feature: {\n        pattern:\n          /((?:^|\\r?\\n|\\r)[ \\t]*)(?:Ability|Ahoy matey!|Arwedd|Aspekt|Besigheid Behoefte|Business Need|Caracteristica|Caracter\u00EDstica|Egenskab|Egenskap|Eiginleiki|Feature|F\u012B\u010Da|Fitur|Fonctionnalit\u00E9|Fonksyonalite|Funcionalidade|Funcionalitat|Functionalitate|Func\u0163ionalitate|Func\u021Bionalitate|Functionaliteit|Fungsi|Funkcia|Funkcija|Funkcionalit\u0101te|Funkcionalnost|Funkcja|Funksie|Funktionalit\u00E4t|Funktionalit\u00E9it|Funzionalit\u00E0|Hwaet|Hw\u00E6t|Jellemz\u0151|Karakteristik|Lastnost|Mak|Mogucnost|laH|Mogu\u0107nost|Moznosti|Mo\u017Enosti|OH HAI|Omadus|Ominaisuus|Osobina|\u00D6zellik|Potrzeba biznesowa|perbogh|poQbogh malja'|Po\u017Eadavek|Po\u017Eiadavka|Pretty much|Qap|Qu'meH 'ut|Savyb\u0117|T\u00EDnh n\u0103ng|Trajto|Vermo\u00EB|Vlastnos\u0165|W\u0142a\u015Bciwo\u015B\u0107|Zna\u010Dilnost|\u0394\u03C5\u03BD\u03B1\u03C4\u03CC\u03C4\u03B7\u03C4\u03B1|\u039B\u03B5\u03B9\u03C4\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1|\u041C\u043E\u0433\u0443\u045B\u043D\u043E\u0441\u0442|\u041C\u04E9\u043C\u043A\u0438\u043D\u043B\u0435\u043A|\u041E\u0441\u043E\u0431\u0438\u043D\u0430|\u0421\u0432\u043E\u0439\u0441\u0442\u0432\u043E|\u04AE\u0437\u0435\u043D\u0447\u04D9\u043B\u0435\u043A\u043B\u0435\u043B\u0435\u043A|\u0424\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B|\u0424\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B\u043D\u043E\u0441\u0442|\u0424\u0443\u043D\u043A\u0446\u0438\u044F|\u0424\u0443\u043D\u043A\u0446\u0456\u043E\u043D\u0430\u043B|\u05EA\u05DB\u05D5\u05E0\u05D4|\u062E\u0627\u0635\u064A\u0629|\u062E\u0635\u0648\u0635\u06CC\u062A|\u0635\u0644\u0627\u062D\u06CC\u062A|\u06A9\u0627\u0631\u0648\u0628\u0627\u0631 \u06A9\u06CC \u0636\u0631\u0648\u0631\u062A|\u0648\u0650\u06CC\u0698\u06AF\u06CC|\u0930\u0942\u092A \u0932\u0947\u0916|\u0A16\u0A3E\u0A38\u0A40\u0A05\u0A24|\u0A28\u0A15\u0A36 \u0A28\u0A41\u0A39\u0A3E\u0A30|\u0A2E\u0A41\u0A39\u0A3E\u0A02\u0A26\u0A30\u0A3E|\u0C17\u0C41\u0C23\u0C2E\u0C41|\u0CB9\u0CC6\u0C9A\u0CCD\u0C9A\u0CB3|\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E01\u0E32\u0E23\u0E17\u0E32\u0E07\u0E18\u0E38\u0E23\u0E01\u0E34\u0E08|\u0E04\u0E27\u0E32\u0E21\u0E2A\u0E32\u0E21\u0E32\u0E23\u0E16|\u0E42\u0E04\u0E23\u0E07\u0E2B\u0E25\u0E31\u0E01|\uAE30\uB2A5|\u30D5\u30A3\u30FC\u30C1\u30E3|\u529F\u80FD|\u6A5F\u80FD):(?:[^:\\r\\n]+(?:\\r?\\n|\\r|$))*/,\n        lookbehind: true,\n        inside: {\n          important: {\n            pattern: /(:)[^\\r\\n]+/,\n            lookbehind: true\n          },\n          keyword: /[^:\\r\\n]+:/\n        }\n      },\n      scenario: {\n        pattern:\n          /(^[ \\t]*)(?:Abstract Scenario|Abstrakt Scenario|Achtergrond|Aer|\u00C6r|Agtergrond|All y'all|Antecedentes|Antecedents|Atbur\u00F0ar\u00E1s|Atbur\u00F0ar\u00E1sir|Awww, look mate|B4|Background|Baggrund|Bakgrund|Bakgrunn|Bakgrunnur|Beispiele|Beispiller|B\u1ED1i c\u1EA3nh|Cefndir|Cenario|Cen\u00E1rio|Cenario de Fundo|Cen\u00E1rio de Fundo|Cenarios|Cen\u00E1rios|Contesto|Context|Contexte|Contexto|Conto|Contoh|Contone|D\u00E6mi|Dasar|Dead men tell no tales|Delineacao do Cenario|Delinea\u00E7\u00E3o do Cen\u00E1rio|Dis is what went down|D\u1EEF li\u1EC7u|Dyagram Senaryo|Dyagram senaryo|Egzanp|Ejemplos|Eksempler|Ekzemploj|Enghreifftiau|Esbozo do escenario|Escenari|Escenario|Esempi|Esquema de l'escenari|Esquema del escenario|Esquema do Cenario|Esquema do Cen\u00E1rio|EXAMPLZ|Examples|Exempel|Exemple|Exemples|Exemplos|First off|Fono|Forgat\u00F3k\u00F6nyv|Forgat\u00F3k\u00F6nyv v\u00E1zlat|Fundo|Ge\u00E7mi\u015F|Grundlage|Hannergrond|ghantoH|H\u00E1tt\u00E9r|Heave to|Istorik|Juhtumid|Keadaan|Khung k\u1ECBch b\u1EA3n|Khung t\u00ECnh hu\u1ED1ng|K\u1ECBch b\u1EA3n|Koncept|Konsep skenario|Kont\u00E8ks|Kontekst|Kontekstas|Konteksts|Kontext|Konturo de la scenaro|Latar Belakang|lut chovnatlh|lut|lutmey|L\u00FDsing Atbur\u00F0ar\u00E1sar|L\u00FDsing D\u00E6ma|MISHUN SRSLY|MISHUN|Menggariskan Senario|mo'|N\u00E1\u010Drt Scen\u00E1ra|N\u00E1\u010Drt Sc\u00E9n\u00E1\u0159e|N\u00E1\u010Drt Scen\u00E1ru|Oris scenarija|\u00D6rnekler|Osnova|Osnova Scen\u00E1ra|Osnova sc\u00E9n\u00E1\u0159e|Osnutek|Ozadje|Paraugs|Pavyzd\u017Eiai|P\u00E9ld\u00E1k|Piem\u0113ri|Plan du sc\u00E9nario|Plan du Sc\u00E9nario|Plan Senaryo|Plan senaryo|Plang vum Szenario|Pozad\u00ED|Pozadie|Pozadina|Pr\u00EDklady|P\u0159\u00EDklady|Primer|Primeri|Primjeri|Przyk\u0142ady|Raamstsenaarium|Reckon it's like|Rerefons|Scen\u00E1r|Sc\u00E9n\u00E1\u0159|Scenarie|Scenarij|Scenarijai|Scenarijaus \u0161ablonas|Scenariji|Scen\u0101rijs|Scen\u0101rijs p\u0113c parauga|Scenarijus|Scenario|Sc\u00E9nario|Scenario Amlinellol|Scenario Outline|Scenario Template|Scenariomal|Scenariomall|Scenarios|Scenariu|Scenariusz|Scenaro|Schema dello scenario|Se \u00F0e|Se the|Se \u00FEe|Senario|Senaryo Deskripsyon|Senaryo deskripsyon|Senaryo|Senaryo tasla\u011F\u0131|Shiver me timbers|Situ\u0101cija|Situai|Situasie Uiteensetting|Situasie|Skenario konsep|Skenario|Skica|Structura scenariu|Structur\u0103 scenariu|Struktura scenarija|Stsenaarium|Swa hwaer swa|Swa|Swa hw\u00E6r swa|Szablon scenariusza|Szenario|Szenariogrundriss|Tapaukset|Tapaus|Tapausaihio|Taust|Tausta|Template Keadaan|Template Senario|Template Situai|The thing of it is|T\u00ECnh hu\u1ED1ng|Variantai|Voorbeelde|Voorbeelden|Wharrimean is|Yo-ho-ho|You'll wanna|Za\u0142o\u017Cenia|\u03A0\u03B1\u03C1\u03B1\u03B4\u03B5\u03AF\u03B3\u03BC\u03B1\u03C4\u03B1|\u03A0\u03B5\u03C1\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE \u03A3\u03B5\u03BD\u03B1\u03C1\u03AF\u03BF\u03C5|\u03A3\u03B5\u03BD\u03AC\u03C1\u03B9\u03B1|\u03A3\u03B5\u03BD\u03AC\u03C1\u03B9\u03BF|\u03A5\u03C0\u03CC\u03B2\u03B1\u03B8\u03C1\u03BF|\u041A\u0435\u0440\u0435\u0448|\u041A\u043E\u043D\u0442\u0435\u043A\u0441\u0442|\u041A\u043E\u043D\u0446\u0435\u043F\u0442|\u041C\u0438\u0441\u0430\u043B\u043B\u0430\u0440|\u041C\u0438\u0441\u043E\u043B\u043B\u0430\u0440|\u041E\u0441\u043D\u043E\u0432\u0430|\u041F\u0435\u0440\u0435\u0434\u0443\u043C\u043E\u0432\u0430|\u041F\u043E\u0437\u0430\u0434\u0438\u043D\u0430|\u041F\u0440\u0435\u0434\u0438\u0441\u0442\u043E\u0440\u0438\u044F|\u041F\u0440\u0435\u0434\u044B\u0441\u0442\u043E\u0440\u0438\u044F|\u041F\u0440\u0438\u043A\u043B\u0430\u0434\u0438|\u041F\u0440\u0438\u043C\u0435\u0440|\u041F\u0440\u0438\u043C\u0435\u0440\u0438|\u041F\u0440\u0438\u043C\u0435\u0440\u044B|\u0420\u0430\u043C\u043A\u0430 \u043D\u0430 \u0441\u0446\u0435\u043D\u0430\u0440\u0438\u0439|\u0421\u043A\u0438\u0446\u0430|\u0421\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0430 \u0441\u0446\u0435\u043D\u0430\u0440\u0438\u0458\u0430|\u0421\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0430 \u0441\u0446\u0435\u043D\u0430\u0440\u0438\u044F|\u0421\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0430 \u0441\u0446\u0435\u043D\u0430\u0440\u0456\u044E|\u0421\u0446\u0435\u043D\u0430\u0440\u0438\u0439|\u0421\u0446\u0435\u043D\u0430\u0440\u0438\u0439 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0430\u0441\u0438|\u0421\u0446\u0435\u043D\u0430\u0440\u0438\u0439\u043D\u044B\u04A3 \u0442\u04E9\u0437\u0435\u043B\u0435\u0448\u0435|\u0421\u0446\u0435\u043D\u0430\u0440\u0438\u0458\u0438|\u0421\u0446\u0435\u043D\u0430\u0440\u0438\u043E|\u0421\u0446\u0435\u043D\u0430\u0440\u0456\u0439|\u0422\u0430\u0440\u0438\u0445|\u04AE\u0440\u043D\u04D9\u043A\u043B\u04D9\u0440|\u05D3\u05D5\u05D2\u05DE\u05D0\u05D5\u05EA|\u05E8\u05E7\u05E2|\u05EA\u05D1\u05E0\u05D9\u05EA \u05EA\u05E8\u05D7\u05D9\u05E9|\u05EA\u05E8\u05D7\u05D9\u05E9|\u0627\u0644\u062E\u0644\u0641\u064A\u0629|\u0627\u0644\u06AF\u0648\u06CC \u0633\u0646\u0627\u0631\u06CC\u0648|\u0627\u0645\u062B\u0644\u0629|\u067E\u0633 \u0645\u0646\u0638\u0631|\u0632\u0645\u06CC\u0646\u0647|\u0633\u0646\u0627\u0631\u06CC\u0648|\u0633\u064A\u0646\u0627\u0631\u064A\u0648|\u0633\u064A\u0646\u0627\u0631\u064A\u0648 \u0645\u062E\u0637\u0637|\u0645\u062B\u0627\u0644\u06CC\u06BA|\u0645\u0646\u0638\u0631 \u0646\u0627\u0645\u06D2 \u06A9\u0627 \u062E\u0627\u06A9\u06C1|\u0645\u0646\u0638\u0631\u0646\u0627\u0645\u06C1|\u0646\u0645\u0648\u0646\u0647 \u0647\u0627|\u0909\u0926\u093E\u0939\u0930\u0923|\u092A\u0930\u093F\u0926\u0943\u0936\u094D\u092F|\u092A\u0930\u093F\u0926\u0943\u0936\u094D\u092F \u0930\u0942\u092A\u0930\u0947\u0916\u093E|\u092A\u0943\u0937\u094D\u0920\u092D\u0942\u092E\u093F|\u0A09\u0A26\u0A3E\u0A39\u0A30\u0A28\u0A3E\u0A02|\u0A2A\u0A1F\u0A15\u0A25\u0A3E|\u0A2A\u0A1F\u0A15\u0A25\u0A3E \u0A22\u0A3E\u0A02\u0A1A\u0A3E|\u0A2A\u0A1F\u0A15\u0A25\u0A3E \u0A30\u0A42\u0A2A \u0A30\u0A47\u0A16\u0A3E|\u0A2A\u0A3F\u0A1B\u0A4B\u0A15\u0A5C|\u0C09\u0C26\u0C3E\u0C39\u0C30\u0C23\u0C32\u0C41|\u0C15\u0C25\u0C28\u0C02|\u0C28\u0C47\u0C2A\u0C25\u0C4D\u0C2F\u0C02|\u0C38\u0C28\u0C4D\u0C28\u0C3F\u0C35\u0C47\u0C36\u0C02|\u0C89\u0CA6\u0CBE\u0CB9\u0CB0\u0CA3\u0CC6\u0C97\u0CB3\u0CC1|\u0C95\u0CA5\u0CBE\u0CB8\u0CBE\u0CB0\u0CBE\u0C82\u0CB6|\u0CB5\u0CBF\u0CB5\u0CB0\u0CA3\u0CC6|\u0CB9\u0CBF\u0CA8\u0CCD\u0CA8\u0CC6\u0CB2\u0CC6|\u0E42\u0E04\u0E23\u0E07\u0E2A\u0E23\u0E49\u0E32\u0E07\u0E02\u0E2D\u0E07\u0E40\u0E2B\u0E15\u0E38\u0E01\u0E32\u0E23\u0E13\u0E4C|\u0E0A\u0E38\u0E14\u0E02\u0E2D\u0E07\u0E15\u0E31\u0E27\u0E2D\u0E22\u0E48\u0E32\u0E07|\u0E0A\u0E38\u0E14\u0E02\u0E2D\u0E07\u0E40\u0E2B\u0E15\u0E38\u0E01\u0E32\u0E23\u0E13\u0E4C|\u0E41\u0E19\u0E27\u0E04\u0E34\u0E14|\u0E2A\u0E23\u0E38\u0E1B\u0E40\u0E2B\u0E15\u0E38\u0E01\u0E32\u0E23\u0E13\u0E4C|\u0E40\u0E2B\u0E15\u0E38\u0E01\u0E32\u0E23\u0E13\u0E4C|\uBC30\uACBD|\uC2DC\uB098\uB9AC\uC624|\uC2DC\uB098\uB9AC\uC624 \uAC1C\uC694|\uC608|\u30B5\u30F3\u30D7\u30EB|\u30B7\u30CA\u30EA\u30AA|\u30B7\u30CA\u30EA\u30AA\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3|\u30B7\u30CA\u30EA\u30AA\u30C6\u30F3\u30D7\u30EC|\u30B7\u30CA\u30EA\u30AA\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8|\u30C6\u30F3\u30D7\u30EC|\u4F8B|\u4F8B\u5B50|\u5267\u672C|\u5267\u672C\u5927\u7EB2|\u5287\u672C|\u5287\u672C\u5927\u7DB1|\u573A\u666F|\u573A\u666F\u5927\u7EB2|\u5834\u666F|\u5834\u666F\u5927\u7DB1|\u80CC\u666F):[^:\\r\\n]*/m,\n        lookbehind: true,\n        inside: {\n          important: {\n            pattern: /(:)[^\\r\\n]*/,\n            lookbehind: true\n          },\n          keyword: /[^:\\r\\n]+:/\n        }\n      },\n      'table-body': {\n        // Look-behind is used to skip the table head, which has the same format as any table row\n        pattern: RegExp('(' + tableRow + ')(?:' + tableRow + ')+'),\n        lookbehind: true,\n        inside: {\n          outline: {\n            pattern: /<[^>]+>/,\n            alias: 'variable'\n          },\n          td: {\n            pattern: /\\s*[^\\s|][^|]*/,\n            alias: 'string'\n          },\n          punctuation: /\\|/\n        }\n      },\n      'table-head': {\n        pattern: RegExp(tableRow),\n        inside: {\n          th: {\n            pattern: /\\s*[^\\s|][^|]*/,\n            alias: 'variable'\n          },\n          punctuation: /\\|/\n        }\n      },\n      atrule: {\n        pattern:\n          /(^[ \\t]+)(?:'a|'ach|'ej|7|a|A tak\u00E9|A taktie\u017E|A tie\u017E|A z\u00E1rove\u0148|Aber|Ac|Adott|Akkor|Ak|Aleshores|Ale|Ali|Allora|Alors|Als|Ama|Amennyiben|Amikor|Ampak|an|AN|Ananging|And y'all|And|Angenommen|Anrhegedig a|An|Apabila|At\u00E8s|Atesa|Atunci|Avast!|Aye|A|awer|Bagi|Banjur|Bet|Bi\u1EBFt|Blimey!|Buh|But at the end of the day I reckon|But y'all|But|BUT|Cal|C\u00E2nd|Cand|Cando|Ce|Cuando|\u010Ce|\u00D0a \u00F0e|\u00D0a|Dadas|Dada|Dados|Dado|DaH ghu' bejlu'|dann|Dann|Dano|Dan|Dar|Dat fiind|Data|Date fiind|Date|Dati fiind|Dati|Da\u0163i fiind|Da\u021Bi fiind|DEN|Dato|De|Den youse gotta|Dengan|Diberi|Diyelim ki|Donada|Donat|Donita\u0135o|Do|Dun|Duota|\u00D0urh|Eeldades|Ef|E\u011Fer ki|Entao|Ent\u00E3o|Ent\u00F3n|E|En|Entonces|Epi|\u00C9s|Etant donn\u00E9e|Etant donn\u00E9|Et|\u00C9tant donn\u00E9es|\u00C9tant donn\u00E9e|\u00C9tant donn\u00E9|Etant donn\u00E9es|Etant donn\u00E9s|\u00C9tant donn\u00E9s|Fakat|Gangway!|Gdy|Gegeben seien|Gegeben sei|Gegeven|Gegewe|ghu' noblu'|Gitt|Given y'all|Given|Givet|Givun|Ha|Cho|I CAN HAZ|In|Ir|It's just unbelievable|I|Ja|Je\u015Bli|Je\u017Celi|Kad|Kada|Kadar|Kai|Kaj|Kdy\u017E|Ke\u010F|Kemudian|Ketika|Khi|Kiedy|Ko|Kuid|Kui|Kun|Lan|latlh|Le sa a|Let go and haul|Le|L\u00E8 sa a|L\u00E8|Logo|Lorsqu'<|Lorsque|m\u00E4|Maar|Mais|Maj\u0105c|Ma|Majd|Maka|Manawa|Mas|Men|Menawa|Mutta|Nalika|Nalikaning|Nanging|N\u00E5r|N\u00E4r|Nato|Nh\u01B0ng|Niin|Njuk|O zaman|Och|Og|Oletetaan|Ond|Onda|Oraz|Pak|Pero|Per\u00F2|Podano|Pokia\u013E|Pokud|Potem|Potom|Privzeto|Pryd|Quan|Quand|Quando|qaSDI'|S\u00E5|Sed|Se|Siis|Sipoze ke|Sipoze Ke|Sipoze|Si|\u015Ei|\u0218i|Soit|Stel|Tada|Tad|Takrat|Tak|Tapi|Ter|Tetapi|Tha the|Tha|Then y'all|Then|Th\u00EC|Thurh|Toda|Too right|Un|Und|ugeholl|V\u00E0|vaj|Vendar|Ve|wann|Wanneer|WEN|Wenn|When y'all|When|Wtedy|Wun|Y'know|Yeah nah|Yna|Youse know like when|Youse know when youse got|Y|Za predpokladu|Za p\u0159edpokladu|Zadan|Zadani|Zadano|Zadate|Zadato|Zak\u0142adaj\u0105c|Zaradi|Zatati|\u00DEa \u00FEe|\u00DEa|\u00DE\u00E1|\u00DEegar|\u00DEurh|\u0391\u03BB\u03BB\u03AC|\u0394\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03BF\u03C5|\u039A\u03B1\u03B9|\u038C\u03C4\u03B1\u03BD|\u03A4\u03CC\u03C4\u03B5|\u0410 \u0442\u0430\u043A\u043E\u0436|\u0410\u0433\u0430\u0440|\u0410\u043B\u0435|\u0410\u043B\u0438|\u0410\u043C\u043C\u043E|\u0410|\u04D8\u0433\u04D9\u0440|\u04D8\u0439\u0442\u0438\u043A|\u04D8\u043C\u043C\u0430|\u0411\u0438\u0440\u043E\u043A|\u0412\u0430|\u0412\u04D9|\u0414\u0430\u0434\u0435\u043D\u043E|\u0414\u0430\u043D\u043E|\u0414\u043E\u043F\u0443\u0441\u0442\u0438\u043C|\u0415\u0441\u043B\u0438|\u0417\u0430\u0434\u0430\u0442\u0435|\u0417\u0430\u0434\u0430\u0442\u0438|\u0417\u0430\u0434\u0430\u0442\u043E|\u0418|\u0406|\u041A \u0442\u043E\u043C\u0443 \u0436\u0435|\u041A\u0430\u0434\u0430|\u041A\u0430\u0434|\u041A\u043E\u0433\u0430\u0442\u043E|\u041A\u043E\u0433\u0434\u0430|\u041A\u043E\u043B\u0438|\u041B\u04D9\u043A\u0438\u043D|\u041B\u0435\u043A\u0438\u043D|\u041D\u04D9\u0442\u0438\u0497\u04D9\u0434\u04D9|\u041D\u0435\u0445\u0430\u0439|\u041D\u043E|\u041E\u043D\u0434\u0430|\u041F\u0440\u0438\u043F\u0443\u0441\u0442\u0438\u043C\u043E, \u0449\u043E|\u041F\u0440\u0438\u043F\u0443\u0441\u0442\u0438\u043C\u043E|\u041F\u0443\u0441\u0442\u044C|\u0422\u0430\u043A\u0436\u0435|\u0422\u0430|\u0422\u043E\u0433\u0434\u0430|\u0422\u043E\u0434\u0456|\u0422\u043E|\u0423\u043D\u0434\u0430|\u04BA\u04D9\u043C|\u042F\u043A\u0449\u043E|\u05D0\u05D1\u05DC|\u05D0\u05D6\u05D9|\u05D0\u05D6|\u05D1\u05D4\u05D9\u05E0\u05EA\u05DF|\u05D5\u05D2\u05DD|\u05DB\u05D0\u05E9\u05E8|\u0622\u0646\u06AF\u0627\u0647|\u0627\u0630\u0627\u064B|\u0627\u06AF\u0631|\u0627\u0645\u0627|\u0627\u0648\u0631|\u0628\u0627 \u0641\u0631\u0636|\u0628\u0627\u0644\u0641\u0631\u0636|\u0628\u0641\u0631\u0636|\u067E\u06BE\u0631|\u062A\u0628|\u062B\u0645|\u062C\u0628|\u0639\u0646\u062F\u0645\u0627|\u0641\u0631\u0636 \u06A9\u06CC\u0627|\u0644\u0643\u0646|\u0644\u06CC\u06A9\u0646|\u0645\u062A\u0649|\u0647\u0646\u06AF\u0627\u0645\u06CC|\u0648|\u0905\u0917\u0930|\u0914\u0930|\u0915\u0926\u093E|\u0915\u093F\u0928\u094D\u0924\u0941|\u091A\u0942\u0902\u0915\u093F|\u091C\u092C|\u0924\u0925\u093E|\u0924\u0926\u093E|\u0924\u092C|\u092A\u0930\u0928\u094D\u0924\u0941|\u092A\u0930|\u092F\u0926\u093F|\u0A05\u0A24\u0A47|\u0A1C\u0A26\u0A4B\u0A02|\u0A1C\u0A3F\u0A35\u0A47\u0A02 \u0A15\u0A3F|\u0A1C\u0A47\u0A15\u0A30|\u0A24\u0A26|\u0A2A\u0A30|\u0C05\u0C2A\u0C4D\u0C2A\u0C41\u0C21\u0C41|\u0C08 \u0C2A\u0C30\u0C3F\u0C38\u0C4D\u0C25\u0C3F\u0C24\u0C3F\u0C32\u0C4B|\u0C15\u0C3E\u0C28\u0C3F|\u0C1A\u0C46\u0C2A\u0C4D\u0C2A\u0C2C\u0C21\u0C3F\u0C28\u0C26\u0C3F|\u0C2E\u0C30\u0C3F\u0C2F\u0C41|\u0C86\u0CA6\u0CB0\u0CC6|\u0CA8\u0C82\u0CA4\u0CB0|\u0CA8\u0CBF\u0CD5\u0CA1\u0CBF\u0CA6|\u0CAE\u0CA4\u0CCD\u0CA4\u0CC1|\u0CB8\u0CCD\u0CA5\u0CBF\u0CA4\u0CBF\u0CAF\u0CA8\u0CCD\u0CA8\u0CC1|\u0E01\u0E33\u0E2B\u0E19\u0E14\u0E43\u0E2B\u0E49|\u0E14\u0E31\u0E07\u0E19\u0E31\u0E49\u0E19|\u0E41\u0E15\u0E48|\u0E40\u0E21\u0E37\u0E48\u0E2D|\u0E41\u0E25\u0E30|\uADF8\uB7EC\uBA74<|\uADF8\uB9AC\uACE0<|\uB2E8<|\uB9CC\uC57D<|\uB9CC\uC77C<|\uBA3C\uC800<|\uC870\uAC74<|\uD558\uC9C0\uB9CC<|\u304B\u3064<|\u3057\u304B\u3057<|\u305F\u3060\u3057<|\u306A\u3089\u3070<|\u3082\u3057<|\u4E26\u4E14<|\u4F46\u3057<|\u4F46\u662F<|\u5047\u5982<|\u5047\u5B9A<|\u5047\u8A2D<|\u5047\u8BBE<|\u524D\u63D0<|\u540C\u65F6<|\u540C\u6642<|\u5E76\u4E14<|\u5F53<|\u7576<|\u800C\u4E14<|\u90A3\u4E48<|\u90A3\u9EBC<)(?=[ \\t])/m,\n        lookbehind: true\n      },\n      string: {\n        pattern: /\"(?:\\\\.|[^\"\\\\\\r\\n])*\"|'(?:\\\\.|[^'\\\\\\r\\n])*'/,\n        inside: {\n          outline: {\n            pattern: /<[^>]+>/,\n            alias: 'variable'\n          }\n        }\n      },\n      outline: {\n        pattern: /<[^>]+>/,\n        alias: 'variable'\n      }\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ngit.displayName = 'git'\ngit.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function git(Prism) {\n  Prism.languages.git = {\n    /*\n     * A simple one line comment like in a git status command\n     * For instance:\n     * $ git status\n     * # On branch infinite-scroll\n     * # Your branch and 'origin/sharedBranches/frontendTeam/infinite-scroll' have diverged,\n     * # and have 1 and 2 different commits each, respectively.\n     * nothing to commit (working directory clean)\n     */\n    comment: /^#.*/m,\n    /*\n     * Regexp to match the changed lines in a git diff output. Check the example below.\n     */\n    deleted: /^[-\u2013].*/m,\n    inserted: /^\\+.*/m,\n    /*\n     * a string (double and simple quote)\n     */\n    string: /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n    /*\n     * a git command. It starts with a random prompt finishing by a $, then \"git\" then some other parameters\n     * For instance:\n     * $ git add file.txt\n     */\n    command: {\n      pattern: /^.*\\$ git .*$/m,\n      inside: {\n        /*\n         * A git command can contain a parameter starting by a single or a double dash followed by a string\n         * For instance:\n         * $ git diff --cached\n         * $ git log -p\n         */\n        parameter: /\\s--?\\w+/\n      }\n    },\n    /*\n     * Coordinates displayed in a git diff command\n     * For instance:\n     * $ git diff\n     * diff --git file.txt file.txt\n     * index 6214953..1d54a52 100644\n     * --- file.txt\n     * +++ file.txt\n     * @@ -1 +1,2 @@\n     * -Here's my tetx file\n     * +Here's my text file\n     * +And this is the second line\n     */\n    coord: /^@@.*@@$/m,\n    /*\n     * Match a \"commit [SHA1]\" line in a git log output.\n     * For instance:\n     * $ git log\n     * commit a11a14ef7e26f2ca62d4b35eac455ce636d0dc09\n     * Author: lgiraudel\n     * Date:   Mon Feb 17 11:18:34 2014 +0100\n     *\n     *     Add of a new line\n     */\n    'commit-sha1': /^commit \\w{40}$/m\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorC from './c.js'\nglsl.displayName = 'glsl'\nglsl.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function glsl(Prism) {\n  Prism.register(refractorC)\n  Prism.languages.glsl = Prism.languages.extend('c', {\n    keyword:\n      /\\b(?:active|asm|atomic_uint|attribute|[ibdu]?vec[234]|bool|break|buffer|case|cast|centroid|class|coherent|common|const|continue|d?mat[234](?:x[234])?|default|discard|do|double|else|enum|extern|external|false|filter|fixed|flat|float|for|fvec[234]|goto|half|highp|hvec[234]|[iu]?sampler2DMS(?:Array)?|[iu]?sampler2DRect|[iu]?samplerBuffer|[iu]?samplerCube|[iu]?samplerCubeArray|[iu]?sampler[123]D|[iu]?sampler[12]DArray|[iu]?image2DMS(?:Array)?|[iu]?image2DRect|[iu]?imageBuffer|[iu]?imageCube|[iu]?imageCubeArray|[iu]?image[123]D|[iu]?image[12]DArray|if|in|inline|inout|input|int|interface|invariant|layout|long|lowp|mediump|namespace|noinline|noperspective|out|output|partition|patch|precise|precision|public|readonly|resource|restrict|return|sample|sampler[12]DArrayShadow|sampler[12]DShadow|sampler2DRectShadow|sampler3DRect|samplerCubeArrayShadow|samplerCubeShadow|shared|short|sizeof|smooth|static|struct|subroutine|superp|switch|template|this|true|typedef|uint|uniform|union|unsigned|using|varying|void|volatile|while|writeonly)\\b/\n  })\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ngn.displayName = 'gn'\ngn.aliases = ['gni']\n\n/** @param {Refractor} Prism */\nexport default function gn(Prism) {\n  // https://gn.googlesource.com/gn/+/refs/heads/main/docs/reference.md#grammar\n\n  Prism.languages.gn = {\n    comment: {\n      pattern: /#.*/,\n      greedy: true\n    },\n    'string-literal': {\n      pattern: /(^|[^\\\\\"])\"(?:[^\\r\\n\"\\\\]|\\\\.)*\"/,\n      lookbehind: true,\n      greedy: true,\n      inside: {\n        interpolation: {\n          pattern:\n            /((?:^|[^\\\\])(?:\\\\{2})*)\\$(?:\\{[\\s\\S]*?\\}|[a-zA-Z_]\\w*|0x[a-fA-F0-9]{2})/,\n          lookbehind: true,\n          inside: {\n            number: /^\\$0x[\\s\\S]{2}$/,\n            variable: /^\\$\\w+$/,\n            'interpolation-punctuation': {\n              pattern: /^\\$\\{|\\}$/,\n              alias: 'punctuation'\n            },\n            expression: {\n              pattern: /[\\s\\S]+/,\n              inside: null // see below\n            }\n          }\n        },\n        string: /[\\s\\S]+/\n      }\n    },\n    keyword: /\\b(?:else|if)\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    'builtin-function': {\n      // a few functions get special highlighting to improve readability\n      pattern:\n        /\\b(?:assert|defined|foreach|import|pool|print|template|tool|toolchain)(?=\\s*\\()/i,\n      alias: 'keyword'\n    },\n    function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n    constant:\n      /\\b(?:current_cpu|current_os|current_toolchain|default_toolchain|host_cpu|host_os|root_build_dir|root_gen_dir|root_out_dir|target_cpu|target_gen_dir|target_os|target_out_dir)\\b/,\n    number: /-?\\b\\d+\\b/,\n    operator: /[-+!=<>]=?|&&|\\|\\|/,\n    punctuation: /[(){}[\\],.]/\n  }\n  Prism.languages.gn['string-literal'].inside['interpolation'].inside[\n    'expression'\n  ].inside = Prism.languages.gn\n  Prism.languages.gni = Prism.languages.gn\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nlinkerScript.displayName = 'linker-script'\nlinkerScript.aliases = ['ld']\n\n/** @param {Refractor} Prism */\nexport default function linkerScript(Prism) {\n  Prism.languages['linker-script'] = {\n    comment: {\n      pattern: /(^|\\s)\\/\\*[\\s\\S]*?(?:$|\\*\\/)/,\n      lookbehind: true,\n      greedy: true\n    },\n    identifier: {\n      pattern: /\"[^\"\\r\\n]*\"/,\n      greedy: true\n    },\n    'location-counter': {\n      pattern: /\\B\\.\\B/,\n      alias: 'important'\n    },\n    section: {\n      pattern: /(^|[^\\w*])\\.\\w+\\b/,\n      lookbehind: true,\n      alias: 'keyword'\n    },\n    function: /\\b[A-Z][A-Z_]*(?=\\s*\\()/,\n    number: /\\b(?:0[xX][a-fA-F0-9]+|\\d+)[KM]?\\b/,\n    operator: />>=?|<<=?|->|\\+\\+|--|&&|\\|\\||::|[?:~]|[-+*/%&|^!=<>]=?/,\n    punctuation: /[(){},;]/\n  }\n  Prism.languages['ld'] = Prism.languages['linker-script']\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ngoModule.displayName = 'go-module'\ngoModule.aliases = ['go-mod']\n\n/** @param {Refractor} Prism */\nexport default function goModule(Prism) {\n  // https://go.dev/ref/mod#go-mod-file-module\n\n  Prism.languages['go-mod'] = Prism.languages['go-module'] = {\n    comment: {\n      pattern: /\\/\\/.*/,\n      greedy: true\n    },\n    version: {\n      pattern: /(^|[\\s()[\\],])v\\d+\\.\\d+\\.\\d+(?:[+-][-+.\\w]*)?(?![^\\s()[\\],])/,\n      lookbehind: true,\n      alias: 'number'\n    },\n    'go-version': {\n      pattern: /((?:^|\\s)go\\s+)\\d+(?:\\.\\d+){1,2}/,\n      lookbehind: true,\n      alias: 'number'\n    },\n    keyword: {\n      pattern: /^([ \\t]*)(?:exclude|go|module|replace|require|retract)\\b/m,\n      lookbehind: true\n    },\n    operator: /=>/,\n    punctuation: /[()[\\],]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\ngradle.displayName = 'gradle'\ngradle.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function gradle(Prism) {\n  Prism.register(refractorClike)\n  ;(function (Prism) {\n    var interpolation = {\n      pattern: /((?:^|[^\\\\$])(?:\\\\{2})*)\\$(?:\\w+|\\{[^{}]*\\})/,\n      lookbehind: true,\n      inside: {\n        'interpolation-punctuation': {\n          pattern: /^\\$\\{?|\\}$/,\n          alias: 'punctuation'\n        },\n        expression: {\n          pattern: /[\\s\\S]+/,\n          inside: null\n        }\n      }\n    }\n    Prism.languages.gradle = Prism.languages.extend('clike', {\n      string: {\n        pattern: /'''(?:[^\\\\]|\\\\[\\s\\S])*?'''|'(?:\\\\.|[^\\\\'\\r\\n])*'/,\n        greedy: true\n      },\n      keyword:\n        /\\b(?:apply|def|dependencies|else|if|implementation|import|plugin|plugins|project|repositories|repository|sourceSets|tasks|val)\\b/,\n      number:\n        /\\b(?:0b[01_]+|0x[\\da-f_]+(?:\\.[\\da-f_p\\-]+)?|[\\d_]+(?:\\.[\\d_]+)?(?:e[+-]?\\d+)?)[glidf]?\\b/i,\n      operator: {\n        pattern:\n          /(^|[^.])(?:~|==?~?|\\?[.:]?|\\*(?:[.=]|\\*=?)?|\\.[@&]|\\.\\.<|\\.\\.(?!\\.)|-[-=>]?|\\+[+=]?|!=?|<(?:<=?|=>?)?|>(?:>>?=?|=)?|&[&=]?|\\|[|=]?|\\/=?|\\^=?|%=?)/,\n        lookbehind: true\n      },\n      punctuation: /\\.+|[{}[\\];(),:$]/\n    })\n    Prism.languages.insertBefore('gradle', 'string', {\n      shebang: {\n        pattern: /#!.+/,\n        alias: 'comment',\n        greedy: true\n      },\n      'interpolation-string': {\n        pattern:\n          /\"\"\"(?:[^\\\\]|\\\\[\\s\\S])*?\"\"\"|([\"/])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1|\\$\\/(?:[^/$]|\\$(?:[/$]|(?![/$]))|\\/(?!\\$))*\\/\\$/,\n        greedy: true,\n        inside: {\n          interpolation: interpolation,\n          string: /[\\s\\S]+/\n        }\n      }\n    })\n    Prism.languages.insertBefore('gradle', 'punctuation', {\n      'spock-block': /\\b(?:and|cleanup|expect|given|setup|then|when|where):/\n    })\n    Prism.languages.insertBefore('gradle', 'function', {\n      annotation: {\n        pattern: /(^|[^.])@\\w+/,\n        lookbehind: true,\n        alias: 'punctuation'\n      }\n    })\n    interpolation.inside.expression.inside = Prism.languages.gradle\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ngraphql.displayName = 'graphql'\ngraphql.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function graphql(Prism) {\n  Prism.languages.graphql = {\n    comment: /#.*/,\n    description: {\n      pattern:\n        /(?:\"\"\"(?:[^\"]|(?!\"\"\")\")*\"\"\"|\"(?:\\\\.|[^\\\\\"\\r\\n])*\")(?=\\s*[a-z_])/i,\n      greedy: true,\n      alias: 'string',\n      inside: {\n        'language-markdown': {\n          pattern: /(^\"(?:\"\")?)(?!\\1)[\\s\\S]+(?=\\1$)/,\n          lookbehind: true,\n          inside: Prism.languages.markdown\n        }\n      }\n    },\n    string: {\n      pattern: /\"\"\"(?:[^\"]|(?!\"\"\")\")*\"\"\"|\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/,\n      greedy: true\n    },\n    number: /(?:\\B-|\\b)\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,\n    boolean: /\\b(?:false|true)\\b/,\n    variable: /\\$[a-z_]\\w*/i,\n    directive: {\n      pattern: /@[a-z_]\\w*/i,\n      alias: 'function'\n    },\n    'attr-name': {\n      pattern: /\\b[a-z_]\\w*(?=\\s*(?:\\((?:[^()\"]|\"(?:\\\\.|[^\\\\\"\\r\\n])*\")*\\))?:)/i,\n      greedy: true\n    },\n    'atom-input': {\n      pattern: /\\b[A-Z]\\w*Input\\b/,\n      alias: 'class-name'\n    },\n    scalar: /\\b(?:Boolean|Float|ID|Int|String)\\b/,\n    constant: /\\b[A-Z][A-Z_\\d]*\\b/,\n    'class-name': {\n      pattern:\n        /(\\b(?:enum|implements|interface|on|scalar|type|union)\\s+|&\\s*|:\\s*|\\[)[A-Z_]\\w*/,\n      lookbehind: true\n    },\n    fragment: {\n      pattern: /(\\bfragment\\s+|\\.{3}\\s*(?!on\\b))[a-zA-Z_]\\w*/,\n      lookbehind: true,\n      alias: 'function'\n    },\n    'definition-mutation': {\n      pattern: /(\\bmutation\\s+)[a-zA-Z_]\\w*/,\n      lookbehind: true,\n      alias: 'function'\n    },\n    'definition-query': {\n      pattern: /(\\bquery\\s+)[a-zA-Z_]\\w*/,\n      lookbehind: true,\n      alias: 'function'\n    },\n    keyword:\n      /\\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\\b/,\n    operator: /[!=|&]|\\.{3}/,\n    'property-query': /\\w+(?=\\s*\\()/,\n    object: /\\w+(?=\\s*\\{)/,\n    punctuation: /[!(){}\\[\\]:=,]/,\n    property: /\\w+/\n  }\n  Prism.hooks.add('after-tokenize', function afterTokenizeGraphql(env) {\n    if (env.language !== 'graphql') {\n      return\n    }\n\n    /**\n     * get the graphql token stream that we want to customize\n     *\n     * @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token\n     * @type {Token[]}\n     */\n    var validTokens = env.tokens.filter(function (token) {\n      return (\n        typeof token !== 'string' &&\n        token.type !== 'comment' &&\n        token.type !== 'scalar'\n      )\n    })\n    var currentIndex = 0\n\n    /**\n     * Returns whether the token relative to the current index has the given type.\n     *\n     * @param {number} offset\n     * @returns {Token | undefined}\n     */\n    function getToken(offset) {\n      return validTokens[currentIndex + offset]\n    }\n\n    /**\n     * Returns whether the token relative to the current index has the given type.\n     *\n     * @param {readonly string[]} types\n     * @param {number} [offset=0]\n     * @returns {boolean}\n     */\n    function isTokenType(types, offset) {\n      offset = offset || 0\n      for (var i = 0; i < types.length; i++) {\n        var token = getToken(i + offset)\n        if (!token || token.type !== types[i]) {\n          return false\n        }\n      }\n      return true\n    }\n\n    /**\n     * Returns the index of the closing bracket to an opening bracket.\n     *\n     * It is assumed that `token[currentIndex - 1]` is an opening bracket.\n     *\n     * If no closing bracket could be found, `-1` will be returned.\n     *\n     * @param {RegExp} open\n     * @param {RegExp} close\n     * @returns {number}\n     */\n    function findClosingBracket(open, close) {\n      var stackHeight = 1\n      for (var i = currentIndex; i < validTokens.length; i++) {\n        var token = validTokens[i]\n        var content = token.content\n        if (token.type === 'punctuation' && typeof content === 'string') {\n          if (open.test(content)) {\n            stackHeight++\n          } else if (close.test(content)) {\n            stackHeight--\n            if (stackHeight === 0) {\n              return i\n            }\n          }\n        }\n      }\n      return -1\n    }\n\n    /**\n     * Adds an alias to the given token.\n     *\n     * @param {Token} token\n     * @param {string} alias\n     * @returns {void}\n     */\n    function addAlias(token, alias) {\n      var aliases = token.alias\n      if (!aliases) {\n        token.alias = aliases = []\n      } else if (!Array.isArray(aliases)) {\n        token.alias = aliases = [aliases]\n      }\n      aliases.push(alias)\n    }\n    for (; currentIndex < validTokens.length; ) {\n      var startToken = validTokens[currentIndex++]\n\n      // add special aliases for mutation tokens\n      if (startToken.type === 'keyword' && startToken.content === 'mutation') {\n        // any array of the names of all input variables (if any)\n        var inputVariables = []\n        if (\n          isTokenType(['definition-mutation', 'punctuation']) &&\n          getToken(1).content === '('\n        ) {\n          // definition\n\n          currentIndex += 2 // skip 'definition-mutation' and 'punctuation'\n\n          var definitionEnd = findClosingBracket(/^\\($/, /^\\)$/)\n          if (definitionEnd === -1) {\n            continue\n          }\n\n          // find all input variables\n          for (; currentIndex < definitionEnd; currentIndex++) {\n            var t = getToken(0)\n            if (t.type === 'variable') {\n              addAlias(t, 'variable-input')\n              inputVariables.push(t.content)\n            }\n          }\n          currentIndex = definitionEnd + 1\n        }\n        if (\n          isTokenType(['punctuation', 'property-query']) &&\n          getToken(0).content === '{'\n        ) {\n          currentIndex++ // skip opening bracket\n\n          addAlias(getToken(0), 'property-mutation')\n          if (inputVariables.length > 0) {\n            var mutationEnd = findClosingBracket(/^\\{$/, /^\\}$/)\n            if (mutationEnd === -1) {\n              continue\n            }\n\n            // give references to input variables a special alias\n            for (var i = currentIndex; i < mutationEnd; i++) {\n              var varToken = validTokens[i]\n              if (\n                varToken.type === 'variable' &&\n                inputVariables.indexOf(varToken.content) >= 0\n              ) {\n                addAlias(varToken, 'variable-input')\n              }\n            }\n          }\n        }\n      }\n    }\n  })\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\ngroovy.displayName = 'groovy'\ngroovy.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function groovy(Prism) {\n  Prism.register(refractorClike)\n  ;(function (Prism) {\n    var interpolation = {\n      pattern: /((?:^|[^\\\\$])(?:\\\\{2})*)\\$(?:\\w+|\\{[^{}]*\\})/,\n      lookbehind: true,\n      inside: {\n        'interpolation-punctuation': {\n          pattern: /^\\$\\{?|\\}$/,\n          alias: 'punctuation'\n        },\n        expression: {\n          pattern: /[\\s\\S]+/,\n          inside: null // see below\n        }\n      }\n    }\n    Prism.languages.groovy = Prism.languages.extend('clike', {\n      string: {\n        // https://groovy-lang.org/syntax.html#_dollar_slashy_string\n        pattern: /'''(?:[^\\\\]|\\\\[\\s\\S])*?'''|'(?:\\\\.|[^\\\\'\\r\\n])*'/,\n        greedy: true\n      },\n      keyword:\n        /\\b(?:abstract|as|assert|boolean|break|byte|case|catch|char|class|const|continue|def|default|do|double|else|enum|extends|final|finally|float|for|goto|if|implements|import|in|instanceof|int|interface|long|native|new|package|private|protected|public|return|short|static|strictfp|super|switch|synchronized|this|throw|throws|trait|transient|try|void|volatile|while)\\b/,\n      number:\n        /\\b(?:0b[01_]+|0x[\\da-f_]+(?:\\.[\\da-f_p\\-]+)?|[\\d_]+(?:\\.[\\d_]+)?(?:e[+-]?\\d+)?)[glidf]?\\b/i,\n      operator: {\n        pattern:\n          /(^|[^.])(?:~|==?~?|\\?[.:]?|\\*(?:[.=]|\\*=?)?|\\.[@&]|\\.\\.<|\\.\\.(?!\\.)|-[-=>]?|\\+[+=]?|!=?|<(?:<=?|=>?)?|>(?:>>?=?|=)?|&[&=]?|\\|[|=]?|\\/=?|\\^=?|%=?)/,\n        lookbehind: true\n      },\n      punctuation: /\\.+|[{}[\\];(),:$]/\n    })\n    Prism.languages.insertBefore('groovy', 'string', {\n      shebang: {\n        pattern: /#!.+/,\n        alias: 'comment',\n        greedy: true\n      },\n      'interpolation-string': {\n        // TODO: Slash strings (e.g. /foo/) can contain line breaks but this will cause a lot of trouble with\n        // simple division (see JS regex), so find a fix maybe?\n        pattern:\n          /\"\"\"(?:[^\\\\]|\\\\[\\s\\S])*?\"\"\"|([\"/])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1|\\$\\/(?:[^/$]|\\$(?:[/$]|(?![/$]))|\\/(?!\\$))*\\/\\$/,\n        greedy: true,\n        inside: {\n          interpolation: interpolation,\n          string: /[\\s\\S]+/\n        }\n      }\n    })\n    Prism.languages.insertBefore('groovy', 'punctuation', {\n      'spock-block': /\\b(?:and|cleanup|expect|given|setup|then|when|where):/\n    })\n    Prism.languages.insertBefore('groovy', 'function', {\n      annotation: {\n        pattern: /(^|[^.])@\\w+/,\n        lookbehind: true,\n        alias: 'punctuation'\n      }\n    })\n    interpolation.inside.expression.inside = Prism.languages.groovy\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorMarkup from './markup.js'\ntextile.displayName = 'textile'\ntextile.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function textile(Prism) {\n  Prism.register(refractorMarkup)\n  ;(function (Prism) {\n    // We don't allow for pipes inside parentheses\n    // to not break table pattern |(. foo |). bar |\n    var modifierRegex = /\\([^|()\\n]+\\)|\\[[^\\]\\n]+\\]|\\{[^}\\n]+\\}/.source\n    // Opening and closing parentheses which are not a modifier\n    // This pattern is necessary to prevent exponential backtracking\n    var parenthesesRegex = /\\)|\\((?![^|()\\n]+\\))/.source\n    /**\n     * @param {string} source\n     * @param {string} [flags]\n     */\n    function withModifier(source, flags) {\n      return RegExp(\n        source\n          .replace(/<MOD>/g, function () {\n            return '(?:' + modifierRegex + ')'\n          })\n          .replace(/<PAR>/g, function () {\n            return '(?:' + parenthesesRegex + ')'\n          }),\n        flags || ''\n      )\n    }\n    var modifierTokens = {\n      css: {\n        pattern: /\\{[^{}]+\\}/,\n        inside: {\n          rest: Prism.languages.css\n        }\n      },\n      'class-id': {\n        pattern: /(\\()[^()]+(?=\\))/,\n        lookbehind: true,\n        alias: 'attr-value'\n      },\n      lang: {\n        pattern: /(\\[)[^\\[\\]]+(?=\\])/,\n        lookbehind: true,\n        alias: 'attr-value'\n      },\n      // Anything else is punctuation (the first pattern is for row/col spans inside tables)\n      punctuation: /[\\\\\\/]\\d+|\\S/\n    }\n    var textile = (Prism.languages.textile = Prism.languages.extend('markup', {\n      phrase: {\n        pattern: /(^|\\r|\\n)\\S[\\s\\S]*?(?=$|\\r?\\n\\r?\\n|\\r\\r)/,\n        lookbehind: true,\n        inside: {\n          // h1. Header 1\n          'block-tag': {\n            pattern: withModifier(/^[a-z]\\w*(?:<MOD>|<PAR>|[<>=])*\\./.source),\n            inside: {\n              modifier: {\n                pattern: withModifier(\n                  /(^[a-z]\\w*)(?:<MOD>|<PAR>|[<>=])+(?=\\.)/.source\n                ),\n                lookbehind: true,\n                inside: modifierTokens\n              },\n              tag: /^[a-z]\\w*/,\n              punctuation: /\\.$/\n            }\n          },\n          // # List item\n          // * List item\n          list: {\n            pattern: withModifier(/^[*#]+<MOD>*\\s+\\S.*/.source, 'm'),\n            inside: {\n              modifier: {\n                pattern: withModifier(/(^[*#]+)<MOD>+/.source),\n                lookbehind: true,\n                inside: modifierTokens\n              },\n              punctuation: /^[*#]+/\n            }\n          },\n          // | cell | cell | cell |\n          table: {\n            // Modifiers can be applied to the row: {color:red}.|1|2|3|\n            // or the cell: |{color:red}.1|2|3|\n            pattern: withModifier(\n              /^(?:(?:<MOD>|<PAR>|[<>=^~])+\\.\\s*)?(?:\\|(?:(?:<MOD>|<PAR>|[<>=^~_]|[\\\\/]\\d+)+\\.|(?!(?:<MOD>|<PAR>|[<>=^~_]|[\\\\/]\\d+)+\\.))[^|]*)+\\|/\n                .source,\n              'm'\n            ),\n            inside: {\n              modifier: {\n                // Modifiers for rows after the first one are\n                // preceded by a pipe and a line feed\n                pattern: withModifier(\n                  /(^|\\|(?:\\r?\\n|\\r)?)(?:<MOD>|<PAR>|[<>=^~_]|[\\\\/]\\d+)+(?=\\.)/\n                    .source\n                ),\n                lookbehind: true,\n                inside: modifierTokens\n              },\n              punctuation: /\\||^\\./\n            }\n          },\n          inline: {\n            // eslint-disable-next-line regexp/no-super-linear-backtracking\n            pattern: withModifier(\n              /(^|[^a-zA-Z\\d])(\\*\\*|__|\\?\\?|[*_%@+\\-^~])<MOD>*.+?\\2(?![a-zA-Z\\d])/\n                .source\n            ),\n            lookbehind: true,\n            inside: {\n              // Note: superscripts and subscripts are not handled specifically\n\n              // *bold*, **bold**\n              bold: {\n                // eslint-disable-next-line regexp/no-super-linear-backtracking\n                pattern: withModifier(/(^(\\*\\*?)<MOD>*).+?(?=\\2)/.source),\n                lookbehind: true\n              },\n              // _italic_, __italic__\n              italic: {\n                // eslint-disable-next-line regexp/no-super-linear-backtracking\n                pattern: withModifier(/(^(__?)<MOD>*).+?(?=\\2)/.source),\n                lookbehind: true\n              },\n              // ??cite??\n              cite: {\n                // eslint-disable-next-line regexp/no-super-linear-backtracking\n                pattern: withModifier(/(^\\?\\?<MOD>*).+?(?=\\?\\?)/.source),\n                lookbehind: true,\n                alias: 'string'\n              },\n              // @code@\n              code: {\n                // eslint-disable-next-line regexp/no-super-linear-backtracking\n                pattern: withModifier(/(^@<MOD>*).+?(?=@)/.source),\n                lookbehind: true,\n                alias: 'keyword'\n              },\n              // +inserted+\n              inserted: {\n                // eslint-disable-next-line regexp/no-super-linear-backtracking\n                pattern: withModifier(/(^\\+<MOD>*).+?(?=\\+)/.source),\n                lookbehind: true\n              },\n              // -deleted-\n              deleted: {\n                // eslint-disable-next-line regexp/no-super-linear-backtracking\n                pattern: withModifier(/(^-<MOD>*).+?(?=-)/.source),\n                lookbehind: true\n              },\n              // %span%\n              span: {\n                // eslint-disable-next-line regexp/no-super-linear-backtracking\n                pattern: withModifier(/(^%<MOD>*).+?(?=%)/.source),\n                lookbehind: true\n              },\n              modifier: {\n                pattern: withModifier(\n                  /(^\\*\\*|__|\\?\\?|[*_%@+\\-^~])<MOD>+/.source\n                ),\n                lookbehind: true,\n                inside: modifierTokens\n              },\n              punctuation: /[*_%?@+\\-^~]+/\n            }\n          },\n          // [alias]http://example.com\n          'link-ref': {\n            pattern: /^\\[[^\\]]+\\]\\S+$/m,\n            inside: {\n              string: {\n                pattern: /(^\\[)[^\\]]+(?=\\])/,\n                lookbehind: true\n              },\n              url: {\n                pattern: /(^\\])\\S+$/,\n                lookbehind: true\n              },\n              punctuation: /[\\[\\]]/\n            }\n          },\n          // \"text\":http://example.com\n          // \"text\":link-ref\n          link: {\n            // eslint-disable-next-line regexp/no-super-linear-backtracking\n            pattern: withModifier(\n              /\"<MOD>*[^\"]+\":.+?(?=[^\\w/]?(?:\\s|$))/.source\n            ),\n            inside: {\n              text: {\n                // eslint-disable-next-line regexp/no-super-linear-backtracking\n                pattern: withModifier(/(^\"<MOD>*)[^\"]+(?=\")/.source),\n                lookbehind: true\n              },\n              modifier: {\n                pattern: withModifier(/(^\")<MOD>+/.source),\n                lookbehind: true,\n                inside: modifierTokens\n              },\n              url: {\n                pattern: /(:).+/,\n                lookbehind: true\n              },\n              punctuation: /[\":]/\n            }\n          },\n          // !image.jpg!\n          // !image.jpg(Title)!:http://example.com\n          image: {\n            pattern: withModifier(\n              /!(?:<MOD>|<PAR>|[<>=])*(?![<>=])[^!\\s()]+(?:\\([^)]+\\))?!(?::.+?(?=[^\\w/]?(?:\\s|$)))?/\n                .source\n            ),\n            inside: {\n              source: {\n                pattern: withModifier(\n                  /(^!(?:<MOD>|<PAR>|[<>=])*)(?![<>=])[^!\\s()]+(?:\\([^)]+\\))?(?=!)/\n                    .source\n                ),\n                lookbehind: true,\n                alias: 'url'\n              },\n              modifier: {\n                pattern: withModifier(/(^!)(?:<MOD>|<PAR>|[<>=])+/.source),\n                lookbehind: true,\n                inside: modifierTokens\n              },\n              url: {\n                pattern: /(:).+/,\n                lookbehind: true\n              },\n              punctuation: /[!:]/\n            }\n          },\n          // Footnote[1]\n          footnote: {\n            pattern: /\\b\\[\\d+\\]/,\n            alias: 'comment',\n            inside: {\n              punctuation: /\\[|\\]/\n            }\n          },\n          // CSS(Cascading Style Sheet)\n          acronym: {\n            pattern: /\\b[A-Z\\d]+\\([^)]+\\)/,\n            inside: {\n              comment: {\n                pattern: /(\\()[^()]+(?=\\))/,\n                lookbehind: true\n              },\n              punctuation: /[()]/\n            }\n          },\n          // Prism(C)\n          mark: {\n            pattern: /\\b\\((?:C|R|TM)\\)/,\n            alias: 'comment',\n            inside: {\n              punctuation: /[()]/\n            }\n          }\n        }\n      }\n    }))\n    var phraseInside = textile['phrase'].inside\n    var nestedPatterns = {\n      inline: phraseInside['inline'],\n      link: phraseInside['link'],\n      image: phraseInside['image'],\n      footnote: phraseInside['footnote'],\n      acronym: phraseInside['acronym'],\n      mark: phraseInside['mark']\n    }\n\n    // Only allow alpha-numeric HTML tags, not XML tags\n    textile.tag.pattern =\n      /<\\/?(?!\\d)[a-z0-9]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i\n\n    // Allow some nesting\n    var phraseInlineInside = phraseInside['inline'].inside\n    phraseInlineInside['bold'].inside = nestedPatterns\n    phraseInlineInside['italic'].inside = nestedPatterns\n    phraseInlineInside['inserted'].inside = nestedPatterns\n    phraseInlineInside['deleted'].inside = nestedPatterns\n    phraseInlineInside['span'].inside = nestedPatterns\n\n    // Allow some styles inside table cells\n    var phraseTableInside = phraseInside['table'].inside\n    phraseTableInside['inline'] = nestedPatterns['inline']\n    phraseTableInside['link'] = nestedPatterns['link']\n    phraseTableInside['image'] = nestedPatterns['image']\n    phraseTableInside['footnote'] = nestedPatterns['footnote']\n    phraseTableInside['acronym'] = nestedPatterns['acronym']\n    phraseTableInside['mark'] = nestedPatterns['mark']\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorRuby from './ruby.js'\nhaml.displayName = 'haml'\nhaml.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function haml(Prism) {\n  Prism.register(refractorRuby)\n  /* TODO\nHandle multiline code after tag\n%foo= some |\nmultiline |\ncode |\n*/\n\n  ;(function (Prism) {\n    Prism.languages.haml = {\n      // Multiline stuff should appear before the rest\n\n      'multiline-comment': {\n        pattern:\n          /((?:^|\\r?\\n|\\r)([\\t ]*))(?:\\/|-#).*(?:(?:\\r?\\n|\\r)\\2[\\t ].+)*/,\n        lookbehind: true,\n        alias: 'comment'\n      },\n      'multiline-code': [\n        {\n          pattern:\n            /((?:^|\\r?\\n|\\r)([\\t ]*)(?:[~-]|[&!]?=)).*,[\\t ]*(?:(?:\\r?\\n|\\r)\\2[\\t ].*,[\\t ]*)*(?:(?:\\r?\\n|\\r)\\2[\\t ].+)/,\n          lookbehind: true,\n          inside: Prism.languages.ruby\n        },\n        {\n          pattern:\n            /((?:^|\\r?\\n|\\r)([\\t ]*)(?:[~-]|[&!]?=)).*\\|[\\t ]*(?:(?:\\r?\\n|\\r)\\2[\\t ].*\\|[\\t ]*)*/,\n          lookbehind: true,\n          inside: Prism.languages.ruby\n        }\n      ],\n      // See at the end of the file for known filters\n      filter: {\n        pattern:\n          /((?:^|\\r?\\n|\\r)([\\t ]*)):[\\w-]+(?:(?:\\r?\\n|\\r)(?:\\2[\\t ].+|\\s*?(?=\\r?\\n|\\r)))+/,\n        lookbehind: true,\n        inside: {\n          'filter-name': {\n            pattern: /^:[\\w-]+/,\n            alias: 'symbol'\n          }\n        }\n      },\n      markup: {\n        pattern: /((?:^|\\r?\\n|\\r)[\\t ]*)<.+/,\n        lookbehind: true,\n        inside: Prism.languages.markup\n      },\n      doctype: {\n        pattern: /((?:^|\\r?\\n|\\r)[\\t ]*)!!!(?: .+)?/,\n        lookbehind: true\n      },\n      tag: {\n        // Allows for one nested group of braces\n        pattern:\n          /((?:^|\\r?\\n|\\r)[\\t ]*)[%.#][\\w\\-#.]*[\\w\\-](?:\\([^)]+\\)|\\{(?:\\{[^}]+\\}|[^{}])+\\}|\\[[^\\]]+\\])*[\\/<>]*/,\n        lookbehind: true,\n        inside: {\n          attributes: [\n            {\n              // Lookbehind tries to prevent interpolations from breaking it all\n              // Allows for one nested group of braces\n              pattern: /(^|[^#])\\{(?:\\{[^}]+\\}|[^{}])+\\}/,\n              lookbehind: true,\n              inside: Prism.languages.ruby\n            },\n            {\n              pattern: /\\([^)]+\\)/,\n              inside: {\n                'attr-value': {\n                  pattern: /(=\\s*)(?:\"(?:\\\\.|[^\\\\\"\\r\\n])*\"|[^)\\s]+)/,\n                  lookbehind: true\n                },\n                'attr-name': /[\\w:-]+(?=\\s*!?=|\\s*[,)])/,\n                punctuation: /[=(),]/\n              }\n            },\n            {\n              pattern: /\\[[^\\]]+\\]/,\n              inside: Prism.languages.ruby\n            }\n          ],\n          punctuation: /[<>]/\n        }\n      },\n      code: {\n        pattern: /((?:^|\\r?\\n|\\r)[\\t ]*(?:[~-]|[&!]?=)).+/,\n        lookbehind: true,\n        inside: Prism.languages.ruby\n      },\n      // Interpolations in plain text\n      interpolation: {\n        pattern: /#\\{[^}]+\\}/,\n        inside: {\n          delimiter: {\n            pattern: /^#\\{|\\}$/,\n            alias: 'punctuation'\n          },\n          ruby: {\n            pattern: /[\\s\\S]+/,\n            inside: Prism.languages.ruby\n          }\n        }\n      },\n      punctuation: {\n        pattern: /((?:^|\\r?\\n|\\r)[\\t ]*)[~=\\-&!]+/,\n        lookbehind: true\n      }\n    }\n    var filter_pattern =\n      '((?:^|\\\\r?\\\\n|\\\\r)([\\\\t ]*)):{{filter_name}}(?:(?:\\\\r?\\\\n|\\\\r)(?:\\\\2[\\\\t ].+|\\\\s*?(?=\\\\r?\\\\n|\\\\r)))+'\n\n    // Non exhaustive list of available filters and associated languages\n    var filters = [\n      'css',\n      {\n        filter: 'coffee',\n        language: 'coffeescript'\n      },\n      'erb',\n      'javascript',\n      'less',\n      'markdown',\n      'ruby',\n      'scss',\n      'textile'\n    ]\n    var all_filters = {}\n    for (var i = 0, l = filters.length; i < l; i++) {\n      var filter = filters[i]\n      filter =\n        typeof filter === 'string'\n          ? {\n              filter: filter,\n              language: filter\n            }\n          : filter\n      if (Prism.languages[filter.language]) {\n        all_filters['filter-' + filter.filter] = {\n          pattern: RegExp(\n            filter_pattern.replace('{{filter_name}}', function () {\n              return filter.filter\n            })\n          ),\n          lookbehind: true,\n          inside: {\n            'filter-name': {\n              pattern: /^:[\\w-]+/,\n              alias: 'symbol'\n            },\n            text: {\n              pattern: /[\\s\\S]+/,\n              alias: [filter.language, 'language-' + filter.language],\n              inside: Prism.languages[filter.language]\n            }\n          }\n        }\n      }\n    }\n    Prism.languages.insertBefore('haml', 'filter', all_filters)\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorMarkupTemplating from './markup-templating.js'\nhandlebars.displayName = 'handlebars'\nhandlebars.aliases = ['hbs', 'mustache']\n\n/** @param {Refractor} Prism */\nexport default function handlebars(Prism) {\n  Prism.register(refractorMarkupTemplating)\n  ;(function (Prism) {\n    Prism.languages.handlebars = {\n      comment: /\\{\\{![\\s\\S]*?\\}\\}/,\n      delimiter: {\n        pattern: /^\\{\\{\\{?|\\}\\}\\}?$/,\n        alias: 'punctuation'\n      },\n      string: /([\"'])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      number: /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee][+-]?\\d+)?/,\n      boolean: /\\b(?:false|true)\\b/,\n      block: {\n        pattern: /^(\\s*(?:~\\s*)?)[#\\/]\\S+?(?=\\s*(?:~\\s*)?$|\\s)/,\n        lookbehind: true,\n        alias: 'keyword'\n      },\n      brackets: {\n        pattern: /\\[[^\\]]+\\]/,\n        inside: {\n          punctuation: /\\[|\\]/,\n          variable: /[\\s\\S]+/\n        }\n      },\n      punctuation: /[!\"#%&':()*+,.\\/;<=>@\\[\\\\\\]^`{|}~]/,\n      variable: /[^!\"#%&'()*+,\\/;<=>@\\[\\\\\\]^`{|}~\\s]+/\n    }\n    Prism.hooks.add('before-tokenize', function (env) {\n      var handlebarsPattern = /\\{\\{\\{[\\s\\S]+?\\}\\}\\}|\\{\\{[\\s\\S]+?\\}\\}/g\n      Prism.languages['markup-templating'].buildPlaceholders(\n        env,\n        'handlebars',\n        handlebarsPattern\n      )\n    })\n    Prism.hooks.add('after-tokenize', function (env) {\n      Prism.languages['markup-templating'].tokenizePlaceholders(\n        env,\n        'handlebars'\n      )\n    })\n    Prism.languages.hbs = Prism.languages.handlebars\n    Prism.languages.mustache = Prism.languages.handlebars\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nhaskell.displayName = 'haskell'\nhaskell.aliases = ['hs']\n\n/** @param {Refractor} Prism */\nexport default function haskell(Prism) {\n  Prism.languages.haskell = {\n    comment: {\n      pattern:\n        /(^|[^-!#$%*+=?&@|~.:<>^\\\\\\/])(?:--(?:(?=.)[^-!#$%*+=?&@|~.:<>^\\\\\\/].*|$)|\\{-[\\s\\S]*?-\\})/m,\n      lookbehind: true\n    },\n    char: {\n      pattern:\n        /'(?:[^\\\\']|\\\\(?:[abfnrtv\\\\\"'&]|\\^[A-Z@[\\]^_]|ACK|BEL|BS|CAN|CR|DC1|DC2|DC3|DC4|DEL|DLE|EM|ENQ|EOT|ESC|ETB|ETX|FF|FS|GS|HT|LF|NAK|NUL|RS|SI|SO|SOH|SP|STX|SUB|SYN|US|VT|\\d+|o[0-7]+|x[0-9a-fA-F]+))'/,\n      alias: 'string'\n    },\n    string: {\n      pattern: /\"(?:[^\\\\\"]|\\\\(?:\\S|\\s+\\\\))*\"/,\n      greedy: true\n    },\n    keyword:\n      /\\b(?:case|class|data|deriving|do|else|if|in|infixl|infixr|instance|let|module|newtype|of|primitive|then|type|where)\\b/,\n    'import-statement': {\n      // The imported or hidden names are not included in this import\n      // statement. This is because we want to highlight those exactly like\n      // we do for the names in the program.\n      pattern:\n        /(^[\\t ]*)import\\s+(?:qualified\\s+)?(?:[A-Z][\\w']*)(?:\\.[A-Z][\\w']*)*(?:\\s+as\\s+(?:[A-Z][\\w']*)(?:\\.[A-Z][\\w']*)*)?(?:\\s+hiding\\b)?/m,\n      lookbehind: true,\n      inside: {\n        keyword: /\\b(?:as|hiding|import|qualified)\\b/,\n        punctuation: /\\./\n      }\n    },\n    // These are builtin variables only. Constructors are highlighted later as a constant.\n    builtin:\n      /\\b(?:abs|acos|acosh|all|and|any|appendFile|approxRational|asTypeOf|asin|asinh|atan|atan2|atanh|basicIORun|break|catch|ceiling|chr|compare|concat|concatMap|const|cos|cosh|curry|cycle|decodeFloat|denominator|digitToInt|div|divMod|drop|dropWhile|either|elem|encodeFloat|enumFrom|enumFromThen|enumFromThenTo|enumFromTo|error|even|exp|exponent|fail|filter|flip|floatDigits|floatRadix|floatRange|floor|fmap|foldl|foldl1|foldr|foldr1|fromDouble|fromEnum|fromInt|fromInteger|fromIntegral|fromRational|fst|gcd|getChar|getContents|getLine|group|head|id|inRange|index|init|intToDigit|interact|ioError|isAlpha|isAlphaNum|isAscii|isControl|isDenormalized|isDigit|isHexDigit|isIEEE|isInfinite|isLower|isNaN|isNegativeZero|isOctDigit|isPrint|isSpace|isUpper|iterate|last|lcm|length|lex|lexDigits|lexLitChar|lines|log|logBase|lookup|map|mapM|mapM_|max|maxBound|maximum|maybe|min|minBound|minimum|mod|negate|not|notElem|null|numerator|odd|or|ord|otherwise|pack|pi|pred|primExitWith|print|product|properFraction|putChar|putStr|putStrLn|quot|quotRem|range|rangeSize|read|readDec|readFile|readFloat|readHex|readIO|readInt|readList|readLitChar|readLn|readOct|readParen|readSigned|reads|readsPrec|realToFrac|recip|rem|repeat|replicate|return|reverse|round|scaleFloat|scanl|scanl1|scanr|scanr1|seq|sequence|sequence_|show|showChar|showInt|showList|showLitChar|showParen|showSigned|showString|shows|showsPrec|significand|signum|sin|sinh|snd|sort|span|splitAt|sqrt|subtract|succ|sum|tail|take|takeWhile|tan|tanh|threadToIOResult|toEnum|toInt|toInteger|toLower|toRational|toUpper|truncate|uncurry|undefined|unlines|until|unwords|unzip|unzip3|userError|words|writeFile|zip|zip3|zipWith|zipWith3)\\b/,\n    // decimal integers and floating point numbers | octal integers | hexadecimal integers\n    number: /\\b(?:\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?|0o[0-7]+|0x[0-9a-f]+)\\b/i,\n    operator: [\n      {\n        // infix operator\n        pattern: /`(?:[A-Z][\\w']*\\.)*[_a-z][\\w']*`/,\n        greedy: true\n      },\n      {\n        // function composition\n        pattern: /(\\s)\\.(?=\\s)/,\n        lookbehind: true\n      },\n      // Most of this is needed because of the meaning of a single '.'.\n      // If it stands alone freely, it is the function composition.\n      // It may also be a separator between a module name and an identifier => no\n      // operator. If it comes together with other special characters it is an\n      // operator too.\n      //\n      // This regex means: /[-!#$%*+=?&@|~.:<>^\\\\\\/]+/ without /\\./.\n      /[-!#$%*+=?&@|~:<>^\\\\\\/][-!#$%*+=?&@|~.:<>^\\\\\\/]*|\\.[-!#$%*+=?&@|~.:<>^\\\\\\/]+/\n    ],\n    // In Haskell, nearly everything is a variable, do not highlight these.\n    hvariable: {\n      pattern: /\\b(?:[A-Z][\\w']*\\.)*[_a-z][\\w']*/,\n      inside: {\n        punctuation: /\\./\n      }\n    },\n    constant: {\n      pattern: /\\b(?:[A-Z][\\w']*\\.)*[A-Z][\\w']*/,\n      inside: {\n        punctuation: /\\./\n      }\n    },\n    punctuation: /[{}[\\];(),.:]/\n  }\n  Prism.languages.hs = Prism.languages.haskell\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\nhaxe.displayName = 'haxe'\nhaxe.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function haxe(Prism) {\n  Prism.register(refractorClike)\n  Prism.languages.haxe = Prism.languages.extend('clike', {\n    string: {\n      // Strings can be multi-line\n      pattern: /\"(?:[^\"\\\\]|\\\\[\\s\\S])*\"/,\n      greedy: true\n    },\n    'class-name': [\n      {\n        pattern:\n          /(\\b(?:abstract|class|enum|extends|implements|interface|new|typedef)\\s+)[A-Z_]\\w*/,\n        lookbehind: true\n      },\n      // based on naming convention\n      /\\b[A-Z]\\w*/\n    ],\n    // The final look-ahead prevents highlighting of keywords if expressions such as \"haxe.macro.Expr\"\n    keyword:\n      /\\bthis\\b|\\b(?:abstract|as|break|case|cast|catch|class|continue|default|do|dynamic|else|enum|extends|extern|final|for|from|function|if|implements|import|in|inline|interface|macro|new|null|operator|overload|override|package|private|public|return|static|super|switch|throw|to|try|typedef|untyped|using|var|while)(?!\\.)\\b/,\n    function: {\n      pattern: /\\b[a-z_]\\w*(?=\\s*(?:<[^<>]*>\\s*)?\\()/i,\n      greedy: true\n    },\n    operator: /\\.{3}|\\+\\+|--|&&|\\|\\||->|=>|(?:<<?|>{1,3}|[-+*/%!=&|^])=?|[?:~]/\n  })\n  Prism.languages.insertBefore('haxe', 'string', {\n    'string-interpolation': {\n      pattern: /'(?:[^'\\\\]|\\\\[\\s\\S])*'/,\n      greedy: true,\n      inside: {\n        interpolation: {\n          pattern: /(^|[^\\\\])\\$(?:\\w+|\\{[^{}]+\\})/,\n          lookbehind: true,\n          inside: {\n            'interpolation-punctuation': {\n              pattern: /^\\$\\{?|\\}$/,\n              alias: 'punctuation'\n            },\n            expression: {\n              pattern: /[\\s\\S]+/,\n              inside: Prism.languages.haxe\n            }\n          }\n        },\n        string: /[\\s\\S]+/\n      }\n    }\n  })\n  Prism.languages.insertBefore('haxe', 'class-name', {\n    regex: {\n      pattern: /~\\/(?:[^\\/\\\\\\r\\n]|\\\\.)+\\/[a-z]*/,\n      greedy: true,\n      inside: {\n        'regex-flags': /\\b[a-z]+$/,\n        'regex-source': {\n          pattern: /^(~\\/)[\\s\\S]+(?=\\/$)/,\n          lookbehind: true,\n          alias: 'language-regex',\n          inside: Prism.languages.regex\n        },\n        'regex-delimiter': /^~\\/|\\/$/\n      }\n    }\n  })\n  Prism.languages.insertBefore('haxe', 'keyword', {\n    preprocessor: {\n      pattern: /#(?:else|elseif|end|if)\\b.*/,\n      alias: 'property'\n    },\n    metadata: {\n      pattern: /@:?[\\w.]+/,\n      alias: 'symbol'\n    },\n    reification: {\n      pattern: /\\$(?:\\w+|(?=\\{))/,\n      alias: 'important'\n    }\n  })\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nhcl.displayName = 'hcl'\nhcl.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function hcl(Prism) {\n  Prism.languages.hcl = {\n    comment: /(?:\\/\\/|#).*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n    heredoc: {\n      pattern: /<<-?(\\w+\\b)[\\s\\S]*?^[ \\t]*\\1/m,\n      greedy: true,\n      alias: 'string'\n    },\n    keyword: [\n      {\n        pattern:\n          /(?:data|resource)\\s+(?:\"(?:\\\\[\\s\\S]|[^\\\\\"])*\")(?=\\s+\"[\\w-]+\"\\s+\\{)/i,\n        inside: {\n          type: {\n            pattern: /(resource|data|\\s+)(?:\"(?:\\\\[\\s\\S]|[^\\\\\"])*\")/i,\n            lookbehind: true,\n            alias: 'variable'\n          }\n        }\n      },\n      {\n        pattern:\n          /(?:backend|module|output|provider|provisioner|variable)\\s+(?:[\\w-]+|\"(?:\\\\[\\s\\S]|[^\\\\\"])*\")\\s+(?=\\{)/i,\n        inside: {\n          type: {\n            pattern:\n              /(backend|module|output|provider|provisioner|variable)\\s+(?:[\\w-]+|\"(?:\\\\[\\s\\S]|[^\\\\\"])*\")\\s+/i,\n            lookbehind: true,\n            alias: 'variable'\n          }\n        }\n      },\n      /[\\w-]+(?=\\s+\\{)/\n    ],\n    property: [/[-\\w\\.]+(?=\\s*=(?!=))/, /\"(?:\\\\[\\s\\S]|[^\\\\\"])+\"(?=\\s*[:=])/],\n    string: {\n      pattern:\n        /\"(?:[^\\\\$\"]|\\\\[\\s\\S]|\\$(?:(?=\")|\\$+(?!\\$)|[^\"${])|\\$\\{(?:[^{}\"]|\"(?:[^\\\\\"]|\\\\[\\s\\S])*\")*\\})*\"/,\n      greedy: true,\n      inside: {\n        interpolation: {\n          pattern: /(^|[^$])\\$\\{(?:[^{}\"]|\"(?:[^\\\\\"]|\\\\[\\s\\S])*\")*\\}/,\n          lookbehind: true,\n          inside: {\n            type: {\n              pattern:\n                /(\\b(?:count|data|local|module|path|self|terraform|var)\\b\\.)[\\w\\*]+/i,\n              lookbehind: true,\n              alias: 'variable'\n            },\n            keyword: /\\b(?:count|data|local|module|path|self|terraform|var)\\b/i,\n            function: /\\w+(?=\\()/,\n            string: {\n              pattern: /\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"/,\n              greedy: true\n            },\n            number: /\\b0x[\\da-f]+\\b|\\b\\d+(?:\\.\\d*)?(?:e[+-]?\\d+)?/i,\n            punctuation: /[!\\$#%&'()*+,.\\/;<=>@\\[\\\\\\]^`{|}~?:]/\n          }\n        }\n      }\n    },\n    number: /\\b0x[\\da-f]+\\b|\\b\\d+(?:\\.\\d*)?(?:e[+-]?\\d+)?/i,\n    boolean: /\\b(?:false|true)\\b/i,\n    punctuation: /[=\\[\\]{}]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorC from './c.js'\nhlsl.displayName = 'hlsl'\nhlsl.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function hlsl(Prism) {\n  Prism.register(refractorC)\n  Prism.languages.hlsl = Prism.languages.extend('c', {\n    // Regarding keywords and class names:\n    // The list of all keywords was split into 'keyword' and 'class-name' tokens based on whether they are capitalized.\n    // https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-appendix-keywords\n    // https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-appendix-reserved-words\n    'class-name': [\n      Prism.languages.c['class-name'],\n      /\\b(?:AppendStructuredBuffer|BlendState|Buffer|ByteAddressBuffer|CompileShader|ComputeShader|ConsumeStructuredBuffer|DepthStencilState|DepthStencilView|DomainShader|GeometryShader|Hullshader|InputPatch|LineStream|OutputPatch|PixelShader|PointStream|RWBuffer|RWByteAddressBuffer|RWStructuredBuffer|RWTexture(?:1D|1DArray|2D|2DArray|3D)|RasterizerState|RenderTargetView|SamplerComparisonState|SamplerState|StructuredBuffer|Texture(?:1D|1DArray|2D|2DArray|2DMS|2DMSArray|3D|Cube|CubeArray)|TriangleStream|VertexShader)\\b/\n    ],\n    keyword: [\n      // HLSL keyword\n      /\\b(?:asm|asm_fragment|auto|break|case|catch|cbuffer|centroid|char|class|column_major|compile|compile_fragment|const|const_cast|continue|default|delete|discard|do|dynamic_cast|else|enum|explicit|export|extern|for|friend|fxgroup|goto|groupshared|if|in|inline|inout|interface|line|lineadj|linear|long|matrix|mutable|namespace|new|nointerpolation|noperspective|operator|out|packoffset|pass|pixelfragment|point|precise|private|protected|public|register|reinterpret_cast|return|row_major|sample|sampler|shared|short|signed|sizeof|snorm|stateblock|stateblock_state|static|static_cast|string|struct|switch|tbuffer|technique|technique10|technique11|template|texture|this|throw|triangle|triangleadj|try|typedef|typename|uniform|union|unorm|unsigned|using|vector|vertexfragment|virtual|void|volatile|while)\\b/,\n      // scalar, vector, and matrix types\n      /\\b(?:bool|double|dword|float|half|int|min(?:10float|12int|16(?:float|int|uint))|uint)(?:[1-4](?:x[1-4])?)?\\b/\n    ],\n    // https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/dx-graphics-hlsl-appendix-grammar#floating-point-numbers\n    number:\n      /(?:(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?|\\b0x[\\da-fA-F]+)[fFhHlLuU]?\\b/,\n    boolean: /\\b(?:false|true)\\b/\n  })\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nhoon.displayName = 'hoon'\nhoon.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function hoon(Prism) {\n  Prism.languages.hoon = {\n    comment: {\n      pattern: /::.*/,\n      greedy: true\n    },\n    string: {\n      pattern: /\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'/,\n      greedy: true\n    },\n    constant: /%(?:\\.[ny]|[\\w-]+)/,\n    'class-name': /@(?:[a-z0-9-]*[a-z0-9])?|\\*/i,\n    function: /(?:\\+[-+] {2})?(?:[a-z](?:[a-z0-9-]*[a-z0-9])?)/,\n    keyword:\n      /\\.[\\^\\+\\*=\\?]|![><:\\.=\\?!]|=[>|:,\\.\\-\\^<+;/~\\*\\?]|\\?[>|:\\.\\-\\^<\\+&~=@!]|\\|[\\$_%:\\.\\-\\^~\\*=@\\?]|\\+[|\\$\\+\\*]|:[_\\-\\^\\+~\\*]|%[_:\\.\\-\\^\\+~\\*=]|\\^[|:\\.\\-\\+&~\\*=\\?]|\\$[|_%:<>\\-\\^&~@=\\?]|;[:<\\+;\\/~\\*=]|~[>|\\$_%<\\+\\/&=\\?!]|--|==/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nhpkp.displayName = 'hpkp'\nhpkp.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function hpkp(Prism) {\n  /**\n   * Original by Scott Helme.\n   *\n   * Reference: https://scotthelme.co.uk/hpkp-cheat-sheet/\n   */\n\n  Prism.languages.hpkp = {\n    directive: {\n      pattern:\n        /\\b(?:includeSubDomains|max-age|pin-sha256|preload|report-to|report-uri|strict)(?=[\\s;=]|$)/i,\n      alias: 'property'\n    },\n    operator: /=/,\n    punctuation: /;/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nhsts.displayName = 'hsts'\nhsts.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function hsts(Prism) {\n  /**\n   * Original by Scott Helme.\n   *\n   * Reference: https://scotthelme.co.uk/hsts-cheat-sheet/\n   */\n\n  Prism.languages.hsts = {\n    directive: {\n      pattern: /\\b(?:includeSubDomains|max-age|preload)(?=[\\s;=]|$)/i,\n      alias: 'property'\n    },\n    operator: /=/,\n    punctuation: /;/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nuri.displayName = 'uri'\nuri.aliases = ['url']\n\n/** @param {Refractor} Prism */\nexport default function uri(Prism) {\n  // https://tools.ietf.org/html/rfc3986#appendix-A\n\n  Prism.languages.uri = {\n    scheme: {\n      pattern: /^[a-z][a-z0-9+.-]*:/im,\n      greedy: true,\n      inside: {\n        'scheme-delimiter': /:$/\n      }\n    },\n    fragment: {\n      pattern: /#[\\w\\-.~!$&'()*+,;=%:@/?]*/,\n      inside: {\n        'fragment-delimiter': /^#/\n      }\n    },\n    query: {\n      pattern: /\\?[\\w\\-.~!$&'()*+,;=%:@/?]*/,\n      inside: {\n        'query-delimiter': {\n          pattern: /^\\?/,\n          greedy: true\n        },\n        'pair-delimiter': /[&;]/,\n        pair: {\n          pattern: /^[^=][\\s\\S]*/,\n          inside: {\n            key: /^[^=]+/,\n            value: {\n              pattern: /(^=)[\\s\\S]+/,\n              lookbehind: true\n            }\n          }\n        }\n      }\n    },\n    authority: {\n      pattern: RegExp(\n        /^\\/\\//.source +\n          // [ userinfo \"@\" ]\n          /(?:[\\w\\-.~!$&'()*+,;=%:]*@)?/.source +\n          // host\n          ('(?:' +\n            // IP-literal\n            /\\[(?:[0-9a-fA-F:.]{2,48}|v[0-9a-fA-F]+\\.[\\w\\-.~!$&'()*+,;=]+)\\]/\n              .source +\n            '|' +\n            // IPv4address or registered name\n            /[\\w\\-.~!$&'()*+,;=%]*/.source +\n            ')') +\n          // [ \":\" port ]\n          /(?::\\d*)?/.source,\n        'm'\n      ),\n      inside: {\n        'authority-delimiter': /^\\/\\//,\n        'user-info-segment': {\n          pattern: /^[\\w\\-.~!$&'()*+,;=%:]*@/,\n          inside: {\n            'user-info-delimiter': /@$/,\n            'user-info': /^[\\w\\-.~!$&'()*+,;=%:]+/\n          }\n        },\n        'port-segment': {\n          pattern: /:\\d*$/,\n          inside: {\n            'port-delimiter': /^:/,\n            port: /^\\d+/\n          }\n        },\n        host: {\n          pattern: /[\\s\\S]+/,\n          inside: {\n            'ip-literal': {\n              pattern: /^\\[[\\s\\S]+\\]$/,\n              inside: {\n                'ip-literal-delimiter': /^\\[|\\]$/,\n                'ipv-future': /^v[\\s\\S]+/,\n                'ipv6-address': /^[\\s\\S]+/\n              }\n            },\n            'ipv4-address':\n              /^(?:(?:[03-9]\\d?|[12]\\d{0,2})\\.){3}(?:[03-9]\\d?|[12]\\d{0,2})$/\n          }\n        }\n      }\n    },\n    path: {\n      pattern: /^[\\w\\-.~!$&'()*+,;=%:@/]+/m,\n      inside: {\n        'path-separator': /\\//\n      }\n    }\n  }\n  Prism.languages.url = Prism.languages.uri\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nhttp.displayName = 'http'\nhttp.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function http(Prism) {\n  ;(function (Prism) {\n    /**\n     * @param {string} name\n     * @returns {RegExp}\n     */\n    function headerValueOf(name) {\n      return RegExp('(^(?:' + name + '):[ \\t]*(?![ \\t]))[^]+', 'i')\n    }\n    Prism.languages.http = {\n      'request-line': {\n        pattern:\n          /^(?:CONNECT|DELETE|GET|HEAD|OPTIONS|PATCH|POST|PRI|PUT|SEARCH|TRACE)\\s(?:https?:\\/\\/|\\/)\\S*\\sHTTP\\/[\\d.]+/m,\n        inside: {\n          // HTTP Method\n          method: {\n            pattern: /^[A-Z]+\\b/,\n            alias: 'property'\n          },\n          // Request Target e.g. http://example.com, /path/to/file\n          'request-target': {\n            pattern: /^(\\s)(?:https?:\\/\\/|\\/)\\S*(?=\\s)/,\n            lookbehind: true,\n            alias: 'url',\n            inside: Prism.languages.uri\n          },\n          // HTTP Version\n          'http-version': {\n            pattern: /^(\\s)HTTP\\/[\\d.]+/,\n            lookbehind: true,\n            alias: 'property'\n          }\n        }\n      },\n      'response-status': {\n        pattern: /^HTTP\\/[\\d.]+ \\d+ .+/m,\n        inside: {\n          // HTTP Version\n          'http-version': {\n            pattern: /^HTTP\\/[\\d.]+/,\n            alias: 'property'\n          },\n          // Status Code\n          'status-code': {\n            pattern: /^(\\s)\\d+(?=\\s)/,\n            lookbehind: true,\n            alias: 'number'\n          },\n          // Reason Phrase\n          'reason-phrase': {\n            pattern: /^(\\s).+/,\n            lookbehind: true,\n            alias: 'string'\n          }\n        }\n      },\n      header: {\n        pattern: /^[\\w-]+:.+(?:(?:\\r\\n?|\\n)[ \\t].+)*/m,\n        inside: {\n          'header-value': [\n            {\n              pattern: headerValueOf(/Content-Security-Policy/.source),\n              lookbehind: true,\n              alias: ['csp', 'languages-csp'],\n              inside: Prism.languages.csp\n            },\n            {\n              pattern: headerValueOf(/Public-Key-Pins(?:-Report-Only)?/.source),\n              lookbehind: true,\n              alias: ['hpkp', 'languages-hpkp'],\n              inside: Prism.languages.hpkp\n            },\n            {\n              pattern: headerValueOf(/Strict-Transport-Security/.source),\n              lookbehind: true,\n              alias: ['hsts', 'languages-hsts'],\n              inside: Prism.languages.hsts\n            },\n            {\n              pattern: headerValueOf(/[^:]+/.source),\n              lookbehind: true\n            }\n          ],\n          'header-name': {\n            pattern: /^[^:]+/,\n            alias: 'keyword'\n          },\n          punctuation: /^:/\n        }\n      }\n    }\n\n    // Create a mapping of Content-Type headers to language definitions\n    var langs = Prism.languages\n    var httpLanguages = {\n      'application/javascript': langs.javascript,\n      'application/json': langs.json || langs.javascript,\n      'application/xml': langs.xml,\n      'text/xml': langs.xml,\n      'text/html': langs.html,\n      'text/css': langs.css,\n      'text/plain': langs.plain\n    }\n\n    // Declare which types can also be suffixes\n    var suffixTypes = {\n      'application/json': true,\n      'application/xml': true\n    }\n\n    /**\n     * Returns a pattern for the given content type which matches it and any type which has it as a suffix.\n     *\n     * @param {string} contentType\n     * @returns {string}\n     */\n    function getSuffixPattern(contentType) {\n      var suffix = contentType.replace(/^[a-z]+\\//, '')\n      var suffixPattern = '\\\\w+/(?:[\\\\w.-]+\\\\+)+' + suffix + '(?![+\\\\w.-])'\n      return '(?:' + contentType + '|' + suffixPattern + ')'\n    }\n\n    // Insert each content type parser that has its associated language\n    // currently loaded.\n    var options\n    for (var contentType in httpLanguages) {\n      if (httpLanguages[contentType]) {\n        options = options || {}\n        var pattern = suffixTypes[contentType]\n          ? getSuffixPattern(contentType)\n          : contentType\n        options[contentType.replace(/\\//g, '-')] = {\n          pattern: RegExp(\n            '(' +\n              /content-type:\\s*/.source +\n              pattern +\n              /(?:(?:\\r\\n?|\\n)[\\w-].*)*(?:\\r(?:\\n|(?!\\n))|\\n)/.source +\n              ')' +\n              // This is a little interesting:\n              // The HTTP format spec required 1 empty line before the body to make everything unambiguous.\n              // However, when writing code by hand (e.g. to display on a website) people can forget about this,\n              // so we want to be liberal here. We will allow the empty line to be omitted if the first line of\n              // the body does not start with a [\\w-] character (as headers do).\n              /[^ \\t\\w-][\\s\\S]*/.source,\n            'i'\n          ),\n          lookbehind: true,\n          inside: httpLanguages[contentType]\n        }\n      }\n    }\n    if (options) {\n      Prism.languages.insertBefore('http', 'header', options)\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nichigojam.displayName = 'ichigojam'\nichigojam.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function ichigojam(Prism) {\n  // according to the offical reference (EN)\n  // https://ichigojam.net/IchigoJam-en.html\n  Prism.languages.ichigojam = {\n    comment: /(?:\\B'|REM)(?:[^\\n\\r]*)/i,\n    string: {\n      pattern: /\"(?:\"\"|[!#$%&'()*,\\/:;<=>?^\\w +\\-.])*\"/,\n      greedy: true\n    },\n    number: /\\B#[0-9A-F]+|\\B`[01]+|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:E[+-]?\\d+)?/i,\n    keyword:\n      /\\b(?:BEEP|BPS|CASE|CLEAR|CLK|CLO|CLP|CLS|CLT|CLV|CONT|COPY|ELSE|END|FILE|FILES|FOR|GOSUB|GOTO|GSB|IF|INPUT|KBD|LED|LET|LIST|LOAD|LOCATE|LRUN|NEW|NEXT|OUT|PLAY|POKE|PRINT|PWM|REM|RENUM|RESET|RETURN|RIGHT|RTN|RUN|SAVE|SCROLL|SLEEP|SRND|STEP|STOP|SUB|TEMPO|THEN|TO|UART|VIDEO|WAIT)(?:\\$|\\b)/i,\n    function:\n      /\\b(?:ABS|ANA|ASC|BIN|BTN|DEC|END|FREE|HELP|HEX|I2CR|I2CW|IN|INKEY|LEN|LINE|PEEK|RND|SCR|SOUND|STR|TICK|USR|VER|VPEEK|ZER)(?:\\$|\\b)/i,\n    label: /(?:\\B@\\S+)/,\n    operator: /<[=>]?|>=?|\\|\\||&&|[+\\-*\\/=|&^~!]|\\b(?:AND|NOT|OR)\\b/i,\n    punctuation: /[\\[,;:()\\]]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nicon.displayName = 'icon'\nicon.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function icon(Prism) {\n  Prism.languages.icon = {\n    comment: /#.*/,\n    string: {\n      pattern: /([\"'])(?:(?!\\1)[^\\\\\\r\\n_]|\\\\.|_(?!\\1)(?:\\r\\n|[\\s\\S]))*\\1/,\n      greedy: true\n    },\n    number: /\\b(?:\\d+r[a-z\\d]+|\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?)\\b|\\.\\d+\\b/i,\n    'builtin-keyword': {\n      pattern:\n        /&(?:allocated|ascii|clock|collections|cset|current|date|dateline|digits|dump|e|error(?:number|text|value)?|errout|fail|features|file|host|input|lcase|letters|level|line|main|null|output|phi|pi|pos|progname|random|regions|source|storage|subject|time|trace|ucase|version)\\b/,\n      alias: 'variable'\n    },\n    directive: {\n      pattern: /\\$\\w+/,\n      alias: 'builtin'\n    },\n    keyword:\n      /\\b(?:break|by|case|create|default|do|else|end|every|fail|global|if|initial|invocable|link|local|next|not|of|procedure|record|repeat|return|static|suspend|then|to|until|while)\\b/,\n    function: /\\b(?!\\d)\\w+(?=\\s*[({]|\\s*!\\s*\\[)/,\n    operator:\n      /[+-]:(?!=)|(?:[\\/?@^%&]|\\+\\+?|--?|==?=?|~==?=?|\\*\\*?|\\|\\|\\|?|<(?:->?|<?=?)|>>?=?)(?::=)?|:(?:=:?)?|[!.\\\\|~]/,\n    punctuation: /[\\[\\](){},;]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nicuMessageFormat.displayName = 'icu-message-format'\nicuMessageFormat.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function icuMessageFormat(Prism) {\n  // https://unicode-org.github.io/icu/userguide/format_parse/messages/\n  // https://unicode-org.github.io/icu-docs/apidoc/released/icu4j/com/ibm/icu/text/MessageFormat.html\n\n  ;(function (Prism) {\n    /**\n     * @param {string} source\n     * @param {number} level\n     * @returns {string}\n     */\n    function nested(source, level) {\n      if (level <= 0) {\n        return /[]/.source\n      } else {\n        return source.replace(/<SELF>/g, function () {\n          return nested(source, level - 1)\n        })\n      }\n    }\n    var stringPattern = /'[{}:=,](?:[^']|'')*'(?!')/\n    var escape = {\n      pattern: /''/,\n      greedy: true,\n      alias: 'operator'\n    }\n    var string = {\n      pattern: stringPattern,\n      greedy: true,\n      inside: {\n        escape: escape\n      }\n    }\n    var argumentSource = nested(\n      /\\{(?:[^{}']|'(?![{},'])|''|<STR>|<SELF>)*\\}/.source.replace(\n        /<STR>/g,\n        function () {\n          return stringPattern.source\n        }\n      ),\n      8\n    )\n    var nestedMessage = {\n      pattern: RegExp(argumentSource),\n      inside: {\n        message: {\n          pattern: /^(\\{)[\\s\\S]+(?=\\}$)/,\n          lookbehind: true,\n          inside: null // see below\n        },\n        'message-delimiter': {\n          pattern: /./,\n          alias: 'punctuation'\n        }\n      }\n    }\n    Prism.languages['icu-message-format'] = {\n      argument: {\n        pattern: RegExp(argumentSource),\n        greedy: true,\n        inside: {\n          content: {\n            pattern: /^(\\{)[\\s\\S]+(?=\\}$)/,\n            lookbehind: true,\n            inside: {\n              'argument-name': {\n                pattern: /^(\\s*)[^{}:=,\\s]+/,\n                lookbehind: true\n              },\n              'choice-style': {\n                // https://unicode-org.github.io/icu-docs/apidoc/released/icu4c/classicu_1_1ChoiceFormat.html#details\n                pattern: /^(\\s*,\\s*choice\\s*,\\s*)\\S(?:[\\s\\S]*\\S)?/,\n                lookbehind: true,\n                inside: {\n                  punctuation: /\\|/,\n                  range: {\n                    pattern: /^(\\s*)[+-]?(?:\\d+(?:\\.\\d*)?|\\u221e)\\s*[<#\\u2264]/,\n                    lookbehind: true,\n                    inside: {\n                      operator: /[<#\\u2264]/,\n                      number: /\\S+/\n                    }\n                  },\n                  rest: null // see below\n                }\n              },\n              'plural-style': {\n                // https://unicode-org.github.io/icu-docs/apidoc/released/icu4j/com/ibm/icu/text/PluralFormat.html#:~:text=Patterns%20and%20Their%20Interpretation\n                pattern:\n                  /^(\\s*,\\s*(?:plural|selectordinal)\\s*,\\s*)\\S(?:[\\s\\S]*\\S)?/,\n                lookbehind: true,\n                inside: {\n                  offset: /^offset:\\s*\\d+/,\n                  'nested-message': nestedMessage,\n                  selector: {\n                    pattern: /=\\d+|[^{}:=,\\s]+/,\n                    inside: {\n                      keyword: /^(?:few|many|one|other|two|zero)$/\n                    }\n                  }\n                }\n              },\n              'select-style': {\n                // https://unicode-org.github.io/icu-docs/apidoc/released/icu4j/com/ibm/icu/text/SelectFormat.html#:~:text=Patterns%20and%20Their%20Interpretation\n                pattern: /^(\\s*,\\s*select\\s*,\\s*)\\S(?:[\\s\\S]*\\S)?/,\n                lookbehind: true,\n                inside: {\n                  'nested-message': nestedMessage,\n                  selector: {\n                    pattern: /[^{}:=,\\s]+/,\n                    inside: {\n                      keyword: /^other$/\n                    }\n                  }\n                }\n              },\n              keyword: /\\b(?:choice|plural|select|selectordinal)\\b/,\n              'arg-type': {\n                pattern: /\\b(?:date|duration|number|ordinal|spellout|time)\\b/,\n                alias: 'keyword'\n              },\n              'arg-skeleton': {\n                pattern: /(,\\s*)::[^{}:=,\\s]+/,\n                lookbehind: true\n              },\n              'arg-style': {\n                pattern:\n                  /(,\\s*)(?:currency|full|integer|long|medium|percent|short)(?=\\s*$)/,\n                lookbehind: true\n              },\n              'arg-style-text': {\n                pattern: RegExp(\n                  /(^\\s*,\\s*(?=\\S))/.source +\n                    nested(/(?:[^{}']|'[^']*'|\\{(?:<SELF>)?\\})+/.source, 8) +\n                    '$'\n                ),\n                lookbehind: true,\n                alias: 'string'\n              },\n              punctuation: /,/\n            }\n          },\n          'argument-delimiter': {\n            pattern: /./,\n            alias: 'operator'\n          }\n        }\n      },\n      escape: escape,\n      string: string\n    }\n    nestedMessage.inside.message.inside = Prism.languages['icu-message-format']\n    Prism.languages['icu-message-format'].argument.inside.content.inside[\n      'choice-style'\n    ].inside.rest = Prism.languages['icu-message-format']\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorHaskell from './haskell.js'\nidris.displayName = 'idris'\nidris.aliases = ['idr']\n\n/** @param {Refractor} Prism */\nexport default function idris(Prism) {\n  Prism.register(refractorHaskell)\n  Prism.languages.idris = Prism.languages.extend('haskell', {\n    comment: {\n      pattern: /(?:(?:--|\\|\\|\\|).*$|\\{-[\\s\\S]*?-\\})/m\n    },\n    keyword:\n      /\\b(?:Type|case|class|codata|constructor|corecord|data|do|dsl|else|export|if|implementation|implicit|import|impossible|in|infix|infixl|infixr|instance|interface|let|module|mutual|namespace|of|parameters|partial|postulate|private|proof|public|quoteGoal|record|rewrite|syntax|then|total|using|where|with)\\b/,\n    builtin: undefined\n  })\n  Prism.languages.insertBefore('idris', 'keyword', {\n    'import-statement': {\n      pattern: /(^\\s*import\\s+)(?:[A-Z][\\w']*)(?:\\.[A-Z][\\w']*)*/m,\n      lookbehind: true,\n      inside: {\n        punctuation: /\\./\n      }\n    }\n  })\n  Prism.languages.idr = Prism.languages.idris\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nignore.displayName = 'ignore'\nignore.aliases = ['gitignore', 'hgignore', 'npmignore']\n\n/** @param {Refractor} Prism */\nexport default function ignore(Prism) {\n  ;(function (Prism) {\n    Prism.languages.ignore = {\n      // https://git-scm.com/docs/gitignore\n      comment: /^#.*/m,\n      entry: {\n        pattern: /\\S(?:.*(?:(?:\\\\ )|\\S))?/,\n        alias: 'string',\n        inside: {\n          operator: /^!|\\*\\*?|\\?/,\n          regex: {\n            pattern: /(^|[^\\\\])\\[[^\\[\\]]*\\]/,\n            lookbehind: true\n          },\n          punctuation: /\\//\n        }\n      }\n    }\n    Prism.languages.gitignore = Prism.languages.ignore\n    Prism.languages.hgignore = Prism.languages.ignore\n    Prism.languages.npmignore = Prism.languages.ignore\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ninform7.displayName = 'inform7'\ninform7.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function inform7(Prism) {\n  Prism.languages.inform7 = {\n    string: {\n      pattern: /\"[^\"]*\"/,\n      inside: {\n        substitution: {\n          pattern: /\\[[^\\[\\]]+\\]/,\n          inside: {\n            delimiter: {\n              pattern: /\\[|\\]/,\n              alias: 'punctuation'\n            }\n            // See rest below\n          }\n        }\n      }\n    },\n    comment: {\n      pattern: /\\[[^\\[\\]]+\\]/,\n      greedy: true\n    },\n    title: {\n      pattern: /^[ \\t]*(?:book|chapter|part(?! of)|section|table|volume)\\b.+/im,\n      alias: 'important'\n    },\n    number: {\n      pattern:\n        /(^|[^-])(?:\\b\\d+(?:\\.\\d+)?(?:\\^\\d+)?(?:(?!\\d)\\w+)?|\\b(?:eight|eleven|five|four|nine|one|seven|six|ten|three|twelve|two))\\b(?!-)/i,\n      lookbehind: true\n    },\n    verb: {\n      pattern:\n        /(^|[^-])\\b(?:answering|applying to|are|asking|attacking|be(?:ing)?|burning|buying|called|carries|carry(?! out)|carrying|climbing|closing|conceal(?:ing|s)?|consulting|contain(?:ing|s)?|cutting|drinking|dropping|eating|enclos(?:es?|ing)|entering|examining|exiting|getting|giving|going|ha(?:s|ve|ving)|hold(?:ing|s)?|impl(?:ies|y)|incorporat(?:es?|ing)|inserting|is|jumping|kissing|listening|locking|looking|mean(?:ing|s)?|opening|provid(?:es?|ing)|pulling|pushing|putting|relat(?:es?|ing)|removing|searching|see(?:ing|s)?|setting|showing|singing|sleeping|smelling|squeezing|support(?:ing|s)?|swearing|switching|taking|tasting|telling|thinking|throwing|touching|turning|tying|unlock(?:ing|s)?|var(?:ies|y|ying)|waiting|waking|waving|wear(?:ing|s)?)\\b(?!-)/i,\n      lookbehind: true,\n      alias: 'operator'\n    },\n    keyword: {\n      pattern:\n        /(^|[^-])\\b(?:after|before|carry out|check|continue the action|definition(?= *:)|do nothing|else|end (?:if|the story|unless)|every turn|if|include|instead(?: of)?|let|move|no|now|otherwise|repeat|report|resume the story|rule for|running through|say(?:ing)?|stop the action|test|try(?:ing)?|understand|unless|use|when|while|yes)\\b(?!-)/i,\n      lookbehind: true\n    },\n    property: {\n      pattern:\n        /(^|[^-])\\b(?:adjacent(?! to)|carried|closed|concealed|contained|dark|described|edible|empty|enclosed|enterable|even|female|fixed in place|full|handled|held|improper-named|incorporated|inedible|invisible|lighted|lit|lock(?:able|ed)|male|marked for listing|mentioned|negative|neuter|non-(?:empty|full|recurring)|odd|opaque|open(?:able)?|plural-named|portable|positive|privately-named|proper-named|provided|publically-named|pushable between rooms|recurring|related|rubbing|scenery|seen|singular-named|supported|swinging|switch(?:able|ed(?: off| on)?)|touch(?:able|ed)|transparent|unconcealed|undescribed|unlit|unlocked|unmarked for listing|unmentioned|unopenable|untouchable|unvisited|variable|visible|visited|wearable|worn)\\b(?!-)/i,\n      lookbehind: true,\n      alias: 'symbol'\n    },\n    position: {\n      pattern:\n        /(^|[^-])\\b(?:above|adjacent to|back side of|below|between|down|east|everywhere|front side|here|in|inside(?: from)?|north(?:east|west)?|nowhere|on(?: top of)?|other side|outside(?: from)?|parts? of|regionally in|south(?:east|west)?|through|up|west|within)\\b(?!-)/i,\n      lookbehind: true,\n      alias: 'keyword'\n    },\n    type: {\n      pattern:\n        /(^|[^-])\\b(?:actions?|activit(?:ies|y)|actors?|animals?|backdrops?|containers?|devices?|directions?|doors?|holders?|kinds?|lists?|m[ae]n|nobody|nothing|nouns?|numbers?|objects?|people|persons?|player(?:'s holdall)?|regions?|relations?|rooms?|rule(?:book)?s?|scenes?|someone|something|supporters?|tables?|texts?|things?|time|vehicles?|wom[ae]n)\\b(?!-)/i,\n      lookbehind: true,\n      alias: 'variable'\n    },\n    punctuation: /[.,:;(){}]/\n  }\n  Prism.languages.inform7['string'].inside['substitution'].inside.rest =\n    Prism.languages.inform7\n  // We don't want the remaining text in the substitution to be highlighted as the string.\n  Prism.languages.inform7['string'].inside['substitution'].inside.rest.text = {\n    pattern: /\\S(?:\\s*\\S)*/,\n    alias: 'comment'\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nio.displayName = 'io'\nio.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function io(Prism) {\n  Prism.languages.io = {\n    comment: {\n      pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?(?:\\*\\/|$)|\\/\\/.*|#.*)/,\n      lookbehind: true,\n      greedy: true\n    },\n    'triple-quoted-string': {\n      pattern: /\"\"\"(?:\\\\[\\s\\S]|(?!\"\"\")[^\\\\])*\"\"\"/,\n      greedy: true,\n      alias: 'string'\n    },\n    string: {\n      pattern: /\"(?:\\\\.|[^\\\\\\r\\n\"])*\"/,\n      greedy: true\n    },\n    keyword:\n      /\\b(?:activate|activeCoroCount|asString|block|break|call|catch|clone|collectGarbage|compileString|continue|do|doFile|doMessage|doString|else|elseif|exit|for|foreach|forward|getEnvironmentVariable|getSlot|hasSlot|if|ifFalse|ifNil|ifNilEval|ifTrue|isActive|isNil|isResumable|list|message|method|parent|pass|pause|perform|performWithArgList|print|println|proto|raise|raiseResumable|removeSlot|resend|resume|schedulerSleepSeconds|self|sender|setSchedulerSleepSeconds|setSlot|shallowCopy|slotNames|super|system|then|thisBlock|thisContext|try|type|uniqueId|updateSlot|wait|while|write|yield)\\b/,\n    builtin:\n      /\\b(?:Array|AudioDevice|AudioMixer|BigNum|Block|Box|Buffer|CFunction|CGI|Color|Curses|DBM|DNSResolver|DOConnection|DOProxy|DOServer|Date|Directory|Duration|DynLib|Error|Exception|FFT|File|Fnmatch|Font|Future|GL|GLE|GLScissor|GLU|GLUCylinder|GLUQuadric|GLUSphere|GLUT|Host|Image|Importer|LinkList|List|Lobby|Locals|MD5|MP3Decoder|MP3Encoder|Map|Message|Movie|Notification|Number|Object|OpenGL|Point|Protos|Random|Regex|SGML|SGMLElement|SGMLParser|SQLite|Sequence|Server|ShowMessage|SleepyCat|SleepyCatCursor|Socket|SocketManager|Sound|Soup|Store|String|Tree|UDPSender|UPDReceiver|URL|User|Warning|WeakLink)\\b/,\n    boolean: /\\b(?:false|nil|true)\\b/,\n    number: /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e-?\\d+)?/i,\n    operator:\n      /[=!*/%+\\-^&|]=|>>?=?|<<?=?|:?:?=|\\+\\+?|--?|\\*\\*?|\\/\\/?|%|\\|\\|?|&&?|\\b(?:and|not|or|return)\\b|@@?|\\?\\??|\\.\\./,\n    punctuation: /[{}[\\];(),.:]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nj.displayName = 'j'\nj.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function j(Prism) {\n  Prism.languages.j = {\n    comment: {\n      pattern: /\\bNB\\..*/,\n      greedy: true\n    },\n    string: {\n      pattern: /'(?:''|[^'\\r\\n])*'/,\n      greedy: true\n    },\n    keyword:\n      /\\b(?:(?:CR|LF|adverb|conjunction|def|define|dyad|monad|noun|verb)\\b|(?:assert|break|case|catch[dt]?|continue|do|else|elseif|end|fcase|for|for_\\w+|goto_\\w+|if|label_\\w+|return|select|throw|try|while|whilst)\\.)/,\n    verb: {\n      // Negative look-ahead prevents bad highlighting\n      // of ^: ;. =. =: !. !:\n      pattern:\n        /(?!\\^:|;\\.|[=!][.:])(?:\\{(?:\\.|::?)?|p(?:\\.\\.?|:)|[=!\\]]|[<>+*\\-%$|,#][.:]?|[?^]\\.?|[;\\[]:?|[~}\"i][.:]|[ACeEIjLor]\\.|(?:[_\\/\\\\qsux]|_?\\d):)/,\n      alias: 'keyword'\n    },\n    number:\n      /\\b_?(?:(?!\\d:)\\d+(?:\\.\\d+)?(?:(?:ad|ar|[ejpx])_?\\d+(?:\\.\\d+)?)*(?:b_?[\\da-z]+(?:\\.[\\da-z]+)?)?|_\\b(?!\\.))/,\n    adverb: {\n      pattern: /[~}]|[\\/\\\\]\\.?|[bfM]\\.|t[.:]/,\n      alias: 'builtin'\n    },\n    operator: /[=a][.:]|_\\./,\n    conjunction: {\n      pattern: /&(?:\\.:?|:)?|[.:@][.:]?|[!D][.:]|[;dHT]\\.|`:?|[\\^LS]:|\"/,\n      alias: 'variable'\n    },\n    punctuation: /[()]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\njavadoclike.displayName = 'javadoclike'\njavadoclike.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function javadoclike(Prism) {\n  ;(function (Prism) {\n    var javaDocLike = (Prism.languages.javadoclike = {\n      parameter: {\n        pattern:\n          /(^[\\t ]*(?:\\/{3}|\\*|\\/\\*\\*)\\s*@(?:arg|arguments|param)\\s+)\\w+/m,\n        lookbehind: true\n      },\n      keyword: {\n        // keywords are the first word in a line preceded be an `@` or surrounded by curly braces.\n        // @word, {@word}\n        pattern: /(^[\\t ]*(?:\\/{3}|\\*|\\/\\*\\*)\\s*|\\{)@[a-z][a-zA-Z-]+\\b/m,\n        lookbehind: true\n      },\n      punctuation: /[{}]/\n    })\n\n    /**\n     * Adds doc comment support to the given language and calls a given callback on each doc comment pattern.\n     *\n     * @param {string} lang the language add doc comment support to.\n     * @param {(pattern: {inside: {rest: undefined}}) => void} callback the function called with each doc comment pattern as argument.\n     */\n    function docCommentSupport(lang, callback) {\n      var tokenName = 'doc-comment'\n      var grammar = Prism.languages[lang]\n      if (!grammar) {\n        return\n      }\n      var token = grammar[tokenName]\n      if (!token) {\n        // add doc comment: /** */\n        var definition = {}\n        definition[tokenName] = {\n          pattern: /(^|[^\\\\])\\/\\*\\*[^/][\\s\\S]*?(?:\\*\\/|$)/,\n          lookbehind: true,\n          alias: 'comment'\n        }\n        grammar = Prism.languages.insertBefore(lang, 'comment', definition)\n        token = grammar[tokenName]\n      }\n      if (token instanceof RegExp) {\n        // convert regex to object\n        token = grammar[tokenName] = {\n          pattern: token\n        }\n      }\n      if (Array.isArray(token)) {\n        for (var i = 0, l = token.length; i < l; i++) {\n          if (token[i] instanceof RegExp) {\n            token[i] = {\n              pattern: token[i]\n            }\n          }\n          callback(token[i])\n        }\n      } else {\n        callback(token)\n      }\n    }\n\n    /**\n     * Adds doc-comment support to the given languages for the given documentation language.\n     *\n     * @param {string[]|string} languages\n     * @param {Object} docLanguage\n     */\n    function addSupport(languages, docLanguage) {\n      if (typeof languages === 'string') {\n        languages = [languages]\n      }\n      languages.forEach(function (lang) {\n        docCommentSupport(lang, function (pattern) {\n          if (!pattern.inside) {\n            pattern.inside = {}\n          }\n          pattern.inside.rest = docLanguage\n        })\n      })\n    }\n    Object.defineProperty(javaDocLike, 'addSupport', {\n      value: addSupport\n    })\n    javaDocLike.addSupport(['java', 'javascript', 'php'], javaDocLike)\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorJava from './java.js'\nscala.displayName = 'scala'\nscala.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function scala(Prism) {\n  Prism.register(refractorJava)\n  Prism.languages.scala = Prism.languages.extend('java', {\n    'triple-quoted-string': {\n      pattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n      greedy: true,\n      alias: 'string'\n    },\n    string: {\n      pattern: /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      greedy: true\n    },\n    keyword:\n      /<-|=>|\\b(?:abstract|case|catch|class|def|derives|do|else|enum|extends|extension|final|finally|for|forSome|given|if|implicit|import|infix|inline|lazy|match|new|null|object|opaque|open|override|package|private|protected|return|sealed|self|super|this|throw|trait|transparent|try|type|using|val|var|while|with|yield)\\b/,\n    number:\n      /\\b0x(?:[\\da-f]*\\.)?[\\da-f]+|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e\\d+)?[dfl]?/i,\n    builtin:\n      /\\b(?:Any|AnyRef|AnyVal|Boolean|Byte|Char|Double|Float|Int|Long|Nothing|Short|String|Unit)\\b/,\n    symbol: /'[^\\d\\s\\\\]\\w*/\n  })\n  Prism.languages.insertBefore('scala', 'triple-quoted-string', {\n    'string-interpolation': {\n      pattern:\n        /\\b[a-z]\\w*(?:\"\"\"(?:[^$]|\\$(?:[^{]|\\{(?:[^{}]|\\{[^{}]*\\})*\\}))*?\"\"\"|\"(?:[^$\"\\r\\n]|\\$(?:[^{]|\\{(?:[^{}]|\\{[^{}]*\\})*\\}))*\")/i,\n      greedy: true,\n      inside: {\n        id: {\n          pattern: /^\\w+/,\n          greedy: true,\n          alias: 'function'\n        },\n        escape: {\n          pattern: /\\\\\\$\"|\\$[$\"]/,\n          greedy: true,\n          alias: 'symbol'\n        },\n        interpolation: {\n          pattern: /\\$(?:\\w+|\\{(?:[^{}]|\\{[^{}]*\\})*\\})/,\n          greedy: true,\n          inside: {\n            punctuation: /^\\$\\{?|\\}$/,\n            expression: {\n              pattern: /[\\s\\S]+/,\n              inside: Prism.languages.scala\n            }\n          }\n        },\n        string: /[\\s\\S]+/\n      }\n    }\n  })\n  delete Prism.languages.scala['class-name']\n  delete Prism.languages.scala['function']\n  delete Prism.languages.scala['constant']\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorJava from './java.js'\nimport refractorJavadoclike from './javadoclike.js'\nimport refractorMarkup from './markup.js'\njavadoc.displayName = 'javadoc'\njavadoc.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function javadoc(Prism) {\n  Prism.register(refractorJava)\n  Prism.register(refractorJavadoclike)\n  Prism.register(refractorMarkup)\n  ;(function (Prism) {\n    var codeLinePattern = /(^(?:[\\t ]*(?:\\*\\s*)*))[^*\\s].*$/m\n    var memberReference = /#\\s*\\w+(?:\\s*\\([^()]*\\))?/.source\n    var reference =\n      /(?:\\b[a-zA-Z]\\w+\\s*\\.\\s*)*\\b[A-Z]\\w*(?:\\s*<mem>)?|<mem>/.source.replace(\n        /<mem>/g,\n        function () {\n          return memberReference\n        }\n      )\n    Prism.languages.javadoc = Prism.languages.extend('javadoclike', {})\n    Prism.languages.insertBefore('javadoc', 'keyword', {\n      reference: {\n        pattern: RegExp(\n          /(@(?:exception|link|linkplain|see|throws|value)\\s+(?:\\*\\s*)?)/\n            .source +\n            '(?:' +\n            reference +\n            ')'\n        ),\n        lookbehind: true,\n        inside: {\n          function: {\n            pattern: /(#\\s*)\\w+(?=\\s*\\()/,\n            lookbehind: true\n          },\n          field: {\n            pattern: /(#\\s*)\\w+/,\n            lookbehind: true\n          },\n          namespace: {\n            pattern: /\\b(?:[a-z]\\w*\\s*\\.\\s*)+/,\n            inside: {\n              punctuation: /\\./\n            }\n          },\n          'class-name': /\\b[A-Z]\\w*/,\n          keyword: Prism.languages.java.keyword,\n          punctuation: /[#()[\\],.]/\n        }\n      },\n      'class-name': {\n        // @param <T> the first generic type parameter\n        pattern: /(@param\\s+)<[A-Z]\\w*>/,\n        lookbehind: true,\n        inside: {\n          punctuation: /[.<>]/\n        }\n      },\n      'code-section': [\n        {\n          pattern:\n            /(\\{@code\\s+(?!\\s))(?:[^\\s{}]|\\s+(?![\\s}])|\\{(?:[^{}]|\\{(?:[^{}]|\\{(?:[^{}]|\\{[^{}]*\\})*\\})*\\})*\\})+(?=\\s*\\})/,\n          lookbehind: true,\n          inside: {\n            code: {\n              // there can't be any HTML inside of {@code} tags\n              pattern: codeLinePattern,\n              lookbehind: true,\n              inside: Prism.languages.java,\n              alias: 'language-java'\n            }\n          }\n        },\n        {\n          pattern:\n            /(<(code|pre|tt)>(?!<code>)\\s*)\\S(?:\\S|\\s+\\S)*?(?=\\s*<\\/\\2>)/,\n          lookbehind: true,\n          inside: {\n            line: {\n              pattern: codeLinePattern,\n              lookbehind: true,\n              inside: {\n                // highlight HTML tags and entities\n                tag: Prism.languages.markup.tag,\n                entity: Prism.languages.markup.entity,\n                code: {\n                  // everything else is Java code\n                  pattern: /.+/,\n                  inside: Prism.languages.java,\n                  alias: 'language-java'\n                }\n              }\n            }\n          }\n        }\n      ],\n      tag: Prism.languages.markup.tag,\n      entity: Prism.languages.markup.entity\n    })\n    Prism.languages.javadoclike.addSupport('java', Prism.languages.javadoc)\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\njavastacktrace.displayName = 'javastacktrace'\njavastacktrace.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function javastacktrace(Prism) {\n  // Specification:\n  // https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/lang/Throwable.html#printStackTrace()\n\n  Prism.languages.javastacktrace = {\n    // java.sql.SQLException: Violation of unique constraint MY_ENTITY_UK_1: duplicate value(s) for column(s) MY_COLUMN in statement [...]\n    // Caused by: java.sql.SQLException: Violation of unique constraint MY_ENTITY_UK_1: duplicate value(s) for column(s) MY_COLUMN in statement [...]\n    // Caused by: com.example.myproject.MyProjectServletException\n    // Caused by: MidLevelException: LowLevelException\n    // Suppressed: Resource$CloseFailException: Resource ID = 0\n    summary: {\n      pattern:\n        /^([\\t ]*)(?:(?:Caused by:|Suppressed:|Exception in thread \"[^\"]*\")[\\t ]+)?[\\w$.]+(?::.*)?$/m,\n      lookbehind: true,\n      inside: {\n        keyword: {\n          pattern:\n            /^([\\t ]*)(?:(?:Caused by|Suppressed)(?=:)|Exception in thread)/m,\n          lookbehind: true\n        },\n        // the current thread if the summary starts with 'Exception in thread'\n        string: {\n          pattern: /^(\\s*)\"[^\"]*\"/,\n          lookbehind: true\n        },\n        exceptions: {\n          pattern: /^(:?\\s*)[\\w$.]+(?=:|$)/,\n          lookbehind: true,\n          inside: {\n            'class-name': /[\\w$]+$/,\n            namespace: /\\b[a-z]\\w*\\b/,\n            punctuation: /\\./\n          }\n        },\n        message: {\n          pattern: /(:\\s*)\\S.*/,\n          lookbehind: true,\n          alias: 'string'\n        },\n        punctuation: /:/\n      }\n    },\n    // at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)\n    // at org.hsqldb.jdbc.Util.throwError(Unknown Source) here could be some notes\n    // at java.base/java.lang.Class.forName0(Native Method)\n    // at Util.<init>(Unknown Source)\n    // at com.foo.loader/foo@9.0/com.foo.Main.run(Main.java:101)\n    // at com.foo.loader//com.foo.bar.App.run(App.java:12)\n    // at acme@2.1/org.acme.Lib.test(Lib.java:80)\n    // at MyClass.mash(MyClass.java:9)\n    //\n    // More information:\n    // https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/lang/StackTraceElement.html#toString()\n    //\n    // A valid Java module name is defined as:\n    //   \"A module name consists of one or more Java identifiers (\u00A73.8) separated by \".\" tokens.\"\n    // https://docs.oracle.com/javase/specs/jls/se9/html/jls-6.html#jls-ModuleName\n    //\n    // A Java module version is defined by this class:\n    // https://docs.oracle.com/javase/9/docs/api/java/lang/module/ModuleDescriptor.Version.html\n    // This is the implementation of the `parse` method in JDK13:\n    // https://github.com/matcdac/jdk/blob/2305df71d1b7710266ae0956d73927a225132c0f/src/java.base/share/classes/java/lang/module/ModuleDescriptor.java#L1108\n    // However, to keep this simple, a version will be matched by the pattern /@[\\w$.+-]*/.\n    'stack-frame': {\n      pattern: /^([\\t ]*)at (?:[\\w$./]|@[\\w$.+-]*\\/)+(?:<init>)?\\([^()]*\\)/m,\n      lookbehind: true,\n      inside: {\n        keyword: {\n          pattern: /^(\\s*)at(?= )/,\n          lookbehind: true\n        },\n        source: [\n          // (Main.java:15)\n          // (Main.scala:15)\n          {\n            pattern: /(\\()\\w+\\.\\w+:\\d+(?=\\))/,\n            lookbehind: true,\n            inside: {\n              file: /^\\w+\\.\\w+/,\n              punctuation: /:/,\n              'line-number': {\n                pattern: /\\b\\d+\\b/,\n                alias: 'number'\n              }\n            }\n          },\n          // (Unknown Source)\n          // (Native Method)\n          // (...something...)\n          {\n            pattern: /(\\()[^()]*(?=\\))/,\n            lookbehind: true,\n            inside: {\n              keyword: /^(?:Native Method|Unknown Source)$/\n            }\n          }\n        ],\n        'class-name': /[\\w$]+(?=\\.(?:<init>|[\\w$]+)\\()/,\n        function: /(?:<init>|[\\w$]+)(?=\\()/,\n        'class-loader': {\n          pattern: /(\\s)[a-z]\\w*(?:\\.[a-z]\\w*)*(?=\\/[\\w@$.]*\\/)/,\n          lookbehind: true,\n          alias: 'namespace',\n          inside: {\n            punctuation: /\\./\n          }\n        },\n        module: {\n          pattern: /([\\s/])[a-z]\\w*(?:\\.[a-z]\\w*)*(?:@[\\w$.+-]*)?(?=\\/)/,\n          lookbehind: true,\n          inside: {\n            version: {\n              pattern: /(@)[\\s\\S]+/,\n              lookbehind: true,\n              alias: 'number'\n            },\n            punctuation: /[@.]/\n          }\n        },\n        namespace: {\n          pattern: /(?:\\b[a-z]\\w*\\.)+/,\n          inside: {\n            punctuation: /\\./\n          }\n        },\n        punctuation: /[()/.]/\n      }\n    },\n    // ... 32 more\n    // ... 32 common frames omitted\n    more: {\n      pattern: /^([\\t ]*)\\.{3} \\d+ [a-z]+(?: [a-z]+)*/m,\n      lookbehind: true,\n      inside: {\n        punctuation: /\\.{3}/,\n        number: /\\d+/,\n        keyword: /\\b[a-z]+(?: [a-z]+)*\\b/\n      }\n    }\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\njexl.displayName = 'jexl'\njexl.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function jexl(Prism) {\n  Prism.languages.jexl = {\n    string: /([\"'])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n    transform: {\n      pattern:\n        /(\\|\\s*)[a-zA-Z\u0430-\u044F\u0410-\u042F_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u00FF$][\\w\u0430-\u044F\u0410-\u042F\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u00FF$]*/,\n      alias: 'function',\n      lookbehind: true\n    },\n    function:\n      /[a-zA-Z\u0430-\u044F\u0410-\u042F_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u00FF$][\\w\u0430-\u044F\u0410-\u042F\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u00FF$]*\\s*(?=\\()/,\n    number: /\\b\\d+(?:\\.\\d+)?\\b|\\B\\.\\d+\\b/,\n    operator: /[<>!]=?|-|\\+|&&|==|\\|\\|?|\\/\\/?|[?:*^%]/,\n    boolean: /\\b(?:false|true)\\b/,\n    keyword: /\\bin\\b/,\n    punctuation: /[{}[\\](),.]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\njolie.displayName = 'jolie'\njolie.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function jolie(Prism) {\n  Prism.register(refractorClike)\n  Prism.languages.jolie = Prism.languages.extend('clike', {\n    string: {\n      pattern: /(^|[^\\\\])\"(?:\\\\[\\s\\S]|[^\"\\\\])*\"/,\n      lookbehind: true,\n      greedy: true\n    },\n    'class-name': {\n      pattern:\n        /((?:\\b(?:as|courier|embed|in|inputPort|outputPort|service)\\b|@)[ \\t]*)\\w+/,\n      lookbehind: true\n    },\n    keyword:\n      /\\b(?:as|cH|comp|concurrent|constants|courier|cset|csets|default|define|else|embed|embedded|execution|exit|extender|for|foreach|forward|from|global|if|import|in|include|init|inputPort|install|instanceof|interface|is_defined|linkIn|linkOut|main|new|nullProcess|outputPort|over|private|provide|public|scope|sequential|service|single|spawn|synchronized|this|throw|throws|type|undef|until|while|with)\\b/,\n    function: /\\b[a-z_]\\w*(?=[ \\t]*[@(])/i,\n    number: /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?l?/i,\n    operator: /-[-=>]?|\\+[+=]?|<[<=]?|[>=*!]=?|&&|\\|\\||[?\\/%^@|]/,\n    punctuation: /[()[\\]{},;.:]/,\n    builtin:\n      /\\b(?:Byte|any|bool|char|double|enum|float|int|length|long|ranges|regex|string|undefined|void)\\b/\n  })\n  Prism.languages.insertBefore('jolie', 'keyword', {\n    aggregates: {\n      pattern:\n        /(\\bAggregates\\s*:\\s*)(?:\\w+(?:\\s+with\\s+\\w+)?\\s*,\\s*)*\\w+(?:\\s+with\\s+\\w+)?/,\n      lookbehind: true,\n      inside: {\n        keyword: /\\bwith\\b/,\n        'class-name': /\\w+/,\n        punctuation: /,/\n      }\n    },\n    redirects: {\n      pattern:\n        /(\\bRedirects\\s*:\\s*)(?:\\w+\\s*=>\\s*\\w+\\s*,\\s*)*(?:\\w+\\s*=>\\s*\\w+)/,\n      lookbehind: true,\n      inside: {\n        punctuation: /,/,\n        'class-name': /\\w+/,\n        operator: /=>/\n      }\n    },\n    property: {\n      pattern:\n        /\\b(?:Aggregates|[Ii]nterfaces|Java|Javascript|Jolie|[Ll]ocation|OneWay|[Pp]rotocol|Redirects|RequestResponse)\\b(?=[ \\t]*:)/\n    }\n  })\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\njq.displayName = 'jq'\njq.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function jq(Prism) {\n  ;(function (Prism) {\n    var interpolation = /\\\\\\((?:[^()]|\\([^()]*\\))*\\)/.source\n    var string = RegExp(\n      /(^|[^\\\\])\"(?:[^\"\\r\\n\\\\]|\\\\[^\\r\\n(]|__)*\"/.source.replace(\n        /__/g,\n        function () {\n          return interpolation\n        }\n      )\n    )\n    var stringInterpolation = {\n      interpolation: {\n        pattern: RegExp(/((?:^|[^\\\\])(?:\\\\{2})*)/.source + interpolation),\n        lookbehind: true,\n        inside: {\n          content: {\n            pattern: /^(\\\\\\()[\\s\\S]+(?=\\)$)/,\n            lookbehind: true,\n            inside: null // see below\n          },\n          punctuation: /^\\\\\\(|\\)$/\n        }\n      }\n    }\n    var jq = (Prism.languages.jq = {\n      comment: /#.*/,\n      property: {\n        pattern: RegExp(string.source + /(?=\\s*:(?!:))/.source),\n        lookbehind: true,\n        greedy: true,\n        inside: stringInterpolation\n      },\n      string: {\n        pattern: string,\n        lookbehind: true,\n        greedy: true,\n        inside: stringInterpolation\n      },\n      function: {\n        pattern: /(\\bdef\\s+)[a-z_]\\w+/i,\n        lookbehind: true\n      },\n      variable: /\\B\\$\\w+/,\n      'property-literal': {\n        pattern: /\\b[a-z_]\\w*(?=\\s*:(?!:))/i,\n        alias: 'property'\n      },\n      keyword:\n        /\\b(?:as|break|catch|def|elif|else|end|foreach|if|import|include|label|module|modulemeta|null|reduce|then|try|while)\\b/,\n      boolean: /\\b(?:false|true)\\b/,\n      number: /(?:\\b\\d+\\.|\\B\\.)?\\b\\d+(?:[eE][+-]?\\d+)?\\b/,\n      operator: [\n        {\n          pattern: /\\|=?/,\n          alias: 'pipe'\n        },\n        /\\.\\.|[!=<>]?=|\\?\\/\\/|\\/\\/=?|[-+*/%]=?|[<>?]|\\b(?:and|not|or)\\b/\n      ],\n      'c-style-function': {\n        pattern: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n        alias: 'function'\n      },\n      punctuation: /::|[()\\[\\]{},:;]|\\.(?=\\s*[\\[\\w$])/,\n      dot: {\n        pattern: /\\./,\n        alias: 'important'\n      }\n    })\n    stringInterpolation.interpolation.inside.content.inside = jq\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorJavascript from './javascript.js'\njsTemplates.displayName = 'js-templates'\njsTemplates.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function jsTemplates(Prism) {\n  Prism.register(refractorJavascript)\n  ;(function (Prism) {\n    var templateString = Prism.languages.javascript['template-string']\n\n    // see the pattern in prism-javascript.js\n    var templateLiteralPattern = templateString.pattern.source\n    var interpolationObject = templateString.inside['interpolation']\n    var interpolationPunctuationObject =\n      interpolationObject.inside['interpolation-punctuation']\n    var interpolationPattern = interpolationObject.pattern.source\n\n    /**\n     * Creates a new pattern to match a template string with a special tag.\n     *\n     * This will return `undefined` if there is no grammar with the given language id.\n     *\n     * @param {string} language The language id of the embedded language. E.g. `markdown`.\n     * @param {string} tag The regex pattern to match the tag.\n     * @returns {object | undefined}\n     * @example\n     * createTemplate('css', /\\bcss/.source);\n     */\n    function createTemplate(language, tag) {\n      if (!Prism.languages[language]) {\n        return undefined\n      }\n      return {\n        pattern: RegExp('((?:' + tag + ')\\\\s*)' + templateLiteralPattern),\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          'template-punctuation': {\n            pattern: /^`|`$/,\n            alias: 'string'\n          },\n          'embedded-code': {\n            pattern: /[\\s\\S]+/,\n            alias: language\n          }\n        }\n      }\n    }\n    Prism.languages.javascript['template-string'] = [\n      // styled-jsx:\n      //   css`a { color: #25F; }`\n      // styled-components:\n      //   styled.h1`color: red;`\n      createTemplate(\n        'css',\n        /\\b(?:styled(?:\\([^)]*\\))?(?:\\s*\\.\\s*\\w+(?:\\([^)]*\\))*)*|css(?:\\s*\\.\\s*(?:global|resolve))?|createGlobalStyle|keyframes)/\n          .source\n      ),\n      // html`<p></p>`\n      // div.innerHTML = `<p></p>`\n      createTemplate('html', /\\bhtml|\\.\\s*(?:inner|outer)HTML\\s*\\+?=/.source),\n      // svg`<path fill=\"#fff\" d=\"M55.37 ...\"/>`\n      createTemplate('svg', /\\bsvg/.source),\n      // md`# h1`, markdown`## h2`\n      createTemplate('markdown', /\\b(?:markdown|md)/.source),\n      // gql`...`, graphql`...`, graphql.experimental`...`\n      createTemplate(\n        'graphql',\n        /\\b(?:gql|graphql(?:\\s*\\.\\s*experimental)?)/.source\n      ),\n      // sql`...`\n      createTemplate('sql', /\\bsql/.source),\n      // vanilla template string\n      templateString\n    ].filter(Boolean)\n\n    /**\n     * Returns a specific placeholder literal for the given language.\n     *\n     * @param {number} counter\n     * @param {string} language\n     * @returns {string}\n     */\n    function getPlaceholder(counter, language) {\n      return '___' + language.toUpperCase() + '_' + counter + '___'\n    }\n\n    /**\n     * Returns the tokens of `Prism.tokenize` but also runs the `before-tokenize` and `after-tokenize` hooks.\n     *\n     * @param {string} code\n     * @param {any} grammar\n     * @param {string} language\n     * @returns {(string|Token)[]}\n     */\n    function tokenizeWithHooks(code, grammar, language) {\n      var env = {\n        code: code,\n        grammar: grammar,\n        language: language\n      }\n      Prism.hooks.run('before-tokenize', env)\n      env.tokens = Prism.tokenize(env.code, env.grammar)\n      Prism.hooks.run('after-tokenize', env)\n      return env.tokens\n    }\n\n    /**\n     * Returns the token of the given JavaScript interpolation expression.\n     *\n     * @param {string} expression The code of the expression. E.g. `\"${42}\"`\n     * @returns {Token}\n     */\n    function tokenizeInterpolationExpression(expression) {\n      var tempGrammar = {}\n      tempGrammar['interpolation-punctuation'] = interpolationPunctuationObject\n\n      /** @type {Array} */\n      var tokens = Prism.tokenize(expression, tempGrammar)\n      if (tokens.length === 3) {\n        /**\n         * The token array will look like this\n         * [\n         *     [\"interpolation-punctuation\", \"${\"]\n         *     \"...\" // JavaScript expression of the interpolation\n         *     [\"interpolation-punctuation\", \"}\"]\n         * ]\n         */\n\n        var args = [1, 1]\n        args.push.apply(\n          args,\n          tokenizeWithHooks(tokens[1], Prism.languages.javascript, 'javascript')\n        )\n        tokens.splice.apply(tokens, args)\n      }\n      return new Prism.Token(\n        'interpolation',\n        tokens,\n        interpolationObject.alias,\n        expression\n      )\n    }\n\n    /**\n     * Tokenizes the given code with support for JavaScript interpolation expressions mixed in.\n     *\n     * This function has 3 phases:\n     *\n     * 1. Replace all JavaScript interpolation expression with a placeholder.\n     *    The placeholder will have the syntax of a identify of the target language.\n     * 2. Tokenize the code with placeholders.\n     * 3. Tokenize the interpolation expressions and re-insert them into the tokenize code.\n     *    The insertion only works if a placeholder hasn't been \"ripped apart\" meaning that the placeholder has been\n     *    tokenized as two tokens by the grammar of the embedded language.\n     *\n     * @param {string} code\n     * @param {object} grammar\n     * @param {string} language\n     * @returns {Token}\n     */\n    function tokenizeEmbedded(code, grammar, language) {\n      // 1. First filter out all interpolations\n\n      // because they might be escaped, we need a lookbehind, so we use Prism\n      /** @type {(Token|string)[]} */\n      var _tokens = Prism.tokenize(code, {\n        interpolation: {\n          pattern: RegExp(interpolationPattern),\n          lookbehind: true\n        }\n      })\n\n      // replace all interpolations with a placeholder which is not in the code already\n      var placeholderCounter = 0\n      /** @type {Object<string, string>} */\n      var placeholderMap = {}\n      var embeddedCode = _tokens\n        .map(function (token) {\n          if (typeof token === 'string') {\n            return token\n          } else {\n            var interpolationExpression = token.content\n            var placeholder\n            while (\n              code.indexOf(\n                (placeholder = getPlaceholder(placeholderCounter++, language))\n              ) !== -1\n            ) {\n              /* noop */\n            }\n            placeholderMap[placeholder] = interpolationExpression\n            return placeholder\n          }\n        })\n        .join('')\n\n      // 2. Tokenize the embedded code\n\n      var embeddedTokens = tokenizeWithHooks(embeddedCode, grammar, language)\n\n      // 3. Re-insert the interpolation\n\n      var placeholders = Object.keys(placeholderMap)\n      placeholderCounter = 0\n\n      /**\n       *\n       * @param {(Token|string)[]} tokens\n       * @returns {void}\n       */\n      function walkTokens(tokens) {\n        for (var i = 0; i < tokens.length; i++) {\n          if (placeholderCounter >= placeholders.length) {\n            return\n          }\n          var token = tokens[i]\n          if (typeof token === 'string' || typeof token.content === 'string') {\n            var placeholder = placeholders[placeholderCounter]\n            var s =\n              typeof token === 'string'\n                ? token\n                : /** @type {string} */ token.content\n            var index = s.indexOf(placeholder)\n            if (index !== -1) {\n              ++placeholderCounter\n              var before = s.substring(0, index)\n              var middle = tokenizeInterpolationExpression(\n                placeholderMap[placeholder]\n              )\n              var after = s.substring(index + placeholder.length)\n              var replacement = []\n              if (before) {\n                replacement.push(before)\n              }\n              replacement.push(middle)\n              if (after) {\n                var afterTokens = [after]\n                walkTokens(afterTokens)\n                replacement.push.apply(replacement, afterTokens)\n              }\n              if (typeof token === 'string') {\n                tokens.splice.apply(tokens, [i, 1].concat(replacement))\n                i += replacement.length - 1\n              } else {\n                token.content = replacement\n              }\n            }\n          } else {\n            var content = token.content\n            if (Array.isArray(content)) {\n              walkTokens(content)\n            } else {\n              walkTokens([content])\n            }\n          }\n        }\n      }\n      walkTokens(embeddedTokens)\n      return new Prism.Token(\n        language,\n        embeddedTokens,\n        'language-' + language,\n        code\n      )\n    }\n\n    /**\n     * The languages for which JS templating will handle tagged template literals.\n     *\n     * JS templating isn't active for only JavaScript but also related languages like TypeScript, JSX, and TSX.\n     */\n    var supportedLanguages = {\n      javascript: true,\n      js: true,\n      typescript: true,\n      ts: true,\n      jsx: true,\n      tsx: true\n    }\n    Prism.hooks.add('after-tokenize', function (env) {\n      if (!(env.language in supportedLanguages)) {\n        return\n      }\n\n      /**\n       * Finds and tokenizes all template strings with an embedded languages.\n       *\n       * @param {(Token | string)[]} tokens\n       * @returns {void}\n       */\n      function findTemplateStrings(tokens) {\n        for (var i = 0, l = tokens.length; i < l; i++) {\n          var token = tokens[i]\n          if (typeof token === 'string') {\n            continue\n          }\n          var content = token.content\n          if (!Array.isArray(content)) {\n            if (typeof content !== 'string') {\n              findTemplateStrings([content])\n            }\n            continue\n          }\n          if (token.type === 'template-string') {\n            /**\n             * A JavaScript template-string token will look like this:\n             *\n             * [\"template-string\", [\n             *     [\"template-punctuation\", \"`\"],\n             *     (\n             *         An array of \"string\" and \"interpolation\" tokens. This is the simple string case.\n             *         or\n             *         [\"embedded-code\", \"...\"] This is the token containing the embedded code.\n             *                                  It also has an alias which is the language of the embedded code.\n             *     ),\n             *     [\"template-punctuation\", \"`\"]\n             * ]]\n             */\n\n            var embedded = content[1]\n            if (\n              content.length === 3 &&\n              typeof embedded !== 'string' &&\n              embedded.type === 'embedded-code'\n            ) {\n              // get string content\n              var code = stringContent(embedded)\n              var alias = embedded.alias\n              var language = Array.isArray(alias) ? alias[0] : alias\n              var grammar = Prism.languages[language]\n              if (!grammar) {\n                // the embedded language isn't registered.\n                continue\n              }\n              content[1] = tokenizeEmbedded(code, grammar, language)\n            }\n          } else {\n            findTemplateStrings(content)\n          }\n        }\n      }\n      findTemplateStrings(env.tokens)\n    })\n\n    /**\n     * Returns the string content of a token or token stream.\n     *\n     * @param {string | Token | (string | Token)[]} value\n     * @returns {string}\n     */\n    function stringContent(value) {\n      if (typeof value === 'string') {\n        return value\n      } else if (Array.isArray(value)) {\n        return value.map(stringContent).join('')\n      } else {\n        return stringContent(value.content)\n      }\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorJavadoclike from './javadoclike.js'\nimport refractorJavascript from './javascript.js'\nimport refractorTypescript from './typescript.js'\njsdoc.displayName = 'jsdoc'\njsdoc.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function jsdoc(Prism) {\n  Prism.register(refractorJavadoclike)\n  Prism.register(refractorJavascript)\n  Prism.register(refractorTypescript)\n  ;(function (Prism) {\n    var javascript = Prism.languages.javascript\n    var type = /\\{(?:[^{}]|\\{(?:[^{}]|\\{[^{}]*\\})*\\})+\\}/.source\n    var parameterPrefix =\n      '(@(?:arg|argument|param|property)\\\\s+(?:' + type + '\\\\s+)?)'\n    Prism.languages.jsdoc = Prism.languages.extend('javadoclike', {\n      parameter: {\n        // @param {string} foo - foo bar\n        pattern: RegExp(\n          parameterPrefix + /(?:(?!\\s)[$\\w\\xA0-\\uFFFF.])+(?=\\s|$)/.source\n        ),\n        lookbehind: true,\n        inside: {\n          punctuation: /\\./\n        }\n      }\n    })\n    Prism.languages.insertBefore('jsdoc', 'keyword', {\n      'optional-parameter': {\n        // @param {string} [baz.foo=\"bar\"] foo bar\n        pattern: RegExp(\n          parameterPrefix +\n            /\\[(?:(?!\\s)[$\\w\\xA0-\\uFFFF.])+(?:=[^[\\]]+)?\\](?=\\s|$)/.source\n        ),\n        lookbehind: true,\n        inside: {\n          parameter: {\n            pattern: /(^\\[)[$\\w\\xA0-\\uFFFF\\.]+/,\n            lookbehind: true,\n            inside: {\n              punctuation: /\\./\n            }\n          },\n          code: {\n            pattern: /(=)[\\s\\S]*(?=\\]$)/,\n            lookbehind: true,\n            inside: javascript,\n            alias: 'language-javascript'\n          },\n          punctuation: /[=[\\]]/\n        }\n      },\n      'class-name': [\n        {\n          pattern: RegExp(\n            /(@(?:augments|class|extends|interface|memberof!?|template|this|typedef)\\s+(?:<TYPE>\\s+)?)[A-Z]\\w*(?:\\.[A-Z]\\w*)*/.source.replace(\n              /<TYPE>/g,\n              function () {\n                return type\n              }\n            )\n          ),\n          lookbehind: true,\n          inside: {\n            punctuation: /\\./\n          }\n        },\n        {\n          pattern: RegExp('(@[a-z]+\\\\s+)' + type),\n          lookbehind: true,\n          inside: {\n            string: javascript.string,\n            number: javascript.number,\n            boolean: javascript.boolean,\n            keyword: Prism.languages.typescript.keyword,\n            operator: /=>|\\.\\.\\.|[&|?:*]/,\n            punctuation: /[.,;=<>{}()[\\]]/\n          }\n        }\n      ],\n      example: {\n        pattern:\n          /(@example\\s+(?!\\s))(?:[^@\\s]|\\s+(?!\\s))+?(?=\\s*(?:\\*\\s*)?(?:@\\w|\\*\\/))/,\n        lookbehind: true,\n        inside: {\n          code: {\n            pattern: /^([\\t ]*(?:\\*\\s*)?)\\S.*$/m,\n            lookbehind: true,\n            inside: javascript,\n            alias: 'language-javascript'\n          }\n        }\n      }\n    })\n    Prism.languages.javadoclike.addSupport('javascript', Prism.languages.jsdoc)\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorJavascript from './javascript.js'\nn4js.displayName = 'n4js'\nn4js.aliases = ['n4jsd']\n\n/** @param {Refractor} Prism */\nexport default function n4js(Prism) {\n  Prism.register(refractorJavascript)\n  Prism.languages.n4js = Prism.languages.extend('javascript', {\n    // Keywords from N4JS language spec: https://numberfour.github.io/n4js/spec/N4JSSpec.html\n    keyword:\n      /\\b(?:Array|any|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\\b/\n  })\n  Prism.languages.insertBefore('n4js', 'constant', {\n    // Annotations in N4JS spec: https://numberfour.github.io/n4js/spec/N4JSSpec.html#_annotations\n    annotation: {\n      pattern: /@+\\w+/,\n      alias: 'operator'\n    }\n  })\n  Prism.languages.n4jsd = Prism.languages.n4js\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorJavascript from './javascript.js'\njsExtras.displayName = 'js-extras'\njsExtras.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function jsExtras(Prism) {\n  Prism.register(refractorJavascript)\n  ;(function (Prism) {\n    Prism.languages.insertBefore('javascript', 'function-variable', {\n      'method-variable': {\n        pattern: RegExp(\n          '(\\\\.\\\\s*)' +\n            Prism.languages.javascript['function-variable'].pattern.source\n        ),\n        lookbehind: true,\n        alias: ['function-variable', 'method', 'function', 'property-access']\n      }\n    })\n    Prism.languages.insertBefore('javascript', 'function', {\n      method: {\n        pattern: RegExp(\n          '(\\\\.\\\\s*)' + Prism.languages.javascript['function'].source\n        ),\n        lookbehind: true,\n        alias: ['function', 'property-access']\n      }\n    })\n    Prism.languages.insertBefore('javascript', 'constant', {\n      'known-class-name': [\n        {\n          // standard built-ins\n          // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects\n          pattern:\n            /\\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\\b/,\n          alias: 'class-name'\n        },\n        {\n          // errors\n          pattern: /\\b(?:[A-Z]\\w*)Error\\b/,\n          alias: 'class-name'\n        }\n      ]\n    })\n\n    /**\n     * Replaces the `<ID>` placeholder in the given pattern with a pattern for general JS identifiers.\n     *\n     * @param {string} source\n     * @param {string} [flags]\n     * @returns {RegExp}\n     */\n    function withId(source, flags) {\n      return RegExp(\n        source.replace(/<ID>/g, function () {\n          return /(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*/.source\n        }),\n        flags\n      )\n    }\n    Prism.languages.insertBefore('javascript', 'keyword', {\n      imports: {\n        // https://tc39.es/ecma262/#sec-imports\n        pattern: withId(\n          /(\\bimport\\b\\s*)(?:<ID>(?:\\s*,\\s*(?:\\*\\s*as\\s+<ID>|\\{[^{}]*\\}))?|\\*\\s*as\\s+<ID>|\\{[^{}]*\\})(?=\\s*\\bfrom\\b)/\n            .source\n        ),\n        lookbehind: true,\n        inside: Prism.languages.javascript\n      },\n      exports: {\n        // https://tc39.es/ecma262/#sec-exports\n        pattern: withId(\n          /(\\bexport\\b\\s*)(?:\\*(?:\\s*as\\s+<ID>)?(?=\\s*\\bfrom\\b)|\\{[^{}]*\\})/\n            .source\n        ),\n        lookbehind: true,\n        inside: Prism.languages.javascript\n      }\n    })\n    Prism.languages.javascript['keyword'].unshift(\n      {\n        pattern: /\\b(?:as|default|export|from|import)\\b/,\n        alias: 'module'\n      },\n      {\n        pattern:\n          /\\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\\b/,\n        alias: 'control-flow'\n      },\n      {\n        pattern: /\\bnull\\b/,\n        alias: ['null', 'nil']\n      },\n      {\n        pattern: /\\bundefined\\b/,\n        alias: 'nil'\n      }\n    )\n    Prism.languages.insertBefore('javascript', 'operator', {\n      spread: {\n        pattern: /\\.{3}/,\n        alias: 'operator'\n      },\n      arrow: {\n        pattern: /=>/,\n        alias: 'operator'\n      }\n    })\n    Prism.languages.insertBefore('javascript', 'punctuation', {\n      'property-access': {\n        pattern: withId(/(\\.\\s*)#?<ID>/.source),\n        lookbehind: true\n      },\n      'maybe-class-name': {\n        pattern: /(^|[^$\\w\\xA0-\\uFFFF])[A-Z][$\\w\\xA0-\\uFFFF]+/,\n        lookbehind: true\n      },\n      dom: {\n        // this contains only a few commonly used DOM variables\n        pattern:\n          /\\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\\b/,\n        alias: 'variable'\n      },\n      console: {\n        pattern: /\\bconsole(?=\\s*\\.)/,\n        alias: 'class-name'\n      }\n    })\n\n    // add 'maybe-class-name' to tokens which might be a class name\n    var maybeClassNameTokens = [\n      'function',\n      'function-variable',\n      'method',\n      'method-variable',\n      'property-access'\n    ]\n    for (var i = 0; i < maybeClassNameTokens.length; i++) {\n      var token = maybeClassNameTokens[i]\n      var value = Prism.languages.javascript[token]\n\n      // convert regex to object\n      if (Prism.util.type(value) === 'RegExp') {\n        value = Prism.languages.javascript[token] = {\n          pattern: value\n        }\n      }\n\n      // keep in mind that we don't support arrays\n\n      var inside = value.inside || {}\n      value.inside = inside\n      inside['maybe-class-name'] = /^[A-Z][\\s\\S]*/\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorJson from './json.js'\njson5.displayName = 'json5'\njson5.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function json5(Prism) {\n  Prism.register(refractorJson)\n  ;(function (Prism) {\n    var string = /(\"|')(?:\\\\(?:\\r\\n?|\\n|.)|(?!\\1)[^\\\\\\r\\n])*\\1/\n    Prism.languages.json5 = Prism.languages.extend('json', {\n      property: [\n        {\n          pattern: RegExp(string.source + '(?=\\\\s*:)'),\n          greedy: true\n        },\n        {\n          pattern:\n            /(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/,\n          alias: 'unquoted'\n        }\n      ],\n      string: {\n        pattern: string,\n        greedy: true\n      },\n      number:\n        /[+-]?\\b(?:NaN|Infinity|0x[a-fA-F\\d]+)\\b|[+-]?(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[eE][+-]?\\d+\\b)?/\n    })\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorJson from './json.js'\njsonp.displayName = 'jsonp'\njsonp.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function jsonp(Prism) {\n  Prism.register(refractorJson)\n  Prism.languages.jsonp = Prism.languages.extend('json', {\n    punctuation: /[{}[\\]();,.]/\n  })\n  Prism.languages.insertBefore('jsonp', 'punctuation', {\n    function: /(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*\\()/\n  })\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\njsstacktrace.displayName = 'jsstacktrace'\njsstacktrace.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function jsstacktrace(Prism) {\n  Prism.languages.jsstacktrace = {\n    'error-message': {\n      pattern: /^\\S.*/m,\n      alias: 'string'\n    },\n    'stack-frame': {\n      pattern: /(^[ \\t]+)at[ \\t].*/m,\n      lookbehind: true,\n      inside: {\n        'not-my-code': {\n          pattern:\n            /^at[ \\t]+(?!\\s)(?:node\\.js|<unknown>|.*(?:node_modules|\\(<anonymous>\\)|\\(<unknown>|<anonymous>$|\\(internal\\/|\\(node\\.js)).*/m,\n          alias: 'comment'\n        },\n        filename: {\n          pattern: /(\\bat\\s+(?!\\s)|\\()(?:[a-zA-Z]:)?[^():]+(?=:)/,\n          lookbehind: true,\n          alias: 'url'\n        },\n        function: {\n          pattern:\n            /(\\bat\\s+(?:new\\s+)?)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF<][.$\\w\\xA0-\\uFFFF<>]*/,\n          lookbehind: true,\n          inside: {\n            punctuation: /\\./\n          }\n        },\n        punctuation: /[()]/,\n        keyword: /\\b(?:at|new)\\b/,\n        alias: {\n          pattern: /\\[(?:as\\s+)?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*\\]/,\n          alias: 'variable'\n        },\n        'line-number': {\n          pattern: /:\\d+(?::\\d+)?\\b/,\n          alias: 'number',\n          inside: {\n            punctuation: /:/\n          }\n        }\n      }\n    }\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\njulia.displayName = 'julia'\njulia.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function julia(Prism) {\n  Prism.languages.julia = {\n    comment: {\n      // support one level of nested comments\n      // https://github.com/JuliaLang/julia/pull/6128\n      pattern:\n        /(^|[^\\\\])(?:#=(?:[^#=]|=(?!#)|#(?!=)|#=(?:[^#=]|=(?!#)|#(?!=))*=#)*=#|#.*)/,\n      lookbehind: true\n    },\n    regex: {\n      // https://docs.julialang.org/en/v1/manual/strings/#Regular-Expressions-1\n      pattern: /r\"(?:\\\\.|[^\"\\\\\\r\\n])*\"[imsx]{0,4}/,\n      greedy: true\n    },\n    string: {\n      // https://docs.julialang.org/en/v1/manual/strings/#String-Basics-1\n      // https://docs.julialang.org/en/v1/manual/strings/#non-standard-string-literals-1\n      // https://docs.julialang.org/en/v1/manual/running-external-programs/#Running-External-Programs-1\n      pattern:\n        /\"\"\"[\\s\\S]+?\"\"\"|(?:\\b\\w+)?\"(?:\\\\.|[^\"\\\\\\r\\n])*\"|`(?:[^\\\\`\\r\\n]|\\\\.)*`/,\n      greedy: true\n    },\n    char: {\n      // https://docs.julialang.org/en/v1/manual/strings/#man-characters-1\n      pattern: /(^|[^\\w'])'(?:\\\\[^\\r\\n][^'\\r\\n]*|[^\\\\\\r\\n])'/,\n      lookbehind: true,\n      greedy: true\n    },\n    keyword:\n      /\\b(?:abstract|baremodule|begin|bitstype|break|catch|ccall|const|continue|do|else|elseif|end|export|finally|for|function|global|if|immutable|import|importall|in|let|local|macro|module|print|println|quote|return|struct|try|type|typealias|using|while)\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    number:\n      /(?:\\b(?=\\d)|\\B(?=\\.))(?:0[box])?(?:[\\da-f]+(?:_[\\da-f]+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[efp][+-]?\\d+(?:_\\d+)*)?j?/i,\n    // https://docs.julialang.org/en/v1/manual/mathematical-operations/\n    // https://docs.julialang.org/en/v1/manual/mathematical-operations/#Operator-Precedence-and-Associativity-1\n    operator:\n      /&&|\\|\\||[-+*^%\u00F7\u22BB&$\\\\]=?|\\/[\\/=]?|!=?=?|\\|[=>]?|<(?:<=?|[=:|])?|>(?:=|>>?=?)?|==?=?|[~\u2260\u2264\u2265'\u221A\u221B]/,\n    punctuation: /::?|[{}[\\]();,.?]/,\n    // https://docs.julialang.org/en/v1/base/numbers/#Base.im\n    constant: /\\b(?:(?:Inf|NaN)(?:16|32|64)?|im|pi)\\b|[\u03C0\u212F]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nkeepalived.displayName = 'keepalived'\nkeepalived.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function keepalived(Prism) {\n  Prism.languages.keepalived = {\n    comment: {\n      pattern: /[#!].*/,\n      greedy: true\n    },\n    string: {\n      pattern:\n        /(^|[^\\\\])(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/,\n      lookbehind: true,\n      greedy: true\n    },\n    // support IPv4, IPv6, subnet mask\n    ip: {\n      pattern: RegExp(\n        /\\b(?:(?:(?:[\\da-f]{1,4}:){7}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){6}:[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){5}:(?:[\\da-f]{1,4}:)?[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){4}:(?:[\\da-f]{1,4}:){0,2}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){3}:(?:[\\da-f]{1,4}:){0,3}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){2}:(?:[\\da-f]{1,4}:){0,4}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){6}<ipv4>|(?:[\\da-f]{1,4}:){0,5}:<ipv4>|::(?:[\\da-f]{1,4}:){0,5}<ipv4>|[\\da-f]{1,4}::(?:[\\da-f]{1,4}:){0,5}[\\da-f]{1,4}|::(?:[\\da-f]{1,4}:){0,6}[\\da-f]{1,4}|(?:[\\da-f]{1,4}:){1,7}:)(?:\\/\\d{1,3})?|<ipv4>(?:\\/\\d{1,2})?)\\b/.source.replace(\n          /<ipv4>/g,\n          function () {\n            return /(?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]\\d|\\d))/\n              .source\n          }\n        ),\n        'i'\n      ),\n      alias: 'number'\n    },\n    // support *nix / Windows, directory / file\n    path: {\n      pattern:\n        /(\\s)\\/(?:[^\\/\\s]+\\/)*[^\\/\\s]*|\\b[a-zA-Z]:\\\\(?:[^\\\\\\s]+\\\\)*[^\\\\\\s]*/,\n      lookbehind: true,\n      alias: 'string'\n    },\n    variable: /\\$\\{?\\w+\\}?/,\n    email: {\n      pattern: /[\\w-]+@[\\w-]+(?:\\.[\\w-]{2,3}){1,2}/,\n      alias: 'string'\n    },\n    'conditional-configuration': {\n      pattern: /@\\^?[\\w-]+/,\n      alias: 'variable'\n    },\n    operator: /=/,\n    property:\n      /\\b(?:BFD_CHECK|DNS_CHECK|FILE_CHECK|HTTP_GET|MISC_CHECK|NAME|PING_CHECK|SCRIPTS|SMTP_CHECK|SSL|SSL_GET|TCP_CHECK|UDP_CHECK|accept|advert_int|alpha|auth_pass|auth_type|authentication|bfd_cpu_affinity|bfd_instance|bfd_no_swap|bfd_priority|bfd_process_name|bfd_rlimit_rttime|bfd_rt_priority|bind_if|bind_port|bindto|ca|certificate|check_unicast_src|checker|checker_cpu_affinity|checker_log_all_failures|checker_no_swap|checker_priority|checker_rlimit_rttime|checker_rt_priority|child_wait_time|connect_ip|connect_port|connect_timeout|dbus_service_name|debug|default_interface|delay|delay_before_retry|delay_loop|digest|dont_track_primary|dynamic|dynamic_interfaces|enable_(?:dbus|script_security|sni|snmp_checker|snmp_rfc|snmp_rfcv2|snmp_rfcv3|snmp_vrrp|traps)|end|fall|fast_recovery|file|flag-[123]|fork_delay|full_command|fwmark|garp_group|garp_interval|garp_lower_prio_delay|garp_lower_prio_repeat|garp_master_delay|garp_master_refresh|garp_master_refresh_repeat|garp_master_repeat|global_defs|global_tracking|gna_interval|group|ha_suspend|hashed|helo_name|higher_prio_send_advert|hoplimit|http_protocol|hysteresis|idle_tx|include|inhibit_on_failure|init_fail|init_file|instance|interface|interfaces|interval|ip_family|ipvs_process_name|keepalived.conf|kernel_rx_buf_size|key|linkbeat_interfaces|linkbeat_use_polling|log_all_failures|log_unknown_vrids|lower_prio_no_advert|lthreshold|lvs_flush|lvs_flush_onstop|lvs_method|lvs_netlink_cmd_rcv_bufs|lvs_netlink_cmd_rcv_bufs_force|lvs_netlink_monitor_rcv_bufs|lvs_netlink_monitor_rcv_bufs_force|lvs_notify_fifo|lvs_notify_fifo_script|lvs_sched|lvs_sync_daemon|max_auto_priority|max_hops|mcast_src_ip|mh-fallback|mh-port|min_auto_priority_delay|min_rx|min_tx|misc_dynamic|misc_path|misc_timeout|multiplier|name|namespace_with_ipsets|native_ipv6|neighbor_ip|net_namespace|net_namespace_ipvs|nftables|nftables_counters|nftables_ifindex|nftables_priority|no_accept|no_checker_emails|no_email_faults|nopreempt|notification_email|notification_email_from|notify|notify_backup|notify_deleted|notify_down|notify_fault|notify_fifo|notify_fifo_script|notify_master|notify_master_rx_lower_pri|notify_priority_changes|notify_stop|notify_up|old_unicast_checksum|omega|ops|param_match|passive|password|path|persistence_engine|persistence_granularity|persistence_timeout|preempt|preempt_delay|priority|process|process_monitor_rcv_bufs|process_monitor_rcv_bufs_force|process_name|process_names|promote_secondaries|protocol|proxy_arp|proxy_arp_pvlan|quorum|quorum_down|quorum_max|quorum_up|random_seed|real_server|regex|regex_max_offset|regex_min_offset|regex_no_match|regex_options|regex_stack|reload_repeat|reload_time_file|require_reply|retry|rise|router_id|rs_init_notifies|script|script_user|sh-fallback|sh-port|shutdown_script|shutdown_script_timeout|skip_check_adv_addr|smtp_alert|smtp_alert_checker|smtp_alert_vrrp|smtp_connect_timeout|smtp_helo_name|smtp_server|snmp_socket|sorry_server|sorry_server_inhibit|sorry_server_lvs_method|source_ip|start|startup_script|startup_script_timeout|state|static_ipaddress|static_routes|static_rules|status_code|step|strict_mode|sync_group_tracking_weight|terminate_delay|timeout|track_bfd|track_file|track_group|track_interface|track_process|track_script|track_src_ip|ttl|type|umask|unicast_peer|unicast_src_ip|unicast_ttl|url|use_ipvlan|use_pid_dir|use_vmac|user|uthreshold|val[123]|version|virtual_ipaddress|virtual_ipaddress_excluded|virtual_router_id|virtual_routes|virtual_rules|virtual_server|virtual_server_group|virtualhost|vmac_xmit_base|vrrp|vrrp_(?:check_unicast_src|cpu_affinity|garp_interval|garp_lower_prio_delay|garp_lower_prio_repeat|garp_master_delay|garp_master_refresh|garp_master_refresh_repeat|garp_master_repeat|gna_interval|higher_prio_send_advert|instance|ipsets|iptables|lower_prio_no_advert|mcast_group4|mcast_group6|min_garp|netlink_cmd_rcv_bufs|netlink_cmd_rcv_bufs_force|netlink_monitor_rcv_bufs|netlink_monitor_rcv_bufs_force|no_swap|notify_fifo|notify_fifo_script|notify_priority_changes|priority|process_name|rlimit_rttime|rt_priority|rx_bufs_multiplier|rx_bufs_policy|script|skip_check_adv_addr|startup_delay|strict|sync_group|track_process|version)|warmup|weight)\\b/,\n    constant:\n      /\\b(?:A|AAAA|AH|BACKUP|CNAME|DR|MASTER|MX|NAT|NS|PASS|SCTP|SOA|TCP|TUN|TXT|UDP|dh|fo|lblc|lblcr|lc|mh|nq|ovf|rr|sed|sh|wlc|wrr)\\b/,\n    number: {\n      pattern: /(^|[^\\w.-])-?\\d+(?:\\.\\d+)?/,\n      lookbehind: true\n    },\n    boolean: /\\b(?:false|no|off|on|true|yes)\\b/,\n    punctuation: /[\\{\\}]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nkeyman.displayName = 'keyman'\nkeyman.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function keyman(Prism) {\n  Prism.languages.keyman = {\n    comment: {\n      pattern: /\\bc .*/i,\n      greedy: true\n    },\n    string: {\n      pattern: /\"[^\"\\r\\n]*\"|'[^'\\r\\n]*'/,\n      greedy: true\n    },\n    'virtual-key': {\n      pattern:\n        /\\[\\s*(?:(?:ALT|CAPS|CTRL|LALT|LCTRL|NCAPS|RALT|RCTRL|SHIFT)\\s+)*(?:[TKU]_[\\w?]+|[A-E]\\d\\d?|\"[^\"\\r\\n]*\"|'[^'\\r\\n]*')\\s*\\]/i,\n      greedy: true,\n      alias: 'function' // alias for styles\n    },\n    // https://help.keyman.com/developer/language/guide/headers\n    'header-keyword': {\n      pattern: /&\\w+/,\n      alias: 'bold' // alias for styles\n    },\n    'header-statement': {\n      pattern:\n        /\\b(?:bitmap|bitmaps|caps always off|caps on only|copyright|hotkey|language|layout|message|name|shift frees caps|version)\\b/i,\n      alias: 'bold' // alias for styles\n    },\n    'rule-keyword': {\n      pattern:\n        /\\b(?:any|baselayout|beep|call|context|deadkey|dk|if|index|layer|notany|nul|outs|platform|reset|return|save|set|store|use)\\b/i,\n      alias: 'keyword'\n    },\n    'structural-keyword': {\n      pattern:\n        /\\b(?:ansi|begin|group|match|newcontext|nomatch|postkeystroke|readonly|unicode|using keys)\\b/i,\n      alias: 'keyword'\n    },\n    'compile-target': {\n      pattern: /\\$(?:keyman|keymanonly|keymanweb|kmfl|weaver):/i,\n      alias: 'property'\n    },\n    // U+####, x###, d### characters and numbers\n    number: /\\b(?:U\\+[\\dA-F]+|d\\d+|x[\\da-f]+|\\d+)\\b/i,\n    operator: /[+>\\\\$]|\\.\\./,\n    punctuation: /[()=,]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nkumir.displayName = 'kumir'\nkumir.aliases = ['kum']\n\n/** @param {Refractor} Prism */\nexport default function kumir(Prism) {\n  /* eslint-disable regexp/no-dupe-characters-character-class */\n  ;(function (Prism) {\n    /**\n     * Regular expression for characters that are not allowed in identifiers.\n     *\n     * @type {string}\n     */\n    var nonId = /\\s\\x00-\\x1f\\x22-\\x2f\\x3a-\\x3f\\x5b-\\x5e\\x60\\x7b-\\x7e/.source\n\n    /**\n     * Surround a regular expression for IDs with patterns for non-ID sequences.\n     *\n     * @param {string} pattern A regular expression for identifiers.\n     * @param {string} [flags] The regular expression flags.\n     * @returns {RegExp} A wrapped regular expression for identifiers.\n     */\n    function wrapId(pattern, flags) {\n      return RegExp(pattern.replace(/<nonId>/g, nonId), flags)\n    }\n    Prism.languages.kumir = {\n      comment: {\n        pattern: /\\|.*/\n      },\n      prolog: {\n        pattern: /#.*/,\n        greedy: true\n      },\n      string: {\n        pattern: /\"[^\\n\\r\"]*\"|'[^\\n\\r']*'/,\n        greedy: true\n      },\n      boolean: {\n        pattern: wrapId(/(^|[<nonId>])(?:\u0434\u0430|\u043D\u0435\u0442)(?=[<nonId>]|$)/.source),\n        lookbehind: true\n      },\n      'operator-word': {\n        pattern: wrapId(/(^|[<nonId>])(?:\u0438|\u0438\u043B\u0438|\u043D\u0435)(?=[<nonId>]|$)/.source),\n        lookbehind: true,\n        alias: 'keyword'\n      },\n      'system-variable': {\n        pattern: wrapId(/(^|[<nonId>])\u0437\u043D\u0430\u0447(?=[<nonId>]|$)/.source),\n        lookbehind: true,\n        alias: 'keyword'\n      },\n      type: [\n        {\n          pattern: wrapId(\n            /(^|[<nonId>])(?:\u0432\u0435\u0449|\u043B\u0438\u0442|\u043B\u043E\u0433|\u0441\u0438\u043C|\u0446\u0435\u043B)(?:\\x20*\u0442\u0430\u0431)?(?=[<nonId>]|$)/\n              .source\n          ),\n          lookbehind: true,\n          alias: 'builtin'\n        },\n        {\n          pattern: wrapId(\n            /(^|[<nonId>])(?:\u043A\u043E\u043C\u043F\u043B|\u0441\u043A\u0430\u043D\u043A\u043E\u0434|\u0444\u0430\u0439\u043B|\u0446\u0432\u0435\u0442)(?=[<nonId>]|$)/.source\n          ),\n          lookbehind: true,\n          alias: 'important'\n        }\n      ],\n      /**\n       * Should be performed after searching for type names because of \"\u0442\u0430\u0431\".\n       * \"\u0442\u0430\u0431\" is a reserved word, but never used without a preceding type name.\n       * \"\u041D\u0410\u0417\u041D\u0410\u0427\u0418\u0422\u042C\", \"\u0424\u0432\u0432\u043E\u0434\", and \"\u0424\u0432\u044B\u0432\u043E\u0434\" are not reserved words.\n       */\n      keyword: {\n        pattern: wrapId(\n          /(^|[<nonId>])(?:\u0430\u043B\u0433|\u0430\u0440\u0433(?:\\x20*\u0440\u0435\u0437)?|\u0432\u0432\u043E\u0434|\u0412\u041A\u041B\u042E\u0427\u0418\u0422\u042C|\u0432\u0441[\u0435\u0451]|\u0432\u044B\u0431\u043E\u0440|\u0432\u044B\u0432\u043E\u0434|\u0432\u044B\u0445\u043E\u0434|\u0434\u0430\u043D\u043E|\u0434\u043B\u044F|\u0434\u043E|\u0434\u0441|\u0435\u0441\u043B\u0438|\u0438\u043D\u0430\u0447\u0435|\u0438\u0441\u043F|\u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C|\u043A\u043E\u043D(?:(?:\\x20+|_)\u0438\u0441\u043F)?|\u043A\u0446(?:(?:\\x20+|_)\u043F\u0440\u0438)?|\u043D\u0430\u0434\u043E|\u043D\u0430\u0447|\u043D\u0441|\u043D\u0446|\u043E\u0442|\u043F\u0430\u0443\u0437\u0430|\u043F\u043E\u043A\u0430|\u043F\u0440\u0438|\u0440\u0430\u0437\u0430?|\u0440\u0435\u0437|\u0441\u0442\u043E\u043F|\u0442\u0430\u0431|\u0442\u043E|\u0443\u0442\u0432|\u0448\u0430\u0433)(?=[<nonId>]|$)/\n            .source\n        ),\n        lookbehind: true\n      },\n      /** Should be performed after searching for reserved words. */\n      name: {\n        // eslint-disable-next-line regexp/no-super-linear-backtracking\n        pattern: wrapId(\n          /(^|[<nonId>])[^\\d<nonId>][^<nonId>]*(?:\\x20+[^<nonId>]+)*(?=[<nonId>]|$)/\n            .source\n        ),\n        lookbehind: true\n      },\n      /** Should be performed after searching for names. */\n      number: {\n        pattern: wrapId(\n          /(^|[<nonId>])(?:\\B\\$[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)(?=[<nonId>]|$)/\n            .source,\n          'i'\n        ),\n        lookbehind: true\n      },\n      /** Should be performed after searching for words. */\n      punctuation: /:=|[(),:;\\[\\]]/,\n      /**\n       * Should be performed after searching for\n       * - numeric constants (because of \"+\" and \"-\");\n       * - punctuation marks (because of \":=\" and \"=\").\n       */\n      'operator-char': {\n        pattern: /\\*\\*?|<[=>]?|>=?|[-+/=]/,\n        alias: 'operator'\n      }\n    }\n    Prism.languages.kum = Prism.languages.kumir\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nkusto.displayName = 'kusto'\nkusto.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function kusto(Prism) {\n  Prism.languages.kusto = {\n    comment: {\n      pattern: /\\/\\/.*/,\n      greedy: true\n    },\n    string: {\n      pattern:\n        /```[\\s\\S]*?```|[hH]?(?:\"(?:[^\\r\\n\\\\\"]|\\\\.)*\"|'(?:[^\\r\\n\\\\']|\\\\.)*'|@(?:\"[^\\r\\n\"]*\"|'[^\\r\\n']*'))/,\n      greedy: true\n    },\n    verb: {\n      pattern: /(\\|\\s*)[a-z][\\w-]*/i,\n      lookbehind: true,\n      alias: 'keyword'\n    },\n    command: {\n      pattern: /\\.[a-z][a-z\\d-]*\\b/,\n      alias: 'keyword'\n    },\n    'class-name':\n      /\\b(?:bool|datetime|decimal|dynamic|guid|int|long|real|string|timespan)\\b/,\n    keyword:\n      /\\b(?:access|alias|and|anti|as|asc|auto|between|by|(?:contains|(?:ends|starts)with|has(?:perfix|suffix)?)(?:_cs)?|database|declare|desc|external|from|fullouter|has_all|in|ingestion|inline|inner|innerunique|into|(?:left|right)(?:anti(?:semi)?|inner|outer|semi)?|let|like|local|not|of|on|or|pattern|print|query_parameters|range|restrict|schema|set|step|table|tables|to|view|where|with|matches\\s+regex|nulls\\s+(?:first|last))(?![\\w-])/,\n    boolean: /\\b(?:false|null|true)\\b/,\n    function: /\\b[a-z_]\\w*(?=\\s*\\()/,\n    datetime: [\n      {\n        // RFC 822 + RFC 850\n        pattern:\n          /\\b(?:(?:Fri|Friday|Mon|Monday|Sat|Saturday|Sun|Sunday|Thu|Thursday|Tue|Tuesday|Wed|Wednesday)\\s*,\\s*)?\\d{1,2}(?:\\s+|-)(?:Apr|Aug|Dec|Feb|Jan|Jul|Jun|Mar|May|Nov|Oct|Sep)(?:\\s+|-)\\d{2}\\s+\\d{2}:\\d{2}(?::\\d{2})?(?:\\s*(?:\\b(?:[A-Z]|(?:[ECMT][DS]|GM|U)T)|[+-]\\d{4}))?\\b/,\n        alias: 'number'\n      },\n      {\n        // ISO 8601\n        pattern:\n          /[+-]?\\b(?:\\d{4}-\\d{2}-\\d{2}(?:[ T]\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d+)?)?)?|\\d{2}:\\d{2}(?::\\d{2}(?:\\.\\d+)?)?)Z?/,\n        alias: 'number'\n      }\n    ],\n    number:\n      /\\b(?:0x[0-9A-Fa-f]+|\\d+(?:\\.\\d+)?(?:[Ee][+-]?\\d+)?)(?:(?:min|sec|[mn\u00B5]s|[dhms]|microsecond|tick)\\b)?|[+-]?\\binf\\b/,\n    operator: /=>|[!=]~|[!=<>]=?|[-+*/%|]|\\.\\./,\n    punctuation: /[()\\[\\]{},;.:]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nlatex.displayName = 'latex'\nlatex.aliases = ['context', 'tex']\n\n/** @param {Refractor} Prism */\nexport default function latex(Prism) {\n  ;(function (Prism) {\n    var funcPattern = /\\\\(?:[^a-z()[\\]]|[a-z*]+)/i\n    var insideEqu = {\n      'equation-command': {\n        pattern: funcPattern,\n        alias: 'regex'\n      }\n    }\n    Prism.languages.latex = {\n      comment: /%.*/,\n      // the verbatim environment prints whitespace to the document\n      cdata: {\n        pattern:\n          /(\\\\begin\\{((?:lstlisting|verbatim)\\*?)\\})[\\s\\S]*?(?=\\\\end\\{\\2\\})/,\n        lookbehind: true\n      },\n      /*\n       * equations can be between $$ $$ or $ $ or \\( \\) or \\[ \\]\n       * (all are multiline)\n       */\n      equation: [\n        {\n          pattern:\n            /\\$\\$(?:\\\\[\\s\\S]|[^\\\\$])+\\$\\$|\\$(?:\\\\[\\s\\S]|[^\\\\$])+\\$|\\\\\\([\\s\\S]*?\\\\\\)|\\\\\\[[\\s\\S]*?\\\\\\]/,\n          inside: insideEqu,\n          alias: 'string'\n        },\n        {\n          pattern:\n            /(\\\\begin\\{((?:align|eqnarray|equation|gather|math|multline)\\*?)\\})[\\s\\S]*?(?=\\\\end\\{\\2\\})/,\n          lookbehind: true,\n          inside: insideEqu,\n          alias: 'string'\n        }\n      ],\n      /*\n       * arguments which are keywords or references are highlighted\n       * as keywords\n       */\n      keyword: {\n        pattern:\n          /(\\\\(?:begin|cite|documentclass|end|label|ref|usepackage)(?:\\[[^\\]]+\\])?\\{)[^}]+(?=\\})/,\n        lookbehind: true\n      },\n      url: {\n        pattern: /(\\\\url\\{)[^}]+(?=\\})/,\n        lookbehind: true\n      },\n      /*\n       * section or chapter headlines are highlighted as bold so that\n       * they stand out more\n       */\n      headline: {\n        pattern:\n          /(\\\\(?:chapter|frametitle|paragraph|part|section|subparagraph|subsection|subsubparagraph|subsubsection|subsubsubparagraph)\\*?(?:\\[[^\\]]+\\])?\\{)[^}]+(?=\\})/,\n        lookbehind: true,\n        alias: 'class-name'\n      },\n      function: {\n        pattern: funcPattern,\n        alias: 'selector'\n      },\n      punctuation: /[[\\]{}&]/\n    }\n    Prism.languages.tex = Prism.languages.latex\n    Prism.languages.context = Prism.languages.latex\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\nimport refractorMarkupTemplating from './markup-templating.js'\nimport refractorPhp from './php.js'\nlatte.displayName = 'latte'\nlatte.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function latte(Prism) {\n  Prism.register(refractorClike)\n  Prism.register(refractorMarkupTemplating)\n  Prism.register(refractorPhp)\n  ;(function (Prism) {\n    Prism.languages.latte = {\n      comment: /^\\{\\*[\\s\\S]*/,\n      'latte-tag': {\n        // https://latte.nette.org/en/tags\n        pattern: /(^\\{(?:\\/(?=[a-z]))?)(?:[=_]|[a-z]\\w*\\b(?!\\())/i,\n        lookbehind: true,\n        alias: 'important'\n      },\n      delimiter: {\n        pattern: /^\\{\\/?|\\}$/,\n        alias: 'punctuation'\n      },\n      php: {\n        pattern: /\\S(?:[\\s\\S]*\\S)?/,\n        alias: 'language-php',\n        inside: Prism.languages.php\n      }\n    }\n    var markupLatte = Prism.languages.extend('markup', {})\n    Prism.languages.insertBefore(\n      'inside',\n      'attr-value',\n      {\n        'n-attr': {\n          pattern: /n:[\\w-]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+))?/,\n          inside: {\n            'attr-name': {\n              pattern: /^[^\\s=]+/,\n              alias: 'important'\n            },\n            'attr-value': {\n              pattern: /=[\\s\\S]+/,\n              inside: {\n                punctuation: [\n                  /^=/,\n                  {\n                    pattern: /^(\\s*)[\"']|[\"']$/,\n                    lookbehind: true\n                  }\n                ],\n                php: {\n                  pattern: /\\S(?:[\\s\\S]*\\S)?/,\n                  inside: Prism.languages.php\n                }\n              }\n            }\n          }\n        }\n      },\n      markupLatte.tag\n    )\n    Prism.hooks.add('before-tokenize', function (env) {\n      if (env.language !== 'latte') {\n        return\n      }\n      var lattePattern =\n        /\\{\\*[\\s\\S]*?\\*\\}|\\{[^'\"\\s{}*](?:[^\"'/{}]|\\/(?![*/])|(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*\\}/g\n      Prism.languages['markup-templating'].buildPlaceholders(\n        env,\n        'latte',\n        lattePattern\n      )\n      env.grammar = markupLatte\n    })\n    Prism.hooks.add('after-tokenize', function (env) {\n      Prism.languages['markup-templating'].tokenizePlaceholders(env, 'latte')\n    })\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nscheme.displayName = 'scheme'\nscheme.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function scheme(Prism) {\n  ;(function (Prism) {\n    Prism.languages.scheme = {\n      // this supports \"normal\" single-line comments:\n      //   ; comment\n      // and (potentially nested) multiline comments:\n      //   #| comment #| nested |# still comment |#\n      // (only 1 level of nesting is supported)\n      comment:\n        /;.*|#;\\s*(?:\\((?:[^()]|\\([^()]*\\))*\\)|\\[(?:[^\\[\\]]|\\[[^\\[\\]]*\\])*\\])|#\\|(?:[^#|]|#(?!\\|)|\\|(?!#)|#\\|(?:[^#|]|#(?!\\|)|\\|(?!#))*\\|#)*\\|#/,\n      string: {\n        pattern: /\"(?:[^\"\\\\]|\\\\.)*\"/,\n        greedy: true\n      },\n      symbol: {\n        pattern: /'[^()\\[\\]#'\\s]+/,\n        greedy: true\n      },\n      char: {\n        pattern:\n          /#\\\\(?:[ux][a-fA-F\\d]+\\b|[-a-zA-Z]+\\b|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|\\S)/,\n        greedy: true\n      },\n      'lambda-parameter': [\n        // https://www.cs.cmu.edu/Groups/AI/html/r4rs/r4rs_6.html#SEC30\n        {\n          pattern:\n            /((?:^|[^'`#])[(\\[]lambda\\s+)(?:[^|()\\[\\]'\\s]+|\\|(?:[^\\\\|]|\\\\.)*\\|)/,\n          lookbehind: true\n        },\n        {\n          pattern: /((?:^|[^'`#])[(\\[]lambda\\s+[(\\[])[^()\\[\\]']+/,\n          lookbehind: true\n        }\n      ],\n      keyword: {\n        pattern:\n          /((?:^|[^'`#])[(\\[])(?:begin|case(?:-lambda)?|cond(?:-expand)?|define(?:-library|-macro|-record-type|-syntax|-values)?|defmacro|delay(?:-force)?|do|else|except|export|guard|if|import|include(?:-ci|-library-declarations)?|lambda|let(?:rec)?(?:-syntax|-values|\\*)?|let\\*-values|only|parameterize|prefix|(?:quasi-?)?quote|rename|set!|syntax-(?:case|rules)|unless|unquote(?:-splicing)?|when)(?=[()\\[\\]\\s]|$)/,\n        lookbehind: true\n      },\n      builtin: {\n        // all functions of the base library of R7RS plus some of built-ins of R5Rs\n        pattern:\n          /((?:^|[^'`#])[(\\[])(?:abs|and|append|apply|assoc|ass[qv]|binary-port\\?|boolean=?\\?|bytevector(?:-append|-copy|-copy!|-length|-u8-ref|-u8-set!|\\?)?|caar|cadr|call-with-(?:current-continuation|port|values)|call\\/cc|car|cdar|cddr|cdr|ceiling|char(?:->integer|-ready\\?|\\?|<\\?|<=\\?|=\\?|>\\?|>=\\?)|close-(?:input-port|output-port|port)|complex\\?|cons|current-(?:error|input|output)-port|denominator|dynamic-wind|eof-object\\??|eq\\?|equal\\?|eqv\\?|error|error-object(?:-irritants|-message|\\?)|eval|even\\?|exact(?:-integer-sqrt|-integer\\?|\\?)?|expt|features|file-error\\?|floor(?:-quotient|-remainder|\\/)?|flush-output-port|for-each|gcd|get-output-(?:bytevector|string)|inexact\\??|input-port(?:-open\\?|\\?)|integer(?:->char|\\?)|lcm|length|list(?:->string|->vector|-copy|-ref|-set!|-tail|\\?)?|make-(?:bytevector|list|parameter|string|vector)|map|max|member|memq|memv|min|modulo|negative\\?|newline|not|null\\?|number(?:->string|\\?)|numerator|odd\\?|open-(?:input|output)-(?:bytevector|string)|or|output-port(?:-open\\?|\\?)|pair\\?|peek-char|peek-u8|port\\?|positive\\?|procedure\\?|quotient|raise|raise-continuable|rational\\?|rationalize|read-(?:bytevector|bytevector!|char|error\\?|line|string|u8)|real\\?|remainder|reverse|round|set-c[ad]r!|square|string(?:->list|->number|->symbol|->utf8|->vector|-append|-copy|-copy!|-fill!|-for-each|-length|-map|-ref|-set!|\\?|<\\?|<=\\?|=\\?|>\\?|>=\\?)?|substring|symbol(?:->string|\\?|=\\?)|syntax-error|textual-port\\?|truncate(?:-quotient|-remainder|\\/)?|u8-ready\\?|utf8->string|values|vector(?:->list|->string|-append|-copy|-copy!|-fill!|-for-each|-length|-map|-ref|-set!|\\?)?|with-exception-handler|write-(?:bytevector|char|string|u8)|zero\\?)(?=[()\\[\\]\\s]|$)/,\n        lookbehind: true\n      },\n      operator: {\n        pattern: /((?:^|[^'`#])[(\\[])(?:[-+*%/]|[<>]=?|=>?)(?=[()\\[\\]\\s]|$)/,\n        lookbehind: true\n      },\n      number: {\n        // The number pattern from [the R7RS spec](https://small.r7rs.org/attachment/r7rs.pdf).\n        //\n        // <number>      := <num 2>|<num 8>|<num 10>|<num 16>\n        // <num R>       := <prefix R><complex R>\n        // <complex R>   := <real R>(?:@<real R>|<imaginary R>)?|<imaginary R>\n        // <imaginary R> := [+-](?:<ureal R>|(?:inf|nan)\\.0)?i\n        // <real R>      := [+-]?<ureal R>|[+-](?:inf|nan)\\.0\n        // <ureal R>     := <uint R>(?:\\/<uint R>)?\n        //                | <decimal R>\n        //\n        // <decimal 10>  := (?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?\n        // <uint R>      := <digit R>+\n        // <prefix R>    := <radix R>(?:#[ei])?|(?:#[ei])?<radix R>\n        // <radix 2>     := #b\n        // <radix 8>     := #o\n        // <radix 10>    := (?:#d)?\n        // <radix 16>    := #x\n        // <digit 2>     := [01]\n        // <digit 8>     := [0-7]\n        // <digit 10>    := \\d\n        // <digit 16>    := [0-9a-f]\n        //\n        // The problem with this grammar is that the resulting regex is way to complex, so we simplify by grouping all\n        // non-decimal bases together. This results in a decimal (dec) and combined binary, octal, and hexadecimal (box)\n        // pattern:\n        pattern: RegExp(\n          SortedBNF({\n            '<ureal dec>':\n              /\\d+(?:\\/\\d+)|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[esfdl][+-]?\\d+)?/.source,\n            '<real dec>': /[+-]?<ureal dec>|[+-](?:inf|nan)\\.0/.source,\n            '<imaginary dec>': /[+-](?:<ureal dec>|(?:inf|nan)\\.0)?i/.source,\n            '<complex dec>':\n              /<real dec>(?:@<real dec>|<imaginary dec>)?|<imaginary dec>/\n                .source,\n            '<num dec>': /(?:#d(?:#[ei])?|#[ei](?:#d)?)?<complex dec>/.source,\n            '<ureal box>': /[0-9a-f]+(?:\\/[0-9a-f]+)?/.source,\n            '<real box>': /[+-]?<ureal box>|[+-](?:inf|nan)\\.0/.source,\n            '<imaginary box>': /[+-](?:<ureal box>|(?:inf|nan)\\.0)?i/.source,\n            '<complex box>':\n              /<real box>(?:@<real box>|<imaginary box>)?|<imaginary box>/\n                .source,\n            '<num box>': /#[box](?:#[ei])?|(?:#[ei])?#[box]<complex box>/\n              .source,\n            '<number>': /(^|[()\\[\\]\\s])(?:<num dec>|<num box>)(?=[()\\[\\]\\s]|$)/\n              .source\n          }),\n          'i'\n        ),\n        lookbehind: true\n      },\n      boolean: {\n        pattern: /(^|[()\\[\\]\\s])#(?:[ft]|false|true)(?=[()\\[\\]\\s]|$)/,\n        lookbehind: true\n      },\n      function: {\n        pattern:\n          /((?:^|[^'`#])[(\\[])(?:[^|()\\[\\]'\\s]+|\\|(?:[^\\\\|]|\\\\.)*\\|)(?=[()\\[\\]\\s]|$)/,\n        lookbehind: true\n      },\n      identifier: {\n        pattern: /(^|[()\\[\\]\\s])\\|(?:[^\\\\|]|\\\\.)*\\|(?=[()\\[\\]\\s]|$)/,\n        lookbehind: true,\n        greedy: true\n      },\n      punctuation: /[()\\[\\]']/\n    }\n\n    /**\n     * Given a topologically sorted BNF grammar, this will return the RegExp source of last rule of the grammar.\n     *\n     * @param {Record<string, string>} grammar\n     * @returns {string}\n     */\n    function SortedBNF(grammar) {\n      for (var key in grammar) {\n        grammar[key] = grammar[key].replace(/<[\\w\\s]+>/g, function (key) {\n          return '(?:' + grammar[key].trim() + ')'\n        })\n      }\n      // return the last item\n      return grammar[key]\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorScheme from './scheme.js'\nlilypond.displayName = 'lilypond'\nlilypond.aliases = ['ly']\n\n/** @param {Refractor} Prism */\nexport default function lilypond(Prism) {\n  Prism.register(refractorScheme)\n  ;(function (Prism) {\n    var schemeExpression =\n      /\\((?:[^();\"#\\\\]|\\\\[\\s\\S]|;.*(?!.)|\"(?:[^\"\\\\]|\\\\.)*\"|#(?:\\{(?:(?!#\\})[\\s\\S])*#\\}|[^{])|<expr>)*\\)/\n        .source\n    // allow for up to pow(2, recursivenessLog2) many levels of recursive brace expressions\n    // For some reason, this can't be 4\n    var recursivenessLog2 = 5\n    for (var i = 0; i < recursivenessLog2; i++) {\n      schemeExpression = schemeExpression.replace(/<expr>/g, function () {\n        return schemeExpression\n      })\n    }\n    schemeExpression = schemeExpression.replace(/<expr>/g, /[^\\s\\S]/.source)\n    var lilypond = (Prism.languages.lilypond = {\n      comment: /%(?:(?!\\{).*|\\{[\\s\\S]*?%\\})/,\n      'embedded-scheme': {\n        pattern: RegExp(\n          /(^|[=\\s])#(?:\"(?:[^\"\\\\]|\\\\.)*\"|[^\\s()\"]*(?:[^\\s()]|<expr>))/.source.replace(\n            /<expr>/g,\n            function () {\n              return schemeExpression\n            }\n          ),\n          'm'\n        ),\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          scheme: {\n            pattern: /^(#)[\\s\\S]+$/,\n            lookbehind: true,\n            alias: 'language-scheme',\n            inside: {\n              'embedded-lilypond': {\n                pattern: /#\\{[\\s\\S]*?#\\}/,\n                greedy: true,\n                inside: {\n                  punctuation: /^#\\{|#\\}$/,\n                  lilypond: {\n                    pattern: /[\\s\\S]+/,\n                    alias: 'language-lilypond',\n                    inside: null // see below\n                  }\n                }\n              },\n              rest: Prism.languages.scheme\n            }\n          },\n          punctuation: /#/\n        }\n      },\n      string: {\n        pattern: /\"(?:[^\"\\\\]|\\\\.)*\"/,\n        greedy: true\n      },\n      'class-name': {\n        pattern: /(\\\\new\\s+)[\\w-]+/,\n        lookbehind: true\n      },\n      keyword: {\n        pattern: /\\\\[a-z][-\\w]*/i,\n        inside: {\n          punctuation: /^\\\\/\n        }\n      },\n      operator: /[=|]|<<|>>/,\n      punctuation: {\n        pattern:\n          /(^|[a-z\\d])(?:'+|,+|[_^]?-[_^]?(?:[-+^!>._]|(?=\\d))|[_^]\\.?|[.!])|[{}()[\\]<>^~]|\\\\[()[\\]<>\\\\!]|--|__/,\n        lookbehind: true\n      },\n      number: /\\b\\d+(?:\\/\\d+)?\\b/\n    })\n    lilypond['embedded-scheme'].inside['scheme'].inside[\n      'embedded-lilypond'\n    ].inside['lilypond'].inside = lilypond\n    Prism.languages.ly = lilypond\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorMarkupTemplating from './markup-templating.js'\nliquid.displayName = 'liquid'\nliquid.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function liquid(Prism) {\n  Prism.register(refractorMarkupTemplating)\n  Prism.languages.liquid = {\n    comment: {\n      pattern: /(^\\{%\\s*comment\\s*%\\})[\\s\\S]+(?=\\{%\\s*endcomment\\s*%\\}$)/,\n      lookbehind: true\n    },\n    delimiter: {\n      pattern: /^\\{(?:\\{\\{|[%\\{])-?|-?(?:\\}\\}|[%\\}])\\}$/,\n      alias: 'punctuation'\n    },\n    string: {\n      pattern: /\"[^\"]*\"|'[^']*'/,\n      greedy: true\n    },\n    keyword:\n      /\\b(?:as|assign|break|(?:end)?(?:capture|case|comment|for|form|if|paginate|raw|style|tablerow|unless)|continue|cycle|decrement|echo|else|elsif|in|include|increment|limit|liquid|offset|range|render|reversed|section|when|with)\\b/,\n    object:\n      /\\b(?:address|all_country_option_tags|article|block|blog|cart|checkout|collection|color|country|country_option_tags|currency|current_page|current_tags|customer|customer_address|date|discount_allocation|discount_application|external_video|filter|filter_value|font|forloop|fulfillment|generic_file|gift_card|group|handle|image|line_item|link|linklist|localization|location|measurement|media|metafield|model|model_source|order|page|page_description|page_image|page_title|part|policy|product|product_option|recommendations|request|robots|routes|rule|script|search|selling_plan|selling_plan_allocation|selling_plan_group|shipping_method|shop|shop_locale|sitemap|store_availability|tax_line|template|theme|transaction|unit_price_measurement|user_agent|variant|video|video_source)\\b/,\n    function: [\n      {\n        pattern: /(\\|\\s*)\\w+/,\n        lookbehind: true,\n        alias: 'filter'\n      },\n      {\n        // array functions\n        pattern: /(\\.\\s*)(?:first|last|size)/,\n        lookbehind: true\n      }\n    ],\n    boolean: /\\b(?:false|nil|true)\\b/,\n    range: {\n      pattern: /\\.\\./,\n      alias: 'operator'\n    },\n    // https://github.com/Shopify/liquid/blob/698f5e0d967423e013f6169d9111bd969bd78337/lib/liquid/lexer.rb#L21\n    number: /\\b\\d+(?:\\.\\d+)?\\b/,\n    operator: /[!=]=|<>|[<>]=?|[|?:=-]|\\b(?:and|contains(?=\\s)|or)\\b/,\n    punctuation: /[.,\\[\\]()]/,\n    empty: {\n      pattern: /\\bempty\\b/,\n      alias: 'keyword'\n    }\n  }\n  Prism.hooks.add('before-tokenize', function (env) {\n    var liquidPattern =\n      /\\{%\\s*comment\\s*%\\}[\\s\\S]*?\\{%\\s*endcomment\\s*%\\}|\\{(?:%[\\s\\S]*?%|\\{\\{[\\s\\S]*?\\}\\}|\\{[\\s\\S]*?\\})\\}/g\n    var insideRaw = false\n    Prism.languages['markup-templating'].buildPlaceholders(\n      env,\n      'liquid',\n      liquidPattern,\n      function (match) {\n        var tagMatch = /^\\{%-?\\s*(\\w+)/.exec(match)\n        if (tagMatch) {\n          var tag = tagMatch[1]\n          if (tag === 'raw' && !insideRaw) {\n            insideRaw = true\n            return true\n          } else if (tag === 'endraw') {\n            insideRaw = false\n            return true\n          }\n        }\n        return !insideRaw\n      }\n    )\n  })\n  Prism.hooks.add('after-tokenize', function (env) {\n    Prism.languages['markup-templating'].tokenizePlaceholders(env, 'liquid')\n  })\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nlisp.displayName = 'lisp'\nlisp.aliases = ['elisp', 'emacs', 'emacs-lisp']\n\n/** @param {Refractor} Prism */\nexport default function lisp(Prism) {\n  ;(function (Prism) {\n    /**\n     * Functions to construct regular expressions\n     * e.g. (interactive ... or (interactive)\n     *\n     * @param {string} name\n     * @returns {RegExp}\n     */\n    function simple_form(name) {\n      return RegExp(/(\\()/.source + '(?:' + name + ')' + /(?=[\\s\\)])/.source)\n    }\n    /**\n     * booleans and numbers\n     *\n     * @param {string} pattern\n     * @returns {RegExp}\n     */\n    function primitive(pattern) {\n      return RegExp(\n        /([\\s([])/.source + '(?:' + pattern + ')' + /(?=[\\s)])/.source\n      )\n    }\n\n    // Patterns in regular expressions\n\n    // Symbol name. See https://www.gnu.org/software/emacs/manual/html_node/elisp/Symbol-Type.html\n    // & and : are excluded as they are usually used for special purposes\n    var symbol = /(?!\\d)[-+*/~!@$%^=<>{}\\w]+/.source\n    // symbol starting with & used in function arguments\n    var marker = '&' + symbol\n    // Open parenthesis for look-behind\n    var par = '(\\\\()'\n    var endpar = '(?=\\\\))'\n    // End the pattern with look-ahead space\n    var space = '(?=\\\\s)'\n    var nestedPar =\n      /(?:[^()]|\\((?:[^()]|\\((?:[^()]|\\((?:[^()]|\\((?:[^()]|\\([^()]*\\))*\\))*\\))*\\))*\\))*/\n        .source\n    var language = {\n      // Three or four semicolons are considered a heading.\n      // See https://www.gnu.org/software/emacs/manual/html_node/elisp/Comment-Tips.html\n      heading: {\n        pattern: /;;;.*/,\n        alias: ['comment', 'title']\n      },\n      comment: /;.*/,\n      string: {\n        pattern: /\"(?:[^\"\\\\]|\\\\.)*\"/,\n        greedy: true,\n        inside: {\n          argument: /[-A-Z]+(?=[.,\\s])/,\n          symbol: RegExp('`' + symbol + \"'\")\n        }\n      },\n      'quoted-symbol': {\n        pattern: RegExp(\"#?'\" + symbol),\n        alias: ['variable', 'symbol']\n      },\n      'lisp-property': {\n        pattern: RegExp(':' + symbol),\n        alias: 'property'\n      },\n      splice: {\n        pattern: RegExp(',@?' + symbol),\n        alias: ['symbol', 'variable']\n      },\n      keyword: [\n        {\n          pattern: RegExp(\n            par +\n              '(?:and|(?:cl-)?letf|cl-loop|cond|cons|error|if|(?:lexical-)?let\\\\*?|message|not|null|or|provide|require|setq|unless|use-package|when|while)' +\n              space\n          ),\n          lookbehind: true\n        },\n        {\n          pattern: RegExp(\n            par +\n              '(?:append|by|collect|concat|do|finally|for|in|return)' +\n              space\n          ),\n          lookbehind: true\n        }\n      ],\n      declare: {\n        pattern: simple_form(/declare/.source),\n        lookbehind: true,\n        alias: 'keyword'\n      },\n      interactive: {\n        pattern: simple_form(/interactive/.source),\n        lookbehind: true,\n        alias: 'keyword'\n      },\n      boolean: {\n        pattern: primitive(/nil|t/.source),\n        lookbehind: true\n      },\n      number: {\n        pattern: primitive(/[-+]?\\d+(?:\\.\\d*)?/.source),\n        lookbehind: true\n      },\n      defvar: {\n        pattern: RegExp(par + 'def(?:const|custom|group|var)\\\\s+' + symbol),\n        lookbehind: true,\n        inside: {\n          keyword: /^def[a-z]+/,\n          variable: RegExp(symbol)\n        }\n      },\n      defun: {\n        pattern: RegExp(\n          par +\n            /(?:cl-)?(?:defmacro|defun\\*?)\\s+/.source +\n            symbol +\n            /\\s+\\(/.source +\n            nestedPar +\n            /\\)/.source\n        ),\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          keyword: /^(?:cl-)?def\\S+/,\n          // See below, this property needs to be defined later so that it can\n          // reference the language object.\n          arguments: null,\n          function: {\n            pattern: RegExp('(^\\\\s)' + symbol),\n            lookbehind: true\n          },\n          punctuation: /[()]/\n        }\n      },\n      lambda: {\n        pattern: RegExp(\n          par +\n            'lambda\\\\s+\\\\(\\\\s*(?:&?' +\n            symbol +\n            '(?:\\\\s+&?' +\n            symbol +\n            ')*\\\\s*)?\\\\)'\n        ),\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          keyword: /^lambda/,\n          // See below, this property needs to be defined later so that it can\n          // reference the language object.\n          arguments: null,\n          punctuation: /[()]/\n        }\n      },\n      car: {\n        pattern: RegExp(par + symbol),\n        lookbehind: true\n      },\n      punctuation: [\n        // open paren, brackets, and close paren\n        /(?:['`,]?\\(|[)\\[\\]])/,\n        // cons\n        {\n          pattern: /(\\s)\\.(?=\\s)/,\n          lookbehind: true\n        }\n      ]\n    }\n    var arg = {\n      'lisp-marker': RegExp(marker),\n      varform: {\n        pattern: RegExp(\n          /\\(/.source + symbol + /\\s+(?=\\S)/.source + nestedPar + /\\)/.source\n        ),\n        inside: language\n      },\n      argument: {\n        pattern: RegExp(/(^|[\\s(])/.source + symbol),\n        lookbehind: true,\n        alias: 'variable'\n      },\n      rest: language\n    }\n    var forms = '\\\\S+(?:\\\\s+\\\\S+)*'\n    var arglist = {\n      pattern: RegExp(par + nestedPar + endpar),\n      lookbehind: true,\n      inside: {\n        'rest-vars': {\n          pattern: RegExp('&(?:body|rest)\\\\s+' + forms),\n          inside: arg\n        },\n        'other-marker-vars': {\n          pattern: RegExp('&(?:aux|optional)\\\\s+' + forms),\n          inside: arg\n        },\n        keys: {\n          pattern: RegExp('&key\\\\s+' + forms + '(?:\\\\s+&allow-other-keys)?'),\n          inside: arg\n        },\n        argument: {\n          pattern: RegExp(symbol),\n          alias: 'variable'\n        },\n        punctuation: /[()]/\n      }\n    }\n    language['lambda'].inside.arguments = arglist\n    language['defun'].inside.arguments = Prism.util.clone(arglist)\n    language['defun'].inside.arguments.inside.sublist = arglist\n    Prism.languages.lisp = language\n    Prism.languages.elisp = language\n    Prism.languages.emacs = language\n    Prism.languages['emacs-lisp'] = language\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nlivescript.displayName = 'livescript'\nlivescript.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function livescript(Prism) {\n  Prism.languages.livescript = {\n    comment: [\n      {\n        pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?\\*\\//,\n        lookbehind: true\n      },\n      {\n        pattern: /(^|[^\\\\])#.*/,\n        lookbehind: true\n      }\n    ],\n    'interpolated-string': {\n      /* Look-behind and look-ahead prevents wrong behavior of the greedy pattern\n       * forcing it to match \"\"\"-quoted string when it would otherwise match \"-quoted first. */\n      pattern: /(^|[^\"])(\"\"\"|\")(?:\\\\[\\s\\S]|(?!\\2)[^\\\\])*\\2(?!\")/,\n      lookbehind: true,\n      greedy: true,\n      inside: {\n        variable: {\n          pattern: /(^|[^\\\\])#[a-z_](?:-?[a-z]|[\\d_])*/m,\n          lookbehind: true\n        },\n        interpolation: {\n          pattern: /(^|[^\\\\])#\\{[^}]+\\}/m,\n          lookbehind: true,\n          inside: {\n            'interpolation-punctuation': {\n              pattern: /^#\\{|\\}$/,\n              alias: 'variable'\n            }\n            // See rest below\n          }\n        },\n        string: /[\\s\\S]+/\n      }\n    },\n    string: [\n      {\n        pattern: /('''|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n        greedy: true\n      },\n      {\n        pattern: /<\\[[\\s\\S]*?\\]>/,\n        greedy: true\n      },\n      /\\\\[^\\s,;\\])}]+/\n    ],\n    regex: [\n      {\n        pattern: /\\/\\/(?:\\[[^\\r\\n\\]]*\\]|\\\\.|(?!\\/\\/)[^\\\\\\[])+\\/\\/[gimyu]{0,5}/,\n        greedy: true,\n        inside: {\n          comment: {\n            pattern: /(^|[^\\\\])#.*/,\n            lookbehind: true\n          }\n        }\n      },\n      {\n        pattern: /\\/(?:\\[[^\\r\\n\\]]*\\]|\\\\.|[^/\\\\\\r\\n\\[])+\\/[gimyu]{0,5}/,\n        greedy: true\n      }\n    ],\n    keyword: {\n      pattern:\n        /(^|(?!-).)\\b(?:break|case|catch|class|const|continue|default|do|else|extends|fallthrough|finally|for(?: ever)?|function|if|implements|it|let|loop|new|null|otherwise|own|return|super|switch|that|then|this|throw|try|unless|until|var|void|when|while|yield)(?!-)\\b/m,\n      lookbehind: true\n    },\n    'keyword-operator': {\n      pattern:\n        /(^|[^-])\\b(?:(?:delete|require|typeof)!|(?:and|by|delete|export|from|import(?: all)?|in|instanceof|is(?: not|nt)?|not|of|or|til|to|typeof|with|xor)(?!-)\\b)/m,\n      lookbehind: true,\n      alias: 'operator'\n    },\n    boolean: {\n      pattern: /(^|[^-])\\b(?:false|no|off|on|true|yes)(?!-)\\b/m,\n      lookbehind: true\n    },\n    argument: {\n      // Don't match .&. nor &&\n      pattern: /(^|(?!\\.&\\.)[^&])&(?!&)\\d*/m,\n      lookbehind: true,\n      alias: 'variable'\n    },\n    number: /\\b(?:\\d+~[\\da-z]+|\\d[\\d_]*(?:\\.\\d[\\d_]*)?(?:[a-z]\\w*)?)/i,\n    identifier: /[a-z_](?:-?[a-z]|[\\d_])*/i,\n    operator: [\n      // Spaced .\n      {\n        pattern: /( )\\.(?= )/,\n        lookbehind: true\n      },\n      // Full list, in order:\n      // .= .~ .. ...\n      // .&. .^. .<<. .>>. .>>>.\n      // := :: ::=\n      // &&\n      // || |>\n      // < << <<< <<<<\n      // <- <-- <-! <--!\n      // <~ <~~ <~! <~~!\n      // <| <= <?\n      // > >> >= >?\n      // - -- -> -->\n      // + ++\n      // @ @@\n      // % %%\n      // * **\n      // ! != !~=\n      // !~> !~~>\n      // !-> !-->\n      // ~ ~> ~~> ~=\n      // = ==\n      // ^ ^^\n      // / ?\n      /\\.(?:[=~]|\\.\\.?)|\\.(?:[&|^]|<<|>>>?)\\.|:(?:=|:=?)|&&|\\|[|>]|<(?:<<?<?|--?!?|~~?!?|[|=?])?|>[>=?]?|-(?:->?|>)?|\\+\\+?|@@?|%%?|\\*\\*?|!(?:~?=|--?>|~?~>)?|~(?:~?>|=)?|==?|\\^\\^?|[\\/?]/\n    ],\n    punctuation: /[(){}\\[\\]|.,:;`]/\n  }\n  Prism.languages.livescript['interpolated-string'].inside[\n    'interpolation'\n  ].inside.rest = Prism.languages.livescript\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nllvm.displayName = 'llvm'\nllvm.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function llvm(Prism) {\n  ;(function (Prism) {\n    Prism.languages.llvm = {\n      comment: /;.*/,\n      string: {\n        pattern: /\"[^\"]*\"/,\n        greedy: true\n      },\n      boolean: /\\b(?:false|true)\\b/,\n      variable: /[%@!#](?:(?!\\d)(?:[-$.\\w]|\\\\[a-f\\d]{2})+|\\d+)/i,\n      label: /(?!\\d)(?:[-$.\\w]|\\\\[a-f\\d]{2})+:/i,\n      type: {\n        pattern:\n          /\\b(?:double|float|fp128|half|i[1-9]\\d*|label|metadata|ppc_fp128|token|void|x86_fp80|x86_mmx)\\b/,\n        alias: 'class-name'\n      },\n      keyword: /\\b[a-z_][a-z_0-9]*\\b/,\n      number:\n        /[+-]?\\b\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?\\b|\\b0x[\\dA-Fa-f]+\\b|\\b0xK[\\dA-Fa-f]{20}\\b|\\b0x[ML][\\dA-Fa-f]{32}\\b|\\b0xH[\\dA-Fa-f]{4}\\b/,\n      punctuation: /[{}[\\];(),.!*=<>]/\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nlog.displayName = 'log'\nlog.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function log(Prism) {\n  // This is a language definition for generic log files.\n  // Since there is no one log format, this language definition has to support all formats to some degree.\n  //\n  // Based on https://github.com/MTDL9/vim-log-highlighting\n\n  Prism.languages.log = {\n    string: {\n      // Single-quoted strings must not be confused with plain text. E.g. Can't isn't Susan's Chris' toy\n      pattern: /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"|'(?![st] | \\w)(?:[^'\\\\\\r\\n]|\\\\.)*'/,\n      greedy: true\n    },\n    exception: {\n      pattern:\n        /(^|[^\\w.])[a-z][\\w.]*(?:Error|Exception):.*(?:(?:\\r\\n?|\\n)[ \\t]*(?:at[ \\t].+|\\.{3}.*|Caused by:.*))+(?:(?:\\r\\n?|\\n)[ \\t]*\\.\\.\\. .*)?/,\n      lookbehind: true,\n      greedy: true,\n      alias: ['javastacktrace', 'language-javastacktrace'],\n      inside: Prism.languages['javastacktrace'] || {\n        keyword: /\\bat\\b/,\n        function: /[a-z_][\\w$]*(?=\\()/,\n        punctuation: /[.:()]/\n      }\n    },\n    level: [\n      {\n        pattern:\n          /\\b(?:ALERT|CRIT|CRITICAL|EMERG|EMERGENCY|ERR|ERROR|FAILURE|FATAL|SEVERE)\\b/,\n        alias: ['error', 'important']\n      },\n      {\n        pattern: /\\b(?:WARN|WARNING|WRN)\\b/,\n        alias: ['warning', 'important']\n      },\n      {\n        pattern: /\\b(?:DISPLAY|INF|INFO|NOTICE|STATUS)\\b/,\n        alias: ['info', 'keyword']\n      },\n      {\n        pattern: /\\b(?:DBG|DEBUG|FINE)\\b/,\n        alias: ['debug', 'keyword']\n      },\n      {\n        pattern: /\\b(?:FINER|FINEST|TRACE|TRC|VERBOSE|VRB)\\b/,\n        alias: ['trace', 'comment']\n      }\n    ],\n    property: {\n      pattern:\n        /((?:^|[\\]|])[ \\t]*)[a-z_](?:[\\w-]|\\b\\/\\b)*(?:[. ]\\(?\\w(?:[\\w-]|\\b\\/\\b)*\\)?)*:(?=\\s)/im,\n      lookbehind: true\n    },\n    separator: {\n      pattern: /(^|[^-+])-{3,}|={3,}|\\*{3,}|- - /m,\n      lookbehind: true,\n      alias: 'comment'\n    },\n    url: /\\b(?:file|ftp|https?):\\/\\/[^\\s|,;'\"]*[^\\s|,;'\">.]/,\n    email: {\n      pattern: /(^|\\s)[-\\w+.]+@[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9-]*)+(?=\\s)/,\n      lookbehind: true,\n      alias: 'url'\n    },\n    'ip-address': {\n      pattern: /\\b(?:\\d{1,3}(?:\\.\\d{1,3}){3})\\b/,\n      alias: 'constant'\n    },\n    'mac-address': {\n      pattern: /\\b[a-f0-9]{2}(?::[a-f0-9]{2}){5}\\b/i,\n      alias: 'constant'\n    },\n    domain: {\n      pattern:\n        /(^|\\s)[a-z][a-z0-9-]*(?:\\.[a-z][a-z0-9-]*)*\\.[a-z][a-z0-9-]+(?=\\s)/,\n      lookbehind: true,\n      alias: 'constant'\n    },\n    uuid: {\n      pattern:\n        /\\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\\b/i,\n      alias: 'constant'\n    },\n    hash: {\n      pattern: /\\b(?:[a-f0-9]{32}){1,2}\\b/i,\n      alias: 'constant'\n    },\n    'file-path': {\n      pattern:\n        /\\b[a-z]:[\\\\/][^\\s|,;:(){}\\[\\]\"']+|(^|[\\s:\\[\\](>|])\\.{0,2}\\/\\w[^\\s|,;:(){}\\[\\]\"']*/i,\n      lookbehind: true,\n      greedy: true,\n      alias: 'string'\n    },\n    date: {\n      pattern: RegExp(\n        /\\b\\d{4}[-/]\\d{2}[-/]\\d{2}(?:T(?=\\d{1,2}:)|(?=\\s\\d{1,2}:))/.source +\n          '|' +\n          /\\b\\d{1,4}[-/ ](?:\\d{1,2}|Apr|Aug|Dec|Feb|Jan|Jul|Jun|Mar|May|Nov|Oct|Sep)[-/ ]\\d{2,4}T?\\b/\n            .source +\n          '|' +\n          /\\b(?:(?:Fri|Mon|Sat|Sun|Thu|Tue|Wed)(?:\\s{1,2}(?:Apr|Aug|Dec|Feb|Jan|Jul|Jun|Mar|May|Nov|Oct|Sep))?|Apr|Aug|Dec|Feb|Jan|Jul|Jun|Mar|May|Nov|Oct|Sep)\\s{1,2}\\d{1,2}\\b/\n            .source,\n        'i'\n      ),\n      alias: 'number'\n    },\n    time: {\n      pattern:\n        /\\b\\d{1,2}:\\d{1,2}:\\d{1,2}(?:[.,:]\\d+)?(?:\\s?[+-]\\d{2}:?\\d{2}|Z)?\\b/,\n      alias: 'number'\n    },\n    boolean: /\\b(?:false|null|true)\\b/i,\n    number: {\n      pattern:\n        /(^|[^.\\w])(?:0x[a-f0-9]+|0o[0-7]+|0b[01]+|v?\\d[\\da-f]*(?:\\.\\d+)*(?:e[+-]?\\d+)?[a-z]{0,3}\\b)\\b(?!\\.\\w)/i,\n      lookbehind: true\n    },\n    operator: /[;:?<=>~/@!$%&+\\-|^(){}*#]/,\n    punctuation: /[\\[\\].,]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nlolcode.displayName = 'lolcode'\nlolcode.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function lolcode(Prism) {\n  Prism.languages.lolcode = {\n    comment: [/\\bOBTW\\s[\\s\\S]*?\\sTLDR\\b/, /\\bBTW.+/],\n    string: {\n      pattern: /\"(?::.|[^\":])*\"/,\n      inside: {\n        variable: /:\\{[^}]+\\}/,\n        symbol: [/:\\([a-f\\d]+\\)/i, /:\\[[^\\]]+\\]/, /:[)>o\":]/]\n      },\n      greedy: true\n    },\n    number: /(?:\\B-)?(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)/,\n    symbol: {\n      pattern: /(^|\\s)(?:A )?(?:BUKKIT|NOOB|NUMBAR|NUMBR|TROOF|YARN)(?=\\s|,|$)/,\n      lookbehind: true,\n      inside: {\n        keyword: /A(?=\\s)/\n      }\n    },\n    label: {\n      pattern: /((?:^|\\s)(?:IM IN YR|IM OUTTA YR) )[a-zA-Z]\\w*/,\n      lookbehind: true,\n      alias: 'string'\n    },\n    function: {\n      pattern: /((?:^|\\s)(?:HOW IZ I|I IZ|IZ) )[a-zA-Z]\\w*/,\n      lookbehind: true\n    },\n    keyword: [\n      {\n        pattern:\n          /(^|\\s)(?:AN|FOUND YR|GIMMEH|GTFO|HAI|HAS A|HOW IZ I|I HAS A|I IZ|IF U SAY SO|IM IN YR|IM OUTTA YR|IS NOW(?: A)?|ITZ(?: A)?|IZ|KTHX|KTHXBYE|LIEK(?: A)?|MAEK|MEBBE|MKAY|NERFIN|NO WAI|O HAI IM|O RLY\\?|OIC|OMG|OMGWTF|R|SMOOSH|SRS|TIL|UPPIN|VISIBLE|WILE|WTF\\?|YA RLY|YR)(?=\\s|,|$)/,\n        lookbehind: true\n      },\n      /'Z(?=\\s|,|$)/\n    ],\n    boolean: {\n      pattern: /(^|\\s)(?:FAIL|WIN)(?=\\s|,|$)/,\n      lookbehind: true\n    },\n    variable: {\n      pattern: /(^|\\s)IT(?=\\s|,|$)/,\n      lookbehind: true\n    },\n    operator: {\n      pattern:\n        /(^|\\s)(?:NOT|BOTH SAEM|DIFFRINT|(?:ALL|ANY|BIGGR|BOTH|DIFF|EITHER|MOD|PRODUKT|QUOSHUNT|SMALLR|SUM|WON) OF)(?=\\s|,|$)/,\n      lookbehind: true\n    },\n    punctuation: /\\.{3}|\u2026|,|!/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nmagma.displayName = 'magma'\nmagma.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function magma(Prism) {\n  Prism.languages.magma = {\n    output: {\n      pattern:\n        /^(>.*(?:\\r(?:\\n|(?!\\n))|\\n))(?!>)(?:.+|(?:\\r(?:\\n|(?!\\n))|\\n)(?!>).*)(?:(?:\\r(?:\\n|(?!\\n))|\\n)(?!>).*)*/m,\n      lookbehind: true,\n      greedy: true\n    },\n    comment: {\n      pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n      greedy: true\n    },\n    string: {\n      pattern: /(^|[^\\\\\"])\"(?:[^\\r\\n\\\\\"]|\\\\.)*\"/,\n      lookbehind: true,\n      greedy: true\n    },\n    // http://magma.maths.usyd.edu.au/magma/handbook/text/82\n    keyword:\n      /\\b(?:_|adj|and|assert|assert2|assert3|assigned|break|by|case|cat|catch|clear|cmpeq|cmpne|continue|declare|default|delete|diff|div|do|elif|else|end|eq|error|eval|exists|exit|for|forall|forward|fprintf|freeze|function|ge|gt|if|iload|import|in|intrinsic|is|join|le|load|local|lt|meet|mod|ne|not|notadj|notin|notsubset|or|print|printf|procedure|quit|random|read|readi|repeat|require|requirege|requirerange|restore|return|save|sdiff|select|subset|then|time|to|try|until|vprint|vprintf|vtime|when|where|while|xor)\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    generator: {\n      pattern: /\\b[a-z_]\\w*(?=\\s*<)/i,\n      alias: 'class-name'\n    },\n    function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n    number: {\n      pattern:\n        /(^|[^\\w.]|\\.\\.)(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eE][+-]?\\d+)?(?:_[a-z]?)?(?=$|[^\\w.]|\\.\\.)/,\n      lookbehind: true\n    },\n    operator: /->|[-+*/^~!|#=]|:=|\\.\\./,\n    punctuation: /[()[\\]{}<>,;.:]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nmata.displayName = 'mata'\nmata.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function mata(Prism) {\n  // https://www.stata.com/manuals/m.pdf\n\n  ;(function (Prism) {\n    var orgType = /\\b(?:(?:col|row)?vector|matrix|scalar)\\b/.source\n    var type =\n      /\\bvoid\\b|<org>|\\b(?:complex|numeric|pointer(?:\\s*\\([^()]*\\))?|real|string|(?:class|struct)\\s+\\w+|transmorphic)(?:\\s*<org>)?/.source.replace(\n        /<org>/g,\n        orgType\n      )\n    Prism.languages.mata = {\n      comment: {\n        pattern:\n          /\\/\\/.*|\\/\\*(?:[^*/]|\\*(?!\\/)|\\/(?!\\*)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*\\*\\//,\n        greedy: true\n      },\n      string: {\n        pattern: /\"[^\"\\r\\n]*\"|[\u2018`']\".*?\"[\u2019`']/,\n        greedy: true\n      },\n      'class-name': {\n        pattern: /(\\b(?:class|extends|struct)\\s+)\\w+(?=\\s*(?:\\{|\\bextends\\b))/,\n        lookbehind: true\n      },\n      type: {\n        pattern: RegExp(type),\n        alias: 'class-name',\n        inside: {\n          punctuation: /[()]/,\n          keyword: /\\b(?:class|function|struct|void)\\b/\n        }\n      },\n      keyword:\n        /\\b(?:break|class|continue|do|else|end|extends|external|final|for|function|goto|if|pragma|private|protected|public|return|static|struct|unset|unused|version|virtual|while)\\b/,\n      constant: /\\bNULL\\b/,\n      number: {\n        pattern:\n          /(^|[^\\w.])(?:\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?|\\d[a-f0-9]*(?:\\.[a-f0-9]+)?x[+-]?\\d+)i?(?![\\w.])/i,\n        lookbehind: true\n      },\n      missing: {\n        pattern: /(^|[^\\w.])(?:\\.[a-z]?)(?![\\w.])/,\n        lookbehind: true,\n        alias: 'symbol'\n      },\n      function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n      operator: /\\.\\.|\\+\\+|--|&&|\\|\\||:?(?:[!=<>]=|[+\\-*/^<>&|:])|[!?=\\\\#\u2019`']/,\n      punctuation: /[()[\\]{},;.]/\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nmatlab.displayName = 'matlab'\nmatlab.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function matlab(Prism) {\n  Prism.languages.matlab = {\n    comment: [/%\\{[\\s\\S]*?\\}%/, /%.+/],\n    string: {\n      pattern: /\\B'(?:''|[^'\\r\\n])*'/,\n      greedy: true\n    },\n    // FIXME We could handle imaginary numbers as a whole\n    number: /(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[eE][+-]?\\d+)?(?:[ij])?|\\b[ij]\\b/,\n    keyword:\n      /\\b(?:NaN|break|case|catch|continue|else|elseif|end|for|function|if|inf|otherwise|parfor|pause|pi|return|switch|try|while)\\b/,\n    function: /\\b(?!\\d)\\w+(?=\\s*\\()/,\n    operator: /\\.?[*^\\/\\\\']|[+\\-:@]|[<>=~]=?|&&?|\\|\\|?/,\n    punctuation: /\\.{3}|[.,;\\[\\](){}!]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nmaxscript.displayName = 'maxscript'\nmaxscript.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function maxscript(Prism) {\n  ;(function (Prism) {\n    var keywords =\n      /\\b(?:about|and|animate|as|at|attributes|by|case|catch|collect|continue|coordsys|do|else|exit|fn|for|from|function|global|if|in|local|macroscript|mapped|max|not|of|off|on|or|parameters|persistent|plugin|rcmenu|return|rollout|set|struct|then|throw|to|tool|try|undo|utility|when|where|while|with)\\b/i\n    Prism.languages.maxscript = {\n      comment: {\n        pattern: /\\/\\*[\\s\\S]*?(?:\\*\\/|$)|--.*/,\n        greedy: true\n      },\n      string: {\n        pattern: /(^|[^\"\\\\@])(?:\"(?:[^\"\\\\]|\\\\[\\s\\S])*\"|@\"[^\"]*\")/,\n        lookbehind: true,\n        greedy: true\n      },\n      path: {\n        pattern: /\\$(?:[\\w/\\\\.*?]|'[^']*')*/,\n        greedy: true,\n        alias: 'string'\n      },\n      'function-call': {\n        pattern: RegExp(\n          '((?:' +\n            // start of line\n            (/^/.source +\n              '|' +\n              // operators and other language constructs\n              /[;=<>+\\-*/^({\\[]/.source +\n              '|' +\n              // keywords as part of statements\n              /\\b(?:and|by|case|catch|collect|do|else|if|in|not|or|return|then|to|try|where|while|with)\\b/\n                .source) +\n            ')[ \\t]*)' +\n            '(?!' +\n            keywords.source +\n            ')' +\n            /[a-z_]\\w*\\b/.source +\n            '(?=[ \\t]*(?:' +\n            // variable\n            ('(?!' +\n              keywords.source +\n              ')' +\n              /[a-z_]/.source +\n              '|' +\n              // number\n              /\\d|-\\.?\\d/.source +\n              '|' +\n              // other expressions or literals\n              /[({'\"$@#?]/.source) +\n            '))',\n          'im'\n        ),\n        lookbehind: true,\n        greedy: true,\n        alias: 'function'\n      },\n      'function-definition': {\n        pattern: /(\\b(?:fn|function)\\s+)\\w+\\b/i,\n        lookbehind: true,\n        alias: 'function'\n      },\n      argument: {\n        pattern: /\\b[a-z_]\\w*(?=:)/i,\n        alias: 'attr-name'\n      },\n      keyword: keywords,\n      boolean: /\\b(?:false|true)\\b/,\n      time: {\n        pattern:\n          /(^|[^\\w.])(?:(?:(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eEdD][+-]\\d+|[LP])?[msft])+|\\d+:\\d+(?:\\.\\d*)?)(?![\\w.:])/,\n        lookbehind: true,\n        alias: 'number'\n      },\n      number: [\n        {\n          pattern:\n            /(^|[^\\w.])(?:(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[eEdD][+-]\\d+|[LP])?|0x[a-fA-F0-9]+)(?![\\w.:])/,\n          lookbehind: true\n        },\n        /\\b(?:e|pi)\\b/\n      ],\n      constant: /\\b(?:dontcollect|ok|silentValue|undefined|unsupplied)\\b/,\n      color: {\n        pattern: /\\b(?:black|blue|brown|gray|green|orange|red|white|yellow)\\b/i,\n        alias: 'constant'\n      },\n      operator: /[-+*/<>=!]=?|[&^?]|#(?!\\()/,\n      punctuation: /[()\\[\\]{}.:,;]|#(?=\\()|\\\\$/m\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nmel.displayName = 'mel'\nmel.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function mel(Prism) {\n  Prism.languages.mel = {\n    comment: {\n      pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n      greedy: true\n    },\n    code: {\n      pattern: /`(?:\\\\.|[^\\\\`])*`/,\n      greedy: true,\n      alias: 'italic',\n      inside: {\n        delimiter: {\n          pattern: /^`|`$/,\n          alias: 'punctuation'\n        },\n        statement: {\n          pattern: /[\\s\\S]+/,\n          inside: null // see below\n        }\n      }\n    },\n    string: {\n      pattern: /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/,\n      greedy: true\n    },\n    variable: /\\$\\w+/,\n    number: /\\b0x[\\da-fA-F]+\\b|\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+/,\n    flag: {\n      pattern: /-[^\\d\\W]\\w*/,\n      alias: 'operator'\n    },\n    keyword:\n      /\\b(?:break|case|continue|default|do|else|float|for|global|if|in|int|matrix|proc|return|string|switch|vector|while)\\b/,\n    function: {\n      pattern:\n        /((?:^|[{;])[ \\t]*)[a-z_]\\w*\\b(?!\\s*(?:\\.(?!\\.)|[[{=]))|\\b[a-z_]\\w*(?=[ \\t]*\\()/im,\n      lookbehind: true,\n      greedy: true\n    },\n    'tensor-punctuation': {\n      pattern: /<<|>>/,\n      alias: 'punctuation'\n    },\n    operator: /\\+[+=]?|-[-=]?|&&|\\|\\||[<>]=?|[*\\/!=]=?|[%^]/,\n    punctuation: /[.,:;?\\[\\](){}]/\n  }\n  Prism.languages.mel['code'].inside['statement'].inside = Prism.languages.mel\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nmermaid.displayName = 'mermaid'\nmermaid.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function mermaid(Prism) {\n  Prism.languages.mermaid = {\n    comment: {\n      pattern: /%%.*/,\n      greedy: true\n    },\n    style: {\n      pattern:\n        /^([ \\t]*(?:classDef|linkStyle|style)[ \\t]+[\\w$-]+[ \\t]+)\\w.*[^\\s;]/m,\n      lookbehind: true,\n      inside: {\n        property: /\\b\\w[\\w-]*(?=[ \\t]*:)/,\n        operator: /:/,\n        punctuation: /,/\n      }\n    },\n    'inter-arrow-label': {\n      pattern:\n        /([^<>ox.=-])(?:-[-.]|==)(?![<>ox.=-])[ \\t]*(?:\"[^\"\\r\\n]*\"|[^\\s\".=-](?:[^\\r\\n.=-]*[^\\s.=-])?)[ \\t]*(?:\\.+->?|--+[->]|==+[=>])(?![<>ox.=-])/,\n      lookbehind: true,\n      greedy: true,\n      inside: {\n        arrow: {\n          pattern: /(?:\\.+->?|--+[->]|==+[=>])$/,\n          alias: 'operator'\n        },\n        label: {\n          pattern: /^([\\s\\S]{2}[ \\t]*)\\S(?:[\\s\\S]*\\S)?/,\n          lookbehind: true,\n          alias: 'property'\n        },\n        'arrow-head': {\n          pattern: /^\\S+/,\n          alias: ['arrow', 'operator']\n        }\n      }\n    },\n    arrow: [\n      // This might look complex but it really isn't.\n      // There are many possible arrows (see tests) and it's impossible to fit all of them into one pattern. The\n      // problem is that we only have one lookbehind per pattern. However, we cannot disallow too many arrow\n      // characters in the one lookbehind because that would create too many false negatives. So we have to split the\n      // arrows into different patterns.\n      {\n        // ER diagram\n        pattern: /(^|[^{}|o.-])[|}][|o](?:--|\\.\\.)[|o][|{](?![{}|o.-])/,\n        lookbehind: true,\n        alias: 'operator'\n      },\n      {\n        // flow chart\n        // (?:==+|--+|-\\.*-)\n        pattern:\n          /(^|[^<>ox.=-])(?:[<ox](?:==+|--+|-\\.*-)[>ox]?|(?:==+|--+|-\\.*-)[>ox]|===+|---+|-\\.+-)(?![<>ox.=-])/,\n        lookbehind: true,\n        alias: 'operator'\n      },\n      {\n        // sequence diagram\n        pattern:\n          /(^|[^<>()x-])(?:--?(?:>>|[x>)])(?![<>()x])|(?:<<|[x<(])--?(?!-))/,\n        lookbehind: true,\n        alias: 'operator'\n      },\n      {\n        // class diagram\n        pattern:\n          /(^|[^<>|*o.-])(?:[*o]--|--[*o]|<\\|?(?:--|\\.\\.)|(?:--|\\.\\.)\\|?>|--|\\.\\.)(?![<>|*o.-])/,\n        lookbehind: true,\n        alias: 'operator'\n      }\n    ],\n    label: {\n      pattern: /(^|[^|<])\\|(?:[^\\r\\n\"|]|\"[^\"\\r\\n]*\")+\\|/,\n      lookbehind: true,\n      greedy: true,\n      alias: 'property'\n    },\n    text: {\n      pattern: /(?:[(\\[{]+|\\b>)(?:[^\\r\\n\"()\\[\\]{}]|\"[^\"\\r\\n]*\")+(?:[)\\]}]+|>)/,\n      alias: 'string'\n    },\n    string: {\n      pattern: /\"[^\"\\r\\n]*\"/,\n      greedy: true\n    },\n    annotation: {\n      pattern:\n        /<<(?:abstract|choice|enumeration|fork|interface|join|service)>>|\\[\\[(?:choice|fork|join)\\]\\]/i,\n      alias: 'important'\n    },\n    keyword: [\n      // This language has both case-sensitive and case-insensitive keywords\n      {\n        pattern:\n          /(^[ \\t]*)(?:action|callback|class|classDef|classDiagram|click|direction|erDiagram|flowchart|gantt|gitGraph|graph|journey|link|linkStyle|pie|requirementDiagram|sequenceDiagram|stateDiagram|stateDiagram-v2|style|subgraph)(?![\\w$-])/m,\n        lookbehind: true,\n        greedy: true\n      },\n      {\n        pattern:\n          /(^[ \\t]*)(?:activate|alt|and|as|autonumber|deactivate|else|end(?:[ \\t]+note)?|loop|opt|par|participant|rect|state|note[ \\t]+(?:over|(?:left|right)[ \\t]+of))(?![\\w$-])/im,\n        lookbehind: true,\n        greedy: true\n      }\n    ],\n    entity: /#[a-z0-9]+;/,\n    operator: {\n      pattern: /(\\w[ \\t]*)&(?=[ \\t]*\\w)|:::|:/,\n      lookbehind: true\n    },\n    punctuation: /[(){};]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nmetafont.displayName = 'metafont'\nmetafont.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function metafont(Prism) {\n  Prism.languages.metafont = {\n    // Syntax of METAFONT with the added (public) elements of PlainMETAFONT. Except for internal quantities they are expected to be rarely redefined. Freely inspired by the syntax of Christophe Grandsire for the Crimson Editor.\n    comment: {\n      pattern: /%.*/,\n      greedy: true\n    },\n    string: {\n      pattern: /\"[^\\r\\n\"]*\"/,\n      greedy: true\n    },\n    number: /\\d*\\.?\\d+/,\n    boolean: /\\b(?:false|true)\\b/,\n    punctuation: [\n      /[,;()]/,\n      {\n        pattern: /(^|[^{}])(?:\\{|\\})(?![{}])/,\n        lookbehind: true\n      },\n      {\n        pattern: /(^|[^[])\\[(?!\\[)/,\n        lookbehind: true\n      },\n      {\n        pattern: /(^|[^\\]])\\](?!\\])/,\n        lookbehind: true\n      }\n    ],\n    constant: [\n      {\n        pattern: /(^|[^!?])\\?\\?\\?(?![!?])/,\n        lookbehind: true\n      },\n      {\n        pattern: /(^|[^/*\\\\])(?:\\\\|\\\\\\\\)(?![/*\\\\])/,\n        lookbehind: true\n      },\n      /\\b(?:_|blankpicture|bp|cc|cm|dd|ditto|down|eps|epsilon|fullcircle|halfcircle|identity|in|infinity|left|mm|nullpen|nullpicture|origin|pc|penrazor|penspeck|pensquare|penstroke|proof|pt|quartercircle|relax|right|smoke|unitpixel|unitsquare|up)\\b/\n    ],\n    quantity: {\n      pattern:\n        /\\b(?:autorounding|blacker|boundarychar|charcode|chardp|chardx|chardy|charext|charht|charic|charwd|currentwindow|day|designsize|displaying|fillin|fontmaking|granularity|hppp|join_radius|month|o_correction|pausing|pen_(?:bot|lft|rt|top)|pixels_per_inch|proofing|showstopping|smoothing|time|tolerance|tracingcapsules|tracingchoices|tracingcommands|tracingedges|tracingequations|tracingmacros|tracingonline|tracingoutput|tracingpens|tracingrestores|tracingspecs|tracingstats|tracingtitles|turningcheck|vppp|warningcheck|xoffset|year|yoffset)\\b/,\n      alias: 'keyword'\n    },\n    command: {\n      pattern:\n        /\\b(?:addto|batchmode|charlist|cull|display|errhelp|errmessage|errorstopmode|everyjob|extensible|fontdimen|headerbyte|inner|interim|let|ligtable|message|newinternal|nonstopmode|numspecial|openwindow|outer|randomseed|save|scrollmode|shipout|show|showdependencies|showstats|showtoken|showvariable|special)\\b/,\n      alias: 'builtin'\n    },\n    operator: [\n      {\n        pattern:\n          /(^|[^>=<:|])(?:<|<=|=|=:|\\|=:|\\|=:>|=:\\|>|=:\\||\\|=:\\||\\|=:\\|>|\\|=:\\|>>|>|>=|:|:=|<>|::|\\|\\|:)(?![>=<:|])/,\n        lookbehind: true\n      },\n      {\n        pattern: /(^|[^+-])(?:\\+|\\+\\+|-{1,3}|\\+-\\+)(?![+-])/,\n        lookbehind: true\n      },\n      {\n        pattern: /(^|[^/*\\\\])(?:\\*|\\*\\*|\\/)(?![/*\\\\])/,\n        lookbehind: true\n      },\n      {\n        pattern: /(^|[^.])(?:\\.{2,3})(?!\\.)/,\n        lookbehind: true\n      },\n      {\n        pattern: /(^|[^@#&$])&(?![@#&$])/,\n        lookbehind: true\n      },\n      /\\b(?:and|not|or)\\b/\n    ],\n    macro: {\n      pattern:\n        /\\b(?:abs|beginchar|bot|byte|capsule_def|ceiling|change_width|clear_pen_memory|clearit|clearpen|clearxy|counterclockwise|cullit|cutdraw|cutoff|decr|define_blacker_pixels|define_corrected_pixels|define_good_x_pixels|define_good_y_pixels|define_horizontal_corrected_pixels|define_pixels|define_whole_blacker_pixels|define_whole_pixels|define_whole_vertical_blacker_pixels|define_whole_vertical_pixels|dir|direction|directionpoint|div|dotprod|downto|draw|drawdot|endchar|erase|fill|filldraw|fix_units|flex|font_coding_scheme|font_extra_space|font_identifier|font_normal_shrink|font_normal_space|font_normal_stretch|font_quad|font_size|font_slant|font_x_height|gfcorners|gobble|gobbled|good\\.(?:bot|lft|rt|top|x|y)|grayfont|hide|hround|imagerules|incr|interact|interpath|intersectionpoint|inverse|italcorr|killtext|labelfont|labels|lft|loggingall|lowres_fix|makegrid|makelabel(?:\\.(?:bot|lft|rt|top)(?:\\.nodot)?)?|max|min|mod|mode_def|mode_setup|nodisplays|notransforms|numtok|openit|penlabels|penpos|pickup|proofoffset|proofrule|proofrulethickness|range|reflectedabout|rotatedabout|rotatedaround|round|rt|savepen|screenchars|screenrule|screenstrokes|shipit|showit|slantfont|softjoin|solve|stop|superellipse|tensepath|thru|titlefont|top|tracingall|tracingnone|undraw|undrawdot|unfill|unfilldraw|upto|vround)\\b/,\n      alias: 'function'\n    },\n    builtin:\n      /\\b(?:ASCII|angle|char|cosd|decimal|directiontime|floor|hex|intersectiontimes|jobname|known|length|makepath|makepen|mexp|mlog|normaldeviate|oct|odd|pencircle|penoffset|point|postcontrol|precontrol|reverse|rotated|sind|sqrt|str|subpath|substring|totalweight|turningnumber|uniformdeviate|unknown|xpart|xxpart|xypart|ypart|yxpart|yypart)\\b/,\n    keyword:\n      /\\b(?:also|at|atleast|begingroup|charexists|contour|controls|curl|cycle|def|delimiters|doublepath|dropping|dump|else|elseif|end|enddef|endfor|endgroup|endinput|exitif|exitunless|expandafter|fi|for|forever|forsuffixes|from|if|input|inwindow|keeping|kern|of|primarydef|quote|readstring|scaled|scantokens|secondarydef|shifted|skipto|slanted|step|tension|tertiarydef|to|transformed|until|vardef|withpen|withweight|xscaled|yscaled|zscaled)\\b/,\n    type: {\n      pattern:\n        /\\b(?:boolean|expr|numeric|pair|path|pen|picture|primary|secondary|string|suffix|tertiary|text|transform)\\b/,\n      alias: 'property'\n    },\n    variable: {\n      pattern:\n        /(^|[^@#&$])(?:@#|#@|#|@)(?![@#&$])|\\b(?:aspect_ratio|currentpen|currentpicture|currenttransform|d|extra_beginchar|extra_endchar|extra_setup|h|localfont|mag|mode|screen_cols|screen_rows|w|whatever|x|y|z)\\b/,\n      lookbehind: true\n    }\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nmizar.displayName = 'mizar'\nmizar.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function mizar(Prism) {\n  Prism.languages.mizar = {\n    comment: /::.+/,\n    keyword:\n      /@proof\\b|\\b(?:according|aggregate|all|and|antonym|are|as|associativity|assume|asymmetry|attr|be|begin|being|by|canceled|case|cases|clusters?|coherence|commutativity|compatibility|connectedness|consider|consistency|constructors|contradiction|correctness|def|deffunc|define|definitions?|defpred|do|does|end|environ|equals|ex|exactly|existence|for|from|func|given|hence|hereby|holds|idempotence|identity|iff?|implies|involutiveness|irreflexivity|is|it|let|means|mode|non|not|notations?|now|of|or|otherwise|over|per|pred|prefix|projectivity|proof|provided|qua|reconsider|redefine|reduce|reducibility|reflexivity|registrations?|requirements|reserve|sch|schemes?|section|selector|set|sethood|st|struct|such|suppose|symmetry|synonym|take|that|the|then|theorems?|thesis|thus|to|transitivity|uniqueness|vocabular(?:ies|y)|when|where|with|wrt)\\b/,\n    parameter: {\n      pattern: /\\$(?:10|\\d)/,\n      alias: 'variable'\n    },\n    variable: /\\b\\w+(?=:)/,\n    number: /(?:\\b|-)\\d+\\b/,\n    operator: /\\.\\.\\.|->|&|\\.?=/,\n    punctuation: /\\(#|#\\)|[,:;\\[\\](){}]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorJavascript from './javascript.js'\nmongodb.displayName = 'mongodb'\nmongodb.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function mongodb(Prism) {\n  Prism.register(refractorJavascript)\n  ;(function (Prism) {\n    var operators = [\n      // query and projection\n      '$eq',\n      '$gt',\n      '$gte',\n      '$in',\n      '$lt',\n      '$lte',\n      '$ne',\n      '$nin',\n      '$and',\n      '$not',\n      '$nor',\n      '$or',\n      '$exists',\n      '$type',\n      '$expr',\n      '$jsonSchema',\n      '$mod',\n      '$regex',\n      '$text',\n      '$where',\n      '$geoIntersects',\n      '$geoWithin',\n      '$near',\n      '$nearSphere',\n      '$all',\n      '$elemMatch',\n      '$size',\n      '$bitsAllClear',\n      '$bitsAllSet',\n      '$bitsAnyClear',\n      '$bitsAnySet',\n      '$comment',\n      '$elemMatch',\n      '$meta',\n      '$slice',\n      // update\n      '$currentDate',\n      '$inc',\n      '$min',\n      '$max',\n      '$mul',\n      '$rename',\n      '$set',\n      '$setOnInsert',\n      '$unset',\n      '$addToSet',\n      '$pop',\n      '$pull',\n      '$push',\n      '$pullAll',\n      '$each',\n      '$position',\n      '$slice',\n      '$sort',\n      '$bit',\n      // aggregation pipeline stages\n      '$addFields',\n      '$bucket',\n      '$bucketAuto',\n      '$collStats',\n      '$count',\n      '$currentOp',\n      '$facet',\n      '$geoNear',\n      '$graphLookup',\n      '$group',\n      '$indexStats',\n      '$limit',\n      '$listLocalSessions',\n      '$listSessions',\n      '$lookup',\n      '$match',\n      '$merge',\n      '$out',\n      '$planCacheStats',\n      '$project',\n      '$redact',\n      '$replaceRoot',\n      '$replaceWith',\n      '$sample',\n      '$set',\n      '$skip',\n      '$sort',\n      '$sortByCount',\n      '$unionWith',\n      '$unset',\n      '$unwind',\n      '$setWindowFields',\n      // aggregation pipeline operators\n      '$abs',\n      '$accumulator',\n      '$acos',\n      '$acosh',\n      '$add',\n      '$addToSet',\n      '$allElementsTrue',\n      '$and',\n      '$anyElementTrue',\n      '$arrayElemAt',\n      '$arrayToObject',\n      '$asin',\n      '$asinh',\n      '$atan',\n      '$atan2',\n      '$atanh',\n      '$avg',\n      '$binarySize',\n      '$bsonSize',\n      '$ceil',\n      '$cmp',\n      '$concat',\n      '$concatArrays',\n      '$cond',\n      '$convert',\n      '$cos',\n      '$dateFromParts',\n      '$dateToParts',\n      '$dateFromString',\n      '$dateToString',\n      '$dayOfMonth',\n      '$dayOfWeek',\n      '$dayOfYear',\n      '$degreesToRadians',\n      '$divide',\n      '$eq',\n      '$exp',\n      '$filter',\n      '$first',\n      '$floor',\n      '$function',\n      '$gt',\n      '$gte',\n      '$hour',\n      '$ifNull',\n      '$in',\n      '$indexOfArray',\n      '$indexOfBytes',\n      '$indexOfCP',\n      '$isArray',\n      '$isNumber',\n      '$isoDayOfWeek',\n      '$isoWeek',\n      '$isoWeekYear',\n      '$last',\n      '$last',\n      '$let',\n      '$literal',\n      '$ln',\n      '$log',\n      '$log10',\n      '$lt',\n      '$lte',\n      '$ltrim',\n      '$map',\n      '$max',\n      '$mergeObjects',\n      '$meta',\n      '$min',\n      '$millisecond',\n      '$minute',\n      '$mod',\n      '$month',\n      '$multiply',\n      '$ne',\n      '$not',\n      '$objectToArray',\n      '$or',\n      '$pow',\n      '$push',\n      '$radiansToDegrees',\n      '$range',\n      '$reduce',\n      '$regexFind',\n      '$regexFindAll',\n      '$regexMatch',\n      '$replaceOne',\n      '$replaceAll',\n      '$reverseArray',\n      '$round',\n      '$rtrim',\n      '$second',\n      '$setDifference',\n      '$setEquals',\n      '$setIntersection',\n      '$setIsSubset',\n      '$setUnion',\n      '$size',\n      '$sin',\n      '$slice',\n      '$split',\n      '$sqrt',\n      '$stdDevPop',\n      '$stdDevSamp',\n      '$strcasecmp',\n      '$strLenBytes',\n      '$strLenCP',\n      '$substr',\n      '$substrBytes',\n      '$substrCP',\n      '$subtract',\n      '$sum',\n      '$switch',\n      '$tan',\n      '$toBool',\n      '$toDate',\n      '$toDecimal',\n      '$toDouble',\n      '$toInt',\n      '$toLong',\n      '$toObjectId',\n      '$toString',\n      '$toLower',\n      '$toUpper',\n      '$trim',\n      '$trunc',\n      '$type',\n      '$week',\n      '$year',\n      '$zip',\n      '$count',\n      '$dateAdd',\n      '$dateDiff',\n      '$dateSubtract',\n      '$dateTrunc',\n      '$getField',\n      '$rand',\n      '$sampleRate',\n      '$setField',\n      '$unsetField',\n      // aggregation pipeline query modifiers\n      '$comment',\n      '$explain',\n      '$hint',\n      '$max',\n      '$maxTimeMS',\n      '$min',\n      '$orderby',\n      '$query',\n      '$returnKey',\n      '$showDiskLoc',\n      '$natural'\n    ]\n    var builtinFunctions = [\n      'ObjectId',\n      'Code',\n      'BinData',\n      'DBRef',\n      'Timestamp',\n      'NumberLong',\n      'NumberDecimal',\n      'MaxKey',\n      'MinKey',\n      'RegExp',\n      'ISODate',\n      'UUID'\n    ]\n    operators = operators.map(function (operator) {\n      return operator.replace('$', '\\\\$')\n    })\n    var operatorsSource = '(?:' + operators.join('|') + ')\\\\b'\n    Prism.languages.mongodb = Prism.languages.extend('javascript', {})\n    Prism.languages.insertBefore('mongodb', 'string', {\n      property: {\n        pattern:\n          /(?:([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)(?=\\s*:)/,\n        greedy: true,\n        inside: {\n          keyword: RegExp('^([\\'\"])?' + operatorsSource + '(?:\\\\1)?$')\n        }\n      }\n    })\n    Prism.languages.mongodb.string.inside = {\n      url: {\n        // url pattern\n        pattern:\n          /https?:\\/\\/[-\\w@:%.+~#=]{1,256}\\.[a-z0-9()]{1,6}\\b[-\\w()@:%+.~#?&/=]*/i,\n        greedy: true\n      },\n      entity: {\n        // ipv4\n        pattern:\n          /\\b(?:(?:[01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}(?:[01]?\\d\\d?|2[0-4]\\d|25[0-5])\\b/,\n        greedy: true\n      }\n    }\n    Prism.languages.insertBefore('mongodb', 'constant', {\n      builtin: {\n        pattern: RegExp('\\\\b(?:' + builtinFunctions.join('|') + ')\\\\b'),\n        alias: 'keyword'\n      }\n    })\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nmonkey.displayName = 'monkey'\nmonkey.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function monkey(Prism) {\n  Prism.languages.monkey = {\n    comment: {\n      pattern: /^#Rem\\s[\\s\\S]*?^#End|'.+/im,\n      greedy: true\n    },\n    string: {\n      pattern: /\"[^\"\\r\\n]*\"/,\n      greedy: true\n    },\n    preprocessor: {\n      pattern: /(^[ \\t]*)#.+/m,\n      lookbehind: true,\n      greedy: true,\n      alias: 'property'\n    },\n    function: /\\b\\w+(?=\\()/,\n    'type-char': {\n      pattern: /\\b[?%#$]/,\n      alias: 'class-name'\n    },\n    number: {\n      pattern:\n        /((?:\\.\\.)?)(?:(?:\\b|\\B-\\.?|\\B\\.)\\d+(?:(?!\\.\\.)\\.\\d*)?|\\$[\\da-f]+)/i,\n      lookbehind: true\n    },\n    keyword:\n      /\\b(?:Abstract|Array|Bool|Case|Catch|Class|Const|Continue|Default|Eachin|Else|ElseIf|End|EndIf|Exit|Extends|Extern|False|Field|Final|Float|For|Forever|Function|Global|If|Implements|Import|Inline|Int|Interface|Local|Method|Module|New|Next|Null|Object|Private|Property|Public|Repeat|Return|Select|Self|Step|Strict|String|Super|Then|Throw|To|True|Try|Until|Void|Wend|While)\\b/i,\n    operator:\n      /\\.\\.|<[=>]?|>=?|:?=|(?:[+\\-*\\/&~|]|\\b(?:Mod|Shl|Shr)\\b)=?|\\b(?:And|Not|Or)\\b/i,\n    punctuation: /[.,:;()\\[\\]]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nmoonscript.displayName = 'moonscript'\nmoonscript.aliases = ['moon']\n\n/** @param {Refractor} Prism */\nexport default function moonscript(Prism) {\n  Prism.languages.moonscript = {\n    comment: /--.*/,\n    string: [\n      {\n        pattern: /'[^']*'|\\[(=*)\\[[\\s\\S]*?\\]\\1\\]/,\n        greedy: true\n      },\n      {\n        pattern: /\"[^\"]*\"/,\n        greedy: true,\n        inside: {\n          interpolation: {\n            pattern: /#\\{[^{}]*\\}/,\n            inside: {\n              moonscript: {\n                pattern: /(^#\\{)[\\s\\S]+(?=\\})/,\n                lookbehind: true,\n                inside: null // see beow\n              },\n              'interpolation-punctuation': {\n                pattern: /#\\{|\\}/,\n                alias: 'punctuation'\n              }\n            }\n          }\n        }\n      }\n    ],\n    'class-name': [\n      {\n        pattern: /(\\b(?:class|extends)[ \\t]+)\\w+/,\n        lookbehind: true\n      },\n      // class-like names start with a capital letter\n      /\\b[A-Z]\\w*/\n    ],\n    keyword:\n      /\\b(?:class|continue|do|else|elseif|export|extends|for|from|if|import|in|local|nil|return|self|super|switch|then|unless|using|when|while|with)\\b/,\n    variable: /@@?\\w*/,\n    property: {\n      pattern: /\\b(?!\\d)\\w+(?=:)|(:)(?!\\d)\\w+/,\n      lookbehind: true\n    },\n    function: {\n      pattern:\n        /\\b(?:_G|_VERSION|assert|collectgarbage|coroutine\\.(?:create|resume|running|status|wrap|yield)|debug\\.(?:debug|getfenv|gethook|getinfo|getlocal|getmetatable|getregistry|getupvalue|setfenv|sethook|setlocal|setmetatable|setupvalue|traceback)|dofile|error|getfenv|getmetatable|io\\.(?:close|flush|input|lines|open|output|popen|read|stderr|stdin|stdout|tmpfile|type|write)|ipairs|load|loadfile|loadstring|math\\.(?:abs|acos|asin|atan|atan2|ceil|cos|cosh|deg|exp|floor|fmod|frexp|ldexp|log|log10|max|min|modf|pi|pow|rad|random|randomseed|sin|sinh|sqrt|tan|tanh)|module|next|os\\.(?:clock|date|difftime|execute|exit|getenv|remove|rename|setlocale|time|tmpname)|package\\.(?:cpath|loaded|loadlib|path|preload|seeall)|pairs|pcall|print|rawequal|rawget|rawset|require|select|setfenv|setmetatable|string\\.(?:byte|char|dump|find|format|gmatch|gsub|len|lower|match|rep|reverse|sub|upper)|table\\.(?:concat|insert|maxn|remove|sort)|tonumber|tostring|type|unpack|xpcall)\\b/,\n      inside: {\n        punctuation: /\\./\n      }\n    },\n    boolean: /\\b(?:false|true)\\b/,\n    number:\n      /(?:\\B\\.\\d+|\\b\\d+\\.\\d+|\\b\\d+(?=[eE]))(?:[eE][-+]?\\d+)?\\b|\\b(?:0x[a-fA-F\\d]+|\\d+)(?:U?LL)?\\b/,\n    operator:\n      /\\.{3}|[-=]>|~=|(?:[-+*/%<>!=]|\\.\\.)=?|[:#^]|\\b(?:and|or)\\b=?|\\b(?:not)\\b/,\n    punctuation: /[.,()[\\]{}\\\\]/\n  }\n  Prism.languages.moonscript.string[1].inside.interpolation.inside.moonscript.inside =\n    Prism.languages.moonscript\n  Prism.languages.moon = Prism.languages.moonscript\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nn1ql.displayName = 'n1ql'\nn1ql.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function n1ql(Prism) {\n  // https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/index.html\n\n  Prism.languages.n1ql = {\n    comment: {\n      pattern: /\\/\\*[\\s\\S]*?(?:$|\\*\\/)|--.*/,\n      greedy: true\n    },\n    string: {\n      pattern: /([\"'])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\]|\\1\\1)*\\1/,\n      greedy: true\n    },\n    identifier: {\n      pattern: /`(?:\\\\[\\s\\S]|[^\\\\`]|``)*`/,\n      greedy: true\n    },\n    parameter: /\\$[\\w.]+/,\n    // https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/reservedwords.html#n1ql-reserved-words\n    keyword:\n      /\\b(?:ADVISE|ALL|ALTER|ANALYZE|AS|ASC|AT|BEGIN|BINARY|BOOLEAN|BREAK|BUCKET|BUILD|BY|CALL|CAST|CLUSTER|COLLATE|COLLECTION|COMMIT|COMMITTED|CONNECT|CONTINUE|CORRELATE|CORRELATED|COVER|CREATE|CURRENT|DATABASE|DATASET|DATASTORE|DECLARE|DECREMENT|DELETE|DERIVED|DESC|DESCRIBE|DISTINCT|DO|DROP|EACH|ELEMENT|EXCEPT|EXCLUDE|EXECUTE|EXPLAIN|FETCH|FILTER|FLATTEN|FLUSH|FOLLOWING|FOR|FORCE|FROM|FTS|FUNCTION|GOLANG|GRANT|GROUP|GROUPS|GSI|HASH|HAVING|IF|IGNORE|ILIKE|INCLUDE|INCREMENT|INDEX|INFER|INLINE|INNER|INSERT|INTERSECT|INTO|IS|ISOLATION|JAVASCRIPT|JOIN|KEY|KEYS|KEYSPACE|KNOWN|LANGUAGE|LAST|LEFT|LET|LETTING|LEVEL|LIMIT|LSM|MAP|MAPPING|MATCHED|MATERIALIZED|MERGE|MINUS|MISSING|NAMESPACE|NEST|NL|NO|NTH_VALUE|NULL|NULLS|NUMBER|OBJECT|OFFSET|ON|OPTION|OPTIONS|ORDER|OTHERS|OUTER|OVER|PARSE|PARTITION|PASSWORD|PATH|POOL|PRECEDING|PREPARE|PRIMARY|PRIVATE|PRIVILEGE|PROBE|PROCEDURE|PUBLIC|RANGE|RAW|REALM|REDUCE|RENAME|RESPECT|RETURN|RETURNING|REVOKE|RIGHT|ROLE|ROLLBACK|ROW|ROWS|SATISFIES|SAVEPOINT|SCHEMA|SCOPE|SELECT|SELF|SEMI|SET|SHOW|SOME|START|STATISTICS|STRING|SYSTEM|TIES|TO|TRAN|TRANSACTION|TRIGGER|TRUNCATE|UNBOUNDED|UNDER|UNION|UNIQUE|UNKNOWN|UNNEST|UNSET|UPDATE|UPSERT|USE|USER|USING|VALIDATE|VALUE|VALUES|VIA|VIEW|WHERE|WHILE|WINDOW|WITH|WORK|XOR)\\b/i,\n    function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n    boolean: /\\b(?:FALSE|TRUE)\\b/i,\n    number: /(?:\\b\\d+\\.|\\B\\.)\\d+e[+\\-]?\\d+\\b|\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+\\b/i,\n    operator:\n      /[-+*\\/%]|!=|==?|\\|\\||<[>=]?|>=?|\\b(?:AND|ANY|ARRAY|BETWEEN|CASE|ELSE|END|EVERY|EXISTS|FIRST|IN|LIKE|NOT|OR|THEN|VALUED|WHEN|WITHIN)\\b/i,\n    punctuation: /[;[\\](),.{}:]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nnand2tetrisHdl.displayName = 'nand2tetris-hdl'\nnand2tetrisHdl.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function nand2tetrisHdl(Prism) {\n  Prism.languages['nand2tetris-hdl'] = {\n    comment: /\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n    keyword: /\\b(?:BUILTIN|CHIP|CLOCKED|IN|OUT|PARTS)\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    function: /\\b[A-Za-z][A-Za-z0-9]*(?=\\()/,\n    number: /\\b\\d+\\b/,\n    operator: /=|\\.\\./,\n    punctuation: /[{}[\\];(),:]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nnaniscript.displayName = 'naniscript'\nnaniscript.aliases = ['nani']\n\n/** @param {Refractor} Prism */\nexport default function naniscript(Prism) {\n  ;(function (Prism) {\n    var expressionDef = /\\{[^\\r\\n\\[\\]{}]*\\}/\n    var params = {\n      'quoted-string': {\n        pattern: /\"(?:[^\"\\\\]|\\\\.)*\"/,\n        alias: 'operator'\n      },\n      'command-param-id': {\n        pattern: /(\\s)\\w+:/,\n        lookbehind: true,\n        alias: 'property'\n      },\n      'command-param-value': [\n        {\n          pattern: expressionDef,\n          alias: 'selector'\n        },\n        {\n          pattern: /([\\t ])\\S+/,\n          lookbehind: true,\n          greedy: true,\n          alias: 'operator'\n        },\n        {\n          pattern: /\\S(?:.*\\S)?/,\n          alias: 'operator'\n        }\n      ]\n    }\n    Prism.languages.naniscript = {\n      // ; ...\n      comment: {\n        pattern: /^([\\t ]*);.*/m,\n        lookbehind: true\n      },\n      // > ...\n      // Define is a control line starting with '>' followed by a word, a space and a text.\n      define: {\n        pattern: /^>.+/m,\n        alias: 'tag',\n        inside: {\n          value: {\n            pattern: /(^>\\w+[\\t ]+)(?!\\s)[^{}\\r\\n]+/,\n            lookbehind: true,\n            alias: 'operator'\n          },\n          key: {\n            pattern: /(^>)\\w+/,\n            lookbehind: true\n          }\n        }\n      },\n      // # ...\n      label: {\n        pattern: /^([\\t ]*)#[\\t ]*\\w+[\\t ]*$/m,\n        lookbehind: true,\n        alias: 'regex'\n      },\n      command: {\n        pattern: /^([\\t ]*)@\\w+(?=[\\t ]|$).*/m,\n        lookbehind: true,\n        alias: 'function',\n        inside: {\n          'command-name': /^@\\w+/,\n          expression: {\n            pattern: expressionDef,\n            greedy: true,\n            alias: 'selector'\n          },\n          'command-params': {\n            pattern: /\\s*\\S[\\s\\S]*/,\n            inside: params\n          }\n        }\n      },\n      // Generic is any line that doesn't start with operators: ;>#@\n      'generic-text': {\n        pattern: /(^[ \\t]*)[^#@>;\\s].*/m,\n        lookbehind: true,\n        alias: 'punctuation',\n        inside: {\n          // \\{ ... \\} ... \\[ ... \\] ... \\\"\n          'escaped-char': /\\\\[{}\\[\\]\"]/,\n          expression: {\n            pattern: expressionDef,\n            greedy: true,\n            alias: 'selector'\n          },\n          'inline-command': {\n            pattern: /\\[[\\t ]*\\w[^\\r\\n\\[\\]]*\\]/,\n            greedy: true,\n            alias: 'function',\n            inside: {\n              'command-params': {\n                pattern: /(^\\[[\\t ]*\\w+\\b)[\\s\\S]+(?=\\]$)/,\n                lookbehind: true,\n                inside: params\n              },\n              'command-param-name': {\n                pattern: /^(\\[[\\t ]*)\\w+/,\n                lookbehind: true,\n                alias: 'name'\n              },\n              'start-stop-char': /[\\[\\]]/\n            }\n          }\n        }\n      }\n    }\n    Prism.languages.nani = Prism.languages['naniscript']\n\n    /** @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token */\n\n    /**\n     * This hook is used to validate generic-text tokens for balanced brackets.\n     * Mark token as bad-line when contains not balanced brackets: {},[]\n     */\n    Prism.hooks.add('after-tokenize', function (env) {\n      /** @type {(Token | string)[]} */\n      var tokens = env.tokens\n      tokens.forEach(function (token) {\n        if (typeof token !== 'string' && token.type === 'generic-text') {\n          var content = getTextContent(token)\n          if (!isBracketsBalanced(content)) {\n            token.type = 'bad-line'\n            token.content = content\n          }\n        }\n      })\n    })\n\n    /**\n     * @param {string} input\n     * @returns {boolean}\n     */\n    function isBracketsBalanced(input) {\n      var brackets = '[]{}'\n      var stack = []\n      for (var i = 0; i < input.length; i++) {\n        var bracket = input[i]\n        var bracketsIndex = brackets.indexOf(bracket)\n        if (bracketsIndex !== -1) {\n          if (bracketsIndex % 2 === 0) {\n            stack.push(bracketsIndex + 1)\n          } else if (stack.pop() !== bracketsIndex) {\n            return false\n          }\n        }\n      }\n      return stack.length === 0\n    }\n\n    /**\n     * @param {string | Token | (string | Token)[]} token\n     * @returns {string}\n     */\n    function getTextContent(token) {\n      if (typeof token === 'string') {\n        return token\n      } else if (Array.isArray(token)) {\n        return token.map(getTextContent).join('')\n      } else {\n        return getTextContent(token.content)\n      }\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nnasm.displayName = 'nasm'\nnasm.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function nasm(Prism) {\n  Prism.languages.nasm = {\n    comment: /;.*$/m,\n    string: /([\"'`])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n    label: {\n      pattern: /(^\\s*)[A-Za-z._?$][\\w.?$@~#]*:/m,\n      lookbehind: true,\n      alias: 'function'\n    },\n    keyword: [\n      /\\[?BITS (?:16|32|64)\\]?/,\n      {\n        pattern: /(^\\s*)section\\s*[a-z.]+:?/im,\n        lookbehind: true\n      },\n      /(?:extern|global)[^;\\r\\n]*/i,\n      /(?:CPU|DEFAULT|FLOAT).*$/m\n    ],\n    register: {\n      pattern:\n        /\\b(?:st\\d|[xyz]mm\\d\\d?|[cdt]r\\d|r\\d\\d?[bwd]?|[er]?[abcd]x|[abcd][hl]|[er]?(?:bp|di|si|sp)|[cdefgs]s)\\b/i,\n      alias: 'variable'\n    },\n    number:\n      /(?:\\b|(?=\\$))(?:0[hx](?:\\.[\\da-f]+|[\\da-f]+(?:\\.[\\da-f]+)?)(?:p[+-]?\\d+)?|\\d[\\da-f]+[hx]|\\$\\d[\\da-f]*|0[oq][0-7]+|[0-7]+[oq]|0[by][01]+|[01]+[by]|0[dt]\\d+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:\\.?e[+-]?\\d+)?[dt]?)\\b/i,\n    operator: /[\\[\\]*+\\-\\/%<>=&|$!]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nneon.displayName = 'neon'\nneon.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function neon(Prism) {\n  Prism.languages.neon = {\n    comment: {\n      pattern: /#.*/,\n      greedy: true\n    },\n    datetime: {\n      pattern:\n        /(^|[[{(=:,\\s])\\d\\d\\d\\d-\\d\\d?-\\d\\d?(?:(?:[Tt]| +)\\d\\d?:\\d\\d:\\d\\d(?:\\.\\d*)? *(?:Z|[-+]\\d\\d?(?::?\\d\\d)?)?)?(?=$|[\\]}),\\s])/,\n      lookbehind: true,\n      alias: 'number'\n    },\n    key: {\n      pattern: /(^|[[{(,\\s])[^,:=[\\]{}()'\"\\s]+(?=\\s*:(?:$|[\\]}),\\s])|\\s*=)/,\n      lookbehind: true,\n      alias: 'property'\n    },\n    number: {\n      pattern:\n        /(^|[[{(=:,\\s])[+-]?(?:0x[\\da-fA-F]+|0o[0-7]+|0b[01]+|(?:\\d+(?:\\.\\d*)?|\\.?\\d+)(?:[eE][+-]?\\d+)?)(?=$|[\\]}),:=\\s])/,\n      lookbehind: true\n    },\n    boolean: {\n      pattern: /(^|[[{(=:,\\s])(?:false|no|true|yes)(?=$|[\\]}),:=\\s])/i,\n      lookbehind: true\n    },\n    null: {\n      pattern: /(^|[[{(=:,\\s])(?:null)(?=$|[\\]}),:=\\s])/i,\n      lookbehind: true,\n      alias: 'keyword'\n    },\n    string: {\n      pattern:\n        /(^|[[{(=:,\\s])(?:('''|\"\"\")\\r?\\n(?:(?:[^\\r\\n]|\\r?\\n(?![\\t ]*\\2))*\\r?\\n)?[\\t ]*\\2|'[^'\\r\\n]*'|\"(?:\\\\.|[^\\\\\"\\r\\n])*\")/,\n      lookbehind: true,\n      greedy: true\n    },\n    literal: {\n      pattern:\n        /(^|[[{(=:,\\s])(?:[^#\"',:=[\\]{}()\\s`-]|[:-][^\"',=[\\]{}()\\s])(?:[^,:=\\]})(\\s]|:(?![\\s,\\]})]|$)|[ \\t]+[^#,:=\\]})(\\s])*/,\n      lookbehind: true,\n      alias: 'string'\n    },\n    punctuation: /[,:=[\\]{}()-]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nnevod.displayName = 'nevod'\nnevod.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function nevod(Prism) {\n  Prism.languages.nevod = {\n    comment: /\\/\\/.*|(?:\\/\\*[\\s\\S]*?(?:\\*\\/|$))/,\n    string: {\n      pattern: /(?:\"(?:\"\"|[^\"])*\"(?!\")|'(?:''|[^'])*'(?!'))!?\\*?/,\n      greedy: true,\n      inside: {\n        'string-attrs': /!$|!\\*$|\\*$/\n      }\n    },\n    namespace: {\n      pattern: /(@namespace\\s+)[a-zA-Z0-9\\-.]+(?=\\s*\\{)/,\n      lookbehind: true\n    },\n    pattern: {\n      pattern:\n        /(@pattern\\s+)?#?[a-zA-Z0-9\\-.]+(?:\\s*\\(\\s*(?:~\\s*)?[a-zA-Z0-9\\-.]+\\s*(?:,\\s*(?:~\\s*)?[a-zA-Z0-9\\-.]*)*\\))?(?=\\s*=)/,\n      lookbehind: true,\n      inside: {\n        'pattern-name': {\n          pattern: /^#?[a-zA-Z0-9\\-.]+/,\n          alias: 'class-name'\n        },\n        fields: {\n          pattern: /\\(.*\\)/,\n          inside: {\n            'field-name': {\n              pattern: /[a-zA-Z0-9\\-.]+/,\n              alias: 'variable'\n            },\n            punctuation: /[,()]/,\n            operator: {\n              pattern: /~/,\n              alias: 'field-hidden-mark'\n            }\n          }\n        }\n      }\n    },\n    search: {\n      pattern: /(@search\\s+|#)[a-zA-Z0-9\\-.]+(?:\\.\\*)?(?=\\s*;)/,\n      alias: 'function',\n      lookbehind: true\n    },\n    keyword:\n      /@(?:having|inside|namespace|outside|pattern|require|search|where)\\b/,\n    'standard-pattern': {\n      pattern:\n        /\\b(?:Alpha|AlphaNum|Any|Blank|End|LineBreak|Num|NumAlpha|Punct|Space|Start|Symbol|Word|WordBreak)\\b(?:\\([a-zA-Z0-9\\-.,\\s+]*\\))?/,\n      inside: {\n        'standard-pattern-name': {\n          pattern: /^[a-zA-Z0-9\\-.]+/,\n          alias: 'builtin'\n        },\n        quantifier: {\n          pattern: /\\b\\d+(?:\\s*\\+|\\s*-\\s*\\d+)?(?!\\w)/,\n          alias: 'number'\n        },\n        'standard-pattern-attr': {\n          pattern: /[a-zA-Z0-9\\-.]+/,\n          alias: 'builtin'\n        },\n        punctuation: /[,()]/\n      }\n    },\n    quantifier: {\n      pattern: /\\b\\d+(?:\\s*\\+|\\s*-\\s*\\d+)?(?!\\w)/,\n      alias: 'number'\n    },\n    operator: [\n      {\n        pattern: /=/,\n        alias: 'pattern-def'\n      },\n      {\n        pattern: /&/,\n        alias: 'conjunction'\n      },\n      {\n        pattern: /~/,\n        alias: 'exception'\n      },\n      {\n        pattern: /\\?/,\n        alias: 'optionality'\n      },\n      {\n        pattern: /[[\\]]/,\n        alias: 'repetition'\n      },\n      {\n        pattern: /[{}]/,\n        alias: 'variation'\n      },\n      {\n        pattern: /[+_]/,\n        alias: 'sequence'\n      },\n      {\n        pattern: /\\.{2,3}/,\n        alias: 'span'\n      }\n    ],\n    'field-capture': [\n      {\n        pattern:\n          /([a-zA-Z0-9\\-.]+\\s*\\()\\s*[a-zA-Z0-9\\-.]+\\s*:\\s*[a-zA-Z0-9\\-.]+(?:\\s*,\\s*[a-zA-Z0-9\\-.]+\\s*:\\s*[a-zA-Z0-9\\-.]+)*(?=\\s*\\))/,\n        lookbehind: true,\n        inside: {\n          'field-name': {\n            pattern: /[a-zA-Z0-9\\-.]+/,\n            alias: 'variable'\n          },\n          colon: /:/\n        }\n      },\n      {\n        pattern: /[a-zA-Z0-9\\-.]+\\s*:/,\n        inside: {\n          'field-name': {\n            pattern: /[a-zA-Z0-9\\-.]+/,\n            alias: 'variable'\n          },\n          colon: /:/\n        }\n      }\n    ],\n    punctuation: /[:;,()]/,\n    name: /[a-zA-Z0-9\\-.]+/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nnginx.displayName = 'nginx'\nnginx.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function nginx(Prism) {\n  ;(function (Prism) {\n    var variable =\n      /\\$(?:\\w[a-z\\d]*(?:_[^\\x00-\\x1F\\s\"'\\\\()$]*)?|\\{[^}\\s\"'\\\\]+\\})/i\n    Prism.languages.nginx = {\n      comment: {\n        pattern: /(^|[\\s{};])#.*/,\n        lookbehind: true,\n        greedy: true\n      },\n      directive: {\n        pattern:\n          /(^|\\s)\\w(?:[^;{}\"'\\\\\\s]|\\\\.|\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'|\\s+(?:#.*(?!.)|(?![#\\s])))*?(?=\\s*[;{])/,\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          string: {\n            pattern:\n              /((?:^|[^\\\\])(?:\\\\\\\\)*)(?:\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*')/,\n            lookbehind: true,\n            greedy: true,\n            inside: {\n              escape: {\n                pattern: /\\\\[\"'\\\\nrt]/,\n                alias: 'entity'\n              },\n              variable: variable\n            }\n          },\n          comment: {\n            pattern: /(\\s)#.*/,\n            lookbehind: true,\n            greedy: true\n          },\n          keyword: {\n            pattern: /^\\S+/,\n            greedy: true\n          },\n          // other patterns\n\n          boolean: {\n            pattern: /(\\s)(?:off|on)(?!\\S)/,\n            lookbehind: true\n          },\n          number: {\n            pattern: /(\\s)\\d+[a-z]*(?!\\S)/i,\n            lookbehind: true\n          },\n          variable: variable\n        }\n      },\n      punctuation: /[{};]/\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nnim.displayName = 'nim'\nnim.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function nim(Prism) {\n  Prism.languages.nim = {\n    comment: {\n      pattern: /#.*/,\n      greedy: true\n    },\n    string: {\n      // Double-quoted strings can be prefixed by an identifier (Generalized raw string literals)\n      pattern:\n        /(?:\\b(?!\\d)(?:\\w|\\\\x[89a-fA-F][0-9a-fA-F])+)?(?:\"\"\"[\\s\\S]*?\"\"\"(?!\")|\"(?:\\\\[\\s\\S]|\"\"|[^\"\\\\])*\")/,\n      greedy: true\n    },\n    char: {\n      // Character literals are handled specifically to prevent issues with numeric type suffixes\n      pattern: /'(?:\\\\(?:\\d+|x[\\da-fA-F]{0,2}|.)|[^'])'/,\n      greedy: true\n    },\n    function: {\n      pattern:\n        /(?:(?!\\d)(?:\\w|\\\\x[89a-fA-F][0-9a-fA-F])+|`[^`\\r\\n]+`)\\*?(?:\\[[^\\]]+\\])?(?=\\s*\\()/,\n      greedy: true,\n      inside: {\n        operator: /\\*$/\n      }\n    },\n    // We don't want to highlight operators (and anything really) inside backticks\n    identifier: {\n      pattern: /`[^`\\r\\n]+`/,\n      greedy: true,\n      inside: {\n        punctuation: /`/\n      }\n    },\n    // The negative look ahead prevents wrong highlighting of the .. operator\n    number:\n      /\\b(?:0[xXoObB][\\da-fA-F_]+|\\d[\\d_]*(?:(?!\\.\\.)\\.[\\d_]*)?(?:[eE][+-]?\\d[\\d_]*)?)(?:'?[iuf]\\d*)?/,\n    keyword:\n      /\\b(?:addr|as|asm|atomic|bind|block|break|case|cast|concept|const|continue|converter|defer|discard|distinct|do|elif|else|end|enum|except|export|finally|for|from|func|generic|if|import|include|interface|iterator|let|macro|method|mixin|nil|object|out|proc|ptr|raise|ref|return|static|template|try|tuple|type|using|var|when|while|with|without|yield)\\b/,\n    operator: {\n      // Look behind and look ahead prevent wrong highlighting of punctuations [. .] {. .} (. .)\n      // but allow the slice operator .. to take precedence over them\n      // One can define his own operators in Nim so all combination of operators might be an operator.\n      pattern:\n        /(^|[({\\[](?=\\.\\.)|(?![({\\[]\\.).)(?:(?:[=+\\-*\\/<>@$~&%|!?^:\\\\]|\\.\\.|\\.(?![)}\\]]))+|\\b(?:and|div|in|is|isnot|mod|not|notin|of|or|shl|shr|xor)\\b)/m,\n      lookbehind: true\n    },\n    punctuation: /[({\\[]\\.|\\.[)}\\]]|[`(){}\\[\\],:]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nnix.displayName = 'nix'\nnix.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function nix(Prism) {\n  Prism.languages.nix = {\n    comment: {\n      pattern: /\\/\\*[\\s\\S]*?\\*\\/|#.*/,\n      greedy: true\n    },\n    string: {\n      pattern: /\"(?:[^\"\\\\]|\\\\[\\s\\S])*\"|''(?:(?!'')[\\s\\S]|''(?:'|\\\\|\\$\\{))*''/,\n      greedy: true,\n      inside: {\n        interpolation: {\n          // The lookbehind ensures the ${} is not preceded by \\ or ''\n          pattern: /(^|(?:^|(?!'').)[^\\\\])\\$\\{(?:[^{}]|\\{[^}]*\\})*\\}/,\n          lookbehind: true,\n          inside: null // see below\n        }\n      }\n    },\n    url: [\n      /\\b(?:[a-z]{3,7}:\\/\\/)[\\w\\-+%~\\/.:#=?&]+/,\n      {\n        pattern:\n          /([^\\/])(?:[\\w\\-+%~.:#=?&]*(?!\\/\\/)[\\w\\-+%~\\/.:#=?&])?(?!\\/\\/)\\/[\\w\\-+%~\\/.:#=?&]*/,\n        lookbehind: true\n      }\n    ],\n    antiquotation: {\n      pattern: /\\$(?=\\{)/,\n      alias: 'important'\n    },\n    number: /\\b\\d+\\b/,\n    keyword: /\\b(?:assert|builtins|else|if|in|inherit|let|null|or|then|with)\\b/,\n    function:\n      /\\b(?:abort|add|all|any|attrNames|attrValues|baseNameOf|compareVersions|concatLists|currentSystem|deepSeq|derivation|dirOf|div|elem(?:At)?|fetch(?:Tarball|url)|filter(?:Source)?|fromJSON|genList|getAttr|getEnv|hasAttr|hashString|head|import|intersectAttrs|is(?:Attrs|Bool|Function|Int|List|Null|String)|length|lessThan|listToAttrs|map|mul|parseDrvName|pathExists|read(?:Dir|File)|removeAttrs|replaceStrings|seq|sort|stringLength|sub(?:string)?|tail|throw|to(?:File|JSON|Path|String|XML)|trace|typeOf)\\b|\\bfoldl'\\B/,\n    boolean: /\\b(?:false|true)\\b/,\n    operator: /[=!<>]=?|\\+\\+?|\\|\\||&&|\\/\\/|->?|[?@]/,\n    punctuation: /[{}()[\\].,:;]/\n  }\n  Prism.languages.nix.string.inside.interpolation.inside = Prism.languages.nix\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nnsis.displayName = 'nsis'\nnsis.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function nsis(Prism) {\n  /**\n   * Original by Jan T. Sott (http://github.com/idleberg)\n   *\n   * Includes all commands and plug-ins shipped with NSIS 3.08\n   */\n  Prism.languages.nsis = {\n    comment: {\n      pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|[#;].*)/,\n      lookbehind: true,\n      greedy: true\n    },\n    string: {\n      pattern: /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      greedy: true\n    },\n    keyword: {\n      pattern:\n        /(^[\\t ]*)(?:Abort|Add(?:BrandingImage|Size)|AdvSplash|Allow(?:RootDirInstall|SkipFiles)|AutoCloseWindow|BG(?:Font|Gradient|Image)|Banner|BrandingText|BringToFront|CRCCheck|Call(?:InstDLL)?|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|Create(?:Directory|Font|ShortCut)|Delete(?:INISec|INIStr|RegKey|RegValue)?|Detail(?:Print|sButtonText)|Dialer|Dir(?:Text|Var|Verify)|EnableWindow|Enum(?:RegKey|RegValue)|Exch|Exec(?:Shell(?:Wait)?|Wait)?|ExpandEnvStrings|File(?:BufSize|Close|ErrorText|Open|Read|ReadByte|ReadUTF16LE|ReadWord|Seek|Write|WriteByte|WriteUTF16LE|WriteWord)?|Find(?:Close|First|Next|Window)|FlushINI|Get(?:CurInstType|CurrentAddress|DLLVersion(?:Local)?|DlgItem|ErrorLevel|FileTime(?:Local)?|FullPathName|Function(?:Address|End)?|InstDirError|KnownFolderPath|LabelAddress|TempFileName|WinVer)|Goto|HideWindow|Icon|If(?:Abort|Errors|FileExists|RebootFlag|RtlLanguage|ShellVarContextAll|Silent)|InitPluginsDir|InstProgressFlags|Inst(?:Type(?:GetText|SetText)?)|Install(?:ButtonText|Colors|Dir(?:RegKey)?)|Int(?:64|Ptr)?CmpU?|Int(?:64)?Fmt|Int(?:Ptr)?Op|IsWindow|Lang(?:DLL|String)|License(?:BkColor|Data|ForceSelection|LangString|Text)|LoadLanguageFile|LockWindow|Log(?:Set|Text)|Manifest(?:DPIAware|SupportedOS)|Math|MessageBox|MiscButtonText|NSISdl|Name|Nop|OutFile|PE(?:DllCharacteristics|SubsysVer)|Page(?:Callbacks)?|Pop|Push|Quit|RMDir|Read(?:EnvStr|INIStr|RegDWORD|RegStr)|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|SearchPath|Section(?:End|GetFlags|GetInstTypes|GetSize|GetText|Group|In|SetFlags|SetInstTypes|SetSize|SetText)?|SendMessage|Set(?:AutoClose|BrandingImage|Compress|Compressor(?:DictSize)?|CtlColors|CurInstType|DatablockOptimize|DateSave|Details(?:Print|View)|ErrorLevel|Errors|FileAttributes|Font|OutPath|Overwrite|PluginUnload|RebootFlag|RegView|ShellVarContext|Silent)|Show(?:InstDetails|UninstDetails|Window)|Silent(?:Install|UnInstall)|Sleep|SpaceTexts|Splash|StartMenu|Str(?:CmpS?|Cpy|Len)|SubCaption|System|Target|UnRegDLL|Unicode|UninstPage|Uninstall(?:ButtonText|Caption|Icon|SubCaption|Text)|UserInfo|VI(?:AddVersionKey|FileVersion|ProductVersion)|VPatch|Var|WindowIcon|Write(?:INIStr|Reg(?:Bin|DWORD|ExpandStr|MultiStr|None|Str)|Uninstaller)|XPStyle|ns(?:Dialogs|Exec))\\b/m,\n      lookbehind: true\n    },\n    property:\n      /\\b(?:ARCHIVE|FILE_(?:ATTRIBUTE_ARCHIVE|ATTRIBUTE_NORMAL|ATTRIBUTE_OFFLINE|ATTRIBUTE_READONLY|ATTRIBUTE_SYSTEM|ATTRIBUTE_TEMPORARY)|HK(?:(?:CR|CU|LM)(?:32|64)?|DD|PD|U)|HKEY_(?:CLASSES_ROOT|CURRENT_CONFIG|CURRENT_USER|DYN_DATA|LOCAL_MACHINE|PERFORMANCE_DATA|USERS)|ID(?:ABORT|CANCEL|IGNORE|NO|OK|RETRY|YES)|MB_(?:ABORTRETRYIGNORE|DEFBUTTON1|DEFBUTTON2|DEFBUTTON3|DEFBUTTON4|ICONEXCLAMATION|ICONINFORMATION|ICONQUESTION|ICONSTOP|OK|OKCANCEL|RETRYCANCEL|RIGHT|RTLREADING|SETFOREGROUND|TOPMOST|USERICON|YESNO)|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SYSTEM|TEMPORARY|admin|all|auto|both|colored|false|force|hide|highest|lastused|leave|listonly|none|normal|notset|off|on|open|print|show|silent|silentlog|smooth|textonly|true|user)\\b/,\n    constant: /\\$\\{[!\\w\\.:\\^-]+\\}|\\$\\([!\\w\\.:\\^-]+\\)/,\n    variable: /\\$\\w[\\w\\.]*/,\n    number: /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,\n    operator: /--?|\\+\\+?|<=?|>=?|==?=?|&&?|\\|\\|?|[?*\\/~^%]/,\n    punctuation: /[{}[\\];(),.:]/,\n    important: {\n      pattern:\n        /(^[\\t ]*)!(?:addincludedir|addplugindir|appendfile|cd|define|delfile|echo|else|endif|error|execute|finalize|getdllversion|gettlbversion|if|ifdef|ifmacrodef|ifmacrondef|ifndef|include|insertmacro|macro|macroend|makensis|packhdr|pragma|searchparse|searchreplace|system|tempfile|undef|verbose|warning)\\b/im,\n      lookbehind: true\n    }\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nocaml.displayName = 'ocaml'\nocaml.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function ocaml(Prism) {\n  // https://ocaml.org/manual/lex.html\n\n  Prism.languages.ocaml = {\n    comment: {\n      pattern: /\\(\\*[\\s\\S]*?\\*\\)/,\n      greedy: true\n    },\n    char: {\n      pattern: /'(?:[^\\\\\\r\\n']|\\\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,\n      greedy: true\n    },\n    string: [\n      {\n        pattern: /\"(?:\\\\(?:[\\s\\S]|\\r\\n)|[^\\\\\\r\\n\"])*\"/,\n        greedy: true\n      },\n      {\n        pattern: /\\{([a-z_]*)\\|[\\s\\S]*?\\|\\1\\}/,\n        greedy: true\n      }\n    ],\n    number: [\n      // binary and octal\n      /\\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\\b/i,\n      // hexadecimal\n      /\\b0x[a-f0-9][a-f0-9_]*(?:\\.[a-f0-9_]*)?(?:p[+-]?\\d[\\d_]*)?(?!\\w)/i,\n      // decimal\n      /\\b\\d[\\d_]*(?:\\.[\\d_]*)?(?:e[+-]?\\d[\\d_]*)?(?!\\w)/i\n    ],\n    directive: {\n      pattern: /\\B#\\w+/,\n      alias: 'property'\n    },\n    label: {\n      pattern: /\\B~\\w+/,\n      alias: 'property'\n    },\n    'type-variable': {\n      pattern: /\\B'\\w+/,\n      alias: 'function'\n    },\n    variant: {\n      pattern: /`\\w+/,\n      alias: 'symbol'\n    },\n    // For the list of keywords and operators,\n    // see: http://caml.inria.fr/pub/docs/manual-ocaml/lex.html#sec84\n    keyword:\n      /\\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    'operator-like-punctuation': {\n      pattern: /\\[[<>|]|[>|]\\]|\\{<|>\\}/,\n      alias: 'punctuation'\n    },\n    // Custom operators are allowed\n    operator:\n      /\\.[.~]|:[=>]|[=<>@^|&+\\-*\\/$%!?~][!$%&*+\\-.\\/:<=>?@^|~]*|\\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\\b/,\n    punctuation: /;;|::|[(){}\\[\\].,:;#]|\\b_\\b/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nodin.displayName = 'odin'\nodin.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function odin(Prism) {\n  ;(function (Prism) {\n    var escapes =\n      /\\\\(?:[\"'\\\\abefnrtv]|0[0-7]{2}|U[\\dA-Fa-f]{6}|u[\\dA-Fa-f]{4}|x[\\dA-Fa-f]{2})/\n    Prism.languages.odin = {\n      /**\n       * The current implementation supports only 1 level of nesting.\n       *\n       * @author Michael Schmidt\n       * @author edukisto\n       */\n      comment: [\n        {\n          pattern:\n            /\\/\\*(?:[^/*]|\\/(?!\\*)|\\*(?!\\/)|\\/\\*(?:\\*(?!\\/)|[^*])*(?:\\*\\/|$))*(?:\\*\\/|$)/,\n          greedy: true\n        },\n        {\n          pattern: /#![^\\n\\r]*/,\n          greedy: true\n        },\n        {\n          pattern: /\\/\\/[^\\n\\r]*/,\n          greedy: true\n        }\n      ],\n      /**\n       * Should be found before strings because of '\"'\"- and '`'`-like sequences.\n       */\n      char: {\n        pattern: /'(?:\\\\(?:.|[0Uux][0-9A-Fa-f]{1,6})|[^\\n\\r'\\\\])'/,\n        greedy: true,\n        inside: {\n          symbol: escapes\n        }\n      },\n      string: [\n        {\n          pattern: /`[^`]*`/,\n          greedy: true\n        },\n        {\n          pattern: /\"(?:\\\\.|[^\\n\\r\"\\\\])*\"/,\n          greedy: true,\n          inside: {\n            symbol: escapes\n          }\n        }\n      ],\n      directive: {\n        pattern: /#\\w+/,\n        alias: 'property'\n      },\n      number:\n        /\\b0(?:b[01_]+|d[\\d_]+|h_*(?:(?:(?:[\\dA-Fa-f]_*){8}){1,2}|(?:[\\dA-Fa-f]_*){4})|o[0-7_]+|x[\\dA-F_a-f]+|z[\\dAB_ab]+)\\b|(?:\\b\\d+(?:\\.(?!\\.)\\d*)?|\\B\\.\\d+)(?:[Ee][+-]?\\d*)?[ijk]?(?!\\w)/,\n      discard: {\n        pattern: /\\b_\\b/,\n        alias: 'keyword'\n      },\n      'procedure-definition': {\n        pattern: /\\b\\w+(?=[ \\t]*(?::\\s*){2}proc\\b)/,\n        alias: 'function'\n      },\n      keyword:\n        /\\b(?:asm|auto_cast|bit_set|break|case|cast|context|continue|defer|distinct|do|dynamic|else|enum|fallthrough|for|foreign|if|import|in|map|matrix|not_in|or_else|or_return|package|proc|return|struct|switch|transmute|typeid|union|using|when|where)\\b/,\n      /**\n       * false, nil, true can be used as procedure names. \"_\" and keywords can't.\n       */\n      'procedure-name': {\n        pattern: /\\b\\w+(?=[ \\t]*\\()/,\n        alias: 'function'\n      },\n      boolean: /\\b(?:false|nil|true)\\b/,\n      'constant-parameter-sign': {\n        pattern: /\\$/,\n        alias: 'important'\n      },\n      undefined: {\n        pattern: /---/,\n        alias: 'operator'\n      },\n      arrow: {\n        pattern: /->/,\n        alias: 'punctuation'\n      },\n      operator: /\\+\\+|--|\\.\\.[<=]?|(?:&~|[-!*+/=~]|[%&<>|]{1,2})=?|[?^]/,\n      punctuation: /[(),.:;@\\[\\]{}]/\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorC from './c.js'\nopencl.displayName = 'opencl'\nopencl.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function opencl(Prism) {\n  Prism.register(refractorC)\n  ;(function (Prism) {\n    /* OpenCL kernel language */\n    Prism.languages.opencl = Prism.languages.extend('c', {\n      // Extracted from the official specs (2.0) and http://streamcomputing.eu/downloads/?opencl.lang (opencl-keywords, opencl-types) and http://sourceforge.net/tracker/?func=detail&aid=2957794&group_id=95717&atid=612384 (Words2, partly Words3)\n      keyword:\n        /\\b(?:(?:__)?(?:constant|global|kernel|local|private|read_only|read_write|write_only)|__attribute__|auto|(?:bool|u?(?:char|int|long|short)|half|quad)(?:2|3|4|8|16)?|break|case|complex|const|continue|(?:double|float)(?:16(?:x(?:1|2|4|8|16))?|1x(?:1|2|4|8|16)|2(?:x(?:1|2|4|8|16))?|3|4(?:x(?:1|2|4|8|16))?|8(?:x(?:1|2|4|8|16))?)?|default|do|else|enum|extern|for|goto|if|imaginary|inline|packed|pipe|register|restrict|return|signed|sizeof|static|struct|switch|typedef|uniform|union|unsigned|void|volatile|while)\\b/,\n      // Extracted from http://streamcomputing.eu/downloads/?opencl.lang (opencl-const)\n      // Math Constants: https://www.khronos.org/registry/OpenCL/sdk/2.1/docs/man/xhtml/mathConstants.html\n      // Macros and Limits: https://www.khronos.org/registry/OpenCL/sdk/2.1/docs/man/xhtml/macroLimits.html\n      number:\n        /(?:\\b0x(?:[\\da-f]+(?:\\.[\\da-f]*)?|\\.[\\da-f]+)(?:p[+-]?\\d+)?|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)[fuhl]{0,4}/i,\n      boolean: /\\b(?:false|true)\\b/,\n      'constant-opencl-kernel': {\n        pattern:\n          /\\b(?:CHAR_(?:BIT|MAX|MIN)|CLK_(?:ADDRESS_(?:CLAMP(?:_TO_EDGE)?|NONE|REPEAT)|FILTER_(?:LINEAR|NEAREST)|(?:GLOBAL|LOCAL)_MEM_FENCE|NORMALIZED_COORDS_(?:FALSE|TRUE))|CL_(?:BGRA|(?:HALF_)?FLOAT|INTENSITY|LUMINANCE|A?R?G?B?[Ax]?|(?:(?:UN)?SIGNED|[US]NORM)_(?:INT(?:8|16|32))|UNORM_(?:INT_101010|SHORT_(?:555|565)))|(?:DBL|FLT|HALF)_(?:DIG|EPSILON|(?:MAX|MIN)(?:(?:_10)?_EXP)?|MANT_DIG)|FLT_RADIX|HUGE_VALF?|(?:INT|LONG|SCHAR|SHRT)_(?:MAX|MIN)|INFINITY|MAXFLOAT|M_(?:[12]_PI|2_SQRTPI|E|LN(?:2|10)|LOG(?:2|10)E?|PI(?:_[24])?|SQRT(?:1_2|2))(?:_F|_H)?|NAN|(?:UCHAR|UINT|ULONG|USHRT)_MAX)\\b/,\n        alias: 'constant'\n      }\n    })\n    Prism.languages.insertBefore('opencl', 'class-name', {\n      // https://www.khronos.org/registry/OpenCL/sdk/2.1/docs/man/xhtml/scalarDataTypes.html\n      // https://www.khronos.org/registry/OpenCL/sdk/2.1/docs/man/xhtml/otherDataTypes.html\n      'builtin-type': {\n        pattern:\n          /\\b(?:_cl_(?:command_queue|context|device_id|event|kernel|mem|platform_id|program|sampler)|cl_(?:image_format|mem_fence_flags)|clk_event_t|event_t|image(?:1d_(?:array_|buffer_)?t|2d_(?:array_(?:depth_|msaa_depth_|msaa_)?|depth_|msaa_depth_|msaa_)?t|3d_t)|intptr_t|ndrange_t|ptrdiff_t|queue_t|reserve_id_t|sampler_t|size_t|uintptr_t)\\b/,\n        alias: 'keyword'\n      }\n    })\n    var attributes = {\n      // Extracted from http://streamcomputing.eu/downloads/?opencl_host.lang (opencl-types and opencl-host)\n      'type-opencl-host': {\n        pattern:\n          /\\b(?:cl_(?:GLenum|GLint|GLuin|addressing_mode|bitfield|bool|buffer_create_type|build_status|channel_(?:order|type)|(?:u?(?:char|int|long|short)|double|float)(?:2|3|4|8|16)?|command_(?:queue(?:_info|_properties)?|type)|context(?:_info|_properties)?|device_(?:exec_capabilities|fp_config|id|info|local_mem_type|mem_cache_type|type)|(?:event|sampler)(?:_info)?|filter_mode|half|image_info|kernel(?:_info|_work_group_info)?|map_flags|mem(?:_flags|_info|_object_type)?|platform_(?:id|info)|profiling_info|program(?:_build_info|_info)?))\\b/,\n        alias: 'keyword'\n      },\n      'boolean-opencl-host': {\n        pattern: /\\bCL_(?:FALSE|TRUE)\\b/,\n        alias: 'boolean'\n      },\n      // Extracted from cl.h (2.0) and http://streamcomputing.eu/downloads/?opencl_host.lang (opencl-const)\n      'constant-opencl-host': {\n        pattern:\n          /\\bCL_(?:A|ABGR|ADDRESS_(?:CLAMP(?:_TO_EDGE)?|MIRRORED_REPEAT|NONE|REPEAT)|ARGB|BGRA|BLOCKING|BUFFER_CREATE_TYPE_REGION|BUILD_(?:ERROR|IN_PROGRESS|NONE|PROGRAM_FAILURE|SUCCESS)|COMMAND_(?:ACQUIRE_GL_OBJECTS|BARRIER|COPY_(?:BUFFER(?:_RECT|_TO_IMAGE)?|IMAGE(?:_TO_BUFFER)?)|FILL_(?:BUFFER|IMAGE)|MAP(?:_BUFFER|_IMAGE)|MARKER|MIGRATE(?:_SVM)?_MEM_OBJECTS|NATIVE_KERNEL|NDRANGE_KERNEL|READ_(?:BUFFER(?:_RECT)?|IMAGE)|RELEASE_GL_OBJECTS|SVM_(?:FREE|MAP|MEMCPY|MEMFILL|UNMAP)|TASK|UNMAP_MEM_OBJECT|USER|WRITE_(?:BUFFER(?:_RECT)?|IMAGE))|COMPILER_NOT_AVAILABLE|COMPILE_PROGRAM_FAILURE|COMPLETE|CONTEXT_(?:DEVICES|INTEROP_USER_SYNC|NUM_DEVICES|PLATFORM|PROPERTIES|REFERENCE_COUNT)|DEPTH(?:_STENCIL)?|DEVICE_(?:ADDRESS_BITS|AFFINITY_DOMAIN_(?:L[1-4]_CACHE|NEXT_PARTITIONABLE|NUMA)|AVAILABLE|BUILT_IN_KERNELS|COMPILER_AVAILABLE|DOUBLE_FP_CONFIG|ENDIAN_LITTLE|ERROR_CORRECTION_SUPPORT|EXECUTION_CAPABILITIES|EXTENSIONS|GLOBAL_(?:MEM_(?:CACHELINE_SIZE|CACHE_SIZE|CACHE_TYPE|SIZE)|VARIABLE_PREFERRED_TOTAL_SIZE)|HOST_UNIFIED_MEMORY|IL_VERSION|IMAGE(?:2D_MAX_(?:HEIGHT|WIDTH)|3D_MAX_(?:DEPTH|HEIGHT|WIDTH)|_BASE_ADDRESS_ALIGNMENT|_MAX_ARRAY_SIZE|_MAX_BUFFER_SIZE|_PITCH_ALIGNMENT|_SUPPORT)|LINKER_AVAILABLE|LOCAL_MEM_SIZE|LOCAL_MEM_TYPE|MAX_(?:CLOCK_FREQUENCY|COMPUTE_UNITS|CONSTANT_ARGS|CONSTANT_BUFFER_SIZE|GLOBAL_VARIABLE_SIZE|MEM_ALLOC_SIZE|NUM_SUB_GROUPS|ON_DEVICE_(?:EVENTS|QUEUES)|PARAMETER_SIZE|PIPE_ARGS|READ_IMAGE_ARGS|READ_WRITE_IMAGE_ARGS|SAMPLERS|WORK_GROUP_SIZE|WORK_ITEM_DIMENSIONS|WORK_ITEM_SIZES|WRITE_IMAGE_ARGS)|MEM_BASE_ADDR_ALIGN|MIN_DATA_TYPE_ALIGN_SIZE|NAME|NATIVE_VECTOR_WIDTH_(?:CHAR|DOUBLE|FLOAT|HALF|INT|LONG|SHORT)|NOT_(?:AVAILABLE|FOUND)|OPENCL_C_VERSION|PARENT_DEVICE|PARTITION_(?:AFFINITY_DOMAIN|BY_AFFINITY_DOMAIN|BY_COUNTS|BY_COUNTS_LIST_END|EQUALLY|FAILED|MAX_SUB_DEVICES|PROPERTIES|TYPE)|PIPE_MAX_(?:ACTIVE_RESERVATIONS|PACKET_SIZE)|PLATFORM|PREFERRED_(?:GLOBAL_ATOMIC_ALIGNMENT|INTEROP_USER_SYNC|LOCAL_ATOMIC_ALIGNMENT|PLATFORM_ATOMIC_ALIGNMENT|VECTOR_WIDTH_(?:CHAR|DOUBLE|FLOAT|HALF|INT|LONG|SHORT))|PRINTF_BUFFER_SIZE|PROFILE|PROFILING_TIMER_RESOLUTION|QUEUE_(?:ON_(?:DEVICE_(?:MAX_SIZE|PREFERRED_SIZE|PROPERTIES)|HOST_PROPERTIES)|PROPERTIES)|REFERENCE_COUNT|SINGLE_FP_CONFIG|SUB_GROUP_INDEPENDENT_FORWARD_PROGRESS|SVM_(?:ATOMICS|CAPABILITIES|COARSE_GRAIN_BUFFER|FINE_GRAIN_BUFFER|FINE_GRAIN_SYSTEM)|TYPE(?:_ACCELERATOR|_ALL|_CPU|_CUSTOM|_DEFAULT|_GPU)?|VENDOR(?:_ID)?|VERSION)|DRIVER_VERSION|EVENT_(?:COMMAND_(?:EXECUTION_STATUS|QUEUE|TYPE)|CONTEXT|REFERENCE_COUNT)|EXEC_(?:KERNEL|NATIVE_KERNEL|STATUS_ERROR_FOR_EVENTS_IN_WAIT_LIST)|FILTER_(?:LINEAR|NEAREST)|FLOAT|FP_(?:CORRECTLY_ROUNDED_DIVIDE_SQRT|DENORM|FMA|INF_NAN|ROUND_TO_INF|ROUND_TO_NEAREST|ROUND_TO_ZERO|SOFT_FLOAT)|GLOBAL|HALF_FLOAT|IMAGE_(?:ARRAY_SIZE|BUFFER|DEPTH|ELEMENT_SIZE|FORMAT|FORMAT_MISMATCH|FORMAT_NOT_SUPPORTED|HEIGHT|NUM_MIP_LEVELS|NUM_SAMPLES|ROW_PITCH|SLICE_PITCH|WIDTH)|INTENSITY|INVALID_(?:ARG_INDEX|ARG_SIZE|ARG_VALUE|BINARY|BUFFER_SIZE|BUILD_OPTIONS|COMMAND_QUEUE|COMPILER_OPTIONS|CONTEXT|DEVICE|DEVICE_PARTITION_COUNT|DEVICE_QUEUE|DEVICE_TYPE|EVENT|EVENT_WAIT_LIST|GLOBAL_OFFSET|GLOBAL_WORK_SIZE|GL_OBJECT|HOST_PTR|IMAGE_DESCRIPTOR|IMAGE_FORMAT_DESCRIPTOR|IMAGE_SIZE|KERNEL|KERNEL_ARGS|KERNEL_DEFINITION|KERNEL_NAME|LINKER_OPTIONS|MEM_OBJECT|MIP_LEVEL|OPERATION|PIPE_SIZE|PLATFORM|PROGRAM|PROGRAM_EXECUTABLE|PROPERTY|QUEUE_PROPERTIES|SAMPLER|VALUE|WORK_DIMENSION|WORK_GROUP_SIZE|WORK_ITEM_SIZE)|KERNEL_(?:ARG_(?:ACCESS_(?:NONE|QUALIFIER|READ_ONLY|READ_WRITE|WRITE_ONLY)|ADDRESS_(?:CONSTANT|GLOBAL|LOCAL|PRIVATE|QUALIFIER)|INFO_NOT_AVAILABLE|NAME|TYPE_(?:CONST|NAME|NONE|PIPE|QUALIFIER|RESTRICT|VOLATILE))|ATTRIBUTES|COMPILE_NUM_SUB_GROUPS|COMPILE_WORK_GROUP_SIZE|CONTEXT|EXEC_INFO_SVM_FINE_GRAIN_SYSTEM|EXEC_INFO_SVM_PTRS|FUNCTION_NAME|GLOBAL_WORK_SIZE|LOCAL_MEM_SIZE|LOCAL_SIZE_FOR_SUB_GROUP_COUNT|MAX_NUM_SUB_GROUPS|MAX_SUB_GROUP_SIZE_FOR_NDRANGE|NUM_ARGS|PREFERRED_WORK_GROUP_SIZE_MULTIPLE|PRIVATE_MEM_SIZE|PROGRAM|REFERENCE_COUNT|SUB_GROUP_COUNT_FOR_NDRANGE|WORK_GROUP_SIZE)|LINKER_NOT_AVAILABLE|LINK_PROGRAM_FAILURE|LOCAL|LUMINANCE|MAP_(?:FAILURE|READ|WRITE|WRITE_INVALIDATE_REGION)|MEM_(?:ALLOC_HOST_PTR|ASSOCIATED_MEMOBJECT|CONTEXT|COPY_HOST_PTR|COPY_OVERLAP|FLAGS|HOST_NO_ACCESS|HOST_PTR|HOST_READ_ONLY|HOST_WRITE_ONLY|KERNEL_READ_AND_WRITE|MAP_COUNT|OBJECT_(?:ALLOCATION_FAILURE|BUFFER|IMAGE1D|IMAGE1D_ARRAY|IMAGE1D_BUFFER|IMAGE2D|IMAGE2D_ARRAY|IMAGE3D|PIPE)|OFFSET|READ_ONLY|READ_WRITE|REFERENCE_COUNT|SIZE|SVM_ATOMICS|SVM_FINE_GRAIN_BUFFER|TYPE|USES_SVM_POINTER|USE_HOST_PTR|WRITE_ONLY)|MIGRATE_MEM_OBJECT_(?:CONTENT_UNDEFINED|HOST)|MISALIGNED_SUB_BUFFER_OFFSET|NONE|NON_BLOCKING|OUT_OF_(?:HOST_MEMORY|RESOURCES)|PIPE_(?:MAX_PACKETS|PACKET_SIZE)|PLATFORM_(?:EXTENSIONS|HOST_TIMER_RESOLUTION|NAME|PROFILE|VENDOR|VERSION)|PROFILING_(?:COMMAND_(?:COMPLETE|END|QUEUED|START|SUBMIT)|INFO_NOT_AVAILABLE)|PROGRAM_(?:BINARIES|BINARY_SIZES|BINARY_TYPE(?:_COMPILED_OBJECT|_EXECUTABLE|_LIBRARY|_NONE)?|BUILD_(?:GLOBAL_VARIABLE_TOTAL_SIZE|LOG|OPTIONS|STATUS)|CONTEXT|DEVICES|IL|KERNEL_NAMES|NUM_DEVICES|NUM_KERNELS|REFERENCE_COUNT|SOURCE)|QUEUED|QUEUE_(?:CONTEXT|DEVICE|DEVICE_DEFAULT|ON_DEVICE|ON_DEVICE_DEFAULT|OUT_OF_ORDER_EXEC_MODE_ENABLE|PROFILING_ENABLE|PROPERTIES|REFERENCE_COUNT|SIZE)|R|RA|READ_(?:ONLY|WRITE)_CACHE|RG|RGB|RGBA|RGBx|RGx|RUNNING|Rx|SAMPLER_(?:ADDRESSING_MODE|CONTEXT|FILTER_MODE|LOD_MAX|LOD_MIN|MIP_FILTER_MODE|NORMALIZED_COORDS|REFERENCE_COUNT)|(?:UN)?SIGNED_INT(?:8|16|32)|SNORM_INT(?:8|16)|SUBMITTED|SUCCESS|UNORM_INT(?:8|16|24|_101010|_101010_2)|UNORM_SHORT_(?:555|565)|VERSION_(?:1_0|1_1|1_2|2_0|2_1)|sBGRA|sRGB|sRGBA|sRGBx)\\b/,\n        alias: 'constant'\n      },\n      // Extracted from cl.h (2.0) and http://streamcomputing.eu/downloads/?opencl_host.lang (opencl-host)\n      'function-opencl-host': {\n        pattern:\n          /\\bcl(?:BuildProgram|CloneKernel|CompileProgram|Create(?:Buffer|CommandQueue(?:WithProperties)?|Context|ContextFromType|Image|Image2D|Image3D|Kernel|KernelsInProgram|Pipe|ProgramWith(?:Binary|BuiltInKernels|IL|Source)|Sampler|SamplerWithProperties|SubBuffer|SubDevices|UserEvent)|Enqueue(?:(?:Barrier|Marker)(?:WithWaitList)?|Copy(?:Buffer(?:Rect|ToImage)?|Image(?:ToBuffer)?)|(?:Fill|Map)(?:Buffer|Image)|MigrateMemObjects|NDRangeKernel|NativeKernel|(?:Read|Write)(?:Buffer(?:Rect)?|Image)|SVM(?:Free|Map|MemFill|Memcpy|MigrateMem|Unmap)|Task|UnmapMemObject|WaitForEvents)|Finish|Flush|Get(?:CommandQueueInfo|ContextInfo|Device(?:AndHostTimer|IDs|Info)|Event(?:Profiling)?Info|ExtensionFunctionAddress(?:ForPlatform)?|HostTimer|ImageInfo|Kernel(?:ArgInfo|Info|SubGroupInfo|WorkGroupInfo)|MemObjectInfo|PipeInfo|Platform(?:IDs|Info)|Program(?:Build)?Info|SamplerInfo|SupportedImageFormats)|LinkProgram|(?:Release|Retain)(?:CommandQueue|Context|Device|Event|Kernel|MemObject|Program|Sampler)|SVM(?:Alloc|Free)|Set(?:CommandQueueProperty|DefaultDeviceCommandQueue|EventCallback|Kernel|Kernel(?:Arg(?:SVMPointer)?|ExecInfo)|MemObjectDestructorCallback|UserEventStatus)|Unload(?:Platform)?Compiler|WaitForEvents)\\b/,\n        alias: 'function'\n      }\n    }\n\n    /* OpenCL host API */\n    Prism.languages.insertBefore('c', 'keyword', attributes)\n\n    // C++ includes everything from the OpenCL C host API plus the classes defined in cl2.h\n    if (Prism.languages.cpp) {\n      // Extracted from doxygen class list http://github.khronos.org/OpenCL-CLHPP/annotated.html\n      attributes['type-opencl-host-cpp'] = {\n        pattern:\n          /\\b(?:Buffer|BufferGL|BufferRenderGL|CommandQueue|Context|Device|DeviceCommandQueue|EnqueueArgs|Event|Image|Image1D|Image1DArray|Image1DBuffer|Image2D|Image2DArray|Image2DGL|Image3D|Image3DGL|ImageFormat|ImageGL|Kernel|KernelFunctor|LocalSpaceArg|Memory|NDRange|Pipe|Platform|Program|SVMAllocator|SVMTraitAtomic|SVMTraitCoarse|SVMTraitFine|SVMTraitReadOnly|SVMTraitReadWrite|SVMTraitWriteOnly|Sampler|UserEvent)\\b/,\n        alias: 'keyword'\n      }\n      Prism.languages.insertBefore('cpp', 'keyword', attributes)\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nopenqasm.displayName = 'openqasm'\nopenqasm.aliases = ['qasm']\n\n/** @param {Refractor} Prism */\nexport default function openqasm(Prism) {\n  // https://qiskit.github.io/openqasm/grammar/index.html\n\n  Prism.languages.openqasm = {\n    comment: /\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*/,\n    string: {\n      pattern: /\"[^\"\\r\\n\\t]*\"|'[^'\\r\\n\\t]*'/,\n      greedy: true\n    },\n    keyword:\n      /\\b(?:CX|OPENQASM|U|barrier|boxas|boxto|break|const|continue|ctrl|def|defcal|defcalgrammar|delay|else|end|for|gate|gphase|if|in|include|inv|kernel|lengthof|let|measure|pow|reset|return|rotary|stretchinf|while)\\b|#pragma\\b/,\n    'class-name':\n      /\\b(?:angle|bit|bool|creg|fixed|float|int|length|qreg|qubit|stretch|uint)\\b/,\n    function: /\\b(?:cos|exp|ln|popcount|rotl|rotr|sin|sqrt|tan)\\b(?=\\s*\\()/,\n    constant: /\\b(?:euler|pi|tau)\\b|\u03C0|\uD835\uDF0F|\u2107/,\n    number: {\n      pattern:\n        /(^|[^.\\w$])(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?(?:dt|ns|us|\u00B5s|ms|s)?/i,\n      lookbehind: true\n    },\n    operator: /->|>>=?|<<=?|&&|\\|\\||\\+\\+|--|[!=<>&|~^+\\-*/%]=?|@/,\n    punctuation: /[(){}\\[\\];,:.]/\n  }\n  Prism.languages.qasm = Prism.languages.openqasm\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\noz.displayName = 'oz'\noz.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function oz(Prism) {\n  Prism.languages.oz = {\n    comment: {\n      pattern: /\\/\\*[\\s\\S]*?\\*\\/|%.*/,\n      greedy: true\n    },\n    string: {\n      pattern: /\"(?:[^\"\\\\]|\\\\[\\s\\S])*\"/,\n      greedy: true\n    },\n    atom: {\n      pattern: /'(?:[^'\\\\]|\\\\[\\s\\S])*'/,\n      greedy: true,\n      alias: 'builtin'\n    },\n    keyword:\n      /\\$|\\[\\]|\\b(?:_|at|attr|case|catch|choice|class|cond|declare|define|dis|else(?:case|if)?|end|export|fail|false|feat|finally|from|fun|functor|if|import|in|local|lock|meth|nil|not|of|or|prepare|proc|prop|raise|require|self|skip|then|thread|true|try|unit)\\b/,\n    function: [\n      /\\b[a-z][A-Za-z\\d]*(?=\\()/,\n      {\n        pattern: /(\\{)[A-Z][A-Za-z\\d]*\\b/,\n        lookbehind: true\n      }\n    ],\n    number:\n      /\\b(?:0[bx][\\da-f]+|\\d+(?:\\.\\d*)?(?:e~?\\d+)?)\\b|&(?:[^\\\\]|\\\\(?:\\d{3}|.))/i,\n    variable: /`(?:[^`\\\\]|\\\\.)+`/,\n    'attr-name': /\\b\\w+(?=[ \\t]*:(?![:=]))/,\n    operator:\n      /:(?:=|::?)|<[-:=]?|=(?:=|<?:?)|>=?:?|\\\\=:?|!!?|[|#+\\-*\\/,~^@]|\\b(?:andthen|div|mod|orelse)\\b/,\n    punctuation: /[\\[\\](){}.:;?]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nparigp.displayName = 'parigp'\nparigp.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function parigp(Prism) {\n  Prism.languages.parigp = {\n    comment: /\\/\\*[\\s\\S]*?\\*\\/|\\\\\\\\.*/,\n    string: {\n      pattern: /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"/,\n      greedy: true\n    },\n    // PARI/GP does not care about white spaces at all\n    // so let's process the keywords to build an appropriate regexp\n    // (e.g. \"b *r *e *a *k\", etc.)\n    keyword: (function () {\n      var keywords = [\n        'breakpoint',\n        'break',\n        'dbg_down',\n        'dbg_err',\n        'dbg_up',\n        'dbg_x',\n        'forcomposite',\n        'fordiv',\n        'forell',\n        'forpart',\n        'forprime',\n        'forstep',\n        'forsubgroup',\n        'forvec',\n        'for',\n        'iferr',\n        'if',\n        'local',\n        'my',\n        'next',\n        'return',\n        'until',\n        'while'\n      ]\n      keywords = keywords\n        .map(function (keyword) {\n          return keyword.split('').join(' *')\n        })\n        .join('|')\n      return RegExp('\\\\b(?:' + keywords + ')\\\\b')\n    })(),\n    function: /\\b\\w(?:[\\w ]*\\w)?(?= *\\()/,\n    number: {\n      // The lookbehind and the negative lookahead prevent from breaking the .. operator\n      pattern:\n        /((?:\\. *\\. *)?)(?:\\b\\d(?: *\\d)*(?: *(?!\\. *\\.)\\.(?: *\\d)*)?|\\. *\\d(?: *\\d)*)(?: *e *(?:[+-] *)?\\d(?: *\\d)*)?/i,\n      lookbehind: true\n    },\n    operator:\n      /\\. *\\.|[*\\/!](?: *=)?|%(?: *=|(?: *#)?(?: *')*)?|\\+(?: *[+=])?|-(?: *[-=>])?|<(?: *>|(?: *<)?(?: *=)?)?|>(?: *>)?(?: *=)?|=(?: *=){0,2}|\\\\(?: *\\/)?(?: *=)?|&(?: *&)?|\\| *\\||['#~^]/,\n    punctuation: /[\\[\\]{}().,:;|]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorMarkup from './markup.js'\nparser.displayName = 'parser'\nparser.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function parser(Prism) {\n  Prism.register(refractorMarkup)\n  ;(function (Prism) {\n    var parser = (Prism.languages.parser = Prism.languages.extend('markup', {\n      keyword: {\n        pattern:\n          /(^|[^^])(?:\\^(?:case|eval|for|if|switch|throw)\\b|@(?:BASE|CLASS|GET(?:_DEFAULT)?|OPTIONS|SET_DEFAULT|USE)\\b)/,\n        lookbehind: true\n      },\n      variable: {\n        pattern: /(^|[^^])\\B\\$(?:\\w+|(?=[.{]))(?:(?:\\.|::?)\\w+)*(?:\\.|::?)?/,\n        lookbehind: true,\n        inside: {\n          punctuation: /\\.|:+/\n        }\n      },\n      function: {\n        pattern: /(^|[^^])\\B[@^]\\w+(?:(?:\\.|::?)\\w+)*(?:\\.|::?)?/,\n        lookbehind: true,\n        inside: {\n          keyword: {\n            pattern: /(^@)(?:GET_|SET_)/,\n            lookbehind: true\n          },\n          punctuation: /\\.|:+/\n        }\n      },\n      escape: {\n        pattern: /\\^(?:[$^;@()\\[\\]{}\"':]|#[a-f\\d]*)/i,\n        alias: 'builtin'\n      },\n      punctuation: /[\\[\\](){};]/\n    }))\n    parser = Prism.languages.insertBefore('parser', 'keyword', {\n      'parser-comment': {\n        pattern: /(\\s)#.*/,\n        lookbehind: true,\n        alias: 'comment'\n      },\n      expression: {\n        // Allow for 3 levels of depth\n        pattern: /(^|[^^])\\((?:[^()]|\\((?:[^()]|\\((?:[^()])*\\))*\\))*\\)/,\n        greedy: true,\n        lookbehind: true,\n        inside: {\n          string: {\n            pattern: /(^|[^^])([\"'])(?:(?!\\2)[^^]|\\^[\\s\\S])*\\2/,\n            lookbehind: true\n          },\n          keyword: parser.keyword,\n          variable: parser.variable,\n          function: parser.function,\n          boolean: /\\b(?:false|true)\\b/,\n          number: /\\b(?:0x[a-f\\d]+|\\d+(?:\\.\\d*)?(?:e[+-]?\\d+)?)\\b/i,\n          escape: parser.escape,\n          operator:\n            /[~+*\\/\\\\%]|!(?:\\|\\|?|=)?|&&?|\\|\\|?|==|<[<=]?|>[>=]?|-[fd]?|\\b(?:def|eq|ge|gt|in|is|le|lt|ne)\\b/,\n          punctuation: parser.punctuation\n        }\n      }\n    })\n    Prism.languages.insertBefore(\n      'inside',\n      'punctuation',\n      {\n        expression: parser.expression,\n        keyword: parser.keyword,\n        variable: parser.variable,\n        function: parser.function,\n        escape: parser.escape,\n        'parser-punctuation': {\n          pattern: parser.punctuation,\n          alias: 'punctuation'\n        }\n      },\n      parser['tag'].inside['attr-value']\n    )\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\npascal.displayName = 'pascal'\npascal.aliases = ['objectpascal']\n\n/** @param {Refractor} Prism */\nexport default function pascal(Prism) {\n  // Based on Free Pascal\n\n  /* TODO\nSupport inline asm ?\n*/\n\n  Prism.languages.pascal = {\n    directive: {\n      pattern: /\\{\\$[\\s\\S]*?\\}/,\n      greedy: true,\n      alias: ['marco', 'property']\n    },\n    comment: {\n      pattern: /\\(\\*[\\s\\S]*?\\*\\)|\\{[\\s\\S]*?\\}|\\/\\/.*/,\n      greedy: true\n    },\n    string: {\n      pattern: /(?:'(?:''|[^'\\r\\n])*'(?!')|#[&$%]?[a-f\\d]+)+|\\^[a-z]/i,\n      greedy: true\n    },\n    asm: {\n      pattern: /(\\basm\\b)[\\s\\S]+?(?=\\bend\\s*[;[])/i,\n      lookbehind: true,\n      greedy: true,\n      inside: null // see below\n    },\n    keyword: [\n      {\n        // Turbo Pascal\n        pattern:\n          /(^|[^&])\\b(?:absolute|array|asm|begin|case|const|constructor|destructor|do|downto|else|end|file|for|function|goto|if|implementation|inherited|inline|interface|label|nil|object|of|operator|packed|procedure|program|record|reintroduce|repeat|self|set|string|then|to|type|unit|until|uses|var|while|with)\\b/i,\n        lookbehind: true\n      },\n      {\n        // Free Pascal\n        pattern: /(^|[^&])\\b(?:dispose|exit|false|new|true)\\b/i,\n        lookbehind: true\n      },\n      {\n        // Object Pascal\n        pattern:\n          /(^|[^&])\\b(?:class|dispinterface|except|exports|finalization|finally|initialization|inline|library|on|out|packed|property|raise|resourcestring|threadvar|try)\\b/i,\n        lookbehind: true\n      },\n      {\n        // Modifiers\n        pattern:\n          /(^|[^&])\\b(?:absolute|abstract|alias|assembler|bitpacked|break|cdecl|continue|cppdecl|cvar|default|deprecated|dynamic|enumerator|experimental|export|external|far|far16|forward|generic|helper|implements|index|interrupt|iochecks|local|message|name|near|nodefault|noreturn|nostackframe|oldfpccall|otherwise|overload|override|pascal|platform|private|protected|public|published|read|register|reintroduce|result|safecall|saveregisters|softfloat|specialize|static|stdcall|stored|strict|unaligned|unimplemented|varargs|virtual|write)\\b/i,\n        lookbehind: true\n      }\n    ],\n    number: [\n      // Hexadecimal, octal and binary\n      /(?:[&%]\\d+|\\$[a-f\\d]+)/i,\n      // Decimal\n      /\\b\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?/i\n    ],\n    operator: [\n      /\\.\\.|\\*\\*|:=|<[<=>]?|>[>=]?|[+\\-*\\/]=?|[@^=]/,\n      {\n        pattern:\n          /(^|[^&])\\b(?:and|as|div|exclude|in|include|is|mod|not|or|shl|shr|xor)\\b/,\n        lookbehind: true\n      }\n    ],\n    punctuation: /\\(\\.|\\.\\)|[()\\[\\]:;,.]/\n  }\n  Prism.languages.pascal.asm.inside = Prism.languages.extend('pascal', {\n    asm: undefined,\n    keyword: undefined,\n    operator: undefined\n  })\n  Prism.languages.objectpascal = Prism.languages.pascal\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\npascaligo.displayName = 'pascaligo'\npascaligo.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function pascaligo(Prism) {\n  ;(function (Prism) {\n    // Pascaligo is a layer 2 smart contract language for the tezos blockchain\n\n    var braces = /\\((?:[^()]|\\((?:[^()]|\\([^()]*\\))*\\))*\\)/.source\n    var type = /(?:\\b\\w+(?:<braces>)?|<braces>)/.source.replace(\n      /<braces>/g,\n      function () {\n        return braces\n      }\n    )\n    var pascaligo = (Prism.languages.pascaligo = {\n      comment: /\\(\\*[\\s\\S]+?\\*\\)|\\/\\/.*/,\n      string: {\n        pattern: /([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|\\^[a-z]/i,\n        greedy: true\n      },\n      'class-name': [\n        {\n          pattern: RegExp(\n            /(\\btype\\s+\\w+\\s+is\\s+)<type>/.source.replace(\n              /<type>/g,\n              function () {\n                return type\n              }\n            ),\n            'i'\n          ),\n          lookbehind: true,\n          inside: null // see below\n        },\n        {\n          pattern: RegExp(\n            /<type>(?=\\s+is\\b)/.source.replace(/<type>/g, function () {\n              return type\n            }),\n            'i'\n          ),\n          inside: null // see below\n        },\n        {\n          pattern: RegExp(\n            /(:\\s*)<type>/.source.replace(/<type>/g, function () {\n              return type\n            })\n          ),\n          lookbehind: true,\n          inside: null // see below\n        }\n      ],\n      keyword: {\n        pattern:\n          /(^|[^&])\\b(?:begin|block|case|const|else|end|fail|for|from|function|if|is|nil|of|remove|return|skip|then|type|var|while|with)\\b/i,\n        lookbehind: true\n      },\n      boolean: {\n        pattern: /(^|[^&])\\b(?:False|True)\\b/i,\n        lookbehind: true\n      },\n      builtin: {\n        pattern: /(^|[^&])\\b(?:bool|int|list|map|nat|record|string|unit)\\b/i,\n        lookbehind: true\n      },\n      function: /\\b\\w+(?=\\s*\\()/,\n      number: [\n        // Hexadecimal, octal and binary\n        /%[01]+|&[0-7]+|\\$[a-f\\d]+/i,\n        // Decimal\n        /\\b\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?(?:mtz|n)?/i\n      ],\n      operator:\n        /->|=\\/=|\\.\\.|\\*\\*|:=|<[<=>]?|>[>=]?|[+\\-*\\/]=?|[@^=|]|\\b(?:and|mod|or)\\b/,\n      punctuation: /\\(\\.|\\.\\)|[()\\[\\]:;,.{}]/\n    })\n    var classNameInside = [\n      'comment',\n      'keyword',\n      'builtin',\n      'operator',\n      'punctuation'\n    ].reduce(function (accum, key) {\n      accum[key] = pascaligo[key]\n      return accum\n    }, {})\n    pascaligo['class-name'].forEach(function (p) {\n      p.inside = classNameInside\n    })\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\npsl.displayName = 'psl'\npsl.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function psl(Prism) {\n  Prism.languages.psl = {\n    comment: {\n      pattern: /#.*/,\n      greedy: true\n    },\n    string: {\n      pattern: /\"(?:\\\\.|[^\\\\\"])*\"/,\n      greedy: true,\n      inside: {\n        symbol: /\\\\[ntrbA-Z\"\\\\]/\n      }\n    },\n    'heredoc-string': {\n      pattern: /<<<([a-zA-Z_]\\w*)[\\r\\n](?:.*[\\r\\n])*?\\1\\b/,\n      alias: 'string',\n      greedy: true\n    },\n    keyword:\n      /\\b(?:__multi|__single|case|default|do|else|elsif|exit|export|for|foreach|function|if|last|line|local|next|requires|return|switch|until|while|word)\\b/,\n    constant:\n      /\\b(?:ALARM|CHART_ADD_GRAPH|CHART_DELETE_GRAPH|CHART_DESTROY|CHART_LOAD|CHART_PRINT|EOF|OFFLINE|OK|PSL_PROF_LOG|R_CHECK_HORIZ|R_CHECK_VERT|R_CLICKER|R_COLUMN|R_FRAME|R_ICON|R_LABEL|R_LABEL_CENTER|R_LIST_MULTIPLE|R_LIST_MULTIPLE_ND|R_LIST_SINGLE|R_LIST_SINGLE_ND|R_MENU|R_POPUP|R_POPUP_SCROLLED|R_RADIO_HORIZ|R_RADIO_VERT|R_ROW|R_SCALE_HORIZ|R_SCALE_VERT|R_SEP_HORIZ|R_SEP_VERT|R_SPINNER|R_TEXT_FIELD|R_TEXT_FIELD_LABEL|R_TOGGLE|TRIM_LEADING|TRIM_LEADING_AND_TRAILING|TRIM_REDUNDANT|TRIM_TRAILING|VOID|WARN)\\b/,\n    boolean: /\\b(?:FALSE|False|NO|No|TRUE|True|YES|Yes|false|no|true|yes)\\b/,\n    variable: /\\b(?:PslDebug|errno|exit_status)\\b/,\n    builtin: {\n      pattern:\n        /\\b(?:PslExecute|PslFunctionCall|PslFunctionExists|PslSetOptions|_snmp_debug|acos|add_diary|annotate|annotate_get|ascii_to_ebcdic|asctime|asin|atan|atexit|batch_set|blackout|cat|ceil|chan_exists|change_state|close|code_cvt|cond_signal|cond_wait|console_type|convert_base|convert_date|convert_locale_date|cos|cosh|create|date|dcget_text|destroy|destroy_lock|dget_text|difference|dump_hist|ebcdic_to_ascii|encrypt|event_archive|event_catalog_get|event_check|event_query|event_range_manage|event_range_query|event_report|event_schedule|event_trigger|event_trigger2|execute|exists|exp|fabs|file|floor|fmod|fopen|fseek|ftell|full_discovery|get|get_chan_info|get_ranges|get_text|get_vars|getenv|gethostinfo|getpid|getpname|grep|history|history_get_retention|in_transition|index|int|internal|intersection|is_var|isnumber|join|kill|length|lines|lock|lock_info|log|log10|loge|matchline|msg_check|msg_get_format|msg_get_severity|msg_printf|msg_sprintf|ntharg|nthargf|nthline|nthlinef|num_bytes|num_consoles|pconfig|popen|poplines|pow|print|printf|proc_exists|process|random|read|readln|refresh_parameters|remote_check|remote_close|remote_event_query|remote_event_trigger|remote_file_send|remote_open|remove|replace|rindex|sec_check_priv|sec_store_get|sec_store_set|set|set_alarm_ranges|set_locale|share|sin|sinh|sleep|snmp_agent_config|snmp_agent_start|snmp_agent_stop|snmp_close|snmp_config|snmp_get|snmp_get_next|snmp_h_get|snmp_h_get_next|snmp_h_set|snmp_open|snmp_set|snmp_trap_ignore|snmp_trap_listen|snmp_trap_raise_std_trap|snmp_trap_receive|snmp_trap_register_im|snmp_trap_send|snmp_walk|sopen|sort|splitline|sprintf|sqrt|srandom|str_repeat|strcasecmp|subset|substr|system|tail|tan|tanh|text_domain|time|tmpnam|tolower|toupper|trace_psl_process|trim|union|unique|unlock|unset|va_arg|va_start|write)\\b/,\n      alias: 'builtin-function'\n    },\n    'foreach-variable': {\n      pattern:\n        /(\\bforeach\\s+(?:(?:\\w+\\b|\"(?:\\\\.|[^\\\\\"])*\")\\s+){0,2})[_a-zA-Z]\\w*(?=\\s*\\()/,\n      lookbehind: true,\n      greedy: true\n    },\n    function: /\\b[_a-z]\\w*\\b(?=\\s*\\()/i,\n    number: /\\b(?:0x[0-9a-f]+|\\d+(?:\\.\\d+)?)\\b/i,\n    operator: /--|\\+\\+|&&=?|\\|\\|=?|<<=?|>>=?|[=!]~|[-+*/%&|^!=<>]=?|\\.|[:?]/,\n    punctuation: /[(){}\\[\\];,]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\npcaxis.displayName = 'pcaxis'\npcaxis.aliases = ['px']\n\n/** @param {Refractor} Prism */\nexport default function pcaxis(Prism) {\n  Prism.languages.pcaxis = {\n    string: /\"[^\"]*\"/,\n    keyword: {\n      pattern:\n        /((?:^|;)\\s*)[-A-Z\\d]+(?:\\s*\\[[-\\w]+\\])?(?:\\s*\\(\"[^\"]*\"(?:,\\s*\"[^\"]*\")*\\))?(?=\\s*=)/,\n      lookbehind: true,\n      greedy: true,\n      inside: {\n        keyword: /^[-A-Z\\d]+/,\n        language: {\n          pattern: /^(\\s*)\\[[-\\w]+\\]/,\n          lookbehind: true,\n          inside: {\n            punctuation: /^\\[|\\]$/,\n            property: /[-\\w]+/\n          }\n        },\n        'sub-key': {\n          pattern: /^(\\s*)\\S[\\s\\S]*/,\n          lookbehind: true,\n          inside: {\n            parameter: {\n              pattern: /\"[^\"]*\"/,\n              alias: 'property'\n            },\n            punctuation: /^\\(|\\)$|,/\n          }\n        }\n      }\n    },\n    operator: /=/,\n    tlist: {\n      pattern:\n        /TLIST\\s*\\(\\s*\\w+(?:(?:\\s*,\\s*\"[^\"]*\")+|\\s*,\\s*\"[^\"]*\"-\"[^\"]*\")?\\s*\\)/,\n      greedy: true,\n      inside: {\n        function: /^TLIST/,\n        property: {\n          pattern: /^(\\s*\\(\\s*)\\w+/,\n          lookbehind: true\n        },\n        string: /\"[^\"]*\"/,\n        punctuation: /[(),]/,\n        operator: /-/\n      }\n    },\n    punctuation: /[;,]/,\n    number: {\n      pattern: /(^|\\s)\\d+(?:\\.\\d+)?(?!\\S)/,\n      lookbehind: true\n    },\n    boolean: /NO|YES/\n  }\n  Prism.languages.px = Prism.languages.pcaxis\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\npeoplecode.displayName = 'peoplecode'\npeoplecode.aliases = ['pcode']\n\n/** @param {Refractor} Prism */\nexport default function peoplecode(Prism) {\n  Prism.languages.peoplecode = {\n    comment: RegExp(\n      [\n        // C-style multiline comments\n        /\\/\\*[\\s\\S]*?\\*\\//.source,\n        // REM comments\n        /\\bREM[^;]*;/.source,\n        // Nested <* *> comments\n        /<\\*(?:[^<*]|\\*(?!>)|<(?!\\*)|<\\*(?:(?!\\*>)[\\s\\S])*\\*>)*\\*>/.source,\n        // /+ +/ comments\n        /\\/\\+[\\s\\S]*?\\+\\//.source\n      ].join('|')\n    ),\n    string: {\n      pattern: /'(?:''|[^'\\r\\n])*'(?!')|\"(?:\"\"|[^\"\\r\\n])*\"(?!\")/,\n      greedy: true\n    },\n    variable: /%\\w+/,\n    'function-definition': {\n      pattern: /((?:^|[^\\w-])(?:function|method)\\s+)\\w+/i,\n      lookbehind: true,\n      alias: 'function'\n    },\n    'class-name': {\n      pattern:\n        /((?:^|[^-\\w])(?:as|catch|class|component|create|extends|global|implements|instance|local|of|property|returns)\\s+)\\w+(?::\\w+)*/i,\n      lookbehind: true,\n      inside: {\n        punctuation: /:/\n      }\n    },\n    keyword:\n      /\\b(?:abstract|alias|as|catch|class|component|constant|create|declare|else|end-(?:class|evaluate|for|function|get|if|method|set|try|while)|evaluate|extends|for|function|get|global|if|implements|import|instance|library|local|method|null|of|out|peopleCode|private|program|property|protected|readonly|ref|repeat|returns?|set|step|then|throw|to|try|until|value|when(?:-other)?|while)\\b/i,\n    'operator-keyword': {\n      pattern: /\\b(?:and|not|or)\\b/i,\n      alias: 'operator'\n    },\n    function: /[_a-z]\\w*(?=\\s*\\()/i,\n    boolean: /\\b(?:false|true)\\b/i,\n    number: /\\b\\d+(?:\\.\\d+)?\\b/,\n    operator: /<>|[<>]=?|!=|\\*\\*|[-+*/|=@]/,\n    punctuation: /[:.;,()[\\]]/\n  }\n  Prism.languages.pcode = Prism.languages.peoplecode\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorJavadoclike from './javadoclike.js'\nimport refractorPhp from './php.js'\nphpdoc.displayName = 'phpdoc'\nphpdoc.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function phpdoc(Prism) {\n  Prism.register(refractorJavadoclike)\n  Prism.register(refractorPhp)\n  ;(function (Prism) {\n    var typeExpression = /(?:\\b[a-zA-Z]\\w*|[|\\\\[\\]])+/.source\n    Prism.languages.phpdoc = Prism.languages.extend('javadoclike', {\n      parameter: {\n        pattern: RegExp(\n          '(@(?:global|param|property(?:-read|-write)?|var)\\\\s+(?:' +\n            typeExpression +\n            '\\\\s+)?)\\\\$\\\\w+'\n        ),\n        lookbehind: true\n      }\n    })\n    Prism.languages.insertBefore('phpdoc', 'keyword', {\n      'class-name': [\n        {\n          pattern: RegExp(\n            '(@(?:global|package|param|property(?:-read|-write)?|return|subpackage|throws|var)\\\\s+)' +\n              typeExpression\n          ),\n          lookbehind: true,\n          inside: {\n            keyword:\n              /\\b(?:array|bool|boolean|callback|double|false|float|int|integer|mixed|null|object|resource|self|string|true|void)\\b/,\n            punctuation: /[|\\\\[\\]()]/\n          }\n        }\n      ]\n    })\n    Prism.languages.javadoclike.addSupport('php', Prism.languages.phpdoc)\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorPhp from './php.js'\nphpExtras.displayName = 'php-extras'\nphpExtras.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function phpExtras(Prism) {\n  Prism.register(refractorPhp)\n  Prism.languages.insertBefore('php', 'variable', {\n    this: {\n      pattern: /\\$this\\b/,\n      alias: 'keyword'\n    },\n    global:\n      /\\$(?:GLOBALS|HTTP_RAW_POST_DATA|_(?:COOKIE|ENV|FILES|GET|POST|REQUEST|SERVER|SESSION)|argc|argv|http_response_header|php_errormsg)\\b/,\n    scope: {\n      pattern: /\\b[\\w\\\\]+::/,\n      inside: {\n        keyword: /\\b(?:parent|self|static)\\b/,\n        punctuation: /::|\\\\/\n      }\n    }\n  })\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nplantUml.displayName = 'plant-uml'\nplantUml.aliases = ['plantuml']\n\n/** @param {Refractor} Prism */\nexport default function plantUml(Prism) {\n  ;(function (Prism) {\n    var variable = /\\$\\w+|%[a-z]+%/\n    var arrowAttr = /\\[[^[\\]]*\\]/.source\n    var arrowDirection = /(?:[drlu]|do|down|le|left|ri|right|up)/.source\n    var arrowBody =\n      '(?:-+' +\n      arrowDirection +\n      '-+|\\\\.+' +\n      arrowDirection +\n      '\\\\.+|-+(?:' +\n      arrowAttr +\n      '-*)?|' +\n      arrowAttr +\n      '-+|\\\\.+(?:' +\n      arrowAttr +\n      '\\\\.*)?|' +\n      arrowAttr +\n      '\\\\.+)'\n    var arrowLeft = /(?:<{1,2}|\\/{1,2}|\\\\{1,2}|<\\||[#*^+}xo])/.source\n    var arrowRight = /(?:>{1,2}|\\/{1,2}|\\\\{1,2}|\\|>|[#*^+{xo])/.source\n    var arrowPrefix = /[[?]?[ox]?/.source\n    var arrowSuffix = /[ox]?[\\]?]?/.source\n    var arrow =\n      arrowPrefix +\n      '(?:' +\n      arrowBody +\n      arrowRight +\n      '|' +\n      arrowLeft +\n      arrowBody +\n      '(?:' +\n      arrowRight +\n      ')?' +\n      ')' +\n      arrowSuffix\n    Prism.languages['plant-uml'] = {\n      comment: {\n        pattern: /(^[ \\t]*)(?:'.*|\\/'[\\s\\S]*?'\\/)/m,\n        lookbehind: true,\n        greedy: true\n      },\n      preprocessor: {\n        pattern: /(^[ \\t]*)!.*/m,\n        lookbehind: true,\n        greedy: true,\n        alias: 'property',\n        inside: {\n          variable: variable\n        }\n      },\n      delimiter: {\n        pattern: /(^[ \\t]*)@(?:end|start)uml\\b/m,\n        lookbehind: true,\n        greedy: true,\n        alias: 'punctuation'\n      },\n      arrow: {\n        pattern: RegExp(\n          /(^|[^-.<>?|\\\\[\\]ox])/.source + arrow + /(?![-.<>?|\\\\\\]ox])/.source\n        ),\n        lookbehind: true,\n        greedy: true,\n        alias: 'operator',\n        inside: {\n          expression: {\n            pattern: /(\\[)[^[\\]]+(?=\\])/,\n            lookbehind: true,\n            inside: null // see below\n          },\n          punctuation: /\\[(?=$|\\])|^\\]/\n        }\n      },\n      string: {\n        pattern: /\"[^\"]*\"/,\n        greedy: true\n      },\n      text: {\n        pattern: /(\\[[ \\t]*[\\r\\n]+(?![\\r\\n]))[^\\]]*(?=\\])/,\n        lookbehind: true,\n        greedy: true,\n        alias: 'string'\n      },\n      keyword: [\n        {\n          pattern:\n            /^([ \\t]*)(?:abstract\\s+class|end\\s+(?:box|fork|group|merge|note|ref|split|title)|(?:fork|split)(?:\\s+again)?|activate|actor|agent|alt|annotation|artifact|autoactivate|autonumber|backward|binary|boundary|box|break|caption|card|case|circle|class|clock|cloud|collections|component|concise|control|create|critical|database|deactivate|destroy|detach|diamond|else|elseif|end|end[hr]note|endif|endswitch|endwhile|entity|enum|file|folder|footer|frame|group|[hr]?note|header|hexagon|hide|if|interface|label|legend|loop|map|namespace|network|newpage|node|nwdiag|object|opt|package|page|par|participant|person|queue|rectangle|ref|remove|repeat|restore|return|robust|scale|set|show|skinparam|stack|start|state|stop|storage|switch|title|together|usecase|usecase\\/|while)(?=\\s|$)/m,\n          lookbehind: true,\n          greedy: true\n        },\n        /\\b(?:elseif|equals|not|while)(?=\\s*\\()/,\n        /\\b(?:as|is|then)\\b/\n      ],\n      divider: {\n        pattern: /^==.+==$/m,\n        greedy: true,\n        alias: 'important'\n      },\n      time: {\n        pattern: /@(?:\\d+(?:[:/]\\d+){2}|[+-]?\\d+|:[a-z]\\w*(?:[+-]\\d+)?)\\b/i,\n        greedy: true,\n        alias: 'number'\n      },\n      color: {\n        pattern: /#(?:[a-z_]+|[a-fA-F0-9]+)\\b/,\n        alias: 'symbol'\n      },\n      variable: variable,\n      punctuation: /[:,;()[\\]{}]|\\.{3}/\n    }\n    Prism.languages['plant-uml'].arrow.inside.expression.inside =\n      Prism.languages['plant-uml']\n    Prism.languages['plantuml'] = Prism.languages['plant-uml']\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorSql from './sql.js'\nplsql.displayName = 'plsql'\nplsql.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function plsql(Prism) {\n  Prism.register(refractorSql)\n  Prism.languages.plsql = Prism.languages.extend('sql', {\n    comment: {\n      pattern: /\\/\\*[\\s\\S]*?\\*\\/|--.*/,\n      greedy: true\n    },\n    // https://docs.oracle.com/en/database/oracle/oracle-database/21/lnpls/plsql-reserved-words-keywords.html\n    keyword:\n      /\\b(?:A|ACCESSIBLE|ADD|AGENT|AGGREGATE|ALL|ALTER|AND|ANY|ARRAY|AS|ASC|AT|ATTRIBUTE|AUTHID|AVG|BEGIN|BETWEEN|BFILE_BASE|BINARY|BLOB_BASE|BLOCK|BODY|BOTH|BOUND|BULK|BY|BYTE|C|CALL|CALLING|CASCADE|CASE|CHAR|CHARACTER|CHARSET|CHARSETFORM|CHARSETID|CHAR_BASE|CHECK|CLOB_BASE|CLONE|CLOSE|CLUSTER|CLUSTERS|COLAUTH|COLLECT|COLUMNS|COMMENT|COMMIT|COMMITTED|COMPILED|COMPRESS|CONNECT|CONSTANT|CONSTRUCTOR|CONTEXT|CONTINUE|CONVERT|COUNT|CRASH|CREATE|CREDENTIAL|CURRENT|CURSOR|CUSTOMDATUM|DANGLING|DATA|DATE|DATE_BASE|DAY|DECLARE|DEFAULT|DEFINE|DELETE|DESC|DETERMINISTIC|DIRECTORY|DISTINCT|DOUBLE|DROP|DURATION|ELEMENT|ELSE|ELSIF|EMPTY|END|ESCAPE|EXCEPT|EXCEPTION|EXCEPTIONS|EXCLUSIVE|EXECUTE|EXISTS|EXIT|EXTERNAL|FETCH|FINAL|FIRST|FIXED|FLOAT|FOR|FORALL|FORCE|FROM|FUNCTION|GENERAL|GOTO|GRANT|GROUP|HASH|HAVING|HEAP|HIDDEN|HOUR|IDENTIFIED|IF|IMMEDIATE|IMMUTABLE|IN|INCLUDING|INDEX|INDEXES|INDICATOR|INDICES|INFINITE|INSERT|INSTANTIABLE|INT|INTERFACE|INTERSECT|INTERVAL|INTO|INVALIDATE|IS|ISOLATION|JAVA|LANGUAGE|LARGE|LEADING|LENGTH|LEVEL|LIBRARY|LIKE|LIKE2|LIKE4|LIKEC|LIMIT|LIMITED|LOCAL|LOCK|LONG|LOOP|MAP|MAX|MAXLEN|MEMBER|MERGE|MIN|MINUS|MINUTE|MOD|MODE|MODIFY|MONTH|MULTISET|MUTABLE|NAME|NAN|NATIONAL|NATIVE|NCHAR|NEW|NOCOMPRESS|NOCOPY|NOT|NOWAIT|NULL|NUMBER_BASE|OBJECT|OCICOLL|OCIDATE|OCIDATETIME|OCIDURATION|OCIINTERVAL|OCILOBLOCATOR|OCINUMBER|OCIRAW|OCIREF|OCIREFCURSOR|OCIROWID|OCISTRING|OCITYPE|OF|OLD|ON|ONLY|OPAQUE|OPEN|OPERATOR|OPTION|OR|ORACLE|ORADATA|ORDER|ORGANIZATION|ORLANY|ORLVARY|OTHERS|OUT|OVERLAPS|OVERRIDING|PACKAGE|PARALLEL_ENABLE|PARAMETER|PARAMETERS|PARENT|PARTITION|PASCAL|PERSISTABLE|PIPE|PIPELINED|PLUGGABLE|POLYMORPHIC|PRAGMA|PRECISION|PRIOR|PRIVATE|PROCEDURE|PUBLIC|RAISE|RANGE|RAW|READ|RECORD|REF|REFERENCE|RELIES_ON|REM|REMAINDER|RENAME|RESOURCE|RESULT|RESULT_CACHE|RETURN|RETURNING|REVERSE|REVOKE|ROLLBACK|ROW|SAMPLE|SAVE|SAVEPOINT|SB1|SB2|SB4|SECOND|SEGMENT|SELECT|SELF|SEPARATE|SEQUENCE|SERIALIZABLE|SET|SHARE|SHORT|SIZE|SIZE_T|SOME|SPARSE|SQL|SQLCODE|SQLDATA|SQLNAME|SQLSTATE|STANDARD|START|STATIC|STDDEV|STORED|STRING|STRUCT|STYLE|SUBMULTISET|SUBPARTITION|SUBSTITUTABLE|SUBTYPE|SUM|SYNONYM|TABAUTH|TABLE|TDO|THE|THEN|TIME|TIMESTAMP|TIMEZONE_ABBR|TIMEZONE_HOUR|TIMEZONE_MINUTE|TIMEZONE_REGION|TO|TRAILING|TRANSACTION|TRANSACTIONAL|TRUSTED|TYPE|UB1|UB2|UB4|UNDER|UNION|UNIQUE|UNPLUG|UNSIGNED|UNTRUSTED|UPDATE|USE|USING|VALIST|VALUE|VALUES|VARIABLE|VARIANCE|VARRAY|VARYING|VIEW|VIEWS|VOID|WHEN|WHERE|WHILE|WITH|WORK|WRAPPED|WRITE|YEAR|ZONE)\\b/i,\n    // https://docs.oracle.com/en/database/oracle/oracle-database/21/lnpls/plsql-language-fundamentals.html#GUID-96A42F7C-7A71-4B90-8255-CA9C8BD9722E\n    operator: /:=?|=>|[<>^~!]=|\\.\\.|\\|\\||\\*\\*|[-+*/%<>=@]/\n  })\n  Prism.languages.insertBefore('plsql', 'operator', {\n    label: {\n      pattern: /<<\\s*\\w+\\s*>>/,\n      alias: 'symbol'\n    }\n  })\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\npowerquery.displayName = 'powerquery'\npowerquery.aliases = ['mscript', 'pq']\n\n/** @param {Refractor} Prism */\nexport default function powerquery(Prism) {\n  // https://docs.microsoft.com/en-us/powerquery-m/power-query-m-language-specification\n\n  Prism.languages.powerquery = {\n    comment: {\n      pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n      lookbehind: true,\n      greedy: true\n    },\n    'quoted-identifier': {\n      pattern: /#\"(?:[^\"\\r\\n]|\"\")*\"(?!\")/,\n      greedy: true\n    },\n    string: {\n      pattern: /(?:#!)?\"(?:[^\"\\r\\n]|\"\")*\"(?!\")/,\n      greedy: true\n    },\n    constant: [\n      /\\bDay\\.(?:Friday|Monday|Saturday|Sunday|Thursday|Tuesday|Wednesday)\\b/,\n      /\\bTraceLevel\\.(?:Critical|Error|Information|Verbose|Warning)\\b/,\n      /\\bOccurrence\\.(?:All|First|Last)\\b/,\n      /\\bOrder\\.(?:Ascending|Descending)\\b/,\n      /\\bRoundingMode\\.(?:AwayFromZero|Down|ToEven|TowardZero|Up)\\b/,\n      /\\bMissingField\\.(?:Error|Ignore|UseNull)\\b/,\n      /\\bQuoteStyle\\.(?:Csv|None)\\b/,\n      /\\bJoinKind\\.(?:FullOuter|Inner|LeftAnti|LeftOuter|RightAnti|RightOuter)\\b/,\n      /\\bGroupKind\\.(?:Global|Local)\\b/,\n      /\\bExtraValues\\.(?:Error|Ignore|List)\\b/,\n      /\\bJoinAlgorithm\\.(?:Dynamic|LeftHash|LeftIndex|PairwiseHash|RightHash|RightIndex|SortMerge)\\b/,\n      /\\bJoinSide\\.(?:Left|Right)\\b/,\n      /\\bPrecision\\.(?:Decimal|Double)\\b/,\n      /\\bRelativePosition\\.From(?:End|Start)\\b/,\n      /\\bTextEncoding\\.(?:Ascii|BigEndianUnicode|Unicode|Utf16|Utf8|Windows)\\b/,\n      /\\b(?:Any|Binary|Date|DateTime|DateTimeZone|Duration|Function|Int16|Int32|Int64|Int8|List|Logical|None|Number|Record|Table|Text|Time)\\.Type\\b/,\n      /\\bnull\\b/\n    ],\n    boolean: /\\b(?:false|true)\\b/,\n    keyword:\n      /\\b(?:and|as|each|else|error|if|in|is|let|meta|not|nullable|optional|or|otherwise|section|shared|then|try|type)\\b|#(?:binary|date|datetime|datetimezone|duration|infinity|nan|sections|shared|table|time)\\b/,\n    function: {\n      pattern: /(^|[^#\\w.])[a-z_][\\w.]*(?=\\s*\\()/i,\n      lookbehind: true\n    },\n    'data-type': {\n      pattern:\n        /\\b(?:any|anynonnull|binary|date|datetime|datetimezone|duration|function|list|logical|none|number|record|table|text|time)\\b/,\n      alias: 'class-name'\n    },\n    number: {\n      pattern:\n        /\\b0x[\\da-f]+\\b|(?:[+-]?(?:\\b\\d+\\.)?\\b\\d+|[+-]\\.\\d+|(^|[^.])\\B\\.\\d+)(?:e[+-]?\\d+)?\\b/i,\n      lookbehind: true\n    },\n    operator: /[-+*\\/&?@^]|<(?:=>?|>)?|>=?|=>?|\\.\\.\\.?/,\n    punctuation: /[,;\\[\\](){}]/\n  }\n  Prism.languages.pq = Prism.languages['powerquery']\n  Prism.languages.mscript = Prism.languages['powerquery']\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\npowershell.displayName = 'powershell'\npowershell.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function powershell(Prism) {\n  ;(function (Prism) {\n    var powershell = (Prism.languages.powershell = {\n      comment: [\n        {\n          pattern: /(^|[^`])<#[\\s\\S]*?#>/,\n          lookbehind: true\n        },\n        {\n          pattern: /(^|[^`])#.*/,\n          lookbehind: true\n        }\n      ],\n      string: [\n        {\n          pattern: /\"(?:`[\\s\\S]|[^`\"])*\"/,\n          greedy: true,\n          inside: null // see below\n        },\n        {\n          pattern: /'(?:[^']|'')*'/,\n          greedy: true\n        }\n      ],\n      // Matches name spaces as well as casts, attribute decorators. Force starting with letter to avoid matching array indices\n      // Supports two levels of nested brackets (e.g. `[OutputType([System.Collections.Generic.List[int]])]`)\n      namespace: /\\[[a-z](?:\\[(?:\\[[^\\]]*\\]|[^\\[\\]])*\\]|[^\\[\\]])*\\]/i,\n      boolean: /\\$(?:false|true)\\b/i,\n      variable: /\\$\\w+\\b/,\n      // Cmdlets and aliases. Aliases should come last, otherwise \"write\" gets preferred over \"write-host\" for example\n      // Get-Command | ?{ $_.ModuleName -match \"Microsoft.PowerShell.(Util|Core|Management)\" }\n      // Get-Alias | ?{ $_.ReferencedCommand.Module.Name -match \"Microsoft.PowerShell.(Util|Core|Management)\" }\n      function: [\n        /\\b(?:Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|ForEach|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Sort|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Tee|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Where|Write)-[a-z]+\\b/i,\n        /\\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\\b/i\n      ],\n      // per http://technet.microsoft.com/en-us/library/hh847744.aspx\n      keyword:\n        /\\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\\b/i,\n      operator: {\n        pattern:\n          /(^|\\W)(?:!|-(?:b?(?:and|x?or)|as|(?:Not)?(?:Contains|In|Like|Match)|eq|ge|gt|is(?:Not)?|Join|le|lt|ne|not|Replace|sh[lr])\\b|-[-=]?|\\+[+=]?|[*\\/%]=?)/i,\n        lookbehind: true\n      },\n      punctuation: /[|{}[\\];(),.]/\n    })\n\n    // Variable interpolation inside strings, and nested expressions\n    powershell.string[0].inside = {\n      function: {\n        // Allow for one level of nesting\n        pattern: /(^|[^`])\\$\\((?:\\$\\([^\\r\\n()]*\\)|(?!\\$\\()[^\\r\\n)])*\\)/,\n        lookbehind: true,\n        inside: powershell\n      },\n      boolean: powershell.boolean,\n      variable: powershell.variable\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\nprocessing.displayName = 'processing'\nprocessing.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function processing(Prism) {\n  Prism.register(refractorClike)\n  Prism.languages.processing = Prism.languages.extend('clike', {\n    keyword:\n      /\\b(?:break|case|catch|class|continue|default|else|extends|final|for|if|implements|import|new|null|private|public|return|static|super|switch|this|try|void|while)\\b/,\n    // Spaces are allowed between function name and parenthesis\n    function: /\\b\\w+(?=\\s*\\()/,\n    operator: /<[<=]?|>[>=]?|&&?|\\|\\|?|[%?]|[!=+\\-*\\/]=?/\n  })\n  Prism.languages.insertBefore('processing', 'number', {\n    // Special case: XML is a type\n    constant: /\\b(?!XML\\b)[A-Z][A-Z\\d_]+\\b/,\n    type: {\n      pattern: /\\b(?:boolean|byte|char|color|double|float|int|[A-Z]\\w*)\\b/,\n      alias: 'class-name'\n    }\n  })\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nprolog.displayName = 'prolog'\nprolog.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function prolog(Prism) {\n  Prism.languages.prolog = {\n    // Syntax depends on the implementation\n    comment: {\n      pattern: /\\/\\*[\\s\\S]*?\\*\\/|%.*/,\n      greedy: true\n    },\n    // Depending on the implementation, strings may allow escaped newlines and quote-escape\n    string: {\n      pattern: /([\"'])(?:\\1\\1|\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1(?!\\1)/,\n      greedy: true\n    },\n    builtin: /\\b(?:fx|fy|xf[xy]?|yfx?)\\b/,\n    // FIXME: Should we list all null-ary predicates (not followed by a parenthesis) like halt, trace, etc.?\n    function: /\\b[a-z]\\w*(?:(?=\\()|\\/\\d+)/,\n    number: /\\b\\d+(?:\\.\\d*)?/,\n    // Custom operators are allowed\n    operator: /[:\\\\=><\\-?*@\\/;+^|!$.]+|\\b(?:is|mod|not|xor)\\b/,\n    punctuation: /[(){}\\[\\],]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\npromql.displayName = 'promql'\npromql.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function promql(Prism) {\n  // Thanks to: https://github.com/prometheus-community/monaco-promql/blob/master/src/promql/promql.ts\n  // As well as: https://kausal.co/blog/slate-prism-add-new-syntax-promql/\n\n  ;(function (Prism) {\n    // PromQL Aggregation Operators\n    // (https://prometheus.io/docs/prometheus/latest/querying/operators/#aggregation-operators)\n    var aggregations = [\n      'sum',\n      'min',\n      'max',\n      'avg',\n      'group',\n      'stddev',\n      'stdvar',\n      'count',\n      'count_values',\n      'bottomk',\n      'topk',\n      'quantile'\n    ]\n\n    // PromQL vector matching + the by and without clauses\n    // (https://prometheus.io/docs/prometheus/latest/querying/operators/#vector-matching)\n    var vectorMatching = [\n      'on',\n      'ignoring',\n      'group_right',\n      'group_left',\n      'by',\n      'without'\n    ]\n\n    // PromQL offset modifier\n    // (https://prometheus.io/docs/prometheus/latest/querying/basics/#offset-modifier)\n    var offsetModifier = ['offset']\n    var keywords = aggregations.concat(vectorMatching, offsetModifier)\n    Prism.languages.promql = {\n      comment: {\n        pattern: /(^[ \\t]*)#.*/m,\n        lookbehind: true\n      },\n      'vector-match': {\n        // Match the comma-separated label lists inside vector matching:\n        pattern: new RegExp(\n          '((?:' + vectorMatching.join('|') + ')\\\\s*)\\\\([^)]*\\\\)'\n        ),\n        lookbehind: true,\n        inside: {\n          'label-key': {\n            pattern: /\\b[^,]+\\b/,\n            alias: 'attr-name'\n          },\n          punctuation: /[(),]/\n        }\n      },\n      'context-labels': {\n        pattern: /\\{[^{}]*\\}/,\n        inside: {\n          'label-key': {\n            pattern: /\\b[a-z_]\\w*(?=\\s*(?:=|![=~]))/,\n            alias: 'attr-name'\n          },\n          'label-value': {\n            pattern: /([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n            greedy: true,\n            alias: 'attr-value'\n          },\n          punctuation: /\\{|\\}|=~?|![=~]|,/\n        }\n      },\n      'context-range': [\n        {\n          pattern: /\\[[\\w\\s:]+\\]/,\n          // [1m]\n          inside: {\n            punctuation: /\\[|\\]|:/,\n            'range-duration': {\n              pattern: /\\b(?:\\d+(?:[smhdwy]|ms))+\\b/i,\n              alias: 'number'\n            }\n          }\n        },\n        {\n          pattern: /(\\boffset\\s+)\\w+/,\n          // offset 1m\n          lookbehind: true,\n          inside: {\n            'range-duration': {\n              pattern: /\\b(?:\\d+(?:[smhdwy]|ms))+\\b/i,\n              alias: 'number'\n            }\n          }\n        }\n      ],\n      keyword: new RegExp('\\\\b(?:' + keywords.join('|') + ')\\\\b', 'i'),\n      function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n      number:\n        /[-+]?(?:(?:\\b\\d+(?:\\.\\d+)?|\\B\\.\\d+)(?:e[-+]?\\d+)?\\b|\\b(?:0x[0-9a-f]+|nan|inf)\\b)/i,\n      operator: /[\\^*/%+-]|==|!=|<=|<|>=|>|\\b(?:and|or|unless)\\b/i,\n      punctuation: /[{};()`,.[\\]]/\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nproperties.displayName = 'properties'\nproperties.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function properties(Prism) {\n  Prism.languages.properties = {\n    comment: /^[ \\t]*[#!].*$/m,\n    value: {\n      pattern:\n        /(^[ \\t]*(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\s:=])+(?: *[=:] *(?! )| ))(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n])+/m,\n      lookbehind: true,\n      alias: 'attr-value'\n    },\n    key: {\n      pattern: /^[ \\t]*(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\s:=])+(?= *[=:]| )/m,\n      alias: 'attr-name'\n    },\n    punctuation: /[=:]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\nprotobuf.displayName = 'protobuf'\nprotobuf.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function protobuf(Prism) {\n  Prism.register(refractorClike)\n  ;(function (Prism) {\n    var builtinTypes =\n      /\\b(?:bool|bytes|double|s?fixed(?:32|64)|float|[su]?int(?:32|64)|string)\\b/\n    Prism.languages.protobuf = Prism.languages.extend('clike', {\n      'class-name': [\n        {\n          pattern:\n            /(\\b(?:enum|extend|message|service)\\s+)[A-Za-z_]\\w*(?=\\s*\\{)/,\n          lookbehind: true\n        },\n        {\n          pattern:\n            /(\\b(?:rpc\\s+\\w+|returns)\\s*\\(\\s*(?:stream\\s+)?)\\.?[A-Za-z_]\\w*(?:\\.[A-Za-z_]\\w*)*(?=\\s*\\))/,\n          lookbehind: true\n        }\n      ],\n      keyword:\n        /\\b(?:enum|extend|extensions|import|message|oneof|option|optional|package|public|repeated|required|reserved|returns|rpc(?=\\s+\\w)|service|stream|syntax|to)\\b(?!\\s*=\\s*\\d)/,\n      function: /\\b[a-z_]\\w*(?=\\s*\\()/i\n    })\n    Prism.languages.insertBefore('protobuf', 'operator', {\n      map: {\n        pattern: /\\bmap<\\s*[\\w.]+\\s*,\\s*[\\w.]+\\s*>(?=\\s+[a-z_]\\w*\\s*[=;])/i,\n        alias: 'class-name',\n        inside: {\n          punctuation: /[<>.,]/,\n          builtin: builtinTypes\n        }\n      },\n      builtin: builtinTypes,\n      'positional-class-name': {\n        pattern: /(?:\\b|\\B\\.)[a-z_]\\w*(?:\\.[a-z_]\\w*)*(?=\\s+[a-z_]\\w*\\s*[=;])/i,\n        alias: 'class-name',\n        inside: {\n          punctuation: /\\./\n        }\n      },\n      annotation: {\n        pattern: /(\\[\\s*)[a-z_]\\w*(?=\\s*=)/i,\n        lookbehind: true\n      }\n    })\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nstylus.displayName = 'stylus'\nstylus.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function stylus(Prism) {\n  ;(function (Prism) {\n    var unit = {\n      pattern: /(\\b\\d+)(?:%|[a-z]+)/,\n      lookbehind: true\n    }\n    // 123 -123 .123 -.123 12.3 -12.3\n    var number = {\n      pattern: /(^|[^\\w.-])-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)/,\n      lookbehind: true\n    }\n    var inside = {\n      comment: {\n        pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n        lookbehind: true\n      },\n      url: {\n        pattern: /\\burl\\(([\"']?).*?\\1\\)/i,\n        greedy: true\n      },\n      string: {\n        pattern: /(\"|')(?:(?!\\1)[^\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*\\1/,\n        greedy: true\n      },\n      interpolation: null,\n      // See below\n      func: null,\n      // See below\n      important: /\\B!(?:important|optional)\\b/i,\n      keyword: {\n        pattern: /(^|\\s+)(?:(?:else|for|if|return|unless)(?=\\s|$)|@[\\w-]+)/,\n        lookbehind: true\n      },\n      hexcode: /#[\\da-f]{3,6}/i,\n      color: [\n        /\\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\\b/i,\n        {\n          pattern:\n            /\\b(?:hsl|rgb)\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*\\)\\B|\\b(?:hsl|rgb)a\\(\\s*\\d{1,3}\\s*,\\s*\\d{1,3}%?\\s*,\\s*\\d{1,3}%?\\s*,\\s*(?:0|0?\\.\\d+|1)\\s*\\)\\B/i,\n          inside: {\n            unit: unit,\n            number: number,\n            function: /[\\w-]+(?=\\()/,\n            punctuation: /[(),]/\n          }\n        }\n      ],\n      entity: /\\\\[\\da-f]{1,8}/i,\n      unit: unit,\n      boolean: /\\b(?:false|true)\\b/,\n      operator: [\n        // We want non-word chars around \"-\" because it is\n        // accepted in property names.\n        /~|[+!\\/%<>?=]=?|[-:]=|\\*[*=]?|\\.{2,3}|&&|\\|\\||\\B-\\B|\\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\\b/\n      ],\n      number: number,\n      punctuation: /[{}()\\[\\];:,]/\n    }\n    inside['interpolation'] = {\n      pattern: /\\{[^\\r\\n}:]+\\}/,\n      alias: 'variable',\n      inside: {\n        delimiter: {\n          pattern: /^\\{|\\}$/,\n          alias: 'punctuation'\n        },\n        rest: inside\n      }\n    }\n    inside['func'] = {\n      pattern: /[\\w-]+\\([^)]*\\).*/,\n      inside: {\n        function: /^[^(]+/,\n        rest: inside\n      }\n    }\n    Prism.languages.stylus = {\n      'atrule-declaration': {\n        pattern: /(^[ \\t]*)@.+/m,\n        lookbehind: true,\n        inside: {\n          atrule: /^@[\\w-]+/,\n          rest: inside\n        }\n      },\n      'variable-declaration': {\n        pattern: /(^[ \\t]*)[\\w$-]+\\s*.?=[ \\t]*(?:\\{[^{}]*\\}|\\S.*|$)/m,\n        lookbehind: true,\n        inside: {\n          variable: /^\\S+/,\n          rest: inside\n        }\n      },\n      statement: {\n        pattern: /(^[ \\t]*)(?:else|for|if|return|unless)[ \\t].+/m,\n        lookbehind: true,\n        inside: {\n          keyword: /^\\S+/,\n          rest: inside\n        }\n      },\n      // A property/value pair cannot end with a comma or a brace\n      // It cannot have indented content unless it ended with a semicolon\n      'property-declaration': {\n        pattern:\n          /((?:^|\\{)([ \\t]*))(?:[\\w-]|\\{[^}\\r\\n]+\\})+(?:\\s*:\\s*|[ \\t]+)(?!\\s)[^{\\r\\n]*(?:;|[^{\\r\\n,]$(?!(?:\\r?\\n|\\r)(?:\\{|\\2[ \\t])))/m,\n        lookbehind: true,\n        inside: {\n          property: {\n            pattern: /^[^\\s:]+/,\n            inside: {\n              interpolation: inside.interpolation\n            }\n          },\n          rest: inside\n        }\n      },\n      // A selector can contain parentheses only as part of a pseudo-element\n      // It can span multiple lines.\n      // It must end with a comma or an accolade or have indented content.\n      selector: {\n        pattern:\n          /(^[ \\t]*)(?:(?=\\S)(?:[^{}\\r\\n:()]|::?[\\w-]+(?:\\([^)\\r\\n]*\\)|(?![\\w-]))|\\{[^}\\r\\n]+\\})+)(?:(?:\\r?\\n|\\r)(?:\\1(?:(?=\\S)(?:[^{}\\r\\n:()]|::?[\\w-]+(?:\\([^)\\r\\n]*\\)|(?![\\w-]))|\\{[^}\\r\\n]+\\})+)))*(?:,$|\\{|(?=(?:\\r?\\n|\\r)(?:\\{|\\1[ \\t])))/m,\n        lookbehind: true,\n        inside: {\n          interpolation: inside.interpolation,\n          comment: inside.comment,\n          punctuation: /[{},]/\n        }\n      },\n      func: inside.func,\n      string: inside.string,\n      comment: {\n        pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n        lookbehind: true,\n        greedy: true\n      },\n      interpolation: inside.interpolation,\n      punctuation: /[{}()\\[\\];:.]/\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorMarkupTemplating from './markup-templating.js'\ntwig.displayName = 'twig'\ntwig.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function twig(Prism) {\n  Prism.register(refractorMarkupTemplating)\n  Prism.languages.twig = {\n    comment: /^\\{#[\\s\\S]*?#\\}$/,\n    'tag-name': {\n      pattern: /(^\\{%-?\\s*)\\w+/,\n      lookbehind: true,\n      alias: 'keyword'\n    },\n    delimiter: {\n      pattern: /^\\{[{%]-?|-?[%}]\\}$/,\n      alias: 'punctuation'\n    },\n    string: {\n      pattern: /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      inside: {\n        punctuation: /^['\"]|['\"]$/\n      }\n    },\n    keyword: /\\b(?:even|if|odd)\\b/,\n    boolean: /\\b(?:false|null|true)\\b/,\n    number: /\\b0x[\\dA-Fa-f]+|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee][-+]?\\d+)?/,\n    operator: [\n      {\n        pattern:\n          /(\\s)(?:and|b-and|b-or|b-xor|ends with|in|is|matches|not|or|same as|starts with)(?=\\s)/,\n        lookbehind: true\n      },\n      /[=<>]=?|!=|\\*\\*?|\\/\\/?|\\?:?|[-+~%|]/\n    ],\n    punctuation: /[()\\[\\]{}:.,]/\n  }\n  Prism.hooks.add('before-tokenize', function (env) {\n    if (env.language !== 'twig') {\n      return\n    }\n    var pattern = /\\{(?:#[\\s\\S]*?#|%[\\s\\S]*?%|\\{[\\s\\S]*?\\})\\}/g\n    Prism.languages['markup-templating'].buildPlaceholders(env, 'twig', pattern)\n  })\n  Prism.hooks.add('after-tokenize', function (env) {\n    Prism.languages['markup-templating'].tokenizePlaceholders(env, 'twig')\n  })\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorJavascript from './javascript.js'\nimport refractorMarkup from './markup.js'\npug.displayName = 'pug'\npug.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function pug(Prism) {\n  Prism.register(refractorJavascript)\n  Prism.register(refractorMarkup)\n  ;(function (Prism) {\n    // TODO:\n    // - Add CSS highlighting inside <style> tags\n    // - Add support for multi-line code blocks\n    // - Add support for interpolation #{} and !{}\n    // - Add support for tag interpolation #[]\n    // - Add explicit support for plain text using |\n    // - Add support for markup embedded in plain text\n\n    Prism.languages.pug = {\n      // Multiline stuff should appear before the rest\n\n      // This handles both single-line and multi-line comments\n      comment: {\n        pattern: /(^([\\t ]*))\\/\\/.*(?:(?:\\r?\\n|\\r)\\2[\\t ].+)*/m,\n        lookbehind: true\n      },\n      // All the tag-related part is in lookbehind\n      // so that it can be highlighted by the \"tag\" pattern\n      'multiline-script': {\n        pattern:\n          /(^([\\t ]*)script\\b.*\\.[\\t ]*)(?:(?:\\r?\\n|\\r(?!\\n))(?:\\2[\\t ].+|\\s*?(?=\\r?\\n|\\r)))+/m,\n        lookbehind: true,\n        inside: Prism.languages.javascript\n      },\n      // See at the end of the file for known filters\n      filter: {\n        pattern:\n          /(^([\\t ]*)):.+(?:(?:\\r?\\n|\\r(?!\\n))(?:\\2[\\t ].+|\\s*?(?=\\r?\\n|\\r)))+/m,\n        lookbehind: true,\n        inside: {\n          'filter-name': {\n            pattern: /^:[\\w-]+/,\n            alias: 'variable'\n          },\n          text: /\\S[\\s\\S]*/\n        }\n      },\n      'multiline-plain-text': {\n        pattern:\n          /(^([\\t ]*)[\\w\\-#.]+\\.[\\t ]*)(?:(?:\\r?\\n|\\r(?!\\n))(?:\\2[\\t ].+|\\s*?(?=\\r?\\n|\\r)))+/m,\n        lookbehind: true\n      },\n      markup: {\n        pattern: /(^[\\t ]*)<.+/m,\n        lookbehind: true,\n        inside: Prism.languages.markup\n      },\n      doctype: {\n        pattern: /((?:^|\\n)[\\t ]*)doctype(?: .+)?/,\n        lookbehind: true\n      },\n      // This handle all conditional and loop keywords\n      'flow-control': {\n        pattern:\n          /(^[\\t ]*)(?:case|default|each|else|if|unless|when|while)\\b(?: .+)?/m,\n        lookbehind: true,\n        inside: {\n          each: {\n            pattern: /^each .+? in\\b/,\n            inside: {\n              keyword: /\\b(?:each|in)\\b/,\n              punctuation: /,/\n            }\n          },\n          branch: {\n            pattern: /^(?:case|default|else|if|unless|when|while)\\b/,\n            alias: 'keyword'\n          },\n          rest: Prism.languages.javascript\n        }\n      },\n      keyword: {\n        pattern: /(^[\\t ]*)(?:append|block|extends|include|prepend)\\b.+/m,\n        lookbehind: true\n      },\n      mixin: [\n        // Declaration\n        {\n          pattern: /(^[\\t ]*)mixin .+/m,\n          lookbehind: true,\n          inside: {\n            keyword: /^mixin/,\n            function: /\\w+(?=\\s*\\(|\\s*$)/,\n            punctuation: /[(),.]/\n          }\n        },\n        // Usage\n        {\n          pattern: /(^[\\t ]*)\\+.+/m,\n          lookbehind: true,\n          inside: {\n            name: {\n              pattern: /^\\+\\w+/,\n              alias: 'function'\n            },\n            rest: Prism.languages.javascript\n          }\n        }\n      ],\n      script: {\n        pattern: /(^[\\t ]*script(?:(?:&[^(]+)?\\([^)]+\\))*[\\t ]).+/m,\n        lookbehind: true,\n        inside: Prism.languages.javascript\n      },\n      'plain-text': {\n        pattern:\n          /(^[\\t ]*(?!-)[\\w\\-#.]*[\\w\\-](?:(?:&[^(]+)?\\([^)]+\\))*\\/?[\\t ]).+/m,\n        lookbehind: true\n      },\n      tag: {\n        pattern: /(^[\\t ]*)(?!-)[\\w\\-#.]*[\\w\\-](?:(?:&[^(]+)?\\([^)]+\\))*\\/?:?/m,\n        lookbehind: true,\n        inside: {\n          attributes: [\n            {\n              pattern: /&[^(]+\\([^)]+\\)/,\n              inside: Prism.languages.javascript\n            },\n            {\n              pattern: /\\([^)]+\\)/,\n              inside: {\n                'attr-value': {\n                  pattern: /(=\\s*(?!\\s))(?:\\{[^}]*\\}|[^,)\\r\\n]+)/,\n                  lookbehind: true,\n                  inside: Prism.languages.javascript\n                },\n                'attr-name': /[\\w-]+(?=\\s*!?=|\\s*[,)])/,\n                punctuation: /[!=(),]+/\n              }\n            }\n          ],\n          punctuation: /:/,\n          'attr-id': /#[\\w\\-]+/,\n          'attr-class': /\\.[\\w\\-]+/\n        }\n      },\n      code: [\n        {\n          pattern: /(^[\\t ]*(?:-|!?=)).+/m,\n          lookbehind: true,\n          inside: Prism.languages.javascript\n        }\n      ],\n      punctuation: /[.\\-!=|]+/\n    }\n    var filter_pattern =\n      /(^([\\t ]*)):<filter_name>(?:(?:\\r?\\n|\\r(?!\\n))(?:\\2[\\t ].+|\\s*?(?=\\r?\\n|\\r)))+/\n        .source\n\n    // Non exhaustive list of available filters and associated languages\n    var filters = [\n      {\n        filter: 'atpl',\n        language: 'twig'\n      },\n      {\n        filter: 'coffee',\n        language: 'coffeescript'\n      },\n      'ejs',\n      'handlebars',\n      'less',\n      'livescript',\n      'markdown',\n      {\n        filter: 'sass',\n        language: 'scss'\n      },\n      'stylus'\n    ]\n    var all_filters = {}\n    for (var i = 0, l = filters.length; i < l; i++) {\n      var filter = filters[i]\n      filter =\n        typeof filter === 'string'\n          ? {\n              filter: filter,\n              language: filter\n            }\n          : filter\n      if (Prism.languages[filter.language]) {\n        all_filters['filter-' + filter.filter] = {\n          pattern: RegExp(\n            filter_pattern.replace('<filter_name>', function () {\n              return filter.filter\n            }),\n            'm'\n          ),\n          lookbehind: true,\n          inside: {\n            'filter-name': {\n              pattern: /^:[\\w-]+/,\n              alias: 'variable'\n            },\n            text: {\n              pattern: /\\S[\\s\\S]*/,\n              alias: [filter.language, 'language-' + filter.language],\n              inside: Prism.languages[filter.language]\n            }\n          }\n        }\n      }\n    }\n    Prism.languages.insertBefore('pug', 'filter', all_filters)\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\npuppet.displayName = 'puppet'\npuppet.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function puppet(Prism) {\n  ;(function (Prism) {\n    Prism.languages.puppet = {\n      heredoc: [\n        // Matches the content of a quoted heredoc string (subject to interpolation)\n        {\n          pattern:\n            /(@\\(\"([^\"\\r\\n\\/):]+)\"(?:\\/[nrts$uL]*)?\\).*(?:\\r?\\n|\\r))(?:.*(?:\\r?\\n|\\r(?!\\n)))*?[ \\t]*(?:\\|[ \\t]*)?(?:-[ \\t]*)?\\2/,\n          lookbehind: true,\n          alias: 'string',\n          inside: {\n            // Matches the end tag\n            punctuation: /(?=\\S).*\\S(?= *$)/\n            // See interpolation below\n          }\n        },\n        // Matches the content of an unquoted heredoc string (no interpolation)\n        {\n          pattern:\n            /(@\\(([^\"\\r\\n\\/):]+)(?:\\/[nrts$uL]*)?\\).*(?:\\r?\\n|\\r))(?:.*(?:\\r?\\n|\\r(?!\\n)))*?[ \\t]*(?:\\|[ \\t]*)?(?:-[ \\t]*)?\\2/,\n          lookbehind: true,\n          greedy: true,\n          alias: 'string',\n          inside: {\n            // Matches the end tag\n            punctuation: /(?=\\S).*\\S(?= *$)/\n          }\n        },\n        // Matches the start tag of heredoc strings\n        {\n          pattern: /@\\(\"?(?:[^\"\\r\\n\\/):]+)\"?(?:\\/[nrts$uL]*)?\\)/,\n          alias: 'string',\n          inside: {\n            punctuation: {\n              pattern: /(\\().+?(?=\\))/,\n              lookbehind: true\n            }\n          }\n        }\n      ],\n      'multiline-comment': {\n        pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?\\*\\//,\n        lookbehind: true,\n        greedy: true,\n        alias: 'comment'\n      },\n      regex: {\n        // Must be prefixed with the keyword \"node\" or a non-word char\n        pattern:\n          /((?:\\bnode\\s+|[~=\\(\\[\\{,]\\s*|[=+]>\\s*|^\\s*))\\/(?:[^\\/\\\\]|\\\\[\\s\\S])+\\/(?:[imx]+\\b|\\B)/,\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          // Extended regexes must have the x flag. They can contain single-line comments.\n          'extended-regex': {\n            pattern: /^\\/(?:[^\\/\\\\]|\\\\[\\s\\S])+\\/[im]*x[im]*$/,\n            inside: {\n              comment: /#.*/\n            }\n          }\n        }\n      },\n      comment: {\n        pattern: /(^|[^\\\\])#.*/,\n        lookbehind: true,\n        greedy: true\n      },\n      string: {\n        // Allow for one nested level of double quotes inside interpolation\n        pattern:\n          /([\"'])(?:\\$\\{(?:[^'\"}]|([\"'])(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2)+\\}|\\$(?!\\{)|(?!\\1)[^\\\\$]|\\\\[\\s\\S])*\\1/,\n        greedy: true,\n        inside: {\n          'double-quoted': {\n            pattern: /^\"[\\s\\S]*\"$/,\n            inside: {\n              // See interpolation below\n            }\n          }\n        }\n      },\n      variable: {\n        pattern: /\\$(?:::)?\\w+(?:::\\w+)*/,\n        inside: {\n          punctuation: /::/\n        }\n      },\n      'attr-name': /(?:\\b\\w+|\\*)(?=\\s*=>)/,\n      function: [\n        {\n          pattern: /(\\.)(?!\\d)\\w+/,\n          lookbehind: true\n        },\n        /\\b(?:contain|debug|err|fail|include|info|notice|realize|require|tag|warning)\\b|\\b(?!\\d)\\w+(?=\\()/\n      ],\n      number: /\\b(?:0x[a-f\\d]+|\\d+(?:\\.\\d+)?(?:e-?\\d+)?)\\b/i,\n      boolean: /\\b(?:false|true)\\b/,\n      // Includes words reserved for future use\n      keyword:\n        /\\b(?:application|attr|case|class|consumes|default|define|else|elsif|function|if|import|inherits|node|private|produces|type|undef|unless)\\b/,\n      datatype: {\n        pattern:\n          /\\b(?:Any|Array|Boolean|Callable|Catalogentry|Class|Collection|Data|Default|Enum|Float|Hash|Integer|NotUndef|Numeric|Optional|Pattern|Regexp|Resource|Runtime|Scalar|String|Struct|Tuple|Type|Undef|Variant)\\b/,\n        alias: 'symbol'\n      },\n      operator:\n        /=[=~>]?|![=~]?|<(?:<\\|?|[=~|-])?|>[>=]?|->?|~>|\\|>?>?|[*\\/%+?]|\\b(?:and|in|or)\\b/,\n      punctuation: /[\\[\\]{}().,;]|:+/\n    }\n    var interpolation = [\n      {\n        // Allow for one nested level of braces inside interpolation\n        pattern:\n          /(^|[^\\\\])\\$\\{(?:[^'\"{}]|\\{[^}]*\\}|([\"'])(?:(?!\\2)[^\\\\]|\\\\[\\s\\S])*\\2)+\\}/,\n        lookbehind: true,\n        inside: {\n          'short-variable': {\n            // Negative look-ahead prevent wrong highlighting of functions\n            pattern: /(^\\$\\{)(?!\\w+\\()(?:::)?\\w+(?:::\\w+)*/,\n            lookbehind: true,\n            alias: 'variable',\n            inside: {\n              punctuation: /::/\n            }\n          },\n          delimiter: {\n            pattern: /^\\$/,\n            alias: 'variable'\n          },\n          rest: Prism.languages.puppet\n        }\n      },\n      {\n        pattern: /(^|[^\\\\])\\$(?:::)?\\w+(?:::\\w+)*/,\n        lookbehind: true,\n        alias: 'variable',\n        inside: {\n          punctuation: /::/\n        }\n      }\n    ]\n    Prism.languages.puppet['heredoc'][0].inside.interpolation = interpolation\n    Prism.languages.puppet['string'].inside[\n      'double-quoted'\n    ].inside.interpolation = interpolation\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\npure.displayName = 'pure'\npure.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function pure(Prism) {\n  ;(function (Prism) {\n    // https://agraef.github.io/pure-docs/pure.html#lexical-matters\n\n    Prism.languages.pure = {\n      comment: [\n        {\n          pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?\\*\\//,\n          lookbehind: true\n        },\n        {\n          pattern: /(^|[^\\\\:])\\/\\/.*/,\n          lookbehind: true\n        },\n        /#!.+/\n      ],\n      'inline-lang': {\n        pattern: /%<[\\s\\S]+?%>/,\n        greedy: true,\n        inside: {\n          lang: {\n            pattern: /(^%< *)-\\*-.+?-\\*-/,\n            lookbehind: true,\n            alias: 'comment'\n          },\n          delimiter: {\n            pattern: /^%<.*|%>$/,\n            alias: 'punctuation'\n          }\n        }\n      },\n      string: {\n        pattern: /\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,\n        greedy: true\n      },\n      number: {\n        // The look-behind prevents wrong highlighting of the .. operator\n        pattern:\n          /((?:\\.\\.)?)(?:\\b(?:inf|nan)\\b|\\b0x[\\da-f]+|(?:\\b(?:0b)?\\d+(?:\\.\\d+)?|\\B\\.\\d+)(?:e[+-]?\\d+)?L?)/i,\n        lookbehind: true\n      },\n      keyword:\n        /\\b(?:NULL|ans|break|bt|case|catch|cd|clear|const|def|del|dump|else|end|exit|extern|false|force|help|if|infix[lr]?|interface|let|ls|mem|namespace|nonfix|of|otherwise|outfix|override|postfix|prefix|private|public|pwd|quit|run|save|show|stats|then|throw|trace|true|type|underride|using|when|with)\\b/,\n      function:\n        /\\b(?:abs|add_(?:addr|constdef|(?:fundef|interface|macdef|typedef)(?:_at)?|vardef)|all|any|applp?|arity|bigintp?|blob(?:_crc|_size|p)?|boolp?|byte_c?string(?:_pointer)?|byte_(?:matrix|pointer)|calloc|cat|catmap|ceil|char[ps]?|check_ptrtag|chr|clear_sentry|clearsym|closurep?|cmatrixp?|cols?|colcat(?:map)?|colmap|colrev|colvector(?:p|seq)?|complex(?:_float_(?:matrix|pointer)|_matrix(?:_view)?|_pointer|p)?|conj|cookedp?|cst|cstring(?:_(?:dup|list|vector))?|curry3?|cyclen?|del_(?:constdef|fundef|interface|macdef|typedef|vardef)|delete|diag(?:mat)?|dim|dmatrixp?|do|double(?:_matrix(?:_view)?|_pointer|p)?|dowith3?|drop|dropwhile|eval(?:cmd)?|exactp|filter|fix|fixity|flip|float(?:_matrix|_pointer)|floor|fold[lr]1?|frac|free|funp?|functionp?|gcd|get(?:_(?:byte|constdef|double|float|fundef|int(?:64)?|interface(?:_typedef)?|long|macdef|pointer|ptrtag|sentry|short|string|typedef|vardef))?|globsym|hash|head|id|im|imatrixp?|index|inexactp|infp|init|insert|int(?:_matrix(?:_view)?|_pointer|p)?|int64_(?:matrix|pointer)|integerp?|iteraten?|iterwhile|join|keys?|lambdap?|last(?:err(?:pos)?)?|lcd|list[2p]?|listmap|make_ptrtag|malloc|map|matcat|matrixp?|max|member|min|nanp|nargs|nmatrixp?|null|numberp?|ord|pack(?:ed)?|pointer(?:_cast|_tag|_type|p)?|pow|pred|ptrtag|put(?:_(?:byte|double|float|int(?:64)?|long|pointer|short|string))?|rationalp?|re|realp?|realloc|recordp?|redim|reduce(?:_with)?|refp?|repeatn?|reverse|rlistp?|round|rows?|rowcat(?:map)?|rowmap|rowrev|rowvector(?:p|seq)?|same|scan[lr]1?|sentry|sgn|short_(?:matrix|pointer)|slice|smatrixp?|sort|split|str|strcat|stream|stride|string(?:_(?:dup|list|vector)|p)?|subdiag(?:mat)?|submat|subseq2?|substr|succ|supdiag(?:mat)?|symbolp?|tail|take|takewhile|thunkp?|transpose|trunc|tuplep?|typep|ubyte|uint(?:64)?|ulong|uncurry3?|unref|unzip3?|update|ushort|vals?|varp?|vector(?:p|seq)?|void|zip3?|zipwith3?)\\b/,\n      special: {\n        pattern: /\\b__[a-z]+__\\b/i,\n        alias: 'builtin'\n      },\n      // Any combination of operator chars can be an operator\n      // eslint-disable-next-line no-misleading-character-class\n      operator:\n        /(?:[!\"#$%&'*+,\\-.\\/:<=>?@\\\\^`|~\\u00a1-\\u00bf\\u00d7-\\u00f7\\u20d0-\\u2bff]|\\b_+\\b)+|\\b(?:and|div|mod|not|or)\\b/,\n      // FIXME: How can we prevent | and , to be highlighted as operator when they are used alone?\n      punctuation: /[(){}\\[\\];,|]/\n    }\n    var inlineLanguages = [\n      'c',\n      {\n        lang: 'c++',\n        alias: 'cpp'\n      },\n      'fortran'\n    ]\n    var inlineLanguageRe = /%< *-\\*- *<lang>\\d* *-\\*-[\\s\\S]+?%>/.source\n    inlineLanguages.forEach(function (lang) {\n      var alias = lang\n      if (typeof lang !== 'string') {\n        alias = lang.alias\n        lang = lang.lang\n      }\n      if (Prism.languages[alias]) {\n        var o = {}\n        o['inline-lang-' + alias] = {\n          pattern: RegExp(\n            inlineLanguageRe.replace(\n              '<lang>',\n              lang.replace(/([.+*?\\/\\\\(){}\\[\\]])/g, '\\\\$1')\n            ),\n            'i'\n          ),\n          inside: Prism.util.clone(Prism.languages.pure['inline-lang'].inside)\n        }\n        o['inline-lang-' + alias].inside.rest = Prism.util.clone(\n          Prism.languages[alias]\n        )\n        Prism.languages.insertBefore('pure', 'inline-lang', o)\n      }\n    })\n\n    // C is the default inline language\n    if (Prism.languages.c) {\n      Prism.languages.pure['inline-lang'].inside.rest = Prism.util.clone(\n        Prism.languages.c\n      )\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\npurebasic.displayName = 'purebasic'\npurebasic.aliases = ['pbfasm']\n\n/** @param {Refractor} Prism */\nexport default function purebasic(Prism) {\n  Prism.register(refractorClike)\n  /*\nOriginal Code by Bas Groothedde\n!!MANY THANKS!! I never would have made this, regex and me will never be best friends ;)\n==> https://codepen.io/ImagineProgramming/details/JYydBy/\nslightly changed to pass all tests\n*/\n\n  // PureBasic support, steal stuff from ansi-c\n  Prism.languages.purebasic = Prism.languages.extend('clike', {\n    comment: /;.*/,\n    keyword:\n      /\\b(?:align|and|as|break|calldebugger|case|compilercase|compilerdefault|compilerelse|compilerelseif|compilerendif|compilerendselect|compilererror|compilerif|compilerselect|continue|data|datasection|debug|debuglevel|declare|declarec|declarecdll|declaredll|declaremodule|default|define|dim|disableasm|disabledebugger|disableexplicit|else|elseif|enableasm|enabledebugger|enableexplicit|end|enddatasection|enddeclaremodule|endenumeration|endif|endimport|endinterface|endmacro|endmodule|endprocedure|endselect|endstructure|endstructureunion|endwith|enumeration|extends|fakereturn|for|foreach|forever|global|gosub|goto|if|import|importc|includebinary|includefile|includepath|interface|macro|module|newlist|newmap|next|not|or|procedure|procedurec|procedurecdll|proceduredll|procedurereturn|protected|prototype|prototypec|read|redim|repeat|restore|return|runtime|select|shared|static|step|structure|structureunion|swap|threaded|to|until|wend|while|with|xincludefile|xor)\\b/i,\n    function: /\\b\\w+(?:\\.\\w+)?\\s*(?=\\()/,\n    number: /(?:\\$[\\da-f]+|\\b-?(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:e[+-]?\\d+)?)\\b/i,\n    operator:\n      /(?:@\\*?|\\?|\\*)\\w+\\$?|-[>-]?|\\+\\+?|!=?|<<?=?|>>?=?|==?|&&?|\\|?\\||[~^%?*/@]/\n  })\n  Prism.languages.insertBefore('purebasic', 'keyword', {\n    tag: /#\\w+\\$?/,\n    asm: {\n      pattern: /(^[\\t ]*)!.*/m,\n      lookbehind: true,\n      alias: 'tag',\n      inside: {\n        comment: /;.*/,\n        string: {\n          pattern: /([\"'`])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n          greedy: true\n        },\n        // Anonymous label references, i.e.: jmp @b\n        'label-reference-anonymous': {\n          pattern: /(!\\s*j[a-z]+\\s+)@[fb]/i,\n          lookbehind: true,\n          alias: 'fasm-label'\n        },\n        // Named label reference, i.e.: jne label1\n        'label-reference-addressed': {\n          pattern: /(!\\s*j[a-z]+\\s+)[A-Z._?$@][\\w.?$@~#]*/i,\n          lookbehind: true,\n          alias: 'fasm-label'\n        },\n        keyword: [\n          /\\b(?:extern|global)\\b[^;\\r\\n]*/i,\n          /\\b(?:CPU|DEFAULT|FLOAT)\\b.*/\n        ],\n        function: {\n          pattern: /^([\\t ]*!\\s*)[\\da-z]+(?=\\s|$)/im,\n          lookbehind: true\n        },\n        'function-inline': {\n          pattern: /(:\\s*)[\\da-z]+(?=\\s)/i,\n          lookbehind: true,\n          alias: 'function'\n        },\n        label: {\n          pattern: /^([\\t ]*!\\s*)[A-Za-z._?$@][\\w.?$@~#]*(?=:)/m,\n          lookbehind: true,\n          alias: 'fasm-label'\n        },\n        register:\n          /\\b(?:st\\d|[xyz]mm\\d\\d?|[cdt]r\\d|r\\d\\d?[bwd]?|[er]?[abcd]x|[abcd][hl]|[er]?(?:bp|di|si|sp)|[cdefgs]s|mm\\d+)\\b/i,\n        number:\n          /(?:\\b|-|(?=\\$))(?:0[hx](?:[\\da-f]*\\.)?[\\da-f]+(?:p[+-]?\\d+)?|\\d[\\da-f]+[hx]|\\$\\d[\\da-f]*|0[oq][0-7]+|[0-7]+[oq]|0[by][01]+|[01]+[by]|0[dt]\\d+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:\\.?e[+-]?\\d+)?[dt]?)\\b/i,\n        operator: /[\\[\\]*+\\-/%<>=&|$!,.:]/\n      }\n    }\n  })\n  delete Prism.languages.purebasic['class-name']\n  delete Prism.languages.purebasic['boolean']\n  Prism.languages.pbfasm = Prism.languages['purebasic']\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorHaskell from './haskell.js'\npurescript.displayName = 'purescript'\npurescript.aliases = ['purs']\n\n/** @param {Refractor} Prism */\nexport default function purescript(Prism) {\n  Prism.register(refractorHaskell)\n  Prism.languages.purescript = Prism.languages.extend('haskell', {\n    keyword:\n      /\\b(?:ado|case|class|data|derive|do|else|forall|if|in|infixl|infixr|instance|let|module|newtype|of|primitive|then|type|where)\\b|\u2200/,\n    'import-statement': {\n      // The imported or hidden names are not included in this import\n      // statement. This is because we want to highlight those exactly like\n      // we do for the names in the program.\n      pattern:\n        /(^[\\t ]*)import\\s+[A-Z][\\w']*(?:\\.[A-Z][\\w']*)*(?:\\s+as\\s+[A-Z][\\w']*(?:\\.[A-Z][\\w']*)*)?(?:\\s+hiding\\b)?/m,\n      lookbehind: true,\n      inside: {\n        keyword: /\\b(?:as|hiding|import)\\b/,\n        punctuation: /\\./\n      }\n    },\n    // These are builtin functions only. Constructors are highlighted later as a constant.\n    builtin:\n      /\\b(?:absurd|add|ap|append|apply|between|bind|bottom|clamp|compare|comparing|compose|conj|const|degree|discard|disj|div|eq|flap|flip|gcd|identity|ifM|join|lcm|liftA1|liftM1|map|max|mempty|min|mod|mul|negate|not|notEq|one|otherwise|recip|show|sub|top|unit|unless|unlessM|void|when|whenM|zero)\\b/,\n    operator: [\n      // Infix operators\n      Prism.languages.haskell.operator[0],\n      // ASCII operators\n      Prism.languages.haskell.operator[2],\n      // All UTF16 Unicode operator symbols\n      // This regex is equivalent to /(?=[\\x80-\\uFFFF])[\\p{gc=Math_Symbol}\\p{gc=Currency_Symbol}\\p{Modifier_Symbol}\\p{Other_Symbol}]/u\n      // See https://github.com/PrismJS/prism/issues/3006 for more details.\n      /[\\xa2-\\xa6\\xa8\\xa9\\xac\\xae-\\xb1\\xb4\\xb8\\xd7\\xf7\\u02c2-\\u02c5\\u02d2-\\u02df\\u02e5-\\u02eb\\u02ed\\u02ef-\\u02ff\\u0375\\u0384\\u0385\\u03f6\\u0482\\u058d-\\u058f\\u0606-\\u0608\\u060b\\u060e\\u060f\\u06de\\u06e9\\u06fd\\u06fe\\u07f6\\u07fe\\u07ff\\u09f2\\u09f3\\u09fa\\u09fb\\u0af1\\u0b70\\u0bf3-\\u0bfa\\u0c7f\\u0d4f\\u0d79\\u0e3f\\u0f01-\\u0f03\\u0f13\\u0f15-\\u0f17\\u0f1a-\\u0f1f\\u0f34\\u0f36\\u0f38\\u0fbe-\\u0fc5\\u0fc7-\\u0fcc\\u0fce\\u0fcf\\u0fd5-\\u0fd8\\u109e\\u109f\\u1390-\\u1399\\u166d\\u17db\\u1940\\u19de-\\u19ff\\u1b61-\\u1b6a\\u1b74-\\u1b7c\\u1fbd\\u1fbf-\\u1fc1\\u1fcd-\\u1fcf\\u1fdd-\\u1fdf\\u1fed-\\u1fef\\u1ffd\\u1ffe\\u2044\\u2052\\u207a-\\u207c\\u208a-\\u208c\\u20a0-\\u20bf\\u2100\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211e-\\u2123\\u2125\\u2127\\u2129\\u212e\\u213a\\u213b\\u2140-\\u2144\\u214a-\\u214d\\u214f\\u218a\\u218b\\u2190-\\u2307\\u230c-\\u2328\\u232b-\\u2426\\u2440-\\u244a\\u249c-\\u24e9\\u2500-\\u2767\\u2794-\\u27c4\\u27c7-\\u27e5\\u27f0-\\u2982\\u2999-\\u29d7\\u29dc-\\u29fb\\u29fe-\\u2b73\\u2b76-\\u2b95\\u2b97-\\u2bff\\u2ce5-\\u2cea\\u2e50\\u2e51\\u2e80-\\u2e99\\u2e9b-\\u2ef3\\u2f00-\\u2fd5\\u2ff0-\\u2ffb\\u3004\\u3012\\u3013\\u3020\\u3036\\u3037\\u303e\\u303f\\u309b\\u309c\\u3190\\u3191\\u3196-\\u319f\\u31c0-\\u31e3\\u3200-\\u321e\\u322a-\\u3247\\u3250\\u3260-\\u327f\\u328a-\\u32b0\\u32c0-\\u33ff\\u4dc0-\\u4dff\\ua490-\\ua4c6\\ua700-\\ua716\\ua720\\ua721\\ua789\\ua78a\\ua828-\\ua82b\\ua836-\\ua839\\uaa77-\\uaa79\\uab5b\\uab6a\\uab6b\\ufb29\\ufbb2-\\ufbc1\\ufdfc\\ufdfd\\ufe62\\ufe64-\\ufe66\\ufe69\\uff04\\uff0b\\uff1c-\\uff1e\\uff3e\\uff40\\uff5c\\uff5e\\uffe0-\\uffe6\\uffe8-\\uffee\\ufffc\\ufffd]/\n    ]\n  })\n  Prism.languages.purs = Prism.languages.purescript\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\nqsharp.displayName = 'qsharp'\nqsharp.aliases = ['qs']\n\n/** @param {Refractor} Prism */\nexport default function qsharp(Prism) {\n  Prism.register(refractorClike)\n  ;(function (Prism) {\n    /**\n     * Replaces all placeholders \"<<n>>\" of given pattern with the n-th replacement (zero based).\n     *\n     * Note: This is a simple text based replacement. Be careful when using backreferences!\n     *\n     * @param {string} pattern the given pattern.\n     * @param {string[]} replacements a list of replacement which can be inserted into the given pattern.\n     * @returns {string} the pattern with all placeholders replaced with their corresponding replacements.\n     * @example replace(/a<<0>>a/.source, [/b+/.source]) === /a(?:b+)a/.source\n     */\n    function replace(pattern, replacements) {\n      return pattern.replace(/<<(\\d+)>>/g, function (m, index) {\n        return '(?:' + replacements[+index] + ')'\n      })\n    }\n    /**\n     * @param {string} pattern\n     * @param {string[]} replacements\n     * @param {string} [flags]\n     * @returns {RegExp}\n     */\n    function re(pattern, replacements, flags) {\n      return RegExp(replace(pattern, replacements), flags || '')\n    }\n\n    /**\n     * Creates a nested pattern where all occurrences of the string `<<self>>` are replaced with the pattern itself.\n     *\n     * @param {string} pattern\n     * @param {number} depthLog2\n     * @returns {string}\n     */\n    function nested(pattern, depthLog2) {\n      for (var i = 0; i < depthLog2; i++) {\n        pattern = pattern.replace(/<<self>>/g, function () {\n          return '(?:' + pattern + ')'\n        })\n      }\n      return pattern.replace(/<<self>>/g, '[^\\\\s\\\\S]')\n    }\n\n    // https://docs.microsoft.com/en-us/azure/quantum/user-guide/language/typesystem/\n    // https://github.com/microsoft/qsharp-language/tree/main/Specifications/Language/5_Grammar\n    var keywordKinds = {\n      // keywords which represent a return or variable type\n      type: 'Adj BigInt Bool Ctl Double false Int One Pauli PauliI PauliX PauliY PauliZ Qubit Range Result String true Unit Zero',\n      // all other keywords\n      other:\n        'Adjoint adjoint apply as auto body borrow borrowing Controlled controlled distribute elif else fail fixup for function if in internal intrinsic invert is let mutable namespace new newtype open operation repeat return self set until use using while within'\n    }\n    // keywords\n    function keywordsToPattern(words) {\n      return '\\\\b(?:' + words.trim().replace(/ /g, '|') + ')\\\\b'\n    }\n    var keywords = RegExp(\n      keywordsToPattern(keywordKinds.type + ' ' + keywordKinds.other)\n    )\n\n    // types\n    var identifier = /\\b[A-Za-z_]\\w*\\b/.source\n    var qualifiedName = replace(/<<0>>(?:\\s*\\.\\s*<<0>>)*/.source, [identifier])\n    var typeInside = {\n      keyword: keywords,\n      punctuation: /[<>()?,.:[\\]]/\n    }\n\n    // strings\n    var regularString = /\"(?:\\\\.|[^\\\\\"])*\"/.source\n    Prism.languages.qsharp = Prism.languages.extend('clike', {\n      comment: /\\/\\/.*/,\n      string: [\n        {\n          pattern: re(/(^|[^$\\\\])<<0>>/.source, [regularString]),\n          lookbehind: true,\n          greedy: true\n        }\n      ],\n      'class-name': [\n        {\n          // open Microsoft.Quantum.Canon;\n          // open Microsoft.Quantum.Canon as CN;\n          pattern: re(/(\\b(?:as|open)\\s+)<<0>>(?=\\s*(?:;|as\\b))/.source, [\n            qualifiedName\n          ]),\n          lookbehind: true,\n          inside: typeInside\n        },\n        {\n          // namespace Quantum.App1;\n          pattern: re(/(\\bnamespace\\s+)<<0>>(?=\\s*\\{)/.source, [qualifiedName]),\n          lookbehind: true,\n          inside: typeInside\n        }\n      ],\n      keyword: keywords,\n      number:\n        /(?:\\b0(?:x[\\da-f]+|b[01]+|o[0-7]+)|(?:\\B\\.\\d+|\\b\\d+(?:\\.\\d*)?)(?:e[-+]?\\d+)?)l?\\b/i,\n      operator:\n        /\\band=|\\bor=|\\band\\b|\\bnot\\b|\\bor\\b|<[-=]|[-=]>|>>>=?|<<<=?|\\^\\^\\^=?|\\|\\|\\|=?|&&&=?|w\\/=?|~~~|[*\\/+\\-^=!%]=?/,\n      punctuation: /::|[{}[\\];(),.:]/\n    })\n    Prism.languages.insertBefore('qsharp', 'number', {\n      range: {\n        pattern: /\\.\\./,\n        alias: 'operator'\n      }\n    })\n\n    // single line\n    var interpolationExpr = nested(\n      replace(/\\{(?:[^\"{}]|<<0>>|<<self>>)*\\}/.source, [regularString]),\n      2\n    )\n    Prism.languages.insertBefore('qsharp', 'string', {\n      'interpolation-string': {\n        pattern: re(/\\$\"(?:\\\\.|<<0>>|[^\\\\\"{])*\"/.source, [interpolationExpr]),\n        greedy: true,\n        inside: {\n          interpolation: {\n            pattern: re(/((?:^|[^\\\\])(?:\\\\\\\\)*)<<0>>/.source, [\n              interpolationExpr\n            ]),\n            lookbehind: true,\n            inside: {\n              punctuation: /^\\{|\\}$/,\n              expression: {\n                pattern: /[\\s\\S]+/,\n                alias: 'language-qsharp',\n                inside: Prism.languages.qsharp\n              }\n            }\n          },\n          string: /[\\s\\S]+/\n        }\n      }\n    })\n  })(Prism)\n  Prism.languages.qs = Prism.languages.qsharp\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nq.displayName = 'q'\nq.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function q(Prism) {\n  Prism.languages.q = {\n    string: /\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,\n    comment: [\n      // From http://code.kx.com/wiki/Reference/Slash:\n      // When / is following a space (or a right parenthesis, bracket, or brace), it is ignored with the rest of the line.\n      {\n        pattern: /([\\t )\\]}])\\/.*/,\n        lookbehind: true,\n        greedy: true\n      },\n      // From http://code.kx.com/wiki/Reference/Slash:\n      // A line which has / as its first character and contains at least one other non-whitespace character is a whole-line comment and is ignored entirely.\n      // A / on a line by itself begins a multiline comment which is terminated by the next \\ on a line by itself.\n      // If a / is not matched by a \\, the multiline comment is unterminated and continues to end of file.\n      // The / and \\ must be the first char on the line, but may be followed by any amount of whitespace.\n      {\n        pattern:\n          /(^|\\r?\\n|\\r)\\/[\\t ]*(?:(?:\\r?\\n|\\r)(?:.*(?:\\r?\\n|\\r(?!\\n)))*?(?:\\\\(?=[\\t ]*(?:\\r?\\n|\\r))|$)|\\S.*)/,\n        lookbehind: true,\n        greedy: true\n      },\n      // From http://code.kx.com/wiki/Reference/Slash:\n      // A \\ on a line by itself with no preceding matching / will comment to end of file.\n      {\n        pattern: /^\\\\[\\t ]*(?:\\r?\\n|\\r)[\\s\\S]+/m,\n        greedy: true\n      },\n      {\n        pattern: /^#!.+/m,\n        greedy: true\n      }\n    ],\n    symbol: /`(?::\\S+|[\\w.]*)/,\n    datetime: {\n      pattern:\n        /0N[mdzuvt]|0W[dtz]|\\d{4}\\.\\d\\d(?:m|\\.\\d\\d(?:T(?:\\d\\d(?::\\d\\d(?::\\d\\d(?:[.:]\\d\\d\\d)?)?)?)?)?[dz]?)|\\d\\d:\\d\\d(?::\\d\\d(?:[.:]\\d\\d\\d)?)?[uvt]?/,\n      alias: 'number'\n    },\n    // The negative look-ahead prevents bad highlighting\n    // of verbs 0: and 1:\n    number:\n      /\\b(?![01]:)(?:0N[hje]?|0W[hj]?|0[wn]|0x[\\da-fA-F]+|\\d+(?:\\.\\d*)?(?:e[+-]?\\d+)?[hjfeb]?)/,\n    keyword:\n      /\\\\\\w+\\b|\\b(?:abs|acos|aj0?|all|and|any|asc|asin|asof|atan|attr|avgs?|binr?|by|ceiling|cols|cor|cos|count|cov|cross|csv|cut|delete|deltas|desc|dev|differ|distinct|div|do|dsave|ej|enlist|eval|except|exec|exit|exp|fby|fills|first|fkeys|flip|floor|from|get|getenv|group|gtime|hclose|hcount|hdel|hopen|hsym|iasc|identity|idesc|if|ij|in|insert|inter|inv|keys?|last|like|list|ljf?|load|log|lower|lsq|ltime|ltrim|mavg|maxs?|mcount|md5|mdev|med|meta|mins?|mmax|mmin|mmu|mod|msum|neg|next|not|null|or|over|parse|peach|pj|plist|prds?|prev|prior|rand|rank|ratios|raze|read0|read1|reciprocal|reval|reverse|rload|rotate|rsave|rtrim|save|scan|scov|sdev|select|set|setenv|show|signum|sin|sqrt|ssr?|string|sublist|sums?|sv|svar|system|tables|tan|til|trim|txf|type|uj|ungroup|union|update|upper|upsert|value|var|views?|vs|wavg|where|while|within|wj1?|wsum|ww|xasc|xbar|xcols?|xdesc|xexp|xgroup|xkey|xlog|xprev|xrank)\\b/,\n    adverb: {\n      pattern: /['\\/\\\\]:?|\\beach\\b/,\n      alias: 'function'\n    },\n    verb: {\n      pattern: /(?:\\B\\.\\B|\\b[01]:|<[=>]?|>=?|[:+\\-*%,!?~=|$&#@^]):?|\\b_\\b:?/,\n      alias: 'operator'\n    },\n    punctuation: /[(){}\\[\\];.]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorJavascript from './javascript.js'\nqml.displayName = 'qml'\nqml.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function qml(Prism) {\n  Prism.register(refractorJavascript)\n  ;(function (Prism) {\n    var jsString = /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"|'(?:\\\\.|[^\\\\'\\r\\n])*'/.source\n    var jsComment = /\\/\\/.*(?!.)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\//.source\n    var jsExpr =\n      /(?:[^\\\\()[\\]{}\"'/]|<string>|\\/(?![*/])|<comment>|\\(<expr>*\\)|\\[<expr>*\\]|\\{<expr>*\\}|\\\\[\\s\\S])/.source\n        .replace(/<string>/g, function () {\n          return jsString\n        })\n        .replace(/<comment>/g, function () {\n          return jsComment\n        })\n\n    // the pattern will blow up, so only a few iterations\n    for (var i = 0; i < 2; i++) {\n      jsExpr = jsExpr.replace(/<expr>/g, function () {\n        return jsExpr\n      })\n    }\n    jsExpr = jsExpr.replace(/<expr>/g, '[^\\\\s\\\\S]')\n    Prism.languages.qml = {\n      comment: {\n        pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n        greedy: true\n      },\n      'javascript-function': {\n        pattern: RegExp(\n          /((?:^|;)[ \\t]*)function\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*\\(<js>*\\)\\s*\\{<js>*\\}/.source.replace(\n            /<js>/g,\n            function () {\n              return jsExpr\n            }\n          ),\n          'm'\n        ),\n        lookbehind: true,\n        greedy: true,\n        alias: 'language-javascript',\n        inside: Prism.languages.javascript\n      },\n      'class-name': {\n        pattern: /((?:^|[:;])[ \\t]*)(?!\\d)\\w+(?=[ \\t]*\\{|[ \\t]+on\\b)/m,\n        lookbehind: true\n      },\n      property: [\n        {\n          pattern: /((?:^|[;{])[ \\t]*)(?!\\d)\\w+(?:\\.\\w+)*(?=[ \\t]*:)/m,\n          lookbehind: true\n        },\n        {\n          pattern:\n            /((?:^|[;{])[ \\t]*)property[ \\t]+(?!\\d)\\w+(?:\\.\\w+)*[ \\t]+(?!\\d)\\w+(?:\\.\\w+)*(?=[ \\t]*:)/m,\n          lookbehind: true,\n          inside: {\n            keyword: /^property/,\n            property: /\\w+(?:\\.\\w+)*/\n          }\n        }\n      ],\n      'javascript-expression': {\n        pattern: RegExp(\n          /(:[ \\t]*)(?![\\s;}[])(?:(?!$|[;}])<js>)+/.source.replace(\n            /<js>/g,\n            function () {\n              return jsExpr\n            }\n          ),\n          'm'\n        ),\n        lookbehind: true,\n        greedy: true,\n        alias: 'language-javascript',\n        inside: Prism.languages.javascript\n      },\n      string: {\n        pattern: /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/,\n        greedy: true\n      },\n      keyword: /\\b(?:as|import|on)\\b/,\n      punctuation: /[{}[\\]:;,]/\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\nqore.displayName = 'qore'\nqore.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function qore(Prism) {\n  Prism.register(refractorClike)\n  Prism.languages.qore = Prism.languages.extend('clike', {\n    comment: {\n      pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|(?:\\/\\/|#).*)/,\n      lookbehind: true\n    },\n    // Overridden to allow unescaped multi-line strings\n    string: {\n      pattern: /(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n      greedy: true\n    },\n    keyword:\n      /\\b(?:abstract|any|assert|binary|bool|boolean|break|byte|case|catch|char|class|code|const|continue|data|default|do|double|else|enum|extends|final|finally|float|for|goto|hash|if|implements|import|inherits|instanceof|int|interface|long|my|native|new|nothing|null|object|our|own|private|reference|rethrow|return|short|soft(?:bool|date|float|int|list|number|string)|static|strictfp|string|sub|super|switch|synchronized|this|throw|throws|transient|try|void|volatile|while)\\b/,\n    boolean: /\\b(?:false|true)\\b/i,\n    function: /\\$?\\b(?!\\d)\\w+(?=\\()/,\n    number:\n      /\\b(?:0b[01]+|0x(?:[\\da-f]*\\.)?[\\da-fp\\-]+|(?:\\d+(?:\\.\\d+)?|\\.\\d+)(?:e\\d+)?[df]|(?:\\d+(?:\\.\\d+)?|\\.\\d+))\\b/i,\n    operator: {\n      pattern:\n        /(^|[^.])(?:\\+[+=]?|-[-=]?|[!=](?:==?|~)?|>>?=?|<(?:=>?|<=?)?|&[&=]?|\\|[|=]?|[*\\/%^]=?|[~?])/,\n      lookbehind: true\n    },\n    variable: /\\$(?!\\d)\\w+\\b/\n  })\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorScheme from './scheme.js'\nracket.displayName = 'racket'\nracket.aliases = ['rkt']\n\n/** @param {Refractor} Prism */\nexport default function racket(Prism) {\n  Prism.register(refractorScheme)\n  Prism.languages.racket = Prism.languages.extend('scheme', {\n    'lambda-parameter': {\n      // the racket lambda syntax is a lot more complex, so we won't even attempt to capture it.\n      // this will just prevent false positives of the `function` pattern\n      pattern: /([(\\[]lambda\\s+[(\\[])[^()\\[\\]'\\s]+/,\n      lookbehind: true\n    }\n  })\n  Prism.languages.insertBefore('racket', 'string', {\n    lang: {\n      pattern: /^#lang.+/m,\n      greedy: true,\n      alias: 'keyword'\n    }\n  })\n  Prism.languages.rkt = Prism.languages.racket\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorCsharp from './csharp.js'\nimport refractorMarkup from './markup.js'\ncshtml.displayName = 'cshtml'\ncshtml.aliases = ['razor']\n\n/** @param {Refractor} Prism */\nexport default function cshtml(Prism) {\n  Prism.register(refractorCsharp)\n  Prism.register(refractorMarkup)\n  // Docs:\n  // https://docs.microsoft.com/en-us/aspnet/core/razor-pages/?view=aspnetcore-5.0&tabs=visual-studio\n  // https://docs.microsoft.com/en-us/aspnet/core/mvc/views/razor?view=aspnetcore-5.0\n\n  ;(function (Prism) {\n    var commentLike = /\\/(?![/*])|\\/\\/.*[\\r\\n]|\\/\\*[^*]*(?:\\*(?!\\/)[^*]*)*\\*\\//\n      .source\n    var stringLike =\n      /@(?!\")|\"(?:[^\\r\\n\\\\\"]|\\\\.)*\"|@\"(?:[^\\\\\"]|\"\"|\\\\[\\s\\S])*\"(?!\")/.source +\n      '|' +\n      /'(?:(?:[^\\r\\n'\\\\]|\\\\.|\\\\[Uux][\\da-fA-F]{1,8})'|(?=[^\\\\](?!')))/.source\n\n    /**\n     * Creates a nested pattern where all occurrences of the string `<<self>>` are replaced with the pattern itself.\n     *\n     * @param {string} pattern\n     * @param {number} depthLog2\n     * @returns {string}\n     */\n    function nested(pattern, depthLog2) {\n      for (var i = 0; i < depthLog2; i++) {\n        pattern = pattern.replace(/<self>/g, function () {\n          return '(?:' + pattern + ')'\n        })\n      }\n      return pattern\n        .replace(/<self>/g, '[^\\\\s\\\\S]')\n        .replace(/<str>/g, '(?:' + stringLike + ')')\n        .replace(/<comment>/g, '(?:' + commentLike + ')')\n    }\n    var round = nested(/\\((?:[^()'\"@/]|<str>|<comment>|<self>)*\\)/.source, 2)\n    var square = nested(/\\[(?:[^\\[\\]'\"@/]|<str>|<comment>|<self>)*\\]/.source, 1)\n    var curly = nested(/\\{(?:[^{}'\"@/]|<str>|<comment>|<self>)*\\}/.source, 2)\n    var angle = nested(/<(?:[^<>'\"@/]|<comment>|<self>)*>/.source, 1)\n    var inlineCs =\n      /@/.source +\n      /(?:await\\b\\s*)?/.source +\n      '(?:' +\n      /(?!await\\b)\\w+\\b/.source +\n      '|' +\n      round +\n      ')' +\n      '(?:' +\n      /[?!]?\\.\\w+\\b/.source +\n      '|' +\n      '(?:' +\n      angle +\n      ')?' +\n      round +\n      '|' +\n      square +\n      ')*' +\n      /(?![?!\\.(\\[]|<(?!\\/))/.source\n\n    // Note about the above bracket patterns:\n    // They all ignore HTML expressions that might be in the C# code. This is a problem because HTML (like strings and\n    // comments) is parsed differently. This is a huge problem because HTML might contain brackets and quotes which\n    // messes up the bracket and string counting implemented by the above patterns.\n    //\n    // This problem is not fixable because 1) HTML expression are highly context sensitive and very difficult to detect\n    // and 2) they require one capturing group at every nested level. See the `tagRegion` pattern to admire the\n    // complexity of an HTML expression.\n    //\n    // To somewhat alleviate the problem a bit, the patterns for characters (e.g. 'a') is very permissive, it also\n    // allows invalid characters to support HTML expressions like this: <p>That's it!</p>.\n\n    var tagAttrInlineCs = /@(?![\\w()])/.source + '|' + inlineCs\n    var tagAttrValue =\n      '(?:' +\n      /\"[^\"@]*\"|'[^'@]*'|[^\\s'\"@>=]+(?=[\\s>])/.source +\n      '|' +\n      '[\"\\'][^\"\\'@]*(?:(?:' +\n      tagAttrInlineCs +\n      ')[^\"\\'@]*)+[\"\\']' +\n      ')'\n    var tagAttrs =\n      /(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*<tagAttrValue>|(?=[\\s/>])))+)?/.source.replace(\n        /<tagAttrValue>/,\n        tagAttrValue\n      )\n    var tagContent = /(?!\\d)[^\\s>\\/=$<%]+/.source + tagAttrs + /\\s*\\/?>/.source\n    var tagRegion =\n      /\\B@?/.source +\n      '(?:' +\n      /<([a-zA-Z][\\w:]*)/.source +\n      tagAttrs +\n      /\\s*>/.source +\n      '(?:' +\n      (/[^<]/.source +\n        '|' +\n        // all tags that are not the start tag\n        // eslint-disable-next-line regexp/strict\n        /<\\/?(?!\\1\\b)/.source +\n        tagContent +\n        '|' +\n        // nested start tag\n        nested(\n          // eslint-disable-next-line regexp/strict\n          /<\\1/.source +\n            tagAttrs +\n            /\\s*>/.source +\n            '(?:' +\n            (/[^<]/.source +\n              '|' +\n              // all tags that are not the start tag\n              // eslint-disable-next-line regexp/strict\n              /<\\/?(?!\\1\\b)/.source +\n              tagContent +\n              '|' +\n              '<self>') +\n            ')*' +\n            // eslint-disable-next-line regexp/strict\n            /<\\/\\1\\s*>/.source,\n          2\n        )) +\n      ')*' +\n      // eslint-disable-next-line regexp/strict\n      /<\\/\\1\\s*>/.source +\n      '|' +\n      /</.source +\n      tagContent +\n      ')'\n\n    // Now for the actual language definition(s):\n    //\n    // Razor as a language has 2 parts:\n    //  1) CSHTML: A markup-like language that has been extended with inline C# code expressions and blocks.\n    //  2) C#+HTML: A variant of C# that can contain CSHTML tags as expressions.\n    //\n    // In the below code, both CSHTML and C#+HTML will be create as separate language definitions that reference each\n    // other. However, only CSHTML will be exported via `Prism.languages`.\n\n    Prism.languages.cshtml = Prism.languages.extend('markup', {})\n    var csharpWithHtml = Prism.languages.insertBefore(\n      'csharp',\n      'string',\n      {\n        html: {\n          pattern: RegExp(tagRegion),\n          greedy: true,\n          inside: Prism.languages.cshtml\n        }\n      },\n      {\n        csharp: Prism.languages.extend('csharp', {})\n      }\n    )\n    var cs = {\n      pattern: /\\S[\\s\\S]*/,\n      alias: 'language-csharp',\n      inside: csharpWithHtml\n    }\n    var inlineValue = {\n      pattern: RegExp(/(^|[^@])/.source + inlineCs),\n      lookbehind: true,\n      greedy: true,\n      alias: 'variable',\n      inside: {\n        keyword: /^@/,\n        csharp: cs\n      }\n    }\n    Prism.languages.cshtml.tag.pattern = RegExp(/<\\/?/.source + tagContent)\n    Prism.languages.cshtml.tag.inside['attr-value'].pattern = RegExp(\n      /=\\s*/.source + tagAttrValue\n    )\n    Prism.languages.insertBefore(\n      'inside',\n      'punctuation',\n      {\n        value: inlineValue\n      },\n      Prism.languages.cshtml.tag.inside['attr-value']\n    )\n    Prism.languages.insertBefore('cshtml', 'prolog', {\n      'razor-comment': {\n        pattern: /@\\*[\\s\\S]*?\\*@/,\n        greedy: true,\n        alias: 'comment'\n      },\n      block: {\n        pattern: RegExp(\n          /(^|[^@])@/.source +\n            '(?:' +\n            [\n              // @{ ... }\n              curly,\n              // @code{ ... }\n              /(?:code|functions)\\s*/.source + curly,\n              // @for (...) { ... }\n              /(?:for|foreach|lock|switch|using|while)\\s*/.source +\n                round +\n                /\\s*/.source +\n                curly,\n              // @do { ... } while (...);\n              /do\\s*/.source +\n                curly +\n                /\\s*while\\s*/.source +\n                round +\n                /(?:\\s*;)?/.source,\n              // @try { ... } catch (...) { ... } finally { ... }\n              /try\\s*/.source +\n                curly +\n                /\\s*catch\\s*/.source +\n                round +\n                /\\s*/.source +\n                curly +\n                /\\s*finally\\s*/.source +\n                curly,\n              // @if (...) {...} else if (...) {...} else {...}\n              /if\\s*/.source +\n                round +\n                /\\s*/.source +\n                curly +\n                '(?:' +\n                /\\s*else/.source +\n                '(?:' +\n                /\\s+if\\s*/.source +\n                round +\n                ')?' +\n                /\\s*/.source +\n                curly +\n                ')*',\n              // @helper Ident(params) { ... }\n              /helper\\s+\\w+\\s*/.source + round + /\\s*/.source + curly\n            ].join('|') +\n            ')'\n        ),\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          keyword: /^@\\w*/,\n          csharp: cs\n        }\n      },\n      directive: {\n        pattern:\n          /^([ \\t]*)@(?:addTagHelper|attribute|implements|inherits|inject|layout|model|namespace|page|preservewhitespace|removeTagHelper|section|tagHelperPrefix|using)(?=\\s).*/m,\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          keyword: /^@\\w+/,\n          csharp: cs\n        }\n      },\n      value: inlineValue,\n      'delegate-operator': {\n        pattern: /(^|[^@])@(?=<)/,\n        lookbehind: true,\n        alias: 'operator'\n      }\n    })\n    Prism.languages.razor = Prism.languages.cshtml\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorJavascript from './javascript.js'\nimport refractorMarkup from './markup.js'\njsx.displayName = 'jsx'\njsx.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function jsx(Prism) {\n  Prism.register(refractorJavascript)\n  Prism.register(refractorMarkup)\n  ;(function (Prism) {\n    var javascript = Prism.util.clone(Prism.languages.javascript)\n    var space = /(?:\\s|\\/\\/.*(?!.)|\\/\\*(?:[^*]|\\*(?!\\/))\\*\\/)/.source\n    var braces = /(?:\\{(?:\\{(?:\\{[^{}]*\\}|[^{}])*\\}|[^{}])*\\})/.source\n    var spread = /(?:\\{<S>*\\.{3}(?:[^{}]|<BRACES>)*\\})/.source\n\n    /**\n     * @param {string} source\n     * @param {string} [flags]\n     */\n    function re(source, flags) {\n      source = source\n        .replace(/<S>/g, function () {\n          return space\n        })\n        .replace(/<BRACES>/g, function () {\n          return braces\n        })\n        .replace(/<SPREAD>/g, function () {\n          return spread\n        })\n      return RegExp(source, flags)\n    }\n    spread = re(spread).source\n    Prism.languages.jsx = Prism.languages.extend('markup', javascript)\n    Prism.languages.jsx.tag.pattern = re(\n      /<\\/?(?:[\\w.:-]+(?:<S>+(?:[\\w.:$-]+(?:=(?:\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|'(?:\\\\[\\s\\S]|[^\\\\'])*'|[^\\s{'\"/>=]+|<BRACES>))?|<SPREAD>))*<S>*\\/?)?>/\n        .source\n    )\n    Prism.languages.jsx.tag.inside['tag'].pattern = /^<\\/?[^\\s>\\/]*/\n    Prism.languages.jsx.tag.inside['attr-value'].pattern =\n      /=(?!\\{)(?:\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"|'(?:\\\\[\\s\\S]|[^\\\\'])*'|[^\\s'\">]+)/\n    Prism.languages.jsx.tag.inside['tag'].inside['class-name'] =\n      /^[A-Z]\\w*(?:\\.[A-Z]\\w*)*$/\n    Prism.languages.jsx.tag.inside['comment'] = javascript['comment']\n    Prism.languages.insertBefore(\n      'inside',\n      'attr-name',\n      {\n        spread: {\n          pattern: re(/<SPREAD>/.source),\n          inside: Prism.languages.jsx\n        }\n      },\n      Prism.languages.jsx.tag\n    )\n    Prism.languages.insertBefore(\n      'inside',\n      'special-attr',\n      {\n        script: {\n          // Allow for two levels of nesting\n          pattern: re(/=<BRACES>/.source),\n          alias: 'language-javascript',\n          inside: {\n            'script-punctuation': {\n              pattern: /^=(?=\\{)/,\n              alias: 'punctuation'\n            },\n            rest: Prism.languages.jsx\n          }\n        }\n      },\n      Prism.languages.jsx.tag\n    )\n\n    // The following will handle plain text inside tags\n    var stringifyToken = function (token) {\n      if (!token) {\n        return ''\n      }\n      if (typeof token === 'string') {\n        return token\n      }\n      if (typeof token.content === 'string') {\n        return token.content\n      }\n      return token.content.map(stringifyToken).join('')\n    }\n    var walkTokens = function (tokens) {\n      var openedTags = []\n      for (var i = 0; i < tokens.length; i++) {\n        var token = tokens[i]\n        var notTagNorBrace = false\n        if (typeof token !== 'string') {\n          if (\n            token.type === 'tag' &&\n            token.content[0] &&\n            token.content[0].type === 'tag'\n          ) {\n            // We found a tag, now find its kind\n\n            if (token.content[0].content[0].content === '</') {\n              // Closing tag\n              if (\n                openedTags.length > 0 &&\n                openedTags[openedTags.length - 1].tagName ===\n                  stringifyToken(token.content[0].content[1])\n              ) {\n                // Pop matching opening tag\n                openedTags.pop()\n              }\n            } else {\n              if (token.content[token.content.length - 1].content === '/>') {\n                // Autoclosed tag, ignore\n              } else {\n                // Opening tag\n                openedTags.push({\n                  tagName: stringifyToken(token.content[0].content[1]),\n                  openedBraces: 0\n                })\n              }\n            }\n          } else if (\n            openedTags.length > 0 &&\n            token.type === 'punctuation' &&\n            token.content === '{'\n          ) {\n            // Here we might have entered a JSX context inside a tag\n            openedTags[openedTags.length - 1].openedBraces++\n          } else if (\n            openedTags.length > 0 &&\n            openedTags[openedTags.length - 1].openedBraces > 0 &&\n            token.type === 'punctuation' &&\n            token.content === '}'\n          ) {\n            // Here we might have left a JSX context inside a tag\n            openedTags[openedTags.length - 1].openedBraces--\n          } else {\n            notTagNorBrace = true\n          }\n        }\n        if (notTagNorBrace || typeof token === 'string') {\n          if (\n            openedTags.length > 0 &&\n            openedTags[openedTags.length - 1].openedBraces === 0\n          ) {\n            // Here we are inside a tag, and not inside a JSX context.\n            // That's plain text: drop any tokens matched.\n            var plainText = stringifyToken(token)\n\n            // And merge text with adjacent text\n            if (\n              i < tokens.length - 1 &&\n              (typeof tokens[i + 1] === 'string' ||\n                tokens[i + 1].type === 'plain-text')\n            ) {\n              plainText += stringifyToken(tokens[i + 1])\n              tokens.splice(i + 1, 1)\n            }\n            if (\n              i > 0 &&\n              (typeof tokens[i - 1] === 'string' ||\n                tokens[i - 1].type === 'plain-text')\n            ) {\n              plainText = stringifyToken(tokens[i - 1]) + plainText\n              tokens.splice(i - 1, 1)\n              i--\n            }\n            tokens[i] = new Prism.Token(\n              'plain-text',\n              plainText,\n              null,\n              plainText\n            )\n          }\n        }\n        if (token.content && typeof token.content !== 'string') {\n          walkTokens(token.content)\n        }\n      }\n    }\n    Prism.hooks.add('after-tokenize', function (env) {\n      if (env.language !== 'jsx' && env.language !== 'tsx') {\n        return\n      }\n      walkTokens(env.tokens)\n    })\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorJsx from './jsx.js'\nimport refractorTypescript from './typescript.js'\ntsx.displayName = 'tsx'\ntsx.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function tsx(Prism) {\n  Prism.register(refractorJsx)\n  Prism.register(refractorTypescript)\n  ;(function (Prism) {\n    var typescript = Prism.util.clone(Prism.languages.typescript)\n    Prism.languages.tsx = Prism.languages.extend('jsx', typescript)\n\n    // doesn't work with TS because TS is too complex\n    delete Prism.languages.tsx['parameter']\n    delete Prism.languages.tsx['literal-property']\n\n    // This will prevent collisions between TSX tags and TS generic types.\n    // Idea by https://github.com/karlhorky\n    // Discussion: https://github.com/PrismJS/prism/issues/2594#issuecomment-710666928\n    var tag = Prism.languages.tsx.tag\n    tag.pattern = RegExp(\n      /(^|[^\\w$]|(?=<\\/))/.source + '(?:' + tag.pattern.source + ')',\n      tag.pattern.flags\n    )\n    tag.lookbehind = true\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\nreason.displayName = 'reason'\nreason.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function reason(Prism) {\n  Prism.register(refractorClike)\n  Prism.languages.reason = Prism.languages.extend('clike', {\n    string: {\n      pattern: /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n\"])*\"/,\n      greedy: true\n    },\n    // 'class-name' must be matched *after* 'constructor' defined below\n    'class-name': /\\b[A-Z]\\w*/,\n    keyword:\n      /\\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\\b/,\n    operator:\n      /\\.{3}|:[:=]|\\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\\-*\\/]\\.?|\\b(?:asr|land|lor|lsl|lsr|lxor|mod)\\b/\n  })\n  Prism.languages.insertBefore('reason', 'class-name', {\n    char: {\n      pattern: /'(?:\\\\x[\\da-f]{2}|\\\\o[0-3][0-7][0-7]|\\\\\\d{3}|\\\\.|[^'\\\\\\r\\n])'/,\n      greedy: true\n    },\n    // Negative look-ahead prevents from matching things like String.capitalize\n    constructor: /\\b[A-Z]\\w*\\b(?!\\s*\\.)/,\n    label: {\n      pattern: /\\b[a-z]\\w*(?=::)/,\n      alias: 'symbol'\n    }\n  })\n\n  // We can't match functions property, so let's not even try.\n  delete Prism.languages.reason.function\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nrego.displayName = 'rego'\nrego.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function rego(Prism) {\n  // https://www.openpolicyagent.org/docs/latest/policy-reference/\n\n  Prism.languages.rego = {\n    comment: /#.*/,\n    property: {\n      pattern:\n        /(^|[^\\\\.])(?:\"(?:\\\\.|[^\\\\\"\\r\\n])*\"|`[^`]*`|\\b[a-z_]\\w*\\b)(?=\\s*:(?!=))/i,\n      lookbehind: true,\n      greedy: true\n    },\n    string: {\n      pattern: /(^|[^\\\\])\"(?:\\\\.|[^\\\\\"\\r\\n])*\"|`[^`]*`/,\n      lookbehind: true,\n      greedy: true\n    },\n    keyword:\n      /\\b(?:as|default|else|import|not|null|package|set(?=\\s*\\()|some|with)\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    function: {\n      pattern: /\\b[a-z_]\\w*\\b(?:\\s*\\.\\s*\\b[a-z_]\\w*\\b)*(?=\\s*\\()/i,\n      inside: {\n        namespace: /\\b\\w+\\b(?=\\s*\\.)/,\n        punctuation: /\\./\n      }\n    },\n    number: /-?\\b\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,\n    operator: /[-+*/%|&]|[<>:=]=?|!=|\\b_\\b/,\n    punctuation: /[,;.\\[\\]{}()]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nrenpy.displayName = 'renpy'\nrenpy.aliases = ['rpy']\n\n/** @param {Refractor} Prism */\nexport default function renpy(Prism) {\n  Prism.languages.renpy = {\n    comment: {\n      pattern: /(^|[^\\\\])#.+/,\n      lookbehind: true\n    },\n    string: {\n      pattern:\n        /(\"\"\"|''')[\\s\\S]+?\\1|(\"|')(?:\\\\.|(?!\\2)[^\\\\])*\\2|(?:^#?(?:(?:[0-9a-fA-F]){3}|[0-9a-fA-F]{6})$)/m,\n      greedy: true\n    },\n    function: /\\b[a-z_]\\w*(?=\\()/i,\n    property:\n      /\\b(?:Update|UpdateVersion|action|activate_sound|adv_nvl_transition|after_load_transition|align|alpha|alt|anchor|antialias|area|auto|background|bar_invert|bar_resizing|bar_vertical|black_color|bold|bottom_bar|bottom_gutter|bottom_margin|bottom_padding|box_reverse|box_wrap|can_update|caret|child|color|crop|default_afm_enable|default_afm_time|default_fullscreen|default_text_cps|developer|directory_name|drag_handle|drag_joined|drag_name|drag_raise|draggable|dragged|drop_shadow|drop_shadow_color|droppable|dropped|easein|easeout|edgescroll|end_game_transition|end_splash_transition|enter_replay_transition|enter_sound|enter_transition|enter_yesno_transition|executable_name|exit_replay_transition|exit_sound|exit_transition|exit_yesno_transition|fadein|fadeout|first_indent|first_spacing|fit_first|focus|focus_mask|font|foreground|game_main_transition|get_installed_packages|google_play_key|google_play_salt|ground|has_music|has_sound|has_voice|height|help|hinting|hover|hover_background|hover_color|hover_sound|hovered|hyperlink_functions|idle|idle_color|image_style|include_update|insensitive|insensitive_background|insensitive_color|inside|intra_transition|italic|justify|kerning|keyboard_focus|language|layer_clipping|layers|layout|left_bar|left_gutter|left_margin|left_padding|length|line_leading|line_overlap_split|line_spacing|linear|main_game_transition|main_menu_music|maximum|min_width|minimum|minwidth|modal|mouse|mousewheel|name|narrator_menu|newline_indent|nvl_adv_transition|offset|order_reverse|outlines|overlay_functions|pos|position|prefix|radius|range|rest_indent|right_bar|right_gutter|right_margin|right_padding|rotate|rotate_pad|ruby_style|sample_sound|save_directory|say_attribute_transition|screen_height|screen_width|scrollbars|selected_hover|selected_hover_color|selected_idle|selected_idle_color|selected_insensitive|show_side_image|show_two_window|side_spacing|side_xpos|side_ypos|size|size_group|slow_cps|slow_cps_multiplier|spacing|strikethrough|subpixel|text_align|text_style|text_xpos|text_y_fudge|text_ypos|thumb|thumb_offset|thumb_shadow|thumbnail_height|thumbnail_width|time|top_bar|top_gutter|top_margin|top_padding|translations|underline|unscrollable|update|value|version|version_name|version_tuple|vertical|width|window_hide_transition|window_icon|window_left_padding|window_show_transition|window_title|windows_icon|xadjustment|xalign|xanchor|xanchoraround|xaround|xcenter|xfill|xinitial|xmargin|xmaximum|xminimum|xoffset|xofsset|xpadding|xpos|xsize|xzoom|yadjustment|yalign|yanchor|yanchoraround|yaround|ycenter|yfill|yinitial|ymargin|ymaximum|yminimum|yoffset|ypadding|ypos|ysize|ysizexysize|yzoom|zoom|zorder)\\b/,\n    tag: /\\b(?:bar|block|button|buttoscreenn|drag|draggroup|fixed|frame|grid|[hv]box|hotbar|hotspot|image|imagebutton|imagemap|input|key|label|menu|mm_menu_frame|mousearea|nvl|parallel|screen|self|side|tag|text|textbutton|timer|vbar|viewport|window)\\b|\\$/,\n    keyword:\n      /\\b(?:None|add|adjustment|alignaround|allow|angle|animation|around|as|assert|behind|box_layout|break|build|cache|call|center|changed|child_size|choice|circles|class|clear|clicked|clipping|clockwise|config|contains|continue|corner1|corner2|counterclockwise|def|default|define|del|delay|disabled|disabled_text|dissolve|elif|else|event|except|exclude|exec|expression|fade|finally|for|from|function|global|gm_root|has|hide|id|if|import|in|init|is|jump|knot|lambda|left|less_rounded|mm_root|movie|music|null|on|onlayer|pass|pause|persistent|play|print|python|queue|raise|random|renpy|repeat|return|right|rounded_window|scene|scope|set|show|slow|slow_abortable|slow_done|sound|stop|store|style|style_group|substitute|suffix|theme|transform|transform_anchor|transpose|try|ui|unhovered|updater|use|voice|while|widget|widget_hover|widget_selected|widget_text|yield)\\b/,\n    boolean: /\\b(?:[Ff]alse|[Tt]rue)\\b/,\n    number:\n      /(?:\\b(?:0[bo])?(?:(?:\\d|0x[\\da-f])[\\da-f]*(?:\\.\\d*)?)|\\B\\.\\d+)(?:e[+-]?\\d+)?j?/i,\n    operator:\n      /[-+%=]=?|!=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]|\\b(?:and|at|not|or|with)\\b/,\n    punctuation: /[{}[\\];(),.:]/\n  }\n  Prism.languages.rpy = Prism.languages.renpy\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nrescript.displayName = 'rescript'\nrescript.aliases = ['res']\n\n/** @param {Refractor} Prism */\nexport default function rescript(Prism) {\n  Prism.languages.rescript = {\n    comment: {\n      pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n      greedy: true\n    },\n    char: {\n      pattern: /'(?:[^\\r\\n\\\\]|\\\\(?:.|\\w+))'/,\n      greedy: true\n    },\n    string: {\n      pattern: /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n\"])*\"/,\n      greedy: true\n    },\n    'class-name': /\\b[A-Z]\\w*|@[a-z.]*|#[A-Za-z]\\w*|#\\d/,\n    function: {\n      pattern: /[a-zA-Z]\\w*(?=\\()|(\\.)[a-z]\\w*/,\n      lookbehind: true\n    },\n    number:\n      /(?:\\b0x(?:[\\da-f]+(?:\\.[\\da-f]*)?|\\.[\\da-f]+)(?:p[+-]?\\d+)?|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)[ful]{0,4}/i,\n    boolean: /\\b(?:false|true)\\b/,\n    'attr-value': /[A-Za-z]\\w*(?==)/,\n    constant: {\n      pattern: /(\\btype\\s+)[a-z]\\w*/,\n      lookbehind: true\n    },\n    tag: {\n      pattern: /(<)[a-z]\\w*|(?:<\\/)[a-z]\\w*/,\n      lookbehind: true,\n      inside: {\n        operator: /<|>|\\//\n      }\n    },\n    keyword:\n      /\\b(?:and|as|assert|begin|bool|class|constraint|do|done|downto|else|end|exception|external|float|for|fun|function|if|in|include|inherit|initializer|int|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|string|switch|then|to|try|type|when|while|with)\\b/,\n    operator:\n      /\\.{3}|:[:=]?|\\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\\-*\\/]\\.?|\\b(?:asr|land|lor|lsl|lsr|lxor|mod)\\b/,\n    punctuation: /[(){}[\\],;.]/\n  }\n  Prism.languages.insertBefore('rescript', 'string', {\n    'template-string': {\n      pattern:\n        /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n      greedy: true,\n      inside: {\n        'template-punctuation': {\n          pattern: /^`|`$/,\n          alias: 'string'\n        },\n        interpolation: {\n          pattern:\n            /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n          lookbehind: true,\n          inside: {\n            'interpolation-punctuation': {\n              pattern: /^\\$\\{|\\}$/,\n              alias: 'tag'\n            },\n            rest: Prism.languages.rescript\n          }\n        },\n        string: /[\\s\\S]+/\n      }\n    }\n  })\n  Prism.languages.res = Prism.languages.rescript\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nrest.displayName = 'rest'\nrest.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function rest(Prism) {\n  Prism.languages.rest = {\n    table: [\n      {\n        pattern:\n          /(^[\\t ]*)(?:\\+[=-]+)+\\+(?:\\r?\\n|\\r)(?:\\1[+|].+[+|](?:\\r?\\n|\\r))+\\1(?:\\+[=-]+)+\\+/m,\n        lookbehind: true,\n        inside: {\n          punctuation: /\\||(?:\\+[=-]+)+\\+/\n        }\n      },\n      {\n        pattern:\n          /(^[\\t ]*)=+ [ =]*=(?:(?:\\r?\\n|\\r)\\1.+)+(?:\\r?\\n|\\r)\\1=+ [ =]*=(?=(?:\\r?\\n|\\r){2}|\\s*$)/m,\n        lookbehind: true,\n        inside: {\n          punctuation: /[=-]+/\n        }\n      }\n    ],\n    // Directive-like patterns\n\n    'substitution-def': {\n      pattern: /(^[\\t ]*\\.\\. )\\|(?:[^|\\s](?:[^|]*[^|\\s])?)\\| [^:]+::/m,\n      lookbehind: true,\n      inside: {\n        substitution: {\n          pattern: /^\\|(?:[^|\\s]|[^|\\s][^|]*[^|\\s])\\|/,\n          alias: 'attr-value',\n          inside: {\n            punctuation: /^\\||\\|$/\n          }\n        },\n        directive: {\n          pattern: /( )(?! )[^:]+::/,\n          lookbehind: true,\n          alias: 'function',\n          inside: {\n            punctuation: /::$/\n          }\n        }\n      }\n    },\n    'link-target': [\n      {\n        pattern: /(^[\\t ]*\\.\\. )\\[[^\\]]+\\]/m,\n        lookbehind: true,\n        alias: 'string',\n        inside: {\n          punctuation: /^\\[|\\]$/\n        }\n      },\n      {\n        pattern: /(^[\\t ]*\\.\\. )_(?:`[^`]+`|(?:[^:\\\\]|\\\\.)+):/m,\n        lookbehind: true,\n        alias: 'string',\n        inside: {\n          punctuation: /^_|:$/\n        }\n      }\n    ],\n    directive: {\n      pattern: /(^[\\t ]*\\.\\. )[^:]+::/m,\n      lookbehind: true,\n      alias: 'function',\n      inside: {\n        punctuation: /::$/\n      }\n    },\n    comment: {\n      // The two alternatives try to prevent highlighting of blank comments\n      pattern:\n        /(^[\\t ]*\\.\\.)(?:(?: .+)?(?:(?:\\r?\\n|\\r).+)+| .+)(?=(?:\\r?\\n|\\r){2}|$)/m,\n      lookbehind: true\n    },\n    title: [\n      // Overlined and underlined\n      {\n        pattern:\n          /^(([!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~])\\2+)(?:\\r?\\n|\\r).+(?:\\r?\\n|\\r)\\1$/m,\n        inside: {\n          punctuation:\n            /^[!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~]+|[!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~]+$/,\n          important: /.+/\n        }\n      },\n      // Underlined only\n      {\n        pattern:\n          /(^|(?:\\r?\\n|\\r){2}).+(?:\\r?\\n|\\r)([!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~])\\2+(?=\\r?\\n|\\r|$)/,\n        lookbehind: true,\n        inside: {\n          punctuation: /[!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~]+$/,\n          important: /.+/\n        }\n      }\n    ],\n    hr: {\n      pattern:\n        /((?:\\r?\\n|\\r){2})([!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~])\\2{3,}(?=(?:\\r?\\n|\\r){2})/,\n      lookbehind: true,\n      alias: 'punctuation'\n    },\n    field: {\n      pattern: /(^[\\t ]*):[^:\\r\\n]+:(?= )/m,\n      lookbehind: true,\n      alias: 'attr-name'\n    },\n    'command-line-option': {\n      pattern:\n        /(^[\\t ]*)(?:[+-][a-z\\d]|(?:--|\\/)[a-z\\d-]+)(?:[ =](?:[a-z][\\w-]*|<[^<>]+>))?(?:, (?:[+-][a-z\\d]|(?:--|\\/)[a-z\\d-]+)(?:[ =](?:[a-z][\\w-]*|<[^<>]+>))?)*(?=(?:\\r?\\n|\\r)? {2,}\\S)/im,\n      lookbehind: true,\n      alias: 'symbol'\n    },\n    'literal-block': {\n      pattern: /::(?:\\r?\\n|\\r){2}([ \\t]+)(?![ \\t]).+(?:(?:\\r?\\n|\\r)\\1.+)*/,\n      inside: {\n        'literal-block-punctuation': {\n          pattern: /^::/,\n          alias: 'punctuation'\n        }\n      }\n    },\n    'quoted-literal-block': {\n      pattern:\n        /::(?:\\r?\\n|\\r){2}([!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~]).*(?:(?:\\r?\\n|\\r)\\1.*)*/,\n      inside: {\n        'literal-block-punctuation': {\n          pattern: /^(?:::|([!\"#$%&'()*+,\\-.\\/:;<=>?@\\[\\\\\\]^_`{|}~])\\1*)/m,\n          alias: 'punctuation'\n        }\n      }\n    },\n    'list-bullet': {\n      pattern:\n        /(^[\\t ]*)(?:[*+\\-\u2022\u2023\u2043]|\\(?(?:\\d+|[a-z]|[ivxdclm]+)\\)|(?:\\d+|[a-z]|[ivxdclm]+)\\.)(?= )/im,\n      lookbehind: true,\n      alias: 'punctuation'\n    },\n    'doctest-block': {\n      pattern: /(^[\\t ]*)>>> .+(?:(?:\\r?\\n|\\r).+)*/m,\n      lookbehind: true,\n      inside: {\n        punctuation: /^>>>/\n      }\n    },\n    inline: [\n      {\n        pattern:\n          /(^|[\\s\\-:\\/'\"<(\\[{])(?::[^:]+:`.*?`|`.*?`:[^:]+:|(\\*\\*?|``?|\\|)(?!\\s)(?:(?!\\2).)*\\S\\2(?=[\\s\\-.,:;!?\\\\\\/'\")\\]}]|$))/m,\n        lookbehind: true,\n        inside: {\n          bold: {\n            pattern: /(^\\*\\*).+(?=\\*\\*$)/,\n            lookbehind: true\n          },\n          italic: {\n            pattern: /(^\\*).+(?=\\*$)/,\n            lookbehind: true\n          },\n          'inline-literal': {\n            pattern: /(^``).+(?=``$)/,\n            lookbehind: true,\n            alias: 'symbol'\n          },\n          role: {\n            pattern: /^:[^:]+:|:[^:]+:$/,\n            alias: 'function',\n            inside: {\n              punctuation: /^:|:$/\n            }\n          },\n          'interpreted-text': {\n            pattern: /(^`).+(?=`$)/,\n            lookbehind: true,\n            alias: 'attr-value'\n          },\n          substitution: {\n            pattern: /(^\\|).+(?=\\|$)/,\n            lookbehind: true,\n            alias: 'attr-value'\n          },\n          punctuation: /\\*\\*?|``?|\\|/\n        }\n      }\n    ],\n    link: [\n      {\n        pattern: /\\[[^\\[\\]]+\\]_(?=[\\s\\-.,:;!?\\\\\\/'\")\\]}]|$)/,\n        alias: 'string',\n        inside: {\n          punctuation: /^\\[|\\]_$/\n        }\n      },\n      {\n        pattern:\n          /(?:\\b[a-z\\d]+(?:[_.:+][a-z\\d]+)*_?_|`[^`]+`_?_|_`[^`]+`)(?=[\\s\\-.,:;!?\\\\\\/'\")\\]}]|$)/i,\n        alias: 'string',\n        inside: {\n          punctuation: /^_?`|`$|`?_?_$/\n        }\n      }\n    ],\n    // Line block start,\n    // quote attribution,\n    // explicit markup start,\n    // and anonymous hyperlink target shortcut (__)\n    punctuation: {\n      pattern: /(^[\\t ]*)(?:\\|(?= |$)|(?:---?|\u2014|\\.\\.|__)(?= )|\\.\\.$)/m,\n      lookbehind: true\n    }\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nrip.displayName = 'rip'\nrip.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function rip(Prism) {\n  Prism.languages.rip = {\n    comment: {\n      pattern: /#.*/,\n      greedy: true\n    },\n    char: {\n      pattern: /\\B`[^\\s`'\",.:;#\\/\\\\()<>\\[\\]{}]\\b/,\n      greedy: true\n    },\n    string: {\n      pattern: /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      greedy: true\n    },\n    regex: {\n      pattern:\n        /(^|[^/])\\/(?!\\/)(?:\\[[^\\n\\r\\]]*\\]|\\\\.|[^/\\\\\\r\\n\\[])+\\/(?=\\s*(?:$|[\\r\\n,.;})]))/,\n      lookbehind: true,\n      greedy: true\n    },\n    keyword:\n      /(?:=>|->)|\\b(?:case|catch|class|else|exit|finally|if|raise|return|switch|try)\\b/,\n    builtin: /@|\\bSystem\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    date: /\\b\\d{4}-\\d{2}-\\d{2}\\b/,\n    time: /\\b\\d{2}:\\d{2}:\\d{2}\\b/,\n    datetime: /\\b\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\b/,\n    symbol: /:[^\\d\\s`'\",.:;#\\/\\\\()<>\\[\\]{}][^\\s`'\",.:;#\\/\\\\()<>\\[\\]{}]*/,\n    number: /[+-]?\\b(?:\\d+\\.\\d+|\\d+)\\b/,\n    punctuation: /(?:\\.{2,3})|[`,.:;=\\/\\\\()<>\\[\\]{}]/,\n    reference: /[^\\d\\s`'\",.:;#\\/\\\\()<>\\[\\]{}][^\\s`'\",.:;#\\/\\\\()<>\\[\\]{}]*/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nroboconf.displayName = 'roboconf'\nroboconf.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function roboconf(Prism) {\n  Prism.languages.roboconf = {\n    comment: /#.*/,\n    keyword: {\n      pattern:\n        /(^|\\s)(?:(?:external|import)\\b|(?:facet|instance of)(?=[ \\t]+[\\w-]+[ \\t]*\\{))/,\n      lookbehind: true\n    },\n    component: {\n      pattern: /[\\w-]+(?=[ \\t]*\\{)/,\n      alias: 'variable'\n    },\n    property: /[\\w.-]+(?=[ \\t]*:)/,\n    value: {\n      pattern: /(=[ \\t]*(?![ \\t]))[^,;]+/,\n      lookbehind: true,\n      alias: 'attr-value'\n    },\n    optional: {\n      pattern: /\\(optional\\)/,\n      alias: 'builtin'\n    },\n    wildcard: {\n      pattern: /(\\.)\\*/,\n      lookbehind: true,\n      alias: 'operator'\n    },\n    punctuation: /[{},.;:=]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nrobotframework.displayName = 'robotframework'\nrobotframework.aliases = ['robot']\n\n/** @param {Refractor} Prism */\nexport default function robotframework(Prism) {\n  ;(function (Prism) {\n    var comment = {\n      pattern: /(^[ \\t]*| {2}|\\t)#.*/m,\n      lookbehind: true,\n      greedy: true\n    }\n    var variable = {\n      pattern: /((?:^|[^\\\\])(?:\\\\{2})*)[$@&%]\\{(?:[^{}\\r\\n]|\\{[^{}\\r\\n]*\\})*\\}/,\n      lookbehind: true,\n      inside: {\n        punctuation: /^[$@&%]\\{|\\}$/\n      }\n    }\n    function createSection(name, inside) {\n      var extendecInside = {}\n      extendecInside['section-header'] = {\n        pattern: /^ ?\\*{3}.+?\\*{3}/,\n        alias: 'keyword'\n      }\n\n      // copy inside tokens\n      for (var token in inside) {\n        extendecInside[token] = inside[token]\n      }\n      extendecInside['tag'] = {\n        pattern: /([\\r\\n](?: {2}|\\t)[ \\t]*)\\[[-\\w]+\\]/,\n        lookbehind: true,\n        inside: {\n          punctuation: /\\[|\\]/\n        }\n      }\n      extendecInside['variable'] = variable\n      extendecInside['comment'] = comment\n      return {\n        pattern: RegExp(\n          /^ ?\\*{3}[ \\t]*<name>[ \\t]*\\*{3}(?:.|[\\r\\n](?!\\*{3}))*/.source.replace(\n            /<name>/g,\n            function () {\n              return name\n            }\n          ),\n          'im'\n        ),\n        alias: 'section',\n        inside: extendecInside\n      }\n    }\n    var docTag = {\n      pattern:\n        /(\\[Documentation\\](?: {2}|\\t)[ \\t]*)(?![ \\t]|#)(?:.|(?:\\r\\n?|\\n)[ \\t]*\\.{3})+/,\n      lookbehind: true,\n      alias: 'string'\n    }\n    var testNameLike = {\n      pattern: /([\\r\\n] ?)(?!#)(?:\\S(?:[ \\t]\\S)*)+/,\n      lookbehind: true,\n      alias: 'function',\n      inside: {\n        variable: variable\n      }\n    }\n    var testPropertyLike = {\n      pattern: /([\\r\\n](?: {2}|\\t)[ \\t]*)(?!\\[|\\.{3}|#)(?:\\S(?:[ \\t]\\S)*)+/,\n      lookbehind: true,\n      inside: {\n        variable: variable\n      }\n    }\n    Prism.languages['robotframework'] = {\n      settings: createSection('Settings', {\n        documentation: {\n          pattern:\n            /([\\r\\n] ?Documentation(?: {2}|\\t)[ \\t]*)(?![ \\t]|#)(?:.|(?:\\r\\n?|\\n)[ \\t]*\\.{3})+/,\n          lookbehind: true,\n          alias: 'string'\n        },\n        property: {\n          pattern: /([\\r\\n] ?)(?!\\.{3}|#)(?:\\S(?:[ \\t]\\S)*)+/,\n          lookbehind: true\n        }\n      }),\n      variables: createSection('Variables'),\n      'test-cases': createSection('Test Cases', {\n        'test-name': testNameLike,\n        documentation: docTag,\n        property: testPropertyLike\n      }),\n      keywords: createSection('Keywords', {\n        'keyword-name': testNameLike,\n        documentation: docTag,\n        property: testPropertyLike\n      }),\n      tasks: createSection('Tasks', {\n        'task-name': testNameLike,\n        documentation: docTag,\n        property: testPropertyLike\n      }),\n      comment: comment\n    }\n    Prism.languages.robot = Prism.languages['robotframework']\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nsas.displayName = 'sas'\nsas.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function sas(Prism) {\n  ;(function (Prism) {\n    var stringPattern = /(?:\"(?:\"\"|[^\"])*\"(?!\")|'(?:''|[^'])*'(?!'))/.source\n    var number = /\\b(?:\\d[\\da-f]*x|\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?)\\b/i\n    var numericConstant = {\n      pattern: RegExp(stringPattern + '[bx]'),\n      alias: 'number'\n    }\n    var macroVariable = {\n      pattern: /&[a-z_]\\w*/i\n    }\n    var macroKeyword = {\n      pattern:\n        /((?:^|\\s|=|\\())%(?:ABORT|BY|CMS|COPY|DISPLAY|DO|ELSE|END|EVAL|GLOBAL|GO|GOTO|IF|INC|INCLUDE|INDEX|INPUT|KTRIM|LENGTH|LET|LIST|LOCAL|PUT|QKTRIM|QSCAN|QSUBSTR|QSYSFUNC|QUPCASE|RETURN|RUN|SCAN|SUBSTR|SUPERQ|SYMDEL|SYMEXIST|SYMGLOBL|SYMLOCAL|SYSCALL|SYSEVALF|SYSEXEC|SYSFUNC|SYSGET|SYSRPUT|THEN|TO|TSO|UNQUOTE|UNTIL|UPCASE|WHILE|WINDOW)\\b/i,\n      lookbehind: true,\n      alias: 'keyword'\n    }\n    var step = {\n      pattern: /(^|\\s)(?:proc\\s+\\w+|data(?!=)|quit|run)\\b/i,\n      alias: 'keyword',\n      lookbehind: true\n    }\n    var comment = [\n      /\\/\\*[\\s\\S]*?\\*\\//,\n      {\n        pattern: /(^[ \\t]*|;\\s*)\\*[^;]*;/m,\n        lookbehind: true\n      }\n    ]\n    var string = {\n      pattern: RegExp(stringPattern),\n      greedy: true\n    }\n    var punctuation = /[$%@.(){}\\[\\];,\\\\]/\n    var func = {\n      pattern: /%?\\b\\w+(?=\\()/,\n      alias: 'keyword'\n    }\n    var args = {\n      function: func,\n      'arg-value': {\n        pattern: /(=\\s*)[A-Z\\.]+/i,\n        lookbehind: true\n      },\n      operator: /=/,\n      'macro-variable': macroVariable,\n      arg: {\n        pattern: /[A-Z]+/i,\n        alias: 'keyword'\n      },\n      number: number,\n      'numeric-constant': numericConstant,\n      punctuation: punctuation,\n      string: string\n    }\n    var format = {\n      pattern: /\\b(?:format|put)\\b=?[\\w'$.]+/i,\n      inside: {\n        keyword: /^(?:format|put)(?==)/i,\n        equals: /=/,\n        format: {\n          pattern: /(?:\\w|\\$\\d)+\\.\\d?/,\n          alias: 'number'\n        }\n      }\n    }\n    var altformat = {\n      pattern: /\\b(?:format|put)\\s+[\\w']+(?:\\s+[$.\\w]+)+(?=;)/i,\n      inside: {\n        keyword: /^(?:format|put)/i,\n        format: {\n          pattern: /[\\w$]+\\.\\d?/,\n          alias: 'number'\n        }\n      }\n    }\n    var globalStatements = {\n      pattern:\n        /((?:^|\\s)=?)(?:catname|checkpoint execute_always|dm|endsas|filename|footnote|%include|libname|%list|lock|missing|options|page|resetline|%run|sasfile|skip|sysecho|title\\d?)\\b/i,\n      lookbehind: true,\n      alias: 'keyword'\n    }\n    var submitStatement = {\n      pattern: /(^|\\s)(?:submit(?:\\s+(?:load|norun|parseonly))?|endsubmit)\\b/i,\n      lookbehind: true,\n      alias: 'keyword'\n    }\n    var actionSets =\n      /aStore|accessControl|aggregation|audio|autotune|bayesianNetClassifier|bioMedImage|boolRule|builtins|cardinality|cdm|clustering|conditionalRandomFields|configuration|copula|countreg|dataDiscovery|dataPreprocess|dataSciencePilot|dataStep|decisionTree|deduplication|deepLearn|deepNeural|deepRnn|ds2|ecm|entityRes|espCluster|explainModel|factmac|fastKnn|fcmpact|fedSql|freqTab|gVarCluster|gam|gleam|graphSemiSupLearn|hiddenMarkovModel|hyperGroup|ica|image|iml|kernalPca|langModel|ldaTopic|loadStreams|mbc|mixed|mlTools|modelPublishing|network|neuralNet|nmf|nonParametricBayes|nonlinear|optNetwork|optimization|panel|pca|percentile|phreg|pls|qkb|qlim|quantreg|recommend|regression|reinforcementLearn|robustPca|ruleMining|sampling|sandwich|sccasl|search(?:Analytics)?|sentimentAnalysis|sequence|session(?:Prop)?|severity|simSystem|simple|smartData|sparkEmbeddedProcess|sparseML|spatialreg|spc|stabilityMonitoring|svDataDescription|svm|table|text(?:Filters|Frequency|Mining|Parse|Rule(?:Develop|Score)|Topic|Util)|timeData|transpose|tsInfo|tsReconcile|uniTimeSeries|varReduce/\n        .source\n    var casActions = {\n      pattern: RegExp(\n        /(^|\\s)(?:action\\s+)?(?:<act>)\\.[a-z]+\\b[^;]+/.source.replace(\n          /<act>/g,\n          function () {\n            return actionSets\n          }\n        ),\n        'i'\n      ),\n      lookbehind: true,\n      inside: {\n        keyword: RegExp(\n          /(?:<act>)\\.[a-z]+\\b/.source.replace(/<act>/g, function () {\n            return actionSets\n          }),\n          'i'\n        ),\n        action: {\n          pattern: /(?:action)/i,\n          alias: 'keyword'\n        },\n        comment: comment,\n        function: func,\n        'arg-value': args['arg-value'],\n        operator: args.operator,\n        argument: args.arg,\n        number: number,\n        'numeric-constant': numericConstant,\n        punctuation: punctuation,\n        string: string\n      }\n    }\n    var keywords = {\n      pattern:\n        /((?:^|\\s)=?)(?:after|analysis|and|array|barchart|barwidth|begingraph|by|call|cas|cbarline|cfill|class(?:lev)?|close|column|computed?|contains|continue|data(?==)|define|delete|describe|document|do\\s+over|do|dol|drop|dul|else|end(?:comp|source)?|entryTitle|eval(?:uate)?|exec(?:ute)?|exit|file(?:name)?|fill(?:attrs)?|flist|fnc|function(?:list)?|global|goto|group(?:by)?|headline|headskip|histogram|if|infile|keep|keylabel|keyword|label|layout|leave|legendlabel|length|libname|loadactionset|merge|midpoints|_?null_|name|noobs|nowd|ods|options|or|otherwise|out(?:put)?|over(?:lay)?|plot|print|put|raise|ranexp|rannor|rbreak|retain|return|select|session|sessref|set|source|statgraph|sum|summarize|table|temp|terminate|then\\s+do|then|title\\d?|to|var|when|where|xaxisopts|y2axisopts|yaxisopts)\\b/i,\n      lookbehind: true\n    }\n    Prism.languages.sas = {\n      datalines: {\n        pattern: /^([ \\t]*)(?:cards|(?:data)?lines);[\\s\\S]+?^[ \\t]*;/im,\n        lookbehind: true,\n        alias: 'string',\n        inside: {\n          keyword: {\n            pattern: /^(?:cards|(?:data)?lines)/i\n          },\n          punctuation: /;/\n        }\n      },\n      'proc-sql': {\n        pattern:\n          /(^proc\\s+(?:fed)?sql(?:\\s+[\\w|=]+)?;)[\\s\\S]+?(?=^(?:proc\\s+\\w+|data|quit|run);|(?![\\s\\S]))/im,\n        lookbehind: true,\n        inside: {\n          sql: {\n            pattern: RegExp(\n              /^[ \\t]*(?:select|alter\\s+table|(?:create|describe|drop)\\s+(?:index|table(?:\\s+constraints)?|view)|create\\s+unique\\s+index|insert\\s+into|update)(?:<str>|[^;\"'])+;/.source.replace(\n                /<str>/g,\n                function () {\n                  return stringPattern\n                }\n              ),\n              'im'\n            ),\n            alias: 'language-sql',\n            inside: Prism.languages.sql\n          },\n          'global-statements': globalStatements,\n          'sql-statements': {\n            pattern:\n              /(^|\\s)(?:disconnect\\s+from|begin|commit|exec(?:ute)?|reset|rollback|validate)\\b/i,\n            lookbehind: true,\n            alias: 'keyword'\n          },\n          number: number,\n          'numeric-constant': numericConstant,\n          punctuation: punctuation,\n          string: string\n        }\n      },\n      'proc-groovy': {\n        pattern:\n          /(^proc\\s+groovy(?:\\s+[\\w|=]+)?;)[\\s\\S]+?(?=^(?:proc\\s+\\w+|data|quit|run);|(?![\\s\\S]))/im,\n        lookbehind: true,\n        inside: {\n          comment: comment,\n          groovy: {\n            pattern: RegExp(\n              /(^[ \\t]*submit(?:\\s+(?:load|norun|parseonly))?)(?:<str>|[^\"'])+?(?=endsubmit;)/.source.replace(\n                /<str>/g,\n                function () {\n                  return stringPattern\n                }\n              ),\n              'im'\n            ),\n            lookbehind: true,\n            alias: 'language-groovy',\n            inside: Prism.languages.groovy\n          },\n          keyword: keywords,\n          'submit-statement': submitStatement,\n          'global-statements': globalStatements,\n          number: number,\n          'numeric-constant': numericConstant,\n          punctuation: punctuation,\n          string: string\n        }\n      },\n      'proc-lua': {\n        pattern:\n          /(^proc\\s+lua(?:\\s+[\\w|=]+)?;)[\\s\\S]+?(?=^(?:proc\\s+\\w+|data|quit|run);|(?![\\s\\S]))/im,\n        lookbehind: true,\n        inside: {\n          comment: comment,\n          lua: {\n            pattern: RegExp(\n              /(^[ \\t]*submit(?:\\s+(?:load|norun|parseonly))?)(?:<str>|[^\"'])+?(?=endsubmit;)/.source.replace(\n                /<str>/g,\n                function () {\n                  return stringPattern\n                }\n              ),\n              'im'\n            ),\n            lookbehind: true,\n            alias: 'language-lua',\n            inside: Prism.languages.lua\n          },\n          keyword: keywords,\n          'submit-statement': submitStatement,\n          'global-statements': globalStatements,\n          number: number,\n          'numeric-constant': numericConstant,\n          punctuation: punctuation,\n          string: string\n        }\n      },\n      'proc-cas': {\n        pattern:\n          /(^proc\\s+cas(?:\\s+[\\w|=]+)?;)[\\s\\S]+?(?=^(?:proc\\s+\\w+|quit|data);|(?![\\s\\S]))/im,\n        lookbehind: true,\n        inside: {\n          comment: comment,\n          'statement-var': {\n            pattern: /((?:^|\\s)=?)saveresult\\s[^;]+/im,\n            lookbehind: true,\n            inside: {\n              statement: {\n                pattern: /^saveresult\\s+\\S+/i,\n                inside: {\n                  keyword: /^(?:saveresult)/i\n                }\n              },\n              rest: args\n            }\n          },\n          'cas-actions': casActions,\n          statement: {\n            pattern:\n              /((?:^|\\s)=?)(?:default|(?:un)?set|on|output|upload)[^;]+/im,\n            lookbehind: true,\n            inside: args\n          },\n          step: step,\n          keyword: keywords,\n          function: func,\n          format: format,\n          altformat: altformat,\n          'global-statements': globalStatements,\n          number: number,\n          'numeric-constant': numericConstant,\n          punctuation: punctuation,\n          string: string\n        }\n      },\n      'proc-args': {\n        pattern: RegExp(\n          /(^proc\\s+\\w+\\s+)(?!\\s)(?:[^;\"']|<str>)+;/.source.replace(\n            /<str>/g,\n            function () {\n              return stringPattern\n            }\n          ),\n          'im'\n        ),\n        lookbehind: true,\n        inside: args\n      },\n      /*Special keywords within macros*/\n      'macro-keyword': macroKeyword,\n      'macro-variable': macroVariable,\n      'macro-string-functions': {\n        pattern:\n          /((?:^|\\s|=))%(?:BQUOTE|NRBQUOTE|NRQUOTE|NRSTR|QUOTE|STR)\\(.*?(?:[^%]\\))/i,\n        lookbehind: true,\n        inside: {\n          function: {\n            pattern: /%(?:BQUOTE|NRBQUOTE|NRQUOTE|NRSTR|QUOTE|STR)/i,\n            alias: 'keyword'\n          },\n          'macro-keyword': macroKeyword,\n          'macro-variable': macroVariable,\n          'escaped-char': {\n            pattern: /%['\"()<>=\u00AC^~;,#]/\n          },\n          punctuation: punctuation\n        }\n      },\n      'macro-declaration': {\n        pattern: /^%macro[^;]+(?=;)/im,\n        inside: {\n          keyword: /%macro/i\n        }\n      },\n      'macro-end': {\n        pattern: /^%mend[^;]+(?=;)/im,\n        inside: {\n          keyword: /%mend/i\n        }\n      },\n      /*%_zscore(headcir, _lhc, _mhc, _shc, headcz, headcpct, _Fheadcz); */\n      macro: {\n        pattern: /%_\\w+(?=\\()/,\n        alias: 'keyword'\n      },\n      input: {\n        pattern: /\\binput\\s[-\\w\\s/*.$&]+;/i,\n        inside: {\n          input: {\n            alias: 'keyword',\n            pattern: /^input/i\n          },\n          comment: comment,\n          number: number,\n          'numeric-constant': numericConstant\n        }\n      },\n      'options-args': {\n        pattern: /(^options)[-'\"|/\\\\<>*+=:()\\w\\s]*(?=;)/im,\n        lookbehind: true,\n        inside: args\n      },\n      'cas-actions': casActions,\n      comment: comment,\n      function: func,\n      format: format,\n      altformat: altformat,\n      'numeric-constant': numericConstant,\n      datetime: {\n        // '1jan2013'd, '9:25:19pm't, '18jan2003:9:27:05am'dt\n        pattern: RegExp(stringPattern + '(?:dt?|t)'),\n        alias: 'number'\n      },\n      string: string,\n      step: step,\n      keyword: keywords,\n      // In SAS Studio syntax highlighting, these operators are styled like keywords\n      'operator-keyword': {\n        pattern: /\\b(?:eq|ge|gt|in|le|lt|ne|not)\\b/i,\n        alias: 'operator'\n      },\n      // Decimal (1.2e23), hexadecimal (0c1x)\n      number: number,\n      operator: /\\*\\*?|\\|\\|?|!!?|\u00A6\u00A6?|<[>=]?|>[<=]?|[-+\\/=&]|[~\u00AC^]=?/,\n      punctuation: punctuation\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorBash from './bash.js'\nshellSession.displayName = 'shell-session'\nshellSession.aliases = ['sh-session', 'shellsession']\n\n/** @param {Refractor} Prism */\nexport default function shellSession(Prism) {\n  Prism.register(refractorBash)\n  ;(function (Prism) {\n    // CAREFUL!\n    // The following patterns are concatenated, so the group referenced by a back reference is non-obvious!\n\n    var strings = [\n      // normal string\n      /\"(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|\\$(?!\\()|`[^`]+`|[^\"\\\\`$])*\"/.source,\n      /'[^']*'/.source,\n      /\\$'(?:[^'\\\\]|\\\\[\\s\\S])*'/.source,\n      // here doc\n      // 2 capturing groups\n      /<<-?\\s*([\"']?)(\\w+)\\1\\s[\\s\\S]*?[\\r\\n]\\2/.source\n    ].join('|')\n    Prism.languages['shell-session'] = {\n      command: {\n        pattern: RegExp(\n          // user info\n          /^/.source +\n            '(?:' +\n            // <user> \":\" ( <path> )?\n            (/[^\\s@:$#%*!/\\\\]+@[^\\r\\n@:$#%*!/\\\\]+(?::[^\\0-\\x1F$#%*?\"<>:;|]+)?/\n              .source +\n              '|' +\n              // <path>\n              // Since the path pattern is quite general, we will require it to start with a special character to\n              // prevent false positives.\n              /[/~.][^\\0-\\x1F$#%*?\"<>@:;|]*/.source) +\n            ')?' +\n            // shell symbol\n            /[$#%](?=\\s)/.source +\n            // bash command\n            /(?:[^\\\\\\r\\n \\t'\"<$]|[ \\t](?:(?!#)|#.*$)|\\\\(?:[^\\r]|\\r\\n?)|\\$(?!')|<(?!<)|<<str>>)+/.source.replace(\n              /<<str>>/g,\n              function () {\n                return strings\n              }\n            ),\n          'm'\n        ),\n        greedy: true,\n        inside: {\n          info: {\n            // foo@bar:~/files$ exit\n            // foo@bar$ exit\n            // ~/files$ exit\n            pattern: /^[^#$%]+/,\n            alias: 'punctuation',\n            inside: {\n              user: /^[^\\s@:$#%*!/\\\\]+@[^\\r\\n@:$#%*!/\\\\]+/,\n              punctuation: /:/,\n              path: /[\\s\\S]+/\n            }\n          },\n          bash: {\n            pattern: /(^[$#%]\\s*)\\S[\\s\\S]*/,\n            lookbehind: true,\n            alias: 'language-bash',\n            inside: Prism.languages.bash\n          },\n          'shell-symbol': {\n            pattern: /^[$#%]/,\n            alias: 'important'\n          }\n        }\n      },\n      output: /.(?:.*(?:[\\r\\n]|.$))*/\n    }\n    Prism.languages['sh-session'] = Prism.languages['shellsession'] =\n      Prism.languages['shell-session']\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nsmali.displayName = 'smali'\nsmali.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function smali(Prism) {\n  // Test files for the parser itself:\n  // https://github.com/JesusFreke/smali/tree/master/smali/src/test/resources/LexerTest\n\n  Prism.languages.smali = {\n    comment: /#.*/,\n    string: {\n      pattern: /\"(?:[^\\r\\n\\\\\"]|\\\\.)*\"|'(?:[^\\r\\n\\\\']|\\\\(?:.|u[\\da-fA-F]{4}))'/,\n      greedy: true\n    },\n    'class-name': {\n      pattern:\n        /(^|[^L])L(?:(?:\\w+|`[^`\\r\\n]*`)\\/)*(?:[\\w$]+|`[^`\\r\\n]*`)(?=\\s*;)/,\n      lookbehind: true,\n      inside: {\n        'class-name': {\n          pattern: /(^L|\\/)(?:[\\w$]+|`[^`\\r\\n]*`)$/,\n          lookbehind: true\n        },\n        namespace: {\n          pattern: /^(L)(?:(?:\\w+|`[^`\\r\\n]*`)\\/)+/,\n          lookbehind: true,\n          inside: {\n            punctuation: /\\//\n          }\n        },\n        builtin: /^L/\n      }\n    },\n    builtin: [\n      {\n        // Reference: https://github.com/JesusFreke/smali/wiki/TypesMethodsAndFields#types\n        pattern: /([();\\[])[BCDFIJSVZ]+/,\n        lookbehind: true\n      },\n      {\n        // e.g. .field mWifiOnUid:I\n        pattern: /([\\w$>]:)[BCDFIJSVZ]/,\n        lookbehind: true\n      }\n    ],\n    keyword: [\n      {\n        pattern: /(\\.end\\s+)[\\w-]+/,\n        lookbehind: true\n      },\n      {\n        pattern: /(^|[^\\w.-])\\.(?!\\d)[\\w-]+/,\n        lookbehind: true\n      },\n      {\n        pattern:\n          /(^|[^\\w.-])(?:abstract|annotation|bridge|constructor|enum|final|interface|private|protected|public|runtime|static|synthetic|system|transient)(?![\\w.-])/,\n        lookbehind: true\n      }\n    ],\n    function: {\n      pattern: /(^|[^\\w.-])(?:\\w+|<[\\w$-]+>)(?=\\()/,\n      lookbehind: true\n    },\n    field: {\n      pattern: /[\\w$]+(?=:)/,\n      alias: 'variable'\n    },\n    register: {\n      pattern: /(^|[^\\w.-])[vp]\\d(?![\\w.-])/,\n      lookbehind: true,\n      alias: 'variable'\n    },\n    boolean: {\n      pattern: /(^|[^\\w.-])(?:false|true)(?![\\w.-])/,\n      lookbehind: true\n    },\n    number: {\n      pattern:\n        /(^|[^/\\w.-])-?(?:NAN|INFINITY|0x(?:[\\dA-F]+(?:\\.[\\dA-F]*)?|\\.[\\dA-F]+)(?:p[+-]?[\\dA-F]+)?|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?)[dflst]?(?![\\w.-])/i,\n      lookbehind: true\n    },\n    label: {\n      pattern: /(:)\\w+/,\n      lookbehind: true,\n      alias: 'property'\n    },\n    operator: /->|\\.\\.|[\\[=]/,\n    punctuation: /[{}(),;:]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nsmalltalk.displayName = 'smalltalk'\nsmalltalk.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function smalltalk(Prism) {\n  Prism.languages.smalltalk = {\n    comment: {\n      pattern: /\"(?:\"\"|[^\"])*\"/,\n      greedy: true\n    },\n    char: {\n      pattern: /\\$./,\n      greedy: true\n    },\n    string: {\n      pattern: /'(?:''|[^'])*'/,\n      greedy: true\n    },\n    symbol: /#[\\da-z]+|#(?:-|([+\\/\\\\*~<>=@%|&?!])\\1?)|#(?=\\()/i,\n    'block-arguments': {\n      pattern: /(\\[\\s*):[^\\[|]*\\|/,\n      lookbehind: true,\n      inside: {\n        variable: /:[\\da-z]+/i,\n        punctuation: /\\|/\n      }\n    },\n    'temporary-variables': {\n      pattern: /\\|[^|]+\\|/,\n      inside: {\n        variable: /[\\da-z]+/i,\n        punctuation: /\\|/\n      }\n    },\n    keyword: /\\b(?:new|nil|self|super)\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    number: [\n      /\\d+r-?[\\dA-Z]+(?:\\.[\\dA-Z]+)?(?:e-?\\d+)?/,\n      /\\b\\d+(?:\\.\\d+)?(?:e-?\\d+)?/\n    ],\n    operator: /[<=]=?|:=|~[~=]|\\/\\/?|\\\\\\\\|>[>=]?|[!^+\\-*&|,@]/,\n    punctuation: /[.;:?\\[\\](){}]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorMarkupTemplating from './markup-templating.js'\nsmarty.displayName = 'smarty'\nsmarty.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function smarty(Prism) {\n  Prism.register(refractorMarkupTemplating)\n  ;(function (Prism) {\n    Prism.languages.smarty = {\n      comment: {\n        pattern: /^\\{\\*[\\s\\S]*?\\*\\}/,\n        greedy: true\n      },\n      'embedded-php': {\n        pattern: /^\\{php\\}[\\s\\S]*?\\{\\/php\\}/,\n        greedy: true,\n        inside: {\n          smarty: {\n            pattern: /^\\{php\\}|\\{\\/php\\}$/,\n            inside: null // see below\n          },\n          php: {\n            pattern: /[\\s\\S]+/,\n            alias: 'language-php',\n            inside: Prism.languages.php\n          }\n        }\n      },\n      string: [\n        {\n          pattern: /\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,\n          greedy: true,\n          inside: {\n            interpolation: {\n              pattern: /\\{[^{}]*\\}|`[^`]*`/,\n              inside: {\n                'interpolation-punctuation': {\n                  pattern: /^[{`]|[`}]$/,\n                  alias: 'punctuation'\n                },\n                expression: {\n                  pattern: /[\\s\\S]+/,\n                  inside: null // see below\n                }\n              }\n            },\n            variable: /\\$\\w+/\n          }\n        },\n        {\n          pattern: /'(?:\\\\.|[^'\\\\\\r\\n])*'/,\n          greedy: true\n        }\n      ],\n      keyword: {\n        pattern: /(^\\{\\/?)[a-z_]\\w*\\b(?!\\()/i,\n        lookbehind: true,\n        greedy: true\n      },\n      delimiter: {\n        pattern: /^\\{\\/?|\\}$/,\n        greedy: true,\n        alias: 'punctuation'\n      },\n      number: /\\b0x[\\dA-Fa-f]+|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee][-+]?\\d+)?/,\n      variable: [\n        /\\$(?!\\d)\\w+/,\n        /#(?!\\d)\\w+#/,\n        {\n          pattern: /(\\.|->|\\w\\s*=)(?!\\d)\\w+\\b(?!\\()/,\n          lookbehind: true\n        },\n        {\n          pattern: /(\\[)(?!\\d)\\w+(?=\\])/,\n          lookbehind: true\n        }\n      ],\n      function: {\n        pattern: /(\\|\\s*)@?[a-z_]\\w*|\\b[a-z_]\\w*(?=\\()/i,\n        lookbehind: true\n      },\n      'attr-name': /\\b[a-z_]\\w*(?=\\s*=)/i,\n      boolean: /\\b(?:false|no|off|on|true|yes)\\b/,\n      punctuation: /[\\[\\](){}.,:`]|->/,\n      operator: [\n        /[+\\-*\\/%]|==?=?|[!<>]=?|&&|\\|\\|?/,\n        /\\bis\\s+(?:not\\s+)?(?:div|even|odd)(?:\\s+by)?\\b/,\n        /\\b(?:and|eq|gt?e|gt|lt?e|lt|mod|neq?|not|or)\\b/\n      ]\n    }\n    Prism.languages.smarty['embedded-php'].inside.smarty.inside =\n      Prism.languages.smarty\n    Prism.languages.smarty.string[0].inside.interpolation.inside.expression.inside =\n      Prism.languages.smarty\n    var string = /\"(?:\\\\.|[^\"\\\\\\r\\n])*\"|'(?:\\\\.|[^'\\\\\\r\\n])*'/\n    var smartyPattern = RegExp(\n      // comments\n      /\\{\\*[\\s\\S]*?\\*\\}/.source +\n        '|' +\n        // php tags\n        /\\{php\\}[\\s\\S]*?\\{\\/php\\}/.source +\n        '|' +\n        // smarty blocks\n        /\\{(?:[^{}\"']|<str>|\\{(?:[^{}\"']|<str>|\\{(?:[^{}\"']|<str>)*\\})*\\})*\\}/.source.replace(\n          /<str>/g,\n          function () {\n            return string.source\n          }\n        ),\n      'g'\n    )\n\n    // Tokenize all inline Smarty expressions\n    Prism.hooks.add('before-tokenize', function (env) {\n      var smartyLiteralStart = '{literal}'\n      var smartyLiteralEnd = '{/literal}'\n      var smartyLiteralMode = false\n      Prism.languages['markup-templating'].buildPlaceholders(\n        env,\n        'smarty',\n        smartyPattern,\n        function (match) {\n          // Smarty tags inside {literal} block are ignored\n          if (match === smartyLiteralEnd) {\n            smartyLiteralMode = false\n          }\n          if (!smartyLiteralMode) {\n            if (match === smartyLiteralStart) {\n              smartyLiteralMode = true\n            }\n            return true\n          }\n          return false\n        }\n      )\n    })\n\n    // Re-insert the tokens after tokenizing\n    Prism.hooks.add('after-tokenize', function (env) {\n      Prism.languages['markup-templating'].tokenizePlaceholders(env, 'smarty')\n    })\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nsml.displayName = 'sml'\nsml.aliases = ['smlnj']\n\n/** @param {Refractor} Prism */\nexport default function sml(Prism) {\n  // https://smlfamily.github.io/sml97-defn.pdf\n  // https://people.mpi-sws.org/~rossberg/sml.html\n  ;(function (Prism) {\n    var keywords =\n      /\\b(?:abstype|and|andalso|as|case|datatype|do|else|end|eqtype|exception|fn|fun|functor|handle|if|in|include|infix|infixr|let|local|nonfix|of|op|open|orelse|raise|rec|sharing|sig|signature|struct|structure|then|type|val|where|while|with|withtype)\\b/i\n    Prism.languages.sml = {\n      // allow one level of nesting\n      comment:\n        /\\(\\*(?:[^*(]|\\*(?!\\))|\\((?!\\*)|\\(\\*(?:[^*(]|\\*(?!\\))|\\((?!\\*))*\\*\\))*\\*\\)/,\n      string: {\n        pattern: /#?\"(?:[^\"\\\\]|\\\\.)*\"/,\n        greedy: true\n      },\n      'class-name': [\n        {\n          // This is only an approximation since the real grammar is context-free\n          //\n          // Why the main loop so complex?\n          // The main loop is approximately the same as /(?:\\s*(?:[*,]|->)\\s*<TERMINAL>)*/ which is, obviously, a lot\n          // simpler. The difference is that if a comma is the last iteration of the loop, then the terminal must be\n          // followed by a long identifier.\n          pattern: RegExp(\n            /((?:^|[^:]):\\s*)<TERMINAL>(?:\\s*(?:(?:\\*|->)\\s*<TERMINAL>|,\\s*<TERMINAL>(?:(?=<NOT-LAST>)|(?!<NOT-LAST>)\\s+<LONG-ID>)))*/.source\n              .replace(/<NOT-LAST>/g, function () {\n                return /\\s*(?:[*,]|->)/.source\n              })\n              .replace(/<TERMINAL>/g, function () {\n                return /(?:'[\\w']*|<LONG-ID>|\\((?:[^()]|\\([^()]*\\))*\\)|\\{(?:[^{}]|\\{[^{}]*\\})*\\})(?:\\s+<LONG-ID>)*/\n                  .source\n              })\n              .replace(/<LONG-ID>/g, function () {\n                return /(?!<KEYWORD>)[a-z\\d_][\\w'.]*/.source\n              })\n              .replace(/<KEYWORD>/g, function () {\n                return keywords.source\n              }),\n            'i'\n          ),\n          lookbehind: true,\n          greedy: true,\n          inside: null // see below\n        },\n        {\n          pattern:\n            /((?:^|[^\\w'])(?:datatype|exception|functor|signature|structure|type)\\s+)[a-z_][\\w'.]*/i,\n          lookbehind: true\n        }\n      ],\n      function: {\n        pattern: /((?:^|[^\\w'])fun\\s+)[a-z_][\\w'.]*/i,\n        lookbehind: true\n      },\n      keyword: keywords,\n      variable: {\n        pattern: /(^|[^\\w'])'[\\w']*/,\n        lookbehind: true\n      },\n      number: /~?\\b(?:\\d+(?:\\.\\d+)?(?:e~?\\d+)?|0x[\\da-f]+)\\b/i,\n      word: {\n        pattern: /\\b0w(?:\\d+|x[\\da-f]+)\\b/i,\n        alias: 'constant'\n      },\n      boolean: /\\b(?:false|true)\\b/i,\n      operator: /\\.\\.\\.|:[>=:]|=>?|->|[<>]=?|[!+\\-*/^#|@~]/,\n      punctuation: /[(){}\\[\\].:,;]/\n    }\n    Prism.languages.sml['class-name'][0].inside = Prism.languages.sml\n    Prism.languages.smlnj = Prism.languages.sml\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\nsolidity.displayName = 'solidity'\nsolidity.aliases = ['sol']\n\n/** @param {Refractor} Prism */\nexport default function solidity(Prism) {\n  Prism.register(refractorClike)\n  Prism.languages.solidity = Prism.languages.extend('clike', {\n    'class-name': {\n      pattern:\n        /(\\b(?:contract|enum|interface|library|new|struct|using)\\s+)(?!\\d)[\\w$]+/,\n      lookbehind: true\n    },\n    keyword:\n      /\\b(?:_|anonymous|as|assembly|assert|break|calldata|case|constant|constructor|continue|contract|default|delete|do|else|emit|enum|event|external|for|from|function|if|import|indexed|inherited|interface|internal|is|let|library|mapping|memory|modifier|new|payable|pragma|private|public|pure|require|returns?|revert|selfdestruct|solidity|storage|struct|suicide|switch|this|throw|using|var|view|while)\\b/,\n    operator: /=>|->|:=|=:|\\*\\*|\\+\\+|--|\\|\\||&&|<<=?|>>=?|[-+*/%^&|<>!=]=?|[~?]/\n  })\n  Prism.languages.insertBefore('solidity', 'keyword', {\n    builtin:\n      /\\b(?:address|bool|byte|u?int(?:8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?|string|bytes(?:[1-9]|[12]\\d|3[0-2])?)\\b/\n  })\n  Prism.languages.insertBefore('solidity', 'number', {\n    version: {\n      pattern: /([<>]=?|\\^)\\d+\\.\\d+\\.\\d+\\b/,\n      lookbehind: true,\n      alias: 'number'\n    }\n  })\n  Prism.languages.sol = Prism.languages.solidity\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nsolutionFile.displayName = 'solution-file'\nsolutionFile.aliases = ['sln']\n\n/** @param {Refractor} Prism */\nexport default function solutionFile(Prism) {\n  ;(function (Prism) {\n    var guid = {\n      // https://en.wikipedia.org/wiki/Universally_unique_identifier#Format\n      pattern: /\\{[\\da-f]{8}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{12}\\}/i,\n      alias: 'constant',\n      inside: {\n        punctuation: /[{}]/\n      }\n    }\n    Prism.languages['solution-file'] = {\n      comment: {\n        pattern: /#.*/,\n        greedy: true\n      },\n      string: {\n        pattern: /\"[^\"\\r\\n]*\"|'[^'\\r\\n]*'/,\n        greedy: true,\n        inside: {\n          guid: guid\n        }\n      },\n      object: {\n        // Foo\n        //   Bar(\"abs\") = 9\n        //   EndBar\n        //   Prop = TRUE\n        // EndFoo\n        pattern:\n          /^([ \\t]*)(?:([A-Z]\\w*)\\b(?=.*(?:\\r\\n?|\\n)(?:\\1[ \\t].*(?:\\r\\n?|\\n))*\\1End\\2(?=[ \\t]*$))|End[A-Z]\\w*(?=[ \\t]*$))/m,\n        lookbehind: true,\n        greedy: true,\n        alias: 'keyword'\n      },\n      property: {\n        pattern: /^([ \\t]*)(?!\\s)[^\\r\\n\"#=()]*[^\\s\"#=()](?=\\s*=)/m,\n        lookbehind: true,\n        inside: {\n          guid: guid\n        }\n      },\n      guid: guid,\n      number: /\\b\\d+(?:\\.\\d+)*\\b/,\n      boolean: /\\b(?:FALSE|TRUE)\\b/,\n      operator: /=/,\n      punctuation: /[(),]/\n    }\n    Prism.languages['sln'] = Prism.languages['solution-file']\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorMarkupTemplating from './markup-templating.js'\nsoy.displayName = 'soy'\nsoy.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function soy(Prism) {\n  Prism.register(refractorMarkupTemplating)\n  ;(function (Prism) {\n    var stringPattern = /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/\n    var numberPattern = /\\b\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?\\b|\\b0x[\\dA-F]+\\b/\n    Prism.languages.soy = {\n      comment: [\n        /\\/\\*[\\s\\S]*?\\*\\//,\n        {\n          pattern: /(\\s)\\/\\/.*/,\n          lookbehind: true,\n          greedy: true\n        }\n      ],\n      'command-arg': {\n        pattern:\n          /(\\{+\\/?\\s*(?:alias|call|delcall|delpackage|deltemplate|namespace|template)\\s+)\\.?[\\w.]+/,\n        lookbehind: true,\n        alias: 'string',\n        inside: {\n          punctuation: /\\./\n        }\n      },\n      parameter: {\n        pattern: /(\\{+\\/?\\s*@?param\\??\\s+)\\.?[\\w.]+/,\n        lookbehind: true,\n        alias: 'variable'\n      },\n      keyword: [\n        {\n          pattern:\n            /(\\{+\\/?[^\\S\\r\\n]*)(?:\\\\[nrt]|alias|call|case|css|default|delcall|delpackage|deltemplate|else(?:if)?|fallbackmsg|for(?:each)?|if(?:empty)?|lb|let|literal|msg|namespace|nil|@?param\\??|rb|sp|switch|template|xid)/,\n          lookbehind: true\n        },\n        /\\b(?:any|as|attributes|bool|css|float|html|in|int|js|list|map|null|number|string|uri)\\b/\n      ],\n      delimiter: {\n        pattern: /^\\{+\\/?|\\/?\\}+$/,\n        alias: 'punctuation'\n      },\n      property: /\\w+(?==)/,\n      variable: {\n        pattern: /\\$[^\\W\\d]\\w*(?:\\??(?:\\.\\w+|\\[[^\\]]+\\]))*/,\n        inside: {\n          string: {\n            pattern: stringPattern,\n            greedy: true\n          },\n          number: numberPattern,\n          punctuation: /[\\[\\].?]/\n        }\n      },\n      string: {\n        pattern: stringPattern,\n        greedy: true\n      },\n      function: [\n        /\\w+(?=\\()/,\n        {\n          pattern: /(\\|[^\\S\\r\\n]*)\\w+/,\n          lookbehind: true\n        }\n      ],\n      boolean: /\\b(?:false|true)\\b/,\n      number: numberPattern,\n      operator: /\\?:?|<=?|>=?|==?|!=|[+*/%-]|\\b(?:and|not|or)\\b/,\n      punctuation: /[{}()\\[\\]|.,:]/\n    }\n\n    // Tokenize all inline Soy expressions\n    Prism.hooks.add('before-tokenize', function (env) {\n      var soyPattern = /\\{\\{.+?\\}\\}|\\{.+?\\}|\\s\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//g\n      var soyLitteralStart = '{literal}'\n      var soyLitteralEnd = '{/literal}'\n      var soyLitteralMode = false\n      Prism.languages['markup-templating'].buildPlaceholders(\n        env,\n        'soy',\n        soyPattern,\n        function (match) {\n          // Soy tags inside {literal} block are ignored\n          if (match === soyLitteralEnd) {\n            soyLitteralMode = false\n          }\n          if (!soyLitteralMode) {\n            if (match === soyLitteralStart) {\n              soyLitteralMode = true\n            }\n            return true\n          }\n          return false\n        }\n      )\n    })\n\n    // Re-insert the tokens after tokenizing\n    Prism.hooks.add('after-tokenize', function (env) {\n      Prism.languages['markup-templating'].tokenizePlaceholders(env, 'soy')\n    })\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nturtle.displayName = 'turtle'\nturtle.aliases = ['trig']\n\n/** @param {Refractor} Prism */\nexport default function turtle(Prism) {\n  Prism.languages.turtle = {\n    comment: {\n      pattern: /#.*/,\n      greedy: true\n    },\n    'multiline-string': {\n      pattern:\n        /\"\"\"(?:(?:\"\"?)?(?:[^\"\\\\]|\\\\.))*\"\"\"|'''(?:(?:''?)?(?:[^'\\\\]|\\\\.))*'''/,\n      greedy: true,\n      alias: 'string',\n      inside: {\n        comment: /#.*/\n      }\n    },\n    string: {\n      pattern: /\"(?:[^\\\\\"\\r\\n]|\\\\.)*\"|'(?:[^\\\\'\\r\\n]|\\\\.)*'/,\n      greedy: true\n    },\n    url: {\n      pattern:\n        /<(?:[^\\x00-\\x20<>\"{}|^`\\\\]|\\\\(?:u[\\da-fA-F]{4}|U[\\da-fA-F]{8}))*>/,\n      greedy: true,\n      inside: {\n        punctuation: /[<>]/\n      }\n    },\n    function: {\n      pattern:\n        /(?:(?![-.\\d\\xB7])[-.\\w\\xB7\\xC0-\\uFFFD]+)?:(?:(?![-.])(?:[-.:\\w\\xC0-\\uFFFD]|%[\\da-f]{2}|\\\\.)+)?/i,\n      inside: {\n        'local-name': {\n          pattern: /([^:]*:)[\\s\\S]+/,\n          lookbehind: true\n        },\n        prefix: {\n          pattern: /[\\s\\S]+/,\n          inside: {\n            punctuation: /:/\n          }\n        }\n      }\n    },\n    number: /[+-]?\\b\\d+(?:\\.\\d*)?(?:e[+-]?\\d+)?/i,\n    punctuation: /[{}.,;()[\\]]|\\^\\^/,\n    boolean: /\\b(?:false|true)\\b/,\n    keyword: [/(?:\\ba|@prefix|@base)\\b|=/, /\\b(?:base|graph|prefix)\\b/i],\n    tag: {\n      pattern: /@[a-z]+(?:-[a-z\\d]+)*/i,\n      inside: {\n        punctuation: /@/\n      }\n    }\n  }\n  Prism.languages.trig = Prism.languages['turtle']\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorTurtle from './turtle.js'\nsparql.displayName = 'sparql'\nsparql.aliases = ['rq']\n\n/** @param {Refractor} Prism */\nexport default function sparql(Prism) {\n  Prism.register(refractorTurtle)\n  Prism.languages.sparql = Prism.languages.extend('turtle', {\n    boolean: /\\b(?:false|true)\\b/i,\n    variable: {\n      pattern: /[?$]\\w+/,\n      greedy: true\n    }\n  })\n  Prism.languages.insertBefore('sparql', 'punctuation', {\n    keyword: [\n      /\\b(?:A|ADD|ALL|AS|ASC|ASK|BNODE|BY|CLEAR|CONSTRUCT|COPY|CREATE|DATA|DEFAULT|DELETE|DESC|DESCRIBE|DISTINCT|DROP|EXISTS|FILTER|FROM|GROUP|HAVING|INSERT|INTO|LIMIT|LOAD|MINUS|MOVE|NAMED|NOT|NOW|OFFSET|OPTIONAL|ORDER|RAND|REDUCED|SELECT|SEPARATOR|SERVICE|SILENT|STRUUID|UNION|USING|UUID|VALUES|WHERE)\\b/i,\n      /\\b(?:ABS|AVG|BIND|BOUND|CEIL|COALESCE|CONCAT|CONTAINS|COUNT|DATATYPE|DAY|ENCODE_FOR_URI|FLOOR|GROUP_CONCAT|HOURS|IF|IRI|isBLANK|isIRI|isLITERAL|isNUMERIC|isURI|LANG|LANGMATCHES|LCASE|MAX|MD5|MIN|MINUTES|MONTH|REGEX|REPLACE|ROUND|sameTerm|SAMPLE|SECONDS|SHA1|SHA256|SHA384|SHA512|STR|STRAFTER|STRBEFORE|STRDT|STRENDS|STRLANG|STRLEN|STRSTARTS|SUBSTR|SUM|TIMEZONE|TZ|UCASE|URI|YEAR)\\b(?=\\s*\\()/i,\n      /\\b(?:BASE|GRAPH|PREFIX)\\b/i\n    ]\n  })\n  Prism.languages.rq = Prism.languages.sparql\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nsplunkSpl.displayName = 'splunk-spl'\nsplunkSpl.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function splunkSpl(Prism) {\n  Prism.languages['splunk-spl'] = {\n    comment: /`comment\\(\"(?:\\\\.|[^\\\\\"])*\"\\)`/,\n    string: {\n      pattern: /\"(?:\\\\.|[^\\\\\"])*\"/,\n      greedy: true\n    },\n    // https://docs.splunk.com/Documentation/Splunk/7.3.0/SearchReference/ListOfSearchCommands\n    keyword:\n      /\\b(?:abstract|accum|addcoltotals|addinfo|addtotals|analyzefields|anomalies|anomalousvalue|anomalydetection|append|appendcols|appendcsv|appendlookup|appendpipe|arules|associate|audit|autoregress|bin|bucket|bucketdir|chart|cluster|cofilter|collect|concurrency|contingency|convert|correlate|datamodel|dbinspect|dedup|delete|delta|diff|erex|eval|eventcount|eventstats|extract|fieldformat|fields|fieldsummary|filldown|fillnull|findtypes|folderize|foreach|format|from|gauge|gentimes|geom|geomfilter|geostats|head|highlight|history|iconify|input|inputcsv|inputlookup|iplocation|join|kmeans|kv|kvform|loadjob|localize|localop|lookup|makecontinuous|makemv|makeresults|map|mcollect|metadata|metasearch|meventcollect|mstats|multikv|multisearch|mvcombine|mvexpand|nomv|outlier|outputcsv|outputlookup|outputtext|overlap|pivot|predict|rangemap|rare|regex|relevancy|reltime|rename|replace|rest|return|reverse|rex|rtorder|run|savedsearch|script|scrub|search|searchtxn|selfjoin|sendemail|set|setfields|sichart|sirare|sistats|sitimechart|sitop|sort|spath|stats|strcat|streamstats|table|tags|tail|timechart|timewrap|top|transaction|transpose|trendline|tscollect|tstats|typeahead|typelearner|typer|union|uniq|untable|where|x11|xmlkv|xmlunescape|xpath|xyseries)\\b/i,\n    'operator-word': {\n      pattern: /\\b(?:and|as|by|not|or|xor)\\b/i,\n      alias: 'operator'\n    },\n    function: /\\b\\w+(?=\\s*\\()/,\n    property: /\\b\\w+(?=\\s*=(?!=))/,\n    date: {\n      // MM/DD/YYYY(:HH:MM:SS)?\n      pattern: /\\b\\d{1,2}\\/\\d{1,2}\\/\\d{1,4}(?:(?::\\d{1,2}){3})?\\b/,\n      alias: 'number'\n    },\n    number: /\\b\\d+(?:\\.\\d+)?\\b/,\n    boolean: /\\b(?:f|false|t|true)\\b/i,\n    operator: /[<>=]=?|[-+*/%|]/,\n    punctuation: /[()[\\],]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\nsqf.displayName = 'sqf'\nsqf.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function sqf(Prism) {\n  Prism.register(refractorClike)\n  Prism.languages.sqf = Prism.languages.extend('clike', {\n    string: {\n      pattern: /\"(?:(?:\"\")?[^\"])*\"(?!\")|'(?:[^'])*'/,\n      greedy: true\n    },\n    keyword:\n      /\\b(?:breakOut|breakTo|call|case|catch|default|do|echo|else|execFSM|execVM|exitWith|for|forEach|forEachMember|forEachMemberAgent|forEachMemberTeam|from|goto|if|nil|preprocessFile|preprocessFileLineNumbers|private|scopeName|spawn|step|switch|then|throw|to|try|while|with)\\b/i,\n    boolean: /\\b(?:false|true)\\b/i,\n    function:\n      /\\b(?:abs|accTime|acos|action|actionIDs|actionKeys|actionKeysImages|actionKeysNames|actionKeysNamesArray|actionName|actionParams|activateAddons|activatedAddons|activateKey|add3DENConnection|add3DENEventHandler|add3DENLayer|addAction|addBackpack|addBackpackCargo|addBackpackCargoGlobal|addBackpackGlobal|addCamShake|addCuratorAddons|addCuratorCameraArea|addCuratorEditableObjects|addCuratorEditingArea|addCuratorPoints|addEditorObject|addEventHandler|addForce|addForceGeneratorRTD|addGoggles|addGroupIcon|addHandgunItem|addHeadgear|addItem|addItemCargo|addItemCargoGlobal|addItemPool|addItemToBackpack|addItemToUniform|addItemToVest|addLiveStats|addMagazine|addMagazineAmmoCargo|addMagazineCargo|addMagazineCargoGlobal|addMagazineGlobal|addMagazinePool|addMagazines|addMagazineTurret|addMenu|addMenuItem|addMissionEventHandler|addMPEventHandler|addMusicEventHandler|addOwnedMine|addPlayerScores|addPrimaryWeaponItem|addPublicVariableEventHandler|addRating|addResources|addScore|addScoreSide|addSecondaryWeaponItem|addSwitchableUnit|addTeamMember|addToRemainsCollector|addTorque|addUniform|addVehicle|addVest|addWaypoint|addWeapon|addWeaponCargo|addWeaponCargoGlobal|addWeaponGlobal|addWeaponItem|addWeaponPool|addWeaponTurret|admin|agent|agents|AGLToASL|aimedAtTarget|aimPos|airDensityCurveRTD|airDensityRTD|airplaneThrottle|airportSide|AISFinishHeal|alive|all3DENEntities|allAirports|allControls|allCurators|allCutLayers|allDead|allDeadMen|allDisplays|allGroups|allMapMarkers|allMines|allMissionObjects|allow3DMode|allowCrewInImmobile|allowCuratorLogicIgnoreAreas|allowDamage|allowDammage|allowFileOperations|allowFleeing|allowGetIn|allowSprint|allPlayers|allSimpleObjects|allSites|allTurrets|allUnits|allUnitsUAV|allVariables|ammo|ammoOnPylon|animate|animateBay|animateDoor|animatePylon|animateSource|animationNames|animationPhase|animationSourcePhase|animationState|append|apply|armoryPoints|arrayIntersect|asin|ASLToAGL|ASLToATL|assert|assignAsCargo|assignAsCargoIndex|assignAsCommander|assignAsDriver|assignAsGunner|assignAsTurret|assignCurator|assignedCargo|assignedCommander|assignedDriver|assignedGunner|assignedItems|assignedTarget|assignedTeam|assignedVehicle|assignedVehicleRole|assignItem|assignTeam|assignToAirport|atan|atan2|atg|ATLToASL|attachedObject|attachedObjects|attachedTo|attachObject|attachTo|attackEnabled|backpack|backpackCargo|backpackContainer|backpackItems|backpackMagazines|backpackSpaceFor|behaviour|benchmark|binocular|blufor|boundingBox|boundingBoxReal|boundingCenter|briefingName|buildingExit|buildingPos|buldozer_EnableRoadDiag|buldozer_IsEnabledRoadDiag|buldozer_LoadNewRoads|buldozer_reloadOperMap|buttonAction|buttonSetAction|cadetMode|callExtension|camCommand|camCommit|camCommitPrepared|camCommitted|camConstuctionSetParams|camCreate|camDestroy|cameraEffect|cameraEffectEnableHUD|cameraInterest|cameraOn|cameraView|campaignConfigFile|camPreload|camPreloaded|camPrepareBank|camPrepareDir|camPrepareDive|camPrepareFocus|camPrepareFov|camPrepareFovRange|camPreparePos|camPrepareRelPos|camPrepareTarget|camSetBank|camSetDir|camSetDive|camSetFocus|camSetFov|camSetFovRange|camSetPos|camSetRelPos|camSetTarget|camTarget|camUseNVG|canAdd|canAddItemToBackpack|canAddItemToUniform|canAddItemToVest|cancelSimpleTaskDestination|canFire|canMove|canSlingLoad|canStand|canSuspend|canTriggerDynamicSimulation|canUnloadInCombat|canVehicleCargo|captive|captiveNum|cbChecked|cbSetChecked|ceil|channelEnabled|cheatsEnabled|checkAIFeature|checkVisibility|civilian|className|clear3DENAttribute|clear3DENInventory|clearAllItemsFromBackpack|clearBackpackCargo|clearBackpackCargoGlobal|clearForcesRTD|clearGroupIcons|clearItemCargo|clearItemCargoGlobal|clearItemPool|clearMagazineCargo|clearMagazineCargoGlobal|clearMagazinePool|clearOverlay|clearRadio|clearVehicleInit|clearWeaponCargo|clearWeaponCargoGlobal|clearWeaponPool|clientOwner|closeDialog|closeDisplay|closeOverlay|collapseObjectTree|collect3DENHistory|collectiveRTD|combatMode|commandArtilleryFire|commandChat|commander|commandFire|commandFollow|commandFSM|commandGetOut|commandingMenu|commandMove|commandRadio|commandStop|commandSuppressiveFire|commandTarget|commandWatch|comment|commitOverlay|compile|compileFinal|completedFSM|composeText|configClasses|configFile|configHierarchy|configName|configNull|configProperties|configSourceAddonList|configSourceMod|configSourceModList|confirmSensorTarget|connectTerminalToUAV|controlNull|controlsGroupCtrl|copyFromClipboard|copyToClipboard|copyWaypoints|cos|count|countEnemy|countFriendly|countSide|countType|countUnknown|create3DENComposition|create3DENEntity|createAgent|createCenter|createDialog|createDiaryLink|createDiaryRecord|createDiarySubject|createDisplay|createGearDialog|createGroup|createGuardedPoint|createLocation|createMarker|createMarkerLocal|createMenu|createMine|createMissionDisplay|createMPCampaignDisplay|createSimpleObject|createSimpleTask|createSite|createSoundSource|createTask|createTeam|createTrigger|createUnit|createVehicle|createVehicleCrew|createVehicleLocal|crew|ctAddHeader|ctAddRow|ctClear|ctCurSel|ctData|ctFindHeaderRows|ctFindRowHeader|ctHeaderControls|ctHeaderCount|ctRemoveHeaders|ctRemoveRows|ctrlActivate|ctrlAddEventHandler|ctrlAngle|ctrlAutoScrollDelay|ctrlAutoScrollRewind|ctrlAutoScrollSpeed|ctrlChecked|ctrlClassName|ctrlCommit|ctrlCommitted|ctrlCreate|ctrlDelete|ctrlEnable|ctrlEnabled|ctrlFade|ctrlHTMLLoaded|ctrlIDC|ctrlIDD|ctrlMapAnimAdd|ctrlMapAnimClear|ctrlMapAnimCommit|ctrlMapAnimDone|ctrlMapCursor|ctrlMapMouseOver|ctrlMapScale|ctrlMapScreenToWorld|ctrlMapWorldToScreen|ctrlModel|ctrlModelDirAndUp|ctrlModelScale|ctrlParent|ctrlParentControlsGroup|ctrlPosition|ctrlRemoveAllEventHandlers|ctrlRemoveEventHandler|ctrlScale|ctrlSetActiveColor|ctrlSetAngle|ctrlSetAutoScrollDelay|ctrlSetAutoScrollRewind|ctrlSetAutoScrollSpeed|ctrlSetBackgroundColor|ctrlSetChecked|ctrlSetDisabledColor|ctrlSetEventHandler|ctrlSetFade|ctrlSetFocus|ctrlSetFont|ctrlSetFontH1|ctrlSetFontH1B|ctrlSetFontH2|ctrlSetFontH2B|ctrlSetFontH3|ctrlSetFontH3B|ctrlSetFontH4|ctrlSetFontH4B|ctrlSetFontH5|ctrlSetFontH5B|ctrlSetFontH6|ctrlSetFontH6B|ctrlSetFontHeight|ctrlSetFontHeightH1|ctrlSetFontHeightH2|ctrlSetFontHeightH3|ctrlSetFontHeightH4|ctrlSetFontHeightH5|ctrlSetFontHeightH6|ctrlSetFontHeightSecondary|ctrlSetFontP|ctrlSetFontPB|ctrlSetFontSecondary|ctrlSetForegroundColor|ctrlSetModel|ctrlSetModelDirAndUp|ctrlSetModelScale|ctrlSetPixelPrecision|ctrlSetPosition|ctrlSetScale|ctrlSetStructuredText|ctrlSetText|ctrlSetTextColor|ctrlSetTextColorSecondary|ctrlSetTextSecondary|ctrlSetTooltip|ctrlSetTooltipColorBox|ctrlSetTooltipColorShade|ctrlSetTooltipColorText|ctrlShow|ctrlShown|ctrlText|ctrlTextHeight|ctrlTextSecondary|ctrlTextWidth|ctrlType|ctrlVisible|ctRowControls|ctRowCount|ctSetCurSel|ctSetData|ctSetHeaderTemplate|ctSetRowTemplate|ctSetValue|ctValue|curatorAddons|curatorCamera|curatorCameraArea|curatorCameraAreaCeiling|curatorCoef|curatorEditableObjects|curatorEditingArea|curatorEditingAreaType|curatorMouseOver|curatorPoints|curatorRegisteredObjects|curatorSelected|curatorWaypointCost|current3DENOperation|currentChannel|currentCommand|currentMagazine|currentMagazineDetail|currentMagazineDetailTurret|currentMagazineTurret|currentMuzzle|currentNamespace|currentTask|currentTasks|currentThrowable|currentVisionMode|currentWaypoint|currentWeapon|currentWeaponMode|currentWeaponTurret|currentZeroing|cursorObject|cursorTarget|customChat|customRadio|cutFadeOut|cutObj|cutRsc|cutText|damage|date|dateToNumber|daytime|deActivateKey|debriefingText|debugFSM|debugLog|deg|delete3DENEntities|deleteAt|deleteCenter|deleteCollection|deleteEditorObject|deleteGroup|deleteGroupWhenEmpty|deleteIdentity|deleteLocation|deleteMarker|deleteMarkerLocal|deleteRange|deleteResources|deleteSite|deleteStatus|deleteTeam|deleteVehicle|deleteVehicleCrew|deleteWaypoint|detach|detectedMines|diag_activeMissionFSMs|diag_activeScripts|diag_activeSQFScripts|diag_activeSQSScripts|diag_captureFrame|diag_captureFrameToFile|diag_captureSlowFrame|diag_codePerformance|diag_drawMode|diag_dynamicSimulationEnd|diag_enable|diag_enabled|diag_fps|diag_fpsMin|diag_frameNo|diag_lightNewLoad|diag_list|diag_log|diag_logSlowFrame|diag_mergeConfigFile|diag_recordTurretLimits|diag_setLightNew|diag_tickTime|diag_toggle|dialog|diarySubjectExists|didJIP|didJIPOwner|difficulty|difficultyEnabled|difficultyEnabledRTD|difficultyOption|direction|directSay|disableAI|disableCollisionWith|disableConversation|disableDebriefingStats|disableMapIndicators|disableNVGEquipment|disableRemoteSensors|disableSerialization|disableTIEquipment|disableUAVConnectability|disableUserInput|displayAddEventHandler|displayCtrl|displayNull|displayParent|displayRemoveAllEventHandlers|displayRemoveEventHandler|displaySetEventHandler|dissolveTeam|distance|distance2D|distanceSqr|distributionRegion|do3DENAction|doArtilleryFire|doFire|doFollow|doFSM|doGetOut|doMove|doorPhase|doStop|doSuppressiveFire|doTarget|doWatch|drawArrow|drawEllipse|drawIcon|drawIcon3D|drawLine|drawLine3D|drawLink|drawLocation|drawPolygon|drawRectangle|drawTriangle|driver|drop|dynamicSimulationDistance|dynamicSimulationDistanceCoef|dynamicSimulationEnabled|dynamicSimulationSystemEnabled|east|edit3DENMissionAttributes|editObject|editorSetEventHandler|effectiveCommander|emptyPositions|enableAI|enableAIFeature|enableAimPrecision|enableAttack|enableAudioFeature|enableAutoStartUpRTD|enableAutoTrimRTD|enableCamShake|enableCaustics|enableChannel|enableCollisionWith|enableCopilot|enableDebriefingStats|enableDiagLegend|enableDynamicSimulation|enableDynamicSimulationSystem|enableEndDialog|enableEngineArtillery|enableEnvironment|enableFatigue|enableGunLights|enableInfoPanelComponent|enableIRLasers|enableMimics|enablePersonTurret|enableRadio|enableReload|enableRopeAttach|enableSatNormalOnDetail|enableSaving|enableSentences|enableSimulation|enableSimulationGlobal|enableStamina|enableStressDamage|enableTeamSwitch|enableTraffic|enableUAVConnectability|enableUAVWaypoints|enableVehicleCargo|enableVehicleSensor|enableWeaponDisassembly|endl|endLoadingScreen|endMission|engineOn|enginesIsOnRTD|enginesPowerRTD|enginesRpmRTD|enginesTorqueRTD|entities|environmentEnabled|estimatedEndServerTime|estimatedTimeLeft|evalObjectArgument|everyBackpack|everyContainer|exec|execEditorScript|exp|expectedDestination|exportJIPMessages|eyeDirection|eyePos|face|faction|fadeMusic|fadeRadio|fadeSound|fadeSpeech|failMission|fillWeaponsFromPool|find|findCover|findDisplay|findEditorObject|findEmptyPosition|findEmptyPositionReady|findIf|findNearestEnemy|finishMissionInit|finite|fire|fireAtTarget|firstBackpack|flag|flagAnimationPhase|flagOwner|flagSide|flagTexture|fleeing|floor|flyInHeight|flyInHeightASL|fog|fogForecast|fogParams|forceAddUniform|forceAtPositionRTD|forcedMap|forceEnd|forceFlagTexture|forceFollowRoad|forceGeneratorRTD|forceMap|forceRespawn|forceSpeed|forceWalk|forceWeaponFire|forceWeatherChange|forgetTarget|format|formation|formationDirection|formationLeader|formationMembers|formationPosition|formationTask|formatText|formLeader|freeLook|fromEditor|fuel|fullCrew|gearIDCAmmoCount|gearSlotAmmoCount|gearSlotData|get3DENActionState|get3DENAttribute|get3DENCamera|get3DENConnections|get3DENEntity|get3DENEntityID|get3DENGrid|get3DENIconsVisible|get3DENLayerEntities|get3DENLinesVisible|get3DENMissionAttribute|get3DENMouseOver|get3DENSelected|getAimingCoef|getAllEnvSoundControllers|getAllHitPointsDamage|getAllOwnedMines|getAllSoundControllers|getAmmoCargo|getAnimAimPrecision|getAnimSpeedCoef|getArray|getArtilleryAmmo|getArtilleryComputerSettings|getArtilleryETA|getAssignedCuratorLogic|getAssignedCuratorUnit|getBackpackCargo|getBleedingRemaining|getBurningValue|getCameraViewDirection|getCargoIndex|getCenterOfMass|getClientState|getClientStateNumber|getCompatiblePylonMagazines|getConnectedUAV|getContainerMaxLoad|getCursorObjectParams|getCustomAimCoef|getDammage|getDescription|getDir|getDirVisual|getDLCAssetsUsage|getDLCAssetsUsageByName|getDLCs|getDLCUsageTime|getEditorCamera|getEditorMode|getEditorObjectScope|getElevationOffset|getEngineTargetRpmRTD|getEnvSoundController|getFatigue|getFieldManualStartPage|getForcedFlagTexture|getFriend|getFSMVariable|getFuelCargo|getGroupIcon|getGroupIconParams|getGroupIcons|getHideFrom|getHit|getHitIndex|getHitPointDamage|getItemCargo|getMagazineCargo|getMarkerColor|getMarkerPos|getMarkerSize|getMarkerType|getMass|getMissionConfig|getMissionConfigValue|getMissionDLCs|getMissionLayerEntities|getMissionLayers|getModelInfo|getMousePosition|getMusicPlayedTime|getNumber|getObjectArgument|getObjectChildren|getObjectDLC|getObjectMaterials|getObjectProxy|getObjectTextures|getObjectType|getObjectViewDistance|getOxygenRemaining|getPersonUsedDLCs|getPilotCameraDirection|getPilotCameraPosition|getPilotCameraRotation|getPilotCameraTarget|getPlateNumber|getPlayerChannel|getPlayerScores|getPlayerUID|getPlayerUIDOld|getPos|getPosASL|getPosASLVisual|getPosASLW|getPosATL|getPosATLVisual|getPosVisual|getPosWorld|getPylonMagazines|getRelDir|getRelPos|getRemoteSensorsDisabled|getRepairCargo|getResolution|getRotorBrakeRTD|getShadowDistance|getShotParents|getSlingLoad|getSoundController|getSoundControllerResult|getSpeed|getStamina|getStatValue|getSuppression|getTerrainGrid|getTerrainHeightASL|getText|getTotalDLCUsageTime|getTrimOffsetRTD|getUnitLoadout|getUnitTrait|getUserMFDText|getUserMFDValue|getVariable|getVehicleCargo|getWeaponCargo|getWeaponSway|getWingsOrientationRTD|getWingsPositionRTD|getWPPos|glanceAt|globalChat|globalRadio|goggles|group|groupChat|groupFromNetId|groupIconSelectable|groupIconsVisible|groupId|groupOwner|groupRadio|groupSelectedUnits|groupSelectUnit|grpNull|gunner|gusts|halt|handgunItems|handgunMagazine|handgunWeapon|handsHit|hasInterface|hasPilotCamera|hasWeapon|hcAllGroups|hcGroupParams|hcLeader|hcRemoveAllGroups|hcRemoveGroup|hcSelected|hcSelectGroup|hcSetGroup|hcShowBar|hcShownBar|headgear|hideBody|hideObject|hideObjectGlobal|hideSelection|hint|hintC|hintCadet|hintSilent|hmd|hostMission|htmlLoad|HUDMovementLevels|humidity|image|importAllGroups|importance|in|inArea|inAreaArray|incapacitatedState|independent|inflame|inflamed|infoPanel|infoPanelComponentEnabled|infoPanelComponents|infoPanels|inGameUISetEventHandler|inheritsFrom|initAmbientLife|inPolygon|inputAction|inRangeOfArtillery|insertEditorObject|intersect|is3DEN|is3DENMultiplayer|isAbleToBreathe|isAgent|isAimPrecisionEnabled|isArray|isAutoHoverOn|isAutonomous|isAutoStartUpEnabledRTD|isAutotest|isAutoTrimOnRTD|isBleeding|isBurning|isClass|isCollisionLightOn|isCopilotEnabled|isDamageAllowed|isDedicated|isDLCAvailable|isEngineOn|isEqualTo|isEqualType|isEqualTypeAll|isEqualTypeAny|isEqualTypeArray|isEqualTypeParams|isFilePatchingEnabled|isFlashlightOn|isFlatEmpty|isForcedWalk|isFormationLeader|isGroupDeletedWhenEmpty|isHidden|isInRemainsCollector|isInstructorFigureEnabled|isIRLaserOn|isKeyActive|isKindOf|isLaserOn|isLightOn|isLocalized|isManualFire|isMarkedForCollection|isMultiplayer|isMultiplayerSolo|isNil|isNull|isNumber|isObjectHidden|isObjectRTD|isOnRoad|isPipEnabled|isPlayer|isRealTime|isRemoteExecuted|isRemoteExecutedJIP|isServer|isShowing3DIcons|isSimpleObject|isSprintAllowed|isStaminaEnabled|isSteamMission|isStreamFriendlyUIEnabled|isStressDamageEnabled|isText|isTouchingGround|isTurnedOut|isTutHintsEnabled|isUAVConnectable|isUAVConnected|isUIContext|isUniformAllowed|isVehicleCargo|isVehicleRadarOn|isVehicleSensorEnabled|isWalking|isWeaponDeployed|isWeaponRested|itemCargo|items|itemsWithMagazines|join|joinAs|joinAsSilent|joinSilent|joinString|kbAddDatabase|kbAddDatabaseTargets|kbAddTopic|kbHasTopic|kbReact|kbRemoveTopic|kbTell|kbWasSaid|keyImage|keyName|knowsAbout|land|landAt|landResult|language|laserTarget|lbAdd|lbClear|lbColor|lbColorRight|lbCurSel|lbData|lbDelete|lbIsSelected|lbPicture|lbPictureRight|lbSelection|lbSetColor|lbSetColorRight|lbSetCurSel|lbSetData|lbSetPicture|lbSetPictureColor|lbSetPictureColorDisabled|lbSetPictureColorSelected|lbSetPictureRight|lbSetPictureRightColor|lbSetPictureRightColorDisabled|lbSetPictureRightColorSelected|lbSetSelectColor|lbSetSelectColorRight|lbSetSelected|lbSetText|lbSetTextRight|lbSetTooltip|lbSetValue|lbSize|lbSort|lbSortByValue|lbText|lbTextRight|lbValue|leader|leaderboardDeInit|leaderboardGetRows|leaderboardInit|leaderboardRequestRowsFriends|leaderboardRequestRowsGlobal|leaderboardRequestRowsGlobalAroundUser|leaderboardsRequestUploadScore|leaderboardsRequestUploadScoreKeepBest|leaderboardState|leaveVehicle|libraryCredits|libraryDisclaimers|lifeState|lightAttachObject|lightDetachObject|lightIsOn|lightnings|limitSpeed|linearConversion|lineBreak|lineIntersects|lineIntersectsObjs|lineIntersectsSurfaces|lineIntersectsWith|linkItem|list|listObjects|listRemoteTargets|listVehicleSensors|ln|lnbAddArray|lnbAddColumn|lnbAddRow|lnbClear|lnbColor|lnbColorRight|lnbCurSelRow|lnbData|lnbDeleteColumn|lnbDeleteRow|lnbGetColumnsPosition|lnbPicture|lnbPictureRight|lnbSetColor|lnbSetColorRight|lnbSetColumnsPos|lnbSetCurSelRow|lnbSetData|lnbSetPicture|lnbSetPictureColor|lnbSetPictureColorRight|lnbSetPictureColorSelected|lnbSetPictureColorSelectedRight|lnbSetPictureRight|lnbSetText|lnbSetTextRight|lnbSetValue|lnbSize|lnbSort|lnbSortByValue|lnbText|lnbTextRight|lnbValue|load|loadAbs|loadBackpack|loadFile|loadGame|loadIdentity|loadMagazine|loadOverlay|loadStatus|loadUniform|loadVest|local|localize|locationNull|locationPosition|lock|lockCameraTo|lockCargo|lockDriver|locked|lockedCargo|lockedDriver|lockedTurret|lockIdentity|lockTurret|lockWP|log|logEntities|logNetwork|logNetworkTerminate|lookAt|lookAtPos|magazineCargo|magazines|magazinesAllTurrets|magazinesAmmo|magazinesAmmoCargo|magazinesAmmoFull|magazinesDetail|magazinesDetailBackpack|magazinesDetailUniform|magazinesDetailVest|magazinesTurret|magazineTurretAmmo|mapAnimAdd|mapAnimClear|mapAnimCommit|mapAnimDone|mapCenterOnCamera|mapGridPosition|markAsFinishedOnSteam|markerAlpha|markerBrush|markerColor|markerDir|markerPos|markerShape|markerSize|markerText|markerType|max|members|menuAction|menuAdd|menuChecked|menuClear|menuCollapse|menuData|menuDelete|menuEnable|menuEnabled|menuExpand|menuHover|menuPicture|menuSetAction|menuSetCheck|menuSetData|menuSetPicture|menuSetValue|menuShortcut|menuShortcutText|menuSize|menuSort|menuText|menuURL|menuValue|min|mineActive|mineDetectedBy|missionConfigFile|missionDifficulty|missionName|missionNamespace|missionStart|missionVersion|modelToWorld|modelToWorldVisual|modelToWorldVisualWorld|modelToWorldWorld|modParams|moonIntensity|moonPhase|morale|move|move3DENCamera|moveInAny|moveInCargo|moveInCommander|moveInDriver|moveInGunner|moveInTurret|moveObjectToEnd|moveOut|moveTime|moveTo|moveToCompleted|moveToFailed|musicVolume|name|nameSound|nearEntities|nearestBuilding|nearestLocation|nearestLocations|nearestLocationWithDubbing|nearestObject|nearestObjects|nearestTerrainObjects|nearObjects|nearObjectsReady|nearRoads|nearSupplies|nearTargets|needReload|netId|netObjNull|newOverlay|nextMenuItemIndex|nextWeatherChange|nMenuItems|numberOfEnginesRTD|numberToDate|objectCurators|objectFromNetId|objectParent|objNull|objStatus|onBriefingGear|onBriefingGroup|onBriefingNotes|onBriefingPlan|onBriefingTeamSwitch|onCommandModeChanged|onDoubleClick|onEachFrame|onGroupIconClick|onGroupIconOverEnter|onGroupIconOverLeave|onHCGroupSelectionChanged|onMapSingleClick|onPlayerConnected|onPlayerDisconnected|onPreloadFinished|onPreloadStarted|onShowNewObject|onTeamSwitch|openCuratorInterface|openDLCPage|openDSInterface|openMap|openSteamApp|openYoutubeVideo|opfor|orderGetIn|overcast|overcastForecast|owner|param|params|parseNumber|parseSimpleArray|parseText|parsingNamespace|particlesQuality|pi|pickWeaponPool|pitch|pixelGrid|pixelGridBase|pixelGridNoUIScale|pixelH|pixelW|playableSlotsNumber|playableUnits|playAction|playActionNow|player|playerRespawnTime|playerSide|playersNumber|playGesture|playMission|playMove|playMoveNow|playMusic|playScriptedMission|playSound|playSound3D|position|positionCameraToWorld|posScreenToWorld|posWorldToScreen|ppEffectAdjust|ppEffectCommit|ppEffectCommitted|ppEffectCreate|ppEffectDestroy|ppEffectEnable|ppEffectEnabled|ppEffectForceInNVG|precision|preloadCamera|preloadObject|preloadSound|preloadTitleObj|preloadTitleRsc|primaryWeapon|primaryWeaponItems|primaryWeaponMagazine|priority|processDiaryLink|processInitCommands|productVersion|profileName|profileNamespace|profileNameSteam|progressLoadingScreen|progressPosition|progressSetPosition|publicVariable|publicVariableClient|publicVariableServer|pushBack|pushBackUnique|putWeaponPool|queryItemsPool|queryMagazinePool|queryWeaponPool|rad|radioChannelAdd|radioChannelCreate|radioChannelRemove|radioChannelSetCallSign|radioChannelSetLabel|radioVolume|rain|rainbow|random|rank|rankId|rating|rectangular|registeredTasks|registerTask|reload|reloadEnabled|remoteControl|remoteExec|remoteExecCall|remoteExecutedOwner|remove3DENConnection|remove3DENEventHandler|remove3DENLayer|removeAction|removeAll3DENEventHandlers|removeAllActions|removeAllAssignedItems|removeAllContainers|removeAllCuratorAddons|removeAllCuratorCameraAreas|removeAllCuratorEditingAreas|removeAllEventHandlers|removeAllHandgunItems|removeAllItems|removeAllItemsWithMagazines|removeAllMissionEventHandlers|removeAllMPEventHandlers|removeAllMusicEventHandlers|removeAllOwnedMines|removeAllPrimaryWeaponItems|removeAllWeapons|removeBackpack|removeBackpackGlobal|removeCuratorAddons|removeCuratorCameraArea|removeCuratorEditableObjects|removeCuratorEditingArea|removeDrawIcon|removeDrawLinks|removeEventHandler|removeFromRemainsCollector|removeGoggles|removeGroupIcon|removeHandgunItem|removeHeadgear|removeItem|removeItemFromBackpack|removeItemFromUniform|removeItemFromVest|removeItems|removeMagazine|removeMagazineGlobal|removeMagazines|removeMagazinesTurret|removeMagazineTurret|removeMenuItem|removeMissionEventHandler|removeMPEventHandler|removeMusicEventHandler|removeOwnedMine|removePrimaryWeaponItem|removeSecondaryWeaponItem|removeSimpleTask|removeSwitchableUnit|removeTeamMember|removeUniform|removeVest|removeWeapon|removeWeaponAttachmentCargo|removeWeaponCargo|removeWeaponGlobal|removeWeaponTurret|reportRemoteTarget|requiredVersion|resetCamShake|resetSubgroupDirection|resistance|resize|resources|respawnVehicle|restartEditorCamera|reveal|revealMine|reverse|reversedMouseY|roadAt|roadsConnectedTo|roleDescription|ropeAttachedObjects|ropeAttachedTo|ropeAttachEnabled|ropeAttachTo|ropeCreate|ropeCut|ropeDestroy|ropeDetach|ropeEndPosition|ropeLength|ropes|ropeUnwind|ropeUnwound|rotorsForcesRTD|rotorsRpmRTD|round|runInitScript|safeZoneH|safeZoneW|safeZoneWAbs|safeZoneX|safeZoneXAbs|safeZoneY|save3DENInventory|saveGame|saveIdentity|saveJoysticks|saveOverlay|saveProfileNamespace|saveStatus|saveVar|savingEnabled|say|say2D|say3D|score|scoreSide|screenshot|screenToWorld|scriptDone|scriptName|scriptNull|scudState|secondaryWeapon|secondaryWeaponItems|secondaryWeaponMagazine|select|selectBestPlaces|selectDiarySubject|selectedEditorObjects|selectEditorObject|selectionNames|selectionPosition|selectLeader|selectMax|selectMin|selectNoPlayer|selectPlayer|selectRandom|selectRandomWeighted|selectWeapon|selectWeaponTurret|sendAUMessage|sendSimpleCommand|sendTask|sendTaskResult|sendUDPMessage|serverCommand|serverCommandAvailable|serverCommandExecutable|serverName|serverTime|set|set3DENAttribute|set3DENAttributes|set3DENGrid|set3DENIconsVisible|set3DENLayer|set3DENLinesVisible|set3DENLogicType|set3DENMissionAttribute|set3DENMissionAttributes|set3DENModelsVisible|set3DENObjectType|set3DENSelected|setAccTime|setActualCollectiveRTD|setAirplaneThrottle|setAirportSide|setAmmo|setAmmoCargo|setAmmoOnPylon|setAnimSpeedCoef|setAperture|setApertureNew|setArmoryPoints|setAttributes|setAutonomous|setBehaviour|setBleedingRemaining|setBrakesRTD|setCameraInterest|setCamShakeDefParams|setCamShakeParams|setCamUseTI|setCaptive|setCenterOfMass|setCollisionLight|setCombatMode|setCompassOscillation|setConvoySeparation|setCuratorCameraAreaCeiling|setCuratorCoef|setCuratorEditingAreaType|setCuratorWaypointCost|setCurrentChannel|setCurrentTask|setCurrentWaypoint|setCustomAimCoef|setCustomWeightRTD|setDamage|setDammage|setDate|setDebriefingText|setDefaultCamera|setDestination|setDetailMapBlendPars|setDir|setDirection|setDrawIcon|setDriveOnPath|setDropInterval|setDynamicSimulationDistance|setDynamicSimulationDistanceCoef|setEditorMode|setEditorObjectScope|setEffectCondition|setEngineRpmRTD|setFace|setFaceAnimation|setFatigue|setFeatureType|setFlagAnimationPhase|setFlagOwner|setFlagSide|setFlagTexture|setFog|setForceGeneratorRTD|setFormation|setFormationTask|setFormDir|setFriend|setFromEditor|setFSMVariable|setFuel|setFuelCargo|setGroupIcon|setGroupIconParams|setGroupIconsSelectable|setGroupIconsVisible|setGroupId|setGroupIdGlobal|setGroupOwner|setGusts|setHideBehind|setHit|setHitIndex|setHitPointDamage|setHorizonParallaxCoef|setHUDMovementLevels|setIdentity|setImportance|setInfoPanel|setLeader|setLightAmbient|setLightAttenuation|setLightBrightness|setLightColor|setLightDayLight|setLightFlareMaxDistance|setLightFlareSize|setLightIntensity|setLightnings|setLightUseFlare|setLocalWindParams|setMagazineTurretAmmo|setMarkerAlpha|setMarkerAlphaLocal|setMarkerBrush|setMarkerBrushLocal|setMarkerColor|setMarkerColorLocal|setMarkerDir|setMarkerDirLocal|setMarkerPos|setMarkerPosLocal|setMarkerShape|setMarkerShapeLocal|setMarkerSize|setMarkerSizeLocal|setMarkerText|setMarkerTextLocal|setMarkerType|setMarkerTypeLocal|setMass|setMimic|setMousePosition|setMusicEffect|setMusicEventHandler|setName|setNameSound|setObjectArguments|setObjectMaterial|setObjectMaterialGlobal|setObjectProxy|setObjectTexture|setObjectTextureGlobal|setObjectViewDistance|setOvercast|setOwner|setOxygenRemaining|setParticleCircle|setParticleClass|setParticleFire|setParticleParams|setParticleRandom|setPilotCameraDirection|setPilotCameraRotation|setPilotCameraTarget|setPilotLight|setPiPEffect|setPitch|setPlateNumber|setPlayable|setPlayerRespawnTime|setPos|setPosASL|setPosASL2|setPosASLW|setPosATL|setPosition|setPosWorld|setPylonLoadOut|setPylonsPriority|setRadioMsg|setRain|setRainbow|setRandomLip|setRank|setRectangular|setRepairCargo|setRotorBrakeRTD|setShadowDistance|setShotParents|setSide|setSimpleTaskAlwaysVisible|setSimpleTaskCustomData|setSimpleTaskDescription|setSimpleTaskDestination|setSimpleTaskTarget|setSimpleTaskType|setSimulWeatherLayers|setSize|setSkill|setSlingLoad|setSoundEffect|setSpeaker|setSpeech|setSpeedMode|setStamina|setStaminaScheme|setStatValue|setSuppression|setSystemOfUnits|setTargetAge|setTaskMarkerOffset|setTaskResult|setTaskState|setTerrainGrid|setText|setTimeMultiplier|setTitleEffect|setToneMapping|setToneMappingParams|setTrafficDensity|setTrafficDistance|setTrafficGap|setTrafficSpeed|setTriggerActivation|setTriggerArea|setTriggerStatements|setTriggerText|setTriggerTimeout|setTriggerType|setType|setUnconscious|setUnitAbility|setUnitLoadout|setUnitPos|setUnitPosWeak|setUnitRank|setUnitRecoilCoefficient|setUnitTrait|setUnloadInCombat|setUserActionText|setUserMFDText|setUserMFDValue|setVariable|setVectorDir|setVectorDirAndUp|setVectorUp|setVehicleAmmo|setVehicleAmmoDef|setVehicleArmor|setVehicleCargo|setVehicleId|setVehicleInit|setVehicleLock|setVehiclePosition|setVehicleRadar|setVehicleReceiveRemoteTargets|setVehicleReportOwnPosition|setVehicleReportRemoteTargets|setVehicleTIPars|setVehicleVarName|setVelocity|setVelocityModelSpace|setVelocityTransformation|setViewDistance|setVisibleIfTreeCollapsed|setWantedRpmRTD|setWaves|setWaypointBehaviour|setWaypointCombatMode|setWaypointCompletionRadius|setWaypointDescription|setWaypointForceBehaviour|setWaypointFormation|setWaypointHousePosition|setWaypointLoiterRadius|setWaypointLoiterType|setWaypointName|setWaypointPosition|setWaypointScript|setWaypointSpeed|setWaypointStatements|setWaypointTimeout|setWaypointType|setWaypointVisible|setWeaponReloadingTime|setWind|setWindDir|setWindForce|setWindStr|setWingForceScaleRTD|setWPPos|show3DIcons|showChat|showCinemaBorder|showCommandingMenu|showCompass|showCuratorCompass|showGPS|showHUD|showLegend|showMap|shownArtilleryComputer|shownChat|shownCompass|shownCuratorCompass|showNewEditorObject|shownGPS|shownHUD|shownMap|shownPad|shownRadio|shownScoretable|shownUAVFeed|shownWarrant|shownWatch|showPad|showRadio|showScoretable|showSubtitles|showUAVFeed|showWarrant|showWatch|showWaypoint|showWaypoints|side|sideAmbientLife|sideChat|sideEmpty|sideEnemy|sideFriendly|sideLogic|sideRadio|sideUnknown|simpleTasks|simulationEnabled|simulCloudDensity|simulCloudOcclusion|simulInClouds|simulWeatherSync|sin|size|sizeOf|skill|skillFinal|skipTime|sleep|sliderPosition|sliderRange|sliderSetPosition|sliderSetRange|sliderSetSpeed|sliderSpeed|slingLoadAssistantShown|soldierMagazines|someAmmo|sort|soundVolume|speaker|speed|speedMode|splitString|sqrt|squadParams|stance|startLoadingScreen|stop|stopEngineRTD|stopped|str|sunOrMoon|supportInfo|suppressFor|surfaceIsWater|surfaceNormal|surfaceType|swimInDepth|switchableUnits|switchAction|switchCamera|switchGesture|switchLight|switchMove|synchronizedObjects|synchronizedTriggers|synchronizedWaypoints|synchronizeObjectsAdd|synchronizeObjectsRemove|synchronizeTrigger|synchronizeWaypoint|systemChat|systemOfUnits|tan|targetKnowledge|targets|targetsAggregate|targetsQuery|taskAlwaysVisible|taskChildren|taskCompleted|taskCustomData|taskDescription|taskDestination|taskHint|taskMarkerOffset|taskNull|taskParent|taskResult|taskState|taskType|teamMember|teamMemberNull|teamName|teams|teamSwitch|teamSwitchEnabled|teamType|terminate|terrainIntersect|terrainIntersectASL|terrainIntersectAtASL|text|textLog|textLogFormat|tg|time|timeMultiplier|titleCut|titleFadeOut|titleObj|titleRsc|titleText|toArray|toFixed|toLower|toString|toUpper|triggerActivated|triggerActivation|triggerArea|triggerAttachedVehicle|triggerAttachObject|triggerAttachVehicle|triggerDynamicSimulation|triggerStatements|triggerText|triggerTimeout|triggerTimeoutCurrent|triggerType|turretLocal|turretOwner|turretUnit|tvAdd|tvClear|tvCollapse|tvCollapseAll|tvCount|tvCurSel|tvData|tvDelete|tvExpand|tvExpandAll|tvPicture|tvPictureRight|tvSetColor|tvSetCurSel|tvSetData|tvSetPicture|tvSetPictureColor|tvSetPictureColorDisabled|tvSetPictureColorSelected|tvSetPictureRight|tvSetPictureRightColor|tvSetPictureRightColorDisabled|tvSetPictureRightColorSelected|tvSetSelectColor|tvSetText|tvSetTooltip|tvSetValue|tvSort|tvSortByValue|tvText|tvTooltip|tvValue|type|typeName|typeOf|UAVControl|uiNamespace|uiSleep|unassignCurator|unassignItem|unassignTeam|unassignVehicle|underwater|uniform|uniformContainer|uniformItems|uniformMagazines|unitAddons|unitAimPosition|unitAimPositionVisual|unitBackpack|unitIsUAV|unitPos|unitReady|unitRecoilCoefficient|units|unitsBelowHeight|unlinkItem|unlockAchievement|unregisterTask|updateDrawIcon|updateMenuItem|updateObjectTree|useAIOperMapObstructionTest|useAISteeringComponent|useAudioTimeForMoves|userInputDisabled|vectorAdd|vectorCos|vectorCrossProduct|vectorDiff|vectorDir|vectorDirVisual|vectorDistance|vectorDistanceSqr|vectorDotProduct|vectorFromTo|vectorMagnitude|vectorMagnitudeSqr|vectorModelToWorld|vectorModelToWorldVisual|vectorMultiply|vectorNormalized|vectorUp|vectorUpVisual|vectorWorldToModel|vectorWorldToModelVisual|vehicle|vehicleCargoEnabled|vehicleChat|vehicleRadio|vehicleReceiveRemoteTargets|vehicleReportOwnPosition|vehicleReportRemoteTargets|vehicles|vehicleVarName|velocity|velocityModelSpace|verifySignature|vest|vestContainer|vestItems|vestMagazines|viewDistance|visibleCompass|visibleGPS|visibleMap|visiblePosition|visiblePositionASL|visibleScoretable|visibleWatch|waitUntil|waves|waypointAttachedObject|waypointAttachedVehicle|waypointAttachObject|waypointAttachVehicle|waypointBehaviour|waypointCombatMode|waypointCompletionRadius|waypointDescription|waypointForceBehaviour|waypointFormation|waypointHousePosition|waypointLoiterRadius|waypointLoiterType|waypointName|waypointPosition|waypoints|waypointScript|waypointsEnabledUAV|waypointShow|waypointSpeed|waypointStatements|waypointTimeout|waypointTimeoutCurrent|waypointType|waypointVisible|weaponAccessories|weaponAccessoriesCargo|weaponCargo|weaponDirection|weaponInertia|weaponLowered|weapons|weaponsItems|weaponsItemsCargo|weaponState|weaponsTurret|weightRTD|west|WFSideText|wind|windDir|windRTD|windStr|wingsForcesRTD|worldName|worldSize|worldToModel|worldToModelVisual|worldToScreen)\\b/i,\n    number:\n      /(?:\\$|\\b0x)[\\da-f]+\\b|(?:\\B\\.\\d+|\\b\\d+(?:\\.\\d+)?)(?:e[+-]?\\d+)?\\b/i,\n    operator: /##|>>|&&|\\|\\||[!=<>]=?|[-+*/%#^]|\\b(?:and|mod|not|or)\\b/i,\n    'magic-variable': {\n      pattern:\n        /\\b(?:this|thisList|thisTrigger|_exception|_fnc_scriptName|_fnc_scriptNameParent|_forEachIndex|_this|_thisEventHandler|_thisFSM|_thisScript|_x)\\b/i,\n      alias: 'keyword'\n    },\n    constant: /\\bDIK(?:_[a-z\\d]+)+\\b/i\n  })\n  Prism.languages.insertBefore('sqf', 'string', {\n    macro: {\n      pattern: /(^[ \\t]*)#[a-z](?:[^\\r\\n\\\\]|\\\\(?:\\r\\n|[\\s\\S]))*/im,\n      lookbehind: true,\n      greedy: true,\n      alias: 'property',\n      inside: {\n        directive: {\n          pattern: /#[a-z]+\\b/i,\n          alias: 'keyword'\n        },\n        comment: Prism.languages.sqf.comment\n      }\n    }\n  })\n  delete Prism.languages.sqf['class-name']\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\nsquirrel.displayName = 'squirrel'\nsquirrel.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function squirrel(Prism) {\n  Prism.register(refractorClike)\n  Prism.languages.squirrel = Prism.languages.extend('clike', {\n    comment: [\n      Prism.languages.clike['comment'][0],\n      {\n        pattern: /(^|[^\\\\:])(?:\\/\\/|#).*/,\n        lookbehind: true,\n        greedy: true\n      }\n    ],\n    string: {\n      pattern: /(^|[^\\\\\"'@])(?:@\"(?:[^\"]|\"\")*\"(?!\")|\"(?:[^\\\\\\r\\n\"]|\\\\.)*\")/,\n      lookbehind: true,\n      greedy: true\n    },\n    'class-name': {\n      pattern: /(\\b(?:class|enum|extends|instanceof)\\s+)\\w+(?:\\.\\w+)*/,\n      lookbehind: true,\n      inside: {\n        punctuation: /\\./\n      }\n    },\n    keyword:\n      /\\b(?:__FILE__|__LINE__|base|break|case|catch|class|clone|const|constructor|continue|default|delete|else|enum|extends|for|foreach|function|if|in|instanceof|local|null|resume|return|static|switch|this|throw|try|typeof|while|yield)\\b/,\n    number: /\\b(?:0x[0-9a-fA-F]+|\\d+(?:\\.(?:\\d+|[eE][+-]?\\d+))?)\\b/,\n    operator: /\\+\\+|--|<=>|<[-<]|>>>?|&&?|\\|\\|?|[-+*/%!=<>]=?|[~^]|::?/,\n    punctuation: /[(){}\\[\\],;.]/\n  })\n  Prism.languages.insertBefore('squirrel', 'string', {\n    char: {\n      pattern: /(^|[^\\\\\"'])'(?:[^\\\\']|\\\\(?:[xuU][0-9a-fA-F]{0,8}|[\\s\\S]))'/,\n      lookbehind: true,\n      greedy: true\n    }\n  })\n  Prism.languages.insertBefore('squirrel', 'operator', {\n    'attribute-punctuation': {\n      pattern: /<\\/|\\/>/,\n      alias: 'important'\n    },\n    lambda: {\n      pattern: /@(?=\\()/,\n      alias: 'operator'\n    }\n  })\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nstan.displayName = 'stan'\nstan.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function stan(Prism) {\n  ;(function (Prism) {\n    // https://mc-stan.org/docs/2_28/reference-manual/bnf-grammars.html\n\n    var higherOrderFunctions =\n      /\\b(?:algebra_solver|algebra_solver_newton|integrate_1d|integrate_ode|integrate_ode_bdf|integrate_ode_rk45|map_rect|ode_(?:adams|bdf|ckrk|rk45)(?:_tol)?|ode_adjoint_tol_ctl|reduce_sum|reduce_sum_static)\\b/\n    Prism.languages.stan = {\n      comment: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\/|#(?!include).*/,\n      string: {\n        // String literals can contain spaces and any printable ASCII characters except for \" and \\\n        // https://mc-stan.org/docs/2_24/reference-manual/print-statements-section.html#string-literals\n        pattern: /\"[\\x20\\x21\\x23-\\x5B\\x5D-\\x7E]*\"/,\n        greedy: true\n      },\n      directive: {\n        pattern: /^([ \\t]*)#include\\b.*/m,\n        lookbehind: true,\n        alias: 'property'\n      },\n      'function-arg': {\n        pattern: RegExp(\n          '(' +\n            higherOrderFunctions.source +\n            /\\s*\\(\\s*/.source +\n            ')' +\n            /[a-zA-Z]\\w*/.source\n        ),\n        lookbehind: true,\n        alias: 'function'\n      },\n      constraint: {\n        pattern: /(\\b(?:int|matrix|real|row_vector|vector)\\s*)<[^<>]*>/,\n        lookbehind: true,\n        inside: {\n          expression: {\n            pattern: /(=\\s*)\\S(?:\\S|\\s+(?!\\s))*?(?=\\s*(?:>$|,\\s*\\w+\\s*=))/,\n            lookbehind: true,\n            inside: null // see below\n          },\n          property: /\\b[a-z]\\w*(?=\\s*=)/i,\n          operator: /=/,\n          punctuation: /^<|>$|,/\n        }\n      },\n      keyword: [\n        {\n          pattern:\n            /\\bdata(?=\\s*\\{)|\\b(?:functions|generated|model|parameters|quantities|transformed)\\b/,\n          alias: 'program-block'\n        },\n        /\\b(?:array|break|cholesky_factor_corr|cholesky_factor_cov|complex|continue|corr_matrix|cov_matrix|data|else|for|if|in|increment_log_prob|int|matrix|ordered|positive_ordered|print|real|reject|return|row_vector|simplex|target|unit_vector|vector|void|while)\\b/,\n        // these are functions that are known to take another function as their first argument.\n        higherOrderFunctions\n      ],\n      function: /\\b[a-z]\\w*(?=\\s*\\()/i,\n      number:\n        /(?:\\b\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\B\\.\\d+(?:_\\d+)*)(?:E[+-]?\\d+(?:_\\d+)*)?i?(?!\\w)/i,\n      boolean: /\\b(?:false|true)\\b/,\n      operator: /<-|\\.[*/]=?|\\|\\|?|&&|[!=<>+\\-*/]=?|['^%~?:]/,\n      punctuation: /[()\\[\\]{},;]/\n    }\n    Prism.languages.stan.constraint.inside.expression.inside =\n      Prism.languages.stan\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorJava from './java.js'\nimport refractorMata from './mata.js'\nimport refractorPython from './python.js'\nstata.displayName = 'stata'\nstata.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function stata(Prism) {\n  Prism.register(refractorJava)\n  Prism.register(refractorMata)\n  Prism.register(refractorPython)\n  // https://www.stata.com/manuals/u.pdf\n  // https://www.stata.com/manuals/p.pdf\n\n  Prism.languages.stata = {\n    comment: [\n      {\n        pattern: /(^[ \\t]*)\\*.*/m,\n        lookbehind: true,\n        greedy: true\n      },\n      {\n        pattern: /(^|\\s)\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n        lookbehind: true,\n        greedy: true\n      }\n    ],\n    'string-literal': {\n      pattern: /\"[^\"\\r\\n]*\"|[\u2018`']\".*?\"[\u2019`']/,\n      greedy: true,\n      inside: {\n        interpolation: {\n          pattern: /\\$\\{[^{}]*\\}|[\u2018`']\\w[^\u2019`'\\r\\n]*[\u2019`']/,\n          inside: {\n            punctuation: /^\\$\\{|\\}$/,\n            expression: {\n              pattern: /[\\s\\S]+/,\n              inside: null // see below\n            }\n          }\n        },\n        string: /[\\s\\S]+/\n      }\n    },\n    mata: {\n      pattern: /(^[ \\t]*mata[ \\t]*:)[\\s\\S]+?(?=^end\\b)/m,\n      lookbehind: true,\n      greedy: true,\n      alias: 'language-mata',\n      inside: Prism.languages.mata\n    },\n    java: {\n      pattern: /(^[ \\t]*java[ \\t]*:)[\\s\\S]+?(?=^end\\b)/m,\n      lookbehind: true,\n      greedy: true,\n      alias: 'language-java',\n      inside: Prism.languages.java\n    },\n    python: {\n      pattern: /(^[ \\t]*python[ \\t]*:)[\\s\\S]+?(?=^end\\b)/m,\n      lookbehind: true,\n      greedy: true,\n      alias: 'language-python',\n      inside: Prism.languages.python\n    },\n    command: {\n      pattern:\n        /(^[ \\t]*(?:\\.[ \\t]+)?(?:(?:bayes|bootstrap|by|bysort|capture|collect|fmm|fp|frame|jackknife|mfp|mi|nestreg|noisily|permute|quietly|rolling|simulate|statsby|stepwise|svy|version|xi)\\b[^:\\r\\n]*:[ \\t]*|(?:capture|noisily|quietly|version)[ \\t]+)?)[a-zA-Z]\\w*/m,\n      lookbehind: true,\n      greedy: true,\n      alias: 'keyword'\n    },\n    variable: /\\$\\w+|[\u2018`']\\w[^\u2019`'\\r\\n]*[\u2019`']/,\n    keyword:\n      /\\b(?:bayes|bootstrap|by|bysort|capture|clear|collect|fmm|fp|frame|if|in|jackknife|mi[ \\t]+estimate|mfp|nestreg|noisily|of|permute|quietly|rolling|simulate|sort|statsby|stepwise|svy|varlist|version|xi)\\b/,\n    boolean: /\\b(?:off|on)\\b/,\n    number: /\\b\\d+(?:\\.\\d+)?\\b|\\B\\.\\d+/,\n    function: /\\b[a-z_]\\w*(?=\\()/i,\n    operator: /\\+\\+|--|##?|[<>!=~]=?|[+\\-*^&|/]/,\n    punctuation: /[(){}[\\],:]/\n  }\n  Prism.languages.stata[\n    'string-literal'\n  ].inside.interpolation.inside.expression.inside = Prism.languages.stata\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\niecst.displayName = 'iecst'\niecst.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function iecst(Prism) {\n  Prism.languages.iecst = {\n    comment: [\n      {\n        pattern:\n          /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?(?:\\*\\/|$)|\\(\\*[\\s\\S]*?(?:\\*\\)|$)|\\{[\\s\\S]*?(?:\\}|$))/,\n        lookbehind: true,\n        greedy: true\n      },\n      {\n        pattern: /(^|[^\\\\:])\\/\\/.*/,\n        lookbehind: true,\n        greedy: true\n      }\n    ],\n    string: {\n      pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      greedy: true\n    },\n    keyword: [\n      /\\b(?:END_)?(?:PROGRAM|CONFIGURATION|INTERFACE|FUNCTION_BLOCK|FUNCTION|ACTION|TRANSITION|TYPE|STRUCT|(?:INITIAL_)?STEP|NAMESPACE|LIBRARY|CHANNEL|FOLDER|RESOURCE|VAR_(?:ACCESS|CONFIG|EXTERNAL|GLOBAL|INPUT|IN_OUT|OUTPUT|TEMP)|VAR|METHOD|PROPERTY)\\b/i,\n      /\\b(?:AT|BY|(?:END_)?(?:CASE|FOR|IF|REPEAT|WHILE)|CONSTANT|CONTINUE|DO|ELSE|ELSIF|EXIT|EXTENDS|FROM|GET|GOTO|IMPLEMENTS|JMP|NON_RETAIN|OF|PRIVATE|PROTECTED|PUBLIC|RETAIN|RETURN|SET|TASK|THEN|TO|UNTIL|USING|WITH|__CATCH|__ENDTRY|__FINALLY|__TRY)\\b/\n    ],\n    'class-name':\n      /\\b(?:ANY|ARRAY|BOOL|BYTE|U?(?:D|L|S)?INT|(?:D|L)?WORD|DATE(?:_AND_TIME)?|DT|L?REAL|POINTER|STRING|TIME(?:_OF_DAY)?|TOD)\\b/,\n    address: {\n      pattern: /%[IQM][XBWDL][\\d.]*|%[IQ][\\d.]*/,\n      alias: 'symbol'\n    },\n    number:\n      /\\b(?:16#[\\da-f]+|2#[01_]+|0x[\\da-f]+)\\b|\\b(?:D|DT|T|TOD)#[\\d_shmd:]*|\\b[A-Z]*#[\\d.,_]*|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n    boolean: /\\b(?:FALSE|NULL|TRUE)\\b/,\n    operator:\n      /S?R?:?=>?|&&?|\\*\\*?|<[=>]?|>=?|[-:^/+#]|\\b(?:AND|EQ|EXPT|GE|GT|LE|LT|MOD|NE|NOT|OR|XOR)\\b/,\n    function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n    punctuation: /[()[\\].,;]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nsupercollider.displayName = 'supercollider'\nsupercollider.aliases = ['sclang']\n\n/** @param {Refractor} Prism */\nexport default function supercollider(Prism) {\n  Prism.languages.supercollider = {\n    comment: {\n      pattern:\n        /\\/\\/.*|\\/\\*(?:[^*/]|\\*(?!\\/)|\\/(?!\\*)|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*\\*\\//,\n      greedy: true\n    },\n    string: {\n      pattern: /(^|[^\\\\])\"(?:[^\"\\\\]|\\\\[\\s\\S])*\"/,\n      lookbehind: true,\n      greedy: true\n    },\n    char: {\n      pattern: /\\$(?:[^\\\\\\r\\n]|\\\\.)/,\n      greedy: true\n    },\n    symbol: {\n      pattern: /(^|[^\\\\])'(?:[^'\\\\]|\\\\[\\s\\S])*'|\\\\\\w+/,\n      lookbehind: true,\n      greedy: true\n    },\n    keyword: /\\b(?:_|arg|classvar|const|nil|var|while)\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    label: {\n      pattern: /\\b[a-z_]\\w*(?=\\s*:)/,\n      alias: 'property'\n    },\n    number:\n      /\\b(?:inf|pi|0x[0-9a-fA-F]+|\\d+(?:\\.\\d+)?(?:[eE][+-]?\\d+)?(?:pi)?|\\d+r[0-9a-zA-Z]+(?:\\.[0-9a-zA-Z]+)?|\\d+[sb]{1,4}\\d*)\\b/,\n    'class-name': /\\b[A-Z]\\w*\\b/,\n    operator:\n      /\\.{2,3}|#(?![[{])|&&|[!=]==?|\\+>>|\\+{1,3}|-[->]|=>|>>|\\?\\?|@\\|?@|\\|(?:@|[!=]=)?\\||!\\?|<[!=>]|\\*{1,2}|<{2,3}\\*?|[-!%&/<>?@|=`]/,\n    punctuation: /[{}()[\\].:,;]|#[[{]/\n  }\n  Prism.languages.sclang = Prism.languages.supercollider\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nsystemd.displayName = 'systemd'\nsystemd.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function systemd(Prism) {\n  // https://www.freedesktop.org/software/systemd/man/systemd.syntax.html\n\n  ;(function (Prism) {\n    var comment = {\n      pattern: /^[;#].*/m,\n      greedy: true\n    }\n    var quotesSource = /\"(?:[^\\r\\n\"\\\\]|\\\\(?:[^\\r]|\\r\\n?))*\"(?!\\S)/.source\n    Prism.languages.systemd = {\n      comment: comment,\n      section: {\n        pattern: /^\\[[^\\n\\r\\[\\]]*\\](?=[ \\t]*$)/m,\n        greedy: true,\n        inside: {\n          punctuation: /^\\[|\\]$/,\n          'section-name': {\n            pattern: /[\\s\\S]+/,\n            alias: 'selector'\n          }\n        }\n      },\n      key: {\n        pattern: /^[^\\s=]+(?=[ \\t]*=)/m,\n        greedy: true,\n        alias: 'attr-name'\n      },\n      value: {\n        // This pattern is quite complex because of two properties:\n        //  1) Quotes (strings) must be preceded by a space. Since we can't use lookbehinds, we have to \"resolve\"\n        //     the lookbehind. You will see this in the main loop where spaces are handled separately.\n        //  2) Line continuations.\n        //     After line continuations, empty lines and comments are ignored so we have to consume them.\n        pattern: RegExp(\n          /(=[ \\t]*(?!\\s))/.source +\n            // the value either starts with quotes or not\n            '(?:' +\n            quotesSource +\n            '|(?=[^\"\\r\\n]))' +\n            // main loop\n            '(?:' +\n            (/[^\\s\\\\]/.source +\n              // handle spaces separately because of quotes\n              '|' +\n              '[ \\t]+(?:(?![ \\t\"])|' +\n              quotesSource +\n              ')' +\n              // line continuation\n              '|' +\n              /\\\\[\\r\\n]+(?:[#;].*[\\r\\n]+)*(?![#;])/.source) +\n            ')*'\n        ),\n        lookbehind: true,\n        greedy: true,\n        alias: 'attr-value',\n        inside: {\n          comment: comment,\n          quoted: {\n            pattern: RegExp(/(^|\\s)/.source + quotesSource),\n            lookbehind: true,\n            greedy: true\n          },\n          punctuation: /\\\\$/m,\n          boolean: {\n            pattern: /^(?:false|no|off|on|true|yes)$/,\n            greedy: true\n          }\n        }\n      },\n      punctuation: /=/\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nt4Templating.displayName = 't4-templating'\nt4Templating.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function t4Templating(Prism) {\n  ;(function (Prism) {\n    function createBlock(prefix, inside, contentAlias) {\n      return {\n        pattern: RegExp('<#' + prefix + '[\\\\s\\\\S]*?#>'),\n        alias: 'block',\n        inside: {\n          delimiter: {\n            pattern: RegExp('^<#' + prefix + '|#>$'),\n            alias: 'important'\n          },\n          content: {\n            pattern: /[\\s\\S]+/,\n            inside: inside,\n            alias: contentAlias\n          }\n        }\n      }\n    }\n    function createT4(insideLang) {\n      var grammar = Prism.languages[insideLang]\n      var className = 'language-' + insideLang\n      return {\n        block: {\n          pattern: /<#[\\s\\S]+?#>/,\n          inside: {\n            directive: createBlock('@', {\n              'attr-value': {\n                pattern: /=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+)/,\n                inside: {\n                  punctuation: /^=|^[\"']|[\"']$/\n                }\n              },\n              keyword: /\\b\\w+(?=\\s)/,\n              'attr-name': /\\b\\w+/\n            }),\n            expression: createBlock('=', grammar, className),\n            'class-feature': createBlock('\\\\+', grammar, className),\n            standard: createBlock('', grammar, className)\n          }\n        }\n      }\n    }\n    Prism.languages['t4-templating'] = Object.defineProperty({}, 'createT4', {\n      value: createT4\n    })\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorCsharp from './csharp.js'\nimport refractorT4Templating from './t4-templating.js'\nt4Cs.displayName = 't4-cs'\nt4Cs.aliases = ['t4']\n\n/** @param {Refractor} Prism */\nexport default function t4Cs(Prism) {\n  Prism.register(refractorCsharp)\n  Prism.register(refractorT4Templating)\n  Prism.languages.t4 = Prism.languages['t4-cs'] =\n    Prism.languages['t4-templating'].createT4('csharp')\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorT4Templating from './t4-templating.js'\nimport refractorVbnet from './vbnet.js'\nt4Vb.displayName = 't4-vb'\nt4Vb.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function t4Vb(Prism) {\n  Prism.register(refractorT4Templating)\n  Prism.register(refractorVbnet)\n  Prism.languages['t4-vb'] = Prism.languages['t4-templating'].createT4('vbnet')\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorYaml from './yaml.js'\ntap.displayName = 'tap'\ntap.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function tap(Prism) {\n  Prism.register(refractorYaml)\n  // https://en.wikipedia.org/wiki/Test_Anything_Protocol\n\n  Prism.languages.tap = {\n    fail: /not ok[^#{\\n\\r]*/,\n    pass: /ok[^#{\\n\\r]*/,\n    pragma: /pragma [+-][a-z]+/,\n    bailout: /bail out!.*/i,\n    version: /TAP version \\d+/i,\n    plan: /\\b\\d+\\.\\.\\d+(?: +#.*)?/,\n    subtest: {\n      pattern: /# Subtest(?:: .*)?/,\n      greedy: true\n    },\n    punctuation: /[{}]/,\n    directive: /#.*/,\n    yamlish: {\n      pattern: /(^[ \\t]*)---[\\s\\S]*?[\\r\\n][ \\t]*\\.\\.\\.$/m,\n      lookbehind: true,\n      inside: Prism.languages.yaml,\n      alias: 'language-yaml'\n    }\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ntcl.displayName = 'tcl'\ntcl.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function tcl(Prism) {\n  Prism.languages.tcl = {\n    comment: {\n      pattern: /(^|[^\\\\])#.*/,\n      lookbehind: true\n    },\n    string: {\n      pattern: /\"(?:[^\"\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*\"/,\n      greedy: true\n    },\n    variable: [\n      {\n        pattern: /(\\$)(?:::)?(?:[a-zA-Z0-9]+::)*\\w+/,\n        lookbehind: true\n      },\n      {\n        pattern: /(\\$)\\{[^}]+\\}/,\n        lookbehind: true\n      },\n      {\n        pattern: /(^[\\t ]*set[ \\t]+)(?:::)?(?:[a-zA-Z0-9]+::)*\\w+/m,\n        lookbehind: true\n      }\n    ],\n    function: {\n      pattern: /(^[\\t ]*proc[ \\t]+)\\S+/m,\n      lookbehind: true\n    },\n    builtin: [\n      {\n        pattern:\n          /(^[\\t ]*)(?:break|class|continue|error|eval|exit|for|foreach|if|proc|return|switch|while)\\b/m,\n        lookbehind: true\n      },\n      /\\b(?:else|elseif)\\b/\n    ],\n    scope: {\n      pattern: /(^[\\t ]*)(?:global|upvar|variable)\\b/m,\n      lookbehind: true,\n      alias: 'constant'\n    },\n    keyword: {\n      pattern:\n        /(^[\\t ]*|\\[)(?:Safe_Base|Tcl|after|append|apply|array|auto_(?:execok|import|load|mkindex|qualify|reset)|automkindex_old|bgerror|binary|catch|cd|chan|clock|close|concat|dde|dict|encoding|eof|exec|expr|fblocked|fconfigure|fcopy|file(?:event|name)?|flush|gets|glob|history|http|incr|info|interp|join|lappend|lassign|lindex|linsert|list|llength|load|lrange|lrepeat|lreplace|lreverse|lsearch|lset|lsort|math(?:func|op)|memory|msgcat|namespace|open|package|parray|pid|pkg_mkIndex|platform|puts|pwd|re_syntax|read|refchan|regexp|registry|regsub|rename|scan|seek|set|socket|source|split|string|subst|tcl(?:_endOfWord|_findLibrary|startOf(?:Next|Previous)Word|test|vars|wordBreak(?:After|Before))|tell|time|tm|trace|unknown|unload|unset|update|uplevel|vwait)\\b/m,\n      lookbehind: true\n    },\n    operator:\n      /!=?|\\*\\*?|==|&&?|\\|\\|?|<[=<]?|>[=>]?|[-+~\\/%?^]|\\b(?:eq|in|ne|ni)\\b/,\n    punctuation: /[{}()\\[\\]]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\nimport refractorMarkupTemplating from './markup-templating.js'\ntt2.displayName = 'tt2'\ntt2.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function tt2(Prism) {\n  Prism.register(refractorClike)\n  Prism.register(refractorMarkupTemplating)\n  ;(function (Prism) {\n    Prism.languages.tt2 = Prism.languages.extend('clike', {\n      comment: /#.*|\\[%#[\\s\\S]*?%\\]/,\n      keyword:\n        /\\b(?:BLOCK|CALL|CASE|CATCH|CLEAR|DEBUG|DEFAULT|ELSE|ELSIF|END|FILTER|FINAL|FOREACH|GET|IF|IN|INCLUDE|INSERT|LAST|MACRO|META|NEXT|PERL|PROCESS|RAWPERL|RETURN|SET|STOP|SWITCH|TAGS|THROW|TRY|UNLESS|USE|WHILE|WRAPPER)\\b/,\n      punctuation: /[[\\]{},()]/\n    })\n    Prism.languages.insertBefore('tt2', 'number', {\n      operator: /=[>=]?|!=?|<=?|>=?|&&|\\|\\|?|\\b(?:and|not|or)\\b/,\n      variable: {\n        pattern: /\\b[a-z]\\w*(?:\\s*\\.\\s*(?:\\d+|\\$?[a-z]\\w*))*\\b/i\n      }\n    })\n    Prism.languages.insertBefore('tt2', 'keyword', {\n      delimiter: {\n        pattern: /^(?:\\[%|%%)-?|-?%\\]$/,\n        alias: 'punctuation'\n      }\n    })\n    Prism.languages.insertBefore('tt2', 'string', {\n      'single-quoted-string': {\n        pattern: /'[^\\\\']*(?:\\\\[\\s\\S][^\\\\']*)*'/,\n        greedy: true,\n        alias: 'string'\n      },\n      'double-quoted-string': {\n        pattern: /\"[^\\\\\"]*(?:\\\\[\\s\\S][^\\\\\"]*)*\"/,\n        greedy: true,\n        alias: 'string',\n        inside: {\n          variable: {\n            pattern: /\\$(?:[a-z]\\w*(?:\\.(?:\\d+|\\$?[a-z]\\w*))*)/i\n          }\n        }\n      }\n    })\n\n    // The different types of TT2 strings \"replace\" the C-like standard string\n    delete Prism.languages.tt2.string\n    Prism.hooks.add('before-tokenize', function (env) {\n      var tt2Pattern = /\\[%[\\s\\S]+?%\\]/g\n      Prism.languages['markup-templating'].buildPlaceholders(\n        env,\n        'tt2',\n        tt2Pattern\n      )\n    })\n    Prism.hooks.add('after-tokenize', function (env) {\n      Prism.languages['markup-templating'].tokenizePlaceholders(env, 'tt2')\n    })\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ntoml.displayName = 'toml'\ntoml.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function toml(Prism) {\n  ;(function (Prism) {\n    var key = /(?:[\\w-]+|'[^'\\n\\r]*'|\"(?:\\\\.|[^\\\\\"\\r\\n])*\")/.source\n\n    /**\n     * @param {string} pattern\n     */\n    function insertKey(pattern) {\n      return pattern.replace(/__/g, function () {\n        return key\n      })\n    }\n    Prism.languages.toml = {\n      comment: {\n        pattern: /#.*/,\n        greedy: true\n      },\n      table: {\n        pattern: RegExp(\n          insertKey(\n            /(^[\\t ]*\\[\\s*(?:\\[\\s*)?)__(?:\\s*\\.\\s*__)*(?=\\s*\\])/.source\n          ),\n          'm'\n        ),\n        lookbehind: true,\n        greedy: true,\n        alias: 'class-name'\n      },\n      key: {\n        pattern: RegExp(\n          insertKey(/(^[\\t ]*|[{,]\\s*)__(?:\\s*\\.\\s*__)*(?=\\s*=)/.source),\n          'm'\n        ),\n        lookbehind: true,\n        greedy: true,\n        alias: 'property'\n      },\n      string: {\n        pattern:\n          /\"\"\"(?:\\\\[\\s\\S]|[^\\\\])*?\"\"\"|'''[\\s\\S]*?'''|'[^'\\n\\r]*'|\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/,\n        greedy: true\n      },\n      date: [\n        {\n          // Offset Date-Time, Local Date-Time, Local Date\n          pattern:\n            /\\b\\d{4}-\\d{2}-\\d{2}(?:[T\\s]\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|[+-]\\d{2}:\\d{2})?)?\\b/i,\n          alias: 'number'\n        },\n        {\n          // Local Time\n          pattern: /\\b\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?\\b/,\n          alias: 'number'\n        }\n      ],\n      number:\n        /(?:\\b0(?:x[\\da-zA-Z]+(?:_[\\da-zA-Z]+)*|o[0-7]+(?:_[0-7]+)*|b[10]+(?:_[10]+)*))\\b|[-+]?\\b\\d+(?:_\\d+)*(?:\\.\\d+(?:_\\d+)*)?(?:[eE][+-]?\\d+(?:_\\d+)*)?\\b|[-+]?\\b(?:inf|nan)\\b/,\n      boolean: /\\b(?:false|true)\\b/,\n      punctuation: /[.,=[\\]{}]/\n    }\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ntremor.displayName = 'tremor'\ntremor.aliases = ['trickle', 'troy']\n\n/** @param {Refractor} Prism */\nexport default function tremor(Prism) {\n  ;(function (Prism) {\n    Prism.languages.tremor = {\n      comment: {\n        pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|(?:--|\\/\\/|#).*)/,\n        lookbehind: true\n      },\n      'interpolated-string': null,\n      // see below\n      extractor: {\n        pattern: /\\b[a-z_]\\w*\\|(?:[^\\r\\n\\\\|]|\\\\(?:\\r\\n|[\\s\\S]))*\\|/i,\n        greedy: true,\n        inside: {\n          regex: {\n            pattern: /(^re)\\|[\\s\\S]+/,\n            lookbehind: true\n          },\n          function: /^\\w+/,\n          value: /\\|[\\s\\S]+/\n        }\n      },\n      identifier: {\n        pattern: /`[^`]*`/,\n        greedy: true\n      },\n      function: /\\b[a-z_]\\w*(?=\\s*(?:::\\s*<|\\())\\b/,\n      keyword:\n        /\\b(?:args|as|by|case|config|connect|connector|const|copy|create|default|define|deploy|drop|each|emit|end|erase|event|flow|fn|for|from|group|having|insert|into|intrinsic|let|links|match|merge|mod|move|of|operator|patch|pipeline|recur|script|select|set|sliding|state|stream|to|tumbling|update|use|when|where|window|with)\\b/,\n      boolean: /\\b(?:false|null|true)\\b/i,\n      number:\n        /\\b(?:0b[01_]*|0x[0-9a-fA-F_]*|\\d[\\d_]*(?:\\.\\d[\\d_]*)?(?:[Ee][+-]?[\\d_]+)?)\\b/,\n      'pattern-punctuation': {\n        pattern: /%(?=[({[])/,\n        alias: 'punctuation'\n      },\n      operator:\n        /[-+*\\/%~!^]=?|=[=>]?|&[&=]?|\\|[|=]?|<<?=?|>>?>?=?|(?:absent|and|not|or|present|xor)\\b/,\n      punctuation: /::|[;\\[\\]()\\{\\},.:]/\n    }\n    var interpolationPattern =\n      /#\\{(?:[^\"{}]|\\{[^{}]*\\}|\"(?:[^\"\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*\")*\\}/.source\n    Prism.languages.tremor['interpolated-string'] = {\n      pattern: RegExp(\n        /(^|[^\\\\])/.source +\n          '(?:' +\n          '\"\"\"(?:' +\n          /[^\"\\\\#]|\\\\[\\s\\S]|\"(?!\"\")|#(?!\\{)/.source +\n          '|' +\n          interpolationPattern +\n          ')*\"\"\"' +\n          '|' +\n          '\"(?:' +\n          /[^\"\\\\\\r\\n#]|\\\\(?:\\r\\n|[\\s\\S])|#(?!\\{)/.source +\n          '|' +\n          interpolationPattern +\n          ')*\"' +\n          ')'\n      ),\n      lookbehind: true,\n      greedy: true,\n      inside: {\n        interpolation: {\n          pattern: RegExp(interpolationPattern),\n          inside: {\n            punctuation: /^#\\{|\\}$/,\n            expression: {\n              pattern: /[\\s\\S]+/,\n              inside: Prism.languages.tremor\n            }\n          }\n        },\n        string: /[\\s\\S]+/\n      }\n    }\n    Prism.languages.troy = Prism.languages['tremor']\n    Prism.languages.trickle = Prism.languages['tremor']\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\ntyposcript.displayName = 'typoscript'\ntyposcript.aliases = ['tsconfig']\n\n/** @param {Refractor} Prism */\nexport default function typoscript(Prism) {\n  ;(function (Prism) {\n    var keywords =\n      /\\b(?:ACT|ACTIFSUB|CARRAY|CASE|CLEARGIF|COA|COA_INT|CONSTANTS|CONTENT|CUR|EDITPANEL|EFFECT|EXT|FILE|FLUIDTEMPLATE|FORM|FRAME|FRAMESET|GIFBUILDER|GMENU|GMENU_FOLDOUT|GMENU_LAYERS|GP|HMENU|HRULER|HTML|IENV|IFSUB|IMAGE|IMGMENU|IMGMENUITEM|IMGTEXT|IMG_RESOURCE|INCLUDE_TYPOSCRIPT|JSMENU|JSMENUITEM|LLL|LOAD_REGISTER|NO|PAGE|RECORDS|RESTORE_REGISTER|TEMPLATE|TEXT|TMENU|TMENUITEM|TMENU_LAYERS|USER|USER_INT|_GIFBUILDER|global|globalString|globalVar)\\b/\n    Prism.languages.typoscript = {\n      comment: [\n        {\n          // multiline comments /* */\n          pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n          lookbehind: true\n        },\n        {\n          // double-slash comments - ignored when backslashes or colon is found in front\n          // also ignored whenever directly after an equal-sign, because it would probably be an url without protocol\n          pattern: /(^|[^\\\\:= \\t]|(?:^|[^= \\t])[ \\t]+)\\/\\/.*/,\n          lookbehind: true,\n          greedy: true\n        },\n        {\n          // hash comments - ignored when leading quote is found for hex colors in strings\n          pattern: /(^|[^\"'])#.*/,\n          lookbehind: true,\n          greedy: true\n        }\n      ],\n      function: [\n        {\n          // old include style\n          pattern:\n            /<INCLUDE_TYPOSCRIPT:\\s*source\\s*=\\s*(?:\"[^\"\\r\\n]*\"|'[^'\\r\\n]*')\\s*>/,\n          inside: {\n            string: {\n              pattern: /\"[^\"\\r\\n]*\"|'[^'\\r\\n]*'/,\n              inside: {\n                keyword: keywords\n              }\n            },\n            keyword: {\n              pattern: /INCLUDE_TYPOSCRIPT/\n            }\n          }\n        },\n        {\n          // new include style\n          pattern: /@import\\s*(?:\"[^\"\\r\\n]*\"|'[^'\\r\\n]*')/,\n          inside: {\n            string: /\"[^\"\\r\\n]*\"|'[^'\\r\\n]*'/\n          }\n        }\n      ],\n      string: {\n        pattern: /^([^=]*=[< ]?)(?:(?!\\]\\n).)*/,\n        lookbehind: true,\n        inside: {\n          function: /\\{\\$.*\\}/,\n          // constants include\n          keyword: keywords,\n          number: /^\\d+$/,\n          punctuation: /[,|:]/\n        }\n      },\n      keyword: keywords,\n      number: {\n        // special highlighting for indexes of arrays in tags\n        pattern: /\\b\\d+\\s*[.{=]/,\n        inside: {\n          operator: /[.{=]/\n        }\n      },\n      tag: {\n        pattern: /\\.?[-\\w\\\\]+\\.?/,\n        inside: {\n          punctuation: /\\./\n        }\n      },\n      punctuation: /[{}[\\];(),.:|]/,\n      operator: /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/\n    }\n    Prism.languages.tsconfig = Prism.languages.typoscript\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nunrealscript.displayName = 'unrealscript'\nunrealscript.aliases = ['uc', 'uscript']\n\n/** @param {Refractor} Prism */\nexport default function unrealscript(Prism) {\n  Prism.languages.unrealscript = {\n    comment: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n    string: {\n      pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      greedy: true\n    },\n    category: {\n      pattern:\n        /(\\b(?:(?:autoexpand|hide|show)categories|var)\\s*\\()[^()]+(?=\\))/,\n      lookbehind: true,\n      greedy: true,\n      alias: 'property'\n    },\n    metadata: {\n      pattern: /(\\w\\s*)<\\s*\\w+\\s*=[^<>|=\\r\\n]+(?:\\|\\s*\\w+\\s*=[^<>|=\\r\\n]+)*>/,\n      lookbehind: true,\n      greedy: true,\n      inside: {\n        property: /\\b\\w+(?=\\s*=)/,\n        operator: /=/,\n        punctuation: /[<>|]/\n      }\n    },\n    macro: {\n      pattern: /`\\w+/,\n      alias: 'property'\n    },\n    'class-name': {\n      pattern:\n        /(\\b(?:class|enum|extends|interface|state(?:\\(\\))?|struct|within)\\s+)\\w+/,\n      lookbehind: true\n    },\n    keyword:\n      /\\b(?:abstract|actor|array|auto|autoexpandcategories|bool|break|byte|case|class|classgroup|client|coerce|collapsecategories|config|const|continue|default|defaultproperties|delegate|dependson|deprecated|do|dontcollapsecategories|editconst|editinlinenew|else|enum|event|exec|export|extends|final|float|for|forcescriptorder|foreach|function|goto|guid|hidecategories|hidedropdown|if|ignores|implements|inherits|input|int|interface|iterator|latent|local|material|name|native|nativereplication|noexport|nontransient|noteditinlinenew|notplaceable|operator|optional|out|pawn|perobjectconfig|perobjectlocalized|placeable|postoperator|preoperator|private|protected|reliable|replication|return|server|showcategories|simulated|singular|state|static|string|struct|structdefault|structdefaultproperties|switch|texture|transient|travel|unreliable|until|var|vector|while|within)\\b/,\n    function: /\\b[a-z_]\\w*(?=\\s*\\()/i,\n    boolean: /\\b(?:false|true)\\b/,\n    number: /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n    // https://docs.unrealengine.com/udk/Three/UnrealScriptExpressions.html\n    operator:\n      />>|<<|--|\\+\\+|\\*\\*|[-+*/~!=<>$@]=?|&&?|\\|\\|?|\\^\\^?|[?:%]|\\b(?:ClockwiseFrom|Cross|Dot)\\b/,\n    punctuation: /[()[\\]{};,.]/\n  }\n  Prism.languages.uc = Prism.languages.uscript = Prism.languages.unrealscript\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nuorazor.displayName = 'uorazor'\nuorazor.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function uorazor(Prism) {\n  Prism.languages.uorazor = {\n    'comment-hash': {\n      pattern: /#.*/,\n      alias: 'comment',\n      greedy: true\n    },\n    'comment-slash': {\n      pattern: /\\/\\/.*/,\n      alias: 'comment',\n      greedy: true\n    },\n    string: {\n      pattern: /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n      inside: {\n        punctuation: /^['\"]|['\"]$/\n      },\n      greedy: true\n    },\n    'source-layers': {\n      pattern:\n        /\\b(?:arms|backpack|blue|bracelet|cancel|clear|cloak|criminal|earrings|enemy|facialhair|friend|friendly|gloves|gray|grey|ground|hair|head|innerlegs|innertorso|innocent|lefthand|middletorso|murderer|neck|nonfriendly|onehandedsecondary|outerlegs|outertorso|pants|red|righthand|ring|self|shirt|shoes|talisman|waist)\\b/i,\n      alias: 'function'\n    },\n    'source-commands': {\n      pattern:\n        /\\b(?:alliance|attack|cast|clearall|clearignore|clearjournal|clearlist|clearsysmsg|createlist|createtimer|dclick|dclicktype|dclickvar|dress|dressconfig|drop|droprelloc|emote|getlabel|guild|gumpclose|gumpresponse|hotkey|ignore|lasttarget|lift|lifttype|menu|menuresponse|msg|org|organize|organizer|overhead|pause|poplist|potion|promptresponse|pushlist|removelist|removetimer|rename|restock|say|scav|scavenger|script|setability|setlasttarget|setskill|settimer|setvar|sysmsg|target|targetloc|targetrelloc|targettype|undress|unignore|unsetvar|useobject|useonce|useskill|usetype|virtue|wait|waitforgump|waitformenu|waitforprompt|waitforstat|waitforsysmsg|waitfortarget|walk|wfsysmsg|wft|whisper|yell)\\b/,\n      alias: 'function'\n    },\n    'tag-name': {\n      pattern: /(^\\{%-?\\s*)\\w+/,\n      lookbehind: true,\n      alias: 'keyword'\n    },\n    delimiter: {\n      pattern: /^\\{[{%]-?|-?[%}]\\}$/,\n      alias: 'punctuation'\n    },\n    function:\n      /\\b(?:atlist|close|closest|count|counter|counttype|dead|dex|diffhits|diffmana|diffstam|diffweight|find|findbuff|finddebuff|findlayer|findtype|findtypelist|followers|gumpexists|hidden|hits|hp|hue|human|humanoid|ingump|inlist|insysmessage|insysmsg|int|invul|lhandempty|list|listexists|mana|maxhits|maxhp|maxmana|maxstam|maxweight|monster|mounted|name|next|noto|paralyzed|poisoned|position|prev|previous|queued|rand|random|rhandempty|skill|stam|str|targetexists|timer|timerexists|varexist|warmode|weight)\\b/,\n    keyword:\n      /\\b(?:and|as|break|continue|else|elseif|endfor|endif|endwhile|for|if|loop|not|or|replay|stop|while)\\b/,\n    boolean: /\\b(?:false|null|true)\\b/,\n    number: /\\b0x[\\dA-Fa-f]+|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee][-+]?\\d+)?/,\n    operator: [\n      {\n        pattern:\n          /(\\s)(?:and|b-and|b-or|b-xor|ends with|in|is|matches|not|or|same as|starts with)(?=\\s)/,\n        lookbehind: true\n      },\n      /[=<>]=?|!=|\\*\\*?|\\/\\/?|\\?:?|[-+~%|]/\n    ],\n    punctuation: /[()\\[\\]{}:.,]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\nv.displayName = 'v'\nv.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function v(Prism) {\n  Prism.register(refractorClike)\n  ;(function (Prism) {\n    var interpolationExpr = {\n      pattern: /[\\s\\S]+/,\n      inside: null\n    }\n    Prism.languages.v = Prism.languages.extend('clike', {\n      string: {\n        pattern: /r?([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n        alias: 'quoted-string',\n        greedy: true,\n        inside: {\n          interpolation: {\n            pattern:\n              /((?:^|[^\\\\])(?:\\\\{2})*)\\$(?:\\{[^{}]*\\}|\\w+(?:\\.\\w+(?:\\([^\\(\\)]*\\))?|\\[[^\\[\\]]+\\])*)/,\n            lookbehind: true,\n            inside: {\n              'interpolation-variable': {\n                pattern: /^\\$\\w[\\s\\S]*$/,\n                alias: 'variable'\n              },\n              'interpolation-punctuation': {\n                pattern: /^\\$\\{|\\}$/,\n                alias: 'punctuation'\n              },\n              'interpolation-expression': interpolationExpr\n            }\n          }\n        }\n      },\n      'class-name': {\n        pattern: /(\\b(?:enum|interface|struct|type)\\s+)(?:C\\.)?\\w+/,\n        lookbehind: true\n      },\n      keyword:\n        /(?:\\b(?:__global|as|asm|assert|atomic|break|chan|const|continue|defer|else|embed|enum|fn|for|go(?:to)?|if|import|in|interface|is|lock|match|module|mut|none|or|pub|return|rlock|select|shared|sizeof|static|struct|type(?:of)?|union|unsafe)|\\$(?:else|for|if)|#(?:flag|include))\\b/,\n      number:\n        /\\b(?:0x[a-f\\d]+(?:_[a-f\\d]+)*|0b[01]+(?:_[01]+)*|0o[0-7]+(?:_[0-7]+)*|\\d+(?:_\\d+)*(?:\\.\\d+(?:_\\d+)*)?)\\b/i,\n      operator:\n        /~|\\?|[*\\/%^!=]=?|\\+[=+]?|-[=-]?|\\|[=|]?|&(?:=|&|\\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\\.\\.\\.?/,\n      builtin:\n        /\\b(?:any(?:_float|_int)?|bool|byte(?:ptr)?|charptr|f(?:32|64)|i(?:8|16|64|128|nt)|rune|size_t|string|u(?:16|32|64|128)|voidptr)\\b/\n    })\n    interpolationExpr.inside = Prism.languages.v\n    Prism.languages.insertBefore('v', 'string', {\n      char: {\n        pattern: /`(?:\\\\`|\\\\?[^`]{1,2})`/,\n        // using {1,2} instead of `u` flag for compatibility\n        alias: 'rune'\n      }\n    })\n    Prism.languages.insertBefore('v', 'operator', {\n      attribute: {\n        pattern:\n          /(^[\\t ]*)\\[(?:deprecated|direct_array_access|flag|inline|live|ref_only|typedef|unsafe_fn|windows_stdcall)\\]/m,\n        lookbehind: true,\n        alias: 'annotation',\n        inside: {\n          punctuation: /[\\[\\]]/,\n          keyword: /\\w+/\n        }\n      },\n      generic: {\n        pattern: /<\\w+>(?=\\s*[\\)\\{])/,\n        inside: {\n          punctuation: /[<>]/,\n          'class-name': /\\w+/\n        }\n      }\n    })\n    Prism.languages.insertBefore('v', 'function', {\n      'generic-function': {\n        // e.g. foo<T>( ...\n        pattern: /\\b\\w+\\s*<\\w+>(?=\\()/,\n        inside: {\n          function: /^\\w+/,\n          generic: {\n            pattern: /<\\w+>/,\n            inside: Prism.languages.v.generic.inside\n          }\n        }\n      }\n    })\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorClike from './clike.js'\nvala.displayName = 'vala'\nvala.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function vala(Prism) {\n  Prism.register(refractorClike)\n  Prism.languages.vala = Prism.languages.extend('clike', {\n    // Classes copied from prism-csharp\n    'class-name': [\n      {\n        // (Foo bar, Bar baz)\n        pattern: /\\b[A-Z]\\w*(?:\\.\\w+)*\\b(?=(?:\\?\\s+|\\*?\\s+\\*?)\\w)/,\n        inside: {\n          punctuation: /\\./\n        }\n      },\n      {\n        // [Foo]\n        pattern: /(\\[)[A-Z]\\w*(?:\\.\\w+)*\\b/,\n        lookbehind: true,\n        inside: {\n          punctuation: /\\./\n        }\n      },\n      {\n        // class Foo : Bar\n        pattern:\n          /(\\b(?:class|interface)\\s+[A-Z]\\w*(?:\\.\\w+)*\\s*:\\s*)[A-Z]\\w*(?:\\.\\w+)*\\b/,\n        lookbehind: true,\n        inside: {\n          punctuation: /\\./\n        }\n      },\n      {\n        // class Foo\n        pattern:\n          /((?:\\b(?:class|enum|interface|new|struct)\\s+)|(?:catch\\s+\\())[A-Z]\\w*(?:\\.\\w+)*\\b/,\n        lookbehind: true,\n        inside: {\n          punctuation: /\\./\n        }\n      }\n    ],\n    keyword:\n      /\\b(?:abstract|as|assert|async|base|bool|break|case|catch|char|class|const|construct|continue|default|delegate|delete|do|double|dynamic|else|ensures|enum|errordomain|extern|finally|float|for|foreach|get|if|in|inline|int|int16|int32|int64|int8|interface|internal|is|lock|long|namespace|new|null|out|override|owned|params|private|protected|public|ref|requires|return|set|short|signal|sizeof|size_t|ssize_t|static|string|struct|switch|this|throw|throws|try|typeof|uchar|uint|uint16|uint32|uint64|uint8|ulong|unichar|unowned|ushort|using|value|var|virtual|void|volatile|weak|while|yield)\\b/i,\n    function: /\\b\\w+(?=\\s*\\()/,\n    number:\n      /(?:\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?)(?:f|u?l?)?/i,\n    operator:\n      /\\+\\+|--|&&|\\|\\||<<=?|>>=?|=>|->|~|[+\\-*\\/%&^|=!<>]=?|\\?\\??|\\.\\.\\./,\n    punctuation: /[{}[\\];(),.:]/,\n    constant: /\\b[A-Z0-9_]+\\b/\n  })\n  Prism.languages.insertBefore('vala', 'string', {\n    'raw-string': {\n      pattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n      greedy: true,\n      alias: 'string'\n    },\n    'template-string': {\n      pattern: /@\"[\\s\\S]*?\"/,\n      greedy: true,\n      inside: {\n        interpolation: {\n          pattern: /\\$(?:\\([^)]*\\)|[a-zA-Z]\\w*)/,\n          inside: {\n            delimiter: {\n              pattern: /^\\$\\(?|\\)$/,\n              alias: 'punctuation'\n            },\n            rest: Prism.languages.vala\n          }\n        },\n        string: /[\\s\\S]+/\n      }\n    }\n  })\n  Prism.languages.insertBefore('vala', 'keyword', {\n    regex: {\n      pattern:\n        /\\/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[imsx]{0,4}(?=\\s*(?:$|[\\r\\n,.;})\\]]))/,\n      greedy: true,\n      inside: {\n        'regex-source': {\n          pattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n          lookbehind: true,\n          alias: 'language-regex',\n          inside: Prism.languages.regex\n        },\n        'regex-delimiter': /^\\//,\n        'regex-flags': /^[a-z]+$/\n      }\n    }\n  })\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorMarkup from './markup.js'\nvelocity.displayName = 'velocity'\nvelocity.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function velocity(Prism) {\n  Prism.register(refractorMarkup)\n  ;(function (Prism) {\n    Prism.languages.velocity = Prism.languages.extend('markup', {})\n    var velocity = {\n      variable: {\n        pattern:\n          /(^|[^\\\\](?:\\\\\\\\)*)\\$!?(?:[a-z][\\w-]*(?:\\([^)]*\\))?(?:\\.[a-z][\\w-]*(?:\\([^)]*\\))?|\\[[^\\]]+\\])*|\\{[^}]+\\})/i,\n        lookbehind: true,\n        inside: {} // See below\n      },\n      string: {\n        pattern: /\"[^\"]*\"|'[^']*'/,\n        greedy: true\n      },\n      number: /\\b\\d+\\b/,\n      boolean: /\\b(?:false|true)\\b/,\n      operator:\n        /[=!<>]=?|[+*/%-]|&&|\\|\\||\\.\\.|\\b(?:eq|g[et]|l[et]|n(?:e|ot))\\b/,\n      punctuation: /[(){}[\\]:,.]/\n    }\n    velocity.variable.inside = {\n      string: velocity['string'],\n      function: {\n        pattern: /([^\\w-])[a-z][\\w-]*(?=\\()/,\n        lookbehind: true\n      },\n      number: velocity['number'],\n      boolean: velocity['boolean'],\n      punctuation: velocity['punctuation']\n    }\n    Prism.languages.insertBefore('velocity', 'comment', {\n      unparsed: {\n        pattern: /(^|[^\\\\])#\\[\\[[\\s\\S]*?\\]\\]#/,\n        lookbehind: true,\n        greedy: true,\n        inside: {\n          punctuation: /^#\\[\\[|\\]\\]#$/\n        }\n      },\n      'velocity-comment': [\n        {\n          pattern: /(^|[^\\\\])#\\*[\\s\\S]*?\\*#/,\n          lookbehind: true,\n          greedy: true,\n          alias: 'comment'\n        },\n        {\n          pattern: /(^|[^\\\\])##.*/,\n          lookbehind: true,\n          greedy: true,\n          alias: 'comment'\n        }\n      ],\n      directive: {\n        pattern:\n          /(^|[^\\\\](?:\\\\\\\\)*)#@?(?:[a-z][\\w-]*|\\{[a-z][\\w-]*\\})(?:\\s*\\((?:[^()]|\\([^()]*\\))*\\))?/i,\n        lookbehind: true,\n        inside: {\n          keyword: {\n            pattern: /^#@?(?:[a-z][\\w-]*|\\{[a-z][\\w-]*\\})|\\bin\\b/,\n            inside: {\n              punctuation: /[{}]/\n            }\n          },\n          rest: velocity\n        }\n      },\n      variable: velocity['variable']\n    })\n    Prism.languages.velocity['tag'].inside['attr-value'].inside.rest =\n      Prism.languages.velocity\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nverilog.displayName = 'verilog'\nverilog.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function verilog(Prism) {\n  Prism.languages.verilog = {\n    comment: {\n      pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n      greedy: true\n    },\n    string: {\n      pattern: /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n      greedy: true\n    },\n    'kernel-function': {\n      // support for any kernel function (ex: $display())\n      pattern: /\\B\\$\\w+\\b/,\n      alias: 'property'\n    },\n    // support for user defined constants (ex: `define)\n    constant: /\\B`\\w+\\b/,\n    function: /\\b\\w+(?=\\()/,\n    // support for verilog and system verilog keywords\n    keyword:\n      /\\b(?:alias|and|assert|assign|assume|automatic|before|begin|bind|bins|binsof|bit|break|buf|bufif0|bufif1|byte|case|casex|casez|cell|chandle|class|clocking|cmos|config|const|constraint|context|continue|cover|covergroup|coverpoint|cross|deassign|default|defparam|design|disable|dist|do|edge|else|end|endcase|endclass|endclocking|endconfig|endfunction|endgenerate|endgroup|endinterface|endmodule|endpackage|endprimitive|endprogram|endproperty|endsequence|endspecify|endtable|endtask|enum|event|expect|export|extends|extern|final|first_match|for|force|foreach|forever|fork|forkjoin|function|generate|genvar|highz0|highz1|if|iff|ifnone|ignore_bins|illegal_bins|import|incdir|include|initial|inout|input|inside|instance|int|integer|interface|intersect|join|join_any|join_none|large|liblist|library|local|localparam|logic|longint|macromodule|matches|medium|modport|module|nand|negedge|new|nmos|nor|noshowcancelled|not|notif0|notif1|null|or|output|package|packed|parameter|pmos|posedge|primitive|priority|program|property|protected|pull0|pull1|pulldown|pullup|pulsestyle_ondetect|pulsestyle_onevent|pure|rand|randc|randcase|randsequence|rcmos|real|realtime|ref|reg|release|repeat|return|rnmos|rpmos|rtran|rtranif0|rtranif1|scalared|sequence|shortint|shortreal|showcancelled|signed|small|solve|specify|specparam|static|string|strong0|strong1|struct|super|supply0|supply1|table|tagged|task|this|throughout|time|timeprecision|timeunit|tran|tranif0|tranif1|tri|tri0|tri1|triand|trior|trireg|type|typedef|union|unique|unsigned|use|uwire|var|vectored|virtual|void|wait|wait_order|wand|weak0|weak1|while|wildcard|wire|with|within|wor|xnor|xor)\\b/,\n    // bold highlighting for all verilog and system verilog logic blocks\n    important: /\\b(?:always|always_comb|always_ff|always_latch)\\b(?: *@)?/,\n    // support for time ticks, vectors, and real numbers\n    number:\n      /\\B##?\\d+|(?:\\b\\d+)?'[odbh] ?[\\da-fzx_?]+|\\b(?:\\d*[._])?\\d+(?:e[-+]?\\d+)?/i,\n    operator: /[-+{}^~%*\\/?=!<>&|]+/,\n    punctuation: /[[\\];(),.:]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nvhdl.displayName = 'vhdl'\nvhdl.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function vhdl(Prism) {\n  Prism.languages.vhdl = {\n    comment: /--.+/,\n    // support for all logic vectors\n    'vhdl-vectors': {\n      pattern: /\\b[oxb]\"[\\da-f_]+\"|\"[01uxzwlh-]+\"/i,\n      alias: 'number'\n    },\n    // support for operator overloading included\n    'quoted-function': {\n      pattern: /\"\\S+?\"(?=\\()/,\n      alias: 'function'\n    },\n    string: /\"(?:[^\\\\\"\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*\"/,\n    attribute: {\n      pattern: /\\b'\\w+/,\n      alias: 'attr-name'\n    },\n    // support for predefined attributes included\n    keyword:\n      /\\b(?:access|after|alias|all|architecture|array|assert|attribute|begin|block|body|buffer|bus|case|component|configuration|constant|disconnect|downto|else|elsif|end|entity|exit|file|for|function|generate|generic|group|guarded|if|impure|in|inertial|inout|is|label|library|linkage|literal|loop|map|new|next|null|of|on|open|others|out|package|port|postponed|private|procedure|process|pure|range|record|register|reject|report|return|select|severity|shared|signal|subtype|then|to|transport|type|unaffected|units|until|use|variable|view|wait|when|while|with)\\b/i,\n    boolean: /\\b(?:false|true)\\b/i,\n    function: /\\w+(?=\\()/,\n    // decimal, based, physical, and exponential numbers supported\n    number: /'[01uxzwlh-]'|\\b(?:\\d+#[\\da-f_.]+#|\\d[\\d_.]*)(?:e[-+]?\\d+)?/i,\n    operator:\n      /[<>]=?|:=|[-+*/&=]|\\b(?:abs|and|mod|nand|nor|not|or|rem|rol|ror|sla|sll|sra|srl|xnor|xor)\\b/i,\n    punctuation: /[{}[\\];(),.:]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nvim.displayName = 'vim'\nvim.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function vim(Prism) {\n  Prism.languages.vim = {\n    string: /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"|'(?:[^'\\r\\n]|'')*'/,\n    comment: /\".*/,\n    function: /\\b\\w+(?=\\()/,\n    keyword:\n      /\\b(?:N|Next|P|Print|X|XMLent|XMLns|ab|abbreviate|abc|abclear|abo|aboveleft|al|all|ar|arga|argadd|argd|argdelete|argdo|arge|argedit|argg|argglobal|argl|arglocal|args|argu|argument|as|ascii|b|bN|bNext|ba|bad|badd|ball|bd|bdelete|be|bel|belowright|bf|bfirst|bl|blast|bm|bmodified|bn|bnext|bo|botright|bp|bprevious|br|brea|break|breaka|breakadd|breakd|breakdel|breakl|breaklist|brewind|bro|browse|bufdo|buffer|buffers|bun|bunload|bw|bwipeout|c|cN|cNext|cNfcNfile|ca|cabbrev|cabc|cabclear|cad|caddb|caddbuffer|caddexpr|caddf|caddfile|cal|call|cat|catch|cb|cbuffer|cc|ccl|cclose|cd|ce|center|cex|cexpr|cf|cfile|cfir|cfirst|cg|cgetb|cgetbuffer|cgete|cgetexpr|cgetfile|change|changes|chd|chdir|che|checkpath|checkt|checktime|cl|cla|clast|clist|clo|close|cmapc|cmapclear|cn|cnew|cnewer|cnext|cnf|cnfile|cnorea|cnoreabbrev|co|col|colder|colo|colorscheme|comc|comclear|comp|compiler|con|conf|confirm|continue|cope|copen|copy|cp|cpf|cpfile|cprevious|cq|cquit|cr|crewind|cu|cuna|cunabbrev|cunmap|cw|cwindow|d|debugg|debuggreedy|delc|delcommand|delete|delf|delfunction|delm|delmarks|di|diffg|diffget|diffoff|diffpatch|diffpu|diffput|diffsplit|diffthis|diffu|diffupdate|dig|digraphs|display|dj|djump|dl|dlist|dr|drop|ds|dsearch|dsp|dsplit|e|earlier|echoe|echoerr|echom|echomsg|echon|edit|el|else|elsei|elseif|em|emenu|en|endf|endfo|endfor|endfun|endfunction|endif|endt|endtry|endw|endwhile|ene|enew|ex|exi|exit|exu|exusage|f|file|files|filetype|fin|fina|finally|find|fini|finish|fir|first|fix|fixdel|fo|fold|foldc|foldclose|foldd|folddoc|folddoclosed|folddoopen|foldo|foldopen|for|fu|fun|function|go|goto|gr|grep|grepa|grepadd|h|ha|hardcopy|help|helpf|helpfind|helpg|helpgrep|helpt|helptags|hid|hide|his|history|ia|iabbrev|iabc|iabclear|if|ij|ijump|il|ilist|imapc|imapclear|in|inorea|inoreabbrev|isearch|isp|isplit|iu|iuna|iunabbrev|iunmap|j|join|ju|jumps|k|kee|keepalt|keepj|keepjumps|keepmarks|l|lN|lNext|lNf|lNfile|la|lad|laddb|laddbuffer|laddexpr|laddf|laddfile|lan|language|last|later|lb|lbuffer|lc|lcd|lch|lchdir|lcl|lclose|left|lefta|leftabove|let|lex|lexpr|lf|lfile|lfir|lfirst|lg|lgetb|lgetbuffer|lgete|lgetexpr|lgetfile|lgr|lgrep|lgrepa|lgrepadd|lh|lhelpgrep|list|ll|lla|llast|lli|llist|lm|lmak|lmake|lmap|lmapc|lmapclear|ln|lne|lnew|lnewer|lnext|lnf|lnfile|lnoremap|lo|loadview|loc|lockmarks|lockv|lockvar|lol|lolder|lop|lopen|lp|lpf|lpfile|lprevious|lr|lrewind|ls|lt|ltag|lu|lunmap|lv|lvimgrep|lvimgrepa|lvimgrepadd|lw|lwindow|m|ma|mak|make|mark|marks|mat|match|menut|menutranslate|mk|mkexrc|mks|mksession|mksp|mkspell|mkv|mkvie|mkview|mkvimrc|mod|mode|move|mz|mzf|mzfile|mzscheme|n|nbkey|new|next|nmapc|nmapclear|noh|nohlsearch|norea|noreabbrev|nu|number|nun|nunmap|o|omapc|omapclear|on|only|open|opt|options|ou|ounmap|p|pc|pclose|pe|ped|pedit|perl|perld|perldo|po|pop|popu|popup|pp|ppop|pre|preserve|prev|previous|print|prof|profd|profdel|profile|promptf|promptfind|promptr|promptrepl|ps|psearch|ptN|ptNext|pta|ptag|ptf|ptfirst|ptj|ptjump|ptl|ptlast|ptn|ptnext|ptp|ptprevious|ptr|ptrewind|pts|ptselect|pu|put|pw|pwd|py|pyf|pyfile|python|q|qa|qall|quit|quita|quitall|r|read|rec|recover|red|redi|redir|redo|redr|redraw|redraws|redrawstatus|reg|registers|res|resize|ret|retab|retu|return|rew|rewind|ri|right|rightb|rightbelow|ru|rub|ruby|rubyd|rubydo|rubyf|rubyfile|runtime|rv|rviminfo|sN|sNext|sa|sal|sall|san|sandbox|sargument|sav|saveas|sb|sbN|sbNext|sba|sball|sbf|sbfirst|sbl|sblast|sbm|sbmodified|sbn|sbnext|sbp|sbprevious|sbr|sbrewind|sbuffer|scrip|scripte|scriptencoding|scriptnames|se|set|setf|setfiletype|setg|setglobal|setl|setlocal|sf|sfind|sfir|sfirst|sh|shell|sign|sil|silent|sim|simalt|sl|sla|slast|sleep|sm|smagic|smap|smapc|smapclear|sme|smenu|sn|snext|sni|sniff|sno|snomagic|snor|snoremap|snoreme|snoremenu|so|sor|sort|source|sp|spe|spelld|spelldump|spellgood|spelli|spellinfo|spellr|spellrepall|spellu|spellundo|spellw|spellwrong|split|spr|sprevious|sre|srewind|st|sta|stag|star|startg|startgreplace|startinsert|startr|startreplace|stj|stjump|stop|stopi|stopinsert|sts|stselect|sun|sunhide|sunm|sunmap|sus|suspend|sv|sview|syncbind|t|tN|tNext|ta|tab|tabN|tabNext|tabc|tabclose|tabd|tabdo|tabe|tabedit|tabf|tabfind|tabfir|tabfirst|tabl|tablast|tabm|tabmove|tabn|tabnew|tabnext|tabo|tabonly|tabp|tabprevious|tabr|tabrewind|tabs|tag|tags|tc|tcl|tcld|tcldo|tclf|tclfile|te|tearoff|tf|tfirst|th|throw|tj|tjump|tl|tlast|tm|tmenu|tn|tnext|to|topleft|tp|tprevious|tr|trewind|try|ts|tselect|tu|tunmenu|u|una|unabbreviate|undo|undoj|undojoin|undol|undolist|unh|unhide|unlet|unlo|unlockvar|unm|unmap|up|update|ve|verb|verbose|version|vert|vertical|vi|vie|view|vim|vimgrep|vimgrepa|vimgrepadd|visual|viu|viusage|vmapc|vmapclear|vne|vnew|vs|vsplit|vu|vunmap|w|wN|wNext|wa|wall|wh|while|win|winc|wincmd|windo|winp|winpos|winsize|wn|wnext|wp|wprevious|wq|wqa|wqall|write|ws|wsverb|wv|wviminfo|x|xa|xall|xit|xm|xmap|xmapc|xmapclear|xme|xmenu|xn|xnoremap|xnoreme|xnoremenu|xu|xunmap|y|yank)\\b/,\n    builtin:\n      /\\b(?:acd|ai|akm|aleph|allowrevins|altkeymap|ambiwidth|ambw|anti|antialias|arab|arabic|arabicshape|ari|arshape|autochdir|autocmd|autoindent|autoread|autowrite|autowriteall|aw|awa|background|backspace|backup|backupcopy|backupdir|backupext|backupskip|balloondelay|ballooneval|balloonexpr|bdir|bdlay|beval|bex|bexpr|bg|bh|bin|binary|biosk|bioskey|bk|bkc|bomb|breakat|brk|browsedir|bs|bsdir|bsk|bt|bufhidden|buflisted|buftype|casemap|ccv|cdpath|cedit|cfu|ch|charconvert|ci|cin|cindent|cink|cinkeys|cino|cinoptions|cinw|cinwords|clipboard|cmdheight|cmdwinheight|cmp|cms|columns|com|comments|commentstring|compatible|complete|completefunc|completeopt|consk|conskey|copyindent|cot|cpo|cpoptions|cpt|cscopepathcomp|cscopeprg|cscopequickfix|cscopetag|cscopetagorder|cscopeverbose|cspc|csprg|csqf|cst|csto|csverb|cuc|cul|cursorcolumn|cursorline|cwh|debug|deco|def|define|delcombine|dex|dg|dict|dictionary|diff|diffexpr|diffopt|digraph|dip|dir|directory|dy|ea|ead|eadirection|eb|ed|edcompatible|ef|efm|ei|ek|enc|encoding|endofline|eol|ep|equalalways|equalprg|errorbells|errorfile|errorformat|esckeys|et|eventignore|expandtab|exrc|fcl|fcs|fdc|fde|fdi|fdl|fdls|fdm|fdn|fdo|fdt|fen|fenc|fencs|fex|ff|ffs|fileencoding|fileencodings|fileformat|fileformats|fillchars|fk|fkmap|flp|fml|fmr|foldcolumn|foldenable|foldexpr|foldignore|foldlevel|foldlevelstart|foldmarker|foldmethod|foldminlines|foldnestmax|foldtext|formatexpr|formatlistpat|formatoptions|formatprg|fp|fs|fsync|ft|gcr|gd|gdefault|gfm|gfn|gfs|gfw|ghr|gp|grepformat|grepprg|gtl|gtt|guicursor|guifont|guifontset|guifontwide|guiheadroom|guioptions|guipty|guitablabel|guitabtooltip|helpfile|helpheight|helplang|hf|hh|hi|hidden|highlight|hk|hkmap|hkmapp|hkp|hl|hlg|hls|hlsearch|ic|icon|iconstring|ignorecase|im|imactivatekey|imak|imc|imcmdline|imd|imdisable|imi|iminsert|ims|imsearch|inc|include|includeexpr|incsearch|inde|indentexpr|indentkeys|indk|inex|inf|infercase|insertmode|invacd|invai|invakm|invallowrevins|invaltkeymap|invanti|invantialias|invar|invarab|invarabic|invarabicshape|invari|invarshape|invautochdir|invautoindent|invautoread|invautowrite|invautowriteall|invaw|invawa|invbackup|invballooneval|invbeval|invbin|invbinary|invbiosk|invbioskey|invbk|invbl|invbomb|invbuflisted|invcf|invci|invcin|invcindent|invcompatible|invconfirm|invconsk|invconskey|invcopyindent|invcp|invcscopetag|invcscopeverbose|invcst|invcsverb|invcuc|invcul|invcursorcolumn|invcursorline|invdeco|invdelcombine|invdg|invdiff|invdigraph|invdisable|invea|inveb|inved|invedcompatible|invek|invendofline|inveol|invequalalways|inverrorbells|invesckeys|invet|invex|invexpandtab|invexrc|invfen|invfk|invfkmap|invfoldenable|invgd|invgdefault|invguipty|invhid|invhidden|invhk|invhkmap|invhkmapp|invhkp|invhls|invhlsearch|invic|invicon|invignorecase|invim|invimc|invimcmdline|invimd|invincsearch|invinf|invinfercase|invinsertmode|invis|invjoinspaces|invjs|invlazyredraw|invlbr|invlinebreak|invlisp|invlist|invloadplugins|invlpl|invlz|invma|invmacatsui|invmagic|invmh|invml|invmod|invmodeline|invmodifiable|invmodified|invmore|invmousef|invmousefocus|invmousehide|invnu|invnumber|invodev|invopendevice|invpaste|invpi|invpreserveindent|invpreviewwindow|invprompt|invpvw|invreadonly|invremap|invrestorescreen|invrevins|invri|invrightleft|invrightleftcmd|invrl|invrlc|invro|invrs|invru|invruler|invsb|invsc|invscb|invscrollbind|invscs|invsecure|invsft|invshellslash|invshelltemp|invshiftround|invshortname|invshowcmd|invshowfulltag|invshowmatch|invshowmode|invsi|invsm|invsmartcase|invsmartindent|invsmarttab|invsmd|invsn|invsol|invspell|invsplitbelow|invsplitright|invspr|invsr|invssl|invsta|invstartofline|invstmp|invswapfile|invswf|invta|invtagbsearch|invtagrelative|invtagstack|invtbi|invtbidi|invtbs|invtermbidi|invterse|invtextauto|invtextmode|invtf|invtgst|invtildeop|invtimeout|invtitle|invto|invtop|invtr|invttimeout|invttybuiltin|invttyfast|invtx|invvb|invvisualbell|invwa|invwarn|invwb|invweirdinvert|invwfh|invwfw|invwildmenu|invwinfixheight|invwinfixwidth|invwiv|invwmnu|invwrap|invwrapscan|invwrite|invwriteany|invwritebackup|invws|isf|isfname|isi|isident|isk|iskeyword|isprint|joinspaces|js|key|keymap|keymodel|keywordprg|km|kmp|kp|langmap|langmenu|laststatus|lazyredraw|lbr|lcs|linebreak|lines|linespace|lisp|lispwords|listchars|loadplugins|lpl|lsp|lz|macatsui|magic|makeef|makeprg|matchpairs|matchtime|maxcombine|maxfuncdepth|maxmapdepth|maxmem|maxmempattern|maxmemtot|mco|mef|menuitems|mfd|mh|mis|mkspellmem|ml|mls|mm|mmd|mmp|mmt|modeline|modelines|modifiable|modified|more|mouse|mousef|mousefocus|mousehide|mousem|mousemodel|mouses|mouseshape|mouset|mousetime|mp|mps|msm|mzq|mzquantum|nf|noacd|noai|noakm|noallowrevins|noaltkeymap|noanti|noantialias|noar|noarab|noarabic|noarabicshape|noari|noarshape|noautochdir|noautoindent|noautoread|noautowrite|noautowriteall|noaw|noawa|nobackup|noballooneval|nobeval|nobin|nobinary|nobiosk|nobioskey|nobk|nobl|nobomb|nobuflisted|nocf|noci|nocin|nocindent|nocompatible|noconfirm|noconsk|noconskey|nocopyindent|nocp|nocscopetag|nocscopeverbose|nocst|nocsverb|nocuc|nocul|nocursorcolumn|nocursorline|nodeco|nodelcombine|nodg|nodiff|nodigraph|nodisable|noea|noeb|noed|noedcompatible|noek|noendofline|noeol|noequalalways|noerrorbells|noesckeys|noet|noex|noexpandtab|noexrc|nofen|nofk|nofkmap|nofoldenable|nogd|nogdefault|noguipty|nohid|nohidden|nohk|nohkmap|nohkmapp|nohkp|nohls|noic|noicon|noignorecase|noim|noimc|noimcmdline|noimd|noincsearch|noinf|noinfercase|noinsertmode|nois|nojoinspaces|nojs|nolazyredraw|nolbr|nolinebreak|nolisp|nolist|noloadplugins|nolpl|nolz|noma|nomacatsui|nomagic|nomh|noml|nomod|nomodeline|nomodifiable|nomodified|nomore|nomousef|nomousefocus|nomousehide|nonu|nonumber|noodev|noopendevice|nopaste|nopi|nopreserveindent|nopreviewwindow|noprompt|nopvw|noreadonly|noremap|norestorescreen|norevins|nori|norightleft|norightleftcmd|norl|norlc|noro|nors|noru|noruler|nosb|nosc|noscb|noscrollbind|noscs|nosecure|nosft|noshellslash|noshelltemp|noshiftround|noshortname|noshowcmd|noshowfulltag|noshowmatch|noshowmode|nosi|nosm|nosmartcase|nosmartindent|nosmarttab|nosmd|nosn|nosol|nospell|nosplitbelow|nosplitright|nospr|nosr|nossl|nosta|nostartofline|nostmp|noswapfile|noswf|nota|notagbsearch|notagrelative|notagstack|notbi|notbidi|notbs|notermbidi|noterse|notextauto|notextmode|notf|notgst|notildeop|notimeout|notitle|noto|notop|notr|nottimeout|nottybuiltin|nottyfast|notx|novb|novisualbell|nowa|nowarn|nowb|noweirdinvert|nowfh|nowfw|nowildmenu|nowinfixheight|nowinfixwidth|nowiv|nowmnu|nowrap|nowrapscan|nowrite|nowriteany|nowritebackup|nows|nrformats|numberwidth|nuw|odev|oft|ofu|omnifunc|opendevice|operatorfunc|opfunc|osfiletype|pa|para|paragraphs|paste|pastetoggle|patchexpr|patchmode|path|pdev|penc|pex|pexpr|pfn|ph|pheader|pi|pm|pmbcs|pmbfn|popt|preserveindent|previewheight|previewwindow|printdevice|printencoding|printexpr|printfont|printheader|printmbcharset|printmbfont|printoptions|prompt|pt|pumheight|pvh|pvw|qe|quoteescape|readonly|remap|report|restorescreen|revins|rightleft|rightleftcmd|rl|rlc|ro|rs|rtp|ruf|ruler|rulerformat|runtimepath|sbo|sc|scb|scr|scroll|scrollbind|scrolljump|scrolloff|scrollopt|scs|sect|sections|secure|sel|selection|selectmode|sessionoptions|sft|shcf|shellcmdflag|shellpipe|shellquote|shellredir|shellslash|shelltemp|shelltype|shellxquote|shiftround|shiftwidth|shm|shortmess|shortname|showbreak|showcmd|showfulltag|showmatch|showmode|showtabline|shq|si|sidescroll|sidescrolloff|siso|sj|slm|smartcase|smartindent|smarttab|smc|smd|softtabstop|sol|spc|spell|spellcapcheck|spellfile|spelllang|spellsuggest|spf|spl|splitbelow|splitright|sps|sr|srr|ss|ssl|ssop|stal|startofline|statusline|stl|stmp|su|sua|suffixes|suffixesadd|sw|swapfile|swapsync|swb|swf|switchbuf|sws|sxq|syn|synmaxcol|syntax|t_AB|t_AF|t_AL|t_CS|t_CV|t_Ce|t_Co|t_Cs|t_DL|t_EI|t_F1|t_F2|t_F3|t_F4|t_F5|t_F6|t_F7|t_F8|t_F9|t_IE|t_IS|t_K1|t_K3|t_K4|t_K5|t_K6|t_K7|t_K8|t_K9|t_KA|t_KB|t_KC|t_KD|t_KE|t_KF|t_KG|t_KH|t_KI|t_KJ|t_KK|t_KL|t_RI|t_RV|t_SI|t_Sb|t_Sf|t_WP|t_WS|t_ZH|t_ZR|t_al|t_bc|t_cd|t_ce|t_cl|t_cm|t_cs|t_da|t_db|t_dl|t_fs|t_k1|t_k2|t_k3|t_k4|t_k5|t_k6|t_k7|t_k8|t_k9|t_kB|t_kD|t_kI|t_kN|t_kP|t_kb|t_kd|t_ke|t_kh|t_kl|t_kr|t_ks|t_ku|t_le|t_mb|t_md|t_me|t_mr|t_ms|t_nd|t_op|t_se|t_so|t_sr|t_te|t_ti|t_ts|t_ue|t_us|t_ut|t_vb|t_ve|t_vi|t_vs|t_xs|tabline|tabpagemax|tabstop|tagbsearch|taglength|tagrelative|tagstack|tal|tb|tbi|tbidi|tbis|tbs|tenc|term|termbidi|termencoding|terse|textauto|textmode|textwidth|tgst|thesaurus|tildeop|timeout|timeoutlen|title|titlelen|titleold|titlestring|toolbar|toolbariconsize|top|tpm|tsl|tsr|ttimeout|ttimeoutlen|ttm|tty|ttybuiltin|ttyfast|ttym|ttymouse|ttyscroll|ttytype|tw|tx|uc|ul|undolevels|updatecount|updatetime|ut|vb|vbs|vdir|verbosefile|vfile|viewdir|viewoptions|viminfo|virtualedit|visualbell|vop|wak|warn|wb|wc|wcm|wd|weirdinvert|wfh|wfw|whichwrap|wi|wig|wildchar|wildcharm|wildignore|wildmenu|wildmode|wildoptions|wim|winaltkeys|window|winfixheight|winfixwidth|winheight|winminheight|winminwidth|winwidth|wiv|wiw|wm|wmh|wmnu|wmw|wop|wrap|wrapmargin|wrapscan|writeany|writebackup|writedelay|ww)\\b/,\n    number: /\\b(?:0x[\\da-f]+|\\d+(?:\\.\\d+)?)\\b/i,\n    operator:\n      /\\|\\||&&|[-+.]=?|[=!](?:[=~][#?]?)?|[<>]=?[#?]?|[*\\/%?]|\\b(?:is(?:not)?)\\b/,\n    punctuation: /[{}[\\](),;:]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nvisualBasic.displayName = 'visual-basic'\nvisualBasic.aliases = ['vb', 'vba']\n\n/** @param {Refractor} Prism */\nexport default function visualBasic(Prism) {\n  Prism.languages['visual-basic'] = {\n    comment: {\n      pattern: /(?:['\u2018\u2019]|REM\\b)(?:[^\\r\\n_]|_(?:\\r\\n?|\\n)?)*/i,\n      inside: {\n        keyword: /^REM/i\n      }\n    },\n    directive: {\n      pattern:\n        /#(?:Const|Else|ElseIf|End|ExternalChecksum|ExternalSource|If|Region)(?:\\b_[ \\t]*(?:\\r\\n?|\\n)|.)+/i,\n      alias: 'property',\n      greedy: true\n    },\n    string: {\n      pattern: /\\$?[\"\u201C\u201D](?:[\"\u201C\u201D]{2}|[^\"\u201C\u201D])*[\"\u201C\u201D]C?/i,\n      greedy: true\n    },\n    date: {\n      pattern:\n        /#[ \\t]*(?:\\d+([/-])\\d+\\1\\d+(?:[ \\t]+(?:\\d+[ \\t]*(?:AM|PM)|\\d+:\\d+(?::\\d+)?(?:[ \\t]*(?:AM|PM))?))?|\\d+[ \\t]*(?:AM|PM)|\\d+:\\d+(?::\\d+)?(?:[ \\t]*(?:AM|PM))?)[ \\t]*#/i,\n      alias: 'number'\n    },\n    number:\n      /(?:(?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)(?:E[+-]?\\d+)?|&[HO][\\dA-F]+)(?:[FRD]|U?[ILS])?/i,\n    boolean: /\\b(?:False|Nothing|True)\\b/i,\n    keyword:\n      /\\b(?:AddHandler|AddressOf|Alias|And(?:Also)?|As|Boolean|ByRef|Byte|ByVal|Call|Case|Catch|C(?:Bool|Byte|Char|Date|Dbl|Dec|Int|Lng|Obj|SByte|Short|Sng|Str|Type|UInt|ULng|UShort)|Char|Class|Const|Continue|Currency|Date|Decimal|Declare|Default|Delegate|Dim|DirectCast|Do|Double|Each|Else(?:If)?|End(?:If)?|Enum|Erase|Error|Event|Exit|Finally|For|Friend|Function|Get(?:Type|XMLNamespace)?|Global|GoSub|GoTo|Handles|If|Implements|Imports|In|Inherits|Integer|Interface|Is|IsNot|Let|Lib|Like|Long|Loop|Me|Mod|Module|Must(?:Inherit|Override)|My(?:Base|Class)|Namespace|Narrowing|New|Next|Not(?:Inheritable|Overridable)?|Object|Of|On|Operator|Option(?:al)?|Or(?:Else)?|Out|Overloads|Overridable|Overrides|ParamArray|Partial|Private|Property|Protected|Public|RaiseEvent|ReadOnly|ReDim|RemoveHandler|Resume|Return|SByte|Select|Set|Shadows|Shared|short|Single|Static|Step|Stop|String|Structure|Sub|SyncLock|Then|Throw|To|Try|TryCast|Type|TypeOf|U(?:Integer|Long|Short)|Until|Using|Variant|Wend|When|While|Widening|With(?:Events)?|WriteOnly|Xor)\\b/i,\n    operator: /[+\\-*/\\\\^<=>&#@$%!]|\\b_(?=[ \\t]*[\\r\\n])/,\n    punctuation: /[{}().,:?]/\n  }\n  Prism.languages.vb = Prism.languages['visual-basic']\n  Prism.languages.vba = Prism.languages['visual-basic']\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nwarpscript.displayName = 'warpscript'\nwarpscript.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function warpscript(Prism) {\n  Prism.languages.warpscript = {\n    comment: /#.*|\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n    string: {\n      pattern:\n        /\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"|'(?:[^'\\\\\\r\\n]|\\\\.)*'|<'(?:[^\\\\']|'(?!>)|\\\\.)*'>/,\n      greedy: true\n    },\n    variable: /\\$\\S+/,\n    macro: {\n      pattern: /@\\S+/,\n      alias: 'property'\n    },\n    // WarpScript doesn't have any keywords, these are all functions under the control category\n    // https://www.warp10.io/tags/control\n    keyword:\n      /\\b(?:BREAK|CHECKMACRO|CONTINUE|CUDF|DEFINED|DEFINEDMACRO|EVAL|FAIL|FOR|FOREACH|FORSTEP|IFT|IFTE|MSGFAIL|NRETURN|RETHROW|RETURN|SWITCH|TRY|UDF|UNTIL|WHILE)\\b/,\n    number:\n      /[+-]?\\b(?:NaN|Infinity|\\d+(?:\\.\\d*)?(?:[Ee][+-]?\\d+)?|0x[\\da-fA-F]+|0b[01]+)\\b/,\n    boolean: /\\b(?:F|T|false|true)\\b/,\n    punctuation: /<%|%>|[{}[\\]()]/,\n    // Some operators from the \"operators\" category\n    // https://www.warp10.io/tags/operators\n    operator:\n      /==|&&?|\\|\\|?|\\*\\*?|>>>?|<<|[<>!~]=?|[-/%^]|\\+!?|\\b(?:AND|NOT|OR)\\b/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nwasm.displayName = 'wasm'\nwasm.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function wasm(Prism) {\n  Prism.languages.wasm = {\n    comment: [\n      /\\(;[\\s\\S]*?;\\)/,\n      {\n        pattern: /;;.*/,\n        greedy: true\n      }\n    ],\n    string: {\n      pattern: /\"(?:\\\\[\\s\\S]|[^\"\\\\])*\"/,\n      greedy: true\n    },\n    keyword: [\n      {\n        pattern: /\\b(?:align|offset)=/,\n        inside: {\n          operator: /=/\n        }\n      },\n      {\n        pattern:\n          /\\b(?:(?:f32|f64|i32|i64)(?:\\.(?:abs|add|and|ceil|clz|const|convert_[su]\\/i(?:32|64)|copysign|ctz|demote\\/f64|div(?:_[su])?|eqz?|extend_[su]\\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\\/f32|reinterpret\\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\\/f(?:32|64))?|wrap\\/i64|xor))?|memory\\.(?:grow|size))\\b/,\n        inside: {\n          punctuation: /\\./\n        }\n      },\n      /\\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\\b/\n    ],\n    variable: /\\$[\\w!#$%&'*+\\-./:<=>?@\\\\^`|~]+/,\n    number:\n      /[+-]?\\b(?:\\d(?:_?\\d)*(?:\\.\\d(?:_?\\d)*)?(?:[eE][+-]?\\d(?:_?\\d)*)?|0x[\\da-fA-F](?:_?[\\da-fA-F])*(?:\\.[\\da-fA-F](?:_?[\\da-fA-D])*)?(?:[pP][+-]?\\d(?:_?\\d)*)?)\\b|\\binf\\b|\\bnan(?::0x[\\da-fA-F](?:_?[\\da-fA-D])*)?\\b/,\n    punctuation: /[()]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nwebIdl.displayName = 'web-idl'\nwebIdl.aliases = ['webidl']\n\n/** @param {Refractor} Prism */\nexport default function webIdl(Prism) {\n  ;(function (Prism) {\n    var id = /(?:\\B-|\\b_|\\b)[A-Za-z][\\w-]*(?![\\w-])/.source\n    var type =\n      '(?:' +\n      /\\b(?:unsigned\\s+)?long\\s+long(?![\\w-])/.source +\n      '|' +\n      /\\b(?:unrestricted|unsigned)\\s+[a-z]+(?![\\w-])/.source +\n      '|' +\n      /(?!(?:unrestricted|unsigned)\\b)/.source +\n      id +\n      /(?:\\s*<(?:[^<>]|<[^<>]*>)*>)?/.source +\n      ')' +\n      /(?:\\s*\\?)?/.source\n    var typeInside = {}\n    Prism.languages['web-idl'] = {\n      comment: {\n        pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?\\*\\//,\n        greedy: true\n      },\n      string: {\n        pattern: /\"[^\"]*\"/,\n        greedy: true\n      },\n      namespace: {\n        pattern: RegExp(/(\\bnamespace\\s+)/.source + id),\n        lookbehind: true\n      },\n      'class-name': [\n        {\n          pattern:\n            /(^|[^\\w-])(?:iterable|maplike|setlike)\\s*<(?:[^<>]|<[^<>]*>)*>/,\n          lookbehind: true,\n          inside: typeInside\n        },\n        {\n          pattern: RegExp(\n            /(\\b(?:attribute|const|deleter|getter|optional|setter)\\s+)/.source +\n              type\n          ),\n          lookbehind: true,\n          inside: typeInside\n        },\n        {\n          // callback return type\n          pattern: RegExp(\n            '(' + /\\bcallback\\s+/.source + id + /\\s*=\\s*/.source + ')' + type\n          ),\n          lookbehind: true,\n          inside: typeInside\n        },\n        {\n          // typedef\n          pattern: RegExp(/(\\btypedef\\b\\s*)/.source + type),\n          lookbehind: true,\n          inside: typeInside\n        },\n        {\n          pattern: RegExp(\n            /(\\b(?:callback|dictionary|enum|interface(?:\\s+mixin)?)\\s+)(?!(?:interface|mixin)\\b)/\n              .source + id\n          ),\n          lookbehind: true\n        },\n        {\n          // inheritance\n          pattern: RegExp(/(:\\s*)/.source + id),\n          lookbehind: true\n        },\n        // includes and implements\n        RegExp(id + /(?=\\s+(?:implements|includes)\\b)/.source),\n        {\n          pattern: RegExp(/(\\b(?:implements|includes)\\s+)/.source + id),\n          lookbehind: true\n        },\n        {\n          // function return type, parameter types, and dictionary members\n          pattern: RegExp(\n            type +\n              '(?=' +\n              /\\s*(?:\\.{3}\\s*)?/.source +\n              id +\n              /\\s*[(),;=]/.source +\n              ')'\n          ),\n          inside: typeInside\n        }\n      ],\n      builtin:\n        /\\b(?:ArrayBuffer|BigInt64Array|BigUint64Array|ByteString|DOMString|DataView|Float32Array|Float64Array|FrozenArray|Int16Array|Int32Array|Int8Array|ObservableArray|Promise|USVString|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray)\\b/,\n      keyword: [\n        /\\b(?:async|attribute|callback|const|constructor|deleter|dictionary|enum|getter|implements|includes|inherit|interface|mixin|namespace|null|optional|or|partial|readonly|required|setter|static|stringifier|typedef|unrestricted)\\b/,\n        // type keywords\n        /\\b(?:any|bigint|boolean|byte|double|float|iterable|long|maplike|object|octet|record|sequence|setlike|short|symbol|undefined|unsigned|void)\\b/\n      ],\n      boolean: /\\b(?:false|true)\\b/,\n      number: {\n        pattern:\n          /(^|[^\\w-])-?(?:0x[0-9a-f]+|(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?|NaN|Infinity)(?![\\w-])/i,\n        lookbehind: true\n      },\n      operator: /\\.{3}|[=:?<>-]/,\n      punctuation: /[(){}[\\].,;]/\n    }\n    for (var key in Prism.languages['web-idl']) {\n      if (key !== 'class-name') {\n        typeInside[key] = Prism.languages['web-idl'][key]\n      }\n    }\n    Prism.languages['webidl'] = Prism.languages['web-idl']\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nwgsl.displayName = 'wgsl'\nwgsl.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function wgsl(Prism) {\n  Prism.languages.wgsl = {\n    comment: {\n      pattern: /\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n      greedy: true\n    },\n    'builtin-attribute': {\n      pattern: /(@)builtin\\(.*?\\)/,\n      lookbehind: true,\n      inside: {\n        attribute: {\n          pattern: /^builtin/,\n          alias: 'attr-name'\n        },\n        punctuation: /[(),]/,\n        'built-in-values': {\n          pattern:\n            /\\b(?:frag_depth|front_facing|global_invocation_id|instance_index|local_invocation_id|local_invocation_index|num_workgroups|position|sample_index|sample_mask|vertex_index|workgroup_id)\\b/,\n          alias: 'attr-value'\n        }\n      }\n    },\n    attributes: {\n      pattern:\n        /(@)(?:align|binding|compute|const|fragment|group|id|interpolate|invariant|location|size|vertex|workgroup_size)/i,\n      lookbehind: true,\n      alias: 'attr-name'\n    },\n    functions: {\n      pattern: /\\b(fn\\s+)[_a-zA-Z]\\w*(?=[(<])/,\n      lookbehind: true,\n      alias: 'function'\n    },\n    keyword:\n      /\\b(?:bitcast|break|case|const|continue|continuing|default|discard|else|enable|fallthrough|fn|for|function|if|let|loop|private|return|storage|struct|switch|type|uniform|var|while|workgroup)\\b/,\n    builtin:\n      /\\b(?:abs|acos|acosh|all|any|array|asin|asinh|atan|atan2|atanh|atomic|atomicAdd|atomicAnd|atomicCompareExchangeWeak|atomicExchange|atomicLoad|atomicMax|atomicMin|atomicOr|atomicStore|atomicSub|atomicXor|bool|ceil|clamp|cos|cosh|countLeadingZeros|countOneBits|countTrailingZeros|cross|degrees|determinant|distance|dot|dpdx|dpdxCoarse|dpdxFine|dpdy|dpdyCoarse|dpdyFine|exp|exp2|extractBits|f32|f64|faceForward|firstLeadingBit|floor|fma|fract|frexp|fwidth|fwidthCoarse|fwidthFine|i32|i64|insertBits|inverseSqrt|ldexp|length|log|log2|mat[2-4]x[2-4]|max|min|mix|modf|normalize|override|pack2x16float|pack2x16snorm|pack2x16unorm|pack4x8snorm|pack4x8unorm|pow|ptr|quantizeToF16|radians|reflect|refract|reverseBits|round|sampler|sampler_comparison|select|shiftLeft|shiftRight|sign|sin|sinh|smoothstep|sqrt|staticAssert|step|storageBarrier|tan|tanh|textureDimensions|textureGather|textureGatherCompare|textureLoad|textureNumLayers|textureNumLevels|textureNumSamples|textureSample|textureSampleBias|textureSampleCompare|textureSampleCompareLevel|textureSampleGrad|textureSampleLevel|textureStore|texture_1d|texture_2d|texture_2d_array|texture_3d|texture_cube|texture_cube_array|texture_depth_2d|texture_depth_2d_array|texture_depth_cube|texture_depth_cube_array|texture_depth_multisampled_2d|texture_multisampled_2d|texture_storage_1d|texture_storage_2d|texture_storage_2d_array|texture_storage_3d|transpose|trunc|u32|u64|unpack2x16float|unpack2x16snorm|unpack2x16unorm|unpack4x8snorm|unpack4x8unorm|vec[2-4]|workgroupBarrier)\\b/,\n    'function-calls': {\n      pattern: /\\b[_a-z]\\w*(?=\\()/i,\n      alias: 'function'\n    },\n    'class-name': /\\b(?:[A-Z][A-Za-z0-9]*)\\b/,\n    'bool-literal': {\n      pattern: /\\b(?:false|true)\\b/,\n      alias: 'boolean'\n    },\n    'hex-int-literal': {\n      pattern: /\\b0[xX][0-9a-fA-F]+[iu]?\\b(?![.pP])/,\n      alias: 'number'\n    },\n    'hex-float-literal': {\n      pattern: /\\b0[xX][0-9a-fA-F]*(?:\\.[0-9a-fA-F]*)?(?:[pP][+-]?\\d+[fh]?)?/,\n      alias: 'number'\n    },\n    'decimal-float-literal': [\n      {\n        pattern: /\\d*\\.\\d+(?:[eE](?:\\+|-)?\\d+)?[fh]?/,\n        alias: 'number'\n      },\n      {\n        pattern: /\\d+\\.\\d*(?:[eE](?:\\+|-)?\\d+)?[fh]?/,\n        alias: 'number'\n      },\n      {\n        pattern: /\\d+[eE](?:\\+|-)?\\d+[fh]?/,\n        alias: 'number'\n      },\n      {\n        pattern: /\\b\\d+[fh]\\b/,\n        alias: 'number'\n      }\n    ],\n    'int-literal': {\n      pattern: /\\b\\d+[iu]?\\b/,\n      alias: 'number'\n    },\n    operator: [\n      {\n        pattern: /(?:\\^|~|\\|(?!\\|)|\\|\\||&&|<<|>>|!)(?!=)/\n      },\n      {\n        pattern: /&(?![&=])/\n      },\n      {\n        pattern: /(?:\\+=|-=|\\*=|\\/=|%=|\\^=|&=|\\|=|<<=|>>=)/\n      },\n      {\n        pattern: /(^|[^<>=!])=(?![=>])/,\n        lookbehind: true\n      },\n      {\n        pattern: /(?:==|!=|<=|\\+\\+|--|(^|[^=])>=)/,\n        lookbehind: true\n      },\n      {\n        pattern: /(?:(?:[+%]|(?:\\*(?!\\w)))(?!=))|(?:-(?!>))|(?:\\/(?!\\/))/\n      },\n      {\n        pattern: /->/\n      }\n    ],\n    punctuation: /[@(){}[\\],;<>:.]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorMarkup from './markup.js'\nwiki.displayName = 'wiki'\nwiki.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function wiki(Prism) {\n  Prism.register(refractorMarkup)\n  Prism.languages.wiki = Prism.languages.extend('markup', {\n    'block-comment': {\n      pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?\\*\\//,\n      lookbehind: true,\n      alias: 'comment'\n    },\n    heading: {\n      pattern: /^(=+)[^=\\r\\n].*?\\1/m,\n      inside: {\n        punctuation: /^=+|=+$/,\n        important: /.+/\n      }\n    },\n    emphasis: {\n      // TODO Multi-line\n      pattern: /('{2,5}).+?\\1/,\n      inside: {\n        'bold-italic': {\n          pattern: /(''''').+?(?=\\1)/,\n          lookbehind: true,\n          alias: ['bold', 'italic']\n        },\n        bold: {\n          pattern: /(''')[^'](?:.*?[^'])?(?=\\1)/,\n          lookbehind: true\n        },\n        italic: {\n          pattern: /('')[^'](?:.*?[^'])?(?=\\1)/,\n          lookbehind: true\n        },\n        punctuation: /^''+|''+$/\n      }\n    },\n    hr: {\n      pattern: /^-{4,}/m,\n      alias: 'punctuation'\n    },\n    url: [\n      /ISBN +(?:97[89][ -]?)?(?:\\d[ -]?){9}[\\dx]\\b|(?:PMID|RFC) +\\d+/i,\n      /\\[\\[.+?\\]\\]|\\[.+?\\]/\n    ],\n    variable: [\n      /__[A-Z]+__/,\n      // FIXME Nested structures should be handled\n      // {{formatnum:{{#expr:{{{3}}}}}}}\n      /\\{{3}.+?\\}{3}/,\n      /\\{\\{.+?\\}\\}/\n    ],\n    symbol: [/^#redirect/im, /~{3,5}/],\n    // Handle table attrs:\n    // {|\n    // ! style=\"text-align:left;\"| Item\n    // |}\n    'table-tag': {\n      pattern: /((?:^|[|!])[|!])[^|\\r\\n]+\\|(?!\\|)/m,\n      lookbehind: true,\n      inside: {\n        'table-bar': {\n          pattern: /\\|$/,\n          alias: 'punctuation'\n        },\n        rest: Prism.languages.markup['tag'].inside\n      }\n    },\n    punctuation: /^(?:\\{\\||\\|\\}|\\|-|[*#:;!|])|\\|\\||!!/m\n  })\n  Prism.languages.insertBefore('wiki', 'tag', {\n    // Prevent highlighting inside <nowiki>, <source> and <pre> tags\n    nowiki: {\n      pattern: /<(nowiki|pre|source)\\b[^>]*>[\\s\\S]*?<\\/\\1>/i,\n      inside: {\n        tag: {\n          pattern: /<(?:nowiki|pre|source)\\b[^>]*>|<\\/(?:nowiki|pre|source)>/i,\n          inside: Prism.languages.markup['tag'].inside\n        }\n      }\n    }\n  })\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nwolfram.displayName = 'wolfram'\nwolfram.aliases = ['mathematica', 'nb', 'wl']\n\n/** @param {Refractor} Prism */\nexport default function wolfram(Prism) {\n  Prism.languages.wolfram = {\n    comment:\n      // Allow one level of nesting - note: regex taken from applescipt\n      /\\(\\*(?:\\(\\*(?:[^*]|\\*(?!\\)))*\\*\\)|(?!\\(\\*)[\\s\\S])*?\\*\\)/,\n    string: {\n      pattern: /\"(?:\\\\.|[^\"\\\\\\r\\n])*\"/,\n      greedy: true\n    },\n    keyword:\n      /\\b(?:Abs|AbsArg|Accuracy|Block|Do|For|Function|If|Manipulate|Module|Nest|NestList|None|Return|Switch|Table|Which|While)\\b/,\n    context: {\n      pattern: /\\b\\w+`+\\w*/,\n      alias: 'class-name'\n    },\n    blank: {\n      pattern: /\\b\\w+_\\b/,\n      alias: 'regex'\n    },\n    'global-variable': {\n      pattern: /\\$\\w+/,\n      alias: 'variable'\n    },\n    boolean: /\\b(?:False|True)\\b/,\n    number:\n      /(?:\\b(?=\\d)|\\B(?=\\.))(?:0[bo])?(?:(?:\\d|0x[\\da-f])[\\da-f]*(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?j?\\b/i,\n    operator:\n      /\\/\\.|;|=\\.|\\^=|\\^:=|:=|<<|>>|<\\||\\|>|:>|\\|->|->|<-|@@@|@@|@|\\/@|=!=|===|==|=|\\+|-|\\[\\/-+%=\\]=?|!=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,\n    punctuation: /[{}[\\];(),.:]/\n  }\n  Prism.languages.mathematica = Prism.languages.wolfram\n  Prism.languages.wl = Prism.languages.wolfram\n  Prism.languages.nb = Prism.languages.wolfram\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nwren.displayName = 'wren'\nwren.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function wren(Prism) {\n  // https://wren.io/\n\n  Prism.languages.wren = {\n    // Multiline comments in Wren can have nested multiline comments\n    // Comments: // and /* */\n    comment: [\n      {\n        // support 3 levels of nesting\n        // regex: \\/\\*(?:[^*/]|\\*(?!\\/)|\\/(?!\\*)|<self>)*\\*\\/\n        pattern:\n          /\\/\\*(?:[^*/]|\\*(?!\\/)|\\/(?!\\*)|\\/\\*(?:[^*/]|\\*(?!\\/)|\\/(?!\\*)|\\/\\*(?:[^*/]|\\*(?!\\/)|\\/(?!\\*))*\\*\\/)*\\*\\/)*\\*\\//,\n        greedy: true\n      },\n      {\n        pattern: /(^|[^\\\\:])\\/\\/.*/,\n        lookbehind: true,\n        greedy: true\n      }\n    ],\n    // Triple quoted strings are multiline but cannot have interpolation (raw strings)\n    // Based on prism-python.js\n    'triple-quoted-string': {\n      pattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n      greedy: true,\n      alias: 'string'\n    },\n    // see below\n    'string-literal': null,\n    // #!/usr/bin/env wren on the first line\n    hashbang: {\n      pattern: /^#!\\/.+/,\n      greedy: true,\n      alias: 'comment'\n    },\n    // Attributes are special keywords to add meta data to classes\n    attribute: {\n      // #! attributes are stored in class properties\n      // #!myvar = true\n      // #attributes are not stored and dismissed at compilation\n      pattern: /#!?[ \\t\\u3000]*\\w+/,\n      alias: 'keyword'\n    },\n    'class-name': [\n      {\n        // class definition\n        // class Meta {}\n        pattern: /(\\bclass\\s+)\\w+/,\n        lookbehind: true\n      },\n      // A class must always start with an uppercase.\n      // File.read\n      /\\b[A-Z][a-z\\d_]*\\b/\n    ],\n    // A constant can be a variable, class, property or method. Just named in all uppercase letters\n    constant: /\\b[A-Z][A-Z\\d_]*\\b/,\n    null: {\n      pattern: /\\bnull\\b/,\n      alias: 'keyword'\n    },\n    keyword:\n      /\\b(?:as|break|class|construct|continue|else|for|foreign|if|import|in|is|return|static|super|this|var|while)\\b/,\n    boolean: /\\b(?:false|true)\\b/,\n    number: /\\b(?:0x[\\da-f]+|\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?)\\b/i,\n    // Functions can be Class.method()\n    function: /\\b[a-z_]\\w*(?=\\s*[({])/i,\n    operator: /<<|>>|[=!<>]=?|&&|\\|\\||[-+*/%~^&|?:]|\\.{2,3}/,\n    punctuation: /[\\[\\](){}.,;]/\n  }\n  Prism.languages.wren['string-literal'] = {\n    // A single quote string is multiline and can have interpolation (similar to JS backticks ``)\n    pattern:\n      /(^|[^\\\\\"])\"(?:[^\\\\\"%]|\\\\[\\s\\S]|%(?!\\()|%\\((?:[^()]|\\((?:[^()]|\\([^)]*\\))*\\))*\\))*\"/,\n    lookbehind: true,\n    greedy: true,\n    inside: {\n      interpolation: {\n        // \"%(interpolation)\"\n        pattern:\n          /((?:^|[^\\\\])(?:\\\\{2})*)%\\((?:[^()]|\\((?:[^()]|\\([^)]*\\))*\\))*\\)/,\n        lookbehind: true,\n        inside: {\n          expression: {\n            pattern: /^(%\\()[\\s\\S]+(?=\\)$)/,\n            lookbehind: true,\n            inside: Prism.languages.wren\n          },\n          'interpolation-punctuation': {\n            pattern: /^%\\(|\\)$/,\n            alias: 'punctuation'\n          }\n        }\n      },\n      string: /[\\s\\S]+/\n    }\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorMarkup from './markup.js'\nxeora.displayName = 'xeora'\nxeora.aliases = ['xeoracube']\n\n/** @param {Refractor} Prism */\nexport default function xeora(Prism) {\n  Prism.register(refractorMarkup)\n  ;(function (Prism) {\n    Prism.languages.xeora = Prism.languages.extend('markup', {\n      constant: {\n        pattern: /\\$(?:DomainContents|PageRenderDuration)\\$/,\n        inside: {\n          punctuation: {\n            pattern: /\\$/\n          }\n        }\n      },\n      variable: {\n        pattern: /\\$@?(?:#+|[-+*~=^])?[\\w.]+\\$/,\n        inside: {\n          punctuation: {\n            pattern: /[$.]/\n          },\n          operator: {\n            pattern: /#+|[-+*~=^@]/\n          }\n        }\n      },\n      'function-inline': {\n        pattern:\n          /\\$F:[-\\w.]+\\?[-\\w.]+(?:,(?:(?:@[-#]*\\w+\\.[\\w+.]\\.*)*\\|)*(?:(?:[\\w+]|[-#*.~^]+[\\w+]|=\\S)(?:[^$=]|=+[^=])*=*|(?:@[-#]*\\w+\\.[\\w+.]\\.*)+(?:(?:[\\w+]|[-#*~^][-#*.~^]*[\\w+]|=\\S)(?:[^$=]|=+[^=])*=*)?)?)?\\$/,\n        inside: {\n          variable: {\n            pattern: /(?:[,|])@?(?:#+|[-+*~=^])?[\\w.]+/,\n            inside: {\n              punctuation: {\n                pattern: /[,.|]/\n              },\n              operator: {\n                pattern: /#+|[-+*~=^@]/\n              }\n            }\n          },\n          punctuation: {\n            pattern: /\\$\\w:|[$:?.,|]/\n          }\n        },\n        alias: 'function'\n      },\n      'function-block': {\n        pattern:\n          /\\$XF:\\{[-\\w.]+\\?[-\\w.]+(?:,(?:(?:@[-#]*\\w+\\.[\\w+.]\\.*)*\\|)*(?:(?:[\\w+]|[-#*.~^]+[\\w+]|=\\S)(?:[^$=]|=+[^=])*=*|(?:@[-#]*\\w+\\.[\\w+.]\\.*)+(?:(?:[\\w+]|[-#*~^][-#*.~^]*[\\w+]|=\\S)(?:[^$=]|=+[^=])*=*)?)?)?\\}:XF\\$/,\n        inside: {\n          punctuation: {\n            pattern: /[$:{}?.,|]/\n          }\n        },\n        alias: 'function'\n      },\n      'directive-inline': {\n        pattern: /\\$\\w(?:#\\d+\\+?)?(?:\\[[-\\w.]+\\])?:[-\\/\\w.]+\\$/,\n        inside: {\n          punctuation: {\n            pattern: /\\$(?:\\w:|C(?:\\[|#\\d))?|[:{[\\]]/,\n            inside: {\n              tag: {\n                pattern: /#\\d/\n              }\n            }\n          }\n        },\n        alias: 'function'\n      },\n      'directive-block-open': {\n        pattern:\n          /\\$\\w+:\\{|\\$\\w(?:#\\d+\\+?)?(?:\\[[-\\w.]+\\])?:[-\\w.]+:\\{(?:![A-Z]+)?/,\n        inside: {\n          punctuation: {\n            pattern: /\\$(?:\\w:|C(?:\\[|#\\d))?|[:{[\\]]/,\n            inside: {\n              tag: {\n                pattern: /#\\d/\n              }\n            }\n          },\n          attribute: {\n            pattern: /![A-Z]+$/,\n            inside: {\n              punctuation: {\n                pattern: /!/\n              }\n            },\n            alias: 'keyword'\n          }\n        },\n        alias: 'function'\n      },\n      'directive-block-separator': {\n        pattern: /\\}:[-\\w.]+:\\{/,\n        inside: {\n          punctuation: {\n            pattern: /[:{}]/\n          }\n        },\n        alias: 'function'\n      },\n      'directive-block-close': {\n        pattern: /\\}:[-\\w.]+\\$/,\n        inside: {\n          punctuation: {\n            pattern: /[:{}$]/\n          }\n        },\n        alias: 'function'\n      }\n    })\n    Prism.languages.insertBefore(\n      'inside',\n      'punctuation',\n      {\n        variable: Prism.languages.xeora['function-inline'].inside['variable']\n      },\n      Prism.languages.xeora['function-block']\n    )\n    Prism.languages.xeoracube = Prism.languages.xeora\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorMarkup from './markup.js'\nxmlDoc.displayName = 'xml-doc'\nxmlDoc.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function xmlDoc(Prism) {\n  Prism.register(refractorMarkup)\n  ;(function (Prism) {\n    /**\n     * If the given language is present, it will insert the given doc comment grammar token into it.\n     *\n     * @param {string} lang\n     * @param {any} docComment\n     */\n    function insertDocComment(lang, docComment) {\n      if (Prism.languages[lang]) {\n        Prism.languages.insertBefore(lang, 'comment', {\n          'doc-comment': docComment\n        })\n      }\n    }\n    var tag = Prism.languages.markup.tag\n    var slashDocComment = {\n      pattern: /\\/\\/\\/.*/,\n      greedy: true,\n      alias: 'comment',\n      inside: {\n        tag: tag\n      }\n    }\n    var tickDocComment = {\n      pattern: /'''.*/,\n      greedy: true,\n      alias: 'comment',\n      inside: {\n        tag: tag\n      }\n    }\n    insertDocComment('csharp', slashDocComment)\n    insertDocComment('fsharp', slashDocComment)\n    insertDocComment('vbnet', tickDocComment)\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nxojo.displayName = 'xojo'\nxojo.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function xojo(Prism) {\n  Prism.languages.xojo = {\n    comment: {\n      pattern: /(?:'|\\/\\/|Rem\\b).+/i,\n      greedy: true\n    },\n    string: {\n      pattern: /\"(?:\"\"|[^\"])*\"/,\n      greedy: true\n    },\n    number: [/(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:E[+-]?\\d+)?/i, /&[bchou][a-z\\d]+/i],\n    directive: {\n      pattern: /#(?:Else|ElseIf|Endif|If|Pragma)\\b/i,\n      alias: 'property'\n    },\n    keyword:\n      /\\b(?:AddHandler|App|Array|As(?:signs)?|Auto|Boolean|Break|By(?:Ref|Val)|Byte|Call|Case|Catch|CFStringRef|CGFloat|Class|Color|Const|Continue|CString|Currency|CurrentMethodName|Declare|Delegate|Dim|Do(?:uble|wnTo)?|Each|Else(?:If)?|End|Enumeration|Event|Exception|Exit|Extends|False|Finally|For|Function|Get|GetTypeInfo|Global|GOTO|If|Implements|In|Inherits|Int(?:8|16|32|64|eger|erface)?|Lib|Loop|Me|Module|Next|Nil|Object|Optional|OSType|ParamArray|Private|Property|Protected|PString|Ptr|Raise(?:Event)?|ReDim|RemoveHandler|Return|Select(?:or)?|Self|Set|Shared|Short|Single|Soft|Static|Step|String|Sub|Super|Text|Then|To|True|Try|Ubound|UInt(?:8|16|32|64|eger)?|Until|Using|Var(?:iant)?|Wend|While|WindowPtr|WString)\\b/i,\n    operator:\n      /<[=>]?|>=?|[+\\-*\\/\\\\^=]|\\b(?:AddressOf|And|Ctype|IsA?|Mod|New|Not|Or|WeakAddressOf|Xor)\\b/i,\n    punctuation: /[.,;:()]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nimport refractorMarkup from './markup.js'\nxquery.displayName = 'xquery'\nxquery.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function xquery(Prism) {\n  Prism.register(refractorMarkup)\n  ;(function (Prism) {\n    Prism.languages.xquery = Prism.languages.extend('markup', {\n      'xquery-comment': {\n        pattern: /\\(:[\\s\\S]*?:\\)/,\n        greedy: true,\n        alias: 'comment'\n      },\n      string: {\n        pattern: /([\"'])(?:\\1\\1|(?!\\1)[\\s\\S])*\\1/,\n        greedy: true\n      },\n      extension: {\n        pattern: /\\(#.+?#\\)/,\n        alias: 'symbol'\n      },\n      variable: /\\$[-\\w:]+/,\n      axis: {\n        pattern:\n          /(^|[^-])(?:ancestor(?:-or-self)?|attribute|child|descendant(?:-or-self)?|following(?:-sibling)?|parent|preceding(?:-sibling)?|self)(?=::)/,\n        lookbehind: true,\n        alias: 'operator'\n      },\n      'keyword-operator': {\n        pattern:\n          /(^|[^:-])\\b(?:and|castable as|div|eq|except|ge|gt|idiv|instance of|intersect|is|le|lt|mod|ne|or|union)\\b(?=$|[^:-])/,\n        lookbehind: true,\n        alias: 'operator'\n      },\n      keyword: {\n        pattern:\n          /(^|[^:-])\\b(?:as|ascending|at|base-uri|boundary-space|case|cast as|collation|construction|copy-namespaces|declare|default|descending|else|empty (?:greatest|least)|encoding|every|external|for|function|if|import|in|inherit|lax|let|map|module|namespace|no-inherit|no-preserve|option|order(?: by|ed|ing)?|preserve|return|satisfies|schema|some|stable|strict|strip|then|to|treat as|typeswitch|unordered|validate|variable|version|where|xquery)\\b(?=$|[^:-])/,\n        lookbehind: true\n      },\n      function: /[\\w-]+(?::[\\w-]+)*(?=\\s*\\()/,\n      'xquery-element': {\n        pattern: /(element\\s+)[\\w-]+(?::[\\w-]+)*/,\n        lookbehind: true,\n        alias: 'tag'\n      },\n      'xquery-attribute': {\n        pattern: /(attribute\\s+)[\\w-]+(?::[\\w-]+)*/,\n        lookbehind: true,\n        alias: 'attr-name'\n      },\n      builtin: {\n        pattern:\n          /(^|[^:-])\\b(?:attribute|comment|document|element|processing-instruction|text|xs:(?:ENTITIES|ENTITY|ID|IDREFS?|NCName|NMTOKENS?|NOTATION|Name|QName|anyAtomicType|anyType|anyURI|base64Binary|boolean|byte|date|dateTime|dayTimeDuration|decimal|double|duration|float|gDay|gMonth|gMonthDay|gYear|gYearMonth|hexBinary|int|integer|language|long|negativeInteger|nonNegativeInteger|nonPositiveInteger|normalizedString|positiveInteger|short|string|time|token|unsigned(?:Byte|Int|Long|Short)|untyped(?:Atomic)?|yearMonthDuration))\\b(?=$|[^:-])/,\n        lookbehind: true\n      },\n      number: /\\b\\d+(?:\\.\\d+)?(?:E[+-]?\\d+)?/,\n      operator: [\n        /[+*=?|@]|\\.\\.?|:=|!=|<[=<]?|>[=>]?/,\n        {\n          pattern: /(\\s)-(?=\\s)/,\n          lookbehind: true\n        }\n      ],\n      punctuation: /[[\\](){},;:/]/\n    })\n    Prism.languages.xquery.tag.pattern =\n      /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\[\\s\\S]|\\{(?!\\{)(?:\\{(?:\\{[^{}]*\\}|[^{}])*\\}|[^{}])+\\}|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/\n    Prism.languages.xquery['tag'].inside['attr-value'].pattern =\n      /=(?:(\"|')(?:\\\\[\\s\\S]|\\{(?!\\{)(?:\\{(?:\\{[^{}]*\\}|[^{}])*\\}|[^{}])+\\}|(?!\\1)[^\\\\])*\\1|[^\\s'\">=]+)/\n    Prism.languages.xquery['tag'].inside['attr-value'].inside['punctuation'] =\n      /^=\"|\"$/\n    Prism.languages.xquery['tag'].inside['attr-value'].inside['expression'] = {\n      // Allow for two levels of nesting\n      pattern: /\\{(?!\\{)(?:\\{(?:\\{[^{}]*\\}|[^{}])*\\}|[^{}])+\\}/,\n      inside: Prism.languages.xquery,\n      alias: 'language-xquery'\n    }\n\n    // The following will handle plain text inside tags\n    var stringifyToken = function (token) {\n      if (typeof token === 'string') {\n        return token\n      }\n      if (typeof token.content === 'string') {\n        return token.content\n      }\n      return token.content.map(stringifyToken).join('')\n    }\n    var walkTokens = function (tokens) {\n      var openedTags = []\n      for (var i = 0; i < tokens.length; i++) {\n        var token = tokens[i]\n        var notTagNorBrace = false\n        if (typeof token !== 'string') {\n          if (\n            token.type === 'tag' &&\n            token.content[0] &&\n            token.content[0].type === 'tag'\n          ) {\n            // We found a tag, now find its kind\n\n            if (token.content[0].content[0].content === '</') {\n              // Closing tag\n              if (\n                openedTags.length > 0 &&\n                openedTags[openedTags.length - 1].tagName ===\n                  stringifyToken(token.content[0].content[1])\n              ) {\n                // Pop matching opening tag\n                openedTags.pop()\n              }\n            } else {\n              if (token.content[token.content.length - 1].content === '/>') {\n                // Autoclosed tag, ignore\n              } else {\n                // Opening tag\n                openedTags.push({\n                  tagName: stringifyToken(token.content[0].content[1]),\n                  openedBraces: 0\n                })\n              }\n            }\n          } else if (\n            openedTags.length > 0 &&\n            token.type === 'punctuation' &&\n            token.content === '{' &&\n            // Ignore `{{`\n            (!tokens[i + 1] ||\n              tokens[i + 1].type !== 'punctuation' ||\n              tokens[i + 1].content !== '{') &&\n            (!tokens[i - 1] ||\n              tokens[i - 1].type !== 'plain-text' ||\n              tokens[i - 1].content !== '{')\n          ) {\n            // Here we might have entered an XQuery expression inside a tag\n            openedTags[openedTags.length - 1].openedBraces++\n          } else if (\n            openedTags.length > 0 &&\n            openedTags[openedTags.length - 1].openedBraces > 0 &&\n            token.type === 'punctuation' &&\n            token.content === '}'\n          ) {\n            // Here we might have left an XQuery expression inside a tag\n            openedTags[openedTags.length - 1].openedBraces--\n          } else if (token.type !== 'comment') {\n            notTagNorBrace = true\n          }\n        }\n        if (notTagNorBrace || typeof token === 'string') {\n          if (\n            openedTags.length > 0 &&\n            openedTags[openedTags.length - 1].openedBraces === 0\n          ) {\n            // Here we are inside a tag, and not inside an XQuery expression.\n            // That's plain text: drop any tokens matched.\n            var plainText = stringifyToken(token)\n\n            // And merge text with adjacent text\n            if (\n              i < tokens.length - 1 &&\n              (typeof tokens[i + 1] === 'string' ||\n                tokens[i + 1].type === 'plain-text')\n            ) {\n              plainText += stringifyToken(tokens[i + 1])\n              tokens.splice(i + 1, 1)\n            }\n            if (\n              i > 0 &&\n              (typeof tokens[i - 1] === 'string' ||\n                tokens[i - 1].type === 'plain-text')\n            ) {\n              plainText = stringifyToken(tokens[i - 1]) + plainText\n              tokens.splice(i - 1, 1)\n              i--\n            }\n            if (/^\\s+$/.test(plainText)) {\n              tokens[i] = plainText\n            } else {\n              tokens[i] = new Prism.Token(\n                'plain-text',\n                plainText,\n                null,\n                plainText\n              )\n            }\n          }\n        }\n        if (token.content && typeof token.content !== 'string') {\n          walkTokens(token.content)\n        }\n      }\n    }\n    Prism.hooks.add('after-tokenize', function (env) {\n      if (env.language !== 'xquery') {\n        return\n      }\n      walkTokens(env.tokens)\n    })\n  })(Prism)\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nyang.displayName = 'yang'\nyang.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function yang(Prism) {\n  Prism.languages.yang = {\n    // https://tools.ietf.org/html/rfc6020#page-34\n    // http://www.yang-central.org/twiki/bin/view/Main/YangExamples\n    comment: /\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*/,\n    string: {\n      pattern: /\"(?:[^\\\\\"]|\\\\.)*\"|'[^']*'/,\n      greedy: true\n    },\n    keyword: {\n      pattern: /(^|[{};\\r\\n][ \\t]*)[a-z_][\\w.-]*/i,\n      lookbehind: true\n    },\n    namespace: {\n      pattern: /(\\s)[a-z_][\\w.-]*(?=:)/i,\n      lookbehind: true\n    },\n    boolean: /\\b(?:false|true)\\b/,\n    operator: /\\+/,\n    punctuation: /[{};:]/\n  }\n}\n", "// @ts-nocheck\n/**\n * @import {Refractor} from '../lib/core.js'\n */\nzig.displayName = 'zig'\nzig.aliases = []\n\n/** @param {Refractor} Prism */\nexport default function zig(Prism) {\n  ;(function (Prism) {\n    function literal(str) {\n      return function () {\n        return str\n      }\n    }\n    var keyword =\n      /\\b(?:align|allowzero|and|anyframe|anytype|asm|async|await|break|cancel|catch|comptime|const|continue|defer|else|enum|errdefer|error|export|extern|fn|for|if|inline|linksection|nakedcc|noalias|nosuspend|null|or|orelse|packed|promise|pub|resume|return|stdcallcc|struct|suspend|switch|test|threadlocal|try|undefined|union|unreachable|usingnamespace|var|volatile|while)\\b/\n    var IDENTIFIER = '\\\\b(?!' + keyword.source + ')(?!\\\\d)\\\\w+\\\\b'\n    var ALIGN = /align\\s*\\((?:[^()]|\\([^()]*\\))*\\)/.source\n    var PREFIX_TYPE_OP =\n      /(?:\\?|\\bpromise->|(?:\\[[^[\\]]*\\]|\\*(?!\\*)|\\*\\*)(?:\\s*<ALIGN>|\\s*const\\b|\\s*volatile\\b|\\s*allowzero\\b)*)/.source.replace(\n        /<ALIGN>/g,\n        literal(ALIGN)\n      )\n    var SUFFIX_EXPR =\n      /(?:\\bpromise\\b|(?:\\berror\\.)?<ID>(?:\\.<ID>)*(?!\\s+<ID>))/.source.replace(\n        /<ID>/g,\n        literal(IDENTIFIER)\n      )\n    var TYPE =\n      '(?!\\\\s)(?:!?\\\\s*(?:' + PREFIX_TYPE_OP + '\\\\s*)*' + SUFFIX_EXPR + ')+'\n\n    /*\n     * A simplified grammar for Zig compile time type literals:\n     *\n     * TypeExpr = ( \"!\"? PREFIX_TYPE_OP* SUFFIX_EXPR )+\n     *\n     * SUFFIX_EXPR = ( \\b \"promise\" \\b | ( \\b \"error\" \".\" )? IDENTIFIER ( \".\" IDENTIFIER )* (?! \\s+ IDENTIFIER ) )\n     *\n     * PREFIX_TYPE_OP = \"?\"\n     *                | \\b \"promise\" \"->\"\n     *                | ( \"[\" [^\\[\\]]* \"]\" | \"*\" | \"**\" ) ( ALIGN | \"const\" \\b | \"volatile\" \\b | \"allowzero\" \\b )*\n     *\n     * ALIGN = \"align\" \"(\" ( [^()] | \"(\" [^()]* \")\" )* \")\"\n     *\n     * IDENTIFIER = \\b (?! KEYWORD ) [a-zA-Z_] \\w* \\b\n     *\n     */\n\n    Prism.languages.zig = {\n      comment: [\n        {\n          pattern: /\\/\\/[/!].*/,\n          alias: 'doc-comment'\n        },\n        /\\/{2}.*/\n      ],\n      string: [\n        {\n          // \"string\" and c\"string\"\n          pattern: /(^|[^\\\\@])c?\"(?:[^\"\\\\\\r\\n]|\\\\.)*\"/,\n          lookbehind: true,\n          greedy: true\n        },\n        {\n          // multiline strings and c-strings\n          pattern: /([\\r\\n])([ \\t]+c?\\\\{2}).*(?:(?:\\r\\n?|\\n)\\2.*)*/,\n          lookbehind: true,\n          greedy: true\n        }\n      ],\n      char: {\n        // characters 'a', '\\n', '\\xFF', '\\u{10FFFF}'\n        pattern:\n          /(^|[^\\\\])'(?:[^'\\\\\\r\\n]|[\\uD800-\\uDFFF]{2}|\\\\(?:.|x[a-fA-F\\d]{2}|u\\{[a-fA-F\\d]{1,6}\\}))'/,\n        lookbehind: true,\n        greedy: true\n      },\n      builtin: /\\B@(?!\\d)\\w+(?=\\s*\\()/,\n      label: {\n        pattern:\n          /(\\b(?:break|continue)\\s*:\\s*)\\w+\\b|\\b(?!\\d)\\w+\\b(?=\\s*:\\s*(?:\\{|while\\b))/,\n        lookbehind: true\n      },\n      'class-name': [\n        // const Foo = struct {};\n        /\\b(?!\\d)\\w+(?=\\s*=\\s*(?:(?:extern|packed)\\s+)?(?:enum|struct|union)\\s*[({])/,\n        {\n          // const x: i32 = 9;\n          // var x: Bar;\n          // fn foo(x: bool, y: f32) void {}\n          pattern: RegExp(\n            /(:\\s*)<TYPE>(?=\\s*(?:<ALIGN>\\s*)?[=;,)])|<TYPE>(?=\\s*(?:<ALIGN>\\s*)?\\{)/.source\n              .replace(/<TYPE>/g, literal(TYPE))\n              .replace(/<ALIGN>/g, literal(ALIGN))\n          ),\n          lookbehind: true,\n          inside: null // see below\n        },\n        {\n          // extern fn foo(x: f64) f64; (optional alignment)\n          pattern: RegExp(\n            /(\\)\\s*)<TYPE>(?=\\s*(?:<ALIGN>\\s*)?;)/.source\n              .replace(/<TYPE>/g, literal(TYPE))\n              .replace(/<ALIGN>/g, literal(ALIGN))\n          ),\n          lookbehind: true,\n          inside: null // see below\n        }\n      ],\n      'builtin-type': {\n        pattern:\n          /\\b(?:anyerror|bool|c_u?(?:int|long|longlong|short)|c_longdouble|c_void|comptime_(?:float|int)|f(?:16|32|64|128)|[iu](?:8|16|32|64|128|size)|noreturn|type|void)\\b/,\n        alias: 'keyword'\n      },\n      keyword: keyword,\n      function: /\\b(?!\\d)\\w+(?=\\s*\\()/,\n      number:\n        /\\b(?:0b[01]+|0o[0-7]+|0x[a-fA-F\\d]+(?:\\.[a-fA-F\\d]*)?(?:[pP][+-]?[a-fA-F\\d]+)?|\\d+(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\b/,\n      boolean: /\\b(?:false|true)\\b/,\n      operator:\n        /\\.[*?]|\\.{2,3}|[-=]>|\\*\\*|\\+\\+|\\|\\||(?:<<|>>|[-+*]%|[-+*/%^&|<>!=])=?|[?~]/,\n      punctuation: /[.:,;(){}[\\]]/\n    }\n    Prism.languages.zig['class-name'].forEach(function (obj) {\n      if (obj.inside === null) {\n        obj.inside = Prism.languages.zig\n      }\n    })\n  })(Prism)\n}\n", "/**\n * @typedef {import('./core.js').Syntax} Syntax\n */\n\nimport markup from '../lang/markup.js'\nimport css from '../lang/css.js'\nimport clike from '../lang/clike.js'\nimport regex from '../lang/regex.js'\nimport javascript from '../lang/javascript.js'\nimport abap from '../lang/abap.js'\nimport abnf from '../lang/abnf.js'\nimport actionscript from '../lang/actionscript.js'\nimport ada from '../lang/ada.js'\nimport agda from '../lang/agda.js'\nimport al from '../lang/al.js'\nimport antlr4 from '../lang/antlr4.js'\nimport apacheconf from '../lang/apacheconf.js'\nimport sql from '../lang/sql.js'\nimport apex from '../lang/apex.js'\nimport apl from '../lang/apl.js'\nimport applescript from '../lang/applescript.js'\nimport aql from '../lang/aql.js'\nimport c from '../lang/c.js'\nimport cpp from '../lang/cpp.js'\nimport arduino from '../lang/arduino.js'\nimport arff from '../lang/arff.js'\nimport armasm from '../lang/armasm.js'\nimport bash from '../lang/bash.js'\nimport yaml from '../lang/yaml.js'\nimport markdown from '../lang/markdown.js'\nimport arturo from '../lang/arturo.js'\nimport asciidoc from '../lang/asciidoc.js'\nimport csharp from '../lang/csharp.js'\nimport aspnet from '../lang/aspnet.js'\nimport asm6502 from '../lang/asm6502.js'\nimport asmatmel from '../lang/asmatmel.js'\nimport autohotkey from '../lang/autohotkey.js'\nimport autoit from '../lang/autoit.js'\nimport avisynth from '../lang/avisynth.js'\nimport avroIdl from '../lang/avro-idl.js'\nimport awk from '../lang/awk.js'\nimport basic from '../lang/basic.js'\nimport batch from '../lang/batch.js'\nimport bbcode from '../lang/bbcode.js'\nimport bbj from '../lang/bbj.js'\nimport bicep from '../lang/bicep.js'\nimport birb from '../lang/birb.js'\nimport bison from '../lang/bison.js'\nimport bnf from '../lang/bnf.js'\nimport bqn from '../lang/bqn.js'\nimport brainfuck from '../lang/brainfuck.js'\nimport brightscript from '../lang/brightscript.js'\nimport bro from '../lang/bro.js'\nimport bsl from '../lang/bsl.js'\nimport cfscript from '../lang/cfscript.js'\nimport chaiscript from '../lang/chaiscript.js'\nimport cil from '../lang/cil.js'\nimport cilkc from '../lang/cilkc.js'\nimport cilkcpp from '../lang/cilkcpp.js'\nimport clojure from '../lang/clojure.js'\nimport cmake from '../lang/cmake.js'\nimport cobol from '../lang/cobol.js'\nimport coffeescript from '../lang/coffeescript.js'\nimport concurnas from '../lang/concurnas.js'\nimport csp from '../lang/csp.js'\nimport cooklang from '../lang/cooklang.js'\nimport coq from '../lang/coq.js'\nimport ruby from '../lang/ruby.js'\nimport crystal from '../lang/crystal.js'\nimport cssExtras from '../lang/css-extras.js'\nimport csv from '../lang/csv.js'\nimport cue from '../lang/cue.js'\nimport cypher from '../lang/cypher.js'\nimport d from '../lang/d.js'\nimport dart from '../lang/dart.js'\nimport dataweave from '../lang/dataweave.js'\nimport dax from '../lang/dax.js'\nimport dhall from '../lang/dhall.js'\nimport diff from '../lang/diff.js'\nimport markupTemplating from '../lang/markup-templating.js'\nimport django from '../lang/django.js'\nimport dnsZoneFile from '../lang/dns-zone-file.js'\nimport docker from '../lang/docker.js'\nimport dot from '../lang/dot.js'\nimport ebnf from '../lang/ebnf.js'\nimport editorconfig from '../lang/editorconfig.js'\nimport eiffel from '../lang/eiffel.js'\nimport ejs from '../lang/ejs.js'\nimport elixir from '../lang/elixir.js'\nimport elm from '../lang/elm.js'\nimport lua from '../lang/lua.js'\nimport etlua from '../lang/etlua.js'\nimport erb from '../lang/erb.js'\nimport erlang from '../lang/erlang.js'\nimport excelFormula from '../lang/excel-formula.js'\nimport fsharp from '../lang/fsharp.js'\nimport factor from '../lang/factor.js'\nimport $false from '../lang/false.js'\nimport firestoreSecurityRules from '../lang/firestore-security-rules.js'\nimport flow from '../lang/flow.js'\nimport fortran from '../lang/fortran.js'\nimport ftl from '../lang/ftl.js'\nimport gml from '../lang/gml.js'\nimport gap from '../lang/gap.js'\nimport gcode from '../lang/gcode.js'\nimport gdscript from '../lang/gdscript.js'\nimport gedcom from '../lang/gedcom.js'\nimport gettext from '../lang/gettext.js'\nimport gherkin from '../lang/gherkin.js'\nimport git from '../lang/git.js'\nimport glsl from '../lang/glsl.js'\nimport gn from '../lang/gn.js'\nimport linkerScript from '../lang/linker-script.js'\nimport go from '../lang/go.js'\nimport goModule from '../lang/go-module.js'\nimport gradle from '../lang/gradle.js'\nimport graphql from '../lang/graphql.js'\nimport groovy from '../lang/groovy.js'\nimport less from '../lang/less.js'\nimport scss from '../lang/scss.js'\nimport textile from '../lang/textile.js'\nimport haml from '../lang/haml.js'\nimport handlebars from '../lang/handlebars.js'\nimport haskell from '../lang/haskell.js'\nimport haxe from '../lang/haxe.js'\nimport hcl from '../lang/hcl.js'\nimport hlsl from '../lang/hlsl.js'\nimport hoon from '../lang/hoon.js'\nimport hpkp from '../lang/hpkp.js'\nimport hsts from '../lang/hsts.js'\nimport json from '../lang/json.js'\nimport uri from '../lang/uri.js'\nimport http from '../lang/http.js'\nimport ichigojam from '../lang/ichigojam.js'\nimport icon from '../lang/icon.js'\nimport icuMessageFormat from '../lang/icu-message-format.js'\nimport idris from '../lang/idris.js'\nimport ignore from '../lang/ignore.js'\nimport inform7 from '../lang/inform7.js'\nimport ini from '../lang/ini.js'\nimport io from '../lang/io.js'\nimport j from '../lang/j.js'\nimport java from '../lang/java.js'\nimport php from '../lang/php.js'\nimport javadoclike from '../lang/javadoclike.js'\nimport scala from '../lang/scala.js'\nimport javadoc from '../lang/javadoc.js'\nimport javastacktrace from '../lang/javastacktrace.js'\nimport jexl from '../lang/jexl.js'\nimport jolie from '../lang/jolie.js'\nimport jq from '../lang/jq.js'\nimport jsTemplates from '../lang/js-templates.js'\nimport typescript from '../lang/typescript.js'\nimport jsdoc from '../lang/jsdoc.js'\nimport n4js from '../lang/n4js.js'\nimport jsExtras from '../lang/js-extras.js'\nimport json5 from '../lang/json5.js'\nimport jsonp from '../lang/jsonp.js'\nimport jsstacktrace from '../lang/jsstacktrace.js'\nimport julia from '../lang/julia.js'\nimport keepalived from '../lang/keepalived.js'\nimport keyman from '../lang/keyman.js'\nimport kotlin from '../lang/kotlin.js'\nimport kumir from '../lang/kumir.js'\nimport kusto from '../lang/kusto.js'\nimport latex from '../lang/latex.js'\nimport latte from '../lang/latte.js'\nimport scheme from '../lang/scheme.js'\nimport lilypond from '../lang/lilypond.js'\nimport liquid from '../lang/liquid.js'\nimport lisp from '../lang/lisp.js'\nimport livescript from '../lang/livescript.js'\nimport llvm from '../lang/llvm.js'\nimport log from '../lang/log.js'\nimport lolcode from '../lang/lolcode.js'\nimport magma from '../lang/magma.js'\nimport makefile from '../lang/makefile.js'\nimport mata from '../lang/mata.js'\nimport matlab from '../lang/matlab.js'\nimport maxscript from '../lang/maxscript.js'\nimport mel from '../lang/mel.js'\nimport mermaid from '../lang/mermaid.js'\nimport metafont from '../lang/metafont.js'\nimport mizar from '../lang/mizar.js'\nimport mongodb from '../lang/mongodb.js'\nimport monkey from '../lang/monkey.js'\nimport moonscript from '../lang/moonscript.js'\nimport n1ql from '../lang/n1ql.js'\nimport nand2tetrisHdl from '../lang/nand2tetris-hdl.js'\nimport naniscript from '../lang/naniscript.js'\nimport nasm from '../lang/nasm.js'\nimport neon from '../lang/neon.js'\nimport nevod from '../lang/nevod.js'\nimport nginx from '../lang/nginx.js'\nimport nim from '../lang/nim.js'\nimport nix from '../lang/nix.js'\nimport nsis from '../lang/nsis.js'\nimport objectivec from '../lang/objectivec.js'\nimport ocaml from '../lang/ocaml.js'\nimport odin from '../lang/odin.js'\nimport opencl from '../lang/opencl.js'\nimport openqasm from '../lang/openqasm.js'\nimport oz from '../lang/oz.js'\nimport parigp from '../lang/parigp.js'\nimport parser from '../lang/parser.js'\nimport pascal from '../lang/pascal.js'\nimport pascaligo from '../lang/pascaligo.js'\nimport psl from '../lang/psl.js'\nimport pcaxis from '../lang/pcaxis.js'\nimport peoplecode from '../lang/peoplecode.js'\nimport perl from '../lang/perl.js'\nimport phpdoc from '../lang/phpdoc.js'\nimport phpExtras from '../lang/php-extras.js'\nimport plantUml from '../lang/plant-uml.js'\nimport plsql from '../lang/plsql.js'\nimport powerquery from '../lang/powerquery.js'\nimport powershell from '../lang/powershell.js'\nimport processing from '../lang/processing.js'\nimport prolog from '../lang/prolog.js'\nimport promql from '../lang/promql.js'\nimport properties from '../lang/properties.js'\nimport protobuf from '../lang/protobuf.js'\nimport stylus from '../lang/stylus.js'\nimport twig from '../lang/twig.js'\nimport pug from '../lang/pug.js'\nimport puppet from '../lang/puppet.js'\nimport pure from '../lang/pure.js'\nimport purebasic from '../lang/purebasic.js'\nimport purescript from '../lang/purescript.js'\nimport python from '../lang/python.js'\nimport qsharp from '../lang/qsharp.js'\nimport q from '../lang/q.js'\nimport qml from '../lang/qml.js'\nimport qore from '../lang/qore.js'\nimport r from '../lang/r.js'\nimport racket from '../lang/racket.js'\nimport cshtml from '../lang/cshtml.js'\nimport jsx from '../lang/jsx.js'\nimport tsx from '../lang/tsx.js'\nimport reason from '../lang/reason.js'\nimport rego from '../lang/rego.js'\nimport renpy from '../lang/renpy.js'\nimport rescript from '../lang/rescript.js'\nimport rest from '../lang/rest.js'\nimport rip from '../lang/rip.js'\nimport roboconf from '../lang/roboconf.js'\nimport robotframework from '../lang/robotframework.js'\nimport rust from '../lang/rust.js'\nimport sas from '../lang/sas.js'\nimport sass from '../lang/sass.js'\nimport shellSession from '../lang/shell-session.js'\nimport smali from '../lang/smali.js'\nimport smalltalk from '../lang/smalltalk.js'\nimport smarty from '../lang/smarty.js'\nimport sml from '../lang/sml.js'\nimport solidity from '../lang/solidity.js'\nimport solutionFile from '../lang/solution-file.js'\nimport soy from '../lang/soy.js'\nimport turtle from '../lang/turtle.js'\nimport sparql from '../lang/sparql.js'\nimport splunkSpl from '../lang/splunk-spl.js'\nimport sqf from '../lang/sqf.js'\nimport squirrel from '../lang/squirrel.js'\nimport stan from '../lang/stan.js'\nimport stata from '../lang/stata.js'\nimport iecst from '../lang/iecst.js'\nimport supercollider from '../lang/supercollider.js'\nimport swift from '../lang/swift.js'\nimport systemd from '../lang/systemd.js'\nimport t4Templating from '../lang/t4-templating.js'\nimport t4Cs from '../lang/t4-cs.js'\nimport vbnet from '../lang/vbnet.js'\nimport t4Vb from '../lang/t4-vb.js'\nimport tap from '../lang/tap.js'\nimport tcl from '../lang/tcl.js'\nimport tt2 from '../lang/tt2.js'\nimport toml from '../lang/toml.js'\nimport tremor from '../lang/tremor.js'\nimport typoscript from '../lang/typoscript.js'\nimport unrealscript from '../lang/unrealscript.js'\nimport uorazor from '../lang/uorazor.js'\nimport v from '../lang/v.js'\nimport vala from '../lang/vala.js'\nimport velocity from '../lang/velocity.js'\nimport verilog from '../lang/verilog.js'\nimport vhdl from '../lang/vhdl.js'\nimport vim from '../lang/vim.js'\nimport visualBasic from '../lang/visual-basic.js'\nimport warpscript from '../lang/warpscript.js'\nimport wasm from '../lang/wasm.js'\nimport webIdl from '../lang/web-idl.js'\nimport wgsl from '../lang/wgsl.js'\nimport wiki from '../lang/wiki.js'\nimport wolfram from '../lang/wolfram.js'\nimport wren from '../lang/wren.js'\nimport xeora from '../lang/xeora.js'\nimport xmlDoc from '../lang/xml-doc.js'\nimport xojo from '../lang/xojo.js'\nimport xquery from '../lang/xquery.js'\nimport yang from '../lang/yang.js'\nimport zig from '../lang/zig.js'\nimport {refractor} from './core.js'\n\nrefractor.register(markup)\nrefractor.register(css)\nrefractor.register(clike)\nrefractor.register(regex)\nrefractor.register(javascript)\nrefractor.register(abap)\nrefractor.register(abnf)\nrefractor.register(actionscript)\nrefractor.register(ada)\nrefractor.register(agda)\nrefractor.register(al)\nrefractor.register(antlr4)\nrefractor.register(apacheconf)\nrefractor.register(sql)\nrefractor.register(apex)\nrefractor.register(apl)\nrefractor.register(applescript)\nrefractor.register(aql)\nrefractor.register(c)\nrefractor.register(cpp)\nrefractor.register(arduino)\nrefractor.register(arff)\nrefractor.register(armasm)\nrefractor.register(bash)\nrefractor.register(yaml)\nrefractor.register(markdown)\nrefractor.register(arturo)\nrefractor.register(asciidoc)\nrefractor.register(csharp)\nrefractor.register(aspnet)\nrefractor.register(asm6502)\nrefractor.register(asmatmel)\nrefractor.register(autohotkey)\nrefractor.register(autoit)\nrefractor.register(avisynth)\nrefractor.register(avroIdl)\nrefractor.register(awk)\nrefractor.register(basic)\nrefractor.register(batch)\nrefractor.register(bbcode)\nrefractor.register(bbj)\nrefractor.register(bicep)\nrefractor.register(birb)\nrefractor.register(bison)\nrefractor.register(bnf)\nrefractor.register(bqn)\nrefractor.register(brainfuck)\nrefractor.register(brightscript)\nrefractor.register(bro)\nrefractor.register(bsl)\nrefractor.register(cfscript)\nrefractor.register(chaiscript)\nrefractor.register(cil)\nrefractor.register(cilkc)\nrefractor.register(cilkcpp)\nrefractor.register(clojure)\nrefractor.register(cmake)\nrefractor.register(cobol)\nrefractor.register(coffeescript)\nrefractor.register(concurnas)\nrefractor.register(csp)\nrefractor.register(cooklang)\nrefractor.register(coq)\nrefractor.register(ruby)\nrefractor.register(crystal)\nrefractor.register(cssExtras)\nrefractor.register(csv)\nrefractor.register(cue)\nrefractor.register(cypher)\nrefractor.register(d)\nrefractor.register(dart)\nrefractor.register(dataweave)\nrefractor.register(dax)\nrefractor.register(dhall)\nrefractor.register(diff)\nrefractor.register(markupTemplating)\nrefractor.register(django)\nrefractor.register(dnsZoneFile)\nrefractor.register(docker)\nrefractor.register(dot)\nrefractor.register(ebnf)\nrefractor.register(editorconfig)\nrefractor.register(eiffel)\nrefractor.register(ejs)\nrefractor.register(elixir)\nrefractor.register(elm)\nrefractor.register(lua)\nrefractor.register(etlua)\nrefractor.register(erb)\nrefractor.register(erlang)\nrefractor.register(excelFormula)\nrefractor.register(fsharp)\nrefractor.register(factor)\nrefractor.register($false)\nrefractor.register(firestoreSecurityRules)\nrefractor.register(flow)\nrefractor.register(fortran)\nrefractor.register(ftl)\nrefractor.register(gml)\nrefractor.register(gap)\nrefractor.register(gcode)\nrefractor.register(gdscript)\nrefractor.register(gedcom)\nrefractor.register(gettext)\nrefractor.register(gherkin)\nrefractor.register(git)\nrefractor.register(glsl)\nrefractor.register(gn)\nrefractor.register(linkerScript)\nrefractor.register(go)\nrefractor.register(goModule)\nrefractor.register(gradle)\nrefractor.register(graphql)\nrefractor.register(groovy)\nrefractor.register(less)\nrefractor.register(scss)\nrefractor.register(textile)\nrefractor.register(haml)\nrefractor.register(handlebars)\nrefractor.register(haskell)\nrefractor.register(haxe)\nrefractor.register(hcl)\nrefractor.register(hlsl)\nrefractor.register(hoon)\nrefractor.register(hpkp)\nrefractor.register(hsts)\nrefractor.register(json)\nrefractor.register(uri)\nrefractor.register(http)\nrefractor.register(ichigojam)\nrefractor.register(icon)\nrefractor.register(icuMessageFormat)\nrefractor.register(idris)\nrefractor.register(ignore)\nrefractor.register(inform7)\nrefractor.register(ini)\nrefractor.register(io)\nrefractor.register(j)\nrefractor.register(java)\nrefractor.register(php)\nrefractor.register(javadoclike)\nrefractor.register(scala)\nrefractor.register(javadoc)\nrefractor.register(javastacktrace)\nrefractor.register(jexl)\nrefractor.register(jolie)\nrefractor.register(jq)\nrefractor.register(jsTemplates)\nrefractor.register(typescript)\nrefractor.register(jsdoc)\nrefractor.register(n4js)\nrefractor.register(jsExtras)\nrefractor.register(json5)\nrefractor.register(jsonp)\nrefractor.register(jsstacktrace)\nrefractor.register(julia)\nrefractor.register(keepalived)\nrefractor.register(keyman)\nrefractor.register(kotlin)\nrefractor.register(kumir)\nrefractor.register(kusto)\nrefractor.register(latex)\nrefractor.register(latte)\nrefractor.register(scheme)\nrefractor.register(lilypond)\nrefractor.register(liquid)\nrefractor.register(lisp)\nrefractor.register(livescript)\nrefractor.register(llvm)\nrefractor.register(log)\nrefractor.register(lolcode)\nrefractor.register(magma)\nrefractor.register(makefile)\nrefractor.register(mata)\nrefractor.register(matlab)\nrefractor.register(maxscript)\nrefractor.register(mel)\nrefractor.register(mermaid)\nrefractor.register(metafont)\nrefractor.register(mizar)\nrefractor.register(mongodb)\nrefractor.register(monkey)\nrefractor.register(moonscript)\nrefractor.register(n1ql)\nrefractor.register(nand2tetrisHdl)\nrefractor.register(naniscript)\nrefractor.register(nasm)\nrefractor.register(neon)\nrefractor.register(nevod)\nrefractor.register(nginx)\nrefractor.register(nim)\nrefractor.register(nix)\nrefractor.register(nsis)\nrefractor.register(objectivec)\nrefractor.register(ocaml)\nrefractor.register(odin)\nrefractor.register(opencl)\nrefractor.register(openqasm)\nrefractor.register(oz)\nrefractor.register(parigp)\nrefractor.register(parser)\nrefractor.register(pascal)\nrefractor.register(pascaligo)\nrefractor.register(psl)\nrefractor.register(pcaxis)\nrefractor.register(peoplecode)\nrefractor.register(perl)\nrefractor.register(phpdoc)\nrefractor.register(phpExtras)\nrefractor.register(plantUml)\nrefractor.register(plsql)\nrefractor.register(powerquery)\nrefractor.register(powershell)\nrefractor.register(processing)\nrefractor.register(prolog)\nrefractor.register(promql)\nrefractor.register(properties)\nrefractor.register(protobuf)\nrefractor.register(stylus)\nrefractor.register(twig)\nrefractor.register(pug)\nrefractor.register(puppet)\nrefractor.register(pure)\nrefractor.register(purebasic)\nrefractor.register(purescript)\nrefractor.register(python)\nrefractor.register(qsharp)\nrefractor.register(q)\nrefractor.register(qml)\nrefractor.register(qore)\nrefractor.register(r)\nrefractor.register(racket)\nrefractor.register(cshtml)\nrefractor.register(jsx)\nrefractor.register(tsx)\nrefractor.register(reason)\nrefractor.register(rego)\nrefractor.register(renpy)\nrefractor.register(rescript)\nrefractor.register(rest)\nrefractor.register(rip)\nrefractor.register(roboconf)\nrefractor.register(robotframework)\nrefractor.register(rust)\nrefractor.register(sas)\nrefractor.register(sass)\nrefractor.register(shellSession)\nrefractor.register(smali)\nrefractor.register(smalltalk)\nrefractor.register(smarty)\nrefractor.register(sml)\nrefractor.register(solidity)\nrefractor.register(solutionFile)\nrefractor.register(soy)\nrefractor.register(turtle)\nrefractor.register(sparql)\nrefractor.register(splunkSpl)\nrefractor.register(sqf)\nrefractor.register(squirrel)\nrefractor.register(stan)\nrefractor.register(stata)\nrefractor.register(iecst)\nrefractor.register(supercollider)\nrefractor.register(swift)\nrefractor.register(systemd)\nrefractor.register(t4Templating)\nrefractor.register(t4Cs)\nrefractor.register(vbnet)\nrefractor.register(t4Vb)\nrefractor.register(tap)\nrefractor.register(tcl)\nrefractor.register(tt2)\nrefractor.register(toml)\nrefractor.register(tremor)\nrefractor.register(typoscript)\nrefractor.register(unrealscript)\nrefractor.register(uorazor)\nrefractor.register(v)\nrefractor.register(vala)\nrefractor.register(velocity)\nrefractor.register(verilog)\nrefractor.register(vhdl)\nrefractor.register(vim)\nrefractor.register(visualBasic)\nrefractor.register(warpscript)\nrefractor.register(wasm)\nrefractor.register(webIdl)\nrefractor.register(wgsl)\nrefractor.register(wiki)\nrefractor.register(wolfram)\nrefractor.register(wren)\nrefractor.register(xeora)\nrefractor.register(xmlDoc)\nrefractor.register(xojo)\nrefractor.register(xquery)\nrefractor.register(yang)\nrefractor.register(zig)\n\nexport {refractor} from './core.js'\n", "/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Root} Root\n * @typedef Options options\n *   Configuration.\n * @property {boolean|string[]} [showLineNumbers]\n *   Set `showLineNumbers` to `true` to always display line number\n * @property {boolean} [ignoreMissing]\n *   Set `ignoreMissing` to `true` to ignore unsupported languages and line highlighting when no language is specified\n * @property {string} [defaultLanguage]\n *   Uses the specified language as the default if none is specified. Takes precedence over `ignoreMissing`.\n *   Note: The language must be registered with refractor.\n */\n\nimport { visit } from 'unist-util-visit'\nimport { toString } from 'hast-util-to-string'\nimport { filter } from 'unist-util-filter'\nimport rangeParser from 'parse-numeric-range'\n\nconst getLanguage = (node) => {\n  const className = node.properties.className\n  //@ts-ignore\n  for (const classListItem of className) {\n    if (classListItem.slice(0, 9) === 'language-') {\n      return classListItem.slice(9).toLowerCase()\n    }\n  }\n  return null\n}\n\n/**\n * @param {import('refractor/core').Refractor} refractor\n * @param {string} defaultLanguage\n * @return {void}\n */\nconst checkIfLanguageIsRegistered = (refractor, defaultLanguage) => {\n  if (defaultLanguage && !refractor.registered(defaultLanguage)) {\n    throw new Error(`The default language \"${defaultLanguage}\" is not registered with refractor.`)\n  }\n}\n\n/**\n * Create a closure that determines if we have to highlight the given index\n *\n * @param {string} meta\n * @return { (index:number) => boolean }\n */\nconst calculateLinesToHighlight = (meta) => {\n  const RE = /{([\\d,-]+)}/\n  // Remove space between {} e.g. {1, 3}\n  const parsedMeta = meta\n    .split(',')\n    .map((str) => str.trim())\n    .join()\n  if (RE.test(parsedMeta)) {\n    const strlineNumbers = RE.exec(parsedMeta)[1]\n    const lineNumbers = rangeParser(strlineNumbers)\n    return (index) => lineNumbers.includes(index + 1)\n  } else {\n    return () => false\n  }\n}\n\n/**\n * Check if we want to start the line numbering from a given number or 1\n * showLineNumbers=5, will start the numbering from 5\n * @param {string} meta\n * @returns {number}\n */\nconst calculateStartingLine = (meta) => {\n  const RE = /showLineNumbers=(?<lines>\\d+)/i\n  // pick the line number after = using a named capturing group\n  if (RE.test(meta)) {\n    const {\n      groups: { lines },\n    } = RE.exec(meta)\n    return Number(lines)\n  }\n  return 1\n}\n\n/**\n * Create container AST for node lines\n *\n * @param {number} number\n * @return {Element[]}\n */\nconst createLineNodes = (number) => {\n  const a = new Array(number)\n  for (let i = 0; i < number; i++) {\n    a[i] = {\n      type: 'element',\n      tagName: 'span',\n      properties: { className: [] },\n      children: [],\n    }\n  }\n  return a\n}\n\n/**\n * Split multiline text nodes into individual nodes with positioning\n * Add a node start and end line position information for each text node\n *\n * @return { (ast:Element['children']) => Element['children'] }\n *\n */\nconst addNodePositionClosure = () => {\n  let startLineNum = 1\n  /**\n   * @param {Element['children']} ast\n   * @return {Element['children']}\n   */\n  const addNodePosition = (ast) => {\n    return ast.reduce((result, node) => {\n      if (node.type === 'text') {\n        const value = /** @type {string} */ (node.value)\n        const numLines = (value.match(/\\n/g) || '').length\n        if (numLines === 0) {\n          node.position = {\n            // column: 1 is needed to avoid error with @next/mdx\n            // https://github.com/timlrx/rehype-prism-plus/issues/44\n            start: { line: startLineNum, column: 1 },\n            end: { line: startLineNum, column: 1 },\n          }\n          result.push(node)\n        } else {\n          const lines = value.split('\\n')\n          for (const [i, line] of lines.entries()) {\n            result.push({\n              type: 'text',\n              value: i === lines.length - 1 ? line : line + '\\n',\n              position: {\n                start: { line: startLineNum + i, column: 1 },\n                end: { line: startLineNum + i, column: 1 },\n              },\n            })\n          }\n        }\n        startLineNum = startLineNum + numLines\n\n        return result\n      }\n\n      if (Object.prototype.hasOwnProperty.call(node, 'children')) {\n        const initialLineNum = startLineNum\n        // @ts-ignore\n        node.children = addNodePosition(node.children, startLineNum)\n        result.push(node)\n        node.position = {\n          start: { line: initialLineNum, column: 1 },\n          end: { line: startLineNum, column: 1 },\n        }\n        return result\n      }\n\n      result.push(node)\n      return result\n    }, [])\n  }\n  return addNodePosition\n}\n\n/**\n * Rehype prism plugin generator that highlights code blocks with refractor (prismjs)\n *\n * Pass in your own refractor object with the required languages registered:\n * https://github.com/wooorm/refractor#refractorregistersyntax\n *\n * @param {import('refractor/core').Refractor} refractor\n * @return {import('unified').Plugin<[Options?], Root>}\n */\nconst rehypePrismGenerator = (refractor) => {\n  return (options = {}) => {\n    checkIfLanguageIsRegistered(refractor, options.defaultLanguage)\n    return (tree) => {\n      visit(tree, 'element', visitor)\n    }\n\n    /**\n     * @param {Element} node\n     * @param {number} index\n     * @param {Element} parent\n     */\n    function visitor(node, index, parent) {\n      if (!parent || parent.tagName !== 'pre' || node.tagName !== 'code') {\n        return\n      }\n\n      // @ts-ignore meta is a custom code block property\n      let meta = /** @type {string} */ (node?.data?.meta || node?.properties?.metastring || '')\n      // Coerce className to array\n      if (node.properties.className) {\n        if (typeof node.properties.className === 'boolean') {\n          node.properties.className = []\n        } else if (!Array.isArray(node.properties.className)) {\n          node.properties.className = [node.properties.className]\n        }\n      } else {\n        node.properties.className = []\n      }\n\n      let lang = getLanguage(node)\n      // If no language is set on the code block, use defaultLanguage if specified\n      if (!lang && options.defaultLanguage) {\n        lang = options.defaultLanguage\n        node.properties.className.push(`language-${lang}`)\n      }\n      node.properties.className.push('code-highlight')\n\n      /** @type {Element} */\n      let refractorRoot\n\n      // Syntax highlight\n      if (lang) {\n        try {\n          let rootLang\n          if (lang?.includes('diff-')) {\n            rootLang = lang.split('-')[1]\n          } else {\n            rootLang = lang\n          }\n          // @ts-ignore\n          refractorRoot = refractor.highlight(toString(node), rootLang)\n          // @ts-ignore className is already an array\n          parent.properties.className = (parent.properties.className || []).concat(\n            'language-' + rootLang\n          )\n        } catch (err) {\n          if (options.ignoreMissing && /Unknown language/.test(err.message)) {\n            refractorRoot = node\n          } else {\n            throw err\n          }\n        }\n      } else {\n        refractorRoot = node\n      }\n\n      refractorRoot.children = addNodePositionClosure()(refractorRoot.children)\n\n      // Add position info to root\n      if (refractorRoot.children.length > 0) {\n        refractorRoot.position = {\n          start: { line: refractorRoot.children[0].position.start.line, column: 0 },\n          end: {\n            line: refractorRoot.children[refractorRoot.children.length - 1].position.end.line,\n            column: 0,\n          },\n        }\n      } else {\n        refractorRoot.position = {\n          start: { line: 0, column: 0 },\n          end: { line: 0, column: 0 },\n        }\n      }\n\n      const shouldHighlightLine = calculateLinesToHighlight(meta)\n      const startingLineNumber = calculateStartingLine(meta)\n      const codeLineArray = createLineNodes(refractorRoot.position.end.line)\n\n      const falseShowLineNumbersStr = [\n        'showlinenumbers=false',\n        'showlinenumbers=\"false\"',\n        'showlinenumbers={false}',\n      ]\n      for (const [i, line] of codeLineArray.entries()) {\n        // Default class name for each line\n        line.properties.className = ['code-line']\n\n        // Syntax highlight\n        const treeExtract = filter(\n          refractorRoot,\n          (node) => node.position.start.line <= i + 1 && node.position.end.line >= i + 1\n        )\n        line.children = treeExtract.children\n\n        // Line number\n        const isShowNumbers =\n          (meta.toLowerCase().includes('showLineNumbers'.toLowerCase()) ||\n            options.showLineNumbers === true ||\n            (typeof options.showLineNumbers === 'object' &&\n              options.showLineNumbers.includes(lang))) &&\n          !falseShowLineNumbersStr.some((str) => meta.toLowerCase().includes(str))\n\n        if (isShowNumbers) {\n          line.properties.line = [(i + startingLineNumber).toString()]\n          line.properties.className.push('line-number')\n        }\n\n        // Line highlight\n        if (shouldHighlightLine(i)) {\n          line.properties.className.push('highlight-line')\n        }\n\n        // Diff classes\n        if (\n          (lang === 'diff' || lang?.includes('diff-')) &&\n          toString(line).substring(0, 1) === '-'\n        ) {\n          line.properties.className.push('deleted')\n        } else if (\n          (lang === 'diff' || lang?.includes('diff-')) &&\n          toString(line).substring(0, 1) === '+'\n        ) {\n          line.properties.className.push('inserted')\n        }\n      }\n\n      // Remove possible trailing line when splitting by \\n which results in empty array\n      if (\n        codeLineArray.length > 0 &&\n        toString(codeLineArray[codeLineArray.length - 1]).trim() === ''\n      ) {\n        codeLineArray.pop()\n      }\n\n      node.children = codeLineArray\n    }\n  }\n}\n\nexport default rehypePrismGenerator\n", "import { refractor as refractorCommon } from 'refractor'\nimport rehypePrismGenerator from './generator.js'\n\n/**\n * Rehype prism plugin that highlights code blocks with refractor (prismjs)\n * Supported languages: https://github.com/wooorm/refractor#data\n *\n * Consider using rehypePrismGenerator to generate a plugin\n * that supports your required languages.\n */\nconst rehypePrismCommon = rehypePrismGenerator(refractorCommon)\n\nexport default rehypePrismCommon\n", "import { refractor as refractorAll } from 'refractor/all'\nimport rehypePrismGenerator from './generator.js'\n\n/**\n * Rehype prism plugin that highlights code blocks with refractor (prismjs)\n * This supports all the languages and should be used on the server side.\n *\n * Consider using rehypePrismCommon or rehypePrismGenerator to generate a plugin\n * that supports your required languages.\n */\nconst rehypePrismAll = rehypePrismGenerator(refractorAll)\n\nexport default rehypePrismAll\n", "export var emptyMulticharIndex = {};\nexport var emptyRegularIndex = {};\nfunction extendIndex(item, index) {\n    var currentIndex = index;\n    for (var pos = 0; pos < item.length; pos++) {\n        var isLast = pos === item.length - 1;\n        var char = item.charAt(pos);\n        var charIndex = currentIndex[char] || (currentIndex[char] = { chars: {} });\n        if (isLast) {\n            charIndex.self = item;\n        }\n        currentIndex = charIndex.chars;\n    }\n}\nexport function createMulticharIndex(items) {\n    if (items.length === 0) {\n        return emptyMulticharIndex;\n    }\n    var index = {};\n    for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n        var item = items_1[_i];\n        extendIndex(item, index);\n    }\n    return index;\n}\nexport function createRegularIndex(items) {\n    if (items.length === 0) {\n        return emptyRegularIndex;\n    }\n    var result = {};\n    for (var _i = 0, items_2 = items; _i < items_2.length; _i++) {\n        var item = items_2[_i];\n        result[item] = true;\n    }\n    return result;\n}\n", "export var emptyPseudoSignatures = {};\nexport var defaultPseudoSignature = {\n    type: 'String',\n    optional: true\n};\nfunction calculatePseudoSignature(types) {\n    var result = {\n        type: 'NoArgument',\n        optional: false\n    };\n    function setResultType(type) {\n        if (result.type && result.type !== type && result.type !== 'NoArgument') {\n            throw new Error(\"Conflicting pseudo-class argument type: \\\"\".concat(result.type, \"\\\" vs \\\"\").concat(type, \"\\\".\"));\n        }\n        result.type = type;\n    }\n    for (var _i = 0, types_1 = types; _i < types_1.length; _i++) {\n        var type = types_1[_i];\n        if (type === 'NoArgument') {\n            result.optional = true;\n        }\n        if (type === 'Formula') {\n            setResultType('Formula');\n        }\n        if (type === 'FormulaOfSelector') {\n            setResultType('Formula');\n            result.ofSelector = true;\n        }\n        if (type === 'String') {\n            setResultType('String');\n        }\n        if (type === 'Selector') {\n            setResultType('Selector');\n        }\n    }\n    return result;\n}\nexport function inverseCategories(obj) {\n    var result = {};\n    for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n        var category = _a[_i];\n        var items = obj[category];\n        if (items) {\n            for (var _b = 0, _c = items; _b < _c.length; _b++) {\n                var item = _c[_b];\n                (result[item] || (result[item] = [])).push(category);\n            }\n        }\n    }\n    return result;\n}\nexport function calculatePseudoSignatures(definitions) {\n    var pseudoClassesToArgumentTypes = inverseCategories(definitions);\n    var result = {};\n    for (var _i = 0, _a = Object.keys(pseudoClassesToArgumentTypes); _i < _a.length; _i++) {\n        var pseudoClass = _a[_i];\n        var argumentTypes = pseudoClassesToArgumentTypes[pseudoClass];\n        if (argumentTypes) {\n            result[pseudoClass] = calculatePseudoSignature(argumentTypes);\n        }\n    }\n    return result;\n}\n", "var __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};\nvar emptyXmlOptions = {};\nvar defaultXmlOptions = { wildcard: true };\nexport function getXmlOptions(param) {\n    if (param) {\n        if (typeof param === 'boolean') {\n            return defaultXmlOptions;\n        }\n        else {\n            return param;\n        }\n    }\n    else {\n        return emptyXmlOptions;\n    }\n}\nfunction withMigration(migration, merge) {\n    return function (base, extension) { return merge(migration(base), migration(extension)); };\n}\nfunction withNoNegative(merge) {\n    return function (base, extension) {\n        var result = merge(base, extension);\n        if (!result) {\n            throw new Error(\"Syntax definition cannot be null or undefined.\");\n        }\n        return result;\n    };\n}\nfunction withPositive(positive, merge) {\n    return function (base, extension) {\n        if (extension === true) {\n            return positive;\n        }\n        return merge(base === true ? positive : base, extension);\n    };\n}\nfunction mergeSection(values) {\n    return function (base, extension) {\n        if (!extension || !base) {\n            return extension;\n        }\n        if (typeof extension !== 'object' || extension === null) {\n            throw new Error(\"Unexpected syntax definition extension type: \".concat(extension, \".\"));\n        }\n        var result = __assign({}, base);\n        for (var _i = 0, _a = Object.entries(extension); _i < _a.length; _i++) {\n            var _b = _a[_i], key = _b[0], value = _b[1];\n            if (key === 'latest') {\n                continue;\n            }\n            var mergeSchema = values[key];\n            result[key] = mergeSchema(base[key], value);\n        }\n        return result;\n    };\n}\nfunction replaceValueIfSpecified(base, extension) {\n    if (extension !== undefined) {\n        return extension;\n    }\n    return base;\n}\nfunction concatArray(base, extension) {\n    if (!extension) {\n        return base;\n    }\n    if (!base) {\n        return extension;\n    }\n    return base.concat(extension);\n}\nfunction mergeDefinitions(base, extension) {\n    if (!extension) {\n        return base;\n    }\n    if (!base) {\n        return extension;\n    }\n    var result = __assign({}, base);\n    for (var _i = 0, _a = Object.entries(extension); _i < _a.length; _i++) {\n        var _b = _a[_i], key = _b[0], value = _b[1];\n        if (!value) {\n            delete result[key];\n            continue;\n        }\n        var baseValue = base[key];\n        if (!baseValue) {\n            result[key] = value;\n            continue;\n        }\n        result[key] = baseValue.concat(value);\n    }\n    return result;\n}\nexport var extendSyntaxDefinition = withNoNegative(mergeSection({\n    baseSyntax: replaceValueIfSpecified,\n    modules: concatArray,\n    tag: withPositive(defaultXmlOptions, mergeSection({\n        wildcard: replaceValueIfSpecified\n    })),\n    ids: replaceValueIfSpecified,\n    classNames: replaceValueIfSpecified,\n    nestingSelector: replaceValueIfSpecified,\n    namespace: withPositive(defaultXmlOptions, mergeSection({\n        wildcard: replaceValueIfSpecified\n    })),\n    combinators: concatArray,\n    attributes: mergeSection({\n        operators: concatArray,\n        caseSensitivityModifiers: concatArray,\n        unknownCaseSensitivityModifiers: replaceValueIfSpecified\n    }),\n    pseudoClasses: mergeSection({\n        unknown: replaceValueIfSpecified,\n        definitions: mergeDefinitions\n    }),\n    pseudoElements: mergeSection({\n        unknown: replaceValueIfSpecified,\n        notation: replaceValueIfSpecified,\n        definitions: withMigration(function (definitions) { return (Array.isArray(definitions) ? { NoArgument: definitions } : definitions); }, mergeDefinitions)\n    })\n}));\nvar css1SyntaxDefinition = {\n    tag: {},\n    ids: true,\n    classNames: true,\n    combinators: [],\n    pseudoElements: {\n        unknown: 'reject',\n        notation: 'singleColon',\n        definitions: ['first-letter', 'first-line']\n    },\n    pseudoClasses: {\n        unknown: 'reject',\n        definitions: {\n            NoArgument: ['link', 'visited', 'active']\n        }\n    }\n};\nvar css2SyntaxDefinition = extendSyntaxDefinition(css1SyntaxDefinition, {\n    tag: { wildcard: true },\n    combinators: ['>', '+'],\n    attributes: {\n        unknownCaseSensitivityModifiers: 'reject',\n        operators: ['=', '~=', '|=']\n    },\n    pseudoElements: {\n        definitions: ['before', 'after']\n    },\n    pseudoClasses: {\n        unknown: 'reject',\n        definitions: {\n            NoArgument: ['hover', 'focus', 'first-child'],\n            String: ['lang']\n        }\n    }\n});\nvar selectors3SyntaxDefinition = extendSyntaxDefinition(css2SyntaxDefinition, {\n    namespace: {\n        wildcard: true\n    },\n    combinators: ['~'],\n    attributes: {\n        operators: ['^=', '$=', '*=']\n    },\n    pseudoElements: {\n        notation: 'both'\n    },\n    pseudoClasses: {\n        definitions: {\n            NoArgument: [\n                'root',\n                'last-child',\n                'first-of-type',\n                'last-of-type',\n                'only-child',\n                'only-of-type',\n                'empty',\n                'target',\n                'enabled',\n                'disabled',\n                'checked',\n                'indeterminate'\n            ],\n            Formula: ['nth-child', 'nth-last-child', 'nth-of-type', 'nth-last-of-type'],\n            Selector: ['not']\n        }\n    }\n});\nvar selectors4SyntaxDefinition = extendSyntaxDefinition(selectors3SyntaxDefinition, {\n    combinators: ['||'],\n    attributes: {\n        caseSensitivityModifiers: ['i', 'I', 's', 'S']\n    },\n    pseudoClasses: {\n        definitions: {\n            NoArgument: [\n                'any-link',\n                'local-link',\n                'target-within',\n                'scope',\n                'current',\n                'past',\n                'future',\n                'focus-within',\n                'focus-visible',\n                'read-write',\n                'read-only',\n                'placeholder-shown',\n                'default',\n                'valid',\n                'invalid',\n                'in-range',\n                'out-of-range',\n                'required',\n                'optional',\n                'blank',\n                'user-invalid',\n                'playing',\n                'paused',\n                'autofill',\n                'modal',\n                'fullscreen',\n                'picture-in-picture',\n                'defined',\n                'loading',\n                'popover-open'\n            ],\n            Formula: ['nth-col', 'nth-last-col'],\n            String: ['dir'],\n            FormulaOfSelector: ['nth-child', 'nth-last-child'],\n            Selector: ['current', 'is', 'where', 'has', 'state']\n        }\n    },\n    pseudoElements: {\n        definitions: {\n            NoArgument: ['marker']\n        }\n    }\n});\n/**\n * CSS Modules with their syntax definitions.\n * These can be used to extend the parser with specific CSS modules.\n *\n * @example\n * // Using the css-position-3 module\n * createParser({ modules: ['css-position-3'] })\n */\nexport var cssModules = {\n    'css-position-1': {\n        latest: false,\n        pseudoClasses: {\n            definitions: {\n                NoArgument: ['static', 'relative', 'absolute']\n            }\n        }\n    },\n    'css-position-2': {\n        latest: false,\n        pseudoClasses: {\n            definitions: {\n                NoArgument: ['static', 'relative', 'absolute', 'fixed']\n            }\n        }\n    },\n    'css-position-3': {\n        latest: false,\n        pseudoClasses: {\n            definitions: {\n                NoArgument: ['sticky', 'fixed', 'absolute', 'relative', 'static']\n            }\n        }\n    },\n    'css-position-4': {\n        latest: true,\n        pseudoClasses: {\n            definitions: {\n                NoArgument: ['sticky', 'fixed', 'absolute', 'relative', 'static', 'initial']\n            }\n        }\n    },\n    'css-scoping-1': {\n        latest: true,\n        pseudoClasses: {\n            definitions: {\n                NoArgument: ['host', 'host-context'],\n                Selector: ['host', 'host-context']\n            }\n        },\n        pseudoElements: {\n            definitions: {\n                Selector: ['slotted']\n            }\n        }\n    },\n    'css-pseudo-4': {\n        latest: true,\n        pseudoElements: {\n            definitions: {\n                NoArgument: [\n                    'marker',\n                    'selection',\n                    'target-text',\n                    'search-text',\n                    'spelling-error',\n                    'grammar-error',\n                    'backdrop',\n                    'file-selector-button',\n                    'prefix',\n                    'postfix',\n                    'placeholder',\n                    'details-content'\n                ],\n                String: ['highlight']\n            }\n        }\n    },\n    'css-shadow-parts-1': {\n        latest: true,\n        pseudoElements: {\n            definitions: {\n                String: ['part']\n            }\n        }\n    },\n    'css-nesting-1': {\n        latest: true,\n        nestingSelector: true\n    }\n};\nvar latestSyntaxDefinition = __assign(__assign({}, selectors4SyntaxDefinition), { modules: Object.entries(cssModules)\n        .filter(function (_a) {\n        var latest = _a[1].latest;\n        return latest;\n    })\n        .map(function (_a) {\n        var name = _a[0];\n        return name;\n    }) });\nvar progressiveSyntaxDefinition = extendSyntaxDefinition(latestSyntaxDefinition, {\n    pseudoElements: {\n        unknown: 'accept'\n    },\n    pseudoClasses: {\n        unknown: 'accept'\n    },\n    attributes: {\n        unknownCaseSensitivityModifiers: 'accept'\n    }\n});\nexport var cssSyntaxDefinitions = {\n    css1: css1SyntaxDefinition,\n    css2: css2SyntaxDefinition,\n    css3: selectors3SyntaxDefinition,\n    'selectors-3': selectors3SyntaxDefinition,\n    'selectors-4': selectors4SyntaxDefinition,\n    latest: latestSyntaxDefinition,\n    progressive: progressiveSyntaxDefinition\n};\n/**\n * Builds an index of where each pseudo-class and pseudo-element is defined\n * (in which CSS Level or CSS Module)\n */\nexport function buildPseudoLocationIndex() {\n    var index = {\n        pseudoClasses: {},\n        pseudoElements: {}\n    };\n    // Add CSS Levels (excluding 'latest' and 'progressive')\n    var cssLevels = ['css1', 'css2', 'css3', 'selectors-3', 'selectors-4'];\n    for (var _i = 0, cssLevels_1 = cssLevels; _i < cssLevels_1.length; _i++) {\n        var level = cssLevels_1[_i];\n        var syntax = cssSyntaxDefinitions[level];\n        // Process pseudo-classes\n        if (syntax.pseudoClasses && typeof syntax.pseudoClasses === 'object') {\n            var definitions = syntax.pseudoClasses.definitions;\n            if (definitions) {\n                for (var _a = 0, _b = Object.entries(definitions); _a < _b.length; _a++) {\n                    var _c = _b[_a], names = _c[1];\n                    for (var _d = 0, names_1 = names; _d < names_1.length; _d++) {\n                        var name_1 = names_1[_d];\n                        if (!index.pseudoClasses[name_1]) {\n                            index.pseudoClasses[name_1] = [];\n                        }\n                        if (!index.pseudoClasses[name_1].includes(level)) {\n                            index.pseudoClasses[name_1].push(level);\n                        }\n                    }\n                }\n            }\n        }\n        // Process pseudo-elements\n        if (syntax.pseudoElements && typeof syntax.pseudoElements === 'object') {\n            var definitions = syntax.pseudoElements.definitions;\n            if (definitions) {\n                if (Array.isArray(definitions)) {\n                    for (var _e = 0, definitions_1 = definitions; _e < definitions_1.length; _e++) {\n                        var name_2 = definitions_1[_e];\n                        if (!index.pseudoElements[name_2]) {\n                            index.pseudoElements[name_2] = [];\n                        }\n                        if (!index.pseudoElements[name_2].includes(level)) {\n                            index.pseudoElements[name_2].push(level);\n                        }\n                    }\n                }\n                else {\n                    for (var _f = 0, _g = Object.values(definitions); _f < _g.length; _f++) {\n                        var names = _g[_f];\n                        for (var _h = 0, names_2 = names; _h < names_2.length; _h++) {\n                            var name_3 = names_2[_h];\n                            if (!index.pseudoElements[name_3]) {\n                                index.pseudoElements[name_3] = [];\n                            }\n                            if (!index.pseudoElements[name_3].includes(level)) {\n                                index.pseudoElements[name_3].push(level);\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n    // Add CSS Modules\n    for (var _j = 0, _k = Object.entries(cssModules); _j < _k.length; _j++) {\n        var _l = _k[_j], moduleName = _l[0], moduleSyntax = _l[1];\n        // Process pseudo-classes\n        if (moduleSyntax.pseudoClasses && typeof moduleSyntax.pseudoClasses === 'object') {\n            var definitions = moduleSyntax.pseudoClasses.definitions;\n            if (definitions) {\n                for (var _m = 0, _o = Object.values(definitions); _m < _o.length; _m++) {\n                    var names = _o[_m];\n                    for (var _p = 0, names_3 = names; _p < names_3.length; _p++) {\n                        var name_4 = names_3[_p];\n                        if (!index.pseudoClasses[name_4]) {\n                            index.pseudoClasses[name_4] = [];\n                        }\n                        if (!index.pseudoClasses[name_4].includes(moduleName)) {\n                            index.pseudoClasses[name_4].push(moduleName);\n                        }\n                    }\n                }\n            }\n        }\n        // Process pseudo-elements\n        if (moduleSyntax.pseudoElements && typeof moduleSyntax.pseudoElements === 'object') {\n            var definitions = moduleSyntax.pseudoElements.definitions;\n            if (definitions) {\n                if (Array.isArray(definitions)) {\n                    for (var _q = 0, definitions_2 = definitions; _q < definitions_2.length; _q++) {\n                        var name_5 = definitions_2[_q];\n                        if (!index.pseudoElements[name_5]) {\n                            index.pseudoElements[name_5] = [];\n                        }\n                        if (!index.pseudoElements[name_5].includes(moduleName)) {\n                            index.pseudoElements[name_5].push(moduleName);\n                        }\n                    }\n                }\n                else {\n                    for (var _r = 0, _s = Object.values(definitions); _r < _s.length; _r++) {\n                        var names = _s[_r];\n                        for (var _t = 0, names_4 = names; _t < names_4.length; _t++) {\n                            var name_6 = names_4[_t];\n                            if (!index.pseudoElements[name_6]) {\n                                index.pseudoElements[name_6] = [];\n                            }\n                            if (!index.pseudoElements[name_6].includes(moduleName)) {\n                                index.pseudoElements[name_6].push(moduleName);\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n    return index;\n}\n// Pre-build the index for faster lookup\nexport var pseudoLocationIndex = buildPseudoLocationIndex();\n", "export function isIdentStart(c) {\n    return (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || c === '-' || c === '_' || c === '\\\\' || c >= '\\u00a0';\n}\nexport function isIdent(c) {\n    return ((c >= 'a' && c <= 'z') ||\n        (c >= 'A' && c <= 'Z') ||\n        (c >= '0' && c <= '9') ||\n        c === '-' ||\n        c === '_' ||\n        c >= '\\u00a0');\n}\nexport function isHex(c) {\n    return (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F') || (c >= '0' && c <= '9');\n}\nexport var identEscapeChars = {\n    '!': true,\n    '\"': true,\n    '#': true,\n    $: true,\n    '%': true,\n    '&': true,\n    \"'\": true,\n    '(': true,\n    ')': true,\n    '*': true,\n    '+': true,\n    ',': true,\n    '.': true,\n    '/': true,\n    ';': true,\n    '<': true,\n    '=': true,\n    '>': true,\n    '?': true,\n    '@': true,\n    '[': true,\n    '\\\\': true,\n    ']': true,\n    '^': true,\n    '`': true,\n    '{': true,\n    '|': true,\n    '}': true,\n    '~': true\n};\nexport var stringRenderEscapeChars = {\n    '\\n': true,\n    '\\r': true,\n    '\\t': true,\n    '\\f': true,\n    '\\v': true\n};\nexport var whitespaceChars = {\n    ' ': true,\n    '\\t': true,\n    '\\n': true,\n    '\\r': true,\n    '\\f': true\n};\nexport var quoteChars = {\n    '\"': true,\n    \"'\": true\n};\nexport var digitsChars = {\n    0: true,\n    1: true,\n    2: true,\n    3: true,\n    4: true,\n    5: true,\n    6: true,\n    7: true,\n    8: true,\n    9: true\n};\nexport var maxHexLength = 6;\nexport function escapeIdentifier(s) {\n    var len = s.length;\n    var result = '';\n    var i = 0;\n    while (i < len) {\n        var chr = s.charAt(i);\n        if (identEscapeChars[chr] || (chr === '-' && i === 1 && s.charAt(0) === '-')) {\n            result += '\\\\' + chr;\n        }\n        else {\n            if (chr === '-' ||\n                chr === '_' ||\n                (chr >= 'A' && chr <= 'Z') ||\n                (chr >= 'a' && chr <= 'z') ||\n                (chr >= '0' && chr <= '9' && i !== 0 && !(i === 1 && s.charAt(0) === '-'))) {\n                result += chr;\n            }\n            else {\n                var charCode = chr.charCodeAt(0);\n                if ((charCode & 0xf800) === 0xd800) {\n                    var extraCharCode = s.charCodeAt(i++);\n                    if ((charCode & 0xfc00) !== 0xd800 || (extraCharCode & 0xfc00) !== 0xdc00) {\n                        throw Error('UCS-2(decode): illegal sequence');\n                    }\n                    charCode = ((charCode & 0x3ff) << 10) + (extraCharCode & 0x3ff) + 0x10000;\n                }\n                result += '\\\\' + charCode.toString(16) + ' ';\n            }\n        }\n        i++;\n    }\n    return result.trim();\n}\nexport function escapeString(s) {\n    var len = s.length;\n    var result = '';\n    var i = 0;\n    while (i < len) {\n        var chr = s.charAt(i);\n        if (chr === '\"') {\n            chr = '\\\\\"';\n        }\n        else if (chr === '\\\\') {\n            chr = '\\\\\\\\';\n        }\n        else if (stringRenderEscapeChars[chr]) {\n            chr = '\\\\' + chr.charCodeAt(0).toString(16) + (i === len - 1 ? '' : ' ');\n        }\n        result += chr;\n        i++;\n    }\n    return \"\\\"\".concat(result, \"\\\"\");\n}\n", "import { createMulticharIndex, createRegularIndex, emptyMulticharIndex, emptyRegularIndex } from './indexes.js';\nimport { calculatePseudoSignatures, defaultPseudoSignature, emptyPseudoSignatures } from './pseudo-signatures.js';\nimport { cssSyntaxDefinitions, extendSyntaxDefinition, getXmlOptions, cssModules, pseudoLocationIndex } from './syntax-definitions.js';\nimport { digitsChars, isHex, isIdent, isIdentStart, maxHexLength, quoteChars, whitespaceChars } from './utils.js';\nvar errorPrefix = \"css-selector-parser parse error: \";\n/**\n * Creates a parse function to be used later to parse CSS selectors.\n */\nexport function createParser(options) {\n    if (options === void 0) { options = {}; }\n    var _a = options.syntax, syntax = _a === void 0 ? 'latest' : _a, substitutes = options.substitutes, _b = options.strict, strict = _b === void 0 ? true : _b, modules = options.modules;\n    var syntaxDefinition = typeof syntax === 'object' ? syntax : cssSyntaxDefinitions[syntax];\n    if (syntaxDefinition.baseSyntax) {\n        syntaxDefinition = extendSyntaxDefinition(cssSyntaxDefinitions[syntaxDefinition.baseSyntax], syntaxDefinition);\n    }\n    // Apply modules from syntax definition\n    if (syntaxDefinition.modules && syntaxDefinition.modules.length > 0) {\n        for (var _i = 0, _c = syntaxDefinition.modules; _i < _c.length; _i++) {\n            var module_1 = _c[_i];\n            var moduleSyntax = cssModules[module_1];\n            if (moduleSyntax) {\n                syntaxDefinition = extendSyntaxDefinition(moduleSyntax, syntaxDefinition);\n            }\n        }\n    }\n    // Apply additional modules if specified from options\n    if (modules && modules.length > 0) {\n        for (var _d = 0, modules_1 = modules; _d < modules_1.length; _d++) {\n            var module_2 = modules_1[_d];\n            var moduleSyntax = cssModules[module_2];\n            if (moduleSyntax) {\n                syntaxDefinition = extendSyntaxDefinition(moduleSyntax, syntaxDefinition);\n            }\n        }\n    }\n    var _e = syntaxDefinition.tag\n        ? [true, Boolean(getXmlOptions(syntaxDefinition.tag).wildcard)]\n        : [false, false], tagNameEnabled = _e[0], tagNameWildcardEnabled = _e[1];\n    var idEnabled = Boolean(syntaxDefinition.ids);\n    var classNamesEnabled = Boolean(syntaxDefinition.classNames);\n    var nestingSelectorEnabled = Boolean(syntaxDefinition.nestingSelector);\n    var namespaceEnabled = Boolean(syntaxDefinition.namespace);\n    var namespaceWildcardEnabled = syntaxDefinition.namespace &&\n        (syntaxDefinition.namespace === true || syntaxDefinition.namespace.wildcard === true);\n    if (namespaceEnabled && !tagNameEnabled) {\n        throw new Error(\"\".concat(errorPrefix, \"Namespaces cannot be enabled while tags are disabled.\"));\n    }\n    var substitutesEnabled = Boolean(substitutes);\n    var combinatorsIndex = syntaxDefinition.combinators\n        ? createMulticharIndex(syntaxDefinition.combinators)\n        : emptyMulticharIndex;\n    var _f = syntaxDefinition.attributes\n        ? [\n            true,\n            syntaxDefinition.attributes.operators\n                ? createMulticharIndex(syntaxDefinition.attributes.operators)\n                : emptyMulticharIndex,\n            syntaxDefinition.attributes.caseSensitivityModifiers\n                ? createRegularIndex(syntaxDefinition.attributes.caseSensitivityModifiers)\n                : emptyRegularIndex,\n            syntaxDefinition.attributes.unknownCaseSensitivityModifiers === 'accept'\n        ]\n        : [false, emptyMulticharIndex, emptyRegularIndex, false], attributesEnabled = _f[0], attributesOperatorsIndex = _f[1], attributesCaseSensitivityModifiers = _f[2], attributesAcceptUnknownCaseSensitivityModifiers = _f[3];\n    var attributesCaseSensitivityModifiersEnabled = attributesAcceptUnknownCaseSensitivityModifiers || Object.keys(attributesCaseSensitivityModifiers).length > 0;\n    var _g = syntaxDefinition.pseudoClasses\n        ? [\n            true,\n            syntaxDefinition.pseudoClasses.definitions\n                ? calculatePseudoSignatures(syntaxDefinition.pseudoClasses.definitions)\n                : emptyPseudoSignatures,\n            syntaxDefinition.pseudoClasses.unknown === 'accept'\n        ]\n        : [false, emptyPseudoSignatures, false], pseudoClassesEnabled = _g[0], pseudoClassesDefinitions = _g[1], pseudoClassesAcceptUnknown = _g[2];\n    var _h = syntaxDefinition.pseudoElements\n        ? [\n            true,\n            syntaxDefinition.pseudoElements.notation === 'singleColon' ||\n                syntaxDefinition.pseudoElements.notation === 'both',\n            !syntaxDefinition.pseudoElements.notation ||\n                syntaxDefinition.pseudoElements.notation === 'doubleColon' ||\n                syntaxDefinition.pseudoElements.notation === 'both',\n            syntaxDefinition.pseudoElements.definitions\n                ? calculatePseudoSignatures(Array.isArray(syntaxDefinition.pseudoElements.definitions)\n                    ? { NoArgument: syntaxDefinition.pseudoElements.definitions }\n                    : syntaxDefinition.pseudoElements.definitions)\n                : emptyPseudoSignatures,\n            syntaxDefinition.pseudoElements.unknown === 'accept'\n        ]\n        : [false, false, false, emptyPseudoSignatures, false], pseudoElementsEnabled = _h[0], pseudoElementsSingleColonNotationEnabled = _h[1], pseudoElementsDoubleColonNotationEnabled = _h[2], pseudoElementsDefinitions = _h[3], pseudoElementsAcceptUnknown = _h[4];\n    var str = '';\n    var l = str.length;\n    var pos = 0;\n    var chr = '';\n    var is = function (comparison) { return chr === comparison; };\n    var isTagStart = function () { return is('*') || isIdentStart(chr); };\n    var rewind = function (newPos) {\n        pos = newPos;\n        chr = str.charAt(pos);\n    };\n    var next = function () {\n        pos++;\n        chr = str.charAt(pos);\n    };\n    var readAndNext = function () {\n        var current = chr;\n        pos++;\n        chr = str.charAt(pos);\n        return current;\n    };\n    /** @throws ParserError */\n    function fail(errorMessage) {\n        var position = Math.min(l - 1, pos);\n        var error = new Error(\"\".concat(errorPrefix).concat(errorMessage, \" Pos: \").concat(position, \".\"));\n        error.position = position;\n        error.name = 'ParserError';\n        throw error;\n    }\n    function assert(condition, errorMessage) {\n        if (!condition) {\n            return fail(errorMessage);\n        }\n    }\n    var assertNonEof = function () {\n        assert(pos < l, 'Unexpected end of input.');\n    };\n    var isEof = function () { return pos >= l; };\n    var pass = function (character) {\n        assert(pos < l, \"Expected \\\"\".concat(character, \"\\\" but end of input reached.\"));\n        assert(chr === character, \"Expected \\\"\".concat(character, \"\\\" but \\\"\").concat(chr, \"\\\" found.\"));\n        pos++;\n        chr = str.charAt(pos);\n    };\n    function matchMulticharIndex(index) {\n        var match = matchMulticharIndexPos(index, pos);\n        if (match) {\n            pos += match.length;\n            chr = str.charAt(pos);\n            return match;\n        }\n    }\n    function matchMulticharIndexPos(index, subPos) {\n        var char = str.charAt(subPos);\n        var charIndex = index[char];\n        if (charIndex) {\n            var subMatch = matchMulticharIndexPos(charIndex.chars, subPos + 1);\n            if (subMatch) {\n                return subMatch;\n            }\n            if (charIndex.self) {\n                return charIndex.self;\n            }\n        }\n    }\n    /**\n     * @see https://www.w3.org/TR/css-syntax/#hex-digit-diagram\n     */\n    function parseHex() {\n        var hex = readAndNext();\n        var count = 1;\n        while (isHex(chr) && count < maxHexLength) {\n            hex += readAndNext();\n            count++;\n        }\n        skipSingleWhitespace();\n        return String.fromCharCode(parseInt(hex, 16));\n    }\n    /**\n     * @see https://www.w3.org/TR/css-syntax/#string-token-diagram\n     */\n    function parseString(quote) {\n        var result = '';\n        pass(quote);\n        while (pos < l) {\n            if (is(quote)) {\n                next();\n                return result;\n            }\n            else if (is('\\\\')) {\n                next();\n                if (is(quote)) {\n                    result += quote;\n                    next();\n                }\n                else if (chr === '\\n' || chr === '\\f') {\n                    next();\n                }\n                else if (chr === '\\r') {\n                    next();\n                    if (is('\\n')) {\n                        next();\n                    }\n                }\n                else if (isHex(chr)) {\n                    result += parseHex();\n                }\n                else {\n                    result += chr;\n                    next();\n                }\n            }\n            else {\n                result += chr;\n                next();\n            }\n        }\n        return result;\n    }\n    /**\n     * @see https://www.w3.org/TR/css-syntax/#ident-token-diagram\n     */\n    function parseIdentifier() {\n        if (!isIdentStart(chr)) {\n            return null;\n        }\n        var result = '';\n        while (is('-')) {\n            result += chr;\n            next();\n        }\n        if (result === '-' && !isIdent(chr) && !is('\\\\')) {\n            fail('Identifiers cannot consist of a single hyphen.');\n        }\n        if (strict && result.length >= 2) {\n            // Checking this only for strict mode since browsers work fine with these identifiers.\n            fail('Identifiers cannot start with two hyphens with strict mode on.');\n        }\n        if (digitsChars[chr]) {\n            fail('Identifiers cannot start with hyphens followed by digits.');\n        }\n        while (pos < l) {\n            if (isIdent(chr)) {\n                result += readAndNext();\n            }\n            else if (is('\\\\')) {\n                next();\n                assertNonEof();\n                if (isHex(chr)) {\n                    result += parseHex();\n                }\n                else {\n                    result += readAndNext();\n                }\n            }\n            else {\n                break;\n            }\n        }\n        return result;\n    }\n    function parsePseudoClassString() {\n        var result = '';\n        while (pos < l) {\n            if (is(')')) {\n                break;\n            }\n            else if (is('\\\\')) {\n                next();\n                if (isEof() && !strict) {\n                    return (result + '\\\\').trim();\n                }\n                assertNonEof();\n                if (isHex(chr)) {\n                    result += parseHex();\n                }\n                else {\n                    result += readAndNext();\n                }\n            }\n            else {\n                result += readAndNext();\n            }\n        }\n        return result.trim();\n    }\n    function skipSingleWhitespace() {\n        if (chr === ' ' || chr === '\\t' || chr === '\\f' || chr === '\\n') {\n            next();\n            return;\n        }\n        if (chr === '\\r') {\n            next();\n        }\n        if (chr === '\\n') {\n            next();\n        }\n    }\n    function skipWhitespace() {\n        while (whitespaceChars[chr]) {\n            next();\n        }\n    }\n    function parseSelector(relative) {\n        if (relative === void 0) { relative = false; }\n        skipWhitespace();\n        var rules = [parseRule(relative)];\n        while (is(',')) {\n            next();\n            skipWhitespace();\n            rules.push(parseRule(relative));\n        }\n        return {\n            type: 'Selector',\n            rules: rules\n        };\n    }\n    function parseAttribute() {\n        pass('[');\n        skipWhitespace();\n        var attr;\n        if (is('|')) {\n            assert(namespaceEnabled, 'Namespaces are not enabled.');\n            next();\n            var name_1 = parseIdentifier();\n            assert(name_1, 'Expected attribute name.');\n            attr = {\n                type: 'Attribute',\n                name: name_1,\n                namespace: { type: 'NoNamespace' }\n            };\n        }\n        else if (is('*')) {\n            assert(namespaceEnabled, 'Namespaces are not enabled.');\n            assert(namespaceWildcardEnabled, 'Wildcard namespace is not enabled.');\n            next();\n            pass('|');\n            var name_2 = parseIdentifier();\n            assert(name_2, 'Expected attribute name.');\n            attr = {\n                type: 'Attribute',\n                name: name_2,\n                namespace: { type: 'WildcardNamespace' }\n            };\n        }\n        else {\n            var identifier = parseIdentifier();\n            assert(identifier, 'Expected attribute name.');\n            attr = {\n                type: 'Attribute',\n                name: identifier\n            };\n            if (is('|')) {\n                var savedPos = pos;\n                next();\n                if (isIdentStart(chr)) {\n                    assert(namespaceEnabled, 'Namespaces are not enabled.');\n                    var name_3 = parseIdentifier();\n                    assert(name_3, 'Expected attribute name.');\n                    attr = {\n                        type: 'Attribute',\n                        name: name_3,\n                        namespace: { type: 'NamespaceName', name: identifier }\n                    };\n                }\n                else {\n                    rewind(savedPos);\n                }\n            }\n        }\n        assert(attr.name, 'Expected attribute name.');\n        skipWhitespace();\n        if (isEof() && !strict) {\n            return attr;\n        }\n        if (is(']')) {\n            next();\n        }\n        else {\n            attr.operator = matchMulticharIndex(attributesOperatorsIndex);\n            assert(attr.operator, 'Expected a valid attribute selector operator.');\n            skipWhitespace();\n            assertNonEof();\n            if (quoteChars[chr]) {\n                attr.value = {\n                    type: 'String',\n                    value: parseString(chr)\n                };\n            }\n            else if (substitutesEnabled && is('$')) {\n                next();\n                var name_4 = parseIdentifier();\n                assert(name_4, 'Expected substitute name.');\n                attr.value = {\n                    type: 'Substitution',\n                    name: name_4\n                };\n            }\n            else {\n                var value = parseIdentifier();\n                assert(value, 'Expected attribute value.');\n                attr.value = {\n                    type: 'String',\n                    value: value\n                };\n            }\n            skipWhitespace();\n            if (isEof() && !strict) {\n                return attr;\n            }\n            if (!is(']')) {\n                var caseSensitivityModifier = parseIdentifier();\n                assert(caseSensitivityModifier, 'Expected end of attribute selector.');\n                attr.caseSensitivityModifier = caseSensitivityModifier;\n                assert(attributesCaseSensitivityModifiersEnabled, 'Attribute case sensitivity modifiers are not enabled.');\n                assert(attributesAcceptUnknownCaseSensitivityModifiers ||\n                    attributesCaseSensitivityModifiers[attr.caseSensitivityModifier], 'Unknown attribute case sensitivity modifier.');\n                skipWhitespace();\n                if (isEof() && !strict) {\n                    return attr;\n                }\n            }\n            pass(']');\n        }\n        return attr;\n    }\n    function parseNumber() {\n        var result = '';\n        while (digitsChars[chr]) {\n            result += readAndNext();\n        }\n        assert(result !== '', 'Formula parse error.');\n        return parseInt(result);\n    }\n    var isNumberStart = function () { return is('-') || is('+') || digitsChars[chr]; };\n    function parseFormula() {\n        if (is('e') || is('o')) {\n            var ident = parseIdentifier();\n            if (ident === 'even') {\n                skipWhitespace();\n                return [2, 0];\n            }\n            if (ident === 'odd') {\n                skipWhitespace();\n                return [2, 1];\n            }\n        }\n        var firstNumber = null;\n        var firstNumberMultiplier = 1;\n        if (is('-')) {\n            next();\n            firstNumberMultiplier = -1;\n        }\n        if (isNumberStart()) {\n            if (is('+')) {\n                next();\n            }\n            firstNumber = parseNumber();\n            if (!is('\\\\') && !is('n')) {\n                return [0, firstNumber * firstNumberMultiplier];\n            }\n        }\n        if (firstNumber === null) {\n            firstNumber = 1;\n        }\n        firstNumber *= firstNumberMultiplier;\n        var identifier;\n        if (is('\\\\')) {\n            next();\n            if (isHex(chr)) {\n                identifier = parseHex();\n            }\n            else {\n                identifier = readAndNext();\n            }\n        }\n        else {\n            identifier = readAndNext();\n        }\n        assert(identifier === 'n', 'Formula parse error: expected \"n\".');\n        skipWhitespace();\n        if (is('+') || is('-')) {\n            var sign = is('+') ? 1 : -1;\n            next();\n            skipWhitespace();\n            return [firstNumber, sign * parseNumber()];\n        }\n        else {\n            return [firstNumber, 0];\n        }\n    }\n    function parsePseudoArgument(pseudoName, type, signature) {\n        var argument;\n        if (is('(')) {\n            next();\n            skipWhitespace();\n            if (substitutesEnabled && is('$')) {\n                next();\n                var name_5 = parseIdentifier();\n                assert(name_5, 'Expected substitute name.');\n                argument = {\n                    type: 'Substitution',\n                    name: name_5\n                };\n            }\n            else if (signature.type === 'String') {\n                argument = {\n                    type: 'String',\n                    value: parsePseudoClassString()\n                };\n                assert(argument.value, \"Expected \".concat(type, \" argument value.\"));\n            }\n            else if (signature.type === 'Selector') {\n                argument = parseSelector(true);\n            }\n            else if (signature.type === 'Formula') {\n                var _a = parseFormula(), a = _a[0], b = _a[1];\n                argument = {\n                    type: 'Formula',\n                    a: a,\n                    b: b\n                };\n                if (signature.ofSelector) {\n                    skipWhitespace();\n                    if (is('o') || is('\\\\')) {\n                        var ident = parseIdentifier();\n                        assert(ident === 'of', 'Formula of selector parse error.');\n                        skipWhitespace();\n                        argument = {\n                            type: 'FormulaOfSelector',\n                            a: a,\n                            b: b,\n                            selector: parseRule()\n                        };\n                    }\n                }\n            }\n            else {\n                return fail(\"Invalid \".concat(type, \" signature.\"));\n            }\n            skipWhitespace();\n            if (isEof() && !strict) {\n                return argument;\n            }\n            pass(')');\n        }\n        else {\n            assert(signature.optional, \"Argument is required for \".concat(type, \" \\\"\").concat(pseudoName, \"\\\".\"));\n        }\n        return argument;\n    }\n    function parseTagName() {\n        if (is('*')) {\n            assert(tagNameWildcardEnabled, 'Wildcard tag name is not enabled.');\n            next();\n            return { type: 'WildcardTag' };\n        }\n        else if (isIdentStart(chr)) {\n            assert(tagNameEnabled, 'Tag names are not enabled.');\n            var name_6 = parseIdentifier();\n            assert(name_6, 'Expected tag name.');\n            return {\n                type: 'TagName',\n                name: name_6\n            };\n        }\n        else {\n            return fail('Expected tag name.');\n        }\n    }\n    function parseTagNameWithNamespace() {\n        if (is('*')) {\n            var savedPos = pos;\n            next();\n            if (!is('|')) {\n                rewind(savedPos);\n                return parseTagName();\n            }\n            next();\n            if (!isTagStart()) {\n                rewind(savedPos);\n                return parseTagName();\n            }\n            assert(namespaceEnabled, 'Namespaces are not enabled.');\n            assert(namespaceWildcardEnabled, 'Wildcard namespace is not enabled.');\n            var tagName = parseTagName();\n            tagName.namespace = { type: 'WildcardNamespace' };\n            return tagName;\n        }\n        else if (is('|')) {\n            assert(namespaceEnabled, 'Namespaces are not enabled.');\n            next();\n            var tagName = parseTagName();\n            tagName.namespace = { type: 'NoNamespace' };\n            return tagName;\n        }\n        else if (isIdentStart(chr)) {\n            var identifier = parseIdentifier();\n            assert(identifier, 'Expected tag name.');\n            if (!is('|')) {\n                assert(tagNameEnabled, 'Tag names are not enabled.');\n                return {\n                    type: 'TagName',\n                    name: identifier\n                };\n            }\n            var savedPos = pos;\n            next();\n            if (!isTagStart()) {\n                rewind(savedPos);\n                return {\n                    type: 'TagName',\n                    name: identifier\n                };\n            }\n            assert(namespaceEnabled, 'Namespaces are not enabled.');\n            var tagName = parseTagName();\n            tagName.namespace = { type: 'NamespaceName', name: identifier };\n            return tagName;\n        }\n        else {\n            return fail('Expected tag name.');\n        }\n    }\n    function parseRule(relative) {\n        var _a, _b;\n        if (relative === void 0) { relative = false; }\n        var rule = { type: 'Rule', items: [] };\n        if (relative) {\n            var combinator = matchMulticharIndex(combinatorsIndex);\n            if (combinator) {\n                rule.combinator = combinator;\n                skipWhitespace();\n            }\n        }\n        while (pos < l) {\n            if (isTagStart()) {\n                assert(rule.items.length === 0, 'Unexpected tag/namespace start.');\n                rule.items.push(parseTagNameWithNamespace());\n            }\n            else if (is('|')) {\n                var savedPos = pos;\n                next();\n                if (isTagStart()) {\n                    assert(rule.items.length === 0, 'Unexpected tag/namespace start.');\n                    rewind(savedPos);\n                    rule.items.push(parseTagNameWithNamespace());\n                }\n                else {\n                    rewind(savedPos);\n                    break;\n                }\n            }\n            else if (is('.')) {\n                assert(classNamesEnabled, 'Class names are not enabled.');\n                next();\n                var className = parseIdentifier();\n                assert(className, 'Expected class name.');\n                rule.items.push({ type: 'ClassName', name: className });\n            }\n            else if (is('#')) {\n                assert(idEnabled, 'IDs are not enabled.');\n                next();\n                var idName = parseIdentifier();\n                assert(idName, 'Expected ID name.');\n                rule.items.push({ type: 'Id', name: idName });\n            }\n            else if (is('&')) {\n                assert(nestingSelectorEnabled, 'Nesting selector is not enabled.');\n                next();\n                rule.items.push({ type: 'NestingSelector' });\n            }\n            else if (is('[')) {\n                assert(attributesEnabled, 'Attributes are not enabled.');\n                rule.items.push(parseAttribute());\n            }\n            else if (is(':')) {\n                var isDoubleColon = false;\n                var isPseudoElement = false;\n                next();\n                if (is(':')) {\n                    assert(pseudoElementsEnabled, 'Pseudo elements are not enabled.');\n                    assert(pseudoElementsDoubleColonNotationEnabled, 'Pseudo elements double colon notation is not enabled.');\n                    isDoubleColon = true;\n                    next();\n                }\n                var pseudoName = parseIdentifier();\n                assert(isDoubleColon || pseudoName, 'Expected pseudo-class name.');\n                assert(!isDoubleColon || pseudoName, 'Expected pseudo-element name.');\n                assert(pseudoName, 'Expected pseudo-class name.');\n                if (!isDoubleColon ||\n                    pseudoElementsAcceptUnknown ||\n                    Object.prototype.hasOwnProperty.call(pseudoElementsDefinitions, pseudoName)) {\n                    // All good\n                }\n                else {\n                    // Generate a helpful error message with location information\n                    var locations = pseudoLocationIndex.pseudoElements[pseudoName];\n                    var errorMessage = \"Unknown pseudo-element \\\"\".concat(pseudoName, \"\\\"\");\n                    if (locations && locations.length > 0) {\n                        errorMessage += \". It is defined in: \".concat(locations.join(', '));\n                    }\n                    fail(errorMessage + '.');\n                }\n                isPseudoElement =\n                    pseudoElementsEnabled &&\n                        (isDoubleColon ||\n                            (!isDoubleColon &&\n                                pseudoElementsSingleColonNotationEnabled &&\n                                Object.prototype.hasOwnProperty.call(pseudoElementsDefinitions, pseudoName)));\n                if (isPseudoElement) {\n                    var signature = (_a = pseudoElementsDefinitions[pseudoName]) !== null && _a !== void 0 ? _a : (pseudoElementsAcceptUnknown && defaultPseudoSignature);\n                    var pseudoElement = {\n                        type: 'PseudoElement',\n                        name: pseudoName\n                    };\n                    var argument = parsePseudoArgument(pseudoName, 'pseudo-element', signature);\n                    if (argument) {\n                        assert(argument.type !== 'Formula' && argument.type !== 'FormulaOfSelector', 'Pseudo-elements cannot have formula argument.');\n                        pseudoElement.argument = argument;\n                    }\n                    rule.items.push(pseudoElement);\n                }\n                else {\n                    assert(pseudoClassesEnabled, 'Pseudo-classes are not enabled.');\n                    var signature = (_b = pseudoClassesDefinitions[pseudoName]) !== null && _b !== void 0 ? _b : (pseudoClassesAcceptUnknown && defaultPseudoSignature);\n                    if (signature) {\n                        // All good\n                    }\n                    else {\n                        // Generate a helpful error message with location information\n                        var locations = pseudoLocationIndex.pseudoClasses[pseudoName];\n                        var errorMessage = \"Unknown pseudo-class: \\\"\".concat(pseudoName, \"\\\"\");\n                        if (locations && locations.length > 0) {\n                            errorMessage += \". It is defined in: \".concat(locations.join(', '));\n                        }\n                        fail(errorMessage + '.');\n                    }\n                    var argument = parsePseudoArgument(pseudoName, 'pseudo-class', signature);\n                    var pseudoClass = {\n                        type: 'PseudoClass',\n                        name: pseudoName\n                    };\n                    if (argument) {\n                        pseudoClass.argument = argument;\n                    }\n                    rule.items.push(pseudoClass);\n                }\n            }\n            else {\n                break;\n            }\n        }\n        if (rule.items.length === 0) {\n            if (isEof()) {\n                return fail('Expected rule but end of input reached.');\n            }\n            else {\n                return fail(\"Expected rule but \\\"\".concat(chr, \"\\\" found.\"));\n            }\n        }\n        skipWhitespace();\n        if (!isEof() && !is(',') && !is(')')) {\n            var combinator = matchMulticharIndex(combinatorsIndex);\n            skipWhitespace();\n            rule.nestedRule = parseRule();\n            rule.nestedRule.combinator = combinator;\n        }\n        return rule;\n    }\n    return function (input) {\n        // noinspection SuspiciousTypeOfGuard\n        if (typeof input !== 'string') {\n            throw new Error(\"\".concat(errorPrefix, \"Expected string input.\"));\n        }\n        str = input;\n        l = str.length;\n        pos = 0;\n        chr = str.charAt(0);\n        return parseSelector();\n    };\n}\n", "var __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};\nfunction astMethods(type) {\n    return function (generatorName, checkerName) {\n        var _a;\n        return (_a = {},\n            _a[generatorName] = function (props) { return (__assign({ type: type }, props)); },\n            _a[checkerName] = function (entity) {\n                return typeof entity === 'object' && entity !== null && entity.type === type;\n            },\n            _a);\n    };\n}\n/**\n * AST structure generators and matchers.\n * For instance, `ast.selector({rules: [...]})` creates AstSelector and `ast.isSelector(...)` checks if\n * AstSelector was specified.\n *\n * @example\n *\n * // Represents CSS selector: ns|div#user-34.user.user-active[role=\"button\"]:lang(en)::before > *\n * const selector = ast.selector({\n *     rules: [\n *         ast.rule({\n *             items: [\n *                 ast.tagName({name: 'div', namespace: ast.namespaceName({name: 'ns'})}),\n *                 ast.id({name: 'user-34'}),\n *                 ast.className({name: 'user'}),\n *                 ast.className({name: 'user-active'}),\n *                 ast.attribute({\n *                     name: 'role',\n *                     operator: '=',\n *                     value: ast.string({value: 'button'})\n *                 }),\n *                 ast.pseudoClass({\n *                     name: 'lang',\n *                     argument: ast.string({value: 'en'})\n *                 }),\n *                 ast.pseudoElement({name: 'before'})\n *             ],\n *             nestedRule: ast.rule({combinator: '>', items: [ast.wildcardTag()]})\n *         })\n *     ]\n * });\n * console.log(ast.isSelector(selector)); // prints true\n * console.log(ast.isRule(selector)); // prints false\n */\nexport var ast = __assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign(__assign({}, astMethods('Selector')('selector', 'isSelector')), astMethods('Rule')('rule', 'isRule')), astMethods('TagName')('tagName', 'isTagName')), astMethods('Id')('id', 'isId')), astMethods('ClassName')('className', 'isClassName')), astMethods('WildcardTag')('wildcardTag', 'isWildcardTag')), astMethods('NamespaceName')('namespaceName', 'isNamespaceName')), astMethods('WildcardNamespace')('wildcardNamespace', 'isWildcardNamespace')), astMethods('NoNamespace')('noNamespace', 'isNoNamespace')), astMethods('NestingSelector')('nestingSelector', 'isNestingSelector')), astMethods('Attribute')('attribute', 'isAttribute')), astMethods('PseudoClass')('pseudoClass', 'isPseudoClass')), astMethods('PseudoElement')('pseudoElement', 'isPseudoElement')), astMethods('String')('string', 'isString')), astMethods('Formula')('formula', 'isFormula')), astMethods('FormulaOfSelector')('formulaOfSelector', 'isFormulaOfSelector')), astMethods('Substitution')('substitution', 'isSubstitution'));\n", "/**\n * @import {AstSelector} from 'css-selector-parser'\n */\n\nimport {createParser} from 'css-selector-parser'\n\nconst cssSelectorParse = createParser({syntax: 'selectors-4'})\n\n/**\n * @param {string} selector\n *   Selector to parse.\n * @returns {AstSelector}\n *   Parsed selector.\n */\nexport function parse(selector) {\n  if (typeof selector !== 'string') {\n    throw new TypeError('Expected `string` as selector, not `' + selector + '`')\n  }\n\n  return cssSelectorParse(selector)\n}\n", "const rtlRange = '\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC'\nconst ltrRange =\n  'A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6' +\n  '\\u00F8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF\\u200E\\u2C00-\\uFB1C' +\n  '\\uFE00-\\uFE6F\\uFEFD-\\uFFFF'\n\n/* eslint-disable no-misleading-character-class */\nconst rtl = new RegExp('^[^' + ltrRange + ']*[' + rtlRange + ']')\nconst ltr = new RegExp('^[^' + rtlRange + ']*[' + ltrRange + ']')\n/* eslint-enable no-misleading-character-class */\n\n/**\n * Detect the direction of text: left-to-right, right-to-left, or neutral\n *\n * @param {string} value\n * @returns {'rtl'|'ltr'|'neutral'}\n */\nexport function direction(value) {\n  const source = String(value || '')\n  return rtl.test(source) ? 'rtl' : ltr.test(source) ? 'ltr' : 'neutral'\n}\n", "/**\n * @import {Visitor} from 'unist-util-visit'\n * @import {ElementContent, Nodes} from 'hast'\n * @import {Direction, State} from './index.js'\n */\n\nimport {direction} from 'direction'\nimport {toString} from 'hast-util-to-string'\nimport {svg} from 'property-information'\nimport {EXIT, SKIP, visit} from 'unist-util-visit'\n\n/**\n * Enter a node.\n *\n * The caller is responsible for calling the return value `exit`.\n *\n * @param {State} state\n *   Current state.\n *\n *   Will be mutated: `exit` undos the changes.\n * @param {Nodes} node\n *   Node to enter.\n * @returns {() => undefined}\n *   Call to exit.\n */\n// eslint-disable-next-line complexity\nexport function enterState(state, node) {\n  const schema = state.schema\n  const language = state.language\n  const currentDirection = state.direction\n  const editableOrEditingHost = state.editableOrEditingHost\n  /** @type {Direction | undefined} */\n  let directionInferred\n\n  if (node.type === 'element') {\n    const lang = node.properties.xmlLang || node.properties.lang\n    const type = node.properties.type || 'text'\n    const direction = directionProperty(node)\n\n    if (lang !== null && lang !== undefined) {\n      state.language = String(lang)\n    }\n\n    if (schema && schema.space === 'html') {\n      if (node.properties.contentEditable === 'true') {\n        state.editableOrEditingHost = true\n      }\n\n      if (node.tagName === 'svg') {\n        state.schema = svg\n      }\n\n      // See: <https://html.spec.whatwg.org/#the-directionality>.\n      // Explicit `[dir=rtl]`.\n      if (direction === 'rtl') {\n        directionInferred = direction\n      } else if (\n        // Explicit `[dir=ltr]`.\n        direction === 'ltr' ||\n        // HTML with an invalid or no `[dir]`.\n        (direction !== 'auto' && node.tagName === 'html') ||\n        // `input[type=tel]` with an invalid or no `[dir]`.\n        (direction !== 'auto' && node.tagName === 'input' && type === 'tel')\n      ) {\n        directionInferred = 'ltr'\n        // `[dir=auto]` or `bdi` with an invalid or no `[dir]`.\n      } else if (direction === 'auto' || node.tagName === 'bdi') {\n        if (node.tagName === 'textarea') {\n          // Check contents of `<textarea>`.\n          directionInferred = directionBidi(toString(node))\n        } else if (\n          node.tagName === 'input' &&\n          (type === 'email' ||\n            type === 'search' ||\n            type === 'tel' ||\n            type === 'text')\n        ) {\n          // Check value of `<input>`.\n          directionInferred = node.properties.value\n            ? directionBidi(String(node.properties.value))\n            : 'ltr'\n        } else {\n          // Check text nodes in `node`.\n          visit(node, inferDirectionality)\n        }\n      }\n\n      if (directionInferred) {\n        state.direction = directionInferred\n      }\n    }\n    // Turn off editing mode in non-HTML spaces.\n    else if (state.editableOrEditingHost) {\n      state.editableOrEditingHost = false\n    }\n  }\n\n  return reset\n\n  /**\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function reset() {\n    state.schema = schema\n    state.language = language\n    state.direction = currentDirection\n    state.editableOrEditingHost = editableOrEditingHost\n  }\n\n  /** @type {Visitor<ElementContent>} */\n  function inferDirectionality(child) {\n    if (child.type === 'text') {\n      directionInferred = directionBidi(child.value)\n      return directionInferred ? EXIT : undefined\n    }\n\n    if (\n      child !== node &&\n      child.type === 'element' &&\n      (child.tagName === 'bdi' ||\n        child.tagName === 'script' ||\n        child.tagName === 'style' ||\n        child.tagName === 'textare' ||\n        directionProperty(child))\n    ) {\n      return SKIP\n    }\n  }\n}\n\n/**\n * See `wooorm/direction`.\n *\n * @param {string} value\n *   Value to check.\n * @returns {Exclude<Direction, 'auto'> | undefined}\n *   Directionality.\n */\nfunction directionBidi(value) {\n  const result = direction(value)\n  return result === 'neutral' ? undefined : result\n}\n\n/**\n * @param {ElementContent} node\n *   Node to check.\n * @returns {Direction | undefined}\n *   Directionality.\n */\nfunction directionProperty(node) {\n  const value =\n    node.type === 'element' && typeof node.properties.dir === 'string'\n      ? node.properties.dir.toLowerCase()\n      : undefined\n\n  return value === 'auto' || value === 'ltr' || value === 'rtl'\n    ? value\n    : undefined\n}\n", "export function deprecate(fn) {\n  return fn\n}\n\nexport function equal() {}\n\nexport function ok() {}\n\nexport function unreachable() {}\n", "/**\n * @import {AstAttribute} from 'css-selector-parser'\n * @import {Element, Properties} from 'hast'\n * @import {Info, Schema} from 'property-information'\n */\n\nimport {stringify as commas} from 'comma-separated-tokens'\nimport {ok as assert} from 'devlop'\nimport {find} from 'property-information'\nimport * as spaces from 'space-separated-tokens'\n\n/**\n * @param {AstAttribute} query\n *   Query.\n * @param {Element} element\n *   Element.\n * @param {Schema} schema\n *   Schema of element.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nexport function attribute(query, element, schema) {\n  const info = find(schema, query.name)\n  const propertyValue = element.properties[info.property]\n  let value = normalizeValue(propertyValue, info)\n\n  // Exists.\n  if (!query.value) {\n    return value !== undefined\n  }\n\n  assert(query.value.type === 'String', 'expected plain string')\n  let key = query.value.value\n\n  // Case-sensitivity.\n  if (query.caseSensitivityModifier === 'i') {\n    key = key.toLowerCase()\n\n    if (value) {\n      value = value.toLowerCase()\n    }\n  }\n\n  if (value !== undefined) {\n    switch (query.operator) {\n      // Exact.\n      case '=': {\n        return key === value\n      }\n\n      // Ends.\n      case '$=': {\n        return key === value.slice(-key.length)\n      }\n\n      // Contains.\n      case '*=': {\n        return value.includes(key)\n      }\n\n      // Begins.\n      case '^=': {\n        return key === value.slice(0, key.length)\n      }\n\n      // Exact or prefix.\n      case '|=': {\n        return (\n          key === value ||\n          (key === value.slice(0, key.length) &&\n            value.charAt(key.length) === '-')\n        )\n      }\n\n      // Space-separated list.\n      case '~=': {\n        return (\n          // For all other values (including comma-separated lists), return whether this\n          // is an exact match.\n          key === value ||\n          // If this is a space-separated list, and the query is contained in it, return\n          // true.\n          spaces.parse(value).includes(key)\n        )\n      }\n      // Other values are not yet supported by CSS.\n      // No default\n    }\n  }\n\n  return false\n}\n\n/**\n *\n * @param {Properties[keyof Properties]} value\n * @param {Info} info\n * @returns {string | undefined}\n */\nfunction normalizeValue(value, info) {\n  if (value === null || value === undefined) {\n    // Empty.\n  } else if (typeof value === 'boolean') {\n    if (value) {\n      return info.attribute\n    }\n  } else if (Array.isArray(value)) {\n    if (value.length > 0) {\n      return (info.commaSeparated ? commas : spaces.stringify)(value)\n    }\n  } else {\n    return String(value)\n  }\n}\n", "/**\n * @import {AstClassName} from 'css-selector-parser'\n * @import {Element} from 'hast'\n */\n\n/** @type {Array<never>} */\nconst emptyClassNames = []\n\n/**\n * Check whether an element has all class names.\n *\n * @param {AstClassName} query\n *   AST rule (with `classNames`).\n * @param {Element} element\n *   Element.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nexport function className(query, element) {\n  // Assume array.\n  const value = /** @type {Readonly<Array<string>>} */ (\n    element.properties.className || emptyClassNames\n  )\n\n  return value.includes(query.name)\n}\n", "/**\n * @import {AstId} from 'css-selector-parser'\n * @import {Element} from 'hast'\n */\n\n/**\n * Check whether an element has an ID.\n *\n * @param {AstId} query\n *   AST rule (with `ids`).\n * @param {Element} element\n *   Element.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nexport function id(query, element) {\n  return element.properties.id === query.name\n}\n", "/**\n * @import {AstTagName} from 'css-selector-parser'\n * @import {Element} from 'hast'\n */\n\n/**\n * Check whether an element has a tag name.\n *\n * @param {AstTagName} query\n *   AST rule (with `tag`).\n * @param {Element} element\n *   Element.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nexport function name(query, element) {\n  return query.name === element.tagName\n}\n", "/**\n * See <https://tools.ietf.org/html/rfc4647#section-3.1>\n * for more info on the algorithms.\n */\n\n/**\n * @typedef {string} Tag\n *   BCP-47 tag.\n * @typedef {Array<Tag>} Tags\n *   List of BCP-47 tags.\n * @typedef {string} Range\n *   RFC 4647 range.\n * @typedef {Array<Range>} Ranges\n *   List of RFC 4647 range.\n *\n * @callback Check\n *   An internal check.\n * @param {Tag} tag\n *   BCP-47 tag.\n * @param {Range} range\n *   RFC 4647 range.\n * @returns {boolean}\n *   Whether the range matches the tag.\n *\n * @typedef {FilterOrLookup<true>} Filter\n *   Filter: yields all tags that match a range.\n * @typedef {FilterOrLookup<false>} Lookup\n *   Lookup: yields the best tag that matches a range.\n */\n\n/**\n * @template {boolean} IsFilter\n *   Whether to filter or perform a lookup.\n * @callback FilterOrLookup\n *   A check.\n * @param {Tag|Tags} tags\n *   One or more BCP-47 tags.\n * @param {Range|Ranges|undefined} [ranges='*']\n *   One or more RFC 4647 ranges.\n * @returns {IsFilter extends true ? Tags : Tag|undefined}\n *   Result.\n */\n\n/**\n * Factory to perform a filter or a lookup.\n *\n * This factory creates a function that accepts a list of tags and a list of\n * ranges, and contains logic to exit early for lookups.\n * `check` just has to deal with one tag and one range.\n * This match function iterates over ranges, and for each range,\n * iterates over tags.\n * That way, earlier ranges matching any tag have precedence over later ranges.\n *\n * @template {boolean} IsFilter\n * @param {Check} check\n *   A check.\n * @param {IsFilter} filter\n *   Whether to filter or perform a lookup.\n * @returns {FilterOrLookup<IsFilter>}\n *   Filter or lookup.\n */\nfunction factory(check, filter) {\n  /**\n   * @param {Tag|Tags} tags\n   *   One or more BCP-47 tags.\n   * @param {Range|Ranges|undefined} [ranges='*']\n   *   One or more RFC 4647 ranges.\n   * @returns {IsFilter extends true ? Tags : Tag|undefined}\n   *   Result.\n   */\n  return function (tags, ranges) {\n    let left = cast(tags, 'tag')\n    const right = cast(\n      ranges === null || ranges === undefined ? '*' : ranges,\n      'range'\n    )\n    /** @type {Tags} */\n    const matches = []\n    let rightIndex = -1\n\n    while (++rightIndex < right.length) {\n      const range = right[rightIndex].toLowerCase()\n\n      // Ignore wildcards in lookup mode.\n      if (!filter && range === '*') continue\n\n      let leftIndex = -1\n      /** @type {Tags} */\n      const next = []\n\n      while (++leftIndex < left.length) {\n        if (check(left[leftIndex].toLowerCase(), range)) {\n          // Exit if this is a lookup and we have a match.\n          if (!filter) {\n            return /** @type {IsFilter extends true ? Tags : Tag|undefined} */ (\n              left[leftIndex]\n            )\n          }\n\n          matches.push(left[leftIndex])\n        } else {\n          next.push(left[leftIndex])\n        }\n      }\n\n      left = next\n    }\n\n    // If this is a filter, return the list.  If it\u2019s a lookup, we didn\u2019t find\n    // a match, so return `undefined`.\n    return /** @type {IsFilter extends true ? Tags : Tag|undefined} */ (\n      filter ? matches : undefined\n    )\n  }\n}\n\n/**\n * Basic Filtering (Section 3.3.1) matches a language priority list consisting\n * of basic language ranges (Section 2.1) to sets of language tags.\n *\n * @param {Tag|Tags} tags\n *   One or more BCP-47 tags.\n * @param {Range|Ranges|undefined} [ranges='*']\n *   One or more RFC 4647 ranges.\n * @returns {Tags}\n *   List of BCP-47 tags.\n */\nexport const basicFilter = factory(function (tag, range) {\n  return range === '*' || tag === range || tag.includes(range + '-')\n}, true)\n\n/**\n * Extended Filtering (Section 3.3.2) matches a language priority list\n * consisting of extended language ranges (Section 2.2) to sets of language\n * tags.\n *\n * @param {Tag|Tags} tags\n *   One or more BCP-47 tags.\n * @param {Range|Ranges|undefined} [ranges='*']\n *   One or more RFC 4647 ranges.\n * @returns {Tags}\n *   List of BCP-47 tags.\n */\nexport const extendedFilter = factory(function (tag, range) {\n  // 3.3.2.1\n  const left = tag.split('-')\n  const right = range.split('-')\n  let leftIndex = 0\n  let rightIndex = 0\n\n  // 3.3.2.2\n  if (right[rightIndex] !== '*' && left[leftIndex] !== right[rightIndex]) {\n    return false\n  }\n\n  leftIndex++\n  rightIndex++\n\n  // 3.3.2.3\n  while (rightIndex < right.length) {\n    // 3.3.2.3.A\n    if (right[rightIndex] === '*') {\n      rightIndex++\n      continue\n    }\n\n    // 3.3.2.3.B\n    if (!left[leftIndex]) return false\n\n    // 3.3.2.3.C\n    if (left[leftIndex] === right[rightIndex]) {\n      leftIndex++\n      rightIndex++\n      continue\n    }\n\n    // 3.3.2.3.D\n    if (left[leftIndex].length === 1) return false\n\n    // 3.3.2.3.E\n    leftIndex++\n  }\n\n  // 3.3.2.4\n  return true\n}, true)\n\n/**\n * Lookup (Section 3.4) matches a language priority list consisting of basic\n * language ranges to sets of language tags to find the one exact language tag\n * that best matches the range.\n *\n * @param {Tag|Tags} tags\n *   One or more BCP-47 tags.\n * @param {Range|Ranges|undefined} [ranges='*']\n *   One or more RFC 4647 ranges.\n * @returns {Tag|undefined}\n *   BCP-47 tag.\n */\nexport const lookup = factory(function (tag, range) {\n  let right = range\n\n  /* eslint-disable-next-line no-constant-condition */\n  while (true) {\n    if (right === '*' || tag === right) return true\n\n    let index = right.lastIndexOf('-')\n\n    if (index < 0) return false\n\n    if (right.charAt(index - 2) === '-') index -= 2\n\n    right = right.slice(0, index)\n  }\n}, false)\n\n/**\n * Validate tags or ranges, and cast them to arrays.\n *\n * @param {string|Array<string>} values\n * @param {string} name\n * @returns {Array<string>}\n */\nfunction cast(values, name) {\n  const value = values && typeof values === 'string' ? [values] : values\n\n  if (!value || typeof value !== 'object' || !('length' in value)) {\n    throw new Error(\n      'Invalid ' + name + ' `' + value + '`, expected non-empty string'\n    )\n  }\n\n  return value\n}\n", "/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Nodes} Nodes\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * Check if `node` is an element and has a `name` property.\n *\n * @template {string} Key\n *   Type of key.\n * @param {Nodes} node\n *   Node to check (typically `Element`).\n * @param {Key} name\n *   Property name to check.\n * @returns {node is Element & {properties: Record<Key, Array<number | string> | number | string | true>}}}\n *   Whether `node` is an element that has a `name` property.\n *\n *   Note: see <https://github.com/DefinitelyTyped/DefinitelyTyped/blob/27c9274/types/hast/index.d.ts#L37C29-L37C98>.\n */\nexport function hasProperty(node, name) {\n  const value =\n    node.type === 'element' &&\n    own.call(node.properties, name) &&\n    node.properties[name]\n\n  return value !== null && value !== undefined && value !== false\n}\n", "/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\n// HTML whitespace expression.\n// See <https://infra.spec.whatwg.org/#ascii-whitespace>.\nconst re = /[ \\t\\n\\f\\r]/g\n\n/**\n * Check if the given value is *inter-element whitespace*.\n *\n * @param {Nodes | string} thing\n *   Thing to check (`Node` or `string`).\n * @returns {boolean}\n *   Whether the `value` is inter-element whitespace (`boolean`): consisting of\n *   zero or more of space, tab (`\\t`), line feed (`\\n`), carriage return\n *   (`\\r`), or form feed (`\\f`); if a node is passed it must be a `Text` node,\n *   whose `value` field is checked.\n */\nexport function whitespace(thing) {\n  return typeof thing === 'object'\n    ? thing.type === 'text'\n      ? empty(thing.value)\n      : false\n    : empty(thing)\n}\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction empty(value) {\n  return value.replace(re, '') === ''\n}\n", null, null, null, "/**\n * @callback Handler\n *   Handle a value, with a certain ID field set to a certain value.\n *   The ID field is passed to `zwitch`, and it\u2019s value is this function\u2019s\n *   place on the `handlers` record.\n * @param {...any} parameters\n *   Arbitrary parameters passed to the zwitch.\n *   The first will be an object with a certain ID field set to a certain value.\n * @returns {any}\n *   Anything!\n */\n\n/**\n * @callback UnknownHandler\n *   Handle values that do have a certain ID field, but it\u2019s set to a value\n *   that is not listed in the `handlers` record.\n * @param {unknown} value\n *   An object with a certain ID field set to an unknown value.\n * @param {...any} rest\n *   Arbitrary parameters passed to the zwitch.\n * @returns {any}\n *   Anything!\n */\n\n/**\n * @callback InvalidHandler\n *   Handle values that do not have a certain ID field.\n * @param {unknown} value\n *   Any unknown value.\n * @param {...any} rest\n *   Arbitrary parameters passed to the zwitch.\n * @returns {void|null|undefined|never}\n *   This should crash or return nothing.\n */\n\n/**\n * @template {InvalidHandler} [Invalid=InvalidHandler]\n * @template {UnknownHandler} [Unknown=UnknownHandler]\n * @template {Record<string, Handler>} [Handlers=Record<string, Handler>]\n * @typedef Options\n *   Configuration (required).\n * @property {Invalid} [invalid]\n *   Handler to use for invalid values.\n * @property {Unknown} [unknown]\n *   Handler to use for unknown values.\n * @property {Handlers} [handlers]\n *   Handlers to use.\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * Handle values based on a field.\n *\n * @template {InvalidHandler} [Invalid=InvalidHandler]\n * @template {UnknownHandler} [Unknown=UnknownHandler]\n * @template {Record<string, Handler>} [Handlers=Record<string, Handler>]\n * @param {string} key\n *   Field to switch on.\n * @param {Options<Invalid, Unknown, Handlers>} [options]\n *   Configuration (required).\n * @returns {{unknown: Unknown, invalid: Invalid, handlers: Handlers, (...parameters: Parameters<Handlers[keyof Handlers]>): ReturnType<Handlers[keyof Handlers]>, (...parameters: Parameters<Unknown>): ReturnType<Unknown>}}\n */\nexport function zwitch(key, options) {\n  const settings = options || {}\n\n  /**\n   * Handle one value.\n   *\n   * Based on the bound `key`, a respective handler will be called.\n   * If `value` is not an object, or doesn\u2019t have a `key` property, the special\n   * \u201Cinvalid\u201D handler will be called.\n   * If `value` has an unknown `key`, the special \u201Cunknown\u201D handler will be\n   * called.\n   *\n   * All arguments, and the context object, are passed through to the handler,\n   * and it\u2019s result is returned.\n   *\n   * @this {unknown}\n   *   Any context object.\n   * @param {unknown} [value]\n   *   Any value.\n   * @param {...unknown} parameters\n   *   Arbitrary parameters passed to the zwitch.\n   * @property {Handler} invalid\n   *   Handle for values that do not have a certain ID field.\n   * @property {Handler} unknown\n   *   Handle values that do have a certain ID field, but it\u2019s set to a value\n   *   that is not listed in the `handlers` record.\n   * @property {Handlers} handlers\n   *   Record of handlers.\n   * @returns {unknown}\n   *   Anything.\n   */\n  function one(value, ...parameters) {\n    /** @type {Handler|undefined} */\n    let fn = one.invalid\n    const handlers = one.handlers\n\n    if (value && own.call(value, key)) {\n      // @ts-expect-error Indexable.\n      const id = String(value[key])\n      // @ts-expect-error Indexable.\n      fn = own.call(handlers, id) ? handlers[id] : one.unknown\n    }\n\n    if (fn) {\n      return fn.call(this, value, ...parameters)\n    }\n  }\n\n  one.handlers = settings.handlers || {}\n  one.invalid = settings.invalid\n  one.unknown = settings.unknown\n\n  // @ts-expect-error: matches!\n  return one\n}\n", "/**\n * @import {AstPseudoClass} from 'css-selector-parser'\n * @import {default as NthCheck} from 'nth-check'\n * @import {ElementContent, Element, Parents} from 'hast'\n * @import {State} from './index.js'\n */\n\nimport {extendedFilter} from 'bcp-47-match'\nimport {parse as commas} from 'comma-separated-tokens'\nimport {ok as assert, unreachable} from 'devlop'\nimport {hasProperty} from 'hast-util-has-property'\nimport {whitespace} from 'hast-util-whitespace'\nimport fauxEsmNthCheck from 'nth-check'\nimport {zwitch} from 'zwitch'\nimport {walk} from './walk.js'\n\n/** @type {NthCheck} */\n// @ts-expect-error: types are broken.\nconst nthCheck = fauxEsmNthCheck.default || fauxEsmNthCheck\n\n/** @type {(rule: AstPseudoClass, element: Element, index: number | undefined, parent: Parents | undefined, state: State) => boolean} */\nexport const pseudo = zwitch('name', {\n  handlers: {\n    'any-link': anyLink,\n    blank,\n    checked,\n    dir,\n    disabled,\n    empty,\n    enabled,\n    'first-child': firstChild,\n    'first-of-type': firstOfType,\n    has,\n    is,\n    lang,\n    'last-child': lastChild,\n    'last-of-type': lastOfType,\n    not,\n    'nth-child': nthChild,\n    'nth-last-child': nthLastChild,\n    'nth-last-of-type': nthLastOfType,\n    'nth-of-type': nthOfType,\n    'only-child': onlyChild,\n    'only-of-type': onlyOfType,\n    optional,\n    'read-only': readOnly,\n    'read-write': readWrite,\n    required,\n    root,\n    scope\n  },\n  invalid: invalidPseudo,\n  unknown: unknownPseudo\n})\n\n/**\n * Check whether an element matches an `:any-link` pseudo.\n *\n * @param {AstPseudoClass} _\n *   Query.\n * @param {Element} element\n *   Element.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nfunction anyLink(_, element) {\n  return (\n    (element.tagName === 'a' ||\n      element.tagName === 'area' ||\n      element.tagName === 'link') &&\n    hasProperty(element, 'href')\n  )\n}\n\n/**\n * @param {State} state\n *   State.\n * @param {AstPseudoClass} query\n *   Query.\n */\nfunction assertDeep(state, query) {\n  if (state.shallow) {\n    throw new Error('Cannot use `:' + query.name + '` without parent')\n  }\n}\n\n/**\n * Check whether an element matches a `:blank` pseudo.\n *\n * @param {AstPseudoClass} _\n *   Query.\n * @param {Element} element\n *   Element.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nfunction blank(_, element) {\n  return !someChildren(element, check)\n\n  /**\n   * @param {ElementContent} child\n   * @returns {boolean}\n   */\n  function check(child) {\n    return (\n      child.type === 'element' || (child.type === 'text' && !whitespace(child))\n    )\n  }\n}\n\n/**\n * Check whether an element matches a `:checked` pseudo.\n *\n * @param {AstPseudoClass} _\n *   Query.\n * @param {Element} element\n *   Element.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nfunction checked(_, element) {\n  if (element.tagName === 'input' || element.tagName === 'menuitem') {\n    return Boolean(\n      (element.properties.type === 'checkbox' ||\n        element.properties.type === 'radio') &&\n        hasProperty(element, 'checked')\n    )\n  }\n\n  if (element.tagName === 'option') {\n    return hasProperty(element, 'selected')\n  }\n\n  return false\n}\n\n/**\n * Check whether an element matches a `:dir()` pseudo.\n *\n * @param {AstPseudoClass} query\n *   Query.\n * @param {Element} _1\n *   Element.\n * @param {number | undefined} _2\n *   Index of `element` in `parent`.\n * @param {Parents | undefined} _3\n *   Parent of `element`.\n * @param {State} state\n *   State.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\n// eslint-disable-next-line unicorn/prevent-abbreviations\nfunction dir(query, _1, _2, _3, state) {\n  assert(query.argument, 'expected `argument`')\n  assert(query.argument.type === 'String', 'expected plain text')\n  return state.direction === query.argument.value\n}\n\n/**\n * Check whether an element matches a `:disabled` pseudo.\n *\n * @param {AstPseudoClass} _\n *   Query.\n * @param {Element} element\n *   Element.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nfunction disabled(_, element) {\n  return (\n    (element.tagName === 'button' ||\n      element.tagName === 'input' ||\n      element.tagName === 'select' ||\n      element.tagName === 'textarea' ||\n      element.tagName === 'optgroup' ||\n      element.tagName === 'option' ||\n      element.tagName === 'menuitem' ||\n      element.tagName === 'fieldset') &&\n    hasProperty(element, 'disabled')\n  )\n}\n\n/**\n * Check whether an element matches an `:empty` pseudo.\n *\n * @param {AstPseudoClass} _\n *   Query.\n * @param {Element} element\n *   Element.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nfunction empty(_, element) {\n  return !someChildren(element, check)\n\n  /**\n   * @param {ElementContent} child\n   * @returns {boolean}\n   */\n  function check(child) {\n    return child.type === 'element' || child.type === 'text'\n  }\n}\n\n/**\n * Check whether an element matches an `:enabled` pseudo.\n *\n * @param {AstPseudoClass} query\n *   Query.\n * @param {Element} element\n *   Element.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nfunction enabled(query, element) {\n  return !disabled(query, element)\n}\n\n/**\n * Check whether an element matches a `:first-child` pseudo.\n *\n * @param {AstPseudoClass} query\n *   Query.\n * @param {Element} _1\n *   Element.\n * @param {number | undefined} _2\n *   Index of `element` in `parent`.\n * @param {Parents | undefined} _3\n *   Parent of `element`.\n * @param {State} state\n *   State.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nfunction firstChild(query, _1, _2, _3, state) {\n  assertDeep(state, query)\n  return state.elementIndex === 0\n}\n\n/**\n * Check whether an element matches a `:first-of-type` pseudo.\n *\n * @param {AstPseudoClass} query\n *   Query.\n * @param {Element} _1\n *   Element.\n * @param {number | undefined} _2\n *   Index of `element` in `parent`.\n * @param {Parents | undefined} _3\n *   Parent of `element`.\n * @param {State} state\n *   State.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nfunction firstOfType(query, _1, _2, _3, state) {\n  assertDeep(state, query)\n  return state.typeIndex === 0\n}\n\n/**\n * @param {AstPseudoClass} query\n *   Query.\n * @returns {(value: number) => boolean}\n *   N.\n */\nfunction getCachedNthCheck(query) {\n  /** @type {(value: number) => boolean} */\n  // @ts-expect-error: cache.\n  let cachedFunction = query._cachedFn\n\n  if (!cachedFunction) {\n    const value = query.argument\n    assert(value, 'expected `argument`')\n\n    if (value.type !== 'Formula') {\n      throw new Error(\n        'Expected `nth` formula, such as `even` or `2n+1` (`of` is not yet supported)'\n      )\n    }\n\n    cachedFunction = nthCheck(value.a + 'n+' + value.b)\n    // @ts-expect-error: cache.\n    query._cachedFn = cachedFunction\n  }\n\n  return cachedFunction\n}\n\n/**\n * @param {AstPseudoClass} query\n *   Query.\n * @param {Element} element\n *   Element.\n * @param {number | undefined} _1\n *   Index of `element` in `parent`.\n * @param {Parents | undefined} _2\n *   Parent of `element`.\n * @param {State} state\n *   State.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nfunction has(query, element, _1, _2, state) {\n  assert(query.argument, 'expected `argument`')\n  assert(query.argument.type === 'Selector', 'expected selector')\n\n  /** @type {State} */\n  const childState = {\n    ...state,\n    // Not found yet.\n    found: false,\n    // One result is enough.\n    one: true,\n    results: [],\n    rootQuery: query.argument,\n    scopeElements: [element],\n    // Do walk deep.\n    shallow: false\n  }\n\n  walk(childState, {type: 'root', children: element.children})\n\n  return childState.results.length > 0\n}\n\n// Shouldn\u2019t be called, parser gives correct data.\n/* c8 ignore next 3 */\nfunction invalidPseudo() {\n  unreachable('Invalid pseudo-selector')\n}\n\n/**\n * Check whether an element `:is` further selectors.\n *\n * @param {AstPseudoClass} query\n *   Query.\n * @param {Element} element\n *   Element.\n * @param {number | undefined} _1\n *   Index of `element` in `parent`.\n * @param {Parents | undefined} _2\n *   Parent of `element`.\n * @param {State} state\n *   State.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nfunction is(query, element, _1, _2, state) {\n  assert(query.argument, 'expected `argument`')\n  assert(query.argument.type === 'Selector', 'expected selector')\n\n  /** @type {State} */\n  const childState = {\n    ...state,\n    // Not found yet.\n    found: false,\n    // One result is enough.\n    one: true,\n    results: [],\n    rootQuery: query.argument,\n    scopeElements: [element],\n    // Do walk deep.\n    shallow: false\n  }\n\n  walk(childState, element)\n\n  return childState.results[0] === element\n}\n\n/**\n * Check whether an element matches a `:lang()` pseudo.\n *\n * @param {AstPseudoClass} query\n *   Query.\n * @param {Element} _1\n *   Element.\n * @param {number | undefined} _2\n *   Index of `element` in `parent`.\n * @param {Parents | undefined} _3\n *   Parent of `element`.\n * @param {State} state\n *   State.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nfunction lang(query, _1, _2, _3, state) {\n  assert(query.argument, 'expected `argument`')\n  assert(query.argument.type === 'String', 'expected string')\n\n  return (\n    state.language !== '' &&\n    state.language !== undefined &&\n    extendedFilter(state.language, commas(query.argument.value)).length > 0\n  )\n}\n\n/**\n * Check whether an element matches a `:last-child` pseudo.\n *\n * @param {AstPseudoClass} query\n *   Query.\n * @param {Element} _1\n *   Element.\n * @param {number | undefined} _2\n *   Index of `element` in `parent`.\n * @param {Parents | undefined} _3\n *   Parent of `element`.\n * @param {State} state\n *   State.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nfunction lastChild(query, _1, _2, _3, state) {\n  assertDeep(state, query)\n  return Boolean(\n    state.elementCount && state.elementIndex === state.elementCount - 1\n  )\n}\n\n/**\n * Check whether an element matches a `:last-of-type` pseudo.\n *\n * @param {AstPseudoClass} query\n *   Query.\n * @param {Element} _1\n *   Element.\n * @param {number | undefined} _2\n *   Index of `element` in `parent`.\n * @param {Parents | undefined} _3\n *   Parent of `element`.\n * @param {State} state\n *   State.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nfunction lastOfType(query, _1, _2, _3, state) {\n  assertDeep(state, query)\n  return (\n    typeof state.typeIndex === 'number' &&\n    typeof state.typeCount === 'number' &&\n    state.typeIndex === state.typeCount - 1\n  )\n}\n\n/**\n * Check whether an element does `:not` match further selectors.\n *\n * @param {AstPseudoClass} query\n *   Query.\n * @param {Element} element\n *   Element.\n * @param {number | undefined} index\n *   Index of `element` in `parent`.\n * @param {Parents | undefined} parent\n *   Parent of `element`.\n * @param {State} state\n *   State.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nfunction not(query, element, index, parent, state) {\n  return !is(query, element, index, parent, state)\n}\n\n/**\n * Check whether an element matches an `:nth-child` pseudo.\n *\n * @param {AstPseudoClass} query\n *   Query.\n * @param {Element} _1\n *   Element.\n * @param {number | undefined} _2\n *   Index of `element` in `parent`.\n * @param {Parents | undefined} _3\n *   Parent of `element`.\n * @param {State} state\n *   State.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nfunction nthChild(query, _1, _2, _3, state) {\n  const cachedFunction = getCachedNthCheck(query)\n  assertDeep(state, query)\n  return (\n    typeof state.elementIndex === 'number' && cachedFunction(state.elementIndex)\n  )\n}\n\n/**\n * Check whether an element matches an `:nth-last-child` pseudo.\n *\n * @param {AstPseudoClass} query\n *   Query.\n * @param {Element} _1\n *   Element.\n * @param {number | undefined} _2\n *   Index of `element` in `parent`.\n * @param {Parents | undefined} _3\n *   Parent of `element`.\n * @param {State} state\n *   State.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nfunction nthLastChild(query, _1, _2, _3, state) {\n  const cachedFunction = getCachedNthCheck(query)\n  assertDeep(state, query)\n  return Boolean(\n    typeof state.elementCount === 'number' &&\n      typeof state.elementIndex === 'number' &&\n      cachedFunction(state.elementCount - state.elementIndex - 1)\n  )\n}\n\n/**\n * Check whether an element matches a `:nth-last-of-type` pseudo.\n *\n * @param {AstPseudoClass} query\n *   Query.\n * @param {Element} _1\n *   Element.\n * @param {number | undefined} _2\n *   Index of `element` in `parent`.\n * @param {Parents | undefined} _3\n *   Parent of `element`.\n * @param {State} state\n *   State.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nfunction nthLastOfType(query, _1, _2, _3, state) {\n  const cachedFunction = getCachedNthCheck(query)\n  assertDeep(state, query)\n  return (\n    typeof state.typeCount === 'number' &&\n    typeof state.typeIndex === 'number' &&\n    cachedFunction(state.typeCount - 1 - state.typeIndex)\n  )\n}\n\n/**\n * Check whether an element matches an `:nth-of-type` pseudo.\n *\n * @param {AstPseudoClass} query\n *   Query.\n * @param {Element} _1\n *   Element.\n * @param {number | undefined} _2\n *   Index of `element` in `parent`.\n * @param {Parents | undefined} _3\n *   Parent of `element`.\n * @param {State} state\n *   State.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nfunction nthOfType(query, _1, _2, _3, state) {\n  const cachedFunction = getCachedNthCheck(query)\n  assertDeep(state, query)\n  return typeof state.typeIndex === 'number' && cachedFunction(state.typeIndex)\n}\n\n/**\n * Check whether an element matches an `:only-child` pseudo.\n *\n * @param {AstPseudoClass} query\n *   Query.\n * @param {Element} _1\n *   Element.\n * @param {number | undefined} _2\n *   Index of `element` in `parent`.\n * @param {Parents | undefined} _3\n *   Parent of `element`.\n * @param {State} state\n *   State.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nfunction onlyChild(query, _1, _2, _3, state) {\n  assertDeep(state, query)\n  return state.elementCount === 1\n}\n\n/**\n * Check whether an element matches an `:only-of-type` pseudo.\n *\n * @param {AstPseudoClass} query\n *   Query.\n * @param {Element} _1\n *   Element.\n * @param {number | undefined} _2\n *   Index of `element` in `parent`.\n * @param {Parents | undefined} _3\n *   Parent of `element`.\n * @param {State} state\n *   State.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nfunction onlyOfType(query, _1, _2, _3, state) {\n  assertDeep(state, query)\n  return state.typeCount === 1\n}\n\n/**\n * Check whether an element matches an `:optional` pseudo.\n *\n * @param {AstPseudoClass} query\n *   Query.\n * @param {Element} element\n *   Element.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nfunction optional(query, element) {\n  return !required(query, element)\n}\n\n/**\n * Check whether an element matches a `:read-only` pseudo.\n *\n * @param {AstPseudoClass} query\n *   Query.\n * @param {Element} element\n *   Element.\n * @param {number | undefined} index\n *   Index of `element` in `parent`.\n * @param {Parents | undefined} parent\n *   Parent of `element`.\n * @param {State} state\n *   State.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nfunction readOnly(query, element, index, parent, state) {\n  return !readWrite(query, element, index, parent, state)\n}\n\n/**\n * Check whether an element matches a `:read-write` pseudo.\n *\n * @param {AstPseudoClass} _\n *   Query.\n * @param {Element} element\n *   Element.\n * @param {number | undefined} _1\n *   Index of `element` in `parent`.\n * @param {Parents | undefined} _2\n *   Parent of `element`.\n * @param {State} state\n *   State.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nfunction readWrite(_, element, _1, _2, state) {\n  return element.tagName === 'input' || element.tagName === 'textarea'\n    ? !hasProperty(element, 'readOnly') && !hasProperty(element, 'disabled')\n    : Boolean(state.editableOrEditingHost)\n}\n\n/**\n * Check whether an element matches a `:required` pseudo.\n *\n * @param {AstPseudoClass} _\n *   Query.\n * @param {Element} element\n *   Element.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nfunction required(_, element) {\n  return (\n    (element.tagName === 'input' ||\n      element.tagName === 'textarea' ||\n      element.tagName === 'select') &&\n    hasProperty(element, 'required')\n  )\n}\n\n/**\n * Check whether an element matches a `:root` pseudo.\n *\n * @param {AstPseudoClass} _1\n *   Query.\n * @param {Element} element\n *   Element.\n * @param {number | undefined} _2\n *   Index of `element` in `parent`.\n * @param {Parents | undefined} parent\n *   Parent of `element`.\n * @param {State} state\n *   State.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nfunction root(_1, element, _2, parent, state) {\n  return Boolean(\n    (!parent || parent.type === 'root') &&\n      state.schema &&\n      (state.schema.space === 'html' || state.schema.space === 'svg') &&\n      (element.tagName === 'html' || element.tagName === 'svg')\n  )\n}\n\n/**\n * Check whether an element matches a `:scope` pseudo.\n *\n * @param {AstPseudoClass} _1\n *   Query.\n * @param {Element} element\n *   Element.\n * @param {number | undefined} _2\n *   Index of `element` in `parent`.\n * @param {Parents | undefined} _3\n *   Parent of `element`.\n * @param {State} state\n *   State.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nfunction scope(_1, element, _2, _3, state) {\n  return state.scopeElements.includes(element)\n}\n\n/**\n * Check children.\n *\n * @param {Element} element\n *   Element.\n * @param {(child: ElementContent) => boolean} check\n *   Check.\n * @returns {boolean}\n *   Whether a child of `element` matches `check`.\n */\nfunction someChildren(element, check) {\n  const children = element.children\n  let index = -1\n\n  while (++index < children.length) {\n    if (check(children[index])) return true\n  }\n\n  return false\n}\n\n/**\n * @param {unknown} query_\n *   Query-like value.\n * @returns {never}\n *   Nothing.\n * @throws\n *   Exception.\n */\nfunction unknownPseudo(query_) {\n  // Runtime JS guarantees it has a `name`.\n  const query = /** @type {AstPseudoClass} */ (query_)\n  throw new Error('Unknown pseudo-selector `' + query.name + '`')\n}\n", "/**\n * @import {AstRule} from 'css-selector-parser'\n * @import {Element, Parents} from 'hast'\n * @import {State} from './index.js'\n */\n\nimport {attribute} from './attribute.js'\nimport {className} from './class-name.js'\nimport {id} from './id.js'\nimport {name} from './name.js'\nimport {pseudo} from './pseudo.js'\n\n/**\n * Test a rule.\n *\n * @param {AstRule} query\n *   AST rule (with `pseudoClasses`).\n * @param {Element} element\n *   Element.\n * @param {number | undefined} index\n *   Index of `element` in `parent`.\n * @param {Parents | undefined} parent\n *   Parent of `element`.\n * @param {State} state\n *   State.\n * @returns {boolean}\n *   Whether `element` matches `query`.\n */\nexport function test(query, element, index, parent, state) {\n  for (const item of query.items) {\n    // eslint-disable-next-line unicorn/prefer-switch\n    if (item.type === 'Attribute') {\n      if (!attribute(item, element, state.schema)) return false\n    } else if (item.type === 'Id') {\n      if (!id(item, element)) return false\n    } else if (item.type === 'ClassName') {\n      if (!className(item, element)) return false\n    } else if (item.type === 'PseudoClass') {\n      if (!pseudo(item, element, index, parent, state)) return false\n    } else if (item.type === 'PseudoElement') {\n      throw new Error('Invalid selector: `::' + item.name + '`')\n    } else if (item.type === 'TagName') {\n      if (!name(item, element)) return false\n    } else {\n      // Otherwise `item.type` is `WildcardTag`, which matches.\n    }\n  }\n\n  return true\n}\n", "/**\n * @import {AstRule} from 'css-selector-parser'\n * @import {Element, Nodes, Parents} from 'hast'\n * @import {State} from './index.js'\n */\n\n/**\n * @typedef Counts\n *   Info on elements in a parent.\n * @property {number} count\n *   Number of elements.\n * @property {Map<string, number>} types\n *   Number of elements by tag name.\n *\n * @typedef Nest\n *   Rule sets by nesting.\n * @property {Array<AstRule> | undefined} adjacentSibling\n *   `a + b`\n * @property {Array<AstRule> | undefined} descendant\n *   `a b`\n * @property {Array<AstRule> | undefined} directChild\n *   `a > b`\n * @property {Array<AstRule> | undefined} generalSibling\n *   `a ~ b`\n */\n\nimport {enterState} from './enter-state.js'\nimport {test} from './test.js'\n\n/** @type {Array<never>} */\nconst empty = []\n\n/**\n * Walk a tree.\n *\n * @param {State} state\n *   State.\n * @param {Nodes | undefined} tree\n *   Tree.\n */\nexport function walk(state, tree) {\n  if (tree) {\n    one(state, [], tree, undefined, undefined, tree)\n  }\n}\n\n/**\n * Add a rule to a nesting map.\n *\n * @param {Nest} nest\n *   Nesting.\n * @param {keyof Nest} field\n *   Field.\n * @param {AstRule} rule\n *   Rule.\n */\nfunction add(nest, field, rule) {\n  const list = nest[field]\n  if (list) {\n    list.push(rule)\n  } else {\n    nest[field] = [rule]\n  }\n}\n\n/**\n * Check in a parent.\n *\n * @param {State} state\n *   State.\n * @param {Nest} nest\n *   Nesting.\n * @param {Parents} node\n *   Parent.\n * @param {Nodes} tree\n *   Tree.\n * @returns {undefined}\n *   Nothing.\n */\nfunction all(state, nest, node, tree) {\n  const fromParent = combine(nest.descendant, nest.directChild)\n  /** @type {Array<AstRule> | undefined} */\n  let fromSibling\n  let index = -1\n  /**\n   * Total counts.\n   * @type {Counts}\n   */\n  const total = {count: 0, types: new Map()}\n  /**\n   * Counts of previous siblings.\n   * @type {Counts}\n   */\n  const before = {count: 0, types: new Map()}\n\n  while (++index < node.children.length) {\n    count(total, node.children[index])\n  }\n\n  index = -1\n\n  while (++index < node.children.length) {\n    const child = node.children[index]\n    // Uppercase to prevent prototype polution, injecting `constructor` or so.\n    // Normalize because HTML is insensitive.\n    const name =\n      child.type === 'element' ? child.tagName.toUpperCase() : undefined\n    // Before counting further elements:\n    state.elementIndex = before.count\n    state.typeIndex = name ? before.types.get(name) || 0 : 0\n    // After counting all elements.\n    state.elementCount = total.count\n    state.typeCount = name ? total.types.get(name) : 0\n\n    // Only apply if this is a parent, this should be an element, but we check\n    // for parents so that we delve into custom nodes too.\n    if ('children' in child) {\n      const forSibling = combine(fromParent, fromSibling)\n      const nest = one(\n        state,\n        forSibling,\n        node.children[index],\n        index,\n        node,\n        tree\n      )\n      fromSibling = combine(nest.generalSibling, nest.adjacentSibling)\n    }\n\n    // We found one thing, and one is enough.\n    if (state.one && state.found) {\n      break\n    }\n\n    count(before, node.children[index])\n  }\n}\n\n/**\n * Apply selectors to an element.\n *\n * @param {State} state\n *   Current state.\n * @param {Array<AstRule>} rules\n *   Rules to apply.\n * @param {Element} node\n *   Element to apply rules to.\n * @param {number | undefined} index\n *   Index of `node` in `parent`.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Nest}\n *   Further rules.\n */\nfunction applySelectors(state, rules, node, index, parent) {\n  /** @type {Nest} */\n  const nestResult = {\n    adjacentSibling: undefined,\n    descendant: undefined,\n    directChild: undefined,\n    generalSibling: undefined\n  }\n  let selectorIndex = -1\n\n  while (++selectorIndex < rules.length) {\n    const rule = rules[selectorIndex]\n\n    // We found one thing, and one is enough.\n    if (state.one && state.found) {\n      break\n    }\n\n    // When shallow, we don\u2019t allow nested rules.\n    // Idea: we could allow a stack of parents?\n    // Might get quite complex though.\n    if (state.shallow && rule.nestedRule) {\n      throw new Error('Expected selector without nesting')\n    }\n\n    // If this rule matches:\n    if (test(rule, node, index, parent, state)) {\n      const nest = rule.nestedRule\n\n      // Are there more?\n      if (nest) {\n        /** @type {keyof Nest} */\n        const label =\n          nest.combinator === '+'\n            ? 'adjacentSibling'\n            : nest.combinator === '~'\n              ? 'generalSibling'\n              : nest.combinator === '>'\n                ? 'directChild'\n                : 'descendant'\n        add(nestResult, label, nest)\n      } else {\n        // We have a match!\n        state.found = true\n\n        if (!state.results.includes(node)) {\n          state.results.push(node)\n        }\n      }\n    }\n\n    // Descendant.\n    if (rule.combinator === undefined) {\n      add(nestResult, 'descendant', rule)\n    }\n    // Adjacent.\n    else if (rule.combinator === '~') {\n      add(nestResult, 'generalSibling', rule)\n    }\n    // Drop direct child (`>`), adjacent sibling (`+`).\n  }\n\n  return nestResult\n}\n\n/**\n * Combine two lists, if needed.\n *\n * This is optimized to create as few lists as possible.\n *\n * @param {Array<AstRule> | undefined} left\n *   Rules.\n * @param {Array<AstRule> | undefined} right\n *   Rules.\n * @returns {Array<AstRule>}\n *   Rules.\n */\nfunction combine(left, right) {\n  return left && right && left.length > 0 && right.length > 0\n    ? [...left, ...right]\n    : left && left.length > 0\n      ? left\n      : right && right.length > 0\n        ? right\n        : empty\n}\n\n/**\n * Count a node.\n *\n * @param {Counts} counts\n *   Counts.\n * @param {Nodes} node\n *   Node (we\u2019re looking for elements).\n * @returns {undefined}\n *   Nothing.\n */\nfunction count(counts, node) {\n  if (node.type === 'element') {\n    // Uppercase to prevent prototype polution, injecting `constructor` or so.\n    // Normalize because HTML is insensitive.\n    const name = node.tagName.toUpperCase()\n    const count = (counts.types.get(name) || 0) + 1\n    counts.count++\n    counts.types.set(name, count)\n  }\n}\n\n/**\n * Check a node.\n *\n * @param {State} state\n *   State.\n * @param {Array<AstRule>} currentRules\n *   Rules.\n * @param {Nodes} node\n *   Node.\n * @param {number | undefined} index\n *   Index of `node` in `parent`.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @param {Nodes} tree\n *   Tree.\n * @returns {Nest}\n *   Nesting.\n */\nfunction one(state, currentRules, node, index, parent, tree) {\n  /** @type {Nest} */\n  let nestResult = {\n    adjacentSibling: undefined,\n    descendant: undefined,\n    directChild: undefined,\n    generalSibling: undefined\n  }\n\n  const exit = enterState(state, node)\n\n  if (node.type === 'element') {\n    let rootRules = state.rootQuery.rules\n\n    // Remove direct child rules if this is the root.\n    // This only happens for a `:has()` rule, which can be like\n    // `a:has(> b)`.\n    if (parent && parent !== tree) {\n      rootRules = state.rootQuery.rules.filter(\n        (d) =>\n          d.combinator === undefined ||\n          (d.combinator === '>' && parent === tree)\n      )\n    }\n\n    nestResult = applySelectors(\n      state,\n      // Try the root rules for this element too.\n      combine(currentRules, rootRules),\n      node,\n      index,\n      parent\n    )\n  }\n\n  // If this is a parent, and we want to delve into them, and we haven\u2019t found\n  // our single result yet.\n  if ('children' in node && !state.shallow && !(state.one && state.found)) {\n    all(state, nestResult, node, tree)\n  }\n\n  exit()\n\n  return nestResult\n}\n", "/**\n * @import {AstSelector} from 'css-selector-parser'\n * @import {Element, Nodes, RootContent} from 'hast'\n * @import {Schema} from 'property-information'\n */\n\n/**\n * @typedef {'html' | 'svg'} Space\n *   Name of namespace.\n *\n * @typedef {'auto' | 'ltr' | 'rtl'} Direction\n *   Direction.\n *\n * @typedef State\n *   Current state.\n * @property {Direction} direction\n *   Current direction.\n * @property {boolean} editableOrEditingHost\n *   Whether we\u2019re in `contentEditable`.\n * @property {number | undefined} elementCount\n *   Track siblings: there are `n` siblings.\n * @property {number | undefined} elementIndex\n *   Track siblings: this current element has `n` elements before it.\n * @property {boolean} found\n *   Whether we found at least one match.\n * @property {string | undefined} language\n *   Current language.\n * @property {boolean} one\n *   Whether we can stop looking after we found one element.\n * @property {Array<Element>} results\n *   Matches.\n * @property {AstSelector} rootQuery\n *   Original root selectors.\n * @property {Schema} schema\n *   Current schema.\n * @property {Array<RootContent>} scopeElements\n *   Elements in scope.\n * @property {boolean} shallow\n *   Whether we only allow selectors without nesting.\n * @property {number | undefined} typeCount\n *   Track siblings: there are `n` siblings with this element\u2019s tag name.\n * @property {number | undefined} typeIndex\n *   Track siblings: this current element has `n` elements with its tag name\n *   before it.\n */\n\nimport {html, svg} from 'property-information'\nimport {parse} from './parse.js'\nimport {walk} from './walk.js'\n\n/**\n * Check that the given `node` matches `selector`.\n *\n * This only checks the element itself, not the surrounding tree.\n * Thus, nesting in selectors is not supported (`p b`, `p > b`), neither are\n * selectors like `:first-child`, etc.\n * This only checks that the given element matches the selector.\n *\n * @param {string} selector\n *   CSS selector, such as (`h1`, `a, b`).\n * @param {Nodes | null | undefined} [node]\n *   Node that might match `selector`, should be an element (optional).\n * @param {Space | null | undefined} [space='html']\n *   Name of namespace (default: `'html'`).\n * @returns {boolean}\n *   Whether `node` matches `selector`.\n */\nexport function matches(selector, node, space) {\n  const state = createState(selector, node, space)\n  state.one = true\n  state.shallow = true\n  walk(state, node || undefined)\n  return state.results.length > 0\n}\n\n/**\n * Select the first element that matches `selector` in the given `tree`.\n * Searches the tree in *preorder*.\n *\n * @param {string} selector\n *   CSS selector, such as (`h1`, `a, b`).\n * @param {Nodes | null | undefined} [tree]\n *   Tree to search (optional).\n * @param {Space | null | undefined} [space='html']\n *   Name of namespace (default: `'html'`).\n * @returns {Element | undefined}\n *   First element in `tree` that matches `selector` or `undefined` if nothing\n *   is found; this could be `tree` itself.\n */\nexport function select(selector, tree, space) {\n  const state = createState(selector, tree, space)\n  state.one = true\n  walk(state, tree || undefined)\n  return state.results[0]\n}\n\n/**\n * Select all elements that match `selector` in the given `tree`.\n * Searches the tree in *preorder*.\n *\n * @param {string} selector\n *   CSS selector, such as (`h1`, `a, b`).\n * @param {Nodes | null | undefined} [tree]\n *   Tree to search (optional).\n * @param {Space | null | undefined} [space='html']\n *   Name of namespace (default: `'html'`).\n * @returns {Array<Element>}\n *   Elements in `tree` that match `selector`.\n *   This could include `tree` itself.\n */\nexport function selectAll(selector, tree, space) {\n  const state = createState(selector, tree, space)\n  walk(state, tree || undefined)\n  return state.results\n}\n\n/**\n * @param {string} selector\n *   CSS selector, such as (`h1`, `a, b`).\n * @param {Nodes | null | undefined} [tree]\n *   Tree to search (optional).\n * @param {Space | null | undefined} [space='html']\n *   Name of namespace (default: `'html'`).\n * @returns {State} State\n *   State.\n */\nfunction createState(selector, tree, space) {\n  return {\n    direction: 'ltr',\n    editableOrEditingHost: false,\n    elementCount: undefined,\n    elementIndex: undefined,\n    found: false,\n    language: undefined,\n    one: false,\n    // State of the query.\n    results: [],\n    rootQuery: parse(selector),\n    schema: space === 'svg' ? svg : html,\n    scopeElements: tree ? (tree.type === 'root' ? tree.children : [tree]) : [],\n    shallow: false,\n    typeIndex: undefined,\n    typeCount: undefined\n  }\n}\n", "import { Plugin } from 'unified';\nimport { Root, Element, ElementContent, RootContent } from 'hast';\nimport { visit } from 'unist-util-visit';\nimport { selectAll } from 'hast-util-select';\nimport { Test } from 'unist-util-is';\n\n/** Get the node tree source code string */\nexport const getCodeString = (data: ElementContent[] = [], code: string = '') => {\n  data.forEach((node) => {\n    if (node.type === 'text') {\n      code += node.value;\n    } else if (node.type === 'element' && node.children && Array.isArray(node.children)) {\n      code += getCodeString(node.children);\n    }\n  });\n  return code;\n};\n\nexport type RehypeRewriteOptions = {\n  /**\n   * Select an element to be wrapped. Expects a string selector that can be passed to hast-util-select ([supported selectors](https://github.com/syntax-tree/hast-util-select/blob/master/readme.md#support)).\n   * If `selector` is not set then wrap will check for a body all elements.\n   */\n  selector?: string;\n  /** Rewrite Element. */\n  rewrite(node: Root | RootContent, index?: number, parent?: Root | Element): void;\n}\n\nconst remarkRewrite: Plugin<[RehypeRewriteOptions?], Root> = (options) => {\n  const { selector, rewrite } = options || {};\n  return (tree) => {\n    if (!rewrite || typeof rewrite !== 'function') return;\n    if (selector && typeof selector === 'string') {\n      const selected = selectAll(selector, tree);\n      if (selected && selected.length > 0) {\n        visit(tree, selected as unknown as Test, (node: Element, index, parent) => {\n          rewrite(node, index, parent);\n        });\n      }\n      return;\n    }\n\n    visit(tree, (node: Root | RootContent, index, parent) => {\n      rewrite(node, index, parent);\n    });\n  }\n}\n\nexport default remarkRewrite;\n", "/**\n * @typedef {import('unist').Node} UnistNode\n * @typedef {import('unist').Parent} UnistParent\n * @typedef {import('unist-util-visit-parents').VisitorResult} VisitorResult\n */\n\n/**\n * @typedef {Exclude<import('unist-util-is').Test, undefined> | undefined} Test\n *   Test from `unist-util-is`.\n *\n *   Note: we have remove and add `undefined`, because otherwise when generating\n *   automatic `.d.ts` files, TS tries to flatten paths from a local perspective,\n *   which doesn\u2019t work when publishing on npm.\n */\n\n// To do: use types from `unist-util-visit-parents` when it\u2019s released.\n\n/**\n * @typedef {(\n *   Fn extends (value: any) => value is infer Thing\n *   ? Thing\n *   : Fallback\n * )} Predicate\n *   Get the value of a type guard `Fn`.\n * @template Fn\n *   Value; typically function that is a type guard (such as `(x): x is Y`).\n * @template Fallback\n *   Value to yield if `Fn` is not a type guard.\n */\n\n/**\n * @typedef {(\n *   Check extends null | undefined // No test.\n *   ? Value\n *   : Value extends {type: Check} // String (type) test.\n *   ? Value\n *   : Value extends Check // Partial test.\n *   ? Value\n *   : Check extends Function // Function test.\n *   ? Predicate<Check, Value> extends Value\n *     ? Predicate<Check, Value>\n *     : never\n *   : never // Some other test?\n * )} MatchesOne\n *   Check whether a node matches a primitive check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test, but not arrays.\n */\n\n/**\n * @typedef {(\n *   Check extends Array<any>\n *   ? MatchesOne<Value, Check[keyof Check]>\n *   : MatchesOne<Value, Check>\n * )} Matches\n *   Check whether a node matches a check in the type system.\n * @template Value\n *   Value; typically unist `Node`.\n * @template Check\n *   Value; typically `unist-util-is`-compatible test.\n */\n\n/**\n * @typedef {0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10} Uint\n *   Number; capped reasonably.\n */\n\n/**\n * @typedef {I extends 0 ? 1 : I extends 1 ? 2 : I extends 2 ? 3 : I extends 3 ? 4 : I extends 4 ? 5 : I extends 5 ? 6 : I extends 6 ? 7 : I extends 7 ? 8 : I extends 8 ? 9 : 10} Increment\n *   Increment a number in the type system.\n * @template {Uint} [I=0]\n *   Index.\n */\n\n/**\n * @typedef {(\n *   Node extends UnistParent\n *   ? Node extends {children: Array<infer Children>}\n *     ? Child extends Children ? Node : never\n *     : never\n *   : never\n * )} InternalParent\n *   Collect nodes that can be parents of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {InternalParent<InclusiveDescendant<Tree>, Child>} Parent\n *   Collect nodes in `Tree` that can be parents of `Child`.\n * @template {UnistNode} Tree\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n */\n\n/**\n * @typedef {(\n *   Depth extends Max\n *   ? never\n *   :\n *     | InternalParent<Node, Child>\n *     | InternalAncestor<Node, InternalParent<Node, Child>, Max, Increment<Depth>>\n * )} InternalAncestor\n *   Collect nodes in `Tree` that can be ancestors of `Child`.\n * @template {UnistNode} Node\n *   All node types in a tree.\n * @template {UnistNode} Child\n *   Node to search for.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @typedef {(\n *   Tree extends UnistParent\n *     ? Depth extends Max\n *       ? Tree\n *       : Tree | InclusiveDescendant<Tree['children'][number], Max, Increment<Depth>>\n *     : Tree\n * )} InclusiveDescendant\n *   Collect all (inclusive) descendants of `Tree`.\n *\n *   > \uD83D\uDC49 **Note**: for performance reasons, this seems to be the fastest way to\n *   > recurse without actually running into an infinite loop, which the\n *   > previous version did.\n *   >\n *   > Practically, a max of `2` is typically enough assuming a `Root` is\n *   > passed, but it doesn\u2019t improve performance.\n *   > It gets higher with `List > ListItem > Table > TableRow > TableCell`.\n *   > Using up to `10` doesn\u2019t hurt or help either.\n * @template {UnistNode} Tree\n *   Tree type.\n * @template {Uint} [Max=10]\n *   Max; searches up to this depth.\n * @template {Uint} [Depth=0]\n *   Current depth.\n */\n\n/**\n * @callback Visitor\n *   Handle a node (matching `test`, if given).\n *\n *   Visitors are free to transform `node`.\n *   They can also transform `parent`.\n *\n *   Replacing `node` itself, if `SKIP` is not returned, still causes its\n *   descendants to be walked (which is a bug).\n *\n *   When adding or removing previous siblings of `node` (or next siblings, in\n *   case of reverse), the `Visitor` should return a new `Index` to specify the\n *   sibling to traverse after `node` is traversed.\n *   Adding or removing next siblings of `node` (or previous siblings, in case\n *   of reverse) is handled as expected without needing to return a new `Index`.\n *\n *   Removing the children property of `parent` still results in them being\n *   traversed.\n * @param {Visited} node\n *   Found node.\n * @param {Visited extends UnistNode ? number | undefined : never} index\n *   Index of `node` in `parent`.\n * @param {Ancestor extends UnistParent ? Ancestor | undefined : never} parent\n *   Parent of `node`.\n * @returns {VisitorResult}\n *   What to do next.\n *\n *   An `Index` is treated as a tuple of `[CONTINUE, Index]`.\n *   An `Action` is treated as a tuple of `[Action]`.\n *\n *   Passing a tuple back only makes sense if the `Action` is `SKIP`.\n *   When the `Action` is `EXIT`, that action can be returned.\n *   When the `Action` is `CONTINUE`, `Index` can be returned.\n * @template {UnistNode} [Visited=UnistNode]\n *   Visited node type.\n * @template {UnistParent} [Ancestor=UnistParent]\n *   Ancestor type.\n */\n\n/**\n * @typedef {Visitor<Visited, Parent<Ancestor, Visited>>} BuildVisitorFromMatch\n *   Build a typed `Visitor` function from a node and all possible parents.\n *\n *   It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Visited\n *   Node type.\n * @template {UnistParent} Ancestor\n *   Parent type.\n */\n\n/**\n * @typedef {(\n *   BuildVisitorFromMatch<\n *     Matches<Descendant, Check>,\n *     Extract<Descendant, UnistParent>\n *   >\n * )} BuildVisitorFromDescendants\n *   Build a typed `Visitor` function from a list of descendants and a test.\n *\n *   It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} Descendant\n *   Node type.\n * @template {Test} Check\n *   Test type.\n */\n\n/**\n * @typedef {(\n *   BuildVisitorFromDescendants<\n *     InclusiveDescendant<Tree>,\n *     Check\n *   >\n * )} BuildVisitor\n *   Build a typed `Visitor` function from a tree and a test.\n *\n *   It will infer which values are passed as `node` and which as `parent`.\n * @template {UnistNode} [Tree=UnistNode]\n *   Node type.\n * @template {Test} [Check=Test]\n *   Test type.\n */\n\nimport {visitParents} from 'unist-util-visit-parents'\n\nexport {CONTINUE, EXIT, SKIP} from 'unist-util-visit-parents'\n\n/**\n * Visit nodes.\n *\n * This algorithm performs *depth-first* *tree traversal* in *preorder*\n * (**NLR**) or if `reverse` is given, in *reverse preorder* (**NRL**).\n *\n * You can choose for which nodes `visitor` is called by passing a `test`.\n * For complex tests, you should test yourself in `visitor`, as it will be\n * faster and will have improved type information.\n *\n * Walking the tree is an intensive task.\n * Make use of the return values of the visitor when possible.\n * Instead of walking a tree multiple times, walk it once, use `unist-util-is`\n * to check if a node matches, and then perform different operations.\n *\n * You can change the tree.\n * See `Visitor` for more info.\n *\n * @overload\n * @param {Tree} tree\n * @param {Check} check\n * @param {BuildVisitor<Tree, Check>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @overload\n * @param {Tree} tree\n * @param {BuildVisitor<Tree>} visitor\n * @param {boolean | null | undefined} [reverse]\n * @returns {undefined}\n *\n * @param {UnistNode} tree\n *   Tree to traverse.\n * @param {Visitor | Test} testOrVisitor\n *   `unist-util-is`-compatible test (optional, omit to pass a visitor).\n * @param {Visitor | boolean | null | undefined} [visitorOrReverse]\n *   Handle each node (when test is omitted, pass `reverse`).\n * @param {boolean | null | undefined} [maybeReverse=false]\n *   Traverse in reverse preorder (NRL) instead of the default preorder (NLR).\n * @returns {undefined}\n *   Nothing.\n *\n * @template {UnistNode} Tree\n *   Node type.\n * @template {Test} Check\n *   `unist-util-is`-compatible test.\n */\nexport function visit(tree, testOrVisitor, visitorOrReverse, maybeReverse) {\n  /** @type {boolean | null | undefined} */\n  let reverse\n  /** @type {Test} */\n  let test\n  /** @type {Visitor} */\n  let visitor\n\n  if (\n    typeof testOrVisitor === 'function' &&\n    typeof visitorOrReverse !== 'function'\n  ) {\n    test = undefined\n    visitor = testOrVisitor\n    reverse = visitorOrReverse\n  } else {\n    // @ts-expect-error: assume the overload with test was given.\n    test = testOrVisitor\n    // @ts-expect-error: assume the overload with test was given.\n    visitor = visitorOrReverse\n    reverse = maybeReverse\n  }\n\n  visitParents(tree, test, overload, reverse)\n\n  /**\n   * @param {UnistNode} node\n   * @param {Array<UnistParent>} parents\n   */\n  function overload(node, parents) {\n    const parent = parents[parents.length - 1]\n    const index = parent ? parent.children.indexOf(node) : undefined\n    return visitor(node, index, parent)\n  }\n}\n", "import type { Element, Comment, Literal, ElementContent, RootContent, Properties } from 'hast';\nimport type { RehypeAttrsOptions } from './index.js';\n\nexport const getURLParameters = (url: string = '') =>\n  ((url.match(/([^?=&]+)(=([^&]*))/g) || []) as string[]).reduce(\n      (a: Record<string, string | number | boolean>, v: string) => (\n        (a[v.slice(0, v.indexOf('=')) as keyof typeof a] = v.slice(v.indexOf('=') + 1)), a\n      ),\n      {}\n    )\n\nexport const prevChild = (data: Literal[] = [], index: number): Comment | undefined => {\n  let i = index;\n  while (i > -1) {\n    i--;\n    if (!data[i]) return\n    if ((data[i] && data[i].value && (data[i].value as string).replace(/(\\n|\\s)/g, '') !== '') || data[i].type !== 'text') {\n      if (!/^rehype:/.test(data[i].value as string) || (data[i].type as string) !== 'comment') return;\n      return data[i] as unknown as Comment;\n    }\n  }\n  return;\n}\n\nexport const nextChild = (data: RootContent[] | ElementContent[] = [], index: number, tagName?: string, commentStart: string = \"<!--\", commentEnd: string = \"-->\"): ElementContent | undefined => {\n  let i = index;\n  while (i < data.length) {\n    i++;\n    if (tagName) {\n      const element = data[i] as Literal & Element;\n      if (element && element.value && (element.value as string).replace(/(\\n|\\s)/g, '') !== '' || data[i] && (data[i].type as string) === 'element') {\n        return element.tagName === tagName ? element : undefined\n      }\n    } else {\n      const element = data[i] as ElementContent & Literal;\n      if (!element || element.type === 'element') return;\n      if (element.type === 'text') {\n        const nextNode = nextChild(data, i, undefined)\n        if (nextNode) return nextNode;\n      };\n      if (element.type && /^(comment|raw|text)$/ig.test(element.type)) {\n        const regx = new RegExp(`^(\\s+)?${commentStart}(.*?)${commentEnd}`);\n        if (element.value && !/^rehype:/.test(element.value.replace(/^(\\n|\\s)+/, '').replace(regx, '$2') || '')) {\n          return\n        };\n        let comment = element.value.replace(/^(\\n|\\s)+/, '');\n        element.value = comment\n        return element;\n      }\n    }\n  }\n  return\n}\n\n/**\n * Get the position of the code comment\n * @param data Comment\n * @param start\n * @param end\n * @returns Returns the current parameter data Object, `{}`\n */\nexport const getCommentObject = ({ value = '' }: Comment, start: string = \"<!--\", end: string = \"-->\"): Properties => {\n  let regx: RegExp;\n  try {\n    // Construct a regular expression to match the comment content\n    regx = new RegExp(`^${start}(.*?)${end}`);\n  } catch (error) {\n    return {};\n  }\n  const match = value.match(regx);\n  const content = (match ? match[1] : value)\n  // Extract the comment content if it matches the regular expression\n  const commentContent = content.replace(/^rehype:/, '');\n  // Extract the comment content and parse it into a parameter object\n  const param = getURLParameters(commentContent);\n  // Iterate over the key-value pairs of the parameter object and perform type conversion\n  Object.keys(param).forEach((keyName: string) => {\n    if (param[keyName] === 'true') {\n      param[keyName] = true;\n    } else if (param[keyName] === 'false') {\n      param[keyName] = false;\n    } else if (typeof param[keyName] === 'string' && !/^0/.test(param[keyName] as string) && !isNaN(+param[keyName])) {\n      param[keyName] = +param[keyName];\n    }\n  });\n  // Return the processed parameter object\n  return param;\n}\n\nexport type DataConfig = {\n  'data-config': Properties\n}\n\nexport const propertiesHandle = (defaultAttrs?: Properties | null, attrs?: Properties, type?: RehypeAttrsOptions['properties']): Properties | DataConfig => {\n  if (type === 'string') {\n    return { ...defaultAttrs, 'data-config': JSON.stringify({ ...attrs, rehyp: true })}\n  } else if (type === 'attr') {\n    return { ...defaultAttrs, ...attrs}\n  }\n  return { ...defaultAttrs, 'data-config': { ...attrs, rehyp: true }}\n}", "import type { Plugin } from 'unified';\nimport type { Root, Element, Comment, Properties, Literal } from 'hast';\nimport { visit } from 'unist-util-visit';\nimport { propertiesHandle, nextChild, prevChild, getCommentObject } from './utils.js';\n\nexport type RehypeAttrsOptions = {\n  /**\n   * ## `data`\n   * \n   * ```markdown\n   * text\n   * <!--rehype:title=Rehype Attrs&abc=2-->\n   * ```\n   * \uD83D\uDC47\uD83D\uDC47\uD83D\uDC47\uD83D\uDC47\uD83D\uDC47\n   * ```html\n   * <p data-config=\"data-config='[object Object]'\">text</p>\n   * ```\n   * \n   * ## `string`\n   * \n   * ```markdown\n   * text\n   * <!--rehype:title=Rehype Attrs-->\n   * ```\n   * \n   * \uD83D\uDC47\uD83D\uDC47\uD83D\uDC47\uD83D\uDC47\uD83D\uDC47\n   * \n   * ```html\n   * <p data-config=\"{&#x22;title&#x22;:&#x22;Rehype Attrs&#x22;,&#x22;rehyp&#x22;:true}\">text</p>\n   * ```\n   * \n   * ## attr\n   * \n   * ```markdown\n   * text\n   * <!--rehype:title=Rehype Attrs-->\n   * ```\n   * \uD83D\uDC47\uD83D\uDC47\uD83D\uDC47\uD83D\uDC47\uD83D\uDC47\n   * ```html\n   * <p title=\"Rehype Attrs\">text</p>\n   * ```\n   * @default `data`\n   */\n  properties?: 'data' | 'string' | 'attr';\n  /**\n   * Code block passing parameters\n   */\n  codeBlockParames?: boolean;\n  /** \n   * Optional start delimiter for comments @example `\\\\{\\\\*`\n   * @default `<!--`\n   */\n  commentStart?: string;\n  /**\n   * Optional end delimiter for comments @example `\\\\*\\\\}` \n   * @default `-->`\n   */\n  commentEnd?: string;\n}\n\nconst rehypeAttrs: Plugin<[RehypeAttrsOptions?], Root> = (options = {}) => {\n  const { properties = 'data', codeBlockParames = true, commentStart = \"<!--\", commentEnd = \"-->\" } = options;\n  return (tree) => {\n    visit(tree, 'element', (node, index, parent) => {\n      if (codeBlockParames && node.tagName === 'pre' && node && Array.isArray(node.children) && parent && Array.isArray(parent.children) && parent.children.length > 1) {\n        const firstChild = node.children[0] as Element;\n        if (firstChild && firstChild.tagName === 'code' && typeof index === 'number') {\n          const child = prevChild(parent.children as Literal[], index);\n          if (child) {\n            const attr = getCommentObject(child, commentStart, commentEnd);\n            if (Object.keys(attr).length > 0) {\n              node.properties = { ...node.properties, ...{ 'data-type': 'rehyp' } }\n              firstChild.properties = propertiesHandle(firstChild.properties, attr, properties) as Properties\n            }\n          }\n        }\n      }\n      let rootnode = parent as Root\n      if ((/^(em|strong|b|a|i|p|pre|kbd|blockquote|h(1|2|3|4|5|6)|code|table|img|del|ul|ol)$/.test(node.tagName) || rootnode.type == \"root\") && parent && Array.isArray(parent.children) && typeof index === 'number') {\n        const child = nextChild(parent.children, index, '', commentStart, commentEnd)\n        if (child) {\n          const attr = getCommentObject(child as Comment, commentStart, commentEnd)\n          if (Object.keys(attr).length > 0) {\n            node.properties = propertiesHandle(node.properties, attr, properties) as Properties\n          }\n        }\n      }\n    });\n  }\n}\n\n\nexport default rehypeAttrs\n", "export const VOID       = -1;\nexport const PRIMITIVE  = 0;\nexport const ARRAY      = 1;\nexport const OBJECT     = 2;\nexport const DATE       = 3;\nexport const REGEXP     = 4;\nexport const MAP        = 5;\nexport const SET        = 6;\nexport const ERROR      = 7;\nexport const BIGINT     = 8;\n// export const SYMBOL = 9;\n", "import {\n  VOID, PRIMITIVE,\n  ARRAY, OBJECT,\n  DATE, REGEXP, MAP, SET,\n  ERROR, BIGINT\n} from './types.js';\n\nconst { defineProperty } = Object;\nconst env = typeof self === 'object' ? self : globalThis;\n\nconst guard = (name, init) => {\n  switch (name) {\n    case 'Function':\n    case 'SharedWorker':\n    case 'Worker':\n    case 'eval':\n    case 'setInterval':\n    case 'setTimeout':\n      throw new TypeError('unable to deserialize ' + name);\n  }\n  return new env[name](init);\n};\n\nconst deserializer = ($, _) => {\n  const as = (out, index) => {\n    $.set(index, out);\n    return out;\n  };\n\n  const unpair = index => {\n    if ($.has(index))\n      return $.get(index);\n\n    const [type, value] = _[index];\n    switch (type) {\n      case PRIMITIVE:\n      case VOID:\n        return as(value, index);\n      case ARRAY: {\n        const arr = as([], index);\n        for (const index of value)\n          arr.push(unpair(index));\n        return arr;\n      }\n      case OBJECT: {\n        const object = as({}, index);\n        for (const [key, index] of value) {\n          const k = unpair(key), value = unpair(index);\n          if (k === '__proto__') defineProperty(object, k, {\n            value,\n            configurable: true,\n            enumerable: true,\n            writable: true\n          });\n          else object[k] = value;\n        }\n        return object;\n      }\n      case DATE:\n        return as(new Date(value), index);\n      case REGEXP: {\n        const {source, flags} = value;\n        return as(new RegExp(source, flags), index);\n      }\n      case MAP: {\n        const map = as(new Map, index);\n        for (const [key, index] of value)\n          map.set(unpair(key), unpair(index));\n        return map;\n      }\n      case SET: {\n        const set = as(new Set, index);\n        for (const index of value)\n          set.add(unpair(index));\n        return set;\n      }\n      case ERROR: {\n        const {name, message} = value;\n        return as(\n          typeof env[name] === 'function' ?\n            guard(name, message) :\n            new Error(message),\n          index\n        );\n      }\n      case BIGINT:\n        return as(BigInt(value), index);\n      case 'BigInt':\n        return as(Object(BigInt(value)), index);\n      case 'ArrayBuffer':\n        return as(new Uint8Array(value).buffer, value);\n      case 'DataView': {\n        const { buffer } = new Uint8Array(value);\n        return as(new DataView(buffer), value);\n      }\n      case '-0': return -0;\n    }\n    return as(guard(type, value), index);\n  };\n\n  return unpair;\n};\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns a deserialized value from a serialized array of Records.\n * @param {Record[]} serialized a previously serialized value.\n * @returns {any}\n */\nexport const deserialize = serialized => deserializer(new Map, serialized)(0);\n", "import {\n  VOID, PRIMITIVE,\n  ARRAY, OBJECT,\n  DATE, REGEXP, MAP, SET,\n  ERROR, BIGINT\n} from './types.js';\n\nconst EMPTY = '';\n\nconst {toString} = {};\nconst {keys, is} = Object;\n\nconst typeOf = value => {\n  const type = typeof value;\n  if (type !== 'object' || !value)\n    return [PRIMITIVE, type];\n\n  const asString = toString.call(value).slice(8, -1);\n  switch (asString) {\n    case 'Array':\n      return [ARRAY, EMPTY];\n    case 'Object':\n      return [OBJECT, EMPTY];\n    case 'Date':\n      return [DATE, EMPTY];\n    case 'RegExp':\n      return [REGEXP, EMPTY];\n    case 'Map':\n      return [MAP, EMPTY];\n    case 'Set':\n      return [SET, EMPTY];\n    case 'DataView':\n      return [ARRAY, asString];\n  }\n\n  if (asString.includes('Array'))\n    return [ARRAY, asString];\n\n  if (value instanceof Error)\n    return [ERROR, value.name || 'Error'];\n\n  return [OBJECT, asString];\n};\n\nconst shouldSkip = ([TYPE, type]) => (\n  TYPE === PRIMITIVE &&\n  (type === 'function' || type === 'symbol')\n);\n\nconst serializer = (strict, json, $, _) => {\n\n  const as = (out, value) => {\n    const index = _.push(out) - 1;\n    $.set(value, index);\n    return index;\n  };\n\n  const pair = value => {\n    if ($.has(value))\n      return $.get(value);\n\n    let [TYPE, type] = typeOf(value);\n    switch (TYPE) {\n      case PRIMITIVE: {\n        let entry = value;\n        switch (type) {\n          case 'bigint':\n            TYPE = BIGINT;\n            entry = value.toString();\n            break;\n          case 'number':\n            if (!value && is(value, -0))\n              return _.push(['-0']) - 1;\n            break;\n          case 'function':\n          case 'symbol':\n            if (strict)\n              throw new TypeError('unable to serialize ' + type);\n            entry = null;\n            break;\n          case 'undefined':\n            return as([VOID], value);\n        }\n        return as([TYPE, entry], value);\n      }\n      case ARRAY: {\n        if (type) {\n          let spread = value;\n          if (type === 'DataView') {\n            spread = new Uint8Array(value.buffer);\n          }\n          else if (type === 'ArrayBuffer') {\n            spread = new Uint8Array(value);\n          }\n          return as([type, [...spread]], value);\n        }\n\n        const arr = [];\n        const index = as([TYPE, arr], value);\n        for (const entry of value)\n          arr.push(pair(entry));\n        return index;\n      }\n      case OBJECT: {\n        if (type) {\n          switch (type) {\n            case 'BigInt':\n              return as([type, value.toString()], value);\n            case 'Boolean':\n            case 'Number':\n            case 'String':\n              return as([type, value.valueOf()], value);\n          }\n        }\n\n        if (json && ('toJSON' in value))\n          return pair(value.toJSON());\n\n        const entries = [];\n        const index = as([TYPE, entries], value);\n        for (const key of keys(value)) {\n          if (strict || !shouldSkip(typeOf(value[key])))\n            entries.push([pair(key), pair(value[key])]);\n        }\n        return index;\n      }\n      case DATE:\n        return as([TYPE, isNaN(value.getTime()) ? EMPTY : value.toISOString()], value);\n      case REGEXP: {\n        const {source, flags} = value;\n        return as([TYPE, {source, flags}], value);\n      }\n      case MAP: {\n        const entries = [];\n        const index = as([TYPE, entries], value);\n        for (const [key, entry] of value) {\n          if (strict || !(shouldSkip(typeOf(key)) || shouldSkip(typeOf(entry))))\n            entries.push([pair(key), pair(entry)]);\n        }\n        return index;\n      }\n      case SET: {\n        const entries = [];\n        const index = as([TYPE, entries], value);\n        for (const entry of value) {\n          if (strict || !shouldSkip(typeOf(entry)))\n            entries.push(pair(entry));\n        }\n        return index;\n      }\n    }\n\n    const {message} = value;\n    return as([TYPE, {name: type, message}], value);\n  };\n\n  return pair;\n};\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} value a serializable value.\n * @param {{json?: boolean, lossy?: boolean}?} options an object with a `lossy` or `json` property that,\n *  if `true`, will not throw errors on incompatible types, and behave more\n *  like JSON stringify would behave. Symbol and Function will be discarded.\n * @returns {Record[]}\n */\n export const serialize = (value, {json, lossy} = {}) => {\n  const _ = [];\n  return serializer(!(json || lossy), !!json, new Map, _)(value), _;\n};\n", "import {deserialize} from './deserialize.js';\nimport {serialize} from './serialize.js';\n\n/**\n * @typedef {Array<string,any>} Record a type representation\n */\n\n/**\n * Returns an array of serialized Records.\n * @param {any} any a serializable value.\n * @param {{transfer?: any[], json?: boolean, lossy?: boolean}?} options an object with\n * a transfer option (ignored when polyfilled) and/or non standard fields that\n * fallback to the polyfill if present.\n * @returns {Record[]}\n */\nexport default typeof structuredClone === \"function\" ?\n  /* c8 ignore start */\n  (any, options) => (\n    options && ('json' in options || 'lossy' in options) ?\n      deserialize(serialize(any, options)) : structuredClone(any)\n  ) :\n  (any, options) => deserialize(serialize(any, options));\n  /* c8 ignore stop */\n\nexport {deserialize, serialize};\n", "/**\n * @import {VFile, Value} from 'vfile'\n * @import {Location} from 'vfile-location'\n */\n\n/**\n * Create an index of the given document to translate between line/column and\n * offset based positional info.\n *\n * Also implemented in Rust in [`wooorm/markdown-rs`][markdown-rs].\n *\n * [markdown-rs]: https://github.com/wooorm/markdown-rs/blob/main/src/util/location.rs\n *\n * @param {VFile | Value} file\n *   File to index.\n * @returns {Location}\n *   Accessors for index.\n */\nexport function location(file) {\n  const value = String(file)\n  /**\n   * List, where each index is a line number (0-based), and each value is the\n   * byte index *after* where the line ends.\n   *\n   * @type {Array<number>}\n   */\n  const indices = []\n\n  return {toOffset, toPoint}\n\n  /** @type {Location['toPoint']} */\n  function toPoint(offset) {\n    if (typeof offset === 'number' && offset > -1 && offset <= value.length) {\n      let index = 0\n\n      while (true) {\n        let end = indices[index]\n\n        if (end === undefined) {\n          const eol = next(value, indices[index - 1])\n          end = eol === -1 ? value.length + 1 : eol + 1\n          indices[index] = end\n        }\n\n        if (end > offset) {\n          return {\n            line: index + 1,\n            column: offset - (index > 0 ? indices[index - 1] : 0) + 1,\n            offset\n          }\n        }\n\n        index++\n      }\n    }\n  }\n\n  /** @type {Location['toOffset']} */\n  function toOffset(point) {\n    if (\n      point &&\n      typeof point.line === 'number' &&\n      typeof point.column === 'number' &&\n      !Number.isNaN(point.line) &&\n      !Number.isNaN(point.column)\n    ) {\n      while (indices.length < point.line) {\n        const from = indices[indices.length - 1]\n        const eol = next(value, from)\n        const end = eol === -1 ? value.length + 1 : eol + 1\n        if (from === end) break\n        indices.push(end)\n      }\n\n      const offset =\n        (point.line > 1 ? indices[point.line - 2] : 0) + point.column - 1\n      // The given `column` could not exist on this line.\n      if (offset < indices[point.line - 1]) return offset\n    }\n  }\n}\n\n/**\n * @param {string} value\n * @param {number} from\n */\nfunction next(value, from) {\n  const cr = value.indexOf('\\r', from)\n  const lf = value.indexOf('\\n', from)\n  if (lf === -1) return cr\n  if (cr === -1 || cr + 1 === lf) return lf\n  return cr < lf ? cr : lf\n}\n", "/**\n * Map of web namespaces.\n *\n * @type {Record<string, string>}\n */\nexport const webNamespaces = {\n  html: 'http://www.w3.org/1999/xhtml',\n  mathml: 'http://www.w3.org/1998/Math/MathML',\n  svg: 'http://www.w3.org/2000/svg',\n  xlink: 'http://www.w3.org/1999/xlink',\n  xml: 'http://www.w3.org/XML/1998/namespace',\n  xmlns: 'http://www.w3.org/2000/xmlns/'\n}\n", "/**\n * @import {ElementData, Element, Nodes, RootContent, Root} from 'hast'\n * @import {DefaultTreeAdapterMap, Token} from 'parse5'\n * @import {Schema} from 'property-information'\n * @import {Point, Position} from 'unist'\n * @import {VFile} from 'vfile'\n * @import {Options} from 'hast-util-from-parse5'\n */\n\n/**\n * @typedef State\n *   Info passed around about the current state.\n * @property {VFile | undefined} file\n *   Corresponding file.\n * @property {boolean} location\n *   Whether location info was found.\n * @property {Schema} schema\n *   Current schema.\n * @property {boolean | undefined} verbose\n *   Add extra positional info.\n */\n\nimport {ok as assert} from 'devlop'\nimport {h, s} from 'hastscript'\nimport {find, html, svg} from 'property-information'\nimport {location} from 'vfile-location'\nimport {webNamespaces} from 'web-namespaces'\n\nconst own = {}.hasOwnProperty\n/** @type {unknown} */\n// type-coverage:ignore-next-line\nconst proto = Object.prototype\n\n/**\n * Transform a `parse5` AST to hast.\n *\n * @param {DefaultTreeAdapterMap['node']} tree\n *   `parse5` tree to transform.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {Nodes}\n *   hast tree.\n */\nexport function fromParse5(tree, options) {\n  const settings = options || {}\n\n  return one(\n    {\n      file: settings.file || undefined,\n      location: false,\n      schema: settings.space === 'svg' ? svg : html,\n      verbose: settings.verbose || false\n    },\n    tree\n  )\n}\n\n/**\n * Transform a node.\n *\n * @param {State} state\n *   Info passed around about the current state.\n * @param {DefaultTreeAdapterMap['node']} node\n *   p5 node.\n * @returns {Nodes}\n *   hast node.\n */\nfunction one(state, node) {\n  /** @type {Nodes} */\n  let result\n\n  switch (node.nodeName) {\n    case '#comment': {\n      const reference = /** @type {DefaultTreeAdapterMap['commentNode']} */ (\n        node\n      )\n      result = {type: 'comment', value: reference.data}\n      patch(state, reference, result)\n      return result\n    }\n\n    case '#document':\n    case '#document-fragment': {\n      const reference =\n        /** @type {DefaultTreeAdapterMap['document'] | DefaultTreeAdapterMap['documentFragment']} */ (\n          node\n        )\n      const quirksMode =\n        'mode' in reference\n          ? reference.mode === 'quirks' || reference.mode === 'limited-quirks'\n          : false\n\n      result = {\n        type: 'root',\n        children: all(state, node.childNodes),\n        data: {quirksMode}\n      }\n\n      if (state.file && state.location) {\n        const document = String(state.file)\n        const loc = location(document)\n        const start = loc.toPoint(0)\n        const end = loc.toPoint(document.length)\n        // Always defined as we give valid input.\n        assert(start, 'expected `start`')\n        assert(end, 'expected `end`')\n        result.position = {start, end}\n      }\n\n      return result\n    }\n\n    case '#documentType': {\n      const reference = /** @type {DefaultTreeAdapterMap['documentType']} */ (\n        node\n      )\n      result = {type: 'doctype'}\n      patch(state, reference, result)\n      return result\n    }\n\n    case '#text': {\n      const reference = /** @type {DefaultTreeAdapterMap['textNode']} */ (node)\n      result = {type: 'text', value: reference.value}\n      patch(state, reference, result)\n      return result\n    }\n\n    // Element.\n    default: {\n      const reference = /** @type {DefaultTreeAdapterMap['element']} */ (node)\n      result = element(state, reference)\n      return result\n    }\n  }\n}\n\n/**\n * Transform children.\n *\n * @param {State} state\n *   Info passed around about the current state.\n * @param {Array<DefaultTreeAdapterMap['node']>} nodes\n *   Nodes.\n * @returns {Array<RootContent>}\n *   hast nodes.\n */\nfunction all(state, nodes) {\n  let index = -1\n  /** @type {Array<RootContent>} */\n  const results = []\n\n  while (++index < nodes.length) {\n    // Assume no roots in `nodes`.\n    const result = /** @type {RootContent} */ (one(state, nodes[index]))\n    results.push(result)\n  }\n\n  return results\n}\n\n/**\n * Transform an element.\n *\n * @param {State} state\n *   Info passed around about the current state.\n * @param {DefaultTreeAdapterMap['element']} node\n *   `parse5` node to transform.\n * @returns {Element}\n *   hast node.\n */\nfunction element(state, node) {\n  const schema = state.schema\n\n  state.schema = node.namespaceURI === webNamespaces.svg ? svg : html\n\n  // Props.\n  let index = -1\n  /** @type {Record<string, string>} */\n  const properties = {}\n\n  while (++index < node.attrs.length) {\n    const attribute = node.attrs[index]\n    const name =\n      (attribute.prefix ? attribute.prefix + ':' : '') + attribute.name\n    if (!own.call(proto, name)) {\n      properties[name] = attribute.value\n    }\n  }\n\n  // Build.\n  const x = state.schema.space === 'svg' ? s : h\n  const result = x(node.tagName, properties, all(state, node.childNodes))\n  patch(state, node, result)\n\n  // Switch content.\n  if (result.tagName === 'template') {\n    const reference = /** @type {DefaultTreeAdapterMap['template']} */ (node)\n    const pos = reference.sourceCodeLocation\n    const startTag = pos && pos.startTag && position(pos.startTag)\n    const endTag = pos && pos.endTag && position(pos.endTag)\n\n    // Root in, root out.\n    const content = /** @type {Root} */ (one(state, reference.content))\n\n    if (startTag && endTag && state.file) {\n      content.position = {start: startTag.end, end: endTag.start}\n    }\n\n    result.content = content\n  }\n\n  state.schema = schema\n\n  return result\n}\n\n/**\n * Patch positional info from `from` onto `to`.\n *\n * @param {State} state\n *   Info passed around about the current state.\n * @param {DefaultTreeAdapterMap['node']} from\n *   p5 node.\n * @param {Nodes} to\n *   hast node.\n * @returns {undefined}\n *   Nothing.\n */\nfunction patch(state, from, to) {\n  if ('sourceCodeLocation' in from && from.sourceCodeLocation && state.file) {\n    const position = createLocation(state, to, from.sourceCodeLocation)\n\n    if (position) {\n      state.location = true\n      to.position = position\n    }\n  }\n}\n\n/**\n * Create clean positional information.\n *\n * @param {State} state\n *   Info passed around about the current state.\n * @param {Nodes} node\n *   hast node.\n * @param {Token.ElementLocation} location\n *   p5 location info.\n * @returns {Position | undefined}\n *   Position, or nothing.\n */\nfunction createLocation(state, node, location) {\n  const result = position(location)\n\n  if (node.type === 'element') {\n    const tail = node.children[node.children.length - 1]\n\n    // Bug for unclosed with children.\n    // See: <https://github.com/inikulin/parse5/issues/109>.\n    if (\n      result &&\n      !location.endTag &&\n      tail &&\n      tail.position &&\n      tail.position.end\n    ) {\n      result.end = Object.assign({}, tail.position.end)\n    }\n\n    if (state.verbose) {\n      /** @type {Record<string, Position | undefined>} */\n      const properties = {}\n      /** @type {string} */\n      let key\n\n      if (location.attrs) {\n        for (key in location.attrs) {\n          if (own.call(location.attrs, key)) {\n            properties[find(state.schema, key).property] = position(\n              location.attrs[key]\n            )\n          }\n        }\n      }\n\n      assert(location.startTag, 'a start tag should exist')\n      const opening = position(location.startTag)\n      const closing = location.endTag ? position(location.endTag) : undefined\n      /** @type {ElementData['position']} */\n      const data = {opening}\n      if (closing) data.closing = closing\n      data.properties = properties\n\n      node.data = {position: data}\n    }\n  }\n\n  return result\n}\n\n/**\n * Turn a p5 location into a position.\n *\n * @param {Token.Location} loc\n *   Location.\n * @returns {Position | undefined}\n *   Position or nothing.\n */\nfunction position(loc) {\n  const start = point({\n    line: loc.startLine,\n    column: loc.startCol,\n    offset: loc.startOffset\n  })\n  const end = point({\n    line: loc.endLine,\n    column: loc.endCol,\n    offset: loc.endOffset\n  })\n\n  // @ts-expect-error: we do use `undefined` for points if one or the other\n  // exists.\n  return start || end ? {start, end} : undefined\n}\n\n/**\n * Filter out invalid points.\n *\n * @param {Point} point\n *   Point with potentially `undefined` values.\n * @returns {Point | undefined}\n *   Point or nothing.\n */\nfunction point(point) {\n  return point.line && point.column ? point : undefined\n}\n", "/**\n * @import {Comment, Doctype, Element, Nodes, RootContent, Root, Text} from 'hast'\n * @import {DefaultTreeAdapterMap, Token} from 'parse5'\n * @import {Schema} from 'property-information'\n */\n\n/**\n * @typedef {DefaultTreeAdapterMap['document']} Parse5Document\n * @typedef {DefaultTreeAdapterMap['documentFragment']} Parse5Fragment\n * @typedef {DefaultTreeAdapterMap['element']} Parse5Element\n * @typedef {DefaultTreeAdapterMap['node']} Parse5Nodes\n * @typedef {DefaultTreeAdapterMap['documentType']} Parse5Doctype\n * @typedef {DefaultTreeAdapterMap['commentNode']} Parse5Comment\n * @typedef {DefaultTreeAdapterMap['textNode']} Parse5Text\n * @typedef {DefaultTreeAdapterMap['parentNode']} Parse5Parent\n * @typedef {Token.Attribute} Parse5Attribute\n *\n * @typedef Options\n *   Configuration.\n * @property {Space | null | undefined} [space='html']\n *   Which space the document is in (default: `'html'`).\n *\n *   When an `<svg>` element is found in the HTML space, this package already\n *   automatically switches to and from the SVG space when entering and exiting\n *   it.\n *\n * @typedef {Exclude<Parse5Nodes, Parse5Document | Parse5Fragment>} Parse5Content\n *\n * @typedef {'html' | 'svg'} Space\n */\n\nimport {stringify as commas} from 'comma-separated-tokens'\nimport {ok as assert} from 'devlop'\nimport {find, html, svg} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport {webNamespaces} from 'web-namespaces'\nimport {zwitch} from 'zwitch'\n\n/** @type {Options} */\nconst emptyOptions = {}\n\nconst own = {}.hasOwnProperty\n\nconst one = zwitch('type', {handlers: {root, element, text, comment, doctype}})\n\n/**\n * Transform a hast tree to a `parse5` AST.\n *\n * @param {Nodes} tree\n *   Tree to transform.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {Parse5Nodes}\n *   `parse5` node.\n */\nexport function toParse5(tree, options) {\n  const settings = options || emptyOptions\n  const space = settings.space\n  return one(tree, space === 'svg' ? svg : html)\n}\n\n/**\n * @param {Root} node\n *   Node (hast) to transform.\n * @param {Schema} schema\n *   Current schema.\n * @returns {Parse5Document}\n *   Parse5 node.\n */\nfunction root(node, schema) {\n  /** @type {Parse5Document} */\n  const result = {\n    nodeName: '#document',\n    // @ts-expect-error: `parse5` uses enums, which are actually strings.\n    mode: (node.data || {}).quirksMode ? 'quirks' : 'no-quirks',\n    childNodes: []\n  }\n  result.childNodes = all(node.children, result, schema)\n  patch(node, result)\n  return result\n}\n\n/**\n * @param {Root} node\n *   Node (hast) to transform.\n * @param {Schema} schema\n *   Current schema.\n * @returns {Parse5Fragment}\n *   Parse5 node.\n */\nfunction fragment(node, schema) {\n  /** @type {Parse5Fragment} */\n  const result = {nodeName: '#document-fragment', childNodes: []}\n  result.childNodes = all(node.children, result, schema)\n  patch(node, result)\n  return result\n}\n\n/**\n * @param {Doctype} node\n *   Node (hast) to transform.\n * @returns {Parse5Doctype}\n *   Parse5 node.\n */\nfunction doctype(node) {\n  /** @type {Parse5Doctype} */\n  const result = {\n    nodeName: '#documentType',\n    name: 'html',\n    publicId: '',\n    systemId: '',\n    parentNode: null\n  }\n\n  patch(node, result)\n  return result\n}\n\n/**\n * @param {Text} node\n *   Node (hast) to transform.\n * @returns {Parse5Text}\n *   Parse5 node.\n */\nfunction text(node) {\n  /** @type {Parse5Text} */\n  const result = {\n    nodeName: '#text',\n    value: node.value,\n    parentNode: null\n  }\n  patch(node, result)\n  return result\n}\n\n/**\n * @param {Comment} node\n *   Node (hast) to transform.\n * @returns {Parse5Comment}\n *   Parse5 node.\n */\nfunction comment(node) {\n  /** @type {Parse5Comment} */\n  const result = {\n    nodeName: '#comment',\n    data: node.value,\n    parentNode: null\n  }\n\n  patch(node, result)\n\n  return result\n}\n\n/**\n * @param {Element} node\n *   Node (hast) to transform.\n * @param {Schema} schema\n *   Current schema.\n * @returns {Parse5Element}\n *   Parse5 node.\n */\nfunction element(node, schema) {\n  const parentSchema = schema\n  let currentSchema = parentSchema\n\n  if (\n    node.type === 'element' &&\n    node.tagName.toLowerCase() === 'svg' &&\n    parentSchema.space === 'html'\n  ) {\n    currentSchema = svg\n  }\n\n  /** @type {Array<Parse5Attribute>} */\n  const attrs = []\n  /** @type {string} */\n  let prop\n\n  if (node.properties) {\n    for (prop in node.properties) {\n      if (prop !== 'children' && own.call(node.properties, prop)) {\n        const result = createProperty(\n          currentSchema,\n          prop,\n          node.properties[prop]\n        )\n\n        if (result) {\n          attrs.push(result)\n        }\n      }\n    }\n  }\n\n  const space = currentSchema.space\n  // `html` and `svg` both have a space.\n  assert(space)\n\n  /** @type {Parse5Element} */\n  const result = {\n    nodeName: node.tagName,\n    tagName: node.tagName,\n    attrs,\n    // @ts-expect-error: `parse5` types are wrong.\n    namespaceURI: webNamespaces[space],\n    childNodes: [],\n    parentNode: null\n  }\n  result.childNodes = all(node.children, result, currentSchema)\n  patch(node, result)\n\n  if (node.tagName === 'template' && node.content) {\n    // @ts-expect-error: `parse5` types are wrong.\n    result.content = fragment(node.content, currentSchema)\n  }\n\n  return result\n}\n\n/**\n * Handle a property.\n *\n * @param {Schema} schema\n *   Current schema.\n * @param {string} prop\n *   Key.\n * @param {Array<number | string> | boolean | number | string | null | undefined} value\n *   hast property value.\n * @returns {Parse5Attribute | undefined}\n *   Field for runtime, optional.\n */\nfunction createProperty(schema, prop, value) {\n  const info = find(schema, prop)\n\n  // Ignore nullish and `NaN` values.\n  if (\n    value === false ||\n    value === null ||\n    value === undefined ||\n    (typeof value === 'number' && Number.isNaN(value)) ||\n    (!value && info.boolean)\n  ) {\n    return\n  }\n\n  if (Array.isArray(value)) {\n    // Accept `array`.\n    // Most props are space-separated.\n    value = info.commaSeparated ? commas(value) : spaces(value)\n  }\n\n  /** @type {Parse5Attribute} */\n  const attribute = {\n    name: info.attribute,\n    value: value === true ? '' : String(value)\n  }\n\n  if (info.space && info.space !== 'html' && info.space !== 'svg') {\n    const index = attribute.name.indexOf(':')\n\n    if (index < 0) {\n      attribute.prefix = ''\n    } else {\n      attribute.name = attribute.name.slice(index + 1)\n      attribute.prefix = info.attribute.slice(0, index)\n    }\n\n    attribute.namespace = webNamespaces[info.space]\n  }\n\n  return attribute\n}\n\n/**\n * Transform all hast nodes.\n *\n * @param {Array<RootContent>} children\n *   List of children.\n * @param {Parse5Parent} parentNode\n *   `parse5` parent node.\n * @param {Schema} schema\n *   Current schema.\n * @returns {Array<Parse5Content>}\n *   Transformed children.\n */\nfunction all(children, parentNode, schema) {\n  let index = -1\n  /** @type {Array<Parse5Content>} */\n  const results = []\n\n  if (children) {\n    while (++index < children.length) {\n      /** @type {Parse5Content} */\n      const child = one(children[index], schema)\n\n      child.parentNode = parentNode\n\n      results.push(child)\n    }\n  }\n\n  return results\n}\n\n/**\n * Add position info from `from` to `to`.\n *\n * @param {Nodes} from\n *   hast node.\n * @param {Parse5Nodes} to\n *   `parse5` node.\n * @returns {undefined}\n *   Nothing.\n */\nfunction patch(from, to) {\n  const position = from.position\n\n  if (position && position.start && position.end) {\n    assert(typeof position.start.offset === 'number')\n    assert(typeof position.end.offset === 'number')\n\n    to.sourceCodeLocation = {\n      startLine: position.start.line,\n      startCol: position.start.column,\n      startOffset: position.start.offset,\n      endLine: position.end.line,\n      endCol: position.end.column,\n      endOffset: position.end.offset\n    }\n  }\n}\n", "/**\n * List of HTML void tag names.\n *\n * @type {Array<string>}\n */\nexport const htmlVoidElements = [\n  'area',\n  'base',\n  'basefont',\n  'bgsound',\n  'br',\n  'col',\n  'command',\n  'embed',\n  'frame',\n  'hr',\n  'image',\n  'img',\n  'input',\n  'keygen',\n  'link',\n  'meta',\n  'param',\n  'source',\n  'track',\n  'wbr'\n]\n", "const UNDEFINED_CODE_POINTS = new Set([\n    65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214,\n    393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894,\n    720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574,\n    1048575, 1114110, 1114111,\n]);\nexport const REPLACEMENT_CHARACTER = '\\uFFFD';\nexport var CODE_POINTS;\n(function (CODE_POINTS) {\n    CODE_POINTS[CODE_POINTS[\"EOF\"] = -1] = \"EOF\";\n    CODE_POINTS[CODE_POINTS[\"NULL\"] = 0] = \"NULL\";\n    CODE_POINTS[CODE_POINTS[\"TABULATION\"] = 9] = \"TABULATION\";\n    CODE_POINTS[CODE_POINTS[\"CARRIAGE_RETURN\"] = 13] = \"CARRIAGE_RETURN\";\n    CODE_POINTS[CODE_POINTS[\"LINE_FEED\"] = 10] = \"LINE_FEED\";\n    CODE_POINTS[CODE_POINTS[\"FORM_FEED\"] = 12] = \"FORM_FEED\";\n    CODE_POINTS[CODE_POINTS[\"SPACE\"] = 32] = \"SPACE\";\n    CODE_POINTS[CODE_POINTS[\"EXCLAMATION_MARK\"] = 33] = \"EXCLAMATION_MARK\";\n    CODE_POINTS[CODE_POINTS[\"QUOTATION_MARK\"] = 34] = \"QUOTATION_MARK\";\n    CODE_POINTS[CODE_POINTS[\"NUMBER_SIGN\"] = 35] = \"NUMBER_SIGN\";\n    CODE_POINTS[CODE_POINTS[\"AMPERSAND\"] = 38] = \"AMPERSAND\";\n    CODE_POINTS[CODE_POINTS[\"APOSTROPHE\"] = 39] = \"APOSTROPHE\";\n    CODE_POINTS[CODE_POINTS[\"HYPHEN_MINUS\"] = 45] = \"HYPHEN_MINUS\";\n    CODE_POINTS[CODE_POINTS[\"SOLIDUS\"] = 47] = \"SOLIDUS\";\n    CODE_POINTS[CODE_POINTS[\"DIGIT_0\"] = 48] = \"DIGIT_0\";\n    CODE_POINTS[CODE_POINTS[\"DIGIT_9\"] = 57] = \"DIGIT_9\";\n    CODE_POINTS[CODE_POINTS[\"SEMICOLON\"] = 59] = \"SEMICOLON\";\n    CODE_POINTS[CODE_POINTS[\"LESS_THAN_SIGN\"] = 60] = \"LESS_THAN_SIGN\";\n    CODE_POINTS[CODE_POINTS[\"EQUALS_SIGN\"] = 61] = \"EQUALS_SIGN\";\n    CODE_POINTS[CODE_POINTS[\"GREATER_THAN_SIGN\"] = 62] = \"GREATER_THAN_SIGN\";\n    CODE_POINTS[CODE_POINTS[\"QUESTION_MARK\"] = 63] = \"QUESTION_MARK\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_A\"] = 65] = \"LATIN_CAPITAL_A\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_F\"] = 70] = \"LATIN_CAPITAL_F\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_X\"] = 88] = \"LATIN_CAPITAL_X\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_CAPITAL_Z\"] = 90] = \"LATIN_CAPITAL_Z\";\n    CODE_POINTS[CODE_POINTS[\"RIGHT_SQUARE_BRACKET\"] = 93] = \"RIGHT_SQUARE_BRACKET\";\n    CODE_POINTS[CODE_POINTS[\"GRAVE_ACCENT\"] = 96] = \"GRAVE_ACCENT\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_A\"] = 97] = \"LATIN_SMALL_A\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_F\"] = 102] = \"LATIN_SMALL_F\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_X\"] = 120] = \"LATIN_SMALL_X\";\n    CODE_POINTS[CODE_POINTS[\"LATIN_SMALL_Z\"] = 122] = \"LATIN_SMALL_Z\";\n    CODE_POINTS[CODE_POINTS[\"REPLACEMENT_CHARACTER\"] = 65533] = \"REPLACEMENT_CHARACTER\";\n})(CODE_POINTS = CODE_POINTS || (CODE_POINTS = {}));\nexport const SEQUENCES = {\n    DASH_DASH: '--',\n    CDATA_START: '[CDATA[',\n    DOCTYPE: 'doctype',\n    SCRIPT: 'script',\n    PUBLIC: 'public',\n    SYSTEM: 'system',\n};\n//Surrogates\nexport function isSurrogate(cp) {\n    return cp >= 55296 && cp <= 57343;\n}\nexport function isSurrogatePair(cp) {\n    return cp >= 56320 && cp <= 57343;\n}\nexport function getSurrogatePairCodePoint(cp1, cp2) {\n    return (cp1 - 55296) * 1024 + 9216 + cp2;\n}\n//NOTE: excluding NULL and ASCII whitespace\nexport function isControlCodePoint(cp) {\n    return ((cp !== 0x20 && cp !== 0x0a && cp !== 0x0d && cp !== 0x09 && cp !== 0x0c && cp >= 0x01 && cp <= 0x1f) ||\n        (cp >= 0x7f && cp <= 0x9f));\n}\nexport function isUndefinedCodePoint(cp) {\n    return (cp >= 64976 && cp <= 65007) || UNDEFINED_CODE_POINTS.has(cp);\n}\n//# sourceMappingURL=unicode.js.map", "export var ERR;\n(function (ERR) {\n    ERR[\"controlCharacterInInputStream\"] = \"control-character-in-input-stream\";\n    ERR[\"noncharacterInInputStream\"] = \"noncharacter-in-input-stream\";\n    ERR[\"surrogateInInputStream\"] = \"surrogate-in-input-stream\";\n    ERR[\"nonVoidHtmlElementStartTagWithTrailingSolidus\"] = \"non-void-html-element-start-tag-with-trailing-solidus\";\n    ERR[\"endTagWithAttributes\"] = \"end-tag-with-attributes\";\n    ERR[\"endTagWithTrailingSolidus\"] = \"end-tag-with-trailing-solidus\";\n    ERR[\"unexpectedSolidusInTag\"] = \"unexpected-solidus-in-tag\";\n    ERR[\"unexpectedNullCharacter\"] = \"unexpected-null-character\";\n    ERR[\"unexpectedQuestionMarkInsteadOfTagName\"] = \"unexpected-question-mark-instead-of-tag-name\";\n    ERR[\"invalidFirstCharacterOfTagName\"] = \"invalid-first-character-of-tag-name\";\n    ERR[\"unexpectedEqualsSignBeforeAttributeName\"] = \"unexpected-equals-sign-before-attribute-name\";\n    ERR[\"missingEndTagName\"] = \"missing-end-tag-name\";\n    ERR[\"unexpectedCharacterInAttributeName\"] = \"unexpected-character-in-attribute-name\";\n    ERR[\"unknownNamedCharacterReference\"] = \"unknown-named-character-reference\";\n    ERR[\"missingSemicolonAfterCharacterReference\"] = \"missing-semicolon-after-character-reference\";\n    ERR[\"unexpectedCharacterAfterDoctypeSystemIdentifier\"] = \"unexpected-character-after-doctype-system-identifier\";\n    ERR[\"unexpectedCharacterInUnquotedAttributeValue\"] = \"unexpected-character-in-unquoted-attribute-value\";\n    ERR[\"eofBeforeTagName\"] = \"eof-before-tag-name\";\n    ERR[\"eofInTag\"] = \"eof-in-tag\";\n    ERR[\"missingAttributeValue\"] = \"missing-attribute-value\";\n    ERR[\"missingWhitespaceBetweenAttributes\"] = \"missing-whitespace-between-attributes\";\n    ERR[\"missingWhitespaceAfterDoctypePublicKeyword\"] = \"missing-whitespace-after-doctype-public-keyword\";\n    ERR[\"missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers\"] = \"missing-whitespace-between-doctype-public-and-system-identifiers\";\n    ERR[\"missingWhitespaceAfterDoctypeSystemKeyword\"] = \"missing-whitespace-after-doctype-system-keyword\";\n    ERR[\"missingQuoteBeforeDoctypePublicIdentifier\"] = \"missing-quote-before-doctype-public-identifier\";\n    ERR[\"missingQuoteBeforeDoctypeSystemIdentifier\"] = \"missing-quote-before-doctype-system-identifier\";\n    ERR[\"missingDoctypePublicIdentifier\"] = \"missing-doctype-public-identifier\";\n    ERR[\"missingDoctypeSystemIdentifier\"] = \"missing-doctype-system-identifier\";\n    ERR[\"abruptDoctypePublicIdentifier\"] = \"abrupt-doctype-public-identifier\";\n    ERR[\"abruptDoctypeSystemIdentifier\"] = \"abrupt-doctype-system-identifier\";\n    ERR[\"cdataInHtmlContent\"] = \"cdata-in-html-content\";\n    ERR[\"incorrectlyOpenedComment\"] = \"incorrectly-opened-comment\";\n    ERR[\"eofInScriptHtmlCommentLikeText\"] = \"eof-in-script-html-comment-like-text\";\n    ERR[\"eofInDoctype\"] = \"eof-in-doctype\";\n    ERR[\"nestedComment\"] = \"nested-comment\";\n    ERR[\"abruptClosingOfEmptyComment\"] = \"abrupt-closing-of-empty-comment\";\n    ERR[\"eofInComment\"] = \"eof-in-comment\";\n    ERR[\"incorrectlyClosedComment\"] = \"incorrectly-closed-comment\";\n    ERR[\"eofInCdata\"] = \"eof-in-cdata\";\n    ERR[\"absenceOfDigitsInNumericCharacterReference\"] = \"absence-of-digits-in-numeric-character-reference\";\n    ERR[\"nullCharacterReference\"] = \"null-character-reference\";\n    ERR[\"surrogateCharacterReference\"] = \"surrogate-character-reference\";\n    ERR[\"characterReferenceOutsideUnicodeRange\"] = \"character-reference-outside-unicode-range\";\n    ERR[\"controlCharacterReference\"] = \"control-character-reference\";\n    ERR[\"noncharacterCharacterReference\"] = \"noncharacter-character-reference\";\n    ERR[\"missingWhitespaceBeforeDoctypeName\"] = \"missing-whitespace-before-doctype-name\";\n    ERR[\"missingDoctypeName\"] = \"missing-doctype-name\";\n    ERR[\"invalidCharacterSequenceAfterDoctypeName\"] = \"invalid-character-sequence-after-doctype-name\";\n    ERR[\"duplicateAttribute\"] = \"duplicate-attribute\";\n    ERR[\"nonConformingDoctype\"] = \"non-conforming-doctype\";\n    ERR[\"missingDoctype\"] = \"missing-doctype\";\n    ERR[\"misplacedDoctype\"] = \"misplaced-doctype\";\n    ERR[\"endTagWithoutMatchingOpenElement\"] = \"end-tag-without-matching-open-element\";\n    ERR[\"closingOfElementWithOpenChildElements\"] = \"closing-of-element-with-open-child-elements\";\n    ERR[\"disallowedContentInNoscriptInHead\"] = \"disallowed-content-in-noscript-in-head\";\n    ERR[\"openElementsLeftAfterEof\"] = \"open-elements-left-after-eof\";\n    ERR[\"abandonedHeadElementChild\"] = \"abandoned-head-element-child\";\n    ERR[\"misplacedStartTagForHeadElement\"] = \"misplaced-start-tag-for-head-element\";\n    ERR[\"nestedNoscriptInHead\"] = \"nested-noscript-in-head\";\n    ERR[\"eofInElementThatCanContainOnlyText\"] = \"eof-in-element-that-can-contain-only-text\";\n})(ERR = ERR || (ERR = {}));\n//# sourceMappingURL=error-codes.js.map", "import { CODE_POINTS as $, getSurrogatePairCodePoint, isControlCodePoint, isSurrogate, isSurrogatePair, isUndefinedCodePoint, } from '../common/unicode.js';\nimport { ERR } from '../common/error-codes.js';\n//Const\nconst DEFAULT_BUFFER_WATERLINE = 1 << 16;\n//Preprocessor\n//NOTE: HTML input preprocessing\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#preprocessing-the-input-stream)\nexport class Preprocessor {\n    constructor(handler) {\n        this.handler = handler;\n        this.html = '';\n        this.pos = -1;\n        // NOTE: Initial `lastGapPos` is -2, to ensure `col` on initialisation is 0\n        this.lastGapPos = -2;\n        this.gapStack = [];\n        this.skipNextNewLine = false;\n        this.lastChunkWritten = false;\n        this.endOfChunkHit = false;\n        this.bufferWaterline = DEFAULT_BUFFER_WATERLINE;\n        this.isEol = false;\n        this.lineStartPos = 0;\n        this.droppedBufferSize = 0;\n        this.line = 1;\n        //NOTE: avoid reporting errors twice on advance/retreat\n        this.lastErrOffset = -1;\n    }\n    /** The column on the current line. If we just saw a gap (eg. a surrogate pair), return the index before. */\n    get col() {\n        return this.pos - this.lineStartPos + Number(this.lastGapPos !== this.pos);\n    }\n    get offset() {\n        return this.droppedBufferSize + this.pos;\n    }\n    getError(code) {\n        const { line, col, offset } = this;\n        return {\n            code,\n            startLine: line,\n            endLine: line,\n            startCol: col,\n            endCol: col,\n            startOffset: offset,\n            endOffset: offset,\n        };\n    }\n    _err(code) {\n        if (this.handler.onParseError && this.lastErrOffset !== this.offset) {\n            this.lastErrOffset = this.offset;\n            this.handler.onParseError(this.getError(code));\n        }\n    }\n    _addGap() {\n        this.gapStack.push(this.lastGapPos);\n        this.lastGapPos = this.pos;\n    }\n    _processSurrogate(cp) {\n        //NOTE: try to peek a surrogate pair\n        if (this.pos !== this.html.length - 1) {\n            const nextCp = this.html.charCodeAt(this.pos + 1);\n            if (isSurrogatePair(nextCp)) {\n                //NOTE: we have a surrogate pair. Peek pair character and recalculate code point.\n                this.pos++;\n                //NOTE: add a gap that should be avoided during retreat\n                this._addGap();\n                return getSurrogatePairCodePoint(cp, nextCp);\n            }\n        }\n        //NOTE: we are at the end of a chunk, therefore we can't infer the surrogate pair yet.\n        else if (!this.lastChunkWritten) {\n            this.endOfChunkHit = true;\n            return $.EOF;\n        }\n        //NOTE: isolated surrogate\n        this._err(ERR.surrogateInInputStream);\n        return cp;\n    }\n    willDropParsedChunk() {\n        return this.pos > this.bufferWaterline;\n    }\n    dropParsedChunk() {\n        if (this.willDropParsedChunk()) {\n            this.html = this.html.substring(this.pos);\n            this.lineStartPos -= this.pos;\n            this.droppedBufferSize += this.pos;\n            this.pos = 0;\n            this.lastGapPos = -2;\n            this.gapStack.length = 0;\n        }\n    }\n    write(chunk, isLastChunk) {\n        if (this.html.length > 0) {\n            this.html += chunk;\n        }\n        else {\n            this.html = chunk;\n        }\n        this.endOfChunkHit = false;\n        this.lastChunkWritten = isLastChunk;\n    }\n    insertHtmlAtCurrentPos(chunk) {\n        this.html = this.html.substring(0, this.pos + 1) + chunk + this.html.substring(this.pos + 1);\n        this.endOfChunkHit = false;\n    }\n    startsWith(pattern, caseSensitive) {\n        // Check if our buffer has enough characters\n        if (this.pos + pattern.length > this.html.length) {\n            this.endOfChunkHit = !this.lastChunkWritten;\n            return false;\n        }\n        if (caseSensitive) {\n            return this.html.startsWith(pattern, this.pos);\n        }\n        for (let i = 0; i < pattern.length; i++) {\n            const cp = this.html.charCodeAt(this.pos + i) | 0x20;\n            if (cp !== pattern.charCodeAt(i)) {\n                return false;\n            }\n        }\n        return true;\n    }\n    peek(offset) {\n        const pos = this.pos + offset;\n        if (pos >= this.html.length) {\n            this.endOfChunkHit = !this.lastChunkWritten;\n            return $.EOF;\n        }\n        const code = this.html.charCodeAt(pos);\n        return code === $.CARRIAGE_RETURN ? $.LINE_FEED : code;\n    }\n    advance() {\n        this.pos++;\n        //NOTE: LF should be in the last column of the line\n        if (this.isEol) {\n            this.isEol = false;\n            this.line++;\n            this.lineStartPos = this.pos;\n        }\n        if (this.pos >= this.html.length) {\n            this.endOfChunkHit = !this.lastChunkWritten;\n            return $.EOF;\n        }\n        let cp = this.html.charCodeAt(this.pos);\n        //NOTE: all U+000D CARRIAGE RETURN (CR) characters must be converted to U+000A LINE FEED (LF) characters\n        if (cp === $.CARRIAGE_RETURN) {\n            this.isEol = true;\n            this.skipNextNewLine = true;\n            return $.LINE_FEED;\n        }\n        //NOTE: any U+000A LINE FEED (LF) characters that immediately follow a U+000D CARRIAGE RETURN (CR) character\n        //must be ignored.\n        if (cp === $.LINE_FEED) {\n            this.isEol = true;\n            if (this.skipNextNewLine) {\n                // `line` will be bumped again in the recursive call.\n                this.line--;\n                this.skipNextNewLine = false;\n                this._addGap();\n                return this.advance();\n            }\n        }\n        this.skipNextNewLine = false;\n        if (isSurrogate(cp)) {\n            cp = this._processSurrogate(cp);\n        }\n        //OPTIMIZATION: first check if code point is in the common allowed\n        //range (ASCII alphanumeric, whitespaces, big chunk of BMP)\n        //before going into detailed performance cost validation.\n        const isCommonValidRange = this.handler.onParseError === null ||\n            (cp > 0x1f && cp < 0x7f) ||\n            cp === $.LINE_FEED ||\n            cp === $.CARRIAGE_RETURN ||\n            (cp > 0x9f && cp < 64976);\n        if (!isCommonValidRange) {\n            this._checkForProblematicCharacters(cp);\n        }\n        return cp;\n    }\n    _checkForProblematicCharacters(cp) {\n        if (isControlCodePoint(cp)) {\n            this._err(ERR.controlCharacterInInputStream);\n        }\n        else if (isUndefinedCodePoint(cp)) {\n            this._err(ERR.noncharacterInInputStream);\n        }\n    }\n    retreat(count) {\n        this.pos -= count;\n        while (this.pos < this.lastGapPos) {\n            this.lastGapPos = this.gapStack.pop();\n            this.pos--;\n        }\n        this.isEol = false;\n    }\n}\n//# sourceMappingURL=preprocessor.js.map", "export var TokenType;\n(function (TokenType) {\n    TokenType[TokenType[\"CHARACTER\"] = 0] = \"CHARACTER\";\n    TokenType[TokenType[\"NULL_CHARACTER\"] = 1] = \"NULL_CHARACTER\";\n    TokenType[TokenType[\"WHITESPACE_CHARACTER\"] = 2] = \"WHITESPACE_CHARACTER\";\n    TokenType[TokenType[\"START_TAG\"] = 3] = \"START_TAG\";\n    TokenType[TokenType[\"END_TAG\"] = 4] = \"END_TAG\";\n    TokenType[TokenType[\"COMMENT\"] = 5] = \"COMMENT\";\n    TokenType[TokenType[\"DOCTYPE\"] = 6] = \"DOCTYPE\";\n    TokenType[TokenType[\"EOF\"] = 7] = \"EOF\";\n    TokenType[TokenType[\"HIBERNATION\"] = 8] = \"HIBERNATION\";\n})(TokenType = TokenType || (TokenType = {}));\nexport function getTokenAttr(token, attrName) {\n    for (let i = token.attrs.length - 1; i >= 0; i--) {\n        if (token.attrs[i].name === attrName) {\n            return token.attrs[i].value;\n        }\n    }\n    return null;\n}\n//# sourceMappingURL=token.js.map", null, null, null, null, "/** All valid namespaces in HTML. */\nexport var NS;\n(function (NS) {\n    NS[\"HTML\"] = \"http://www.w3.org/1999/xhtml\";\n    NS[\"MATHML\"] = \"http://www.w3.org/1998/Math/MathML\";\n    NS[\"SVG\"] = \"http://www.w3.org/2000/svg\";\n    NS[\"XLINK\"] = \"http://www.w3.org/1999/xlink\";\n    NS[\"XML\"] = \"http://www.w3.org/XML/1998/namespace\";\n    NS[\"XMLNS\"] = \"http://www.w3.org/2000/xmlns/\";\n})(NS = NS || (NS = {}));\nexport var ATTRS;\n(function (ATTRS) {\n    ATTRS[\"TYPE\"] = \"type\";\n    ATTRS[\"ACTION\"] = \"action\";\n    ATTRS[\"ENCODING\"] = \"encoding\";\n    ATTRS[\"PROMPT\"] = \"prompt\";\n    ATTRS[\"NAME\"] = \"name\";\n    ATTRS[\"COLOR\"] = \"color\";\n    ATTRS[\"FACE\"] = \"face\";\n    ATTRS[\"SIZE\"] = \"size\";\n})(ATTRS = ATTRS || (ATTRS = {}));\n/**\n * The mode of the document.\n *\n * @see {@link https://dom.spec.whatwg.org/#concept-document-limited-quirks}\n */\nexport var DOCUMENT_MODE;\n(function (DOCUMENT_MODE) {\n    DOCUMENT_MODE[\"NO_QUIRKS\"] = \"no-quirks\";\n    DOCUMENT_MODE[\"QUIRKS\"] = \"quirks\";\n    DOCUMENT_MODE[\"LIMITED_QUIRKS\"] = \"limited-quirks\";\n})(DOCUMENT_MODE = DOCUMENT_MODE || (DOCUMENT_MODE = {}));\nexport var TAG_NAMES;\n(function (TAG_NAMES) {\n    TAG_NAMES[\"A\"] = \"a\";\n    TAG_NAMES[\"ADDRESS\"] = \"address\";\n    TAG_NAMES[\"ANNOTATION_XML\"] = \"annotation-xml\";\n    TAG_NAMES[\"APPLET\"] = \"applet\";\n    TAG_NAMES[\"AREA\"] = \"area\";\n    TAG_NAMES[\"ARTICLE\"] = \"article\";\n    TAG_NAMES[\"ASIDE\"] = \"aside\";\n    TAG_NAMES[\"B\"] = \"b\";\n    TAG_NAMES[\"BASE\"] = \"base\";\n    TAG_NAMES[\"BASEFONT\"] = \"basefont\";\n    TAG_NAMES[\"BGSOUND\"] = \"bgsound\";\n    TAG_NAMES[\"BIG\"] = \"big\";\n    TAG_NAMES[\"BLOCKQUOTE\"] = \"blockquote\";\n    TAG_NAMES[\"BODY\"] = \"body\";\n    TAG_NAMES[\"BR\"] = \"br\";\n    TAG_NAMES[\"BUTTON\"] = \"button\";\n    TAG_NAMES[\"CAPTION\"] = \"caption\";\n    TAG_NAMES[\"CENTER\"] = \"center\";\n    TAG_NAMES[\"CODE\"] = \"code\";\n    TAG_NAMES[\"COL\"] = \"col\";\n    TAG_NAMES[\"COLGROUP\"] = \"colgroup\";\n    TAG_NAMES[\"DD\"] = \"dd\";\n    TAG_NAMES[\"DESC\"] = \"desc\";\n    TAG_NAMES[\"DETAILS\"] = \"details\";\n    TAG_NAMES[\"DIALOG\"] = \"dialog\";\n    TAG_NAMES[\"DIR\"] = \"dir\";\n    TAG_NAMES[\"DIV\"] = \"div\";\n    TAG_NAMES[\"DL\"] = \"dl\";\n    TAG_NAMES[\"DT\"] = \"dt\";\n    TAG_NAMES[\"EM\"] = \"em\";\n    TAG_NAMES[\"EMBED\"] = \"embed\";\n    TAG_NAMES[\"FIELDSET\"] = \"fieldset\";\n    TAG_NAMES[\"FIGCAPTION\"] = \"figcaption\";\n    TAG_NAMES[\"FIGURE\"] = \"figure\";\n    TAG_NAMES[\"FONT\"] = \"font\";\n    TAG_NAMES[\"FOOTER\"] = \"footer\";\n    TAG_NAMES[\"FOREIGN_OBJECT\"] = \"foreignObject\";\n    TAG_NAMES[\"FORM\"] = \"form\";\n    TAG_NAMES[\"FRAME\"] = \"frame\";\n    TAG_NAMES[\"FRAMESET\"] = \"frameset\";\n    TAG_NAMES[\"H1\"] = \"h1\";\n    TAG_NAMES[\"H2\"] = \"h2\";\n    TAG_NAMES[\"H3\"] = \"h3\";\n    TAG_NAMES[\"H4\"] = \"h4\";\n    TAG_NAMES[\"H5\"] = \"h5\";\n    TAG_NAMES[\"H6\"] = \"h6\";\n    TAG_NAMES[\"HEAD\"] = \"head\";\n    TAG_NAMES[\"HEADER\"] = \"header\";\n    TAG_NAMES[\"HGROUP\"] = \"hgroup\";\n    TAG_NAMES[\"HR\"] = \"hr\";\n    TAG_NAMES[\"HTML\"] = \"html\";\n    TAG_NAMES[\"I\"] = \"i\";\n    TAG_NAMES[\"IMG\"] = \"img\";\n    TAG_NAMES[\"IMAGE\"] = \"image\";\n    TAG_NAMES[\"INPUT\"] = \"input\";\n    TAG_NAMES[\"IFRAME\"] = \"iframe\";\n    TAG_NAMES[\"KEYGEN\"] = \"keygen\";\n    TAG_NAMES[\"LABEL\"] = \"label\";\n    TAG_NAMES[\"LI\"] = \"li\";\n    TAG_NAMES[\"LINK\"] = \"link\";\n    TAG_NAMES[\"LISTING\"] = \"listing\";\n    TAG_NAMES[\"MAIN\"] = \"main\";\n    TAG_NAMES[\"MALIGNMARK\"] = \"malignmark\";\n    TAG_NAMES[\"MARQUEE\"] = \"marquee\";\n    TAG_NAMES[\"MATH\"] = \"math\";\n    TAG_NAMES[\"MENU\"] = \"menu\";\n    TAG_NAMES[\"META\"] = \"meta\";\n    TAG_NAMES[\"MGLYPH\"] = \"mglyph\";\n    TAG_NAMES[\"MI\"] = \"mi\";\n    TAG_NAMES[\"MO\"] = \"mo\";\n    TAG_NAMES[\"MN\"] = \"mn\";\n    TAG_NAMES[\"MS\"] = \"ms\";\n    TAG_NAMES[\"MTEXT\"] = \"mtext\";\n    TAG_NAMES[\"NAV\"] = \"nav\";\n    TAG_NAMES[\"NOBR\"] = \"nobr\";\n    TAG_NAMES[\"NOFRAMES\"] = \"noframes\";\n    TAG_NAMES[\"NOEMBED\"] = \"noembed\";\n    TAG_NAMES[\"NOSCRIPT\"] = \"noscript\";\n    TAG_NAMES[\"OBJECT\"] = \"object\";\n    TAG_NAMES[\"OL\"] = \"ol\";\n    TAG_NAMES[\"OPTGROUP\"] = \"optgroup\";\n    TAG_NAMES[\"OPTION\"] = \"option\";\n    TAG_NAMES[\"P\"] = \"p\";\n    TAG_NAMES[\"PARAM\"] = \"param\";\n    TAG_NAMES[\"PLAINTEXT\"] = \"plaintext\";\n    TAG_NAMES[\"PRE\"] = \"pre\";\n    TAG_NAMES[\"RB\"] = \"rb\";\n    TAG_NAMES[\"RP\"] = \"rp\";\n    TAG_NAMES[\"RT\"] = \"rt\";\n    TAG_NAMES[\"RTC\"] = \"rtc\";\n    TAG_NAMES[\"RUBY\"] = \"ruby\";\n    TAG_NAMES[\"S\"] = \"s\";\n    TAG_NAMES[\"SCRIPT\"] = \"script\";\n    TAG_NAMES[\"SECTION\"] = \"section\";\n    TAG_NAMES[\"SELECT\"] = \"select\";\n    TAG_NAMES[\"SOURCE\"] = \"source\";\n    TAG_NAMES[\"SMALL\"] = \"small\";\n    TAG_NAMES[\"SPAN\"] = \"span\";\n    TAG_NAMES[\"STRIKE\"] = \"strike\";\n    TAG_NAMES[\"STRONG\"] = \"strong\";\n    TAG_NAMES[\"STYLE\"] = \"style\";\n    TAG_NAMES[\"SUB\"] = \"sub\";\n    TAG_NAMES[\"SUMMARY\"] = \"summary\";\n    TAG_NAMES[\"SUP\"] = \"sup\";\n    TAG_NAMES[\"TABLE\"] = \"table\";\n    TAG_NAMES[\"TBODY\"] = \"tbody\";\n    TAG_NAMES[\"TEMPLATE\"] = \"template\";\n    TAG_NAMES[\"TEXTAREA\"] = \"textarea\";\n    TAG_NAMES[\"TFOOT\"] = \"tfoot\";\n    TAG_NAMES[\"TD\"] = \"td\";\n    TAG_NAMES[\"TH\"] = \"th\";\n    TAG_NAMES[\"THEAD\"] = \"thead\";\n    TAG_NAMES[\"TITLE\"] = \"title\";\n    TAG_NAMES[\"TR\"] = \"tr\";\n    TAG_NAMES[\"TRACK\"] = \"track\";\n    TAG_NAMES[\"TT\"] = \"tt\";\n    TAG_NAMES[\"U\"] = \"u\";\n    TAG_NAMES[\"UL\"] = \"ul\";\n    TAG_NAMES[\"SVG\"] = \"svg\";\n    TAG_NAMES[\"VAR\"] = \"var\";\n    TAG_NAMES[\"WBR\"] = \"wbr\";\n    TAG_NAMES[\"XMP\"] = \"xmp\";\n})(TAG_NAMES = TAG_NAMES || (TAG_NAMES = {}));\n/**\n * Tag IDs are numeric IDs for known tag names.\n *\n * We use tag IDs to improve the performance of tag name comparisons.\n */\nexport var TAG_ID;\n(function (TAG_ID) {\n    TAG_ID[TAG_ID[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n    TAG_ID[TAG_ID[\"A\"] = 1] = \"A\";\n    TAG_ID[TAG_ID[\"ADDRESS\"] = 2] = \"ADDRESS\";\n    TAG_ID[TAG_ID[\"ANNOTATION_XML\"] = 3] = \"ANNOTATION_XML\";\n    TAG_ID[TAG_ID[\"APPLET\"] = 4] = \"APPLET\";\n    TAG_ID[TAG_ID[\"AREA\"] = 5] = \"AREA\";\n    TAG_ID[TAG_ID[\"ARTICLE\"] = 6] = \"ARTICLE\";\n    TAG_ID[TAG_ID[\"ASIDE\"] = 7] = \"ASIDE\";\n    TAG_ID[TAG_ID[\"B\"] = 8] = \"B\";\n    TAG_ID[TAG_ID[\"BASE\"] = 9] = \"BASE\";\n    TAG_ID[TAG_ID[\"BASEFONT\"] = 10] = \"BASEFONT\";\n    TAG_ID[TAG_ID[\"BGSOUND\"] = 11] = \"BGSOUND\";\n    TAG_ID[TAG_ID[\"BIG\"] = 12] = \"BIG\";\n    TAG_ID[TAG_ID[\"BLOCKQUOTE\"] = 13] = \"BLOCKQUOTE\";\n    TAG_ID[TAG_ID[\"BODY\"] = 14] = \"BODY\";\n    TAG_ID[TAG_ID[\"BR\"] = 15] = \"BR\";\n    TAG_ID[TAG_ID[\"BUTTON\"] = 16] = \"BUTTON\";\n    TAG_ID[TAG_ID[\"CAPTION\"] = 17] = \"CAPTION\";\n    TAG_ID[TAG_ID[\"CENTER\"] = 18] = \"CENTER\";\n    TAG_ID[TAG_ID[\"CODE\"] = 19] = \"CODE\";\n    TAG_ID[TAG_ID[\"COL\"] = 20] = \"COL\";\n    TAG_ID[TAG_ID[\"COLGROUP\"] = 21] = \"COLGROUP\";\n    TAG_ID[TAG_ID[\"DD\"] = 22] = \"DD\";\n    TAG_ID[TAG_ID[\"DESC\"] = 23] = \"DESC\";\n    TAG_ID[TAG_ID[\"DETAILS\"] = 24] = \"DETAILS\";\n    TAG_ID[TAG_ID[\"DIALOG\"] = 25] = \"DIALOG\";\n    TAG_ID[TAG_ID[\"DIR\"] = 26] = \"DIR\";\n    TAG_ID[TAG_ID[\"DIV\"] = 27] = \"DIV\";\n    TAG_ID[TAG_ID[\"DL\"] = 28] = \"DL\";\n    TAG_ID[TAG_ID[\"DT\"] = 29] = \"DT\";\n    TAG_ID[TAG_ID[\"EM\"] = 30] = \"EM\";\n    TAG_ID[TAG_ID[\"EMBED\"] = 31] = \"EMBED\";\n    TAG_ID[TAG_ID[\"FIELDSET\"] = 32] = \"FIELDSET\";\n    TAG_ID[TAG_ID[\"FIGCAPTION\"] = 33] = \"FIGCAPTION\";\n    TAG_ID[TAG_ID[\"FIGURE\"] = 34] = \"FIGURE\";\n    TAG_ID[TAG_ID[\"FONT\"] = 35] = \"FONT\";\n    TAG_ID[TAG_ID[\"FOOTER\"] = 36] = \"FOOTER\";\n    TAG_ID[TAG_ID[\"FOREIGN_OBJECT\"] = 37] = \"FOREIGN_OBJECT\";\n    TAG_ID[TAG_ID[\"FORM\"] = 38] = \"FORM\";\n    TAG_ID[TAG_ID[\"FRAME\"] = 39] = \"FRAME\";\n    TAG_ID[TAG_ID[\"FRAMESET\"] = 40] = \"FRAMESET\";\n    TAG_ID[TAG_ID[\"H1\"] = 41] = \"H1\";\n    TAG_ID[TAG_ID[\"H2\"] = 42] = \"H2\";\n    TAG_ID[TAG_ID[\"H3\"] = 43] = \"H3\";\n    TAG_ID[TAG_ID[\"H4\"] = 44] = \"H4\";\n    TAG_ID[TAG_ID[\"H5\"] = 45] = \"H5\";\n    TAG_ID[TAG_ID[\"H6\"] = 46] = \"H6\";\n    TAG_ID[TAG_ID[\"HEAD\"] = 47] = \"HEAD\";\n    TAG_ID[TAG_ID[\"HEADER\"] = 48] = \"HEADER\";\n    TAG_ID[TAG_ID[\"HGROUP\"] = 49] = \"HGROUP\";\n    TAG_ID[TAG_ID[\"HR\"] = 50] = \"HR\";\n    TAG_ID[TAG_ID[\"HTML\"] = 51] = \"HTML\";\n    TAG_ID[TAG_ID[\"I\"] = 52] = \"I\";\n    TAG_ID[TAG_ID[\"IMG\"] = 53] = \"IMG\";\n    TAG_ID[TAG_ID[\"IMAGE\"] = 54] = \"IMAGE\";\n    TAG_ID[TAG_ID[\"INPUT\"] = 55] = \"INPUT\";\n    TAG_ID[TAG_ID[\"IFRAME\"] = 56] = \"IFRAME\";\n    TAG_ID[TAG_ID[\"KEYGEN\"] = 57] = \"KEYGEN\";\n    TAG_ID[TAG_ID[\"LABEL\"] = 58] = \"LABEL\";\n    TAG_ID[TAG_ID[\"LI\"] = 59] = \"LI\";\n    TAG_ID[TAG_ID[\"LINK\"] = 60] = \"LINK\";\n    TAG_ID[TAG_ID[\"LISTING\"] = 61] = \"LISTING\";\n    TAG_ID[TAG_ID[\"MAIN\"] = 62] = \"MAIN\";\n    TAG_ID[TAG_ID[\"MALIGNMARK\"] = 63] = \"MALIGNMARK\";\n    TAG_ID[TAG_ID[\"MARQUEE\"] = 64] = \"MARQUEE\";\n    TAG_ID[TAG_ID[\"MATH\"] = 65] = \"MATH\";\n    TAG_ID[TAG_ID[\"MENU\"] = 66] = \"MENU\";\n    TAG_ID[TAG_ID[\"META\"] = 67] = \"META\";\n    TAG_ID[TAG_ID[\"MGLYPH\"] = 68] = \"MGLYPH\";\n    TAG_ID[TAG_ID[\"MI\"] = 69] = \"MI\";\n    TAG_ID[TAG_ID[\"MO\"] = 70] = \"MO\";\n    TAG_ID[TAG_ID[\"MN\"] = 71] = \"MN\";\n    TAG_ID[TAG_ID[\"MS\"] = 72] = \"MS\";\n    TAG_ID[TAG_ID[\"MTEXT\"] = 73] = \"MTEXT\";\n    TAG_ID[TAG_ID[\"NAV\"] = 74] = \"NAV\";\n    TAG_ID[TAG_ID[\"NOBR\"] = 75] = \"NOBR\";\n    TAG_ID[TAG_ID[\"NOFRAMES\"] = 76] = \"NOFRAMES\";\n    TAG_ID[TAG_ID[\"NOEMBED\"] = 77] = \"NOEMBED\";\n    TAG_ID[TAG_ID[\"NOSCRIPT\"] = 78] = \"NOSCRIPT\";\n    TAG_ID[TAG_ID[\"OBJECT\"] = 79] = \"OBJECT\";\n    TAG_ID[TAG_ID[\"OL\"] = 80] = \"OL\";\n    TAG_ID[TAG_ID[\"OPTGROUP\"] = 81] = \"OPTGROUP\";\n    TAG_ID[TAG_ID[\"OPTION\"] = 82] = \"OPTION\";\n    TAG_ID[TAG_ID[\"P\"] = 83] = \"P\";\n    TAG_ID[TAG_ID[\"PARAM\"] = 84] = \"PARAM\";\n    TAG_ID[TAG_ID[\"PLAINTEXT\"] = 85] = \"PLAINTEXT\";\n    TAG_ID[TAG_ID[\"PRE\"] = 86] = \"PRE\";\n    TAG_ID[TAG_ID[\"RB\"] = 87] = \"RB\";\n    TAG_ID[TAG_ID[\"RP\"] = 88] = \"RP\";\n    TAG_ID[TAG_ID[\"RT\"] = 89] = \"RT\";\n    TAG_ID[TAG_ID[\"RTC\"] = 90] = \"RTC\";\n    TAG_ID[TAG_ID[\"RUBY\"] = 91] = \"RUBY\";\n    TAG_ID[TAG_ID[\"S\"] = 92] = \"S\";\n    TAG_ID[TAG_ID[\"SCRIPT\"] = 93] = \"SCRIPT\";\n    TAG_ID[TAG_ID[\"SECTION\"] = 94] = \"SECTION\";\n    TAG_ID[TAG_ID[\"SELECT\"] = 95] = \"SELECT\";\n    TAG_ID[TAG_ID[\"SOURCE\"] = 96] = \"SOURCE\";\n    TAG_ID[TAG_ID[\"SMALL\"] = 97] = \"SMALL\";\n    TAG_ID[TAG_ID[\"SPAN\"] = 98] = \"SPAN\";\n    TAG_ID[TAG_ID[\"STRIKE\"] = 99] = \"STRIKE\";\n    TAG_ID[TAG_ID[\"STRONG\"] = 100] = \"STRONG\";\n    TAG_ID[TAG_ID[\"STYLE\"] = 101] = \"STYLE\";\n    TAG_ID[TAG_ID[\"SUB\"] = 102] = \"SUB\";\n    TAG_ID[TAG_ID[\"SUMMARY\"] = 103] = \"SUMMARY\";\n    TAG_ID[TAG_ID[\"SUP\"] = 104] = \"SUP\";\n    TAG_ID[TAG_ID[\"TABLE\"] = 105] = \"TABLE\";\n    TAG_ID[TAG_ID[\"TBODY\"] = 106] = \"TBODY\";\n    TAG_ID[TAG_ID[\"TEMPLATE\"] = 107] = \"TEMPLATE\";\n    TAG_ID[TAG_ID[\"TEXTAREA\"] = 108] = \"TEXTAREA\";\n    TAG_ID[TAG_ID[\"TFOOT\"] = 109] = \"TFOOT\";\n    TAG_ID[TAG_ID[\"TD\"] = 110] = \"TD\";\n    TAG_ID[TAG_ID[\"TH\"] = 111] = \"TH\";\n    TAG_ID[TAG_ID[\"THEAD\"] = 112] = \"THEAD\";\n    TAG_ID[TAG_ID[\"TITLE\"] = 113] = \"TITLE\";\n    TAG_ID[TAG_ID[\"TR\"] = 114] = \"TR\";\n    TAG_ID[TAG_ID[\"TRACK\"] = 115] = \"TRACK\";\n    TAG_ID[TAG_ID[\"TT\"] = 116] = \"TT\";\n    TAG_ID[TAG_ID[\"U\"] = 117] = \"U\";\n    TAG_ID[TAG_ID[\"UL\"] = 118] = \"UL\";\n    TAG_ID[TAG_ID[\"SVG\"] = 119] = \"SVG\";\n    TAG_ID[TAG_ID[\"VAR\"] = 120] = \"VAR\";\n    TAG_ID[TAG_ID[\"WBR\"] = 121] = \"WBR\";\n    TAG_ID[TAG_ID[\"XMP\"] = 122] = \"XMP\";\n})(TAG_ID = TAG_ID || (TAG_ID = {}));\nconst TAG_NAME_TO_ID = new Map([\n    [TAG_NAMES.A, TAG_ID.A],\n    [TAG_NAMES.ADDRESS, TAG_ID.ADDRESS],\n    [TAG_NAMES.ANNOTATION_XML, TAG_ID.ANNOTATION_XML],\n    [TAG_NAMES.APPLET, TAG_ID.APPLET],\n    [TAG_NAMES.AREA, TAG_ID.AREA],\n    [TAG_NAMES.ARTICLE, TAG_ID.ARTICLE],\n    [TAG_NAMES.ASIDE, TAG_ID.ASIDE],\n    [TAG_NAMES.B, TAG_ID.B],\n    [TAG_NAMES.BASE, TAG_ID.BASE],\n    [TAG_NAMES.BASEFONT, TAG_ID.BASEFONT],\n    [TAG_NAMES.BGSOUND, TAG_ID.BGSOUND],\n    [TAG_NAMES.BIG, TAG_ID.BIG],\n    [TAG_NAMES.BLOCKQUOTE, TAG_ID.BLOCKQUOTE],\n    [TAG_NAMES.BODY, TAG_ID.BODY],\n    [TAG_NAMES.BR, TAG_ID.BR],\n    [TAG_NAMES.BUTTON, TAG_ID.BUTTON],\n    [TAG_NAMES.CAPTION, TAG_ID.CAPTION],\n    [TAG_NAMES.CENTER, TAG_ID.CENTER],\n    [TAG_NAMES.CODE, TAG_ID.CODE],\n    [TAG_NAMES.COL, TAG_ID.COL],\n    [TAG_NAMES.COLGROUP, TAG_ID.COLGROUP],\n    [TAG_NAMES.DD, TAG_ID.DD],\n    [TAG_NAMES.DESC, TAG_ID.DESC],\n    [TAG_NAMES.DETAILS, TAG_ID.DETAILS],\n    [TAG_NAMES.DIALOG, TAG_ID.DIALOG],\n    [TAG_NAMES.DIR, TAG_ID.DIR],\n    [TAG_NAMES.DIV, TAG_ID.DIV],\n    [TAG_NAMES.DL, TAG_ID.DL],\n    [TAG_NAMES.DT, TAG_ID.DT],\n    [TAG_NAMES.EM, TAG_ID.EM],\n    [TAG_NAMES.EMBED, TAG_ID.EMBED],\n    [TAG_NAMES.FIELDSET, TAG_ID.FIELDSET],\n    [TAG_NAMES.FIGCAPTION, TAG_ID.FIGCAPTION],\n    [TAG_NAMES.FIGURE, TAG_ID.FIGURE],\n    [TAG_NAMES.FONT, TAG_ID.FONT],\n    [TAG_NAMES.FOOTER, TAG_ID.FOOTER],\n    [TAG_NAMES.FOREIGN_OBJECT, TAG_ID.FOREIGN_OBJECT],\n    [TAG_NAMES.FORM, TAG_ID.FORM],\n    [TAG_NAMES.FRAME, TAG_ID.FRAME],\n    [TAG_NAMES.FRAMESET, TAG_ID.FRAMESET],\n    [TAG_NAMES.H1, TAG_ID.H1],\n    [TAG_NAMES.H2, TAG_ID.H2],\n    [TAG_NAMES.H3, TAG_ID.H3],\n    [TAG_NAMES.H4, TAG_ID.H4],\n    [TAG_NAMES.H5, TAG_ID.H5],\n    [TAG_NAMES.H6, TAG_ID.H6],\n    [TAG_NAMES.HEAD, TAG_ID.HEAD],\n    [TAG_NAMES.HEADER, TAG_ID.HEADER],\n    [TAG_NAMES.HGROUP, TAG_ID.HGROUP],\n    [TAG_NAMES.HR, TAG_ID.HR],\n    [TAG_NAMES.HTML, TAG_ID.HTML],\n    [TAG_NAMES.I, TAG_ID.I],\n    [TAG_NAMES.IMG, TAG_ID.IMG],\n    [TAG_NAMES.IMAGE, TAG_ID.IMAGE],\n    [TAG_NAMES.INPUT, TAG_ID.INPUT],\n    [TAG_NAMES.IFRAME, TAG_ID.IFRAME],\n    [TAG_NAMES.KEYGEN, TAG_ID.KEYGEN],\n    [TAG_NAMES.LABEL, TAG_ID.LABEL],\n    [TAG_NAMES.LI, TAG_ID.LI],\n    [TAG_NAMES.LINK, TAG_ID.LINK],\n    [TAG_NAMES.LISTING, TAG_ID.LISTING],\n    [TAG_NAMES.MAIN, TAG_ID.MAIN],\n    [TAG_NAMES.MALIGNMARK, TAG_ID.MALIGNMARK],\n    [TAG_NAMES.MARQUEE, TAG_ID.MARQUEE],\n    [TAG_NAMES.MATH, TAG_ID.MATH],\n    [TAG_NAMES.MENU, TAG_ID.MENU],\n    [TAG_NAMES.META, TAG_ID.META],\n    [TAG_NAMES.MGLYPH, TAG_ID.MGLYPH],\n    [TAG_NAMES.MI, TAG_ID.MI],\n    [TAG_NAMES.MO, TAG_ID.MO],\n    [TAG_NAMES.MN, TAG_ID.MN],\n    [TAG_NAMES.MS, TAG_ID.MS],\n    [TAG_NAMES.MTEXT, TAG_ID.MTEXT],\n    [TAG_NAMES.NAV, TAG_ID.NAV],\n    [TAG_NAMES.NOBR, TAG_ID.NOBR],\n    [TAG_NAMES.NOFRAMES, TAG_ID.NOFRAMES],\n    [TAG_NAMES.NOEMBED, TAG_ID.NOEMBED],\n    [TAG_NAMES.NOSCRIPT, TAG_ID.NOSCRIPT],\n    [TAG_NAMES.OBJECT, TAG_ID.OBJECT],\n    [TAG_NAMES.OL, TAG_ID.OL],\n    [TAG_NAMES.OPTGROUP, TAG_ID.OPTGROUP],\n    [TAG_NAMES.OPTION, TAG_ID.OPTION],\n    [TAG_NAMES.P, TAG_ID.P],\n    [TAG_NAMES.PARAM, TAG_ID.PARAM],\n    [TAG_NAMES.PLAINTEXT, TAG_ID.PLAINTEXT],\n    [TAG_NAMES.PRE, TAG_ID.PRE],\n    [TAG_NAMES.RB, TAG_ID.RB],\n    [TAG_NAMES.RP, TAG_ID.RP],\n    [TAG_NAMES.RT, TAG_ID.RT],\n    [TAG_NAMES.RTC, TAG_ID.RTC],\n    [TAG_NAMES.RUBY, TAG_ID.RUBY],\n    [TAG_NAMES.S, TAG_ID.S],\n    [TAG_NAMES.SCRIPT, TAG_ID.SCRIPT],\n    [TAG_NAMES.SECTION, TAG_ID.SECTION],\n    [TAG_NAMES.SELECT, TAG_ID.SELECT],\n    [TAG_NAMES.SOURCE, TAG_ID.SOURCE],\n    [TAG_NAMES.SMALL, TAG_ID.SMALL],\n    [TAG_NAMES.SPAN, TAG_ID.SPAN],\n    [TAG_NAMES.STRIKE, TAG_ID.STRIKE],\n    [TAG_NAMES.STRONG, TAG_ID.STRONG],\n    [TAG_NAMES.STYLE, TAG_ID.STYLE],\n    [TAG_NAMES.SUB, TAG_ID.SUB],\n    [TAG_NAMES.SUMMARY, TAG_ID.SUMMARY],\n    [TAG_NAMES.SUP, TAG_ID.SUP],\n    [TAG_NAMES.TABLE, TAG_ID.TABLE],\n    [TAG_NAMES.TBODY, TAG_ID.TBODY],\n    [TAG_NAMES.TEMPLATE, TAG_ID.TEMPLATE],\n    [TAG_NAMES.TEXTAREA, TAG_ID.TEXTAREA],\n    [TAG_NAMES.TFOOT, TAG_ID.TFOOT],\n    [TAG_NAMES.TD, TAG_ID.TD],\n    [TAG_NAMES.TH, TAG_ID.TH],\n    [TAG_NAMES.THEAD, TAG_ID.THEAD],\n    [TAG_NAMES.TITLE, TAG_ID.TITLE],\n    [TAG_NAMES.TR, TAG_ID.TR],\n    [TAG_NAMES.TRACK, TAG_ID.TRACK],\n    [TAG_NAMES.TT, TAG_ID.TT],\n    [TAG_NAMES.U, TAG_ID.U],\n    [TAG_NAMES.UL, TAG_ID.UL],\n    [TAG_NAMES.SVG, TAG_ID.SVG],\n    [TAG_NAMES.VAR, TAG_ID.VAR],\n    [TAG_NAMES.WBR, TAG_ID.WBR],\n    [TAG_NAMES.XMP, TAG_ID.XMP],\n]);\nexport function getTagID(tagName) {\n    var _a;\n    return (_a = TAG_NAME_TO_ID.get(tagName)) !== null && _a !== void 0 ? _a : TAG_ID.UNKNOWN;\n}\nconst $ = TAG_ID;\nexport const SPECIAL_ELEMENTS = {\n    [NS.HTML]: new Set([\n        $.ADDRESS,\n        $.APPLET,\n        $.AREA,\n        $.ARTICLE,\n        $.ASIDE,\n        $.BASE,\n        $.BASEFONT,\n        $.BGSOUND,\n        $.BLOCKQUOTE,\n        $.BODY,\n        $.BR,\n        $.BUTTON,\n        $.CAPTION,\n        $.CENTER,\n        $.COL,\n        $.COLGROUP,\n        $.DD,\n        $.DETAILS,\n        $.DIR,\n        $.DIV,\n        $.DL,\n        $.DT,\n        $.EMBED,\n        $.FIELDSET,\n        $.FIGCAPTION,\n        $.FIGURE,\n        $.FOOTER,\n        $.FORM,\n        $.FRAME,\n        $.FRAMESET,\n        $.H1,\n        $.H2,\n        $.H3,\n        $.H4,\n        $.H5,\n        $.H6,\n        $.HEAD,\n        $.HEADER,\n        $.HGROUP,\n        $.HR,\n        $.HTML,\n        $.IFRAME,\n        $.IMG,\n        $.INPUT,\n        $.LI,\n        $.LINK,\n        $.LISTING,\n        $.MAIN,\n        $.MARQUEE,\n        $.MENU,\n        $.META,\n        $.NAV,\n        $.NOEMBED,\n        $.NOFRAMES,\n        $.NOSCRIPT,\n        $.OBJECT,\n        $.OL,\n        $.P,\n        $.PARAM,\n        $.PLAINTEXT,\n        $.PRE,\n        $.SCRIPT,\n        $.SECTION,\n        $.SELECT,\n        $.SOURCE,\n        $.STYLE,\n        $.SUMMARY,\n        $.TABLE,\n        $.TBODY,\n        $.TD,\n        $.TEMPLATE,\n        $.TEXTAREA,\n        $.TFOOT,\n        $.TH,\n        $.THEAD,\n        $.TITLE,\n        $.TR,\n        $.TRACK,\n        $.UL,\n        $.WBR,\n        $.XMP,\n    ]),\n    [NS.MATHML]: new Set([$.MI, $.MO, $.MN, $.MS, $.MTEXT, $.ANNOTATION_XML]),\n    [NS.SVG]: new Set([$.TITLE, $.FOREIGN_OBJECT, $.DESC]),\n    [NS.XLINK]: new Set(),\n    [NS.XML]: new Set(),\n    [NS.XMLNS]: new Set(),\n};\nexport function isNumberedHeader(tn) {\n    return tn === $.H1 || tn === $.H2 || tn === $.H3 || tn === $.H4 || tn === $.H5 || tn === $.H6;\n}\nconst UNESCAPED_TEXT = new Set([\n    TAG_NAMES.STYLE,\n    TAG_NAMES.SCRIPT,\n    TAG_NAMES.XMP,\n    TAG_NAMES.IFRAME,\n    TAG_NAMES.NOEMBED,\n    TAG_NAMES.NOFRAMES,\n    TAG_NAMES.PLAINTEXT,\n]);\nexport function hasUnescapedText(tn, scriptingEnabled) {\n    return UNESCAPED_TEXT.has(tn) || (scriptingEnabled && tn === TAG_NAMES.NOSCRIPT);\n}\n//# sourceMappingURL=html.js.map", "import { Preprocessor } from './preprocessor.js';\nimport { CODE_POINTS as $, SEQUENCES as $$, REPLACEMENT_CHARACTER, isSurrogate, isUndefinedCodePoint, isControlCodePoint, } from '../common/unicode.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\nimport { htmlDecodeTree, BinTrieFlags, determineBranch } from 'entities/lib/decode.js';\nimport { ERR } from '../common/error-codes.js';\nimport { TAG_ID, getTagID } from '../common/html.js';\n//C1 Unicode control character reference replacements\nconst C1_CONTROLS_REFERENCE_REPLACEMENTS = new Map([\n    [0x80, 8364],\n    [0x82, 8218],\n    [0x83, 402],\n    [0x84, 8222],\n    [0x85, 8230],\n    [0x86, 8224],\n    [0x87, 8225],\n    [0x88, 710],\n    [0x89, 8240],\n    [0x8a, 352],\n    [0x8b, 8249],\n    [0x8c, 338],\n    [0x8e, 381],\n    [0x91, 8216],\n    [0x92, 8217],\n    [0x93, 8220],\n    [0x94, 8221],\n    [0x95, 8226],\n    [0x96, 8211],\n    [0x97, 8212],\n    [0x98, 732],\n    [0x99, 8482],\n    [0x9a, 353],\n    [0x9b, 8250],\n    [0x9c, 339],\n    [0x9e, 382],\n    [0x9f, 376],\n]);\n//States\nvar State;\n(function (State) {\n    State[State[\"DATA\"] = 0] = \"DATA\";\n    State[State[\"RCDATA\"] = 1] = \"RCDATA\";\n    State[State[\"RAWTEXT\"] = 2] = \"RAWTEXT\";\n    State[State[\"SCRIPT_DATA\"] = 3] = \"SCRIPT_DATA\";\n    State[State[\"PLAINTEXT\"] = 4] = \"PLAINTEXT\";\n    State[State[\"TAG_OPEN\"] = 5] = \"TAG_OPEN\";\n    State[State[\"END_TAG_OPEN\"] = 6] = \"END_TAG_OPEN\";\n    State[State[\"TAG_NAME\"] = 7] = \"TAG_NAME\";\n    State[State[\"RCDATA_LESS_THAN_SIGN\"] = 8] = \"RCDATA_LESS_THAN_SIGN\";\n    State[State[\"RCDATA_END_TAG_OPEN\"] = 9] = \"RCDATA_END_TAG_OPEN\";\n    State[State[\"RCDATA_END_TAG_NAME\"] = 10] = \"RCDATA_END_TAG_NAME\";\n    State[State[\"RAWTEXT_LESS_THAN_SIGN\"] = 11] = \"RAWTEXT_LESS_THAN_SIGN\";\n    State[State[\"RAWTEXT_END_TAG_OPEN\"] = 12] = \"RAWTEXT_END_TAG_OPEN\";\n    State[State[\"RAWTEXT_END_TAG_NAME\"] = 13] = \"RAWTEXT_END_TAG_NAME\";\n    State[State[\"SCRIPT_DATA_LESS_THAN_SIGN\"] = 14] = \"SCRIPT_DATA_LESS_THAN_SIGN\";\n    State[State[\"SCRIPT_DATA_END_TAG_OPEN\"] = 15] = \"SCRIPT_DATA_END_TAG_OPEN\";\n    State[State[\"SCRIPT_DATA_END_TAG_NAME\"] = 16] = \"SCRIPT_DATA_END_TAG_NAME\";\n    State[State[\"SCRIPT_DATA_ESCAPE_START\"] = 17] = \"SCRIPT_DATA_ESCAPE_START\";\n    State[State[\"SCRIPT_DATA_ESCAPE_START_DASH\"] = 18] = \"SCRIPT_DATA_ESCAPE_START_DASH\";\n    State[State[\"SCRIPT_DATA_ESCAPED\"] = 19] = \"SCRIPT_DATA_ESCAPED\";\n    State[State[\"SCRIPT_DATA_ESCAPED_DASH\"] = 20] = \"SCRIPT_DATA_ESCAPED_DASH\";\n    State[State[\"SCRIPT_DATA_ESCAPED_DASH_DASH\"] = 21] = \"SCRIPT_DATA_ESCAPED_DASH_DASH\";\n    State[State[\"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\"] = 22] = \"SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN\";\n    State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\"] = 23] = \"SCRIPT_DATA_ESCAPED_END_TAG_OPEN\";\n    State[State[\"SCRIPT_DATA_ESCAPED_END_TAG_NAME\"] = 24] = \"SCRIPT_DATA_ESCAPED_END_TAG_NAME\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_START\"] = 25] = \"SCRIPT_DATA_DOUBLE_ESCAPE_START\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED\"] = 26] = \"SCRIPT_DATA_DOUBLE_ESCAPED\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\"] = 27] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\"] = 28] = \"SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\"] = 29] = \"SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN\";\n    State[State[\"SCRIPT_DATA_DOUBLE_ESCAPE_END\"] = 30] = \"SCRIPT_DATA_DOUBLE_ESCAPE_END\";\n    State[State[\"BEFORE_ATTRIBUTE_NAME\"] = 31] = \"BEFORE_ATTRIBUTE_NAME\";\n    State[State[\"ATTRIBUTE_NAME\"] = 32] = \"ATTRIBUTE_NAME\";\n    State[State[\"AFTER_ATTRIBUTE_NAME\"] = 33] = \"AFTER_ATTRIBUTE_NAME\";\n    State[State[\"BEFORE_ATTRIBUTE_VALUE\"] = 34] = \"BEFORE_ATTRIBUTE_VALUE\";\n    State[State[\"ATTRIBUTE_VALUE_DOUBLE_QUOTED\"] = 35] = \"ATTRIBUTE_VALUE_DOUBLE_QUOTED\";\n    State[State[\"ATTRIBUTE_VALUE_SINGLE_QUOTED\"] = 36] = \"ATTRIBUTE_VALUE_SINGLE_QUOTED\";\n    State[State[\"ATTRIBUTE_VALUE_UNQUOTED\"] = 37] = \"ATTRIBUTE_VALUE_UNQUOTED\";\n    State[State[\"AFTER_ATTRIBUTE_VALUE_QUOTED\"] = 38] = \"AFTER_ATTRIBUTE_VALUE_QUOTED\";\n    State[State[\"SELF_CLOSING_START_TAG\"] = 39] = \"SELF_CLOSING_START_TAG\";\n    State[State[\"BOGUS_COMMENT\"] = 40] = \"BOGUS_COMMENT\";\n    State[State[\"MARKUP_DECLARATION_OPEN\"] = 41] = \"MARKUP_DECLARATION_OPEN\";\n    State[State[\"COMMENT_START\"] = 42] = \"COMMENT_START\";\n    State[State[\"COMMENT_START_DASH\"] = 43] = \"COMMENT_START_DASH\";\n    State[State[\"COMMENT\"] = 44] = \"COMMENT\";\n    State[State[\"COMMENT_LESS_THAN_SIGN\"] = 45] = \"COMMENT_LESS_THAN_SIGN\";\n    State[State[\"COMMENT_LESS_THAN_SIGN_BANG\"] = 46] = \"COMMENT_LESS_THAN_SIGN_BANG\";\n    State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH\"] = 47] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH\";\n    State[State[\"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\"] = 48] = \"COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH\";\n    State[State[\"COMMENT_END_DASH\"] = 49] = \"COMMENT_END_DASH\";\n    State[State[\"COMMENT_END\"] = 50] = \"COMMENT_END\";\n    State[State[\"COMMENT_END_BANG\"] = 51] = \"COMMENT_END_BANG\";\n    State[State[\"DOCTYPE\"] = 52] = \"DOCTYPE\";\n    State[State[\"BEFORE_DOCTYPE_NAME\"] = 53] = \"BEFORE_DOCTYPE_NAME\";\n    State[State[\"DOCTYPE_NAME\"] = 54] = \"DOCTYPE_NAME\";\n    State[State[\"AFTER_DOCTYPE_NAME\"] = 55] = \"AFTER_DOCTYPE_NAME\";\n    State[State[\"AFTER_DOCTYPE_PUBLIC_KEYWORD\"] = 56] = \"AFTER_DOCTYPE_PUBLIC_KEYWORD\";\n    State[State[\"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\"] = 57] = \"BEFORE_DOCTYPE_PUBLIC_IDENTIFIER\";\n    State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\"] = 58] = \"DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED\";\n    State[State[\"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\"] = 59] = \"DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED\";\n    State[State[\"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\"] = 60] = \"AFTER_DOCTYPE_PUBLIC_IDENTIFIER\";\n    State[State[\"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\"] = 61] = \"BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS\";\n    State[State[\"AFTER_DOCTYPE_SYSTEM_KEYWORD\"] = 62] = \"AFTER_DOCTYPE_SYSTEM_KEYWORD\";\n    State[State[\"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\"] = 63] = \"BEFORE_DOCTYPE_SYSTEM_IDENTIFIER\";\n    State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\"] = 64] = \"DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED\";\n    State[State[\"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\"] = 65] = \"DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED\";\n    State[State[\"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\"] = 66] = \"AFTER_DOCTYPE_SYSTEM_IDENTIFIER\";\n    State[State[\"BOGUS_DOCTYPE\"] = 67] = \"BOGUS_DOCTYPE\";\n    State[State[\"CDATA_SECTION\"] = 68] = \"CDATA_SECTION\";\n    State[State[\"CDATA_SECTION_BRACKET\"] = 69] = \"CDATA_SECTION_BRACKET\";\n    State[State[\"CDATA_SECTION_END\"] = 70] = \"CDATA_SECTION_END\";\n    State[State[\"CHARACTER_REFERENCE\"] = 71] = \"CHARACTER_REFERENCE\";\n    State[State[\"NAMED_CHARACTER_REFERENCE\"] = 72] = \"NAMED_CHARACTER_REFERENCE\";\n    State[State[\"AMBIGUOUS_AMPERSAND\"] = 73] = \"AMBIGUOUS_AMPERSAND\";\n    State[State[\"NUMERIC_CHARACTER_REFERENCE\"] = 74] = \"NUMERIC_CHARACTER_REFERENCE\";\n    State[State[\"HEXADEMICAL_CHARACTER_REFERENCE_START\"] = 75] = \"HEXADEMICAL_CHARACTER_REFERENCE_START\";\n    State[State[\"HEXADEMICAL_CHARACTER_REFERENCE\"] = 76] = \"HEXADEMICAL_CHARACTER_REFERENCE\";\n    State[State[\"DECIMAL_CHARACTER_REFERENCE\"] = 77] = \"DECIMAL_CHARACTER_REFERENCE\";\n    State[State[\"NUMERIC_CHARACTER_REFERENCE_END\"] = 78] = \"NUMERIC_CHARACTER_REFERENCE_END\";\n})(State || (State = {}));\n//Tokenizer initial states for different modes\nexport const TokenizerMode = {\n    DATA: State.DATA,\n    RCDATA: State.RCDATA,\n    RAWTEXT: State.RAWTEXT,\n    SCRIPT_DATA: State.SCRIPT_DATA,\n    PLAINTEXT: State.PLAINTEXT,\n    CDATA_SECTION: State.CDATA_SECTION,\n};\n//Utils\n//OPTIMIZATION: these utility functions should not be moved out of this module. V8 Crankshaft will not inline\n//this functions if they will be situated in another module due to context switch.\n//Always perform inlining check before modifying this functions ('node --trace-inlining').\nfunction isAsciiDigit(cp) {\n    return cp >= $.DIGIT_0 && cp <= $.DIGIT_9;\n}\nfunction isAsciiUpper(cp) {\n    return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_Z;\n}\nfunction isAsciiLower(cp) {\n    return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_Z;\n}\nfunction isAsciiLetter(cp) {\n    return isAsciiLower(cp) || isAsciiUpper(cp);\n}\nfunction isAsciiAlphaNumeric(cp) {\n    return isAsciiLetter(cp) || isAsciiDigit(cp);\n}\nfunction isAsciiUpperHexDigit(cp) {\n    return cp >= $.LATIN_CAPITAL_A && cp <= $.LATIN_CAPITAL_F;\n}\nfunction isAsciiLowerHexDigit(cp) {\n    return cp >= $.LATIN_SMALL_A && cp <= $.LATIN_SMALL_F;\n}\nfunction isAsciiHexDigit(cp) {\n    return isAsciiDigit(cp) || isAsciiUpperHexDigit(cp) || isAsciiLowerHexDigit(cp);\n}\nfunction toAsciiLower(cp) {\n    return cp + 32;\n}\nfunction isWhitespace(cp) {\n    return cp === $.SPACE || cp === $.LINE_FEED || cp === $.TABULATION || cp === $.FORM_FEED;\n}\nfunction isEntityInAttributeInvalidEnd(nextCp) {\n    return nextCp === $.EQUALS_SIGN || isAsciiAlphaNumeric(nextCp);\n}\nfunction isScriptDataDoubleEscapeSequenceEnd(cp) {\n    return isWhitespace(cp) || cp === $.SOLIDUS || cp === $.GREATER_THAN_SIGN;\n}\n//Tokenizer\nexport class Tokenizer {\n    constructor(options, handler) {\n        this.options = options;\n        this.handler = handler;\n        this.paused = false;\n        /** Ensures that the parsing loop isn't run multiple times at once. */\n        this.inLoop = false;\n        /**\n         * Indicates that the current adjusted node exists, is not an element in the HTML namespace,\n         * and that it is not an integration point for either MathML or HTML.\n         *\n         * @see {@link https://html.spec.whatwg.org/multipage/parsing.html#tree-construction}\n         */\n        this.inForeignNode = false;\n        this.lastStartTagName = '';\n        this.active = false;\n        this.state = State.DATA;\n        this.returnState = State.DATA;\n        this.charRefCode = -1;\n        this.consumedAfterSnapshot = -1;\n        this.currentCharacterToken = null;\n        this.currentToken = null;\n        this.currentAttr = { name: '', value: '' };\n        this.preprocessor = new Preprocessor(handler);\n        this.currentLocation = this.getCurrentLocation(-1);\n    }\n    //Errors\n    _err(code) {\n        var _a, _b;\n        (_b = (_a = this.handler).onParseError) === null || _b === void 0 ? void 0 : _b.call(_a, this.preprocessor.getError(code));\n    }\n    // NOTE: `offset` may never run across line boundaries.\n    getCurrentLocation(offset) {\n        if (!this.options.sourceCodeLocationInfo) {\n            return null;\n        }\n        return {\n            startLine: this.preprocessor.line,\n            startCol: this.preprocessor.col - offset,\n            startOffset: this.preprocessor.offset - offset,\n            endLine: -1,\n            endCol: -1,\n            endOffset: -1,\n        };\n    }\n    _runParsingLoop() {\n        if (this.inLoop)\n            return;\n        this.inLoop = true;\n        while (this.active && !this.paused) {\n            this.consumedAfterSnapshot = 0;\n            const cp = this._consume();\n            if (!this._ensureHibernation()) {\n                this._callState(cp);\n            }\n        }\n        this.inLoop = false;\n    }\n    //API\n    pause() {\n        this.paused = true;\n    }\n    resume(writeCallback) {\n        if (!this.paused) {\n            throw new Error('Parser was already resumed');\n        }\n        this.paused = false;\n        // Necessary for synchronous resume.\n        if (this.inLoop)\n            return;\n        this._runParsingLoop();\n        if (!this.paused) {\n            writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n        }\n    }\n    write(chunk, isLastChunk, writeCallback) {\n        this.active = true;\n        this.preprocessor.write(chunk, isLastChunk);\n        this._runParsingLoop();\n        if (!this.paused) {\n            writeCallback === null || writeCallback === void 0 ? void 0 : writeCallback();\n        }\n    }\n    insertHtmlAtCurrentPos(chunk) {\n        this.active = true;\n        this.preprocessor.insertHtmlAtCurrentPos(chunk);\n        this._runParsingLoop();\n    }\n    //Hibernation\n    _ensureHibernation() {\n        if (this.preprocessor.endOfChunkHit) {\n            this._unconsume(this.consumedAfterSnapshot);\n            this.active = false;\n            return true;\n        }\n        return false;\n    }\n    //Consumption\n    _consume() {\n        this.consumedAfterSnapshot++;\n        return this.preprocessor.advance();\n    }\n    _unconsume(count) {\n        this.consumedAfterSnapshot -= count;\n        this.preprocessor.retreat(count);\n    }\n    _reconsumeInState(state, cp) {\n        this.state = state;\n        this._callState(cp);\n    }\n    _advanceBy(count) {\n        this.consumedAfterSnapshot += count;\n        for (let i = 0; i < count; i++) {\n            this.preprocessor.advance();\n        }\n    }\n    _consumeSequenceIfMatch(pattern, caseSensitive) {\n        if (this.preprocessor.startsWith(pattern, caseSensitive)) {\n            // We will already have consumed one character before calling this method.\n            this._advanceBy(pattern.length - 1);\n            return true;\n        }\n        return false;\n    }\n    //Token creation\n    _createStartTagToken() {\n        this.currentToken = {\n            type: TokenType.START_TAG,\n            tagName: '',\n            tagID: TAG_ID.UNKNOWN,\n            selfClosing: false,\n            ackSelfClosing: false,\n            attrs: [],\n            location: this.getCurrentLocation(1),\n        };\n    }\n    _createEndTagToken() {\n        this.currentToken = {\n            type: TokenType.END_TAG,\n            tagName: '',\n            tagID: TAG_ID.UNKNOWN,\n            selfClosing: false,\n            ackSelfClosing: false,\n            attrs: [],\n            location: this.getCurrentLocation(2),\n        };\n    }\n    _createCommentToken(offset) {\n        this.currentToken = {\n            type: TokenType.COMMENT,\n            data: '',\n            location: this.getCurrentLocation(offset),\n        };\n    }\n    _createDoctypeToken(initialName) {\n        this.currentToken = {\n            type: TokenType.DOCTYPE,\n            name: initialName,\n            forceQuirks: false,\n            publicId: null,\n            systemId: null,\n            location: this.currentLocation,\n        };\n    }\n    _createCharacterToken(type, chars) {\n        this.currentCharacterToken = {\n            type,\n            chars,\n            location: this.currentLocation,\n        };\n    }\n    //Tag attributes\n    _createAttr(attrNameFirstCh) {\n        this.currentAttr = {\n            name: attrNameFirstCh,\n            value: '',\n        };\n        this.currentLocation = this.getCurrentLocation(0);\n    }\n    _leaveAttrName() {\n        var _a;\n        var _b;\n        const token = this.currentToken;\n        if (getTokenAttr(token, this.currentAttr.name) === null) {\n            token.attrs.push(this.currentAttr);\n            if (token.location && this.currentLocation) {\n                const attrLocations = ((_a = (_b = token.location).attrs) !== null && _a !== void 0 ? _a : (_b.attrs = Object.create(null)));\n                attrLocations[this.currentAttr.name] = this.currentLocation;\n                // Set end location\n                this._leaveAttrValue();\n            }\n        }\n        else {\n            this._err(ERR.duplicateAttribute);\n        }\n    }\n    _leaveAttrValue() {\n        if (this.currentLocation) {\n            this.currentLocation.endLine = this.preprocessor.line;\n            this.currentLocation.endCol = this.preprocessor.col;\n            this.currentLocation.endOffset = this.preprocessor.offset;\n        }\n    }\n    //Token emission\n    prepareToken(ct) {\n        this._emitCurrentCharacterToken(ct.location);\n        this.currentToken = null;\n        if (ct.location) {\n            ct.location.endLine = this.preprocessor.line;\n            ct.location.endCol = this.preprocessor.col + 1;\n            ct.location.endOffset = this.preprocessor.offset + 1;\n        }\n        this.currentLocation = this.getCurrentLocation(-1);\n    }\n    emitCurrentTagToken() {\n        const ct = this.currentToken;\n        this.prepareToken(ct);\n        ct.tagID = getTagID(ct.tagName);\n        if (ct.type === TokenType.START_TAG) {\n            this.lastStartTagName = ct.tagName;\n            this.handler.onStartTag(ct);\n        }\n        else {\n            if (ct.attrs.length > 0) {\n                this._err(ERR.endTagWithAttributes);\n            }\n            if (ct.selfClosing) {\n                this._err(ERR.endTagWithTrailingSolidus);\n            }\n            this.handler.onEndTag(ct);\n        }\n        this.preprocessor.dropParsedChunk();\n    }\n    emitCurrentComment(ct) {\n        this.prepareToken(ct);\n        this.handler.onComment(ct);\n        this.preprocessor.dropParsedChunk();\n    }\n    emitCurrentDoctype(ct) {\n        this.prepareToken(ct);\n        this.handler.onDoctype(ct);\n        this.preprocessor.dropParsedChunk();\n    }\n    _emitCurrentCharacterToken(nextLocation) {\n        if (this.currentCharacterToken) {\n            //NOTE: if we have a pending character token, make it's end location equal to the\n            //current token's start location.\n            if (nextLocation && this.currentCharacterToken.location) {\n                this.currentCharacterToken.location.endLine = nextLocation.startLine;\n                this.currentCharacterToken.location.endCol = nextLocation.startCol;\n                this.currentCharacterToken.location.endOffset = nextLocation.startOffset;\n            }\n            switch (this.currentCharacterToken.type) {\n                case TokenType.CHARACTER: {\n                    this.handler.onCharacter(this.currentCharacterToken);\n                    break;\n                }\n                case TokenType.NULL_CHARACTER: {\n                    this.handler.onNullCharacter(this.currentCharacterToken);\n                    break;\n                }\n                case TokenType.WHITESPACE_CHARACTER: {\n                    this.handler.onWhitespaceCharacter(this.currentCharacterToken);\n                    break;\n                }\n            }\n            this.currentCharacterToken = null;\n        }\n    }\n    _emitEOFToken() {\n        const location = this.getCurrentLocation(0);\n        if (location) {\n            location.endLine = location.startLine;\n            location.endCol = location.startCol;\n            location.endOffset = location.startOffset;\n        }\n        this._emitCurrentCharacterToken(location);\n        this.handler.onEof({ type: TokenType.EOF, location });\n        this.active = false;\n    }\n    //Characters emission\n    //OPTIMIZATION: specification uses only one type of character tokens (one token per character).\n    //This causes a huge memory overhead and a lot of unnecessary parser loops. parse5 uses 3 groups of characters.\n    //If we have a sequence of characters that belong to the same group, the parser can process it\n    //as a single solid character token.\n    //So, there are 3 types of character tokens in parse5:\n    //1)TokenType.NULL_CHARACTER - \\u0000-character sequences (e.g. '\\u0000\\u0000\\u0000')\n    //2)TokenType.WHITESPACE_CHARACTER - any whitespace/new-line character sequences (e.g. '\\n  \\r\\t   \\f')\n    //3)TokenType.CHARACTER - any character sequence which don't belong to groups 1 and 2 (e.g. 'abcdef1234@@#$%^')\n    _appendCharToCurrentCharacterToken(type, ch) {\n        if (this.currentCharacterToken) {\n            if (this.currentCharacterToken.type !== type) {\n                this.currentLocation = this.getCurrentLocation(0);\n                this._emitCurrentCharacterToken(this.currentLocation);\n                this.preprocessor.dropParsedChunk();\n            }\n            else {\n                this.currentCharacterToken.chars += ch;\n                return;\n            }\n        }\n        this._createCharacterToken(type, ch);\n    }\n    _emitCodePoint(cp) {\n        const type = isWhitespace(cp)\n            ? TokenType.WHITESPACE_CHARACTER\n            : cp === $.NULL\n                ? TokenType.NULL_CHARACTER\n                : TokenType.CHARACTER;\n        this._appendCharToCurrentCharacterToken(type, String.fromCodePoint(cp));\n    }\n    //NOTE: used when we emit characters explicitly.\n    //This is always for non-whitespace and non-null characters, which allows us to avoid additional checks.\n    _emitChars(ch) {\n        this._appendCharToCurrentCharacterToken(TokenType.CHARACTER, ch);\n    }\n    // Character reference helpers\n    _matchNamedCharacterReference(cp) {\n        let result = null;\n        let excess = 0;\n        let withoutSemicolon = false;\n        for (let i = 0, current = htmlDecodeTree[0]; i >= 0; cp = this._consume()) {\n            i = determineBranch(htmlDecodeTree, current, i + 1, cp);\n            if (i < 0)\n                break;\n            excess += 1;\n            current = htmlDecodeTree[i];\n            const masked = current & BinTrieFlags.VALUE_LENGTH;\n            // If the branch is a value, store it and continue\n            if (masked) {\n                // The mask is the number of bytes of the value, including the current byte.\n                const valueLength = (masked >> 14) - 1;\n                // Attribute values that aren't terminated properly aren't parsed, and shouldn't lead to a parser error.\n                // See the example in https://html.spec.whatwg.org/multipage/parsing.html#named-character-reference-state\n                if (cp !== $.SEMICOLON &&\n                    this._isCharacterReferenceInAttribute() &&\n                    isEntityInAttributeInvalidEnd(this.preprocessor.peek(1))) {\n                    //NOTE: we don't flush all consumed code points here, and instead switch back to the original state after\n                    //emitting an ampersand. This is fine, as alphanumeric characters won't be parsed differently in attributes.\n                    result = [$.AMPERSAND];\n                    // Skip over the value.\n                    i += valueLength;\n                }\n                else {\n                    // If this is a surrogate pair, consume the next two bytes.\n                    result =\n                        valueLength === 0\n                            ? [htmlDecodeTree[i] & ~BinTrieFlags.VALUE_LENGTH]\n                            : valueLength === 1\n                                ? [htmlDecodeTree[++i]]\n                                : [htmlDecodeTree[++i], htmlDecodeTree[++i]];\n                    excess = 0;\n                    withoutSemicolon = cp !== $.SEMICOLON;\n                }\n                if (valueLength === 0) {\n                    // If the value is zero-length, we're done.\n                    this._consume();\n                    break;\n                }\n            }\n        }\n        this._unconsume(excess);\n        if (withoutSemicolon && !this.preprocessor.endOfChunkHit) {\n            this._err(ERR.missingSemicolonAfterCharacterReference);\n        }\n        // We want to emit the error above on the code point after the entity.\n        // We always consume one code point too many in the loop, and we wait to\n        // unconsume it until after the error is emitted.\n        this._unconsume(1);\n        return result;\n    }\n    _isCharacterReferenceInAttribute() {\n        return (this.returnState === State.ATTRIBUTE_VALUE_DOUBLE_QUOTED ||\n            this.returnState === State.ATTRIBUTE_VALUE_SINGLE_QUOTED ||\n            this.returnState === State.ATTRIBUTE_VALUE_UNQUOTED);\n    }\n    _flushCodePointConsumedAsCharacterReference(cp) {\n        if (this._isCharacterReferenceInAttribute()) {\n            this.currentAttr.value += String.fromCodePoint(cp);\n        }\n        else {\n            this._emitCodePoint(cp);\n        }\n    }\n    // Calling states this way turns out to be much faster than any other approach.\n    _callState(cp) {\n        switch (this.state) {\n            case State.DATA: {\n                this._stateData(cp);\n                break;\n            }\n            case State.RCDATA: {\n                this._stateRcdata(cp);\n                break;\n            }\n            case State.RAWTEXT: {\n                this._stateRawtext(cp);\n                break;\n            }\n            case State.SCRIPT_DATA: {\n                this._stateScriptData(cp);\n                break;\n            }\n            case State.PLAINTEXT: {\n                this._statePlaintext(cp);\n                break;\n            }\n            case State.TAG_OPEN: {\n                this._stateTagOpen(cp);\n                break;\n            }\n            case State.END_TAG_OPEN: {\n                this._stateEndTagOpen(cp);\n                break;\n            }\n            case State.TAG_NAME: {\n                this._stateTagName(cp);\n                break;\n            }\n            case State.RCDATA_LESS_THAN_SIGN: {\n                this._stateRcdataLessThanSign(cp);\n                break;\n            }\n            case State.RCDATA_END_TAG_OPEN: {\n                this._stateRcdataEndTagOpen(cp);\n                break;\n            }\n            case State.RCDATA_END_TAG_NAME: {\n                this._stateRcdataEndTagName(cp);\n                break;\n            }\n            case State.RAWTEXT_LESS_THAN_SIGN: {\n                this._stateRawtextLessThanSign(cp);\n                break;\n            }\n            case State.RAWTEXT_END_TAG_OPEN: {\n                this._stateRawtextEndTagOpen(cp);\n                break;\n            }\n            case State.RAWTEXT_END_TAG_NAME: {\n                this._stateRawtextEndTagName(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_LESS_THAN_SIGN: {\n                this._stateScriptDataLessThanSign(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_END_TAG_OPEN: {\n                this._stateScriptDataEndTagOpen(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_END_TAG_NAME: {\n                this._stateScriptDataEndTagName(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPE_START: {\n                this._stateScriptDataEscapeStart(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPE_START_DASH: {\n                this._stateScriptDataEscapeStartDash(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED: {\n                this._stateScriptDataEscaped(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED_DASH: {\n                this._stateScriptDataEscapedDash(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED_DASH_DASH: {\n                this._stateScriptDataEscapedDashDash(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN: {\n                this._stateScriptDataEscapedLessThanSign(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN: {\n                this._stateScriptDataEscapedEndTagOpen(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_ESCAPED_END_TAG_NAME: {\n                this._stateScriptDataEscapedEndTagName(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPE_START: {\n                this._stateScriptDataDoubleEscapeStart(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPED: {\n                this._stateScriptDataDoubleEscaped(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH: {\n                this._stateScriptDataDoubleEscapedDash(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH: {\n                this._stateScriptDataDoubleEscapedDashDash(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN: {\n                this._stateScriptDataDoubleEscapedLessThanSign(cp);\n                break;\n            }\n            case State.SCRIPT_DATA_DOUBLE_ESCAPE_END: {\n                this._stateScriptDataDoubleEscapeEnd(cp);\n                break;\n            }\n            case State.BEFORE_ATTRIBUTE_NAME: {\n                this._stateBeforeAttributeName(cp);\n                break;\n            }\n            case State.ATTRIBUTE_NAME: {\n                this._stateAttributeName(cp);\n                break;\n            }\n            case State.AFTER_ATTRIBUTE_NAME: {\n                this._stateAfterAttributeName(cp);\n                break;\n            }\n            case State.BEFORE_ATTRIBUTE_VALUE: {\n                this._stateBeforeAttributeValue(cp);\n                break;\n            }\n            case State.ATTRIBUTE_VALUE_DOUBLE_QUOTED: {\n                this._stateAttributeValueDoubleQuoted(cp);\n                break;\n            }\n            case State.ATTRIBUTE_VALUE_SINGLE_QUOTED: {\n                this._stateAttributeValueSingleQuoted(cp);\n                break;\n            }\n            case State.ATTRIBUTE_VALUE_UNQUOTED: {\n                this._stateAttributeValueUnquoted(cp);\n                break;\n            }\n            case State.AFTER_ATTRIBUTE_VALUE_QUOTED: {\n                this._stateAfterAttributeValueQuoted(cp);\n                break;\n            }\n            case State.SELF_CLOSING_START_TAG: {\n                this._stateSelfClosingStartTag(cp);\n                break;\n            }\n            case State.BOGUS_COMMENT: {\n                this._stateBogusComment(cp);\n                break;\n            }\n            case State.MARKUP_DECLARATION_OPEN: {\n                this._stateMarkupDeclarationOpen(cp);\n                break;\n            }\n            case State.COMMENT_START: {\n                this._stateCommentStart(cp);\n                break;\n            }\n            case State.COMMENT_START_DASH: {\n                this._stateCommentStartDash(cp);\n                break;\n            }\n            case State.COMMENT: {\n                this._stateComment(cp);\n                break;\n            }\n            case State.COMMENT_LESS_THAN_SIGN: {\n                this._stateCommentLessThanSign(cp);\n                break;\n            }\n            case State.COMMENT_LESS_THAN_SIGN_BANG: {\n                this._stateCommentLessThanSignBang(cp);\n                break;\n            }\n            case State.COMMENT_LESS_THAN_SIGN_BANG_DASH: {\n                this._stateCommentLessThanSignBangDash(cp);\n                break;\n            }\n            case State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH: {\n                this._stateCommentLessThanSignBangDashDash(cp);\n                break;\n            }\n            case State.COMMENT_END_DASH: {\n                this._stateCommentEndDash(cp);\n                break;\n            }\n            case State.COMMENT_END: {\n                this._stateCommentEnd(cp);\n                break;\n            }\n            case State.COMMENT_END_BANG: {\n                this._stateCommentEndBang(cp);\n                break;\n            }\n            case State.DOCTYPE: {\n                this._stateDoctype(cp);\n                break;\n            }\n            case State.BEFORE_DOCTYPE_NAME: {\n                this._stateBeforeDoctypeName(cp);\n                break;\n            }\n            case State.DOCTYPE_NAME: {\n                this._stateDoctypeName(cp);\n                break;\n            }\n            case State.AFTER_DOCTYPE_NAME: {\n                this._stateAfterDoctypeName(cp);\n                break;\n            }\n            case State.AFTER_DOCTYPE_PUBLIC_KEYWORD: {\n                this._stateAfterDoctypePublicKeyword(cp);\n                break;\n            }\n            case State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER: {\n                this._stateBeforeDoctypePublicIdentifier(cp);\n                break;\n            }\n            case State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED: {\n                this._stateDoctypePublicIdentifierDoubleQuoted(cp);\n                break;\n            }\n            case State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED: {\n                this._stateDoctypePublicIdentifierSingleQuoted(cp);\n                break;\n            }\n            case State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER: {\n                this._stateAfterDoctypePublicIdentifier(cp);\n                break;\n            }\n            case State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS: {\n                this._stateBetweenDoctypePublicAndSystemIdentifiers(cp);\n                break;\n            }\n            case State.AFTER_DOCTYPE_SYSTEM_KEYWORD: {\n                this._stateAfterDoctypeSystemKeyword(cp);\n                break;\n            }\n            case State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER: {\n                this._stateBeforeDoctypeSystemIdentifier(cp);\n                break;\n            }\n            case State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED: {\n                this._stateDoctypeSystemIdentifierDoubleQuoted(cp);\n                break;\n            }\n            case State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED: {\n                this._stateDoctypeSystemIdentifierSingleQuoted(cp);\n                break;\n            }\n            case State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER: {\n                this._stateAfterDoctypeSystemIdentifier(cp);\n                break;\n            }\n            case State.BOGUS_DOCTYPE: {\n                this._stateBogusDoctype(cp);\n                break;\n            }\n            case State.CDATA_SECTION: {\n                this._stateCdataSection(cp);\n                break;\n            }\n            case State.CDATA_SECTION_BRACKET: {\n                this._stateCdataSectionBracket(cp);\n                break;\n            }\n            case State.CDATA_SECTION_END: {\n                this._stateCdataSectionEnd(cp);\n                break;\n            }\n            case State.CHARACTER_REFERENCE: {\n                this._stateCharacterReference(cp);\n                break;\n            }\n            case State.NAMED_CHARACTER_REFERENCE: {\n                this._stateNamedCharacterReference(cp);\n                break;\n            }\n            case State.AMBIGUOUS_AMPERSAND: {\n                this._stateAmbiguousAmpersand(cp);\n                break;\n            }\n            case State.NUMERIC_CHARACTER_REFERENCE: {\n                this._stateNumericCharacterReference(cp);\n                break;\n            }\n            case State.HEXADEMICAL_CHARACTER_REFERENCE_START: {\n                this._stateHexademicalCharacterReferenceStart(cp);\n                break;\n            }\n            case State.HEXADEMICAL_CHARACTER_REFERENCE: {\n                this._stateHexademicalCharacterReference(cp);\n                break;\n            }\n            case State.DECIMAL_CHARACTER_REFERENCE: {\n                this._stateDecimalCharacterReference(cp);\n                break;\n            }\n            case State.NUMERIC_CHARACTER_REFERENCE_END: {\n                this._stateNumericCharacterReferenceEnd(cp);\n                break;\n            }\n            default: {\n                throw new Error('Unknown state');\n            }\n        }\n    }\n    // State machine\n    // Data state\n    //------------------------------------------------------------------\n    _stateData(cp) {\n        switch (cp) {\n            case $.LESS_THAN_SIGN: {\n                this.state = State.TAG_OPEN;\n                break;\n            }\n            case $.AMPERSAND: {\n                this.returnState = State.DATA;\n                this.state = State.CHARACTER_REFERENCE;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitCodePoint(cp);\n                break;\n            }\n            case $.EOF: {\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    //  RCDATA state\n    //------------------------------------------------------------------\n    _stateRcdata(cp) {\n        switch (cp) {\n            case $.AMPERSAND: {\n                this.returnState = State.RCDATA;\n                this.state = State.CHARACTER_REFERENCE;\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                this.state = State.RCDATA_LESS_THAN_SIGN;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // RAWTEXT state\n    //------------------------------------------------------------------\n    _stateRawtext(cp) {\n        switch (cp) {\n            case $.LESS_THAN_SIGN: {\n                this.state = State.RAWTEXT_LESS_THAN_SIGN;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data state\n    //------------------------------------------------------------------\n    _stateScriptData(cp) {\n        switch (cp) {\n            case $.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_LESS_THAN_SIGN;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // PLAINTEXT state\n    //------------------------------------------------------------------\n    _statePlaintext(cp) {\n        switch (cp) {\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Tag open state\n    //------------------------------------------------------------------\n    _stateTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this._createStartTagToken();\n            this.state = State.TAG_NAME;\n            this._stateTagName(cp);\n        }\n        else\n            switch (cp) {\n                case $.EXCLAMATION_MARK: {\n                    this.state = State.MARKUP_DECLARATION_OPEN;\n                    break;\n                }\n                case $.SOLIDUS: {\n                    this.state = State.END_TAG_OPEN;\n                    break;\n                }\n                case $.QUESTION_MARK: {\n                    this._err(ERR.unexpectedQuestionMarkInsteadOfTagName);\n                    this._createCommentToken(1);\n                    this.state = State.BOGUS_COMMENT;\n                    this._stateBogusComment(cp);\n                    break;\n                }\n                case $.EOF: {\n                    this._err(ERR.eofBeforeTagName);\n                    this._emitChars('<');\n                    this._emitEOFToken();\n                    break;\n                }\n                default: {\n                    this._err(ERR.invalidFirstCharacterOfTagName);\n                    this._emitChars('<');\n                    this.state = State.DATA;\n                    this._stateData(cp);\n                }\n            }\n    }\n    // End tag open state\n    //------------------------------------------------------------------\n    _stateEndTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this._createEndTagToken();\n            this.state = State.TAG_NAME;\n            this._stateTagName(cp);\n        }\n        else\n            switch (cp) {\n                case $.GREATER_THAN_SIGN: {\n                    this._err(ERR.missingEndTagName);\n                    this.state = State.DATA;\n                    break;\n                }\n                case $.EOF: {\n                    this._err(ERR.eofBeforeTagName);\n                    this._emitChars('</');\n                    this._emitEOFToken();\n                    break;\n                }\n                default: {\n                    this._err(ERR.invalidFirstCharacterOfTagName);\n                    this._createCommentToken(2);\n                    this.state = State.BOGUS_COMMENT;\n                    this._stateBogusComment(cp);\n                }\n            }\n    }\n    // Tag name state\n    //------------------------------------------------------------------\n    _stateTagName(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                break;\n            }\n            case $.SOLIDUS: {\n                this.state = State.SELF_CLOSING_START_TAG;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.tagName += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.tagName += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n            }\n        }\n    }\n    // RCDATA less-than sign state\n    //------------------------------------------------------------------\n    _stateRcdataLessThanSign(cp) {\n        if (cp === $.SOLIDUS) {\n            this.state = State.RCDATA_END_TAG_OPEN;\n        }\n        else {\n            this._emitChars('<');\n            this.state = State.RCDATA;\n            this._stateRcdata(cp);\n        }\n    }\n    // RCDATA end tag open state\n    //------------------------------------------------------------------\n    _stateRcdataEndTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this.state = State.RCDATA_END_TAG_NAME;\n            this._stateRcdataEndTagName(cp);\n        }\n        else {\n            this._emitChars('</');\n            this.state = State.RCDATA;\n            this._stateRcdata(cp);\n        }\n    }\n    handleSpecialEndTag(_cp) {\n        if (!this.preprocessor.startsWith(this.lastStartTagName, false)) {\n            return !this._ensureHibernation();\n        }\n        this._createEndTagToken();\n        const token = this.currentToken;\n        token.tagName = this.lastStartTagName;\n        const cp = this.preprocessor.peek(this.lastStartTagName.length);\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this._advanceBy(this.lastStartTagName.length);\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                return false;\n            }\n            case $.SOLIDUS: {\n                this._advanceBy(this.lastStartTagName.length);\n                this.state = State.SELF_CLOSING_START_TAG;\n                return false;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._advanceBy(this.lastStartTagName.length);\n                this.emitCurrentTagToken();\n                this.state = State.DATA;\n                return false;\n            }\n            default: {\n                return !this._ensureHibernation();\n            }\n        }\n    }\n    // RCDATA end tag name state\n    //------------------------------------------------------------------\n    _stateRcdataEndTagName(cp) {\n        if (this.handleSpecialEndTag(cp)) {\n            this._emitChars('</');\n            this.state = State.RCDATA;\n            this._stateRcdata(cp);\n        }\n    }\n    // RAWTEXT less-than sign state\n    //------------------------------------------------------------------\n    _stateRawtextLessThanSign(cp) {\n        if (cp === $.SOLIDUS) {\n            this.state = State.RAWTEXT_END_TAG_OPEN;\n        }\n        else {\n            this._emitChars('<');\n            this.state = State.RAWTEXT;\n            this._stateRawtext(cp);\n        }\n    }\n    // RAWTEXT end tag open state\n    //------------------------------------------------------------------\n    _stateRawtextEndTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this.state = State.RAWTEXT_END_TAG_NAME;\n            this._stateRawtextEndTagName(cp);\n        }\n        else {\n            this._emitChars('</');\n            this.state = State.RAWTEXT;\n            this._stateRawtext(cp);\n        }\n    }\n    // RAWTEXT end tag name state\n    //------------------------------------------------------------------\n    _stateRawtextEndTagName(cp) {\n        if (this.handleSpecialEndTag(cp)) {\n            this._emitChars('</');\n            this.state = State.RAWTEXT;\n            this._stateRawtext(cp);\n        }\n    }\n    // Script data less-than sign state\n    //------------------------------------------------------------------\n    _stateScriptDataLessThanSign(cp) {\n        switch (cp) {\n            case $.SOLIDUS: {\n                this.state = State.SCRIPT_DATA_END_TAG_OPEN;\n                break;\n            }\n            case $.EXCLAMATION_MARK: {\n                this.state = State.SCRIPT_DATA_ESCAPE_START;\n                this._emitChars('<!');\n                break;\n            }\n            default: {\n                this._emitChars('<');\n                this.state = State.SCRIPT_DATA;\n                this._stateScriptData(cp);\n            }\n        }\n    }\n    // Script data end tag open state\n    //------------------------------------------------------------------\n    _stateScriptDataEndTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this.state = State.SCRIPT_DATA_END_TAG_NAME;\n            this._stateScriptDataEndTagName(cp);\n        }\n        else {\n            this._emitChars('</');\n            this.state = State.SCRIPT_DATA;\n            this._stateScriptData(cp);\n        }\n    }\n    // Script data end tag name state\n    //------------------------------------------------------------------\n    _stateScriptDataEndTagName(cp) {\n        if (this.handleSpecialEndTag(cp)) {\n            this._emitChars('</');\n            this.state = State.SCRIPT_DATA;\n            this._stateScriptData(cp);\n        }\n    }\n    // Script data escape start state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapeStart(cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = State.SCRIPT_DATA_ESCAPE_START_DASH;\n            this._emitChars('-');\n        }\n        else {\n            this.state = State.SCRIPT_DATA;\n            this._stateScriptData(cp);\n        }\n    }\n    // Script data escape start dash state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapeStartDash(cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n            this._emitChars('-');\n        }\n        else {\n            this.state = State.SCRIPT_DATA;\n            this._stateScriptData(cp);\n        }\n    }\n    // Script data escaped state\n    //------------------------------------------------------------------\n    _stateScriptDataEscaped(cp) {\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.SCRIPT_DATA_ESCAPED_DASH;\n                this._emitChars('-');\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data escaped dash state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapedDash(cp) {\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.SCRIPT_DATA_ESCAPED_DASH_DASH;\n                this._emitChars('-');\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.state = State.SCRIPT_DATA_ESCAPED;\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.state = State.SCRIPT_DATA_ESCAPED;\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data escaped dash dash state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapedDashDash(cp) {\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this._emitChars('-');\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_ESCAPED_LESS_THAN_SIGN;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA;\n                this._emitChars('>');\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.state = State.SCRIPT_DATA_ESCAPED;\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.state = State.SCRIPT_DATA_ESCAPED;\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data escaped less-than sign state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapedLessThanSign(cp) {\n        if (cp === $.SOLIDUS) {\n            this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_OPEN;\n        }\n        else if (isAsciiLetter(cp)) {\n            this._emitChars('<');\n            this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_START;\n            this._stateScriptDataDoubleEscapeStart(cp);\n        }\n        else {\n            this._emitChars('<');\n            this.state = State.SCRIPT_DATA_ESCAPED;\n            this._stateScriptDataEscaped(cp);\n        }\n    }\n    // Script data escaped end tag open state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapedEndTagOpen(cp) {\n        if (isAsciiLetter(cp)) {\n            this.state = State.SCRIPT_DATA_ESCAPED_END_TAG_NAME;\n            this._stateScriptDataEscapedEndTagName(cp);\n        }\n        else {\n            this._emitChars('</');\n            this.state = State.SCRIPT_DATA_ESCAPED;\n            this._stateScriptDataEscaped(cp);\n        }\n    }\n    // Script data escaped end tag name state\n    //------------------------------------------------------------------\n    _stateScriptDataEscapedEndTagName(cp) {\n        if (this.handleSpecialEndTag(cp)) {\n            this._emitChars('</');\n            this.state = State.SCRIPT_DATA_ESCAPED;\n            this._stateScriptDataEscaped(cp);\n        }\n    }\n    // Script data double escape start state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscapeStart(cp) {\n        if (this.preprocessor.startsWith($$.SCRIPT, false) &&\n            isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek($$.SCRIPT.length))) {\n            this._emitCodePoint(cp);\n            for (let i = 0; i < $$.SCRIPT.length; i++) {\n                this._emitCodePoint(this._consume());\n            }\n            this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n        }\n        else if (!this._ensureHibernation()) {\n            this.state = State.SCRIPT_DATA_ESCAPED;\n            this._stateScriptDataEscaped(cp);\n        }\n    }\n    // Script data double escaped state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscaped(cp) {\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH;\n                this._emitChars('-');\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n                this._emitChars('<');\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data double escaped dash state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscapedDash(cp) {\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_DASH_DASH;\n                this._emitChars('-');\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n                this._emitChars('<');\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data double escaped dash dash state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscapedDashDash(cp) {\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this._emitChars('-');\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED_LESS_THAN_SIGN;\n                this._emitChars('<');\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.SCRIPT_DATA;\n                this._emitChars('>');\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n                this._emitChars(REPLACEMENT_CHARACTER);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInScriptHtmlCommentLikeText);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // Script data double escaped less-than sign state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscapedLessThanSign(cp) {\n        if (cp === $.SOLIDUS) {\n            this.state = State.SCRIPT_DATA_DOUBLE_ESCAPE_END;\n            this._emitChars('/');\n        }\n        else {\n            this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n            this._stateScriptDataDoubleEscaped(cp);\n        }\n    }\n    // Script data double escape end state\n    //------------------------------------------------------------------\n    _stateScriptDataDoubleEscapeEnd(cp) {\n        if (this.preprocessor.startsWith($$.SCRIPT, false) &&\n            isScriptDataDoubleEscapeSequenceEnd(this.preprocessor.peek($$.SCRIPT.length))) {\n            this._emitCodePoint(cp);\n            for (let i = 0; i < $$.SCRIPT.length; i++) {\n                this._emitCodePoint(this._consume());\n            }\n            this.state = State.SCRIPT_DATA_ESCAPED;\n        }\n        else if (!this._ensureHibernation()) {\n            this.state = State.SCRIPT_DATA_DOUBLE_ESCAPED;\n            this._stateScriptDataDoubleEscaped(cp);\n        }\n    }\n    // Before attribute name state\n    //------------------------------------------------------------------\n    _stateBeforeAttributeName(cp) {\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.SOLIDUS:\n            case $.GREATER_THAN_SIGN:\n            case $.EOF: {\n                this.state = State.AFTER_ATTRIBUTE_NAME;\n                this._stateAfterAttributeName(cp);\n                break;\n            }\n            case $.EQUALS_SIGN: {\n                this._err(ERR.unexpectedEqualsSignBeforeAttributeName);\n                this._createAttr('=');\n                this.state = State.ATTRIBUTE_NAME;\n                break;\n            }\n            default: {\n                this._createAttr('');\n                this.state = State.ATTRIBUTE_NAME;\n                this._stateAttributeName(cp);\n            }\n        }\n    }\n    // Attribute name state\n    //------------------------------------------------------------------\n    _stateAttributeName(cp) {\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED:\n            case $.SOLIDUS:\n            case $.GREATER_THAN_SIGN:\n            case $.EOF: {\n                this._leaveAttrName();\n                this.state = State.AFTER_ATTRIBUTE_NAME;\n                this._stateAfterAttributeName(cp);\n                break;\n            }\n            case $.EQUALS_SIGN: {\n                this._leaveAttrName();\n                this.state = State.BEFORE_ATTRIBUTE_VALUE;\n                break;\n            }\n            case $.QUOTATION_MARK:\n            case $.APOSTROPHE:\n            case $.LESS_THAN_SIGN: {\n                this._err(ERR.unexpectedCharacterInAttributeName);\n                this.currentAttr.name += String.fromCodePoint(cp);\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.currentAttr.name += REPLACEMENT_CHARACTER;\n                break;\n            }\n            default: {\n                this.currentAttr.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n            }\n        }\n    }\n    // After attribute name state\n    //------------------------------------------------------------------\n    _stateAfterAttributeName(cp) {\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.SOLIDUS: {\n                this.state = State.SELF_CLOSING_START_TAG;\n                break;\n            }\n            case $.EQUALS_SIGN: {\n                this.state = State.BEFORE_ATTRIBUTE_VALUE;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._createAttr('');\n                this.state = State.ATTRIBUTE_NAME;\n                this._stateAttributeName(cp);\n            }\n        }\n    }\n    // Before attribute value state\n    //------------------------------------------------------------------\n    _stateBeforeAttributeValue(cp) {\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.QUOTATION_MARK: {\n                this.state = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED;\n                break;\n            }\n            case $.APOSTROPHE: {\n                this.state = State.ATTRIBUTE_VALUE_SINGLE_QUOTED;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.missingAttributeValue);\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            default: {\n                this.state = State.ATTRIBUTE_VALUE_UNQUOTED;\n                this._stateAttributeValueUnquoted(cp);\n            }\n        }\n    }\n    // Attribute value (double-quoted) state\n    //------------------------------------------------------------------\n    _stateAttributeValueDoubleQuoted(cp) {\n        switch (cp) {\n            case $.QUOTATION_MARK: {\n                this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n                break;\n            }\n            case $.AMPERSAND: {\n                this.returnState = State.ATTRIBUTE_VALUE_DOUBLE_QUOTED;\n                this.state = State.CHARACTER_REFERENCE;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.currentAttr.value += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.currentAttr.value += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // Attribute value (single-quoted) state\n    //------------------------------------------------------------------\n    _stateAttributeValueSingleQuoted(cp) {\n        switch (cp) {\n            case $.APOSTROPHE: {\n                this.state = State.AFTER_ATTRIBUTE_VALUE_QUOTED;\n                break;\n            }\n            case $.AMPERSAND: {\n                this.returnState = State.ATTRIBUTE_VALUE_SINGLE_QUOTED;\n                this.state = State.CHARACTER_REFERENCE;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.currentAttr.value += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.currentAttr.value += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // Attribute value (unquoted) state\n    //------------------------------------------------------------------\n    _stateAttributeValueUnquoted(cp) {\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this._leaveAttrValue();\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                break;\n            }\n            case $.AMPERSAND: {\n                this.returnState = State.ATTRIBUTE_VALUE_UNQUOTED;\n                this.state = State.CHARACTER_REFERENCE;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._leaveAttrValue();\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                this.currentAttr.value += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.QUOTATION_MARK:\n            case $.APOSTROPHE:\n            case $.LESS_THAN_SIGN:\n            case $.EQUALS_SIGN:\n            case $.GRAVE_ACCENT: {\n                this._err(ERR.unexpectedCharacterInUnquotedAttributeValue);\n                this.currentAttr.value += String.fromCodePoint(cp);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this.currentAttr.value += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // After attribute value (quoted) state\n    //------------------------------------------------------------------\n    _stateAfterAttributeValueQuoted(cp) {\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this._leaveAttrValue();\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                break;\n            }\n            case $.SOLIDUS: {\n                this._leaveAttrValue();\n                this.state = State.SELF_CLOSING_START_TAG;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._leaveAttrValue();\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingWhitespaceBetweenAttributes);\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                this._stateBeforeAttributeName(cp);\n            }\n        }\n    }\n    // Self-closing start tag state\n    //------------------------------------------------------------------\n    _stateSelfClosingStartTag(cp) {\n        switch (cp) {\n            case $.GREATER_THAN_SIGN: {\n                const token = this.currentToken;\n                token.selfClosing = true;\n                this.state = State.DATA;\n                this.emitCurrentTagToken();\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInTag);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.unexpectedSolidusInTag);\n                this.state = State.BEFORE_ATTRIBUTE_NAME;\n                this._stateBeforeAttributeName(cp);\n            }\n        }\n    }\n    // Bogus comment state\n    //------------------------------------------------------------------\n    _stateBogusComment(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentComment(token);\n                break;\n            }\n            case $.EOF: {\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.data += REPLACEMENT_CHARACTER;\n                break;\n            }\n            default: {\n                token.data += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // Markup declaration open state\n    //------------------------------------------------------------------\n    _stateMarkupDeclarationOpen(cp) {\n        if (this._consumeSequenceIfMatch($$.DASH_DASH, true)) {\n            this._createCommentToken($$.DASH_DASH.length + 1);\n            this.state = State.COMMENT_START;\n        }\n        else if (this._consumeSequenceIfMatch($$.DOCTYPE, false)) {\n            // NOTE: Doctypes tokens are created without fixed offsets. We keep track of the moment a doctype *might* start here.\n            this.currentLocation = this.getCurrentLocation($$.DOCTYPE.length + 1);\n            this.state = State.DOCTYPE;\n        }\n        else if (this._consumeSequenceIfMatch($$.CDATA_START, true)) {\n            if (this.inForeignNode) {\n                this.state = State.CDATA_SECTION;\n            }\n            else {\n                this._err(ERR.cdataInHtmlContent);\n                this._createCommentToken($$.CDATA_START.length + 1);\n                this.currentToken.data = '[CDATA[';\n                this.state = State.BOGUS_COMMENT;\n            }\n        }\n        //NOTE: Sequence lookups can be abrupted by hibernation. In that case, lookup\n        //results are no longer valid and we will need to start over.\n        else if (!this._ensureHibernation()) {\n            this._err(ERR.incorrectlyOpenedComment);\n            this._createCommentToken(2);\n            this.state = State.BOGUS_COMMENT;\n            this._stateBogusComment(cp);\n        }\n    }\n    // Comment start state\n    //------------------------------------------------------------------\n    _stateCommentStart(cp) {\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.COMMENT_START_DASH;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptClosingOfEmptyComment);\n                this.state = State.DATA;\n                const token = this.currentToken;\n                this.emitCurrentComment(token);\n                break;\n            }\n            default: {\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // Comment start dash state\n    //------------------------------------------------------------------\n    _stateCommentStartDash(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.COMMENT_END;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptClosingOfEmptyComment);\n                this.state = State.DATA;\n                this.emitCurrentComment(token);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInComment);\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.data += '-';\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // Comment state\n    //------------------------------------------------------------------\n    _stateComment(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.COMMENT_END_DASH;\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                token.data += '<';\n                this.state = State.COMMENT_LESS_THAN_SIGN;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.data += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInComment);\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.data += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // Comment less-than sign state\n    //------------------------------------------------------------------\n    _stateCommentLessThanSign(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.EXCLAMATION_MARK: {\n                token.data += '!';\n                this.state = State.COMMENT_LESS_THAN_SIGN_BANG;\n                break;\n            }\n            case $.LESS_THAN_SIGN: {\n                token.data += '<';\n                break;\n            }\n            default: {\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // Comment less-than sign bang state\n    //------------------------------------------------------------------\n    _stateCommentLessThanSignBang(cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH;\n        }\n        else {\n            this.state = State.COMMENT;\n            this._stateComment(cp);\n        }\n    }\n    // Comment less-than sign bang dash state\n    //------------------------------------------------------------------\n    _stateCommentLessThanSignBangDash(cp) {\n        if (cp === $.HYPHEN_MINUS) {\n            this.state = State.COMMENT_LESS_THAN_SIGN_BANG_DASH_DASH;\n        }\n        else {\n            this.state = State.COMMENT_END_DASH;\n            this._stateCommentEndDash(cp);\n        }\n    }\n    // Comment less-than sign bang dash dash state\n    //------------------------------------------------------------------\n    _stateCommentLessThanSignBangDashDash(cp) {\n        if (cp !== $.GREATER_THAN_SIGN && cp !== $.EOF) {\n            this._err(ERR.nestedComment);\n        }\n        this.state = State.COMMENT_END;\n        this._stateCommentEnd(cp);\n    }\n    // Comment end dash state\n    //------------------------------------------------------------------\n    _stateCommentEndDash(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                this.state = State.COMMENT_END;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInComment);\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.data += '-';\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // Comment end state\n    //------------------------------------------------------------------\n    _stateCommentEnd(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentComment(token);\n                break;\n            }\n            case $.EXCLAMATION_MARK: {\n                this.state = State.COMMENT_END_BANG;\n                break;\n            }\n            case $.HYPHEN_MINUS: {\n                token.data += '-';\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInComment);\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.data += '--';\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // Comment end bang state\n    //------------------------------------------------------------------\n    _stateCommentEndBang(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.HYPHEN_MINUS: {\n                token.data += '--!';\n                this.state = State.COMMENT_END_DASH;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.incorrectlyClosedComment);\n                this.state = State.DATA;\n                this.emitCurrentComment(token);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInComment);\n                this.emitCurrentComment(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.data += '--!';\n                this.state = State.COMMENT;\n                this._stateComment(cp);\n            }\n        }\n    }\n    // DOCTYPE state\n    //------------------------------------------------------------------\n    _stateDoctype(cp) {\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this.state = State.BEFORE_DOCTYPE_NAME;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.BEFORE_DOCTYPE_NAME;\n                this._stateBeforeDoctypeName(cp);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                this._createDoctypeToken(null);\n                const token = this.currentToken;\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingWhitespaceBeforeDoctypeName);\n                this.state = State.BEFORE_DOCTYPE_NAME;\n                this._stateBeforeDoctypeName(cp);\n            }\n        }\n    }\n    // Before DOCTYPE name state\n    //------------------------------------------------------------------\n    _stateBeforeDoctypeName(cp) {\n        if (isAsciiUpper(cp)) {\n            this._createDoctypeToken(String.fromCharCode(toAsciiLower(cp)));\n            this.state = State.DOCTYPE_NAME;\n        }\n        else\n            switch (cp) {\n                case $.SPACE:\n                case $.LINE_FEED:\n                case $.TABULATION:\n                case $.FORM_FEED: {\n                    // Ignore whitespace\n                    break;\n                }\n                case $.NULL: {\n                    this._err(ERR.unexpectedNullCharacter);\n                    this._createDoctypeToken(REPLACEMENT_CHARACTER);\n                    this.state = State.DOCTYPE_NAME;\n                    break;\n                }\n                case $.GREATER_THAN_SIGN: {\n                    this._err(ERR.missingDoctypeName);\n                    this._createDoctypeToken(null);\n                    const token = this.currentToken;\n                    token.forceQuirks = true;\n                    this.emitCurrentDoctype(token);\n                    this.state = State.DATA;\n                    break;\n                }\n                case $.EOF: {\n                    this._err(ERR.eofInDoctype);\n                    this._createDoctypeToken(null);\n                    const token = this.currentToken;\n                    token.forceQuirks = true;\n                    this.emitCurrentDoctype(token);\n                    this._emitEOFToken();\n                    break;\n                }\n                default: {\n                    this._createDoctypeToken(String.fromCodePoint(cp));\n                    this.state = State.DOCTYPE_NAME;\n                }\n            }\n    }\n    // DOCTYPE name state\n    //------------------------------------------------------------------\n    _stateDoctypeName(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this.state = State.AFTER_DOCTYPE_NAME;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.name += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.name += String.fromCodePoint(isAsciiUpper(cp) ? toAsciiLower(cp) : cp);\n            }\n        }\n    }\n    // After DOCTYPE name state\n    //------------------------------------------------------------------\n    _stateAfterDoctypeName(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                if (this._consumeSequenceIfMatch($$.PUBLIC, false)) {\n                    this.state = State.AFTER_DOCTYPE_PUBLIC_KEYWORD;\n                }\n                else if (this._consumeSequenceIfMatch($$.SYSTEM, false)) {\n                    this.state = State.AFTER_DOCTYPE_SYSTEM_KEYWORD;\n                }\n                //NOTE: sequence lookup can be abrupted by hibernation. In that case lookup\n                //results are no longer valid and we will need to start over.\n                else if (!this._ensureHibernation()) {\n                    this._err(ERR.invalidCharacterSequenceAfterDoctypeName);\n                    token.forceQuirks = true;\n                    this.state = State.BOGUS_DOCTYPE;\n                    this._stateBogusDoctype(cp);\n                }\n            }\n        }\n    }\n    // After DOCTYPE public keyword state\n    //------------------------------------------------------------------\n    _stateAfterDoctypePublicKeyword(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this.state = State.BEFORE_DOCTYPE_PUBLIC_IDENTIFIER;\n                break;\n            }\n            case $.QUOTATION_MARK: {\n                this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n                token.publicId = '';\n                this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case $.APOSTROPHE: {\n                this._err(ERR.missingWhitespaceAfterDoctypePublicKeyword);\n                token.publicId = '';\n                this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.missingDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // Before DOCTYPE public identifier state\n    //------------------------------------------------------------------\n    _stateBeforeDoctypePublicIdentifier(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.QUOTATION_MARK: {\n                token.publicId = '';\n                this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case $.APOSTROPHE: {\n                token.publicId = '';\n                this.state = State.DOCTYPE_PUBLIC_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.missingDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // DOCTYPE public identifier (double-quoted) state\n    //------------------------------------------------------------------\n    _stateDoctypePublicIdentifierDoubleQuoted(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.QUOTATION_MARK: {\n                this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.publicId += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.publicId += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // DOCTYPE public identifier (single-quoted) state\n    //------------------------------------------------------------------\n    _stateDoctypePublicIdentifierSingleQuoted(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.APOSTROPHE: {\n                this.state = State.AFTER_DOCTYPE_PUBLIC_IDENTIFIER;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.publicId += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptDoctypePublicIdentifier);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.publicId += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // After DOCTYPE public identifier state\n    //------------------------------------------------------------------\n    _stateAfterDoctypePublicIdentifier(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this.state = State.BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case $.QUOTATION_MARK: {\n                this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case $.APOSTROPHE: {\n                this._err(ERR.missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers);\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // Between DOCTYPE public and system identifiers state\n    //------------------------------------------------------------------\n    _stateBetweenDoctypePublicAndSystemIdentifiers(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case $.QUOTATION_MARK: {\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case $.APOSTROPHE: {\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // After DOCTYPE system keyword state\n    //------------------------------------------------------------------\n    _stateAfterDoctypeSystemKeyword(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                this.state = State.BEFORE_DOCTYPE_SYSTEM_IDENTIFIER;\n                break;\n            }\n            case $.QUOTATION_MARK: {\n                this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case $.APOSTROPHE: {\n                this._err(ERR.missingWhitespaceAfterDoctypeSystemKeyword);\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.missingDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // Before DOCTYPE system identifier state\n    //------------------------------------------------------------------\n    _stateBeforeDoctypeSystemIdentifier(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.QUOTATION_MARK: {\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_DOUBLE_QUOTED;\n                break;\n            }\n            case $.APOSTROPHE: {\n                token.systemId = '';\n                this.state = State.DOCTYPE_SYSTEM_IDENTIFIER_SINGLE_QUOTED;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.missingDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.DATA;\n                this.emitCurrentDoctype(token);\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.missingQuoteBeforeDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // DOCTYPE system identifier (double-quoted) state\n    //------------------------------------------------------------------\n    _stateDoctypeSystemIdentifierDoubleQuoted(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.QUOTATION_MARK: {\n                this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.systemId += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.systemId += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // DOCTYPE system identifier (single-quoted) state\n    //------------------------------------------------------------------\n    _stateDoctypeSystemIdentifierSingleQuoted(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.APOSTROPHE: {\n                this.state = State.AFTER_DOCTYPE_SYSTEM_IDENTIFIER;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                token.systemId += REPLACEMENT_CHARACTER;\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this._err(ERR.abruptDoctypeSystemIdentifier);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                token.systemId += String.fromCodePoint(cp);\n            }\n        }\n    }\n    // After DOCTYPE system identifier state\n    //------------------------------------------------------------------\n    _stateAfterDoctypeSystemIdentifier(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.SPACE:\n            case $.LINE_FEED:\n            case $.TABULATION:\n            case $.FORM_FEED: {\n                // Ignore whitespace\n                break;\n            }\n            case $.GREATER_THAN_SIGN: {\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInDoctype);\n                token.forceQuirks = true;\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._err(ERR.unexpectedCharacterAfterDoctypeSystemIdentifier);\n                this.state = State.BOGUS_DOCTYPE;\n                this._stateBogusDoctype(cp);\n            }\n        }\n    }\n    // Bogus DOCTYPE state\n    //------------------------------------------------------------------\n    _stateBogusDoctype(cp) {\n        const token = this.currentToken;\n        switch (cp) {\n            case $.GREATER_THAN_SIGN: {\n                this.emitCurrentDoctype(token);\n                this.state = State.DATA;\n                break;\n            }\n            case $.NULL: {\n                this._err(ERR.unexpectedNullCharacter);\n                break;\n            }\n            case $.EOF: {\n                this.emitCurrentDoctype(token);\n                this._emitEOFToken();\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    // CDATA section state\n    //------------------------------------------------------------------\n    _stateCdataSection(cp) {\n        switch (cp) {\n            case $.RIGHT_SQUARE_BRACKET: {\n                this.state = State.CDATA_SECTION_BRACKET;\n                break;\n            }\n            case $.EOF: {\n                this._err(ERR.eofInCdata);\n                this._emitEOFToken();\n                break;\n            }\n            default: {\n                this._emitCodePoint(cp);\n            }\n        }\n    }\n    // CDATA section bracket state\n    //------------------------------------------------------------------\n    _stateCdataSectionBracket(cp) {\n        if (cp === $.RIGHT_SQUARE_BRACKET) {\n            this.state = State.CDATA_SECTION_END;\n        }\n        else {\n            this._emitChars(']');\n            this.state = State.CDATA_SECTION;\n            this._stateCdataSection(cp);\n        }\n    }\n    // CDATA section end state\n    //------------------------------------------------------------------\n    _stateCdataSectionEnd(cp) {\n        switch (cp) {\n            case $.GREATER_THAN_SIGN: {\n                this.state = State.DATA;\n                break;\n            }\n            case $.RIGHT_SQUARE_BRACKET: {\n                this._emitChars(']');\n                break;\n            }\n            default: {\n                this._emitChars(']]');\n                this.state = State.CDATA_SECTION;\n                this._stateCdataSection(cp);\n            }\n        }\n    }\n    // Character reference state\n    //------------------------------------------------------------------\n    _stateCharacterReference(cp) {\n        if (cp === $.NUMBER_SIGN) {\n            this.state = State.NUMERIC_CHARACTER_REFERENCE;\n        }\n        else if (isAsciiAlphaNumeric(cp)) {\n            this.state = State.NAMED_CHARACTER_REFERENCE;\n            this._stateNamedCharacterReference(cp);\n        }\n        else {\n            this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n            this._reconsumeInState(this.returnState, cp);\n        }\n    }\n    // Named character reference state\n    //------------------------------------------------------------------\n    _stateNamedCharacterReference(cp) {\n        const matchResult = this._matchNamedCharacterReference(cp);\n        //NOTE: Matching can be abrupted by hibernation. In that case, match\n        //results are no longer valid and we will need to start over.\n        if (this._ensureHibernation()) {\n            // Stay in the state, try again.\n        }\n        else if (matchResult) {\n            for (let i = 0; i < matchResult.length; i++) {\n                this._flushCodePointConsumedAsCharacterReference(matchResult[i]);\n            }\n            this.state = this.returnState;\n        }\n        else {\n            this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n            this.state = State.AMBIGUOUS_AMPERSAND;\n        }\n    }\n    // Ambiguos ampersand state\n    //------------------------------------------------------------------\n    _stateAmbiguousAmpersand(cp) {\n        if (isAsciiAlphaNumeric(cp)) {\n            this._flushCodePointConsumedAsCharacterReference(cp);\n        }\n        else {\n            if (cp === $.SEMICOLON) {\n                this._err(ERR.unknownNamedCharacterReference);\n            }\n            this._reconsumeInState(this.returnState, cp);\n        }\n    }\n    // Numeric character reference state\n    //------------------------------------------------------------------\n    _stateNumericCharacterReference(cp) {\n        this.charRefCode = 0;\n        if (cp === $.LATIN_SMALL_X || cp === $.LATIN_CAPITAL_X) {\n            this.state = State.HEXADEMICAL_CHARACTER_REFERENCE_START;\n        }\n        // Inlined decimal character reference start state\n        else if (isAsciiDigit(cp)) {\n            this.state = State.DECIMAL_CHARACTER_REFERENCE;\n            this._stateDecimalCharacterReference(cp);\n        }\n        else {\n            this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n            this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n            this._flushCodePointConsumedAsCharacterReference($.NUMBER_SIGN);\n            this._reconsumeInState(this.returnState, cp);\n        }\n    }\n    // Hexademical character reference start state\n    //------------------------------------------------------------------\n    _stateHexademicalCharacterReferenceStart(cp) {\n        if (isAsciiHexDigit(cp)) {\n            this.state = State.HEXADEMICAL_CHARACTER_REFERENCE;\n            this._stateHexademicalCharacterReference(cp);\n        }\n        else {\n            this._err(ERR.absenceOfDigitsInNumericCharacterReference);\n            this._flushCodePointConsumedAsCharacterReference($.AMPERSAND);\n            this._flushCodePointConsumedAsCharacterReference($.NUMBER_SIGN);\n            this._unconsume(2);\n            this.state = this.returnState;\n        }\n    }\n    // Hexademical character reference state\n    //------------------------------------------------------------------\n    _stateHexademicalCharacterReference(cp) {\n        if (isAsciiUpperHexDigit(cp)) {\n            this.charRefCode = this.charRefCode * 16 + cp - 0x37;\n        }\n        else if (isAsciiLowerHexDigit(cp)) {\n            this.charRefCode = this.charRefCode * 16 + cp - 0x57;\n        }\n        else if (isAsciiDigit(cp)) {\n            this.charRefCode = this.charRefCode * 16 + cp - 0x30;\n        }\n        else if (cp === $.SEMICOLON) {\n            this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n        }\n        else {\n            this._err(ERR.missingSemicolonAfterCharacterReference);\n            this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n            this._stateNumericCharacterReferenceEnd(cp);\n        }\n    }\n    // Decimal character reference state\n    //------------------------------------------------------------------\n    _stateDecimalCharacterReference(cp) {\n        if (isAsciiDigit(cp)) {\n            this.charRefCode = this.charRefCode * 10 + cp - 0x30;\n        }\n        else if (cp === $.SEMICOLON) {\n            this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n        }\n        else {\n            this._err(ERR.missingSemicolonAfterCharacterReference);\n            this.state = State.NUMERIC_CHARACTER_REFERENCE_END;\n            this._stateNumericCharacterReferenceEnd(cp);\n        }\n    }\n    // Numeric character reference end state\n    //------------------------------------------------------------------\n    _stateNumericCharacterReferenceEnd(cp) {\n        if (this.charRefCode === $.NULL) {\n            this._err(ERR.nullCharacterReference);\n            this.charRefCode = $.REPLACEMENT_CHARACTER;\n        }\n        else if (this.charRefCode > 1114111) {\n            this._err(ERR.characterReferenceOutsideUnicodeRange);\n            this.charRefCode = $.REPLACEMENT_CHARACTER;\n        }\n        else if (isSurrogate(this.charRefCode)) {\n            this._err(ERR.surrogateCharacterReference);\n            this.charRefCode = $.REPLACEMENT_CHARACTER;\n        }\n        else if (isUndefinedCodePoint(this.charRefCode)) {\n            this._err(ERR.noncharacterCharacterReference);\n        }\n        else if (isControlCodePoint(this.charRefCode) || this.charRefCode === $.CARRIAGE_RETURN) {\n            this._err(ERR.controlCharacterReference);\n            const replacement = C1_CONTROLS_REFERENCE_REPLACEMENTS.get(this.charRefCode);\n            if (replacement !== undefined) {\n                this.charRefCode = replacement;\n            }\n        }\n        this._flushCodePointConsumedAsCharacterReference(this.charRefCode);\n        this._reconsumeInState(this.returnState, cp);\n    }\n}\n//# sourceMappingURL=index.js.map", "import { TAG_ID as $, NS, isNumberedHeader } from '../common/html.js';\n//Element utils\nconst IMPLICIT_END_TAG_REQUIRED = new Set([$.DD, $.DT, $.LI, $.OPTGROUP, $.OPTION, $.P, $.RB, $.RP, $.RT, $.RTC]);\nconst IMPLICIT_END_TAG_REQUIRED_THOROUGHLY = new Set([\n    ...IMPLICIT_END_TAG_REQUIRED,\n    $.CAPTION,\n    $.COLGROUP,\n    $.TBODY,\n    $.TD,\n    $.TFOOT,\n    $.TH,\n    $.THEAD,\n    $.TR,\n]);\nconst SCOPING_ELEMENT_NS = new Map([\n    [$.APPLET, NS.HTML],\n    [$.CAPTION, NS.HTML],\n    [$.HTML, NS.HTML],\n    [$.MARQUEE, NS.HTML],\n    [$.OBJECT, NS.HTML],\n    [$.TABLE, NS.HTML],\n    [$.TD, NS.HTML],\n    [$.TEMPLATE, NS.HTML],\n    [$.TH, NS.HTML],\n    [$.ANNOTATION_XML, NS.MATHML],\n    [$.MI, NS.MATHML],\n    [$.MN, NS.MATHML],\n    [$.MO, NS.MATHML],\n    [$.MS, NS.MATHML],\n    [$.MTEXT, NS.MATHML],\n    [$.DESC, NS.SVG],\n    [$.FOREIGN_OBJECT, NS.SVG],\n    [$.TITLE, NS.SVG],\n]);\nconst NAMED_HEADERS = [$.H1, $.H2, $.H3, $.H4, $.H5, $.H6];\nconst TABLE_ROW_CONTEXT = [$.TR, $.TEMPLATE, $.HTML];\nconst TABLE_BODY_CONTEXT = [$.TBODY, $.TFOOT, $.THEAD, $.TEMPLATE, $.HTML];\nconst TABLE_CONTEXT = [$.TABLE, $.TEMPLATE, $.HTML];\nconst TABLE_CELLS = [$.TD, $.TH];\n//Stack of open elements\nexport class OpenElementStack {\n    get currentTmplContentOrNode() {\n        return this._isInTemplate() ? this.treeAdapter.getTemplateContent(this.current) : this.current;\n    }\n    constructor(document, treeAdapter, handler) {\n        this.treeAdapter = treeAdapter;\n        this.handler = handler;\n        this.items = [];\n        this.tagIDs = [];\n        this.stackTop = -1;\n        this.tmplCount = 0;\n        this.currentTagId = $.UNKNOWN;\n        this.current = document;\n    }\n    //Index of element\n    _indexOf(element) {\n        return this.items.lastIndexOf(element, this.stackTop);\n    }\n    //Update current element\n    _isInTemplate() {\n        return this.currentTagId === $.TEMPLATE && this.treeAdapter.getNamespaceURI(this.current) === NS.HTML;\n    }\n    _updateCurrentElement() {\n        this.current = this.items[this.stackTop];\n        this.currentTagId = this.tagIDs[this.stackTop];\n    }\n    //Mutations\n    push(element, tagID) {\n        this.stackTop++;\n        this.items[this.stackTop] = element;\n        this.current = element;\n        this.tagIDs[this.stackTop] = tagID;\n        this.currentTagId = tagID;\n        if (this._isInTemplate()) {\n            this.tmplCount++;\n        }\n        this.handler.onItemPush(element, tagID, true);\n    }\n    pop() {\n        const popped = this.current;\n        if (this.tmplCount > 0 && this._isInTemplate()) {\n            this.tmplCount--;\n        }\n        this.stackTop--;\n        this._updateCurrentElement();\n        this.handler.onItemPop(popped, true);\n    }\n    replace(oldElement, newElement) {\n        const idx = this._indexOf(oldElement);\n        this.items[idx] = newElement;\n        if (idx === this.stackTop) {\n            this.current = newElement;\n        }\n    }\n    insertAfter(referenceElement, newElement, newElementID) {\n        const insertionIdx = this._indexOf(referenceElement) + 1;\n        this.items.splice(insertionIdx, 0, newElement);\n        this.tagIDs.splice(insertionIdx, 0, newElementID);\n        this.stackTop++;\n        if (insertionIdx === this.stackTop) {\n            this._updateCurrentElement();\n        }\n        this.handler.onItemPush(this.current, this.currentTagId, insertionIdx === this.stackTop);\n    }\n    popUntilTagNamePopped(tagName) {\n        let targetIdx = this.stackTop + 1;\n        do {\n            targetIdx = this.tagIDs.lastIndexOf(tagName, targetIdx - 1);\n        } while (targetIdx > 0 && this.treeAdapter.getNamespaceURI(this.items[targetIdx]) !== NS.HTML);\n        this.shortenToLength(targetIdx < 0 ? 0 : targetIdx);\n    }\n    shortenToLength(idx) {\n        while (this.stackTop >= idx) {\n            const popped = this.current;\n            if (this.tmplCount > 0 && this._isInTemplate()) {\n                this.tmplCount -= 1;\n            }\n            this.stackTop--;\n            this._updateCurrentElement();\n            this.handler.onItemPop(popped, this.stackTop < idx);\n        }\n    }\n    popUntilElementPopped(element) {\n        const idx = this._indexOf(element);\n        this.shortenToLength(idx < 0 ? 0 : idx);\n    }\n    popUntilPopped(tagNames, targetNS) {\n        const idx = this._indexOfTagNames(tagNames, targetNS);\n        this.shortenToLength(idx < 0 ? 0 : idx);\n    }\n    popUntilNumberedHeaderPopped() {\n        this.popUntilPopped(NAMED_HEADERS, NS.HTML);\n    }\n    popUntilTableCellPopped() {\n        this.popUntilPopped(TABLE_CELLS, NS.HTML);\n    }\n    popAllUpToHtmlElement() {\n        //NOTE: here we assume that the root <html> element is always first in the open element stack, so\n        //we perform this fast stack clean up.\n        this.tmplCount = 0;\n        this.shortenToLength(1);\n    }\n    _indexOfTagNames(tagNames, namespace) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            if (tagNames.includes(this.tagIDs[i]) && this.treeAdapter.getNamespaceURI(this.items[i]) === namespace) {\n                return i;\n            }\n        }\n        return -1;\n    }\n    clearBackTo(tagNames, targetNS) {\n        const idx = this._indexOfTagNames(tagNames, targetNS);\n        this.shortenToLength(idx + 1);\n    }\n    clearBackToTableContext() {\n        this.clearBackTo(TABLE_CONTEXT, NS.HTML);\n    }\n    clearBackToTableBodyContext() {\n        this.clearBackTo(TABLE_BODY_CONTEXT, NS.HTML);\n    }\n    clearBackToTableRowContext() {\n        this.clearBackTo(TABLE_ROW_CONTEXT, NS.HTML);\n    }\n    remove(element) {\n        const idx = this._indexOf(element);\n        if (idx >= 0) {\n            if (idx === this.stackTop) {\n                this.pop();\n            }\n            else {\n                this.items.splice(idx, 1);\n                this.tagIDs.splice(idx, 1);\n                this.stackTop--;\n                this._updateCurrentElement();\n                this.handler.onItemPop(element, false);\n            }\n        }\n    }\n    //Search\n    tryPeekProperlyNestedBodyElement() {\n        //Properly nested <body> element (should be second element in stack).\n        return this.stackTop >= 1 && this.tagIDs[1] === $.BODY ? this.items[1] : null;\n    }\n    contains(element) {\n        return this._indexOf(element) > -1;\n    }\n    getCommonAncestor(element) {\n        const elementIdx = this._indexOf(element) - 1;\n        return elementIdx >= 0 ? this.items[elementIdx] : null;\n    }\n    isRootHtmlElementCurrent() {\n        return this.stackTop === 0 && this.tagIDs[0] === $.HTML;\n    }\n    //Element in scope\n    hasInScope(tagName) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.tagIDs[i];\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n            if (tn === tagName && ns === NS.HTML) {\n                return true;\n            }\n            if (SCOPING_ELEMENT_NS.get(tn) === ns) {\n                return false;\n            }\n        }\n        return true;\n    }\n    hasNumberedHeaderInScope() {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.tagIDs[i];\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n            if (isNumberedHeader(tn) && ns === NS.HTML) {\n                return true;\n            }\n            if (SCOPING_ELEMENT_NS.get(tn) === ns) {\n                return false;\n            }\n        }\n        return true;\n    }\n    hasInListItemScope(tagName) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.tagIDs[i];\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n            if (tn === tagName && ns === NS.HTML) {\n                return true;\n            }\n            if (((tn === $.UL || tn === $.OL) && ns === NS.HTML) || SCOPING_ELEMENT_NS.get(tn) === ns) {\n                return false;\n            }\n        }\n        return true;\n    }\n    hasInButtonScope(tagName) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.tagIDs[i];\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n            if (tn === tagName && ns === NS.HTML) {\n                return true;\n            }\n            if ((tn === $.BUTTON && ns === NS.HTML) || SCOPING_ELEMENT_NS.get(tn) === ns) {\n                return false;\n            }\n        }\n        return true;\n    }\n    hasInTableScope(tagName) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.tagIDs[i];\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n            if (ns !== NS.HTML) {\n                continue;\n            }\n            if (tn === tagName) {\n                return true;\n            }\n            if (tn === $.TABLE || tn === $.TEMPLATE || tn === $.HTML) {\n                return false;\n            }\n        }\n        return true;\n    }\n    hasTableBodyContextInTableScope() {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.tagIDs[i];\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n            if (ns !== NS.HTML) {\n                continue;\n            }\n            if (tn === $.TBODY || tn === $.THEAD || tn === $.TFOOT) {\n                return true;\n            }\n            if (tn === $.TABLE || tn === $.HTML) {\n                return false;\n            }\n        }\n        return true;\n    }\n    hasInSelectScope(tagName) {\n        for (let i = this.stackTop; i >= 0; i--) {\n            const tn = this.tagIDs[i];\n            const ns = this.treeAdapter.getNamespaceURI(this.items[i]);\n            if (ns !== NS.HTML) {\n                continue;\n            }\n            if (tn === tagName) {\n                return true;\n            }\n            if (tn !== $.OPTION && tn !== $.OPTGROUP) {\n                return false;\n            }\n        }\n        return true;\n    }\n    //Implied end tags\n    generateImpliedEndTags() {\n        while (IMPLICIT_END_TAG_REQUIRED.has(this.currentTagId)) {\n            this.pop();\n        }\n    }\n    generateImpliedEndTagsThoroughly() {\n        while (IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n            this.pop();\n        }\n    }\n    generateImpliedEndTagsWithExclusion(exclusionId) {\n        while (this.currentTagId !== exclusionId && IMPLICIT_END_TAG_REQUIRED_THOROUGHLY.has(this.currentTagId)) {\n            this.pop();\n        }\n    }\n}\n//# sourceMappingURL=open-element-stack.js.map", "//Const\nconst NOAH_ARK_CAPACITY = 3;\nexport var EntryType;\n(function (EntryType) {\n    EntryType[EntryType[\"Marker\"] = 0] = \"Marker\";\n    EntryType[EntryType[\"Element\"] = 1] = \"Element\";\n})(EntryType = EntryType || (EntryType = {}));\nconst MARKER = { type: EntryType.Marker };\n//List of formatting elements\nexport class FormattingElementList {\n    constructor(treeAdapter) {\n        this.treeAdapter = treeAdapter;\n        this.entries = [];\n        this.bookmark = null;\n    }\n    //Noah Ark's condition\n    //OPTIMIZATION: at first we try to find possible candidates for exclusion using\n    //lightweight heuristics without thorough attributes check.\n    _getNoahArkConditionCandidates(newElement, neAttrs) {\n        const candidates = [];\n        const neAttrsLength = neAttrs.length;\n        const neTagName = this.treeAdapter.getTagName(newElement);\n        const neNamespaceURI = this.treeAdapter.getNamespaceURI(newElement);\n        for (let i = 0; i < this.entries.length; i++) {\n            const entry = this.entries[i];\n            if (entry.type === EntryType.Marker) {\n                break;\n            }\n            const { element } = entry;\n            if (this.treeAdapter.getTagName(element) === neTagName &&\n                this.treeAdapter.getNamespaceURI(element) === neNamespaceURI) {\n                const elementAttrs = this.treeAdapter.getAttrList(element);\n                if (elementAttrs.length === neAttrsLength) {\n                    candidates.push({ idx: i, attrs: elementAttrs });\n                }\n            }\n        }\n        return candidates;\n    }\n    _ensureNoahArkCondition(newElement) {\n        if (this.entries.length < NOAH_ARK_CAPACITY)\n            return;\n        const neAttrs = this.treeAdapter.getAttrList(newElement);\n        const candidates = this._getNoahArkConditionCandidates(newElement, neAttrs);\n        if (candidates.length < NOAH_ARK_CAPACITY)\n            return;\n        //NOTE: build attrs map for the new element, so we can perform fast lookups\n        const neAttrsMap = new Map(neAttrs.map((neAttr) => [neAttr.name, neAttr.value]));\n        let validCandidates = 0;\n        //NOTE: remove bottommost candidates, until Noah's Ark condition will not be met\n        for (let i = 0; i < candidates.length; i++) {\n            const candidate = candidates[i];\n            // We know that `candidate.attrs.length === neAttrs.length`\n            if (candidate.attrs.every((cAttr) => neAttrsMap.get(cAttr.name) === cAttr.value)) {\n                validCandidates += 1;\n                if (validCandidates >= NOAH_ARK_CAPACITY) {\n                    this.entries.splice(candidate.idx, 1);\n                }\n            }\n        }\n    }\n    //Mutations\n    insertMarker() {\n        this.entries.unshift(MARKER);\n    }\n    pushElement(element, token) {\n        this._ensureNoahArkCondition(element);\n        this.entries.unshift({\n            type: EntryType.Element,\n            element,\n            token,\n        });\n    }\n    insertElementAfterBookmark(element, token) {\n        const bookmarkIdx = this.entries.indexOf(this.bookmark);\n        this.entries.splice(bookmarkIdx, 0, {\n            type: EntryType.Element,\n            element,\n            token,\n        });\n    }\n    removeEntry(entry) {\n        const entryIndex = this.entries.indexOf(entry);\n        if (entryIndex >= 0) {\n            this.entries.splice(entryIndex, 1);\n        }\n    }\n    /**\n     * Clears the list of formatting elements up to the last marker.\n     *\n     * @see https://html.spec.whatwg.org/multipage/parsing.html#clear-the-list-of-active-formatting-elements-up-to-the-last-marker\n     */\n    clearToLastMarker() {\n        const markerIdx = this.entries.indexOf(MARKER);\n        if (markerIdx >= 0) {\n            this.entries.splice(0, markerIdx + 1);\n        }\n        else {\n            this.entries.length = 0;\n        }\n    }\n    //Search\n    getElementEntryInScopeWithTagName(tagName) {\n        const entry = this.entries.find((entry) => entry.type === EntryType.Marker || this.treeAdapter.getTagName(entry.element) === tagName);\n        return entry && entry.type === EntryType.Element ? entry : null;\n    }\n    getElementEntry(element) {\n        return this.entries.find((entry) => entry.type === EntryType.Element && entry.element === element);\n    }\n}\n//# sourceMappingURL=formatting-element-list.js.map", "import { DOCUMENT_MODE } from '../common/html.js';\nfunction createTextNode(value) {\n    return {\n        nodeName: '#text',\n        value,\n        parentNode: null,\n    };\n}\nexport const defaultTreeAdapter = {\n    //Node construction\n    createDocument() {\n        return {\n            nodeName: '#document',\n            mode: DOCUMENT_MODE.NO_QUIRKS,\n            childNodes: [],\n        };\n    },\n    createDocumentFragment() {\n        return {\n            nodeName: '#document-fragment',\n            childNodes: [],\n        };\n    },\n    createElement(tagName, namespaceURI, attrs) {\n        return {\n            nodeName: tagName,\n            tagName,\n            attrs,\n            namespaceURI,\n            childNodes: [],\n            parentNode: null,\n        };\n    },\n    createCommentNode(data) {\n        return {\n            nodeName: '#comment',\n            data,\n            parentNode: null,\n        };\n    },\n    //Tree mutation\n    appendChild(parentNode, newNode) {\n        parentNode.childNodes.push(newNode);\n        newNode.parentNode = parentNode;\n    },\n    insertBefore(parentNode, newNode, referenceNode) {\n        const insertionIdx = parentNode.childNodes.indexOf(referenceNode);\n        parentNode.childNodes.splice(insertionIdx, 0, newNode);\n        newNode.parentNode = parentNode;\n    },\n    setTemplateContent(templateElement, contentElement) {\n        templateElement.content = contentElement;\n    },\n    getTemplateContent(templateElement) {\n        return templateElement.content;\n    },\n    setDocumentType(document, name, publicId, systemId) {\n        const doctypeNode = document.childNodes.find((node) => node.nodeName === '#documentType');\n        if (doctypeNode) {\n            doctypeNode.name = name;\n            doctypeNode.publicId = publicId;\n            doctypeNode.systemId = systemId;\n        }\n        else {\n            const node = {\n                nodeName: '#documentType',\n                name,\n                publicId,\n                systemId,\n                parentNode: null,\n            };\n            defaultTreeAdapter.appendChild(document, node);\n        }\n    },\n    setDocumentMode(document, mode) {\n        document.mode = mode;\n    },\n    getDocumentMode(document) {\n        return document.mode;\n    },\n    detachNode(node) {\n        if (node.parentNode) {\n            const idx = node.parentNode.childNodes.indexOf(node);\n            node.parentNode.childNodes.splice(idx, 1);\n            node.parentNode = null;\n        }\n    },\n    insertText(parentNode, text) {\n        if (parentNode.childNodes.length > 0) {\n            const prevNode = parentNode.childNodes[parentNode.childNodes.length - 1];\n            if (defaultTreeAdapter.isTextNode(prevNode)) {\n                prevNode.value += text;\n                return;\n            }\n        }\n        defaultTreeAdapter.appendChild(parentNode, createTextNode(text));\n    },\n    insertTextBefore(parentNode, text, referenceNode) {\n        const prevNode = parentNode.childNodes[parentNode.childNodes.indexOf(referenceNode) - 1];\n        if (prevNode && defaultTreeAdapter.isTextNode(prevNode)) {\n            prevNode.value += text;\n        }\n        else {\n            defaultTreeAdapter.insertBefore(parentNode, createTextNode(text), referenceNode);\n        }\n    },\n    adoptAttributes(recipient, attrs) {\n        const recipientAttrsMap = new Set(recipient.attrs.map((attr) => attr.name));\n        for (let j = 0; j < attrs.length; j++) {\n            if (!recipientAttrsMap.has(attrs[j].name)) {\n                recipient.attrs.push(attrs[j]);\n            }\n        }\n    },\n    //Tree traversing\n    getFirstChild(node) {\n        return node.childNodes[0];\n    },\n    getChildNodes(node) {\n        return node.childNodes;\n    },\n    getParentNode(node) {\n        return node.parentNode;\n    },\n    getAttrList(element) {\n        return element.attrs;\n    },\n    //Node data\n    getTagName(element) {\n        return element.tagName;\n    },\n    getNamespaceURI(element) {\n        return element.namespaceURI;\n    },\n    getTextNodeContent(textNode) {\n        return textNode.value;\n    },\n    getCommentNodeContent(commentNode) {\n        return commentNode.data;\n    },\n    getDocumentTypeNodeName(doctypeNode) {\n        return doctypeNode.name;\n    },\n    getDocumentTypeNodePublicId(doctypeNode) {\n        return doctypeNode.publicId;\n    },\n    getDocumentTypeNodeSystemId(doctypeNode) {\n        return doctypeNode.systemId;\n    },\n    //Node types\n    isTextNode(node) {\n        return node.nodeName === '#text';\n    },\n    isCommentNode(node) {\n        return node.nodeName === '#comment';\n    },\n    isDocumentTypeNode(node) {\n        return node.nodeName === '#documentType';\n    },\n    isElementNode(node) {\n        return Object.prototype.hasOwnProperty.call(node, 'tagName');\n    },\n    // Source code location\n    setNodeSourceCodeLocation(node, location) {\n        node.sourceCodeLocation = location;\n    },\n    getNodeSourceCodeLocation(node) {\n        return node.sourceCodeLocation;\n    },\n    updateNodeSourceCodeLocation(node, endLocation) {\n        node.sourceCodeLocation = { ...node.sourceCodeLocation, ...endLocation };\n    },\n};\n//# sourceMappingURL=default.js.map", "import { DOCUMENT_MODE } from './html.js';\n//Const\nconst VALID_DOCTYPE_NAME = 'html';\nconst VALID_SYSTEM_ID = 'about:legacy-compat';\nconst QUIRKS_MODE_SYSTEM_ID = 'http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd';\nconst QUIRKS_MODE_PUBLIC_ID_PREFIXES = [\n    '+//silmaril//dtd html pro v0r11 19970101//',\n    '-//as//dtd html 3.0 aswedit + extensions//',\n    '-//advasoft ltd//dtd html 3.0 aswedit + extensions//',\n    '-//ietf//dtd html 2.0 level 1//',\n    '-//ietf//dtd html 2.0 level 2//',\n    '-//ietf//dtd html 2.0 strict level 1//',\n    '-//ietf//dtd html 2.0 strict level 2//',\n    '-//ietf//dtd html 2.0 strict//',\n    '-//ietf//dtd html 2.0//',\n    '-//ietf//dtd html 2.1e//',\n    '-//ietf//dtd html 3.0//',\n    '-//ietf//dtd html 3.2 final//',\n    '-//ietf//dtd html 3.2//',\n    '-//ietf//dtd html 3//',\n    '-//ietf//dtd html level 0//',\n    '-//ietf//dtd html level 1//',\n    '-//ietf//dtd html level 2//',\n    '-//ietf//dtd html level 3//',\n    '-//ietf//dtd html strict level 0//',\n    '-//ietf//dtd html strict level 1//',\n    '-//ietf//dtd html strict level 2//',\n    '-//ietf//dtd html strict level 3//',\n    '-//ietf//dtd html strict//',\n    '-//ietf//dtd html//',\n    '-//metrius//dtd metrius presentational//',\n    '-//microsoft//dtd internet explorer 2.0 html strict//',\n    '-//microsoft//dtd internet explorer 2.0 html//',\n    '-//microsoft//dtd internet explorer 2.0 tables//',\n    '-//microsoft//dtd internet explorer 3.0 html strict//',\n    '-//microsoft//dtd internet explorer 3.0 html//',\n    '-//microsoft//dtd internet explorer 3.0 tables//',\n    '-//netscape comm. corp.//dtd html//',\n    '-//netscape comm. corp.//dtd strict html//',\n    \"-//o'reilly and associates//dtd html 2.0//\",\n    \"-//o'reilly and associates//dtd html extended 1.0//\",\n    \"-//o'reilly and associates//dtd html extended relaxed 1.0//\",\n    '-//sq//dtd html 2.0 hotmetal + extensions//',\n    '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//',\n    '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//',\n    '-//spyglass//dtd html 2.0 extended//',\n    '-//sun microsystems corp.//dtd hotjava html//',\n    '-//sun microsystems corp.//dtd hotjava strict html//',\n    '-//w3c//dtd html 3 1995-03-24//',\n    '-//w3c//dtd html 3.2 draft//',\n    '-//w3c//dtd html 3.2 final//',\n    '-//w3c//dtd html 3.2//',\n    '-//w3c//dtd html 3.2s draft//',\n    '-//w3c//dtd html 4.0 frameset//',\n    '-//w3c//dtd html 4.0 transitional//',\n    '-//w3c//dtd html experimental 19960712//',\n    '-//w3c//dtd html experimental 970421//',\n    '-//w3c//dtd w3 html//',\n    '-//w3o//dtd w3 html 3.0//',\n    '-//webtechs//dtd mozilla html 2.0//',\n    '-//webtechs//dtd mozilla html//',\n];\nconst QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n    ...QUIRKS_MODE_PUBLIC_ID_PREFIXES,\n    '-//w3c//dtd html 4.01 frameset//',\n    '-//w3c//dtd html 4.01 transitional//',\n];\nconst QUIRKS_MODE_PUBLIC_IDS = new Set([\n    '-//w3o//dtd w3 html strict 3.0//en//',\n    '-/w3c/dtd html 4.0 transitional/en',\n    'html',\n]);\nconst LIMITED_QUIRKS_PUBLIC_ID_PREFIXES = ['-//w3c//dtd xhtml 1.0 frameset//', '-//w3c//dtd xhtml 1.0 transitional//'];\nconst LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES = [\n    ...LIMITED_QUIRKS_PUBLIC_ID_PREFIXES,\n    '-//w3c//dtd html 4.01 frameset//',\n    '-//w3c//dtd html 4.01 transitional//',\n];\n//Utils\nfunction hasPrefix(publicId, prefixes) {\n    return prefixes.some((prefix) => publicId.startsWith(prefix));\n}\n//API\nexport function isConforming(token) {\n    return (token.name === VALID_DOCTYPE_NAME &&\n        token.publicId === null &&\n        (token.systemId === null || token.systemId === VALID_SYSTEM_ID));\n}\nexport function getDocumentMode(token) {\n    if (token.name !== VALID_DOCTYPE_NAME) {\n        return DOCUMENT_MODE.QUIRKS;\n    }\n    const { systemId } = token;\n    if (systemId && systemId.toLowerCase() === QUIRKS_MODE_SYSTEM_ID) {\n        return DOCUMENT_MODE.QUIRKS;\n    }\n    let { publicId } = token;\n    if (publicId !== null) {\n        publicId = publicId.toLowerCase();\n        if (QUIRKS_MODE_PUBLIC_IDS.has(publicId)) {\n            return DOCUMENT_MODE.QUIRKS;\n        }\n        let prefixes = systemId === null ? QUIRKS_MODE_NO_SYSTEM_ID_PUBLIC_ID_PREFIXES : QUIRKS_MODE_PUBLIC_ID_PREFIXES;\n        if (hasPrefix(publicId, prefixes)) {\n            return DOCUMENT_MODE.QUIRKS;\n        }\n        prefixes =\n            systemId === null ? LIMITED_QUIRKS_PUBLIC_ID_PREFIXES : LIMITED_QUIRKS_WITH_SYSTEM_ID_PUBLIC_ID_PREFIXES;\n        if (hasPrefix(publicId, prefixes)) {\n            return DOCUMENT_MODE.LIMITED_QUIRKS;\n        }\n    }\n    return DOCUMENT_MODE.NO_QUIRKS;\n}\n//# sourceMappingURL=doctype.js.map", "import { TAG_ID as $, NS, ATTRS, getTagID } from './html.js';\n//MIME types\nconst MIME_TYPES = {\n    TEXT_HTML: 'text/html',\n    APPLICATION_XML: 'application/xhtml+xml',\n};\n//Attributes\nconst DEFINITION_URL_ATTR = 'definitionurl';\nconst ADJUSTED_DEFINITION_URL_ATTR = 'definitionURL';\nconst SVG_ATTRS_ADJUSTMENT_MAP = new Map([\n    'attributeName',\n    'attributeType',\n    'baseFrequency',\n    'baseProfile',\n    'calcMode',\n    'clipPathUnits',\n    'diffuseConstant',\n    'edgeMode',\n    'filterUnits',\n    'glyphRef',\n    'gradientTransform',\n    'gradientUnits',\n    'kernelMatrix',\n    'kernelUnitLength',\n    'keyPoints',\n    'keySplines',\n    'keyTimes',\n    'lengthAdjust',\n    'limitingConeAngle',\n    'markerHeight',\n    'markerUnits',\n    'markerWidth',\n    'maskContentUnits',\n    'maskUnits',\n    'numOctaves',\n    'pathLength',\n    'patternContentUnits',\n    'patternTransform',\n    'patternUnits',\n    'pointsAtX',\n    'pointsAtY',\n    'pointsAtZ',\n    'preserveAlpha',\n    'preserveAspectRatio',\n    'primitiveUnits',\n    'refX',\n    'refY',\n    'repeatCount',\n    'repeatDur',\n    'requiredExtensions',\n    'requiredFeatures',\n    'specularConstant',\n    'specularExponent',\n    'spreadMethod',\n    'startOffset',\n    'stdDeviation',\n    'stitchTiles',\n    'surfaceScale',\n    'systemLanguage',\n    'tableValues',\n    'targetX',\n    'targetY',\n    'textLength',\n    'viewBox',\n    'viewTarget',\n    'xChannelSelector',\n    'yChannelSelector',\n    'zoomAndPan',\n].map((attr) => [attr.toLowerCase(), attr]));\nconst XML_ATTRS_ADJUSTMENT_MAP = new Map([\n    ['xlink:actuate', { prefix: 'xlink', name: 'actuate', namespace: NS.XLINK }],\n    ['xlink:arcrole', { prefix: 'xlink', name: 'arcrole', namespace: NS.XLINK }],\n    ['xlink:href', { prefix: 'xlink', name: 'href', namespace: NS.XLINK }],\n    ['xlink:role', { prefix: 'xlink', name: 'role', namespace: NS.XLINK }],\n    ['xlink:show', { prefix: 'xlink', name: 'show', namespace: NS.XLINK }],\n    ['xlink:title', { prefix: 'xlink', name: 'title', namespace: NS.XLINK }],\n    ['xlink:type', { prefix: 'xlink', name: 'type', namespace: NS.XLINK }],\n    ['xml:base', { prefix: 'xml', name: 'base', namespace: NS.XML }],\n    ['xml:lang', { prefix: 'xml', name: 'lang', namespace: NS.XML }],\n    ['xml:space', { prefix: 'xml', name: 'space', namespace: NS.XML }],\n    ['xmlns', { prefix: '', name: 'xmlns', namespace: NS.XMLNS }],\n    ['xmlns:xlink', { prefix: 'xmlns', name: 'xlink', namespace: NS.XMLNS }],\n]);\n//SVG tag names adjustment map\nexport const SVG_TAG_NAMES_ADJUSTMENT_MAP = new Map([\n    'altGlyph',\n    'altGlyphDef',\n    'altGlyphItem',\n    'animateColor',\n    'animateMotion',\n    'animateTransform',\n    'clipPath',\n    'feBlend',\n    'feColorMatrix',\n    'feComponentTransfer',\n    'feComposite',\n    'feConvolveMatrix',\n    'feDiffuseLighting',\n    'feDisplacementMap',\n    'feDistantLight',\n    'feFlood',\n    'feFuncA',\n    'feFuncB',\n    'feFuncG',\n    'feFuncR',\n    'feGaussianBlur',\n    'feImage',\n    'feMerge',\n    'feMergeNode',\n    'feMorphology',\n    'feOffset',\n    'fePointLight',\n    'feSpecularLighting',\n    'feSpotLight',\n    'feTile',\n    'feTurbulence',\n    'foreignObject',\n    'glyphRef',\n    'linearGradient',\n    'radialGradient',\n    'textPath',\n].map((tn) => [tn.toLowerCase(), tn]));\n//Tags that causes exit from foreign content\nconst EXITS_FOREIGN_CONTENT = new Set([\n    $.B,\n    $.BIG,\n    $.BLOCKQUOTE,\n    $.BODY,\n    $.BR,\n    $.CENTER,\n    $.CODE,\n    $.DD,\n    $.DIV,\n    $.DL,\n    $.DT,\n    $.EM,\n    $.EMBED,\n    $.H1,\n    $.H2,\n    $.H3,\n    $.H4,\n    $.H5,\n    $.H6,\n    $.HEAD,\n    $.HR,\n    $.I,\n    $.IMG,\n    $.LI,\n    $.LISTING,\n    $.MENU,\n    $.META,\n    $.NOBR,\n    $.OL,\n    $.P,\n    $.PRE,\n    $.RUBY,\n    $.S,\n    $.SMALL,\n    $.SPAN,\n    $.STRONG,\n    $.STRIKE,\n    $.SUB,\n    $.SUP,\n    $.TABLE,\n    $.TT,\n    $.U,\n    $.UL,\n    $.VAR,\n]);\n//Check exit from foreign content\nexport function causesExit(startTagToken) {\n    const tn = startTagToken.tagID;\n    const isFontWithAttrs = tn === $.FONT &&\n        startTagToken.attrs.some(({ name }) => name === ATTRS.COLOR || name === ATTRS.SIZE || name === ATTRS.FACE);\n    return isFontWithAttrs || EXITS_FOREIGN_CONTENT.has(tn);\n}\n//Token adjustments\nexport function adjustTokenMathMLAttrs(token) {\n    for (let i = 0; i < token.attrs.length; i++) {\n        if (token.attrs[i].name === DEFINITION_URL_ATTR) {\n            token.attrs[i].name = ADJUSTED_DEFINITION_URL_ATTR;\n            break;\n        }\n    }\n}\nexport function adjustTokenSVGAttrs(token) {\n    for (let i = 0; i < token.attrs.length; i++) {\n        const adjustedAttrName = SVG_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n        if (adjustedAttrName != null) {\n            token.attrs[i].name = adjustedAttrName;\n        }\n    }\n}\nexport function adjustTokenXMLAttrs(token) {\n    for (let i = 0; i < token.attrs.length; i++) {\n        const adjustedAttrEntry = XML_ATTRS_ADJUSTMENT_MAP.get(token.attrs[i].name);\n        if (adjustedAttrEntry) {\n            token.attrs[i].prefix = adjustedAttrEntry.prefix;\n            token.attrs[i].name = adjustedAttrEntry.name;\n            token.attrs[i].namespace = adjustedAttrEntry.namespace;\n        }\n    }\n}\nexport function adjustTokenSVGTagName(token) {\n    const adjustedTagName = SVG_TAG_NAMES_ADJUSTMENT_MAP.get(token.tagName);\n    if (adjustedTagName != null) {\n        token.tagName = adjustedTagName;\n        token.tagID = getTagID(token.tagName);\n    }\n}\n//Integration points\nfunction isMathMLTextIntegrationPoint(tn, ns) {\n    return ns === NS.MATHML && (tn === $.MI || tn === $.MO || tn === $.MN || tn === $.MS || tn === $.MTEXT);\n}\nfunction isHtmlIntegrationPoint(tn, ns, attrs) {\n    if (ns === NS.MATHML && tn === $.ANNOTATION_XML) {\n        for (let i = 0; i < attrs.length; i++) {\n            if (attrs[i].name === ATTRS.ENCODING) {\n                const value = attrs[i].value.toLowerCase();\n                return value === MIME_TYPES.TEXT_HTML || value === MIME_TYPES.APPLICATION_XML;\n            }\n        }\n    }\n    return ns === NS.SVG && (tn === $.FOREIGN_OBJECT || tn === $.DESC || tn === $.TITLE);\n}\nexport function isIntegrationPoint(tn, ns, attrs, foreignNS) {\n    return (((!foreignNS || foreignNS === NS.HTML) && isHtmlIntegrationPoint(tn, ns, attrs)) ||\n        ((!foreignNS || foreignNS === NS.MATHML) && isMathMLTextIntegrationPoint(tn, ns)));\n}\n//# sourceMappingURL=foreign-content.js.map", "import { Tokenizer, TokenizerMode } from '../tokenizer/index.js';\nimport { OpenElementStack } from './open-element-stack.js';\nimport { FormattingElementList, EntryType } from './formatting-element-list.js';\nimport { defaultTreeAdapter } from '../tree-adapters/default.js';\nimport * as doctype from '../common/doctype.js';\nimport * as foreignContent from '../common/foreign-content.js';\nimport { ERR } from '../common/error-codes.js';\nimport * as unicode from '../common/unicode.js';\nimport { TAG_ID as $, TAG_NAMES as TN, NS, ATTRS, SPECIAL_ELEMENTS, DOCUMENT_MODE, isNumberedHeader, getTagID, } from '../common/html.js';\nimport { TokenType, getTokenAttr, } from '../common/token.js';\n//Misc constants\nconst HIDDEN_INPUT_TYPE = 'hidden';\n//Adoption agency loops iteration count\nconst AA_OUTER_LOOP_ITER = 8;\nconst AA_INNER_LOOP_ITER = 3;\n//Insertion modes\nvar InsertionMode;\n(function (InsertionMode) {\n    InsertionMode[InsertionMode[\"INITIAL\"] = 0] = \"INITIAL\";\n    InsertionMode[InsertionMode[\"BEFORE_HTML\"] = 1] = \"BEFORE_HTML\";\n    InsertionMode[InsertionMode[\"BEFORE_HEAD\"] = 2] = \"BEFORE_HEAD\";\n    InsertionMode[InsertionMode[\"IN_HEAD\"] = 3] = \"IN_HEAD\";\n    InsertionMode[InsertionMode[\"IN_HEAD_NO_SCRIPT\"] = 4] = \"IN_HEAD_NO_SCRIPT\";\n    InsertionMode[InsertionMode[\"AFTER_HEAD\"] = 5] = \"AFTER_HEAD\";\n    InsertionMode[InsertionMode[\"IN_BODY\"] = 6] = \"IN_BODY\";\n    InsertionMode[InsertionMode[\"TEXT\"] = 7] = \"TEXT\";\n    InsertionMode[InsertionMode[\"IN_TABLE\"] = 8] = \"IN_TABLE\";\n    InsertionMode[InsertionMode[\"IN_TABLE_TEXT\"] = 9] = \"IN_TABLE_TEXT\";\n    InsertionMode[InsertionMode[\"IN_CAPTION\"] = 10] = \"IN_CAPTION\";\n    InsertionMode[InsertionMode[\"IN_COLUMN_GROUP\"] = 11] = \"IN_COLUMN_GROUP\";\n    InsertionMode[InsertionMode[\"IN_TABLE_BODY\"] = 12] = \"IN_TABLE_BODY\";\n    InsertionMode[InsertionMode[\"IN_ROW\"] = 13] = \"IN_ROW\";\n    InsertionMode[InsertionMode[\"IN_CELL\"] = 14] = \"IN_CELL\";\n    InsertionMode[InsertionMode[\"IN_SELECT\"] = 15] = \"IN_SELECT\";\n    InsertionMode[InsertionMode[\"IN_SELECT_IN_TABLE\"] = 16] = \"IN_SELECT_IN_TABLE\";\n    InsertionMode[InsertionMode[\"IN_TEMPLATE\"] = 17] = \"IN_TEMPLATE\";\n    InsertionMode[InsertionMode[\"AFTER_BODY\"] = 18] = \"AFTER_BODY\";\n    InsertionMode[InsertionMode[\"IN_FRAMESET\"] = 19] = \"IN_FRAMESET\";\n    InsertionMode[InsertionMode[\"AFTER_FRAMESET\"] = 20] = \"AFTER_FRAMESET\";\n    InsertionMode[InsertionMode[\"AFTER_AFTER_BODY\"] = 21] = \"AFTER_AFTER_BODY\";\n    InsertionMode[InsertionMode[\"AFTER_AFTER_FRAMESET\"] = 22] = \"AFTER_AFTER_FRAMESET\";\n})(InsertionMode || (InsertionMode = {}));\nconst BASE_LOC = {\n    startLine: -1,\n    startCol: -1,\n    startOffset: -1,\n    endLine: -1,\n    endCol: -1,\n    endOffset: -1,\n};\nconst TABLE_STRUCTURE_TAGS = new Set([$.TABLE, $.TBODY, $.TFOOT, $.THEAD, $.TR]);\nconst defaultParserOptions = {\n    scriptingEnabled: true,\n    sourceCodeLocationInfo: false,\n    treeAdapter: defaultTreeAdapter,\n    onParseError: null,\n};\n//Parser\nexport class Parser {\n    constructor(options, document, fragmentContext = null, scriptHandler = null) {\n        this.fragmentContext = fragmentContext;\n        this.scriptHandler = scriptHandler;\n        this.currentToken = null;\n        this.stopped = false;\n        this.insertionMode = InsertionMode.INITIAL;\n        this.originalInsertionMode = InsertionMode.INITIAL;\n        this.headElement = null;\n        this.formElement = null;\n        /** Indicates that the current node is not an element in the HTML namespace */\n        this.currentNotInHTML = false;\n        /**\n         * The template insertion mode stack is maintained from the left.\n         * Ie. the topmost element will always have index 0.\n         */\n        this.tmplInsertionModeStack = [];\n        this.pendingCharacterTokens = [];\n        this.hasNonWhitespacePendingCharacterToken = false;\n        this.framesetOk = true;\n        this.skipNextNewLine = false;\n        this.fosterParentingEnabled = false;\n        this.options = {\n            ...defaultParserOptions,\n            ...options,\n        };\n        this.treeAdapter = this.options.treeAdapter;\n        this.onParseError = this.options.onParseError;\n        // Always enable location info if we report parse errors.\n        if (this.onParseError) {\n            this.options.sourceCodeLocationInfo = true;\n        }\n        this.document = document !== null && document !== void 0 ? document : this.treeAdapter.createDocument();\n        this.tokenizer = new Tokenizer(this.options, this);\n        this.activeFormattingElements = new FormattingElementList(this.treeAdapter);\n        this.fragmentContextID = fragmentContext ? getTagID(this.treeAdapter.getTagName(fragmentContext)) : $.UNKNOWN;\n        this._setContextModes(fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : this.document, this.fragmentContextID);\n        this.openElements = new OpenElementStack(this.document, this.treeAdapter, this);\n    }\n    // API\n    static parse(html, options) {\n        const parser = new this(options);\n        parser.tokenizer.write(html, true);\n        return parser.document;\n    }\n    static getFragmentParser(fragmentContext, options) {\n        const opts = {\n            ...defaultParserOptions,\n            ...options,\n        };\n        //NOTE: use a <template> element as the fragment context if no context element was provided,\n        //so we will parse in a \"forgiving\" manner\n        fragmentContext !== null && fragmentContext !== void 0 ? fragmentContext : (fragmentContext = opts.treeAdapter.createElement(TN.TEMPLATE, NS.HTML, []));\n        //NOTE: create a fake element which will be used as the `document` for fragment parsing.\n        //This is important for jsdom, where a new `document` cannot be created. This led to\n        //fragment parsing messing with the main `document`.\n        const documentMock = opts.treeAdapter.createElement('documentmock', NS.HTML, []);\n        const parser = new this(opts, documentMock, fragmentContext);\n        if (parser.fragmentContextID === $.TEMPLATE) {\n            parser.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n        }\n        parser._initTokenizerForFragmentParsing();\n        parser._insertFakeRootElement();\n        parser._resetInsertionMode();\n        parser._findFormInFragmentContext();\n        return parser;\n    }\n    getFragment() {\n        const rootElement = this.treeAdapter.getFirstChild(this.document);\n        const fragment = this.treeAdapter.createDocumentFragment();\n        this._adoptNodes(rootElement, fragment);\n        return fragment;\n    }\n    //Errors\n    _err(token, code, beforeToken) {\n        var _a;\n        if (!this.onParseError)\n            return;\n        const loc = (_a = token.location) !== null && _a !== void 0 ? _a : BASE_LOC;\n        const err = {\n            code,\n            startLine: loc.startLine,\n            startCol: loc.startCol,\n            startOffset: loc.startOffset,\n            endLine: beforeToken ? loc.startLine : loc.endLine,\n            endCol: beforeToken ? loc.startCol : loc.endCol,\n            endOffset: beforeToken ? loc.startOffset : loc.endOffset,\n        };\n        this.onParseError(err);\n    }\n    //Stack events\n    onItemPush(node, tid, isTop) {\n        var _a, _b;\n        (_b = (_a = this.treeAdapter).onItemPush) === null || _b === void 0 ? void 0 : _b.call(_a, node);\n        if (isTop && this.openElements.stackTop > 0)\n            this._setContextModes(node, tid);\n    }\n    onItemPop(node, isTop) {\n        var _a, _b;\n        if (this.options.sourceCodeLocationInfo) {\n            this._setEndLocation(node, this.currentToken);\n        }\n        (_b = (_a = this.treeAdapter).onItemPop) === null || _b === void 0 ? void 0 : _b.call(_a, node, this.openElements.current);\n        if (isTop) {\n            let current;\n            let currentTagId;\n            if (this.openElements.stackTop === 0 && this.fragmentContext) {\n                current = this.fragmentContext;\n                currentTagId = this.fragmentContextID;\n            }\n            else {\n                ({ current, currentTagId } = this.openElements);\n            }\n            this._setContextModes(current, currentTagId);\n        }\n    }\n    _setContextModes(current, tid) {\n        const isHTML = current === this.document || this.treeAdapter.getNamespaceURI(current) === NS.HTML;\n        this.currentNotInHTML = !isHTML;\n        this.tokenizer.inForeignNode = !isHTML && !this._isIntegrationPoint(tid, current);\n    }\n    _switchToTextParsing(currentToken, nextTokenizerState) {\n        this._insertElement(currentToken, NS.HTML);\n        this.tokenizer.state = nextTokenizerState;\n        this.originalInsertionMode = this.insertionMode;\n        this.insertionMode = InsertionMode.TEXT;\n    }\n    switchToPlaintextParsing() {\n        this.insertionMode = InsertionMode.TEXT;\n        this.originalInsertionMode = InsertionMode.IN_BODY;\n        this.tokenizer.state = TokenizerMode.PLAINTEXT;\n    }\n    //Fragment parsing\n    _getAdjustedCurrentElement() {\n        return this.openElements.stackTop === 0 && this.fragmentContext\n            ? this.fragmentContext\n            : this.openElements.current;\n    }\n    _findFormInFragmentContext() {\n        let node = this.fragmentContext;\n        while (node) {\n            if (this.treeAdapter.getTagName(node) === TN.FORM) {\n                this.formElement = node;\n                break;\n            }\n            node = this.treeAdapter.getParentNode(node);\n        }\n    }\n    _initTokenizerForFragmentParsing() {\n        if (!this.fragmentContext || this.treeAdapter.getNamespaceURI(this.fragmentContext) !== NS.HTML) {\n            return;\n        }\n        switch (this.fragmentContextID) {\n            case $.TITLE:\n            case $.TEXTAREA: {\n                this.tokenizer.state = TokenizerMode.RCDATA;\n                break;\n            }\n            case $.STYLE:\n            case $.XMP:\n            case $.IFRAME:\n            case $.NOEMBED:\n            case $.NOFRAMES:\n            case $.NOSCRIPT: {\n                this.tokenizer.state = TokenizerMode.RAWTEXT;\n                break;\n            }\n            case $.SCRIPT: {\n                this.tokenizer.state = TokenizerMode.SCRIPT_DATA;\n                break;\n            }\n            case $.PLAINTEXT: {\n                this.tokenizer.state = TokenizerMode.PLAINTEXT;\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    //Tree mutation\n    _setDocumentType(token) {\n        const name = token.name || '';\n        const publicId = token.publicId || '';\n        const systemId = token.systemId || '';\n        this.treeAdapter.setDocumentType(this.document, name, publicId, systemId);\n        if (token.location) {\n            const documentChildren = this.treeAdapter.getChildNodes(this.document);\n            const docTypeNode = documentChildren.find((node) => this.treeAdapter.isDocumentTypeNode(node));\n            if (docTypeNode) {\n                this.treeAdapter.setNodeSourceCodeLocation(docTypeNode, token.location);\n            }\n        }\n    }\n    _attachElementToTree(element, location) {\n        if (this.options.sourceCodeLocationInfo) {\n            const loc = location && {\n                ...location,\n                startTag: location,\n            };\n            this.treeAdapter.setNodeSourceCodeLocation(element, loc);\n        }\n        if (this._shouldFosterParentOnInsertion()) {\n            this._fosterParentElement(element);\n        }\n        else {\n            const parent = this.openElements.currentTmplContentOrNode;\n            this.treeAdapter.appendChild(parent, element);\n        }\n    }\n    _appendElement(token, namespaceURI) {\n        const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n        this._attachElementToTree(element, token.location);\n    }\n    _insertElement(token, namespaceURI) {\n        const element = this.treeAdapter.createElement(token.tagName, namespaceURI, token.attrs);\n        this._attachElementToTree(element, token.location);\n        this.openElements.push(element, token.tagID);\n    }\n    _insertFakeElement(tagName, tagID) {\n        const element = this.treeAdapter.createElement(tagName, NS.HTML, []);\n        this._attachElementToTree(element, null);\n        this.openElements.push(element, tagID);\n    }\n    _insertTemplate(token) {\n        const tmpl = this.treeAdapter.createElement(token.tagName, NS.HTML, token.attrs);\n        const content = this.treeAdapter.createDocumentFragment();\n        this.treeAdapter.setTemplateContent(tmpl, content);\n        this._attachElementToTree(tmpl, token.location);\n        this.openElements.push(tmpl, token.tagID);\n        if (this.options.sourceCodeLocationInfo)\n            this.treeAdapter.setNodeSourceCodeLocation(content, null);\n    }\n    _insertFakeRootElement() {\n        const element = this.treeAdapter.createElement(TN.HTML, NS.HTML, []);\n        if (this.options.sourceCodeLocationInfo)\n            this.treeAdapter.setNodeSourceCodeLocation(element, null);\n        this.treeAdapter.appendChild(this.openElements.current, element);\n        this.openElements.push(element, $.HTML);\n    }\n    _appendCommentNode(token, parent) {\n        const commentNode = this.treeAdapter.createCommentNode(token.data);\n        this.treeAdapter.appendChild(parent, commentNode);\n        if (this.options.sourceCodeLocationInfo) {\n            this.treeAdapter.setNodeSourceCodeLocation(commentNode, token.location);\n        }\n    }\n    _insertCharacters(token) {\n        let parent;\n        let beforeElement;\n        if (this._shouldFosterParentOnInsertion()) {\n            ({ parent, beforeElement } = this._findFosterParentingLocation());\n            if (beforeElement) {\n                this.treeAdapter.insertTextBefore(parent, token.chars, beforeElement);\n            }\n            else {\n                this.treeAdapter.insertText(parent, token.chars);\n            }\n        }\n        else {\n            parent = this.openElements.currentTmplContentOrNode;\n            this.treeAdapter.insertText(parent, token.chars);\n        }\n        if (!token.location)\n            return;\n        const siblings = this.treeAdapter.getChildNodes(parent);\n        const textNodeIdx = beforeElement ? siblings.lastIndexOf(beforeElement) : siblings.length;\n        const textNode = siblings[textNodeIdx - 1];\n        //NOTE: if we have a location assigned by another token, then just update the end position\n        const tnLoc = this.treeAdapter.getNodeSourceCodeLocation(textNode);\n        if (tnLoc) {\n            const { endLine, endCol, endOffset } = token.location;\n            this.treeAdapter.updateNodeSourceCodeLocation(textNode, { endLine, endCol, endOffset });\n        }\n        else if (this.options.sourceCodeLocationInfo) {\n            this.treeAdapter.setNodeSourceCodeLocation(textNode, token.location);\n        }\n    }\n    _adoptNodes(donor, recipient) {\n        for (let child = this.treeAdapter.getFirstChild(donor); child; child = this.treeAdapter.getFirstChild(donor)) {\n            this.treeAdapter.detachNode(child);\n            this.treeAdapter.appendChild(recipient, child);\n        }\n    }\n    _setEndLocation(element, closingToken) {\n        if (this.treeAdapter.getNodeSourceCodeLocation(element) && closingToken.location) {\n            const ctLoc = closingToken.location;\n            const tn = this.treeAdapter.getTagName(element);\n            const endLoc = \n            // NOTE: For cases like <p> <p> </p> - First 'p' closes without a closing\n            // tag and for cases like <td> <p> </td> - 'p' closes without a closing tag.\n            closingToken.type === TokenType.END_TAG && tn === closingToken.tagName\n                ? {\n                    endTag: { ...ctLoc },\n                    endLine: ctLoc.endLine,\n                    endCol: ctLoc.endCol,\n                    endOffset: ctLoc.endOffset,\n                }\n                : {\n                    endLine: ctLoc.startLine,\n                    endCol: ctLoc.startCol,\n                    endOffset: ctLoc.startOffset,\n                };\n            this.treeAdapter.updateNodeSourceCodeLocation(element, endLoc);\n        }\n    }\n    //Token processing\n    shouldProcessStartTagTokenInForeignContent(token) {\n        // Check that neither current === document, or ns === NS.HTML\n        if (!this.currentNotInHTML)\n            return false;\n        let current;\n        let currentTagId;\n        if (this.openElements.stackTop === 0 && this.fragmentContext) {\n            current = this.fragmentContext;\n            currentTagId = this.fragmentContextID;\n        }\n        else {\n            ({ current, currentTagId } = this.openElements);\n        }\n        if (token.tagID === $.SVG &&\n            this.treeAdapter.getTagName(current) === TN.ANNOTATION_XML &&\n            this.treeAdapter.getNamespaceURI(current) === NS.MATHML) {\n            return false;\n        }\n        return (\n        // Check that `current` is not an integration point for HTML or MathML elements.\n        this.tokenizer.inForeignNode ||\n            // If it _is_ an integration point, then we might have to check that it is not an HTML\n            // integration point.\n            ((token.tagID === $.MGLYPH || token.tagID === $.MALIGNMARK) &&\n                !this._isIntegrationPoint(currentTagId, current, NS.HTML)));\n    }\n    _processToken(token) {\n        switch (token.type) {\n            case TokenType.CHARACTER: {\n                this.onCharacter(token);\n                break;\n            }\n            case TokenType.NULL_CHARACTER: {\n                this.onNullCharacter(token);\n                break;\n            }\n            case TokenType.COMMENT: {\n                this.onComment(token);\n                break;\n            }\n            case TokenType.DOCTYPE: {\n                this.onDoctype(token);\n                break;\n            }\n            case TokenType.START_TAG: {\n                this._processStartTag(token);\n                break;\n            }\n            case TokenType.END_TAG: {\n                this.onEndTag(token);\n                break;\n            }\n            case TokenType.EOF: {\n                this.onEof(token);\n                break;\n            }\n            case TokenType.WHITESPACE_CHARACTER: {\n                this.onWhitespaceCharacter(token);\n                break;\n            }\n        }\n    }\n    //Integration points\n    _isIntegrationPoint(tid, element, foreignNS) {\n        const ns = this.treeAdapter.getNamespaceURI(element);\n        const attrs = this.treeAdapter.getAttrList(element);\n        return foreignContent.isIntegrationPoint(tid, ns, attrs, foreignNS);\n    }\n    //Active formatting elements reconstruction\n    _reconstructActiveFormattingElements() {\n        const listLength = this.activeFormattingElements.entries.length;\n        if (listLength) {\n            const endIndex = this.activeFormattingElements.entries.findIndex((entry) => entry.type === EntryType.Marker || this.openElements.contains(entry.element));\n            const unopenIdx = endIndex < 0 ? listLength - 1 : endIndex - 1;\n            for (let i = unopenIdx; i >= 0; i--) {\n                const entry = this.activeFormattingElements.entries[i];\n                this._insertElement(entry.token, this.treeAdapter.getNamespaceURI(entry.element));\n                entry.element = this.openElements.current;\n            }\n        }\n    }\n    //Close elements\n    _closeTableCell() {\n        this.openElements.generateImpliedEndTags();\n        this.openElements.popUntilTableCellPopped();\n        this.activeFormattingElements.clearToLastMarker();\n        this.insertionMode = InsertionMode.IN_ROW;\n    }\n    _closePElement() {\n        this.openElements.generateImpliedEndTagsWithExclusion($.P);\n        this.openElements.popUntilTagNamePopped($.P);\n    }\n    //Insertion modes\n    _resetInsertionMode() {\n        for (let i = this.openElements.stackTop; i >= 0; i--) {\n            //Insertion mode reset map\n            switch (i === 0 && this.fragmentContext ? this.fragmentContextID : this.openElements.tagIDs[i]) {\n                case $.TR: {\n                    this.insertionMode = InsertionMode.IN_ROW;\n                    return;\n                }\n                case $.TBODY:\n                case $.THEAD:\n                case $.TFOOT: {\n                    this.insertionMode = InsertionMode.IN_TABLE_BODY;\n                    return;\n                }\n                case $.CAPTION: {\n                    this.insertionMode = InsertionMode.IN_CAPTION;\n                    return;\n                }\n                case $.COLGROUP: {\n                    this.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n                    return;\n                }\n                case $.TABLE: {\n                    this.insertionMode = InsertionMode.IN_TABLE;\n                    return;\n                }\n                case $.BODY: {\n                    this.insertionMode = InsertionMode.IN_BODY;\n                    return;\n                }\n                case $.FRAMESET: {\n                    this.insertionMode = InsertionMode.IN_FRAMESET;\n                    return;\n                }\n                case $.SELECT: {\n                    this._resetInsertionModeForSelect(i);\n                    return;\n                }\n                case $.TEMPLATE: {\n                    this.insertionMode = this.tmplInsertionModeStack[0];\n                    return;\n                }\n                case $.HTML: {\n                    this.insertionMode = this.headElement ? InsertionMode.AFTER_HEAD : InsertionMode.BEFORE_HEAD;\n                    return;\n                }\n                case $.TD:\n                case $.TH: {\n                    if (i > 0) {\n                        this.insertionMode = InsertionMode.IN_CELL;\n                        return;\n                    }\n                    break;\n                }\n                case $.HEAD: {\n                    if (i > 0) {\n                        this.insertionMode = InsertionMode.IN_HEAD;\n                        return;\n                    }\n                    break;\n                }\n            }\n        }\n        this.insertionMode = InsertionMode.IN_BODY;\n    }\n    _resetInsertionModeForSelect(selectIdx) {\n        if (selectIdx > 0) {\n            for (let i = selectIdx - 1; i > 0; i--) {\n                const tn = this.openElements.tagIDs[i];\n                if (tn === $.TEMPLATE) {\n                    break;\n                }\n                else if (tn === $.TABLE) {\n                    this.insertionMode = InsertionMode.IN_SELECT_IN_TABLE;\n                    return;\n                }\n            }\n        }\n        this.insertionMode = InsertionMode.IN_SELECT;\n    }\n    //Foster parenting\n    _isElementCausesFosterParenting(tn) {\n        return TABLE_STRUCTURE_TAGS.has(tn);\n    }\n    _shouldFosterParentOnInsertion() {\n        return this.fosterParentingEnabled && this._isElementCausesFosterParenting(this.openElements.currentTagId);\n    }\n    _findFosterParentingLocation() {\n        for (let i = this.openElements.stackTop; i >= 0; i--) {\n            const openElement = this.openElements.items[i];\n            switch (this.openElements.tagIDs[i]) {\n                case $.TEMPLATE: {\n                    if (this.treeAdapter.getNamespaceURI(openElement) === NS.HTML) {\n                        return { parent: this.treeAdapter.getTemplateContent(openElement), beforeElement: null };\n                    }\n                    break;\n                }\n                case $.TABLE: {\n                    const parent = this.treeAdapter.getParentNode(openElement);\n                    if (parent) {\n                        return { parent, beforeElement: openElement };\n                    }\n                    return { parent: this.openElements.items[i - 1], beforeElement: null };\n                }\n                default:\n                // Do nothing\n            }\n        }\n        return { parent: this.openElements.items[0], beforeElement: null };\n    }\n    _fosterParentElement(element) {\n        const location = this._findFosterParentingLocation();\n        if (location.beforeElement) {\n            this.treeAdapter.insertBefore(location.parent, element, location.beforeElement);\n        }\n        else {\n            this.treeAdapter.appendChild(location.parent, element);\n        }\n    }\n    //Special elements\n    _isSpecialElement(element, id) {\n        const ns = this.treeAdapter.getNamespaceURI(element);\n        return SPECIAL_ELEMENTS[ns].has(id);\n    }\n    onCharacter(token) {\n        this.skipNextNewLine = false;\n        if (this.tokenizer.inForeignNode) {\n            characterInForeignContent(this, token);\n            return;\n        }\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                tokenInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HTML: {\n                tokenBeforeHtml(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD: {\n                tokenBeforeHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD: {\n                tokenInHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD_NO_SCRIPT: {\n                tokenInHeadNoScript(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_HEAD: {\n                tokenAfterHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_BODY:\n            case InsertionMode.IN_CAPTION:\n            case InsertionMode.IN_CELL:\n            case InsertionMode.IN_TEMPLATE: {\n                characterInBody(this, token);\n                break;\n            }\n            case InsertionMode.TEXT:\n            case InsertionMode.IN_SELECT:\n            case InsertionMode.IN_SELECT_IN_TABLE: {\n                this._insertCharacters(token);\n                break;\n            }\n            case InsertionMode.IN_TABLE:\n            case InsertionMode.IN_TABLE_BODY:\n            case InsertionMode.IN_ROW: {\n                characterInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                characterInTableText(this, token);\n                break;\n            }\n            case InsertionMode.IN_COLUMN_GROUP: {\n                tokenInColumnGroup(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY: {\n                tokenAfterBody(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_BODY: {\n                tokenAfterAfterBody(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    onNullCharacter(token) {\n        this.skipNextNewLine = false;\n        if (this.tokenizer.inForeignNode) {\n            nullCharacterInForeignContent(this, token);\n            return;\n        }\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                tokenInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HTML: {\n                tokenBeforeHtml(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD: {\n                tokenBeforeHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD: {\n                tokenInHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD_NO_SCRIPT: {\n                tokenInHeadNoScript(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_HEAD: {\n                tokenAfterHead(this, token);\n                break;\n            }\n            case InsertionMode.TEXT: {\n                this._insertCharacters(token);\n                break;\n            }\n            case InsertionMode.IN_TABLE:\n            case InsertionMode.IN_TABLE_BODY:\n            case InsertionMode.IN_ROW: {\n                characterInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_COLUMN_GROUP: {\n                tokenInColumnGroup(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY: {\n                tokenAfterBody(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_BODY: {\n                tokenAfterAfterBody(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    onComment(token) {\n        this.skipNextNewLine = false;\n        if (this.currentNotInHTML) {\n            appendComment(this, token);\n            return;\n        }\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL:\n            case InsertionMode.BEFORE_HTML:\n            case InsertionMode.BEFORE_HEAD:\n            case InsertionMode.IN_HEAD:\n            case InsertionMode.IN_HEAD_NO_SCRIPT:\n            case InsertionMode.AFTER_HEAD:\n            case InsertionMode.IN_BODY:\n            case InsertionMode.IN_TABLE:\n            case InsertionMode.IN_CAPTION:\n            case InsertionMode.IN_COLUMN_GROUP:\n            case InsertionMode.IN_TABLE_BODY:\n            case InsertionMode.IN_ROW:\n            case InsertionMode.IN_CELL:\n            case InsertionMode.IN_SELECT:\n            case InsertionMode.IN_SELECT_IN_TABLE:\n            case InsertionMode.IN_TEMPLATE:\n            case InsertionMode.IN_FRAMESET:\n            case InsertionMode.AFTER_FRAMESET: {\n                appendComment(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                tokenInTableText(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY: {\n                appendCommentToRootHtmlElement(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_BODY:\n            case InsertionMode.AFTER_AFTER_FRAMESET: {\n                appendCommentToDocument(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    onDoctype(token) {\n        this.skipNextNewLine = false;\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                doctypeInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD:\n            case InsertionMode.IN_HEAD:\n            case InsertionMode.IN_HEAD_NO_SCRIPT:\n            case InsertionMode.AFTER_HEAD: {\n                this._err(token, ERR.misplacedDoctype);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                tokenInTableText(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    onStartTag(token) {\n        this.skipNextNewLine = false;\n        this.currentToken = token;\n        this._processStartTag(token);\n        if (token.selfClosing && !token.ackSelfClosing) {\n            this._err(token, ERR.nonVoidHtmlElementStartTagWithTrailingSolidus);\n        }\n    }\n    /**\n     * Processes a given start tag.\n     *\n     * `onStartTag` checks if a self-closing tag was recognized. When a token\n     * is moved inbetween multiple insertion modes, this check for self-closing\n     * could lead to false positives. To avoid this, `_processStartTag` is used\n     * for nested calls.\n     *\n     * @param token The token to process.\n     */\n    _processStartTag(token) {\n        if (this.shouldProcessStartTagTokenInForeignContent(token)) {\n            startTagInForeignContent(this, token);\n        }\n        else {\n            this._startTagOutsideForeignContent(token);\n        }\n    }\n    _startTagOutsideForeignContent(token) {\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                tokenInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HTML: {\n                startTagBeforeHtml(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD: {\n                startTagBeforeHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD: {\n                startTagInHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD_NO_SCRIPT: {\n                startTagInHeadNoScript(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_HEAD: {\n                startTagAfterHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_BODY: {\n                startTagInBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE: {\n                startTagInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                tokenInTableText(this, token);\n                break;\n            }\n            case InsertionMode.IN_CAPTION: {\n                startTagInCaption(this, token);\n                break;\n            }\n            case InsertionMode.IN_COLUMN_GROUP: {\n                startTagInColumnGroup(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_BODY: {\n                startTagInTableBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_ROW: {\n                startTagInRow(this, token);\n                break;\n            }\n            case InsertionMode.IN_CELL: {\n                startTagInCell(this, token);\n                break;\n            }\n            case InsertionMode.IN_SELECT: {\n                startTagInSelect(this, token);\n                break;\n            }\n            case InsertionMode.IN_SELECT_IN_TABLE: {\n                startTagInSelectInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TEMPLATE: {\n                startTagInTemplate(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY: {\n                startTagAfterBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_FRAMESET: {\n                startTagInFrameset(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_FRAMESET: {\n                startTagAfterFrameset(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_BODY: {\n                startTagAfterAfterBody(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_FRAMESET: {\n                startTagAfterAfterFrameset(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    onEndTag(token) {\n        this.skipNextNewLine = false;\n        this.currentToken = token;\n        if (this.currentNotInHTML) {\n            endTagInForeignContent(this, token);\n        }\n        else {\n            this._endTagOutsideForeignContent(token);\n        }\n    }\n    _endTagOutsideForeignContent(token) {\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                tokenInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HTML: {\n                endTagBeforeHtml(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD: {\n                endTagBeforeHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD: {\n                endTagInHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD_NO_SCRIPT: {\n                endTagInHeadNoScript(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_HEAD: {\n                endTagAfterHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_BODY: {\n                endTagInBody(this, token);\n                break;\n            }\n            case InsertionMode.TEXT: {\n                endTagInText(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE: {\n                endTagInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                tokenInTableText(this, token);\n                break;\n            }\n            case InsertionMode.IN_CAPTION: {\n                endTagInCaption(this, token);\n                break;\n            }\n            case InsertionMode.IN_COLUMN_GROUP: {\n                endTagInColumnGroup(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_BODY: {\n                endTagInTableBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_ROW: {\n                endTagInRow(this, token);\n                break;\n            }\n            case InsertionMode.IN_CELL: {\n                endTagInCell(this, token);\n                break;\n            }\n            case InsertionMode.IN_SELECT: {\n                endTagInSelect(this, token);\n                break;\n            }\n            case InsertionMode.IN_SELECT_IN_TABLE: {\n                endTagInSelectInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TEMPLATE: {\n                endTagInTemplate(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY: {\n                endTagAfterBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_FRAMESET: {\n                endTagInFrameset(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_FRAMESET: {\n                endTagAfterFrameset(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_AFTER_BODY: {\n                tokenAfterAfterBody(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    onEof(token) {\n        switch (this.insertionMode) {\n            case InsertionMode.INITIAL: {\n                tokenInInitialMode(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HTML: {\n                tokenBeforeHtml(this, token);\n                break;\n            }\n            case InsertionMode.BEFORE_HEAD: {\n                tokenBeforeHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD: {\n                tokenInHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_HEAD_NO_SCRIPT: {\n                tokenInHeadNoScript(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_HEAD: {\n                tokenAfterHead(this, token);\n                break;\n            }\n            case InsertionMode.IN_BODY:\n            case InsertionMode.IN_TABLE:\n            case InsertionMode.IN_CAPTION:\n            case InsertionMode.IN_COLUMN_GROUP:\n            case InsertionMode.IN_TABLE_BODY:\n            case InsertionMode.IN_ROW:\n            case InsertionMode.IN_CELL:\n            case InsertionMode.IN_SELECT:\n            case InsertionMode.IN_SELECT_IN_TABLE: {\n                eofInBody(this, token);\n                break;\n            }\n            case InsertionMode.TEXT: {\n                eofInText(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                tokenInTableText(this, token);\n                break;\n            }\n            case InsertionMode.IN_TEMPLATE: {\n                eofInTemplate(this, token);\n                break;\n            }\n            case InsertionMode.AFTER_BODY:\n            case InsertionMode.IN_FRAMESET:\n            case InsertionMode.AFTER_FRAMESET:\n            case InsertionMode.AFTER_AFTER_BODY:\n            case InsertionMode.AFTER_AFTER_FRAMESET: {\n                stopParsing(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n    onWhitespaceCharacter(token) {\n        if (this.skipNextNewLine) {\n            this.skipNextNewLine = false;\n            if (token.chars.charCodeAt(0) === unicode.CODE_POINTS.LINE_FEED) {\n                if (token.chars.length === 1) {\n                    return;\n                }\n                token.chars = token.chars.substr(1);\n            }\n        }\n        if (this.tokenizer.inForeignNode) {\n            this._insertCharacters(token);\n            return;\n        }\n        switch (this.insertionMode) {\n            case InsertionMode.IN_HEAD:\n            case InsertionMode.IN_HEAD_NO_SCRIPT:\n            case InsertionMode.AFTER_HEAD:\n            case InsertionMode.TEXT:\n            case InsertionMode.IN_COLUMN_GROUP:\n            case InsertionMode.IN_SELECT:\n            case InsertionMode.IN_SELECT_IN_TABLE:\n            case InsertionMode.IN_FRAMESET:\n            case InsertionMode.AFTER_FRAMESET: {\n                this._insertCharacters(token);\n                break;\n            }\n            case InsertionMode.IN_BODY:\n            case InsertionMode.IN_CAPTION:\n            case InsertionMode.IN_CELL:\n            case InsertionMode.IN_TEMPLATE:\n            case InsertionMode.AFTER_BODY:\n            case InsertionMode.AFTER_AFTER_BODY:\n            case InsertionMode.AFTER_AFTER_FRAMESET: {\n                whitespaceCharacterInBody(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE:\n            case InsertionMode.IN_TABLE_BODY:\n            case InsertionMode.IN_ROW: {\n                characterInTable(this, token);\n                break;\n            }\n            case InsertionMode.IN_TABLE_TEXT: {\n                whitespaceCharacterInTableText(this, token);\n                break;\n            }\n            default:\n            // Do nothing\n        }\n    }\n}\n//Adoption agency algorithm\n//(see: http://www.whatwg.org/specs/web-apps/current-work/multipage/tree-construction.html#adoptionAgency)\n//------------------------------------------------------------------\n//Steps 5-8 of the algorithm\nfunction aaObtainFormattingElementEntry(p, token) {\n    let formattingElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(token.tagName);\n    if (formattingElementEntry) {\n        if (!p.openElements.contains(formattingElementEntry.element)) {\n            p.activeFormattingElements.removeEntry(formattingElementEntry);\n            formattingElementEntry = null;\n        }\n        else if (!p.openElements.hasInScope(token.tagID)) {\n            formattingElementEntry = null;\n        }\n    }\n    else {\n        genericEndTagInBody(p, token);\n    }\n    return formattingElementEntry;\n}\n//Steps 9 and 10 of the algorithm\nfunction aaObtainFurthestBlock(p, formattingElementEntry) {\n    let furthestBlock = null;\n    let idx = p.openElements.stackTop;\n    for (; idx >= 0; idx--) {\n        const element = p.openElements.items[idx];\n        if (element === formattingElementEntry.element) {\n            break;\n        }\n        if (p._isSpecialElement(element, p.openElements.tagIDs[idx])) {\n            furthestBlock = element;\n        }\n    }\n    if (!furthestBlock) {\n        p.openElements.shortenToLength(idx < 0 ? 0 : idx);\n        p.activeFormattingElements.removeEntry(formattingElementEntry);\n    }\n    return furthestBlock;\n}\n//Step 13 of the algorithm\nfunction aaInnerLoop(p, furthestBlock, formattingElement) {\n    let lastElement = furthestBlock;\n    let nextElement = p.openElements.getCommonAncestor(furthestBlock);\n    for (let i = 0, element = nextElement; element !== formattingElement; i++, element = nextElement) {\n        //NOTE: store the next element for the next loop iteration (it may be deleted from the stack by step 9.5)\n        nextElement = p.openElements.getCommonAncestor(element);\n        const elementEntry = p.activeFormattingElements.getElementEntry(element);\n        const counterOverflow = elementEntry && i >= AA_INNER_LOOP_ITER;\n        const shouldRemoveFromOpenElements = !elementEntry || counterOverflow;\n        if (shouldRemoveFromOpenElements) {\n            if (counterOverflow) {\n                p.activeFormattingElements.removeEntry(elementEntry);\n            }\n            p.openElements.remove(element);\n        }\n        else {\n            element = aaRecreateElementFromEntry(p, elementEntry);\n            if (lastElement === furthestBlock) {\n                p.activeFormattingElements.bookmark = elementEntry;\n            }\n            p.treeAdapter.detachNode(lastElement);\n            p.treeAdapter.appendChild(element, lastElement);\n            lastElement = element;\n        }\n    }\n    return lastElement;\n}\n//Step 13.7 of the algorithm\nfunction aaRecreateElementFromEntry(p, elementEntry) {\n    const ns = p.treeAdapter.getNamespaceURI(elementEntry.element);\n    const newElement = p.treeAdapter.createElement(elementEntry.token.tagName, ns, elementEntry.token.attrs);\n    p.openElements.replace(elementEntry.element, newElement);\n    elementEntry.element = newElement;\n    return newElement;\n}\n//Step 14 of the algorithm\nfunction aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement) {\n    const tn = p.treeAdapter.getTagName(commonAncestor);\n    const tid = getTagID(tn);\n    if (p._isElementCausesFosterParenting(tid)) {\n        p._fosterParentElement(lastElement);\n    }\n    else {\n        const ns = p.treeAdapter.getNamespaceURI(commonAncestor);\n        if (tid === $.TEMPLATE && ns === NS.HTML) {\n            commonAncestor = p.treeAdapter.getTemplateContent(commonAncestor);\n        }\n        p.treeAdapter.appendChild(commonAncestor, lastElement);\n    }\n}\n//Steps 15-19 of the algorithm\nfunction aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry) {\n    const ns = p.treeAdapter.getNamespaceURI(formattingElementEntry.element);\n    const { token } = formattingElementEntry;\n    const newElement = p.treeAdapter.createElement(token.tagName, ns, token.attrs);\n    p._adoptNodes(furthestBlock, newElement);\n    p.treeAdapter.appendChild(furthestBlock, newElement);\n    p.activeFormattingElements.insertElementAfterBookmark(newElement, token);\n    p.activeFormattingElements.removeEntry(formattingElementEntry);\n    p.openElements.remove(formattingElementEntry.element);\n    p.openElements.insertAfter(furthestBlock, newElement, token.tagID);\n}\n//Algorithm entry point\nfunction callAdoptionAgency(p, token) {\n    for (let i = 0; i < AA_OUTER_LOOP_ITER; i++) {\n        const formattingElementEntry = aaObtainFormattingElementEntry(p, token);\n        if (!formattingElementEntry) {\n            break;\n        }\n        const furthestBlock = aaObtainFurthestBlock(p, formattingElementEntry);\n        if (!furthestBlock) {\n            break;\n        }\n        p.activeFormattingElements.bookmark = formattingElementEntry;\n        const lastElement = aaInnerLoop(p, furthestBlock, formattingElementEntry.element);\n        const commonAncestor = p.openElements.getCommonAncestor(formattingElementEntry.element);\n        p.treeAdapter.detachNode(lastElement);\n        if (commonAncestor)\n            aaInsertLastNodeInCommonAncestor(p, commonAncestor, lastElement);\n        aaReplaceFormattingElement(p, furthestBlock, formattingElementEntry);\n    }\n}\n//Generic token handlers\n//------------------------------------------------------------------\nfunction appendComment(p, token) {\n    p._appendCommentNode(token, p.openElements.currentTmplContentOrNode);\n}\nfunction appendCommentToRootHtmlElement(p, token) {\n    p._appendCommentNode(token, p.openElements.items[0]);\n}\nfunction appendCommentToDocument(p, token) {\n    p._appendCommentNode(token, p.document);\n}\nfunction stopParsing(p, token) {\n    p.stopped = true;\n    // NOTE: Set end locations for elements that remain on the open element stack.\n    if (token.location) {\n        // NOTE: If we are not in a fragment, `html` and `body` will stay on the stack.\n        // This is a problem, as we might overwrite their end position here.\n        const target = p.fragmentContext ? 0 : 2;\n        for (let i = p.openElements.stackTop; i >= target; i--) {\n            p._setEndLocation(p.openElements.items[i], token);\n        }\n        // Handle `html` and `body`\n        if (!p.fragmentContext && p.openElements.stackTop >= 0) {\n            const htmlElement = p.openElements.items[0];\n            const htmlLocation = p.treeAdapter.getNodeSourceCodeLocation(htmlElement);\n            if (htmlLocation && !htmlLocation.endTag) {\n                p._setEndLocation(htmlElement, token);\n                if (p.openElements.stackTop >= 1) {\n                    const bodyElement = p.openElements.items[1];\n                    const bodyLocation = p.treeAdapter.getNodeSourceCodeLocation(bodyElement);\n                    if (bodyLocation && !bodyLocation.endTag) {\n                        p._setEndLocation(bodyElement, token);\n                    }\n                }\n            }\n        }\n    }\n}\n// The \"initial\" insertion mode\n//------------------------------------------------------------------\nfunction doctypeInInitialMode(p, token) {\n    p._setDocumentType(token);\n    const mode = token.forceQuirks ? DOCUMENT_MODE.QUIRKS : doctype.getDocumentMode(token);\n    if (!doctype.isConforming(token)) {\n        p._err(token, ERR.nonConformingDoctype);\n    }\n    p.treeAdapter.setDocumentMode(p.document, mode);\n    p.insertionMode = InsertionMode.BEFORE_HTML;\n}\nfunction tokenInInitialMode(p, token) {\n    p._err(token, ERR.missingDoctype, true);\n    p.treeAdapter.setDocumentMode(p.document, DOCUMENT_MODE.QUIRKS);\n    p.insertionMode = InsertionMode.BEFORE_HTML;\n    p._processToken(token);\n}\n// The \"before html\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHtml(p, token) {\n    if (token.tagID === $.HTML) {\n        p._insertElement(token, NS.HTML);\n        p.insertionMode = InsertionMode.BEFORE_HEAD;\n    }\n    else {\n        tokenBeforeHtml(p, token);\n    }\n}\nfunction endTagBeforeHtml(p, token) {\n    const tn = token.tagID;\n    if (tn === $.HTML || tn === $.HEAD || tn === $.BODY || tn === $.BR) {\n        tokenBeforeHtml(p, token);\n    }\n}\nfunction tokenBeforeHtml(p, token) {\n    p._insertFakeRootElement();\n    p.insertionMode = InsertionMode.BEFORE_HEAD;\n    p._processToken(token);\n}\n// The \"before head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagBeforeHead(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.HEAD: {\n            p._insertElement(token, NS.HTML);\n            p.headElement = p.openElements.current;\n            p.insertionMode = InsertionMode.IN_HEAD;\n            break;\n        }\n        default: {\n            tokenBeforeHead(p, token);\n        }\n    }\n}\nfunction endTagBeforeHead(p, token) {\n    const tn = token.tagID;\n    if (tn === $.HEAD || tn === $.BODY || tn === $.HTML || tn === $.BR) {\n        tokenBeforeHead(p, token);\n    }\n    else {\n        p._err(token, ERR.endTagWithoutMatchingOpenElement);\n    }\n}\nfunction tokenBeforeHead(p, token) {\n    p._insertFakeElement(TN.HEAD, $.HEAD);\n    p.headElement = p.openElements.current;\n    p.insertionMode = InsertionMode.IN_HEAD;\n    p._processToken(token);\n}\n// The \"in head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHead(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.BASE:\n        case $.BASEFONT:\n        case $.BGSOUND:\n        case $.LINK:\n        case $.META: {\n            p._appendElement(token, NS.HTML);\n            token.ackSelfClosing = true;\n            break;\n        }\n        case $.TITLE: {\n            p._switchToTextParsing(token, TokenizerMode.RCDATA);\n            break;\n        }\n        case $.NOSCRIPT: {\n            if (p.options.scriptingEnabled) {\n                p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n            }\n            else {\n                p._insertElement(token, NS.HTML);\n                p.insertionMode = InsertionMode.IN_HEAD_NO_SCRIPT;\n            }\n            break;\n        }\n        case $.NOFRAMES:\n        case $.STYLE: {\n            p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n            break;\n        }\n        case $.SCRIPT: {\n            p._switchToTextParsing(token, TokenizerMode.SCRIPT_DATA);\n            break;\n        }\n        case $.TEMPLATE: {\n            p._insertTemplate(token);\n            p.activeFormattingElements.insertMarker();\n            p.framesetOk = false;\n            p.insertionMode = InsertionMode.IN_TEMPLATE;\n            p.tmplInsertionModeStack.unshift(InsertionMode.IN_TEMPLATE);\n            break;\n        }\n        case $.HEAD: {\n            p._err(token, ERR.misplacedStartTagForHeadElement);\n            break;\n        }\n        default: {\n            tokenInHead(p, token);\n        }\n    }\n}\nfunction endTagInHead(p, token) {\n    switch (token.tagID) {\n        case $.HEAD: {\n            p.openElements.pop();\n            p.insertionMode = InsertionMode.AFTER_HEAD;\n            break;\n        }\n        case $.BODY:\n        case $.BR:\n        case $.HTML: {\n            tokenInHead(p, token);\n            break;\n        }\n        case $.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        default: {\n            p._err(token, ERR.endTagWithoutMatchingOpenElement);\n        }\n    }\n}\nfunction templateEndTagInHead(p, token) {\n    if (p.openElements.tmplCount > 0) {\n        p.openElements.generateImpliedEndTagsThoroughly();\n        if (p.openElements.currentTagId !== $.TEMPLATE) {\n            p._err(token, ERR.closingOfElementWithOpenChildElements);\n        }\n        p.openElements.popUntilTagNamePopped($.TEMPLATE);\n        p.activeFormattingElements.clearToLastMarker();\n        p.tmplInsertionModeStack.shift();\n        p._resetInsertionMode();\n    }\n    else {\n        p._err(token, ERR.endTagWithoutMatchingOpenElement);\n    }\n}\nfunction tokenInHead(p, token) {\n    p.openElements.pop();\n    p.insertionMode = InsertionMode.AFTER_HEAD;\n    p._processToken(token);\n}\n// The \"in head no script\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInHeadNoScript(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.BASEFONT:\n        case $.BGSOUND:\n        case $.HEAD:\n        case $.LINK:\n        case $.META:\n        case $.NOFRAMES:\n        case $.STYLE: {\n            startTagInHead(p, token);\n            break;\n        }\n        case $.NOSCRIPT: {\n            p._err(token, ERR.nestedNoscriptInHead);\n            break;\n        }\n        default: {\n            tokenInHeadNoScript(p, token);\n        }\n    }\n}\nfunction endTagInHeadNoScript(p, token) {\n    switch (token.tagID) {\n        case $.NOSCRIPT: {\n            p.openElements.pop();\n            p.insertionMode = InsertionMode.IN_HEAD;\n            break;\n        }\n        case $.BR: {\n            tokenInHeadNoScript(p, token);\n            break;\n        }\n        default: {\n            p._err(token, ERR.endTagWithoutMatchingOpenElement);\n        }\n    }\n}\nfunction tokenInHeadNoScript(p, token) {\n    const errCode = token.type === TokenType.EOF ? ERR.openElementsLeftAfterEof : ERR.disallowedContentInNoscriptInHead;\n    p._err(token, errCode);\n    p.openElements.pop();\n    p.insertionMode = InsertionMode.IN_HEAD;\n    p._processToken(token);\n}\n// The \"after head\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterHead(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.BODY: {\n            p._insertElement(token, NS.HTML);\n            p.framesetOk = false;\n            p.insertionMode = InsertionMode.IN_BODY;\n            break;\n        }\n        case $.FRAMESET: {\n            p._insertElement(token, NS.HTML);\n            p.insertionMode = InsertionMode.IN_FRAMESET;\n            break;\n        }\n        case $.BASE:\n        case $.BASEFONT:\n        case $.BGSOUND:\n        case $.LINK:\n        case $.META:\n        case $.NOFRAMES:\n        case $.SCRIPT:\n        case $.STYLE:\n        case $.TEMPLATE:\n        case $.TITLE: {\n            p._err(token, ERR.abandonedHeadElementChild);\n            p.openElements.push(p.headElement, $.HEAD);\n            startTagInHead(p, token);\n            p.openElements.remove(p.headElement);\n            break;\n        }\n        case $.HEAD: {\n            p._err(token, ERR.misplacedStartTagForHeadElement);\n            break;\n        }\n        default: {\n            tokenAfterHead(p, token);\n        }\n    }\n}\nfunction endTagAfterHead(p, token) {\n    switch (token.tagID) {\n        case $.BODY:\n        case $.HTML:\n        case $.BR: {\n            tokenAfterHead(p, token);\n            break;\n        }\n        case $.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        default: {\n            p._err(token, ERR.endTagWithoutMatchingOpenElement);\n        }\n    }\n}\nfunction tokenAfterHead(p, token) {\n    p._insertFakeElement(TN.BODY, $.BODY);\n    p.insertionMode = InsertionMode.IN_BODY;\n    modeInBody(p, token);\n}\n// The \"in body\" insertion mode\n//------------------------------------------------------------------\nfunction modeInBody(p, token) {\n    switch (token.type) {\n        case TokenType.CHARACTER: {\n            characterInBody(p, token);\n            break;\n        }\n        case TokenType.WHITESPACE_CHARACTER: {\n            whitespaceCharacterInBody(p, token);\n            break;\n        }\n        case TokenType.COMMENT: {\n            appendComment(p, token);\n            break;\n        }\n        case TokenType.START_TAG: {\n            startTagInBody(p, token);\n            break;\n        }\n        case TokenType.END_TAG: {\n            endTagInBody(p, token);\n            break;\n        }\n        case TokenType.EOF: {\n            eofInBody(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\nfunction whitespaceCharacterInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertCharacters(token);\n}\nfunction characterInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertCharacters(token);\n    p.framesetOk = false;\n}\nfunction htmlStartTagInBody(p, token) {\n    if (p.openElements.tmplCount === 0) {\n        p.treeAdapter.adoptAttributes(p.openElements.items[0], token.attrs);\n    }\n}\nfunction bodyStartTagInBody(p, token) {\n    const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n    if (bodyElement && p.openElements.tmplCount === 0) {\n        p.framesetOk = false;\n        p.treeAdapter.adoptAttributes(bodyElement, token.attrs);\n    }\n}\nfunction framesetStartTagInBody(p, token) {\n    const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n    if (p.framesetOk && bodyElement) {\n        p.treeAdapter.detachNode(bodyElement);\n        p.openElements.popAllUpToHtmlElement();\n        p._insertElement(token, NS.HTML);\n        p.insertionMode = InsertionMode.IN_FRAMESET;\n    }\n}\nfunction addressStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    p._insertElement(token, NS.HTML);\n}\nfunction numberedHeaderStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    if (isNumberedHeader(p.openElements.currentTagId)) {\n        p.openElements.pop();\n    }\n    p._insertElement(token, NS.HTML);\n}\nfunction preStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    p._insertElement(token, NS.HTML);\n    //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n    //on to the next one. (Newlines at the start of pre blocks are ignored as an authoring convenience.)\n    p.skipNextNewLine = true;\n    p.framesetOk = false;\n}\nfunction formStartTagInBody(p, token) {\n    const inTemplate = p.openElements.tmplCount > 0;\n    if (!p.formElement || inTemplate) {\n        if (p.openElements.hasInButtonScope($.P)) {\n            p._closePElement();\n        }\n        p._insertElement(token, NS.HTML);\n        if (!inTemplate) {\n            p.formElement = p.openElements.current;\n        }\n    }\n}\nfunction listItemStartTagInBody(p, token) {\n    p.framesetOk = false;\n    const tn = token.tagID;\n    for (let i = p.openElements.stackTop; i >= 0; i--) {\n        const elementId = p.openElements.tagIDs[i];\n        if ((tn === $.LI && elementId === $.LI) ||\n            ((tn === $.DD || tn === $.DT) && (elementId === $.DD || elementId === $.DT))) {\n            p.openElements.generateImpliedEndTagsWithExclusion(elementId);\n            p.openElements.popUntilTagNamePopped(elementId);\n            break;\n        }\n        if (elementId !== $.ADDRESS &&\n            elementId !== $.DIV &&\n            elementId !== $.P &&\n            p._isSpecialElement(p.openElements.items[i], elementId)) {\n            break;\n        }\n    }\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    p._insertElement(token, NS.HTML);\n}\nfunction plaintextStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    p._insertElement(token, NS.HTML);\n    p.tokenizer.state = TokenizerMode.PLAINTEXT;\n}\nfunction buttonStartTagInBody(p, token) {\n    if (p.openElements.hasInScope($.BUTTON)) {\n        p.openElements.generateImpliedEndTags();\n        p.openElements.popUntilTagNamePopped($.BUTTON);\n    }\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.framesetOk = false;\n}\nfunction aStartTagInBody(p, token) {\n    const activeElementEntry = p.activeFormattingElements.getElementEntryInScopeWithTagName(TN.A);\n    if (activeElementEntry) {\n        callAdoptionAgency(p, token);\n        p.openElements.remove(activeElementEntry.element);\n        p.activeFormattingElements.removeEntry(activeElementEntry);\n    }\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction bStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction nobrStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    if (p.openElements.hasInScope($.NOBR)) {\n        callAdoptionAgency(p, token);\n        p._reconstructActiveFormattingElements();\n    }\n    p._insertElement(token, NS.HTML);\n    p.activeFormattingElements.pushElement(p.openElements.current, token);\n}\nfunction appletStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.activeFormattingElements.insertMarker();\n    p.framesetOk = false;\n}\nfunction tableStartTagInBody(p, token) {\n    if (p.treeAdapter.getDocumentMode(p.document) !== DOCUMENT_MODE.QUIRKS && p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    p._insertElement(token, NS.HTML);\n    p.framesetOk = false;\n    p.insertionMode = InsertionMode.IN_TABLE;\n}\nfunction areaStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._appendElement(token, NS.HTML);\n    p.framesetOk = false;\n    token.ackSelfClosing = true;\n}\nfunction isHiddenInput(token) {\n    const inputType = getTokenAttr(token, ATTRS.TYPE);\n    return inputType != null && inputType.toLowerCase() === HIDDEN_INPUT_TYPE;\n}\nfunction inputStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._appendElement(token, NS.HTML);\n    if (!isHiddenInput(token)) {\n        p.framesetOk = false;\n    }\n    token.ackSelfClosing = true;\n}\nfunction paramStartTagInBody(p, token) {\n    p._appendElement(token, NS.HTML);\n    token.ackSelfClosing = true;\n}\nfunction hrStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    p._appendElement(token, NS.HTML);\n    p.framesetOk = false;\n    token.ackSelfClosing = true;\n}\nfunction imageStartTagInBody(p, token) {\n    token.tagName = TN.IMG;\n    token.tagID = $.IMG;\n    areaStartTagInBody(p, token);\n}\nfunction textareaStartTagInBody(p, token) {\n    p._insertElement(token, NS.HTML);\n    //NOTE: If the next token is a U+000A LINE FEED (LF) character token, then ignore that token and move\n    //on to the next one. (Newlines at the start of textarea elements are ignored as an authoring convenience.)\n    p.skipNextNewLine = true;\n    p.tokenizer.state = TokenizerMode.RCDATA;\n    p.originalInsertionMode = p.insertionMode;\n    p.framesetOk = false;\n    p.insertionMode = InsertionMode.TEXT;\n}\nfunction xmpStartTagInBody(p, token) {\n    if (p.openElements.hasInButtonScope($.P)) {\n        p._closePElement();\n    }\n    p._reconstructActiveFormattingElements();\n    p.framesetOk = false;\n    p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction iframeStartTagInBody(p, token) {\n    p.framesetOk = false;\n    p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\n//NOTE: here we assume that we always act as an user agent with enabled plugins, so we parse\n//<noembed> as rawtext.\nfunction noembedStartTagInBody(p, token) {\n    p._switchToTextParsing(token, TokenizerMode.RAWTEXT);\n}\nfunction selectStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n    p.framesetOk = false;\n    p.insertionMode =\n        p.insertionMode === InsertionMode.IN_TABLE ||\n            p.insertionMode === InsertionMode.IN_CAPTION ||\n            p.insertionMode === InsertionMode.IN_TABLE_BODY ||\n            p.insertionMode === InsertionMode.IN_ROW ||\n            p.insertionMode === InsertionMode.IN_CELL\n            ? InsertionMode.IN_SELECT_IN_TABLE\n            : InsertionMode.IN_SELECT;\n}\nfunction optgroupStartTagInBody(p, token) {\n    if (p.openElements.currentTagId === $.OPTION) {\n        p.openElements.pop();\n    }\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n}\nfunction rbStartTagInBody(p, token) {\n    if (p.openElements.hasInScope($.RUBY)) {\n        p.openElements.generateImpliedEndTags();\n    }\n    p._insertElement(token, NS.HTML);\n}\nfunction rtStartTagInBody(p, token) {\n    if (p.openElements.hasInScope($.RUBY)) {\n        p.openElements.generateImpliedEndTagsWithExclusion($.RTC);\n    }\n    p._insertElement(token, NS.HTML);\n}\nfunction mathStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    foreignContent.adjustTokenMathMLAttrs(token);\n    foreignContent.adjustTokenXMLAttrs(token);\n    if (token.selfClosing) {\n        p._appendElement(token, NS.MATHML);\n    }\n    else {\n        p._insertElement(token, NS.MATHML);\n    }\n    token.ackSelfClosing = true;\n}\nfunction svgStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    foreignContent.adjustTokenSVGAttrs(token);\n    foreignContent.adjustTokenXMLAttrs(token);\n    if (token.selfClosing) {\n        p._appendElement(token, NS.SVG);\n    }\n    else {\n        p._insertElement(token, NS.SVG);\n    }\n    token.ackSelfClosing = true;\n}\nfunction genericStartTagInBody(p, token) {\n    p._reconstructActiveFormattingElements();\n    p._insertElement(token, NS.HTML);\n}\nfunction startTagInBody(p, token) {\n    switch (token.tagID) {\n        case $.I:\n        case $.S:\n        case $.B:\n        case $.U:\n        case $.EM:\n        case $.TT:\n        case $.BIG:\n        case $.CODE:\n        case $.FONT:\n        case $.SMALL:\n        case $.STRIKE:\n        case $.STRONG: {\n            bStartTagInBody(p, token);\n            break;\n        }\n        case $.A: {\n            aStartTagInBody(p, token);\n            break;\n        }\n        case $.H1:\n        case $.H2:\n        case $.H3:\n        case $.H4:\n        case $.H5:\n        case $.H6: {\n            numberedHeaderStartTagInBody(p, token);\n            break;\n        }\n        case $.P:\n        case $.DL:\n        case $.OL:\n        case $.UL:\n        case $.DIV:\n        case $.DIR:\n        case $.NAV:\n        case $.MAIN:\n        case $.MENU:\n        case $.ASIDE:\n        case $.CENTER:\n        case $.FIGURE:\n        case $.FOOTER:\n        case $.HEADER:\n        case $.HGROUP:\n        case $.DIALOG:\n        case $.DETAILS:\n        case $.ADDRESS:\n        case $.ARTICLE:\n        case $.SECTION:\n        case $.SUMMARY:\n        case $.FIELDSET:\n        case $.BLOCKQUOTE:\n        case $.FIGCAPTION: {\n            addressStartTagInBody(p, token);\n            break;\n        }\n        case $.LI:\n        case $.DD:\n        case $.DT: {\n            listItemStartTagInBody(p, token);\n            break;\n        }\n        case $.BR:\n        case $.IMG:\n        case $.WBR:\n        case $.AREA:\n        case $.EMBED:\n        case $.KEYGEN: {\n            areaStartTagInBody(p, token);\n            break;\n        }\n        case $.HR: {\n            hrStartTagInBody(p, token);\n            break;\n        }\n        case $.RB:\n        case $.RTC: {\n            rbStartTagInBody(p, token);\n            break;\n        }\n        case $.RT:\n        case $.RP: {\n            rtStartTagInBody(p, token);\n            break;\n        }\n        case $.PRE:\n        case $.LISTING: {\n            preStartTagInBody(p, token);\n            break;\n        }\n        case $.XMP: {\n            xmpStartTagInBody(p, token);\n            break;\n        }\n        case $.SVG: {\n            svgStartTagInBody(p, token);\n            break;\n        }\n        case $.HTML: {\n            htmlStartTagInBody(p, token);\n            break;\n        }\n        case $.BASE:\n        case $.LINK:\n        case $.META:\n        case $.STYLE:\n        case $.TITLE:\n        case $.SCRIPT:\n        case $.BGSOUND:\n        case $.BASEFONT:\n        case $.TEMPLATE: {\n            startTagInHead(p, token);\n            break;\n        }\n        case $.BODY: {\n            bodyStartTagInBody(p, token);\n            break;\n        }\n        case $.FORM: {\n            formStartTagInBody(p, token);\n            break;\n        }\n        case $.NOBR: {\n            nobrStartTagInBody(p, token);\n            break;\n        }\n        case $.MATH: {\n            mathStartTagInBody(p, token);\n            break;\n        }\n        case $.TABLE: {\n            tableStartTagInBody(p, token);\n            break;\n        }\n        case $.INPUT: {\n            inputStartTagInBody(p, token);\n            break;\n        }\n        case $.PARAM:\n        case $.TRACK:\n        case $.SOURCE: {\n            paramStartTagInBody(p, token);\n            break;\n        }\n        case $.IMAGE: {\n            imageStartTagInBody(p, token);\n            break;\n        }\n        case $.BUTTON: {\n            buttonStartTagInBody(p, token);\n            break;\n        }\n        case $.APPLET:\n        case $.OBJECT:\n        case $.MARQUEE: {\n            appletStartTagInBody(p, token);\n            break;\n        }\n        case $.IFRAME: {\n            iframeStartTagInBody(p, token);\n            break;\n        }\n        case $.SELECT: {\n            selectStartTagInBody(p, token);\n            break;\n        }\n        case $.OPTION:\n        case $.OPTGROUP: {\n            optgroupStartTagInBody(p, token);\n            break;\n        }\n        case $.NOEMBED: {\n            noembedStartTagInBody(p, token);\n            break;\n        }\n        case $.FRAMESET: {\n            framesetStartTagInBody(p, token);\n            break;\n        }\n        case $.TEXTAREA: {\n            textareaStartTagInBody(p, token);\n            break;\n        }\n        case $.NOSCRIPT: {\n            if (p.options.scriptingEnabled) {\n                noembedStartTagInBody(p, token);\n            }\n            else {\n                genericStartTagInBody(p, token);\n            }\n            break;\n        }\n        case $.PLAINTEXT: {\n            plaintextStartTagInBody(p, token);\n            break;\n        }\n        case $.COL:\n        case $.TH:\n        case $.TD:\n        case $.TR:\n        case $.HEAD:\n        case $.FRAME:\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD:\n        case $.CAPTION:\n        case $.COLGROUP: {\n            // Ignore token\n            break;\n        }\n        default: {\n            genericStartTagInBody(p, token);\n        }\n    }\n}\nfunction bodyEndTagInBody(p, token) {\n    if (p.openElements.hasInScope($.BODY)) {\n        p.insertionMode = InsertionMode.AFTER_BODY;\n        //NOTE: <body> is never popped from the stack, so we need to updated\n        //the end location explicitly.\n        if (p.options.sourceCodeLocationInfo) {\n            const bodyElement = p.openElements.tryPeekProperlyNestedBodyElement();\n            if (bodyElement) {\n                p._setEndLocation(bodyElement, token);\n            }\n        }\n    }\n}\nfunction htmlEndTagInBody(p, token) {\n    if (p.openElements.hasInScope($.BODY)) {\n        p.insertionMode = InsertionMode.AFTER_BODY;\n        endTagAfterBody(p, token);\n    }\n}\nfunction addressEndTagInBody(p, token) {\n    const tn = token.tagID;\n    if (p.openElements.hasInScope(tn)) {\n        p.openElements.generateImpliedEndTags();\n        p.openElements.popUntilTagNamePopped(tn);\n    }\n}\nfunction formEndTagInBody(p) {\n    const inTemplate = p.openElements.tmplCount > 0;\n    const { formElement } = p;\n    if (!inTemplate) {\n        p.formElement = null;\n    }\n    if ((formElement || inTemplate) && p.openElements.hasInScope($.FORM)) {\n        p.openElements.generateImpliedEndTags();\n        if (inTemplate) {\n            p.openElements.popUntilTagNamePopped($.FORM);\n        }\n        else if (formElement) {\n            p.openElements.remove(formElement);\n        }\n    }\n}\nfunction pEndTagInBody(p) {\n    if (!p.openElements.hasInButtonScope($.P)) {\n        p._insertFakeElement(TN.P, $.P);\n    }\n    p._closePElement();\n}\nfunction liEndTagInBody(p) {\n    if (p.openElements.hasInListItemScope($.LI)) {\n        p.openElements.generateImpliedEndTagsWithExclusion($.LI);\n        p.openElements.popUntilTagNamePopped($.LI);\n    }\n}\nfunction ddEndTagInBody(p, token) {\n    const tn = token.tagID;\n    if (p.openElements.hasInScope(tn)) {\n        p.openElements.generateImpliedEndTagsWithExclusion(tn);\n        p.openElements.popUntilTagNamePopped(tn);\n    }\n}\nfunction numberedHeaderEndTagInBody(p) {\n    if (p.openElements.hasNumberedHeaderInScope()) {\n        p.openElements.generateImpliedEndTags();\n        p.openElements.popUntilNumberedHeaderPopped();\n    }\n}\nfunction appletEndTagInBody(p, token) {\n    const tn = token.tagID;\n    if (p.openElements.hasInScope(tn)) {\n        p.openElements.generateImpliedEndTags();\n        p.openElements.popUntilTagNamePopped(tn);\n        p.activeFormattingElements.clearToLastMarker();\n    }\n}\nfunction brEndTagInBody(p) {\n    p._reconstructActiveFormattingElements();\n    p._insertFakeElement(TN.BR, $.BR);\n    p.openElements.pop();\n    p.framesetOk = false;\n}\nfunction genericEndTagInBody(p, token) {\n    const tn = token.tagName;\n    const tid = token.tagID;\n    for (let i = p.openElements.stackTop; i > 0; i--) {\n        const element = p.openElements.items[i];\n        const elementId = p.openElements.tagIDs[i];\n        // Compare the tag name here, as the tag might not be a known tag with an ID.\n        if (tid === elementId && (tid !== $.UNKNOWN || p.treeAdapter.getTagName(element) === tn)) {\n            p.openElements.generateImpliedEndTagsWithExclusion(tid);\n            if (p.openElements.stackTop >= i)\n                p.openElements.shortenToLength(i);\n            break;\n        }\n        if (p._isSpecialElement(element, elementId)) {\n            break;\n        }\n    }\n}\nfunction endTagInBody(p, token) {\n    switch (token.tagID) {\n        case $.A:\n        case $.B:\n        case $.I:\n        case $.S:\n        case $.U:\n        case $.EM:\n        case $.TT:\n        case $.BIG:\n        case $.CODE:\n        case $.FONT:\n        case $.NOBR:\n        case $.SMALL:\n        case $.STRIKE:\n        case $.STRONG: {\n            callAdoptionAgency(p, token);\n            break;\n        }\n        case $.P: {\n            pEndTagInBody(p);\n            break;\n        }\n        case $.DL:\n        case $.UL:\n        case $.OL:\n        case $.DIR:\n        case $.DIV:\n        case $.NAV:\n        case $.PRE:\n        case $.MAIN:\n        case $.MENU:\n        case $.ASIDE:\n        case $.BUTTON:\n        case $.CENTER:\n        case $.FIGURE:\n        case $.FOOTER:\n        case $.HEADER:\n        case $.HGROUP:\n        case $.DIALOG:\n        case $.ADDRESS:\n        case $.ARTICLE:\n        case $.DETAILS:\n        case $.SECTION:\n        case $.SUMMARY:\n        case $.LISTING:\n        case $.FIELDSET:\n        case $.BLOCKQUOTE:\n        case $.FIGCAPTION: {\n            addressEndTagInBody(p, token);\n            break;\n        }\n        case $.LI: {\n            liEndTagInBody(p);\n            break;\n        }\n        case $.DD:\n        case $.DT: {\n            ddEndTagInBody(p, token);\n            break;\n        }\n        case $.H1:\n        case $.H2:\n        case $.H3:\n        case $.H4:\n        case $.H5:\n        case $.H6: {\n            numberedHeaderEndTagInBody(p);\n            break;\n        }\n        case $.BR: {\n            brEndTagInBody(p);\n            break;\n        }\n        case $.BODY: {\n            bodyEndTagInBody(p, token);\n            break;\n        }\n        case $.HTML: {\n            htmlEndTagInBody(p, token);\n            break;\n        }\n        case $.FORM: {\n            formEndTagInBody(p);\n            break;\n        }\n        case $.APPLET:\n        case $.OBJECT:\n        case $.MARQUEE: {\n            appletEndTagInBody(p, token);\n            break;\n        }\n        case $.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        default: {\n            genericEndTagInBody(p, token);\n        }\n    }\n}\nfunction eofInBody(p, token) {\n    if (p.tmplInsertionModeStack.length > 0) {\n        eofInTemplate(p, token);\n    }\n    else {\n        stopParsing(p, token);\n    }\n}\n// The \"text\" insertion mode\n//------------------------------------------------------------------\nfunction endTagInText(p, token) {\n    var _a;\n    if (token.tagID === $.SCRIPT) {\n        (_a = p.scriptHandler) === null || _a === void 0 ? void 0 : _a.call(p, p.openElements.current);\n    }\n    p.openElements.pop();\n    p.insertionMode = p.originalInsertionMode;\n}\nfunction eofInText(p, token) {\n    p._err(token, ERR.eofInElementThatCanContainOnlyText);\n    p.openElements.pop();\n    p.insertionMode = p.originalInsertionMode;\n    p.onEof(token);\n}\n// The \"in table\" insertion mode\n//------------------------------------------------------------------\nfunction characterInTable(p, token) {\n    if (TABLE_STRUCTURE_TAGS.has(p.openElements.currentTagId)) {\n        p.pendingCharacterTokens.length = 0;\n        p.hasNonWhitespacePendingCharacterToken = false;\n        p.originalInsertionMode = p.insertionMode;\n        p.insertionMode = InsertionMode.IN_TABLE_TEXT;\n        switch (token.type) {\n            case TokenType.CHARACTER: {\n                characterInTableText(p, token);\n                break;\n            }\n            case TokenType.WHITESPACE_CHARACTER: {\n                whitespaceCharacterInTableText(p, token);\n                break;\n            }\n            // Ignore null\n        }\n    }\n    else {\n        tokenInTable(p, token);\n    }\n}\nfunction captionStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p.activeFormattingElements.insertMarker();\n    p._insertElement(token, NS.HTML);\n    p.insertionMode = InsertionMode.IN_CAPTION;\n}\nfunction colgroupStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p._insertElement(token, NS.HTML);\n    p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n}\nfunction colStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p._insertFakeElement(TN.COLGROUP, $.COLGROUP);\n    p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n    startTagInColumnGroup(p, token);\n}\nfunction tbodyStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p._insertElement(token, NS.HTML);\n    p.insertionMode = InsertionMode.IN_TABLE_BODY;\n}\nfunction tdStartTagInTable(p, token) {\n    p.openElements.clearBackToTableContext();\n    p._insertFakeElement(TN.TBODY, $.TBODY);\n    p.insertionMode = InsertionMode.IN_TABLE_BODY;\n    startTagInTableBody(p, token);\n}\nfunction tableStartTagInTable(p, token) {\n    if (p.openElements.hasInTableScope($.TABLE)) {\n        p.openElements.popUntilTagNamePopped($.TABLE);\n        p._resetInsertionMode();\n        p._processStartTag(token);\n    }\n}\nfunction inputStartTagInTable(p, token) {\n    if (isHiddenInput(token)) {\n        p._appendElement(token, NS.HTML);\n    }\n    else {\n        tokenInTable(p, token);\n    }\n    token.ackSelfClosing = true;\n}\nfunction formStartTagInTable(p, token) {\n    if (!p.formElement && p.openElements.tmplCount === 0) {\n        p._insertElement(token, NS.HTML);\n        p.formElement = p.openElements.current;\n        p.openElements.pop();\n    }\n}\nfunction startTagInTable(p, token) {\n    switch (token.tagID) {\n        case $.TD:\n        case $.TH:\n        case $.TR: {\n            tdStartTagInTable(p, token);\n            break;\n        }\n        case $.STYLE:\n        case $.SCRIPT:\n        case $.TEMPLATE: {\n            startTagInHead(p, token);\n            break;\n        }\n        case $.COL: {\n            colStartTagInTable(p, token);\n            break;\n        }\n        case $.FORM: {\n            formStartTagInTable(p, token);\n            break;\n        }\n        case $.TABLE: {\n            tableStartTagInTable(p, token);\n            break;\n        }\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD: {\n            tbodyStartTagInTable(p, token);\n            break;\n        }\n        case $.INPUT: {\n            inputStartTagInTable(p, token);\n            break;\n        }\n        case $.CAPTION: {\n            captionStartTagInTable(p, token);\n            break;\n        }\n        case $.COLGROUP: {\n            colgroupStartTagInTable(p, token);\n            break;\n        }\n        default: {\n            tokenInTable(p, token);\n        }\n    }\n}\nfunction endTagInTable(p, token) {\n    switch (token.tagID) {\n        case $.TABLE: {\n            if (p.openElements.hasInTableScope($.TABLE)) {\n                p.openElements.popUntilTagNamePopped($.TABLE);\n                p._resetInsertionMode();\n            }\n            break;\n        }\n        case $.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        case $.BODY:\n        case $.CAPTION:\n        case $.COL:\n        case $.COLGROUP:\n        case $.HTML:\n        case $.TBODY:\n        case $.TD:\n        case $.TFOOT:\n        case $.TH:\n        case $.THEAD:\n        case $.TR: {\n            // Ignore token\n            break;\n        }\n        default: {\n            tokenInTable(p, token);\n        }\n    }\n}\nfunction tokenInTable(p, token) {\n    const savedFosterParentingState = p.fosterParentingEnabled;\n    p.fosterParentingEnabled = true;\n    // Process token in `In Body` mode\n    modeInBody(p, token);\n    p.fosterParentingEnabled = savedFosterParentingState;\n}\n// The \"in table text\" insertion mode\n//------------------------------------------------------------------\nfunction whitespaceCharacterInTableText(p, token) {\n    p.pendingCharacterTokens.push(token);\n}\nfunction characterInTableText(p, token) {\n    p.pendingCharacterTokens.push(token);\n    p.hasNonWhitespacePendingCharacterToken = true;\n}\nfunction tokenInTableText(p, token) {\n    let i = 0;\n    if (p.hasNonWhitespacePendingCharacterToken) {\n        for (; i < p.pendingCharacterTokens.length; i++) {\n            tokenInTable(p, p.pendingCharacterTokens[i]);\n        }\n    }\n    else {\n        for (; i < p.pendingCharacterTokens.length; i++) {\n            p._insertCharacters(p.pendingCharacterTokens[i]);\n        }\n    }\n    p.insertionMode = p.originalInsertionMode;\n    p._processToken(token);\n}\n// The \"in caption\" insertion mode\n//------------------------------------------------------------------\nconst TABLE_VOID_ELEMENTS = new Set([$.CAPTION, $.COL, $.COLGROUP, $.TBODY, $.TD, $.TFOOT, $.TH, $.THEAD, $.TR]);\nfunction startTagInCaption(p, token) {\n    const tn = token.tagID;\n    if (TABLE_VOID_ELEMENTS.has(tn)) {\n        if (p.openElements.hasInTableScope($.CAPTION)) {\n            p.openElements.generateImpliedEndTags();\n            p.openElements.popUntilTagNamePopped($.CAPTION);\n            p.activeFormattingElements.clearToLastMarker();\n            p.insertionMode = InsertionMode.IN_TABLE;\n            startTagInTable(p, token);\n        }\n    }\n    else {\n        startTagInBody(p, token);\n    }\n}\nfunction endTagInCaption(p, token) {\n    const tn = token.tagID;\n    switch (tn) {\n        case $.CAPTION:\n        case $.TABLE: {\n            if (p.openElements.hasInTableScope($.CAPTION)) {\n                p.openElements.generateImpliedEndTags();\n                p.openElements.popUntilTagNamePopped($.CAPTION);\n                p.activeFormattingElements.clearToLastMarker();\n                p.insertionMode = InsertionMode.IN_TABLE;\n                if (tn === $.TABLE) {\n                    endTagInTable(p, token);\n                }\n            }\n            break;\n        }\n        case $.BODY:\n        case $.COL:\n        case $.COLGROUP:\n        case $.HTML:\n        case $.TBODY:\n        case $.TD:\n        case $.TFOOT:\n        case $.TH:\n        case $.THEAD:\n        case $.TR: {\n            // Ignore token\n            break;\n        }\n        default: {\n            endTagInBody(p, token);\n        }\n    }\n}\n// The \"in column group\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInColumnGroup(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.COL: {\n            p._appendElement(token, NS.HTML);\n            token.ackSelfClosing = true;\n            break;\n        }\n        case $.TEMPLATE: {\n            startTagInHead(p, token);\n            break;\n        }\n        default: {\n            tokenInColumnGroup(p, token);\n        }\n    }\n}\nfunction endTagInColumnGroup(p, token) {\n    switch (token.tagID) {\n        case $.COLGROUP: {\n            if (p.openElements.currentTagId === $.COLGROUP) {\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE;\n            }\n            break;\n        }\n        case $.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        case $.COL: {\n            // Ignore token\n            break;\n        }\n        default: {\n            tokenInColumnGroup(p, token);\n        }\n    }\n}\nfunction tokenInColumnGroup(p, token) {\n    if (p.openElements.currentTagId === $.COLGROUP) {\n        p.openElements.pop();\n        p.insertionMode = InsertionMode.IN_TABLE;\n        p._processToken(token);\n    }\n}\n// The \"in table body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTableBody(p, token) {\n    switch (token.tagID) {\n        case $.TR: {\n            p.openElements.clearBackToTableBodyContext();\n            p._insertElement(token, NS.HTML);\n            p.insertionMode = InsertionMode.IN_ROW;\n            break;\n        }\n        case $.TH:\n        case $.TD: {\n            p.openElements.clearBackToTableBodyContext();\n            p._insertFakeElement(TN.TR, $.TR);\n            p.insertionMode = InsertionMode.IN_ROW;\n            startTagInRow(p, token);\n            break;\n        }\n        case $.CAPTION:\n        case $.COL:\n        case $.COLGROUP:\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD: {\n            if (p.openElements.hasTableBodyContextInTableScope()) {\n                p.openElements.clearBackToTableBodyContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE;\n                startTagInTable(p, token);\n            }\n            break;\n        }\n        default: {\n            startTagInTable(p, token);\n        }\n    }\n}\nfunction endTagInTableBody(p, token) {\n    const tn = token.tagID;\n    switch (token.tagID) {\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD: {\n            if (p.openElements.hasInTableScope(tn)) {\n                p.openElements.clearBackToTableBodyContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE;\n            }\n            break;\n        }\n        case $.TABLE: {\n            if (p.openElements.hasTableBodyContextInTableScope()) {\n                p.openElements.clearBackToTableBodyContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE;\n                endTagInTable(p, token);\n            }\n            break;\n        }\n        case $.BODY:\n        case $.CAPTION:\n        case $.COL:\n        case $.COLGROUP:\n        case $.HTML:\n        case $.TD:\n        case $.TH:\n        case $.TR: {\n            // Ignore token\n            break;\n        }\n        default: {\n            endTagInTable(p, token);\n        }\n    }\n}\n// The \"in row\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInRow(p, token) {\n    switch (token.tagID) {\n        case $.TH:\n        case $.TD: {\n            p.openElements.clearBackToTableRowContext();\n            p._insertElement(token, NS.HTML);\n            p.insertionMode = InsertionMode.IN_CELL;\n            p.activeFormattingElements.insertMarker();\n            break;\n        }\n        case $.CAPTION:\n        case $.COL:\n        case $.COLGROUP:\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD:\n        case $.TR: {\n            if (p.openElements.hasInTableScope($.TR)) {\n                p.openElements.clearBackToTableRowContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE_BODY;\n                startTagInTableBody(p, token);\n            }\n            break;\n        }\n        default: {\n            startTagInTable(p, token);\n        }\n    }\n}\nfunction endTagInRow(p, token) {\n    switch (token.tagID) {\n        case $.TR: {\n            if (p.openElements.hasInTableScope($.TR)) {\n                p.openElements.clearBackToTableRowContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE_BODY;\n            }\n            break;\n        }\n        case $.TABLE: {\n            if (p.openElements.hasInTableScope($.TR)) {\n                p.openElements.clearBackToTableRowContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE_BODY;\n                endTagInTableBody(p, token);\n            }\n            break;\n        }\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD: {\n            if (p.openElements.hasInTableScope(token.tagID) || p.openElements.hasInTableScope($.TR)) {\n                p.openElements.clearBackToTableRowContext();\n                p.openElements.pop();\n                p.insertionMode = InsertionMode.IN_TABLE_BODY;\n                endTagInTableBody(p, token);\n            }\n            break;\n        }\n        case $.BODY:\n        case $.CAPTION:\n        case $.COL:\n        case $.COLGROUP:\n        case $.HTML:\n        case $.TD:\n        case $.TH: {\n            // Ignore end tag\n            break;\n        }\n        default: {\n            endTagInTable(p, token);\n        }\n    }\n}\n// The \"in cell\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInCell(p, token) {\n    const tn = token.tagID;\n    if (TABLE_VOID_ELEMENTS.has(tn)) {\n        if (p.openElements.hasInTableScope($.TD) || p.openElements.hasInTableScope($.TH)) {\n            p._closeTableCell();\n            startTagInRow(p, token);\n        }\n    }\n    else {\n        startTagInBody(p, token);\n    }\n}\nfunction endTagInCell(p, token) {\n    const tn = token.tagID;\n    switch (tn) {\n        case $.TD:\n        case $.TH: {\n            if (p.openElements.hasInTableScope(tn)) {\n                p.openElements.generateImpliedEndTags();\n                p.openElements.popUntilTagNamePopped(tn);\n                p.activeFormattingElements.clearToLastMarker();\n                p.insertionMode = InsertionMode.IN_ROW;\n            }\n            break;\n        }\n        case $.TABLE:\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD:\n        case $.TR: {\n            if (p.openElements.hasInTableScope(tn)) {\n                p._closeTableCell();\n                endTagInRow(p, token);\n            }\n            break;\n        }\n        case $.BODY:\n        case $.CAPTION:\n        case $.COL:\n        case $.COLGROUP:\n        case $.HTML: {\n            // Ignore token\n            break;\n        }\n        default: {\n            endTagInBody(p, token);\n        }\n    }\n}\n// The \"in select\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelect(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.OPTION: {\n            if (p.openElements.currentTagId === $.OPTION) {\n                p.openElements.pop();\n            }\n            p._insertElement(token, NS.HTML);\n            break;\n        }\n        case $.OPTGROUP: {\n            if (p.openElements.currentTagId === $.OPTION) {\n                p.openElements.pop();\n            }\n            if (p.openElements.currentTagId === $.OPTGROUP) {\n                p.openElements.pop();\n            }\n            p._insertElement(token, NS.HTML);\n            break;\n        }\n        case $.INPUT:\n        case $.KEYGEN:\n        case $.TEXTAREA:\n        case $.SELECT: {\n            if (p.openElements.hasInSelectScope($.SELECT)) {\n                p.openElements.popUntilTagNamePopped($.SELECT);\n                p._resetInsertionMode();\n                if (token.tagID !== $.SELECT) {\n                    p._processStartTag(token);\n                }\n            }\n            break;\n        }\n        case $.SCRIPT:\n        case $.TEMPLATE: {\n            startTagInHead(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\nfunction endTagInSelect(p, token) {\n    switch (token.tagID) {\n        case $.OPTGROUP: {\n            if (p.openElements.stackTop > 0 &&\n                p.openElements.currentTagId === $.OPTION &&\n                p.openElements.tagIDs[p.openElements.stackTop - 1] === $.OPTGROUP) {\n                p.openElements.pop();\n            }\n            if (p.openElements.currentTagId === $.OPTGROUP) {\n                p.openElements.pop();\n            }\n            break;\n        }\n        case $.OPTION: {\n            if (p.openElements.currentTagId === $.OPTION) {\n                p.openElements.pop();\n            }\n            break;\n        }\n        case $.SELECT: {\n            if (p.openElements.hasInSelectScope($.SELECT)) {\n                p.openElements.popUntilTagNamePopped($.SELECT);\n                p._resetInsertionMode();\n            }\n            break;\n        }\n        case $.TEMPLATE: {\n            templateEndTagInHead(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\n// The \"in select in table\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInSelectInTable(p, token) {\n    const tn = token.tagID;\n    if (tn === $.CAPTION ||\n        tn === $.TABLE ||\n        tn === $.TBODY ||\n        tn === $.TFOOT ||\n        tn === $.THEAD ||\n        tn === $.TR ||\n        tn === $.TD ||\n        tn === $.TH) {\n        p.openElements.popUntilTagNamePopped($.SELECT);\n        p._resetInsertionMode();\n        p._processStartTag(token);\n    }\n    else {\n        startTagInSelect(p, token);\n    }\n}\nfunction endTagInSelectInTable(p, token) {\n    const tn = token.tagID;\n    if (tn === $.CAPTION ||\n        tn === $.TABLE ||\n        tn === $.TBODY ||\n        tn === $.TFOOT ||\n        tn === $.THEAD ||\n        tn === $.TR ||\n        tn === $.TD ||\n        tn === $.TH) {\n        if (p.openElements.hasInTableScope(tn)) {\n            p.openElements.popUntilTagNamePopped($.SELECT);\n            p._resetInsertionMode();\n            p.onEndTag(token);\n        }\n    }\n    else {\n        endTagInSelect(p, token);\n    }\n}\n// The \"in template\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInTemplate(p, token) {\n    switch (token.tagID) {\n        // First, handle tags that can start without a mode change\n        case $.BASE:\n        case $.BASEFONT:\n        case $.BGSOUND:\n        case $.LINK:\n        case $.META:\n        case $.NOFRAMES:\n        case $.SCRIPT:\n        case $.STYLE:\n        case $.TEMPLATE:\n        case $.TITLE: {\n            startTagInHead(p, token);\n            break;\n        }\n        // Re-process the token in the appropriate mode\n        case $.CAPTION:\n        case $.COLGROUP:\n        case $.TBODY:\n        case $.TFOOT:\n        case $.THEAD: {\n            p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE;\n            p.insertionMode = InsertionMode.IN_TABLE;\n            startTagInTable(p, token);\n            break;\n        }\n        case $.COL: {\n            p.tmplInsertionModeStack[0] = InsertionMode.IN_COLUMN_GROUP;\n            p.insertionMode = InsertionMode.IN_COLUMN_GROUP;\n            startTagInColumnGroup(p, token);\n            break;\n        }\n        case $.TR: {\n            p.tmplInsertionModeStack[0] = InsertionMode.IN_TABLE_BODY;\n            p.insertionMode = InsertionMode.IN_TABLE_BODY;\n            startTagInTableBody(p, token);\n            break;\n        }\n        case $.TD:\n        case $.TH: {\n            p.tmplInsertionModeStack[0] = InsertionMode.IN_ROW;\n            p.insertionMode = InsertionMode.IN_ROW;\n            startTagInRow(p, token);\n            break;\n        }\n        default: {\n            p.tmplInsertionModeStack[0] = InsertionMode.IN_BODY;\n            p.insertionMode = InsertionMode.IN_BODY;\n            startTagInBody(p, token);\n        }\n    }\n}\nfunction endTagInTemplate(p, token) {\n    if (token.tagID === $.TEMPLATE) {\n        templateEndTagInHead(p, token);\n    }\n}\nfunction eofInTemplate(p, token) {\n    if (p.openElements.tmplCount > 0) {\n        p.openElements.popUntilTagNamePopped($.TEMPLATE);\n        p.activeFormattingElements.clearToLastMarker();\n        p.tmplInsertionModeStack.shift();\n        p._resetInsertionMode();\n        p.onEof(token);\n    }\n    else {\n        stopParsing(p, token);\n    }\n}\n// The \"after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterBody(p, token) {\n    if (token.tagID === $.HTML) {\n        startTagInBody(p, token);\n    }\n    else {\n        tokenAfterBody(p, token);\n    }\n}\nfunction endTagAfterBody(p, token) {\n    var _a;\n    if (token.tagID === $.HTML) {\n        if (!p.fragmentContext) {\n            p.insertionMode = InsertionMode.AFTER_AFTER_BODY;\n        }\n        //NOTE: <html> is never popped from the stack, so we need to updated\n        //the end location explicitly.\n        if (p.options.sourceCodeLocationInfo && p.openElements.tagIDs[0] === $.HTML) {\n            p._setEndLocation(p.openElements.items[0], token);\n            // Update the body element, if it doesn't have an end tag\n            const bodyElement = p.openElements.items[1];\n            if (bodyElement && !((_a = p.treeAdapter.getNodeSourceCodeLocation(bodyElement)) === null || _a === void 0 ? void 0 : _a.endTag)) {\n                p._setEndLocation(bodyElement, token);\n            }\n        }\n    }\n    else {\n        tokenAfterBody(p, token);\n    }\n}\nfunction tokenAfterBody(p, token) {\n    p.insertionMode = InsertionMode.IN_BODY;\n    modeInBody(p, token);\n}\n// The \"in frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagInFrameset(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.FRAMESET: {\n            p._insertElement(token, NS.HTML);\n            break;\n        }\n        case $.FRAME: {\n            p._appendElement(token, NS.HTML);\n            token.ackSelfClosing = true;\n            break;\n        }\n        case $.NOFRAMES: {\n            startTagInHead(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\nfunction endTagInFrameset(p, token) {\n    if (token.tagID === $.FRAMESET && !p.openElements.isRootHtmlElementCurrent()) {\n        p.openElements.pop();\n        if (!p.fragmentContext && p.openElements.currentTagId !== $.FRAMESET) {\n            p.insertionMode = InsertionMode.AFTER_FRAMESET;\n        }\n    }\n}\n// The \"after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterFrameset(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.NOFRAMES: {\n            startTagInHead(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\nfunction endTagAfterFrameset(p, token) {\n    if (token.tagID === $.HTML) {\n        p.insertionMode = InsertionMode.AFTER_AFTER_FRAMESET;\n    }\n}\n// The \"after after body\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterBody(p, token) {\n    if (token.tagID === $.HTML) {\n        startTagInBody(p, token);\n    }\n    else {\n        tokenAfterAfterBody(p, token);\n    }\n}\nfunction tokenAfterAfterBody(p, token) {\n    p.insertionMode = InsertionMode.IN_BODY;\n    modeInBody(p, token);\n}\n// The \"after after frameset\" insertion mode\n//------------------------------------------------------------------\nfunction startTagAfterAfterFrameset(p, token) {\n    switch (token.tagID) {\n        case $.HTML: {\n            startTagInBody(p, token);\n            break;\n        }\n        case $.NOFRAMES: {\n            startTagInHead(p, token);\n            break;\n        }\n        default:\n        // Do nothing\n    }\n}\n// The rules for parsing tokens in foreign content\n//------------------------------------------------------------------\nfunction nullCharacterInForeignContent(p, token) {\n    token.chars = unicode.REPLACEMENT_CHARACTER;\n    p._insertCharacters(token);\n}\nfunction characterInForeignContent(p, token) {\n    p._insertCharacters(token);\n    p.framesetOk = false;\n}\nfunction popUntilHtmlOrIntegrationPoint(p) {\n    while (p.treeAdapter.getNamespaceURI(p.openElements.current) !== NS.HTML &&\n        !p._isIntegrationPoint(p.openElements.currentTagId, p.openElements.current)) {\n        p.openElements.pop();\n    }\n}\nfunction startTagInForeignContent(p, token) {\n    if (foreignContent.causesExit(token)) {\n        popUntilHtmlOrIntegrationPoint(p);\n        p._startTagOutsideForeignContent(token);\n    }\n    else {\n        const current = p._getAdjustedCurrentElement();\n        const currentNs = p.treeAdapter.getNamespaceURI(current);\n        if (currentNs === NS.MATHML) {\n            foreignContent.adjustTokenMathMLAttrs(token);\n        }\n        else if (currentNs === NS.SVG) {\n            foreignContent.adjustTokenSVGTagName(token);\n            foreignContent.adjustTokenSVGAttrs(token);\n        }\n        foreignContent.adjustTokenXMLAttrs(token);\n        if (token.selfClosing) {\n            p._appendElement(token, currentNs);\n        }\n        else {\n            p._insertElement(token, currentNs);\n        }\n        token.ackSelfClosing = true;\n    }\n}\nfunction endTagInForeignContent(p, token) {\n    if (token.tagID === $.P || token.tagID === $.BR) {\n        popUntilHtmlOrIntegrationPoint(p);\n        p._endTagOutsideForeignContent(token);\n        return;\n    }\n    for (let i = p.openElements.stackTop; i > 0; i--) {\n        const element = p.openElements.items[i];\n        if (p.treeAdapter.getNamespaceURI(element) === NS.HTML) {\n            p._endTagOutsideForeignContent(token);\n            break;\n        }\n        const tagName = p.treeAdapter.getTagName(element);\n        if (tagName.toLowerCase() === token.tagName) {\n            //NOTE: update the token tag name for `_setEndLocation`.\n            token.tagName = tagName;\n            p.openElements.shortenToLength(i);\n            break;\n        }\n    }\n}\n//# sourceMappingURL=index.js.map", null, "import { TAG_NAMES as $, NS, hasUnescapedText } from '../common/html.js';\nimport { escapeText, escapeAttribute } from 'entities/lib/escape.js';\nimport { defaultTreeAdapter } from '../tree-adapters/default.js';\n// Sets\nconst VOID_ELEMENTS = new Set([\n    $.AREA,\n    $.BASE,\n    $.BASEFONT,\n    $.BGSOUND,\n    $.BR,\n    $.COL,\n    $.EMBED,\n    $.FRAME,\n    $.HR,\n    $.IMG,\n    $.INPUT,\n    $.KEYGEN,\n    $.LINK,\n    $.META,\n    $.PARAM,\n    $.SOURCE,\n    $.TRACK,\n    $.WBR,\n]);\nfunction isVoidElement(node, options) {\n    return (options.treeAdapter.isElementNode(node) &&\n        options.treeAdapter.getNamespaceURI(node) === NS.HTML &&\n        VOID_ELEMENTS.has(options.treeAdapter.getTagName(node)));\n}\nconst defaultOpts = { treeAdapter: defaultTreeAdapter, scriptingEnabled: true };\n/**\n * Serializes an AST node to an HTML string.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * // Serializes a document.\n * const html = parse5.serialize(document);\n *\n * // Serializes the <html> element content.\n * const str = parse5.serialize(document.childNodes[1]);\n *\n * console.log(str); //> '<head></head><body>Hi there!</body>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nexport function serialize(node, options) {\n    const opts = { ...defaultOpts, ...options };\n    if (isVoidElement(node, opts)) {\n        return '';\n    }\n    return serializeChildNodes(node, opts);\n}\n/**\n * Serializes an AST element node to an HTML string, including the element node.\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parseFragment('<div>Hello, <b>world</b>!</div>');\n *\n * // Serializes the <div> element.\n * const html = parse5.serializeOuter(document.childNodes[0]);\n *\n * console.log(str); //> '<div>Hello, <b>world</b>!</div>'\n * ```\n *\n * @param node Node to serialize.\n * @param options Serialization options.\n */\nexport function serializeOuter(node, options) {\n    const opts = { ...defaultOpts, ...options };\n    return serializeNode(node, opts);\n}\nfunction serializeChildNodes(parentNode, options) {\n    let html = '';\n    // Get container of the child nodes\n    const container = options.treeAdapter.isElementNode(parentNode) &&\n        options.treeAdapter.getTagName(parentNode) === $.TEMPLATE &&\n        options.treeAdapter.getNamespaceURI(parentNode) === NS.HTML\n        ? options.treeAdapter.getTemplateContent(parentNode)\n        : parentNode;\n    const childNodes = options.treeAdapter.getChildNodes(container);\n    if (childNodes) {\n        for (const currentNode of childNodes) {\n            html += serializeNode(currentNode, options);\n        }\n    }\n    return html;\n}\nfunction serializeNode(node, options) {\n    if (options.treeAdapter.isElementNode(node)) {\n        return serializeElement(node, options);\n    }\n    if (options.treeAdapter.isTextNode(node)) {\n        return serializeTextNode(node, options);\n    }\n    if (options.treeAdapter.isCommentNode(node)) {\n        return serializeCommentNode(node, options);\n    }\n    if (options.treeAdapter.isDocumentTypeNode(node)) {\n        return serializeDocumentTypeNode(node, options);\n    }\n    // Return an empty string for unknown nodes\n    return '';\n}\nfunction serializeElement(node, options) {\n    const tn = options.treeAdapter.getTagName(node);\n    return `<${tn}${serializeAttributes(node, options)}>${isVoidElement(node, options) ? '' : `${serializeChildNodes(node, options)}</${tn}>`}`;\n}\nfunction serializeAttributes(node, { treeAdapter }) {\n    let html = '';\n    for (const attr of treeAdapter.getAttrList(node)) {\n        html += ' ';\n        if (!attr.namespace) {\n            html += attr.name;\n        }\n        else\n            switch (attr.namespace) {\n                case NS.XML: {\n                    html += `xml:${attr.name}`;\n                    break;\n                }\n                case NS.XMLNS: {\n                    if (attr.name !== 'xmlns') {\n                        html += 'xmlns:';\n                    }\n                    html += attr.name;\n                    break;\n                }\n                case NS.XLINK: {\n                    html += `xlink:${attr.name}`;\n                    break;\n                }\n                default: {\n                    html += `${attr.prefix}:${attr.name}`;\n                }\n            }\n        html += `=\"${escapeAttribute(attr.value)}\"`;\n    }\n    return html;\n}\nfunction serializeTextNode(node, options) {\n    const { treeAdapter } = options;\n    const content = treeAdapter.getTextNodeContent(node);\n    const parent = treeAdapter.getParentNode(node);\n    const parentTn = parent && treeAdapter.isElementNode(parent) && treeAdapter.getTagName(parent);\n    return parentTn &&\n        treeAdapter.getNamespaceURI(parent) === NS.HTML &&\n        hasUnescapedText(parentTn, options.scriptingEnabled)\n        ? content\n        : escapeText(content);\n}\nfunction serializeCommentNode(node, { treeAdapter }) {\n    return `<!--${treeAdapter.getCommentNodeContent(node)}-->`;\n}\nfunction serializeDocumentTypeNode(node, { treeAdapter }) {\n    return `<!DOCTYPE ${treeAdapter.getDocumentTypeNodeName(node)}>`;\n}\n//# sourceMappingURL=index.js.map", "import { Parser } from './parser/index.js';\nexport { defaultTreeAdapter } from './tree-adapters/default.js';\nexport { /** @internal */ Parser } from './parser/index.js';\nexport { serialize, serializeOuter } from './serializer/index.js';\nexport { ERR as ErrorCodes } from './common/error-codes.js';\n/** @internal */\nexport * as foreignContent from './common/foreign-content.js';\n/** @internal */\nexport * as html from './common/html.js';\n/** @internal */\nexport * as Token from './common/token.js';\n/** @internal */\nexport { Tokenizer, TokenizerMode } from './tokenizer/index.js';\n// Shorthands\n/**\n * Parses an HTML string.\n *\n * @param html Input HTML string.\n * @param options Parsing options.\n * @returns Document\n *\n * @example\n *\n * ```js\n * const parse5 = require('parse5');\n *\n * const document = parse5.parse('<!DOCTYPE html><html><head></head><body>Hi there!</body></html>');\n *\n * console.log(document.childNodes[1].tagName); //> 'html'\n *```\n */\nexport function parse(html, options) {\n    return Parser.parse(html, options);\n}\nexport function parseFragment(fragmentContext, html, options) {\n    if (typeof fragmentContext === 'string') {\n        options = html;\n        html = fragmentContext;\n        fragmentContext = null;\n    }\n    const parser = Parser.getFragmentParser(fragmentContext, options);\n    parser.tokenizer.write(html, true);\n    return parser.getFragment();\n}\n//# sourceMappingURL=index.js.map", "/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n */\n\n/**\n * Get the ending point of `node`.\n *\n * @param node\n *   Node.\n * @returns\n *   Point.\n */\nexport const pointEnd = point('end')\n\n/**\n * Get the starting point of `node`.\n *\n * @param node\n *   Node.\n * @returns\n *   Point.\n */\nexport const pointStart = point('start')\n\n/**\n * Get the positional info of `node`.\n *\n * @param {'end' | 'start'} type\n *   Side.\n * @returns\n *   Getter.\n */\nfunction point(type) {\n  return point\n\n  /**\n   * Get the point info of `node` at a bound side.\n   *\n   * @param {Node | NodeLike | null | undefined} [node]\n   * @returns {Point | undefined}\n   */\n  function point(node) {\n    const point = (node && node.position && node.position[type]) || {}\n\n    if (\n      typeof point.line === 'number' &&\n      point.line > 0 &&\n      typeof point.column === 'number' &&\n      point.column > 0\n    ) {\n      return {\n        line: point.line,\n        column: point.column,\n        offset:\n          typeof point.offset === 'number' && point.offset > -1\n            ? point.offset\n            : undefined\n      }\n    }\n  }\n}\n\n/**\n * Get the positional info of `node`.\n *\n * @param {Node | NodeLike | null | undefined} [node]\n *   Node.\n * @returns {Position | undefined}\n *   Position.\n */\nexport function position(node) {\n  const start = pointStart(node)\n  const end = pointEnd(node)\n\n  if (start && end) {\n    return {start, end}\n  }\n}\n", "/**\n * @import {Options} from 'hast-util-raw'\n * @import {Comment, Doctype, Element, Nodes, RootContent, Root, Text} from 'hast'\n * @import {Raw} from 'mdast-util-to-hast'\n * @import {DefaultTreeAdapterMap, ParserOptions} from 'parse5'\n * @import {Point} from 'unist'\n */\n\n/**\n * @typedef State\n *   Info passed around about the current state.\n * @property {(node: Nodes) => undefined} handle\n *   Add a hast node to the parser.\n * @property {Options} options\n *   User configuration.\n * @property {Parser<DefaultTreeAdapterMap>} parser\n *   Current parser.\n * @property {boolean} stitches\n *   Whether there are stitches.\n */\n\n/**\n * @typedef Stitch\n *   Custom comment-like value we pass through parse5, which contains a\n *   replacement node that we\u2019ll swap back in afterwards.\n * @property {'comment'} type\n *   Node type.\n * @property {{stitch: Nodes}} value\n *   Replacement value.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {fromParse5} from 'hast-util-from-parse5'\nimport {toParse5} from 'hast-util-to-parse5'\nimport {htmlVoidElements} from 'html-void-elements'\nimport {Parser, Token, TokenizerMode, html} from 'parse5'\nimport {pointEnd, pointStart} from 'unist-util-position'\nimport {visit} from 'unist-util-visit'\nimport {webNamespaces} from 'web-namespaces'\nimport {zwitch} from 'zwitch'\n\nconst gfmTagfilterExpression =\n  /<(\\/?)(iframe|noembed|noframes|plaintext|script|style|textarea|title|xmp)(?=[\\t\\n\\f\\r />])/gi\n\n// Node types associated with MDX.\n// <https://github.com/mdx-js/mdx/blob/8a56312/packages/mdx/lib/node-types.js>\nconst knownMdxNames = new Set([\n  'mdxFlowExpression',\n  'mdxJsxFlowElement',\n  'mdxJsxTextElement',\n  'mdxTextExpression',\n  'mdxjsEsm'\n])\n\n/** @type {ParserOptions<DefaultTreeAdapterMap>} */\nconst parseOptions = {sourceCodeLocationInfo: true, scriptingEnabled: false}\n\n/**\n * Pass a hast tree through an HTML parser, which will fix nesting, and turn\n * raw nodes into actual nodes.\n *\n * @param {Nodes} tree\n *   Original hast tree to transform.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {Nodes}\n *   Parsed again tree.\n */\nexport function raw(tree, options) {\n  const document = documentMode(tree)\n  /** @type {(node: Nodes, state: State) => undefined} */\n  const one = zwitch('type', {\n    handlers: {root, element, text, comment, doctype, raw: handleRaw},\n    unknown\n  })\n\n  /** @type {State} */\n  const state = {\n    parser: document\n      ? new Parser(parseOptions)\n      : Parser.getFragmentParser(undefined, parseOptions),\n    handle(node) {\n      one(node, state)\n    },\n    stitches: false,\n    options: options || {}\n  }\n\n  one(tree, state)\n  resetTokenizer(state, pointStart())\n\n  const p5 = document ? state.parser.document : state.parser.getFragment()\n  const result = fromParse5(p5, {\n    // To do: support `space`?\n    file: state.options.file\n  })\n\n  if (state.stitches) {\n    visit(result, 'comment', function (node, index, parent) {\n      const stitch = /** @type {Stitch} */ (/** @type {unknown} */ (node))\n      if (stitch.value.stitch && parent && index !== undefined) {\n        /** @type {Array<RootContent>} */\n        const siblings = parent.children\n        // @ts-expect-error: assume the stitch is allowed.\n        siblings[index] = stitch.value.stitch\n        return index\n      }\n    })\n  }\n\n  // Unpack if possible and when not given a `root`.\n  if (\n    result.type === 'root' &&\n    result.children.length === 1 &&\n    result.children[0].type === tree.type\n  ) {\n    return result.children[0]\n  }\n\n  return result\n}\n\n/**\n * Transform all nodes\n *\n * @param {Array<RootContent>} nodes\n *   hast content.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction all(nodes, state) {\n  let index = -1\n\n  /* istanbul ignore else - invalid nodes, see rehypejs/rehype-raw#7. */\n  if (nodes) {\n    while (++index < nodes.length) {\n      state.handle(nodes[index])\n    }\n  }\n}\n\n/**\n * Transform a root.\n *\n * @param {Root} node\n *   hast root node.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction root(node, state) {\n  all(node.children, state)\n}\n\n/**\n * Transform an element.\n *\n * @param {Element} node\n *   hast element node.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction element(node, state) {\n  startTag(node, state)\n\n  all(node.children, state)\n\n  endTag(node, state)\n}\n\n/**\n * Transform a text.\n *\n * @param {Text} node\n *   hast text node.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction text(node, state) {\n  // Allow `DATA` through `PLAINTEXT`,\n  // but when hanging in a tag for example,\n  // switch back to `DATA`.\n  // Note: `State` is not exposed by `parse5`, so these numbers are fragile.\n  // See: <https://github.com/inikulin/parse5/blob/46cba43/packages/parse5/lib/tokenizer/index.ts#L58>\n  if (state.parser.tokenizer.state > 4) {\n    state.parser.tokenizer.state = 0\n  }\n\n  /** @type {Token.CharacterToken} */\n  const token = {\n    type: Token.TokenType.CHARACTER,\n    chars: node.value,\n    location: createParse5Location(node)\n  }\n\n  resetTokenizer(state, pointStart(node))\n  // @ts-expect-error: private.\n  state.parser.currentToken = token\n  // @ts-expect-error: private.\n  state.parser._processToken(state.parser.currentToken)\n}\n\n/**\n * Transform a doctype.\n *\n * @param {Doctype} node\n *   hast doctype node.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction doctype(node, state) {\n  /** @type {Token.DoctypeToken} */\n  const token = {\n    type: Token.TokenType.DOCTYPE,\n    name: 'html',\n    forceQuirks: false,\n    publicId: '',\n    systemId: '',\n    location: createParse5Location(node)\n  }\n\n  resetTokenizer(state, pointStart(node))\n  // @ts-expect-error: private.\n  state.parser.currentToken = token\n  // @ts-expect-error: private.\n  state.parser._processToken(state.parser.currentToken)\n}\n\n/**\n * Transform a stitch.\n *\n * @param {Nodes} node\n *   unknown node.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction stitch(node, state) {\n  // Mark that there are stitches, so we need to walk the tree and revert them.\n  state.stitches = true\n\n  /** @type {Nodes} */\n  const clone = cloneWithoutChildren(node)\n\n  // Recurse, because to somewhat handle `[<x>]</x>` (where `[]` denotes the\n  // passed through node).\n  if ('children' in node && 'children' in clone) {\n    // Root in root out.\n    const fakeRoot = /** @type {Root} */ (\n      raw({type: 'root', children: node.children}, state.options)\n    )\n    clone.children = fakeRoot.children\n  }\n\n  // Hack: `value` is supposed to be a string, but as none of the tools\n  // (`parse5` or `hast-util-from-parse5`) looks at it, we can pass nodes\n  // through.\n  comment({type: 'comment', value: {stitch: clone}}, state)\n}\n\n/**\n * Transform a comment (or stitch).\n *\n * @param {Comment | Stitch} node\n *   hast comment node.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction comment(node, state) {\n  /** @type {string} */\n  // @ts-expect-error: we pass stitches through.\n  const data = node.value\n\n  /** @type {Token.CommentToken} */\n  const token = {\n    type: Token.TokenType.COMMENT,\n    data,\n    location: createParse5Location(node)\n  }\n  resetTokenizer(state, pointStart(node))\n  // @ts-expect-error: private.\n  state.parser.currentToken = token\n  // @ts-expect-error: private.\n  state.parser._processToken(state.parser.currentToken)\n}\n\n/**\n * Transform a raw node.\n *\n * @param {Raw} node\n *   hast raw node.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction handleRaw(node, state) {\n  // Reset preprocessor:\n  // See: <https://github.com/inikulin/parse5/blob/6f7ca60/packages/parse5/lib/tokenizer/preprocessor.ts#L18-L31>.\n  state.parser.tokenizer.preprocessor.html = ''\n  state.parser.tokenizer.preprocessor.pos = -1\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser.tokenizer.preprocessor.lastGapPos = -2\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser.tokenizer.preprocessor.gapStack = []\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser.tokenizer.preprocessor.skipNextNewLine = false\n  state.parser.tokenizer.preprocessor.lastChunkWritten = false\n  state.parser.tokenizer.preprocessor.endOfChunkHit = false\n  // @ts-expect-error: private.\n  // type-coverage:ignore-next-line\n  state.parser.tokenizer.preprocessor.isEol = false\n\n  // Now pass `node.value`.\n  setPoint(state, pointStart(node))\n\n  state.parser.tokenizer.write(\n    state.options.tagfilter\n      ? node.value.replace(gfmTagfilterExpression, '&lt;$1$2')\n      : node.value,\n    false\n  )\n  // @ts-expect-error: private.\n  state.parser.tokenizer._runParsingLoop()\n\n  // Character references hang, so if we ended there, we need to flush\n  // those too.\n  // We reset the preprocessor as if the document ends here.\n  // Then one single call to the relevant state does the trick, parse5\n  // consumes the whole token.\n\n  // Note: `State` is not exposed by `parse5`, so these numbers are fragile.\n  // See: <https://github.com/inikulin/parse5/blob/46cba43/packages/parse5/lib/tokenizer/index.ts#L58>\n  // Note: a change to `parse5`, which breaks this, was merged but not released.\n  // Investigate when it is.\n  // To do: remove next major.\n  /* c8 ignore next 12 -- removed in <https://github.com/inikulin/parse5/pull/897> */\n  if (\n    state.parser.tokenizer.state === 72 /* NAMED_CHARACTER_REFERENCE */ ||\n    // @ts-expect-error: removed.\n    state.parser.tokenizer.state === 78 /* NUMERIC_CHARACTER_REFERENCE_END */\n  ) {\n    state.parser.tokenizer.preprocessor.lastChunkWritten = true\n    /** @type {number} */\n    // @ts-expect-error: private.\n    const cp = state.parser.tokenizer._consume()\n    // @ts-expect-error: private.\n    state.parser.tokenizer._callState(cp)\n  }\n}\n\n/**\n * Crash on an unknown node.\n *\n * @param {unknown} node_\n *   unknown node.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Never.\n */\nfunction unknown(node_, state) {\n  const node = /** @type {Nodes} */ (node_)\n\n  if (\n    state.options.passThrough &&\n    state.options.passThrough.includes(node.type)\n  ) {\n    stitch(node, state)\n  } else {\n    let extra = ''\n\n    if (knownMdxNames.has(node.type)) {\n      extra =\n        \". It looks like you are using MDX nodes with `hast-util-raw` (or `rehype-raw`). If you use this because you are using remark or rehype plugins that inject `'html'` nodes, then please raise an issue with that plugin, as its a bad and slow idea. If you use this because you are using markdown syntax, then you have to configure this utility (or plugin) to pass through these nodes (see `passThrough` in docs), but you can also migrate to use the MDX syntax\"\n    }\n\n    throw new Error('Cannot compile `' + node.type + '` node' + extra)\n  }\n}\n\n/**\n * Reset the tokenizer of a parser.\n *\n * @param {State} state\n *   Info passed around about the current state.\n * @param {Point | undefined} point\n *   Point.\n * @returns {undefined}\n *   Nothing.\n */\nfunction resetTokenizer(state, point) {\n  setPoint(state, point)\n\n  // Process final characters if they\u2019re still there after hibernating.\n  /** @type {Token.CharacterToken} */\n  // @ts-expect-error: private.\n  const token = state.parser.tokenizer.currentCharacterToken\n\n  if (token && token.location) {\n    token.location.endLine = state.parser.tokenizer.preprocessor.line\n    token.location.endCol = state.parser.tokenizer.preprocessor.col + 1\n    token.location.endOffset = state.parser.tokenizer.preprocessor.offset + 1\n    // @ts-expect-error: private.\n    state.parser.currentToken = token\n    // @ts-expect-error: private.\n    state.parser._processToken(state.parser.currentToken)\n  }\n\n  // Reset tokenizer:\n  // See: <https://github.com/inikulin/parse5/blob/6f7ca60/packages/parse5/lib/tokenizer/index.ts#L187-L223>.\n  // Especially putting it back in the `data` state is useful: some elements,\n  // like textareas and iframes, change the state.\n  // See GH-7.\n  // But also if broken HTML is in `raw`, and then a correct element is given.\n  // See GH-11.\n  // @ts-expect-error: private.\n  state.parser.tokenizer.paused = false\n  // @ts-expect-error: private.\n  state.parser.tokenizer.inLoop = false\n\n  // Note: don\u2019t reset `state`, `inForeignNode`, or `lastStartTagName`, we\n  // manually update those when needed.\n  state.parser.tokenizer.active = false\n  // @ts-expect-error: private.\n  state.parser.tokenizer.returnState = TokenizerMode.DATA\n  // @ts-expect-error: private.\n  state.parser.tokenizer.charRefCode = -1\n  // @ts-expect-error: private.\n  state.parser.tokenizer.consumedAfterSnapshot = -1\n  // @ts-expect-error: private.\n  state.parser.tokenizer.currentLocation = null\n  // @ts-expect-error: private.\n  state.parser.tokenizer.currentCharacterToken = null\n  // @ts-expect-error: private.\n  state.parser.tokenizer.currentToken = null\n  // @ts-expect-error: private.\n  state.parser.tokenizer.currentAttr = {name: '', value: ''}\n}\n\n/**\n * Set current location.\n *\n * @param {State} state\n *   Info passed around about the current state.\n * @param {Point | undefined} point\n *   Point.\n * @returns {undefined}\n *   Nothing.\n */\nfunction setPoint(state, point) {\n  if (point && point.offset !== undefined) {\n    /** @type {Token.Location} */\n    const location = {\n      startLine: point.line,\n      startCol: point.column,\n      startOffset: point.offset,\n      endLine: -1,\n      endCol: -1,\n      endOffset: -1\n    }\n\n    // @ts-expect-error: private.\n    // type-coverage:ignore-next-line\n    state.parser.tokenizer.preprocessor.lineStartPos = -point.column + 1 // Looks weird, but ensures we get correct positional info.\n    state.parser.tokenizer.preprocessor.droppedBufferSize = point.offset\n    state.parser.tokenizer.preprocessor.line = point.line\n    // @ts-expect-error: private.\n    state.parser.tokenizer.currentLocation = location\n  }\n}\n\n/**\n * Emit a start tag.\n *\n * @param {Element} node\n *   Element.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction startTag(node, state) {\n  const tagName = node.tagName.toLowerCase()\n\n  // Ignore tags if we\u2019re in plain text.\n  if (state.parser.tokenizer.state === TokenizerMode.PLAINTEXT) return\n\n  resetTokenizer(state, pointStart(node))\n\n  const current = state.parser.openElements.current\n  let ns = 'namespaceURI' in current ? current.namespaceURI : webNamespaces.html\n\n  if (ns === webNamespaces.html && tagName === 'svg') {\n    ns = webNamespaces.svg\n  }\n\n  const result = toParse5(\n    // Shallow clone to not delve into `children`: we only need the attributes.\n    {...node, children: []},\n    {space: ns === webNamespaces.svg ? 'svg' : 'html'}\n  )\n\n  /** @type {Token.TagToken} */\n  const tag = {\n    type: Token.TokenType.START_TAG,\n    tagName,\n    tagID: html.getTagID(tagName),\n    // We always send start and end tags.\n    selfClosing: false,\n    ackSelfClosing: false,\n    // Always element.\n    /* c8 ignore next */\n    attrs: 'attrs' in result ? result.attrs : [],\n    location: createParse5Location(node)\n  }\n\n  // The HTML parsing algorithm works by doing half of the state management in\n  // the tokenizer and half in the parser.\n  // We can\u2019t use the tokenizer here, as we don\u2019t have strings.\n  // So we act *as if* the tokenizer emits tokens:\n\n  // @ts-expect-error: private.\n  state.parser.currentToken = tag\n  // @ts-expect-error: private.\n  state.parser._processToken(state.parser.currentToken)\n\n  // \u2026but then we still need a bunch of work that the tokenizer would normally\n  // do, such as:\n\n  // Set a tag name, similar to how the tokenizer would do it.\n  state.parser.tokenizer.lastStartTagName = tagName\n\n  // `inForeignNode` is correctly set by the parser.\n}\n\n/**\n * Emit an end tag.\n *\n * @param {Element} node\n *   Element.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {undefined}\n *   Nothing.\n */\nfunction endTag(node, state) {\n  const tagName = node.tagName.toLowerCase()\n  // Do not emit closing tags for HTML void elements.\n  if (\n    !state.parser.tokenizer.inForeignNode &&\n    htmlVoidElements.includes(tagName)\n  ) {\n    return\n  }\n\n  // Ignore tags if we\u2019re in plain text.\n  if (state.parser.tokenizer.state === TokenizerMode.PLAINTEXT) return\n\n  resetTokenizer(state, pointEnd(node))\n\n  /** @type {Token.TagToken} */\n  const tag = {\n    type: Token.TokenType.END_TAG,\n    tagName,\n    tagID: html.getTagID(tagName),\n    selfClosing: false,\n    ackSelfClosing: false,\n    attrs: [],\n    location: createParse5Location(node)\n  }\n\n  // The HTML parsing algorithm works by doing half of the state management in\n  // the tokenizer and half in the parser.\n  // We can\u2019t use the tokenizer here, as we don\u2019t have strings.\n  // So we act *as if* the tokenizer emits tokens:\n\n  // @ts-expect-error: private.\n  state.parser.currentToken = tag\n  // @ts-expect-error: private.\n  state.parser._processToken(state.parser.currentToken)\n\n  // \u2026but then we still need a bunch of work that the tokenizer would normally\n  // do, such as:\n\n  // Switch back to the data state after alternative states that don\u2019t accept\n  // tags:\n  if (\n    // Current element is closed.\n    tagName === state.parser.tokenizer.lastStartTagName &&\n    // `<textarea>` and `<title>`\n    (state.parser.tokenizer.state === TokenizerMode.RCDATA ||\n      // `<iframe>`, `<noembed>`, `<noframes>`, `<style>`, `<xmp>`\n      state.parser.tokenizer.state === TokenizerMode.RAWTEXT ||\n      // `<script>`\n      state.parser.tokenizer.state === TokenizerMode.SCRIPT_DATA)\n    // Note: `<plaintext>` not needed, as it\u2019s the last element.\n  ) {\n    state.parser.tokenizer.state = TokenizerMode.DATA\n  }\n}\n\n/**\n * Check if `node` represents a whole document or a fragment.\n *\n * @param {Nodes} node\n *   hast node.\n * @returns {boolean}\n *   Whether this represents a whole document or a fragment.\n */\nfunction documentMode(node) {\n  const head = node.type === 'root' ? node.children[0] : node\n  return Boolean(\n    head &&\n      (head.type === 'doctype' ||\n        (head.type === 'element' && head.tagName.toLowerCase() === 'html'))\n  )\n}\n\n/**\n * Get a `parse5` location from a node.\n *\n * @param {Nodes | Stitch} node\n *   hast node.\n * @returns {Token.Location}\n *   `parse5` location.\n */\nfunction createParse5Location(node) {\n  const start = pointStart(node) || {\n    line: undefined,\n    column: undefined,\n    offset: undefined\n  }\n  const end = pointEnd(node) || {\n    line: undefined,\n    column: undefined,\n    offset: undefined\n  }\n\n  /** @type {Record<keyof Token.Location, number | undefined>} */\n  const location = {\n    startLine: start.line,\n    startCol: start.column,\n    startOffset: start.offset,\n    endLine: end.line,\n    endCol: end.column,\n    endOffset: end.offset\n  }\n\n  // @ts-expect-error: unist point values can be `undefined` in hast, which\n  // `parse5` types don\u2019t want.\n  return location\n}\n\n/**\n * @template {Nodes} NodeType\n *   Node type.\n * @param {NodeType} node\n *   Node to clone.\n * @returns {NodeType}\n *   Cloned node, without children.\n */\nfunction cloneWithoutChildren(node) {\n  return 'children' in node\n    ? structuredClone({...node, children: []})\n    : structuredClone(node)\n}\n", "/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast-util-raw').Options} RawOptions\n * @typedef {import('vfile').VFile} VFile\n */\n\n/**\n * @typedef {Omit<RawOptions, 'file'>} Options\n *   Configuration.\n */\n\nimport {raw} from 'hast-util-raw'\n\n/**\n * Parse the tree (and raw nodes) again, keeping positional info okay.\n *\n * @param {Options | null | undefined}  [options]\n *   Configuration (optional).\n * @returns\n *   Transform.\n */\nexport default function rehypeRaw(options) {\n  /**\n   * @param {Root} tree\n   *   Tree.\n   * @param {VFile} file\n   *   File.\n   * @returns {Root}\n   *   New tree.\n   */\n  return function (tree, file) {\n    // Assume root in -> root out.\n    const result = /** @type {Root} */ (raw(tree, {...options, file}))\n    return result\n  }\n}\n", "function _objectWithoutPropertiesLoose(r, e) {\n  if (null == r) return {};\n  var t = {};\n  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n    if (-1 !== e.indexOf(n)) continue;\n    t[n] = r[n];\n  }\n  return t;\n}\nexport { _objectWithoutPropertiesLoose as default };", "import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"prefixCls\", \"className\", \"source\", \"style\", \"disableCopy\", \"skipHtml\", \"onScroll\", \"onMouseOver\", \"pluginsFilter\", \"rehypeRewrite\", \"wrapperElement\", \"warpperElement\", \"urlTransform\"];\nimport React, { useImperativeHandle } from 'react';\nimport ReactMarkdown from 'react-markdown';\nimport gfm from 'remark-gfm';\nimport raw from 'rehype-raw';\nimport { remarkAlert } from 'remark-github-blockquote-alert';\nimport { useCopied } from \"./plugins/useCopied.js\";\nimport \"./styles/markdown.css\";\n\n/**\n * https://github.com/uiwjs/react-md-editor/issues/607\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar defaultUrlTransform = url => url;\nexport default /*#__PURE__*/React.forwardRef((props, ref) => {\n  var _props$prefixCls = props.prefixCls,\n    prefixCls = _props$prefixCls === void 0 ? 'wmde-markdown wmde-markdown-color' : _props$prefixCls,\n    className = props.className,\n    source = props.source,\n    style = props.style,\n    _props$disableCopy = props.disableCopy,\n    disableCopy = _props$disableCopy === void 0 ? false : _props$disableCopy,\n    _props$skipHtml = props.skipHtml,\n    skipHtml = _props$skipHtml === void 0 ? true : _props$skipHtml,\n    onScroll = props.onScroll,\n    onMouseOver = props.onMouseOver,\n    pluginsFilter = props.pluginsFilter,\n    rewrite = props.rehypeRewrite,\n    _props$wrapperElement = props.wrapperElement,\n    wrapperElement = _props$wrapperElement === void 0 ? {} : _props$wrapperElement,\n    _props$warpperElement = props.warpperElement,\n    warpperElement = _props$warpperElement === void 0 ? {} : _props$warpperElement,\n    urlTransform = props.urlTransform,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  var mdp = React.useRef(null);\n  useImperativeHandle(ref, () => _extends({}, props, {\n    mdp\n  }), [mdp, props]);\n  var cls = (prefixCls || '') + \" \" + (className || '');\n  useCopied(mdp);\n  var rehypePlugins = [...(other.rehypePlugins || [])];\n  var customProps = {\n    allowElement: (element, index, parent) => {\n      if (other.allowElement) {\n        return other.allowElement(element, index, parent);\n      }\n      return /^[A-Za-z0-9]+$/.test(element.tagName);\n    }\n  };\n  if (!skipHtml) {\n    rehypePlugins.push(raw);\n  }\n  var remarkPlugins = [remarkAlert, ...(other.remarkPlugins || []), gfm];\n  var wrapperProps = _extends({}, warpperElement, wrapperElement);\n  return /*#__PURE__*/_jsx(\"div\", _extends({\n    ref: mdp,\n    onScroll: onScroll,\n    onMouseOver: onMouseOver\n  }, wrapperProps, {\n    className: cls,\n    style: style,\n    children: /*#__PURE__*/_jsx(ReactMarkdown, _extends({}, customProps, other, {\n      skipHtml: !skipHtml,\n      urlTransform: urlTransform || defaultUrlTransform,\n      rehypePlugins: pluginsFilter ? pluginsFilter('rehype', rehypePlugins) : rehypePlugins,\n      remarkPlugins: pluginsFilter ? pluginsFilter('remark', remarkPlugins) : remarkPlugins,\n      children: source || ''\n    }))\n  }));\n});", "/**\n * @typedef Options\n *   Configuration.\n * @property {boolean | null | undefined} [jsx=false]\n *   Support JSX identifiers (default: `false`).\n */\n\nconst startRe = /[$_\\p{ID_Start}]/u\nconst contRe = /[$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst contReJsx = /[-$_\\u{200C}\\u{200D}\\p{ID_Continue}]/u\nconst nameRe = /^[$_\\p{ID_Start}][$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\nconst nameReJsx = /^[$_\\p{ID_Start}][-$_\\u{200C}\\u{200D}\\p{ID_Continue}]*$/u\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Checks if the given code point can start an identifier.\n *\n * @param {number | undefined} code\n *   Code point to check.\n * @returns {boolean}\n *   Whether `code` can start an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function start(code) {\n  return code ? startRe.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given code point can continue an identifier.\n *\n * @param {number | undefined} code\n *   Code point to check.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {boolean}\n *   Whether `code` can continue an identifier.\n */\n// Note: `undefined` is supported so you can pass the result from `''.codePointAt`.\nexport function cont(code, options) {\n  const settings = options || emptyOptions\n  const re = settings.jsx ? contReJsx : contRe\n  return code ? re.test(String.fromCodePoint(code)) : false\n}\n\n/**\n * Checks if the given value is a valid identifier name.\n *\n * @param {string} name\n *   Identifier to check.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {boolean}\n *   Whether `name` can be an identifier.\n */\nexport function name(name, options) {\n  const settings = options || emptyOptions\n  const re = settings.jsx ? nameReJsx : nameRe\n  return re.test(name)\n}\n", "/**\n * @import {Identifier, Literal, MemberExpression} from 'estree'\n * @import {Jsx, JsxDev, Options, Props} from 'hast-util-to-jsx-runtime'\n * @import {Element, Nodes, Parents, Root, Text} from 'hast'\n * @import {MdxFlowExpressionHast, MdxTextExpressionHast} from 'mdast-util-mdx-expression'\n * @import {MdxJsxFlowElementHast, MdxJsxTextElementHast} from 'mdast-util-mdx-jsx'\n * @import {MdxjsEsmHast} from 'mdast-util-mdxjs-esm'\n * @import {Position} from 'unist'\n * @import {Child, Create, Field, JsxElement, State, Style} from './types.js'\n */\n\nimport {stringify as commas} from 'comma-separated-tokens'\nimport {ok as assert} from 'devlop'\nimport {name as isIdentifierName} from 'estree-util-is-identifier-name'\nimport {whitespace} from 'hast-util-whitespace'\nimport {find, hastToReact, html, svg} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport styleToJs from 'style-to-js'\nimport {pointStart} from 'unist-util-position'\nimport {VFileMessage} from 'vfile-message'\n\n// To do: next major: `Object.hasOwn`.\nconst own = {}.hasOwnProperty\n\n/** @type {Map<string, number>} */\nconst emptyMap = new Map()\n\nconst cap = /[A-Z]/g\n\n// `react-dom` triggers a warning for *any* white space in tables.\n// To follow GFM, `mdast-util-to-hast` injects line endings between elements.\n// Other tools might do so too, but they don\u2019t do here, so we remove all of\n// that.\n\n// See: <https://github.com/facebook/react/pull/7081>.\n// See: <https://github.com/facebook/react/pull/7515>.\n// See: <https://github.com/remarkjs/remark-react/issues/64>.\n// See: <https://github.com/rehypejs/rehype-react/pull/29>.\n// See: <https://github.com/rehypejs/rehype-react/pull/32>.\n// See: <https://github.com/rehypejs/rehype-react/pull/45>.\nconst tableElements = new Set(['table', 'tbody', 'thead', 'tfoot', 'tr'])\n\nconst tableCellElement = new Set(['td', 'th'])\n\nconst docs = 'https://github.com/syntax-tree/hast-util-to-jsx-runtime'\n\n/**\n * Transform a hast tree to preact, react, solid, svelte, vue, etc.,\n * with an automatic JSX runtime.\n *\n * @param {Nodes} tree\n *   Tree to transform.\n * @param {Options} options\n *   Configuration (required).\n * @returns {JsxElement}\n *   JSX element.\n */\n\nexport function toJsxRuntime(tree, options) {\n  if (!options || options.Fragment === undefined) {\n    throw new TypeError('Expected `Fragment` in options')\n  }\n\n  const filePath = options.filePath || undefined\n  /** @type {Create} */\n  let create\n\n  if (options.development) {\n    if (typeof options.jsxDEV !== 'function') {\n      throw new TypeError(\n        'Expected `jsxDEV` in options when `development: true`'\n      )\n    }\n\n    create = developmentCreate(filePath, options.jsxDEV)\n  } else {\n    if (typeof options.jsx !== 'function') {\n      throw new TypeError('Expected `jsx` in production options')\n    }\n\n    if (typeof options.jsxs !== 'function') {\n      throw new TypeError('Expected `jsxs` in production options')\n    }\n\n    create = productionCreate(filePath, options.jsx, options.jsxs)\n  }\n\n  /** @type {State} */\n  const state = {\n    Fragment: options.Fragment,\n    ancestors: [],\n    components: options.components || {},\n    create,\n    elementAttributeNameCase: options.elementAttributeNameCase || 'react',\n    evaluater: options.createEvaluater ? options.createEvaluater() : undefined,\n    filePath,\n    ignoreInvalidStyle: options.ignoreInvalidStyle || false,\n    passKeys: options.passKeys !== false,\n    passNode: options.passNode || false,\n    schema: options.space === 'svg' ? svg : html,\n    stylePropertyNameCase: options.stylePropertyNameCase || 'dom',\n    tableCellAlignToStyle: options.tableCellAlignToStyle !== false\n  }\n\n  const result = one(state, tree, undefined)\n\n  // JSX element.\n  if (result && typeof result !== 'string') {\n    return result\n  }\n\n  // Text node or something that turned into nothing.\n  return state.create(\n    tree,\n    state.Fragment,\n    {children: result || undefined},\n    undefined\n  )\n}\n\n/**\n * Transform a node.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Nodes} node\n *   Current node.\n * @param {string | undefined} key\n *   Key.\n * @returns {Child | undefined}\n *   Child, optional.\n */\nfunction one(state, node, key) {\n  if (node.type === 'element') {\n    return element(state, node, key)\n  }\n\n  if (node.type === 'mdxFlowExpression' || node.type === 'mdxTextExpression') {\n    return mdxExpression(state, node)\n  }\n\n  if (node.type === 'mdxJsxFlowElement' || node.type === 'mdxJsxTextElement') {\n    return mdxJsxElement(state, node, key)\n  }\n\n  if (node.type === 'mdxjsEsm') {\n    return mdxEsm(state, node)\n  }\n\n  if (node.type === 'root') {\n    return root(state, node, key)\n  }\n\n  if (node.type === 'text') {\n    return text(state, node)\n  }\n}\n\n/**\n * Handle element.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Element} node\n *   Current node.\n * @param {string | undefined} key\n *   Key.\n * @returns {Child | undefined}\n *   Child, optional.\n */\nfunction element(state, node, key) {\n  const parentSchema = state.schema\n  let schema = parentSchema\n\n  if (node.tagName.toLowerCase() === 'svg' && parentSchema.space === 'html') {\n    schema = svg\n    state.schema = schema\n  }\n\n  state.ancestors.push(node)\n\n  const type = findComponentFromName(state, node.tagName, false)\n  const props = createElementProps(state, node)\n  let children = createChildren(state, node)\n\n  if (tableElements.has(node.tagName)) {\n    children = children.filter(function (child) {\n      return typeof child === 'string' ? !whitespace(child) : true\n    })\n  }\n\n  addNode(state, props, type, node)\n  addChildren(props, children)\n\n  // Restore.\n  state.ancestors.pop()\n  state.schema = parentSchema\n\n  return state.create(node, type, props, key)\n}\n\n/**\n * Handle MDX expression.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdxFlowExpressionHast | MdxTextExpressionHast} node\n *   Current node.\n * @returns {Child | undefined}\n *   Child, optional.\n */\nfunction mdxExpression(state, node) {\n  if (node.data && node.data.estree && state.evaluater) {\n    const program = node.data.estree\n    const expression = program.body[0]\n    assert(expression.type === 'ExpressionStatement')\n\n    // Assume result is a child.\n    return /** @type {Child | undefined} */ (\n      state.evaluater.evaluateExpression(expression.expression)\n    )\n  }\n\n  crashEstree(state, node.position)\n}\n\n/**\n * Handle MDX ESM.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdxjsEsmHast} node\n *   Current node.\n * @returns {Child | undefined}\n *   Child, optional.\n */\nfunction mdxEsm(state, node) {\n  if (node.data && node.data.estree && state.evaluater) {\n    // Assume result is a child.\n    return /** @type {Child | undefined} */ (\n      state.evaluater.evaluateProgram(node.data.estree)\n    )\n  }\n\n  crashEstree(state, node.position)\n}\n\n/**\n * Handle MDX JSX.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdxJsxFlowElementHast | MdxJsxTextElementHast} node\n *   Current node.\n * @param {string | undefined} key\n *   Key.\n * @returns {Child | undefined}\n *   Child, optional.\n */\nfunction mdxJsxElement(state, node, key) {\n  const parentSchema = state.schema\n  let schema = parentSchema\n\n  if (node.name === 'svg' && parentSchema.space === 'html') {\n    schema = svg\n    state.schema = schema\n  }\n\n  state.ancestors.push(node)\n\n  const type =\n    node.name === null\n      ? state.Fragment\n      : findComponentFromName(state, node.name, true)\n  const props = createJsxElementProps(state, node)\n  const children = createChildren(state, node)\n\n  addNode(state, props, type, node)\n  addChildren(props, children)\n\n  // Restore.\n  state.ancestors.pop()\n  state.schema = parentSchema\n\n  return state.create(node, type, props, key)\n}\n\n/**\n * Handle root.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Root} node\n *   Current node.\n * @param {string | undefined} key\n *   Key.\n * @returns {Child | undefined}\n *   Child, optional.\n */\nfunction root(state, node, key) {\n  /** @type {Props} */\n  const props = {}\n\n  addChildren(props, createChildren(state, node))\n\n  return state.create(node, state.Fragment, props, key)\n}\n\n/**\n * Handle text.\n *\n * @param {State} _\n *   Info passed around.\n * @param {Text} node\n *   Current node.\n * @returns {Child | undefined}\n *   Child, optional.\n */\nfunction text(_, node) {\n  return node.value\n}\n\n/**\n * Add `node` to props.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Props} props\n *   Props.\n * @param {unknown} type\n *   Type.\n * @param {Element | MdxJsxFlowElementHast | MdxJsxTextElementHast} node\n *   Node.\n * @returns {undefined}\n *   Nothing.\n */\nfunction addNode(state, props, type, node) {\n  // If this is swapped out for a component:\n  if (typeof type !== 'string' && type !== state.Fragment && state.passNode) {\n    props.node = node\n  }\n}\n\n/**\n * Add children to props.\n *\n * @param {Props} props\n *   Props.\n * @param {Array<Child>} children\n *   Children.\n * @returns {undefined}\n *   Nothing.\n */\nfunction addChildren(props, children) {\n  if (children.length > 0) {\n    const value = children.length > 1 ? children : children[0]\n\n    if (value) {\n      props.children = value\n    }\n  }\n}\n\n/**\n * @param {string | undefined} _\n *   Path to file.\n * @param {Jsx} jsx\n *   Dynamic.\n * @param {Jsx} jsxs\n *   Static.\n * @returns {Create}\n *   Create a production element.\n */\nfunction productionCreate(_, jsx, jsxs) {\n  return create\n  /** @type {Create} */\n  function create(_, type, props, key) {\n    // Only an array when there are 2 or more children.\n    const isStaticChildren = Array.isArray(props.children)\n    const fn = isStaticChildren ? jsxs : jsx\n    return key ? fn(type, props, key) : fn(type, props)\n  }\n}\n\n/**\n * @param {string | undefined} filePath\n *   Path to file.\n * @param {JsxDev} jsxDEV\n *   Development.\n * @returns {Create}\n *   Create a development element.\n */\nfunction developmentCreate(filePath, jsxDEV) {\n  return create\n  /** @type {Create} */\n  function create(node, type, props, key) {\n    // Only an array when there are 2 or more children.\n    const isStaticChildren = Array.isArray(props.children)\n    const point = pointStart(node)\n    return jsxDEV(\n      type,\n      props,\n      key,\n      isStaticChildren,\n      {\n        columnNumber: point ? point.column - 1 : undefined,\n        fileName: filePath,\n        lineNumber: point ? point.line : undefined\n      },\n      undefined\n    )\n  }\n}\n\n/**\n * Create props from an element.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Element} node\n *   Current element.\n * @returns {Props}\n *   Props.\n */\nfunction createElementProps(state, node) {\n  /** @type {Props} */\n  const props = {}\n  /** @type {string | undefined} */\n  let alignValue\n  /** @type {string} */\n  let prop\n\n  for (prop in node.properties) {\n    if (prop !== 'children' && own.call(node.properties, prop)) {\n      const result = createProperty(state, prop, node.properties[prop])\n\n      if (result) {\n        const [key, value] = result\n\n        if (\n          state.tableCellAlignToStyle &&\n          key === 'align' &&\n          typeof value === 'string' &&\n          tableCellElement.has(node.tagName)\n        ) {\n          alignValue = value\n        } else {\n          props[key] = value\n        }\n      }\n    }\n  }\n\n  if (alignValue) {\n    // Assume style is an object.\n    const style = /** @type {Style} */ (props.style || (props.style = {}))\n    style[state.stylePropertyNameCase === 'css' ? 'text-align' : 'textAlign'] =\n      alignValue\n  }\n\n  return props\n}\n\n/**\n * Create props from a JSX element.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdxJsxFlowElementHast | MdxJsxTextElementHast} node\n *   Current JSX element.\n * @returns {Props}\n *   Props.\n */\nfunction createJsxElementProps(state, node) {\n  /** @type {Props} */\n  const props = {}\n\n  for (const attribute of node.attributes) {\n    if (attribute.type === 'mdxJsxExpressionAttribute') {\n      if (attribute.data && attribute.data.estree && state.evaluater) {\n        const program = attribute.data.estree\n        const expression = program.body[0]\n        assert(expression.type === 'ExpressionStatement')\n        const objectExpression = expression.expression\n        assert(objectExpression.type === 'ObjectExpression')\n        const property = objectExpression.properties[0]\n        assert(property.type === 'SpreadElement')\n\n        Object.assign(\n          props,\n          state.evaluater.evaluateExpression(property.argument)\n        )\n      } else {\n        crashEstree(state, node.position)\n      }\n    } else {\n      // For JSX, the author is responsible of passing in the correct values.\n      const name = attribute.name\n      /** @type {unknown} */\n      let value\n\n      if (attribute.value && typeof attribute.value === 'object') {\n        if (\n          attribute.value.data &&\n          attribute.value.data.estree &&\n          state.evaluater\n        ) {\n          const program = attribute.value.data.estree\n          const expression = program.body[0]\n          assert(expression.type === 'ExpressionStatement')\n          value = state.evaluater.evaluateExpression(expression.expression)\n        } else {\n          crashEstree(state, node.position)\n        }\n      } else {\n        value = attribute.value === null ? true : attribute.value\n      }\n\n      // Assume a prop.\n      props[name] = /** @type {Props[keyof Props]} */ (value)\n    }\n  }\n\n  return props\n}\n\n/**\n * Create children.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Parents} node\n *   Current element.\n * @returns {Array<Child>}\n *   Children.\n */\nfunction createChildren(state, node) {\n  /** @type {Array<Child>} */\n  const children = []\n  let index = -1\n  /** @type {Map<string, number>} */\n  // Note: test this when Solid doesn\u2019t want to merge my upcoming PR.\n  /* c8 ignore next */\n  const countsByName = state.passKeys ? new Map() : emptyMap\n\n  while (++index < node.children.length) {\n    const child = node.children[index]\n    /** @type {string | undefined} */\n    let key\n\n    if (state.passKeys) {\n      const name =\n        child.type === 'element'\n          ? child.tagName\n          : child.type === 'mdxJsxFlowElement' ||\n              child.type === 'mdxJsxTextElement'\n            ? child.name\n            : undefined\n\n      if (name) {\n        const count = countsByName.get(name) || 0\n        key = name + '-' + count\n        countsByName.set(name, count + 1)\n      }\n    }\n\n    const result = one(state, child, key)\n    if (result !== undefined) children.push(result)\n  }\n\n  return children\n}\n\n/**\n * Handle a property.\n *\n * @param {State} state\n *   Info passed around.\n * @param {string} prop\n *   Key.\n * @param {Array<number | string> | boolean | number | string | null | undefined} value\n *   hast property value.\n * @returns {Field | undefined}\n *   Field for runtime, optional.\n */\nfunction createProperty(state, prop, value) {\n  const info = find(state.schema, prop)\n\n  // Ignore nullish and `NaN` values.\n  if (\n    value === null ||\n    value === undefined ||\n    (typeof value === 'number' && Number.isNaN(value))\n  ) {\n    return\n  }\n\n  if (Array.isArray(value)) {\n    // Accept `array`.\n    // Most props are space-separated.\n    value = info.commaSeparated ? commas(value) : spaces(value)\n  }\n\n  // React only accepts `style` as object.\n  if (info.property === 'style') {\n    let styleObject =\n      typeof value === 'object' ? value : parseStyle(state, String(value))\n\n    if (state.stylePropertyNameCase === 'css') {\n      styleObject = transformStylesToCssCasing(styleObject)\n    }\n\n    return ['style', styleObject]\n  }\n\n  return [\n    state.elementAttributeNameCase === 'react' && info.space\n      ? hastToReact[info.property] || info.property\n      : info.attribute,\n    value\n  ]\n}\n\n/**\n * Parse a CSS declaration to an object.\n *\n * @param {State} state\n *   Info passed around.\n * @param {string} value\n *   CSS declarations.\n * @returns {Style}\n *   Properties.\n * @throws\n *   Throws `VFileMessage` when CSS cannot be parsed.\n */\nfunction parseStyle(state, value) {\n  try {\n    return styleToJs(value, {reactCompat: true})\n  } catch (error) {\n    if (state.ignoreInvalidStyle) {\n      return {}\n    }\n\n    const cause = /** @type {Error} */ (error)\n    const message = new VFileMessage('Cannot parse `style` attribute', {\n      ancestors: state.ancestors,\n      cause,\n      ruleId: 'style',\n      source: 'hast-util-to-jsx-runtime'\n    })\n    message.file = state.filePath || undefined\n    message.url = docs + '#cannot-parse-style-attribute'\n\n    throw message\n  }\n}\n\n/**\n * Create a JSX name from a string.\n *\n * @param {State} state\n *   To do.\n * @param {string} name\n *   Name.\n * @param {boolean} allowExpression\n *   Allow member expressions and identifiers.\n * @returns {unknown}\n *   To do.\n */\nfunction findComponentFromName(state, name, allowExpression) {\n  /** @type {Identifier | Literal | MemberExpression} */\n  let result\n\n  if (!allowExpression) {\n    result = {type: 'Literal', value: name}\n  } else if (name.includes('.')) {\n    const identifiers = name.split('.')\n    let index = -1\n    /** @type {Identifier | Literal | MemberExpression | undefined} */\n    let node\n\n    while (++index < identifiers.length) {\n      /** @type {Identifier | Literal} */\n      const prop = isIdentifierName(identifiers[index])\n        ? {type: 'Identifier', name: identifiers[index]}\n        : {type: 'Literal', value: identifiers[index]}\n      node = node\n        ? {\n            type: 'MemberExpression',\n            object: node,\n            property: prop,\n            computed: Boolean(index && prop.type === 'Literal'),\n            optional: false\n          }\n        : prop\n    }\n\n    assert(node, 'always a result')\n    result = node\n  } else {\n    result =\n      isIdentifierName(name) && !/^[a-z]/.test(name)\n        ? {type: 'Identifier', name}\n        : {type: 'Literal', value: name}\n  }\n\n  // Only literals can be passed in `components` currently.\n  // No identifiers / member expressions.\n  if (result.type === 'Literal') {\n    const name = /** @type {string | number} */ (result.value)\n    return own.call(state.components, name) ? state.components[name] : name\n  }\n\n  // Assume component.\n  if (state.evaluater) {\n    return state.evaluater.evaluateExpression(result)\n  }\n\n  crashEstree(state)\n}\n\n/**\n * @param {State} state\n * @param {Position | undefined} [place]\n * @returns {never}\n */\nfunction crashEstree(state, place) {\n  const message = new VFileMessage(\n    'Cannot handle MDX estrees without `createEvaluater`',\n    {\n      ancestors: state.ancestors,\n      place,\n      ruleId: 'mdx-estree',\n      source: 'hast-util-to-jsx-runtime'\n    }\n  )\n  message.file = state.filePath || undefined\n  message.url = docs + '#cannot-handle-mdx-estrees-without-createevaluater'\n\n  throw message\n}\n\n/**\n * Transform a DOM casing style object to a CSS casing style object.\n *\n * @param {Style} domCasing\n * @returns {Style}\n */\nfunction transformStylesToCssCasing(domCasing) {\n  /** @type {Style} */\n  const cssCasing = {}\n  /** @type {string} */\n  let from\n\n  for (from in domCasing) {\n    if (own.call(domCasing, from)) {\n      cssCasing[transformStyleToCssCasing(from)] = domCasing[from]\n    }\n  }\n\n  return cssCasing\n}\n\n/**\n * Transform a DOM casing style field to a CSS casing style field.\n *\n * @param {string} from\n * @returns {string}\n */\nfunction transformStyleToCssCasing(from) {\n  let to = from.replace(cap, toDash)\n  // Handle `ms-xxx` -> `-ms-xxx`.\n  if (to.slice(0, 3) === 'ms-') to = '-' + to\n  return to\n}\n\n/**\n * Make `$0` dash cased.\n *\n * @param {string} $0\n *   Capitalized ASCII leter.\n * @returns {string}\n *   Dash and lower letter.\n */\nfunction toDash($0) {\n  return '-' + $0.toLowerCase()\n}\n", "/**\n * @typedef {import('unist').Node} Node\n * @typedef {import('unist').Point} Point\n * @typedef {import('unist').Position} Position\n */\n\n/**\n * @typedef NodeLike\n * @property {string} type\n * @property {PositionLike | null | undefined} [position]\n *\n * @typedef PointLike\n * @property {number | null | undefined} [line]\n * @property {number | null | undefined} [column]\n * @property {number | null | undefined} [offset]\n *\n * @typedef PositionLike\n * @property {PointLike | null | undefined} [start]\n * @property {PointLike | null | undefined} [end]\n */\n\n/**\n * Serialize the positional info of a point, position (start and end points),\n * or node.\n *\n * @param {Node | NodeLike | Point | PointLike | Position | PositionLike | null | undefined} [value]\n *   Node, position, or point.\n * @returns {string}\n *   Pretty printed positional info of a node (`string`).\n *\n *   In the format of a range `ls:cs-le:ce` (when given `node` or `position`)\n *   or a point `l:c` (when given `point`), where `l` stands for line, `c` for\n *   column, `s` for `start`, and `e` for end.\n *   An empty string (`''`) is returned if the given value is neither `node`,\n *   `position`, nor `point`.\n */\nexport function stringifyPosition(value) {\n  // Nothing.\n  if (!value || typeof value !== 'object') {\n    return ''\n  }\n\n  // Node.\n  if ('position' in value || 'type' in value) {\n    return position(value.position)\n  }\n\n  // Position.\n  if ('start' in value || 'end' in value) {\n    return position(value)\n  }\n\n  // Point.\n  if ('line' in value || 'column' in value) {\n    return point(value)\n  }\n\n  // ?\n  return ''\n}\n\n/**\n * @param {Point | PointLike | null | undefined} point\n * @returns {string}\n */\nfunction point(point) {\n  return index(point && point.line) + ':' + index(point && point.column)\n}\n\n/**\n * @param {Position | PositionLike | null | undefined} pos\n * @returns {string}\n */\nfunction position(pos) {\n  return point(pos && pos.start) + '-' + point(pos && pos.end)\n}\n\n/**\n * @param {number | null | undefined} value\n * @returns {number}\n */\nfunction index(value) {\n  return value && typeof value === 'number' ? value : 1\n}\n", "/**\n * @import {Node, Point, Position} from 'unist'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n *\n * @typedef Options\n *   Configuration.\n * @property {Array<Node> | null | undefined} [ancestors]\n *   Stack of (inclusive) ancestor nodes surrounding the message (optional).\n * @property {Error | null | undefined} [cause]\n *   Original error cause of the message (optional).\n * @property {Point | Position | null | undefined} [place]\n *   Place of message (optional).\n * @property {string | null | undefined} [ruleId]\n *   Category of message (optional, example: `'my-rule'`).\n * @property {string | null | undefined} [source]\n *   Namespace of who sent the message (optional, example: `'my-package'`).\n */\n\nimport {stringifyPosition} from 'unist-util-stringify-position'\n\n/**\n * Message.\n */\nexport class VFileMessage extends Error {\n  /**\n   * Create a message for `reason`.\n   *\n   * > \uD83E\uDEA6 **Note**: also has obsolete signatures.\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Options | null | undefined} [options]\n   * @returns\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {string} reason\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {string | null | undefined} [origin]\n   * @returns\n   *\n   * @param {Error | VFileMessage | string} causeOrReason\n   *   Reason for message, should use markdown.\n   * @param {Node | NodeLike | Options | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n   *   Configuration (optional).\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns\n   *   Instance of `VFileMessage`.\n   */\n  // eslint-disable-next-line complexity\n  constructor(causeOrReason, optionsOrParentOrPlace, origin) {\n    super()\n\n    if (typeof optionsOrParentOrPlace === 'string') {\n      origin = optionsOrParentOrPlace\n      optionsOrParentOrPlace = undefined\n    }\n\n    /** @type {string} */\n    let reason = ''\n    /** @type {Options} */\n    let options = {}\n    let legacyCause = false\n\n    if (optionsOrParentOrPlace) {\n      // Point.\n      if (\n        'line' in optionsOrParentOrPlace &&\n        'column' in optionsOrParentOrPlace\n      ) {\n        options = {place: optionsOrParentOrPlace}\n      }\n      // Position.\n      else if (\n        'start' in optionsOrParentOrPlace &&\n        'end' in optionsOrParentOrPlace\n      ) {\n        options = {place: optionsOrParentOrPlace}\n      }\n      // Node.\n      else if ('type' in optionsOrParentOrPlace) {\n        options = {\n          ancestors: [optionsOrParentOrPlace],\n          place: optionsOrParentOrPlace.position\n        }\n      }\n      // Options.\n      else {\n        options = {...optionsOrParentOrPlace}\n      }\n    }\n\n    if (typeof causeOrReason === 'string') {\n      reason = causeOrReason\n    }\n    // Error.\n    else if (!options.cause && causeOrReason) {\n      legacyCause = true\n      reason = causeOrReason.message\n      options.cause = causeOrReason\n    }\n\n    if (!options.ruleId && !options.source && typeof origin === 'string') {\n      const index = origin.indexOf(':')\n\n      if (index === -1) {\n        options.ruleId = origin\n      } else {\n        options.source = origin.slice(0, index)\n        options.ruleId = origin.slice(index + 1)\n      }\n    }\n\n    if (!options.place && options.ancestors && options.ancestors) {\n      const parent = options.ancestors[options.ancestors.length - 1]\n\n      if (parent) {\n        options.place = parent.position\n      }\n    }\n\n    const start =\n      options.place && 'start' in options.place\n        ? options.place.start\n        : options.place\n\n    /**\n     * Stack of ancestor nodes surrounding the message.\n     *\n     * @type {Array<Node> | undefined}\n     */\n    this.ancestors = options.ancestors || undefined\n\n    /**\n     * Original error cause of the message.\n     *\n     * @type {Error | undefined}\n     */\n    this.cause = options.cause || undefined\n\n    /**\n     * Starting column of message.\n     *\n     * @type {number | undefined}\n     */\n    this.column = start ? start.column : undefined\n\n    /**\n     * State of problem.\n     *\n     * * `true` \u2014 error, file not usable\n     * * `false` \u2014 warning, change may be needed\n     * * `undefined` \u2014 change likely not needed\n     *\n     * @type {boolean | null | undefined}\n     */\n    this.fatal = undefined\n\n    /**\n     * Path of a file (used throughout the `VFile` ecosystem).\n     *\n     * @type {string | undefined}\n     */\n    this.file = ''\n\n    // Field from `Error`.\n    /**\n     * Reason for message.\n     *\n     * @type {string}\n     */\n    this.message = reason\n\n    /**\n     * Starting line of error.\n     *\n     * @type {number | undefined}\n     */\n    this.line = start ? start.line : undefined\n\n    // Field from `Error`.\n    /**\n     * Serialized positional info of message.\n     *\n     * On normal errors, this would be something like `ParseError`, buit in\n     * `VFile` messages we use this space to show where an error happened.\n     */\n    this.name = stringifyPosition(options.place) || '1:1'\n\n    /**\n     * Place of message.\n     *\n     * @type {Point | Position | undefined}\n     */\n    this.place = options.place || undefined\n\n    /**\n     * Reason for message, should use markdown.\n     *\n     * @type {string}\n     */\n    this.reason = this.message\n\n    /**\n     * Category of message (example: `'my-rule'`).\n     *\n     * @type {string | undefined}\n     */\n    this.ruleId = options.ruleId || undefined\n\n    /**\n     * Namespace of message (example: `'my-package'`).\n     *\n     * @type {string | undefined}\n     */\n    this.source = options.source || undefined\n\n    // Field from `Error`.\n    /**\n     * Stack of message.\n     *\n     * This is used by normal errors to show where something happened in\n     * programming code, irrelevant for `VFile` messages,\n     *\n     * @type {string}\n     */\n    this.stack =\n      legacyCause && options.cause && typeof options.cause.stack === 'string'\n        ? options.cause.stack\n        : ''\n\n    // The following fields are \u201Cwell known\u201D.\n    // Not standard.\n    // Feel free to add other non-standard fields to your messages.\n\n    /**\n     * Specify the source value that\u2019s being reported, which is deemed\n     * incorrect.\n     *\n     * @type {string | undefined}\n     */\n    this.actual = undefined\n\n    /**\n     * Suggest acceptable values that can be used instead of `actual`.\n     *\n     * @type {Array<string> | undefined}\n     */\n    this.expected = undefined\n\n    /**\n     * Long form description of the message (you should use markdown).\n     *\n     * @type {string | undefined}\n     */\n    this.note = undefined\n\n    /**\n     * Link to docs for the message.\n     *\n     * > \uD83D\uDC49 **Note**: this must be an absolute URL that can be passed as `x`\n     * > to `new URL(x)`.\n     *\n     * @type {string | undefined}\n     */\n    this.url = undefined\n  }\n}\n\nVFileMessage.prototype.file = ''\nVFileMessage.prototype.name = ''\nVFileMessage.prototype.reason = ''\nVFileMessage.prototype.message = ''\nVFileMessage.prototype.stack = ''\nVFileMessage.prototype.column = undefined\nVFileMessage.prototype.line = undefined\nVFileMessage.prototype.ancestors = undefined\nVFileMessage.prototype.cause = undefined\nVFileMessage.prototype.fatal = undefined\nVFileMessage.prototype.place = undefined\nVFileMessage.prototype.ruleId = undefined\nVFileMessage.prototype.source = undefined\n", "/**\n * HTML URL properties.\n *\n * Each key is a property name and each value is a list of tag names it applies\n * to or `null` if it applies to all elements.\n *\n * @type {Record<string, Array<string> | null>}\n */\nexport const urlAttributes = {\n  action: ['form'],\n  cite: ['blockquote', 'del', 'ins', 'q'],\n  data: ['object'],\n  formAction: ['button', 'input'],\n  href: ['a', 'area', 'base', 'link'],\n  icon: ['menuitem'],\n  itemId: null,\n  manifest: ['html'],\n  ping: ['a', 'area'],\n  poster: ['video'],\n  src: [\n    'audio',\n    'embed',\n    'iframe',\n    'img',\n    'input',\n    'script',\n    'source',\n    'track',\n    'video'\n  ]\n}\n", "/**\n * @import {Element, Nodes, Parents, Root} from 'hast'\n * @import {Root as MdastRoot} from 'mdast'\n * @import {ComponentType, JSX, ReactElement, ReactNode} from 'react'\n * @import {Options as RemarkRehypeOptions} from 'remark-rehype'\n * @import {BuildVisitor} from 'unist-util-visit'\n * @import {PluggableList, Processor} from 'unified'\n */\n\n/**\n * @callback AllowElement\n *   Filter elements.\n * @param {Readonly<Element>} element\n *   Element to check.\n * @param {number} index\n *   Index of `element` in `parent`.\n * @param {Readonly<Parents> | undefined} parent\n *   Parent of `element`.\n * @returns {boolean | null | undefined}\n *   Whether to allow `element` (default: `false`).\n */\n\n/**\n * @typedef ExtraProps\n *   Extra fields we pass.\n * @property {Element | undefined} [node]\n *   passed when `passNode` is on.\n */\n\n/**\n * @typedef {{\n *   [Key in keyof JSX.IntrinsicElements]?: ComponentType<JSX.IntrinsicElements[Key] & ExtraProps> | keyof JSX.IntrinsicElements\n * }} Components\n *   Map tag names to components.\n */\n\n/**\n * @typedef Deprecation\n *   Deprecation.\n * @property {string} from\n *   Old field.\n * @property {string} id\n *   ID in readme.\n * @property {keyof Options} [to]\n *   New field.\n */\n\n/**\n * @typedef Options\n *   Configuration.\n * @property {AllowElement | null | undefined} [allowElement]\n *   Filter elements (optional);\n *   `allowedElements` / `disallowedElements` is used first.\n * @property {ReadonlyArray<string> | null | undefined} [allowedElements]\n *   Tag names to allow (default: all tag names);\n *   cannot combine w/ `disallowedElements`.\n * @property {string | null | undefined} [children]\n *   Markdown.\n * @property {Components | null | undefined} [components]\n *   Map tag names to components.\n * @property {ReadonlyArray<string> | null | undefined} [disallowedElements]\n *   Tag names to disallow (default: `[]`);\n *   cannot combine w/ `allowedElements`.\n * @property {PluggableList | null | undefined} [rehypePlugins]\n *   List of rehype plugins to use.\n * @property {PluggableList | null | undefined} [remarkPlugins]\n *   List of remark plugins to use.\n * @property {Readonly<RemarkRehypeOptions> | null | undefined} [remarkRehypeOptions]\n *   Options to pass through to `remark-rehype`.\n * @property {boolean | null | undefined} [skipHtml=false]\n *   Ignore HTML in markdown completely (default: `false`).\n * @property {boolean | null | undefined} [unwrapDisallowed=false]\n *   Extract (unwrap) what\u2019s in disallowed elements (default: `false`);\n *   normally when say `strong` is not allowed, it and it\u2019s children are dropped,\n *   with `unwrapDisallowed` the element itself is replaced by its children.\n * @property {UrlTransform | null | undefined} [urlTransform]\n *   Change URLs (default: `defaultUrlTransform`)\n */\n\n/**\n * @typedef HooksOptionsOnly\n *   Configuration specifically for {@linkcode MarkdownHooks}.\n * @property {ReactNode | null | undefined} [fallback]\n *   Content to render while the processor processing the markdown (optional).\n */\n\n/**\n * @typedef {Options & HooksOptionsOnly} HooksOptions\n *   Configuration for {@linkcode MarkdownHooks};\n *   extends the regular {@linkcode Options} with a `fallback` prop.\n */\n\n/**\n * @callback UrlTransform\n *   Transform all URLs.\n * @param {string} url\n *   URL.\n * @param {string} key\n *   Property name (example: `'href'`).\n * @param {Readonly<Element>} node\n *   Node.\n * @returns {string | null | undefined}\n *   Transformed URL (optional).\n */\n\nimport {unreachable} from 'devlop'\nimport {toJsxRuntime} from 'hast-util-to-jsx-runtime'\nimport {urlAttributes} from 'html-url-attributes'\nimport {Fragment, jsx, jsxs} from 'react/jsx-runtime'\nimport {useEffect, useState} from 'react'\nimport remarkParse from 'remark-parse'\nimport remarkRehype from 'remark-rehype'\nimport {unified} from 'unified'\nimport {visit} from 'unist-util-visit'\nimport {VFile} from 'vfile'\n\nconst changelog =\n  'https://github.com/remarkjs/react-markdown/blob/main/changelog.md'\n\n/** @type {PluggableList} */\nconst emptyPlugins = []\n/** @type {Readonly<RemarkRehypeOptions>} */\nconst emptyRemarkRehypeOptions = {allowDangerousHtml: true}\nconst safeProtocol = /^(https?|ircs?|mailto|xmpp)$/i\n\n// Mutable because we `delete` any time it\u2019s used and a message is sent.\n/** @type {ReadonlyArray<Readonly<Deprecation>>} */\nconst deprecations = [\n  {from: 'astPlugins', id: 'remove-buggy-html-in-markdown-parser'},\n  {from: 'allowDangerousHtml', id: 'remove-buggy-html-in-markdown-parser'},\n  {\n    from: 'allowNode',\n    id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n    to: 'allowElement'\n  },\n  {\n    from: 'allowedTypes',\n    id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n    to: 'allowedElements'\n  },\n  {from: 'className', id: 'remove-classname'},\n  {\n    from: 'disallowedTypes',\n    id: 'replace-allownode-allowedtypes-and-disallowedtypes',\n    to: 'disallowedElements'\n  },\n  {from: 'escapeHtml', id: 'remove-buggy-html-in-markdown-parser'},\n  {from: 'includeElementIndex', id: '#remove-includeelementindex'},\n  {\n    from: 'includeNodeIndex',\n    id: 'change-includenodeindex-to-includeelementindex'\n  },\n  {from: 'linkTarget', id: 'remove-linktarget'},\n  {from: 'plugins', id: 'change-plugins-to-remarkplugins', to: 'remarkPlugins'},\n  {from: 'rawSourcePos', id: '#remove-rawsourcepos'},\n  {from: 'renderers', id: 'change-renderers-to-components', to: 'components'},\n  {from: 'source', id: 'change-source-to-children', to: 'children'},\n  {from: 'sourcePos', id: '#remove-sourcepos'},\n  {from: 'transformImageUri', id: '#add-urltransform', to: 'urlTransform'},\n  {from: 'transformLinkUri', id: '#add-urltransform', to: 'urlTransform'}\n]\n\n/**\n * Component to render markdown.\n *\n * This is a synchronous component.\n * When using async plugins,\n * see {@linkcode MarkdownAsync} or {@linkcode MarkdownHooks}.\n *\n * @param {Readonly<Options>} options\n *   Props.\n * @returns {ReactElement}\n *   React element.\n */\nexport function Markdown(options) {\n  const processor = createProcessor(options)\n  const file = createFile(options)\n  return post(processor.runSync(processor.parse(file), file), options)\n}\n\n/**\n * Component to render markdown with support for async plugins\n * through async/await.\n *\n * Components returning promises are supported on the server.\n * For async support on the client,\n * see {@linkcode MarkdownHooks}.\n *\n * @param {Readonly<Options>} options\n *   Props.\n * @returns {Promise<ReactElement>}\n *   Promise to a React element.\n */\nexport async function MarkdownAsync(options) {\n  const processor = createProcessor(options)\n  const file = createFile(options)\n  const tree = await processor.run(processor.parse(file), file)\n  return post(tree, options)\n}\n\n/**\n * Component to render markdown with support for async plugins through hooks.\n *\n * This uses `useEffect` and `useState` hooks.\n * Hooks run on the client and do not immediately render something.\n * For async support on the server,\n * see {@linkcode MarkdownAsync}.\n *\n * @param {Readonly<HooksOptions>} options\n *   Props.\n * @returns {ReactNode}\n *   React node.\n */\nexport function MarkdownHooks(options) {\n  const processor = createProcessor(options)\n  const [error, setError] = useState(\n    /** @type {Error | undefined} */ (undefined)\n  )\n  const [tree, setTree] = useState(/** @type {Root | undefined} */ (undefined))\n\n  useEffect(\n    function () {\n      let cancelled = false\n      const file = createFile(options)\n\n      processor.run(processor.parse(file), file, function (error, tree) {\n        if (!cancelled) {\n          setError(error)\n          setTree(tree)\n        }\n      })\n\n      /**\n       * @returns {undefined}\n       *   Nothing.\n       */\n      return function () {\n        cancelled = true\n      }\n    },\n    [\n      options.children,\n      options.rehypePlugins,\n      options.remarkPlugins,\n      options.remarkRehypeOptions\n    ]\n  )\n\n  if (error) throw error\n\n  return tree ? post(tree, options) : options.fallback\n}\n\n/**\n * Set up the `unified` processor.\n *\n * @param {Readonly<Options>} options\n *   Props.\n * @returns {Processor<MdastRoot, MdastRoot, Root, undefined, undefined>}\n *   Result.\n */\nfunction createProcessor(options) {\n  const rehypePlugins = options.rehypePlugins || emptyPlugins\n  const remarkPlugins = options.remarkPlugins || emptyPlugins\n  const remarkRehypeOptions = options.remarkRehypeOptions\n    ? {...options.remarkRehypeOptions, ...emptyRemarkRehypeOptions}\n    : emptyRemarkRehypeOptions\n\n  const processor = unified()\n    .use(remarkParse)\n    .use(remarkPlugins)\n    .use(remarkRehype, remarkRehypeOptions)\n    .use(rehypePlugins)\n\n  return processor\n}\n\n/**\n * Set up the virtual file.\n *\n * @param {Readonly<Options>} options\n *   Props.\n * @returns {VFile}\n *   Result.\n */\nfunction createFile(options) {\n  const children = options.children || ''\n  const file = new VFile()\n\n  if (typeof children === 'string') {\n    file.value = children\n  } else {\n    unreachable(\n      'Unexpected value `' +\n        children +\n        '` for `children` prop, expected `string`'\n    )\n  }\n\n  return file\n}\n\n/**\n * Process the result from unified some more.\n *\n * @param {Nodes} tree\n *   Tree.\n * @param {Readonly<Options>} options\n *   Props.\n * @returns {ReactElement}\n *   React element.\n */\nfunction post(tree, options) {\n  const allowedElements = options.allowedElements\n  const allowElement = options.allowElement\n  const components = options.components\n  const disallowedElements = options.disallowedElements\n  const skipHtml = options.skipHtml\n  const unwrapDisallowed = options.unwrapDisallowed\n  const urlTransform = options.urlTransform || defaultUrlTransform\n\n  for (const deprecation of deprecations) {\n    if (Object.hasOwn(options, deprecation.from)) {\n      unreachable(\n        'Unexpected `' +\n          deprecation.from +\n          '` prop, ' +\n          (deprecation.to\n            ? 'use `' + deprecation.to + '` instead'\n            : 'remove it') +\n          ' (see <' +\n          changelog +\n          '#' +\n          deprecation.id +\n          '> for more info)'\n      )\n    }\n  }\n\n  if (allowedElements && disallowedElements) {\n    unreachable(\n      'Unexpected combined `allowedElements` and `disallowedElements`, expected one or the other'\n    )\n  }\n\n  visit(tree, transform)\n\n  return toJsxRuntime(tree, {\n    Fragment,\n    components,\n    ignoreInvalidStyle: true,\n    jsx,\n    jsxs,\n    passKeys: true,\n    passNode: true\n  })\n\n  /** @type {BuildVisitor<Root>} */\n  function transform(node, index, parent) {\n    if (node.type === 'raw' && parent && typeof index === 'number') {\n      if (skipHtml) {\n        parent.children.splice(index, 1)\n      } else {\n        parent.children[index] = {type: 'text', value: node.value}\n      }\n\n      return index\n    }\n\n    if (node.type === 'element') {\n      /** @type {string} */\n      let key\n\n      for (key in urlAttributes) {\n        if (\n          Object.hasOwn(urlAttributes, key) &&\n          Object.hasOwn(node.properties, key)\n        ) {\n          const value = node.properties[key]\n          const test = urlAttributes[key]\n          if (test === null || test.includes(node.tagName)) {\n            node.properties[key] = urlTransform(String(value || ''), key, node)\n          }\n        }\n      }\n    }\n\n    if (node.type === 'element') {\n      let remove = allowedElements\n        ? !allowedElements.includes(node.tagName)\n        : disallowedElements\n          ? disallowedElements.includes(node.tagName)\n          : false\n\n      if (!remove && allowElement && typeof index === 'number') {\n        remove = !allowElement(node, index, parent)\n      }\n\n      if (remove && parent && typeof index === 'number') {\n        if (unwrapDisallowed && node.children) {\n          parent.children.splice(index, 1, ...node.children)\n        } else {\n          parent.children.splice(index, 1)\n        }\n\n        return index\n      }\n    }\n  }\n}\n\n/**\n * Make a URL safe.\n *\n * @satisfies {UrlTransform}\n * @param {string} value\n *   URL.\n * @returns {string}\n *   Safe URL.\n */\nexport function defaultUrlTransform(value) {\n  // Same as:\n  // <https://github.com/micromark/micromark/blob/929275e/packages/micromark-util-sanitize-uri/dev/index.js#L34>\n  // But without the `encode` part.\n  const colon = value.indexOf(':')\n  const questionMark = value.indexOf('?')\n  const numberSign = value.indexOf('#')\n  const slash = value.indexOf('/')\n\n  if (\n    // If there is no protocol, it\u2019s relative.\n    colon === -1 ||\n    // If the first colon is after a `?`, `#`, or `/`, it\u2019s not a protocol.\n    (slash !== -1 && colon > slash) ||\n    (questionMark !== -1 && colon > questionMark) ||\n    (numberSign !== -1 && colon > numberSign) ||\n    // It is a protocol, it should be allowed.\n    safeProtocol.test(value.slice(0, colon))\n  ) {\n    return value\n  }\n\n  return ''\n}\n", "/**\n * @typedef {import('mdast').Nodes} Nodes\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [includeImageAlt=true]\n *   Whether to use `alt` for `image`s (default: `true`).\n * @property {boolean | null | undefined} [includeHtml=true]\n *   Whether to use `value` of HTML (default: `true`).\n */\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Get the text content of a node or list of nodes.\n *\n * Prefers the node\u2019s plain-text fields, otherwise serializes its children,\n * and if the given value is an array, serialize the nodes in it.\n *\n * @param {unknown} [value]\n *   Thing to serialize, typically `Node`.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {string}\n *   Serialized `value`.\n */\nexport function toString(value, options) {\n  const settings = options || emptyOptions\n  const includeImageAlt =\n    typeof settings.includeImageAlt === 'boolean'\n      ? settings.includeImageAlt\n      : true\n  const includeHtml =\n    typeof settings.includeHtml === 'boolean' ? settings.includeHtml : true\n\n  return one(value, includeImageAlt, includeHtml)\n}\n\n/**\n * One node or several nodes.\n *\n * @param {unknown} value\n *   Thing to serialize.\n * @param {boolean} includeImageAlt\n *   Include image `alt`s.\n * @param {boolean} includeHtml\n *   Include HTML.\n * @returns {string}\n *   Serialized node.\n */\nfunction one(value, includeImageAlt, includeHtml) {\n  if (node(value)) {\n    if ('value' in value) {\n      return value.type === 'html' && !includeHtml ? '' : value.value\n    }\n\n    if (includeImageAlt && 'alt' in value && value.alt) {\n      return value.alt\n    }\n\n    if ('children' in value) {\n      return all(value.children, includeImageAlt, includeHtml)\n    }\n  }\n\n  if (Array.isArray(value)) {\n    return all(value, includeImageAlt, includeHtml)\n  }\n\n  return ''\n}\n\n/**\n * Serialize a list of nodes.\n *\n * @param {Array<unknown>} values\n *   Thing to serialize.\n * @param {boolean} includeImageAlt\n *   Include image `alt`s.\n * @param {boolean} includeHtml\n *   Include HTML.\n * @returns {string}\n *   Serialized nodes.\n */\nfunction all(values, includeImageAlt, includeHtml) {\n  /** @type {Array<string>} */\n  const result = []\n  let index = -1\n\n  while (++index < values.length) {\n    result[index] = one(values[index], includeImageAlt, includeHtml)\n  }\n\n  return result.join('')\n}\n\n/**\n * Check if `value` looks like a node.\n *\n * @param {unknown} value\n *   Thing.\n * @returns {value is Nodes}\n *   Whether `value` is a node.\n */\nfunction node(value) {\n  return Boolean(value && typeof value === 'object')\n}\n", "/**\n * Like `Array#splice`, but smarter for giant arrays.\n *\n * `Array#splice` takes all items to be inserted as individual argument which\n * causes a stack overflow in V8 when trying to insert 100k items for instance.\n *\n * Otherwise, this does not return the removed items, and takes `items` as an\n * array instead of rest parameters.\n *\n * @template {unknown} T\n *   Item type.\n * @param {Array<T>} list\n *   List to operate on.\n * @param {number} start\n *   Index to remove/insert at (can be negative).\n * @param {number} remove\n *   Number of items to remove.\n * @param {Array<T>} items\n *   Items to inject into `list`.\n * @returns {undefined}\n *   Nothing.\n */\nexport function splice(list, start, remove, items) {\n  const end = list.length;\n  let chunkStart = 0;\n  /** @type {Array<unknown>} */\n  let parameters;\n\n  // Make start between zero and `end` (included).\n  if (start < 0) {\n    start = -start > end ? 0 : end + start;\n  } else {\n    start = start > end ? end : start;\n  }\n  remove = remove > 0 ? remove : 0;\n\n  // No need to chunk the items if there\u2019s only a couple (10k) items.\n  if (items.length < 10000) {\n    parameters = Array.from(items);\n    parameters.unshift(start, remove);\n    // @ts-expect-error Hush, it\u2019s fine.\n    list.splice(...parameters);\n  } else {\n    // Delete `remove` items starting from `start`\n    if (remove) list.splice(start, remove);\n\n    // Insert the items in chunks to not cause stack overflows.\n    while (chunkStart < items.length) {\n      parameters = items.slice(chunkStart, chunkStart + 10000);\n      parameters.unshift(start, 0);\n      // @ts-expect-error Hush, it\u2019s fine.\n      list.splice(...parameters);\n      chunkStart += 10000;\n      start += 10000;\n    }\n  }\n}\n\n/**\n * Append `items` (an array) at the end of `list` (another array).\n * When `list` was empty, returns `items` instead.\n *\n * This prevents a potentially expensive operation when `list` is empty,\n * and adds items in batches to prevent V8 from hanging.\n *\n * @template {unknown} T\n *   Item type.\n * @param {Array<T>} list\n *   List to operate on.\n * @param {Array<T>} items\n *   Items to add to `list`.\n * @returns {Array<T>}\n *   Either `list` or `items`.\n */\nexport function push(list, items) {\n  if (list.length > 0) {\n    splice(list, list.length, 0, items);\n    return list;\n  }\n  return items;\n}", "/**\n * @import {\n *   Extension,\n *   Handles,\n *   HtmlExtension,\n *   NormalizedExtension\n * } from 'micromark-util-types'\n */\n\nimport {splice} from 'micromark-util-chunked'\n\nconst hasOwnProperty = {}.hasOwnProperty\n\n/**\n * Combine multiple syntax extensions into one.\n *\n * @param {ReadonlyArray<Extension>} extensions\n *   List of syntax extensions.\n * @returns {NormalizedExtension}\n *   A single combined extension.\n */\nexport function combineExtensions(extensions) {\n  /** @type {NormalizedExtension} */\n  const all = {}\n  let index = -1\n\n  while (++index < extensions.length) {\n    syntaxExtension(all, extensions[index])\n  }\n\n  return all\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {NormalizedExtension} all\n *   Extension to merge into.\n * @param {Extension} extension\n *   Extension to merge.\n * @returns {undefined}\n *   Nothing.\n */\nfunction syntaxExtension(all, extension) {\n  /** @type {keyof Extension} */\n  let hook\n\n  for (hook in extension) {\n    const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n    /** @type {Record<string, unknown>} */\n    const left = maybe || (all[hook] = {})\n    /** @type {Record<string, unknown> | undefined} */\n    const right = extension[hook]\n    /** @type {string} */\n    let code\n\n    if (right) {\n      for (code in right) {\n        if (!hasOwnProperty.call(left, code)) left[code] = []\n        const value = right[code]\n        constructs(\n          // @ts-expect-error Looks like a list.\n          left[code],\n          Array.isArray(value) ? value : value ? [value] : []\n        )\n      }\n    }\n  }\n}\n\n/**\n * Merge `list` into `existing` (both lists of constructs).\n * Mutates `existing`.\n *\n * @param {Array<unknown>} existing\n *   List of constructs to merge into.\n * @param {Array<unknown>} list\n *   List of constructs to merge.\n * @returns {undefined}\n *   Nothing.\n */\nfunction constructs(existing, list) {\n  let index = -1\n  /** @type {Array<unknown>} */\n  const before = []\n\n  while (++index < list.length) {\n    // @ts-expect-error Looks like an object.\n    ;(list[index].add === 'after' ? existing : before).push(list[index])\n  }\n\n  splice(existing, 0, 0, before)\n}\n\n/**\n * Combine multiple HTML extensions into one.\n *\n * @param {ReadonlyArray<HtmlExtension>} htmlExtensions\n *   List of HTML extensions.\n * @returns {HtmlExtension}\n *   Single combined HTML extension.\n */\nexport function combineHtmlExtensions(htmlExtensions) {\n  /** @type {HtmlExtension} */\n  const handlers = {}\n  let index = -1\n\n  while (++index < htmlExtensions.length) {\n    htmlExtension(handlers, htmlExtensions[index])\n  }\n\n  return handlers\n}\n\n/**\n * Merge `extension` into `all`.\n *\n * @param {HtmlExtension} all\n *   Extension to merge into.\n * @param {HtmlExtension} extension\n *   Extension to merge.\n * @returns {undefined}\n *   Nothing.\n */\nfunction htmlExtension(all, extension) {\n  /** @type {keyof HtmlExtension} */\n  let hook\n\n  for (hook in extension) {\n    const maybe = hasOwnProperty.call(all, hook) ? all[hook] : undefined\n    const left = maybe || (all[hook] = {})\n    const right = extension[hook]\n    /** @type {keyof Handles} */\n    let type\n\n    if (right) {\n      for (type in right) {\n        // @ts-expect-error assume document vs regular handler are managed correctly.\n        left[type] = right[type]\n      }\n    }\n  }\n}\n", "/**\n * Turn the number (in string form as either hexa- or plain decimal) coming from\n * a numeric character reference into a character.\n *\n * Sort of like `String.fromCodePoint(Number.parseInt(value, base))`, but makes\n * non-characters and control characters safe.\n *\n * @param {string} value\n *   Value to decode.\n * @param {number} base\n *   Numeric base.\n * @returns {string}\n *   Character.\n */\nexport function decodeNumericCharacterReference(value, base) {\n  const code = Number.parseInt(value, base);\n  if (\n  // C0 except for HT, LF, FF, CR, space.\n  code < 9 || code === 11 || code > 13 && code < 32 ||\n  // Control character (DEL) of C0, and C1 controls.\n  code > 126 && code < 160 ||\n  // Lone high surrogates and low surrogates.\n  code > 55_295 && code < 57_344 ||\n  // Noncharacters.\n  code > 64_975 && code < 65_008 || /* eslint-disable no-bitwise */\n  (code & 65_535) === 65_535 || (code & 65_535) === 65_534 || /* eslint-enable no-bitwise */\n  // Out of range\n  code > 1_114_111) {\n    return \"\\uFFFD\";\n  }\n  return String.fromCodePoint(code);\n}", "/**\n * Normalize an identifier (as found in references, definitions).\n *\n * Collapses markdown whitespace, trim, and then lower- and uppercase.\n *\n * Some characters are considered \u201Cuppercase\u201D, such as U+03F4 (`\u03F4`), but if their\n * lowercase counterpart (U+03B8 (`\u03B8`)) is uppercased will result in a different\n * uppercase character (U+0398 (`\u0398`)).\n * So, to get a canonical form, we perform both lower- and uppercase.\n *\n * Using uppercase last makes sure keys will never interact with default\n * prototypal values (such as `constructor`): nothing in the prototype of\n * `Object` is uppercase.\n *\n * @param {string} value\n *   Identifier to normalize.\n * @returns {string}\n *   Normalized identifier.\n */\nexport function normalizeIdentifier(value) {\n  return value\n  // Collapse markdown whitespace.\n  .replace(/[\\t\\n\\r ]+/g, \" \")\n  // Trim.\n  .replace(/^ | $/g, '')\n  // Some characters are considered \u201Cuppercase\u201D, but if their lowercase\n  // counterpart is uppercased will result in a different uppercase\n  // character.\n  // Hence, to get that form, we perform both lower- and uppercase.\n  // Upper case makes sure keys will not interact with default prototypal\n  // methods: no method is uppercase.\n  .toLowerCase().toUpperCase();\n}", "/**\n * @import {Code} from 'micromark-util-types'\n */\n\n/**\n * Check whether the character code represents an ASCII alpha (`a` through `z`,\n * case insensitive).\n *\n * An **ASCII alpha** is an ASCII upper alpha or ASCII lower alpha.\n *\n * An **ASCII upper alpha** is a character in the inclusive range U+0041 (`A`)\n * to U+005A (`Z`).\n *\n * An **ASCII lower alpha** is a character in the inclusive range U+0061 (`a`)\n * to U+007A (`z`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiAlpha = regexCheck(/[A-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII alphanumeric (`a`\n * through `z`, case insensitive, or `0` through `9`).\n *\n * An **ASCII alphanumeric** is an ASCII digit (see `asciiDigit`) or ASCII alpha\n * (see `asciiAlpha`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiAlphanumeric = regexCheck(/[\\dA-Za-z]/);\n\n/**\n * Check whether the character code represents an ASCII atext.\n *\n * atext is an ASCII alphanumeric (see `asciiAlphanumeric`), or a character in\n * the inclusive ranges U+0023 NUMBER SIGN (`#`) to U+0027 APOSTROPHE (`'`),\n * U+002A ASTERISK (`*`), U+002B PLUS SIGN (`+`), U+002D DASH (`-`), U+002F\n * SLASH (`/`), U+003D EQUALS TO (`=`), U+003F QUESTION MARK (`?`), U+005E\n * CARET (`^`) to U+0060 GRAVE ACCENT (`` ` ``), or U+007B LEFT CURLY BRACE\n * (`{`) to U+007E TILDE (`~`).\n *\n * See:\n * **\\[RFC5322]**:\n * [Internet Message Format](https://tools.ietf.org/html/rfc5322).\n * P. Resnick.\n * IETF.\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiAtext = regexCheck(/[#-'*+\\--9=?A-Z^-~]/);\n\n/**\n * Check whether a character code is an ASCII control character.\n *\n * An **ASCII control** is a character in the inclusive range U+0000 NULL (NUL)\n * to U+001F (US), or U+007F (DEL).\n *\n * @param {Code} code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport function asciiControl(code) {\n  return (\n    // Special whitespace codes (which have negative values), C0 and Control\n    // character DEL\n    code !== null && (code < 32 || code === 127)\n  );\n}\n\n/**\n * Check whether the character code represents an ASCII digit (`0` through `9`).\n *\n * An **ASCII digit** is a character in the inclusive range U+0030 (`0`) to\n * U+0039 (`9`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiDigit = regexCheck(/\\d/);\n\n/**\n * Check whether the character code represents an ASCII hex digit (`a` through\n * `f`, case insensitive, or `0` through `9`).\n *\n * An **ASCII hex digit** is an ASCII digit (see `asciiDigit`), ASCII upper hex\n * digit, or an ASCII lower hex digit.\n *\n * An **ASCII upper hex digit** is a character in the inclusive range U+0041\n * (`A`) to U+0046 (`F`).\n *\n * An **ASCII lower hex digit** is a character in the inclusive range U+0061\n * (`a`) to U+0066 (`f`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiHexDigit = regexCheck(/[\\dA-Fa-f]/);\n\n/**\n * Check whether the character code represents ASCII punctuation.\n *\n * An **ASCII punctuation** is a character in the inclusive ranges U+0021\n * EXCLAMATION MARK (`!`) to U+002F SLASH (`/`), U+003A COLON (`:`) to U+0040 AT\n * SIGN (`@`), U+005B LEFT SQUARE BRACKET (`[`) to U+0060 GRAVE ACCENT\n * (`` ` ``), or U+007B LEFT CURLY BRACE (`{`) to U+007E TILDE (`~`).\n *\n * @param code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport const asciiPunctuation = regexCheck(/[!-/:-@[-`{-~]/);\n\n/**\n * Check whether a character code is a markdown line ending.\n *\n * A **markdown line ending** is the virtual characters M-0003 CARRIAGE RETURN\n * LINE FEED (CRLF), M-0004 LINE FEED (LF) and M-0005 CARRIAGE RETURN (CR).\n *\n * In micromark, the actual character U+000A LINE FEED (LF) and U+000D CARRIAGE\n * RETURN (CR) are replaced by these virtual characters depending on whether\n * they occurred together.\n *\n * @param {Code} code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport function markdownLineEnding(code) {\n  return code !== null && code < -2;\n}\n\n/**\n * Check whether a character code is a markdown line ending (see\n * `markdownLineEnding`) or markdown space (see `markdownSpace`).\n *\n * @param {Code} code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport function markdownLineEndingOrSpace(code) {\n  return code !== null && (code < 0 || code === 32);\n}\n\n/**\n * Check whether a character code is a markdown space.\n *\n * A **markdown space** is the concrete character U+0020 SPACE (SP) and the\n * virtual characters M-0001 VIRTUAL SPACE (VS) and M-0002 HORIZONTAL TAB (HT).\n *\n * In micromark, the actual character U+0009 CHARACTER TABULATION (HT) is\n * replaced by one M-0002 HORIZONTAL TAB (HT) and between 0 and 3 M-0001 VIRTUAL\n * SPACE (VS) characters, depending on the column at which the tab occurred.\n *\n * @param {Code} code\n *   Code.\n * @returns {boolean}\n *   Whether it matches.\n */\nexport function markdownSpace(code) {\n  return code === -2 || code === -1 || code === 32;\n}\n\n// Size note: removing ASCII from the regex and using `asciiPunctuation` here\n// In fact adds to the bundle size.\n/**\n * Check whether the character code represents Unicode punctuation.\n *\n * A **Unicode punctuation** is a character in the Unicode `Pc` (Punctuation,\n * Connector), `Pd` (Punctuation, Dash), `Pe` (Punctuation, Close), `Pf`\n * (Punctuation, Final quote), `Pi` (Punctuation, Initial quote), `Po`\n * (Punctuation, Other), or `Ps` (Punctuation, Open) categories, or an ASCII\n * punctuation (see `asciiPunctuation`).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n *   Code.\n * @returns\n *   Whether it matches.\n */\nexport const unicodePunctuation = regexCheck(/\\p{P}|\\p{S}/u);\n\n/**\n * Check whether the character code represents Unicode whitespace.\n *\n * Note that this does handle micromark specific markdown whitespace characters.\n * See `markdownLineEndingOrSpace` to check that.\n *\n * A **Unicode whitespace** is a character in the Unicode `Zs` (Separator,\n * Space) category, or U+0009 CHARACTER TABULATION (HT), U+000A LINE FEED (LF),\n * U+000C (FF), or U+000D CARRIAGE RETURN (CR) (**\\[UNICODE]**).\n *\n * See:\n * **\\[UNICODE]**:\n * [The Unicode Standard](https://www.unicode.org/versions/).\n * Unicode Consortium.\n *\n * @param code\n *   Code.\n * @returns\n *   Whether it matches.\n */\nexport const unicodeWhitespace = regexCheck(/\\s/);\n\n/**\n * Create a code check from a regex.\n *\n * @param {RegExp} regex\n *   Expression.\n * @returns {(code: Code) => boolean}\n *   Check.\n */\nfunction regexCheck(regex) {\n  return check;\n\n  /**\n   * Check whether a code matches the bound regex.\n   *\n   * @param {Code} code\n   *   Character code.\n   * @returns {boolean}\n   *   Whether the character code matches the bound regex.\n   */\n  function check(code) {\n    return code !== null && code > -1 && regex.test(String.fromCharCode(code));\n  }\n}", "import { asciiAlphanumeric } from 'micromark-util-character';\nimport { encode } from 'micromark-util-encode';\n/**\n * Make a value safe for injection as a URL.\n *\n * This encodes unsafe characters with percent-encoding and skips already\n * encoded sequences (see `normalizeUri`).\n * Further unsafe characters are encoded as character references (see\n * `micromark-util-encode`).\n *\n * A regex of allowed protocols can be given, in which case the URL is\n * sanitized.\n * For example, `/^(https?|ircs?|mailto|xmpp)$/i` can be used for `a[href]`, or\n * `/^https?$/i` for `img[src]` (this is what `github.com` allows).\n * If the URL includes an unknown protocol (one not matched by `protocol`, such\n * as a dangerous example, `javascript:`), the value is ignored.\n *\n * @param {string | null | undefined} url\n *   URI to sanitize.\n * @param {RegExp | null | undefined} [protocol]\n *   Allowed protocols.\n * @returns {string}\n *   Sanitized URI.\n */\nexport function sanitizeUri(url, protocol) {\n  const value = encode(normalizeUri(url || ''));\n  if (!protocol) {\n    return value;\n  }\n  const colon = value.indexOf(':');\n  const questionMark = value.indexOf('?');\n  const numberSign = value.indexOf('#');\n  const slash = value.indexOf('/');\n  if (\n  // If there is no protocol, it\u2019s relative.\n  colon < 0 ||\n  // If the first colon is after a `?`, `#`, or `/`, it\u2019s not a protocol.\n  slash > -1 && colon > slash || questionMark > -1 && colon > questionMark || numberSign > -1 && colon > numberSign ||\n  // It is a protocol, it should be allowed.\n  protocol.test(value.slice(0, colon))) {\n    return value;\n  }\n  return '';\n}\n\n/**\n * Normalize a URL.\n *\n * Encode unsafe characters with percent-encoding, skipping already encoded\n * sequences.\n *\n * @param {string} value\n *   URI to normalize.\n * @returns {string}\n *   Normalized URI.\n */\nexport function normalizeUri(value) {\n  /** @type {Array<string>} */\n  const result = [];\n  let index = -1;\n  let start = 0;\n  let skip = 0;\n  while (++index < value.length) {\n    const code = value.charCodeAt(index);\n    /** @type {string} */\n    let replace = '';\n\n    // A correct percent encoded value.\n    if (code === 37 && asciiAlphanumeric(value.charCodeAt(index + 1)) && asciiAlphanumeric(value.charCodeAt(index + 2))) {\n      skip = 2;\n    }\n    // ASCII.\n    else if (code < 128) {\n      if (!/[!#$&-;=?-Z_a-z~]/.test(String.fromCharCode(code))) {\n        replace = String.fromCharCode(code);\n      }\n    }\n    // Astral.\n    else if (code > 55_295 && code < 57_344) {\n      const next = value.charCodeAt(index + 1);\n\n      // A correct surrogate pair.\n      if (code < 56_320 && next > 56_319 && next < 57_344) {\n        replace = String.fromCharCode(code, next);\n        skip = 1;\n      }\n      // Lone surrogate.\n      else {\n        replace = \"\\uFFFD\";\n      }\n    }\n    // Unicode.\n    else {\n      replace = String.fromCharCode(code);\n    }\n    if (replace) {\n      result.push(value.slice(start, index), encodeURIComponent(replace));\n      start = index + skip + 1;\n      replace = '';\n    }\n    if (skip) {\n      index += skip;\n      skip = 0;\n    }\n  }\n  return result.join('') + value.slice(start);\n}", "/**\n * @import {Effects, State, TokenType} from 'micromark-util-types'\n */\n\nimport { markdownSpace } from 'micromark-util-character';\n\n// To do: implement `spaceOrTabWithOptions` (`connect`, `content`).\n\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * *   spaces in markdown are often optional, in which case this factory can be\n *     used and `ok` will be switched to whether spaces were found or not\n * *   one line ending or space can be detected with `markdownSpace(code)` right\n *     before using `factorySpace`\n *\n * ###### Examples\n *\n * Where `\u2409` represents a tab (plus how much it expands) and `\u2420` represents a\n * single space.\n *\n * ```markdown\n * \u2409\n * \u2420\u2420\u2420\u2420\n * \u2409\u2420\n * ```\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {TokenType} type\n *   Type of the whole whitespace.\n * @param {number | undefined} [max=Infinity]\n *   Max (exclusive).\n * @returns {State}\n *   Start state.\n */\nexport function factorySpace(effects, ok, type, max) {\n  const limit = max ? max - 1 : Infinity;\n  let size = 0;\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    if (markdownSpace(code)) {\n      effects.enter(type);\n      return prefix(code);\n    }\n    return ok(code);\n  }\n\n  /** @type {State} */\n  function prefix(code) {\n    if (markdownSpace(code) && size++ < limit) {\n      effects.consume(code);\n      return prefix;\n    }\n    effects.exit(type);\n    return ok(code);\n  }\n}\n\n/**\n * Parse spaces and tabs, with a required minimum and maximum, matching\n * `markdown-rs`\u2019s `space_or_tab_min_max`.\n *\n * Unlike `factorySpace`, this can fail: `nok` is used when fewer than\n * `min` spaces or tabs are found.\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {State} nok\n *   State switched to when unsuccessful.\n * @param {TokenType} type\n *   Type of the whole whitespace.\n * @param {number} min\n *   Minimum allowed characters (inclusive).\n * @param {number} max\n *   Maximum allowed characters (inclusive).\n * @returns {State}\n *   Start state.\n */\nexport function factorySpaceMinMax(effects, ok, nok, type, min, max) {\n  let size = 0;\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    if (max > 0 && markdownSpace(code)) {\n      effects.enter(type);\n      return prefix(code);\n    }\n    return after(code);\n  }\n\n  /** @type {State} */\n  function prefix(code) {\n    if (markdownSpace(code) && size < max) {\n      effects.consume(code);\n      size++;\n      return prefix;\n    }\n    effects.exit(type);\n    return after(code);\n  }\n\n  /** @type {State} */\n  function after(code) {\n    return size >= min ? ok(code) : nok(code);\n  }\n}", "/**\n * @import {\n *   InitialConstruct,\n *   Initializer,\n *   State,\n *   TokenizeContext,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {InitialConstruct} */\nexport const content = {\n  tokenize: initializeContent\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Initializer}\n *   Content.\n */\nfunction initializeContent(effects) {\n  const contentStart = effects.attempt(this.parser.constructs.contentInitial, afterContentStartConstruct, paragraphInitial);\n  /** @type {Token} */\n  let previous;\n  return contentStart;\n\n  /** @type {State} */\n  function afterContentStartConstruct(code) {\n    if (code === null) {\n      effects.consume(code);\n      return;\n    }\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return factorySpace(effects, contentStart, \"linePrefix\");\n  }\n\n  /** @type {State} */\n  function paragraphInitial(code) {\n    effects.enter(\"paragraph\");\n    return lineStart(code);\n  }\n\n  /** @type {State} */\n  function lineStart(code) {\n    const token = effects.enter(\"chunkText\", {\n      contentType: \"text\",\n      previous\n    });\n    if (previous) {\n      previous.next = token;\n    }\n    previous = token;\n    return data(code);\n  }\n\n  /** @type {State} */\n  function data(code) {\n    if (code === null) {\n      effects.exit(\"chunkText\");\n      effects.exit(\"paragraph\");\n      effects.consume(code);\n      return;\n    }\n    if (markdownLineEnding(code)) {\n      effects.consume(code);\n      effects.exit(\"chunkText\");\n      return lineStart;\n    }\n\n    // Data.\n    effects.consume(code);\n    return data;\n  }\n}", "/**\n * @import {Event} from 'micromark-util-types'\n */\n\n/**\n * @typedef {[number, number, Array<Event>]} Change\n * @typedef {[number, number, number]} Jump\n */\n\n/**\n * Tracks a bunch of edits.\n *\n * Port of `edit_map.rs` from `markdown-rs`:\n * <https://github.com/wooorm/markdown-rs/blob/1506572f/src/util/edit_map.rs>.\n *\n * Deal with several changes in events, batching them together.\n *\n * Preferably, changes should be kept to a minimum.\n * Sometimes, it\u2019s needed to change the list of events, because parsing can be\n * messy, and it helps to expose a cleaner interface of events to the compiler\n * and other users.\n * It can also help to merge many adjacent similar events.\n * And, in other cases, it\u2019s needed to parse subcontent: pass some events\n * through another tokenizer and inject the result.\n */\nexport class EditMap {\n  /**\n   * Create a new edit map.\n   *\n   * @returns\n   *   New instance.\n   */\n  constructor() {\n    /**\n     * Changes by index, so `add` does not need to scan `map` (which is\n     * quadratic for documents with many edits at different places).\n     *\n     * @type {Map<number, Change>}\n     */\n    this.index = new Map();\n\n    /**\n     * Record of changes.\n     *\n     * @type {Array<Change>}\n     */\n    this.map = [];\n  }\n\n  /**\n   * Create an edit: a remove and/or add at a certain place.\n   *\n   * @param {number} index\n   *   Index at which to apply the edit.\n   * @param {number} remove\n   *   Count of items to remove at the index.\n   * @param {Array<Event>} add\n   *   Items to add at the index.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  add(index, remove, add) {\n    addImplementation(this, index, remove, add, false);\n  }\n\n  /**\n   * Create an edit: but insert `add` before existing additions, instead of\n   * after them.\n   *\n   * @param {number} index\n   *   Index at which to apply the edit.\n   * @param {number} remove\n   *   Count of items to remove at the index.\n   * @param {Array<Event>} add\n   *   Items to add at the index.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  addBefore(index, remove, add) {\n    addImplementation(this, index, remove, add, true);\n  }\n\n  /**\n   * Done, change the events.\n   *\n   * @param {Array<Event>} events\n   *   List of events to apply the edits to.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  consume(events) {\n    this.map.sort(function (a, b) {\n      return a[0] - b[0];\n    });\n    if (this.map.length === 0) {\n      return;\n    }\n\n    // To do: if links are added in events, like they are in `markdown-rs`,\n    // this is needed.\n    // // Calculate jumps: where items in the current list move to.\n    // /** @type {Array<Jump>} */\n    // const jumps = []\n    // let index = 0\n    // let addAcc = 0\n    // let removeAcc = 0\n    // while (index < this.map.length) {\n    //   const [at, remove, add] = this.map[index]\n    //   removeAcc += remove\n    //   addAcc += add.length\n    //   jumps.push([at, removeAcc, addAcc])\n    //   index += 1\n    // }\n    //\n    // shiftLinks(events, jumps)\n\n    let index = this.map.length;\n    /** @type {Array<Array<Event>>} */\n    const vecs = [];\n    while (index > 0) {\n      index -= 1;\n      vecs.push(events.slice(this.map[index][0] + this.map[index][1]), this.map[index][2]);\n\n      // Truncate rest.\n      events.length = this.map[index][0];\n    }\n    vecs.push(events.slice());\n    events.length = 0;\n    let slice = vecs.pop();\n    while (slice) {\n      for (const element of slice) {\n        events.push(element);\n      }\n      slice = vecs.pop();\n    }\n\n    // Truncate everything.\n    this.map.length = 0;\n    this.index.clear();\n  }\n}\n\n/**\n * Create an edit.\n *\n * @param {EditMap} editMap\n *   Edit map to apply to.\n * @param {number} at\n *   Index at which to apply the edit.\n * @param {number} remove\n *   Count of items to remove at the index.\n * @param {Array<Event>} add\n *   Items to add at the index.\n * @param {boolean} before\n *   Insert `add` before existing additions at `at`, instead of after them.\n * @returns {undefined}\n *   Nothing.\n */\nfunction addImplementation(editMap, at, remove, add, before) {\n  if (remove === 0 && add.length === 0) {\n    return;\n  }\n  const existing = editMap.index.get(at);\n  if (existing) {\n    existing[1] += remove;\n    if (before) {\n      add.push(...existing[2]);\n      existing[2] = add;\n    } else {\n      existing[2].push(...add);\n    }\n    return;\n  }\n\n  /** @type {Change} */\n  const change = [at, remove, add];\n  editMap.map.push(change);\n  editMap.index.set(at, change);\n}\n\n// /**\n//  * Shift `previous` and `next` links according to `jumps`.\n//  *\n//  * This fixes links in case there are events removed or added between them.\n//  *\n//  * @param {Array<Event>} events\n//  * @param {Array<Jump>} jumps\n//  */\n// function shiftLinks(events, jumps) {\n//   let jumpIndex = 0\n//   let index = 0\n//   let add = 0\n//   let rm = 0\n\n//   while (index < events.length) {\n//     const rmCurr = rm\n\n//     while (jumpIndex < jumps.length && jumps[jumpIndex][0] <= index) {\n//       add = jumps[jumpIndex][2]\n//       rm = jumps[jumpIndex][1]\n//       jumpIndex += 1\n//     }\n\n//     // Ignore items that will be removed.\n//     if (rm > rmCurr) {\n//       index += rm - rmCurr\n//     } else {\n//       // ?\n//       // if let Some(link) = &events[index].link {\n//       //     if let Some(next) = link.next {\n//       //         events[next].link.as_mut().unwrap().previous = Some(index + add - rm);\n//       //         while jumpIndex < jumps.len() && jumps[jumpIndex].0 <= next {\n//       //             add = jumps[jumpIndex].2;\n//       //             rm = jumps[jumpIndex].1;\n//       //             jumpIndex += 1;\n//       //         }\n//       //         events[index].link.as_mut().unwrap().next = Some(next + add - rm);\n//       //         index = next;\n//       //         continue;\n//       //     }\n//       // }\n//       index += 1\n//     }\n//   }\n// }", "/**\n * @import {\n *   Construct,\n *   ContainerState,\n *   InitialConstruct,\n *   Initializer,\n *   Point,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\n/**\n * @typedef {[Construct, ContainerState]} StackItem\n *   Construct and its state.\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { EditMap } from 'micromark-util-edit-map';\n/** @type {InitialConstruct} */\nexport const document = {\n  tokenize: initializeDocument\n};\n\n/** @type {Construct} */\nconst containerConstruct = {\n  tokenize: tokenizeContainer\n};\n\n/**\n * @this {TokenizeContext}\n *   Self.\n * @type {Initializer}\n *   Initializer.\n */\nfunction initializeDocument(effects) {\n  const self = this;\n  /** @type {Array<StackItem>} */\n  const stack = [];\n  let continued = 0;\n  /** @type {TokenizeContext | undefined} */\n  let childFlow;\n  /** @type {Token | undefined} */\n  let childToken;\n  /** @type {number} */\n  let lineStartOffset;\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    // First we iterate through the open blocks, starting with the root\n    // document, and descending through last children down to the last open\n    // block.\n    // Each block imposes a condition that the line must satisfy if the block is\n    // to remain open.\n    // For example, a block quote requires a `>` character.\n    // A paragraph requires a non-blank line.\n    // In this phase we may match all or just some of the open blocks.\n    // But we cannot close unmatched blocks yet, because we may have a lazy\n    // continuation line.\n    if (continued < stack.length) {\n      const item = stack[continued];\n      self.containerState = item[1];\n      return effects.attempt(item[0].continuation, documentContinue, checkNewContainers)(code);\n    }\n\n    // Done.\n    return checkNewContainers(code);\n  }\n\n  /** @type {State} */\n  function documentContinue(code) {\n    continued++;\n\n    // Note: this field is called `_closeFlow` but it also closes containers.\n    // Perhaps a good idea to rename it but it\u2019s already used in the wild by\n    // extensions.\n    if (self.containerState._closeFlow) {\n      self.containerState._closeFlow = undefined;\n      if (childFlow) {\n        closeFlow();\n      }\n\n      // Note: this algorithm for moving events around is similar to the\n      // algorithm when dealing with lazy lines in `writeToChild`.\n      const indexBeforeExits = self.events.length;\n      let indexBeforeFlow = indexBeforeExits;\n      /** @type {Point | undefined} */\n      let point;\n\n      // Find the flow chunk.\n      while (indexBeforeFlow--) {\n        if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === \"chunkFlow\") {\n          point = self.events[indexBeforeFlow][1].end;\n          break;\n        }\n      }\n      exitContainers(continued);\n\n      // Fix positions.\n      let index = indexBeforeExits;\n      while (index < self.events.length) {\n        self.events[index][1].end = {\n          ...point\n        };\n        index++;\n      }\n      const editMap = new EditMap();\n      // Inject the exits earlier (they\u2019re still also at the end).\n      editMap.add(indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));\n      // Discard the duplicate exits.\n      editMap.add(indexBeforeExits, index - indexBeforeExits, []);\n      editMap.consume(self.events);\n      return checkNewContainers(code);\n    }\n    return start(code);\n  }\n\n  /** @type {State} */\n  function checkNewContainers(code) {\n    // Next, after consuming the continuation markers for existing blocks, we\n    // look for new block starts (e.g. `>` for a block quote).\n    // If we encounter a new block start, we close any blocks unmatched in\n    // step 1 before creating the new block as a child of the last matched\n    // block.\n    if (continued === stack.length) {\n      // No need to `check` whether there\u2019s a container, of `exitContainers`\n      // would be moot.\n      // We can instead immediately `attempt` to parse one.\n      if (!childFlow) {\n        return documentContinued(code);\n      }\n\n      // If we have concrete content, such as block HTML or fenced code,\n      // we can\u2019t have containers \u201Cpierce\u201D into them, so we can immediately\n      // start.\n      if (childFlow.currentConstruct && childFlow.currentConstruct.concrete) {\n        return flowStart(code);\n      }\n\n      // If we do have flow, it could still be a blank line,\n      // but we\u2019d be interrupting it w/ a new container if there\u2019s a current\n      // construct.\n      // To do: next major: remove `_gfmTableDynamicInterruptHack` (no longer\n      // needed in micromark-extension-gfm-table@1.0.6).\n      self.interrupt = Boolean(childFlow.currentConstruct && !childFlow._gfmTableDynamicInterruptHack);\n    }\n\n    // Check if there is a new container.\n    self.containerState = {};\n    return effects.check(containerConstruct, thereIsANewContainer, thereIsNoNewContainer)(code);\n  }\n\n  /** @type {State} */\n  function thereIsANewContainer(code) {\n    if (childFlow) {\n      closeFlow();\n    }\n    exitContainers(continued);\n    return documentContinued(code);\n  }\n\n  /** @type {State} */\n  function thereIsNoNewContainer(code) {\n    self.parser.lazy[self.now().line] = continued !== stack.length;\n    lineStartOffset = self.now().offset;\n    return flowStart(code);\n  }\n\n  /** @type {State} */\n  function documentContinued(code) {\n    // Try new containers.\n    self.containerState = {};\n    return effects.attempt(containerConstruct, containerContinue, flowStart)(code);\n  }\n\n  /** @type {State} */\n  function containerContinue(code) {\n    continued++;\n    stack.push([self.currentConstruct, self.containerState]);\n    // Try another.\n    return documentContinued(code);\n  }\n\n  /** @type {State} */\n  function flowStart(code) {\n    if (code === null) {\n      if (childFlow) {\n        closeFlow();\n      }\n      exitContainers(0);\n      effects.consume(code);\n      return;\n    }\n    childFlow = childFlow || self.parser.flow(self.now());\n    effects.enter(\"chunkFlow\", {\n      _tokenizer: childFlow,\n      contentType: \"flow\",\n      previous: childToken\n    });\n    return flowContinue(code);\n  }\n\n  /** @type {State} */\n  function flowContinue(code) {\n    if (code === null) {\n      writeToChild(effects.exit(\"chunkFlow\"), true);\n      exitContainers(0);\n      effects.consume(code);\n      return;\n    }\n    if (markdownLineEnding(code)) {\n      effects.consume(code);\n      writeToChild(effects.exit(\"chunkFlow\"));\n      // Get ready for the next line.\n      continued = 0;\n      self.interrupt = undefined;\n      return start;\n    }\n    effects.consume(code);\n    return flowContinue;\n  }\n\n  /**\n   * @param {Token} token\n   *   Token.\n   * @param {boolean | undefined} [endOfFile]\n   *   Whether the token is at the end of the file (default: `false`).\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function writeToChild(token, endOfFile) {\n    const stream = self.sliceStream(token);\n    if (endOfFile) {\n      stream.push(null);\n    }\n    token.previous = childToken;\n    if (childToken) {\n      childToken.next = token;\n    }\n    childToken = token;\n    childFlow.defineSkip(token.start);\n    childFlow.write(stream);\n\n    // Alright, so we just added a lazy line:\n    //\n    // ```markdown\n    // > a\n    // b.\n    //\n    // Or:\n    //\n    // > ~~~c\n    // d\n    //\n    // Or:\n    //\n    // > | e |\n    // f\n    // ```\n    //\n    // The construct in the second example (fenced code) does not accept lazy\n    // lines, so it marked itself as done at the end of its first line, and\n    // then the content construct parses `d`.\n    // Most constructs in markdown match on the first line: if the first line\n    // forms a construct, a non-lazy line can\u2019t \u201Cunmake\u201D it.\n    //\n    // The construct in the third example is potentially a GFM table, and\n    // those are *weird*.\n    // It *could* be a table, from the first line, if the following line\n    // matches a condition.\n    // In this case, that second line is lazy, which \u201Cunmakes\u201D the first line\n    // and turns the whole into one content block.\n    //\n    // We\u2019ve now parsed the non-lazy and the lazy line, and can figure out\n    // whether the lazy line started a new flow block.\n    // If it did, we exit the current containers between the two flow blocks.\n    if (self.parser.lazy[token.start.line]) {\n      let index = childFlow.events.length;\n      while (index--) {\n        if (\n        // The token starts before the line ending\u2026\n        childFlow.events[index][1].start.offset < lineStartOffset && (\n        // \u2026and either is not ended yet\u2026\n        !childFlow.events[index][1].end ||\n        // \u2026or ends after it.\n        childFlow.events[index][1].end.offset > lineStartOffset)) {\n          // Exit: there\u2019s still something open, which means it\u2019s a lazy line\n          // part of something.\n          return;\n        }\n      }\n\n      // Note: this algorithm for moving events around is similar to the\n      // algorithm when closing flow in `documentContinue`.\n      const indexBeforeExits = self.events.length;\n      let indexBeforeFlow = indexBeforeExits;\n      /** @type {boolean | undefined} */\n      let seen;\n      /** @type {Point | undefined} */\n      let point;\n\n      // Find the previous chunk (the one before the lazy line).\n      while (indexBeforeFlow--) {\n        if (self.events[indexBeforeFlow][0] === 'exit' && self.events[indexBeforeFlow][1].type === \"chunkFlow\") {\n          if (seen) {\n            point = self.events[indexBeforeFlow][1].end;\n            break;\n          }\n          seen = true;\n        }\n      }\n      exitContainers(continued);\n\n      // Fix positions.\n      index = indexBeforeExits;\n      while (index < self.events.length) {\n        self.events[index][1].end = {\n          ...point\n        };\n        index++;\n      }\n      const editMap = new EditMap();\n      // Inject the exits earlier (they\u2019re still also at the end).\n      editMap.add(indexBeforeFlow + 1, 0, self.events.slice(indexBeforeExits));\n      // Discard the duplicate exits.\n      editMap.add(indexBeforeExits, index - indexBeforeExits, []);\n      editMap.consume(self.events);\n    }\n  }\n\n  /**\n   * @param {number} size\n   *   Size.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function exitContainers(size) {\n    let index = stack.length;\n\n    // Exit open containers.\n    while (index-- > size) {\n      const entry = stack[index];\n      self.containerState = entry[1];\n      entry[0].exit.call(self, effects);\n    }\n    stack.length = size;\n  }\n  function closeFlow() {\n    childFlow.write([null]);\n    childToken = undefined;\n    childFlow = undefined;\n    self.containerState._closeFlow = undefined;\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n *   Tokenizer.\n */\nfunction tokenizeContainer(effects, ok, nok) {\n  // Always populated by defaults.\n\n  return factorySpace(effects, effects.attempt(this.parser.constructs.document, ok, nok), \"linePrefix\", this.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4);\n}", "/**\n * @import {Code} from 'micromark-util-types'\n */\n\nimport { markdownLineEndingOrSpace, unicodePunctuation, unicodeWhitespace } from 'micromark-util-character';\n/**\n * Classify whether a code represents whitespace, punctuation, or something\n * else.\n *\n * Used for attention (emphasis, strong), whose sequences can open or close\n * based on the class of surrounding characters.\n *\n * > \uD83D\uDC49 **Note**: eof (`null`) is seen as whitespace.\n *\n * @param {Code} code\n *   Code.\n * @returns {typeof constants.characterGroupWhitespace | typeof constants.characterGroupPunctuation | undefined}\n *   Group.\n */\nexport function classifyCharacter(code) {\n  if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n    return 1;\n  }\n  if (unicodePunctuation(code)) {\n    return 2;\n  }\n}", "/**\n * @import {Event, Resolver, TokenizeContext} from 'micromark-util-types'\n */\n\n/**\n * Call all `resolveAll`s.\n *\n * @param {ReadonlyArray<{resolveAll?: Resolver | undefined}>} constructs\n *   List of constructs, optionally with `resolveAll`s.\n * @param {Array<Event>} events\n *   List of events.\n * @param {TokenizeContext} context\n *   Context used by `tokenize`.\n * @returns {Array<Event>}\n *   Changed events.\n */\nexport function resolveAll(constructs, events, context) {\n  /** @type {Array<Resolver>} */\n  const called = []\n  let index = -1\n\n  while (++index < constructs.length) {\n    const resolve = constructs[index].resolveAll\n\n    if (resolve && !called.includes(resolve)) {\n      events = resolve(events, context)\n      called.push(resolve)\n    }\n  }\n\n  return events\n}\n", "/**\n * @import {\n *   Code,\n *   Construct,\n *   Event,\n *   Point,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { push, splice } from 'micromark-util-chunked';\nimport { classifyCharacter } from 'micromark-util-classify-character';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const attention = {\n  name: 'attention',\n  resolveAll: resolveAllAttention,\n  tokenize: tokenizeAttention\n};\n\n/**\n * Take all events and resolve attention to emphasis or strong.\n *\n * @type {Resolver}\n */\n// eslint-disable-next-line complexity\nfunction resolveAllAttention(events, context) {\n  let index = -1;\n  /** @type {Array<Event>} */\n  let nextEvents;\n\n  // Walk through all events.\n  //\n  // Note: performance of this is fine on an mb of normal markdown, but it\u2019s\n  // a bottleneck for malicious stuff.\n  while (++index < events.length) {\n    // Find a token that can close.\n    if (events[index][0] === 'enter' && events[index][1].type === 'attentionSequence' && events[index][1]._close) {\n      let open = index;\n\n      // Now walk back to find an opener.\n      while (open--) {\n        // Find a token that can open the closer.\n        if (events[open][0] === 'exit' && events[open][1].type === 'attentionSequence' && events[open][1]._open &&\n        // If the markers are the same:\n        context.sliceSerialize(events[open][1]).charCodeAt(0) === context.sliceSerialize(events[index][1]).charCodeAt(0)) {\n          // If the opening can close or the closing can open,\n          // and the close size *is not* a multiple of three,\n          // but the sum of the opening and closing size *is* multiple of three,\n          // then don\u2019t match.\n          if ((events[open][1]._close || events[index][1]._open) && (events[index][1].end.offset - events[index][1].start.offset) % 3 && !((events[open][1].end.offset - events[open][1].start.offset + events[index][1].end.offset - events[index][1].start.offset) % 3)) {\n            continue;\n          }\n\n          // Number of markers to use from the sequence.\n          const use = events[open][1].end.offset - events[open][1].start.offset > 1 && events[index][1].end.offset - events[index][1].start.offset > 1 ? 2 : 1;\n          const start = {\n            ...events[open][1].end\n          };\n          const end = {\n            ...events[index][1].start\n          };\n          movePoint(start, -use);\n          movePoint(end, use);\n          const openingSequence = {\n            type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n            start,\n            end: {\n              ...events[open][1].end\n            }\n          };\n          const closingSequence = {\n            type: use > 1 ? \"strongSequence\" : \"emphasisSequence\",\n            start: {\n              ...events[index][1].start\n            },\n            end\n          };\n          const text = {\n            type: use > 1 ? \"strongText\" : \"emphasisText\",\n            start: {\n              ...events[open][1].end\n            },\n            end: {\n              ...events[index][1].start\n            }\n          };\n          const group = {\n            type: use > 1 ? \"strong\" : \"emphasis\",\n            start: {\n              ...openingSequence.start\n            },\n            end: {\n              ...closingSequence.end\n            }\n          };\n          events[open][1].end = {\n            ...openingSequence.start\n          };\n          events[index][1].start = {\n            ...closingSequence.end\n          };\n          nextEvents = [];\n\n          // If there are more markers in the opening, add them before.\n          if (events[open][1].end.offset - events[open][1].start.offset) {\n            nextEvents = push(nextEvents, [['enter', events[open][1], context], ['exit', events[open][1], context]]);\n          }\n\n          // Opening.\n          nextEvents = push(nextEvents, [['enter', group, context], ['enter', openingSequence, context], ['exit', openingSequence, context], ['enter', text, context]]);\n\n          // Always populated by defaults.\n\n          // Between.\n          nextEvents = push(nextEvents, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + 1, index), context));\n\n          // Closing.\n          nextEvents = push(nextEvents, [['exit', text, context], ['enter', closingSequence, context], ['exit', closingSequence, context], ['exit', group, context]]);\n\n          /** @type {number} */\n          let offset = 0;\n\n          // If there are more markers in the closing, add them after.\n          if (events[index][1].end.offset - events[index][1].start.offset) {\n            offset = 2;\n            nextEvents = push(nextEvents, [['enter', events[index][1], context], ['exit', events[index][1], context]]);\n          }\n          splice(events, open - 1, index - open + 3, nextEvents);\n          index = open + nextEvents.length - offset - 2;\n          break;\n        }\n      }\n    }\n  }\n\n  // Remove remaining sequences.\n  index = -1;\n  while (++index < events.length) {\n    if (events[index][1].type === 'attentionSequence') {\n      events[index][1].type = 'data';\n    }\n  }\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeAttention(effects, ok) {\n  const attentionMarkers = this.parser.constructs.attentionMarkers.null;\n  const previous = this.previous;\n  const before = classifyCharacter(previous);\n\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * Before a sequence.\n   *\n   * ```markdown\n   * > | **\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    marker = code;\n    effects.enter('attentionSequence');\n    return inside(code);\n  }\n\n  /**\n   * In a sequence.\n   *\n   * ```markdown\n   * > | **\n   *     ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === marker) {\n      effects.consume(code);\n      return inside;\n    }\n    const token = effects.exit('attentionSequence');\n\n    // To do: next major: move this to resolver, just like `markdown-rs`.\n    const after = classifyCharacter(code);\n\n    // Always populated by defaults.\n\n    // Note: `*` and `_` are in `attentionMarkers` through core.\n    // They are excluded here as the loosening is meant for markers registered\n    // by *other* constructs (such as GFM strikethrough\u2019s `~`).\n    const open = !after || after === 2 && before || attentionMarkers.includes(code) && code !== 42 && code !== 95;\n    const close = !before || before === 2 && after || attentionMarkers.includes(previous) && previous !== 42 && previous !== 95;\n    token._open = Boolean(marker === 42 ? open : open && (before || !close));\n    token._close = Boolean(marker === 42 ? close : close && (after || !open));\n    return ok(code);\n  }\n}\n\n/**\n * Move a point a bit.\n *\n * Note: `move` only works inside lines! It\u2019s not possible to move past other\n * chunks (replacement characters, tabs, or line endings).\n *\n * @param {Point} point\n *   Point.\n * @param {number} offset\n *   Amount to move.\n * @returns {undefined}\n *   Nothing.\n */\nfunction movePoint(point, offset) {\n  point.column += offset;\n  point.offset += offset;\n  point._bufferIndex += offset;\n}", "/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiAlphanumeric, asciiAlpha, asciiAtext, asciiControl } from 'micromark-util-character';\n/** @type {Construct} */\nexport const autolink = {\n  name: 'autolink',\n  tokenize: tokenizeAutolink\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeAutolink(effects, ok, nok) {\n  let size = 0;\n  return start;\n\n  /**\n   * Start of an autolink.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *      ^\n   * > | a<user@example.com>b\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"autolink\");\n    effects.enter(\"autolinkMarker\");\n    effects.consume(code);\n    effects.exit(\"autolinkMarker\");\n    effects.enter(\"autolinkProtocol\");\n    return open;\n  }\n\n  /**\n   * After `<`, at protocol or atext.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *       ^\n   * > | a<user@example.com>b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      return schemeOrEmailAtext;\n    }\n    if (code === 64) {\n      return nok(code);\n    }\n    return emailAtext(code);\n  }\n\n  /**\n   * At second byte of protocol or atext.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *        ^\n   * > | a<user@example.com>b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function schemeOrEmailAtext(code) {\n    // ASCII alphanumeric and `+`, `-`, and `.`.\n    if (code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) {\n      // Count the previous alphabetical from `open` too.\n      size = 1;\n      return schemeInsideOrEmailAtext(code);\n    }\n    return emailAtext(code);\n  }\n\n  /**\n   * In ambiguous protocol or atext.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *        ^\n   * > | a<user@example.com>b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function schemeInsideOrEmailAtext(code) {\n    if (code === 58) {\n      effects.consume(code);\n      size = 0;\n      return urlInside;\n    }\n\n    // ASCII alphanumeric and `+`, `-`, and `.`.\n    if ((code === 43 || code === 45 || code === 46 || asciiAlphanumeric(code)) && size++ < 32) {\n      effects.consume(code);\n      return schemeInsideOrEmailAtext;\n    }\n    size = 0;\n    return emailAtext(code);\n  }\n\n  /**\n   * After protocol, in URL.\n   *\n   * ```markdown\n   * > | a<https://example.com>b\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function urlInside(code) {\n    if (code === 62) {\n      effects.exit(\"autolinkProtocol\");\n      effects.enter(\"autolinkMarker\");\n      effects.consume(code);\n      effects.exit(\"autolinkMarker\");\n      effects.exit(\"autolink\");\n      return ok;\n    }\n\n    // ASCII control, space, or `<`.\n    if (code === null || code === 32 || code === 60 || asciiControl(code)) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return urlInside;\n  }\n\n  /**\n   * In email atext.\n   *\n   * ```markdown\n   * > | a<user.name@example.com>b\n   *              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailAtext(code) {\n    if (code === 64) {\n      effects.consume(code);\n      return emailAtSignOrDot;\n    }\n    if (asciiAtext(code)) {\n      effects.consume(code);\n      return emailAtext;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In label, after at-sign or dot.\n   *\n   * ```markdown\n   * > | a<user.name@example.com>b\n   *                 ^       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailAtSignOrDot(code) {\n    return asciiAlphanumeric(code) ? emailLabel(code) : nok(code);\n  }\n\n  /**\n   * In label, where `.` and `>` are allowed.\n   *\n   * ```markdown\n   * > | a<user.name@example.com>b\n   *                   ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailLabel(code) {\n    if (code === 46) {\n      effects.consume(code);\n      size = 0;\n      return emailAtSignOrDot;\n    }\n    if (code === 62) {\n      // Exit, then change the token type.\n      effects.exit(\"autolinkProtocol\").type = \"autolinkEmail\";\n      effects.enter(\"autolinkMarker\");\n      effects.consume(code);\n      effects.exit(\"autolinkMarker\");\n      effects.exit(\"autolink\");\n      return ok;\n    }\n    return emailValue(code);\n  }\n\n  /**\n   * In label, where `.` and `>` are *not* allowed.\n   *\n   * Though, this is also used in `emailLabel` to parse other values.\n   *\n   * ```markdown\n   * > | a<user.name@ex-ample.com>b\n   *                    ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailValue(code) {\n    // ASCII alphanumeric or `-`.\n    if ((code === 45 || asciiAlphanumeric(code)) && size++ < 63) {\n      const next = code === 45 ? emailValue : emailLabel;\n      effects.consume(code);\n      return next;\n    }\n    return nok(code);\n  }\n}", "/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const blankLine = {\n  partial: true,\n  tokenize: tokenizeBlankLine\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLine(effects, ok, nok) {\n  return start;\n\n  /**\n   * Start of blank line.\n   *\n   * > \uD83D\uDC49 **Note**: `\u2420` represents a space character.\n   *\n   * ```markdown\n   * > | \u2420\u2420\u240A\n   *     ^\n   * > | \u240A\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    return markdownSpace(code) ? factorySpace(effects, after, \"linePrefix\")(code) : after(code);\n  }\n\n  /**\n   * At eof/eol, after optional whitespace.\n   *\n   * > \uD83D\uDC49 **Note**: `\u2420` represents a space character.\n   *\n   * ```markdown\n   * > | \u2420\u2420\u240A\n   *       ^\n   * > | \u240A\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    return code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n  }\n}", "/**\n * @import {\n *   Construct,\n *   Exiter,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const blockQuote = {\n  continuation: {\n    tokenize: tokenizeBlockQuoteContinuation\n  },\n  exit,\n  name: 'blockQuote',\n  tokenize: tokenizeBlockQuoteStart\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteStart(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   * Start of block quote.\n   *\n   * ```markdown\n   * > | > a\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === 62) {\n      const state = self.containerState;\n      if (!state.open) {\n        effects.enter(\"blockQuote\", {\n          _container: true\n        });\n        state.open = true;\n      }\n      effects.enter(\"blockQuotePrefix\");\n      effects.enter(\"blockQuoteMarker\");\n      effects.consume(code);\n      effects.exit(\"blockQuoteMarker\");\n      return after;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `>`, before optional whitespace.\n   *\n   * ```markdown\n   * > | > a\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    if (markdownSpace(code)) {\n      effects.enter(\"blockQuotePrefixWhitespace\");\n      effects.consume(code);\n      effects.exit(\"blockQuotePrefixWhitespace\");\n      effects.exit(\"blockQuotePrefix\");\n      return ok;\n    }\n    effects.exit(\"blockQuotePrefix\");\n    return ok(code);\n  }\n}\n\n/**\n * Start of block quote continuation.\n *\n * ```markdown\n *   | > a\n * > | > b\n *     ^\n * ```\n *\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlockQuoteContinuation(effects, ok, nok) {\n  const self = this;\n  return contStart;\n\n  /**\n   * Start of block quote continuation.\n   *\n   * Also used to parse the first block quote opening.\n   *\n   * ```markdown\n   *   | > a\n   * > | > b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function contStart(code) {\n    if (markdownSpace(code)) {\n      // Always populated by defaults.\n\n      return factorySpace(effects, contBefore, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n    }\n    return contBefore(code);\n  }\n\n  /**\n   * At `>`, after optional whitespace.\n   *\n   * Also used to parse the first block quote opening.\n   *\n   * ```markdown\n   *   | > a\n   * > | > b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function contBefore(code) {\n    return effects.attempt(blockQuote, ok, nok)(code);\n  }\n}\n\n/** @type {Exiter} */\nfunction exit(effects) {\n  effects.exit(\"blockQuote\");\n}", "/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiPunctuation } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterEscape = {\n  name: 'characterEscape',\n  tokenize: tokenizeCharacterEscape\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterEscape(effects, ok, nok) {\n  return start;\n\n  /**\n   * Start of character escape.\n   *\n   * ```markdown\n   * > | a\\*b\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"characterEscape\");\n    effects.enter(\"escapeMarker\");\n    effects.consume(code);\n    effects.exit(\"escapeMarker\");\n    return inside;\n  }\n\n  /**\n   * After `\\`, at punctuation.\n   *\n   * ```markdown\n   * > | a\\*b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    // ASCII punctuation.\n    if (asciiPunctuation(code)) {\n      effects.enter(\"characterEscapeValue\");\n      effects.consume(code);\n      effects.exit(\"characterEscapeValue\");\n      effects.exit(\"characterEscape\");\n      return ok;\n    }\n    return nok(code);\n  }\n}", "/**\n * @import {\n *   Code,\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { asciiAlphanumeric, asciiDigit, asciiHexDigit } from 'micromark-util-character';\n/** @type {Construct} */\nexport const characterReference = {\n  name: 'characterReference',\n  tokenize: tokenizeCharacterReference\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCharacterReference(effects, ok, nok) {\n  const self = this;\n  let size = 0;\n  /** @type {number} */\n  let max;\n  /** @type {(code: Code) => boolean} */\n  let test;\n  return start;\n\n  /**\n   * Start of character reference.\n   *\n   * ```markdown\n   * > | a&amp;b\n   *      ^\n   * > | a&#123;b\n   *      ^\n   * > | a&#x9;b\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"characterReference\");\n    effects.enter(\"characterReferenceMarker\");\n    effects.consume(code);\n    effects.exit(\"characterReferenceMarker\");\n    return open;\n  }\n\n  /**\n   * After `&`, at `#` for numeric references or alphanumeric for named\n   * references.\n   *\n   * ```markdown\n   * > | a&amp;b\n   *       ^\n   * > | a&#123;b\n   *       ^\n   * > | a&#x9;b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 35) {\n      effects.enter(\"characterReferenceMarkerNumeric\");\n      effects.consume(code);\n      effects.exit(\"characterReferenceMarkerNumeric\");\n      return numeric;\n    }\n    effects.enter(\"characterReferenceValue\");\n    max = 31;\n    test = asciiAlphanumeric;\n    return value(code);\n  }\n\n  /**\n   * After `#`, at `x` for hexadecimals or digit for decimals.\n   *\n   * ```markdown\n   * > | a&#123;b\n   *        ^\n   * > | a&#x9;b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function numeric(code) {\n    if (code === 88 || code === 120) {\n      effects.enter(\"characterReferenceMarkerHexadecimal\");\n      effects.consume(code);\n      effects.exit(\"characterReferenceMarkerHexadecimal\");\n      effects.enter(\"characterReferenceValue\");\n      max = 6;\n      test = asciiHexDigit;\n      return value;\n    }\n    effects.enter(\"characterReferenceValue\");\n    max = 7;\n    test = asciiDigit;\n    return value(code);\n  }\n\n  /**\n   * After markers (`&#x`, `&#`, or `&`), in value, before `;`.\n   *\n   * The character reference kind defines what and how many characters are\n   * allowed.\n   *\n   * ```markdown\n   * > | a&amp;b\n   *       ^^^\n   * > | a&#123;b\n   *        ^^^\n   * > | a&#x9;b\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function value(code) {\n    if (code === 59 && size) {\n      const token = effects.exit(\"characterReferenceValue\");\n      if (test === asciiAlphanumeric && !decodeNamedCharacterReference(self.sliceSerialize(token))) {\n        return nok(code);\n      }\n\n      // To do: `markdown-rs` uses a different name:\n      // `CharacterReferenceMarkerSemi`.\n      effects.enter(\"characterReferenceMarker\");\n      effects.consume(code);\n      effects.exit(\"characterReferenceMarker\");\n      effects.exit(\"characterReference\");\n      return ok;\n    }\n    if (test(code) && size++ < max) {\n      effects.consume(code);\n      return value;\n    }\n    return nok(code);\n  }\n}", "/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const nonLazyContinuation = {\n  partial: true,\n  tokenize: tokenizeNonLazyContinuation\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeNonLazyContinuation(effects, ok, nok) {\n  const self = this;\n  return start;\n\n  /**\n   * At eol, before continuation.\n   *\n   * ```markdown\n   * > | * ```js\n   *            ^\n   *   | b\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === null) {\n      return nok(code);\n    }\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return after;\n  }\n\n  /**\n   * A continuation.\n   *\n   * ```markdown\n   *   | * ```js\n   * > | b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    return self.parser.lazy[self.now().line] ? nok(code) : ok(code);\n  }\n}", "/**\n * @import {\n *   Code,\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { nonLazyContinuation } from './partial-non-lazy-continuation.js';\n\n/** @type {Construct} */\nexport const codeFenced = {\n  concrete: true,\n  name: 'codeFenced',\n  tokenize: tokenizeCodeFenced\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeFenced(effects, ok, nok) {\n  const self = this;\n  /** @type {Construct} */\n  const closeStart = {\n    partial: true,\n    tokenize: tokenizeCloseStart\n  };\n  let initialPrefix = 0;\n  let sizeOpen = 0;\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * Start of code.\n   *\n   * ```markdown\n   * > | ~~~js\n   *     ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: parse whitespace like `markdown-rs`.\n    return beforeSequenceOpen(code);\n  }\n\n  /**\n   * In opening fence, after prefix, at sequence.\n   *\n   * ```markdown\n   * > | ~~~js\n   *     ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function beforeSequenceOpen(code) {\n    const tail = self.events[self.events.length - 1];\n    initialPrefix = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n    marker = code;\n    effects.enter(\"codeFenced\");\n    effects.enter(\"codeFencedFence\");\n    effects.enter(\"codeFencedFenceSequence\");\n    return sequenceOpen(code);\n  }\n\n  /**\n   * In opening fence sequence.\n   *\n   * ```markdown\n   * > | ~~~js\n   *      ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceOpen(code) {\n    if (code === marker) {\n      sizeOpen++;\n      effects.consume(code);\n      return sequenceOpen;\n    }\n    if (sizeOpen < 3) {\n      return nok(code);\n    }\n    effects.exit(\"codeFencedFenceSequence\");\n    return markdownSpace(code) ? factorySpace(effects, infoBefore, \"whitespace\")(code) : infoBefore(code);\n  }\n\n  /**\n   * In opening fence, after the sequence (and optional whitespace), before info.\n   *\n   * ```markdown\n   * > | ~~~js\n   *        ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function infoBefore(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"codeFencedFence\");\n      return self.interrupt ? ok(code) : effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n    }\n    effects.enter(\"codeFencedFenceInfo\");\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return info(code);\n  }\n\n  /**\n   * In info.\n   *\n   * ```markdown\n   * > | ~~~js\n   *        ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function info(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"chunkString\");\n      effects.exit(\"codeFencedFenceInfo\");\n      return infoBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.exit(\"chunkString\");\n      effects.exit(\"codeFencedFenceInfo\");\n      return factorySpace(effects, metaBefore, \"whitespace\")(code);\n    }\n    if (code === 96 && code === marker) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return info;\n  }\n\n  /**\n   * In opening fence, after info and whitespace, before meta.\n   *\n   * ```markdown\n   * > | ~~~js eval\n   *           ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function metaBefore(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return infoBefore(code);\n    }\n    effects.enter(\"codeFencedFenceMeta\");\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return meta(code);\n  }\n\n  /**\n   * In meta.\n   *\n   * ```markdown\n   * > | ~~~js eval\n   *           ^\n   *   | alert(1)\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function meta(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"chunkString\");\n      effects.exit(\"codeFencedFenceMeta\");\n      return infoBefore(code);\n    }\n    if (code === 96 && code === marker) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return meta;\n  }\n\n  /**\n   * At eol/eof in code, before a non-lazy closing fence or content.\n   *\n   * ```markdown\n   * > | ~~~js\n   *          ^\n   * > | alert(1)\n   *             ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function atNonLazyBreak(code) {\n    return effects.attempt(closeStart, after, contentBefore)(code);\n  }\n\n  /**\n   * Before code content, not a closing fence, at eol.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *             ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function contentBefore(code) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return contentStart;\n  }\n\n  /**\n   * Before code content, not a closing fence.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *     ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function contentStart(code) {\n    return initialPrefix > 0 && markdownSpace(code) ? factorySpace(effects, beforeContentChunk, \"linePrefix\", initialPrefix + 1)(code) : beforeContentChunk(code);\n  }\n\n  /**\n   * Before code content, after optional prefix.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *     ^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function beforeContentChunk(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return effects.check(nonLazyContinuation, atNonLazyBreak, after)(code);\n    }\n    effects.enter(\"codeFlowValue\");\n    return contentChunk(code);\n  }\n\n  /**\n   * In code content.\n   *\n   * ```markdown\n   *   | ~~~js\n   * > | alert(1)\n   *     ^^^^^^^^\n   *   | ~~~\n   * ```\n   *\n   * @type {State}\n   */\n  function contentChunk(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"codeFlowValue\");\n      return beforeContentChunk(code);\n    }\n    effects.consume(code);\n    return contentChunk;\n  }\n\n  /**\n   * After code.\n   *\n   * ```markdown\n   *   | ~~~js\n   *   | alert(1)\n   * > | ~~~\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    effects.exit(\"codeFenced\");\n    return ok(code);\n  }\n\n  /**\n   * @this {TokenizeContext}\n   *   Context.\n   * @type {Tokenizer}\n   */\n  function tokenizeCloseStart(effects, ok, nok) {\n    let size = 0;\n    return startBefore;\n\n    /**\n     *\n     *\n     * @type {State}\n     */\n    function startBefore(code) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return start;\n    }\n\n    /**\n     * Before closing fence, at optional whitespace.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function start(code) {\n      // Always populated by defaults.\n\n      // To do: `enter` here or in next state?\n      effects.enter(\"codeFencedFence\");\n      return markdownSpace(code) ? factorySpace(effects, beforeSequenceClose, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : beforeSequenceClose(code);\n    }\n\n    /**\n     * In closing fence, after optional whitespace, at sequence.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function beforeSequenceClose(code) {\n      if (code === marker) {\n        effects.enter(\"codeFencedFenceSequence\");\n        return sequenceClose(code);\n      }\n      return nok(code);\n    }\n\n    /**\n     * In closing fence sequence.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *     ^\n     * ```\n     *\n     * @type {State}\n     */\n    function sequenceClose(code) {\n      if (code === marker) {\n        size++;\n        effects.consume(code);\n        return sequenceClose;\n      }\n      if (size >= sizeOpen) {\n        effects.exit(\"codeFencedFenceSequence\");\n        return markdownSpace(code) ? factorySpace(effects, sequenceCloseAfter, \"whitespace\")(code) : sequenceCloseAfter(code);\n      }\n      return nok(code);\n    }\n\n    /**\n     * After closing fence sequence, after optional whitespace.\n     *\n     * ```markdown\n     *   | ~~~js\n     *   | alert(1)\n     * > | ~~~\n     *        ^\n     * ```\n     *\n     * @type {State}\n     */\n    function sequenceCloseAfter(code) {\n      if (code === null || markdownLineEnding(code)) {\n        effects.exit(\"codeFencedFence\");\n        return ok(code);\n      }\n      return nok(code);\n    }\n  }\n}", "/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpaceMinMax } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeIndented = {\n  name: 'codeIndented',\n  tokenize: tokenizeCodeIndented\n};\n\n/** @type {Construct} */\nconst furtherStart = {\n  partial: true,\n  tokenize: tokenizeFurtherStart\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeIndented(effects, ok, nok) {\n  return start;\n\n  /**\n   * Start of code (indented).\n   *\n   * > **Parsing note**: it is not needed to check if this first line is a\n   * > filled line (that it has a non-whitespace character), because blank lines\n   * > are parsed already, so we never run into that.\n   *\n   * ```markdown\n   * > |     aaa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: manually check if interrupting like `markdown-rs`.\n\n    effects.enter(\"codeIndented\");\n    return factorySpaceMinMax(effects, atBreak, nok, \"linePrefix\", 4, 4)(code);\n  }\n\n  /**\n   * At a break.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^  ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === null) {\n      return after(code);\n    }\n    if (markdownLineEnding(code)) {\n      return effects.attempt(furtherStart, atBreak, after)(code);\n    }\n    effects.enter(\"codeFlowValue\");\n    return inside(code);\n  }\n\n  /**\n   * In code content.\n   *\n   * ```markdown\n   * > |     aaa\n   *         ^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"codeFlowValue\");\n      return atBreak(code);\n    }\n    effects.consume(code);\n    return inside;\n  }\n\n  /** @type {State} */\n  function after(code) {\n    effects.exit(\"codeIndented\");\n    // To do: allow interrupting like `markdown-rs`.\n    // Feel free to interrupt.\n    // tokenizer.interrupt = false\n    return ok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeFurtherStart(effects, ok, nok) {\n  const self = this;\n  return furtherStart;\n\n  /**\n   * At eol, trying to parse another indent.\n   *\n   * ```markdown\n   * > |     aaa\n   *            ^\n   *   |     bbb\n   * ```\n   *\n   * @type {State}\n   */\n  function furtherStart(code) {\n    // To do: improve `lazy` / `pierce` handling.\n    // If this is a lazy line, it can\u2019t be code.\n    if (self.parser.lazy[self.now().line]) {\n      return nok(code);\n    }\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return furtherStart;\n    }\n\n    // To do: the code here in `micromark-js` is a bit different from\n    // `markdown-rs` because there it can attempt spaces.\n    // We can\u2019t yet.\n    return factorySpaceMinMax(effects, ok, onNotEnoughPrefix, \"linePrefix\", 4, 4)(code);\n  }\n\n  /**\n   * After not enough of a prefix.\n   *\n   * A following line ending is another (potentially blank) line to try,\n   * anything else means this isn\u2019t a continuation.\n   *\n   * ```markdown\n   * > |     aaa\n   *\n   *   |     bbb\n   * ```\n   *\n   * @type {State}\n   */\n  function onNotEnoughPrefix(code) {\n    return markdownLineEnding(code) ? furtherStart(code) : nok(code);\n  }\n}", "/**\n * @import {\n *   Construct,\n *   Previous,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const codeText = {\n  name: 'codeText',\n  previous,\n  resolve: resolveCodeText,\n  tokenize: tokenizeCodeText\n};\n\n// To do: next major: don\u2019t resolve, like `markdown-rs`.\n/** @type {Resolver} */\nfunction resolveCodeText(events) {\n  let tailExitIndex = events.length - 4;\n  let headEnterIndex = 3;\n  /** @type {number} */\n  let index;\n  /** @type {number | undefined} */\n  let enter;\n\n  // If we start and end with an EOL or a space.\n  if ((events[headEnterIndex][1].type === \"lineEnding\" || events[headEnterIndex][1].type === 'space') && (events[tailExitIndex][1].type === \"lineEnding\" || events[tailExitIndex][1].type === 'space')) {\n    index = headEnterIndex;\n\n    // And we have data.\n    while (++index < tailExitIndex) {\n      if (events[index][1].type === \"codeTextData\") {\n        // Then we have padding.\n        events[headEnterIndex][1].type = \"codeTextPadding\";\n        events[tailExitIndex][1].type = \"codeTextPadding\";\n        headEnterIndex += 2;\n        tailExitIndex -= 2;\n        break;\n      }\n    }\n  }\n\n  // Merge adjacent spaces and data.\n  index = headEnterIndex - 1;\n  tailExitIndex++;\n  while (++index <= tailExitIndex) {\n    if (enter === undefined) {\n      if (index !== tailExitIndex && events[index][1].type !== \"lineEnding\") {\n        enter = index;\n      }\n    } else if (index === tailExitIndex || events[index][1].type === \"lineEnding\") {\n      events[enter][1].type = \"codeTextData\";\n      if (index !== enter + 2) {\n        events[enter][1].end = events[index - 1][1].end;\n        events.splice(enter + 2, index - enter - 2);\n        tailExitIndex -= index - enter - 2;\n        index = enter + 2;\n      }\n      enter = undefined;\n    }\n  }\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Previous}\n */\nfunction previous(code) {\n  // If there is a previous code, there will always be a tail.\n  return code !== 96 || this.events[this.events.length - 1][1].type === \"characterEscape\";\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeCodeText(effects, ok, nok) {\n  const self = this;\n  let sizeOpen = 0;\n  /** @type {number} */\n  let size;\n  /** @type {Token} */\n  let token;\n  return start;\n\n  /**\n   * Start of code (text).\n   *\n   * ```markdown\n   * > | `a`\n   *     ^\n   * > | \\`a`\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"codeText\");\n    effects.enter(\"codeTextSequence\");\n    return sequenceOpen(code);\n  }\n\n  /**\n   * In opening sequence.\n   *\n   * ```markdown\n   * > | `a`\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceOpen(code) {\n    if (code === 96) {\n      effects.consume(code);\n      sizeOpen++;\n      return sequenceOpen;\n    }\n    effects.exit(\"codeTextSequence\");\n    return between(code);\n  }\n\n  /**\n   * Between something and something else.\n   *\n   * ```markdown\n   * > | `a`\n   *      ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function between(code) {\n    // EOF.\n    if (code === null) {\n      return nok(code);\n    }\n\n    // To do: next major: don\u2019t do spaces in resolve, but when compiling,\n    // like `markdown-rs`.\n    // Tabs don\u2019t work, and virtual spaces don\u2019t make sense.\n    if (code === 32) {\n      effects.enter('space');\n      effects.consume(code);\n      effects.exit('space');\n      return between;\n    }\n\n    // Closing fence? Could also be data.\n    if (code === 96) {\n      token = effects.enter(\"codeTextSequence\");\n      size = 0;\n      return sequenceClose(code);\n    }\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return between;\n    }\n\n    // Data.\n    effects.enter(\"codeTextData\");\n    return data(code);\n  }\n\n  /**\n   * In data.\n   *\n   * ```markdown\n   * > | `a`\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function data(code) {\n    if (code === null || code === 32 || code === 96 || markdownLineEnding(code)) {\n      effects.exit(\"codeTextData\");\n      return between(code);\n    }\n    effects.consume(code);\n    return data;\n  }\n\n  /**\n   * In closing sequence.\n   *\n   * ```markdown\n   * > | `a`\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceClose(code) {\n    // More.\n    if (code === 96) {\n      effects.consume(code);\n      size++;\n      return sequenceClose;\n    }\n\n    // Done!\n    if (size === sizeOpen) {\n      effects.exit(\"codeTextSequence\");\n      effects.exit(\"codeText\");\n      return ok(code);\n    }\n\n    // More or less accents: mark as data.\n    token.type = \"codeTextData\";\n    return data(code);\n  }\n}", "/**\n * Some of the internal operations of micromark do lots of editing\n * operations on very large arrays. This runs into problems with two\n * properties of most circa-2020 JavaScript interpreters:\n *\n *  - Array-length modifications at the high end of an array (push/pop) are\n *    expected to be common and are implemented in (amortized) time\n *    proportional to the number of elements added or removed, whereas\n *    other operations (shift/unshift and splice) are much less efficient.\n *  - Function arguments are passed on the stack, so adding tens of thousands\n *    of elements to an array with `arr.push(...newElements)` will frequently\n *    cause stack overflows. (see <https://stackoverflow.com/questions/22123769/rangeerror-maximum-call-stack-size-exceeded-why>)\n *\n * SpliceBuffers are an implementation of gap buffers, which are a\n * generalization of the \"queue made of two stacks\" idea. The splice buffer\n * maintains a cursor, and moving the cursor has cost proportional to the\n * distance the cursor moves, but inserting, deleting, or splicing in\n * new information at the cursor is as efficient as the push/pop operation.\n * This allows for an efficient sequence of splices (or pushes, pops, shifts,\n * or unshifts) as long such edits happen at the same part of the array or\n * generally sweep through the array from the beginning to the end.\n *\n * The interface for splice buffers also supports large numbers of inputs by\n * passing a single array argument rather passing multiple arguments on the\n * function call stack.\n *\n * @template T\n *   Item type.\n */\nexport class SpliceBuffer {\n  /**\n   * @param {ReadonlyArray<T> | null | undefined} [initial]\n   *   Initial items (optional).\n   * @returns\n   *   Splice buffer.\n   */\n  constructor(initial) {\n    /** @type {Array<T>} */\n    this.left = initial ? [...initial] : [];\n    /** @type {Array<T>} */\n    this.right = [];\n  }\n\n  /**\n   * Array access;\n   * does not move the cursor.\n   *\n   * @param {number} index\n   *   Index.\n   * @return {T}\n   *   Item.\n   */\n  get(index) {\n    if (index < 0 || index >= this.left.length + this.right.length) {\n      throw new RangeError('Cannot access index `' + index + '` in a splice buffer of size `' + (this.left.length + this.right.length) + '`');\n    }\n    if (index < this.left.length) return this.left[index];\n    return this.right[this.right.length - index + this.left.length - 1];\n  }\n\n  /**\n   * The length of the splice buffer, one greater than the largest index in the\n   * array.\n   */\n  get length() {\n    return this.left.length + this.right.length;\n  }\n\n  /**\n   * Remove and return `list[0]`;\n   * moves the cursor to `0`.\n   *\n   * @returns {T | undefined}\n   *   Item, optional.\n   */\n  shift() {\n    this.setCursor(0);\n    return this.right.pop();\n  }\n\n  /**\n   * Slice the buffer to get an array;\n   * does not move the cursor.\n   *\n   * @param {number} start\n   *   Start.\n   * @param {number | null | undefined} [end]\n   *   End (optional).\n   * @returns {Array<T>}\n   *   Array of items.\n   */\n  slice(start, end) {\n    /** @type {number} */\n    const stop = end === null || end === undefined ? Number.POSITIVE_INFINITY : end;\n    if (stop < this.left.length) {\n      return this.left.slice(start, stop);\n    }\n    if (start > this.left.length) {\n      return this.right.slice(this.right.length - stop + this.left.length, this.right.length - start + this.left.length).reverse();\n    }\n    return this.left.slice(start).concat(this.right.slice(this.right.length - stop + this.left.length).reverse());\n  }\n\n  /**\n   * Mimics the behavior of Array.prototype.splice() except for the change of\n   * interface necessary to avoid segfaults when patching in very large arrays.\n   *\n   * This operation moves cursor is moved to `start` and results in the cursor\n   * placed after any inserted items.\n   *\n   * @param {number} start\n   *   Start;\n   *   zero-based index at which to start changing the array;\n   *   negative numbers count backwards from the end of the array and values\n   *   that are out-of bounds are clamped to the appropriate end of the array.\n   * @param {number | null | undefined} [deleteCount=0]\n   *   Delete count (default: `0`);\n   *   maximum number of elements to delete, starting from start.\n   * @param {Array<T> | null | undefined} [items=[]]\n   *   Items to include in place of the deleted items (default: `[]`).\n   * @return {Array<T>}\n   *   Any removed items.\n   */\n  splice(start, deleteCount, items) {\n    /** @type {number} */\n    const count = deleteCount || 0;\n    this.setCursor(Math.trunc(start));\n    const removed = this.right.splice(this.right.length - count, Number.POSITIVE_INFINITY);\n    if (items) chunkedPush(this.left, items);\n    return removed.reverse();\n  }\n\n  /**\n   * Remove and return the highest-numbered item in the array, so\n   * `list[list.length - 1]`;\n   * Moves the cursor to `length`.\n   *\n   * @returns {T | undefined}\n   *   Item, optional.\n   */\n  pop() {\n    this.setCursor(Number.POSITIVE_INFINITY);\n    return this.left.pop();\n  }\n\n  /**\n   * Inserts a single item to the high-numbered side of the array;\n   * moves the cursor to `length`.\n   *\n   * @param {T} item\n   *   Item.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  push(item) {\n    this.setCursor(Number.POSITIVE_INFINITY);\n    this.left.push(item);\n  }\n\n  /**\n   * Inserts many items to the high-numbered side of the array.\n   * Moves the cursor to `length`.\n   *\n   * @param {Array<T>} items\n   *   Items.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  pushMany(items) {\n    this.setCursor(Number.POSITIVE_INFINITY);\n    chunkedPush(this.left, items);\n  }\n\n  /**\n   * Inserts a single item to the low-numbered side of the array;\n   * Moves the cursor to `0`.\n   *\n   * @param {T} item\n   *   Item.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  unshift(item) {\n    this.setCursor(0);\n    this.right.push(item);\n  }\n\n  /**\n   * Inserts many items to the low-numbered side of the array;\n   * moves the cursor to `0`.\n   *\n   * @param {Array<T>} items\n   *   Items.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  unshiftMany(items) {\n    this.setCursor(0);\n    chunkedPush(this.right, items.reverse());\n  }\n\n  /**\n   * Move the cursor to a specific position in the array. Requires\n   * time proportional to the distance moved.\n   *\n   * If `n < 0`, the cursor will end up at the beginning.\n   * If `n > length`, the cursor will end up at the end.\n   *\n   * @param {number} n\n   *   Position.\n   * @return {undefined}\n   *   Nothing.\n   */\n  setCursor(n) {\n    if (n === this.left.length || n > this.left.length && this.right.length === 0 || n < 0 && this.left.length === 0) return;\n    if (n < this.left.length) {\n      // Move cursor to the this.left\n      const removed = this.left.splice(n, Number.POSITIVE_INFINITY);\n      chunkedPush(this.right, removed.reverse());\n    } else {\n      // Move cursor to the this.right\n      const removed = this.right.splice(this.left.length + this.right.length - n, Number.POSITIVE_INFINITY);\n      chunkedPush(this.left, removed.reverse());\n    }\n  }\n}\n\n/**\n * Avoid stack overflow by pushing items onto the stack in segments\n *\n * @template T\n *   Item type.\n * @param {Array<T>} list\n *   List to inject into.\n * @param {ReadonlyArray<T>} right\n *   Items to inject.\n * @return {undefined}\n *   Nothing.\n */\nfunction chunkedPush(list, right) {\n  /** @type {number} */\n  let chunkStart = 0;\n  if (right.length < 10000) {\n    list.push(...right);\n  } else {\n    while (chunkStart < right.length) {\n      list.push(...right.slice(chunkStart, chunkStart + 10000));\n      chunkStart += 10000;\n    }\n  }\n}", "/**\n * @import {Chunk, Event, Token} from 'micromark-util-types'\n */\n\nimport { splice } from 'micromark-util-chunked';\nimport { SpliceBuffer } from './lib/splice-buffer.js';\n\n// Hidden API exposed for testing.\nexport { SpliceBuffer } from './lib/splice-buffer.js';\n\n/**\n * Tokenize subcontent.\n *\n * @param {Array<Event>} eventsArray\n *   List of events.\n * @returns {boolean}\n *   Whether subtokens were found.\n */\n// eslint-disable-next-line complexity\nexport function subtokenize(eventsArray) {\n  /** @type {Record<string, number>} */\n  const jumps = {};\n  let index = -1;\n  /** @type {Event} */\n  let event;\n  /** @type {number | undefined} */\n  let lineIndex;\n  /** @type {number} */\n  let otherIndex;\n  /** @type {Event} */\n  let otherEvent;\n  /** @type {Array<Event>} */\n  let parameters;\n  /** @type {Array<Event>} */\n  let subevents;\n  /** @type {boolean | undefined} */\n  let more;\n  const events = new SpliceBuffer(eventsArray);\n  while (++index < events.length) {\n    while (index in jumps) {\n      index = jumps[index];\n    }\n    event = events.get(index);\n\n    // Add a hook for the GFM tasklist extension, which needs to know if text\n    // is in the first content of a list item.\n    if (index && event[1].type === \"chunkFlow\" && events.get(index - 1)[1].type === \"listItemPrefix\") {\n      subevents = event[1]._tokenizer.events;\n      otherIndex = 0;\n      if (otherIndex < subevents.length && subevents[otherIndex][1].type === \"lineEndingBlank\") {\n        otherIndex += 2;\n      }\n      if (otherIndex < subevents.length && subevents[otherIndex][1].type === \"content\") {\n        while (++otherIndex < subevents.length) {\n          if (subevents[otherIndex][1].type === \"content\") {\n            break;\n          }\n          if (subevents[otherIndex][1].type === \"chunkText\") {\n            subevents[otherIndex][1]._isInFirstContentOfListItem = true;\n            otherIndex++;\n          }\n        }\n      }\n    }\n\n    // Enter.\n    if (event[0] === 'enter') {\n      if (event[1].contentType) {\n        Object.assign(jumps, subcontent(events, index));\n        index = jumps[index];\n        more = true;\n      }\n    }\n    // Exit.\n    else if (event[1]._container) {\n      otherIndex = index;\n      lineIndex = undefined;\n      while (otherIndex--) {\n        otherEvent = events.get(otherIndex);\n        if (otherEvent[1].type === \"lineEnding\" || otherEvent[1].type === \"lineEndingBlank\") {\n          if (otherEvent[0] === 'enter') {\n            if (lineIndex) {\n              events.get(lineIndex)[1].type = \"lineEndingBlank\";\n            }\n            otherEvent[1].type = \"lineEnding\";\n            lineIndex = otherIndex;\n          }\n        } else if (otherEvent[1].type === \"linePrefix\" || otherEvent[1].type === \"listItemIndent\") {\n          // Move past.\n        } else {\n          break;\n        }\n      }\n      if (lineIndex) {\n        // Fix position.\n        event[1].end = {\n          ...events.get(lineIndex)[1].start\n        };\n\n        // Switch container exit w/ line endings.\n        parameters = events.slice(lineIndex, index);\n        parameters.unshift(event);\n        events.splice(lineIndex, index - lineIndex + 1, parameters);\n      }\n    }\n  }\n\n  // The changes to the `events` buffer must be copied back into the eventsArray\n  splice(eventsArray, 0, Number.POSITIVE_INFINITY, events.slice(0));\n  return !more;\n}\n\n/**\n * Tokenize embedded tokens.\n *\n * @param {SpliceBuffer<Event>} events\n *   Events.\n * @param {number} eventIndex\n *   Index.\n * @returns {Record<string, number>}\n *   Gaps.\n */\nfunction subcontent(events, eventIndex) {\n  const token = events.get(eventIndex)[1];\n  const context = events.get(eventIndex)[2];\n  let startPosition = eventIndex - 1;\n  /** @type {Array<number>} */\n  const startPositions = [];\n  let tokenizer = token._tokenizer;\n  if (!tokenizer) {\n    tokenizer = context.parser[token.contentType](token.start);\n    if (token._contentTypeTextTrailing) {\n      tokenizer._contentTypeTextTrailing = true;\n    }\n  }\n  const childEvents = tokenizer.events;\n  /** @type {Array<[number, number]>} */\n  const jumps = [];\n  /** @type {Record<string, number>} */\n  const gaps = {};\n  /** @type {Array<Chunk>} */\n  let stream;\n  /** @type {Token | undefined} */\n  let previous;\n  let index = -1;\n  /** @type {Token | undefined} */\n  let current = token;\n  let adjust = 0;\n  let start = 0;\n  const breaks = [start];\n\n  // Loop forward through the linked tokens to pass them in order to the\n  // subtokenizer.\n  while (current) {\n    // Find the position of the event for this token.\n    while (events.get(++startPosition)[1] !== current) {\n      // Empty.\n    }\n    startPositions.push(startPosition);\n    if (!current._tokenizer) {\n      stream = context.sliceStream(current);\n      if (!current.next) {\n        stream.push(null);\n      }\n      if (previous) {\n        tokenizer.defineSkip(current.start);\n      }\n      if (current._isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = true;\n      }\n      tokenizer.write(stream);\n      if (current._isInFirstContentOfListItem) {\n        tokenizer._gfmTasklistFirstContentOfListItem = undefined;\n      }\n    }\n\n    // Unravel the next token.\n    previous = current;\n    current = current.next;\n  }\n\n  // Now, loop back through all events (and linked tokens), to figure out which\n  // parts belong where.\n  current = token;\n  while (++index < childEvents.length) {\n    if (\n    // Find a void token that includes a break.\n    childEvents[index][0] === 'exit' && childEvents[index - 1][0] === 'enter' && childEvents[index][1].type === childEvents[index - 1][1].type && childEvents[index][1].start.line !== childEvents[index][1].end.line) {\n      start = index + 1;\n      breaks.push(start);\n      // Help GC.\n      current._tokenizer = undefined;\n      current.previous = undefined;\n      current = current.next;\n    }\n  }\n\n  // Help GC.\n  tokenizer.events = [];\n\n  // If there\u2019s one more token (which is the cases for lines that end in an\n  // EOF), that\u2019s perfect: the last point we found starts it.\n  // If there isn\u2019t then make sure any remaining content is added to it.\n  if (current) {\n    // Help GC.\n    current._tokenizer = undefined;\n    current.previous = undefined;\n  } else {\n    breaks.pop();\n  }\n\n  // Now splice the events from the subtokenizer into the current events,\n  // moving back to front so that splice indices aren\u2019t affected.\n  index = breaks.length;\n  while (index--) {\n    const slice = childEvents.slice(breaks[index], breaks[index + 1]);\n    const start = startPositions.pop();\n    jumps.push([start, start + slice.length - 1]);\n    events.splice(start, 2, slice);\n  }\n  jumps.reverse();\n  index = -1;\n  while (++index < jumps.length) {\n    gaps[adjust + jumps[index][0]] = adjust + jumps[index][1];\n    adjust += jumps[index][1] - jumps[index][0] - 1;\n  }\n  return gaps;\n}", "/**\n * @import {\n *   Construct,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { subtokenize } from 'micromark-util-subtokenize';\n/**\n * No name because it must not be turned off.\n * @type {Construct}\n */\nexport const content = {\n  resolve: resolveContent,\n  tokenize: tokenizeContent\n};\n\n/** @type {Construct} */\nconst continuationConstruct = {\n  partial: true,\n  tokenize: tokenizeContinuation\n};\n\n/**\n * Content is transparent: it\u2019s parsed right now. That way, definitions are also\n * parsed right now: before text in paragraphs (specifically, media) are parsed.\n *\n * @type {Resolver}\n */\nfunction resolveContent(events) {\n  subtokenize(events);\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeContent(effects, ok) {\n  /** @type {Token | undefined} */\n  let previous;\n  return chunkStart;\n\n  /**\n   * Before a content chunk.\n   *\n   * ```markdown\n   * > | abc\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function chunkStart(code) {\n    effects.enter(\"content\");\n    previous = effects.enter(\"chunkContent\", {\n      contentType: \"content\"\n    });\n    return chunkInside(code);\n  }\n\n  /**\n   * In a content chunk.\n   *\n   * ```markdown\n   * > | abc\n   *     ^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function chunkInside(code) {\n    if (code === null) {\n      return contentEnd(code);\n    }\n\n    // To do: in `markdown-rs`, each line is parsed on its own, and everything\n    // is stitched together resolving.\n    if (markdownLineEnding(code)) {\n      return effects.check(continuationConstruct, contentContinue, contentEnd)(code);\n    }\n\n    // Data.\n    effects.consume(code);\n    return chunkInside;\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function contentEnd(code) {\n    effects.exit(\"chunkContent\");\n    effects.exit(\"content\");\n    return ok(code);\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function contentContinue(code) {\n    effects.consume(code);\n    effects.exit(\"chunkContent\");\n    previous.next = effects.enter(\"chunkContent\", {\n      contentType: \"content\",\n      previous\n    });\n    previous = previous.next;\n    return chunkInside;\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeContinuation(effects, ok, nok) {\n  const self = this;\n  return startLookahead;\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function startLookahead(code) {\n    effects.exit(\"chunkContent\");\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return factorySpace(effects, prefixed, \"linePrefix\");\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function prefixed(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return nok(code);\n    }\n\n    // Always populated by defaults.\n\n    const tail = self.events[self.events.length - 1];\n    if (!self.parser.constructs.disable.null.includes('codeIndented') && tail && tail[1].type === \"linePrefix\" && tail[2].sliceSerialize(tail[1], true).length >= 4) {\n      return ok(code);\n    }\n    return effects.interrupt(self.parser.constructs.flow, nok, ok)(code);\n  }\n}", "/**\n * @import {Effects, State, TokenType} from 'micromark-util-types'\n */\n\nimport { asciiControl, markdownLineEndingOrSpace, markdownLineEnding } from 'micromark-util-character';\n/**\n * Parse destinations.\n *\n * ###### Examples\n *\n * ```markdown\n * <a>\n * <a\\>b>\n * <a b>\n * <a)>\n * a\n * a\\)b\n * a(b)c\n * a(b)\n * ```\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {State} nok\n *   State switched to when unsuccessful.\n * @param {TokenType} type\n *   Type for whole (`<a>` or `b`).\n * @param {TokenType} literalType\n *   Type when enclosed (`<a>`).\n * @param {TokenType} literalMarkerType\n *   Type for enclosing (`<` and `>`).\n * @param {TokenType} rawType\n *   Type when not enclosed (`b`).\n * @param {TokenType} stringType\n *   Type for the value (`a` or `b`).\n * @param {number | undefined} [max=Infinity]\n *   Depth of nested parens (inclusive).\n * @returns {State}\n *   Start state.\n */\nexport function factoryDestination(effects, ok, nok, type, literalType, literalMarkerType, rawType, stringType, max) {\n  const limit = max || Number.POSITIVE_INFINITY;\n  let balance = 0;\n  return start;\n\n  /**\n   * Start of destination.\n   *\n   * ```markdown\n   * > | <aa>\n   *     ^\n   * > | aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === 60) {\n      effects.enter(type);\n      effects.enter(literalType);\n      effects.enter(literalMarkerType);\n      effects.consume(code);\n      effects.exit(literalMarkerType);\n      return enclosedBefore;\n    }\n\n    // ASCII control, space, closing paren.\n    if (code === null || code === 32 || code === 41 || asciiControl(code)) {\n      return nok(code);\n    }\n    effects.enter(type);\n    effects.enter(rawType);\n    effects.enter(stringType);\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return raw(code);\n  }\n\n  /**\n   * After `<`, at an enclosed destination.\n   *\n   * ```markdown\n   * > | <aa>\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function enclosedBefore(code) {\n    if (code === 62) {\n      effects.enter(literalMarkerType);\n      effects.consume(code);\n      effects.exit(literalMarkerType);\n      effects.exit(literalType);\n      effects.exit(type);\n      return ok;\n    }\n    effects.enter(stringType);\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return enclosed(code);\n  }\n\n  /**\n   * In enclosed destination.\n   *\n   * ```markdown\n   * > | <aa>\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function enclosed(code) {\n    if (code === 62) {\n      effects.exit(\"chunkString\");\n      effects.exit(stringType);\n      return enclosedBefore(code);\n    }\n    if (code === null || code === 60 || markdownLineEnding(code)) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return code === 92 ? enclosedEscape : enclosed;\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * ```markdown\n   * > | <a\\*a>\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function enclosedEscape(code) {\n    if (code === 60 || code === 62 || code === 92) {\n      effects.consume(code);\n      return enclosed;\n    }\n    return enclosed(code);\n  }\n\n  /**\n   * In raw destination.\n   *\n   * ```markdown\n   * > | aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function raw(code) {\n    if (!balance && (code === null || code === 41 || markdownLineEndingOrSpace(code))) {\n      effects.exit(\"chunkString\");\n      effects.exit(stringType);\n      effects.exit(rawType);\n      effects.exit(type);\n      return ok(code);\n    }\n    if (balance < limit && code === 40) {\n      effects.consume(code);\n      balance++;\n      return raw;\n    }\n    if (code === 41) {\n      effects.consume(code);\n      balance--;\n      return raw;\n    }\n\n    // ASCII control (but *not* `\\0`) and space and `(`.\n    // Note: in `markdown-rs`, `\\0` exists in codes, in `micromark-js` it\n    // doesn\u2019t.\n    if (code === null || code === 32 || code === 40 || asciiControl(code)) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return code === 92 ? rawEscape : raw;\n  }\n\n  /**\n   * After `\\`, at special character.\n   *\n   * ```markdown\n   * > | a\\*a\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function rawEscape(code) {\n    if (code === 40 || code === 41 || code === 92) {\n      effects.consume(code);\n      return raw;\n    }\n    return raw(code);\n  }\n}", "/**\n * @import {\n *   Effects,\n *   State,\n *   TokenizeContext,\n *   TokenType\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/**\n * Parse labels.\n *\n * > \uD83D\uDC49 **Note**: labels in markdown are capped at 999 characters in the string.\n *\n * ###### Examples\n *\n * ```markdown\n * [a]\n * [a\n * b]\n * [a\\]b]\n * ```\n *\n * @this {TokenizeContext}\n *   Tokenize context.\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {State} nok\n *   State switched to when unsuccessful.\n * @param {TokenType} type\n *   Type of the whole label (`[a]`).\n * @param {TokenType} markerType\n *   Type for the markers (`[` and `]`).\n * @param {TokenType} stringType\n *   Type for the identifier (`a`).\n * @returns {State}\n *   Start state.\n */\nexport function factoryLabel(effects, ok, nok, type, markerType, stringType) {\n  const self = this;\n  let size = 0;\n  /** @type {boolean} */\n  let seen;\n  return start;\n\n  /**\n   * Start of label.\n   *\n   * ```markdown\n   * > | [a]\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(type);\n    effects.enter(markerType);\n    effects.consume(code);\n    effects.exit(markerType);\n    effects.enter(stringType);\n    return atBreak;\n  }\n\n  /**\n   * In label, at something, before something else.\n   *\n   * ```markdown\n   * > | [a]\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (size > 999 || code === null || code === 91 || code === 93 && !seen ||\n    // To do: remove in the future once we\u2019ve switched from\n    // `micromark-extension-footnote` to `micromark-extension-gfm-footnote`,\n    // which doesn\u2019t need this.\n    // Hidden footnotes hook.\n    /* c8 ignore next 3 */\n    code === 94 && !size && '_hiddenFootnoteSupport' in self.parser.constructs) {\n      return nok(code);\n    }\n    if (code === 93) {\n      effects.exit(stringType);\n      effects.enter(markerType);\n      effects.consume(code);\n      effects.exit(markerType);\n      effects.exit(type);\n      return ok;\n    }\n\n    // To do: indent? Link chunks and EOLs together?\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return atBreak;\n    }\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return labelInside(code);\n  }\n\n  /**\n   * In label, in text.\n   *\n   * ```markdown\n   * > | [a]\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelInside(code) {\n    if (code === null || code === 91 || code === 93 || markdownLineEnding(code) || size++ > 999) {\n      effects.exit(\"chunkString\");\n      return atBreak(code);\n    }\n    effects.consume(code);\n    if (!seen) seen = !markdownSpace(code);\n    return code === 92 ? labelEscape : labelInside;\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * ```markdown\n   * > | [a\\*a]\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelEscape(code) {\n    if (code === 91 || code === 92 || code === 93) {\n      effects.consume(code);\n      size++;\n      return labelInside;\n    }\n    return labelInside(code);\n  }\n}", "/**\n * @import {\n *   Code,\n *   Effects,\n *   State,\n *   TokenType\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/**\n * Parse titles.\n *\n * ###### Examples\n *\n * ```markdown\n * \"a\"\n * 'b'\n * (c)\n * \"a\n * b\"\n * 'a\n *     b'\n * (a\\)b)\n * ```\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @param {State} nok\n *   State switched to when unsuccessful.\n * @param {TokenType} type\n *   Type of the whole title (`\"a\"`, `'b'`, `(c)`).\n * @param {TokenType} markerType\n *   Type for the markers (`\"`, `'`, `(`, and `)`).\n * @param {TokenType} stringType\n *   Type for the value (`a`).\n * @returns {State}\n *   Start state.\n */\nexport function factoryTitle(effects, ok, nok, type, markerType, stringType) {\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * Start of title.\n   *\n   * ```markdown\n   * > | \"a\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (code === 34 || code === 39 || code === 40) {\n      effects.enter(type);\n      effects.enter(markerType);\n      effects.consume(code);\n      effects.exit(markerType);\n      marker = code === 40 ? 41 : code;\n      return begin;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After opening marker.\n   *\n   * This is also used at the closing marker.\n   *\n   * ```markdown\n   * > | \"a\"\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function begin(code) {\n    if (code === marker) {\n      effects.enter(markerType);\n      effects.consume(code);\n      effects.exit(markerType);\n      effects.exit(type);\n      return ok;\n    }\n    effects.enter(stringType);\n    return atBreak(code);\n  }\n\n  /**\n   * At something, before something else.\n   *\n   * ```markdown\n   * > | \"a\"\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === marker) {\n      effects.exit(stringType);\n      return begin(marker);\n    }\n    if (code === null) {\n      return nok(code);\n    }\n\n    // Note: blank lines can\u2019t exist in content.\n    if (markdownLineEnding(code)) {\n      // To do: use `space_or_tab_eol_with_options`, connect.\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      return factorySpace(effects, atBreak, \"linePrefix\");\n    }\n    effects.enter(\"chunkString\", {\n      contentType: \"string\"\n    });\n    return inside(code);\n  }\n\n  /**\n   *\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === marker || code === null || markdownLineEnding(code)) {\n      effects.exit(\"chunkString\");\n      return atBreak(code);\n    }\n    effects.consume(code);\n    return code === 92 ? escape : inside;\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * ```markdown\n   * > | \"a\\*b\"\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function escape(code) {\n    if (code === marker || code === 92) {\n      effects.consume(code);\n      return inside;\n    }\n    return inside(code);\n  }\n}", "/**\n * @import {Effects, State} from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/**\n * Parse spaces and tabs.\n *\n * There is no `nok` parameter:\n *\n * *   line endings or spaces in markdown are often optional, in which case this\n *     factory can be used and `ok` will be switched to whether spaces were found\n *     or not\n * *   one line ending or space can be detected with\n *     `markdownLineEndingOrSpace(code)` right before using `factoryWhitespace`\n *\n * @param {Effects} effects\n *   Context.\n * @param {State} ok\n *   State switched to when successful.\n * @returns {State}\n *   Start state.\n */\nexport function factoryWhitespace(effects, ok) {\n  /** @type {boolean} */\n  let seen;\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    if (markdownLineEnding(code)) {\n      effects.enter(\"lineEnding\");\n      effects.consume(code);\n      effects.exit(\"lineEnding\");\n      seen = true;\n      return start;\n    }\n    if (markdownSpace(code)) {\n      return factorySpace(effects, start, seen ? \"linePrefix\" : \"lineSuffix\")(code);\n    }\n    return ok(code);\n  }\n}", "/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factorySpace } from 'micromark-factory-space';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\n/** @type {Construct} */\nexport const definition = {\n  name: 'definition',\n  tokenize: tokenizeDefinition\n};\n\n/** @type {Construct} */\nconst titleBefore = {\n  partial: true,\n  tokenize: tokenizeTitleBefore\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeDefinition(effects, ok, nok) {\n  const self = this;\n  /** @type {string} */\n  let identifier;\n  return start;\n\n  /**\n   * At start of a definition.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // Do not interrupt paragraphs (but do follow definitions).\n    // To do: do `interrupt` the way `markdown-rs` does.\n    // To do: parse whitespace the way `markdown-rs` does.\n    effects.enter(\"definition\");\n    return before(code);\n  }\n\n  /**\n   * After optional whitespace, at `[`.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    // To do: parse whitespace the way `markdown-rs` does.\n\n    return factoryLabel.call(self, effects, labelAfter,\n    // Note: we don\u2019t need to reset the way `markdown-rs` does.\n    nok, \"definitionLabel\", \"definitionLabelMarker\", \"definitionLabelString\")(code);\n  }\n\n  /**\n   * After label.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelAfter(code) {\n    identifier = normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1));\n    if (code === 58) {\n      effects.enter(\"definitionMarker\");\n      effects.consume(code);\n      effects.exit(\"definitionMarker\");\n      return markerAfter;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After marker.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function markerAfter(code) {\n    // Note: whitespace is optional.\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, destinationBefore)(code) : destinationBefore(code);\n  }\n\n  /**\n   * Before destination.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function destinationBefore(code) {\n    return factoryDestination(effects, destinationAfter,\n    // Note: we don\u2019t need to reset the way `markdown-rs` does.\n    nok, \"definitionDestination\", \"definitionDestinationLiteral\", \"definitionDestinationLiteralMarker\", \"definitionDestinationRaw\", \"definitionDestinationString\")(code);\n  }\n\n  /**\n   * After destination.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function destinationAfter(code) {\n    return effects.attempt(titleBefore, after, after)(code);\n  }\n\n  /**\n   * After definition.\n   *\n   * ```markdown\n   * > | [a]: b\n   *           ^\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    return markdownSpace(code) ? factorySpace(effects, afterWhitespace, \"whitespace\")(code) : afterWhitespace(code);\n  }\n\n  /**\n   * After definition, after optional whitespace.\n   *\n   * ```markdown\n   * > | [a]: b\n   *           ^\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function afterWhitespace(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"definition\");\n\n      // Note: we don\u2019t care about uniqueness.\n      // It\u2019s likely that that doesn\u2019t happen very frequently.\n      // It is more likely that it wastes precious time.\n      self.parser.defined.push(identifier);\n\n      // To do: `markdown-rs` interrupt.\n      // // You\u2019d be interrupting.\n      // tokenizer.interrupt = true\n      return ok(code);\n    }\n    return nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeTitleBefore(effects, ok, nok) {\n  return titleBefore;\n\n  /**\n   * After destination, at whitespace.\n   *\n   * ```markdown\n   * > | [a]: b\n   *           ^\n   * > | [a]: b \"c\"\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function titleBefore(code) {\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, beforeMarker)(code) : nok(code);\n  }\n\n  /**\n   * At title.\n   *\n   * ```markdown\n   *   | [a]: b\n   * > | \"c\"\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function beforeMarker(code) {\n    return factoryTitle(effects, titleAfter, nok, \"definitionTitle\", \"definitionTitleMarker\", \"definitionTitleString\")(code);\n  }\n\n  /**\n   * After title.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function titleAfter(code) {\n    return markdownSpace(code) ? factorySpace(effects, titleAfterOptionalWhitespace, \"whitespace\")(code) : titleAfterOptionalWhitespace(code);\n  }\n\n  /**\n   * After title, after optional whitespace.\n   *\n   * ```markdown\n   * > | [a]: b \"c\"\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function titleAfterOptionalWhitespace(code) {\n    return code === null || markdownLineEnding(code) ? ok(code) : nok(code);\n  }\n}", "/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const hardBreakEscape = {\n  name: 'hardBreakEscape',\n  tokenize: tokenizeHardBreakEscape\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHardBreakEscape(effects, ok, nok) {\n  return start;\n\n  /**\n   * Start of a hard break (escape).\n   *\n   * ```markdown\n   * > | a\\\n   *      ^\n   *   | b\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"hardBreakEscape\");\n    effects.consume(code);\n    return after;\n  }\n\n  /**\n   * After `\\`, at eol.\n   *\n   * ```markdown\n   * > | a\\\n   *       ^\n   *   | b\n   * ```\n   *\n   *  @type {State}\n   */\n  function after(code) {\n    if (markdownLineEnding(code)) {\n      effects.exit(\"hardBreakEscape\");\n      return ok(code);\n    }\n    return nok(code);\n  }\n}", "/**\n * @import {\n *   Construct,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { splice } from 'micromark-util-chunked';\n/** @type {Construct} */\nexport const headingAtx = {\n  name: 'headingAtx',\n  resolve: resolveHeadingAtx,\n  tokenize: tokenizeHeadingAtx\n};\n\n/** @type {Resolver} */\nfunction resolveHeadingAtx(events, context) {\n  let contentEnd = events.length - 2;\n  let contentStart = 3;\n\n  // Prefix whitespace, part of the opening.\n  if (events[contentStart][1].type === \"whitespace\") {\n    contentStart += 2;\n  }\n\n  // Suffix whitespace, part of the closing.\n  if (contentEnd - 2 > contentStart && events[contentEnd][1].type === \"whitespace\") {\n    contentEnd -= 2;\n  }\n  if (events[contentEnd][1].type === \"atxHeadingSequence\" && (contentStart === contentEnd - 1 || contentEnd - 4 > contentStart && events[contentEnd - 2][1].type === \"whitespace\")) {\n    contentEnd -= contentStart + 1 === contentEnd ? 2 : 4;\n  }\n  if (contentEnd > contentStart) {\n    const content = {\n      type: \"atxHeadingText\",\n      start: events[contentStart][1].start,\n      end: events[contentEnd][1].end\n    };\n    const text = {\n      type: \"chunkText\",\n      start: events[contentStart][1].start,\n      end: events[contentEnd][1].end,\n      contentType: \"text\"\n    };\n    splice(events, contentStart, contentEnd - contentStart + 1, [['enter', content, context], ['enter', text, context], ['exit', text, context], ['exit', content, context]]);\n  }\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHeadingAtx(effects, ok, nok) {\n  let size = 0;\n  return start;\n\n  /**\n   * Start of a heading (atx).\n   *\n   * ```markdown\n   * > | ## aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: parse indent like `markdown-rs`.\n    effects.enter(\"atxHeading\");\n    return before(code);\n  }\n\n  /**\n   * After optional whitespace, at `#`.\n   *\n   * ```markdown\n   * > | ## aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    effects.enter(\"atxHeadingSequence\");\n    return sequenceOpen(code);\n  }\n\n  /**\n   * In opening sequence.\n   *\n   * ```markdown\n   * > | ## aa\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceOpen(code) {\n    if (code === 35 && size++ < 6) {\n      effects.consume(code);\n      return sequenceOpen;\n    }\n\n    // Always at least one `#`.\n    if (code === null || markdownLineEndingOrSpace(code)) {\n      effects.exit(\"atxHeadingSequence\");\n      return atBreak(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * After something, before something else.\n   *\n   * ```markdown\n   * > | ## aa\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === 35) {\n      effects.enter(\"atxHeadingSequence\");\n      return sequenceFurther(code);\n    }\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"atxHeading\");\n      // To do: interrupt like `markdown-rs`.\n      // // Feel free to interrupt.\n      // tokenizer.interrupt = false\n      return ok(code);\n    }\n    if (markdownSpace(code)) {\n      return factorySpace(effects, atBreak, \"whitespace\")(code);\n    }\n\n    // To do: generate `data` tokens, add the `text` token later.\n    // Needs edit map, see: `markdown.rs`.\n    effects.enter(\"atxHeadingText\");\n    return data(code);\n  }\n\n  /**\n   * In further sequence (after whitespace).\n   *\n   * Could be normal \u201Cvisible\u201D hashes in the heading or a final sequence.\n   *\n   * ```markdown\n   * > | ## aa ##\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequenceFurther(code) {\n    if (code === 35) {\n      effects.consume(code);\n      return sequenceFurther;\n    }\n    effects.exit(\"atxHeadingSequence\");\n    return atBreak(code);\n  }\n\n  /**\n   * In text.\n   *\n   * ```markdown\n   * > | ## aa\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function data(code) {\n    if (code === null || code === 35 || markdownLineEndingOrSpace(code)) {\n      effects.exit(\"atxHeadingText\");\n      return atBreak(code);\n    }\n    effects.consume(code);\n    return data;\n  }\n}", "/**\n * List of lowercase HTML \u201Cblock\u201D tag names.\n *\n * The list, when parsing HTML (flow), results in more relaxed rules (condition\n * 6).\n * Because they are known blocks, the HTML-like syntax doesn\u2019t have to be\n * strictly parsed.\n * For tag names not in this list, a more strict algorithm (condition 7) is used\n * to detect whether the HTML-like syntax is seen as HTML (flow) or not.\n *\n * This is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * > \uD83D\uDC49 **Note**: `search` was added in `CommonMark@0.31`.\n */\nexport const htmlBlockNames = [\n  'address',\n  'article',\n  'aside',\n  'base',\n  'basefont',\n  'blockquote',\n  'body',\n  'caption',\n  'center',\n  'col',\n  'colgroup',\n  'dd',\n  'details',\n  'dialog',\n  'dir',\n  'div',\n  'dl',\n  'dt',\n  'fieldset',\n  'figcaption',\n  'figure',\n  'footer',\n  'form',\n  'frame',\n  'frameset',\n  'h1',\n  'h2',\n  'h3',\n  'h4',\n  'h5',\n  'h6',\n  'head',\n  'header',\n  'hr',\n  'html',\n  'iframe',\n  'legend',\n  'li',\n  'link',\n  'main',\n  'menu',\n  'menuitem',\n  'nav',\n  'noframes',\n  'ol',\n  'optgroup',\n  'option',\n  'p',\n  'param',\n  'search',\n  'section',\n  'summary',\n  'table',\n  'tbody',\n  'td',\n  'tfoot',\n  'th',\n  'thead',\n  'title',\n  'tr',\n  'track',\n  'ul'\n]\n\n/**\n * List of lowercase HTML \u201Craw\u201D tag names.\n *\n * The list, when parsing HTML (flow), results in HTML that can include lines\n * without exiting, until a closing tag also in this list is found (condition\n * 1).\n *\n * This module is copied from:\n * <https://spec.commonmark.org/0.30/#html-blocks>.\n *\n * > \uD83D\uDC49 **Note**: `textarea` was added in `CommonMark@0.30`.\n */\nexport const htmlRawNames = ['pre', 'script', 'style', 'textarea']\n", "/**\n * @import {\n *   Code,\n *   Construct,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { asciiAlphanumeric, asciiAlpha, markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { htmlBlockNames, htmlRawNames } from 'micromark-util-html-tag-name';\nimport { blankLine } from './blank-line.js';\nimport { nonLazyContinuation } from './partial-non-lazy-continuation.js';\n\n/** @type {Construct} */\nexport const htmlFlow = {\n  concrete: true,\n  name: 'htmlFlow',\n  resolveTo: resolveToHtmlFlow,\n  tokenize: tokenizeHtmlFlow\n};\n\n/** @type {Construct} */\nconst blankLineBefore = {\n  partial: true,\n  tokenize: tokenizeBlankLineBefore\n};\n\n/** @type {Resolver} */\nfunction resolveToHtmlFlow(events) {\n  let index = events.length;\n  while (index--) {\n    if (events[index][0] === 'enter' && events[index][1].type === \"htmlFlow\") {\n      break;\n    }\n  }\n  if (index > 1 && events[index - 2][1].type === \"linePrefix\") {\n    // Add the prefix start to the HTML token.\n    events[index][1].start = events[index - 2][1].start;\n    // Add the prefix start to the HTML line token.\n    events[index + 1][1].start = events[index - 2][1].start;\n    // Remove the line prefix.\n    events.splice(index - 2, 2);\n  }\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlFlow(effects, ok, nok) {\n  const self = this;\n  /** @type {number} */\n  let marker;\n  /** @type {boolean} */\n  let closingTag;\n  /** @type {string} */\n  let buffer;\n  /** @type {number} */\n  let index;\n  /** @type {Code} */\n  let markerB;\n  return start;\n\n  /**\n   * Start of HTML (flow).\n   *\n   * ```markdown\n   * > | <x />\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // To do: parse indent like `markdown-rs`.\n    return before(code);\n  }\n\n  /**\n   * At `<`, after optional whitespace.\n   *\n   * ```markdown\n   * > | <x />\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    effects.enter(\"htmlFlow\");\n    effects.enter(\"htmlFlowData\");\n    effects.consume(code);\n    return open;\n  }\n\n  /**\n   * After `<`, at tag name or other stuff.\n   *\n   * ```markdown\n   * > | <x />\n   *      ^\n   * > | <!doctype>\n   *      ^\n   * > | <!--xxx-->\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 33) {\n      effects.consume(code);\n      return declarationOpen;\n    }\n    if (code === 47) {\n      effects.consume(code);\n      closingTag = true;\n      return tagCloseStart;\n    }\n    if (code === 63) {\n      effects.consume(code);\n      marker = 3;\n      // To do:\n      // tokenizer.concrete = true\n      // To do: use `markdown-rs` style interrupt.\n      // While we\u2019re in an instruction instead of a declaration, we\u2019re on a `?`\n      // right now, so we do need to search for `>`, similar to declarations.\n      return self.interrupt ? ok : continuationDeclarationInside;\n    }\n\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      // Always the case.\n      effects.consume(code);\n      buffer = String.fromCharCode(code);\n      return tagName;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `<!`, at declaration, comment, or CDATA.\n   *\n   * ```markdown\n   * > | <!doctype>\n   *       ^\n   * > | <!--xxx-->\n   *       ^\n   * > | <![CDATA[>&<]]>\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function declarationOpen(code) {\n    if (code === 45) {\n      effects.consume(code);\n      marker = 2;\n      return commentOpenInside;\n    }\n    if (code === 91) {\n      effects.consume(code);\n      marker = 5;\n      index = 0;\n      return cdataOpenInside;\n    }\n\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      marker = 4;\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return self.interrupt ? ok : continuationDeclarationInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `<!-`, inside a comment, at another `-`.\n   *\n   * ```markdown\n   * > | <!--xxx-->\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentOpenInside(code) {\n    if (code === 45) {\n      effects.consume(code);\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return self.interrupt ? ok : continuationDeclarationInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `<![`, inside CDATA, expecting `CDATA[`.\n   *\n   * ```markdown\n   * > | <![CDATA[>&<]]>\n   *        ^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataOpenInside(code) {\n    const value = \"CDATA[\";\n    if (code === value.charCodeAt(index++)) {\n      effects.consume(code);\n      if (index === value.length) {\n        // // Do not form containers.\n        // tokenizer.concrete = true\n        return self.interrupt ? ok : continuation;\n      }\n      return cdataOpenInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `</`, in closing tag, at tag name.\n   *\n   * ```markdown\n   * > | </x>\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagCloseStart(code) {\n    if (asciiAlpha(code)) {\n      // Always the case.\n      effects.consume(code);\n      buffer = String.fromCharCode(code);\n      return tagName;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In tag name.\n   *\n   * ```markdown\n   * > | <ab>\n   *      ^^\n   * > | </ab>\n   *       ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagName(code) {\n    if (code === null || code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      const slash = code === 47;\n      const name = buffer.toLowerCase();\n      if (!slash && !closingTag && htmlRawNames.includes(name)) {\n        marker = 1;\n        // // Do not form containers.\n        // tokenizer.concrete = true\n        return self.interrupt ? ok(code) : continuation(code);\n      }\n      if (htmlBlockNames.includes(buffer.toLowerCase())) {\n        marker = 6;\n        if (slash) {\n          effects.consume(code);\n          return basicSelfClosing;\n        }\n\n        // // Do not form containers.\n        // tokenizer.concrete = true\n        return self.interrupt ? ok(code) : continuation(code);\n      }\n      marker = 7;\n      // Do not support complete HTML when interrupting.\n      return self.interrupt && !self.parser.lazy[self.now().line] ? nok(code) : closingTag ? completeClosingTagAfter(code) : completeAttributeNameBefore(code);\n    }\n\n    // ASCII alphanumerical and `-`.\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      buffer += String.fromCharCode(code);\n      return tagName;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After closing slash of a basic tag name.\n   *\n   * ```markdown\n   * > | <div/>\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function basicSelfClosing(code) {\n    if (code === 62) {\n      effects.consume(code);\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return self.interrupt ? ok : continuation;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After closing slash of a complete tag name.\n   *\n   * ```markdown\n   * > | <x/>\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeClosingTagAfter(code) {\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeClosingTagAfter;\n    }\n    return completeEnd(code);\n  }\n\n  /**\n   * At an attribute name.\n   *\n   * At first, this state is used after a complete tag name, after whitespace,\n   * where it expects optional attributes or the end of the tag.\n   * It is also reused after attributes, when expecting more optional\n   * attributes.\n   *\n   * ```markdown\n   * > | <a />\n   *        ^\n   * > | <a :b>\n   *        ^\n   * > | <a _b>\n   *        ^\n   * > | <a b>\n   *        ^\n   * > | <a >\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeNameBefore(code) {\n    if (code === 47) {\n      effects.consume(code);\n      return completeEnd;\n    }\n\n    // ASCII alphanumerical and `:` and `_`.\n    if (code === 58 || code === 95 || asciiAlpha(code)) {\n      effects.consume(code);\n      return completeAttributeName;\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeAttributeNameBefore;\n    }\n    return completeEnd(code);\n  }\n\n  /**\n   * In attribute name.\n   *\n   * ```markdown\n   * > | <a :b>\n   *         ^\n   * > | <a _b>\n   *         ^\n   * > | <a b>\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeName(code) {\n    // ASCII alphanumerical and `-`, `.`, `:`, and `_`.\n    if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      return completeAttributeName;\n    }\n    return completeAttributeNameAfter(code);\n  }\n\n  /**\n   * After attribute name, at an optional initializer, the end of the tag, or\n   * whitespace.\n   *\n   * ```markdown\n   * > | <a b>\n   *         ^\n   * > | <a b=c>\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeNameAfter(code) {\n    if (code === 61) {\n      effects.consume(code);\n      return completeAttributeValueBefore;\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeAttributeNameAfter;\n    }\n    return completeAttributeNameBefore(code);\n  }\n\n  /**\n   * Before unquoted, double quoted, or single quoted attribute value, allowing\n   * whitespace.\n   *\n   * ```markdown\n   * > | <a b=c>\n   *          ^\n   * > | <a b=\"c\">\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueBefore(code) {\n    if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n      return nok(code);\n    }\n    if (code === 34 || code === 39) {\n      effects.consume(code);\n      markerB = code;\n      return completeAttributeValueQuoted;\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeAttributeValueBefore;\n    }\n    return completeAttributeValueUnquoted(code);\n  }\n\n  /**\n   * In double or single quoted attribute value.\n   *\n   * ```markdown\n   * > | <a b=\"c\">\n   *           ^\n   * > | <a b='c'>\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueQuoted(code) {\n    if (code === markerB) {\n      effects.consume(code);\n      markerB = null;\n      return completeAttributeValueQuotedAfter;\n    }\n    if (code === null || markdownLineEnding(code)) {\n      return nok(code);\n    }\n    effects.consume(code);\n    return completeAttributeValueQuoted;\n  }\n\n  /**\n   * In unquoted attribute value.\n   *\n   * ```markdown\n   * > | <a b=c>\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueUnquoted(code) {\n    if (code === null || code === 34 || code === 39 || code === 47 || code === 60 || code === 61 || code === 62 || code === 96 || markdownLineEndingOrSpace(code)) {\n      return completeAttributeNameAfter(code);\n    }\n    effects.consume(code);\n    return completeAttributeValueUnquoted;\n  }\n\n  /**\n   * After double or single quoted attribute value, before whitespace or the\n   * end of the tag.\n   *\n   * ```markdown\n   * > | <a b=\"c\">\n   *            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAttributeValueQuotedAfter(code) {\n    if (code === 47 || code === 62 || markdownSpace(code)) {\n      return completeAttributeNameBefore(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * In certain circumstances of a complete tag where only an `>` is allowed.\n   *\n   * ```markdown\n   * > | <a b=\"c\">\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeEnd(code) {\n    if (code === 62) {\n      effects.consume(code);\n      return completeAfter;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `>` in a complete tag.\n   *\n   * ```markdown\n   * > | <x>\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function completeAfter(code) {\n    if (code === null || markdownLineEnding(code)) {\n      // // Do not form containers.\n      // tokenizer.concrete = true\n      return continuation(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return completeAfter;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In continuation of any HTML kind.\n   *\n   * ```markdown\n   * > | <!--xxx-->\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuation(code) {\n    if (code === 45 && marker === 2) {\n      effects.consume(code);\n      return continuationCommentInside;\n    }\n    if (code === 60 && marker === 1) {\n      effects.consume(code);\n      return continuationRawTagOpen;\n    }\n    if (code === 62 && marker === 4) {\n      effects.consume(code);\n      return continuationClose;\n    }\n    if (code === 63 && marker === 3) {\n      effects.consume(code);\n      return continuationDeclarationInside;\n    }\n    if (code === 93 && marker === 5) {\n      effects.consume(code);\n      return continuationCdataInside;\n    }\n    if (markdownLineEnding(code) && (marker === 6 || marker === 7)) {\n      effects.exit(\"htmlFlowData\");\n      return effects.check(blankLineBefore, continuationAfter, continuationStart)(code);\n    }\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"htmlFlowData\");\n      return continuationStart(code);\n    }\n    effects.consume(code);\n    return continuation;\n  }\n\n  /**\n   * In continuation, at eol.\n   *\n   * ```markdown\n   * > | <x>\n   *        ^\n   *   | asd\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationStart(code) {\n    return effects.check(nonLazyContinuation, continuationStartNonLazy, continuationAfter)(code);\n  }\n\n  /**\n   * In continuation, at eol, before non-lazy content.\n   *\n   * ```markdown\n   * > | <x>\n   *        ^\n   *   | asd\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationStartNonLazy(code) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return continuationBefore;\n  }\n\n  /**\n   * In continuation, before non-lazy content.\n   *\n   * ```markdown\n   *   | <x>\n   * > | asd\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationBefore(code) {\n    if (code === null || markdownLineEnding(code)) {\n      return continuationStart(code);\n    }\n    effects.enter(\"htmlFlowData\");\n    return continuation(code);\n  }\n\n  /**\n   * In comment continuation, after one `-`, expecting another.\n   *\n   * ```markdown\n   * > | <!--xxx-->\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationCommentInside(code) {\n    if (code === 45) {\n      effects.consume(code);\n      return continuationDeclarationInside;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In raw continuation, after `<`, at `/`.\n   *\n   * ```markdown\n   * > | <script>console.log(1)</script>\n   *                            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationRawTagOpen(code) {\n    if (code === 47) {\n      effects.consume(code);\n      buffer = '';\n      return continuationRawEndTag;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In raw continuation, after `</`, in a raw tag name.\n   *\n   * ```markdown\n   * > | <script>console.log(1)</script>\n   *                             ^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationRawEndTag(code) {\n    if (code === 62) {\n      const name = buffer.toLowerCase();\n      if (htmlRawNames.includes(name)) {\n        effects.consume(code);\n        return continuationClose;\n      }\n      return continuation(code);\n    }\n    if (asciiAlpha(code) && buffer.length < 8) {\n      // Always the case.\n      effects.consume(code);\n      buffer += String.fromCharCode(code);\n      return continuationRawEndTag;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In cdata continuation, after `]`, expecting `]>`.\n   *\n   * ```markdown\n   * > | <![CDATA[>&<]]>\n   *                  ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationCdataInside(code) {\n    if (code === 93) {\n      effects.consume(code);\n      return continuationDeclarationInside;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In declaration or instruction continuation, at `>`.\n   *\n   * ```markdown\n   * > | <!-->\n   *         ^\n   * > | <?>\n   *       ^\n   * > | <!q>\n   *        ^\n   * > | <!--ab-->\n   *             ^\n   * > | <![CDATA[>&<]]>\n   *                   ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationDeclarationInside(code) {\n    if (code === 62) {\n      effects.consume(code);\n      return continuationClose;\n    }\n\n    // More dashes.\n    if (code === 45 && marker === 2) {\n      effects.consume(code);\n      return continuationDeclarationInside;\n    }\n    return continuation(code);\n  }\n\n  /**\n   * In closed continuation: everything we get until the eol/eof is part of it.\n   *\n   * ```markdown\n   * > | <!doctype>\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationClose(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"htmlFlowData\");\n      return continuationAfter(code);\n    }\n    effects.consume(code);\n    return continuationClose;\n  }\n\n  /**\n   * Done.\n   *\n   * ```markdown\n   * > | <!doctype>\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function continuationAfter(code) {\n    effects.exit(\"htmlFlow\");\n    // // Feel free to interrupt.\n    // tokenizer.interrupt = false\n    // // No longer concrete.\n    // tokenizer.concrete = false\n    return ok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeBlankLineBefore(effects, ok, nok) {\n  return start;\n\n  /**\n   * Before eol, expecting blank line.\n   *\n   * ```markdown\n   * > | <div>\n   *          ^\n   *   |\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return effects.attempt(blankLine, ok, nok);\n  }\n}", "/**\n * @import {\n *   Code,\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiAlphanumeric, asciiAlpha, markdownLineEndingOrSpace, markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const htmlText = {\n  name: 'htmlText',\n  tokenize: tokenizeHtmlText\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeHtmlText(effects, ok, nok) {\n  const self = this;\n  /** @type {NonNullable<Code> | undefined} */\n  let marker;\n  /** @type {number} */\n  let index;\n  /** @type {State} */\n  let returnState;\n  return start;\n\n  /**\n   * Start of HTML (text).\n   *\n   * ```markdown\n   * > | a <b> c\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"htmlText\");\n    effects.enter(\"htmlTextData\");\n    effects.consume(code);\n    return open;\n  }\n\n  /**\n   * After `<`, at tag name or other stuff.\n   *\n   * ```markdown\n   * > | a <b> c\n   *        ^\n   * > | a <!doctype> c\n   *        ^\n   * > | a <!--b--> c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 33) {\n      effects.consume(code);\n      return declarationOpen;\n    }\n    if (code === 47) {\n      effects.consume(code);\n      return tagCloseStart;\n    }\n    if (code === 63) {\n      effects.consume(code);\n      return instruction;\n    }\n\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      return tagOpen;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `<!`, at declaration, comment, or CDATA.\n   *\n   * ```markdown\n   * > | a <!doctype> c\n   *         ^\n   * > | a <!--b--> c\n   *         ^\n   * > | a <![CDATA[>&<]]> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function declarationOpen(code) {\n    if (code === 45) {\n      effects.consume(code);\n      return commentOpenInside;\n    }\n    if (code === 91) {\n      effects.consume(code);\n      index = 0;\n      return cdataOpenInside;\n    }\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      return declaration;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In a comment, after `<!-`, at another `-`.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentOpenInside(code) {\n    if (code === 45) {\n      effects.consume(code);\n      return commentEnd;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In comment.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function comment(code) {\n    if (code === null) {\n      return nok(code);\n    }\n    if (code === 45) {\n      effects.consume(code);\n      return commentClose;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = comment;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return comment;\n  }\n\n  /**\n   * In comment, after `-`.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentClose(code) {\n    if (code === 45) {\n      effects.consume(code);\n      return commentEnd;\n    }\n    return comment(code);\n  }\n\n  /**\n   * In comment, after `--`.\n   *\n   * ```markdown\n   * > | a <!--b--> c\n   *              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function commentEnd(code) {\n    return code === 62 ? end(code) : code === 45 ? commentClose(code) : comment(code);\n  }\n\n  /**\n   * After `<![`, in CDATA, expecting `CDATA[`.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *          ^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataOpenInside(code) {\n    const value = \"CDATA[\";\n    if (code === value.charCodeAt(index++)) {\n      effects.consume(code);\n      return index === value.length ? cdata : cdataOpenInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In CDATA.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *                ^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdata(code) {\n    if (code === null) {\n      return nok(code);\n    }\n    if (code === 93) {\n      effects.consume(code);\n      return cdataClose;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = cdata;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return cdata;\n  }\n\n  /**\n   * In CDATA, after `]`, at another `]`.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *                    ^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataClose(code) {\n    if (code === 93) {\n      effects.consume(code);\n      return cdataEnd;\n    }\n    return cdata(code);\n  }\n\n  /**\n   * In CDATA, after `]]`, at `>`.\n   *\n   * ```markdown\n   * > | a <![CDATA[>&<]]> b\n   *                     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function cdataEnd(code) {\n    if (code === 62) {\n      return end(code);\n    }\n    if (code === 93) {\n      effects.consume(code);\n      return cdataEnd;\n    }\n    return cdata(code);\n  }\n\n  /**\n   * In declaration.\n   *\n   * ```markdown\n   * > | a <!b> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function declaration(code) {\n    if (code === null || code === 62) {\n      return end(code);\n    }\n    if (markdownLineEnding(code)) {\n      returnState = declaration;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return declaration;\n  }\n\n  /**\n   * In instruction.\n   *\n   * ```markdown\n   * > | a <?b?> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function instruction(code) {\n    if (code === null) {\n      return nok(code);\n    }\n    if (code === 63) {\n      effects.consume(code);\n      return instructionClose;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = instruction;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return instruction;\n  }\n\n  /**\n   * In instruction, after `?`, at `>`.\n   *\n   * ```markdown\n   * > | a <?b?> c\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function instructionClose(code) {\n    return code === 62 ? end(code) : instruction(code);\n  }\n\n  /**\n   * After `</`, in closing tag, at tag name.\n   *\n   * ```markdown\n   * > | a </b> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagCloseStart(code) {\n    // ASCII alphabetical.\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      return tagClose;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `</x`, in a tag name.\n   *\n   * ```markdown\n   * > | a </b> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagClose(code) {\n    // ASCII alphanumerical and `-`.\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      return tagClose;\n    }\n    return tagCloseBetween(code);\n  }\n\n  /**\n   * In closing tag, after tag name.\n   *\n   * ```markdown\n   * > | a </b> c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagCloseBetween(code) {\n    if (markdownLineEnding(code)) {\n      returnState = tagCloseBetween;\n      return lineEndingBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return tagCloseBetween;\n    }\n    return end(code);\n  }\n\n  /**\n   * After `<x`, in opening tag name.\n   *\n   * ```markdown\n   * > | a <b> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpen(code) {\n    // ASCII alphanumerical and `-`.\n    if (code === 45 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      return tagOpen;\n    }\n    if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * In opening tag, after tag name.\n   *\n   * ```markdown\n   * > | a <b> c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenBetween(code) {\n    if (code === 47) {\n      effects.consume(code);\n      return end;\n    }\n\n    // ASCII alphabetical and `:` and `_`.\n    if (code === 58 || code === 95 || asciiAlpha(code)) {\n      effects.consume(code);\n      return tagOpenAttributeName;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenBetween;\n      return lineEndingBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return tagOpenBetween;\n    }\n    return end(code);\n  }\n\n  /**\n   * In attribute name.\n   *\n   * ```markdown\n   * > | a <b c> d\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeName(code) {\n    // ASCII alphabetical and `-`, `.`, `:`, and `_`.\n    if (code === 45 || code === 46 || code === 58 || code === 95 || asciiAlphanumeric(code)) {\n      effects.consume(code);\n      return tagOpenAttributeName;\n    }\n    return tagOpenAttributeNameAfter(code);\n  }\n\n  /**\n   * After attribute name, before initializer, the end of the tag, or\n   * whitespace.\n   *\n   * ```markdown\n   * > | a <b c> d\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeNameAfter(code) {\n    if (code === 61) {\n      effects.consume(code);\n      return tagOpenAttributeValueBefore;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeNameAfter;\n      return lineEndingBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return tagOpenAttributeNameAfter;\n    }\n    return tagOpenBetween(code);\n  }\n\n  /**\n   * Before unquoted, double quoted, or single quoted attribute value, allowing\n   * whitespace.\n   *\n   * ```markdown\n   * > | a <b c=d> e\n   *            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueBefore(code) {\n    if (code === null || code === 60 || code === 61 || code === 62 || code === 96) {\n      return nok(code);\n    }\n    if (code === 34 || code === 39) {\n      effects.consume(code);\n      marker = code;\n      return tagOpenAttributeValueQuoted;\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeValueBefore;\n      return lineEndingBefore(code);\n    }\n    if (markdownSpace(code)) {\n      effects.consume(code);\n      return tagOpenAttributeValueBefore;\n    }\n    effects.consume(code);\n    return tagOpenAttributeValueUnquoted;\n  }\n\n  /**\n   * In double or single quoted attribute value.\n   *\n   * ```markdown\n   * > | a <b c=\"d\"> e\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueQuoted(code) {\n    if (code === marker) {\n      effects.consume(code);\n      marker = undefined;\n      return tagOpenAttributeValueQuotedAfter;\n    }\n    if (code === null) {\n      return nok(code);\n    }\n    if (markdownLineEnding(code)) {\n      returnState = tagOpenAttributeValueQuoted;\n      return lineEndingBefore(code);\n    }\n    effects.consume(code);\n    return tagOpenAttributeValueQuoted;\n  }\n\n  /**\n   * In unquoted attribute value.\n   *\n   * ```markdown\n   * > | a <b c=d> e\n   *            ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueUnquoted(code) {\n    if (code === null || code === 34 || code === 39 || code === 60 || code === 61 || code === 96) {\n      return nok(code);\n    }\n    if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code);\n    }\n    effects.consume(code);\n    return tagOpenAttributeValueUnquoted;\n  }\n\n  /**\n   * After double or single quoted attribute value, before whitespace or the end\n   * of the tag.\n   *\n   * ```markdown\n   * > | a <b c=\"d\"> e\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function tagOpenAttributeValueQuotedAfter(code) {\n    if (code === 47 || code === 62 || markdownLineEndingOrSpace(code)) {\n      return tagOpenBetween(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * In certain circumstances of a tag where only an `>` is allowed.\n   *\n   * ```markdown\n   * > | a <b c=\"d\"> e\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function end(code) {\n    if (code === 62) {\n      effects.consume(code);\n      effects.exit(\"htmlTextData\");\n      effects.exit(\"htmlText\");\n      return ok;\n    }\n    return nok(code);\n  }\n\n  /**\n   * At eol.\n   *\n   * > \uD83D\uDC49 **Note**: we can\u2019t have blank lines in text, so no need to worry about\n   * > empty tokens.\n   *\n   * ```markdown\n   * > | a <!--a\n   *            ^\n   *   | b-->\n   * ```\n   *\n   * @type {State}\n   */\n  function lineEndingBefore(code) {\n    effects.exit(\"htmlTextData\");\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return lineEndingAfter;\n  }\n\n  /**\n   * After eol, at optional whitespace.\n   *\n   * > \uD83D\uDC49 **Note**: we can\u2019t have blank lines in text, so no need to worry about\n   * > empty tokens.\n   *\n   * ```markdown\n   *   | a <!--a\n   * > | b-->\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function lineEndingAfter(code) {\n    // Always populated by defaults.\n\n    return markdownSpace(code) ? factorySpace(effects, lineEndingAfterPrefix, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code) : lineEndingAfterPrefix(code);\n  }\n\n  /**\n   * After eol, after optional whitespace.\n   *\n   * > \uD83D\uDC49 **Note**: we can\u2019t have blank lines in text, so no need to worry about\n   * > empty tokens.\n   *\n   * ```markdown\n   *   | a <!--a\n   * > | b-->\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function lineEndingAfterPrefix(code) {\n    effects.enter(\"htmlTextData\");\n    return returnState(code);\n  }\n}", "/**\n * @import {\n *   Construct,\n *   Event,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer,\n *   Token\n * } from 'micromark-util-types'\n */\n\nimport { factoryDestination } from 'micromark-factory-destination';\nimport { factoryLabel } from 'micromark-factory-label';\nimport { factoryTitle } from 'micromark-factory-title';\nimport { factoryWhitespace } from 'micromark-factory-whitespace';\nimport { markdownLineEndingOrSpace } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/** @type {Construct} */\nexport const labelEnd = {\n  name: 'labelEnd',\n  resolveAll: resolveAllLabelEnd,\n  resolveTo: resolveToLabelEnd,\n  tokenize: tokenizeLabelEnd\n};\n\n/** @type {Construct} */\nconst resourceConstruct = {\n  tokenize: tokenizeResource\n};\n/** @type {Construct} */\nconst referenceFullConstruct = {\n  tokenize: tokenizeReferenceFull\n};\n/** @type {Construct} */\nconst referenceCollapsedConstruct = {\n  tokenize: tokenizeReferenceCollapsed\n};\n\n/** @type {Resolver} */\nfunction resolveAllLabelEnd(events) {\n  let index = -1;\n  /** @type {Array<Event>} */\n  const newEvents = [];\n  while (++index < events.length) {\n    const token = events[index][1];\n    newEvents.push(events[index]);\n    if (token.type === \"labelImage\" || token.type === \"labelLink\" || token.type === \"labelEnd\") {\n      // Remove the marker.\n      const offset = token.type === \"labelImage\" ? 4 : 2;\n      token.type = \"data\";\n      index += offset;\n    }\n  }\n\n  // If the events are equal, we don't have to copy newEvents to events\n  if (events.length !== newEvents.length) {\n    splice(events, 0, events.length, newEvents);\n  }\n  return events;\n}\n\n/** @type {Resolver} */\nfunction resolveToLabelEnd(events, context) {\n  let index = events.length;\n  let offset = 0;\n  /** @type {number | undefined} */\n  let open;\n  /** @type {number | undefined} */\n  let close;\n  /** @type {Array<Event>} */\n  let media;\n\n  // Find an opening.\n  while (index--) {\n    const token = events[index][1];\n    if (open) {\n      // If we see another link, or inactive link label, we\u2019ve been here before.\n      if (token.type === \"link\" || token.type === \"labelLink\" && token._inactive) {\n        break;\n      }\n\n      // Mark other link openings as inactive, as we can\u2019t have links in\n      // links.\n      if (events[index][0] === 'enter' && token.type === \"labelLink\") {\n        token._inactive = true;\n      }\n    } else if (close) {\n      if (events[index][0] === 'enter' && (token.type === \"labelImage\" || token.type === \"labelLink\") && !token._balanced) {\n        open = index;\n        if (token.type !== \"labelLink\") {\n          offset = 2;\n          break;\n        }\n      }\n    } else if (token.type === \"labelEnd\") {\n      close = index;\n    }\n  }\n  const group = {\n    type: events[open][1].type === \"labelLink\" ? \"link\" : \"image\",\n    start: {\n      ...events[open][1].start\n    },\n    end: {\n      ...events[events.length - 1][1].end\n    }\n  };\n  const label = {\n    type: \"label\",\n    start: {\n      ...events[open][1].start\n    },\n    end: {\n      ...events[close][1].end\n    }\n  };\n  const text = {\n    type: \"labelText\",\n    start: {\n      ...events[open + offset + 2][1].end\n    },\n    end: {\n      ...events[close - 2][1].start\n    }\n  };\n  media = [['enter', group, context], ['enter', label, context]];\n\n  // Opening marker.\n  media = push(media, events.slice(open + 1, open + offset + 3));\n\n  // Text open.\n  media = push(media, [['enter', text, context]]);\n\n  // Always populated by defaults.\n\n  // Between.\n  media = push(media, resolveAll(context.parser.constructs.insideSpan.null, events.slice(open + offset + 4, close - 3), context));\n\n  // Text close, marker close, label close.\n  media = push(media, [['exit', text, context], events[close - 2], events[close - 1], ['exit', label, context]]);\n\n  // Reference, resource, or so.\n  media = push(media, events.slice(close + 1));\n\n  // Media close.\n  media = push(media, [['exit', group, context]]);\n  splice(events, open, events.length, media);\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelEnd(effects, ok, nok) {\n  const self = this;\n  const labelStarts = self._labelStarts;\n  /** @type {Token} */\n  let labelStart;\n  /** @type {boolean} */\n  let defined;\n  if (labelStarts) {\n    // Discard ones that failed to close,\n    // they\u2019re not needed anymore.\n    while (labelStarts.length > 0 && labelStarts[labelStarts.length - 1]._balanced) {\n      labelStarts.pop();\n    }\n    labelStart = labelStarts[labelStarts.length - 1];\n  }\n  return start;\n\n  /**\n   * Start of label end.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *       ^\n   * > | [a][b] c\n   *       ^\n   * > | [a][] b\n   *       ^\n   * > | [a] b\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // If there is not an okay opening.\n    if (!labelStart) {\n      return nok(code);\n    }\n\n    // If the corresponding label (link) start is marked as inactive,\n    // it means we\u2019d be wrapping a link, like this:\n    //\n    // ```markdown\n    // > | a [b [c](d) e](f) g.\n    //                  ^\n    // ```\n    //\n    // We can\u2019t have that, so it\u2019s just balanced brackets.\n    if (labelStart._inactive) {\n      return labelEndNok(code);\n    }\n    defined = self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize({\n      start: labelStart.end,\n      end: self.now()\n    })));\n    effects.enter(\"labelEnd\");\n    effects.enter(\"labelMarker\");\n    effects.consume(code);\n    effects.exit(\"labelMarker\");\n    effects.exit(\"labelEnd\");\n    return after;\n  }\n\n  /**\n   * After `]`.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *       ^\n   * > | [a][b] c\n   *       ^\n   * > | [a][] b\n   *       ^\n   * > | [a] b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    // Note: `markdown-rs` also parses GFM footnotes here, which for us is in\n    // an extension.\n\n    // Resource (`[asd](fgh)`)?\n    if (code === 40) {\n      return effects.attempt(resourceConstruct, labelEndOk, defined ? labelEndOk : labelEndNok)(code);\n    }\n\n    // Full (`[asd][fgh]`) or collapsed (`[asd][]`) reference?\n    if (code === 91) {\n      return effects.attempt(referenceFullConstruct, labelEndOk, defined ? referenceNotFull : labelEndNok)(code);\n    }\n\n    // Shortcut (`[asd]`) reference?\n    return defined ? labelEndOk(code) : labelEndNok(code);\n  }\n\n  /**\n   * After `]`, at `[`, but not at a full reference.\n   *\n   * > \uD83D\uDC49 **Note**: we only get here if the label is defined.\n   *\n   * ```markdown\n   * > | [a][] b\n   *        ^\n   * > | [a] b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceNotFull(code) {\n    return effects.attempt(referenceCollapsedConstruct, labelEndOk, labelEndNok)(code);\n  }\n\n  /**\n   * Done, we found something.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *           ^\n   * > | [a][b] c\n   *           ^\n   * > | [a][] b\n   *          ^\n   * > | [a] b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelEndOk(code) {\n    // Note: `markdown-rs` does a bunch of stuff here.\n    // This label start is now used up: discard it so it\u2019s never found again.\n\n    labelStarts.pop();\n    return ok(code);\n  }\n\n  /**\n   * Done, it\u2019s nothing.\n   *\n   * There was an okay opening, but we didn\u2019t match anything.\n   *\n   * ```markdown\n   * > | [a](b c\n   *        ^\n   * > | [a][b c\n   *        ^\n   * > | [a] b\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelEndNok(code) {\n    labelStart._balanced = true;\n    return nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeResource(effects, ok, nok) {\n  return resourceStart;\n\n  /**\n   * At a resource.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceStart(code) {\n    effects.enter(\"resource\");\n    effects.enter(\"resourceMarker\");\n    effects.consume(code);\n    effects.exit(\"resourceMarker\");\n    return resourceBefore;\n  }\n\n  /**\n   * In resource, after `(`, at optional whitespace.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceBefore(code) {\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceOpen)(code) : resourceOpen(code);\n  }\n\n  /**\n   * In resource, after optional whitespace, at `)` or a destination.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceOpen(code) {\n    if (code === 41) {\n      return resourceEnd(code);\n    }\n    return factoryDestination(effects, resourceDestinationAfter, resourceDestinationMissing, \"resourceDestination\", \"resourceDestinationLiteral\", \"resourceDestinationLiteralMarker\", \"resourceDestinationRaw\", \"resourceDestinationString\", 32)(code);\n  }\n\n  /**\n   * In resource, after destination, at optional whitespace.\n   *\n   * ```markdown\n   * > | [a](b) c\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceDestinationAfter(code) {\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceBetween)(code) : resourceEnd(code);\n  }\n\n  /**\n   * At invalid destination.\n   *\n   * ```markdown\n   * > | [a](<<) b\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceDestinationMissing(code) {\n    return nok(code);\n  }\n\n  /**\n   * In resource, after destination and whitespace, at `(` or title.\n   *\n   * ```markdown\n   * > | [a](b ) c\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceBetween(code) {\n    if (code === 34 || code === 39 || code === 40) {\n      return factoryTitle(effects, resourceTitleAfter, nok, \"resourceTitle\", \"resourceTitleMarker\", \"resourceTitleString\")(code);\n    }\n    return resourceEnd(code);\n  }\n\n  /**\n   * In resource, after title, at optional whitespace.\n   *\n   * ```markdown\n   * > | [a](b \"c\") d\n   *              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceTitleAfter(code) {\n    return markdownLineEndingOrSpace(code) ? factoryWhitespace(effects, resourceEnd)(code) : resourceEnd(code);\n  }\n\n  /**\n   * In resource, at `)`.\n   *\n   * ```markdown\n   * > | [a](b) d\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function resourceEnd(code) {\n    if (code === 41) {\n      effects.enter(\"resourceMarker\");\n      effects.consume(code);\n      effects.exit(\"resourceMarker\");\n      effects.exit(\"resource\");\n      return ok;\n    }\n    return nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceFull(effects, ok, nok) {\n  const self = this;\n  return referenceFull;\n\n  /**\n   * In a reference (full), at the `[`.\n   *\n   * ```markdown\n   * > | [a][b] d\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceFull(code) {\n    return factoryLabel.call(self, effects, referenceFullAfter, referenceFullMissing, \"reference\", \"referenceMarker\", \"referenceString\")(code);\n  }\n\n  /**\n   * In a reference (full), after `]`.\n   *\n   * ```markdown\n   * > | [a][b] d\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceFullAfter(code) {\n    return self.parser.defined.includes(normalizeIdentifier(self.sliceSerialize(self.events[self.events.length - 1][1]).slice(1, -1))) ? ok(code) : nok(code);\n  }\n\n  /**\n   * In reference (full) that was missing.\n   *\n   * ```markdown\n   * > | [a][b d\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceFullMissing(code) {\n    return nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeReferenceCollapsed(effects, ok, nok) {\n  return referenceCollapsedStart;\n\n  /**\n   * In reference (collapsed), at `[`.\n   *\n   * > \uD83D\uDC49 **Note**: we only get here if the label is defined.\n   *\n   * ```markdown\n   * > | [a][] d\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function referenceCollapsedStart(code) {\n    // We only attempt a collapsed label if there\u2019s a `[`.\n\n    effects.enter(\"reference\");\n    effects.enter(\"referenceMarker\");\n    effects.consume(code);\n    effects.exit(\"referenceMarker\");\n    return referenceCollapsedOpen;\n  }\n\n  /**\n   * In reference (collapsed), at `]`.\n   *\n   * > \uD83D\uDC49 **Note**: we only get here if the label is defined.\n   *\n   * ```markdown\n   * > | [a][] d\n   *         ^\n   * ```\n   *\n   *  @type {State}\n   */\n  function referenceCollapsedOpen(code) {\n    if (code === 93) {\n      effects.enter(\"referenceMarker\");\n      effects.consume(code);\n      effects.exit(\"referenceMarker\");\n      effects.exit(\"reference\");\n      return ok;\n    }\n    return nok(code);\n  }\n}", "/**\n * @import {\n *   Construct,\n *   State,\n *   Token,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartImage = {\n  name: 'labelStartImage',\n  resolveAll: labelEnd.resolveAll,\n  tokenize: tokenizeLabelStartImage\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartImage(effects, ok, nok) {\n  const self = this;\n  /** @type {Token} */\n  let labelImage;\n  return start;\n\n  /**\n   * Start of label (image) start.\n   *\n   * ```markdown\n   * > | a ![b] c\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"labelImage\");\n    effects.enter(\"labelImageMarker\");\n    effects.consume(code);\n    effects.exit(\"labelImageMarker\");\n    return open;\n  }\n\n  /**\n   * After `!`, at `[`.\n   *\n   * ```markdown\n   * > | a ![b] c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (code === 91) {\n      effects.enter(\"labelMarker\");\n      effects.consume(code);\n      effects.exit(\"labelMarker\");\n      labelImage = effects.exit(\"labelImage\");\n      return after;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After `![`.\n   *\n   * ```markdown\n   * > | a ![b] c\n   *         ^\n   * ```\n   *\n   * This is needed in because, when GFM footnotes are enabled, images never\n   * form when started with a `^`.\n   * Instead, links form:\n   *\n   * ```markdown\n   * ![^a](b)\n   *\n   * ![^a][b]\n   *\n   * [b]: c\n   * ```\n   *\n   * ```html\n   * <p>!<a href=\\\"b\\\">^a</a></p>\n   * <p>!<a href=\\\"c\\\">^a</a></p>\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    // To do: use a new field to do this, this is still needed for\n    // `micromark-extension-gfm-footnote`, but the `label-start-link`\n    // behavior isn\u2019t.\n    // Hidden footnotes hook.\n    /* c8 ignore next 6 */\n    if (code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs) {\n      return nok(code);\n    }\n    self._labelStarts = self._labelStarts || [];\n    self._labelStarts.push(labelImage);\n    return ok(code);\n  }\n}", "/**\n * @import {\n *   Construct,\n *   State,\n *   Token,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { labelEnd } from './label-end.js';\n\n/** @type {Construct} */\nexport const labelStartLink = {\n  name: 'labelStartLink',\n  resolveAll: labelEnd.resolveAll,\n  tokenize: tokenizeLabelStartLink\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLabelStartLink(effects, ok, nok) {\n  const self = this;\n  /** @type {Token} */\n  let labelLink;\n  return start;\n\n  /**\n   * Start of label (link) start.\n   *\n   * ```markdown\n   * > | a [b] c\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"labelLink\");\n    effects.enter(\"labelMarker\");\n    effects.consume(code);\n    effects.exit(\"labelMarker\");\n    labelLink = effects.exit(\"labelLink\");\n    return after;\n  }\n\n  /** @type {State} */\n  function after(code) {\n    // To do: this isn\u2019t needed in `micromark-extension-gfm-footnote`,\n    // remove.\n    // Hidden footnotes hook.\n    /* c8 ignore next 6 */\n    if (code === 94 && '_hiddenFootnoteSupport' in self.parser.constructs) {\n      return nok(code);\n    }\n    self._labelStarts = self._labelStarts || [];\n    self._labelStarts.push(labelLink);\n    return ok(code);\n  }\n}", "/**\n * @import {\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {Construct} */\nexport const lineEnding = {\n  name: 'lineEnding',\n  tokenize: tokenizeLineEnding\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeLineEnding(effects, ok) {\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    return factorySpace(effects, ok, \"linePrefix\");\n  }\n}", "/**\n * @import {\n *   Code,\n *   Construct,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\n/** @type {Construct} */\nexport const thematicBreak = {\n  name: 'thematicBreak',\n  tokenize: tokenizeThematicBreak\n};\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeThematicBreak(effects, ok, nok) {\n  let size = 0;\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * Start of thematic break.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter(\"thematicBreak\");\n    // To do: parse indent like `markdown-rs`.\n    return before(code);\n  }\n\n  /**\n   * After optional whitespace, at marker.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    marker = code;\n    return atBreak(code);\n  }\n\n  /**\n   * After something, before something else.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atBreak(code) {\n    if (code === marker) {\n      effects.enter(\"thematicBreakSequence\");\n      return sequence(code);\n    }\n    if (size >= 3 && (code === null || markdownLineEnding(code))) {\n      effects.exit(\"thematicBreak\");\n      return ok(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * In sequence.\n   *\n   * ```markdown\n   * > | ***\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function sequence(code) {\n    if (code === marker) {\n      effects.consume(code);\n      size++;\n      return sequence;\n    }\n    effects.exit(\"thematicBreakSequence\");\n    return markdownSpace(code) ? factorySpace(effects, atBreak, \"whitespace\")(code) : atBreak(code);\n  }\n}", "/**\n * @import {\n *   Code,\n *   Construct,\n *   Exiter,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { asciiDigit, markdownSpace } from 'micromark-util-character';\nimport { blankLine } from './blank-line.js';\nimport { thematicBreak } from './thematic-break.js';\n\n/** @type {Construct} */\nexport const list = {\n  continuation: {\n    tokenize: tokenizeListContinuation\n  },\n  exit: tokenizeListEnd,\n  name: 'list',\n  tokenize: tokenizeListStart\n};\n\n/** @type {Construct} */\nconst listItemPrefixWhitespaceConstruct = {\n  partial: true,\n  tokenize: tokenizeListItemPrefixWhitespace\n};\n\n/** @type {Construct} */\nconst indentConstruct = {\n  partial: true,\n  tokenize: tokenizeIndent\n};\n\n// To do: `markdown-rs` parses list items on their own and later stitches them\n// together.\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListStart(effects, ok, nok) {\n  const self = this;\n  const tail = self.events[self.events.length - 1];\n  let initialSize = tail && tail[1].type === \"linePrefix\" ? tail[2].sliceSerialize(tail[1], true).length : 0;\n  let size = 0;\n  return start;\n\n  /** @type {State} */\n  function start(code) {\n    const kind = self.containerState.type || (code === 42 || code === 43 || code === 45 ? \"listUnordered\" : \"listOrdered\");\n    if (kind === \"listUnordered\" ? !self.containerState.marker || code === self.containerState.marker : asciiDigit(code)) {\n      if (!self.containerState.type) {\n        self.containerState.type = kind;\n        effects.enter(kind, {\n          _container: true\n        });\n      }\n      if (kind === \"listUnordered\") {\n        effects.enter(\"listItemPrefix\");\n        return code === 42 || code === 45 ? effects.check(thematicBreak, nok, atMarker)(code) : atMarker(code);\n      }\n      if (!self.interrupt || code === 49) {\n        effects.enter(\"listItemPrefix\");\n        effects.enter(\"listItemValue\");\n        return inside(code);\n      }\n    }\n    return nok(code);\n  }\n\n  /** @type {State} */\n  function inside(code) {\n    if (asciiDigit(code) && ++size < 10) {\n      effects.consume(code);\n      return inside;\n    }\n    if ((!self.interrupt || size < 2) && (self.containerState.marker ? code === self.containerState.marker : code === 41 || code === 46)) {\n      effects.exit(\"listItemValue\");\n      return atMarker(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * @type {State}\n   **/\n  function atMarker(code) {\n    effects.enter(\"listItemMarker\");\n    effects.consume(code);\n    effects.exit(\"listItemMarker\");\n    self.containerState.marker = self.containerState.marker || code;\n    return effects.check(blankLine,\n    // Can\u2019t be empty when interrupting.\n    self.interrupt ? nok : onBlank, effects.attempt(listItemPrefixWhitespaceConstruct, endOfPrefix, otherPrefix));\n  }\n\n  /** @type {State} */\n  function onBlank(code) {\n    self.containerState.initialBlankLine = true;\n    initialSize++;\n    return endOfPrefix(code);\n  }\n\n  /** @type {State} */\n  function otherPrefix(code) {\n    if (markdownSpace(code)) {\n      effects.enter(\"listItemPrefixWhitespace\");\n      effects.consume(code);\n      effects.exit(\"listItemPrefixWhitespace\");\n      return endOfPrefix;\n    }\n    return nok(code);\n  }\n\n  /** @type {State} */\n  function endOfPrefix(code) {\n    self.containerState.size = initialSize + self.sliceSerialize(effects.exit(\"listItemPrefix\"), true).length;\n    return ok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListContinuation(effects, ok, nok) {\n  const self = this;\n  self.containerState._closeFlow = undefined;\n  return effects.check(blankLine, onBlank, notBlank);\n\n  /** @type {State} */\n  function onBlank(code) {\n    self.containerState.furtherBlankLines = self.containerState.furtherBlankLines || self.containerState.initialBlankLine;\n\n    // We have a blank line.\n    // Still, try to consume at most the items size.\n    return factorySpace(effects, ok, \"listItemIndent\", self.containerState.size + 1)(code);\n  }\n\n  /** @type {State} */\n  function notBlank(code) {\n    if (self.containerState.furtherBlankLines || !markdownSpace(code)) {\n      self.containerState.furtherBlankLines = undefined;\n      self.containerState.initialBlankLine = undefined;\n      return notInCurrentItem(code);\n    }\n    self.containerState.furtherBlankLines = undefined;\n    self.containerState.initialBlankLine = undefined;\n    return effects.attempt(indentConstruct, ok, notInCurrentItem)(code);\n  }\n\n  /** @type {State} */\n  function notInCurrentItem(code) {\n    // While we do continue, we signal that the flow should be closed.\n    self.containerState._closeFlow = true;\n    // As we\u2019re closing flow, we\u2019re no longer interrupting.\n    self.interrupt = undefined;\n    // Always populated by defaults.\n\n    return factorySpace(effects, effects.attempt(list, ok, nok), \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n  const self = this;\n  return factorySpace(effects, afterPrefix, \"listItemIndent\", self.containerState.size + 1);\n\n  /** @type {State} */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1];\n    return tail && tail[1].type === \"listItemIndent\" && tail[2].sliceSerialize(tail[1], true).length === self.containerState.size ? ok(code) : nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Exiter}\n */\nfunction tokenizeListEnd(effects) {\n  effects.exit(this.containerState.type);\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeListItemPrefixWhitespace(effects, ok, nok) {\n  const self = this;\n\n  // Always populated by defaults.\n\n  return factorySpace(effects, afterPrefix, \"listItemPrefixWhitespace\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4 + 1);\n\n  /** @type {State} */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1];\n    return !markdownSpace(code) && tail && tail[1].type === \"listItemPrefixWhitespace\" ? ok(code) : nok(code);\n  }\n}", "/**\n * @import {\n *   Code,\n *   Construct,\n *   Resolver,\n *   State,\n *   TokenizeContext,\n *   Tokenizer\n * } from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownSpace } from 'micromark-util-character';\nimport { EditMap } from 'micromark-util-edit-map';\n/** @type {Construct} */\nexport const setextUnderline = {\n  name: 'setextUnderline',\n  resolveTo: resolveToSetextUnderline,\n  tokenize: tokenizeSetextUnderline\n};\n\n/** @type {Resolver} */\nfunction resolveToSetextUnderline(events, context) {\n  const editMap = new EditMap();\n  let index = events.length;\n  /** @type {number | undefined} */\n  let content;\n  /** @type {number | undefined} */\n  let text;\n  /** @type {number | undefined} */\n  let definition;\n\n  // Find the opening of the content.\n  // It\u2019ll always exist: we don\u2019t tokenize if it isn\u2019t there.\n  while (index--) {\n    if (events[index][0] === 'enter') {\n      if (events[index][1].type === \"content\") {\n        content = index;\n        break;\n      }\n      if (events[index][1].type === \"paragraph\") {\n        text = index;\n      }\n    }\n    // Exit\n    else {\n      if (events[index][1].type === \"content\") {\n        // Remove the content end (if needed we\u2019ll add it later)\n        editMap.add(index, 1, []);\n      }\n      if (!definition && events[index][1].type === \"definition\") {\n        definition = index;\n      }\n    }\n  }\n  const heading = {\n    type: \"setextHeading\",\n    start: {\n      ...events[content][1].start\n    },\n    end: {\n      ...events[events.length - 1][1].end\n    }\n  };\n\n  // Change the paragraph to setext heading text.\n  events[text][1].type = \"setextHeadingText\";\n\n  // If we have definitions in the content, we\u2019ll keep on having content,\n  // but we need move it.\n  if (definition) {\n    editMap.add(text, 0, [['enter', heading, context]]);\n    editMap.add(definition + 1, 0, [['exit', events[content][1], context]]);\n    events[content][1].end = {\n      ...events[definition][1].end\n    };\n  } else {\n    events[content][1] = heading;\n  }\n\n  // Add the heading exit at the end.\n  editMap.add(events.length, 0, [['exit', heading, context]]);\n  editMap.consume(events);\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n *   Context.\n * @type {Tokenizer}\n */\nfunction tokenizeSetextUnderline(effects, ok, nok) {\n  const self = this;\n  /** @type {NonNullable<Code>} */\n  let marker;\n  return start;\n\n  /**\n   * At start of heading (setext) underline.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    let index = self.events.length;\n    /** @type {boolean | undefined} */\n    let paragraph;\n    // Find an opening.\n    while (index--) {\n      // Skip enter/exit of line ending, line prefix, and content.\n      // We can now either have a definition or a paragraph.\n      if (self.events[index][1].type !== \"lineEnding\" && self.events[index][1].type !== \"linePrefix\" && self.events[index][1].type !== \"content\") {\n        paragraph = self.events[index][1].type === \"paragraph\";\n        break;\n      }\n    }\n\n    // To do: handle lazy/pierce like `markdown-rs`.\n    // To do: parse indent like `markdown-rs`.\n    if (!self.parser.lazy[self.now().line] && (self.interrupt || paragraph)) {\n      effects.enter(\"setextHeadingLine\");\n      marker = code;\n      return before(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * After optional whitespace, at `-` or `=`.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function before(code) {\n    effects.enter(\"setextHeadingLineSequence\");\n    return inside(code);\n  }\n\n  /**\n   * In sequence.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    if (code === marker) {\n      effects.consume(code);\n      return inside;\n    }\n    effects.exit(\"setextHeadingLineSequence\");\n    return markdownSpace(code) ? factorySpace(effects, after, \"lineSuffix\")(code) : after(code);\n  }\n\n  /**\n   * After sequence, after optional whitespace.\n   *\n   * ```markdown\n   *   | aa\n   * > | ==\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit(\"setextHeadingLine\");\n      return ok(code);\n    }\n    return nok(code);\n  }\n}", "/**\n * @import {\n *   InitialConstruct,\n *   Initializer,\n *   State,\n *   TokenizeContext\n * } from 'micromark-util-types'\n */\n\nimport { blankLine, content } from 'micromark-core-commonmark';\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding } from 'micromark-util-character';\n/** @type {InitialConstruct} */\nexport const flow = {\n  tokenize: initializeFlow\n};\n\n/**\n * @this {TokenizeContext}\n *   Self.\n * @type {Initializer}\n *   Initializer.\n */\nfunction initializeFlow(effects) {\n  const self = this;\n  const initial = effects.attempt(\n  // Try to parse a blank line.\n  blankLine, atBlankEnding,\n  // Try to parse initial flow (essentially, only code).\n  effects.attempt(this.parser.constructs.flowInitial, afterConstruct, factorySpace(effects, effects.attempt(this.parser.constructs.flow, afterConstruct, effects.attempt(content, afterConstruct)), \"linePrefix\")));\n  return initial;\n\n  /** @type {State} */\n  function atBlankEnding(code) {\n    if (code === null) {\n      effects.consume(code);\n      return;\n    }\n    effects.enter(\"lineEndingBlank\");\n    effects.consume(code);\n    effects.exit(\"lineEndingBlank\");\n    self.currentConstruct = undefined;\n    return initial;\n  }\n\n  /** @type {State} */\n  function afterConstruct(code) {\n    if (code === null) {\n      effects.consume(code);\n      return;\n    }\n    effects.enter(\"lineEnding\");\n    effects.consume(code);\n    effects.exit(\"lineEnding\");\n    self.currentConstruct = undefined;\n    return initial;\n  }\n}", "/**\n * @import {\n *   Code,\n *   InitialConstruct,\n *   Initializer,\n *   Resolver,\n *   State,\n *   TokenizeContext\n * } from 'micromark-util-types'\n */\n\nimport { EditMap } from 'micromark-util-edit-map';\nexport const resolver = {\n  resolveAll: createResolver()\n};\nexport const string = initializeFactory('string');\nexport const text = initializeFactory('text');\n\n/**\n * @param {'string' | 'text'} field\n *   Field.\n * @returns {InitialConstruct}\n *   Construct.\n */\nfunction initializeFactory(field) {\n  return {\n    resolveAll: createResolver(field === 'text' ? resolveAllLineSuffixes : undefined),\n    tokenize: initializeText\n  };\n\n  /**\n   * @this {TokenizeContext}\n   *   Context.\n   * @type {Initializer}\n   */\n  function initializeText(effects) {\n    const self = this;\n    const constructs = this.parser.constructs[field];\n    const text = effects.attempt(constructs, start, notText);\n    return start;\n\n    /** @type {State} */\n    function start(code) {\n      return atBreak(code) ? text(code) : notText(code);\n    }\n\n    /** @type {State} */\n    function notText(code) {\n      if (code === null) {\n        effects.consume(code);\n        return;\n      }\n      effects.enter(\"data\");\n      effects.consume(code);\n      return data;\n    }\n\n    /** @type {State} */\n    function data(code) {\n      if (atBreak(code)) {\n        effects.exit(\"data\");\n        return text(code);\n      }\n\n      // Data.\n      effects.consume(code);\n      return data;\n    }\n\n    /**\n     * @param {Code} code\n     *   Code.\n     * @returns {boolean}\n     *   Whether the code is a break.\n     */\n    function atBreak(code) {\n      if (code === null) {\n        return true;\n      }\n      const list = constructs[code];\n      let index = -1;\n      if (list) {\n        // Always populated by defaults.\n\n        while (++index < list.length) {\n          const item = list[index];\n          if (!item.previous || item.previous.call(self, self.previous)) {\n            return true;\n          }\n        }\n      }\n      return false;\n    }\n  }\n}\n\n/**\n * @param {Resolver | undefined} [extraResolver]\n *   Resolver.\n * @returns {Resolver}\n *   Resolver.\n */\nfunction createResolver(extraResolver) {\n  return resolveAllText;\n\n  /** @type {Resolver} */\n  function resolveAllText(events, context) {\n    let index = -1;\n    /** @type {number | undefined} */\n    let enter;\n\n    // A rather boring computation (to merge adjacent `data` events) which\n    // improves mm performance by 29%.\n    while (++index <= events.length) {\n      if (enter === undefined) {\n        if (events[index] && events[index][1].type === \"data\") {\n          enter = index;\n          index++;\n        }\n      } else if (!events[index] || events[index][1].type !== \"data\") {\n        // Don\u2019t do anything if there is one data token.\n        if (index !== enter + 2) {\n          events[enter][1].end = events[index - 1][1].end;\n          events.splice(enter + 2, index - enter - 2);\n          index = enter + 2;\n        }\n        enter = undefined;\n      }\n    }\n    return extraResolver ? extraResolver(events, context) : events;\n  }\n}\n\n/**\n * A rather ugly set of instructions which again looks at chunks in the input\n * stream.\n * The reason to do this here is that it is *much* faster to parse in reverse.\n * And that we can\u2019t hook into `null` to split the line suffix before an EOF.\n * To do: figure out if we can make this into a clean utility, or even in core.\n * As it will be useful for GFMs literal autolink extension (and maybe even\n * tables?)\n *\n * @type {Resolver}\n */\nfunction resolveAllLineSuffixes(events, context) {\n  const editMap = new EditMap();\n  let eventIndex = 0; // Skip first.\n\n  while (++eventIndex <= events.length) {\n    if ((eventIndex === events.length || events[eventIndex][1].type === \"lineEnding\") && events[eventIndex - 1][1].type === \"data\") {\n      const data = events[eventIndex - 1][1];\n      const chunks = context.sliceStream(data);\n      let index = chunks.length;\n      let bufferIndex = -1;\n      let size = 0;\n      /** @type {boolean | undefined} */\n      let tabs;\n      while (index--) {\n        const chunk = chunks[index];\n        if (typeof chunk === 'string') {\n          bufferIndex = chunk.length;\n          while (chunk.charCodeAt(bufferIndex - 1) === 32) {\n            size++;\n            bufferIndex--;\n          }\n          if (bufferIndex) {\n            break;\n          }\n          bufferIndex = -1;\n        }\n        // Number\n        else if (chunk === -2) {\n          tabs = true;\n          size++;\n        } else if (chunk === -1) {\n          // Empty\n        } else {\n          // Replacement character, exit.\n          index++;\n          break;\n        }\n      }\n\n      // Allow final trailing whitespace.\n      if (context._contentTypeTextTrailing && eventIndex === events.length) {\n        size = 0;\n      }\n      if (size) {\n        const token = {\n          type: eventIndex === events.length || tabs || size < 2 ? \"lineSuffix\" : \"hardBreakTrailing\",\n          start: {\n            _bufferIndex: index ? bufferIndex : data.start._bufferIndex + bufferIndex,\n            _index: data.start._index + index,\n            line: data.end.line,\n            column: data.end.column - size,\n            offset: data.end.offset - size\n          },\n          end: {\n            ...data.end\n          }\n        };\n        data.end = {\n          ...token.start\n        };\n        if (data.start.offset === data.end.offset) {\n          Object.assign(data, token);\n        } else {\n          editMap.add(eventIndex, 0, [['enter', token, context], ['exit', token, context]]);\n        }\n      }\n      eventIndex++;\n    }\n  }\n  editMap.consume(events);\n  return events;\n}", "/**\n * @import {Extension} from 'micromark-util-types'\n */\n\nimport { attention, autolink, blockQuote, characterEscape, characterReference, codeFenced, codeIndented, codeText, definition, hardBreakEscape, headingAtx, htmlFlow, htmlText, labelEnd, labelStartImage, labelStartLink, lineEnding, list, setextUnderline, thematicBreak } from 'micromark-core-commonmark';\nimport { resolver as resolveText } from './initialize/text.js';\n\n/** @satisfies {Extension['document']} */\nexport const document = {\n  [42]: list,\n  [43]: list,\n  [45]: list,\n  [48]: list,\n  [49]: list,\n  [50]: list,\n  [51]: list,\n  [52]: list,\n  [53]: list,\n  [54]: list,\n  [55]: list,\n  [56]: list,\n  [57]: list,\n  [62]: blockQuote\n};\n\n/** @satisfies {Extension['contentInitial']} */\nexport const contentInitial = {\n  [91]: definition\n};\n\n/** @satisfies {Extension['flowInitial']} */\nexport const flowInitial = {\n  [-2]: codeIndented,\n  [-1]: codeIndented,\n  [32]: codeIndented\n};\n\n/** @satisfies {Extension['flow']} */\nexport const flow = {\n  [35]: headingAtx,\n  [42]: thematicBreak,\n  [45]: [setextUnderline, thematicBreak],\n  [60]: htmlFlow,\n  [61]: setextUnderline,\n  [95]: thematicBreak,\n  [96]: codeFenced,\n  [126]: codeFenced\n};\n\n/** @satisfies {Extension['string']} */\nexport const string = {\n  [38]: characterReference,\n  [92]: characterEscape\n};\n\n/** @satisfies {Extension['text']} */\nexport const text = {\n  [-5]: lineEnding,\n  [-4]: lineEnding,\n  [-3]: lineEnding,\n  [33]: labelStartImage,\n  [38]: characterReference,\n  [42]: attention,\n  [60]: [autolink, htmlText],\n  [91]: labelStartLink,\n  [92]: [hardBreakEscape, characterEscape],\n  [93]: labelEnd,\n  [95]: attention,\n  [96]: codeText\n};\n\n/** @satisfies {Extension['insideSpan']} */\nexport const insideSpan = {\n  null: [attention, resolveText]\n};\n\n/** @satisfies {Extension['attentionMarkers']} */\nexport const attentionMarkers = {\n  null: [42, 95]\n};\n\n/** @satisfies {Extension['disable']} */\nexport const disable = {\n  null: []\n};", "/**\n * @import {\n *   Chunk,\n *   Code,\n *   ConstructRecord,\n *   Construct,\n *   Effects,\n *   InitialConstruct,\n *   ParseContext,\n *   Point,\n *   State,\n *   TokenizeContext,\n *   Token\n * } from 'micromark-util-types'\n */\n\n/**\n * @callback Restore\n *   Restore the state.\n * @returns {undefined}\n *   Nothing.\n *\n * @typedef Info\n *   Info.\n * @property {Restore} restore\n *   Restore.\n * @property {number} from\n *   From.\n *\n * @callback ReturnHandle\n *   Handle a successful run.\n * @param {Construct} construct\n *   Construct.\n * @param {Info} info\n *   Info.\n * @returns {undefined}\n *   Nothing.\n */\n\nimport { markdownLineEnding } from 'micromark-util-character';\nimport { push, splice } from 'micromark-util-chunked';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/**\n * Create a tokenizer.\n * Tokenizers deal with one type of data (e.g., containers, flow, text).\n * The parser is the object dealing with it all.\n * `initialize` works like other constructs, except that only its `tokenize`\n * function is used, in which case it doesn\u2019t receive an `ok` or `nok`.\n * `from` can be given to set the point before the first character, although\n * when further lines are indented, they must be set with `defineSkip`.\n *\n * @param {ParseContext} parser\n *   Parser.\n * @param {InitialConstruct} initialize\n *   Construct.\n * @param {Omit<Point, '_bufferIndex' | '_index'> | undefined} [from]\n *   Point (optional).\n * @returns {TokenizeContext}\n *   Context.\n */\nexport function createTokenizer(parser, initialize, from) {\n  /** @type {Point} */\n  let point = {\n    _bufferIndex: -1,\n    _index: 0,\n    line: from && from.line || 1,\n    column: from && from.column || 1,\n    offset: from && from.offset || 0\n  };\n  /** @type {Record<string, number>} */\n  const columnStart = {};\n  /** @type {Array<Construct>} */\n  const resolveAllConstructs = [];\n  /** @type {Array<Chunk>} */\n  let chunks = [];\n  /** @type {Array<Token>} */\n  let stack = [];\n  /** @type {boolean | undefined} */\n  let consumed = true;\n\n  /**\n   * Tools used for tokenizing.\n   *\n   * @type {Effects}\n   */\n  const effects = {\n    attempt: constructFactory(onsuccessfulconstruct),\n    check: constructFactory(onsuccessfulcheck),\n    consume,\n    enter,\n    exit,\n    interrupt: constructFactory(onsuccessfulcheck, {\n      interrupt: true\n    })\n  };\n\n  /**\n   * State and tools for resolving and serializing.\n   *\n   * @type {TokenizeContext}\n   */\n  const context = {\n    code: null,\n    containerState: {},\n    defineSkip,\n    events: [],\n    now,\n    parser,\n    previous: null,\n    sliceSerialize,\n    sliceStream,\n    write\n  };\n\n  /**\n   * The state function.\n   *\n   * @type {State | undefined}\n   */\n  let state = initialize.tokenize.call(context, effects);\n\n  /**\n   * Track which character we expect to be consumed, to catch bugs.\n   *\n   * @type {Code}\n   */\n  let expectedCode;\n  if (initialize.resolveAll) {\n    resolveAllConstructs.push(initialize);\n  }\n  return context;\n\n  /** @type {TokenizeContext['write']} */\n  function write(slice) {\n    chunks = push(chunks, slice);\n    main();\n\n    // Exit if we\u2019re not done, resolve might change stuff.\n    if (chunks[chunks.length - 1] !== null) {\n      return [];\n    }\n    addResult(initialize, 0);\n\n    // Otherwise, resolve, and exit.\n    context.events = resolveAll(resolveAllConstructs, context.events, context);\n    return context.events;\n  }\n\n  //\n  // Tools.\n  //\n\n  /** @type {TokenizeContext['sliceSerialize']} */\n  function sliceSerialize(token, expandTabs) {\n    return serializeChunks(sliceStream(token), expandTabs);\n  }\n\n  /** @type {TokenizeContext['sliceStream']} */\n  function sliceStream(token) {\n    return sliceChunks(chunks, token);\n  }\n\n  /** @type {TokenizeContext['now']} */\n  function now() {\n    // This is a hot path, so we clone manually instead of `Object.assign({}, point)`\n    const {\n      _bufferIndex,\n      _index,\n      line,\n      column,\n      offset\n    } = point;\n    return {\n      _bufferIndex,\n      _index,\n      line,\n      column,\n      offset\n    };\n  }\n\n  /** @type {TokenizeContext['defineSkip']} */\n  function defineSkip(value) {\n    columnStart[value.line] = value.column;\n    accountForPotentialSkip();\n  }\n\n  //\n  // State management.\n  //\n\n  /**\n   * Main loop (note that `_index` and `_bufferIndex` in `point` are modified by\n   * `consume`).\n   * Here is where we walk through the chunks, which either include strings of\n   * several characters, or numerical character codes.\n   * The reason to do this in a loop instead of a call is so the stack can\n   * drain.\n   *\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function main() {\n    while (point._index < chunks.length) {\n      const chunk = chunks[point._index];\n\n      // If we\u2019re in a buffer chunk, loop through it.\n      if (typeof chunk === 'string') {\n        const chunkIndex = point._index;\n        if (point._bufferIndex < 0) {\n          point._bufferIndex = 0;\n        }\n        while (point._index === chunkIndex && point._bufferIndex < chunk.length) {\n          go(chunk.charCodeAt(point._bufferIndex));\n        }\n      } else {\n        go(chunk);\n      }\n    }\n  }\n\n  /**\n   * Deal with one code.\n   *\n   * @param {Code} code\n   *   Code.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function go(code) {\n    consumed = undefined;\n    expectedCode = code;\n    state = state(code);\n  }\n\n  /** @type {Effects['consume']} */\n  function consume(code) {\n    if (markdownLineEnding(code)) {\n      point.line++;\n      point.column = 1;\n      point.offset += code === -3 ? 2 : 1;\n      accountForPotentialSkip();\n    } else if (code !== -1) {\n      point.column++;\n      point.offset++;\n    }\n\n    // Not in a string chunk.\n    if (point._bufferIndex < 0) {\n      point._index++;\n    } else {\n      point._bufferIndex++;\n\n      // At end of string chunk.\n      if (point._bufferIndex ===\n      // Points w/ non-negative `_bufferIndex` reference\n      // strings.\n      /** @type {string} */\n      chunks[point._index].length) {\n        point._bufferIndex = -1;\n        point._index++;\n      }\n    }\n\n    // Expose the previous character.\n    context.previous = code;\n\n    // Mark as consumed.\n    consumed = true;\n  }\n\n  /** @type {Effects['enter']} */\n  function enter(type, fields) {\n    /** @type {Token} */\n    // @ts-expect-error Patch instead of assign required fields to help GC.\n    const token = fields || {};\n    token.type = type;\n    token.start = now();\n    context.events.push(['enter', token, context]);\n    stack.push(token);\n    return token;\n  }\n\n  /** @type {Effects['exit']} */\n  function exit(type) {\n    const token = stack.pop();\n    token.end = now();\n    context.events.push(['exit', token, context]);\n    return token;\n  }\n\n  /**\n   * Use results.\n   *\n   * @type {ReturnHandle}\n   */\n  function onsuccessfulconstruct(construct, info) {\n    addResult(construct, info.from);\n  }\n\n  /**\n   * Discard results.\n   *\n   * @type {ReturnHandle}\n   */\n  function onsuccessfulcheck(_, info) {\n    info.restore();\n  }\n\n  /**\n   * Factory to attempt/check/interrupt.\n   *\n   * @param {ReturnHandle} onreturn\n   *   Callback.\n   * @param {{interrupt?: boolean | undefined} | undefined} [fields]\n   *   Fields.\n   */\n  function constructFactory(onreturn, fields) {\n    return hook;\n\n    /**\n     * Handle either an object mapping codes to constructs, a list of\n     * constructs, or a single construct.\n     *\n     * @param {Array<Construct> | ConstructRecord | Construct} constructs\n     *   Constructs.\n     * @param {State} returnState\n     *   State.\n     * @param {State | undefined} [bogusState]\n     *   State.\n     * @returns {State}\n     *   State.\n     */\n    function hook(constructs, returnState, bogusState) {\n      /** @type {ReadonlyArray<Construct>} */\n      let listOfConstructs;\n      /** @type {number} */\n      let constructIndex;\n      /** @type {Construct} */\n      let currentConstruct;\n      /** @type {Info} */\n      let info;\n      return Array.isArray(constructs) ? /* c8 ignore next 1 */\n      handleListOfConstructs(constructs) : 'tokenize' in constructs ?\n      // Looks like a construct.\n      handleListOfConstructs([(/** @type {Construct} */constructs)]) : handleMapOfConstructs(constructs);\n\n      /**\n       * Handle a list of construct.\n       *\n       * @param {ConstructRecord} map\n       *   Constructs.\n       * @returns {State}\n       *   State.\n       */\n      function handleMapOfConstructs(map) {\n        return start;\n\n        /** @type {State} */\n        function start(code) {\n          const left = code !== null && map[code];\n          const all = code !== null && map.null;\n          const list = [\n          // To do: add more extension tests.\n          /* c8 ignore next 2 */\n          ...(Array.isArray(left) ? left : left ? [left] : []), ...(Array.isArray(all) ? all : all ? [all] : [])];\n          return handleListOfConstructs(list)(code);\n        }\n      }\n\n      /**\n       * Handle a list of construct.\n       *\n       * @param {ReadonlyArray<Construct>} list\n       *   Constructs.\n       * @returns {State}\n       *   State.\n       */\n      function handleListOfConstructs(list) {\n        listOfConstructs = list;\n        constructIndex = 0;\n        if (list.length === 0) {\n          return bogusState;\n        }\n        return handleConstruct(list[constructIndex]);\n      }\n\n      /**\n       * Handle a single construct.\n       *\n       * @param {Construct} construct\n       *   Construct.\n       * @returns {State}\n       *   State.\n       */\n      function handleConstruct(construct) {\n        return start;\n\n        /** @type {State} */\n        function start(code) {\n          // To do: not needed to store if there is no bogus state, probably?\n          // Currently doesn\u2019t work because `inspect` in document does a check\n          // w/o a bogus, which doesn\u2019t make sense. But it does seem to help perf\n          // by not storing.\n          info = store();\n          currentConstruct = construct;\n          if (!construct.partial) {\n            context.currentConstruct = construct;\n          }\n\n          // Always populated by defaults.\n\n          if (construct.name && context.parser.constructs.disable.null.includes(construct.name)) {\n            return nok(code);\n          }\n          return construct.tokenize.call(\n          // If we do have fields, create an object w/ `context` as its\n          // prototype.\n          // This allows a \u201Clive binding\u201D, which is needed for `interrupt`.\n          fields ? Object.assign(Object.create(context), fields) : context, effects, ok, nok)(code);\n        }\n      }\n\n      /** @type {State} */\n      function ok(code) {\n        consumed = true;\n        onreturn(currentConstruct, info);\n        return returnState;\n      }\n\n      /** @type {State} */\n      function nok(code) {\n        consumed = true;\n        info.restore();\n        if (++constructIndex < listOfConstructs.length) {\n          return handleConstruct(listOfConstructs[constructIndex]);\n        }\n        return bogusState;\n      }\n    }\n  }\n\n  /**\n   * @param {Construct} construct\n   *   Construct.\n   * @param {number} from\n   *   From.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function addResult(construct, from) {\n    if (construct.resolveAll && !resolveAllConstructs.includes(construct)) {\n      resolveAllConstructs.push(construct);\n    }\n    if (construct.resolve) {\n      splice(context.events, from, context.events.length - from, construct.resolve(context.events.slice(from), context));\n    }\n    if (construct.resolveTo) {\n      context.events = construct.resolveTo(context.events, context);\n    }\n  }\n\n  /**\n   * Store state.\n   *\n   * @returns {Info}\n   *   Info.\n   */\n  function store() {\n    const startPoint = now();\n    const startPrevious = context.previous;\n    const startCurrentConstruct = context.currentConstruct;\n    const startEventsIndex = context.events.length;\n    const startStack = Array.from(stack);\n    return {\n      from: startEventsIndex,\n      restore\n    };\n\n    /**\n     * Restore state.\n     *\n     * @returns {undefined}\n     *   Nothing.\n     */\n    function restore() {\n      point = startPoint;\n      context.previous = startPrevious;\n      context.currentConstruct = startCurrentConstruct;\n      context.events.length = startEventsIndex;\n      stack = startStack;\n      accountForPotentialSkip();\n    }\n  }\n\n  /**\n   * Move the current point a bit forward in the line when it\u2019s on a column\n   * skip.\n   *\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function accountForPotentialSkip() {\n    if (point.line in columnStart && point.column < 2) {\n      point.column = columnStart[point.line];\n      point.offset += columnStart[point.line] - 1;\n    }\n  }\n}\n\n/**\n * Get the chunks from a slice of chunks in the range of a token.\n *\n * @param {ReadonlyArray<Chunk>} chunks\n *   Chunks.\n * @param {Pick<Token, 'end' | 'start'>} token\n *   Token.\n * @returns {Array<Chunk>}\n *   Chunks.\n */\nfunction sliceChunks(chunks, token) {\n  const startIndex = token.start._index;\n  const startBufferIndex = token.start._bufferIndex;\n  const endIndex = token.end._index;\n  const endBufferIndex = token.end._bufferIndex;\n  /** @type {Array<Chunk>} */\n  let view;\n  if (startIndex === endIndex) {\n    // @ts-expect-error `_bufferIndex` is used on string chunks.\n    view = [chunks[startIndex].slice(startBufferIndex, endBufferIndex)];\n  } else {\n    view = chunks.slice(startIndex, endIndex);\n    if (startBufferIndex > -1) {\n      const head = view[0];\n      if (typeof head === 'string') {\n        view[0] = head.slice(startBufferIndex);\n        /* c8 ignore next 4 -- used to be used, no longer */\n      } else {\n        view.shift();\n      }\n    }\n    if (endBufferIndex > 0) {\n      // @ts-expect-error `_bufferIndex` is used on string chunks.\n      view.push(chunks[endIndex].slice(0, endBufferIndex));\n    }\n  }\n  return view;\n}\n\n/**\n * Get the string value of a slice of chunks.\n *\n * @param {ReadonlyArray<Chunk>} chunks\n *   Chunks.\n * @param {boolean | undefined} [expandTabs=false]\n *   Whether to expand tabs (default: `false`).\n * @returns {string}\n *   Result.\n */\nfunction serializeChunks(chunks, expandTabs) {\n  let index = -1;\n  /** @type {Array<string>} */\n  const result = [];\n  /** @type {boolean | undefined} */\n  let atTab;\n  while (++index < chunks.length) {\n    const chunk = chunks[index];\n    /** @type {string} */\n    let value;\n    if (typeof chunk === 'string') {\n      value = chunk;\n    } else {\n      switch (chunk) {\n        case -5:\n          {\n            value = \"\\r\";\n            break;\n          }\n        case -4:\n          {\n            value = \"\\n\";\n            break;\n          }\n        case -3:\n          {\n            value = \"\\r\" + \"\\n\";\n            break;\n          }\n        case -2:\n          {\n            value = expandTabs ? \" \" : \"\\t\";\n            break;\n          }\n        case -1:\n          {\n            if (!expandTabs && atTab) {\n              continue;\n            }\n            value = \" \";\n            break;\n          }\n        default:\n          {\n            // Currently only replacement character.\n            value = String.fromCharCode(chunk);\n          }\n      }\n    }\n    atTab = chunk === -2;\n    result.push(value);\n  }\n  return result.join('');\n}", "/**\n * @import {\n *   Create,\n *   FullNormalizedExtension,\n *   InitialConstruct,\n *   ParseContext,\n *   ParseOptions\n * } from 'micromark-util-types'\n */\n\nimport { combineExtensions } from 'micromark-util-combine-extensions';\nimport { content } from './initialize/content.js';\nimport { document } from './initialize/document.js';\nimport { flow } from './initialize/flow.js';\nimport { string, text } from './initialize/text.js';\nimport * as defaultConstructs from './constructs.js';\nimport { createTokenizer } from './create-tokenizer.js';\n\n/**\n * @param {ParseOptions | null | undefined} [options]\n *   Configuration (optional).\n * @returns {ParseContext}\n *   Parser.\n */\nexport function parse(options) {\n  const settings = options || {};\n  const constructs = /** @type {FullNormalizedExtension} */\n  combineExtensions([defaultConstructs, ...(settings.extensions || [])]);\n\n  /** @type {ParseContext} */\n  const parser = {\n    constructs,\n    content: create(content),\n    defined: [],\n    document: create(document),\n    flow: create(flow),\n    lazy: {},\n    string: create(string),\n    text: create(text)\n  };\n  return parser;\n\n  /**\n   * @param {InitialConstruct} initial\n   *   Construct to start with.\n   * @returns {Create}\n   *   Create a tokenizer.\n   */\n  function create(initial) {\n    return creator;\n    /** @type {Create} */\n    function creator(from) {\n      return createTokenizer(parser, initial, from);\n    }\n  }\n}", "/**\n * @import {Event} from 'micromark-util-types'\n */\n\nimport { subtokenize } from 'micromark-util-subtokenize';\n\n/**\n * @param {Array<Event>} events\n *   Events.\n * @returns {Array<Event>}\n *   Events.\n */\nexport function postprocess(events) {\n  while (!subtokenize(events)) {\n    // Empty\n  }\n  return events;\n}", "/**\n * @import {Chunk, Code, Encoding, Value} from 'micromark-util-types'\n */\n\n/**\n * @callback Preprocessor\n *   Preprocess a value.\n * @param {Value} value\n *   Value.\n * @param {Encoding | null | undefined} [encoding]\n *   Encoding when `value` is a typed array (optional).\n * @param {boolean | null | undefined} [end=false]\n *   Whether this is the last chunk (default: `false`).\n * @returns {Array<Chunk>}\n *   Chunks.\n */\n\nconst search = /[\\0\\t\\n\\r]/g;\n\n/**\n * @returns {Preprocessor}\n *   Preprocess a value.\n */\nexport function preprocess() {\n  let column = 1;\n  let buffer = '';\n  /** @type {boolean | undefined} */\n  let start = true;\n  /** @type {boolean | undefined} */\n  let atCarriageReturn;\n  return preprocessor;\n\n  /** @type {Preprocessor} */\n  // eslint-disable-next-line complexity\n  function preprocessor(value, encoding, end) {\n    value = buffer + (typeof value === 'string' ? value.toString() : new TextDecoder(encoding || undefined).decode(value));\n\n    /** @type {Array<Chunk>} */\n    const chunks = [];\n    let startPosition = 0;\n    buffer = '';\n    if (start) {\n      // To do: `markdown-rs` actually parses BOMs (byte order mark).\n      if (value.charCodeAt(0) === 65279) {\n        startPosition++;\n      }\n      start = undefined;\n    }\n    while (startPosition < value.length) {\n      search.lastIndex = startPosition;\n      const match = search.exec(value);\n      const endPosition = match && match.index !== undefined ? match.index : value.length;\n      const code = value.charCodeAt(endPosition);\n      if (!match) {\n        buffer = value.slice(startPosition);\n        break;\n      }\n      if (code === 10 && startPosition === endPosition && atCarriageReturn) {\n        chunks.push(-3);\n        atCarriageReturn = undefined;\n      } else {\n        if (atCarriageReturn) {\n          chunks.push(-5);\n          atCarriageReturn = undefined;\n        }\n        if (startPosition < endPosition) {\n          chunks.push(value.slice(startPosition, endPosition));\n          column += endPosition - startPosition;\n        }\n        switch (code) {\n          case 0:\n            {\n              chunks.push(65533);\n              column++;\n              break;\n            }\n          case 9:\n            {\n              const next = Math.ceil(column / 4) * 4;\n              chunks.push(-2);\n              while (column++ < next) {\n                chunks.push(-1);\n              }\n              break;\n            }\n          case 10:\n            {\n              chunks.push(-4);\n              column = 1;\n              break;\n            }\n          default:\n            {\n              atCarriageReturn = true;\n              column = 1;\n            }\n        }\n      }\n      startPosition = endPosition + 1;\n    }\n    if (end) {\n      if (atCarriageReturn) {\n        chunks.push(-5);\n      }\n      if (buffer) {\n        chunks.push(buffer);\n      }\n      chunks.push(null);\n    }\n    return chunks;\n  }\n}", "import { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nconst characterEscapeOrReference = /\\\\([!-/:-@[-`{-~])|&(#(?:\\d{1,7}|x[\\da-f]{1,6})|[\\da-z]{1,31});/gi;\n\n/**\n * Decode markdown strings (which occur in places such as fenced code info\n * strings, destinations, labels, and titles).\n *\n * The \u201Cstring\u201D content type allows character escapes and -references.\n * This decodes those.\n *\n * @param {string} value\n *   Value to decode.\n * @returns {string}\n *   Decoded value.\n */\nexport function decodeString(value) {\n  return value.replace(characterEscapeOrReference, decode);\n}\n\n/**\n * @param {string} $0\n *   Match.\n * @param {string} $1\n *   Character escape.\n * @param {string} $2\n *   Character reference.\n * @returns {string}\n *   Decoded value\n */\nfunction decode($0, $1, $2) {\n  if ($1) {\n    // Escape.\n    return $1;\n  }\n\n  // Reference.\n  const head = $2.charCodeAt(0);\n  if (head === 35) {\n    const head = $2.charCodeAt(1);\n    const hex = head === 120 || head === 88;\n    return decodeNumericCharacterReference($2.slice(hex ? 2 : 1), hex ? 16 : 10);\n  }\n  return decodeNamedCharacterReference($2) || $0;\n}", "/**\n * @import {\n *   Break,\n *   Blockquote,\n *   Code,\n *   Definition,\n *   Emphasis,\n *   Heading,\n *   Html,\n *   Image,\n *   InlineCode,\n *   Link,\n *   ListItem,\n *   List,\n *   Nodes,\n *   Paragraph,\n *   PhrasingContent,\n *   ReferenceType,\n *   Root,\n *   Strong,\n *   Text,\n *   ThematicBreak\n * } from 'mdast'\n * @import {\n *   Encoding,\n *   Event,\n *   Token,\n *   Value\n * } from 'micromark-util-types'\n * @import {Point} from 'unist'\n * @import {\n *   CompileContext,\n *   CompileData,\n *   Config,\n *   Extension,\n *   Handle,\n *   OnEnterError,\n *   Options\n * } from './types.js'\n */\n\nimport { toString } from 'mdast-util-to-string';\nimport { parse, postprocess, preprocess } from 'micromark';\nimport { decodeNumericCharacterReference } from 'micromark-util-decode-numeric-character-reference';\nimport { decodeString } from 'micromark-util-decode-string';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nimport { decodeNamedCharacterReference } from 'decode-named-character-reference';\nimport { stringifyPosition } from 'unist-util-stringify-position';\nconst own = {}.hasOwnProperty;\n\n/**\n * Turn markdown into a syntax tree.\n *\n * @overload\n * @param {Value} value\n * @param {Encoding | null | undefined} [encoding]\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @overload\n * @param {Value} value\n * @param {Options | null | undefined} [options]\n * @returns {Root}\n *\n * @param {Value} value\n *   Markdown to parse.\n * @param {Encoding | Options | null | undefined} [encoding]\n *   Character encoding for when `value` is `Buffer`.\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {Root}\n *   mdast tree.\n */\nexport function fromMarkdown(value, encoding, options) {\n  if (encoding && typeof encoding === 'object') {\n    options = encoding;\n    encoding = undefined;\n  }\n  return compiler(options)(postprocess(parse(options).document().write(preprocess()(value, encoding, true))));\n}\n\n/**\n * Note this compiler only understand complete buffering, not streaming.\n *\n * @param {Options | null | undefined} [options]\n */\nfunction compiler(options) {\n  /** @type {Config} */\n  const config = {\n    afterExit: [],\n    beforeEnter: [],\n    transforms: [],\n    canContainEols: ['emphasis', 'fragment', 'heading', 'paragraph', 'strong'],\n    enter: {\n      autolink: opener(link),\n      autolinkProtocol: onenterdata,\n      autolinkEmail: onenterdata,\n      atxHeading: opener(heading),\n      blockQuote: opener(blockQuote),\n      characterEscape: onenterdata,\n      characterReference: onenterdata,\n      codeFenced: opener(codeFlow),\n      codeFencedFenceInfo: buffer,\n      codeFencedFenceMeta: buffer,\n      codeIndented: opener(codeFlow, buffer),\n      codeText: opener(codeText, buffer),\n      codeTextData: onenterdata,\n      data: onenterdata,\n      codeFlowValue: onenterdata,\n      definition: opener(definition),\n      definitionDestinationString: buffer,\n      definitionLabelString: buffer,\n      definitionTitleString: buffer,\n      emphasis: opener(emphasis),\n      hardBreakEscape: opener(hardBreak),\n      hardBreakTrailing: opener(hardBreak),\n      htmlFlow: opener(html, buffer),\n      htmlFlowData: onenterdata,\n      htmlText: opener(html, buffer),\n      htmlTextData: onenterdata,\n      image: opener(image),\n      label: buffer,\n      link: opener(link),\n      listItem: opener(listItem),\n      listItemValue: onenterlistitemvalue,\n      listOrdered: opener(list, onenterlistordered),\n      listUnordered: opener(list),\n      paragraph: opener(paragraph),\n      reference: onenterreference,\n      referenceString: buffer,\n      resourceDestinationString: buffer,\n      resourceTitleString: buffer,\n      setextHeading: opener(heading),\n      strong: opener(strong),\n      thematicBreak: opener(thematicBreak)\n    },\n    exit: {\n      atxHeading: closer(),\n      atxHeadingSequence: onexitatxheadingsequence,\n      autolink: closer(),\n      autolinkEmail: onexitautolinkemail,\n      autolinkProtocol: onexitautolinkprotocol,\n      blockQuote: closer(),\n      characterEscapeValue: onexitdata,\n      characterReferenceMarkerHexadecimal: onexitcharacterreferencemarker,\n      characterReferenceMarkerNumeric: onexitcharacterreferencemarker,\n      characterReferenceValue: onexitcharacterreferencevalue,\n      characterReference: onexitcharacterreference,\n      codeFenced: closer(onexitcodefenced),\n      codeFencedFence: onexitcodefencedfence,\n      codeFencedFenceInfo: onexitcodefencedfenceinfo,\n      codeFencedFenceMeta: onexitcodefencedfencemeta,\n      codeFlowValue: onexitdata,\n      codeIndented: closer(onexitcodeindented),\n      codeText: closer(onexitcodetext),\n      codeTextData: onexitdata,\n      data: onexitdata,\n      definition: closer(),\n      definitionDestinationString: onexitdefinitiondestinationstring,\n      definitionLabelString: onexitdefinitionlabelstring,\n      definitionTitleString: onexitdefinitiontitlestring,\n      emphasis: closer(),\n      hardBreakEscape: closer(onexithardbreak),\n      hardBreakTrailing: closer(onexithardbreak),\n      htmlFlow: closer(onexithtmlflow),\n      htmlFlowData: onexitdata,\n      htmlText: closer(onexithtmltext),\n      htmlTextData: onexitdata,\n      image: closer(onexitimage),\n      label: onexitlabel,\n      labelText: onexitlabeltext,\n      lineEnding: onexitlineending,\n      link: closer(onexitlink),\n      listItem: closer(),\n      listOrdered: closer(),\n      listUnordered: closer(),\n      paragraph: closer(),\n      referenceString: onexitreferencestring,\n      resourceDestinationString: onexitresourcedestinationstring,\n      resourceTitleString: onexitresourcetitlestring,\n      resource: onexitresource,\n      setextHeading: closer(onexitsetextheading),\n      setextHeadingLineSequence: onexitsetextheadinglinesequence,\n      setextHeadingText: onexitsetextheadingtext,\n      strong: closer(),\n      thematicBreak: closer()\n    }\n  };\n  configure(config, (options || {}).mdastExtensions || []);\n\n  /** @type {CompileData} */\n  const data = {};\n  return compile;\n\n  /**\n   * Turn micromark events into an mdast tree.\n   *\n   * @param {Array<Event>} events\n   *   Events.\n   * @returns {Root}\n   *   mdast tree.\n   */\n  function compile(events) {\n    /** @type {Root} */\n    let tree = {\n      type: 'root',\n      children: [],\n      position: undefined\n    };\n    /** @type {Omit<CompileContext, 'sliceSerialize'>} */\n    const context = {\n      stack: [tree],\n      tokenStack: [],\n      config,\n      enter,\n      exit,\n      buffer,\n      resume,\n      data\n    };\n    /** @type {Array<number>} */\n    const listStack = [];\n    /** @type {Array<Event>} */\n    const prepared = [];\n    let index = -1;\n\n    // Add `listItem` tokens and infer spread.\n    // Each list is prepared while it is last in `prepared`, so nothing shifts.\n    while (++index < events.length) {\n      prepared.push(events[index]);\n      if (events[index][1].type === \"listOrdered\" || events[index][1].type === \"listUnordered\") {\n        if (events[index][0] === 'enter') {\n          listStack.push(prepared.length - 1);\n        } else {\n          const tail = listStack.pop();\n          prepareList(prepared, tail);\n        }\n      }\n    }\n    events = prepared;\n    index = -1;\n    while (++index < events.length) {\n      const handler = config[events[index][0]];\n      if (events[index][0] === 'enter' && config.beforeEnter.length > 0) {\n        callListeners(config.beforeEnter, {\n          ...context,\n          sliceSerialize: events[index][2].sliceSerialize\n        }, events[index][1]);\n      }\n      if (own.call(handler, events[index][1].type)) {\n        // Note: spread first, V8 has optimizations for object shape cloning.\n        handler[events[index][1].type].call({\n          ...context,\n          sliceSerialize: events[index][2].sliceSerialize\n        }, events[index][1]);\n      }\n      if (events[index][0] === 'exit' && config.afterExit.length > 0) {\n        callListeners(config.afterExit, {\n          ...context,\n          sliceSerialize: events[index][2].sliceSerialize\n        }, events[index][1]);\n      }\n    }\n\n    // Handle tokens still being open.\n    if (context.tokenStack.length > 0) {\n      const tail = context.tokenStack[context.tokenStack.length - 1];\n      const handler = tail[1] || defaultOnError;\n      handler.call(context, undefined, tail[0]);\n    }\n\n    // Figure out `root` position.\n    tree.position = {\n      start: point(events.length > 0 ? events[0][1].start : {\n        line: 1,\n        column: 1,\n        offset: 0\n      }),\n      end: point(events.length > 0 ? events[events.length - 2][1].end : {\n        line: 1,\n        column: 1,\n        offset: 0\n      })\n    };\n\n    // Call transforms.\n    index = -1;\n    while (++index < config.transforms.length) {\n      tree = config.transforms[index](tree) || tree;\n    }\n    return tree;\n  }\n\n  /**\n   * @param {Array<Handle>} listeners\n   *   Listeners.\n   * @param {CompileContext} context\n   *   Context.\n   * @param {Token} token\n   *   Token.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function callListeners(listeners, context, token) {\n    let index = -1;\n    while (++index < listeners.length) {\n      listeners[index].call(context, token);\n    }\n  }\n\n  /**\n   * @param {Array<Event>} events\n   *   Events, ending with the list to prepare.\n   * @param {number} start\n   *   Index of the list enter.\n   * @returns {undefined}\n   */\n  function prepareList(events, start) {\n    const end = events.length - 1;\n    let index = start - 1;\n    let containerBalance = -1;\n    let listSpread = false;\n    /** @type {Token | undefined} */\n    let listItem;\n    /** @type {number | undefined} */\n    let lineIndex;\n    /** @type {number | undefined} */\n    let firstBlankLineIndex;\n    /** @type {boolean | undefined} */\n    let atMarker;\n    /**\n     * `listItem` events to insert before the event at `at`, in walk order.\n     * Merged in after the walk, as inserting while walking would shift the\n     * rest of the list once per item.\n     * @type {Array<{at: number, event: Event}>}\n     */\n    const insertions = [];\n    while (++index <= end) {\n      const event = events[index];\n      switch (event[1].type) {\n        case \"listUnordered\":\n        case \"listOrdered\":\n        case \"blockQuote\":\n          {\n            if (event[0] === 'enter') {\n              containerBalance++;\n            } else {\n              containerBalance--;\n            }\n            atMarker = undefined;\n            break;\n          }\n        case \"lineEndingBlank\":\n          {\n            if (event[0] === 'enter') {\n              if (listItem && !atMarker && !containerBalance && !firstBlankLineIndex) {\n                firstBlankLineIndex = index;\n              }\n              atMarker = undefined;\n            }\n            break;\n          }\n        case \"linePrefix\":\n        case \"listItemValue\":\n        case \"listItemMarker\":\n        case \"listItemPrefix\":\n        case \"listItemPrefixWhitespace\":\n          {\n            // Empty.\n\n            break;\n          }\n        default:\n          {\n            atMarker = undefined;\n          }\n      }\n      if (!containerBalance && event[0] === 'enter' && event[1].type === \"listItemPrefix\" || containerBalance === -1 && event[0] === 'exit' && (event[1].type === \"listUnordered\" || event[1].type === \"listOrdered\")) {\n        if (listItem) {\n          let tailIndex = index;\n          lineIndex = undefined;\n          while (tailIndex--) {\n            const tailEvent = events[tailIndex];\n            if (tailEvent[1].type === \"lineEnding\" || tailEvent[1].type === \"lineEndingBlank\") {\n              if (tailEvent[0] === 'exit') continue;\n              if (lineIndex) {\n                events[lineIndex][1].type = \"lineEndingBlank\";\n                listSpread = true;\n              }\n              tailEvent[1].type = \"lineEnding\";\n              lineIndex = tailIndex;\n            } else if (tailEvent[1].type === \"linePrefix\" || tailEvent[1].type === \"blockQuotePrefix\" || tailEvent[1].type === \"blockQuotePrefixWhitespace\" || tailEvent[1].type === \"blockQuoteMarker\" || tailEvent[1].type === \"listItemIndent\") {\n              // Empty\n            } else {\n              break;\n            }\n          }\n          if (firstBlankLineIndex && (!lineIndex || firstBlankLineIndex < lineIndex)) {\n            listItem._spread = true;\n          }\n\n          // Fix position.\n          listItem.end = Object.assign({}, lineIndex ? events[lineIndex][1].start : event[1].end);\n          insertions.push({\n            at: lineIndex || index,\n            event: ['exit', listItem, event[2]]\n          });\n        }\n\n        // Create a new list item.\n        if (event[1].type === \"listItemPrefix\") {\n          /** @type {Token} */\n          const item = {\n            type: 'listItem',\n            _spread: false,\n            start: Object.assign({}, event[1].start),\n            // @ts-expect-error: we\u2019ll add `end` in a second.\n            end: undefined\n          };\n          listItem = item;\n          insertions.push({\n            at: index,\n            event: ['enter', item, event[2]]\n          });\n          firstBlankLineIndex = undefined;\n          atMarker = true;\n        }\n      }\n    }\n\n    // The list is at the end of `events`: take it off, then push it back with\n    // the insertions merged in.\n    // Nothing follows the list, so nothing shifts.\n    const listEvents = events.splice(start);\n    let insertion = 0;\n    index = -1;\n    while (++index < listEvents.length) {\n      while (insertion < insertions.length && insertions[insertion].at === start + index) {\n        events.push(insertions[insertion++].event);\n      }\n      events.push(listEvents[index]);\n    }\n    events[start][1]._spread = listSpread;\n  }\n\n  /**\n   * Create an opener handle.\n   *\n   * @param {(token: Token) => Nodes} create\n   *   Create a node.\n   * @param {Handle | undefined} [and]\n   *   Optional function to also run.\n   * @returns {Handle}\n   *   Handle.\n   */\n  function opener(create, and) {\n    return open;\n\n    /**\n     * @this {CompileContext}\n     * @param {Token} token\n     * @returns {undefined}\n     */\n    function open(token) {\n      enter.call(this, create(token), token);\n      if (and) and.call(this, token);\n    }\n  }\n\n  /**\n   * @type {CompileContext['buffer']}\n   */\n  function buffer() {\n    this.stack.push({\n      type: 'fragment',\n      children: []\n    });\n  }\n\n  /**\n   * @type {CompileContext['enter']}\n   */\n  function enter(node, token, errorHandler) {\n    const parent = this.stack[this.stack.length - 1];\n    /** @type {Array<Nodes>} */\n    const siblings = parent.children;\n    siblings.push(node);\n    this.stack.push(node);\n    this.tokenStack.push([token, errorHandler || undefined]);\n    node.position = {\n      start: point(token.start),\n      // @ts-expect-error: `end` will be patched later.\n      end: undefined\n    };\n  }\n\n  /**\n   * Create a closer handle.\n   *\n   * @param {Handle | undefined} [and]\n   *   Optional function to also run.\n   * @returns {Handle}\n   *   Handle.\n   */\n  function closer(and) {\n    return close;\n\n    /**\n     * @this {CompileContext}\n     * @param {Token} token\n     * @returns {undefined}\n     */\n    function close(token) {\n      if (and) and.call(this, token);\n      exit.call(this, token);\n    }\n  }\n\n  /**\n   * @type {CompileContext['exit']}\n   */\n  function exit(token, onExitError) {\n    const node = this.stack.pop();\n    const open = this.tokenStack.pop();\n    if (!open) {\n      throw new Error('Cannot close `' + token.type + '` (' + stringifyPosition({\n        start: token.start,\n        end: token.end\n      }) + '): it\u2019s not open');\n    }\n    if (open[0].type !== token.type) {\n      if (onExitError) {\n        onExitError.call(this, token, open[0]);\n      } else {\n        const handler = open[1] || defaultOnError;\n        handler.call(this, token, open[0]);\n      }\n    }\n    node.position.end = point(token.end);\n  }\n\n  /**\n   * @type {CompileContext['resume']}\n   */\n  function resume() {\n    return toString(this.stack.pop());\n  }\n\n  //\n  // Handlers.\n  //\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onenterlistordered() {\n    this.data.expectingFirstListItemValue = true;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onenterlistitemvalue(token) {\n    if (this.data.expectingFirstListItemValue) {\n      const ancestor = this.stack[this.stack.length - 2];\n      ancestor.start = Number.parseInt(this.sliceSerialize(token), 10);\n      this.data.expectingFirstListItemValue = undefined;\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefencedfenceinfo() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.lang = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefencedfencemeta() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.meta = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefencedfence() {\n    // Exit if this is the closing fence.\n    if (this.data.flowCodeInside) return;\n    this.buffer();\n    this.data.flowCodeInside = true;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodefenced() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data.replace(/^(\\r?\\n|\\r)|(\\r?\\n|\\r)$/g, '');\n    this.data.flowCodeInside = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcodeindented() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data.replace(/(\\r?\\n|\\r)$/g, '');\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitdefinitionlabelstring(token) {\n    const label = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.label = label;\n    node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitdefinitiontitlestring() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.title = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitdefinitiondestinationstring() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.url = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitatxheadingsequence(token) {\n    const node = this.stack[this.stack.length - 1];\n    if (!node.depth) {\n      const depth = this.sliceSerialize(token).length;\n      node.depth = depth;\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitsetextheadingtext() {\n    this.data.setextHeadingSlurpLineEnding = true;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitsetextheadinglinesequence(token) {\n    const node = this.stack[this.stack.length - 1];\n    node.depth = this.sliceSerialize(token).codePointAt(0) === 61 ? 1 : 2;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitsetextheading() {\n    this.data.setextHeadingSlurpLineEnding = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onenterdata(token) {\n    const node = this.stack[this.stack.length - 1];\n    /** @type {Array<Nodes>} */\n    const siblings = node.children;\n    let tail = siblings[siblings.length - 1];\n    if (!tail || tail.type !== 'text') {\n      // Add a new text node.\n      tail = text();\n      tail.position = {\n        start: point(token.start),\n        // @ts-expect-error: we\u2019ll add `end` later.\n        end: undefined\n      };\n      siblings.push(tail);\n    }\n    this.stack.push(tail);\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitdata(token) {\n    const tail = this.stack.pop();\n    tail.value += this.sliceSerialize(token);\n    tail.position.end = point(token.end);\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlineending(token) {\n    const context = this.stack[this.stack.length - 1];\n    // If we\u2019re at a hard break, include the line ending in there.\n    if (this.data.atHardBreak) {\n      const tail = context.children[context.children.length - 1];\n      tail.position.end = point(token.end);\n      this.data.atHardBreak = undefined;\n      return;\n    }\n    if (!this.data.setextHeadingSlurpLineEnding && config.canContainEols.includes(context.type)) {\n      onenterdata.call(this, token);\n      onexitdata.call(this, token);\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexithardbreak() {\n    this.data.atHardBreak = true;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexithtmlflow() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexithtmltext() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitcodetext() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.value = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlink() {\n    const node = this.stack[this.stack.length - 1];\n    // Note: there are also `identifier` and `label` fields on this link node!\n    // These are used / cleaned here.\n\n    // To do: clean.\n    if (this.data.inReference) {\n      /** @type {ReferenceType} */\n      const referenceType = this.data.referenceType || 'shortcut';\n      node.type += 'Reference';\n      // @ts-expect-error: mutate.\n      node.referenceType = referenceType;\n      // @ts-expect-error: mutate.\n      delete node.url;\n      delete node.title;\n    } else {\n      // @ts-expect-error: mutate.\n      delete node.identifier;\n      // @ts-expect-error: mutate.\n      delete node.label;\n    }\n    this.data.referenceType = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitimage() {\n    const node = this.stack[this.stack.length - 1];\n    // Note: there are also `identifier` and `label` fields on this link node!\n    // These are used / cleaned here.\n\n    // To do: clean.\n    if (this.data.inReference) {\n      /** @type {ReferenceType} */\n      const referenceType = this.data.referenceType || 'shortcut';\n      node.type += 'Reference';\n      // @ts-expect-error: mutate.\n      node.referenceType = referenceType;\n      // @ts-expect-error: mutate.\n      delete node.url;\n      delete node.title;\n    } else {\n      // @ts-expect-error: mutate.\n      delete node.identifier;\n      // @ts-expect-error: mutate.\n      delete node.label;\n    }\n    this.data.referenceType = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlabeltext(token) {\n    const string = this.sliceSerialize(token);\n    const ancestor = this.stack[this.stack.length - 2];\n    // @ts-expect-error: stash this on the node, as it might become a reference\n    // later.\n    ancestor.label = decodeString(string);\n    // @ts-expect-error: same as above.\n    ancestor.identifier = normalizeIdentifier(string).toLowerCase();\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitlabel() {\n    const fragment = this.stack[this.stack.length - 1];\n    const value = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    // Assume a reference.\n    this.data.inReference = true;\n    if (node.type === 'link') {\n      /** @type {Array<PhrasingContent>} */\n      const children = fragment.children;\n      node.children = children;\n    } else {\n      node.alt = value;\n    }\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitresourcedestinationstring() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.url = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitresourcetitlestring() {\n    const data = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    node.title = data;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitresource() {\n    this.data.inReference = undefined;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onenterreference() {\n    this.data.referenceType = 'collapsed';\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitreferencestring(token) {\n    const label = this.resume();\n    const node = this.stack[this.stack.length - 1];\n    // @ts-expect-error: stash this on the node, as it might become a reference\n    // later.\n    node.label = label;\n    // @ts-expect-error: same as above.\n    node.identifier = normalizeIdentifier(this.sliceSerialize(token)).toLowerCase();\n    this.data.referenceType = 'full';\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n\n  function onexitcharacterreferencemarker(token) {\n    this.data.characterReferenceType = token.type;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcharacterreferencevalue(token) {\n    const data = this.sliceSerialize(token);\n    const type = this.data.characterReferenceType;\n    /** @type {string} */\n    let value;\n    if (type) {\n      value = decodeNumericCharacterReference(data, type === \"characterReferenceMarkerNumeric\" ? 10 : 16);\n      this.data.characterReferenceType = undefined;\n    } else {\n      const result = decodeNamedCharacterReference(data);\n      value = result;\n    }\n    const tail = this.stack[this.stack.length - 1];\n    tail.value += value;\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitcharacterreference(token) {\n    const tail = this.stack.pop();\n    tail.position.end = point(token.end);\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitautolinkprotocol(token) {\n    onexitdata.call(this, token);\n    const node = this.stack[this.stack.length - 1];\n    node.url = this.sliceSerialize(token);\n  }\n\n  /**\n   * @this {CompileContext}\n   * @type {Handle}\n   */\n  function onexitautolinkemail(token) {\n    onexitdata.call(this, token);\n    const node = this.stack[this.stack.length - 1];\n    node.url = 'mailto:' + this.sliceSerialize(token);\n  }\n\n  //\n  // Creaters.\n  //\n\n  // Each node factory pre-declares `position` as undefined as the trailing\n  // property. enter() patches it to a real value, but the property already\n  // exists, so V8 sees a single hidden class for each node type from\n  // construction through the rest of the pipeline. Without the pre-declare,\n  // each node took a hidden-class transition when enter() added position.\n\n  /** @returns {Blockquote} */\n  function blockQuote() {\n    return {\n      type: 'blockquote',\n      children: [],\n      position: undefined\n    };\n  }\n\n  /** @returns {Code} */\n  function codeFlow() {\n    return {\n      type: 'code',\n      lang: null,\n      meta: null,\n      value: '',\n      position: undefined\n    };\n  }\n\n  /** @returns {InlineCode} */\n  function codeText() {\n    return {\n      type: 'inlineCode',\n      value: '',\n      position: undefined\n    };\n  }\n\n  /** @returns {Definition} */\n  function definition() {\n    return {\n      type: 'definition',\n      identifier: '',\n      label: null,\n      title: null,\n      url: '',\n      position: undefined\n    };\n  }\n\n  /** @returns {Emphasis} */\n  function emphasis() {\n    return {\n      type: 'emphasis',\n      children: [],\n      position: undefined\n    };\n  }\n\n  /** @returns {Heading} */\n  function heading() {\n    return {\n      type: 'heading',\n      // @ts-expect-error `depth` will be set later.\n      depth: 0,\n      children: [],\n      position: undefined\n    };\n  }\n\n  /** @returns {Break} */\n  function hardBreak() {\n    return {\n      type: 'break',\n      position: undefined\n    };\n  }\n\n  /** @returns {Html} */\n  function html() {\n    return {\n      type: 'html',\n      value: '',\n      position: undefined\n    };\n  }\n\n  /** @returns {Image} */\n  function image() {\n    return {\n      type: 'image',\n      title: null,\n      url: '',\n      alt: null,\n      position: undefined\n    };\n  }\n\n  /** @returns {Link} */\n  function link() {\n    return {\n      type: 'link',\n      title: null,\n      url: '',\n      children: [],\n      position: undefined\n    };\n  }\n\n  /**\n   * @param {Token} token\n   * @returns {List}\n   */\n  function list(token) {\n    return {\n      type: 'list',\n      ordered: token.type === 'listOrdered',\n      start: null,\n      spread: token._spread,\n      children: [],\n      position: undefined\n    };\n  }\n\n  /**\n   * @param {Token} token\n   * @returns {ListItem}\n   */\n  function listItem(token) {\n    return {\n      type: 'listItem',\n      spread: token._spread,\n      checked: null,\n      children: [],\n      position: undefined\n    };\n  }\n\n  /** @returns {Paragraph} */\n  function paragraph() {\n    return {\n      type: 'paragraph',\n      children: [],\n      position: undefined\n    };\n  }\n\n  /** @returns {Strong} */\n  function strong() {\n    return {\n      type: 'strong',\n      children: [],\n      position: undefined\n    };\n  }\n\n  /** @returns {Text} */\n  function text() {\n    return {\n      type: 'text',\n      value: '',\n      position: undefined\n    };\n  }\n\n  /** @returns {ThematicBreak} */\n  function thematicBreak() {\n    return {\n      type: 'thematicBreak',\n      position: undefined\n    };\n  }\n}\n\n/**\n * Copy a point-like value.\n *\n * @param {Point} d\n *   Point-like value.\n * @returns {Point}\n *   unist point.\n */\nfunction point(d) {\n  return {\n    line: d.line,\n    column: d.column,\n    offset: d.offset\n  };\n}\n\n/**\n * @param {Config} combined\n * @param {Array<Array<Extension> | Extension>} extensions\n * @returns {undefined}\n */\nfunction configure(combined, extensions) {\n  let index = -1;\n  while (++index < extensions.length) {\n    const value = extensions[index];\n    if (Array.isArray(value)) {\n      configure(combined, value);\n    } else {\n      extension(combined, value);\n    }\n  }\n}\n\n/**\n * @param {Config} combined\n * @param {Extension} extension\n * @returns {undefined}\n */\nfunction extension(combined, extension) {\n  /** @type {keyof Extension} */\n  let key;\n  for (key in extension) {\n    if (own.call(extension, key)) {\n      switch (key) {\n        case 'canContainEols':\n          {\n            const right = extension[key];\n            if (right) {\n              combined[key].push(...right);\n            }\n            break;\n          }\n        case 'transforms':\n          {\n            const right = extension[key];\n            if (right) {\n              combined[key].push(...right);\n            }\n            break;\n          }\n        case 'afterExit':\n        case 'beforeEnter':\n          {\n            const right = extension[key];\n            if (right) {\n              combined[key].push(right);\n            }\n            break;\n          }\n        case 'enter':\n        case 'exit':\n          {\n            const right = extension[key];\n            if (right) {\n              Object.assign(combined[key], right);\n            }\n            break;\n          }\n        // No default\n      }\n    }\n  }\n}\n\n/** @type {OnEnterError} */\nfunction defaultOnError(left, right) {\n  if (left) {\n    throw new Error('Cannot close `' + left.type + '` (' + stringifyPosition({\n      start: left.start,\n      end: left.end\n    }) + '): a different token (`' + right.type + '`, ' + stringifyPosition({\n      start: right.start,\n      end: right.end\n    }) + ') is open');\n  }\n  throw new Error('Cannot close document, a token (`' + right.type + '`, ' + stringifyPosition({\n    start: right.start,\n    end: right.end\n  }) + ') is still open');\n}", "/**\n * @typedef {import('mdast').Root} Root\n * @typedef {import('mdast-util-from-markdown').Options} FromMarkdownOptions\n * @typedef {import('unified').Parser<Root>} Parser\n * @typedef {import('unified').Processor<Root>} Processor\n */\n\n/**\n * @typedef {Omit<FromMarkdownOptions, 'extensions' | 'mdastExtensions'>} Options\n */\n\nimport {fromMarkdown} from 'mdast-util-from-markdown'\n\n/**\n * Aadd support for parsing from markdown.\n *\n * @param {Readonly<Options> | null | undefined} [options]\n *   Configuration (optional).\n * @returns {undefined}\n *   Nothing.\n */\nexport default function remarkParse(options) {\n  /** @type {Processor} */\n  // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n  const self = this\n\n  self.parser = parser\n\n  /**\n   * @type {Parser}\n   */\n  function parser(doc) {\n    return fromMarkdown(doc, {\n      ...self.data('settings'),\n      ...options,\n      // Note: these options are not in the readme.\n      // The goal is for them to be set by plugins on `data` instead of being\n      // passed by users.\n      extensions: self.data('micromarkExtensions') || [],\n      mdastExtensions: self.data('fromMarkdownExtensions') || []\n    })\n  }\n}\n", "/**\n * @import {Element} from 'hast'\n * @import {Blockquote} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `blockquote` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Blockquote} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function blockquote(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'blockquote',\n    properties: {},\n    children: state.wrap(state.all(node), true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {Element, Text} from 'hast'\n * @import {Break} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `break` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Break} node\n *   mdast node.\n * @returns {Array<Element | Text>}\n *   hast element content.\n */\nexport function hardBreak(state, node) {\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'br', properties: {}, children: []}\n  state.patch(node, result)\n  return [state.applyData(node, result), {type: 'text', value: '\\n'}]\n}\n", "/**\n * @import {Element, Properties} from 'hast'\n * @import {Code} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `code` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Code} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function code(state, node) {\n  const value = node.value ? node.value + '\\n' : ''\n  /** @type {Properties} */\n  const properties = {}\n  // Someone can write `js&#x20;python&#x9;ruby`.\n  const language = node.lang ? node.lang.split(/\\s+/) : []\n\n  // GH/CM still drop the non-first languages.\n  if (language.length > 0) {\n    properties.className = ['language-' + language[0]]\n  }\n\n  // Create `<code>`.\n  /** @type {Element} */\n  let result = {\n    type: 'element',\n    tagName: 'code',\n    properties,\n    children: [{type: 'text', value}]\n  }\n\n  if (node.meta) {\n    result.data = {meta: node.meta}\n  }\n\n  state.patch(node, result)\n  result = state.applyData(node, result)\n\n  // Create `<pre>`.\n  result = {type: 'element', tagName: 'pre', properties: {}, children: [result]}\n  state.patch(node, result)\n  return result\n}\n", "/**\n * @import {Element} from 'hast'\n * @import {Delete} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `delete` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Delete} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strikethrough(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'del',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {Element} from 'hast'\n * @import {Emphasis} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `emphasis` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Emphasis} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function emphasis(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'em',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {Element} from 'hast'\n * @import {FootnoteReference} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `footnoteReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {FootnoteReference} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function footnoteReference(state, node) {\n  const clobberPrefix =\n    typeof state.options.clobberPrefix === 'string'\n      ? state.options.clobberPrefix\n      : 'user-content-'\n  const id = String(node.identifier).toUpperCase()\n  const safeId = normalizeUri(id.toLowerCase())\n  const index = state.footnoteOrder.indexOf(id)\n  /** @type {number} */\n  let counter\n\n  let reuseCounter = state.footnoteCounts.get(id)\n\n  if (reuseCounter === undefined) {\n    reuseCounter = 0\n    state.footnoteOrder.push(id)\n    counter = state.footnoteOrder.length\n  } else {\n    counter = index + 1\n  }\n\n  reuseCounter += 1\n  state.footnoteCounts.set(id, reuseCounter)\n\n  /** @type {Element} */\n  const link = {\n    type: 'element',\n    tagName: 'a',\n    properties: {\n      href: '#' + clobberPrefix + 'fn-' + safeId,\n      id:\n        clobberPrefix +\n        'fnref-' +\n        safeId +\n        (reuseCounter > 1 ? '-' + reuseCounter : ''),\n      dataFootnoteRef: true,\n      ariaDescribedBy: ['footnote-label']\n    },\n    children: [{type: 'text', value: String(counter)}]\n  }\n  state.patch(node, link)\n\n  /** @type {Element} */\n  const sup = {\n    type: 'element',\n    tagName: 'sup',\n    properties: {},\n    children: [link]\n  }\n  state.patch(node, sup)\n  return state.applyData(node, sup)\n}\n", "/**\n * @import {Element} from 'hast'\n * @import {Heading} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `heading` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Heading} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function heading(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'h' + node.depth,\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {Element} from 'hast'\n * @import {Html} from 'mdast'\n * @import {State} from '../state.js'\n * @import {Raw} from '../../index.js'\n */\n\n/**\n * Turn an mdast `html` node into hast (`raw` node in dangerous mode, otherwise\n * nothing).\n *\n * @param {State} state\n *   Info passed around.\n * @param {Html} node\n *   mdast node.\n * @returns {Element | Raw | undefined}\n *   hast node.\n */\nexport function html(state, node) {\n  if (state.options.allowDangerousHtml) {\n    /** @type {Raw} */\n    const result = {type: 'raw', value: node.value}\n    state.patch(node, result)\n    return state.applyData(node, result)\n  }\n\n  return undefined\n}\n", "/**\n * @import {ElementContent} from 'hast'\n * @import {Reference, Nodes} from 'mdast'\n * @import {State} from './state.js'\n */\n\n/**\n * Return the content of a reference without definition as plain text.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Extract<Nodes, Reference>} node\n *   Reference node (image, link).\n * @returns {Array<ElementContent>}\n *   hast content.\n */\nexport function revert(state, node) {\n  const subtype = node.referenceType\n  let suffix = ']'\n\n  if (subtype === 'collapsed') {\n    suffix += '[]'\n  } else if (subtype === 'full') {\n    suffix += '[' + (node.label || node.identifier) + ']'\n  }\n\n  if (node.type === 'imageReference') {\n    return [{type: 'text', value: '![' + node.alt + suffix}]\n  }\n\n  const contents = state.all(node)\n  const head = contents[0]\n\n  if (head && head.type === 'text') {\n    head.value = '[' + head.value\n  } else {\n    contents.unshift({type: 'text', value: '['})\n  }\n\n  const tail = contents[contents.length - 1]\n\n  if (tail && tail.type === 'text') {\n    tail.value += suffix\n  } else {\n    contents.push({type: 'text', value: suffix})\n  }\n\n  return contents\n}\n", "/**\n * @import {ElementContent, Element, Properties} from 'hast'\n * @import {ImageReference} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `imageReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ImageReference} node\n *   mdast node.\n * @returns {Array<ElementContent> | ElementContent}\n *   hast node.\n */\nexport function imageReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const definition = state.definitionById.get(id)\n\n  if (!definition) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(definition.url || ''), alt: node.alt}\n\n  if (definition.title !== null && definition.title !== undefined) {\n    properties.title = definition.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {Element, Properties} from 'hast'\n * @import {Image} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `image` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Image} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function image(state, node) {\n  /** @type {Properties} */\n  const properties = {src: normalizeUri(node.url)}\n\n  if (node.alt !== null && node.alt !== undefined) {\n    properties.alt = node.alt\n  }\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'img', properties, children: []}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {Element, Text} from 'hast'\n * @import {InlineCode} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `inlineCode` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {InlineCode} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function inlineCode(state, node) {\n  /** @type {Text} */\n  const text = {type: 'text', value: node.value.replace(/\\r?\\n|\\r/g, ' ')}\n  state.patch(node, text)\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'code',\n    properties: {},\n    children: [text]\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {ElementContent, Element, Properties} from 'hast'\n * @import {LinkReference} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\nimport {revert} from '../revert.js'\n\n/**\n * Turn an mdast `linkReference` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {LinkReference} node\n *   mdast node.\n * @returns {Array<ElementContent> | ElementContent}\n *   hast node.\n */\nexport function linkReference(state, node) {\n  const id = String(node.identifier).toUpperCase()\n  const definition = state.definitionById.get(id)\n\n  if (!definition) {\n    return revert(state, node)\n  }\n\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(definition.url || '')}\n\n  if (definition.title !== null && definition.title !== undefined) {\n    properties.title = definition.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {Element, Properties} from 'hast'\n * @import {Link} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Turn an mdast `link` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Link} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function link(state, node) {\n  /** @type {Properties} */\n  const properties = {href: normalizeUri(node.url)}\n\n  if (node.title !== null && node.title !== undefined) {\n    properties.title = node.title\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'a',\n    properties,\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {ElementContent, Element, Properties} from 'hast'\n * @import {ListItem, Parents} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `listItem` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ListItem} node\n *   mdast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function listItem(state, node, parent) {\n  const results = state.all(node)\n  const loose = parent ? listLoose(parent) : listItemLoose(node)\n  /** @type {Properties} */\n  const properties = {}\n  /** @type {Array<ElementContent>} */\n  const children = []\n\n  if (typeof node.checked === 'boolean') {\n    const head = results[0]\n    /** @type {Element} */\n    let paragraph\n\n    if (head && head.type === 'element' && head.tagName === 'p') {\n      paragraph = head\n    } else {\n      paragraph = {type: 'element', tagName: 'p', properties: {}, children: []}\n      results.unshift(paragraph)\n    }\n\n    if (paragraph.children.length > 0) {\n      paragraph.children.unshift({type: 'text', value: ' '})\n    }\n\n    paragraph.children.unshift({\n      type: 'element',\n      tagName: 'input',\n      properties: {type: 'checkbox', checked: node.checked, disabled: true},\n      children: []\n    })\n\n    // According to github-markdown-css, this class hides bullet.\n    // See: <https://github.com/sindresorhus/github-markdown-css>.\n    properties.className = ['task-list-item']\n  }\n\n  let index = -1\n\n  while (++index < results.length) {\n    const child = results[index]\n\n    // Add eols before nodes, except if this is a loose, first paragraph.\n    if (\n      loose ||\n      index !== 0 ||\n      child.type !== 'element' ||\n      child.tagName !== 'p'\n    ) {\n      children.push({type: 'text', value: '\\n'})\n    }\n\n    if (child.type === 'element' && child.tagName === 'p' && !loose) {\n      children.push(...child.children)\n    } else {\n      children.push(child)\n    }\n  }\n\n  const tail = results[results.length - 1]\n\n  // Add a final eol.\n  if (tail && (loose || tail.type !== 'element' || tail.tagName !== 'p')) {\n    children.push({type: 'text', value: '\\n'})\n  }\n\n  /** @type {Element} */\n  const result = {type: 'element', tagName: 'li', properties, children}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n/**\n * @param {Parents} node\n * @return {Boolean}\n */\nfunction listLoose(node) {\n  let loose = false\n  if (node.type === 'list') {\n    loose = node.spread || false\n    const children = node.children\n    let index = -1\n\n    while (!loose && ++index < children.length) {\n      loose = listItemLoose(children[index])\n    }\n  }\n\n  return loose\n}\n\n/**\n * @param {ListItem} node\n * @return {Boolean}\n */\nfunction listItemLoose(node) {\n  const spread = node.spread\n\n  return spread === null || spread === undefined\n    ? node.children.length > 1\n    : spread\n}\n", "/**\n * @import {Element, Properties} from 'hast'\n * @import {List} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `list` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {List} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function list(state, node) {\n  /** @type {Properties} */\n  const properties = {}\n  const results = state.all(node)\n  let index = -1\n\n  if (typeof node.start === 'number' && node.start !== 1) {\n    properties.start = node.start\n  }\n\n  // Like GitHub, add a class for custom styling.\n  while (++index < results.length) {\n    const child = results[index]\n\n    if (\n      child.type === 'element' &&\n      child.tagName === 'li' &&\n      child.properties &&\n      Array.isArray(child.properties.className) &&\n      child.properties.className.includes('task-list-item')\n    ) {\n      properties.className = ['contains-task-list']\n      break\n    }\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: node.ordered ? 'ol' : 'ul',\n    properties,\n    children: state.wrap(results, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {Element} from 'hast'\n * @import {Paragraph} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `paragraph` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Paragraph} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function paragraph(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'p',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {Parents as HastParents, Root as HastRoot} from 'hast'\n * @import {Root as MdastRoot} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `root` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastRoot} node\n *   mdast node.\n * @returns {HastParents}\n *   hast node.\n */\nexport function root(state, node) {\n  /** @type {HastRoot} */\n  const result = {type: 'root', children: state.wrap(state.all(node))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {Element} from 'hast'\n * @import {Strong} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `strong` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Strong} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function strong(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'strong',\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {Table} from 'mdast'\n * @import {Element} from 'hast'\n * @import {State} from '../state.js'\n */\n\nimport {pointEnd, pointStart} from 'unist-util-position'\n\n/**\n * Turn an mdast `table` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Table} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function table(state, node) {\n  const rows = state.all(node)\n  const firstRow = rows.shift()\n  /** @type {Array<Element>} */\n  const tableContent = []\n\n  if (firstRow) {\n    /** @type {Element} */\n    const head = {\n      type: 'element',\n      tagName: 'thead',\n      properties: {},\n      children: state.wrap([firstRow], true)\n    }\n    state.patch(node.children[0], head)\n    tableContent.push(head)\n  }\n\n  if (rows.length > 0) {\n    /** @type {Element} */\n    const body = {\n      type: 'element',\n      tagName: 'tbody',\n      properties: {},\n      children: state.wrap(rows, true)\n    }\n\n    const start = pointStart(node.children[1])\n    const end = pointEnd(node.children[node.children.length - 1])\n    if (start && end) body.position = {start, end}\n    tableContent.push(body)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'table',\n    properties: {},\n    children: state.wrap(tableContent, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {Element, ElementContent, Properties} from 'hast'\n * @import {Parents, TableRow} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `tableRow` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableRow} node\n *   mdast node.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {Element}\n *   hast node.\n */\nexport function tableRow(state, node, parent) {\n  const siblings = parent ? parent.children : undefined\n  // Generate a body row when without parent.\n  const rowIndex = siblings ? siblings.indexOf(node) : 1\n  const tagName = rowIndex === 0 ? 'th' : 'td'\n  // To do: option to use `style`?\n  const align = parent && parent.type === 'table' ? parent.align : undefined\n  const length = align ? align.length : node.children.length\n  let cellIndex = -1\n  /** @type {Array<ElementContent>} */\n  const cells = []\n\n  while (++cellIndex < length) {\n    // Note: can also be undefined.\n    const cell = node.children[cellIndex]\n    /** @type {Properties} */\n    const properties = {}\n    const alignValue = align ? align[cellIndex] : undefined\n\n    if (alignValue) {\n      properties.align = alignValue\n    }\n\n    /** @type {Element} */\n    let result = {type: 'element', tagName, properties, children: []}\n\n    if (cell) {\n      result.children = state.all(cell)\n      state.patch(cell, result)\n      result = state.applyData(cell, result)\n    }\n\n    cells.push(result)\n  }\n\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'tr',\n    properties: {},\n    children: state.wrap(cells, true)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {Element} from 'hast'\n * @import {TableCell} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `tableCell` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {TableCell} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function tableCell(state, node) {\n  // Note: this function is normally not called: see `table-row` for how rows\n  // and their cells are compiled.\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'td', // Assume body cell.\n    properties: {},\n    children: state.all(node)\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "const tab = 9 /* `\\t` */\nconst space = 32 /* ` ` */\n\n/**\n * Remove initial and final spaces and tabs at the line breaks in `value`.\n * Does not trim initial and final spaces and tabs of the value itself.\n *\n * @param {string} value\n *   Value to trim.\n * @returns {string}\n *   Trimmed value.\n */\nexport function trimLines(value) {\n  const source = String(value)\n  const search = /\\r?\\n|\\r/g\n  let match = search.exec(source)\n  let last = 0\n  /** @type {Array<string>} */\n  const lines = []\n\n  while (match) {\n    lines.push(\n      trimLine(source.slice(last, match.index), last > 0, true),\n      match[0]\n    )\n\n    last = match.index + match[0].length\n    match = search.exec(source)\n  }\n\n  lines.push(trimLine(source.slice(last), last > 0, false))\n\n  return lines.join('')\n}\n\n/**\n * @param {string} value\n *   Line to trim.\n * @param {boolean} start\n *   Whether to trim the start of the line.\n * @param {boolean} end\n *   Whether to trim the end of the line.\n * @returns {string}\n *   Trimmed line.\n */\nfunction trimLine(value, start, end) {\n  let startIndex = 0\n  let endIndex = value.length\n\n  if (start) {\n    let code = value.codePointAt(startIndex)\n\n    while (code === tab || code === space) {\n      startIndex++\n      code = value.codePointAt(startIndex)\n    }\n  }\n\n  if (end) {\n    let code = value.codePointAt(endIndex - 1)\n\n    while (code === tab || code === space) {\n      endIndex--\n      code = value.codePointAt(endIndex - 1)\n    }\n  }\n\n  return endIndex > startIndex ? value.slice(startIndex, endIndex) : ''\n}\n", "/**\n * @import {Element as HastElement, Text as HastText} from 'hast'\n * @import {Text as MdastText} from 'mdast'\n * @import {State} from '../state.js'\n */\n\nimport {trimLines} from 'trim-lines'\n\n/**\n * Turn an mdast `text` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastText} node\n *   mdast node.\n * @returns {HastElement | HastText}\n *   hast node.\n */\nexport function text(state, node) {\n  /** @type {HastText} */\n  const result = {type: 'text', value: trimLines(String(node.value))}\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {Element} from 'hast'\n * @import {ThematicBreak} from 'mdast'\n * @import {State} from '../state.js'\n */\n\n/**\n * Turn an mdast `thematicBreak` node into hast.\n *\n * @param {State} state\n *   Info passed around.\n * @param {ThematicBreak} node\n *   mdast node.\n * @returns {Element}\n *   hast node.\n */\nexport function thematicBreak(state, node) {\n  /** @type {Element} */\n  const result = {\n    type: 'element',\n    tagName: 'hr',\n    properties: {},\n    children: []\n  }\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n", "/**\n * @import {Handlers} from '../state.js'\n */\n\nimport {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {strikethrough} from './delete.js'\nimport {emphasis} from './emphasis.js'\nimport {footnoteReference} from './footnote-reference.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {imageReference} from './image-reference.js'\nimport {image} from './image.js'\nimport {inlineCode} from './inline-code.js'\nimport {linkReference} from './link-reference.js'\nimport {link} from './link.js'\nimport {listItem} from './list-item.js'\nimport {list} from './list.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {table} from './table.js'\nimport {tableRow} from './table-row.js'\nimport {tableCell} from './table-cell.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default handlers for nodes.\n *\n * @satisfies {Handlers}\n */\nexport const handlers = {\n  blockquote,\n  break: hardBreak,\n  code,\n  delete: strikethrough,\n  emphasis,\n  footnoteReference,\n  heading,\n  html,\n  imageReference,\n  image,\n  inlineCode,\n  linkReference,\n  link,\n  listItem,\n  list,\n  paragraph,\n  // @ts-expect-error: root is different, but hard to type.\n  root,\n  strong,\n  table,\n  tableCell,\n  tableRow,\n  text,\n  thematicBreak,\n  toml: ignore,\n  yaml: ignore,\n  definition: ignore,\n  footnoteDefinition: ignore\n}\n\n// Return nothing for nodes that are ignored.\nfunction ignore() {\n  return undefined\n}\n", "/**\n * @import {ElementContent, Element} from 'hast'\n * @import {State} from './state.js'\n */\n\n/**\n * @callback FootnoteBackContentTemplate\n *   Generate content for the backreference dynamically.\n *\n *   For the following markdown:\n *\n *   ```markdown\n *   Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n *   [^remark]: things about remark\n *   [^micromark]: things about micromark\n *   ```\n *\n *   This function will be called with:\n *\n *   *  `0` and `0` for the backreference from `things about micromark` to\n *      `alpha`, as it is the first used definition, and the first call to it\n *   *  `0` and `1` for the backreference from `things about micromark` to\n *      `bravo`, as it is the first used definition, and the second call to it\n *   *  `1` and `0` for the backreference from `things about remark` to\n *      `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n *   Index of the definition in the order that they are first referenced,\n *   0-indexed.\n * @param {number} rereferenceIndex\n *   Index of calls to the same definition, 0-indexed.\n * @returns {Array<ElementContent> | ElementContent | string}\n *   Content for the backreference when linking back from definitions to their\n *   reference.\n *\n * @callback FootnoteBackLabelTemplate\n *   Generate a back label dynamically.\n *\n *   For the following markdown:\n *\n *   ```markdown\n *   Alpha[^micromark], bravo[^micromark], and charlie[^remark].\n *\n *   [^remark]: things about remark\n *   [^micromark]: things about micromark\n *   ```\n *\n *   This function will be called with:\n *\n *   *  `0` and `0` for the backreference from `things about micromark` to\n *      `alpha`, as it is the first used definition, and the first call to it\n *   *  `0` and `1` for the backreference from `things about micromark` to\n *      `bravo`, as it is the first used definition, and the second call to it\n *   *  `1` and `0` for the backreference from `things about remark` to\n *      `charlie`, as it is the second used definition\n * @param {number} referenceIndex\n *   Index of the definition in the order that they are first referenced,\n *   0-indexed.\n * @param {number} rereferenceIndex\n *   Index of calls to the same definition, 0-indexed.\n * @returns {string}\n *   Back label to use when linking back from definitions to their reference.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {normalizeUri} from 'micromark-util-sanitize-uri'\n\n/**\n * Generate the default content that GitHub uses on backreferences.\n *\n * @param {number} _\n *   Index of the definition in the order that they are first referenced,\n *   0-indexed.\n * @param {number} rereferenceIndex\n *   Index of calls to the same definition, 0-indexed.\n * @returns {Array<ElementContent>}\n *   Content.\n */\nexport function defaultFootnoteBackContent(_, rereferenceIndex) {\n  /** @type {Array<ElementContent>} */\n  const result = [{type: 'text', value: '\u21A9'}]\n\n  if (rereferenceIndex > 1) {\n    result.push({\n      type: 'element',\n      tagName: 'sup',\n      properties: {},\n      children: [{type: 'text', value: String(rereferenceIndex)}]\n    })\n  }\n\n  return result\n}\n\n/**\n * Generate the default label that GitHub uses on backreferences.\n *\n * @param {number} referenceIndex\n *   Index of the definition in the order that they are first referenced,\n *   0-indexed.\n * @param {number} rereferenceIndex\n *   Index of calls to the same definition, 0-indexed.\n * @returns {string}\n *   Label.\n */\nexport function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n  return (\n    'Back to reference ' +\n    (referenceIndex + 1) +\n    (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n  )\n}\n\n/**\n * Generate a hast footer for called footnote definitions.\n *\n * @param {State} state\n *   Info passed around.\n * @returns {Element | undefined}\n *   `section` element or `undefined`.\n */\n// eslint-disable-next-line complexity\nexport function footer(state) {\n  const clobberPrefix =\n    typeof state.options.clobberPrefix === 'string'\n      ? state.options.clobberPrefix\n      : 'user-content-'\n  const footnoteBackContent =\n    state.options.footnoteBackContent || defaultFootnoteBackContent\n  const footnoteBackLabel =\n    state.options.footnoteBackLabel || defaultFootnoteBackLabel\n  const footnoteLabel = state.options.footnoteLabel || 'Footnotes'\n  const footnoteLabelTagName = state.options.footnoteLabelTagName || 'h2'\n  const footnoteLabelProperties = state.options.footnoteLabelProperties || {\n    className: ['sr-only']\n  }\n  /** @type {Array<ElementContent>} */\n  const listItems = []\n  let referenceIndex = -1\n\n  while (++referenceIndex < state.footnoteOrder.length) {\n    const definition = state.footnoteById.get(\n      state.footnoteOrder[referenceIndex]\n    )\n\n    if (!definition) {\n      continue\n    }\n\n    const content = state.all(definition)\n    const id = String(definition.identifier).toUpperCase()\n    const safeId = normalizeUri(id.toLowerCase())\n    let rereferenceIndex = 0\n    /** @type {Array<ElementContent>} */\n    const backReferences = []\n    const counts = state.footnoteCounts.get(id)\n\n    // eslint-disable-next-line no-unmodified-loop-condition\n    while (counts !== undefined && ++rereferenceIndex <= counts) {\n      if (backReferences.length > 0) {\n        backReferences.push({type: 'text', value: ' '})\n      }\n\n      let children =\n        typeof footnoteBackContent === 'string'\n          ? footnoteBackContent\n          : footnoteBackContent(referenceIndex, rereferenceIndex)\n\n      if (typeof children === 'string') {\n        children = {type: 'text', value: children}\n      }\n\n      backReferences.push({\n        type: 'element',\n        tagName: 'a',\n        properties: {\n          href:\n            '#' +\n            clobberPrefix +\n            'fnref-' +\n            safeId +\n            (rereferenceIndex > 1 ? '-' + rereferenceIndex : ''),\n          dataFootnoteBackref: '',\n          ariaLabel:\n            typeof footnoteBackLabel === 'string'\n              ? footnoteBackLabel\n              : footnoteBackLabel(referenceIndex, rereferenceIndex),\n          className: ['data-footnote-backref']\n        },\n        children: Array.isArray(children) ? children : [children]\n      })\n    }\n\n    const tail = content[content.length - 1]\n\n    if (tail && tail.type === 'element' && tail.tagName === 'p') {\n      const tailTail = tail.children[tail.children.length - 1]\n      if (tailTail && tailTail.type === 'text') {\n        tailTail.value += ' '\n      } else {\n        tail.children.push({type: 'text', value: ' '})\n      }\n\n      tail.children.push(...backReferences)\n    } else {\n      content.push(...backReferences)\n    }\n\n    /** @type {Element} */\n    const listItem = {\n      type: 'element',\n      tagName: 'li',\n      properties: {id: clobberPrefix + 'fn-' + safeId},\n      children: state.wrap(content, true)\n    }\n\n    state.patch(definition, listItem)\n\n    listItems.push(listItem)\n  }\n\n  if (listItems.length === 0) {\n    return\n  }\n\n  return {\n    type: 'element',\n    tagName: 'section',\n    properties: {dataFootnotes: true, className: ['footnotes']},\n    children: [\n      {\n        type: 'element',\n        tagName: footnoteLabelTagName,\n        properties: {\n          ...structuredClone(footnoteLabelProperties),\n          id: 'footnote-label'\n        },\n        children: [{type: 'text', value: footnoteLabel}]\n      },\n      {type: 'text', value: '\\n'},\n      {\n        type: 'element',\n        tagName: 'ol',\n        properties: {},\n        children: state.wrap(listItems, true)\n      },\n      {type: 'text', value: '\\n'}\n    ]\n  }\n}\n", "/**\n * @import {\n *   ElementContent as HastElementContent,\n *   Element as HastElement,\n *   Nodes as HastNodes,\n *   Properties as HastProperties,\n *   RootContent as HastRootContent,\n *   Text as HastText\n * } from 'hast'\n * @import {\n *   Definition as MdastDefinition,\n *   FootnoteDefinition as MdastFootnoteDefinition,\n *   Nodes as MdastNodes,\n *   Parents as MdastParents\n * } from 'mdast'\n * @import {VFile} from 'vfile'\n * @import {\n *   FootnoteBackContentTemplate,\n *   FootnoteBackLabelTemplate\n * } from './footer.js'\n */\n\n/**\n * @callback Handler\n *   Handle a node.\n * @param {State} state\n *   Info passed around.\n * @param {any} node\n *   mdast node to handle.\n * @param {MdastParents | undefined} parent\n *   Parent of `node`.\n * @returns {Array<HastElementContent> | HastElementContent | undefined}\n *   hast node.\n *\n * @typedef {Partial<Record<MdastNodes['type'], Handler>>} Handlers\n *   Handle nodes.\n *\n * @typedef Options\n *   Configuration (optional).\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Whether to persist raw HTML in markdown in the hast tree (default:\n *   `false`).\n * @property {string | null | undefined} [clobberPrefix='user-content-']\n *   Prefix to use before the `id` property on footnotes to prevent them from\n *   *clobbering* (default: `'user-content-'`).\n *\n *   Pass `''` for trusted markdown and when you are careful with\n *   polyfilling.\n *   You could pass a different prefix.\n *\n *   DOM clobbering is this:\n *\n *   ```html\n *   <p id=\"x\"></p>\n *   <script>alert(x) // `x` now refers to the `p#x` DOM element</script>\n *   ```\n *\n *   The above example shows that elements are made available by browsers, by\n *   their ID, on the `window` object.\n *   This is a security risk because you might be expecting some other variable\n *   at that place.\n *   It can also break polyfills.\n *   Using a prefix solves these problems.\n * @property {VFile | null | undefined} [file]\n *   Corresponding virtual file representing the input document (optional).\n * @property {FootnoteBackContentTemplate | string | null | undefined} [footnoteBackContent]\n *   Content of the backreference back to references (default: `defaultFootnoteBackContent`).\n *\n *   The default value is:\n *\n *   ```js\n *   function defaultFootnoteBackContent(_, rereferenceIndex) {\n *     const result = [{type: 'text', value: '\u21A9'}]\n *\n *     if (rereferenceIndex > 1) {\n *       result.push({\n *         type: 'element',\n *         tagName: 'sup',\n *         properties: {},\n *         children: [{type: 'text', value: String(rereferenceIndex)}]\n *       })\n *     }\n *\n *     return result\n *   }\n *   ```\n *\n *   This content is used in the `a` element of each backreference (the `\u21A9`\n *   links).\n * @property {FootnoteBackLabelTemplate | string | null | undefined} [footnoteBackLabel]\n *   Label to describe the backreference back to references (default:\n *   `defaultFootnoteBackLabel`).\n *\n *   The default value is:\n *\n *   ```js\n *   function defaultFootnoteBackLabel(referenceIndex, rereferenceIndex) {\n *    return (\n *      'Back to reference ' +\n *      (referenceIndex + 1) +\n *      (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')\n *    )\n *   }\n *   ```\n *\n *   Change it when the markdown is not in English.\n *\n *   This label is used in the `ariaLabel` property on each backreference\n *   (the `\u21A9` links).\n *   It affects users of assistive technology.\n * @property {string | null | undefined} [footnoteLabel='Footnotes']\n *   Textual label to use for the footnotes section (default: `'Footnotes'`).\n *\n *   Change it when the markdown is not in English.\n *\n *   This label is typically hidden visually (assuming a `sr-only` CSS class\n *   is defined that does that) and so affects screen readers only.\n *   If you do have such a class, but want to show this section to everyone,\n *   pass different properties with the `footnoteLabelProperties` option.\n * @property {HastProperties | null | undefined} [footnoteLabelProperties={className: ['sr-only']}]\n *   Properties to use on the footnote label (default: `{className:\n *   ['sr-only']}`).\n *\n *   Change it to show the label and add other properties.\n *\n *   This label is typically hidden visually (assuming an `sr-only` CSS class\n *   is defined that does that) and so affects screen readers only.\n *   If you do have such a class, but want to show this section to everyone,\n *   pass an empty string.\n *   You can also add different properties.\n *\n *   > **Note**: `id: 'footnote-label'` is always added, because footnote\n *   > calls use it with `aria-describedby` to provide an accessible label.\n * @property {string | null | undefined} [footnoteLabelTagName='h2']\n *   HTML tag name to use for the footnote label element (default: `'h2'`).\n *\n *   Change it to match your document structure.\n *\n *   This label is typically hidden visually (assuming a `sr-only` CSS class\n *   is defined that does that) and so affects screen readers only.\n *   If you do have such a class, but want to show this section to everyone,\n *   pass different properties with the `footnoteLabelProperties` option.\n * @property {Handlers | null | undefined} [handlers]\n *   Extra handlers for nodes (optional).\n * @property {Array<MdastNodes['type']> | null | undefined} [passThrough]\n *   List of custom mdast node types to pass through (keep) in hast (note that\n *   the node itself is passed, but eventual children are transformed)\n *   (optional).\n * @property {Handler | null | undefined} [unknownHandler]\n *   Handler for all unknown nodes (optional).\n *\n * @typedef State\n *   Info passed around.\n * @property {(node: MdastNodes) => Array<HastElementContent>} all\n *   Transform the children of an mdast parent to hast.\n * @property {<Type extends HastNodes>(from: MdastNodes, to: Type) => HastElement | Type} applyData\n *   Honor the `data` of `from`, and generate an element instead of `node`.\n * @property {Map<string, MdastDefinition>} definitionById\n *   Definitions by their identifier.\n * @property {Map<string, MdastFootnoteDefinition>} footnoteById\n *   Footnote definitions by their identifier.\n * @property {Map<string, number>} footnoteCounts\n *   Counts for how often the same footnote was called.\n * @property {Array<string>} footnoteOrder\n *   Identifiers of order when footnote calls first appear in tree order.\n * @property {Handlers} handlers\n *   Applied handlers.\n * @property {(node: MdastNodes, parent: MdastParents | undefined) => Array<HastElementContent> | HastElementContent | undefined} one\n *   Transform an mdast node to hast.\n * @property {Options} options\n *   Configuration.\n * @property {(from: MdastNodes, node: HastNodes) => undefined} patch\n *   Copy a node\u2019s positional info.\n * @property {<Type extends HastRootContent>(nodes: Array<Type>, loose?: boolean | undefined) => Array<HastText | Type>} wrap\n *   Wrap `nodes` with line endings between each node, adds initial/final line endings when `loose`.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {visit} from 'unist-util-visit'\nimport {position} from 'unist-util-position'\nimport {handlers as defaultHandlers} from './handlers/index.js'\n\nconst own = {}.hasOwnProperty\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Create `state` from an mdast tree.\n *\n * @param {MdastNodes} tree\n *   mdast node to transform.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {State}\n *   `state` function.\n */\nexport function createState(tree, options) {\n  const settings = options || emptyOptions\n  /** @type {Map<string, MdastDefinition>} */\n  const definitionById = new Map()\n  /** @type {Map<string, MdastFootnoteDefinition>} */\n  const footnoteById = new Map()\n  /** @type {Map<string, number>} */\n  const footnoteCounts = new Map()\n  /** @type {Handlers} */\n  // @ts-expect-error: the root handler returns a root.\n  // Hard to type.\n  const handlers = {...defaultHandlers, ...settings.handlers}\n\n  /** @type {State} */\n  const state = {\n    all,\n    applyData,\n    definitionById,\n    footnoteById,\n    footnoteCounts,\n    footnoteOrder: [],\n    handlers,\n    one,\n    options: settings,\n    patch,\n    wrap\n  }\n\n  visit(tree, function (node) {\n    if (node.type === 'definition' || node.type === 'footnoteDefinition') {\n      const map = node.type === 'definition' ? definitionById : footnoteById\n      const id = String(node.identifier).toUpperCase()\n\n      // Mimick CM behavior of link definitions.\n      // See: <https://github.com/syntax-tree/mdast-util-definitions/blob/9032189/lib/index.js#L20-L21>.\n      if (!map.has(id)) {\n        // @ts-expect-error: node type matches map.\n        map.set(id, node)\n      }\n    }\n  })\n\n  return state\n\n  /**\n   * Transform an mdast node into a hast node.\n   *\n   * @param {MdastNodes} node\n   *   mdast node.\n   * @param {MdastParents | undefined} [parent]\n   *   Parent of `node`.\n   * @returns {Array<HastElementContent> | HastElementContent | undefined}\n   *   Resulting hast node.\n   */\n  function one(node, parent) {\n    const type = node.type\n    const handle = state.handlers[type]\n\n    if (own.call(state.handlers, type) && handle) {\n      return handle(state, node, parent)\n    }\n\n    if (state.options.passThrough && state.options.passThrough.includes(type)) {\n      if ('children' in node) {\n        const {children, ...shallow} = node\n        const result = structuredClone(shallow)\n        // @ts-expect-error: TS doesn\u2019t understand\u2026\n        result.children = state.all(node)\n        // @ts-expect-error: TS doesn\u2019t understand\u2026\n        return result\n      }\n\n      // @ts-expect-error: it\u2019s custom.\n      return structuredClone(node)\n    }\n\n    const unknown = state.options.unknownHandler || defaultUnknownHandler\n\n    return unknown(state, node, parent)\n  }\n\n  /**\n   * Transform the children of an mdast node into hast nodes.\n   *\n   * @param {MdastNodes} parent\n   *   mdast node to compile\n   * @returns {Array<HastElementContent>}\n   *   Resulting hast nodes.\n   */\n  function all(parent) {\n    /** @type {Array<HastElementContent>} */\n    const values = []\n\n    if ('children' in parent) {\n      const nodes = parent.children\n      let index = -1\n      while (++index < nodes.length) {\n        const result = state.one(nodes[index], parent)\n\n        // To do: see if we van clean this? Can we merge texts?\n        if (result) {\n          if (index && nodes[index - 1].type === 'break') {\n            if (!Array.isArray(result) && result.type === 'text') {\n              result.value = trimMarkdownSpaceStart(result.value)\n            }\n\n            if (!Array.isArray(result) && result.type === 'element') {\n              const head = result.children[0]\n\n              if (head && head.type === 'text') {\n                head.value = trimMarkdownSpaceStart(head.value)\n              }\n            }\n          }\n\n          if (Array.isArray(result)) {\n            values.push(...result)\n          } else {\n            values.push(result)\n          }\n        }\n      }\n    }\n\n    return values\n  }\n}\n\n/**\n * Copy a node\u2019s positional info.\n *\n * @param {MdastNodes} from\n *   mdast node to copy from.\n * @param {HastNodes} to\n *   hast node to copy into.\n * @returns {undefined}\n *   Nothing.\n */\nfunction patch(from, to) {\n  if (from.position) to.position = position(from)\n}\n\n/**\n * Honor the `data` of `from` and maybe generate an element instead of `to`.\n *\n * @template {HastNodes} Type\n *   Node type.\n * @param {MdastNodes} from\n *   mdast node to use data from.\n * @param {Type} to\n *   hast node to change.\n * @returns {HastElement | Type}\n *   Nothing.\n */\nfunction applyData(from, to) {\n  /** @type {HastElement | Type} */\n  let result = to\n\n  // Handle `data.hName`, `data.hProperties, `data.hChildren`.\n  if (from && from.data) {\n    const hName = from.data.hName\n    const hChildren = from.data.hChildren\n    const hProperties = from.data.hProperties\n\n    if (typeof hName === 'string') {\n      // Transforming the node resulted in an element with a different name\n      // than wanted:\n      if (result.type === 'element') {\n        result.tagName = hName\n      }\n      // Transforming the node resulted in a non-element, which happens for\n      // raw, text, and root nodes (unless custom handlers are passed).\n      // The intent of `hName` is to create an element, but likely also to keep\n      // the content around (otherwise: pass `hChildren`).\n      else {\n        /** @type {Array<HastElementContent>} */\n        // @ts-expect-error: assume no doctypes in `root`.\n        const children = 'children' in result ? result.children : [result]\n        result = {type: 'element', tagName: hName, properties: {}, children}\n      }\n    }\n\n    if (result.type === 'element' && hProperties) {\n      Object.assign(result.properties, structuredClone(hProperties))\n    }\n\n    if (\n      'children' in result &&\n      result.children &&\n      hChildren !== null &&\n      hChildren !== undefined\n    ) {\n      result.children = hChildren\n    }\n  }\n\n  return result\n}\n\n/**\n * Transform an unknown node.\n *\n * @param {State} state\n *   Info passed around.\n * @param {MdastNodes} node\n *   Unknown mdast node.\n * @returns {HastElement | HastText}\n *   Resulting hast node.\n */\nfunction defaultUnknownHandler(state, node) {\n  const data = node.data || {}\n  /** @type {HastElement | HastText} */\n  const result =\n    'value' in node &&\n    !(own.call(data, 'hProperties') || own.call(data, 'hChildren'))\n      ? {type: 'text', value: node.value}\n      : {\n          type: 'element',\n          tagName: 'div',\n          properties: {},\n          children: state.all(node)\n        }\n\n  state.patch(node, result)\n  return state.applyData(node, result)\n}\n\n/**\n * Wrap `nodes` with line endings between each node.\n *\n * @template {HastRootContent} Type\n *   Node type.\n * @param {Array<Type>} nodes\n *   List of nodes to wrap.\n * @param {boolean | undefined} [loose=false]\n *   Whether to add line endings at start and end (default: `false`).\n * @returns {Array<HastText | Type>}\n *   Wrapped nodes.\n */\nexport function wrap(nodes, loose) {\n  /** @type {Array<HastText | Type>} */\n  const result = []\n  let index = -1\n\n  if (loose) {\n    result.push({type: 'text', value: '\\n'})\n  }\n\n  while (++index < nodes.length) {\n    if (index) result.push({type: 'text', value: '\\n'})\n    result.push(nodes[index])\n  }\n\n  if (loose && nodes.length > 0) {\n    result.push({type: 'text', value: '\\n'})\n  }\n\n  return result\n}\n\n/**\n * Trim spaces and tabs at the start of `value`.\n *\n * @param {string} value\n *   Value to trim.\n * @returns {string}\n *   Result.\n */\nfunction trimMarkdownSpaceStart(value) {\n  let index = 0\n  let code = value.charCodeAt(index)\n\n  while (code === 9 || code === 32) {\n    index++\n    code = value.charCodeAt(index)\n  }\n\n  return value.slice(index)\n}\n", "/**\n * @import {Nodes as HastNodes} from 'hast'\n * @import {Nodes as MdastNodes} from 'mdast'\n * @import {Options} from './state.js'\n */\n\nimport {ok as assert} from 'devlop'\nimport {footer} from './footer.js'\nimport {createState} from './state.js'\n\n/**\n * Transform mdast to hast.\n *\n * ##### Notes\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most utilities ignore `raw` nodes but two notable ones don\u2019t:\n *\n * *   `hast-util-to-html` also has an option `allowDangerousHtml` which will\n *     output the raw HTML.\n *     This is typically discouraged as noted by the option name but is useful\n *     if you completely trust authors\n * *   `hast-util-raw` can handle the raw embedded HTML strings by parsing them\n *     into standard hast nodes (`element`, `text`, etc).\n *     This is a heavy task as it needs a full HTML parser, but it is the only\n *     way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark, which we follow by default.\n * They are supported by GitHub, so footnotes can be enabled in markdown with\n * `mdast-util-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes, which is hidden for sighted users but shown to\n * assistive technology.\n * When your page is not in English, you must define translated values.\n *\n * Back references use ARIA attributes, but the section label itself uses a\n * heading that is hidden with an `sr-only` class.\n * To show it to sighted users, define different attributes in\n * `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem, as it links footnote calls to footnote\n * definitions on the page through `id` attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n * <p id=x></p>\n * <script>alert(x) // `x` now refers to the DOM `p#x` element</script>\n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * Example: headings (DOM clobbering) in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn\u2019t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * *   when the node has a `value` (and doesn\u2019t have `data.hName`,\n *     `data.hProperties`, or `data.hChildren`, see later), create a hast `text`\n *     node\n * *   otherwise, create a `<div>` element (which could be changed with\n *     `data.hName`), with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @param {MdastNodes} tree\n *   mdast tree.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {HastNodes}\n *   hast tree.\n */\nexport function toHast(tree, options) {\n  const state = createState(tree, options)\n  const node = state.one(tree, undefined)\n  const foot = footer(state)\n  /** @type {HastNodes} */\n  const result = Array.isArray(node)\n    ? {type: 'root', children: node}\n    : node || {type: 'root', children: []}\n\n  if (foot) {\n    // If there\u2019s a footer, there were definitions, meaning block\n    // content.\n    // So `result` is a parent node.\n    assert('children' in result)\n    result.children.push({type: 'text', value: '\\n'}, foot)\n  }\n\n  return result\n}\n", "/**\n * @import {Root as HastRoot} from 'hast'\n * @import {Root as MdastRoot} from 'mdast'\n * @import {Options as ToHastOptions} from 'mdast-util-to-hast'\n * @import {Processor} from 'unified'\n * @import {VFile} from 'vfile'\n */\n\n/**\n * @typedef {Omit<ToHastOptions, 'file'>} Options\n *\n * @callback TransformBridge\n *   Bridge-mode.\n *\n *   Runs the destination with the new hast tree.\n *   Discards result.\n * @param {MdastRoot} tree\n *   Tree.\n * @param {VFile} file\n *   File.\n * @returns {Promise<undefined>}\n *   Nothing.\n *\n * @callback TransformMutate\n *  Mutate-mode.\n *\n *  Further transformers run on the hast tree.\n * @param {MdastRoot} tree\n *   Tree.\n * @param {VFile} file\n *   File.\n * @returns {HastRoot}\n *   Tree (hast).\n */\n\nimport {toHast} from 'mdast-util-to-hast'\n\n/**\n * Turn markdown into HTML.\n *\n * ##### Notes\n *\n * ###### Signature\n *\n * * if a processor is given,\n *   runs the (rehype) plugins used on it with a hast tree,\n *   then discards the result (*bridge mode*)\n * * otherwise,\n *   returns a hast tree,\n *   the plugins used after `remarkRehype` are rehype plugins (*mutate mode*)\n *\n * > \uD83D\uDC49 **Note**:\n * > It\u2019s highly unlikely that you want to pass a `processor`.\n *\n * ###### HTML\n *\n * Raw HTML is available in mdast as `html` nodes and can be embedded in hast\n * as semistandard `raw` nodes.\n * Most plugins ignore `raw` nodes but two notable ones don\u2019t:\n *\n * * `rehype-stringify` also has an option `allowDangerousHtml` which will\n *   output the raw HTML.\n *   This is typically discouraged as noted by the option name but is useful if\n *   you completely trust authors\n * * `rehype-raw` can handle the raw embedded HTML strings by parsing them\n *   into standard hast nodes (`element`, `text`, etc);\n *   this is a heavy task as it needs a full HTML parser,\n *   but it is the only way to support untrusted content\n *\n * ###### Footnotes\n *\n * Many options supported here relate to footnotes.\n * Footnotes are not specified by CommonMark,\n * which we follow by default.\n * They are supported by GitHub,\n * so footnotes can be enabled in markdown with `remark-gfm`.\n *\n * The options `footnoteBackLabel` and `footnoteLabel` define natural language\n * that explains footnotes,\n * which is hidden for sighted users but shown to assistive technology.\n * When your page is not in English,\n * you must define translated values.\n *\n * Back references use ARIA attributes,\n * but the section label itself uses a heading that is hidden with an\n * `sr-only` class.\n * To show it to sighted users,\n * define different attributes in `footnoteLabelProperties`.\n *\n * ###### Clobbering\n *\n * Footnotes introduces a problem,\n * as it links footnote calls to footnote definitions on the page through `id`\n * attributes generated from user content,\n * which results in DOM clobbering.\n *\n * DOM clobbering is this:\n *\n * ```html\n * <p id=x></p>\n * <script>alert(x) // `x` now refers to the DOM `p#x` element</script>\n * ```\n *\n * Elements by their ID are made available by browsers on the `window` object,\n * which is a security risk.\n * Using a prefix solves this problem.\n *\n * More information on how to handle clobbering and the prefix is explained in\n * *Example: headings (DOM clobbering)* in `rehype-sanitize`.\n *\n * ###### Unknown nodes\n *\n * Unknown nodes are nodes with a type that isn\u2019t in `handlers` or `passThrough`.\n * The default behavior for unknown nodes is:\n *\n * * when the node has a `value`\n *   (and doesn\u2019t have `data.hName`, `data.hProperties`, or `data.hChildren`,\n *   see later),\n *   create a hast `text` node\n * * otherwise,\n *   create a `<div>` element (which could be changed with `data.hName`),\n *   with its children mapped from mdast to hast as well\n *\n * This behavior can be changed by passing an `unknownHandler`.\n *\n * @overload\n * @param {Processor} processor\n * @param {Readonly<Options> | null | undefined} [options]\n * @returns {TransformBridge}\n *\n * @overload\n * @param {Readonly<Options> | null | undefined} [options]\n * @returns {TransformMutate}\n *\n * @overload\n * @param {Readonly<Options> | Processor | null | undefined} [destination]\n * @param {Readonly<Options> | null | undefined} [options]\n * @returns {TransformBridge | TransformMutate}\n *\n * @param {Readonly<Options> | Processor | null | undefined} [destination]\n *   Processor or configuration (optional).\n * @param {Readonly<Options> | null | undefined} [options]\n *   When a processor was given,\n *   configuration (optional).\n * @returns {TransformBridge | TransformMutate}\n *   Transform.\n */\nexport default function remarkRehype(destination, options) {\n  if (destination && 'run' in destination) {\n    /**\n     * @type {TransformBridge}\n     */\n    return async function (tree, file) {\n      // Cast because root in -> root out.\n      const hastTree = /** @type {HastRoot} */ (\n        toHast(tree, {file, ...options})\n      )\n      await destination.run(hastTree, file)\n    }\n  }\n\n  /**\n   * @type {TransformMutate}\n   */\n  return function (tree, file) {\n    // Cast because root in -> root out.\n    // To do: in the future, disallow ` || options` fallback.\n    // With `unified-engine`, `destination` can be `undefined` but\n    // `options` will be the file set.\n    // We should not pass that as `options`.\n    return /** @type {HastRoot} */ (\n      toHast(tree, {file, ...(destination || options)})\n    )\n  }\n}\n", "/**\n * Throw a given error.\n *\n * @param {Error|null|undefined} [error]\n *   Maybe error.\n * @returns {asserts error is null|undefined}\n */\nexport function bail(error) {\n  if (error) {\n    throw error\n  }\n}\n", "/**\n * @typedef {import('trough').Pipeline} Pipeline\n *\n * @typedef {import('unist').Node} Node\n *\n * @typedef {import('vfile').Compatible} Compatible\n * @typedef {import('vfile').Value} Value\n *\n * @typedef {import('../index.js').CompileResultMap} CompileResultMap\n * @typedef {import('../index.js').Data} Data\n * @typedef {import('../index.js').Settings} Settings\n */\n\n/**\n * @typedef {CompileResultMap[keyof CompileResultMap]} CompileResults\n *   Acceptable results from compilers.\n *\n *   To register custom results, add them to\n *   {@linkcode CompileResultMap}.\n */\n\n/**\n * @template {Node} [Tree=Node]\n *   The node that the compiler receives (default: `Node`).\n * @template {CompileResults} [Result=CompileResults]\n *   The thing that the compiler yields (default: `CompileResults`).\n * @callback Compiler\n *   A **compiler** handles the compiling of a syntax tree to something else\n *   (in most cases, text) (TypeScript type).\n *\n *   It is used in the stringify phase and called with a {@linkcode Node}\n *   and {@linkcode VFile} representation of the document to compile.\n *   It should return the textual representation of the given tree (typically\n *   `string`).\n *\n *   > **Note**: unified typically compiles by serializing: most compilers\n *   > return `string` (or `Uint8Array`).\n *   > Some compilers, such as the one configured with\n *   > [`rehype-react`][rehype-react], return other values (in this case, a\n *   > React tree).\n *   > If you\u2019re using a compiler that doesn\u2019t serialize, expect different\n *   > result values.\n *   >\n *   > To register custom results in TypeScript, add them to\n *   > {@linkcode CompileResultMap}.\n *\n *   [rehype-react]: https://github.com/rehypejs/rehype-react\n * @param {Tree} tree\n *   Tree to compile.\n * @param {VFile} file\n *   File associated with `tree`.\n * @returns {Result}\n *   New content: compiled text (`string` or `Uint8Array`, for `file.value`) or\n *   something else (for `file.result`).\n */\n\n/**\n * @template {Node} [Tree=Node]\n *   The node that the parser yields (default: `Node`)\n * @callback Parser\n *   A **parser** handles the parsing of text to a syntax tree.\n *\n *   It is used in the parse phase and is called with a `string` and\n *   {@linkcode VFile} of the document to parse.\n *   It must return the syntax tree representation of the given file\n *   ({@linkcode Node}).\n * @param {string} document\n *   Document to parse.\n * @param {VFile} file\n *   File associated with `document`.\n * @returns {Tree}\n *   Node representing the given file.\n */\n\n/**\n * @typedef {(\n *   Plugin<Array<any>, any, any> |\n *   PluginTuple<Array<any>, any, any> |\n *   Preset\n * )} Pluggable\n *   Union of the different ways to add plugins and settings.\n */\n\n/**\n * @typedef {Array<Pluggable>} PluggableList\n *   List of plugins and presets.\n */\n\n// Note: we can\u2019t use `callback` yet as it messes up `this`:\n//  <https://github.com/microsoft/TypeScript/issues/55197>.\n/**\n * @template {Array<unknown>} [PluginParameters=[]]\n *   Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=Node]\n *   Value that is expected as input (default: `Node`).\n *\n *   *   If the plugin returns a {@linkcode Transformer}, this\n *       should be the node it expects.\n *   *   If the plugin sets a {@linkcode Parser}, this should be\n *       `string`.\n *   *   If the plugin sets a {@linkcode Compiler}, this should be the\n *       node it expects.\n * @template [Output=Input]\n *   Value that is yielded as output (default: `Input`).\n *\n *   *   If the plugin returns a {@linkcode Transformer}, this\n *       should be the node that that yields.\n *   *   If the plugin sets a {@linkcode Parser}, this should be the\n *       node that it yields.\n *   *   If the plugin sets a {@linkcode Compiler}, this should be\n *       result it yields.\n * @typedef {(\n *   (this: Processor, ...parameters: PluginParameters) =>\n *     Input extends string ? // Parser.\n *        Output extends Node | undefined ? undefined | void : never :\n *     Output extends CompileResults ? // Compiler.\n *        Input extends Node | undefined ? undefined | void : never :\n *     Transformer<\n *       Input extends Node ? Input : Node,\n *       Output extends Node ? Output : Node\n *     > | undefined | void\n * )} Plugin\n *   Single plugin.\n *\n *   Plugins configure the processors they are applied on in the following\n *   ways:\n *\n *   *   they change the processor, such as the parser, the compiler, or by\n *       configuring data\n *   *   they specify how to handle trees and files\n *\n *   In practice, they are functions that can receive options and configure the\n *   processor (`this`).\n *\n *   > **Note**: plugins are called when the processor is *frozen*, not when\n *   > they are applied.\n */\n\n/**\n * Tuple of a plugin and its configuration.\n *\n * The first item is a plugin, the rest are its parameters.\n *\n * @template {Array<unknown>} [TupleParameters=[]]\n *   Arguments passed to the plugin (default: `[]`, the empty tuple).\n * @template {Node | string | undefined} [Input=undefined]\n *   Value that is expected as input (optional).\n *\n *   *   If the plugin returns a {@linkcode Transformer}, this\n *       should be the node it expects.\n *   *   If the plugin sets a {@linkcode Parser}, this should be\n *       `string`.\n *   *   If the plugin sets a {@linkcode Compiler}, this should be the\n *       node it expects.\n * @template [Output=undefined] (optional).\n *   Value that is yielded as output.\n *\n *   *   If the plugin returns a {@linkcode Transformer}, this\n *       should be the node that that yields.\n *   *   If the plugin sets a {@linkcode Parser}, this should be the\n *       node that it yields.\n *   *   If the plugin sets a {@linkcode Compiler}, this should be\n *       result it yields.\n * @typedef {(\n *   [\n *     plugin: Plugin<TupleParameters, Input, Output>,\n *     ...parameters: TupleParameters\n *   ]\n * )} PluginTuple\n */\n\n/**\n * @typedef Preset\n *   Sharable configuration.\n *\n *   They can contain plugins and settings.\n * @property {PluggableList | undefined} [plugins]\n *   List of plugins and presets (optional).\n * @property {Settings | undefined} [settings]\n *   Shared settings for parsers and compilers (optional).\n */\n\n/**\n * @template {VFile} [File=VFile]\n *   The file that the callback receives (default: `VFile`).\n * @callback ProcessCallback\n *   Callback called when the process is done.\n *\n *   Called with either an error or a result.\n * @param {Error | undefined} [error]\n *   Fatal error (optional).\n * @param {File | undefined} [file]\n *   Processed file (optional).\n * @returns {undefined}\n *   Nothing.\n */\n\n/**\n * @template {Node} [Tree=Node]\n *   The tree that the callback receives (default: `Node`).\n * @callback RunCallback\n *   Callback called when transformers are done.\n *\n *   Called with either an error or results.\n * @param {Error | undefined} [error]\n *   Fatal error (optional).\n * @param {Tree | undefined} [tree]\n *   Transformed tree (optional).\n * @param {VFile | undefined} [file]\n *   File (optional).\n * @returns {undefined}\n *   Nothing.\n */\n\n/**\n * @template {Node} [Output=Node]\n *   Node type that the transformer yields (default: `Node`).\n * @callback TransformCallback\n *   Callback passed to transforms.\n *\n *   If the signature of a `transformer` accepts a third argument, the\n *   transformer may perform asynchronous operations, and must call it.\n * @param {Error | undefined} [error]\n *   Fatal error to stop the process (optional).\n * @param {Output | undefined} [tree]\n *   New, changed, tree (optional).\n * @param {VFile | undefined} [file]\n *   New, changed, file (optional).\n * @returns {undefined}\n *   Nothing.\n */\n\n/**\n * @template {Node} [Input=Node]\n *   Node type that the transformer expects (default: `Node`).\n * @template {Node} [Output=Input]\n *   Node type that the transformer yields (default: `Input`).\n * @callback Transformer\n *   Transformers handle syntax trees and files.\n *\n *   They are functions that are called each time a syntax tree and file are\n *   passed through the run phase.\n *   When an error occurs in them (either because it\u2019s thrown, returned,\n *   rejected, or passed to `next`), the process stops.\n *\n *   The run phase is handled by [`trough`][trough], see its documentation for\n *   the exact semantics of these functions.\n *\n *   > **Note**: you should likely ignore `next`: don\u2019t accept it.\n *   > it supports callback-style async work.\n *   > But promises are likely easier to reason about.\n *\n *   [trough]: https://github.com/wooorm/trough#function-fninput-next\n * @param {Input} tree\n *   Tree to handle.\n * @param {VFile} file\n *   File to handle.\n * @param {TransformCallback<Output>} next\n *   Callback.\n * @returns {(\n *   Promise<Output | undefined | void> |\n *   Promise<never> | // For some reason this is needed separately.\n *   Output |\n *   Error |\n *   undefined |\n *   void\n * )}\n *   If you accept `next`, nothing.\n *   Otherwise:\n *\n *   *   `Error` \u2014 fatal error to stop the process\n *   *   `Promise<undefined>` or `undefined` \u2014 the next transformer keeps using\n *       same tree\n *   *   `Promise<Node>` or `Node` \u2014 new, changed, tree\n */\n\n/**\n * @template {Node | undefined} ParseTree\n *   Output of `parse`.\n * @template {Node | undefined} HeadTree\n *   Input for `run`.\n * @template {Node | undefined} TailTree\n *   Output for `run`.\n * @template {Node | undefined} CompileTree\n *   Input of `stringify`.\n * @template {CompileResults | undefined} CompileResult\n *   Output of `stringify`.\n * @template {Node | string | undefined} Input\n *   Input of plugin.\n * @template Output\n *   Output of plugin (optional).\n * @typedef {(\n *   Input extends string\n *     ? Output extends Node | undefined\n *       ? // Parser.\n *         Processor<\n *           Output extends undefined ? ParseTree : Output,\n *           HeadTree,\n *           TailTree,\n *           CompileTree,\n *           CompileResult\n *         >\n *       : // Unknown.\n *         Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n *     : Output extends CompileResults\n *     ? Input extends Node | undefined\n *       ? // Compiler.\n *         Processor<\n *           ParseTree,\n *           HeadTree,\n *           TailTree,\n *           Input extends undefined ? CompileTree : Input,\n *           Output extends undefined ? CompileResult : Output\n *         >\n *       : // Unknown.\n *         Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n *     : Input extends Node | undefined\n *     ? Output extends Node | undefined\n *       ? // Transform.\n *         Processor<\n *           ParseTree,\n *           HeadTree extends undefined ? Input : HeadTree,\n *           Output extends undefined ? TailTree : Output,\n *           CompileTree,\n *           CompileResult\n *         >\n *       : // Unknown.\n *         Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n *     : // Unknown.\n *       Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>\n * )} UsePlugin\n *   Create a processor based on the input/output of a {@link Plugin plugin}.\n */\n\n/**\n * @template {CompileResults | undefined} Result\n *   Node type that the transformer yields.\n * @typedef {(\n *   Result extends Value | undefined ?\n *     VFile :\n *     VFile & {result: Result}\n *   )} VFileWithOutput\n *   Type to generate a {@linkcode VFile} corresponding to a compiler result.\n *\n *   If a result that is not acceptable on a `VFile` is used, that will\n *   be stored on the `result` field of {@linkcode VFile}.\n */\n\nimport {bail} from 'bail'\nimport extend from 'extend'\nimport {ok as assert} from 'devlop'\nimport isPlainObj from 'is-plain-obj'\nimport {trough} from 'trough'\nimport {VFile} from 'vfile'\nimport {CallableInstance} from './callable-instance.js'\n\n// To do: next major: drop `Compiler`, `Parser`: prefer lowercase.\n\n// To do: we could start yielding `never` in TS when a parser is missing and\n// `parse` is called.\n// Currently, we allow directly setting `processor.parser`, which is untyped.\n\nconst own = {}.hasOwnProperty\n\n/**\n * @template {Node | undefined} [ParseTree=undefined]\n *   Output of `parse` (optional).\n * @template {Node | undefined} [HeadTree=undefined]\n *   Input for `run` (optional).\n * @template {Node | undefined} [TailTree=undefined]\n *   Output for `run` (optional).\n * @template {Node | undefined} [CompileTree=undefined]\n *   Input of `stringify` (optional).\n * @template {CompileResults | undefined} [CompileResult=undefined]\n *   Output of `stringify` (optional).\n * @extends {CallableInstance<[], Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>>}\n */\nexport class Processor extends CallableInstance {\n  /**\n   * Create a processor.\n   */\n  constructor() {\n    // If `Processor()` is called (w/o new), `copy` is called instead.\n    super('copy')\n\n    /**\n     * Compiler to use (deprecated).\n     *\n     * @deprecated\n     *   Use `compiler` instead.\n     * @type {(\n     *   Compiler<\n     *     CompileTree extends undefined ? Node : CompileTree,\n     *     CompileResult extends undefined ? CompileResults : CompileResult\n     *   > |\n     *   undefined\n     * )}\n     */\n    this.Compiler = undefined\n\n    /**\n     * Parser to use (deprecated).\n     *\n     * @deprecated\n     *   Use `parser` instead.\n     * @type {(\n     *   Parser<ParseTree extends undefined ? Node : ParseTree> |\n     *   undefined\n     * )}\n     */\n    this.Parser = undefined\n\n    // Note: the following fields are considered private.\n    // However, they are needed for tests, and TSC generates an untyped\n    // `private freezeIndex` field for, which trips `type-coverage` up.\n    // Instead, we use `@deprecated` to visualize that they shouldn\u2019t be used.\n    /**\n     * Internal list of configured plugins.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {Array<PluginTuple<Array<unknown>>>}\n     */\n    this.attachers = []\n\n    /**\n     * Compiler to use.\n     *\n     * @type {(\n     *   Compiler<\n     *     CompileTree extends undefined ? Node : CompileTree,\n     *     CompileResult extends undefined ? CompileResults : CompileResult\n     *   > |\n     *   undefined\n     * )}\n     */\n    this.compiler = undefined\n\n    /**\n     * Internal state to track where we are while freezing.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {number}\n     */\n    this.freezeIndex = -1\n\n    /**\n     * Internal state to track whether we\u2019re frozen.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {boolean | undefined}\n     */\n    this.frozen = undefined\n\n    /**\n     * Internal state.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {Data}\n     */\n    this.namespace = {}\n\n    /**\n     * Parser to use.\n     *\n     * @type {(\n     *   Parser<ParseTree extends undefined ? Node : ParseTree> |\n     *   undefined\n     * )}\n     */\n    this.parser = undefined\n\n    /**\n     * Internal list of configured transformers.\n     *\n     * @deprecated\n     *   This is a private internal property and should not be used.\n     * @type {Pipeline}\n     */\n    this.transformers = trough()\n  }\n\n  /**\n   * Copy a processor.\n   *\n   * @deprecated\n   *   This is a private internal method and should not be used.\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *   New *unfrozen* processor ({@linkcode Processor}) that is\n   *   configured to work the same as its ancestor.\n   *   When the descendant processor is configured in the future it does not\n   *   affect the ancestral processor.\n   */\n  copy() {\n    // Cast as the type parameters will be the same after attaching.\n    const destination =\n      /** @type {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>} */ (\n        new Processor()\n      )\n    let index = -1\n\n    while (++index < this.attachers.length) {\n      const attacher = this.attachers[index]\n      destination.use(...attacher)\n    }\n\n    destination.data(extend(true, {}, this.namespace))\n\n    return destination\n  }\n\n  /**\n   * Configure the processor with info available to all plugins.\n   * Information is stored in an object.\n   *\n   * Typically, options can be given to a specific plugin, but sometimes it\n   * makes sense to have information shared with several plugins.\n   * For example, a list of HTML elements that are self-closing, which is\n   * needed during all phases.\n   *\n   * > **Note**: setting information cannot occur on *frozen* processors.\n   * > Call the processor first to create a new unfrozen processor.\n   *\n   * > **Note**: to register custom data in TypeScript, augment the\n   * > {@linkcode Data} interface.\n   *\n   * @example\n   *   This example show how to get and set info:\n   *\n   *   ```js\n   *   import {unified} from 'unified'\n   *\n   *   const processor = unified().data('alpha', 'bravo')\n   *\n   *   processor.data('alpha') // => 'bravo'\n   *\n   *   processor.data() // => {alpha: 'bravo'}\n   *\n   *   processor.data({charlie: 'delta'})\n   *\n   *   processor.data() // => {charlie: 'delta'}\n   *   ```\n   *\n   * @template {keyof Data} Key\n   *\n   * @overload\n   * @returns {Data}\n   *\n   * @overload\n   * @param {Data} dataset\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *\n   * @overload\n   * @param {Key} key\n   * @returns {Data[Key]}\n   *\n   * @overload\n   * @param {Key} key\n   * @param {Data[Key]} value\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *\n   * @param {Data | Key} [key]\n   *   Key to get or set, or entire dataset to set, or nothing to get the\n   *   entire dataset (optional).\n   * @param {Data[Key]} [value]\n   *   Value to set (optional).\n   * @returns {unknown}\n   *   The current processor when setting, the value at `key` when getting, or\n   *   the entire dataset when getting without key.\n   */\n  data(key, value) {\n    if (typeof key === 'string') {\n      // Set `key`.\n      if (arguments.length === 2) {\n        assertUnfrozen('data', this.frozen)\n        this.namespace[key] = value\n        return this\n      }\n\n      // Get `key`.\n      return (own.call(this.namespace, key) && this.namespace[key]) || undefined\n    }\n\n    // Set space.\n    if (key) {\n      assertUnfrozen('data', this.frozen)\n      this.namespace = key\n      return this\n    }\n\n    // Get space.\n    return this.namespace\n  }\n\n  /**\n   * Freeze a processor.\n   *\n   * Frozen processors are meant to be extended and not to be configured\n   * directly.\n   *\n   * When a processor is frozen it cannot be unfrozen.\n   * New processors working the same way can be created by calling the\n   * processor.\n   *\n   * It\u2019s possible to freeze processors explicitly by calling `.freeze()`.\n   * Processors freeze automatically when `.parse()`, `.run()`, `.runSync()`,\n   * `.stringify()`, `.process()`, or `.processSync()` are called.\n   *\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *   The current processor.\n   */\n  freeze() {\n    if (this.frozen) {\n      return this\n    }\n\n    // Cast so that we can type plugins easier.\n    // Plugins are supposed to be usable on different processors, not just on\n    // this exact processor.\n    const self = /** @type {Processor} */ (/** @type {unknown} */ (this))\n\n    while (++this.freezeIndex < this.attachers.length) {\n      const [attacher, ...options] = this.attachers[this.freezeIndex]\n\n      if (options[0] === false) {\n        continue\n      }\n\n      if (options[0] === true) {\n        options[0] = undefined\n      }\n\n      const transformer = attacher.call(self, ...options)\n\n      if (typeof transformer === 'function') {\n        this.transformers.use(transformer)\n      }\n    }\n\n    this.frozen = true\n    this.freezeIndex = Number.POSITIVE_INFINITY\n\n    return this\n  }\n\n  /**\n   * Parse text to a syntax tree.\n   *\n   * > **Note**: `parse` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `parse` performs the parse phase, not the run phase or other\n   * > phases.\n   *\n   * @param {Compatible | undefined} [file]\n   *   file to parse (optional); typically `string` or `VFile`; any value\n   *   accepted as `x` in `new VFile(x)`.\n   * @returns {ParseTree extends undefined ? Node : ParseTree}\n   *   Syntax tree representing `file`.\n   */\n  parse(file) {\n    this.freeze()\n    const realFile = vfile(file)\n    const parser = this.parser || this.Parser\n    assertParser('parse', parser)\n    return parser(String(realFile), realFile)\n  }\n\n  /**\n   * Process the given file as configured on the processor.\n   *\n   * > **Note**: `process` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `process` performs the parse, run, and stringify phases.\n   *\n   * @overload\n   * @param {Compatible | undefined} file\n   * @param {ProcessCallback<VFileWithOutput<CompileResult>>} done\n   * @returns {undefined}\n   *\n   * @overload\n   * @param {Compatible | undefined} [file]\n   * @returns {Promise<VFileWithOutput<CompileResult>>}\n   *\n   * @param {Compatible | undefined} [file]\n   *   File (optional); typically `string` or `VFile`]; any value accepted as\n   *   `x` in `new VFile(x)`.\n   * @param {ProcessCallback<VFileWithOutput<CompileResult>> | undefined} [done]\n   *   Callback (optional).\n   * @returns {Promise<VFile> | undefined}\n   *   Nothing if `done` is given.\n   *   Otherwise a promise, rejected with a fatal error or resolved with the\n   *   processed file.\n   *\n   *   The parsed, transformed, and compiled value is available at\n   *   `file.value` (see note).\n   *\n   *   > **Note**: unified typically compiles by serializing: most\n   *   > compilers return `string` (or `Uint8Array`).\n   *   > Some compilers, such as the one configured with\n   *   > [`rehype-react`][rehype-react], return other values (in this case, a\n   *   > React tree).\n   *   > If you\u2019re using a compiler that doesn\u2019t serialize, expect different\n   *   > result values.\n   *   >\n   *   > To register custom results in TypeScript, add them to\n   *   > {@linkcode CompileResultMap}.\n   *\n   *   [rehype-react]: https://github.com/rehypejs/rehype-react\n   */\n  process(file, done) {\n    const self = this\n\n    this.freeze()\n    assertParser('process', this.parser || this.Parser)\n    assertCompiler('process', this.compiler || this.Compiler)\n\n    return done ? executor(undefined, done) : new Promise(executor)\n\n    // Note: `void`s needed for TS.\n    /**\n     * @param {((file: VFileWithOutput<CompileResult>) => undefined | void) | undefined} resolve\n     * @param {(error: Error | undefined) => undefined | void} reject\n     * @returns {undefined}\n     */\n    function executor(resolve, reject) {\n      const realFile = vfile(file)\n      // Assume `ParseTree` (the result of the parser) matches `HeadTree` (the\n      // input of the first transform).\n      const parseTree =\n        /** @type {HeadTree extends undefined ? Node : HeadTree} */ (\n          /** @type {unknown} */ (self.parse(realFile))\n        )\n\n      self.run(parseTree, realFile, function (error, tree, file) {\n        if (error || !tree || !file) {\n          return realDone(error)\n        }\n\n        // Assume `TailTree` (the output of the last transform) matches\n        // `CompileTree` (the input of the compiler).\n        const compileTree =\n          /** @type {CompileTree extends undefined ? Node : CompileTree} */ (\n            /** @type {unknown} */ (tree)\n          )\n\n        const compileResult = self.stringify(compileTree, file)\n\n        if (looksLikeAValue(compileResult)) {\n          file.value = compileResult\n        } else {\n          file.result = compileResult\n        }\n\n        realDone(error, /** @type {VFileWithOutput<CompileResult>} */ (file))\n      })\n\n      /**\n       * @param {Error | undefined} error\n       * @param {VFileWithOutput<CompileResult> | undefined} [file]\n       * @returns {undefined}\n       */\n      function realDone(error, file) {\n        if (error || !file) {\n          reject(error)\n        } else if (resolve) {\n          resolve(file)\n        } else {\n          assert(done, '`done` is defined if `resolve` is not')\n          done(undefined, file)\n        }\n      }\n    }\n  }\n\n  /**\n   * Process the given file as configured on the processor.\n   *\n   * An error is thrown if asynchronous transforms are configured.\n   *\n   * > **Note**: `processSync` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `processSync` performs the parse, run, and stringify phases.\n   *\n   * @param {Compatible | undefined} [file]\n   *   File (optional); typically `string` or `VFile`; any value accepted as\n   *   `x` in `new VFile(x)`.\n   * @returns {VFileWithOutput<CompileResult>}\n   *   The processed file.\n   *\n   *   The parsed, transformed, and compiled value is available at\n   *   `file.value` (see note).\n   *\n   *   > **Note**: unified typically compiles by serializing: most\n   *   > compilers return `string` (or `Uint8Array`).\n   *   > Some compilers, such as the one configured with\n   *   > [`rehype-react`][rehype-react], return other values (in this case, a\n   *   > React tree).\n   *   > If you\u2019re using a compiler that doesn\u2019t serialize, expect different\n   *   > result values.\n   *   >\n   *   > To register custom results in TypeScript, add them to\n   *   > {@linkcode CompileResultMap}.\n   *\n   *   [rehype-react]: https://github.com/rehypejs/rehype-react\n   */\n  processSync(file) {\n    /** @type {boolean} */\n    let complete = false\n    /** @type {VFileWithOutput<CompileResult> | undefined} */\n    let result\n\n    this.freeze()\n    assertParser('processSync', this.parser || this.Parser)\n    assertCompiler('processSync', this.compiler || this.Compiler)\n\n    this.process(file, realDone)\n    assertDone('processSync', 'process', complete)\n    assert(result, 'we either bailed on an error or have a tree')\n\n    return result\n\n    /**\n     * @type {ProcessCallback<VFileWithOutput<CompileResult>>}\n     */\n    function realDone(error, file) {\n      complete = true\n      bail(error)\n      result = file\n    }\n  }\n\n  /**\n   * Run *transformers* on a syntax tree.\n   *\n   * > **Note**: `run` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `run` performs the run phase, not other phases.\n   *\n   * @overload\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done\n   * @returns {undefined}\n   *\n   * @overload\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   * @param {Compatible | undefined} file\n   * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} done\n   * @returns {undefined}\n   *\n   * @overload\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   * @param {Compatible | undefined} [file]\n   * @returns {Promise<TailTree extends undefined ? Node : TailTree>}\n   *\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   *   Tree to transform and inspect.\n   * @param {(\n   *   RunCallback<TailTree extends undefined ? Node : TailTree> |\n   *   Compatible\n   * )} [file]\n   *   File associated with `node` (optional); any value accepted as `x` in\n   *   `new VFile(x)`.\n   * @param {RunCallback<TailTree extends undefined ? Node : TailTree>} [done]\n   *   Callback (optional).\n   * @returns {Promise<TailTree extends undefined ? Node : TailTree> | undefined}\n   *   Nothing if `done` is given.\n   *   Otherwise, a promise rejected with a fatal error or resolved with the\n   *   transformed tree.\n   */\n  run(tree, file, done) {\n    assertNode(tree)\n    this.freeze()\n\n    const transformers = this.transformers\n\n    if (!done && typeof file === 'function') {\n      done = file\n      file = undefined\n    }\n\n    return done ? executor(undefined, done) : new Promise(executor)\n\n    // Note: `void`s needed for TS.\n    /**\n     * @param {(\n     *   ((tree: TailTree extends undefined ? Node : TailTree) => undefined | void) |\n     *   undefined\n     * )} resolve\n     * @param {(error: Error) => undefined | void} reject\n     * @returns {undefined}\n     */\n    function executor(resolve, reject) {\n      assert(\n        typeof file !== 'function',\n        '`file` can\u2019t be a `done` anymore, we checked'\n      )\n      const realFile = vfile(file)\n      transformers.run(tree, realFile, realDone)\n\n      /**\n       * @param {Error | undefined} error\n       * @param {Node} outputTree\n       * @param {VFile} file\n       * @returns {undefined}\n       */\n      function realDone(error, outputTree, file) {\n        const resultingTree =\n          /** @type {TailTree extends undefined ? Node : TailTree} */ (\n            outputTree || tree\n          )\n\n        if (error) {\n          reject(error)\n        } else if (resolve) {\n          resolve(resultingTree)\n        } else {\n          assert(done, '`done` is defined if `resolve` is not')\n          done(undefined, resultingTree, file)\n        }\n      }\n    }\n  }\n\n  /**\n   * Run *transformers* on a syntax tree.\n   *\n   * An error is thrown if asynchronous transforms are configured.\n   *\n   * > **Note**: `runSync` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `runSync` performs the run phase, not other phases.\n   *\n   * @param {HeadTree extends undefined ? Node : HeadTree} tree\n   *   Tree to transform and inspect.\n   * @param {Compatible | undefined} [file]\n   *   File associated with `node` (optional); any value accepted as `x` in\n   *   `new VFile(x)`.\n   * @returns {TailTree extends undefined ? Node : TailTree}\n   *   Transformed tree.\n   */\n  runSync(tree, file) {\n    /** @type {boolean} */\n    let complete = false\n    /** @type {(TailTree extends undefined ? Node : TailTree) | undefined} */\n    let result\n\n    this.run(tree, file, realDone)\n\n    assertDone('runSync', 'run', complete)\n    assert(result, 'we either bailed on an error or have a tree')\n    return result\n\n    /**\n     * @type {RunCallback<TailTree extends undefined ? Node : TailTree>}\n     */\n    function realDone(error, tree) {\n      bail(error)\n      result = tree\n      complete = true\n    }\n  }\n\n  /**\n   * Compile a syntax tree.\n   *\n   * > **Note**: `stringify` freezes the processor if not already *frozen*.\n   *\n   * > **Note**: `stringify` performs the stringify phase, not the run phase\n   * > or other phases.\n   *\n   * @param {CompileTree extends undefined ? Node : CompileTree} tree\n   *   Tree to compile.\n   * @param {Compatible | undefined} [file]\n   *   File associated with `node` (optional); any value accepted as `x` in\n   *   `new VFile(x)`.\n   * @returns {CompileResult extends undefined ? Value : CompileResult}\n   *   Textual representation of the tree (see note).\n   *\n   *   > **Note**: unified typically compiles by serializing: most compilers\n   *   > return `string` (or `Uint8Array`).\n   *   > Some compilers, such as the one configured with\n   *   > [`rehype-react`][rehype-react], return other values (in this case, a\n   *   > React tree).\n   *   > If you\u2019re using a compiler that doesn\u2019t serialize, expect different\n   *   > result values.\n   *   >\n   *   > To register custom results in TypeScript, add them to\n   *   > {@linkcode CompileResultMap}.\n   *\n   *   [rehype-react]: https://github.com/rehypejs/rehype-react\n   */\n  stringify(tree, file) {\n    this.freeze()\n    const realFile = vfile(file)\n    const compiler = this.compiler || this.Compiler\n    assertCompiler('stringify', compiler)\n    assertNode(tree)\n\n    return compiler(tree, realFile)\n  }\n\n  /**\n   * Configure the processor to use a plugin, a list of usable values, or a\n   * preset.\n   *\n   * If the processor is already using a plugin, the previous plugin\n   * configuration is changed based on the options that are passed in.\n   * In other words, the plugin is not added a second time.\n   *\n   * > **Note**: `use` cannot be called on *frozen* processors.\n   * > Call the processor first to create a new unfrozen processor.\n   *\n   * @example\n   *   There are many ways to pass plugins to `.use()`.\n   *   This example gives an overview:\n   *\n   *   ```js\n   *   import {unified} from 'unified'\n   *\n   *   unified()\n   *     // Plugin with options:\n   *     .use(pluginA, {x: true, y: true})\n   *     // Passing the same plugin again merges configuration (to `{x: true, y: false, z: true}`):\n   *     .use(pluginA, {y: false, z: true})\n   *     // Plugins:\n   *     .use([pluginB, pluginC])\n   *     // Two plugins, the second with options:\n   *     .use([pluginD, [pluginE, {}]])\n   *     // Preset with plugins and settings:\n   *     .use({plugins: [pluginF, [pluginG, {}]], settings: {position: false}})\n   *     // Settings only:\n   *     .use({settings: {position: false}})\n   *   ```\n   *\n   * @template {Array<unknown>} [Parameters=[]]\n   * @template {Node | string | undefined} [Input=undefined]\n   * @template [Output=Input]\n   *\n   * @overload\n   * @param {Preset | null | undefined} [preset]\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *\n   * @overload\n   * @param {PluggableList} list\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *\n   * @overload\n   * @param {Plugin<Parameters, Input, Output>} plugin\n   * @param {...(Parameters | [boolean])} parameters\n   * @returns {UsePlugin<ParseTree, HeadTree, TailTree, CompileTree, CompileResult, Input, Output>}\n   *\n   * @param {PluggableList | Plugin | Preset | null | undefined} value\n   *   Usable value.\n   * @param {...unknown} parameters\n   *   Parameters, when a plugin is given as a usable value.\n   * @returns {Processor<ParseTree, HeadTree, TailTree, CompileTree, CompileResult>}\n   *   Current processor.\n   */\n  use(value, ...parameters) {\n    const attachers = this.attachers\n    const namespace = this.namespace\n\n    assertUnfrozen('use', this.frozen)\n\n    if (value === null || value === undefined) {\n      // Empty.\n    } else if (typeof value === 'function') {\n      addPlugin(value, parameters)\n    } else if (typeof value === 'object') {\n      if (Array.isArray(value)) {\n        addList(value)\n      } else {\n        addPreset(value)\n      }\n    } else {\n      throw new TypeError('Expected usable value, not `' + value + '`')\n    }\n\n    return this\n\n    /**\n     * @param {Pluggable} value\n     * @returns {undefined}\n     */\n    function add(value) {\n      if (typeof value === 'function') {\n        addPlugin(value, [])\n      } else if (typeof value === 'object') {\n        if (Array.isArray(value)) {\n          const [plugin, ...parameters] =\n            /** @type {PluginTuple<Array<unknown>>} */ (value)\n          addPlugin(plugin, parameters)\n        } else {\n          addPreset(value)\n        }\n      } else {\n        throw new TypeError('Expected usable value, not `' + value + '`')\n      }\n    }\n\n    /**\n     * @param {Preset} result\n     * @returns {undefined}\n     */\n    function addPreset(result) {\n      if (!('plugins' in result) && !('settings' in result)) {\n        throw new Error(\n          'Expected usable value but received an empty preset, which is probably a mistake: presets typically come with `plugins` and sometimes with `settings`, but this has neither'\n        )\n      }\n\n      addList(result.plugins)\n\n      if (result.settings) {\n        namespace.settings = extend(true, namespace.settings, result.settings)\n      }\n    }\n\n    /**\n     * @param {PluggableList | null | undefined} plugins\n     * @returns {undefined}\n     */\n    function addList(plugins) {\n      let index = -1\n\n      if (plugins === null || plugins === undefined) {\n        // Empty.\n      } else if (Array.isArray(plugins)) {\n        while (++index < plugins.length) {\n          const thing = plugins[index]\n          add(thing)\n        }\n      } else {\n        throw new TypeError('Expected a list of plugins, not `' + plugins + '`')\n      }\n    }\n\n    /**\n     * @param {Plugin} plugin\n     * @param {Array<unknown>} parameters\n     * @returns {undefined}\n     */\n    function addPlugin(plugin, parameters) {\n      let index = -1\n      let entryIndex = -1\n\n      while (++index < attachers.length) {\n        if (attachers[index][0] === plugin) {\n          entryIndex = index\n          break\n        }\n      }\n\n      if (entryIndex === -1) {\n        attachers.push([plugin, ...parameters])\n      }\n      // Only set if there was at least a `primary` value, otherwise we\u2019d change\n      // `arguments.length`.\n      else if (parameters.length > 0) {\n        let [primary, ...rest] = parameters\n        const currentPrimary = attachers[entryIndex][1]\n        if (isPlainObj(currentPrimary) && isPlainObj(primary)) {\n          primary = extend(true, currentPrimary, primary)\n        }\n\n        attachers[entryIndex] = [plugin, primary, ...rest]\n      }\n    }\n  }\n}\n\n// Note: this returns a *callable* instance.\n// That\u2019s why it\u2019s documented as a function.\n/**\n * Create a new processor.\n *\n * @example\n *   This example shows how a new processor can be created (from `remark`) and linked\n *   to **stdin**(4) and **stdout**(4).\n *\n *   ```js\n *   import process from 'node:process'\n *   import concatStream from 'concat-stream'\n *   import {remark} from 'remark'\n *\n *   process.stdin.pipe(\n *     concatStream(function (buf) {\n *       process.stdout.write(String(remark().processSync(buf)))\n *     })\n *   )\n *   ```\n *\n * @returns\n *   New *unfrozen* processor (`processor`).\n *\n *   This processor is configured to work the same as its ancestor.\n *   When the descendant processor is configured in the future it does not\n *   affect the ancestral processor.\n */\nexport const unified = new Processor().freeze()\n\n/**\n * Assert a parser is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Parser}\n */\nfunction assertParser(name, value) {\n  if (typeof value !== 'function') {\n    throw new TypeError('Cannot `' + name + '` without `parser`')\n  }\n}\n\n/**\n * Assert a compiler is available.\n *\n * @param {string} name\n * @param {unknown} value\n * @returns {asserts value is Compiler}\n */\nfunction assertCompiler(name, value) {\n  if (typeof value !== 'function') {\n    throw new TypeError('Cannot `' + name + '` without `compiler`')\n  }\n}\n\n/**\n * Assert the processor is not frozen.\n *\n * @param {string} name\n * @param {unknown} frozen\n * @returns {asserts frozen is false}\n */\nfunction assertUnfrozen(name, frozen) {\n  if (frozen) {\n    throw new Error(\n      'Cannot call `' +\n        name +\n        '` on a frozen processor.\\nCreate a new processor first, by calling it: use `processor()` instead of `processor`.'\n    )\n  }\n}\n\n/**\n * Assert `node` is a unist node.\n *\n * @param {unknown} node\n * @returns {asserts node is Node}\n */\nfunction assertNode(node) {\n  // `isPlainObj` unfortunately uses `any` instead of `unknown`.\n  // type-coverage:ignore-next-line\n  if (!isPlainObj(node) || typeof node.type !== 'string') {\n    throw new TypeError('Expected node, got `' + node + '`')\n    // Fine.\n  }\n}\n\n/**\n * Assert that `complete` is `true`.\n *\n * @param {string} name\n * @param {string} asyncName\n * @param {unknown} complete\n * @returns {asserts complete is true}\n */\nfunction assertDone(name, asyncName, complete) {\n  if (!complete) {\n    throw new Error(\n      '`' + name + '` finished async. Use `' + asyncName + '` instead'\n    )\n  }\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {VFile}\n */\nfunction vfile(value) {\n  return looksLikeAVFile(value) ? value : new VFile(value)\n}\n\n/**\n * @param {Compatible | undefined} [value]\n * @returns {value is VFile}\n */\nfunction looksLikeAVFile(value) {\n  return Boolean(\n    value &&\n      typeof value === 'object' &&\n      'message' in value &&\n      'messages' in value\n  )\n}\n\n/**\n * @param {unknown} [value]\n * @returns {value is Value}\n */\nfunction looksLikeAValue(value) {\n  return typeof value === 'string' || isUint8Array(value)\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n *   thing.\n * @returns {value is Uint8Array}\n *   Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n  return Boolean(\n    value &&\n      typeof value === 'object' &&\n      'byteLength' in value &&\n      'byteOffset' in value\n  )\n}\n", "export default function isPlainObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value);\n\treturn (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in value) && !(Symbol.iterator in value);\n}\n", "// To do: remove `void`s\n// To do: remove `null` from output of our APIs, allow it as user APIs.\n\n/**\n * @typedef {(error?: Error | null | undefined, ...output: Array<any>) => void} Callback\n *   Callback.\n *\n * @typedef {(...input: Array<any>) => any} Middleware\n *   Ware.\n *\n * @typedef Pipeline\n *   Pipeline.\n * @property {Run} run\n *   Run the pipeline.\n * @property {Use} use\n *   Add middleware.\n *\n * @typedef {(...input: Array<any>) => void} Run\n *   Call all middleware.\n *\n *   Calls `done` on completion with either an error or the output of the\n *   last middleware.\n *\n *   > \uD83D\uDC49 **Note**: as the length of input defines whether async functions get a\n *   > `next` function,\n *   > it\u2019s recommended to keep `input` at one value normally.\n\n *\n * @typedef {(fn: Middleware) => Pipeline} Use\n *   Add middleware.\n */\n\n/**\n * Create new middleware.\n *\n * @returns {Pipeline}\n *   Pipeline.\n */\nexport function trough() {\n  /** @type {Array<Middleware>} */\n  const fns = []\n  /** @type {Pipeline} */\n  const pipeline = {run, use}\n\n  return pipeline\n\n  /** @type {Run} */\n  function run(...values) {\n    let middlewareIndex = -1\n    /** @type {Callback} */\n    const callback = values.pop()\n\n    if (typeof callback !== 'function') {\n      throw new TypeError('Expected function as last argument, not ' + callback)\n    }\n\n    next(null, ...values)\n\n    /**\n     * Run the next `fn`, or we\u2019re done.\n     *\n     * @param {Error | null | undefined} error\n     * @param {Array<any>} output\n     */\n    function next(error, ...output) {\n      const fn = fns[++middlewareIndex]\n      let index = -1\n\n      if (error) {\n        callback(error)\n        return\n      }\n\n      // Copy non-nullish input into values.\n      while (++index < values.length) {\n        if (output[index] === null || output[index] === undefined) {\n          output[index] = values[index]\n        }\n      }\n\n      // Save the newly created `output` for the next call.\n      values = output\n\n      // Next or done.\n      if (fn) {\n        wrap(fn, next)(...output)\n      } else {\n        callback(null, ...output)\n      }\n    }\n  }\n\n  /** @type {Use} */\n  function use(middelware) {\n    if (typeof middelware !== 'function') {\n      throw new TypeError(\n        'Expected `middelware` to be a function, not ' + middelware\n      )\n    }\n\n    fns.push(middelware)\n    return pipeline\n  }\n}\n\n/**\n * Wrap `middleware` into a uniform interface.\n *\n * You can pass all input to the resulting function.\n * `callback` is then called with the output of `middleware`.\n *\n * If `middleware` accepts more arguments than the later given in input,\n * an extra `done` function is passed to it after that input,\n * which must be called by `middleware`.\n *\n * The first value in `input` is the main input value.\n * All other input values are the rest input values.\n * The values given to `callback` are the input values,\n * merged with every non-nullish output value.\n *\n * * if `middleware` throws an error,\n *   returns a promise that is rejected,\n *   or calls the given `done` function with an error,\n *   `callback` is called with that error\n * * if `middleware` returns a value or returns a promise that is resolved,\n *   that value is the main output value\n * * if `middleware` calls `done`,\n *   all non-nullish values except for the first one (the error) overwrite the\n *   output values\n *\n * @param {Middleware} middleware\n *   Function to wrap.\n * @param {Callback} callback\n *   Callback called with the output of `middleware`.\n * @returns {Run}\n *   Wrapped middleware.\n */\nexport function wrap(middleware, callback) {\n  /** @type {boolean} */\n  let called\n\n  return wrapped\n\n  /**\n   * Call `middleware`.\n   * @this {any}\n   * @param {Array<any>} parameters\n   * @returns {void}\n   */\n  function wrapped(...parameters) {\n    const fnExpectsCallback = middleware.length > parameters.length\n    /** @type {any} */\n    let result\n\n    if (fnExpectsCallback) {\n      parameters.push(done)\n    }\n\n    try {\n      result = middleware.apply(this, parameters)\n    } catch (error) {\n      const exception = /** @type {Error} */ (error)\n\n      // Well, this is quite the pickle.\n      // `middleware` received a callback and called it synchronously, but that\n      // threw an error.\n      // The only thing left to do is to throw the thing instead.\n      if (fnExpectsCallback && called) {\n        throw exception\n      }\n\n      return done(exception)\n    }\n\n    if (!fnExpectsCallback) {\n      if (result && result.then && typeof result.then === 'function') {\n        result.then(then, done)\n      } else if (result instanceof Error) {\n        done(result)\n      } else {\n        then(result)\n      }\n    }\n  }\n\n  /**\n   * Call `callback`, only once.\n   *\n   * @type {Callback}\n   */\n  function done(error, ...output) {\n    if (!called) {\n      called = true\n      callback(error, ...output)\n    }\n  }\n\n  /**\n   * Call `done` with one value.\n   *\n   * @param {any} [value]\n   */\n  function then(value) {\n    done(null, value)\n  }\n}\n", "// A derivative work based on:\n// <https://github.com/browserify/path-browserify>.\n// Which is licensed:\n//\n// MIT License\n//\n// Copyright (c) 2013 James Halliday\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n// A derivative work based on:\n//\n// Parts of that are extracted from Node\u2019s internal `path` module:\n// <https://github.com/nodejs/node/blob/master/lib/path.js>.\n// Which is licensed:\n//\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nexport const minpath = {basename, dirname, extname, join, sep: '/'}\n\n/* eslint-disable max-depth, complexity */\n\n/**\n * Get the basename from a path.\n *\n * @param {string} path\n *   File path.\n * @param {string | null | undefined} [extname]\n *   Extension to strip.\n * @returns {string}\n *   Stem or basename.\n */\nfunction basename(path, extname) {\n  if (extname !== undefined && typeof extname !== 'string') {\n    throw new TypeError('\"ext\" argument must be a string')\n  }\n\n  assertPath(path)\n  let start = 0\n  let end = -1\n  let index = path.length\n  /** @type {boolean | undefined} */\n  let seenNonSlash\n\n  if (\n    extname === undefined ||\n    extname.length === 0 ||\n    extname.length > path.length\n  ) {\n    while (index--) {\n      if (path.codePointAt(index) === 47 /* `/` */) {\n        // If we reached a path separator that was not part of a set of path\n        // separators at the end of the string, stop now.\n        if (seenNonSlash) {\n          start = index + 1\n          break\n        }\n      } else if (end < 0) {\n        // We saw the first non-path separator, mark this as the end of our\n        // path component.\n        seenNonSlash = true\n        end = index + 1\n      }\n    }\n\n    return end < 0 ? '' : path.slice(start, end)\n  }\n\n  if (extname === path) {\n    return ''\n  }\n\n  let firstNonSlashEnd = -1\n  let extnameIndex = extname.length - 1\n\n  while (index--) {\n    if (path.codePointAt(index) === 47 /* `/` */) {\n      // If we reached a path separator that was not part of a set of path\n      // separators at the end of the string, stop now.\n      if (seenNonSlash) {\n        start = index + 1\n        break\n      }\n    } else {\n      if (firstNonSlashEnd < 0) {\n        // We saw the first non-path separator, remember this index in case\n        // we need it if the extension ends up not matching.\n        seenNonSlash = true\n        firstNonSlashEnd = index + 1\n      }\n\n      if (extnameIndex > -1) {\n        // Try to match the explicit extension.\n        if (path.codePointAt(index) === extname.codePointAt(extnameIndex--)) {\n          if (extnameIndex < 0) {\n            // We matched the extension, so mark this as the end of our path\n            // component\n            end = index\n          }\n        } else {\n          // Extension does not match, so our result is the entire path\n          // component\n          extnameIndex = -1\n          end = firstNonSlashEnd\n        }\n      }\n    }\n  }\n\n  if (start === end) {\n    end = firstNonSlashEnd\n  } else if (end < 0) {\n    end = path.length\n  }\n\n  return path.slice(start, end)\n}\n\n/**\n * Get the dirname from a path.\n *\n * @param {string} path\n *   File path.\n * @returns {string}\n *   File path.\n */\nfunction dirname(path) {\n  assertPath(path)\n\n  if (path.length === 0) {\n    return '.'\n  }\n\n  let end = -1\n  let index = path.length\n  /** @type {boolean | undefined} */\n  let unmatchedSlash\n\n  // Prefix `--` is important to not run on `0`.\n  while (--index) {\n    if (path.codePointAt(index) === 47 /* `/` */) {\n      if (unmatchedSlash) {\n        end = index\n        break\n      }\n    } else if (!unmatchedSlash) {\n      // We saw the first non-path separator\n      unmatchedSlash = true\n    }\n  }\n\n  return end < 0\n    ? path.codePointAt(0) === 47 /* `/` */\n      ? '/'\n      : '.'\n    : end === 1 && path.codePointAt(0) === 47 /* `/` */\n      ? '//'\n      : path.slice(0, end)\n}\n\n/**\n * Get an extname from a path.\n *\n * @param {string} path\n *   File path.\n * @returns {string}\n *   Extname.\n */\nfunction extname(path) {\n  assertPath(path)\n\n  let index = path.length\n\n  let end = -1\n  let startPart = 0\n  let startDot = -1\n  // Track the state of characters (if any) we see before our first dot and\n  // after any path separator we find.\n  let preDotState = 0\n  /** @type {boolean | undefined} */\n  let unmatchedSlash\n\n  while (index--) {\n    const code = path.codePointAt(index)\n\n    if (code === 47 /* `/` */) {\n      // If we reached a path separator that was not part of a set of path\n      // separators at the end of the string, stop now.\n      if (unmatchedSlash) {\n        startPart = index + 1\n        break\n      }\n\n      continue\n    }\n\n    if (end < 0) {\n      // We saw the first non-path separator, mark this as the end of our\n      // extension.\n      unmatchedSlash = true\n      end = index + 1\n    }\n\n    if (code === 46 /* `.` */) {\n      // If this is our first dot, mark it as the start of our extension.\n      if (startDot < 0) {\n        startDot = index\n      } else if (preDotState !== 1) {\n        preDotState = 1\n      }\n    } else if (startDot > -1) {\n      // We saw a non-dot and non-path separator before our dot, so we should\n      // have a good chance at having a non-empty extension.\n      preDotState = -1\n    }\n  }\n\n  if (\n    startDot < 0 ||\n    end < 0 ||\n    // We saw a non-dot character immediately before the dot.\n    preDotState === 0 ||\n    // The (right-most) trimmed path component is exactly `..`.\n    (preDotState === 1 && startDot === end - 1 && startDot === startPart + 1)\n  ) {\n    return ''\n  }\n\n  return path.slice(startDot, end)\n}\n\n/**\n * Join segments from a path.\n *\n * @param {Array<string>} segments\n *   Path segments.\n * @returns {string}\n *   File path.\n */\nfunction join(...segments) {\n  let index = -1\n  /** @type {string | undefined} */\n  let joined\n\n  while (++index < segments.length) {\n    assertPath(segments[index])\n\n    if (segments[index]) {\n      joined =\n        joined === undefined ? segments[index] : joined + '/' + segments[index]\n    }\n  }\n\n  return joined === undefined ? '.' : normalize(joined)\n}\n\n/**\n * Normalize a basic file path.\n *\n * @param {string} path\n *   File path.\n * @returns {string}\n *   File path.\n */\n// Note: `normalize` is not exposed as `path.normalize`, so some code is\n// manually removed from it.\nfunction normalize(path) {\n  assertPath(path)\n\n  const absolute = path.codePointAt(0) === 47 /* `/` */\n\n  // Normalize the path according to POSIX rules.\n  let value = normalizeString(path, !absolute)\n\n  if (value.length === 0 && !absolute) {\n    value = '.'\n  }\n\n  if (value.length > 0 && path.codePointAt(path.length - 1) === 47 /* / */) {\n    value += '/'\n  }\n\n  return absolute ? '/' + value : value\n}\n\n/**\n * Resolve `.` and `..` elements in a path with directory names.\n *\n * @param {string} path\n *   File path.\n * @param {boolean} allowAboveRoot\n *   Whether `..` can move above root.\n * @returns {string}\n *   File path.\n */\nfunction normalizeString(path, allowAboveRoot) {\n  let result = ''\n  let lastSegmentLength = 0\n  let lastSlash = -1\n  let dots = 0\n  let index = -1\n  /** @type {number | undefined} */\n  let code\n  /** @type {number} */\n  let lastSlashIndex\n\n  while (++index <= path.length) {\n    if (index < path.length) {\n      code = path.codePointAt(index)\n    } else if (code === 47 /* `/` */) {\n      break\n    } else {\n      code = 47 /* `/` */\n    }\n\n    if (code === 47 /* `/` */) {\n      if (lastSlash === index - 1 || dots === 1) {\n        // Empty.\n      } else if (lastSlash !== index - 1 && dots === 2) {\n        if (\n          result.length < 2 ||\n          lastSegmentLength !== 2 ||\n          result.codePointAt(result.length - 1) !== 46 /* `.` */ ||\n          result.codePointAt(result.length - 2) !== 46 /* `.` */\n        ) {\n          if (result.length > 2) {\n            lastSlashIndex = result.lastIndexOf('/')\n\n            if (lastSlashIndex !== result.length - 1) {\n              if (lastSlashIndex < 0) {\n                result = ''\n                lastSegmentLength = 0\n              } else {\n                result = result.slice(0, lastSlashIndex)\n                lastSegmentLength = result.length - 1 - result.lastIndexOf('/')\n              }\n\n              lastSlash = index\n              dots = 0\n              continue\n            }\n          } else if (result.length > 0) {\n            result = ''\n            lastSegmentLength = 0\n            lastSlash = index\n            dots = 0\n            continue\n          }\n        }\n\n        if (allowAboveRoot) {\n          result = result.length > 0 ? result + '/..' : '..'\n          lastSegmentLength = 2\n        }\n      } else {\n        if (result.length > 0) {\n          result += '/' + path.slice(lastSlash + 1, index)\n        } else {\n          result = path.slice(lastSlash + 1, index)\n        }\n\n        lastSegmentLength = index - lastSlash - 1\n      }\n\n      lastSlash = index\n      dots = 0\n    } else if (code === 46 /* `.` */ && dots > -1) {\n      dots++\n    } else {\n      dots = -1\n    }\n  }\n\n  return result\n}\n\n/**\n * Make sure `path` is a string.\n *\n * @param {string} path\n *   File path.\n * @returns {asserts path is string}\n *   Nothing.\n */\nfunction assertPath(path) {\n  if (typeof path !== 'string') {\n    throw new TypeError(\n      'Path must be a string. Received ' + JSON.stringify(path)\n    )\n  }\n}\n\n/* eslint-enable max-depth, complexity */\n", "// Somewhat based on:\n// <https://github.com/defunctzombie/node-process/blob/master/browser.js>.\n// But I don\u2019t think one tiny line of code can be copyrighted. \uD83D\uDE05\nexport const minproc = {cwd}\n\nfunction cwd() {\n  return '/'\n}\n", "/**\n * Checks if a value has the shape of a WHATWG URL object.\n *\n * Using a symbol or instanceof would not be able to recognize URL objects\n * coming from other implementations (e.g. in Electron), so instead we are\n * checking some well known properties for a lack of a better test.\n *\n * We use `href` and `protocol` as they are the only properties that are\n * easy to retrieve and calculate due to the lazy nature of the getters.\n *\n * We check for auth attribute to distinguish legacy url instance with\n * WHATWG URL instance.\n *\n * @param {unknown} fileUrlOrPath\n *   File path or URL.\n * @returns {fileUrlOrPath is URL}\n *   Whether it\u2019s a URL.\n */\n// From: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js#L720>\nexport function isUrl(fileUrlOrPath) {\n  return Boolean(\n    fileUrlOrPath !== null &&\n      typeof fileUrlOrPath === 'object' &&\n      'href' in fileUrlOrPath &&\n      fileUrlOrPath.href &&\n      'protocol' in fileUrlOrPath &&\n      fileUrlOrPath.protocol &&\n      // @ts-expect-error: indexing is fine.\n      fileUrlOrPath.auth === undefined\n  )\n}\n", "import {isUrl} from './minurl.shared.js'\n\nexport {isUrl} from './minurl.shared.js'\n\n// See: <https://github.com/nodejs/node/blob/6a3403c/lib/internal/url.js>\n\n/**\n * @param {URL | string} path\n *   File URL.\n * @returns {string}\n *   File URL.\n */\nexport function urlToPath(path) {\n  if (typeof path === 'string') {\n    path = new URL(path)\n  } else if (!isUrl(path)) {\n    /** @type {NodeJS.ErrnoException} */\n    const error = new TypeError(\n      'The \"path\" argument must be of type string or an instance of URL. Received `' +\n        path +\n        '`'\n    )\n    error.code = 'ERR_INVALID_ARG_TYPE'\n    throw error\n  }\n\n  if (path.protocol !== 'file:') {\n    /** @type {NodeJS.ErrnoException} */\n    const error = new TypeError('The URL must be of scheme file')\n    error.code = 'ERR_INVALID_URL_SCHEME'\n    throw error\n  }\n\n  return getPathFromURLPosix(path)\n}\n\n/**\n * Get a path from a POSIX URL.\n *\n * @param {URL} url\n *   URL.\n * @returns {string}\n *   File path.\n */\nfunction getPathFromURLPosix(url) {\n  if (url.hostname !== '') {\n    /** @type {NodeJS.ErrnoException} */\n    const error = new TypeError(\n      'File URL host must be \"localhost\" or empty on darwin'\n    )\n    error.code = 'ERR_INVALID_FILE_URL_HOST'\n    throw error\n  }\n\n  const pathname = url.pathname\n  let index = -1\n\n  while (++index < pathname.length) {\n    if (\n      pathname.codePointAt(index) === 37 /* `%` */ &&\n      pathname.codePointAt(index + 1) === 50 /* `2` */\n    ) {\n      const third = pathname.codePointAt(index + 2)\n      if (third === 70 /* `F` */ || third === 102 /* `f` */) {\n        /** @type {NodeJS.ErrnoException} */\n        const error = new TypeError(\n          'File URL path must not include encoded / characters'\n        )\n        error.code = 'ERR_INVALID_FILE_URL_PATH'\n        throw error\n      }\n    }\n  }\n\n  return decodeURIComponent(pathname)\n}\n", "/**\n * @import {Node, Point, Position} from 'unist'\n * @import {Options as MessageOptions} from 'vfile-message'\n * @import {Compatible, Data, Map, Options, Value} from 'vfile'\n */\n\n/**\n * @typedef {object & {type: string, position?: Position | undefined}} NodeLike\n */\n\nimport {VFileMessage} from 'vfile-message'\nimport {minpath} from '#minpath'\nimport {minproc} from '#minproc'\nimport {urlToPath, isUrl} from '#minurl'\n\n/**\n * Order of setting (least specific to most), we need this because otherwise\n * `{stem: 'a', path: '~/b.js'}` would throw, as a path is needed before a\n * stem can be set.\n */\nconst order = /** @type {const} */ ([\n  'history',\n  'path',\n  'basename',\n  'stem',\n  'extname',\n  'dirname'\n])\n\nexport class VFile {\n  /**\n   * Create a new virtual file.\n   *\n   * `options` is treated as:\n   *\n   * *   `string` or `Uint8Array` \u2014 `{value: options}`\n   * *   `URL` \u2014 `{path: options}`\n   * *   `VFile` \u2014 shallow copies its data over to the new file\n   * *   `object` \u2014 all fields are shallow copied over to the new file\n   *\n   * Path related fields are set in the following order (least specific to\n   * most specific): `history`, `path`, `basename`, `stem`, `extname`,\n   * `dirname`.\n   *\n   * You cannot set `dirname` or `extname` without setting either `history`,\n   * `path`, `basename`, or `stem` too.\n   *\n   * @param {Compatible | null | undefined} [value]\n   *   File value.\n   * @returns\n   *   New instance.\n   */\n  constructor(value) {\n    /** @type {Options | VFile} */\n    let options\n\n    if (!value) {\n      options = {}\n    } else if (isUrl(value)) {\n      options = {path: value}\n    } else if (typeof value === 'string' || isUint8Array(value)) {\n      options = {value}\n    } else {\n      options = value\n    }\n\n    /* eslint-disable no-unused-expressions */\n\n    /**\n     * Base of `path` (default: `process.cwd()` or `'/'` in browsers).\n     *\n     * @type {string}\n     */\n    // Prevent calling `cwd` (which could be expensive) if it\u2019s not needed;\n    // the empty string will be overridden in the next block.\n    this.cwd = 'cwd' in options ? '' : minproc.cwd()\n\n    /**\n     * Place to store custom info (default: `{}`).\n     *\n     * It\u2019s OK to store custom data directly on the file but moving it to\n     * `data` is recommended.\n     *\n     * @type {Data}\n     */\n    this.data = {}\n\n    /**\n     * List of file paths the file moved between.\n     *\n     * The first is the original path and the last is the current path.\n     *\n     * @type {Array<string>}\n     */\n    this.history = []\n\n    /**\n     * List of messages associated with the file.\n     *\n     * @type {Array<VFileMessage>}\n     */\n    this.messages = []\n\n    /**\n     * Raw value.\n     *\n     * @type {Value}\n     */\n    this.value\n\n    // The below are non-standard, they are \u201Cwell-known\u201D.\n    // As in, used in several tools.\n    /**\n     * Source map.\n     *\n     * This type is equivalent to the `RawSourceMap` type from the `source-map`\n     * module.\n     *\n     * @type {Map | null | undefined}\n     */\n    this.map\n\n    /**\n     * Custom, non-string, compiled, representation.\n     *\n     * This is used by unified to store non-string results.\n     * One example is when turning markdown into React nodes.\n     *\n     * @type {unknown}\n     */\n    this.result\n\n    /**\n     * Whether a file was saved to disk.\n     *\n     * This is used by vfile reporters.\n     *\n     * @type {boolean}\n     */\n    this.stored\n    /* eslint-enable no-unused-expressions */\n\n    // Set path related properties in the correct order.\n    let index = -1\n\n    while (++index < order.length) {\n      const field = order[index]\n\n      // Note: we specifically use `in` instead of `hasOwnProperty` to accept\n      // `vfile`s too.\n      if (\n        field in options &&\n        options[field] !== undefined &&\n        options[field] !== null\n      ) {\n        // @ts-expect-error: TS doesn\u2019t understand basic reality.\n        this[field] = field === 'history' ? [...options[field]] : options[field]\n      }\n    }\n\n    /** @type {string} */\n    let field\n\n    // Set non-path related properties.\n    for (field in options) {\n      // @ts-expect-error: fine to set other things.\n      if (!order.includes(field)) {\n        // @ts-expect-error: fine to set other things.\n        this[field] = options[field]\n      }\n    }\n  }\n\n  /**\n   * Get the basename (including extname) (example: `'index.min.js'`).\n   *\n   * @returns {string | undefined}\n   *   Basename.\n   */\n  get basename() {\n    return typeof this.path === 'string'\n      ? minpath.basename(this.path)\n      : undefined\n  }\n\n  /**\n   * Set basename (including extname) (`'index.min.js'`).\n   *\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be nullified (use `file.path = file.dirname` instead).\n   *\n   * @param {string} basename\n   *   Basename.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set basename(basename) {\n    assertNonEmpty(basename, 'basename')\n    assertPart(basename, 'basename')\n    this.path = minpath.join(this.dirname || '', basename)\n  }\n\n  /**\n   * Get the parent path (example: `'~'`).\n   *\n   * @returns {string | undefined}\n   *   Dirname.\n   */\n  get dirname() {\n    return typeof this.path === 'string'\n      ? minpath.dirname(this.path)\n      : undefined\n  }\n\n  /**\n   * Set the parent path (example: `'~'`).\n   *\n   * Cannot be set if there\u2019s no `path` yet.\n   *\n   * @param {string | undefined} dirname\n   *   Dirname.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set dirname(dirname) {\n    assertPath(this.basename, 'dirname')\n    this.path = minpath.join(dirname || '', this.basename)\n  }\n\n  /**\n   * Get the extname (including dot) (example: `'.js'`).\n   *\n   * @returns {string | undefined}\n   *   Extname.\n   */\n  get extname() {\n    return typeof this.path === 'string'\n      ? minpath.extname(this.path)\n      : undefined\n  }\n\n  /**\n   * Set the extname (including dot) (example: `'.js'`).\n   *\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be set if there\u2019s no `path` yet.\n   *\n   * @param {string | undefined} extname\n   *   Extname.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set extname(extname) {\n    assertPart(extname, 'extname')\n    assertPath(this.dirname, 'extname')\n\n    if (extname) {\n      if (extname.codePointAt(0) !== 46 /* `.` */) {\n        throw new Error('`extname` must start with `.`')\n      }\n\n      if (extname.includes('.', 1)) {\n        throw new Error('`extname` cannot contain multiple dots')\n      }\n    }\n\n    this.path = minpath.join(this.dirname, this.stem + (extname || ''))\n  }\n\n  /**\n   * Get the full path (example: `'~/index.min.js'`).\n   *\n   * @returns {string}\n   *   Path.\n   */\n  get path() {\n    return this.history[this.history.length - 1]\n  }\n\n  /**\n   * Set the full path (example: `'~/index.min.js'`).\n   *\n   * Cannot be nullified.\n   * You can set a file URL (a `URL` object with a `file:` protocol) which will\n   * be turned into a path with `url.fileURLToPath`.\n   *\n   * @param {URL | string} path\n   *   Path.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set path(path) {\n    if (isUrl(path)) {\n      path = urlToPath(path)\n    }\n\n    assertNonEmpty(path, 'path')\n\n    if (this.path !== path) {\n      this.history.push(path)\n    }\n  }\n\n  /**\n   * Get the stem (basename w/o extname) (example: `'index.min'`).\n   *\n   * @returns {string | undefined}\n   *   Stem.\n   */\n  get stem() {\n    return typeof this.path === 'string'\n      ? minpath.basename(this.path, this.extname)\n      : undefined\n  }\n\n  /**\n   * Set the stem (basename w/o extname) (example: `'index.min'`).\n   *\n   * Cannot contain path separators (`'/'` on unix, macOS, and browsers, `'\\'`\n   * on windows).\n   * Cannot be nullified (use `file.path = file.dirname` instead).\n   *\n   * @param {string} stem\n   *   Stem.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  set stem(stem) {\n    assertNonEmpty(stem, 'stem')\n    assertPart(stem, 'stem')\n    this.path = minpath.join(this.dirname || '', stem + (this.extname || ''))\n  }\n\n  // Normal prototypal methods.\n  /**\n   * Create a fatal message for `reason` associated with the file.\n   *\n   * The `fatal` field of the message is set to `true` (error; file not usable)\n   * and the `file` field is set to the current file path.\n   * The message is added to the `messages` field on `file`.\n   *\n   * > \uD83E\uDEA6 **Note**: also has obsolete signatures.\n   *\n   * @overload\n   * @param {string} reason\n   * @param {MessageOptions | null | undefined} [options]\n   * @returns {never}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {string | null | undefined} [origin]\n   * @returns {never}\n   *\n   * @param {Error | VFileMessage | string} causeOrReason\n   *   Reason for message, should use markdown.\n   * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n   *   Configuration (optional).\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns {never}\n   *   Never.\n   * @throws {VFileMessage}\n   *   Message.\n   */\n  fail(causeOrReason, optionsOrParentOrPlace, origin) {\n    // @ts-expect-error: the overloads are fine.\n    const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n    message.fatal = true\n\n    throw message\n  }\n\n  /**\n   * Create an info message for `reason` associated with the file.\n   *\n   * The `fatal` field of the message is set to `undefined` (info; change\n   * likely not needed) and the `file` field is set to the current file path.\n   * The message is added to the `messages` field on `file`.\n   *\n   * > \uD83E\uDEA6 **Note**: also has obsolete signatures.\n   *\n   * @overload\n   * @param {string} reason\n   * @param {MessageOptions | null | undefined} [options]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @param {Error | VFileMessage | string} causeOrReason\n   *   Reason for message, should use markdown.\n   * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n   *   Configuration (optional).\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns {VFileMessage}\n   *   Message.\n   */\n  info(causeOrReason, optionsOrParentOrPlace, origin) {\n    // @ts-expect-error: the overloads are fine.\n    const message = this.message(causeOrReason, optionsOrParentOrPlace, origin)\n\n    message.fatal = undefined\n\n    return message\n  }\n\n  /**\n   * Create a message for `reason` associated with the file.\n   *\n   * The `fatal` field of the message is set to `false` (warning; change may be\n   * needed) and the `file` field is set to the current file path.\n   * The message is added to the `messages` field on `file`.\n   *\n   * > \uD83E\uDEA6 **Note**: also has obsolete signatures.\n   *\n   * @overload\n   * @param {string} reason\n   * @param {MessageOptions | null | undefined} [options]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {string} reason\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Node | NodeLike | null | undefined} parent\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {Point | Position | null | undefined} place\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @overload\n   * @param {Error | VFileMessage} cause\n   * @param {string | null | undefined} [origin]\n   * @returns {VFileMessage}\n   *\n   * @param {Error | VFileMessage | string} causeOrReason\n   *   Reason for message, should use markdown.\n   * @param {Node | NodeLike | MessageOptions | Point | Position | string | null | undefined} [optionsOrParentOrPlace]\n   *   Configuration (optional).\n   * @param {string | null | undefined} [origin]\n   *   Place in code where the message originates (example:\n   *   `'my-package:my-rule'` or `'my-rule'`).\n   * @returns {VFileMessage}\n   *   Message.\n   */\n  message(causeOrReason, optionsOrParentOrPlace, origin) {\n    const message = new VFileMessage(\n      // @ts-expect-error: the overloads are fine.\n      causeOrReason,\n      optionsOrParentOrPlace,\n      origin\n    )\n\n    if (this.path) {\n      message.name = this.path + ':' + message.name\n      message.file = this.path\n    }\n\n    message.fatal = false\n\n    this.messages.push(message)\n\n    return message\n  }\n\n  /**\n   * Serialize the file.\n   *\n   * > **Note**: which encodings are supported depends on the engine.\n   * > For info on Node.js, see:\n   * > <https://nodejs.org/api/util.html#whatwg-supported-encodings>.\n   *\n   * @param {string | null | undefined} [encoding='utf8']\n   *   Character encoding to understand `value` as when it\u2019s a `Uint8Array`\n   *   (default: `'utf-8'`).\n   * @returns {string}\n   *   Serialized file.\n   */\n  toString(encoding) {\n    if (this.value === undefined) {\n      return ''\n    }\n\n    if (typeof this.value === 'string') {\n      return this.value\n    }\n\n    const decoder = new TextDecoder(encoding || undefined)\n    return decoder.decode(this.value)\n  }\n}\n\n/**\n * Assert that `part` is not a path (as in, does not contain `path.sep`).\n *\n * @param {string | null | undefined} part\n *   File path part.\n * @param {string} name\n *   Part name.\n * @returns {undefined}\n *   Nothing.\n */\nfunction assertPart(part, name) {\n  if (part && part.includes(minpath.sep)) {\n    throw new Error(\n      '`' + name + '` cannot be a path: did not expect `' + minpath.sep + '`'\n    )\n  }\n}\n\n/**\n * Assert that `part` is not empty.\n *\n * @param {string | undefined} part\n *   Thing.\n * @param {string} name\n *   Part name.\n * @returns {asserts part is string}\n *   Nothing.\n */\nfunction assertNonEmpty(part, name) {\n  if (!part) {\n    throw new Error('`' + name + '` cannot be empty')\n  }\n}\n\n/**\n * Assert `path` exists.\n *\n * @param {string | undefined} path\n *   Path.\n * @param {string} name\n *   Dependency name.\n * @returns {asserts path is string}\n *   Nothing.\n */\nfunction assertPath(path, name) {\n  if (!path) {\n    throw new Error('Setting `' + name + '` requires `path` to be set too')\n  }\n}\n\n/**\n * Assert `value` is an `Uint8Array`.\n *\n * @param {unknown} value\n *   thing.\n * @returns {value is Uint8Array}\n *   Whether `value` is an `Uint8Array`.\n */\nfunction isUint8Array(value) {\n  return Boolean(\n    value &&\n      typeof value === 'object' &&\n      'byteLength' in value &&\n      'byteOffset' in value\n  )\n}\n", "export const CallableInstance =\n  /**\n   * @type {new <Parameters extends Array<unknown>, Result>(property: string | symbol) => (...parameters: Parameters) => Result}\n   */\n  (\n    /** @type {unknown} */\n    (\n      /**\n       * @this {Function}\n       * @param {string | symbol} property\n       * @returns {(...parameters: Array<unknown>) => unknown}\n       */\n      function (property) {\n        const self = this\n        const constr = self.constructor\n        const proto = /** @type {Record<string | symbol, Function>} */ (\n          // Prototypes do exist.\n          // type-coverage:ignore-next-line\n          constr.prototype\n        )\n        const value = proto[property]\n        /** @type {(...parameters: Array<unknown>) => unknown} */\n        const apply = function () {\n          return value.apply(apply, arguments)\n        }\n\n        Object.setPrototypeOf(apply, proto)\n\n        // Not needed for us in `unified`: we only call this on the `copy`\n        // function,\n        // and we don't need to add its fields (`length`, `name`)\n        // over.\n        // See also: GH-246.\n        // const names = Object.getOwnPropertyNames(value)\n        //\n        // for (const p of names) {\n        //   const descriptor = Object.getOwnPropertyDescriptor(value, p)\n        //   if (descriptor) Object.defineProperty(apply, p, descriptor)\n        // }\n\n        return apply\n      }\n    )\n  )\n", "/**\n * Count how often a character (or substring) is used in a string.\n *\n * @param {string} value\n *   Value to search in.\n * @param {string} character\n *   Character (or substring) to look for.\n * @return {number}\n *   Number of times `character` occurred in `value`.\n */\nexport function ccount(value, character) {\n  const source = String(value)\n\n  if (typeof character !== 'string') {\n    throw new TypeError('Expected character')\n  }\n\n  let count = 0\n  let index = source.indexOf(character)\n\n  while (index !== -1) {\n    count++\n    index = source.indexOf(character, index + character.length)\n  }\n\n  return count\n}\n", "export default function escapeStringRegexp(string) {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\t// Escape characters with special meaning either inside or outside character sets.\n\t// Use a simple backslash escape when it\u2019s always valid, and a `\\xnn` escape when the simpler form would be disallowed by Unicode patterns\u2019 stricter grammar.\n\treturn string\n\t\t.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&')\n\t\t.replace(/-/g, '\\\\x2d');\n}\n", "/**\n * @import {Nodes, Parents, PhrasingContent, Root, Text} from 'mdast'\n * @import {BuildVisitor, Test, VisitorResult} from 'unist-util-visit-parents'\n */\n\n/**\n * @typedef RegExpMatchObject\n *   Info on the match.\n * @property {number} index\n *   The index of the search at which the result was found.\n * @property {string} input\n *   A copy of the search string in the text node.\n * @property {[...Array<Parents>, Text]} stack\n *   All ancestors of the text node, where the last node is the text itself.\n *\n * @typedef {RegExp | string} Find\n *   Pattern to find.\n *\n *   Strings are escaped and then turned into global expressions.\n *\n * @typedef {Array<FindAndReplaceTuple>} FindAndReplaceList\n *   Several find and replaces, in array form.\n *\n * @typedef {[Find, Replace?]} FindAndReplaceTuple\n *   Find and replace in tuple form.\n *\n * @typedef {ReplaceFunction | string | null | undefined} Replace\n *   Thing to replace with.\n *\n * @callback ReplaceFunction\n *   Callback called when a search matches.\n * @param {...any} parameters\n *   The parameters are the result of corresponding search expression:\n *\n *   * `value` (`string`) \u2014 whole match\n *   * `...capture` (`Array<string>`) \u2014 matches from regex capture groups\n *   * `match` (`RegExpMatchObject`) \u2014 info on the match\n * @returns {Array<PhrasingContent> | PhrasingContent | string | false | null | undefined}\n *   Thing to replace with.\n *\n *   * when `null`, `undefined`, `''`, remove the match\n *   * \u2026or when `false`, do not replace at all\n *   * \u2026or when `string`, replace with a text node of that value\n *   * \u2026or when `Node` or `Array<Node>`, replace with those nodes\n *\n * @typedef {[RegExp, ReplaceFunction]} Pair\n *   Normalized find and replace.\n *\n * @typedef {Array<Pair>} Pairs\n *   All find and replaced.\n *\n * @typedef Options\n *   Configuration.\n * @property {Test | null | undefined} [ignore]\n *   Test for which nodes to ignore (optional).\n */\n\nimport escape from 'escape-string-regexp'\nimport {visitParents} from 'unist-util-visit-parents'\nimport {convert} from 'unist-util-is'\n\n/**\n * Find patterns in a tree and replace them.\n *\n * The algorithm searches the tree in *preorder* for complete values in `Text`\n * nodes.\n * Partial matches are not supported.\n *\n * @param {Nodes} tree\n *   Tree to change.\n * @param {FindAndReplaceList | FindAndReplaceTuple} list\n *   Patterns to find.\n * @param {Options | null | undefined} [options]\n *   Configuration (when `find` is not `Find`).\n * @returns {undefined}\n *   Nothing.\n */\nexport function findAndReplace(tree, list, options) {\n  const settings = options || {}\n  const ignored = convert(settings.ignore || [])\n  const pairs = toPairs(list)\n  let pairIndex = -1\n\n  while (++pairIndex < pairs.length) {\n    visitParents(tree, 'text', visitor)\n  }\n\n  /**\n   * Visit a text node, and handle it if it is not in an ignored parent.\n   *\n   * @type {BuildVisitor<Root, 'text'>}\n   */\n  function visitor(node, parents) {\n    let index = -1\n    /** @type {Parents | undefined} */\n    let grandparent\n\n    while (++index < parents.length) {\n      const parent = parents[index]\n      /** @type {Array<Nodes> | undefined} */\n      const siblings = grandparent ? grandparent.children : undefined\n\n      if (\n        ignored(\n          parent,\n          siblings ? siblings.indexOf(parent) : undefined,\n          grandparent\n        )\n      ) {\n        return\n      }\n\n      grandparent = parent\n    }\n\n    if (grandparent) {\n      return handler(node, parents)\n    }\n  }\n\n  /**\n   * Handle a text node which is not in an ignored parent.\n   *\n   * @param {Text} node\n   *   Text node to search in.\n   * @param {Array<Parents>} parents\n   *   Ancestors of `node`.\n   * @returns {VisitorResult}\n   *   Where to continue visiting.\n   */\n  function handler(node, parents) {\n    const parent = parents[parents.length - 1]\n    const find = pairs[pairIndex][0]\n    const replace = pairs[pairIndex][1]\n    let start = 0\n    /** @type {Array<Nodes>} */\n    const siblings = parent.children\n    const index = siblings.indexOf(node)\n    let change = false\n    /** @type {Array<PhrasingContent>} */\n    let nodes = []\n\n    find.lastIndex = 0\n\n    let match = find.exec(node.value)\n\n    while (match) {\n      const position = match.index\n      /** @type {RegExpMatchObject} */\n      const matchObject = {\n        index: match.index,\n        input: match.input,\n        stack: [...parents, node]\n      }\n      let value = replace(...match, matchObject)\n\n      if (typeof value === 'string') {\n        value = value.length > 0 ? {type: 'text', value} : undefined\n      }\n\n      // It wasn\u2019t a match after all.\n      if (value === false) {\n        // False acts as if there was no match.\n        // So we need to reset `lastIndex`, which currently being at the end of\n        // the current match, to the beginning.\n        find.lastIndex = position + 1\n      } else {\n        if (start !== position) {\n          add({type: 'text', value: node.value.slice(start, position)})\n        }\n\n        if (Array.isArray(value)) {\n          for (const child of value) add(child)\n        } else if (value) {\n          add(value)\n        }\n\n        start = position + match[0].length\n        change = true\n      }\n\n      if (!find.global) {\n        break\n      }\n\n      match = find.exec(node.value)\n    }\n\n    if (change) {\n      if (start < node.value.length) {\n        add({type: 'text', value: node.value.slice(start)})\n      }\n\n      parent.children.splice(index, 1, ...nodes)\n    } else {\n      nodes = [node]\n    }\n\n    return index + nodes.length\n\n    /**\n     * Add a node.\n     *\n     * @param {PhrasingContent} child\n     *   Node to add.\n     * @returns {undefined}\n     *   Nothing.\n     */\n    function add(child) {\n      const previous = nodes[nodes.length - 1]\n\n      if (previous && previous.type === 'text' && child.type === 'text') {\n        previous.value += child.value\n      } else {\n        nodes.push(child)\n      }\n    }\n  }\n}\n\n/**\n * Turn a tuple or a list of tuples into pairs.\n *\n * @param {FindAndReplaceList | FindAndReplaceTuple} tupleOrList\n *   Schema.\n * @returns {Pairs}\n *   Clean pairs.\n */\nfunction toPairs(tupleOrList) {\n  if (!Array.isArray(tupleOrList)) {\n    throw new TypeError('Expected find and replace tuple or list of tuples')\n  }\n\n  /** @type {Pairs} */\n  const result = []\n\n  /** @type {FindAndReplaceList} */\n  // @ts-expect-error: correct.\n  const list =\n    !tupleOrList[0] || Array.isArray(tupleOrList[0])\n      ? tupleOrList\n      : [tupleOrList]\n\n  let index = -1\n\n  while (++index < list.length) {\n    const tuple = list[index]\n    result.push([toExpression(tuple[0]), toFunction(tuple[1])])\n  }\n\n  return result\n}\n\n/**\n * Turn a find into an expression.\n *\n * @param {Find} find\n *   Pattern to find.\n * @returns {RegExp}\n *   Global expression.\n */\nfunction toExpression(find) {\n  return typeof find === 'string' ? new RegExp(escape(find), 'g') : find\n}\n\n/**\n * Turn a replace into a function.\n *\n * @param {Replace} replace\n *   Thing to replace with.\n * @returns {ReplaceFunction}\n *   Function that returns that thing.\n */\nfunction toFunction(replace) {\n  return typeof replace === 'function'\n    ? replace\n    : function () {\n        return replace\n      }\n}\n", "/**\n * @import {RegExpMatchObject, ReplaceFunction} from 'mdast-util-find-and-replace'\n * @import {CompileContext, Extension as FromMarkdownExtension, Handle as FromMarkdownHandle, Transform as FromMarkdownTransform} from 'mdast-util-from-markdown'\n * @import {ConstructName, Options as ToMarkdownExtension} from 'mdast-util-to-markdown'\n * @import {Link, PhrasingContent} from 'mdast'\n */\n\nimport {ccount} from 'ccount'\nimport {ok as assert} from 'devlop'\nimport {unicodePunctuation, unicodeWhitespace} from 'micromark-util-character'\nimport {findAndReplace} from 'mdast-util-find-and-replace'\n\n/** @type {ConstructName} */\nconst inConstruct = 'phrasing'\n/** @type {Array<ConstructName>} */\nconst notInConstruct = ['autolink', 'link', 'image', 'label']\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM autolink\n * literals in markdown.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM autolink literals.\n */\nexport function gfmAutolinkLiteralFromMarkdown() {\n  return {\n    transforms: [transformGfmAutolinkLiterals],\n    enter: {\n      literalAutolink: enterLiteralAutolink,\n      literalAutolinkEmail: enterLiteralAutolinkValue,\n      literalAutolinkHttp: enterLiteralAutolinkValue,\n      literalAutolinkWww: enterLiteralAutolinkValue\n    },\n    exit: {\n      literalAutolink: exitLiteralAutolink,\n      literalAutolinkEmail: exitLiteralAutolinkEmail,\n      literalAutolinkHttp: exitLiteralAutolinkHttp,\n      literalAutolinkWww: exitLiteralAutolinkWww\n    }\n  }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM autolink\n * literals in markdown.\n *\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM autolink literals.\n */\nexport function gfmAutolinkLiteralToMarkdown() {\n  return {\n    unsafe: [\n      {\n        character: '@',\n        before: '[+\\\\-.\\\\w]',\n        after: '[\\\\-.\\\\w]',\n        inConstruct,\n        notInConstruct\n      },\n      {\n        character: '.',\n        before: '[Ww]',\n        after: '[\\\\-.\\\\w]',\n        inConstruct,\n        notInConstruct\n      },\n      {\n        character: ':',\n        before: '[ps]',\n        after: '\\\\/',\n        inConstruct,\n        notInConstruct\n      }\n    ]\n  }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolink(token) {\n  this.enter({type: 'link', title: null, url: '', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterLiteralAutolinkValue(token) {\n  this.config.enter.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkHttp(token) {\n  this.config.exit.autolinkProtocol.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkWww(token) {\n  this.config.exit.data.call(this, token)\n  const node = this.stack[this.stack.length - 1]\n  assert(node.type === 'link')\n  node.url = 'http://' + this.sliceSerialize(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolinkEmail(token) {\n  this.config.exit.autolinkEmail.call(this, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitLiteralAutolink(token) {\n  this.exit(token)\n}\n\n/** @type {FromMarkdownTransform} */\nfunction transformGfmAutolinkLiterals(tree) {\n  findAndReplace(\n    tree,\n    [\n      [/(https?:\\/\\/|www(?=\\.))([-.\\w]+)([^ \\t\\r\\n]*)/gi, findUrl],\n      [/(?<=^|\\s|\\p{P}|\\p{S})([-.\\w+]+)@([-\\w]+(?:\\.[-\\w]+)+)/gu, findEmail]\n    ],\n    {ignore: ['link', 'linkReference']}\n  )\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} protocol\n * @param {string} domain\n * @param {string} path\n * @param {RegExpMatchObject} match\n * @returns {Array<PhrasingContent> | Link | false}\n */\n// eslint-disable-next-line max-params\nfunction findUrl(_, protocol, domain, path, match) {\n  let prefix = ''\n\n  // Not an expected previous character.\n  if (!previous(match)) {\n    return false\n  }\n\n  // Treat `www` as part of the domain.\n  if (/^w/i.test(protocol)) {\n    domain = protocol + domain\n    protocol = ''\n    prefix = 'http://'\n  }\n\n  if (!isCorrectDomain(domain)) {\n    return false\n  }\n\n  const parts = splitUrl(domain + path)\n\n  if (!parts[0]) return false\n\n  /** @type {Link} */\n  const result = {\n    type: 'link',\n    title: null,\n    url: prefix + protocol + parts[0],\n    children: [{type: 'text', value: protocol + parts[0]}]\n  }\n\n  if (parts[1]) {\n    return [result, {type: 'text', value: parts[1]}]\n  }\n\n  return result\n}\n\n/**\n * @type {ReplaceFunction}\n * @param {string} _\n * @param {string} atext\n * @param {string} label\n * @param {RegExpMatchObject} match\n * @returns {Link | false}\n */\nfunction findEmail(_, atext, label, match) {\n  if (\n    // Not an expected previous character.\n    !previous(match, true) ||\n    // Label ends in not allowed character.\n    /[-\\d_]$/.test(label)\n  ) {\n    return false\n  }\n\n  return {\n    type: 'link',\n    title: null,\n    url: 'mailto:' + atext + '@' + label,\n    children: [{type: 'text', value: atext + '@' + label}]\n  }\n}\n\n/**\n * @param {string} domain\n * @returns {boolean}\n */\nfunction isCorrectDomain(domain) {\n  const parts = domain.split('.')\n\n  if (\n    parts.length < 2 ||\n    (parts[parts.length - 1] &&\n      (/_/.test(parts[parts.length - 1]) ||\n        !/[a-zA-Z\\d]/.test(parts[parts.length - 1]))) ||\n    (parts[parts.length - 2] &&\n      (/_/.test(parts[parts.length - 2]) ||\n        !/[a-zA-Z\\d]/.test(parts[parts.length - 2])))\n  ) {\n    return false\n  }\n\n  return true\n}\n\n/**\n * @param {string} url\n * @returns {[string, string | undefined]}\n */\nfunction splitUrl(url) {\n  const trailExec = /[!\"&'),.:;<>?\\]}]+$/.exec(url)\n\n  if (!trailExec) {\n    return [url, undefined]\n  }\n\n  url = url.slice(0, trailExec.index)\n\n  let trail = trailExec[0]\n  let closingParenIndex = trail.indexOf(')')\n  const openingParens = ccount(url, '(')\n  let closingParens = ccount(url, ')')\n\n  while (closingParenIndex !== -1 && openingParens > closingParens) {\n    url += trail.slice(0, closingParenIndex + 1)\n    trail = trail.slice(closingParenIndex + 1)\n    closingParenIndex = trail.indexOf(')')\n    closingParens++\n  }\n\n  return [url, trail]\n}\n\n/**\n * @param {RegExpMatchObject} match\n * @param {boolean | null | undefined} [email=false]\n * @returns {boolean}\n */\nfunction previous(match, email) {\n  const code = match.input.charCodeAt(match.index - 1)\n\n  return (\n    (match.index === 0 ||\n      unicodeWhitespace(code) ||\n      unicodePunctuation(code)) &&\n    // If it\u2019s an email, the previous character should not be a slash.\n    (!email || code !== 47)\n  )\n}\n", "/**\n * @import {\n *   CompileContext,\n *   Extension as FromMarkdownExtension,\n *   Handle as FromMarkdownHandle\n * } from 'mdast-util-from-markdown'\n * @import {ToMarkdownOptions} from 'mdast-util-gfm-footnote'\n * @import {\n *   Handle as ToMarkdownHandle,\n *   Map,\n *   Options as ToMarkdownExtension\n * } from 'mdast-util-to-markdown'\n * @import {FootnoteDefinition, FootnoteReference} from 'mdast'\n */\n\nimport {ok as assert} from 'devlop'\nimport {normalizeIdentifier} from 'micromark-util-normalize-identifier'\n\nfootnoteReference.peek = footnoteReferencePeek\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCallString() {\n  this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteCall(token) {\n  this.enter({type: 'footnoteReference', identifier: '', label: ''}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinitionLabelString() {\n  this.buffer()\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterFootnoteDefinition(token) {\n  this.enter(\n    {type: 'footnoteDefinition', identifier: '', label: '', children: []},\n    token\n  )\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCallString(token) {\n  const label = this.resume()\n  const node = this.stack[this.stack.length - 1]\n  assert(node.type === 'footnoteReference')\n  node.identifier = normalizeIdentifier(\n    this.sliceSerialize(token)\n  ).toLowerCase()\n  node.label = label\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteCall(token) {\n  this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinitionLabelString(token) {\n  const label = this.resume()\n  const node = this.stack[this.stack.length - 1]\n  assert(node.type === 'footnoteDefinition')\n  node.identifier = normalizeIdentifier(\n    this.sliceSerialize(token)\n  ).toLowerCase()\n  node.label = label\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitFootnoteDefinition(token) {\n  this.exit(token)\n}\n\n/** @type {ToMarkdownHandle} */\nfunction footnoteReferencePeek() {\n  return '['\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {FootnoteReference} node\n */\nfunction footnoteReference(node, _, state, info) {\n  const tracker = state.createTracker(info)\n  let value = tracker.move('[^')\n  const exit = state.enter('footnoteReference')\n  const subexit = state.enter('reference')\n  value += tracker.move(\n    state.safe(state.associationId(node), {after: ']', before: value})\n  )\n  subexit()\n  exit()\n  value += tracker.move(']')\n  return value\n}\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-from-markdown`.\n */\nexport function gfmFootnoteFromMarkdown() {\n  return {\n    enter: {\n      gfmFootnoteCallString: enterFootnoteCallString,\n      gfmFootnoteCall: enterFootnoteCall,\n      gfmFootnoteDefinitionLabelString: enterFootnoteDefinitionLabelString,\n      gfmFootnoteDefinition: enterFootnoteDefinition\n    },\n    exit: {\n      gfmFootnoteCallString: exitFootnoteCallString,\n      gfmFootnoteCall: exitFootnoteCall,\n      gfmFootnoteDefinitionLabelString: exitFootnoteDefinitionLabelString,\n      gfmFootnoteDefinition: exitFootnoteDefinition\n    }\n  }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM footnotes\n * in markdown.\n *\n * @param {ToMarkdownOptions | null | undefined} [options]\n *   Configuration (optional).\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown`.\n */\nexport function gfmFootnoteToMarkdown(options) {\n  // To do: next major: change default.\n  let firstLineBlank = false\n\n  if (options && options.firstLineBlank) {\n    firstLineBlank = true\n  }\n\n  return {\n    handlers: {footnoteDefinition, footnoteReference},\n    // This is on by default already.\n    unsafe: [{character: '[', inConstruct: ['label', 'phrasing', 'reference']}]\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {FootnoteDefinition} node\n   */\n  function footnoteDefinition(node, _, state, info) {\n    const tracker = state.createTracker(info)\n    let value = tracker.move('[^')\n    const exit = state.enter('footnoteDefinition')\n    const subexit = state.enter('label')\n    value += tracker.move(\n      state.safe(state.associationId(node), {before: value, after: ']'})\n    )\n    subexit()\n\n    value += tracker.move(']:')\n\n    if (node.children && node.children.length > 0) {\n      tracker.shift(4)\n\n      value += tracker.move(\n        (firstLineBlank ? '\\n' : ' ') +\n          state.indentLines(\n            state.containerFlow(node, tracker.current()),\n            firstLineBlank ? mapAll : mapExceptFirst\n          )\n      )\n    }\n\n    exit()\n\n    return value\n  }\n}\n\n/** @type {Map} */\nfunction mapExceptFirst(line, index, blank) {\n  return index === 0 ? line : mapAll(line, index, blank)\n}\n\n/** @type {Map} */\nfunction mapAll(line, index, blank) {\n  return (blank ? '' : '    ') + line\n}\n", "/**\n * @import {Delete} from 'mdast'\n * @import {\n *   CompileContext,\n *   Extension as FromMarkdownExtension,\n *   Handle as FromMarkdownHandle\n * } from 'mdast-util-from-markdown'\n * @import {\n *   Attention,\n *   ConstructName,\n *   Handle as ToMarkdownHandle,\n *   Options as ToMarkdownExtension\n * } from 'mdast-util-to-markdown'\n */\n\n/**\n * List of constructs that occur in phrasing (paragraphs, headings), but cannot\n * contain strikethrough.\n * So they sort of cancel each other out.\n * Note: could use a better name.\n *\n * Note: keep in sync with: <https://github.com/syntax-tree/mdast-util-to-markdown/blob/8ce8dbf/lib/unsafe.js#L14>\n *\n * @type {Array<ConstructName>}\n */\nconst constructsWithoutStrikethrough = [\n  'autolink',\n  'destinationLiteral',\n  'destinationRaw',\n  'reference',\n  'titleQuote',\n  'titleApostrophe'\n]\n\nhandleDelete.attention = attentionDelete\nhandleDelete.peek = peekDelete\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM\n * strikethrough in markdown.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-from-markdown` to enable GFM strikethrough.\n */\nexport function gfmStrikethroughFromMarkdown() {\n  return {\n    canContainEols: ['delete'],\n    enter: {strikethrough: enterStrikethrough},\n    exit: {strikethrough: exitStrikethrough}\n  }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM\n * strikethrough in markdown.\n *\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM strikethrough.\n */\nexport function gfmStrikethroughToMarkdown() {\n  return {\n    handlers: {delete: handleDelete},\n    unsafe: [\n      {\n        character: '~',\n        inConstruct: 'phrasing',\n        notInConstruct: constructsWithoutStrikethrough\n      }\n    ]\n  }\n}\n\n/**\n * Enter strikethrough.\n *\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterStrikethrough(token) {\n  this.enter({type: 'delete', children: [], position: undefined}, token)\n}\n\n/**\n * Exit strikethrough.\n *\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitStrikethrough(token) {\n  this.exit(token)\n}\n\n/**\n * Serialize a delete node.\n *\n * @type {ToMarkdownHandle}\n * @param {Delete} node\n *   Node to serialize.\n */\nfunction handleDelete(node, _, state, info) {\n  // To do: next major: empty this function, like emphasis and strong handlers,\n  // this is no longer needed.\n  const tracker = state.createTracker(info)\n  const sequence = state.stack.includes('strikethrough') ? '~' : '~~'\n  const exit = state.enter('strikethrough')\n  let value = tracker.move(sequence)\n  value += state.containerPhrasing(node, {\n    ...tracker.current(),\n    before: value,\n    after: '~'\n  })\n  value += tracker.move(sequence)\n  exit()\n  return value\n}\n\n/**\n * Serialize a delete node as attention.\n *\n * @type {Attention}\n */\nfunction attentionDelete() {\n  return {construct: 'strikethrough', markers: ['~'], sizes: [2, 1]}\n}\n\n/**\n * Peek the first character of a delete node.\n *\n * @type {ToMarkdownHandle}\n */\nfunction peekDelete() {\n  return '~'\n}\n", "// To do: next major: remove.\n/**\n * @typedef {Options} MarkdownTableOptions\n *   Configuration.\n */\n\n/**\n * @typedef Options\n *   Configuration.\n * @property {boolean | null | undefined} [alignDelimiters=true]\n *   Whether to align the delimiters (default: `true`);\n *   they are aligned by default:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   Pass `false` to make them staggered:\n *\n *   ```markdown\n *   | Alpha | B |\n *   | - | - |\n *   | C | Delta |\n *   ```\n * @property {ReadonlyArray<string | null | undefined> | string | null | undefined} [align]\n *   How to align columns (default: `''`);\n *   one style for all columns or styles for their respective columns;\n *   each style is either `'l'` (left), `'r'` (right), or `'c'` (center);\n *   other values are treated as `''`, which doesn\u2019t place the colon in the\n *   alignment row but does align left;\n *   *only the lowercased first character is used, so `Right` is fine.*\n * @property {boolean | null | undefined} [delimiterEnd=true]\n *   Whether to end each row with the delimiter (default: `true`).\n *\n *   > \uD83D\uDC49 **Note**: please don\u2019t use this: it could create fragile structures\n *   > that aren\u2019t understandable to some markdown parsers.\n *\n *   When `true`, there are ending delimiters:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   When `false`, there are no ending delimiters:\n *\n *   ```markdown\n *   | Alpha | B\n *   | ----- | -----\n *   | C     | Delta\n *   ```\n * @property {boolean | null | undefined} [delimiterStart=true]\n *   Whether to begin each row with the delimiter (default: `true`).\n *\n *   > \uD83D\uDC49 **Note**: please don\u2019t use this: it could create fragile structures\n *   > that aren\u2019t understandable to some markdown parsers.\n *\n *   When `true`, there are starting delimiters:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   When `false`, there are no starting delimiters:\n *\n *   ```markdown\n *   Alpha | B     |\n *   ----- | ----- |\n *   C     | Delta |\n *   ```\n * @property {boolean | null | undefined} [padding=true]\n *   Whether to add a space of padding between delimiters and cells\n *   (default: `true`).\n *\n *   When `true`, there is padding:\n *\n *   ```markdown\n *   | Alpha | B     |\n *   | ----- | ----- |\n *   | C     | Delta |\n *   ```\n *\n *   When `false`, there is no padding:\n *\n *   ```markdown\n *   |Alpha|B    |\n *   |-----|-----|\n *   |C    |Delta|\n *   ```\n * @property {((value: string) => number) | null | undefined} [stringLength]\n *   Function to detect the length of table cell content (optional);\n *   this is used when aligning the delimiters (`|`) between table cells;\n *   full-width characters and emoji mess up delimiter alignment when viewing\n *   the markdown source;\n *   to fix this, you can pass this function,\n *   which receives the cell content and returns its \u201Cvisible\u201D size;\n *   note that what is and isn\u2019t visible depends on where the text is displayed.\n *\n *   Without such a function, the following:\n *\n *   ```js\n *   markdownTable([\n *     ['Alpha', 'Bravo'],\n *     ['\u4E2D\u6587', 'Charlie'],\n *     ['\uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC69', 'Delta']\n *   ])\n *   ```\n *\n *   Yields:\n *\n *   ```markdown\n *   | Alpha | Bravo |\n *   | - | - |\n *   | \u4E2D\u6587 | Charlie |\n *   | \uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC69 | Delta |\n *   ```\n *\n *   With [`string-width`](https://github.com/sindresorhus/string-width):\n *\n *   ```js\n *   import stringWidth from 'string-width'\n *\n *   markdownTable(\n *     [\n *       ['Alpha', 'Bravo'],\n *       ['\u4E2D\u6587', 'Charlie'],\n *       ['\uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC69', 'Delta']\n *     ],\n *     {stringLength: stringWidth}\n *   )\n *   ```\n *\n *   Yields:\n *\n *   ```markdown\n *   | Alpha | Bravo   |\n *   | ----- | ------- |\n *   | \u4E2D\u6587  | Charlie |\n *   | \uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC69    | Delta   |\n *   ```\n */\n\n/**\n * @param {string} value\n *   Cell value.\n * @returns {number}\n *   Cell size.\n */\nfunction defaultStringLength(value) {\n  return value.length\n}\n\n/**\n * Generate a markdown\n * ([GFM](https://docs.github.com/en/github/writing-on-github/working-with-advanced-formatting/organizing-information-with-tables))\n * table.\n *\n * @param {ReadonlyArray<ReadonlyArray<string | null | undefined>>} table\n *   Table data (matrix of strings).\n * @param {Readonly<Options> | null | undefined} [options]\n *   Configuration (optional).\n * @returns {string}\n *   Result.\n */\nexport function markdownTable(table, options) {\n  const settings = options || {}\n  // To do: next major: change to spread.\n  const align = (settings.align || []).concat()\n  const stringLength = settings.stringLength || defaultStringLength\n  /** @type {Array<number>} Character codes as symbols for alignment per column. */\n  const alignments = []\n  /** @type {Array<Array<string>>} Cells per row. */\n  const cellMatrix = []\n  /** @type {Array<Array<number>>} Sizes of each cell per row. */\n  const sizeMatrix = []\n  /** @type {Array<number>} */\n  const longestCellByColumn = []\n  let mostCellsPerRow = 0\n  let rowIndex = -1\n\n  // This is a superfluous loop if we don\u2019t align delimiters, but otherwise we\u2019d\n  // do superfluous work when aligning, so optimize for aligning.\n  while (++rowIndex < table.length) {\n    /** @type {Array<string>} */\n    const row = []\n    /** @type {Array<number>} */\n    const sizes = []\n    let columnIndex = -1\n\n    if (table[rowIndex].length > mostCellsPerRow) {\n      mostCellsPerRow = table[rowIndex].length\n    }\n\n    while (++columnIndex < table[rowIndex].length) {\n      const cell = serialize(table[rowIndex][columnIndex])\n\n      if (settings.alignDelimiters !== false) {\n        const size = stringLength(cell)\n        sizes[columnIndex] = size\n\n        if (\n          longestCellByColumn[columnIndex] === undefined ||\n          size > longestCellByColumn[columnIndex]\n        ) {\n          longestCellByColumn[columnIndex] = size\n        }\n      }\n\n      row.push(cell)\n    }\n\n    cellMatrix[rowIndex] = row\n    sizeMatrix[rowIndex] = sizes\n  }\n\n  // Figure out which alignments to use.\n  let columnIndex = -1\n\n  if (typeof align === 'object' && 'length' in align) {\n    while (++columnIndex < mostCellsPerRow) {\n      alignments[columnIndex] = toAlignment(align[columnIndex])\n    }\n  } else {\n    const code = toAlignment(align)\n\n    while (++columnIndex < mostCellsPerRow) {\n      alignments[columnIndex] = code\n    }\n  }\n\n  // Inject the alignment row.\n  columnIndex = -1\n  /** @type {Array<string>} */\n  const row = []\n  /** @type {Array<number>} */\n  const sizes = []\n\n  while (++columnIndex < mostCellsPerRow) {\n    const code = alignments[columnIndex]\n    let before = ''\n    let after = ''\n\n    if (code === 99 /* `c` */) {\n      before = ':'\n      after = ':'\n    } else if (code === 108 /* `l` */) {\n      before = ':'\n    } else if (code === 114 /* `r` */) {\n      after = ':'\n    }\n\n    // There *must* be at least one hyphen-minus in each alignment cell.\n    let size =\n      settings.alignDelimiters === false\n        ? 1\n        : Math.max(\n            1,\n            longestCellByColumn[columnIndex] - before.length - after.length\n          )\n\n    const cell = before + '-'.repeat(size) + after\n\n    if (settings.alignDelimiters !== false) {\n      size = before.length + size + after.length\n\n      if (size > longestCellByColumn[columnIndex]) {\n        longestCellByColumn[columnIndex] = size\n      }\n\n      sizes[columnIndex] = size\n    }\n\n    row[columnIndex] = cell\n  }\n\n  // Inject the alignment row.\n  cellMatrix.splice(1, 0, row)\n  sizeMatrix.splice(1, 0, sizes)\n\n  rowIndex = -1\n  /** @type {Array<string>} */\n  const lines = []\n\n  while (++rowIndex < cellMatrix.length) {\n    const row = cellMatrix[rowIndex]\n    const sizes = sizeMatrix[rowIndex]\n    columnIndex = -1\n    /** @type {Array<string>} */\n    const line = []\n\n    while (++columnIndex < mostCellsPerRow) {\n      const cell = row[columnIndex] || ''\n      let before = ''\n      let after = ''\n\n      if (settings.alignDelimiters !== false) {\n        const size =\n          longestCellByColumn[columnIndex] - (sizes[columnIndex] || 0)\n        const code = alignments[columnIndex]\n\n        if (code === 114 /* `r` */) {\n          before = ' '.repeat(size)\n        } else if (code === 99 /* `c` */) {\n          if (size % 2) {\n            before = ' '.repeat(size / 2 + 0.5)\n            after = ' '.repeat(size / 2 - 0.5)\n          } else {\n            before = ' '.repeat(size / 2)\n            after = before\n          }\n        } else {\n          after = ' '.repeat(size)\n        }\n      }\n\n      if (settings.delimiterStart !== false && !columnIndex) {\n        line.push('|')\n      }\n\n      if (\n        settings.padding !== false &&\n        // Don\u2019t add the opening space if we\u2019re not aligning and the cell is\n        // empty: there will be a closing space.\n        !(settings.alignDelimiters === false && cell === '') &&\n        (settings.delimiterStart !== false || columnIndex)\n      ) {\n        line.push(' ')\n      }\n\n      if (settings.alignDelimiters !== false) {\n        line.push(before)\n      }\n\n      line.push(cell)\n\n      if (settings.alignDelimiters !== false) {\n        line.push(after)\n      }\n\n      if (settings.padding !== false) {\n        line.push(' ')\n      }\n\n      if (\n        settings.delimiterEnd !== false ||\n        columnIndex !== mostCellsPerRow - 1\n      ) {\n        line.push('|')\n      }\n    }\n\n    lines.push(\n      settings.delimiterEnd === false\n        ? line.join('').replace(/ +$/, '')\n        : line.join('')\n    )\n  }\n\n  return lines.join('\\n')\n}\n\n/**\n * @param {string | null | undefined} [value]\n *   Value to serialize.\n * @returns {string}\n *   Result.\n */\nfunction serialize(value) {\n  return value === null || value === undefined ? '' : String(value)\n}\n\n/**\n * @param {string | null | undefined} value\n *   Value.\n * @returns {number}\n *   Alignment.\n */\nfunction toAlignment(value) {\n  const code = typeof value === 'string' ? value.codePointAt(0) : 0\n\n  return code === 67 /* `C` */ || code === 99 /* `c` */\n    ? 99 /* `c` */\n    : code === 76 /* `L` */ || code === 108 /* `l` */\n      ? 108 /* `l` */\n      : code === 82 /* `R` */ || code === 114 /* `r` */\n        ? 114 /* `r` */\n        : 0\n}\n", "/**\n * @typedef {import('mdast').Html} Html\n * @typedef {import('mdast').PhrasingContent} PhrasingContent\n */\n\nimport {convert} from 'unist-util-is'\n\n/**\n * Check if the given value is *phrasing content*.\n *\n * > \uD83D\uDC49 **Note**: Excludes `html`, which can be both phrasing or flow.\n *\n * @param node\n *   Thing to check, typically `Node`.\n * @returns\n *   Whether `value` is phrasing content.\n */\n\nexport const phrasing =\n  /** @type {(node?: unknown) => node is Exclude<PhrasingContent, Html>} */\n  (\n    convert([\n      'break',\n      'delete',\n      'emphasis',\n      // To do: next major: removed since footnotes were added to GFM.\n      'footnote',\n      'footnoteReference',\n      'image',\n      'imageReference',\n      'inlineCode',\n      // Enabled by `mdast-util-math`:\n      'inlineMath',\n      'link',\n      'linkReference',\n      // Enabled by `mdast-util-mdx`:\n      'mdxJsxTextElement',\n      // Enabled by `mdast-util-mdx`:\n      'mdxTextExpression',\n      'strong',\n      'text',\n      // Enabled by `mdast-util-directive`:\n      'textDirective'\n    ])\n  )\n", "/**\n * @import {Blockquote, Parents} from 'mdast'\n * @import {Info, Map, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * Serialize a blockquote node.\n *\n * @param {Blockquote} node\n *   Node to serialize.\n * @param {Parents | undefined} _\n *   Parent node.\n * @param {State} state\n *   Info passed around.\n * @param {Info} info\n *   Info on surrounding context.\n * @returns {string}\n *   Serialized markdown.\n */\nexport function blockquote(node, _, state, info) {\n  const exit = state.enter('blockquote')\n  const tracker = state.createTracker(info)\n  tracker.move('> ')\n  tracker.shift(2)\n  const value = state.indentLines(\n    state.containerFlow(node, tracker.current()),\n    map\n  )\n  exit()\n  return value\n}\n\n/**\n * Indent lines w/ blockquote markers.\n *\n * @type {Map}\n */\nfunction map(line, _, blank) {\n  return '>' + (blank ? '' : ' ') + line\n}\n", "/**\n * @import {ConstructName, Unsafe} from 'mdast-util-to-markdown'\n */\n\n/**\n * Check if a pattern is in scope based on the current stack of constructs.\n *\n * @param {Array<ConstructName>} stack\n *   Current stack of constructs.\n * @param {Unsafe} pattern\n *   Pattern to check.\n * @returns {boolean}\n *   Whether the pattern is in scope.\n */\nexport function patternInScope(stack, pattern) {\n  return (\n    listInScope(stack, pattern.inConstruct, true) &&\n    !listInScope(stack, pattern.notInConstruct, false)\n  )\n}\n\n/**\n * Check if any of the constructs in the list are present in the stack.\n *\n * @param {Array<ConstructName>} stack\n *   Current stack of constructs.\n * @param {Unsafe['inConstruct']} list\n *   List of constructs to check for in the stack.\n * @param {boolean} none\n *   Value to return if the list is empty or not provided.\n * @returns {boolean}\n *   Whether any of the constructs in the list are present in the stack.\n */\nfunction listInScope(stack, list, none) {\n  if (typeof list === 'string') {\n    list = [list]\n  }\n\n  if (!list || list.length === 0) {\n    return none\n  }\n\n  let index = -1\n\n  while (++index < list.length) {\n    if (stack.includes(list[index])) {\n      return true\n    }\n  }\n\n  return false\n}\n", "/**\n * @import {Break, Parents} from 'mdast'\n * @import {Info, State} from 'mdast-util-to-markdown'\n */\n\nimport {patternInScope} from '../util/pattern-in-scope.js'\n\n/**\n * Serialize a break node.\n *\n * @param {Break} _\n *   Node to serialize.\n * @param {Parents | undefined} _1\n *   Parent node.\n * @param {State} state\n *   Info passed around.\n * @param {Info} info\n *   Info on surrounding context.\n * @returns {string}\n *   Serialized markdown.\n */\nexport function hardBreak(_, _1, state, info) {\n  let index = -1\n\n  while (++index < state.unsafe.length) {\n    const pattern = state.unsafe[index]\n\n    // If we can\u2019t put unconditional eols in this construct (setext headings,\n    // tables), use a space instead.\n    if (\n      pattern.character === '\\n' &&\n      !pattern.before &&\n      !pattern.after &&\n      patternInScope(state.stack, pattern)\n    ) {\n      return /[\\t ]/.test(info.before) ? '' : ' '\n    }\n  }\n\n  return '\\\\\\n'\n}\n", "/**\n * Get the count of the longest repeating streak of `substring` in `value`.\n *\n * @param {string} value\n *   Content to search in.\n * @param {string} substring\n *   Substring to look for, typically one character.\n * @returns {number}\n *   Count of most frequent adjacent `substring`s in `value`.\n */\nexport function longestStreak(value, substring) {\n  const source = String(value)\n  let index = source.indexOf(substring)\n  let expected = index\n  let count = 0\n  let max = 0\n\n  if (typeof substring !== 'string') {\n    throw new TypeError('Expected substring')\n  }\n\n  while (index !== -1) {\n    if (index === expected) {\n      if (++count > max) {\n        max = count\n      }\n    } else {\n      count = 1\n    }\n\n    expected = index + substring.length\n    index = source.indexOf(substring, expected)\n  }\n\n  return max\n}\n", "/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Code} from 'mdast'\n */\n\n/**\n * Checks if a code block can be formatted as an indented code block.\n *\n * @param {Code} node\n *   Node to check.\n * @param {State} state\n *   Info passed around.\n * @returns {boolean}\n *   Whether the code can be formatted as an indented code block.\n */\nexport function formatCodeAsIndented(node, state) {\n  return Boolean(\n    state.options.fences === false &&\n    node.value &&\n    // If there\u2019s no info\u2026\n    !node.lang &&\n    // And there\u2019s a non-whitespace character\u2026\n    /[^\\n\\r ]/.test(node.value) &&\n    // And the value doesn\u2019t start or end in a blank\u2026\n    !/^[\\t ]*(?:[\\n\\r]|$)|(?:^|[\\n\\r])[\\t ]*$/.test(node.value)\n  )\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * Checks the preferred fence option.\n *\n * @param {State} state\n *   Info passed around.\n * @returns {Exclude<Options['fence'], null | undefined>}\n *   Preferred fence marker.\n */\nexport function checkFence(state) {\n  const marker = state.options.fence || '`'\n\n  if (marker !== '`' && marker !== '~') {\n    throw new Error(\n      'Cannot serialize code with `' +\n        marker +\n        '` for `options.fence`, expected `` ` `` or `~`'\n    )\n  }\n\n  return marker\n}\n", "/**\n * @import {Info, Map, State} from 'mdast-util-to-markdown'\n * @import {Code, Parents} from 'mdast'\n */\n\nimport {longestStreak} from 'longest-streak'\nimport {formatCodeAsIndented} from '../util/format-code-as-indented.js'\nimport {checkFence} from '../util/check-fence.js'\n\n/**\n * Serialize a code node.\n *\n * @param {Code} node\n *   Node to serialize.\n * @param {Parents | undefined} _\n *   Parent node.\n * @param {State} state\n *   Info passed around.\n * @param {Info} info\n *   Info on surrounding context.\n * @returns {string}\n *   Serialized markdown.\n */\nexport function code(node, _, state, info) {\n  const marker = checkFence(state)\n  const raw = node.value || ''\n\n  if (formatCodeAsIndented(node, state)) {\n    const exit = state.enter('codeIndented')\n    const value = state.indentLines(raw, map)\n    exit()\n    return value\n  }\n\n  const tracker = state.createTracker(info)\n  const sequence = marker.repeat(Math.max(longestStreak(raw, marker) + 1, 3))\n  const exit = state.enter('codeFenced')\n  const suffix = marker === '`' ? 'GraveAccent' : 'Tilde'\n  let value = tracker.move(sequence)\n\n  if (node.lang) {\n    const subexit = state.enter(`codeFencedLang${suffix}`)\n    value += tracker.move(\n      state.safe(node.lang, {\n        before: value,\n        after: ' ',\n        encode: ['`'],\n        ...tracker.current()\n      })\n    )\n    subexit()\n  }\n\n  if (node.lang && node.meta) {\n    const subexit = state.enter(`codeFencedMeta${suffix}`)\n    value += tracker.move(' ')\n    value += tracker.move(\n      state.safe(node.meta, {\n        before: value,\n        after: '\\n',\n        encode: ['`'],\n        ...tracker.current()\n      })\n    )\n    subexit()\n  }\n\n  value += tracker.move('\\n')\n\n  if (raw) {\n    value += tracker.move(raw + '\\n')\n  }\n\n  value += tracker.move(sequence)\n  exit()\n  return value\n}\n\n/**\n * Indent lines w/ code indent.\n *\n * @type {Map}\n */\nfunction map(line, _, blank) {\n  return (blank ? '' : '    ') + line\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * Checks the preferred quote option.\n *\n * @param {State} state\n *   Info passed around.\n * @returns {Exclude<Options['quote'], null | undefined>}\n *   Preferred quote.\n */\nexport function checkQuote(state) {\n  const marker = state.options.quote || '\"'\n\n  if (marker !== '\"' && marker !== \"'\") {\n    throw new Error(\n      'Cannot serialize title with `' +\n        marker +\n        '` for `options.quote`, expected `\"`, or `\\'`'\n    )\n  }\n\n  return marker\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Definition, Parents} from 'mdast'\n */\n\nimport {checkQuote} from '../util/check-quote.js'\n\n/**\n * Serialize a definition node.\n *\n * @param {Definition} node\n *   Node to serialize.\n * @param {Parents | undefined} _\n *   Parent node.\n * @param {State} state\n *   Info passed around.\n * @param {Info} info\n *   Info on surrounding context.\n * @returns {string}\n *   Serialized markdown.\n */\nexport function definition(node, _, state, info) {\n  const quote = checkQuote(state)\n  const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n  const exit = state.enter('definition')\n  let subexit = state.enter('label')\n  const tracker = state.createTracker(info)\n  let value = tracker.move('[')\n  value += tracker.move(\n    state.safe(state.associationId(node), {\n      before: value,\n      after: ']',\n      ...tracker.current()\n    })\n  )\n  value += tracker.move(']: ')\n\n  subexit()\n\n  if (\n    // If there\u2019s no url, or\u2026\n    !node.url ||\n    // If there are control characters or whitespace.\n    /[\\0- \\u007F]/.test(node.url)\n  ) {\n    subexit = state.enter('destinationLiteral')\n    value += tracker.move('<')\n    value += tracker.move(\n      state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n    )\n    value += tracker.move('>')\n  } else {\n    // No whitespace, raw is prettier.\n    subexit = state.enter('destinationRaw')\n    value += tracker.move(\n      state.safe(node.url, {\n        before: value,\n        after: node.title ? ' ' : '\\n',\n        ...tracker.current()\n      })\n    )\n  }\n\n  subexit()\n\n  if (node.title) {\n    subexit = state.enter(`title${suffix}`)\n    value += tracker.move(' ' + quote)\n    value += tracker.move(\n      state.safe(node.title, {\n        before: value,\n        after: quote,\n        ...tracker.current()\n      })\n    )\n    value += tracker.move(quote)\n    subexit()\n  }\n\n  exit()\n\n  return value\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * Checks the preferred emphasis option.\n *\n * @param {State} state\n *   Info passed around.\n * @returns {Exclude<Options['emphasis'], null | undefined>}\n *   Preferred emphasis marker.\n */\nexport function checkEmphasis(state) {\n  const marker = state.options.emphasis || '*'\n\n  if (marker !== '*' && marker !== '_') {\n    throw new Error(\n      'Cannot serialize emphasis with `' +\n        marker +\n        '` for `options.emphasis`, expected `*`, or `_`'\n    )\n  }\n\n  return marker\n}\n", "/**\n * @import {AttentionInfo, Info, State} from 'mdast-util-to-markdown'\n * @import {Emphasis, Parents} from 'mdast'\n */\n\nimport {checkEmphasis} from '../util/check-emphasis.js'\n\nemphasis.attention = attention\nemphasis.peek = peek\n\n/**\n * Serialize an emphasis node.\n *\n * Attention is properly handled by `containerPhrasing`.\n *\n * @param {Emphasis} node\n *   Node to serialize.\n * @param {Parents | undefined} _\n *   Parent node.\n * @param {State} state\n *   Info passed around.\n * @param {Info} info\n *   Info on surrounding context.\n * @returns {string}\n *   Serialized markdown.\n */\nexport function emphasis(node, _, state, info) {\n  const exit = state.enter('phrasing')\n  const value = state.containerPhrasing({type: 'root', children: [node]}, info)\n  exit()\n  return value\n}\n\n/**\n * Serialize an emphasis node as attention.\n *\n * @param {Emphasis} _\n *   Node to serialize.\n * @param {State} state\n *   Info passed around.\n * @returns {AttentionInfo}\n *   Info on how to serialize the node.\n */\nfunction attention(_, state) {\n  const marker = checkEmphasis(state)\n  return {\n    construct: 'emphasis',\n    markers: marker === '*' ? ['*', '_'] : ['_', '*'],\n    sizes: [1]\n  }\n}\n\n/**\n * Peek at this node.\n *\n * @param {Emphasis} _\n *   Node to serialize.\n * @param {Parents | undefined} _1\n *   Parent node.\n * @param {State} state\n *   Info passed around.\n * @returns {string}\n *   Start of the serialized markdown.\n */\nfunction peek(_, _1, state) {\n  return state.options.emphasis || '*'\n}\n", "/**\n * Encode a code point as a character reference.\n *\n * @param {number} code\n *   Code point to encode.\n * @returns {string}\n *   Encoded character reference.\n */\nexport function encodeCharacterReference(code) {\n  return '&#x' + code.toString(16).toUpperCase() + ';'\n}\n", "/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Heading} from 'mdast'\n */\n\nimport {EXIT, visit} from 'unist-util-visit'\nimport {toString} from 'mdast-util-to-string'\n\n/**\n * Checks if a heading can be formatted as a setext heading.\n *\n * @param {Heading} node\n *   Node to check.\n * @param {State} state\n *   Info passed around.\n * @returns {boolean}\n *   Whether the heading can be formatted as a setext heading.\n */\nexport function formatHeadingAsSetext(node, state) {\n  let literalWithBreak = false\n\n  // Look for literals with a line break.\n  // Note that this also\n  visit(node, function (node) {\n    if (\n      ('value' in node && /\\r?\\n|\\r/.test(node.value)) ||\n      node.type === 'break'\n    ) {\n      literalWithBreak = true\n      return EXIT\n    }\n  })\n\n  return Boolean(\n    (!node.depth || node.depth < 3) &&\n    toString(node) &&\n    (state.options.setext || literalWithBreak)\n  )\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Heading, Parents} from 'mdast'\n */\n\nimport {encodeCharacterReference} from '../util/encode-character-reference.js'\nimport {formatHeadingAsSetext} from '../util/format-heading-as-setext.js'\n\n/**\n * Serialize a heading node.\n *\n * @param {Heading} node\n *   Node to serialize.\n * @param {Parents | undefined} _\n *   Parent node.\n * @param {State} state\n *   Info passed around.\n * @param {Info} info\n *   Info on surrounding context.\n * @returns {string}\n *   Serialized markdown.\n */\nexport function heading(node, _, state, info) {\n  const rank = Math.max(Math.min(6, node.depth || 1), 1)\n  const tracker = state.createTracker(info)\n\n  if (formatHeadingAsSetext(node, state)) {\n    const exit = state.enter('headingSetext')\n    const subexit = state.enter('phrasing')\n    const value = state.containerPhrasing(node, {\n      ...tracker.current(),\n      before: '\\n',\n      after: '\\n'\n    })\n    subexit()\n    exit()\n\n    return (\n      value +\n      '\\n' +\n      (rank === 1 ? '=' : '-').repeat(\n        // The whole size\u2026\n        value.length -\n          // Minus the position of the character after the last EOL (or\n          // 0 if there is none)\u2026\n          (Math.max(value.lastIndexOf('\\r'), value.lastIndexOf('\\n')) + 1)\n      )\n    )\n  }\n\n  const sequence = '#'.repeat(rank)\n  const exit = state.enter('headingAtx')\n  const subexit = state.enter('phrasing')\n\n  // Note: for proper tracking, we should reset the output positions when there\n  // is no content returned, because then the space is not output.\n  // Practically, in that case, there is no content, so it doesn\u2019t matter that\n  // we\u2019ve tracked one too many characters.\n  tracker.move(sequence + ' ')\n\n  let value = state.containerPhrasing(node, {\n    before: '# ',\n    after: '\\n',\n    ...tracker.current()\n  })\n\n  const head = value.charCodeAt(0)\n\n  if (head === 9 /* `\\t` */ || head === 32 /* ` ` */) {\n    // To do: what effect has the character reference on tracking?\n    value = encodeCharacterReference(head) + value.slice(1)\n  }\n\n  value = value ? sequence + ' ' + value : sequence\n\n  if (state.options.closeAtx) {\n    value += ' ' + sequence\n  }\n\n  subexit()\n  exit()\n\n  return value\n}\n", "/**\n * @import {Html} from 'mdast'\n */\n\nhtml.peek = htmlPeek\n\n/**\n * Serialize an HTML node.\n *\n * @param {Html} node\n *   Node to serialize.\n * @returns {string}\n *   Serialized markdown.\n */\nexport function html(node) {\n  return node.value || ''\n}\n\n/**\n * Peek at this node.\n *\n * @returns {string}\n *   Start of the serialized markdown.\n */\nfunction htmlPeek() {\n  return '<'\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Image, Parents} from 'mdast'\n */\n\nimport {checkQuote} from '../util/check-quote.js'\n\nimage.peek = imagePeek\n\n/**\n * Serialize an image node.\n *\n * @param {Image} node\n *   Node to serialize.\n * @param {Parents | undefined} _\n *   Parent node.\n * @param {State} state\n *   Info passed around.\n * @param {Info} info\n *   Info on surrounding context.\n * @returns {string}\n *   Serialized markdown.\n */\nexport function image(node, _, state, info) {\n  const quote = checkQuote(state)\n  const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n  const exit = state.enter('image')\n  let subexit = state.enter('label')\n  const tracker = state.createTracker(info)\n  let value = tracker.move('![')\n  value += tracker.move(\n    state.safe(node.alt, {before: value, after: ']', ...tracker.current()})\n  )\n  value += tracker.move('](')\n\n  subexit()\n\n  if (\n    // If there\u2019s no url but there is a title\u2026\n    (!node.url && node.title) ||\n    // If there are control characters or whitespace.\n    /[\\0- \\u007F]/.test(node.url)\n  ) {\n    subexit = state.enter('destinationLiteral')\n    value += tracker.move('<')\n    value += tracker.move(\n      state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n    )\n    value += tracker.move('>')\n  } else {\n    // No whitespace, raw is prettier.\n    subexit = state.enter('destinationRaw')\n    value += tracker.move(\n      state.safe(node.url, {\n        before: value,\n        after: node.title ? ' ' : ')',\n        ...tracker.current()\n      })\n    )\n  }\n\n  subexit()\n\n  if (node.title) {\n    subexit = state.enter(`title${suffix}`)\n    value += tracker.move(' ' + quote)\n    value += tracker.move(\n      state.safe(node.title, {\n        before: value,\n        after: quote,\n        ...tracker.current()\n      })\n    )\n    value += tracker.move(quote)\n    subexit()\n  }\n\n  value += tracker.move(')')\n  exit()\n\n  return value\n}\n\n/**\n * Peek at this node.\n *\n * @returns {string}\n *   Start of the serialized markdown.\n */\nfunction imagePeek() {\n  return '!'\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {ImageReference, Parents} from 'mdast'\n */\n\nimageReference.peek = imageReferencePeek\n\n/**\n * Serialize an image reference node.\n *\n * @param {ImageReference} node\n *   Node to serialize.\n * @param {Parents | undefined} _\n *   Parent node.\n * @param {State} state\n *   Info passed around.\n * @param {Info} info\n *   Info on surrounding context.\n * @returns {string}\n *   Serialized markdown.\n */\nexport function imageReference(node, _, state, info) {\n  const type = node.referenceType\n  const exit = state.enter('imageReference')\n  let subexit = state.enter('label')\n  const tracker = state.createTracker(info)\n  let value = tracker.move('![')\n  const alt = state.safe(node.alt, {\n    before: value,\n    after: ']',\n    ...tracker.current()\n  })\n  value += tracker.move(alt + '][')\n\n  subexit()\n  // Hide that we\u2019re in phrasing as things like attention or code cannot form\n  // in references.\n  // Character escapes and references *do* work.\n  // It is important to know about other constructs, such as table cells.\n  const stack = state.stack\n  state.stack = stack.filter(function (d) {\n    return d !== 'phrasing'\n  })\n  subexit = state.enter('reference')\n  // Note: for proper tracking, we should reset the output positions when we end\n  // up making a `shortcut` reference, because then there is no brace output.\n  // Practically, in that case, there is no content, so it doesn\u2019t matter that\n  // we\u2019ve tracked one too many characters.\n  const reference = state.safe(state.associationId(node), {\n    before: value,\n    after: ']',\n    ...tracker.current()\n  })\n  subexit()\n  state.stack = stack\n  exit()\n\n  if (type === 'full' || !alt || alt !== reference) {\n    value += tracker.move(reference + ']')\n  } else if (type === 'shortcut') {\n    // Remove the unwanted `[`.\n    value = value.slice(0, -1)\n  } else {\n    value += tracker.move(']')\n  }\n\n  return value\n}\n\n/**\n * Peek at this node.\n *\n * @returns {string}\n *   Start of the serialized markdown.\n */\nfunction imageReferencePeek() {\n  return '!'\n}\n", "/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {InlineCode, Parents} from 'mdast'\n */\n\ninlineCode.peek = inlineCodePeek\n\n/**\n * Serialize an inline code node.\n *\n * @param {InlineCode} node\n *   Node to serialize.\n * @param {Parents | undefined} _\n *   Parent node.\n * @param {State} state\n *   Info passed around.\n * @returns {string}\n *   Serialized markdown.\n */\nexport function inlineCode(node, _, state) {\n  let value = node.value || ''\n  let sequence = '`'\n  let index = -1\n\n  // If there is a single grave accent on its own in the code, use a fence of\n  // two.\n  // If there are two in a row, use one.\n  while (new RegExp('(^|[^`])' + sequence + '([^`]|$)').test(value)) {\n    sequence += '`'\n  }\n\n  // If this is not just spaces or eols (tabs don\u2019t count), and either the\n  // first or last character are a space, eol, or tick, then pad with spaces.\n  if (\n    /[^\\n\\r ]/.test(value) &&\n    ((/^[\\n\\r ]/.test(value) && /[\\n\\r ]$/.test(value)) || /^`|`$/.test(value))\n  ) {\n    value = ' ' + value + ' '\n  }\n\n  // We have a potential problem: certain characters after eols could result in\n  // blocks being seen.\n  // For example, if someone injected the string `'\\n# b'`, then that would\n  // result in an ATX heading.\n  // We can\u2019t escape characters in `inlineCode`, but because eols are\n  // transformed to spaces when going from markdown to HTML anyway, we can swap\n  // them out.\n  while (++index < state.unsafe.length) {\n    const pattern = state.unsafe[index]\n    const expression = state.compilePattern(pattern)\n\n    // Only look for `atBreak`s.\n    // Btw: note that `atBreak` patterns will always start the regex at LF or\n    // CR.\n    if (!pattern.atBreak) continue\n\n    /** @type {RegExpExecArray | null} */\n    let match\n\n    while ((match = expression.exec(value))) {\n      let position = match.index\n\n      // Support CRLF (patterns only look for one of the characters).\n      if (\n        value.charCodeAt(position) === 10 /* `\\n` */ &&\n        value.charCodeAt(position - 1) === 13 /* `\\r` */\n      ) {\n        position--\n      }\n\n      value = value.slice(0, position) + ' ' + value.slice(match.index + 1)\n    }\n  }\n\n  return sequence + value + sequence\n}\n\n/**\n * Peek at this node.\n *\n * @returns {string}\n *   Start of the serialized markdown.\n */\nfunction inlineCodePeek() {\n  return '`'\n}\n", "/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Link} from 'mdast'\n */\n\nimport {toString} from 'mdast-util-to-string'\n\n/**\n * Checks if a link can be formatted as an autolink.\n *\n * @param {Link} node\n *   Node to check.\n * @param {State} state\n *   Info passed around.\n * @returns {boolean}\n *   Whether the link can be formatted as an autolink.\n */\nexport function formatLinkAsAutolink(node, state) {\n  const raw = toString(node)\n\n  return Boolean(\n    !state.options.resourceLink &&\n    // If there\u2019s a url\u2026\n    node.url &&\n    // And there\u2019s no title\u2026\n    !node.title &&\n    // And the content of `node` is a single text node\u2026\n    node.children &&\n    node.children.length === 1 &&\n    node.children[0].type === 'text' &&\n    // And if the url is the same as the content\u2026\n    (raw === node.url || 'mailto:' + raw === node.url) &&\n    // And that starts w/ a protocol\u2026\n    /^[a-z][+\\-.a-z]+:/i.test(node.url) &&\n    // And that doesn\u2019t contain ASCII control codes (character escapes and\n    // references don\u2019t work), space, or angle brackets\u2026\n    !/[\\0- <>\\u007F]/.test(node.url)\n  )\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Link, Parents} from 'mdast'\n * @import {Exit} from '../types.js'\n */\n\nimport {checkQuote} from '../util/check-quote.js'\nimport {formatLinkAsAutolink} from '../util/format-link-as-autolink.js'\n\nlink.peek = linkPeek\n\n/**\n * Serialize a link node.\n *\n * @param {Link} node\n *   Node to serialize.\n * @param {Parents | undefined} _\n *   Parent node.\n * @param {State} state\n *   Info passed around.\n * @param {Info} info\n *   Info on surrounding context.\n * @returns {string}\n *   Serialized markdown.\n */\nexport function link(node, _, state, info) {\n  const quote = checkQuote(state)\n  const suffix = quote === '\"' ? 'Quote' : 'Apostrophe'\n  const tracker = state.createTracker(info)\n\n  if (formatLinkAsAutolink(node, state)) {\n    // Hide that we\u2019re in phrasing as things like attention or code cannot form\n    // in autolinks.\n    // Character escapes also don\u2019t work (nor character references),\n    // but that is a different matter, which `safe.js` handles for `autolink`.\n    // It is important to know about other constructs, such as table cells.\n    const stack = state.stack\n    state.stack = stack.filter(function (d) {\n      return d !== 'phrasing'\n    })\n    const exit = state.enter('autolink')\n    let value = tracker.move('<')\n    value += tracker.move(\n      state.containerPhrasing(node, {\n        before: value,\n        after: '>',\n        ...tracker.current()\n      })\n    )\n    value += tracker.move('>')\n    exit()\n    state.stack = stack\n    return value\n  }\n\n  const exit = state.enter('link')\n  let subexit = state.enter('label')\n  let value = tracker.move('[')\n  value += tracker.move(\n    state.containerPhrasing(node, {\n      before: value,\n      after: '](',\n      ...tracker.current()\n    })\n  )\n  value += tracker.move('](')\n  subexit()\n\n  if (\n    // If there\u2019s no url but there is a title\u2026\n    (!node.url && node.title) ||\n    // If there are control characters or whitespace.\n    /[\\0- \\u007F]/.test(node.url)\n  ) {\n    subexit = state.enter('destinationLiteral')\n    value += tracker.move('<')\n    value += tracker.move(\n      state.safe(node.url, {before: value, after: '>', ...tracker.current()})\n    )\n    value += tracker.move('>')\n  } else {\n    // No whitespace, raw is prettier.\n    subexit = state.enter('destinationRaw')\n    value += tracker.move(\n      state.safe(node.url, {\n        before: value,\n        after: node.title ? ' ' : ')',\n        ...tracker.current()\n      })\n    )\n  }\n\n  subexit()\n\n  if (node.title) {\n    subexit = state.enter(`title${suffix}`)\n    value += tracker.move(' ' + quote)\n    value += tracker.move(\n      state.safe(node.title, {\n        before: value,\n        after: quote,\n        ...tracker.current()\n      })\n    )\n    value += tracker.move(quote)\n    subexit()\n  }\n\n  value += tracker.move(')')\n\n  exit()\n  return value\n}\n\n/**\n * Peek at this node.\n *\n * @param {Link} node\n *   Node to peek at.\n * @param {Parents | undefined} _\n *   Parent node.\n * @param {State} state\n *   Info passed around.\n * @returns {string}\n *   Start of the serialized markdown.\n */\nfunction linkPeek(node, _, state) {\n  return formatLinkAsAutolink(node, state) ? '<' : '['\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {LinkReference, Parents} from 'mdast'\n */\n\nlinkReference.peek = linkReferencePeek\n\n/**\n * Serialize a link reference node.\n *\n * @param {LinkReference} node\n *   Node to serialize.\n * @param {Parents | undefined} _\n *   Parent node.\n * @param {State} state\n *   Info passed around.\n * @param {Info} info\n *   Info on surrounding context.\n * @returns {string}\n *   Serialized markdown.\n */\nexport function linkReference(node, _, state, info) {\n  const type = node.referenceType\n  const exit = state.enter('linkReference')\n  let subexit = state.enter('label')\n  const tracker = state.createTracker(info)\n  let value = tracker.move('[')\n  const text = state.containerPhrasing(node, {\n    before: value,\n    after: ']',\n    ...tracker.current()\n  })\n  value += tracker.move(text + '][')\n\n  subexit()\n  // Hide that we\u2019re in phrasing as things like attention or code cannot form\n  // in references.\n  // Character escapes and references *do* work.\n  // It is important to know about other constructs, such as table cells.\n  const stack = state.stack\n  state.stack = stack.filter(function (d) {\n    return d !== 'phrasing'\n  })\n  subexit = state.enter('reference')\n  // Note: for proper tracking, we should reset the output positions when we end\n  // up making a `shortcut` reference, because then there is no brace output.\n  // Practically, in that case, there is no content, so it doesn\u2019t matter that\n  // we\u2019ve tracked one too many characters.\n  const reference = state.safe(state.associationId(node), {\n    before: value,\n    after: ']',\n    ...tracker.current()\n  })\n  subexit()\n  state.stack = stack\n  exit()\n\n  if (type === 'full' || !text || text !== reference) {\n    value += tracker.move(reference + ']')\n  } else if (type === 'shortcut') {\n    // Remove the unwanted `[`.\n    value = value.slice(0, -1)\n  } else {\n    value += tracker.move(']')\n  }\n\n  return value\n}\n\n/**\n * Peek at this node.\n *\n * @returns {string}\n *   Start of the serialized markdown.\n */\nfunction linkReferencePeek() {\n  return '['\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * Checks the preferred list bullet option.\n *\n * @param {State} state\n *   Info passed around.\n * @returns {Exclude<Options['bullet'], null | undefined>}\n *   Preferred list bullet.\n */\nexport function checkBullet(state) {\n  const marker = state.options.bullet || '*'\n\n  if (marker !== '*' && marker !== '+' && marker !== '-') {\n    throw new Error(\n      'Cannot serialize items with `' +\n        marker +\n        '` for `options.bullet`, expected `*`, `+`, or `-`'\n    )\n  }\n\n  return marker\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\nimport {checkBullet} from './check-bullet.js'\n\n/**\n * Checks the preferred alternate list bullet option.\n *\n * @param {State} state\n *   Info passed around.\n * @returns {Exclude<Options['bullet'], null | undefined>}\n *   Preferred alternate list bullet.\n */\nexport function checkBulletOther(state) {\n  const bullet = checkBullet(state)\n  const bulletOther = state.options.bulletOther\n\n  if (!bulletOther) {\n    return bullet === '*' ? '-' : '*'\n  }\n\n  if (bulletOther !== '*' && bulletOther !== '+' && bulletOther !== '-') {\n    throw new Error(\n      'Cannot serialize items with `' +\n        bulletOther +\n        '` for `options.bulletOther`, expected `*`, `+`, or `-`'\n    )\n  }\n\n  if (bulletOther === bullet) {\n    throw new Error(\n      'Expected `bullet` (`' +\n        bullet +\n        '`) and `bulletOther` (`' +\n        bulletOther +\n        '`) to be different'\n    )\n  }\n\n  return bulletOther\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * Checks the preferred ordered list bullet option.\n *\n * @param {State} state\n *   Info passed around.\n * @returns {Exclude<Options['bulletOrdered'], null | undefined>}\n *   Preferred ordered list bullet.\n */\nexport function checkBulletOrdered(state) {\n  const marker = state.options.bulletOrdered || '.'\n\n  if (marker !== '.' && marker !== ')') {\n    throw new Error(\n      'Cannot serialize items with `' +\n        marker +\n        '` for `options.bulletOrdered`, expected `.` or `)`'\n    )\n  }\n\n  return marker\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * Checks the preferred rule option.\n *\n * @param {State} state\n *   Info passed around.\n * @returns {Exclude<Options['rule'], null | undefined>}\n *   Preferred rule marker.\n */\nexport function checkRule(state) {\n  const marker = state.options.rule || '*'\n\n  if (marker !== '*' && marker !== '-' && marker !== '_') {\n    throw new Error(\n      'Cannot serialize rules with `' +\n        marker +\n        '` for `options.rule`, expected `*`, `-`, or `_`'\n    )\n  }\n\n  return marker\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {List, Parents} from 'mdast'\n */\n\nimport {checkBullet} from '../util/check-bullet.js'\nimport {checkBulletOther} from '../util/check-bullet-other.js'\nimport {checkBulletOrdered} from '../util/check-bullet-ordered.js'\nimport {checkRule} from '../util/check-rule.js'\n\n/**\n * Serialize a list node.\n *\n * @param {List} node\n *   Node to serialize.\n * @param {Parents | undefined} parent\n *   Parent node.\n * @param {State} state\n *   Info passed around.\n * @param {Info} info\n *   Info on surrounding context.\n * @returns {string}\n *   Serialized markdown.\n */\nexport function list(node, parent, state, info) {\n  const exit = state.enter('list')\n  const bulletCurrent = state.bulletCurrent\n  /** @type {string} */\n  let bullet = node.ordered ? checkBulletOrdered(state) : checkBullet(state)\n  /** @type {string} */\n  const bulletOther = node.ordered\n    ? bullet === '.'\n      ? ')'\n      : '.'\n    : checkBulletOther(state)\n  let useDifferentMarker =\n    parent && state.bulletLastUsed ? bullet === state.bulletLastUsed : false\n\n  if (!node.ordered) {\n    const firstListItem = node.children ? node.children[0] : undefined\n\n    // If there\u2019s an empty first list item directly in two list items,\n    // we have to use a different bullet:\n    //\n    // ```markdown\n    // * - *\n    // ```\n    //\n    // \u2026because otherwise it would become one big thematic break.\n    if (\n      // Bullet could be used as a thematic break marker:\n      (bullet === '*' || bullet === '-') &&\n      // Empty first list item:\n      firstListItem &&\n      (!firstListItem.children || !firstListItem.children[0]) &&\n      // Directly in two other list items:\n      state.stack[state.stack.length - 1] === 'list' &&\n      state.stack[state.stack.length - 2] === 'listItem' &&\n      state.stack[state.stack.length - 3] === 'list' &&\n      state.stack[state.stack.length - 4] === 'listItem' &&\n      // That are each the first child.\n      state.indexStack[state.indexStack.length - 1] === 0 &&\n      state.indexStack[state.indexStack.length - 2] === 0 &&\n      state.indexStack[state.indexStack.length - 3] === 0\n    ) {\n      useDifferentMarker = true\n    }\n\n    // If there\u2019s a thematic break at the start of the first list item,\n    // we have to use a different bullet:\n    //\n    // ```markdown\n    // * ---\n    // ```\n    //\n    // \u2026because otherwise it would become one big thematic break.\n    if (checkRule(state) === bullet && firstListItem) {\n      let index = -1\n\n      while (++index < node.children.length) {\n        const item = node.children[index]\n\n        if (\n          item &&\n          item.type === 'listItem' &&\n          item.children &&\n          item.children[0] &&\n          item.children[0].type === 'thematicBreak'\n        ) {\n          useDifferentMarker = true\n          break\n        }\n      }\n    }\n  }\n\n  if (useDifferentMarker) {\n    bullet = bulletOther\n  }\n\n  state.bulletCurrent = bullet\n  const value = state.containerFlow(node, info)\n  state.bulletLastUsed = bullet\n  state.bulletCurrent = bulletCurrent\n  exit()\n  return value\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * Checks the preferred list item indent option.\n *\n * @param {State} state\n *   Info passed around.\n * @returns {Exclude<Options['listItemIndent'], null | undefined>}\n *   Preferred list item indent.\n */\nexport function checkListItemIndent(state) {\n  const style = state.options.listItemIndent || 'one'\n\n  if (style !== 'tab' && style !== 'one' && style !== 'mixed') {\n    throw new Error(\n      'Cannot serialize items with `' +\n        style +\n        '` for `options.listItemIndent`, expected `tab`, `one`, or `mixed`'\n    )\n  }\n\n  return style\n}\n", "/**\n * @import {Info, Map, State} from 'mdast-util-to-markdown'\n * @import {ListItem, Parents} from 'mdast'\n */\n\nimport {checkBullet} from '../util/check-bullet.js'\nimport {checkListItemIndent} from '../util/check-list-item-indent.js'\n\n/**\n * Serialize a list item node.\n *\n * @param {ListItem} node\n *   Node to serialize.\n * @param {Parents | undefined} parent\n *   Parent node.\n * @param {State} state\n *   Info passed around.\n * @param {Info} info\n *   Info on surrounding context.\n * @returns {string}\n *   Serialized markdown.\n */\nexport function listItem(node, parent, state, info) {\n  const listItemIndent = checkListItemIndent(state)\n  let bullet = state.bulletCurrent || checkBullet(state)\n\n  // Add the marker value for ordered lists.\n  if (parent && parent.type === 'list' && parent.ordered) {\n    bullet =\n      (typeof parent.start === 'number' && parent.start > -1\n        ? parent.start\n        : 1) +\n      (state.options.incrementListMarker === false\n        ? 0\n        : parent.children.indexOf(node)) +\n      bullet\n  }\n\n  let size = bullet.length + 1\n\n  if (\n    listItemIndent === 'tab' ||\n    (listItemIndent === 'mixed' &&\n      ((parent && parent.type === 'list' && parent.spread) || node.spread))\n  ) {\n    size = Math.ceil(size / 4) * 4\n  }\n\n  const tracker = state.createTracker(info)\n  tracker.move(bullet + ' '.repeat(size - bullet.length))\n  tracker.shift(size)\n  const exit = state.enter('listItem')\n  const value = state.indentLines(\n    state.containerFlow(node, tracker.current()),\n    map\n  )\n  exit()\n\n  return value\n\n  /**\n   * Indent lines of the list item.\n   *\n   * @type {Map}\n   */\n  function map(line, index, blank) {\n    if (index) {\n      return (blank ? '' : ' '.repeat(size)) + line\n    }\n\n    return (blank ? bullet : bullet + ' '.repeat(size - bullet.length)) + line\n  }\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Paragraph, Parents} from 'mdast'\n */\n\n/**\n * Serialize a paragraph node.\n *\n * @param {Paragraph} node\n *   Node to serialize.\n * @param {Parents | undefined} _\n *   Parent node.\n * @param {State} state\n *   Info passed around.\n * @param {Info} info\n *   Info on surrounding context.\n * @returns {string}\n *   Serialized markdown.\n */\nexport function paragraph(node, _, state, info) {\n  const exit = state.enter('paragraph')\n  const subexit = state.enter('phrasing')\n  const value = state.containerPhrasing(node, info)\n  subexit()\n  exit()\n  return value\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Parents, Root} from 'mdast'\n */\n\nimport {phrasing} from 'mdast-util-phrasing'\n\n/**\n * Serialize a root node.\n *\n * @param {Root} node\n *   Node to serialize.\n * @param {Parents | undefined} _\n *   Parent node.\n * @param {State} state\n *   Info passed around.\n * @param {Info} info\n *   Info on surrounding context.\n * @returns {string}\n *   Serialized markdown.\n */\nexport function root(node, _, state, info) {\n  // Note: `html` nodes are ambiguous.\n  const hasPhrasing = node.children.some(function (d) {\n    return phrasing(d)\n  })\n\n  if (!hasPhrasing) return state.containerFlow(node, info)\n\n  const exit = state.enter('phrasing')\n  const value = state.containerPhrasing(node, info)\n  exit()\n  return value\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * Checks the preferred strong option.\n *\n * @param {State} state\n *   Info passed around.\n * @returns {Exclude<Options['strong'], null | undefined>}\n *   Preferred strong marker.\n */\nexport function checkStrong(state) {\n  const marker = state.options.strong || '*'\n\n  if (marker !== '*' && marker !== '_') {\n    throw new Error(\n      'Cannot serialize strong with `' +\n        marker +\n        '` for `options.strong`, expected `*`, or `_`'\n    )\n  }\n\n  return marker\n}\n", "/**\n * @import {AttentionInfo, Info, State} from 'mdast-util-to-markdown'\n * @import {Parents, Strong} from 'mdast'\n */\n\nimport {checkStrong} from '../util/check-strong.js'\n\nstrong.attention = attention\nstrong.peek = peek\n\n/**\n * Serialize a strong node.\n *\n * Attention is properly handled by `containerPhrasing`.\n *\n * @param {Strong} node\n *   Node to serialize.\n * @param {Parents | undefined} _\n *   Parent node.\n * @param {State} state\n *   Info passed around.\n * @param {Info} info\n *   Info on surrounding context.\n * @returns {string}\n *   Serialized markdown.\n */\nexport function strong(node, _, state, info) {\n  const exit = state.enter('phrasing')\n  const value = state.containerPhrasing({type: 'root', children: [node]}, info)\n  exit()\n  return value\n}\n\n/**\n * Serialize a strong node as attention.\n *\n * @param {Strong} _\n *   Node to serialize.\n * @param {State} state\n *   Info passed around.\n * @returns {AttentionInfo}\n *   Info on how to serialize the node.\n */\nfunction attention(_, state) {\n  const marker = checkStrong(state)\n  return {\n    construct: 'strong',\n    markers: marker === '*' ? ['*', '_'] : ['_', '*'],\n    sizes: [2]\n  }\n}\n\n/**\n * Peek at this node.\n *\n * @param {Strong} _\n *   Node to serialize.\n * @param {Parents | undefined} _1\n *   Parent node.\n * @param {State} state\n *   Info passed around.\n * @returns {string}\n *   Start of the serialized markdown.\n */\nfunction peek(_, _1, state) {\n  return state.options.strong || '*'\n}\n", "/**\n * @import {Info, State} from 'mdast-util-to-markdown'\n * @import {Parents, Text} from 'mdast'\n */\n\n/**\n * Serialize a text node.\n *\n * @param {Text} node\n *   Node to serialize.\n * @param {Parents | undefined} parent\n *   Parent node.\n * @param {State} state\n *   Info passed around.\n * @param {Info} info\n *   Info on surrounding context.\n * @returns {string}\n *   Serialized markdown.\n */\nexport function text(node, parent, state, info) {\n  /* c8 ignore next -- parent always passed */\n  const siblings = parent ? parent.children : []\n  const index = siblings.indexOf(node)\n\n  return state.safe(node.value, {\n    ...info,\n    afterNode: siblings[index + 1],\n    beforeNode: siblings[index - 1]\n  })\n}\n", "/**\n * @import {Options, State} from 'mdast-util-to-markdown'\n */\n\n/**\n * Checks the preferred rule repetition option.\n *\n * @param {State} state\n *   Info passed around.\n * @returns {Exclude<Options['ruleRepetition'], null | undefined>}\n *   Preferred rule repetition.\n */\nexport function checkRuleRepetition(state) {\n  const repetition = state.options.ruleRepetition || 3\n\n  if (repetition < 3) {\n    throw new Error(\n      'Cannot serialize rules with repetition `' +\n        repetition +\n        '` for `options.ruleRepetition`, expected `3` or more'\n    )\n  }\n\n  return repetition\n}\n", "/**\n * @import {State} from 'mdast-util-to-markdown'\n * @import {Parents, ThematicBreak} from 'mdast'\n */\n\nimport {checkRuleRepetition} from '../util/check-rule-repetition.js'\nimport {checkRule} from '../util/check-rule.js'\n\n/**\n * Serialize a thematic break node.\n *\n * @param {ThematicBreak} _\n *   Node to serialize.\n * @param {Parents | undefined} _1\n *   Parent node.\n * @param {State} state\n *   Info passed around.\n * @returns {string}\n *   Serialized markdown.\n */\nexport function thematicBreak(_, _1, state) {\n  const value = (\n    checkRule(state) + (state.options.ruleSpaces ? ' ' : '')\n  ).repeat(checkRuleRepetition(state))\n\n  return state.options.ruleSpaces ? value.slice(0, -1) : value\n}\n", "import {blockquote} from './blockquote.js'\nimport {hardBreak} from './break.js'\nimport {code} from './code.js'\nimport {definition} from './definition.js'\nimport {emphasis} from './emphasis.js'\nimport {heading} from './heading.js'\nimport {html} from './html.js'\nimport {image} from './image.js'\nimport {imageReference} from './image-reference.js'\nimport {inlineCode} from './inline-code.js'\nimport {link} from './link.js'\nimport {linkReference} from './link-reference.js'\nimport {list} from './list.js'\nimport {listItem} from './list-item.js'\nimport {paragraph} from './paragraph.js'\nimport {root} from './root.js'\nimport {strong} from './strong.js'\nimport {text} from './text.js'\nimport {thematicBreak} from './thematic-break.js'\n\n/**\n * Default (CommonMark) handlers.\n */\nexport const handle = {\n  blockquote,\n  break: hardBreak,\n  code,\n  definition,\n  emphasis,\n  hardBreak,\n  heading,\n  html,\n  image,\n  imageReference,\n  inlineCode,\n  link,\n  linkReference,\n  list,\n  listItem,\n  paragraph,\n  root,\n  strong,\n  text,\n  thematicBreak\n}\n", "/**\n * @typedef {import('mdast').InlineCode} InlineCode\n * @typedef {import('mdast').Table} Table\n * @typedef {import('mdast').TableCell} TableCell\n * @typedef {import('mdast').TableRow} TableRow\n *\n * @typedef {import('markdown-table').Options} MarkdownTableOptions\n *\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n *\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').State} State\n * @typedef {import('mdast-util-to-markdown').Info} Info\n */\n\n/**\n * @typedef Options\n *   Configuration.\n * @property {boolean | null | undefined} [tableCellPadding=true]\n *   Whether to add a space of padding between delimiters and cells (default:\n *   `true`).\n * @property {boolean | null | undefined} [tablePipeAlign=true]\n *   Whether to align the delimiters (default: `true`).\n * @property {MarkdownTableOptions['stringLength'] | null | undefined} [stringLength]\n *   Function to detect the length of table cell content, used when aligning\n *   the delimiters between cells (optional).\n */\n\nimport {ok as assert} from 'devlop'\nimport {markdownTable} from 'markdown-table'\nimport {defaultHandlers} from 'mdast-util-to-markdown'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM tables in\n * markdown.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-from-markdown` to enable GFM tables.\n */\nexport function gfmTableFromMarkdown() {\n  return {\n    enter: {\n      table: enterTable,\n      tableData: enterCell,\n      tableHeader: enterCell,\n      tableRow: enterRow\n    },\n    exit: {\n      codeText: exitCodeText,\n      table: exitTable,\n      tableData: exit,\n      tableHeader: exit,\n      tableRow: exit\n    }\n  }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterTable(token) {\n  const align = token._align\n  assert(align, 'expected `_align` on table')\n  this.enter(\n    {\n      type: 'table',\n      align: align.map(function (d) {\n        return d === 'none' ? null : d\n      }),\n      children: []\n    },\n    token\n  )\n  this.data.inTable = true\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitTable(token) {\n  this.exit(token)\n  this.data.inTable = undefined\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterRow(token) {\n  this.enter({type: 'tableRow', children: []}, token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exit(token) {\n  this.exit(token)\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction enterCell(token) {\n  this.enter({type: 'tableCell', children: []}, token)\n}\n\n// Overwrite the default code text data handler to unescape escaped pipes when\n// they are in tables.\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCodeText(token) {\n  let value = this.resume()\n\n  if (this.data.inTable) {\n    value = value.replace(/\\\\([\\\\|])/g, replace)\n  }\n\n  const node = this.stack[this.stack.length - 1]\n  assert(node.type === 'inlineCode')\n  node.value = value\n  this.exit(token)\n}\n\n/**\n * @param {string} $0\n * @param {string} $1\n * @returns {string}\n */\nfunction replace($0, $1) {\n  // Pipes work, backslashes don\u2019t (but can\u2019t escape pipes).\n  return $1 === '|' ? $1 : $0\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM tables in\n * markdown.\n *\n * @param {Options | null | undefined} [options]\n *   Configuration.\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM tables.\n */\nexport function gfmTableToMarkdown(options) {\n  const settings = options || {}\n  const padding = settings.tableCellPadding\n  const alignDelimiters = settings.tablePipeAlign\n  const stringLength = settings.stringLength\n  const around = padding ? ' ' : '|'\n\n  return {\n    unsafe: [\n      {character: '\\r', inConstruct: 'tableCell'},\n      {character: '\\n', inConstruct: 'tableCell'},\n      // A pipe, when followed by a tab or space (padding), or a dash or colon\n      // (unpadded delimiter row), could result in a table.\n      {atBreak: true, character: '|', after: '[\\t :-]'},\n      // A pipe in a cell must be encoded.\n      {character: '|', inConstruct: 'tableCell'},\n      // A colon must be followed by a dash, in which case it could start a\n      // delimiter row.\n      {atBreak: true, character: ':', after: '-'},\n      // A delimiter row can also start with a dash, when followed by more\n      // dashes, a colon, or a pipe.\n      // This is a stricter version than the built in check for lists, thematic\n      // breaks, and setex heading underlines though:\n      // <https://github.com/syntax-tree/mdast-util-to-markdown/blob/51a2038/lib/unsafe.js#L57>\n      {atBreak: true, character: '-', after: '[:|-]'}\n    ],\n    handlers: {\n      inlineCode: inlineCodeWithTable,\n      table: handleTable,\n      tableCell: handleTableCell,\n      tableRow: handleTableRow\n    }\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {Table} node\n   */\n  function handleTable(node, _, state, info) {\n    return serializeData(handleTableAsData(node, state, info), node.align)\n  }\n\n  /**\n   * This function isn\u2019t really used normally, because we handle rows at the\n   * table level.\n   * But, if someone passes in a table row, this ensures we make somewhat sense.\n   *\n   * @type {ToMarkdownHandle}\n   * @param {TableRow} node\n   */\n  function handleTableRow(node, _, state, info) {\n    const row = handleTableRowAsData(node, state, info)\n    const value = serializeData([row])\n    // `markdown-table` will always add an align row\n    return value.slice(0, value.indexOf('\\n'))\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {TableCell} node\n   */\n  function handleTableCell(node, _, state, info) {\n    const exit = state.enter('tableCell')\n    const subexit = state.enter('phrasing')\n    const value = state.containerPhrasing(node, {\n      ...info,\n      before: around,\n      after: around\n    })\n    subexit()\n    exit()\n    return value\n  }\n\n  /**\n   * @param {Array<Array<string>>} matrix\n   * @param {Array<string | null | undefined> | null | undefined} [align]\n   */\n  function serializeData(matrix, align) {\n    return markdownTable(matrix, {\n      align,\n      // @ts-expect-error: `markdown-table` types should support `null`.\n      alignDelimiters,\n      // @ts-expect-error: `markdown-table` types should support `null`.\n      padding,\n      // @ts-expect-error: `markdown-table` types should support `null`.\n      stringLength\n    })\n  }\n\n  /**\n   * @param {Table} node\n   * @param {State} state\n   * @param {Info} info\n   */\n  function handleTableAsData(node, state, info) {\n    const children = node.children\n    let index = -1\n    /** @type {Array<Array<string>>} */\n    const result = []\n    const subexit = state.enter('table')\n\n    while (++index < children.length) {\n      result[index] = handleTableRowAsData(children[index], state, info)\n    }\n\n    subexit()\n\n    return result\n  }\n\n  /**\n   * @param {TableRow} node\n   * @param {State} state\n   * @param {Info} info\n   */\n  function handleTableRowAsData(node, state, info) {\n    const children = node.children\n    let index = -1\n    /** @type {Array<string>} */\n    const result = []\n    const subexit = state.enter('tableRow')\n\n    while (++index < children.length) {\n      // Note: the positional info as used here is incorrect.\n      // Making it correct would be impossible due to aligning cells?\n      // And it would need copy/pasting `markdown-table` into this project.\n      result[index] = handleTableCell(children[index], node, state, info)\n    }\n\n    subexit()\n\n    return result\n  }\n\n  /**\n   * @type {ToMarkdownHandle}\n   * @param {InlineCode} node\n   */\n  function inlineCodeWithTable(node, parent, state) {\n    let value = defaultHandlers.inlineCode(node, parent, state)\n\n    if (state.stack.includes('tableCell')) {\n      value = value.replace(/\\|/g, '\\\\$&')\n    }\n\n    return value\n  }\n}\n", "/**\n * @typedef {import('mdast').ListItem} ListItem\n * @typedef {import('mdast').Paragraph} Paragraph\n * @typedef {import('mdast-util-from-markdown').CompileContext} CompileContext\n * @typedef {import('mdast-util-from-markdown').Extension} FromMarkdownExtension\n * @typedef {import('mdast-util-from-markdown').Handle} FromMarkdownHandle\n * @typedef {import('mdast-util-to-markdown').Options} ToMarkdownExtension\n * @typedef {import('mdast-util-to-markdown').Handle} ToMarkdownHandle\n */\n\nimport {ok as assert} from 'devlop'\nimport {defaultHandlers} from 'mdast-util-to-markdown'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM task\n * list items in markdown.\n *\n * @returns {FromMarkdownExtension}\n *   Extension for `mdast-util-from-markdown` to enable GFM task list items.\n */\nexport function gfmTaskListItemFromMarkdown() {\n  return {\n    exit: {\n      taskListCheckValueChecked: exitCheck,\n      taskListCheckValueUnchecked: exitCheck,\n      paragraph: exitParagraphWithTaskListItem\n    }\n  }\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM task list\n * items in markdown.\n *\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM task list items.\n */\nexport function gfmTaskListItemToMarkdown() {\n  return {\n    unsafe: [{atBreak: true, character: '-', after: '[:|-]'}],\n    handlers: {listItem: listItemWithTaskListItem}\n  }\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitCheck(token) {\n  // We\u2019re always in a paragraph, in a list item.\n  const node = this.stack[this.stack.length - 2]\n  assert(node.type === 'listItem')\n  node.checked = token.type === 'taskListCheckValueChecked'\n}\n\n/**\n * @this {CompileContext}\n * @type {FromMarkdownHandle}\n */\nfunction exitParagraphWithTaskListItem(token) {\n  const parent = this.stack[this.stack.length - 2]\n\n  if (\n    parent &&\n    parent.type === 'listItem' &&\n    typeof parent.checked === 'boolean'\n  ) {\n    const node = this.stack[this.stack.length - 1]\n    assert(node.type === 'paragraph')\n    const head = node.children[0]\n\n    if (head && head.type === 'text') {\n      const siblings = parent.children\n      let index = -1\n      /** @type {Paragraph | undefined} */\n      let firstParaghraph\n\n      while (++index < siblings.length) {\n        const sibling = siblings[index]\n        if (sibling.type === 'paragraph') {\n          firstParaghraph = sibling\n          break\n        }\n      }\n\n      if (firstParaghraph === node) {\n        // Must start with a space or a tab.\n        head.value = head.value.slice(1)\n\n        if (head.value.length === 0) {\n          node.children.shift()\n        } else if (\n          node.position &&\n          head.position &&\n          typeof head.position.start.offset === 'number'\n        ) {\n          head.position.start.column++\n          head.position.start.offset++\n          node.position.start = Object.assign({}, head.position.start)\n        }\n      }\n    }\n  }\n\n  this.exit(token)\n}\n\n/**\n * @type {ToMarkdownHandle}\n * @param {ListItem} node\n */\nfunction listItemWithTaskListItem(node, parent, state, info) {\n  const head = node.children[0]\n  const checkable =\n    typeof node.checked === 'boolean' && head && head.type === 'paragraph'\n  const checkbox = '[' + (node.checked ? 'x' : ' ') + '] '\n  const tracker = state.createTracker(info)\n\n  if (checkable) {\n    tracker.move(checkbox)\n  }\n\n  let value = defaultHandlers.listItem(node, parent, state, {\n    ...info,\n    ...tracker.current()\n  })\n\n  if (checkable) {\n    value = value.replace(/^(?:[*+-]|\\d+\\.)([\\r\\n]| {1,3})/, check)\n  }\n\n  return value\n\n  /**\n   * @param {string} $0\n   * @returns {string}\n   */\n  function check($0) {\n    return $0 + checkbox\n  }\n}\n", "/**\n * @import {Extension as FromMarkdownExtension} from 'mdast-util-from-markdown'\n * @import {Options} from 'mdast-util-gfm'\n * @import {Options as ToMarkdownExtension} from 'mdast-util-to-markdown'\n */\n\nimport {\n  gfmAutolinkLiteralFromMarkdown,\n  gfmAutolinkLiteralToMarkdown\n} from 'mdast-util-gfm-autolink-literal'\nimport {\n  gfmFootnoteFromMarkdown,\n  gfmFootnoteToMarkdown\n} from 'mdast-util-gfm-footnote'\nimport {\n  gfmStrikethroughFromMarkdown,\n  gfmStrikethroughToMarkdown\n} from 'mdast-util-gfm-strikethrough'\nimport {gfmTableFromMarkdown, gfmTableToMarkdown} from 'mdast-util-gfm-table'\nimport {\n  gfmTaskListItemFromMarkdown,\n  gfmTaskListItemToMarkdown\n} from 'mdast-util-gfm-task-list-item'\n\n/**\n * Create an extension for `mdast-util-from-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @returns {Array<FromMarkdownExtension>}\n *   Extension for `mdast-util-from-markdown` to enable GFM (autolink literals,\n *   footnotes, strikethrough, tables, tasklists).\n */\nexport function gfmFromMarkdown() {\n  return [\n    gfmAutolinkLiteralFromMarkdown(),\n    gfmFootnoteFromMarkdown(),\n    gfmStrikethroughFromMarkdown(),\n    gfmTableFromMarkdown(),\n    gfmTaskListItemFromMarkdown()\n  ]\n}\n\n/**\n * Create an extension for `mdast-util-to-markdown` to enable GFM (autolink\n * literals, footnotes, strikethrough, tables, tasklists).\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {ToMarkdownExtension}\n *   Extension for `mdast-util-to-markdown` to enable GFM (autolink literals,\n *   footnotes, strikethrough, tables, tasklists).\n */\nexport function gfmToMarkdown(options) {\n  return {\n    extensions: [\n      gfmAutolinkLiteralToMarkdown(),\n      gfmFootnoteToMarkdown(options),\n      gfmStrikethroughToMarkdown(),\n      gfmTableToMarkdown(options),\n      gfmTaskListItemToMarkdown()\n    ]\n  }\n}\n", "/**\n * @import {Code, ConstructRecord, Event, Extension, Previous, State, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { asciiAlpha, asciiAlphanumeric, asciiControl, markdownLineEndingOrSpace, unicodePunctuation, unicodeWhitespace } from 'micromark-util-character';\nconst wwwPrefix = {\n  tokenize: tokenizeWwwPrefix,\n  partial: true\n};\nconst domain = {\n  tokenize: tokenizeDomain,\n  partial: true\n};\nconst path = {\n  tokenize: tokenizePath,\n  partial: true\n};\nconst trail = {\n  tokenize: tokenizeTrail,\n  partial: true\n};\nconst emailDomainDotTrail = {\n  tokenize: tokenizeEmailDomainDotTrail,\n  partial: true\n};\nconst wwwAutolink = {\n  name: 'wwwAutolink',\n  tokenize: tokenizeWwwAutolink,\n  previous: previousWww\n};\nconst protocolAutolink = {\n  name: 'protocolAutolink',\n  tokenize: tokenizeProtocolAutolink,\n  previous: previousProtocol\n};\nconst emailAutolink = {\n  name: 'emailAutolink',\n  tokenize: tokenizeEmailAutolink,\n  previous: previousEmail\n};\n\n/** @type {ConstructRecord} */\nconst text = {};\n\n/**\n * Create an extension for `micromark` to support GitHub autolink literal\n * syntax.\n *\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions` to enable GFM\n *   autolink literal syntax.\n */\nexport function gfmAutolinkLiteral() {\n  return {\n    text\n  };\n}\n\n/** @type {Code} */\nlet code = 48;\n\n// Add alphanumerics.\nwhile (code < 123) {\n  text[code] = emailAutolink;\n  code++;\n  if (code === 58) code = 65;else if (code === 91) code = 97;\n}\ntext[43] = emailAutolink;\ntext[45] = emailAutolink;\ntext[46] = emailAutolink;\ntext[95] = emailAutolink;\ntext[72] = [emailAutolink, protocolAutolink];\ntext[104] = [emailAutolink, protocolAutolink];\ntext[87] = [emailAutolink, wwwAutolink];\ntext[119] = [emailAutolink, wwwAutolink];\n\n// To do: perform email autolink literals on events, afterwards.\n// That\u2019s where `markdown-rs` and `cmark-gfm` perform it.\n// It should look for `@`, then for atext backwards, and then for a label\n// forwards.\n// To do: `mailto:`, `xmpp:` protocol as prefix.\n\n/**\n * Email autolink literal.\n *\n * ```markdown\n * > | a contact@example.org b\n *       ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailAutolink(effects, ok, nok) {\n  const self = this;\n  /** @type {boolean | undefined} */\n  let dot;\n  /** @type {boolean} */\n  let data;\n  return start;\n\n  /**\n   * Start of email autolink literal.\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    if (!gfmAtext(code) || !previousEmail.call(self, self.previous) || previousUnbalanced(self.events)) {\n      return nok(code);\n    }\n    effects.enter('literalAutolink');\n    effects.enter('literalAutolinkEmail');\n    return atext(code);\n  }\n\n  /**\n   * In email atext.\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function atext(code) {\n    if (gfmAtext(code)) {\n      effects.consume(code);\n      return atext;\n    }\n    if (code === 64) {\n      effects.consume(code);\n      return emailDomain;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In email domain.\n   *\n   * The reference code is a bit overly complex as it handles the `@`, of which\n   * there may be just one.\n   * Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L318>\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *               ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailDomain(code) {\n    // Dot followed by alphanumerical (not `-` or `_`).\n    if (code === 46) {\n      return effects.check(emailDomainDotTrail, emailDomainAfter, emailDomainDot)(code);\n    }\n\n    // Alphanumerical, `-`, and `_`.\n    if (code === 45 || code === 95 || asciiAlphanumeric(code)) {\n      data = true;\n      effects.consume(code);\n      return emailDomain;\n    }\n\n    // To do: `/` if xmpp.\n\n    // Note: normally we\u2019d truncate trailing punctuation from the link.\n    // However, email autolink literals cannot contain any of those markers,\n    // except for `.`, but that can only occur if it isn\u2019t trailing.\n    // So we can ignore truncating!\n    return emailDomainAfter(code);\n  }\n\n  /**\n   * In email domain, on dot that is not a trail.\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *                      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailDomainDot(code) {\n    effects.consume(code);\n    dot = true;\n    return emailDomain;\n  }\n\n  /**\n   * After email domain.\n   *\n   * ```markdown\n   * > | a contact@example.org b\n   *                          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function emailDomainAfter(code) {\n    // Domain must not be empty, must include a dot, and must end in alphabetical.\n    // Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L332>.\n    if (data && dot && asciiAlpha(self.previous)) {\n      effects.exit('literalAutolinkEmail');\n      effects.exit('literalAutolink');\n      return ok(code);\n    }\n    return nok(code);\n  }\n}\n\n/**\n * `www` autolink literal.\n *\n * ```markdown\n * > | a www.example.org b\n *       ^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwAutolink(effects, ok, nok) {\n  const self = this;\n  return wwwStart;\n\n  /**\n   * Start of www autolink literal.\n   *\n   * ```markdown\n   * > | www.example.com/a?b#c\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function wwwStart(code) {\n    if (code !== 87 && code !== 119 || !previousWww.call(self, self.previous) || previousUnbalanced(self.events)) {\n      return nok(code);\n    }\n    effects.enter('literalAutolink');\n    effects.enter('literalAutolinkWww');\n    // Note: we *check*, so we can discard the `www.` we parsed.\n    // If it worked, we consider it as a part of the domain.\n    return effects.check(wwwPrefix, effects.attempt(domain, effects.attempt(path, wwwAfter), nok), nok)(code);\n  }\n\n  /**\n   * After a www autolink literal.\n   *\n   * ```markdown\n   * > | www.example.com/a?b#c\n   *                          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function wwwAfter(code) {\n    effects.exit('literalAutolinkWww');\n    effects.exit('literalAutolink');\n    return ok(code);\n  }\n}\n\n/**\n * Protocol autolink literal.\n *\n * ```markdown\n * > | a https://example.org b\n *       ^^^^^^^^^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeProtocolAutolink(effects, ok, nok) {\n  const self = this;\n  let buffer = '';\n  let seen = false;\n  return protocolStart;\n\n  /**\n   * Start of protocol autolink literal.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function protocolStart(code) {\n    if ((code === 72 || code === 104) && previousProtocol.call(self, self.previous) && !previousUnbalanced(self.events)) {\n      effects.enter('literalAutolink');\n      effects.enter('literalAutolinkHttp');\n      buffer += String.fromCodePoint(code);\n      effects.consume(code);\n      return protocolPrefixInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In protocol.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *     ^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function protocolPrefixInside(code) {\n    // `5` is size of `https`\n    if (asciiAlpha(code) && buffer.length < 5) {\n      // @ts-expect-error: definitely number.\n      buffer += String.fromCodePoint(code);\n      effects.consume(code);\n      return protocolPrefixInside;\n    }\n    if (code === 58) {\n      const protocol = buffer.toLowerCase();\n      if (protocol === 'http' || protocol === 'https') {\n        effects.consume(code);\n        return protocolSlashesInside;\n      }\n    }\n    return nok(code);\n  }\n\n  /**\n   * In slashes.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *           ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function protocolSlashesInside(code) {\n    if (code === 47) {\n      effects.consume(code);\n      if (seen) {\n        return afterProtocol;\n      }\n      seen = true;\n      return protocolSlashesInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After protocol, before domain.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *             ^\n   * ```\n   *\n   * @type {State}\n   */\n  function afterProtocol(code) {\n    // To do: this is different from `markdown-rs`:\n    // https://github.com/wooorm/markdown-rs/blob/b3a921c761309ae00a51fe348d8a43adbc54b518/src/construct/gfm_autolink_literal.rs#L172-L182\n    return code === null || asciiControl(code) || markdownLineEndingOrSpace(code) || unicodeWhitespace(code) || unicodePunctuation(code) ? nok(code) : effects.attempt(domain, effects.attempt(path, protocolAfter), nok)(code);\n  }\n\n  /**\n   * After a protocol autolink literal.\n   *\n   * ```markdown\n   * > | https://example.com/a?b#c\n   *                              ^\n   * ```\n   *\n   * @type {State}\n   */\n  function protocolAfter(code) {\n    effects.exit('literalAutolinkHttp');\n    effects.exit('literalAutolink');\n    return ok(code);\n  }\n}\n\n/**\n * `www` prefix.\n *\n * ```markdown\n * > | a www.example.org b\n *       ^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeWwwPrefix(effects, ok, nok) {\n  let size = 0;\n  return wwwPrefixInside;\n\n  /**\n   * In www prefix.\n   *\n   * ```markdown\n   * > | www.example.com\n   *     ^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function wwwPrefixInside(code) {\n    if ((code === 87 || code === 119) && size < 3) {\n      size++;\n      effects.consume(code);\n      return wwwPrefixInside;\n    }\n    if (code === 46 && size === 3) {\n      effects.consume(code);\n      return wwwPrefixAfter;\n    }\n    return nok(code);\n  }\n\n  /**\n   * After www prefix.\n   *\n   * ```markdown\n   * > | www.example.com\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function wwwPrefixAfter(code) {\n    // If there is *anything*, we can link.\n    return code === null ? nok(code) : ok(code);\n  }\n}\n\n/**\n * Domain.\n *\n * ```markdown\n * > | a https://example.org b\n *               ^^^^^^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDomain(effects, ok, nok) {\n  /** @type {boolean | undefined} */\n  let underscoreInLastSegment;\n  /** @type {boolean | undefined} */\n  let underscoreInLastLastSegment;\n  /** @type {boolean | undefined} */\n  let seen;\n  return domainInside;\n\n  /**\n   * In domain.\n   *\n   * ```markdown\n   * > | https://example.com/a\n   *             ^^^^^^^^^^^\n   * ```\n   *\n   * @type {State}\n   */\n  function domainInside(code) {\n    // Check whether this marker, which is a trailing punctuation\n    // marker, optionally followed by more trailing markers, and then\n    // followed by an end.\n    if (code === 46 || code === 95) {\n      return effects.check(trail, domainAfter, domainAtPunctuation)(code);\n    }\n\n    // GH documents that only alphanumerics (other than `-`, `.`, and `_`) can\n    // occur, which sounds like ASCII only, but they also support `www.\u9EDE\u770B.com`,\n    // so that\u2019s Unicode.\n    // Instead of some new production for Unicode alphanumerics, markdown\n    // already has that for Unicode punctuation and whitespace, so use those.\n    // Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L12>.\n    if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code) || code !== 45 && unicodePunctuation(code)) {\n      return domainAfter(code);\n    }\n    seen = true;\n    effects.consume(code);\n    return domainInside;\n  }\n\n  /**\n   * In domain, at potential trailing punctuation, that was not trailing.\n   *\n   * ```markdown\n   * > | https://example.com\n   *                    ^\n   * ```\n   *\n   * @type {State}\n   */\n  function domainAtPunctuation(code) {\n    // There is an underscore in the last segment of the domain\n    if (code === 95) {\n      underscoreInLastSegment = true;\n    }\n    // Otherwise, it\u2019s a `.`: save the last segment underscore in the\n    // penultimate segment slot.\n    else {\n      underscoreInLastLastSegment = underscoreInLastSegment;\n      underscoreInLastSegment = undefined;\n    }\n    effects.consume(code);\n    return domainInside;\n  }\n\n  /**\n   * After domain.\n   *\n   * ```markdown\n   * > | https://example.com/a\n   *                        ^\n   * ```\n   *\n   * @type {State} */\n  function domainAfter(code) {\n    // Note: that\u2019s GH says a dot is needed, but it\u2019s not true:\n    // <https://github.com/github/cmark-gfm/issues/279>\n    if (underscoreInLastLastSegment || underscoreInLastSegment || !seen) {\n      return nok(code);\n    }\n    return ok(code);\n  }\n}\n\n/**\n * Path.\n *\n * ```markdown\n * > | a https://example.org/stuff b\n *                          ^^^^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePath(effects, ok) {\n  let sizeOpen = 0;\n  let sizeClose = 0;\n  return pathInside;\n\n  /**\n   * In path.\n   *\n   * ```markdown\n   * > | https://example.com/a\n   *                        ^^\n   * ```\n   *\n   * @type {State}\n   */\n  function pathInside(code) {\n    if (code === 40) {\n      sizeOpen++;\n      effects.consume(code);\n      return pathInside;\n    }\n\n    // To do: `markdown-rs` also needs this.\n    // If this is a paren, and there are less closings than openings,\n    // we don\u2019t check for a trail.\n    if (code === 41 && sizeClose < sizeOpen) {\n      return pathAtPunctuation(code);\n    }\n\n    // Check whether this trailing punctuation marker is optionally\n    // followed by more trailing markers, and then followed\n    // by an end.\n    if (code === 33 || code === 34 || code === 38 || code === 39 || code === 41 || code === 42 || code === 44 || code === 46 || code === 58 || code === 59 || code === 60 || code === 63 || code === 93 || code === 95 || code === 126) {\n      return effects.check(trail, ok, pathAtPunctuation)(code);\n    }\n    if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n      return ok(code);\n    }\n    effects.consume(code);\n    return pathInside;\n  }\n\n  /**\n   * In path, at potential trailing punctuation, that was not trailing.\n   *\n   * ```markdown\n   * > | https://example.com/a\"b\n   *                          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function pathAtPunctuation(code) {\n    // Count closing parens.\n    if (code === 41) {\n      sizeClose++;\n    }\n    effects.consume(code);\n    return pathInside;\n  }\n}\n\n/**\n * Trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the entire trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | https://example.com\").\n *                        ^^^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTrail(effects, ok, nok) {\n  return trail;\n\n  /**\n   * In trail of domain or path.\n   *\n   * ```markdown\n   * > | https://example.com\").\n   *                        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function trail(code) {\n    // Regular trailing punctuation.\n    if (code === 33 || code === 34 || code === 39 || code === 41 || code === 42 || code === 44 || code === 46 || code === 58 || code === 59 || code === 63 || code === 95 || code === 126) {\n      effects.consume(code);\n      return trail;\n    }\n\n    // `&` followed by one or more alphabeticals and then a `;`, is\n    // as a whole considered as trailing punctuation.\n    // In all other cases, it is considered as continuation of the URL.\n    if (code === 38) {\n      effects.consume(code);\n      return trailCharacterReferenceStart;\n    }\n\n    // Needed because we allow literals after `[`, as we fix:\n    // <https://github.com/github/cmark-gfm/issues/278>.\n    // Check that it is not followed by `(` or `[`.\n    if (code === 93) {\n      effects.consume(code);\n      return trailBracketAfter;\n    }\n    if (\n    // `<` is an end.\n    code === 60 ||\n    // So is whitespace.\n    code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n      return ok(code);\n    }\n    return nok(code);\n  }\n\n  /**\n   * In trail, after `]`.\n   *\n   * > \uD83D\uDC49 **Note**: this deviates from `cmark-gfm` to fix a bug.\n   * > See end of <https://github.com/github/cmark-gfm/issues/278> for more.\n   *\n   * ```markdown\n   * > | https://example.com](\n   *                         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function trailBracketAfter(code) {\n    // Whitespace or something that could start a resource or reference is the end.\n    // Switch back to trail otherwise.\n    if (code === null || code === 40 || code === 91 || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) {\n      return ok(code);\n    }\n    return trail(code);\n  }\n\n  /**\n   * In character-reference like trail, after `&`.\n   *\n   * ```markdown\n   * > | https://example.com&amp;).\n   *                         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function trailCharacterReferenceStart(code) {\n    // When non-alpha, it\u2019s not a trail.\n    return asciiAlpha(code) ? trailCharacterReferenceInside(code) : nok(code);\n  }\n\n  /**\n   * In character-reference like trail.\n   *\n   * ```markdown\n   * > | https://example.com&amp;).\n   *                         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function trailCharacterReferenceInside(code) {\n    // Switch back to trail if this is well-formed.\n    if (code === 59) {\n      effects.consume(code);\n      return trail;\n    }\n    if (asciiAlpha(code)) {\n      effects.consume(code);\n      return trailCharacterReferenceInside;\n    }\n\n    // It\u2019s not a trail.\n    return nok(code);\n  }\n}\n\n/**\n * Dot in email domain trail.\n *\n * This calls `ok` if this *is* the trail, followed by an end, which means\n * the trail is not part of the link.\n * It calls `nok` if this *is* part of the link.\n *\n * ```markdown\n * > | contact@example.org.\n *                        ^\n * ```\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeEmailDomainDotTrail(effects, ok, nok) {\n  return start;\n\n  /**\n   * Dot.\n   *\n   * ```markdown\n   * > | contact@example.org.\n   *                    ^   ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    // Must be dot.\n    effects.consume(code);\n    return after;\n  }\n\n  /**\n   * After dot.\n   *\n   * ```markdown\n   * > | contact@example.org.\n   *                     ^   ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    // Not a trail if alphanumeric.\n    return asciiAlphanumeric(code) ? nok(code) : ok(code);\n  }\n}\n\n/**\n * See:\n * <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L156>.\n *\n * @type {Previous}\n */\nfunction previousWww(code) {\n  return code === null || code === 40 || code === 42 || code === 95 || code === 91 || code === 93 || code === 126 || markdownLineEndingOrSpace(code);\n}\n\n/**\n * See:\n * <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L214>.\n *\n * @type {Previous}\n */\nfunction previousProtocol(code) {\n  return !asciiAlpha(code);\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Previous}\n */\nfunction previousEmail(code) {\n  // Do not allow a slash \u201Cinside\u201D atext.\n  // The reference code is a bit weird, but that\u2019s what it results in.\n  // Source: <https://github.com/github/cmark-gfm/blob/ef1cfcb/extensions/autolink.c#L307>.\n  // Other than slash, every preceding character is allowed.\n  return !(code === 47 || gfmAtext(code));\n}\n\n/**\n * @param {Code} code\n * @returns {boolean}\n */\nfunction gfmAtext(code) {\n  return code === 43 || code === 45 || code === 46 || code === 95 || asciiAlphanumeric(code);\n}\n\n/**\n * @param {Array<Event>} events\n * @returns {boolean}\n */\nfunction previousUnbalanced(events) {\n  let index = events.length;\n  let result = false;\n  while (index--) {\n    const token = events[index][1];\n    if ((token.type === 'labelLink' || token.type === 'labelImage') && !token._balanced) {\n      result = true;\n      break;\n    }\n\n    // If we\u2019ve seen this token, and it was marked as not having any unbalanced\n    // bracket before it, we can exit.\n    if (token._gfmAutolinkLiteralWalkedInto) {\n      result = false;\n      break;\n    }\n  }\n  if (events.length > 0 && !result) {\n    // Mark the last token as \u201Cwalked into\u201D w/o finding\n    // anything.\n    events[events.length - 1][1]._gfmAutolinkLiteralWalkedInto = true;\n  }\n  return result;\n}", "/**\n * @import {Event, Exiter, Extension, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { blankLine } from 'micromark-core-commonmark';\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEndingOrSpace } from 'micromark-util-character';\nimport { normalizeIdentifier } from 'micromark-util-normalize-identifier';\nconst indent = {\n  tokenize: tokenizeIndent,\n  partial: true\n};\n\n// To do: micromark should support a `_hiddenGfmFootnoteSupport`, which only\n// affects label start (image).\n// That will let us drop `tokenizePotentialGfmFootnote*`.\n// It currently has a `_hiddenFootnoteSupport`, which affects that and more.\n// That can be removed when `micromark-extension-footnote` is archived.\n\n/**\n * Create an extension for `micromark` to enable GFM footnote syntax.\n *\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions` to\n *   enable GFM footnote syntax.\n */\nexport function gfmFootnote() {\n  /** @type {Extension} */\n  return {\n    document: {\n      [91]: {\n        name: 'gfmFootnoteDefinition',\n        tokenize: tokenizeDefinitionStart,\n        continuation: {\n          tokenize: tokenizeDefinitionContinuation\n        },\n        exit: gfmFootnoteDefinitionEnd\n      }\n    },\n    text: {\n      [91]: {\n        name: 'gfmFootnoteCall',\n        tokenize: tokenizeGfmFootnoteCall\n      },\n      [93]: {\n        name: 'gfmPotentialFootnoteCall',\n        add: 'after',\n        tokenize: tokenizePotentialGfmFootnoteCall,\n        resolveTo: resolveToPotentialGfmFootnoteCall\n      }\n    }\n  };\n}\n\n// To do: remove after micromark update.\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizePotentialGfmFootnoteCall(effects, ok, nok) {\n  const self = this;\n  let index = self.events.length;\n  const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n  /** @type {Token} */\n  let labelStart;\n\n  // Find an opening.\n  while (index--) {\n    const token = self.events[index][1];\n    if (token.type === \"labelImage\") {\n      labelStart = token;\n      break;\n    }\n\n    // Exit if we\u2019ve walked far enough.\n    if (token.type === 'gfmFootnoteCall' || token.type === \"labelLink\" || token.type === \"label\" || token.type === \"image\" || token.type === \"link\") {\n      break;\n    }\n  }\n  return start;\n\n  /**\n   * @type {State}\n   */\n  function start(code) {\n    if (!labelStart || !labelStart._balanced) {\n      return nok(code);\n    }\n    const id = normalizeIdentifier(self.sliceSerialize({\n      start: labelStart.end,\n      end: self.now()\n    }));\n    if (id.codePointAt(0) !== 94 || !defined.includes(id.slice(1))) {\n      return nok(code);\n    }\n    effects.enter('gfmFootnoteCallLabelMarker');\n    effects.consume(code);\n    effects.exit('gfmFootnoteCallLabelMarker');\n    return ok(code);\n  }\n}\n\n// To do: remove after micromark update.\n/** @type {Resolver} */\nfunction resolveToPotentialGfmFootnoteCall(events, context) {\n  let index = events.length;\n  /** @type {Token | undefined} */\n  let labelStart;\n\n  // Find an opening.\n  while (index--) {\n    if (events[index][1].type === \"labelImage\" && events[index][0] === 'enter') {\n      labelStart = events[index][1];\n      break;\n    }\n  }\n  // Change the `labelImageMarker` to a `data`.\n  events[index + 1][1].type = \"data\";\n  events[index + 3][1].type = 'gfmFootnoteCallLabelMarker';\n\n  // The whole (without `!`):\n  /** @type {Token} */\n  const call = {\n    type: 'gfmFootnoteCall',\n    start: Object.assign({}, events[index + 3][1].start),\n    end: Object.assign({}, events[events.length - 1][1].end)\n  };\n  // The `^` marker\n  /** @type {Token} */\n  const marker = {\n    type: 'gfmFootnoteCallMarker',\n    start: Object.assign({}, events[index + 3][1].end),\n    end: Object.assign({}, events[index + 3][1].end)\n  };\n  // Increment the end 1 character.\n  marker.end.column++;\n  marker.end.offset++;\n  marker.end._bufferIndex++;\n  /** @type {Token} */\n  const string = {\n    type: 'gfmFootnoteCallString',\n    start: Object.assign({}, marker.end),\n    end: Object.assign({}, events[events.length - 1][1].start)\n  };\n  /** @type {Token} */\n  const chunk = {\n    type: \"chunkString\",\n    contentType: 'string',\n    start: Object.assign({}, string.start),\n    end: Object.assign({}, string.end)\n  };\n\n  /** @type {Array<Event>} */\n  const replacement = [\n  // Take the `labelImageMarker` (now `data`, the `!`)\n  events[index + 1], events[index + 2], ['enter', call, context],\n  // The `[`\n  events[index + 3], events[index + 4],\n  // The `^`.\n  ['enter', marker, context], ['exit', marker, context],\n  // Everything in between.\n  ['enter', string, context], ['enter', chunk, context], ['exit', chunk, context], ['exit', string, context],\n  // The ending (`]`, properly parsed and labelled).\n  events[events.length - 2], events[events.length - 1], ['exit', call, context]];\n  events.splice(index, events.length - index + 1, ...replacement);\n  return events;\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeGfmFootnoteCall(effects, ok, nok) {\n  const self = this;\n  const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n  let size = 0;\n  /** @type {boolean} */\n  let data;\n\n  // Note: the implementation of `markdown-rs` is different, because it houses\n  // core *and* extensions in one project.\n  // Therefore, it can include footnote logic inside `label-end`.\n  // We can\u2019t do that, but luckily, we can parse footnotes in a simpler way than\n  // needed for labels.\n  return start;\n\n  /**\n   * Start of footnote label.\n   *\n   * ```markdown\n   * > | a [^b] c\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter('gfmFootnoteCall');\n    effects.enter('gfmFootnoteCallLabelMarker');\n    effects.consume(code);\n    effects.exit('gfmFootnoteCallLabelMarker');\n    return callStart;\n  }\n\n  /**\n   * After `[`, at `^`.\n   *\n   * ```markdown\n   * > | a [^b] c\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function callStart(code) {\n    if (code !== 94) return nok(code);\n    effects.enter('gfmFootnoteCallMarker');\n    effects.consume(code);\n    effects.exit('gfmFootnoteCallMarker');\n    effects.enter('gfmFootnoteCallString');\n    effects.enter('chunkString').contentType = 'string';\n    return callData;\n  }\n\n  /**\n   * In label.\n   *\n   * ```markdown\n   * > | a [^b] c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function callData(code) {\n    if (\n    // Too long.\n    size > 999 ||\n    // Closing brace with nothing.\n    code === 93 && !data ||\n    // Space or tab is not supported by GFM for some reason.\n    // `\\n` and `[` not being supported makes sense.\n    code === null || code === 91 || markdownLineEndingOrSpace(code)) {\n      return nok(code);\n    }\n    if (code === 93) {\n      effects.exit('chunkString');\n      const token = effects.exit('gfmFootnoteCallString');\n      if (!defined.includes(normalizeIdentifier(self.sliceSerialize(token)))) {\n        return nok(code);\n      }\n      effects.enter('gfmFootnoteCallLabelMarker');\n      effects.consume(code);\n      effects.exit('gfmFootnoteCallLabelMarker');\n      effects.exit('gfmFootnoteCall');\n      return ok;\n    }\n    if (!markdownLineEndingOrSpace(code)) {\n      data = true;\n    }\n    size++;\n    effects.consume(code);\n    return code === 92 ? callEscape : callData;\n  }\n\n  /**\n   * On character after escape.\n   *\n   * ```markdown\n   * > | a [^b\\c] d\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function callEscape(code) {\n    if (code === 91 || code === 92 || code === 93) {\n      effects.consume(code);\n      size++;\n      return callData;\n    }\n    return callData(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionStart(effects, ok, nok) {\n  const self = this;\n  const defined = self.parser.gfmFootnotes || (self.parser.gfmFootnotes = []);\n  /** @type {string} */\n  let identifier;\n  let size = 0;\n  /** @type {boolean | undefined} */\n  let data;\n  return start;\n\n  /**\n   * Start of GFM footnote definition.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function start(code) {\n    effects.enter('gfmFootnoteDefinition')._container = true;\n    effects.enter('gfmFootnoteDefinitionLabel');\n    effects.enter('gfmFootnoteDefinitionLabelMarker');\n    effects.consume(code);\n    effects.exit('gfmFootnoteDefinitionLabelMarker');\n    return labelAtMarker;\n  }\n\n  /**\n   * In label, at caret.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelAtMarker(code) {\n    if (code === 94) {\n      effects.enter('gfmFootnoteDefinitionMarker');\n      effects.consume(code);\n      effects.exit('gfmFootnoteDefinitionMarker');\n      effects.enter('gfmFootnoteDefinitionLabelString');\n      effects.enter('chunkString').contentType = 'string';\n      return labelInside;\n    }\n    return nok(code);\n  }\n\n  /**\n   * In label.\n   *\n   * > \uD83D\uDC49 **Note**: `cmark-gfm` prevents whitespace from occurring in footnote\n   * > definition labels.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelInside(code) {\n    if (\n    // Too long.\n    size > 999 ||\n    // Closing brace with nothing.\n    code === 93 && !data ||\n    // Space or tab is not supported by GFM for some reason.\n    // `\\n` and `[` not being supported makes sense.\n    code === null || code === 91 || markdownLineEndingOrSpace(code)) {\n      return nok(code);\n    }\n    if (code === 93) {\n      effects.exit('chunkString');\n      const token = effects.exit('gfmFootnoteDefinitionLabelString');\n      identifier = normalizeIdentifier(self.sliceSerialize(token));\n      effects.enter('gfmFootnoteDefinitionLabelMarker');\n      effects.consume(code);\n      effects.exit('gfmFootnoteDefinitionLabelMarker');\n      effects.exit('gfmFootnoteDefinitionLabel');\n      return labelAfter;\n    }\n    if (!markdownLineEndingOrSpace(code)) {\n      data = true;\n    }\n    size++;\n    effects.consume(code);\n    return code === 92 ? labelEscape : labelInside;\n  }\n\n  /**\n   * After `\\`, at a special character.\n   *\n   * > \uD83D\uDC49 **Note**: `cmark-gfm` currently does not support escaped brackets:\n   * > <https://github.com/github/cmark-gfm/issues/240>\n   *\n   * ```markdown\n   * > | [^a\\*b]: c\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelEscape(code) {\n    if (code === 91 || code === 92 || code === 93) {\n      effects.consume(code);\n      size++;\n      return labelInside;\n    }\n    return labelInside(code);\n  }\n\n  /**\n   * After definition label.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function labelAfter(code) {\n    if (code === 58) {\n      effects.enter('definitionMarker');\n      effects.consume(code);\n      effects.exit('definitionMarker');\n      if (!defined.includes(identifier)) {\n        defined.push(identifier);\n      }\n\n      // Any whitespace after the marker is eaten, forming indented code\n      // is not possible.\n      // No space is also fine, just like a block quote marker.\n      return factorySpace(effects, whitespaceAfter, 'gfmFootnoteDefinitionWhitespace');\n    }\n    return nok(code);\n  }\n\n  /**\n   * After definition prefix.\n   *\n   * ```markdown\n   * > | [^a]: b\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function whitespaceAfter(code) {\n    // `markdown-rs` has a wrapping token for the prefix that is closed here.\n    return ok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeDefinitionContinuation(effects, ok, nok) {\n  /// Start of footnote definition continuation.\n  ///\n  /// ```markdown\n  ///   | [^a]: b\n  /// > |     c\n  ///     ^\n  /// ```\n  //\n  // Either a blank line, which is okay, or an indented thing.\n  return effects.check(blankLine, ok, effects.attempt(indent, ok, nok));\n}\n\n/** @type {Exiter} */\nfunction gfmFootnoteDefinitionEnd(effects) {\n  effects.exit('gfmFootnoteDefinition');\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeIndent(effects, ok, nok) {\n  const self = this;\n  return factorySpace(effects, afterPrefix, 'gfmFootnoteDefinitionIndent', 4 + 1);\n\n  /**\n   * @type {State}\n   */\n  function afterPrefix(code) {\n    const tail = self.events[self.events.length - 1];\n    return tail && tail[1].type === 'gfmFootnoteDefinitionIndent' && tail[2].sliceSerialize(tail[1], true).length === 4 ? ok(code) : nok(code);\n  }\n}", "/**\n * @import {Options} from 'micromark-extension-gfm-strikethrough'\n * @import {Event, Extension, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { splice } from 'micromark-util-chunked';\nimport { classifyCharacter } from 'micromark-util-classify-character';\nimport { resolveAll } from 'micromark-util-resolve-all';\n/**\n * Create an extension for `micromark` to enable GFM strikethrough syntax.\n *\n * @param {Options | null | undefined} [options={}]\n *   Configuration.\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions`, to\n *   enable GFM strikethrough syntax.\n */\nexport function gfmStrikethrough(options) {\n  const options_ = options || {};\n  let single = options_.singleTilde;\n  const tokenizer = {\n    name: 'strikethrough',\n    tokenize: tokenizeStrikethrough,\n    resolveAll: resolveAllStrikethrough\n  };\n  if (single === null || single === undefined) {\n    single = true;\n  }\n  return {\n    text: {\n      [126]: tokenizer\n    },\n    insideSpan: {\n      null: [tokenizer]\n    },\n    attentionMarkers: {\n      null: [126]\n    }\n  };\n\n  /**\n   * Take events and resolve strikethrough.\n   *\n   * @type {Resolver}\n   */\n  function resolveAllStrikethrough(events, context) {\n    let index = -1;\n\n    // Walk through all events.\n    while (++index < events.length) {\n      // Find a token that can close.\n      if (events[index][0] === 'enter' && events[index][1].type === 'strikethroughSequenceTemporary' && events[index][1]._close) {\n        let open = index;\n\n        // Now walk back to find an opener.\n        while (open--) {\n          // Find a token that can open the closer.\n          if (events[open][0] === 'exit' && events[open][1].type === 'strikethroughSequenceTemporary' && events[open][1]._open &&\n          // If the sizes are the same:\n          events[index][1].end.offset - events[index][1].start.offset === events[open][1].end.offset - events[open][1].start.offset) {\n            events[index][1].type = 'strikethroughSequence';\n            events[open][1].type = 'strikethroughSequence';\n\n            /** @type {Token} */\n            const strikethrough = {\n              type: 'strikethrough',\n              start: Object.assign({}, events[open][1].start),\n              end: Object.assign({}, events[index][1].end)\n            };\n\n            /** @type {Token} */\n            const text = {\n              type: 'strikethroughText',\n              start: Object.assign({}, events[open][1].end),\n              end: Object.assign({}, events[index][1].start)\n            };\n\n            // Opening.\n            /** @type {Array<Event>} */\n            const nextEvents = [['enter', strikethrough, context], ['enter', events[open][1], context], ['exit', events[open][1], context], ['enter', text, context]];\n            const insideSpan = context.parser.constructs.insideSpan.null;\n            if (insideSpan) {\n              // Between.\n              splice(nextEvents, nextEvents.length, 0, resolveAll(insideSpan, events.slice(open + 1, index), context));\n            }\n\n            // Closing.\n            splice(nextEvents, nextEvents.length, 0, [['exit', text, context], ['enter', events[index][1], context], ['exit', events[index][1], context], ['exit', strikethrough, context]]);\n            splice(events, open - 1, index - open + 3, nextEvents);\n            index = open + nextEvents.length - 2;\n            break;\n          }\n        }\n      }\n    }\n    index = -1;\n    while (++index < events.length) {\n      if (events[index][1].type === 'strikethroughSequenceTemporary') {\n        events[index][1].type = \"data\";\n      }\n    }\n    return events;\n  }\n\n  /**\n   * @this {TokenizeContext}\n   * @type {Tokenizer}\n   */\n  function tokenizeStrikethrough(effects, ok, nok) {\n    const previous = this.previous;\n    const events = this.events;\n    let size = 0;\n    return start;\n\n    /** @type {State} */\n    function start(code) {\n      if (previous === 126 && events[events.length - 1][1].type !== \"characterEscape\") {\n        return nok(code);\n      }\n      effects.enter('strikethroughSequenceTemporary');\n      return more(code);\n    }\n\n    /** @type {State} */\n    function more(code) {\n      const before = classifyCharacter(previous);\n      if (code === 126) {\n        // If this is the third marker, exit.\n        if (size > 1) return nok(code);\n        effects.consume(code);\n        size++;\n        return more;\n      }\n      if (size < 2 && !single) return nok(code);\n      const token = effects.exit('strikethroughSequenceTemporary');\n      const after = classifyCharacter(code);\n      token._open = !after || after === 2 && Boolean(before);\n      token._close = !before || before === 2 && Boolean(after);\n      return ok(code);\n    }\n  }\n}", "/**\n * @import {Event} from 'micromark-util-types'\n */\n\n// Port of `edit_map.rs` from `markdown-rs`.\n// This should move to `markdown-js` later.\n\n// Deal with several changes in events, batching them together.\n//\n// Preferably, changes should be kept to a minimum.\n// Sometimes, it\u2019s needed to change the list of events, because parsing can be\n// messy, and it helps to expose a cleaner interface of events to the compiler\n// and other users.\n// It can also help to merge many adjacent similar events.\n// And, in other cases, it\u2019s needed to parse subcontent: pass some events\n// through another tokenizer and inject the result.\n\n/**\n * @typedef {[number, number, Array<Event>]} Change\n * @typedef {[number, number, number]} Jump\n */\n\n/**\n * Tracks a bunch of edits.\n */\nexport class EditMap {\n  /**\n   * Create a new edit map.\n   */\n  constructor() {\n    /**\n     * Record of changes.\n     *\n     * @type {Array<Change>}\n     */\n    this.map = [];\n\n    /**\n     * Changes by index, so `add` does not scan `map` (quadratic on\n     * table-heavy documents).\n     *\n     * @type {Map<number, Change>}\n     */\n    this.index = new Map();\n  }\n\n  /**\n   * Create an edit: a remove and/or add at a certain place.\n   *\n   * @param {number} index\n   *   Index at which to apply the edit.\n   * @param {number} remove\n   *   Count of items to remove at the index.\n   * @param {Array<Event>} add\n   *   Items to add at the index.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  add(index, remove, add) {\n    addImplementation(this, index, remove, add);\n  }\n\n  // To do: add this when moving to `micromark`.\n  // /**\n  //  * Create an edit: but insert `add` before existing additions.\n  //  *\n  //  * @param {number} index\n  //  * @param {number} remove\n  //  * @param {Array<Event>} add\n  //  * @returns {undefined}\n  //  */\n  // addBefore(index, remove, add) {\n  //   addImplementation(this, index, remove, add, true)\n  // }\n\n  /**\n   * Done, change the events.\n   *\n   * @param {Array<Event>} events\n   *   List of events to apply the edits to.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  consume(events) {\n    this.map.sort(function (a, b) {\n      return a[0] - b[0];\n    });\n\n    /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n    if (this.map.length === 0) {\n      return;\n    }\n\n    // To do: if links are added in events, like they are in `markdown-rs`,\n    // this is needed.\n    // // Calculate jumps: where items in the current list move to.\n    // /** @type {Array<Jump>} */\n    // const jumps = []\n    // let index = 0\n    // let addAcc = 0\n    // let removeAcc = 0\n    // while (index < this.map.length) {\n    //   const [at, remove, add] = this.map[index]\n    //   removeAcc += remove\n    //   addAcc += add.length\n    //   jumps.push([at, removeAcc, addAcc])\n    //   index += 1\n    // }\n    //\n    // . shiftLinks(events, jumps)\n\n    let index = this.map.length;\n    /** @type {Array<Array<Event>>} */\n    const vecs = [];\n    while (index > 0) {\n      index -= 1;\n      vecs.push(events.slice(this.map[index][0] + this.map[index][1]), this.map[index][2]);\n\n      // Truncate rest.\n      events.length = this.map[index][0];\n    }\n    vecs.push(events.slice());\n    events.length = 0;\n    let slice = vecs.pop();\n    while (slice) {\n      for (const element of slice) {\n        events.push(element);\n      }\n      slice = vecs.pop();\n    }\n\n    // Truncate everything.\n    this.map.length = 0;\n    this.index.clear();\n  }\n}\n\n/**\n * Create an edit.\n *\n * @param {EditMap} editMap\n *   Edit map to apply to.\n * @param {number} at\n *   Index at which to apply the edit.\n * @param {number} remove\n *   Count of items to remove at the index.\n * @param {Array<Event>} add\n *   Items to add at the index.\n * @returns {undefined}\n *   Nothing.\n */\nfunction addImplementation(editMap, at, remove, add) {\n  /* c8 ignore next 3 -- `resolve` is never called without tables, so without edits. */\n  if (remove === 0 && add.length === 0) {\n    return;\n  }\n  const existing = editMap.index.get(at);\n  if (existing) {\n    existing[1] += remove;\n\n    // To do: before not used by tables, use when moving to micromark.\n    // if (before) {\n    //   add.push(...existing[2])\n    //   existing[2] = add\n    // } else {\n    existing[2].push(...add);\n    // }\n\n    return;\n  }\n\n  /** @type {Change} */\n  const change = [at, remove, add];\n  editMap.map.push(change);\n  editMap.index.set(at, change);\n}\n\n// /**\n//  * Shift `previous` and `next` links according to `jumps`.\n//  *\n//  * This fixes links in case there are events removed or added between them.\n//  *\n//  * @param {Array<Event>} events\n//  * @param {Array<Jump>} jumps\n//  */\n// function shiftLinks(events, jumps) {\n//   let jumpIndex = 0\n//   let index = 0\n//   let add = 0\n//   let rm = 0\n\n//   while (index < events.length) {\n//     const rmCurr = rm\n\n//     while (jumpIndex < jumps.length && jumps[jumpIndex][0] <= index) {\n//       add = jumps[jumpIndex][2]\n//       rm = jumps[jumpIndex][1]\n//       jumpIndex += 1\n//     }\n\n//     // Ignore items that will be removed.\n//     if (rm > rmCurr) {\n//       index += rm - rmCurr\n//     } else {\n//       // ?\n//       // if let Some(link) = &events[index].link {\n//       //     if let Some(next) = link.next {\n//       //         events[next].link.as_mut().unwrap().previous = Some(index + add - rm);\n//       //         while jumpIndex < jumps.len() && jumps[jumpIndex].0 <= next {\n//       //             add = jumps[jumpIndex].2;\n//       //             rm = jumps[jumpIndex].1;\n//       //             jumpIndex += 1;\n//       //         }\n//       //         events[index].link.as_mut().unwrap().next = Some(next + add - rm);\n//       //         index = next;\n//       //         continue;\n//       //     }\n//       // }\n//       index += 1\n//     }\n//   }\n// }", "/**\n * @import {Event} from 'micromark-util-types'\n */\n\n/**\n * @typedef {'center' | 'left' | 'none' | 'right'} Align\n */\n\n/**\n * Figure out the alignment of a GFM table.\n *\n * @param {Readonly<Array<Event>>} events\n *   List of events.\n * @param {number} index\n *   Table enter event.\n * @returns {Array<Align>}\n *   List of aligns.\n */\nexport function gfmTableAlign(events, index) {\n  let inDelimiterRow = false;\n  /** @type {Array<Align>} */\n  const align = [];\n  while (index < events.length) {\n    const event = events[index];\n    if (inDelimiterRow) {\n      if (event[0] === 'enter') {\n        // Start of alignment value: set a new column.\n        // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n        if (event[1].type === 'tableContent') {\n          align.push(events[index + 1][1].type === 'tableDelimiterMarker' ? 'left' : 'none');\n        }\n      }\n      // Exits:\n      // End of alignment value: change the column.\n      // To do: `markdown-rs` uses `tableDelimiterCellValue`.\n      else if (event[1].type === 'tableContent') {\n        if (events[index - 1][1].type === 'tableDelimiterMarker') {\n          const alignIndex = align.length - 1;\n          align[alignIndex] = align[alignIndex] === 'left' ? 'center' : 'right';\n        }\n      }\n      // Done!\n      else if (event[1].type === 'tableDelimiterRow') {\n        break;\n      }\n    } else if (event[0] === 'enter' && event[1].type === 'tableDelimiterRow') {\n      inDelimiterRow = true;\n    }\n    index += 1;\n  }\n  return align;\n}", "/**\n * @import {Event, Extension, Point, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\n/**\n * @typedef {[number, number, number, number]} Range\n *   Cell info.\n *\n * @typedef {0 | 1 | 2 | 3} RowKind\n *   Where we are: `1` for head row, `2` for delimiter row, `3` for body row.\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownLineEndingOrSpace, markdownSpace } from 'micromark-util-character';\nimport { EditMap } from './edit-map.js';\nimport { gfmTableAlign } from './infer.js';\n\n/**\n * Create an HTML extension for `micromark` to support GitHub tables syntax.\n *\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions` to enable GFM\n *   table syntax.\n */\nexport function gfmTable() {\n  return {\n    flow: {\n      null: {\n        name: 'table',\n        tokenize: tokenizeTable,\n        resolveAll: resolveTable\n      }\n    }\n  };\n}\n\n/**\n * Tokenizer for GFM tables.\n *\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTable(effects, ok, nok) {\n  const self = this;\n  let size = 0;\n  let sizeB = 0;\n  /** @type {boolean | undefined} */\n  let seen;\n  return start;\n\n  /**\n   * Start of a GFM table.\n   *\n   * If there is a valid table row or table head before, then we try to parse\n   * another row.\n   * Otherwise, we try to parse a head.\n   *\n   * ```markdown\n   * > | | a |\n   *     ^\n   *   | | - |\n   * > | | b |\n   *     ^\n   * ```\n   * @type {State}\n   */\n  function start(code) {\n    let index = self.events.length - 1;\n    while (index > -1) {\n      const {\n        type\n      } = self.events[index][1];\n      if (type === \"lineEnding\" ||\n      // Note: markdown-rs uses `whitespace` instead of `linePrefix`\n      type === \"linePrefix\") {\n        index--;\n      } else {\n        break;\n      }\n    }\n    const tail = index > -1 ? self.events[index][1].type : null;\n    const next = tail === 'tableHead' || tail === 'tableRow' ? bodyRowStart : headRowBefore;\n\n    // Don\u2019t allow lazy body rows.\n    if (next === bodyRowStart && self.parser.lazy[self.now().line]) {\n      return nok(code);\n    }\n    return next(code);\n  }\n\n  /**\n   * Before table head row.\n   *\n   * ```markdown\n   * > | | a |\n   *     ^\n   *   | | - |\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowBefore(code) {\n    effects.enter('tableHead');\n    effects.enter('tableRow');\n    return headRowStart(code);\n  }\n\n  /**\n   * Before table head row, after whitespace.\n   *\n   * ```markdown\n   * > | | a |\n   *     ^\n   *   | | - |\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowStart(code) {\n    if (code === 124) {\n      return headRowBreak(code);\n    }\n\n    // To do: micromark-js should let us parse our own whitespace in extensions,\n    // like `markdown-rs`:\n    //\n    // ```js\n    // // 4+ spaces.\n    // if (markdownSpace(code)) {\n    //   return nok(code)\n    // }\n    // ```\n\n    seen = true;\n    // Count the first character, that isn\u2019t a pipe, double.\n    sizeB += 1;\n    return headRowBreak(code);\n  }\n\n  /**\n   * At break in table head row.\n   *\n   * ```markdown\n   * > | | a |\n   *     ^\n   *       ^\n   *         ^\n   *   | | - |\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowBreak(code) {\n    if (code === null) {\n      // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don\u2018t.\n      return nok(code);\n    }\n    if (markdownLineEnding(code)) {\n      // If anything other than one pipe (ignoring whitespace) was used, it\u2019s fine.\n      if (sizeB > 1) {\n        sizeB = 0;\n        // To do: check if this works.\n        // Feel free to interrupt:\n        self.interrupt = true;\n        effects.exit('tableRow');\n        effects.enter(\"lineEnding\");\n        effects.consume(code);\n        effects.exit(\"lineEnding\");\n        return headDelimiterStart;\n      }\n\n      // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don\u2018t.\n      return nok(code);\n    }\n    if (markdownSpace(code)) {\n      // To do: check if this is fine.\n      // effects.attempt(State::Next(StateName::GfmTableHeadRowBreak), State::Nok)\n      // State::Retry(space_or_tab(tokenizer))\n      return factorySpace(effects, headRowBreak, \"whitespace\")(code);\n    }\n    sizeB += 1;\n    if (seen) {\n      seen = false;\n      // Header cell count.\n      size += 1;\n    }\n    if (code === 124) {\n      effects.enter('tableCellDivider');\n      effects.consume(code);\n      effects.exit('tableCellDivider');\n      // Whether a delimiter was seen.\n      seen = true;\n      return headRowBreak;\n    }\n\n    // Anything else is cell data.\n    effects.enter(\"data\");\n    return headRowData(code);\n  }\n\n  /**\n   * In table head row data.\n   *\n   * ```markdown\n   * > | | a |\n   *       ^\n   *   | | - |\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowData(code) {\n    if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n      effects.exit(\"data\");\n      return headRowBreak(code);\n    }\n    effects.consume(code);\n    return code === 92 ? headRowEscape : headRowData;\n  }\n\n  /**\n   * In table head row escape.\n   *\n   * ```markdown\n   * > | | a\\-b |\n   *         ^\n   *   | | ---- |\n   *   | | c    |\n   * ```\n   *\n   * @type {State}\n   */\n  function headRowEscape(code) {\n    if (code === 92 || code === 124) {\n      effects.consume(code);\n      return headRowData;\n    }\n    return headRowData(code);\n  }\n\n  /**\n   * Before delimiter row.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *     ^\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterStart(code) {\n    // Reset `interrupt`.\n    self.interrupt = false;\n\n    // Note: in `markdown-rs`, we need to handle piercing here too.\n    if (self.parser.lazy[self.now().line]) {\n      return nok(code);\n    }\n    effects.enter('tableDelimiterRow');\n    // Track if we\u2019ve seen a `:` or `|`.\n    seen = false;\n    if (markdownSpace(code)) {\n      return factorySpace(effects, headDelimiterBefore, \"linePrefix\", self.parser.constructs.disable.null.includes('codeIndented') ? undefined : 4)(code);\n    }\n    return headDelimiterBefore(code);\n  }\n\n  /**\n   * Before delimiter row, after optional whitespace.\n   *\n   * Reused when a `|` is found later, to parse another cell.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *     ^\n   *   | | b |\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterBefore(code) {\n    if (code === 45 || code === 58) {\n      return headDelimiterValueBefore(code);\n    }\n    if (code === 124) {\n      seen = true;\n      // If we start with a pipe, we open a cell marker.\n      effects.enter('tableCellDivider');\n      effects.consume(code);\n      effects.exit('tableCellDivider');\n      return headDelimiterCellBefore;\n    }\n\n    // More whitespace / empty row not allowed at start.\n    return headDelimiterNok(code);\n  }\n\n  /**\n   * After `|`, before delimiter cell.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *      ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterCellBefore(code) {\n    if (markdownSpace(code)) {\n      return factorySpace(effects, headDelimiterValueBefore, \"whitespace\")(code);\n    }\n    return headDelimiterValueBefore(code);\n  }\n\n  /**\n   * Before delimiter cell value.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterValueBefore(code) {\n    // Align: left.\n    if (code === 58) {\n      sizeB += 1;\n      seen = true;\n      effects.enter('tableDelimiterMarker');\n      effects.consume(code);\n      effects.exit('tableDelimiterMarker');\n      return headDelimiterLeftAlignmentAfter;\n    }\n\n    // Align: none.\n    if (code === 45) {\n      sizeB += 1;\n      // To do: seems weird that this *isn\u2019t* left aligned, but that state is used?\n      return headDelimiterLeftAlignmentAfter(code);\n    }\n    if (code === null || markdownLineEnding(code)) {\n      return headDelimiterCellAfter(code);\n    }\n    return headDelimiterNok(code);\n  }\n\n  /**\n   * After delimiter cell left alignment marker.\n   *\n   * ```markdown\n   *   | | a  |\n   * > | | :- |\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterLeftAlignmentAfter(code) {\n    if (code === 45) {\n      effects.enter('tableDelimiterFiller');\n      return headDelimiterFiller(code);\n    }\n\n    // Anything else is not ok after the left-align colon.\n    return headDelimiterNok(code);\n  }\n\n  /**\n   * In delimiter cell filler.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | - |\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterFiller(code) {\n    if (code === 45) {\n      effects.consume(code);\n      return headDelimiterFiller;\n    }\n\n    // Align is `center` if it was `left`, `right` otherwise.\n    if (code === 58) {\n      seen = true;\n      effects.exit('tableDelimiterFiller');\n      effects.enter('tableDelimiterMarker');\n      effects.consume(code);\n      effects.exit('tableDelimiterMarker');\n      return headDelimiterRightAlignmentAfter;\n    }\n    effects.exit('tableDelimiterFiller');\n    return headDelimiterRightAlignmentAfter(code);\n  }\n\n  /**\n   * After delimiter cell right alignment marker.\n   *\n   * ```markdown\n   *   | |  a |\n   * > | | -: |\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterRightAlignmentAfter(code) {\n    if (markdownSpace(code)) {\n      return factorySpace(effects, headDelimiterCellAfter, \"whitespace\")(code);\n    }\n    return headDelimiterCellAfter(code);\n  }\n\n  /**\n   * After delimiter cell.\n   *\n   * ```markdown\n   *   | |  a |\n   * > | | -: |\n   *          ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterCellAfter(code) {\n    if (code === 124) {\n      return headDelimiterBefore(code);\n    }\n    if (code === null || markdownLineEnding(code)) {\n      // Exit when:\n      // * there was no `:` or `|` at all (it\u2019s a thematic break or setext\n      //   underline instead)\n      // * the header cell count is not the delimiter cell count\n      if (!seen || size !== sizeB) {\n        return headDelimiterNok(code);\n      }\n\n      // Note: in markdown-rs`, a reset is needed here.\n      effects.exit('tableDelimiterRow');\n      effects.exit('tableHead');\n      // To do: in `markdown-rs`, resolvers need to be registered manually.\n      // effects.register_resolver(ResolveName::GfmTable)\n      return ok(code);\n    }\n    return headDelimiterNok(code);\n  }\n\n  /**\n   * In delimiter row, at a disallowed byte.\n   *\n   * ```markdown\n   *   | | a |\n   * > | | x |\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function headDelimiterNok(code) {\n    // Note: in `markdown-rs`, we need to reset, in `micromark-js` we don\u2018t.\n    return nok(code);\n  }\n\n  /**\n   * Before table body row.\n   *\n   * ```markdown\n   *   | | a |\n   *   | | - |\n   * > | | b |\n   *     ^\n   * ```\n   *\n   * @type {State}\n   */\n  function bodyRowStart(code) {\n    // Note: in `markdown-rs` we need to manually take care of a prefix,\n    // but in `micromark-js` that is done for us, so if we\u2019re here, we\u2019re\n    // never at whitespace.\n    effects.enter('tableRow');\n    return bodyRowBreak(code);\n  }\n\n  /**\n   * At break in table body row.\n   *\n   * ```markdown\n   *   | | a |\n   *   | | - |\n   * > | | b |\n   *     ^\n   *       ^\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function bodyRowBreak(code) {\n    if (code === 124) {\n      effects.enter('tableCellDivider');\n      effects.consume(code);\n      effects.exit('tableCellDivider');\n      return bodyRowBreak;\n    }\n    if (code === null || markdownLineEnding(code)) {\n      effects.exit('tableRow');\n      return ok(code);\n    }\n    if (markdownSpace(code)) {\n      return factorySpace(effects, bodyRowBreak, \"whitespace\")(code);\n    }\n\n    // Anything else is cell content.\n    effects.enter(\"data\");\n    return bodyRowData(code);\n  }\n\n  /**\n   * In table body row data.\n   *\n   * ```markdown\n   *   | | a |\n   *   | | - |\n   * > | | b |\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function bodyRowData(code) {\n    if (code === null || code === 124 || markdownLineEndingOrSpace(code)) {\n      effects.exit(\"data\");\n      return bodyRowBreak(code);\n    }\n    effects.consume(code);\n    return code === 92 ? bodyRowEscape : bodyRowData;\n  }\n\n  /**\n   * In table body row escape.\n   *\n   * ```markdown\n   *   | | a    |\n   *   | | ---- |\n   * > | | b\\-c |\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function bodyRowEscape(code) {\n    if (code === 92 || code === 124) {\n      effects.consume(code);\n      return bodyRowData;\n    }\n    return bodyRowData(code);\n  }\n}\n\n/** @type {Resolver} */\n\nfunction resolveTable(events, context) {\n  let index = -1;\n  let inFirstCellAwaitingPipe = true;\n  /** @type {RowKind} */\n  let rowKind = 0;\n  /** @type {Range} */\n  let lastCell = [0, 0, 0, 0];\n  /** @type {Range} */\n  let cell = [0, 0, 0, 0];\n  let afterHeadAwaitingFirstBodyRow = false;\n  let lastTableEnd = 0;\n  /** @type {Token | undefined} */\n  let currentTable;\n  /** @type {Token | undefined} */\n  let currentBody;\n  /** @type {Token | undefined} */\n  let currentCell;\n  const map = new EditMap();\n  while (++index < events.length) {\n    const event = events[index];\n    const token = event[1];\n    if (event[0] === 'enter') {\n      // Start of head.\n      if (token.type === 'tableHead') {\n        afterHeadAwaitingFirstBodyRow = false;\n\n        // Inject previous (body end and) table end.\n        if (lastTableEnd !== 0) {\n          flushTableEnd(map, context, lastTableEnd, currentTable, currentBody);\n          currentBody = undefined;\n          lastTableEnd = 0;\n        }\n\n        // Inject table start.\n        currentTable = {\n          type: 'table',\n          start: Object.assign({}, token.start),\n          // Note: correct end is set later.\n          end: Object.assign({}, token.end)\n        };\n        map.add(index, 0, [['enter', currentTable, context]]);\n      } else if (token.type === 'tableRow' || token.type === 'tableDelimiterRow') {\n        inFirstCellAwaitingPipe = true;\n        currentCell = undefined;\n        lastCell = [0, 0, 0, 0];\n        cell = [0, index + 1, 0, 0];\n\n        // Inject table body start.\n        if (afterHeadAwaitingFirstBodyRow) {\n          afterHeadAwaitingFirstBodyRow = false;\n          currentBody = {\n            type: 'tableBody',\n            start: Object.assign({}, token.start),\n            // Note: correct end is set later.\n            end: Object.assign({}, token.end)\n          };\n          map.add(index, 0, [['enter', currentBody, context]]);\n        }\n        rowKind = token.type === 'tableDelimiterRow' ? 2 : currentBody ? 3 : 1;\n      }\n      // Cell data.\n      else if (rowKind && (token.type === \"data\" || token.type === 'tableDelimiterMarker' || token.type === 'tableDelimiterFiller')) {\n        inFirstCellAwaitingPipe = false;\n\n        // First value in cell.\n        if (cell[2] === 0) {\n          if (lastCell[1] !== 0) {\n            cell[0] = cell[1];\n            currentCell = flushCell(map, context, lastCell, rowKind, undefined, currentCell);\n            lastCell = [0, 0, 0, 0];\n          }\n          cell[2] = index;\n        }\n      } else if (token.type === 'tableCellDivider') {\n        if (inFirstCellAwaitingPipe) {\n          inFirstCellAwaitingPipe = false;\n        } else {\n          if (lastCell[1] !== 0) {\n            cell[0] = cell[1];\n            currentCell = flushCell(map, context, lastCell, rowKind, undefined, currentCell);\n          }\n          lastCell = cell;\n          cell = [lastCell[1], index, 0, 0];\n        }\n      }\n    }\n    // Exit events.\n    else if (token.type === 'tableHead') {\n      afterHeadAwaitingFirstBodyRow = true;\n      lastTableEnd = index;\n    } else if (token.type === 'tableRow' || token.type === 'tableDelimiterRow') {\n      lastTableEnd = index;\n      if (lastCell[1] !== 0) {\n        cell[0] = cell[1];\n        currentCell = flushCell(map, context, lastCell, rowKind, index, currentCell);\n      } else if (cell[1] !== 0) {\n        currentCell = flushCell(map, context, cell, rowKind, index, currentCell);\n      }\n      rowKind = 0;\n    } else if (rowKind && (token.type === \"data\" || token.type === 'tableDelimiterMarker' || token.type === 'tableDelimiterFiller')) {\n      cell[3] = index;\n    }\n  }\n  if (lastTableEnd !== 0) {\n    flushTableEnd(map, context, lastTableEnd, currentTable, currentBody);\n  }\n  map.consume(context.events);\n\n  // To do: move this into `html`, when events are exposed there.\n  // That\u2019s what `markdown-rs` does.\n  // That needs updates to `mdast-util-gfm-table`.\n  index = -1;\n  while (++index < context.events.length) {\n    const event = context.events[index];\n    if (event[0] === 'enter' && event[1].type === 'table') {\n      event[1]._align = gfmTableAlign(context.events, index);\n    }\n  }\n  return events;\n}\n\n/**\n * Generate a cell.\n *\n * @param {EditMap} map\n *   Edit map to apply to.\n * @param {Readonly<TokenizeContext>} context\n *   Tokenize context.\n * @param {Readonly<Range>} range\n *   Range of the cell within events.\n * @param {RowKind} rowKind\n *   Type of row.\n * @param {number | undefined} rowEnd\n *   Index of the end of the row, if known.\n * @param {Token | undefined} previousCell\n *   Previous cell token, if any.\n * @returns {Token | undefined}\n *   Current cell token after flushing, if any.\n */\n// eslint-disable-next-line max-params\nfunction flushCell(map, context, range, rowKind, rowEnd, previousCell) {\n  // `markdown-rs` uses:\n  // rowKind === 2 ? 'tableDelimiterCell' : 'tableCell'\n  const groupName = rowKind === 1 ? 'tableHeader' : rowKind === 2 ? 'tableDelimiter' : 'tableData';\n  // `markdown-rs` uses:\n  // rowKind === 2 ? 'tableDelimiterCellValue' : 'tableCellText'\n  const valueName = 'tableContent';\n\n  // Insert an exit for the previous cell, if there is one.\n  //\n  // ```markdown\n  // > | | aa | bb | cc |\n  //          ^-- exit\n  //           ^^^^-- this cell\n  // ```\n  if (range[0] !== 0) {\n    previousCell.end = Object.assign({}, getPoint(context.events, range[0]));\n    map.add(range[0], 0, [['exit', previousCell, context]]);\n  }\n\n  // Insert enter of this cell.\n  //\n  // ```markdown\n  // > | | aa | bb | cc |\n  //           ^-- enter\n  //           ^^^^-- this cell\n  // ```\n  const now = getPoint(context.events, range[1]);\n  previousCell = {\n    type: groupName,\n    start: Object.assign({}, now),\n    // Note: correct end is set later.\n    end: Object.assign({}, now)\n  };\n  map.add(range[1], 0, [['enter', previousCell, context]]);\n\n  // Insert text start at first data start and end at last data end, and\n  // remove events between.\n  //\n  // ```markdown\n  // > | | aa | bb | cc |\n  //            ^-- enter\n  //             ^-- exit\n  //           ^^^^-- this cell\n  // ```\n  if (range[2] !== 0) {\n    const relatedStart = getPoint(context.events, range[2]);\n    const relatedEnd = getPoint(context.events, range[3]);\n    /** @type {Token} */\n    const valueToken = {\n      type: valueName,\n      start: Object.assign({}, relatedStart),\n      end: Object.assign({}, relatedEnd)\n    };\n    map.add(range[2], 0, [['enter', valueToken, context]]);\n    if (rowKind !== 2) {\n      // Fix positional info on remaining events\n      const start = context.events[range[2]];\n      const end = context.events[range[3]];\n      start[1].end = Object.assign({}, end[1].end);\n      start[1].type = \"chunkText\";\n      start[1].contentType = \"text\";\n\n      // Remove if needed.\n      if (range[3] > range[2] + 1) {\n        const a = range[2] + 1;\n        const b = range[3] - range[2] - 1;\n        map.add(a, b, []);\n      }\n    }\n    map.add(range[3] + 1, 0, [['exit', valueToken, context]]);\n  }\n\n  // Insert an exit for the last cell, if at the row end.\n  //\n  // ```markdown\n  // > | | aa | bb | cc |\n  //                    ^-- exit\n  //               ^^^^^^-- this cell (the last one contains two \u201Cbetween\u201D parts)\n  // ```\n  if (rowEnd !== undefined) {\n    previousCell.end = Object.assign({}, getPoint(context.events, rowEnd));\n    map.add(rowEnd, 0, [['exit', previousCell, context]]);\n    previousCell = undefined;\n  }\n  return previousCell;\n}\n\n/**\n * Generate table end (and table body end).\n *\n * @param {Readonly<EditMap>} map\n *   Edit map to apply to.\n * @param {Readonly<TokenizeContext>} context\n *   Tokenize context.\n * @param {number} index\n *   Index within the events where the table end should be inserted.\n * @param {Token} table\n *   Table token.\n * @param {Token | undefined} tableBody\n *   Table body token, if any.\n * @returns {undefined}\n *   Nothing.\n */\n// eslint-disable-next-line max-params\nfunction flushTableEnd(map, context, index, table, tableBody) {\n  /** @type {Array<Event>} */\n  const exits = [];\n  const related = getPoint(context.events, index);\n  if (tableBody) {\n    tableBody.end = Object.assign({}, related);\n    exits.push(['exit', tableBody, context]);\n  }\n  table.end = Object.assign({}, related);\n  exits.push(['exit', table, context]);\n  map.add(index + 1, 0, exits);\n}\n\n/**\n * Get the point (start or end) for a given event in the list of events.\n *\n * @param {Readonly<Array<Event>>} events\n *   List of events.\n * @param {number} index\n *   Index of the event to get the point for.\n * @returns {Readonly<Point>}\n *   Start point for enter and end point for exit.\n */\nfunction getPoint(events, index) {\n  const event = events[index];\n  const side = event[0] === 'enter' ? 'start' : 'end';\n  return event[1][side];\n}", "/**\n * @import {Extension, State, TokenizeContext, Tokenizer} from 'micromark-util-types'\n */\n\nimport { factorySpace } from 'micromark-factory-space';\nimport { markdownLineEnding, markdownLineEndingOrSpace, markdownSpace } from 'micromark-util-character';\nconst tasklistCheck = {\n  name: 'tasklistCheck',\n  tokenize: tokenizeTasklistCheck\n};\n\n/**\n * Create an HTML extension for `micromark` to support GFM task list items\n * syntax.\n *\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `htmlExtensions` to\n *   support GFM task list items when serializing to HTML.\n */\nexport function gfmTaskListItem() {\n  return {\n    text: {\n      [91]: tasklistCheck\n    }\n  };\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction tokenizeTasklistCheck(effects, ok, nok) {\n  const self = this;\n  return open;\n\n  /**\n   * At start of task list item check.\n   *\n   * ```markdown\n   * > | * [x] y.\n   *       ^\n   * ```\n   *\n   * @type {State}\n   */\n  function open(code) {\n    if (\n    // Exit if there\u2019s stuff before.\n    self.previous !== null ||\n    // Exit if not in the first content that is the first child of a list\n    // item.\n    !self._gfmTasklistFirstContentOfListItem) {\n      return nok(code);\n    }\n    effects.enter('taskListCheck');\n    effects.enter('taskListCheckMarker');\n    effects.consume(code);\n    effects.exit('taskListCheckMarker');\n    return inside;\n  }\n\n  /**\n   * In task list item check.\n   *\n   * ```markdown\n   * > | * [x] y.\n   *        ^\n   * ```\n   *\n   * @type {State}\n   */\n  function inside(code) {\n    // Currently we match how GH works in files.\n    // To match how GH works in comments, use `markdownSpace` (`[\\t ]`) instead\n    // of `markdownLineEndingOrSpace` (`[\\t\\n\\r ]`).\n    if (markdownLineEndingOrSpace(code)) {\n      effects.enter('taskListCheckValueUnchecked');\n      effects.consume(code);\n      effects.exit('taskListCheckValueUnchecked');\n      return close;\n    }\n    if (code === 88 || code === 120) {\n      effects.enter('taskListCheckValueChecked');\n      effects.consume(code);\n      effects.exit('taskListCheckValueChecked');\n      return close;\n    }\n    return nok(code);\n  }\n\n  /**\n   * At close of task list item check.\n   *\n   * ```markdown\n   * > | * [x] y.\n   *         ^\n   * ```\n   *\n   * @type {State}\n   */\n  function close(code) {\n    if (code === 93) {\n      effects.enter('taskListCheckMarker');\n      effects.consume(code);\n      effects.exit('taskListCheckMarker');\n      effects.exit('taskListCheck');\n      return after;\n    }\n    return nok(code);\n  }\n\n  /**\n   * @type {State}\n   */\n  function after(code) {\n    // EOL in paragraph means there must be something else after it.\n    if (markdownLineEnding(code)) {\n      return ok(code);\n    }\n\n    // Space or tab?\n    // Check what comes after.\n    if (markdownSpace(code)) {\n      return effects.check({\n        tokenize: spaceThenNonSpace\n      }, ok, nok)(code);\n    }\n\n    // EOF, or non-whitespace, both wrong.\n    return nok(code);\n  }\n}\n\n/**\n * @this {TokenizeContext}\n * @type {Tokenizer}\n */\nfunction spaceThenNonSpace(effects, ok, nok) {\n  return factorySpace(effects, after, \"whitespace\");\n\n  /**\n   * After whitespace, after task list item check.\n   *\n   * ```markdown\n   * > | * [x] y.\n   *           ^\n   * ```\n   *\n   * @type {State}\n   */\n  function after(code) {\n    // EOF means there was nothing, so bad.\n    // EOL means there\u2019s content after it, so good.\n    // Impossible to have more spaces.\n    // Anything else is good.\n    return code === null ? nok(code) : ok(code);\n  }\n}", "/**\n * @typedef {import('micromark-extension-gfm-footnote').HtmlOptions} HtmlOptions\n * @typedef {import('micromark-extension-gfm-strikethrough').Options} Options\n * @typedef {import('micromark-util-types').Extension} Extension\n * @typedef {import('micromark-util-types').HtmlExtension} HtmlExtension\n */\n\nimport {\n  combineExtensions,\n  combineHtmlExtensions\n} from 'micromark-util-combine-extensions'\nimport {\n  gfmAutolinkLiteral,\n  gfmAutolinkLiteralHtml\n} from 'micromark-extension-gfm-autolink-literal'\nimport {gfmFootnote, gfmFootnoteHtml} from 'micromark-extension-gfm-footnote'\nimport {\n  gfmStrikethrough,\n  gfmStrikethroughHtml\n} from 'micromark-extension-gfm-strikethrough'\nimport {gfmTable, gfmTableHtml} from 'micromark-extension-gfm-table'\nimport {gfmTagfilterHtml} from 'micromark-extension-gfm-tagfilter'\nimport {\n  gfmTaskListItem,\n  gfmTaskListItemHtml\n} from 'micromark-extension-gfm-task-list-item'\n\n/**\n * Create an extension for `micromark` to enable GFM syntax.\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n *\n *   Passed to `micromark-extens-gfm-strikethrough`.\n * @returns {Extension}\n *   Extension for `micromark` that can be passed in `extensions` to enable GFM\n *   syntax.\n */\nexport function gfm(options) {\n  return combineExtensions([\n    gfmAutolinkLiteral(),\n    gfmFootnote(),\n    gfmStrikethrough(options),\n    gfmTable(),\n    gfmTaskListItem()\n  ])\n}\n\n/**\n * Create an extension for `micromark` to support GFM when serializing to HTML.\n *\n * @param {HtmlOptions | null | undefined} [options]\n *   Configuration (optional).\n *\n *   Passed to `micromark-extens-gfm-footnote`.\n * @returns {HtmlExtension}\n *   Extension for `micromark` that can be passed in `htmlExtensions` to\n *   support GFM when serializing to HTML.\n */\nexport function gfmHtml(options) {\n  return combineHtmlExtensions([\n    gfmAutolinkLiteralHtml(),\n    gfmFootnoteHtml(options),\n    gfmStrikethroughHtml(),\n    gfmTableHtml(),\n    gfmTagfilterHtml(),\n    gfmTaskListItemHtml()\n  ])\n}\n", "/**\n * @import {Root} from 'mdast'\n * @import {Options} from 'remark-gfm'\n * @import {} from 'remark-parse'\n * @import {} from 'remark-stringify'\n * @import {Processor} from 'unified'\n */\n\nimport {gfmFromMarkdown, gfmToMarkdown} from 'mdast-util-gfm'\nimport {gfm} from 'micromark-extension-gfm'\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Add support GFM (autolink literals, footnotes, strikethrough, tables,\n * tasklists).\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {undefined}\n *   Nothing.\n */\nexport default function remarkGfm(options) {\n  // @ts-expect-error: TS is wrong about `this`.\n  // eslint-disable-next-line unicorn/no-this-assignment\n  const self = /** @type {Processor<Root>} */ (this)\n  const settings = options || emptyOptions\n  const data = self.data()\n\n  const micromarkExtensions =\n    data.micromarkExtensions || (data.micromarkExtensions = [])\n  const fromMarkdownExtensions =\n    data.fromMarkdownExtensions || (data.fromMarkdownExtensions = [])\n  const toMarkdownExtensions =\n    data.toMarkdownExtensions || (data.toMarkdownExtensions = [])\n\n  micromarkExtensions.push(gfm(settings))\n  fromMarkdownExtensions.push(gfmFromMarkdown())\n  toMarkdownExtensions.push(gfmToMarkdown(settings))\n}\n", "import { visit } from 'unist-util-visit';\nimport type { Plugin } from 'unified';\nimport type { Root, PhrasingContent } from \"mdast\";\n\nconst alertRegex = /^\\[!(NOTE|TIP|IMPORTANT|WARNING|CAUTION)\\]/i;\nconst alertLegacyRegex = /^\\[!(NOTE|TIP|IMPORTANT|WARNING|CAUTION)(\\/.*)?\\]/i;\n\ntype Option = {\n  /**\n   * Use the legacy title format, which includes a slash and a title after the alert type.\n   * \n   * Enabling legacyTitle allows modifying the title, but this is not GitHub standard.\n   */\n  legacyTitle?: boolean;\n  /**\n   * The tag name of the alert container. default is `div`.\n   * or you can use `blockquote` for semantic HTML.\n   */\n  tagName?: string;\n}\n\n/**\n * Alerts are a Markdown extension based on the blockquote syntax that you can use to emphasize critical information.\n * On GitHub, they are displayed with distinctive colors and icons to indicate the significance of the content.\n * https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts\n */\nexport const remarkAlert: Plugin<[Option?], Root> = ({ legacyTitle = false, tagName = \"div\" } = {}) => {\n  return (tree) => {\n    visit(tree, \"blockquote\", (node, index, parent) => {\n      let alertType = '';\n      let title = '';\n      let isNext = true;\n      let child = node.children.map((item) => {\n        if (isNext && item.type === \"paragraph\") {\n          const firstNode = item.children[0];\n          const text = firstNode.type === 'text' ? firstNode.value : '';\n          const reg = legacyTitle ? alertLegacyRegex : alertRegex;\n          const match = text.match(reg);\n          if (match) {\n            isNext = false;\n            alertType = match[1].toLocaleLowerCase();\n            title = legacyTitle ? match[2] || alertType.toLocaleUpperCase() : alertType.toLocaleUpperCase();\n            if (text.includes('\\n')) {\n              item.children[0] = {\n                type: 'text',\n                value: text.replace(reg, '').replace(/^\\n+/, ''),\n              };\n            }\n\n            if (!text.includes('\\n')) {\n              const itemChild: Array<PhrasingContent> = [];\n              item.children.forEach((item, idx) => {\n                if (idx == 0) return;\n                if (idx == 1 && item.type === 'break') {\n                  return;\n                }\n                itemChild.push(item);\n              });\n              item.children = [...itemChild];\n            }\n          }\n        }\n        return item;\n      })\n\n      if (!!alertType) {\n        node.data = {\n          hName: tagName,\n          hProperties: {\n            class: `markdown-alert markdown-alert-${alertType}`,\n            dir: 'auto'\n          },\n        }\n        child.unshift({\n          type: \"paragraph\",\n          children: [\n            getAlertIcon(alertType as IconType),\n            {\n              type: \"text\",\n              value: title.replace(/^\\//, ''),\n            }\n          ],\n          data: {\n            hProperties: {\n              class: \"markdown-alert-title\",\n              dir: \"auto\"\n            }\n          }\n        })\n      }\n      node.children = [...child];\n    });\n  };\n};\n\nexport default remarkAlert;\n\nexport function getAlertIcon(type: IconType): PhrasingContent {\n  let pathD = pathData[type] ?? '';\n  return {\n    type: \"emphasis\",\n    data: {\n      hName: \"svg\",\n      hProperties: {\n        class: \"octicon\",\n        viewBox: '0 0 16 16',\n        width: '16',\n        height: '16',\n        ariaHidden: 'true',\n      },\n    },\n    children: [\n      {\n        type: \"emphasis\",\n        data: {\n          hName: \"path\",\n          hProperties: {\n            d: pathD\n          }\n        },\n        children: []\n      }\n    ]\n  }\n}\n\ntype IconType = 'note' | 'tip' | 'important' | 'warning' | 'caution';\n\nconst pathData: Record<IconType, string> = {\n  note: 'M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z',\n  tip: 'M8 1.5c-2.363 0-4 1.69-4 3.75 0 .984.424 1.625.984 2.304l.214.253c.223.264.47.556.673.848.284.411.537.896.621 1.49a.75.75 0 0 1-1.484.211c-.04-.282-.163-.547-.37-.847a8.456 8.456 0 0 0-.542-.68c-.084-.1-.173-.205-.268-.32C3.201 7.75 2.5 6.766 2.5 5.25 2.5 2.31 4.863 0 8 0s5.5 2.31 5.5 5.25c0 1.516-.701 2.5-1.328 3.259-.095.115-.184.22-.268.319-.207.245-.383.453-.541.681-.208.3-.33.565-.37.847a.751.751 0 0 1-1.485-.212c.084-.593.337-1.078.621-1.489.203-.292.45-.584.673-.848.075-.088.147-.173.213-.253.561-.679.985-1.32.985-2.304 0-2.06-1.637-3.75-4-3.75ZM5.75 12h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM6 15.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 0 1.5h-2.5a.75.75 0 0 1-.75-.75Z',\n  important:\n    'M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v9.5A1.75 1.75 0 0 1 14.25 13H8.06l-2.573 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25Zm7 2.25v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 9a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z',\n  warning:\n    'M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z',\n  caution:\n    'M4.47.22A.749.749 0 0 1 5 0h6c.199 0 .389.079.53.22l4.25 4.25c.141.14.22.331.22.53v6a.749.749 0 0 1-.22.53l-4.25 4.25A.749.749 0 0 1 11 16H5a.749.749 0 0 1-.53-.22L.22 11.53A.749.749 0 0 1 0 11V5c0-.199.079-.389.22-.53Zm.84 1.28L1.5 5.31v5.38l3.81 3.81h5.38l3.81-3.81V5.31L10.69 1.5ZM8 4a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 4Zm0 8a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z',\n};\n", "import copyTextToClipboard from '@uiw/copy-to-clipboard';\nimport { useEffect } from 'react';\nfunction getParentElement(target) {\n  if (!target) return null;\n  var dom = target;\n  if (dom.dataset.code && dom.classList.contains('copied')) {\n    return dom;\n  }\n  if (dom.parentElement) {\n    return getParentElement(dom.parentElement);\n  }\n  return null;\n}\nexport function useCopied(container) {\n  var handle = event => {\n    var target = getParentElement(event.target);\n    if (!target) return;\n    target.classList.add('active');\n    copyTextToClipboard(target.dataset.code, function () {\n      setTimeout(() => {\n        target.classList.remove('active');\n      }, 2000);\n    });\n  };\n  useEffect(() => {\n    var _container$current, _container$current2;\n    (_container$current = container.current) == null || _container$current.removeEventListener('click', handle, false);\n    (_container$current2 = container.current) == null || _container$current2.addEventListener('click', handle, false);\n    return () => {\n      var _container$current3;\n      (_container$current3 = container.current) == null || _container$current3.removeEventListener('click', handle, false);\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [container]);\n}", "import _extends from \"@babel/runtime/helpers/extends\";\nimport { visit } from 'unist-util-visit';\nexport var reservedMeta = function reservedMeta(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return tree => {\n    visit(tree, node => {\n      if (node.type === 'element' && node.tagName === 'code' && node.data && node.data.meta) {\n        node.properties = _extends({}, node.properties, {\n          'data-meta': String(node.data.meta)\n        });\n      }\n    });\n  };\n};", "import { visit } from 'unist-util-visit';\nexport var retrieveMeta = function retrieveMeta(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  return tree => {\n    visit(tree, node => {\n      if (node.type === 'element' && node.tagName === 'code' && node.properties && node.properties['dataMeta']) {\n        if (!node.data) {\n          node.data = {};\n        }\n        var metaString = node.properties['dataMeta'];\n        if (typeof metaString === 'string') {\n          node.data.meta = metaString;\n        }\n        delete node.properties['dataMeta'];\n      }\n    });\n  };\n};", "// This module is generated by `script/`.\n/* eslint-disable no-control-regex, no-misleading-character-class, no-useless-escape */\nexport const regex = /[\\0-\\x1F!-,\\.\\/:-@\\[-\\^`\\{-\\xA9\\xAB-\\xB4\\xB6-\\xB9\\xBB-\\xBF\\xD7\\xF7\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0378\\u0379\\u037E\\u0380-\\u0385\\u0387\\u038B\\u038D\\u03A2\\u03F6\\u0482\\u0530\\u0557\\u0558\\u055A-\\u055F\\u0589-\\u0590\\u05BE\\u05C0\\u05C3\\u05C6\\u05C8-\\u05CF\\u05EB-\\u05EE\\u05F3-\\u060F\\u061B-\\u061F\\u066A-\\u066D\\u06D4\\u06DD\\u06DE\\u06E9\\u06FD\\u06FE\\u0700-\\u070F\\u074B\\u074C\\u07B2-\\u07BF\\u07F6-\\u07F9\\u07FB\\u07FC\\u07FE\\u07FF\\u082E-\\u083F\\u085C-\\u085F\\u086B-\\u089F\\u08B5\\u08C8-\\u08D2\\u08E2\\u0964\\u0965\\u0970\\u0984\\u098D\\u098E\\u0991\\u0992\\u09A9\\u09B1\\u09B3-\\u09B5\\u09BA\\u09BB\\u09C5\\u09C6\\u09C9\\u09CA\\u09CF-\\u09D6\\u09D8-\\u09DB\\u09DE\\u09E4\\u09E5\\u09F2-\\u09FB\\u09FD\\u09FF\\u0A00\\u0A04\\u0A0B-\\u0A0E\\u0A11\\u0A12\\u0A29\\u0A31\\u0A34\\u0A37\\u0A3A\\u0A3B\\u0A3D\\u0A43-\\u0A46\\u0A49\\u0A4A\\u0A4E-\\u0A50\\u0A52-\\u0A58\\u0A5D\\u0A5F-\\u0A65\\u0A76-\\u0A80\\u0A84\\u0A8E\\u0A92\\u0AA9\\u0AB1\\u0AB4\\u0ABA\\u0ABB\\u0AC6\\u0ACA\\u0ACE\\u0ACF\\u0AD1-\\u0ADF\\u0AE4\\u0AE5\\u0AF0-\\u0AF8\\u0B00\\u0B04\\u0B0D\\u0B0E\\u0B11\\u0B12\\u0B29\\u0B31\\u0B34\\u0B3A\\u0B3B\\u0B45\\u0B46\\u0B49\\u0B4A\\u0B4E-\\u0B54\\u0B58-\\u0B5B\\u0B5E\\u0B64\\u0B65\\u0B70\\u0B72-\\u0B81\\u0B84\\u0B8B-\\u0B8D\\u0B91\\u0B96-\\u0B98\\u0B9B\\u0B9D\\u0BA0-\\u0BA2\\u0BA5-\\u0BA7\\u0BAB-\\u0BAD\\u0BBA-\\u0BBD\\u0BC3-\\u0BC5\\u0BC9\\u0BCE\\u0BCF\\u0BD1-\\u0BD6\\u0BD8-\\u0BE5\\u0BF0-\\u0BFF\\u0C0D\\u0C11\\u0C29\\u0C3A-\\u0C3C\\u0C45\\u0C49\\u0C4E-\\u0C54\\u0C57\\u0C5B-\\u0C5F\\u0C64\\u0C65\\u0C70-\\u0C7F\\u0C84\\u0C8D\\u0C91\\u0CA9\\u0CB4\\u0CBA\\u0CBB\\u0CC5\\u0CC9\\u0CCE-\\u0CD4\\u0CD7-\\u0CDD\\u0CDF\\u0CE4\\u0CE5\\u0CF0\\u0CF3-\\u0CFF\\u0D0D\\u0D11\\u0D45\\u0D49\\u0D4F-\\u0D53\\u0D58-\\u0D5E\\u0D64\\u0D65\\u0D70-\\u0D79\\u0D80\\u0D84\\u0D97-\\u0D99\\u0DB2\\u0DBC\\u0DBE\\u0DBF\\u0DC7-\\u0DC9\\u0DCB-\\u0DCE\\u0DD5\\u0DD7\\u0DE0-\\u0DE5\\u0DF0\\u0DF1\\u0DF4-\\u0E00\\u0E3B-\\u0E3F\\u0E4F\\u0E5A-\\u0E80\\u0E83\\u0E85\\u0E8B\\u0EA4\\u0EA6\\u0EBE\\u0EBF\\u0EC5\\u0EC7\\u0ECE\\u0ECF\\u0EDA\\u0EDB\\u0EE0-\\u0EFF\\u0F01-\\u0F17\\u0F1A-\\u0F1F\\u0F2A-\\u0F34\\u0F36\\u0F38\\u0F3A-\\u0F3D\\u0F48\\u0F6D-\\u0F70\\u0F85\\u0F98\\u0FBD-\\u0FC5\\u0FC7-\\u0FFF\\u104A-\\u104F\\u109E\\u109F\\u10C6\\u10C8-\\u10CC\\u10CE\\u10CF\\u10FB\\u1249\\u124E\\u124F\\u1257\\u1259\\u125E\\u125F\\u1289\\u128E\\u128F\\u12B1\\u12B6\\u12B7\\u12BF\\u12C1\\u12C6\\u12C7\\u12D7\\u1311\\u1316\\u1317\\u135B\\u135C\\u1360-\\u137F\\u1390-\\u139F\\u13F6\\u13F7\\u13FE-\\u1400\\u166D\\u166E\\u1680\\u169B-\\u169F\\u16EB-\\u16ED\\u16F9-\\u16FF\\u170D\\u1715-\\u171F\\u1735-\\u173F\\u1754-\\u175F\\u176D\\u1771\\u1774-\\u177F\\u17D4-\\u17D6\\u17D8-\\u17DB\\u17DE\\u17DF\\u17EA-\\u180A\\u180E\\u180F\\u181A-\\u181F\\u1879-\\u187F\\u18AB-\\u18AF\\u18F6-\\u18FF\\u191F\\u192C-\\u192F\\u193C-\\u1945\\u196E\\u196F\\u1975-\\u197F\\u19AC-\\u19AF\\u19CA-\\u19CF\\u19DA-\\u19FF\\u1A1C-\\u1A1F\\u1A5F\\u1A7D\\u1A7E\\u1A8A-\\u1A8F\\u1A9A-\\u1AA6\\u1AA8-\\u1AAF\\u1AC1-\\u1AFF\\u1B4C-\\u1B4F\\u1B5A-\\u1B6A\\u1B74-\\u1B7F\\u1BF4-\\u1BFF\\u1C38-\\u1C3F\\u1C4A-\\u1C4C\\u1C7E\\u1C7F\\u1C89-\\u1C8F\\u1CBB\\u1CBC\\u1CC0-\\u1CCF\\u1CD3\\u1CFB-\\u1CFF\\u1DFA\\u1F16\\u1F17\\u1F1E\\u1F1F\\u1F46\\u1F47\\u1F4E\\u1F4F\\u1F58\\u1F5A\\u1F5C\\u1F5E\\u1F7E\\u1F7F\\u1FB5\\u1FBD\\u1FBF-\\u1FC1\\u1FC5\\u1FCD-\\u1FCF\\u1FD4\\u1FD5\\u1FDC-\\u1FDF\\u1FED-\\u1FF1\\u1FF5\\u1FFD-\\u203E\\u2041-\\u2053\\u2055-\\u2070\\u2072-\\u207E\\u2080-\\u208F\\u209D-\\u20CF\\u20F1-\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u214F-\\u215F\\u2189-\\u24B5\\u24EA-\\u2BFF\\u2C2F\\u2C5F\\u2CE5-\\u2CEA\\u2CF4-\\u2CFF\\u2D26\\u2D28-\\u2D2C\\u2D2E\\u2D2F\\u2D68-\\u2D6E\\u2D70-\\u2D7E\\u2D97-\\u2D9F\\u2DA7\\u2DAF\\u2DB7\\u2DBF\\u2DC7\\u2DCF\\u2DD7\\u2DDF\\u2E00-\\u2E2E\\u2E30-\\u3004\\u3008-\\u3020\\u3030\\u3036\\u3037\\u303D-\\u3040\\u3097\\u3098\\u309B\\u309C\\u30A0\\u30FB\\u3100-\\u3104\\u3130\\u318F-\\u319F\\u31C0-\\u31EF\\u3200-\\u33FF\\u4DC0-\\u4DFF\\u9FFD-\\u9FFF\\uA48D-\\uA4CF\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA62C-\\uA63F\\uA673\\uA67E\\uA6F2-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uA7C0\\uA7C1\\uA7CB-\\uA7F4\\uA828-\\uA82B\\uA82D-\\uA83F\\uA874-\\uA87F\\uA8C6-\\uA8CF\\uA8DA-\\uA8DF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA954-\\uA95F\\uA97D-\\uA97F\\uA9C1-\\uA9CE\\uA9DA-\\uA9DF\\uA9FF\\uAA37-\\uAA3F\\uAA4E\\uAA4F\\uAA5A-\\uAA5F\\uAA77-\\uAA79\\uAAC3-\\uAADA\\uAADE\\uAADF\\uAAF0\\uAAF1\\uAAF7-\\uAB00\\uAB07\\uAB08\\uAB0F\\uAB10\\uAB17-\\uAB1F\\uAB27\\uAB2F\\uAB5B\\uAB6A-\\uAB6F\\uABEB\\uABEE\\uABEF\\uABFA-\\uABFF\\uD7A4-\\uD7AF\\uD7C7-\\uD7CA\\uD7FC-\\uD7FF\\uE000-\\uF8FF\\uFA6E\\uFA6F\\uFADA-\\uFAFF\\uFB07-\\uFB12\\uFB18-\\uFB1C\\uFB29\\uFB37\\uFB3D\\uFB3F\\uFB42\\uFB45\\uFBB2-\\uFBD2\\uFD3E-\\uFD4F\\uFD90\\uFD91\\uFDC8-\\uFDEF\\uFDFC-\\uFDFF\\uFE10-\\uFE1F\\uFE30-\\uFE32\\uFE35-\\uFE4C\\uFE50-\\uFE6F\\uFE75\\uFEFD-\\uFF0F\\uFF1A-\\uFF20\\uFF3B-\\uFF3E\\uFF40\\uFF5B-\\uFF65\\uFFBF-\\uFFC1\\uFFC8\\uFFC9\\uFFD0\\uFFD1\\uFFD8\\uFFD9\\uFFDD-\\uFFFF]|\\uD800[\\uDC0C\\uDC27\\uDC3B\\uDC3E\\uDC4E\\uDC4F\\uDC5E-\\uDC7F\\uDCFB-\\uDD3F\\uDD75-\\uDDFC\\uDDFE-\\uDE7F\\uDE9D-\\uDE9F\\uDED1-\\uDEDF\\uDEE1-\\uDEFF\\uDF20-\\uDF2C\\uDF4B-\\uDF4F\\uDF7B-\\uDF7F\\uDF9E\\uDF9F\\uDFC4-\\uDFC7\\uDFD0\\uDFD6-\\uDFFF]|\\uD801[\\uDC9E\\uDC9F\\uDCAA-\\uDCAF\\uDCD4-\\uDCD7\\uDCFC-\\uDCFF\\uDD28-\\uDD2F\\uDD64-\\uDDFF\\uDF37-\\uDF3F\\uDF56-\\uDF5F\\uDF68-\\uDFFF]|\\uD802[\\uDC06\\uDC07\\uDC09\\uDC36\\uDC39-\\uDC3B\\uDC3D\\uDC3E\\uDC56-\\uDC5F\\uDC77-\\uDC7F\\uDC9F-\\uDCDF\\uDCF3\\uDCF6-\\uDCFF\\uDD16-\\uDD1F\\uDD3A-\\uDD7F\\uDDB8-\\uDDBD\\uDDC0-\\uDDFF\\uDE04\\uDE07-\\uDE0B\\uDE14\\uDE18\\uDE36\\uDE37\\uDE3B-\\uDE3E\\uDE40-\\uDE5F\\uDE7D-\\uDE7F\\uDE9D-\\uDEBF\\uDEC8\\uDEE7-\\uDEFF\\uDF36-\\uDF3F\\uDF56-\\uDF5F\\uDF73-\\uDF7F\\uDF92-\\uDFFF]|\\uD803[\\uDC49-\\uDC7F\\uDCB3-\\uDCBF\\uDCF3-\\uDCFF\\uDD28-\\uDD2F\\uDD3A-\\uDE7F\\uDEAA\\uDEAD-\\uDEAF\\uDEB2-\\uDEFF\\uDF1D-\\uDF26\\uDF28-\\uDF2F\\uDF51-\\uDFAF\\uDFC5-\\uDFDF\\uDFF7-\\uDFFF]|\\uD804[\\uDC47-\\uDC65\\uDC70-\\uDC7E\\uDCBB-\\uDCCF\\uDCE9-\\uDCEF\\uDCFA-\\uDCFF\\uDD35\\uDD40-\\uDD43\\uDD48-\\uDD4F\\uDD74\\uDD75\\uDD77-\\uDD7F\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDFF\\uDE12\\uDE38-\\uDE3D\\uDE3F-\\uDE7F\\uDE87\\uDE89\\uDE8E\\uDE9E\\uDEA9-\\uDEAF\\uDEEB-\\uDEEF\\uDEFA-\\uDEFF\\uDF04\\uDF0D\\uDF0E\\uDF11\\uDF12\\uDF29\\uDF31\\uDF34\\uDF3A\\uDF45\\uDF46\\uDF49\\uDF4A\\uDF4E\\uDF4F\\uDF51-\\uDF56\\uDF58-\\uDF5C\\uDF64\\uDF65\\uDF6D-\\uDF6F\\uDF75-\\uDFFF]|\\uD805[\\uDC4B-\\uDC4F\\uDC5A-\\uDC5D\\uDC62-\\uDC7F\\uDCC6\\uDCC8-\\uDCCF\\uDCDA-\\uDD7F\\uDDB6\\uDDB7\\uDDC1-\\uDDD7\\uDDDE-\\uDDFF\\uDE41-\\uDE43\\uDE45-\\uDE4F\\uDE5A-\\uDE7F\\uDEB9-\\uDEBF\\uDECA-\\uDEFF\\uDF1B\\uDF1C\\uDF2C-\\uDF2F\\uDF3A-\\uDFFF]|\\uD806[\\uDC3B-\\uDC9F\\uDCEA-\\uDCFE\\uDD07\\uDD08\\uDD0A\\uDD0B\\uDD14\\uDD17\\uDD36\\uDD39\\uDD3A\\uDD44-\\uDD4F\\uDD5A-\\uDD9F\\uDDA8\\uDDA9\\uDDD8\\uDDD9\\uDDE2\\uDDE5-\\uDDFF\\uDE3F-\\uDE46\\uDE48-\\uDE4F\\uDE9A-\\uDE9C\\uDE9E-\\uDEBF\\uDEF9-\\uDFFF]|\\uD807[\\uDC09\\uDC37\\uDC41-\\uDC4F\\uDC5A-\\uDC71\\uDC90\\uDC91\\uDCA8\\uDCB7-\\uDCFF\\uDD07\\uDD0A\\uDD37-\\uDD39\\uDD3B\\uDD3E\\uDD48-\\uDD4F\\uDD5A-\\uDD5F\\uDD66\\uDD69\\uDD8F\\uDD92\\uDD99-\\uDD9F\\uDDAA-\\uDEDF\\uDEF7-\\uDFAF\\uDFB1-\\uDFFF]|\\uD808[\\uDF9A-\\uDFFF]|\\uD809[\\uDC6F-\\uDC7F\\uDD44-\\uDFFF]|[\\uD80A\\uD80B\\uD80E-\\uD810\\uD812-\\uD819\\uD824-\\uD82B\\uD82D\\uD82E\\uD830-\\uD833\\uD837\\uD839\\uD83D\\uD83F\\uD87B-\\uD87D\\uD87F\\uD885-\\uDB3F\\uDB41-\\uDBFF][\\uDC00-\\uDFFF]|\\uD80D[\\uDC2F-\\uDFFF]|\\uD811[\\uDE47-\\uDFFF]|\\uD81A[\\uDE39-\\uDE3F\\uDE5F\\uDE6A-\\uDECF\\uDEEE\\uDEEF\\uDEF5-\\uDEFF\\uDF37-\\uDF3F\\uDF44-\\uDF4F\\uDF5A-\\uDF62\\uDF78-\\uDF7C\\uDF90-\\uDFFF]|\\uD81B[\\uDC00-\\uDE3F\\uDE80-\\uDEFF\\uDF4B-\\uDF4E\\uDF88-\\uDF8E\\uDFA0-\\uDFDF\\uDFE2\\uDFE5-\\uDFEF\\uDFF2-\\uDFFF]|\\uD821[\\uDFF8-\\uDFFF]|\\uD823[\\uDCD6-\\uDCFF\\uDD09-\\uDFFF]|\\uD82C[\\uDD1F-\\uDD4F\\uDD53-\\uDD63\\uDD68-\\uDD6F\\uDEFC-\\uDFFF]|\\uD82F[\\uDC6B-\\uDC6F\\uDC7D-\\uDC7F\\uDC89-\\uDC8F\\uDC9A-\\uDC9C\\uDC9F-\\uDFFF]|\\uD834[\\uDC00-\\uDD64\\uDD6A-\\uDD6C\\uDD73-\\uDD7A\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDE41\\uDE45-\\uDFFF]|\\uD835[\\uDC55\\uDC9D\\uDCA0\\uDCA1\\uDCA3\\uDCA4\\uDCA7\\uDCA8\\uDCAD\\uDCBA\\uDCBC\\uDCC4\\uDD06\\uDD0B\\uDD0C\\uDD15\\uDD1D\\uDD3A\\uDD3F\\uDD45\\uDD47-\\uDD49\\uDD51\\uDEA6\\uDEA7\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3\\uDFCC\\uDFCD]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85-\\uDE9A\\uDEA0\\uDEB0-\\uDFFF]|\\uD838[\\uDC07\\uDC19\\uDC1A\\uDC22\\uDC25\\uDC2B-\\uDCFF\\uDD2D-\\uDD2F\\uDD3E\\uDD3F\\uDD4A-\\uDD4D\\uDD4F-\\uDEBF\\uDEFA-\\uDFFF]|\\uD83A[\\uDCC5-\\uDCCF\\uDCD7-\\uDCFF\\uDD4C-\\uDD4F\\uDD5A-\\uDFFF]|\\uD83B[\\uDC00-\\uDDFF\\uDE04\\uDE20\\uDE23\\uDE25\\uDE26\\uDE28\\uDE33\\uDE38\\uDE3A\\uDE3C-\\uDE41\\uDE43-\\uDE46\\uDE48\\uDE4A\\uDE4C\\uDE50\\uDE53\\uDE55\\uDE56\\uDE58\\uDE5A\\uDE5C\\uDE5E\\uDE60\\uDE63\\uDE65\\uDE66\\uDE6B\\uDE73\\uDE78\\uDE7D\\uDE7F\\uDE8A\\uDE9C-\\uDEA0\\uDEA4\\uDEAA\\uDEBC-\\uDFFF]|\\uD83C[\\uDC00-\\uDD2F\\uDD4A-\\uDD4F\\uDD6A-\\uDD6F\\uDD8A-\\uDFFF]|\\uD83E[\\uDC00-\\uDFEF\\uDFFA-\\uDFFF]|\\uD869[\\uDEDE-\\uDEFF]|\\uD86D[\\uDF35-\\uDF3F]|\\uD86E[\\uDC1E\\uDC1F]|\\uD873[\\uDEA2-\\uDEAF]|\\uD87A[\\uDFE1-\\uDFFF]|\\uD87E[\\uDE1E-\\uDFFF]|\\uD884[\\uDF4B-\\uDFFF]|\\uDB40[\\uDC00-\\uDCFF\\uDDF0-\\uDFFF]/g\n", "import { regex } from './regex.js'\n\nconst own = Object.hasOwnProperty\n\n/**\n * Slugger.\n */\nexport default class BananaSlug {\n  /**\n   * Create a new slug class.\n   */\n  constructor () {\n    /** @type {Record<string, number>} */\n    // eslint-disable-next-line no-unused-expressions\n    this.occurrences\n\n    this.reset()\n  }\n\n  /**\n   * Generate a unique slug.\n  *\n  * Tracks previously generated slugs: repeated calls with the same value\n  * will result in different slugs.\n  * Use the `slug` function to get same slugs.\n   *\n   * @param  {string} value\n   *   String of text to slugify\n   * @param  {boolean} [maintainCase=false]\n   *   Keep the current case, otherwise make all lowercase\n   * @return {string}\n   *   A unique slug string\n   */\n  slug (value, maintainCase) {\n    const self = this\n    let result = slug(value, maintainCase === true)\n    const originalSlug = result\n\n    while (own.call(self.occurrences, result)) {\n      self.occurrences[originalSlug]++\n      result = originalSlug + '-' + self.occurrences[originalSlug]\n    }\n\n    self.occurrences[result] = 0\n\n    return result\n  }\n\n  /**\n   * Reset - Forget all previous slugs\n   *\n   * @return void\n   */\n  reset () {\n    this.occurrences = Object.create(null)\n  }\n}\n\n/**\n * Generate a slug.\n *\n * Does not track previously generated slugs: repeated calls with the same value\n * will result in the exact same slug.\n * Use the `GithubSlugger` class to get unique slugs.\n *\n * @param  {string} value\n *   String of text to slugify\n * @param  {boolean} [maintainCase=false]\n *   Keep the current case, otherwise make all lowercase\n * @return {string}\n *   A unique slug string\n */\nexport function slug (value, maintainCase) {\n  if (typeof value !== 'string') return ''\n  if (!maintainCase) value = value.toLowerCase()\n  return value.replace(regex, '').replace(/ /g, '-')\n}\n", "/**\n * @typedef {import('hast').Nodes} Nodes\n */\n\n/**\n * Get the rank (`1` to `6`) of headings (`h1` to `h6`).\n *\n * @param {Nodes} node\n *   Node to check.\n * @returns {number | undefined}\n *   Rank of the heading or `undefined` if not a heading.\n */\nexport function headingRank(node) {\n  const name = node.type === 'element' ? node.tagName.toLowerCase() : ''\n  const code =\n    name.length === 2 && name.charCodeAt(0) === 104 /* `h` */\n      ? name.charCodeAt(1)\n      : 0\n  return code > 48 /* `0` */ && code < 55 /* `7` */\n    ? code - 48 /* `0` */\n    : undefined\n}\n", "/**\n * @typedef {import('hast').Root} Root\n */\n\n/**\n * @typedef Options\n *   Configuration (optional).\n * @property {string} [prefix='']\n *   Prefix to add in front of `id`s (default: `''`).\n */\n\nimport GithubSlugger from 'github-slugger'\nimport {headingRank} from 'hast-util-heading-rank'\nimport {toString} from 'hast-util-to-string'\nimport {visit} from 'unist-util-visit'\n\n/** @type {Options} */\nconst emptyOptions = {}\nconst slugs = new GithubSlugger()\n\n/**\n * Add `id`s to headings.\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns\n *   Transform.\n */\nexport default function rehypeSlug(options) {\n  const settings = options || emptyOptions\n  const prefix = settings.prefix || ''\n\n  /**\n   * @param {Root} tree\n   *   Tree.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  return function (tree) {\n    slugs.reset()\n\n    visit(tree, 'element', function (node) {\n      if (headingRank(node) && !node.properties.id) {\n        node.properties.id = prefix + slugs.slug(toString(node))\n      }\n    })\n  }\n}\n", "/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').Parents} Parents\n */\n\n/**\n * @template Fn\n * @template Fallback\n * @typedef {Fn extends (value: any) => value is infer Thing ? Thing : Fallback} Predicate\n */\n\n/**\n * @callback Check\n *   Check that an arbitrary value is an element.\n * @param {unknown} this\n *   Context object (`this`) to call `test` with\n * @param {unknown} [element]\n *   Anything (typically a node).\n * @param {number | null | undefined} [index]\n *   Position of `element` in its parent.\n * @param {Parents | null | undefined} [parent]\n *   Parent of `element`.\n * @returns {boolean}\n *   Whether this is an element and passes a test.\n *\n * @typedef {Array<TestFunction | string> | TestFunction | string | null | undefined} Test\n *   Check for an arbitrary element.\n *\n *   * when `string`, checks that the element has that tag name\n *   * when `function`, see `TestFunction`\n *   * when `Array`, checks if one of the subtests pass\n *\n * @callback TestFunction\n *   Check if an element passes a test.\n * @param {unknown} this\n *   The given context.\n * @param {Element} element\n *   An element.\n * @param {number | undefined} [index]\n *   Position of `element` in its parent.\n * @param {Parents | undefined} [parent]\n *   Parent of `element`.\n * @returns {boolean | undefined | void}\n *   Whether this element passes the test.\n *\n *   Note: `void` is included until TS sees no return as `undefined`.\n */\n\n/**\n * Check if `element` is an `Element` and whether it passes the given test.\n *\n * @param element\n *   Thing to check, typically `element`.\n * @param test\n *   Check for a specific element.\n * @param index\n *   Position of `element` in its parent.\n * @param parent\n *   Parent of `element`.\n * @param context\n *   Context object (`this`) to call `test` with.\n * @returns\n *   Whether `element` is an `Element` and passes a test.\n * @throws\n *   When an incorrect `test`, `index`, or `parent` is given; there is no error\n *   thrown when `element` is not a node or not an element.\n */\nexport const isElement =\n  // Note: overloads in JSDoc can\u2019t yet use different `@template`s.\n  /**\n   * @type {(\n   *   (<Condition extends TestFunction>(element: unknown, test: Condition, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element & Predicate<Condition, Element>) &\n   *   (<Condition extends string>(element: unknown, test: Condition, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element & {tagName: Condition}) &\n   *   ((element?: null | undefined) => false) &\n   *   ((element: unknown, test?: null | undefined, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element) &\n   *   ((element: unknown, test?: Test, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => boolean)\n   * )}\n   */\n  (\n    /**\n     * @param {unknown} [element]\n     * @param {Test | undefined} [test]\n     * @param {number | null | undefined} [index]\n     * @param {Parents | null | undefined} [parent]\n     * @param {unknown} [context]\n     * @returns {boolean}\n     */\n    // eslint-disable-next-line max-params\n    function (element, test, index, parent, context) {\n      const check = convertElement(test)\n\n      if (\n        index !== null &&\n        index !== undefined &&\n        (typeof index !== 'number' ||\n          index < 0 ||\n          index === Number.POSITIVE_INFINITY)\n      ) {\n        throw new Error('Expected positive finite `index`')\n      }\n\n      if (\n        parent !== null &&\n        parent !== undefined &&\n        (!parent.type || !parent.children)\n      ) {\n        throw new Error('Expected valid `parent`')\n      }\n\n      if (\n        (index === null || index === undefined) !==\n        (parent === null || parent === undefined)\n      ) {\n        throw new Error('Expected both `index` and `parent`')\n      }\n\n      return looksLikeAnElement(element)\n        ? check.call(context, element, index, parent)\n        : false\n    }\n  )\n\n/**\n * Generate a check from a test.\n *\n * Useful if you\u2019re going to test many nodes, for example when creating a\n * utility where something else passes a compatible test.\n *\n * The created function is a bit faster because it expects valid input only:\n * an `element`, `index`, and `parent`.\n *\n * @param test\n *   A test for a specific element.\n * @returns\n *   A check.\n */\nexport const convertElement =\n  // Note: overloads in JSDoc can\u2019t yet use different `@template`s.\n  /**\n   * @type {(\n   *   (<Condition extends TestFunction>(test: Condition) => (element: unknown, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element & Predicate<Condition, Element>) &\n   *   (<Condition extends string>(test: Condition) => (element: unknown, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element & {tagName: Condition}) &\n   *   ((test?: null | undefined) => (element?: unknown, index?: number | null | undefined, parent?: Parents | null | undefined, context?: unknown) => element is Element) &\n   *   ((test?: Test) => Check)\n   * )}\n   */\n  (\n    /**\n     * @param {Test | null | undefined} [test]\n     * @returns {Check}\n     */\n    function (test) {\n      if (test === null || test === undefined) {\n        return element\n      }\n\n      if (typeof test === 'string') {\n        return tagNameFactory(test)\n      }\n\n      // Assume array.\n      if (typeof test === 'object') {\n        return anyFactory(test)\n      }\n\n      if (typeof test === 'function') {\n        return castFactory(test)\n      }\n\n      throw new Error('Expected function, string, or array as `test`')\n    }\n  )\n\n/**\n * Handle multiple tests.\n *\n * @param {Array<TestFunction | string>} tests\n * @returns {Check}\n */\nfunction anyFactory(tests) {\n  /** @type {Array<Check>} */\n  const checks = []\n  let index = -1\n\n  while (++index < tests.length) {\n    checks[index] = convertElement(tests[index])\n  }\n\n  return castFactory(any)\n\n  /**\n   * @this {unknown}\n   * @type {TestFunction}\n   */\n  function any(...parameters) {\n    let index = -1\n\n    while (++index < checks.length) {\n      if (checks[index].apply(this, parameters)) return true\n    }\n\n    return false\n  }\n}\n\n/**\n * Turn a string into a test for an element with a certain type.\n *\n * @param {string} check\n * @returns {Check}\n */\nfunction tagNameFactory(check) {\n  return castFactory(tagName)\n\n  /**\n   * @param {Element} element\n   * @returns {boolean}\n   */\n  function tagName(element) {\n    return element.tagName === check\n  }\n}\n\n/**\n * Turn a custom test into a test for an element that passes that test.\n *\n * @param {TestFunction} testFunction\n * @returns {Check}\n */\nfunction castFactory(testFunction) {\n  return check\n\n  /**\n   * @this {unknown}\n   * @type {Check}\n   */\n  function check(value, index, parent) {\n    return Boolean(\n      looksLikeAnElement(value) &&\n        testFunction.call(\n          this,\n          value,\n          typeof index === 'number' ? index : undefined,\n          parent || undefined\n        )\n    )\n  }\n}\n\n/**\n * Make sure something is an element.\n *\n * @param {unknown} element\n * @returns {element is Element}\n */\nfunction element(element) {\n  return Boolean(\n    element &&\n      typeof element === 'object' &&\n      'type' in element &&\n      element.type === 'element' &&\n      'tagName' in element &&\n      typeof element.tagName === 'string'\n  )\n}\n\n/**\n * @param {unknown} value\n * @returns {value is Element}\n */\nfunction looksLikeAnElement(value) {\n  return (\n    value !== null &&\n    typeof value === 'object' &&\n    'type' in value &&\n    'tagName' in value\n  )\n}\n", "/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n * @typedef {import('hast').Properties} Properties\n * @typedef {import('hast').Root} Root\n *\n * @typedef {import('hast-util-is-element').Test} Test\n */\n\n/**\n * @typedef {'after' | 'append' | 'before' | 'prepend' | 'wrap'} Behavior\n *   Behavior.\n *\n * @callback Build\n *   Generate content.\n * @param {Readonly<Element>} element\n *   Current heading.\n * @returns {Array<ElementContent> | ElementContent}\n *   Content.\n *\n * @callback BuildProperties\n *   Generate properties.\n * @param {Readonly<Element>} element\n *   Current heading.\n * @returns {Properties}\n *   Properties.\n *\n * @typedef Options\n *   Configuration.\n * @property {Behavior | null | undefined} [behavior='prepend']\n *   How to create links (default: `'prepend'`).\n * @property {Readonly<ElementContent> | ReadonlyArray<ElementContent> | Build | null | undefined} [content]\n *   Content to insert in the link (default: if `'wrap'` then `undefined`,\n *   otherwise `<span class=\"icon icon-link\"></span>`);\n *   if `behavior` is `'wrap'` and `Build` is passed, its result replaces the\n *   existing content, otherwise the content is added after existing content.\n * @property {Readonly<ElementContent> | ReadonlyArray<ElementContent> | Build | null | undefined} [group]\n *   Content to wrap the heading and link with, if `behavior` is `'after'` or\n *   `'before'` (optional).\n * @property {Readonly<Properties> | BuildProperties | null | undefined} [headingProperties]\n *   Extra properties to set on the heading (optional).\n * @property {Readonly<Properties> | BuildProperties | null | undefined} [properties]\n *   Extra properties to set on the link when injecting (default:\n *   `{ariaHidden: true, tabIndex: -1}` if `'append'` or `'prepend'`, otherwise\n *   `undefined`).\n * @property {Test | null | undefined} [test]\n *   Extra test for which headings are linked (optional).\n */\n\n/**\n * @template T\n *   Kind.\n * @typedef {(\n *   T extends Record<any, any>\n *     ? {-readonly [k in keyof T]: Cloneable<T[k]>}\n *     : T\n * )} Cloneable\n *   Deep clone.\n *\n *   See: <https://github.com/microsoft/TypeScript-DOM-lib-generator/issues/1237#issuecomment-1345515448>\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {headingRank} from 'hast-util-heading-rank'\nimport {convertElement} from 'hast-util-is-element'\nimport {SKIP, visit} from 'unist-util-visit'\n\n/** @type {Element} */\nconst contentDefaults = {\n  type: 'element',\n  tagName: 'span',\n  properties: {className: ['icon', 'icon-link']},\n  children: []\n}\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/**\n * Add links from headings back to themselves.\n *\n * ###### Notes\n *\n * This plugin only applies to headings with `id`s.\n * Use `rehype-slug` to generate `id`s for headings that don\u2019t have them.\n *\n * Several behaviors are supported:\n *\n * *   `'prepend'` (default) \u2014 inject link before the heading text\n * *   `'append'` \u2014 inject link after the heading text\n * *   `'wrap'` \u2014 wrap the whole heading text with the link\n * *   `'before'` \u2014 insert link before the heading\n * *   `'after'` \u2014 insert link after the heading\n *\n * @param {Readonly<Options> | null | undefined} [options]\n *   Configuration (optional).\n * @returns\n *   Transform.\n */\nexport default function rehypeAutolinkHeadings(options) {\n  const settings = options || emptyOptions\n  let properties = settings.properties\n  const headingOroperties = settings.headingProperties\n  const behavior = settings.behavior || 'prepend'\n  const content = settings.content\n  const group = settings.group\n  const is = convertElement(settings.test)\n\n  /** @type {import('unist-util-visit').Visitor<Element>} */\n  let method\n\n  if (behavior === 'after' || behavior === 'before') {\n    method = around\n  } else if (behavior === 'wrap') {\n    method = wrap\n  } else {\n    method = inject\n\n    if (!properties) {\n      properties = {ariaHidden: 'true', tabIndex: -1}\n    }\n  }\n\n  /**\n   * Transform.\n   *\n   * @param {Root} tree\n   *   Tree.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  return function (tree) {\n    visit(tree, 'element', function (node, index, parent) {\n      if (headingRank(node) && node.properties.id && is(node, index, parent)) {\n        Object.assign(node.properties, toProperties(headingOroperties, node))\n        return method(node, index, parent)\n      }\n    })\n  }\n\n  /** @type {import('unist-util-visit').Visitor<Element>} */\n  function inject(node) {\n    const children = toChildren(content || contentDefaults, node)\n    node.children[behavior === 'prepend' ? 'unshift' : 'push'](\n      create(node, toProperties(properties, node), children)\n    )\n\n    return [SKIP]\n  }\n\n  /** @type {import('unist-util-visit').Visitor<Element>} */\n  function around(node, index, parent) {\n    /* c8 ignore next -- uncommon */\n    if (typeof index !== 'number' || !parent) return\n\n    const children = toChildren(content || contentDefaults, node)\n    const link = create(node, toProperties(properties, node), children)\n    let nodes = behavior === 'before' ? [link, node] : [node, link]\n\n    if (group) {\n      const grouping = toNode(group, node)\n\n      if (grouping && !Array.isArray(grouping) && grouping.type === 'element') {\n        grouping.children = nodes\n        nodes = [grouping]\n      }\n    }\n\n    parent.children.splice(index, 1, ...nodes)\n\n    return [SKIP, index + nodes.length]\n  }\n\n  /** @type {import('unist-util-visit').Visitor<Element>} */\n  function wrap(node) {\n    /** @type {Array<ElementContent>} */\n    let before = node.children\n    /** @type {Array<ElementContent> | ElementContent} */\n    let after = []\n\n    if (typeof content === 'function') {\n      before = []\n      after = content(node)\n    } else if (content) {\n      after = clone(content)\n    }\n\n    node.children = [\n      create(\n        node,\n        toProperties(properties, node),\n        Array.isArray(after) ? [...before, ...after] : [...before, after]\n      )\n    ]\n\n    return [SKIP]\n  }\n}\n\n/**\n * Deep clone.\n *\n * @template T\n *   Kind.\n * @param {T} thing\n *   Thing to clone.\n * @returns {Cloneable<T>}\n *   Cloned thing.\n */\nfunction clone(thing) {\n  // Cast because it\u2019s mutable now.\n  return /** @type {Cloneable<T>} */ (structuredClone(thing))\n}\n\n/**\n * Create an `a`.\n *\n * @param {Readonly<Element>} node\n *   Related heading.\n * @param {Properties | undefined} properties\n *   Properties to set on the link.\n * @param {Array<ElementContent>} children\n *   Content.\n * @returns {Element}\n *   Link.\n */\nfunction create(node, properties, children) {\n  return {\n    type: 'element',\n    tagName: 'a',\n    properties: {...properties, href: '#' + node.properties.id},\n    children\n  }\n}\n\n/**\n * Turn into children.\n *\n * @param {Readonly<ElementContent> | ReadonlyArray<ElementContent> | Build} value\n *   Content.\n * @param {Readonly<Element>} node\n *   Related heading.\n * @returns {Array<ElementContent>}\n *   Children.\n */\nfunction toChildren(value, node) {\n  const result = toNode(value, node)\n  return Array.isArray(result) ? result : [result]\n}\n\n/**\n * Turn into a node.\n *\n * @param {Readonly<ElementContent> | ReadonlyArray<ElementContent> | Build} value\n *   Content.\n * @param {Readonly<Element>} node\n *   Related heading.\n * @returns {Array<ElementContent> | ElementContent}\n *   Node.\n */\nfunction toNode(value, node) {\n  if (typeof value === 'function') return value(node)\n  return clone(value)\n}\n\n/**\n * Turn into properties.\n *\n * @param {Readonly<Properties> | BuildProperties | null | undefined} value\n *   Properties.\n * @param {Readonly<Element>} node\n *   Related heading.\n * @returns {Properties}\n *   Properties.\n */\nfunction toProperties(value, node) {\n  if (typeof value === 'function') return value(node)\n  return value ? clone(value) : {}\n}\n", "import type { Plugin, Pluggable } from 'unified';\nimport type { Root, RootContent, Literal } from 'hast';\nimport { visit } from 'unist-util-visit';\n\n/**\n * Raw string of HTML embedded into HTML AST.\n */\nexport interface Raw extends Literal {\n  /**\n   * Node type.\n   */\n  type: 'raw'\n}\n\n// Register nodes in content.\ndeclare module 'hast' {\n  interface RootContentMap {\n    /**\n     * Raw string of HTML embedded into HTML AST.\n     */\n    raw: Raw\n  }\n  interface ElementContentMap {\n    /**\n     * Raw string of HTML embedded into HTML AST.\n     */\n    raw: Raw\n  }\n}\n\n\nexport type RehypeIgnoreOptions = {\n  /**\n   *  Character to use for opening delimiter, by default `rehype:ignore:start`\n   */\n  openDelimiter?: string;\n  /**\n   * Character to use for closing delimiter, by default `rehype:ignore:end`\n   */\n  closeDelimiter?: string;\n}\n\nconst rehypeIgnore: Plugin<[RehypeIgnoreOptions?], Root> = (options = {}) => {\n  const { openDelimiter = 'rehype:ignore:start', closeDelimiter = 'rehype:ignore:end' } = options;\n  return (tree) => {\n    visit(tree, (node: Root | RootContent, index, parent) => {\n      if (node.type === 'element' || node.type === 'root') {\n        // const start = node.children.findIndex((item) => item.type === 'comment' && item.value === openDelimiter);\n        // const end = node.children.findIndex((item) => item.type === 'comment' && item.value === closeDelimiter);\n        // if (start > -1 && end > -1) {\n        //   node.children = node.children.filter((_, idx) => idx < start || idx > end);\n        // }\n        let start = false;\n        node.children = node.children.filter((item) => {\n          if (item.type === 'raw' || item.type === 'comment') {\n            let str =  (item.value || '').trim();\n            str = str.replace(/^<!--(.*?)-->/, '$1')\n            if (str === openDelimiter) {\n                start = true;\n                return false;\n            }\n            if (str === closeDelimiter) {\n                start = false;\n                return false;\n            }\n          }\n          \n          return !start;\n        })\n      }\n    });\n  }\n}\n\nexport default rehypeIgnore;\n", "export var octiconLink = {\n  type: 'element',\n  tagName: 'svg',\n  properties: {\n    className: 'octicon octicon-link',\n    viewBox: '0 0 16 16',\n    version: '1.1',\n    width: '16',\n    height: '16',\n    ariaHidden: 'true'\n  },\n  children: [{\n    type: 'element',\n    tagName: 'path',\n    children: [],\n    properties: {\n      fillRule: 'evenodd',\n      d: 'M7.775 3.275a.75.75 0 001.06 1.06l1.25-1.25a2 2 0 112.83 2.83l-2.5 2.5a2 2 0 01-2.83 0 .75.75 0 00-1.06 1.06 3.5 3.5 0 004.95 0l2.5-2.5a3.5 3.5 0 00-4.95-4.95l-1.25 1.25zm-4.69 9.64a2 2 0 010-2.83l2.5-2.5a2 2 0 012.83 0 .75.75 0 001.06-1.06 3.5 3.5 0 00-4.95 0l-2.5 2.5a3.5 3.5 0 004.95 4.95l1.25-1.25a.75.75 0 00-1.06-1.06l-1.25 1.25a2 2 0 01-2.83 0z'\n    }\n  }]\n};", "export function copyElement(str) {\n  if (str === void 0) {\n    str = '';\n  }\n  return {\n    type: 'element',\n    tagName: 'div',\n    properties: {\n      class: 'copied',\n      'data-code': str\n    },\n    children: [{\n      type: 'element',\n      tagName: 'svg',\n      properties: {\n        className: 'octicon-copy',\n        ariaHidden: 'true',\n        viewBox: '0 0 16 16',\n        fill: 'currentColor',\n        height: 12,\n        width: 12\n      },\n      children: [{\n        type: 'element',\n        tagName: 'path',\n        properties: {\n          fillRule: 'evenodd',\n          d: 'M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z'\n        },\n        children: []\n      }, {\n        type: 'element',\n        tagName: 'path',\n        properties: {\n          fillRule: 'evenodd',\n          d: 'M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z'\n        },\n        children: []\n      }]\n    }, {\n      type: 'element',\n      tagName: 'svg',\n      properties: {\n        className: 'octicon-check',\n        ariaHidden: 'true',\n        viewBox: '0 0 16 16',\n        fill: 'currentColor',\n        height: 12,\n        width: 12\n      },\n      children: [{\n        type: 'element',\n        tagName: 'path',\n        properties: {\n          fillRule: 'evenodd',\n          d: 'M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z'\n        },\n        children: []\n      }]\n    }]\n  };\n}", "import _extends from \"@babel/runtime/helpers/extends\";\nimport slug from 'rehype-slug';\nimport headings from 'rehype-autolink-headings';\nimport rehypeIgnore from 'rehype-ignore';\nimport { getCodeString } from 'rehype-rewrite';\nimport { octiconLink } from \"./nodes/octiconLink.js\";\nimport { copyElement } from \"./nodes/copy.js\";\nexport var rehypeRewriteHandle = (disableCopy, rewrite) => (node, index, parent) => {\n  if (node.type === 'element' && parent && parent.type === 'root' && /h(1|2|3|4|5|6)/.test(node.tagName)) {\n    var child = node.children && node.children[0];\n    if (child && child.properties && child.properties.ariaHidden === 'true') {\n      child.properties = _extends({\n        class: 'anchor'\n      }, child.properties);\n      child.children = [octiconLink];\n    }\n  }\n  if (node.type === 'element' && node.tagName === 'pre' && !disableCopy) {\n    var code = getCodeString(node.children);\n    node.children.push(copyElement(code));\n  }\n  rewrite && rewrite(node, index === null ? undefined : index, parent === null ? undefined : parent);\n};\nexport var defaultRehypePlugins = [slug, headings, rehypeIgnore];", "function _taggedTemplateLiteralLoose(e, t) {\n  return t || (t = e.slice(0)), e.raw = t, e;\n}\nexport { _taggedTemplateLiteralLoose as default };", "import _taggedTemplateLiteralLoose from \"@babel/runtime/helpers/taggedTemplateLiteralLoose\";\nvar _templateObject;\nimport React, { useContext, useEffect } from 'react';\nimport { rehype } from 'rehype';\nimport rehypePrism from 'rehype-prism-plus';\nimport { EditorContext } from \"../../Context.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction html2Escape(sHtml) {\n  return sHtml\n  // .replace(/```(\\w+)?([\\s\\S]*?)(\\s.+)?```/g, (str: string) => {\n  //   return str.replace(\n  //     /[<&\"]/g,\n  //     (c: string) => (({ '<': '&lt;', '>': '&gt;', '&': '&amp;', '\"': '&quot;' } as Record<string, string>)[c]),\n  //   );\n  // })\n  .replace(/[<&\"]/g, c => ({\n    '<': '&lt;',\n    '>': '&gt;',\n    '&': '&amp;',\n    '\"': '&quot;'\n  })[c]);\n}\nexport default function Markdown(props) {\n  var prefixCls = props.prefixCls;\n  var _useContext = useContext(EditorContext),\n    _useContext$markdown = _useContext.markdown,\n    markdown = _useContext$markdown === void 0 ? '' : _useContext$markdown,\n    highlightEnable = _useContext.highlightEnable,\n    dispatch = _useContext.dispatch;\n  var preRef = /*#__PURE__*/React.createRef();\n  useEffect(() => {\n    if (preRef.current && dispatch) {\n      dispatch({\n        textareaPre: preRef.current\n      });\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n  if (!markdown) {\n    return /*#__PURE__*/_jsx(\"pre\", {\n      ref: preRef,\n      className: prefixCls + \"-text-pre wmde-markdown-color\"\n    });\n  }\n  var mdStr = \"<pre class=\\\"language-markdown \" + prefixCls + \"-text-pre wmde-markdown-color\\\"><code class=\\\"language-markdown\\\">\" + html2Escape(String.raw(_templateObject || (_templateObject = _taggedTemplateLiteralLoose([\"\", \"\"])), markdown)) + \"\\n</code></pre>\";\n  if (highlightEnable) {\n    try {\n      mdStr = rehype().data('settings', {\n        fragment: true\n      })\n      // https://github.com/uiwjs/react-md-editor/issues/593\n      // @ts-ignore\n      .use(rehypePrism, {\n        ignoreMissing: true\n      }).processSync(mdStr).toString();\n    } catch (error) {}\n  }\n  return /*#__PURE__*/React.createElement('div', {\n    className: 'wmde-markdown-color',\n    dangerouslySetInnerHTML: {\n      __html: mdStr || ''\n    }\n  });\n}", "/**\n * @typedef ErrorInfo\n *   Info on a `parse5` error.\n * @property {string} reason\n *   Reason of error.\n * @property {string} description\n *   More info on error.\n * @property {false} [url]\n *   Turn off if this is not documented in the html5 spec (optional).\n */\n\nexport const errors = {\n  /** @type {ErrorInfo} */\n  abandonedHeadElementChild: {\n    reason: 'Unexpected metadata element after head',\n    description:\n      'Unexpected element after head. Expected the element before `</head>`',\n    url: false\n  },\n  /** @type {ErrorInfo} */\n  abruptClosingOfEmptyComment: {\n    reason: 'Unexpected abruptly closed empty comment',\n    description: 'Unexpected `>` or `->`. Expected `-->` to close comments'\n  },\n  /** @type {ErrorInfo} */\n  abruptDoctypePublicIdentifier: {\n    reason: 'Unexpected abruptly closed public identifier',\n    description:\n      'Unexpected `>`. Expected a closing `\"` or `\\'` after the public identifier'\n  },\n  /** @type {ErrorInfo} */\n  abruptDoctypeSystemIdentifier: {\n    reason: 'Unexpected abruptly closed system identifier',\n    description:\n      'Unexpected `>`. Expected a closing `\"` or `\\'` after the identifier identifier'\n  },\n  /** @type {ErrorInfo} */\n  absenceOfDigitsInNumericCharacterReference: {\n    reason: 'Unexpected non-digit at start of numeric character reference',\n    description:\n      'Unexpected `%c`. Expected `[0-9]` for decimal references or `[0-9a-fA-F]` for hexadecimal references'\n  },\n  /** @type {ErrorInfo} */\n  cdataInHtmlContent: {\n    reason: 'Unexpected CDATA section in HTML',\n    description:\n      'Unexpected `<![CDATA[` in HTML. Remove it, use a comment, or encode special characters instead'\n  },\n  /** @type {ErrorInfo} */\n  characterReferenceOutsideUnicodeRange: {\n    reason: 'Unexpected too big numeric character reference',\n    description:\n      'Unexpectedly high character reference. Expected character references to be at most hexadecimal 10ffff (or decimal 1114111)'\n  },\n  /** @type {ErrorInfo} */\n  closingOfElementWithOpenChildElements: {\n    reason: 'Unexpected closing tag with open child elements',\n    description:\n      'Unexpectedly closing tag. Expected other tags to be closed first',\n    url: false\n  },\n  /** @type {ErrorInfo} */\n  controlCharacterInInputStream: {\n    reason: 'Unexpected control character',\n    description:\n      'Unexpected control character `%x`. Expected a non-control code point, 0x00, or ASCII whitespace'\n  },\n  /** @type {ErrorInfo} */\n  controlCharacterReference: {\n    reason: 'Unexpected control character reference',\n    description:\n      'Unexpectedly control character in reference. Expected a non-control code point, 0x00, or ASCII whitespace'\n  },\n  /** @type {ErrorInfo} */\n  disallowedContentInNoscriptInHead: {\n    reason: 'Disallowed content inside `<noscript>` in `<head>`',\n    description:\n      'Unexpected text character `%c`. Only use text in `<noscript>`s in `<body>`',\n    url: false\n  },\n  /** @type {ErrorInfo} */\n  duplicateAttribute: {\n    reason: 'Unexpected duplicate attribute',\n    description:\n      'Unexpectedly double attribute. Expected attributes to occur only once'\n  },\n  /** @type {ErrorInfo} */\n  endTagWithAttributes: {\n    reason: 'Unexpected attribute on closing tag',\n    description: 'Unexpected attribute. Expected `>` instead'\n  },\n  /** @type {ErrorInfo} */\n  endTagWithTrailingSolidus: {\n    reason: 'Unexpected slash at end of closing tag',\n    description: 'Unexpected `%c-1`. Expected `>` instead'\n  },\n  /** @type {ErrorInfo} */\n  endTagWithoutMatchingOpenElement: {\n    reason: 'Unexpected unopened end tag',\n    description: 'Unexpected end tag. Expected no end tag or another end tag',\n    url: false\n  },\n  /** @type {ErrorInfo} */\n  eofBeforeTagName: {\n    reason: 'Unexpected end of file',\n    description: 'Unexpected end of file. Expected tag name instead'\n  },\n  /** @type {ErrorInfo} */\n  eofInCdata: {\n    reason: 'Unexpected end of file in CDATA',\n    description: 'Unexpected end of file. Expected `]]>` to close the CDATA'\n  },\n  /** @type {ErrorInfo} */\n  eofInComment: {\n    reason: 'Unexpected end of file in comment',\n    description: 'Unexpected end of file. Expected `-->` to close the comment'\n  },\n  /** @type {ErrorInfo} */\n  eofInDoctype: {\n    reason: 'Unexpected end of file in doctype',\n    description:\n      'Unexpected end of file. Expected a valid doctype (such as `<!doctype html>`)'\n  },\n  /** @type {ErrorInfo} */\n  eofInElementThatCanContainOnlyText: {\n    reason: 'Unexpected end of file in element that can only contain text',\n    description: 'Unexpected end of file. Expected text or a closing tag',\n    url: false\n  },\n  /** @type {ErrorInfo} */\n  eofInScriptHtmlCommentLikeText: {\n    reason: 'Unexpected end of file in comment inside script',\n    description: 'Unexpected end of file. Expected `-->` to close the comment'\n  },\n  /** @type {ErrorInfo} */\n  eofInTag: {\n    reason: 'Unexpected end of file in tag',\n    description: 'Unexpected end of file. Expected `>` to close the tag'\n  },\n  /** @type {ErrorInfo} */\n  incorrectlyClosedComment: {\n    reason: 'Incorrectly closed comment',\n    description: 'Unexpected `%c-1`. Expected `-->` to close the comment'\n  },\n  /** @type {ErrorInfo} */\n  incorrectlyOpenedComment: {\n    reason: 'Incorrectly opened comment',\n    description: 'Unexpected `%c`. Expected `<!--` to open the comment'\n  },\n  /** @type {ErrorInfo} */\n  invalidCharacterSequenceAfterDoctypeName: {\n    reason: 'Invalid sequence after doctype name',\n    description: 'Unexpected sequence at `%c`. Expected `public` or `system`'\n  },\n  /** @type {ErrorInfo} */\n  invalidFirstCharacterOfTagName: {\n    reason: 'Invalid first character in tag name',\n    description: 'Unexpected `%c`. Expected an ASCII letter instead'\n  },\n  /** @type {ErrorInfo} */\n  misplacedDoctype: {\n    reason: 'Misplaced doctype',\n    description: 'Unexpected doctype. Expected doctype before head',\n    url: false\n  },\n  /** @type {ErrorInfo} */\n  misplacedStartTagForHeadElement: {\n    reason: 'Misplaced `<head>` start tag',\n    description:\n      'Unexpected start tag `<head>`. Expected `<head>` directly after doctype',\n    url: false\n  },\n  /** @type {ErrorInfo} */\n  missingAttributeValue: {\n    reason: 'Missing attribute value',\n    description:\n      'Unexpected `%c-1`. Expected an attribute value or no `%c-1` instead'\n  },\n  /** @type {ErrorInfo} */\n  missingDoctype: {\n    reason: 'Missing doctype before other content',\n    description: 'Expected a `<!doctype html>` before anything else',\n    url: false\n  },\n  /** @type {ErrorInfo} */\n  missingDoctypeName: {\n    reason: 'Missing doctype name',\n    description: 'Unexpected doctype end at `%c`. Expected `html` instead'\n  },\n  /** @type {ErrorInfo} */\n  missingDoctypePublicIdentifier: {\n    reason: 'Missing public identifier in doctype',\n    description: 'Unexpected `%c`. Expected identifier for `public` instead'\n  },\n  /** @type {ErrorInfo} */\n  missingDoctypeSystemIdentifier: {\n    reason: 'Missing system identifier in doctype',\n    description:\n      'Unexpected `%c`. Expected identifier for `system` instead (suggested: `\"about:legacy-compat\"`)'\n  },\n  /** @type {ErrorInfo} */\n  missingEndTagName: {\n    reason: 'Missing name in end tag',\n    description: 'Unexpected `%c`. Expected an ASCII letter instead'\n  },\n  /** @type {ErrorInfo} */\n  missingQuoteBeforeDoctypePublicIdentifier: {\n    reason: 'Missing quote before public identifier in doctype',\n    description: 'Unexpected `%c`. Expected `\"` or `\\'` instead'\n  },\n  /** @type {ErrorInfo} */\n  missingQuoteBeforeDoctypeSystemIdentifier: {\n    reason: 'Missing quote before system identifier in doctype',\n    description: 'Unexpected `%c`. Expected `\"` or `\\'` instead'\n  },\n  /** @type {ErrorInfo} */\n  missingSemicolonAfterCharacterReference: {\n    reason: 'Missing semicolon after character reference',\n    description: 'Unexpected `%c`. Expected `;` instead'\n  },\n  /** @type {ErrorInfo} */\n  missingWhitespaceAfterDoctypePublicKeyword: {\n    reason: 'Missing whitespace after public identifier in doctype',\n    description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n  },\n  /** @type {ErrorInfo} */\n  missingWhitespaceAfterDoctypeSystemKeyword: {\n    reason: 'Missing whitespace after system identifier in doctype',\n    description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n  },\n  /** @type {ErrorInfo} */\n  missingWhitespaceBeforeDoctypeName: {\n    reason: 'Missing whitespace before doctype name',\n    description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n  },\n  /** @type {ErrorInfo} */\n  missingWhitespaceBetweenAttributes: {\n    reason: 'Missing whitespace between attributes',\n    description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n  },\n  /** @type {ErrorInfo} */\n  missingWhitespaceBetweenDoctypePublicAndSystemIdentifiers: {\n    reason:\n      'Missing whitespace between public and system identifiers in doctype',\n    description: 'Unexpected `%c`. Expected ASCII whitespace instead'\n  },\n  /** @type {ErrorInfo} */\n  nestedComment: {\n    reason: 'Unexpected nested comment',\n    description: 'Unexpected `<!--`. Expected `-->`'\n  },\n  /** @type {ErrorInfo} */\n  nestedNoscriptInHead: {\n    reason: 'Unexpected nested `<noscript>` in `<head>`',\n    description:\n      'Unexpected `<noscript>`. Expected a closing tag or a meta element',\n    url: false\n  },\n  /** @type {ErrorInfo} */\n  nonConformingDoctype: {\n    reason: 'Unexpected non-conforming doctype declaration',\n    description:\n      'Expected `<!doctype html>` or `<!doctype html system \"about:legacy-compat\">`',\n    url: false\n  },\n  /** @type {ErrorInfo} */\n  nonVoidHtmlElementStartTagWithTrailingSolidus: {\n    reason: 'Unexpected trailing slash on start tag of non-void element',\n    description: 'Unexpected `/`. Expected `>` instead'\n  },\n  /** @type {ErrorInfo} */\n  noncharacterCharacterReference: {\n    reason:\n      'Unexpected noncharacter code point referenced by character reference',\n    description: 'Unexpected code point. Do not use noncharacters in HTML'\n  },\n  /** @type {ErrorInfo} */\n  noncharacterInInputStream: {\n    reason: 'Unexpected noncharacter character',\n    description: 'Unexpected code point `%x`. Do not use noncharacters in HTML'\n  },\n  /** @type {ErrorInfo} */\n  nullCharacterReference: {\n    reason: 'Unexpected NULL character referenced by character reference',\n    description: 'Unexpected code point. Do not use NULL characters in HTML'\n  },\n  /** @type {ErrorInfo} */\n  openElementsLeftAfterEof: {\n    reason: 'Unexpected end of file',\n    description: 'Unexpected end of file. Expected closing tag instead',\n    url: false\n  },\n  /** @type {ErrorInfo} */\n  surrogateCharacterReference: {\n    reason: 'Unexpected surrogate character referenced by character reference',\n    description:\n      'Unexpected code point. Do not use lone surrogate characters in HTML'\n  },\n  /** @type {ErrorInfo} */\n  surrogateInInputStream: {\n    reason: 'Unexpected surrogate character',\n    description:\n      'Unexpected code point `%x`. Do not use lone surrogate characters in HTML'\n  },\n  /** @type {ErrorInfo} */\n  unexpectedCharacterAfterDoctypeSystemIdentifier: {\n    reason: 'Invalid character after system identifier in doctype',\n    description: 'Unexpected character at `%c`. Expected `>`'\n  },\n  /** @type {ErrorInfo} */\n  unexpectedCharacterInAttributeName: {\n    reason: 'Unexpected character in attribute name',\n    description:\n      'Unexpected `%c`. Expected whitespace, `/`, `>`, `=`, or probably an ASCII letter'\n  },\n  /** @type {ErrorInfo} */\n  unexpectedCharacterInUnquotedAttributeValue: {\n    reason: 'Unexpected character in unquoted attribute value',\n    description: 'Unexpected `%c`. Quote the attribute value to include it'\n  },\n  /** @type {ErrorInfo} */\n  unexpectedEqualsSignBeforeAttributeName: {\n    reason: 'Unexpected equals sign before attribute name',\n    description: 'Unexpected `%c`. Add an attribute name before it'\n  },\n  /** @type {ErrorInfo} */\n  unexpectedNullCharacter: {\n    reason: 'Unexpected NULL character',\n    description:\n      'Unexpected code point `%x`. Do not use NULL characters in HTML'\n  },\n  /** @type {ErrorInfo} */\n  unexpectedQuestionMarkInsteadOfTagName: {\n    reason: 'Unexpected question mark instead of tag name',\n    description: 'Unexpected `%c`. Expected an ASCII letter instead'\n  },\n  /** @type {ErrorInfo} */\n  unexpectedSolidusInTag: {\n    reason: 'Unexpected slash in tag',\n    description:\n      'Unexpected `%c-1`. Expected it followed by `>` or in a quoted attribute value'\n  },\n  /** @type {ErrorInfo} */\n  unknownNamedCharacterReference: {\n    reason: 'Unexpected unknown named character reference',\n    description:\n      'Unexpected character reference. Expected known named character references'\n  }\n}\n", "/**\n * @import {Root} from 'hast'\n * @import {ParserError} from 'parse5'\n * @import {Value} from 'vfile'\n * @import {ErrorCode, Options} from './types.js'\n */\n\nimport {ok as assert} from 'devlop'\nimport {fromParse5} from 'hast-util-from-parse5'\nimport {parse, parseFragment} from 'parse5'\nimport {VFile} from 'vfile'\nimport {VFileMessage} from 'vfile-message'\nimport {errors} from './errors.js'\n\nconst base = 'https://html.spec.whatwg.org/multipage/parsing.html#parse-error-'\n\nconst dashToCamelRe = /-[a-z]/g\nconst formatCRe = /%c(?:([-+])(\\d+))?/g\nconst formatXRe = /%x/g\n\nconst fatalities = {2: true, 1: false, 0: null}\n\n/** @type {Readonly<Options>} */\nconst emptyOptions = {}\n\n/**\n * Turn serialized HTML into a hast tree.\n *\n * @param {VFile | Value} value\n *   Serialized HTML to parse.\n * @param {Readonly<Options> | null | undefined} [options]\n *   Configuration (optional).\n * @returns {Root}\n *   Tree.\n */\nexport function fromHtml(value, options) {\n  const settings = options || emptyOptions\n  const onerror = settings.onerror\n  const file = value instanceof VFile ? value : new VFile(value)\n  const parseFunction = settings.fragment ? parseFragment : parse\n  const document = String(file)\n  const p5Document = parseFunction(document, {\n    sourceCodeLocationInfo: true,\n    // Note `parse5` types currently do not allow `undefined`.\n    onParseError: settings.onerror ? internalOnerror : null,\n    scriptingEnabled: false\n  })\n\n  // `parse5` returns document which are always mapped to roots.\n  return /** @type {Root} */ (\n    fromParse5(p5Document, {\n      file,\n      space: settings.space,\n      verbose: settings.verbose\n    })\n  )\n\n  /**\n   * Handle a parse error.\n   *\n   * @param {ParserError} error\n   *   Parse5 error.\n   * @returns {undefined}\n   *   Nothing.\n   */\n  function internalOnerror(error) {\n    const code = error.code\n    const name = camelcase(code)\n    const setting = settings[name]\n    const config = setting === null || setting === undefined ? true : setting\n    const level = typeof config === 'number' ? config : config ? 1 : 0\n\n    if (level) {\n      const info = errors[name]\n      assert(info, 'expected known error from `parse5`')\n\n      const message = new VFileMessage(format(info.reason), {\n        place: {\n          start: {\n            line: error.startLine,\n            column: error.startCol,\n            offset: error.startOffset\n          },\n          end: {\n            line: error.endLine,\n            column: error.endCol,\n            offset: error.endOffset\n          }\n        },\n        ruleId: code,\n        source: 'hast-util-from-html'\n      })\n\n      if (file.path) {\n        message.file = file.path\n        message.name = file.path + ':' + message.name\n      }\n\n      message.fatal = fatalities[level]\n      message.note = format(info.description)\n      message.url = info.url === false ? undefined : base + code\n\n      assert(onerror, '`internalOnerror` is not passed if `onerror` is not set')\n      onerror(message)\n    }\n\n    /**\n     * Format a human readable string about an error.\n     *\n     * @param {string} value\n     *   Value to format.\n     * @returns {string}\n     *   Formatted.\n     */\n    function format(value) {\n      return value.replace(formatCRe, formatC).replace(formatXRe, formatX)\n\n      /**\n       * Format the character.\n       *\n       * @param {string} _\n       *   Match.\n       * @param {string} $1\n       *   Sign (`-` or `+`, optional).\n       * @param {string} $2\n       *   Offset.\n       * @returns {string}\n       *   Formatted.\n       */\n      function formatC(_, $1, $2) {\n        const offset =\n          ($2 ? Number.parseInt($2, 10) : 0) * ($1 === '-' ? -1 : 1)\n        const char = document.charAt(error.startOffset + offset)\n        return visualizeCharacter(char)\n      }\n\n      /**\n       * Format the character code.\n       *\n       * @returns {string}\n       *   Formatted.\n       */\n      function formatX() {\n        return visualizeCharacterCode(document.charCodeAt(error.startOffset))\n      }\n    }\n  }\n}\n\n/**\n * @param {string} value\n *   Error code in dash case.\n * @returns {ErrorCode}\n *   Error code in camelcase.\n */\nfunction camelcase(value) {\n  // This should match an error code.\n  return /** @type {ErrorCode} */ (value.replace(dashToCamelRe, dashToCamel))\n}\n\n/**\n * @param {string} $0\n *   Match.\n * @returns {string}\n *   Camelcased.\n */\nfunction dashToCamel($0) {\n  return $0.charAt(1).toUpperCase()\n}\n\n/**\n * @param {string} char\n *   Character.\n * @returns {string}\n *   Formatted.\n */\nfunction visualizeCharacter(char) {\n  return char === '`' ? '` ` `' : char\n}\n\n/**\n * @param {number} charCode\n *   Character code.\n * @returns {string}\n *   Formatted.\n */\nfunction visualizeCharacterCode(charCode) {\n  return '0x' + charCode.toString(16).toUpperCase()\n}\n", "/**\n * @import {Root} from 'hast'\n * @import {Options as FromHtmlOptions} from 'hast-util-from-html'\n * @import {Parser, Processor} from 'unified'\n */\n\n/**\n * @typedef {Omit<FromHtmlOptions, 'onerror'> & RehypeParseFields} Options\n *   Configuration.\n *\n * @typedef RehypeParseFields\n *   Extra fields.\n * @property {boolean | null | undefined} [emitParseErrors=false]\n *   Whether to emit parse errors while parsing (default: `false`).\n *\n *   > \uD83D\uDC49 **Note**: parse errors are currently being added to HTML.\n *   > Not all errors emitted by parse5 (or us) are specced yet.\n *   > Some documentation may still be missing.\n */\n\nimport {fromHtml} from 'hast-util-from-html'\n\n/**\n * Plugin to add support for parsing from HTML.\n *\n * > \uD83D\uDC49 **Note**: this is not an XML parser.\n * > It supports SVG as embedded in HTML.\n * > It does not support the features available in XML.\n * > Passing SVG files might break but fragments of modern SVG should be fine.\n * > Use [`xast-util-from-xml`][xast-util-from-xml] to parse XML.\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {undefined}\n *   Nothing.\n */\nexport default function rehypeParse(options) {\n  /** @type {Processor<Root>} */\n  // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n  const self = this\n  const {emitParseErrors, ...settings} = {...self.data('settings'), ...options}\n\n  self.parser = parser\n\n  /**\n   * @type {Parser<Root>}\n   */\n  function parser(document, file) {\n    return fromHtml(document, {\n      ...settings,\n      onerror: emitParseErrors\n        ? function (message) {\n            if (file.path) {\n              message.name = file.path + ':' + message.name\n              message.file = file.path\n            }\n\n            file.messages.push(message)\n          }\n        : undefined\n    })\n  }\n}\n", "/**\n * @typedef CoreOptions\n * @property {ReadonlyArray<string>} [subset=[]]\n *   Whether to only escape the given subset of characters.\n * @property {boolean} [escapeOnly=false]\n *   Whether to only escape possibly dangerous characters.\n *   Those characters are `\"`, `&`, `'`, `<`, `>`, and `` ` ``.\n *\n * @typedef FormatOptions\n * @property {(code: number, next: number, options: CoreWithFormatOptions) => string} format\n *   Format strategy.\n *\n * @typedef {CoreOptions & FormatOptions & import('./util/format-smart.js').FormatSmartOptions} CoreWithFormatOptions\n */\n\nconst defaultSubsetRegex = /[\"&'<>`]/g\nconst surrogatePairsRegex = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g\nconst controlCharactersRegex =\n  // eslint-disable-next-line no-control-regex, unicorn/no-hex-escape\n  /[\\x01-\\t\\v\\f\\x0E-\\x1F\\x7F\\x81\\x8D\\x8F\\x90\\x9D\\xA0-\\uFFFF]/g\nconst regexEscapeRegex = /[|\\\\{}()[\\]^$+*?.]/g\n\n/** @type {WeakMap<ReadonlyArray<string>, RegExp>} */\nconst subsetToRegexCache = new WeakMap()\n\n/**\n * Encode certain characters in `value`.\n *\n * @param {string} value\n * @param {CoreWithFormatOptions} options\n * @returns {string}\n */\nexport function core(value, options) {\n  value = value.replace(\n    options.subset\n      ? charactersToExpressionCached(options.subset)\n      : defaultSubsetRegex,\n    basic\n  )\n\n  if (options.subset || options.escapeOnly) {\n    return value\n  }\n\n  return (\n    value\n      // Surrogate pairs.\n      .replace(surrogatePairsRegex, surrogate)\n      // BMP control characters (C0 except for LF, CR, SP; DEL; and some more\n      // non-ASCII ones).\n      .replace(controlCharactersRegex, basic)\n  )\n\n  /**\n   * @param {string} pair\n   * @param {number} index\n   * @param {string} all\n   */\n  function surrogate(pair, index, all) {\n    return options.format(\n      (pair.charCodeAt(0) - 0xd800) * 0x400 +\n        pair.charCodeAt(1) -\n        0xdc00 +\n        0x10000,\n      all.charCodeAt(index + 2),\n      options\n    )\n  }\n\n  /**\n   * @param {string} character\n   * @param {number} index\n   * @param {string} all\n   */\n  function basic(character, index, all) {\n    return options.format(\n      character.charCodeAt(0),\n      all.charCodeAt(index + 1),\n      options\n    )\n  }\n}\n\n/**\n * A wrapper function that caches the result of `charactersToExpression` with a WeakMap.\n * This can improve performance when tooling calls `charactersToExpression` repeatedly\n * with the same subset.\n *\n * @param {ReadonlyArray<string>} subset\n * @returns {RegExp}\n */\nfunction charactersToExpressionCached(subset) {\n  let cached = subsetToRegexCache.get(subset)\n\n  if (!cached) {\n    cached = charactersToExpression(subset)\n    subsetToRegexCache.set(subset, cached)\n  }\n\n  return cached\n}\n\n/**\n * @param {ReadonlyArray<string>} subset\n * @returns {RegExp}\n */\nfunction charactersToExpression(subset) {\n  /** @type {Array<string>} */\n  const groups = []\n  let index = -1\n\n  while (++index < subset.length) {\n    groups.push(subset[index].replace(regexEscapeRegex, '\\\\$&'))\n  }\n\n  return new RegExp('(?:' + groups.join('|') + ')', 'g')\n}\n", "const hexadecimalRegex = /[\\dA-Fa-f]/\n\n/**\n * Configurable ways to encode characters as hexadecimal references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @returns {string}\n */\nexport function toHexadecimal(code, next, omit) {\n  const value = '&#x' + code.toString(16).toUpperCase()\n  return omit && next && !hexadecimalRegex.test(String.fromCharCode(next))\n    ? value\n    : value + ';'\n}\n", "const decimalRegex = /\\d/\n\n/**\n * Configurable ways to encode characters as decimal references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @returns {string}\n */\nexport function toDecimal(code, next, omit) {\n  const value = '&#' + String(code)\n  return omit && next && !decimalRegex.test(String.fromCharCode(next))\n    ? value\n    : value + ';'\n}\n", "/**\n * Map of named character references from HTML 4.\n *\n * @type {Record<string, string>}\n */\nexport const characterEntitiesHtml4 = {\n  nbsp: '\u00A0',\n  iexcl: '\u00A1',\n  cent: '\u00A2',\n  pound: '\u00A3',\n  curren: '\u00A4',\n  yen: '\u00A5',\n  brvbar: '\u00A6',\n  sect: '\u00A7',\n  uml: '\u00A8',\n  copy: '\u00A9',\n  ordf: '\u00AA',\n  laquo: '\u00AB',\n  not: '\u00AC',\n  shy: '\u00AD',\n  reg: '\u00AE',\n  macr: '\u00AF',\n  deg: '\u00B0',\n  plusmn: '\u00B1',\n  sup2: '\u00B2',\n  sup3: '\u00B3',\n  acute: '\u00B4',\n  micro: '\u00B5',\n  para: '\u00B6',\n  middot: '\u00B7',\n  cedil: '\u00B8',\n  sup1: '\u00B9',\n  ordm: '\u00BA',\n  raquo: '\u00BB',\n  frac14: '\u00BC',\n  frac12: '\u00BD',\n  frac34: '\u00BE',\n  iquest: '\u00BF',\n  Agrave: '\u00C0',\n  Aacute: '\u00C1',\n  Acirc: '\u00C2',\n  Atilde: '\u00C3',\n  Auml: '\u00C4',\n  Aring: '\u00C5',\n  AElig: '\u00C6',\n  Ccedil: '\u00C7',\n  Egrave: '\u00C8',\n  Eacute: '\u00C9',\n  Ecirc: '\u00CA',\n  Euml: '\u00CB',\n  Igrave: '\u00CC',\n  Iacute: '\u00CD',\n  Icirc: '\u00CE',\n  Iuml: '\u00CF',\n  ETH: '\u00D0',\n  Ntilde: '\u00D1',\n  Ograve: '\u00D2',\n  Oacute: '\u00D3',\n  Ocirc: '\u00D4',\n  Otilde: '\u00D5',\n  Ouml: '\u00D6',\n  times: '\u00D7',\n  Oslash: '\u00D8',\n  Ugrave: '\u00D9',\n  Uacute: '\u00DA',\n  Ucirc: '\u00DB',\n  Uuml: '\u00DC',\n  Yacute: '\u00DD',\n  THORN: '\u00DE',\n  szlig: '\u00DF',\n  agrave: '\u00E0',\n  aacute: '\u00E1',\n  acirc: '\u00E2',\n  atilde: '\u00E3',\n  auml: '\u00E4',\n  aring: '\u00E5',\n  aelig: '\u00E6',\n  ccedil: '\u00E7',\n  egrave: '\u00E8',\n  eacute: '\u00E9',\n  ecirc: '\u00EA',\n  euml: '\u00EB',\n  igrave: '\u00EC',\n  iacute: '\u00ED',\n  icirc: '\u00EE',\n  iuml: '\u00EF',\n  eth: '\u00F0',\n  ntilde: '\u00F1',\n  ograve: '\u00F2',\n  oacute: '\u00F3',\n  ocirc: '\u00F4',\n  otilde: '\u00F5',\n  ouml: '\u00F6',\n  divide: '\u00F7',\n  oslash: '\u00F8',\n  ugrave: '\u00F9',\n  uacute: '\u00FA',\n  ucirc: '\u00FB',\n  uuml: '\u00FC',\n  yacute: '\u00FD',\n  thorn: '\u00FE',\n  yuml: '\u00FF',\n  fnof: '\u0192',\n  Alpha: '\u0391',\n  Beta: '\u0392',\n  Gamma: '\u0393',\n  Delta: '\u0394',\n  Epsilon: '\u0395',\n  Zeta: '\u0396',\n  Eta: '\u0397',\n  Theta: '\u0398',\n  Iota: '\u0399',\n  Kappa: '\u039A',\n  Lambda: '\u039B',\n  Mu: '\u039C',\n  Nu: '\u039D',\n  Xi: '\u039E',\n  Omicron: '\u039F',\n  Pi: '\u03A0',\n  Rho: '\u03A1',\n  Sigma: '\u03A3',\n  Tau: '\u03A4',\n  Upsilon: '\u03A5',\n  Phi: '\u03A6',\n  Chi: '\u03A7',\n  Psi: '\u03A8',\n  Omega: '\u03A9',\n  alpha: '\u03B1',\n  beta: '\u03B2',\n  gamma: '\u03B3',\n  delta: '\u03B4',\n  epsilon: '\u03B5',\n  zeta: '\u03B6',\n  eta: '\u03B7',\n  theta: '\u03B8',\n  iota: '\u03B9',\n  kappa: '\u03BA',\n  lambda: '\u03BB',\n  mu: '\u03BC',\n  nu: '\u03BD',\n  xi: '\u03BE',\n  omicron: '\u03BF',\n  pi: '\u03C0',\n  rho: '\u03C1',\n  sigmaf: '\u03C2',\n  sigma: '\u03C3',\n  tau: '\u03C4',\n  upsilon: '\u03C5',\n  phi: '\u03C6',\n  chi: '\u03C7',\n  psi: '\u03C8',\n  omega: '\u03C9',\n  thetasym: '\u03D1',\n  upsih: '\u03D2',\n  piv: '\u03D6',\n  bull: '\u2022',\n  hellip: '\u2026',\n  prime: '\u2032',\n  Prime: '\u2033',\n  oline: '\u203E',\n  frasl: '\u2044',\n  weierp: '\u2118',\n  image: '\u2111',\n  real: '\u211C',\n  trade: '\u2122',\n  alefsym: '\u2135',\n  larr: '\u2190',\n  uarr: '\u2191',\n  rarr: '\u2192',\n  darr: '\u2193',\n  harr: '\u2194',\n  crarr: '\u21B5',\n  lArr: '\u21D0',\n  uArr: '\u21D1',\n  rArr: '\u21D2',\n  dArr: '\u21D3',\n  hArr: '\u21D4',\n  forall: '\u2200',\n  part: '\u2202',\n  exist: '\u2203',\n  empty: '\u2205',\n  nabla: '\u2207',\n  isin: '\u2208',\n  notin: '\u2209',\n  ni: '\u220B',\n  prod: '\u220F',\n  sum: '\u2211',\n  minus: '\u2212',\n  lowast: '\u2217',\n  radic: '\u221A',\n  prop: '\u221D',\n  infin: '\u221E',\n  ang: '\u2220',\n  and: '\u2227',\n  or: '\u2228',\n  cap: '\u2229',\n  cup: '\u222A',\n  int: '\u222B',\n  there4: '\u2234',\n  sim: '\u223C',\n  cong: '\u2245',\n  asymp: '\u2248',\n  ne: '\u2260',\n  equiv: '\u2261',\n  le: '\u2264',\n  ge: '\u2265',\n  sub: '\u2282',\n  sup: '\u2283',\n  nsub: '\u2284',\n  sube: '\u2286',\n  supe: '\u2287',\n  oplus: '\u2295',\n  otimes: '\u2297',\n  perp: '\u22A5',\n  sdot: '\u22C5',\n  lceil: '\u2308',\n  rceil: '\u2309',\n  lfloor: '\u230A',\n  rfloor: '\u230B',\n  lang: '\u2329',\n  rang: '\u232A',\n  loz: '\u25CA',\n  spades: '\u2660',\n  clubs: '\u2663',\n  hearts: '\u2665',\n  diams: '\u2666',\n  quot: '\"',\n  amp: '&',\n  lt: '<',\n  gt: '>',\n  OElig: '\u0152',\n  oelig: '\u0153',\n  Scaron: '\u0160',\n  scaron: '\u0161',\n  Yuml: '\u0178',\n  circ: '\u02C6',\n  tilde: '\u02DC',\n  ensp: '\u2002',\n  emsp: '\u2003',\n  thinsp: '\u2009',\n  zwnj: '\u200C',\n  zwj: '\u200D',\n  lrm: '\u200E',\n  rlm: '\u200F',\n  ndash: '\u2013',\n  mdash: '\u2014',\n  lsquo: '\u2018',\n  rsquo: '\u2019',\n  sbquo: '\u201A',\n  ldquo: '\u201C',\n  rdquo: '\u201D',\n  bdquo: '\u201E',\n  dagger: '\u2020',\n  Dagger: '\u2021',\n  permil: '\u2030',\n  lsaquo: '\u2039',\n  rsaquo: '\u203A',\n  euro: '\u20AC'\n}\n", "/**\n * List of legacy (that don\u2019t need a trailing `;`) named references which could,\n * depending on what follows them, turn into a different meaning\n *\n * @type {Array<string>}\n */\nexport const dangerous = [\n  'cent',\n  'copy',\n  'divide',\n  'gt',\n  'lt',\n  'not',\n  'para',\n  'times'\n]\n", "import {characterEntitiesLegacy} from 'character-entities-legacy'\nimport {characterEntitiesHtml4} from 'character-entities-html4'\nimport {dangerous} from '../constant/dangerous.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * `characterEntitiesHtml4` but inverted.\n *\n * @type {Record<string, string>}\n */\nconst characters = {}\n\n/** @type {string} */\nlet key\n\nfor (key in characterEntitiesHtml4) {\n  if (own.call(characterEntitiesHtml4, key)) {\n    characters[characterEntitiesHtml4[key]] = key\n  }\n}\n\nconst notAlphanumericRegex = /[^\\dA-Za-z]/\n\n/**\n * Configurable ways to encode characters as named references.\n *\n * @param {number} code\n * @param {number} next\n * @param {boolean|undefined} omit\n * @param {boolean|undefined} attribute\n * @returns {string}\n */\nexport function toNamed(code, next, omit, attribute) {\n  const character = String.fromCharCode(code)\n\n  if (own.call(characters, character)) {\n    const name = characters[character]\n    const value = '&' + name\n\n    if (\n      omit &&\n      characterEntitiesLegacy.includes(name) &&\n      !dangerous.includes(name) &&\n      (!attribute ||\n        (next &&\n          next !== 61 /* `=` */ &&\n          notAlphanumericRegex.test(String.fromCharCode(next))))\n    ) {\n      return value\n    }\n\n    return value + ';'\n  }\n\n  return ''\n}\n", "/**\n * @typedef FormatSmartOptions\n * @property {boolean} [useNamedReferences=false]\n *   Prefer named character references (`&amp;`) where possible.\n * @property {boolean} [useShortestReferences=false]\n *   Prefer the shortest possible reference, if that results in less bytes.\n *   **Note**: `useNamedReferences` can be omitted when using `useShortestReferences`.\n * @property {boolean} [omitOptionalSemicolons=false]\n *   Whether to omit semicolons when possible.\n *   **Note**: This creates what HTML calls \u201Cparse errors\u201D but is otherwise still valid HTML \u2014 don\u2019t use this except when building a minifier.\n *   Omitting semicolons is possible for certain named and numeric references in some cases.\n * @property {boolean} [attribute=false]\n *   Create character references which don\u2019t fail in attributes.\n *   **Note**: `attribute` only applies when operating dangerously with\n *   `omitOptionalSemicolons: true`.\n */\n\nimport {toHexadecimal} from './to-hexadecimal.js'\nimport {toDecimal} from './to-decimal.js'\nimport {toNamed} from './to-named.js'\n\n/**\n * Configurable ways to encode a character yielding pretty or small results.\n *\n * @param {number} code\n * @param {number} next\n * @param {FormatSmartOptions} options\n * @returns {string}\n */\nexport function formatSmart(code, next, options) {\n  let numeric = toHexadecimal(code, next, options.omitOptionalSemicolons)\n  /** @type {string|undefined} */\n  let named\n\n  if (options.useNamedReferences || options.useShortestReferences) {\n    named = toNamed(\n      code,\n      next,\n      options.omitOptionalSemicolons,\n      options.attribute\n    )\n  }\n\n  // Use the shortest numeric reference when requested.\n  // A simple algorithm would use decimal for all code points under 100, as\n  // those are shorter than hexadecimal:\n  //\n  // * `&#99;` vs `&#x63;` (decimal shorter)\n  // * `&#100;` vs `&#x64;` (equal)\n  //\n  // However, because we take `next` into consideration when `omit` is used,\n  // And it would be possible that decimals are shorter on bigger values as\n  // well if `next` is hexadecimal but not decimal, we instead compare both.\n  if (\n    (options.useShortestReferences || !named) &&\n    options.useShortestReferences\n  ) {\n    const decimal = toDecimal(code, next, options.omitOptionalSemicolons)\n\n    if (decimal.length < numeric.length) {\n      numeric = decimal\n    }\n  }\n\n  return named &&\n    (!options.useShortestReferences || named.length < numeric.length)\n    ? named\n    : numeric\n}\n", "/**\n * @typedef {import('./core.js').CoreOptions & import('./util/format-smart.js').FormatSmartOptions} Options\n * @typedef {import('./core.js').CoreOptions} LightOptions\n */\n\nimport {core} from './core.js'\nimport {formatSmart} from './util/format-smart.js'\nimport {formatBasic} from './util/format-basic.js'\n\n/**\n * Encode special characters in `value`.\n *\n * @param {string} value\n *   Value to encode.\n * @param {Options} [options]\n *   Configuration.\n * @returns {string}\n *   Encoded value.\n */\nexport function stringifyEntities(value, options) {\n  return core(value, Object.assign({format: formatSmart}, options))\n}\n\n/**\n * Encode special characters in `value` as hexadecimals.\n *\n * @param {string} value\n *   Value to encode.\n * @param {LightOptions} [options]\n *   Configuration.\n * @returns {string}\n *   Encoded value.\n */\nexport function stringifyEntitiesLight(value, options) {\n  return core(value, Object.assign({format: formatBasic}, options))\n}\n", "/**\n * @import {Comment, Parents} from 'hast'\n * @import {State} from '../index.js'\n */\n\nimport {stringifyEntities} from 'stringify-entities'\n\nconst htmlCommentRegex = /^>|^->|<!--|-->|--!>|<!-$/g\n\n// Declare arrays as variables so it can be cached by `stringifyEntities`\nconst bogusCommentEntitySubset = ['>']\nconst commentEntitySubset = ['<', '>']\n\n/**\n * Serialize a comment.\n *\n * @param {Comment} node\n *   Node to handle.\n * @param {number | undefined} _1\n *   Index of `node` in `parent.\n * @param {Parents | undefined} _2\n *   Parent of `node`.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {string}\n *   Serialized node.\n */\nexport function comment(node, _1, _2, state) {\n  // See: <https://html.spec.whatwg.org/multipage/syntax.html#comments>\n  return state.settings.bogusComments\n    ? '<?' +\n        stringifyEntities(\n          node.value,\n          Object.assign({}, state.settings.characterReferences, {\n            subset: bogusCommentEntitySubset\n          })\n        ) +\n        '>'\n    : '<!--' + node.value.replace(htmlCommentRegex, encode) + '-->'\n\n  /**\n   * @param {string} $0\n   */\n  function encode($0) {\n    return stringifyEntities(\n      $0,\n      Object.assign({}, state.settings.characterReferences, {\n        subset: commentEntitySubset\n      })\n    )\n  }\n}\n", "/**\n * @import {Doctype, Parents} from 'hast'\n * @import {State} from '../index.js'\n */\n\n/**\n * Serialize a doctype.\n *\n * @param {Doctype} _1\n *   Node to handle.\n * @param {number | undefined} _2\n *   Index of `node` in `parent.\n * @param {Parents | undefined} _3\n *   Parent of `node`.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {string}\n *   Serialized node.\n */\nexport function doctype(_1, _2, _3, state) {\n  return (\n    '<!' +\n    (state.settings.upperDoctype ? 'DOCTYPE' : 'doctype') +\n    (state.settings.tightDoctype ? '' : ' ') +\n    'html>'\n  )\n}\n", "/**\n * @import {Parents, RootContent} from 'hast'\n */\n\nimport {whitespace} from 'hast-util-whitespace'\n\nexport const siblingAfter = siblings(1)\nexport const siblingBefore = siblings(-1)\n\n/** @type {Array<RootContent>} */\nconst emptyChildren = []\n\n/**\n * Factory to check siblings in a direction.\n *\n * @param {number} increment\n */\nfunction siblings(increment) {\n  return sibling\n\n  /**\n   * Find applicable siblings in a direction.\n   *\n   * @template {Parents} Parent\n   *   Parent type.\n   * @param {Parent | undefined} parent\n   *   Parent.\n   * @param {number | undefined} index\n   *   Index of child in `parent`.\n   * @param {boolean | undefined} [includeWhitespace=false]\n   *   Whether to include whitespace (default: `false`).\n   * @returns {Parent extends {children: Array<infer Child>} ? Child | undefined : never}\n   *   Child of parent.\n   */\n  function sibling(parent, index, includeWhitespace) {\n    const siblings = parent ? parent.children : emptyChildren\n    let offset = (index || 0) + increment\n    let next = siblings[offset]\n\n    if (!includeWhitespace) {\n      while (next && whitespace(next)) {\n        offset += increment\n        next = siblings[offset]\n      }\n    }\n\n    // @ts-expect-error: it\u2019s a correct child.\n    return next\n  }\n}\n", "/**\n * @import {Element, Parents} from 'hast'\n */\n\n/**\n * @callback OmitHandle\n *   Check if a tag can be omitted.\n * @param {Element} element\n *   Element to check.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether to omit a tag.\n *\n */\n\nconst own = {}.hasOwnProperty\n\n/**\n * Factory to check if a given node can have a tag omitted.\n *\n * @param {Record<string, OmitHandle>} handlers\n *   Omission handlers, where each key is a tag name, and each value is the\n *   corresponding handler.\n * @returns {OmitHandle}\n *   Whether to omit a tag of an element.\n */\nexport function omission(handlers) {\n  return omit\n\n  /**\n   * Check if a given node can have a tag omitted.\n   *\n   * @type {OmitHandle}\n   */\n  function omit(node, index, parent) {\n    return (\n      own.call(handlers, node.tagName) &&\n      handlers[node.tagName](node, index, parent)\n    )\n  }\n}\n", "/**\n * @import {Element, Parents} from 'hast'\n */\n\nimport {whitespace} from 'hast-util-whitespace'\nimport {siblingAfter} from './util/siblings.js'\nimport {omission} from './omission.js'\n\nexport const closing = omission({\n  body,\n  caption: headOrColgroupOrCaption,\n  colgroup: headOrColgroupOrCaption,\n  dd,\n  dt,\n  head: headOrColgroupOrCaption,\n  html,\n  li,\n  optgroup,\n  option,\n  p,\n  rp: rubyElement,\n  rt: rubyElement,\n  tbody,\n  td: cells,\n  tfoot,\n  th: cells,\n  thead,\n  tr\n})\n\n/**\n * Macro for `</head>`, `</colgroup>`, and `</caption>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction headOrColgroupOrCaption(_, index, parent) {\n  const next = siblingAfter(parent, index, true)\n  return (\n    !next ||\n    (next.type !== 'comment' &&\n      !(next.type === 'text' && whitespace(next.value.charAt(0))))\n  )\n}\n\n/**\n * Whether to omit `</html>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction html(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return !next || next.type !== 'comment'\n}\n\n/**\n * Whether to omit `</body>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction body(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return !next || next.type !== 'comment'\n}\n\n/**\n * Whether to omit `</p>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction p(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return next\n    ? next.type === 'element' &&\n        (next.tagName === 'address' ||\n          next.tagName === 'article' ||\n          next.tagName === 'aside' ||\n          next.tagName === 'blockquote' ||\n          next.tagName === 'details' ||\n          next.tagName === 'div' ||\n          next.tagName === 'dl' ||\n          next.tagName === 'fieldset' ||\n          next.tagName === 'figcaption' ||\n          next.tagName === 'figure' ||\n          next.tagName === 'footer' ||\n          next.tagName === 'form' ||\n          next.tagName === 'h1' ||\n          next.tagName === 'h2' ||\n          next.tagName === 'h3' ||\n          next.tagName === 'h4' ||\n          next.tagName === 'h5' ||\n          next.tagName === 'h6' ||\n          next.tagName === 'header' ||\n          next.tagName === 'hgroup' ||\n          next.tagName === 'hr' ||\n          next.tagName === 'main' ||\n          next.tagName === 'menu' ||\n          next.tagName === 'nav' ||\n          next.tagName === 'ol' ||\n          next.tagName === 'p' ||\n          next.tagName === 'pre' ||\n          next.tagName === 'section' ||\n          next.tagName === 'table' ||\n          next.tagName === 'ul')\n    : !parent ||\n        // Confusing parent.\n        !(\n          parent.type === 'element' &&\n          (parent.tagName === 'a' ||\n            parent.tagName === 'audio' ||\n            parent.tagName === 'del' ||\n            parent.tagName === 'ins' ||\n            parent.tagName === 'map' ||\n            parent.tagName === 'noscript' ||\n            parent.tagName === 'video')\n        )\n}\n\n/**\n * Whether to omit `</li>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction li(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return !next || (next.type === 'element' && next.tagName === 'li')\n}\n\n/**\n * Whether to omit `</dt>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction dt(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return Boolean(\n    next &&\n      next.type === 'element' &&\n      (next.tagName === 'dt' || next.tagName === 'dd')\n  )\n}\n\n/**\n * Whether to omit `</dd>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction dd(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return (\n    !next ||\n    (next.type === 'element' &&\n      (next.tagName === 'dt' || next.tagName === 'dd'))\n  )\n}\n\n/**\n * Whether to omit `</rt>` or `</rp>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction rubyElement(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return (\n    !next ||\n    (next.type === 'element' &&\n      (next.tagName === 'rp' || next.tagName === 'rt'))\n  )\n}\n\n/**\n * Whether to omit `</optgroup>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction optgroup(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return !next || (next.type === 'element' && next.tagName === 'optgroup')\n}\n\n/**\n * Whether to omit `</option>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction option(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return (\n    !next ||\n    (next.type === 'element' &&\n      (next.tagName === 'option' || next.tagName === 'optgroup'))\n  )\n}\n\n/**\n * Whether to omit `</thead>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction thead(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return Boolean(\n    next &&\n      next.type === 'element' &&\n      (next.tagName === 'tbody' || next.tagName === 'tfoot')\n  )\n}\n\n/**\n * Whether to omit `</tbody>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction tbody(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return (\n    !next ||\n    (next.type === 'element' &&\n      (next.tagName === 'tbody' || next.tagName === 'tfoot'))\n  )\n}\n\n/**\n * Whether to omit `</tfoot>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction tfoot(_, index, parent) {\n  return !siblingAfter(parent, index)\n}\n\n/**\n * Whether to omit `</tr>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction tr(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return !next || (next.type === 'element' && next.tagName === 'tr')\n}\n\n/**\n * Whether to omit `</td>` or `</th>`.\n *\n * @param {Element} _\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the closing tag can be omitted.\n */\nfunction cells(_, index, parent) {\n  const next = siblingAfter(parent, index)\n  return (\n    !next ||\n    (next.type === 'element' &&\n      (next.tagName === 'td' || next.tagName === 'th'))\n  )\n}\n", "/**\n * @import {Element, Parents} from 'hast'\n */\n\nimport {whitespace} from 'hast-util-whitespace'\nimport {siblingAfter, siblingBefore} from './util/siblings.js'\nimport {closing} from './closing.js'\nimport {omission} from './omission.js'\n\nexport const opening = omission({\n  body,\n  colgroup,\n  head,\n  html,\n  tbody\n})\n\n/**\n * Whether to omit `<html>`.\n *\n * @param {Element} node\n *   Element.\n * @returns {boolean}\n *   Whether the opening tag can be omitted.\n */\nfunction html(node) {\n  const head = siblingAfter(node, -1)\n  return !head || head.type !== 'comment'\n}\n\n/**\n * Whether to omit `<head>`.\n *\n * @param {Element} node\n *   Element.\n * @returns {boolean}\n *   Whether the opening tag can be omitted.\n */\nfunction head(node) {\n  /** @type {Set<string>} */\n  const seen = new Set()\n\n  // Whether `srcdoc` or not,\n  // make sure the content model at least doesn\u2019t have too many `base`s/`title`s.\n  for (const child of node.children) {\n    if (\n      child.type === 'element' &&\n      (child.tagName === 'base' || child.tagName === 'title')\n    ) {\n      if (seen.has(child.tagName)) return false\n      seen.add(child.tagName)\n    }\n  }\n\n  // \u201CMay be omitted if the element is empty,\n  // or if the first thing inside the head element is an element.\u201D\n  const child = node.children[0]\n  return !child || child.type === 'element'\n}\n\n/**\n * Whether to omit `<body>`.\n *\n * @param {Element} node\n *   Element.\n * @returns {boolean}\n *   Whether the opening tag can be omitted.\n */\nfunction body(node) {\n  const head = siblingAfter(node, -1, true)\n\n  return (\n    !head ||\n    (head.type !== 'comment' &&\n      !(head.type === 'text' && whitespace(head.value.charAt(0))) &&\n      !(\n        head.type === 'element' &&\n        (head.tagName === 'meta' ||\n          head.tagName === 'link' ||\n          head.tagName === 'script' ||\n          head.tagName === 'style' ||\n          head.tagName === 'template')\n      ))\n  )\n}\n\n/**\n * Whether to omit `<colgroup>`.\n * The spec describes some logic for the opening tag, but it\u2019s easier to\n * implement in the closing tag, to the same effect, so we handle it there\n * instead.\n *\n * @param {Element} node\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the opening tag can be omitted.\n */\nfunction colgroup(node, index, parent) {\n  const previous = siblingBefore(parent, index)\n  const head = siblingAfter(node, -1, true)\n\n  // Previous colgroup was already omitted.\n  if (\n    parent &&\n    previous &&\n    previous.type === 'element' &&\n    previous.tagName === 'colgroup' &&\n    closing(previous, parent.children.indexOf(previous), parent)\n  ) {\n    return false\n  }\n\n  return Boolean(head && head.type === 'element' && head.tagName === 'col')\n}\n\n/**\n * Whether to omit `<tbody>`.\n *\n * @param {Element} node\n *   Element.\n * @param {number | undefined} index\n *   Index of element in parent.\n * @param {Parents | undefined} parent\n *   Parent of element.\n * @returns {boolean}\n *   Whether the opening tag can be omitted.\n */\nfunction tbody(node, index, parent) {\n  const previous = siblingBefore(parent, index)\n  const head = siblingAfter(node, -1)\n\n  // Previous table section was already omitted.\n  if (\n    parent &&\n    previous &&\n    previous.type === 'element' &&\n    (previous.tagName === 'thead' || previous.tagName === 'tbody') &&\n    closing(previous, parent.children.indexOf(previous), parent)\n  ) {\n    return false\n  }\n\n  return Boolean(head && head.type === 'element' && head.tagName === 'tr')\n}\n", "/**\n * @import {Element, Parents, Properties} from 'hast'\n * @import {State} from '../index.js'\n */\n\nimport {ccount} from 'ccount'\nimport {stringify as commas} from 'comma-separated-tokens'\nimport {find, svg} from 'property-information'\nimport {stringify as spaces} from 'space-separated-tokens'\nimport {stringifyEntities} from 'stringify-entities'\nimport {closing} from '../omission/closing.js'\nimport {opening} from '../omission/opening.js'\n\n/**\n * Maps of subsets.\n *\n * Each value is a matrix of tuples.\n * The value at `0` causes parse errors, the value at `1` is valid.\n * Of both, the value at `0` is unsafe, and the value at `1` is safe.\n *\n * @type {Record<'double' | 'name' | 'single' | 'unquoted', Array<[Array<string>, Array<string>]>>}\n */\nconst constants = {\n  // See: <https://html.spec.whatwg.org/#attribute-name-state>.\n  name: [\n    ['\\t\\n\\f\\r &/=>'.split(''), '\\t\\n\\f\\r \"&\\'/=>`'.split('')],\n    ['\\0\\t\\n\\f\\r \"&\\'/<=>'.split(''), '\\0\\t\\n\\f\\r \"&\\'/<=>`'.split('')]\n  ],\n  // See: <https://html.spec.whatwg.org/#attribute-value-(unquoted)-state>.\n  unquoted: [\n    ['\\t\\n\\f\\r &>'.split(''), '\\0\\t\\n\\f\\r \"&\\'<=>`'.split('')],\n    ['\\0\\t\\n\\f\\r \"&\\'<=>`'.split(''), '\\0\\t\\n\\f\\r \"&\\'<=>`'.split('')]\n  ],\n  // See: <https://html.spec.whatwg.org/#attribute-value-(single-quoted)-state>.\n  single: [\n    [\"&'\".split(''), '\"&\\'`'.split('')],\n    [\"\\0&'\".split(''), '\\0\"&\\'`'.split('')]\n  ],\n  // See: <https://html.spec.whatwg.org/#attribute-value-(double-quoted)-state>.\n  double: [\n    ['\"&'.split(''), '\"&\\'`'.split('')],\n    ['\\0\"&'.split(''), '\\0\"&\\'`'.split('')]\n  ]\n}\n\n/**\n * Serialize an element node.\n *\n * @param {Element} node\n *   Node to handle.\n * @param {number | undefined} index\n *   Index of `node` in `parent.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {string}\n *   Serialized node.\n */\nexport function element(node, index, parent, state) {\n  const schema = state.schema\n  const omit = schema.space === 'svg' ? false : state.settings.omitOptionalTags\n  let selfClosing =\n    schema.space === 'svg'\n      ? state.settings.closeEmptyElements\n      : state.settings.voids.includes(node.tagName.toLowerCase())\n  /** @type {Array<string>} */\n  const parts = []\n  /** @type {string} */\n  let last\n\n  if (schema.space === 'html' && node.tagName === 'svg') {\n    state.schema = svg\n  }\n\n  const attributes = serializeAttributes(state, node.properties)\n\n  const content = state.all(\n    schema.space === 'html' && node.tagName === 'template' ? node.content : node\n  )\n\n  state.schema = schema\n\n  // If the node is categorised as void, but it has children, remove the\n  // categorisation.\n  // This enables for example `menuitem`s, which are void in W3C HTML but not\n  // void in WHATWG HTML, to be stringified properly.\n  // Note: `menuitem` has since been removed from the HTML spec, and so is no\n  // longer void.\n  if (content) selfClosing = false\n\n  if (attributes || !omit || !opening(node, index, parent)) {\n    parts.push('<', node.tagName, attributes ? ' ' + attributes : '')\n\n    if (\n      selfClosing &&\n      (schema.space === 'svg' || state.settings.closeSelfClosing)\n    ) {\n      last = attributes.charAt(attributes.length - 1)\n      if (\n        !state.settings.tightSelfClosing ||\n        last === '/' ||\n        (last && last !== '\"' && last !== \"'\")\n      ) {\n        parts.push(' ')\n      }\n\n      parts.push('/')\n    }\n\n    parts.push('>')\n  }\n\n  parts.push(content)\n\n  if (!selfClosing && (!omit || !closing(node, index, parent))) {\n    parts.push('</' + node.tagName + '>')\n  }\n\n  return parts.join('')\n}\n\n/**\n * @param {State} state\n * @param {Properties | null | undefined} properties\n * @returns {string}\n */\nfunction serializeAttributes(state, properties) {\n  /** @type {Array<string>} */\n  const values = []\n  let index = -1\n  /** @type {string} */\n  let key\n\n  if (properties) {\n    for (key in properties) {\n      if (properties[key] !== null && properties[key] !== undefined) {\n        const value = serializeAttribute(state, key, properties[key])\n        if (value) values.push(value)\n      }\n    }\n  }\n\n  while (++index < values.length) {\n    const last = state.settings.tightAttributes\n      ? values[index].charAt(values[index].length - 1)\n      : undefined\n\n    // In tight mode, don\u2019t add a space after quoted attributes.\n    if (index !== values.length - 1 && last !== '\"' && last !== \"'\") {\n      values[index] += ' '\n    }\n  }\n\n  return values.join('')\n}\n\n/**\n * @param {State} state\n * @param {string} key\n * @param {Properties[keyof Properties]} value\n * @returns {string}\n */\nfunction serializeAttribute(state, key, value) {\n  const info = find(state.schema, key)\n  const x =\n    state.settings.allowParseErrors && state.schema.space === 'html' ? 0 : 1\n  const y = state.settings.allowDangerousCharacters ? 0 : 1\n  let quote = state.quote\n  /** @type {string | undefined} */\n  let result\n\n  if (info.overloadedBoolean && (value === info.attribute || value === '')) {\n    value = true\n  } else if (\n    (info.boolean || info.overloadedBoolean) &&\n    (typeof value !== 'string' || value === info.attribute || value === '')\n  ) {\n    value = Boolean(value)\n  }\n\n  if (\n    value === null ||\n    value === undefined ||\n    value === false ||\n    (typeof value === 'number' && Number.isNaN(value))\n  ) {\n    return ''\n  }\n\n  const name = stringifyEntities(\n    info.attribute,\n    Object.assign({}, state.settings.characterReferences, {\n      // Always encode without parse errors in non-HTML.\n      subset: constants.name[x][y]\n    })\n  )\n\n  // No value.\n  // There is currently only one boolean property in SVG: `[download]` on\n  // `<a>`.\n  // This property does not seem to work in browsers (Firefox, Safari, Chrome),\n  // so I can\u2019t test if dropping the value works.\n  // But I assume that it should:\n  //\n  // ```html\n  // <!doctype html>\n  // <svg viewBox=\"0 0 100 100\">\n  //   <a href=https://example.com download>\n  //     <circle cx=50 cy=40 r=35 />\n  //   </a>\n  // </svg>\n  // ```\n  //\n  // See: <https://github.com/wooorm/property-information/blob/main/lib/svg.js>\n  if (value === true) return name\n\n  // `spaces` doesn\u2019t accept a second argument, but it\u2019s given here just to\n  // keep the code cleaner.\n  value = Array.isArray(value)\n    ? (info.commaSeparated ? commas : spaces)(value, {\n        padLeft: !state.settings.tightCommaSeparatedLists\n      })\n    : String(value)\n\n  if (state.settings.collapseEmptyAttributes && !value) return name\n\n  // Check unquoted value.\n  if (state.settings.preferUnquoted) {\n    result = stringifyEntities(\n      value,\n      Object.assign({}, state.settings.characterReferences, {\n        attribute: true,\n        subset: constants.unquoted[x][y]\n      })\n    )\n  }\n\n  // If we don\u2019t want unquoted, or if `value` contains character references when\n  // unquoted\u2026\n  if (result !== value) {\n    // If the alternative is less common than `quote`, switch.\n    if (\n      state.settings.quoteSmart &&\n      ccount(value, quote) > ccount(value, state.alternative)\n    ) {\n      quote = state.alternative\n    }\n\n    result =\n      quote +\n      stringifyEntities(\n        value,\n        Object.assign({}, state.settings.characterReferences, {\n          // Always encode without parse errors in non-HTML.\n          subset: (quote === \"'\" ? constants.single : constants.double)[x][y],\n          attribute: true\n        })\n      ) +\n      quote\n  }\n\n  // Don\u2019t add a `=` for unquoted empties.\n  return name + (result ? '=' + result : result)\n}\n", "/**\n * @import {Parents, Text} from 'hast'\n * @import {Raw} from 'mdast-util-to-hast'\n * @import {State} from '../index.js'\n */\n\nimport {stringifyEntities} from 'stringify-entities'\n\n// Declare array as variable so it can be cached by `stringifyEntities`\nconst textEntitySubset = ['<', '&']\n\n/**\n * Serialize a text node.\n *\n * @param {Raw | Text} node\n *   Node to handle.\n * @param {number | undefined} _\n *   Index of `node` in `parent.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {string}\n *   Serialized node.\n */\nexport function text(node, _, parent, state) {\n  // Check if content of `node` should be escaped.\n  return parent &&\n    parent.type === 'element' &&\n    (parent.tagName === 'script' || parent.tagName === 'style')\n    ? node.value\n    : stringifyEntities(\n        node.value,\n        Object.assign({}, state.settings.characterReferences, {\n          subset: textEntitySubset\n        })\n      )\n}\n", "/**\n * @import {Parents} from 'hast'\n * @import {Raw} from 'mdast-util-to-hast'\n * @import {State} from '../index.js'\n */\n\nimport {text} from './text.js'\n\n/**\n * Serialize a raw node.\n *\n * @param {Raw} node\n *   Node to handle.\n * @param {number | undefined} index\n *   Index of `node` in `parent.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {string}\n *   Serialized node.\n */\nexport function raw(node, index, parent, state) {\n  return state.settings.allowDangerousHtml\n    ? node.value\n    : text(node, index, parent, state)\n}\n", "/**\n * @import {Parents, Root} from 'hast'\n * @import {State} from '../index.js'\n */\n\n/**\n * Serialize a root.\n *\n * @param {Root} node\n *   Node to handle.\n * @param {number | undefined} _1\n *   Index of `node` in `parent.\n * @param {Parents | undefined} _2\n *   Parent of `node`.\n * @param {State} state\n *   Info passed around about the current state.\n * @returns {string}\n *   Serialized node.\n */\nexport function root(node, _1, _2, state) {\n  return state.all(node)\n}\n", "/**\n * @import {Nodes, Parents} from 'hast'\n * @import {State} from '../index.js'\n */\n\nimport {zwitch} from 'zwitch'\nimport {comment} from './comment.js'\nimport {doctype} from './doctype.js'\nimport {element} from './element.js'\nimport {raw} from './raw.js'\nimport {root} from './root.js'\nimport {text} from './text.js'\n\n/**\n * @type {(node: Nodes, index: number | undefined, parent: Parents | undefined, state: State) => string}\n */\nexport const handle = zwitch('type', {\n  invalid,\n  unknown,\n  handlers: {comment, doctype, element, raw, root, text}\n})\n\n/**\n * Fail when a non-node is found in the tree.\n *\n * @param {unknown} node\n *   Unknown value.\n * @returns {never}\n *   Never.\n */\nfunction invalid(node) {\n  throw new Error('Expected node, not `' + node + '`')\n}\n\n/**\n * Fail when a node with an unknown type is found in the tree.\n *\n * @param {unknown} node_\n *  Unknown node.\n * @returns {never}\n *   Never.\n */\nfunction unknown(node_) {\n  // `type` is guaranteed by runtime JS.\n  const node = /** @type {Nodes} */ (node_)\n  throw new Error('Cannot compile unknown node `' + node.type + '`')\n}\n", "/**\n * @import {Nodes, Parents, RootContent} from 'hast'\n * @import {Schema} from 'property-information'\n * @import {Options as StringifyEntitiesOptions} from 'stringify-entities'\n */\n\n/**\n * @typedef {Omit<StringifyEntitiesOptions, 'attribute' | 'escapeOnly' | 'subset'>} CharacterReferences\n *\n * @typedef Options\n *   Configuration.\n * @property {boolean | null | undefined} [allowDangerousCharacters=false]\n *   Do not encode some characters which cause XSS vulnerabilities in older\n *   browsers (default: `false`).\n *\n *   > \u26A0\uFE0F **Danger**: only set this if you completely trust the content.\n * @property {boolean | null | undefined} [allowDangerousHtml=false]\n *   Allow `raw` nodes and insert them as raw HTML (default: `false`).\n *\n *   When `false`, `Raw` nodes are encoded.\n *\n *   > \u26A0\uFE0F **Danger**: only set this if you completely trust the content.\n * @property {boolean | null | undefined} [allowParseErrors=false]\n *   Do not encode characters which cause parse errors (even though they work),\n *   to save bytes (default: `false`).\n *\n *   Not used in the SVG space.\n *\n *   > \uD83D\uDC49 **Note**: intentionally creates parse errors in markup (how parse\n *   > errors are handled is well defined, so this works but isn\u2019t pretty).\n * @property {boolean | null | undefined} [bogusComments=false]\n *   Use \u201Cbogus comments\u201D instead of comments to save byes: `<?charlie>`\n *   instead of `<!--charlie-->` (default: `false`).\n *\n *   > \uD83D\uDC49 **Note**: intentionally creates parse errors in markup (how parse\n *   > errors are handled is well defined, so this works but isn\u2019t pretty).\n * @property {CharacterReferences | null | undefined} [characterReferences]\n *   Configure how to serialize character references (optional).\n * @property {boolean | null | undefined} [closeEmptyElements=false]\n *   Close SVG elements without any content with slash (`/`) on the opening tag\n *   instead of an end tag: `<circle />` instead of `<circle></circle>`\n *   (default: `false`).\n *\n *   See `tightSelfClosing` to control whether a space is used before the\n *   slash.\n *\n *   Not used in the HTML space.\n * @property {boolean | null | undefined} [closeSelfClosing=false]\n *   Close self-closing nodes with an extra slash (`/`): `<img />` instead of\n *   `<img>` (default: `false`).\n *\n *   See `tightSelfClosing` to control whether a space is used before the\n *   slash.\n *\n *   Not used in the SVG space.\n * @property {boolean | null | undefined} [collapseEmptyAttributes=false]\n *   Collapse empty attributes: get `class` instead of `class=\"\"` (default:\n *   `false`).\n *\n *   Not used in the SVG space.\n *\n *   > \uD83D\uDC49 **Note**: boolean attributes (such as `hidden`) are always collapsed.\n * @property {boolean | null | undefined} [omitOptionalTags=false]\n *   Omit optional opening and closing tags (default: `false`).\n *\n *   For example, in `<ol><li>one</li><li>two</li></ol>`, both `</li>` closing\n *   tags can be omitted.\n *   The first because it\u2019s followed by another `li`, the last because it\u2019s\n *   followed by nothing.\n *\n *   Not used in the SVG space.\n * @property {boolean | null | undefined} [preferUnquoted=false]\n *   Leave attributes unquoted if that results in less bytes (default: `false`).\n *\n *   Not used in the SVG space.\n * @property {boolean | null | undefined} [quoteSmart=false]\n *   Use the other quote if that results in less bytes (default: `false`).\n * @property {Quote | null | undefined} [quote='\"']\n *   Preferred quote to use (default: `'\"'`).\n * @property {Space | null | undefined} [space='html']\n *   When an `<svg>` element is found in the HTML space, this package already\n *   automatically switches to and from the SVG space when entering and exiting\n *   it (default: `'html'`).\n *\n *   > \uD83D\uDC49 **Note**: hast is not XML.\n *   > It supports SVG as embedded in HTML.\n *   > It does not support the features available in XML.\n *   > Passing SVG might break but fragments of modern SVG should be fine.\n *   > Use [`xast`][xast] if you need to support SVG as XML.\n * @property {boolean | null | undefined} [tightAttributes=false]\n *   Join attributes together, without whitespace, if possible: get\n *   `class=\"a b\"title=\"c d\"` instead of `class=\"a b\" title=\"c d\"` to save\n *   bytes (default: `false`).\n *\n *   Not used in the SVG space.\n *\n *   > \uD83D\uDC49 **Note**: intentionally creates parse errors in markup (how parse\n *   > errors are handled is well defined, so this works but isn\u2019t pretty).\n * @property {boolean | null | undefined} [tightCommaSeparatedLists=false]\n *   Join known comma-separated attribute values with just a comma (`,`),\n *   instead of padding them on the right as well (`,\u2420`, where `\u2420` represents a\n *   space) (default: `false`).\n * @property {boolean | null | undefined} [tightDoctype=false]\n *   Drop unneeded spaces in doctypes: `<!doctypehtml>` instead of\n *   `<!doctype html>` to save bytes (default: `false`).\n *\n *   > \uD83D\uDC49 **Note**: intentionally creates parse errors in markup (how parse\n *   > errors are handled is well defined, so this works but isn\u2019t pretty).\n * @property {boolean | null | undefined} [tightSelfClosing=false]\n *   Do not use an extra space when closing self-closing elements: `<img/>`\n *   instead of `<img />` (default: `false`).\n *\n *   > \uD83D\uDC49 **Note**: only used if `closeSelfClosing: true` or\n *   > `closeEmptyElements: true`.\n * @property {boolean | null | undefined} [upperDoctype=false]\n *   Use a `<!DOCTYPE\u2026` instead of `<!doctype\u2026` (default: `false`).\n *\n *   Useless except for XHTML.\n * @property {ReadonlyArray<string> | null | undefined} [voids]\n *   Tag names of elements to serialize without closing tag (default: `html-void-elements`).\n *\n *   Not used in the SVG space.\n *\n *   > \uD83D\uDC49 **Note**: It\u2019s highly unlikely that you want to pass this, because\n *   > hast is not for XML, and HTML will not add more void elements.\n *\n * @typedef {'\"' | \"'\"} Quote\n *   HTML quotes for attribute values.\n *\n * @typedef {Omit<Required<{[key in keyof Options]: Exclude<Options[key], null | undefined>}>, 'space' | 'quote'>} Settings\n *\n * @typedef {'html' | 'svg'} Space\n *   Namespace.\n *\n * @typedef State\n *   Info passed around about the current state.\n * @property {(node: Parents | undefined) => string} all\n *   Serialize the children of a parent node.\n * @property {Quote} alternative\n *   Alternative quote.\n * @property {(node: Nodes, index: number | undefined, parent: Parents | undefined) => string} one\n *   Serialize one node.\n * @property {Quote} quote\n *   Preferred quote.\n * @property {Schema} schema\n *   Current schema.\n * @property {Settings} settings\n *   User configuration.\n */\n\nimport {htmlVoidElements} from 'html-void-elements'\nimport {html, svg} from 'property-information'\nimport {handle} from './handle/index.js'\n\n/** @type {Options} */\nconst emptyOptions = {}\n\n/** @type {CharacterReferences} */\nconst emptyCharacterReferences = {}\n\n/** @type {Array<never>} */\nconst emptyChildren = []\n\n/**\n * Serialize hast as HTML.\n *\n * @param {Array<RootContent> | Nodes} tree\n *   Tree to serialize.\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {string}\n *   Serialized HTML.\n */\nexport function toHtml(tree, options) {\n  const options_ = options || emptyOptions\n  const quote = options_.quote || '\"'\n  const alternative = quote === '\"' ? \"'\" : '\"'\n\n  if (quote !== '\"' && quote !== \"'\") {\n    throw new Error('Invalid quote `' + quote + '`, expected `\\'` or `\"`')\n  }\n\n  /** @type {State} */\n  const state = {\n    one,\n    all,\n    settings: {\n      omitOptionalTags: options_.omitOptionalTags || false,\n      allowParseErrors: options_.allowParseErrors || false,\n      allowDangerousCharacters: options_.allowDangerousCharacters || false,\n      quoteSmart: options_.quoteSmart || false,\n      preferUnquoted: options_.preferUnquoted || false,\n      tightAttributes: options_.tightAttributes || false,\n      upperDoctype: options_.upperDoctype || false,\n      tightDoctype: options_.tightDoctype || false,\n      bogusComments: options_.bogusComments || false,\n      tightCommaSeparatedLists: options_.tightCommaSeparatedLists || false,\n      tightSelfClosing: options_.tightSelfClosing || false,\n      collapseEmptyAttributes: options_.collapseEmptyAttributes || false,\n      allowDangerousHtml: options_.allowDangerousHtml || false,\n      voids: options_.voids || htmlVoidElements,\n      characterReferences:\n        options_.characterReferences || emptyCharacterReferences,\n      closeSelfClosing: options_.closeSelfClosing || false,\n      closeEmptyElements: options_.closeEmptyElements || false\n    },\n    schema: options_.space === 'svg' ? svg : html,\n    quote,\n    alternative\n  }\n\n  return state.one(\n    Array.isArray(tree) ? {type: 'root', children: tree} : tree,\n    undefined,\n    undefined\n  )\n}\n\n/**\n * Serialize a node.\n *\n * @this {State}\n *   Info passed around about the current state.\n * @param {Nodes} node\n *   Node to handle.\n * @param {number | undefined} index\n *   Index of `node` in `parent.\n * @param {Parents | undefined} parent\n *   Parent of `node`.\n * @returns {string}\n *   Serialized node.\n */\nfunction one(node, index, parent) {\n  return handle(node, index, parent, this)\n}\n\n/**\n * Serialize all children of `parent`.\n *\n * @this {State}\n *   Info passed around about the current state.\n * @param {Parents | undefined} parent\n *   Parent whose children to serialize.\n * @returns {string}\n */\nexport function all(parent) {\n  /** @type {Array<string>} */\n  const results = []\n  const children = (parent && parent.children) || emptyChildren\n  let index = -1\n\n  while (++index < children.length) {\n    results[index] = this.one(children[index], index, parent)\n  }\n\n  return results.join('')\n}\n", "/**\n * @import {Root} from 'hast'\n * @import {Options} from 'hast-util-to-html'\n * @import {Compiler, Processor} from 'unified'\n */\n\nimport {toHtml} from 'hast-util-to-html'\n\n/**\n * Plugin to add support for serializing as HTML.\n *\n * @param {Options | null | undefined} [options]\n *   Configuration (optional).\n * @returns {undefined}\n *   Nothing.\n */\nexport default function rehypeStringify(options) {\n  /** @type {Processor<undefined, undefined, undefined, Root, string>} */\n  // @ts-expect-error: TS in JSDoc generates wrong types if `this` is typed regularly.\n  const self = this\n  const settings = {...self.data('settings'), ...options}\n\n  self.compiler = compiler\n\n  /**\n   * @type {Compiler<Root, string>}\n   */\n  function compiler(tree) {\n    return toHtml(tree, settings)\n  }\n}\n", "// Note: types exposed from `index.d.ts`\nimport rehypeParse from 'rehype-parse'\nimport rehypeStringify from 'rehype-stringify'\nimport {unified} from 'unified'\n\n/**\n * Create a new unified processor that already uses `rehype-parse` and\n * `rehype-stringify`.\n */\nexport const rehype = unified().use(rehypeParse).use(rehypeStringify).freeze()\n", "function _extends() {\n  return _extends = Object.assign ? Object.assign.bind() : function (n) {\n    for (var e = 1; e < arguments.length; e++) {\n      var t = arguments[e];\n      for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);\n    }\n    return n;\n  }, _extends.apply(null, arguments);\n}\nexport { _extends as default };", "import _extends from \"@babel/runtime/helpers/extends\";\nimport React from 'react';\nexport function reducer(state, action) {\n  return _extends({}, state, action);\n}\nexport var EditorContext = /*#__PURE__*/React.createContext({\n  markdown: ''\n});", "function _objectWithoutPropertiesLoose(r, e) {\n  if (null == r) return {};\n  var t = {};\n  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n    if (-1 !== e.indexOf(n)) continue;\n    t[n] = r[n];\n  }\n  return t;\n}\nexport { _objectWithoutPropertiesLoose as default };", "import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"prefixCls\", \"className\", \"onScroll\", \"renderTextarea\"];\nimport React, { useEffect, Fragment, useContext } from 'react';\nimport { EditorContext } from \"../../Context.js\";\nimport shortcuts from \"./shortcuts.js\";\nimport Textarea from \"./Textarea.js\";\nimport { TextAreaCommandOrchestrator } from \"../../commands/index.js\";\nimport \"./index.css\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function createTextArea(options) {\n  var _options$useMinHeight;\n  var MarkdownComponent = options == null ? void 0 : options.Markdown;\n  var useMinHeight = (_options$useMinHeight = options == null ? void 0 : options.useMinHeight) != null ? _options$useMinHeight : false;\n  return function TextArea(props) {\n    var _ref = props || {},\n      prefixCls = _ref.prefixCls,\n      className = _ref.className,\n      onScroll = _ref.onScroll,\n      renderTextarea = _ref.renderTextarea,\n      otherProps = _objectWithoutPropertiesLoose(_ref, _excluded);\n    var _useContext = useContext(EditorContext),\n      markdown = _useContext.markdown,\n      scrollTop = _useContext.scrollTop,\n      commands = _useContext.commands,\n      minHeight = _useContext.minHeight,\n      highlightEnable = _useContext.highlightEnable,\n      extraCommands = _useContext.extraCommands,\n      dispatch = _useContext.dispatch;\n    var textRef = React.useRef(null);\n    var executeRef = React.useRef();\n    var warp = /*#__PURE__*/React.createRef();\n    useEffect(() => {\n      var state = {};\n      if (warp.current) {\n        state.textareaWarp = warp.current || undefined;\n        warp.current.scrollTop = scrollTop || 0;\n      }\n      if (dispatch) {\n        dispatch(_extends({}, state));\n      }\n      // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, []);\n    useEffect(() => {\n      if (textRef.current && dispatch) {\n        var commandOrchestrator = new TextAreaCommandOrchestrator(textRef.current);\n        executeRef.current = commandOrchestrator;\n        dispatch({\n          textarea: textRef.current,\n          commandOrchestrator\n        });\n      }\n      // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, []);\n    var textStyle = MarkdownComponent && highlightEnable ? {} : {\n      WebkitTextFillColor: 'initial',\n      overflow: 'auto'\n    };\n    return /*#__PURE__*/_jsx(\"div\", {\n      ref: warp,\n      className: prefixCls + \"-area \" + (className || ''),\n      onScroll: onScroll,\n      children: /*#__PURE__*/_jsx(\"div\", {\n        className: prefixCls + \"-text\",\n        style: useMinHeight ? {\n          minHeight\n        } : undefined,\n        children: renderTextarea ? (/*#__PURE__*/React.cloneElement(renderTextarea(_extends({}, otherProps, {\n          value: markdown,\n          autoComplete: 'off',\n          autoCorrect: 'off',\n          spellCheck: 'false',\n          autoCapitalize: 'off',\n          className: prefixCls + \"-text-input\",\n          style: {\n            WebkitTextFillColor: 'inherit',\n            overflow: 'auto'\n          }\n        }), {\n          dispatch,\n          onChange: otherProps.onChange,\n          shortcuts,\n          useContext: {\n            commands,\n            extraCommands,\n            commandOrchestrator: executeRef.current\n          }\n        }), {\n          ref: textRef\n        })) : /*#__PURE__*/_jsxs(Fragment, {\n          children: [MarkdownComponent && highlightEnable && /*#__PURE__*/_jsx(MarkdownComponent, {\n            prefixCls: prefixCls\n          }), /*#__PURE__*/_jsx(Textarea, _extends({\n            prefixCls: prefixCls\n          }, otherProps, {\n            style: textStyle\n          }))]\n        })\n      })\n    });\n  };\n}", "import _extends from \"@babel/runtime/helpers/extends\";\nfunction getCommands(data, resulte) {\n  if (data === void 0) {\n    data = [];\n  }\n  if (resulte === void 0) {\n    resulte = {};\n  }\n  data.forEach(item => {\n    if (item.children && Array.isArray(item.children)) {\n      resulte = _extends({}, resulte, getCommands(item.children || []));\n    } else if (item.keyCommand && item.shortcuts && item.execute) {\n      resulte[item.shortcuts.toLocaleLowerCase()] = item;\n    }\n  });\n  return resulte;\n}\nexport default function shortcutsHandle(e, commands, commandOrchestrator, dispatch, state) {\n  if (commands === void 0) {\n    commands = [];\n  }\n  var data = getCommands(commands || []);\n  var shortcuts = [];\n  if (e.altKey) {\n    shortcuts.push('alt');\n  }\n  if (e.shiftKey) {\n    shortcuts.push('shift');\n  }\n  if (e.metaKey) {\n    shortcuts.push('cmd');\n  }\n  if (e.ctrlKey) {\n    shortcuts.push('ctrl');\n  }\n  if (shortcuts.length > 0 && !/(control|alt|meta|shift)/.test(e.key.toLocaleLowerCase())) {\n    shortcuts.push(e.key.toLocaleLowerCase());\n  }\n  if (/escape/.test(e.key.toLocaleLowerCase())) {\n    shortcuts.push('escape');\n  }\n  if (shortcuts.length < 1) {\n    return;\n  }\n  var equal = !!data[shortcuts.join('+')];\n  var command = equal ? data[shortcuts.join('+')] : undefined;\n  Object.keys(data).forEach(item => {\n    var isequal = item.split('+').every(v => {\n      if (/ctrlcmd/.test(v)) {\n        return shortcuts.includes('ctrl') || shortcuts.includes('cmd');\n      }\n      return shortcuts.includes(v);\n    });\n    if (isequal) {\n      command = data[item];\n    }\n  });\n  if (command && commandOrchestrator) {\n    e.stopPropagation();\n    e.preventDefault();\n    commandOrchestrator.executeCommand(command, dispatch, state, shortcuts);\n    return;\n  }\n}", "import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"prefixCls\", \"onChange\"],\n  _excluded2 = [\"markdown\", \"commands\", \"fullscreen\", \"preview\", \"highlightEnable\", \"extraCommands\", \"tabSize\", \"defaultTabEnable\", \"autoFocusEnd\", \"textareaWarp\", \"dispatch\"];\nimport React, { useContext, useEffect } from 'react';\nimport { EditorContext } from \"../../Context.js\";\nimport { TextAreaCommandOrchestrator } from \"../../commands/index.js\";\nimport handleKeyDown from \"./handleKeyDown.js\";\nimport shortcuts from \"./shortcuts.js\";\nimport \"./index.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function Textarea(props) {\n  var prefixCls = props.prefixCls,\n    _onChange = props.onChange,\n    other = _objectWithoutPropertiesLoose(props, _excluded);\n  var _useContext = useContext(EditorContext),\n    markdown = _useContext.markdown,\n    commands = _useContext.commands,\n    fullscreen = _useContext.fullscreen,\n    preview = _useContext.preview,\n    highlightEnable = _useContext.highlightEnable,\n    extraCommands = _useContext.extraCommands,\n    tabSize = _useContext.tabSize,\n    defaultTabEnable = _useContext.defaultTabEnable,\n    autoFocusEnd = _useContext.autoFocusEnd,\n    textareaWarp = _useContext.textareaWarp,\n    dispatch = _useContext.dispatch,\n    otherStore = _objectWithoutPropertiesLoose(_useContext, _excluded2);\n  var textRef = React.useRef(null);\n  var executeRef = React.useRef();\n  var statesRef = React.useRef({\n    fullscreen,\n    preview\n  });\n  useEffect(() => {\n    statesRef.current = {\n      fullscreen,\n      preview,\n      highlightEnable\n    };\n  }, [fullscreen, preview, highlightEnable]);\n  useEffect(() => {\n    if (textRef.current && dispatch) {\n      var commandOrchestrator = new TextAreaCommandOrchestrator(textRef.current);\n      executeRef.current = commandOrchestrator;\n      dispatch({\n        textarea: textRef.current,\n        commandOrchestrator\n      });\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n  useEffect(() => {\n    if (autoFocusEnd && textRef.current && textareaWarp) {\n      textRef.current.focus();\n      var length = textRef.current.value.length;\n      textRef.current.setSelectionRange(length, length);\n      setTimeout(() => {\n        if (textareaWarp) {\n          textareaWarp.scrollTop = textareaWarp.scrollHeight;\n        }\n        if (textRef.current) {\n          textRef.current.scrollTop = textRef.current.scrollHeight;\n        }\n      }, 0);\n    }\n  }, [textareaWarp]);\n  var onKeyDown = e => {\n    handleKeyDown(e, tabSize, defaultTabEnable);\n    shortcuts(e, [...(commands || []), ...(extraCommands || [])], executeRef.current, dispatch, statesRef.current);\n  };\n  useEffect(() => {\n    if (textRef.current) {\n      textRef.current.addEventListener('keydown', onKeyDown);\n    }\n    return () => {\n      if (textRef.current) {\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n        textRef.current.removeEventListener('keydown', onKeyDown);\n      }\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n  return /*#__PURE__*/_jsx(\"textarea\", _extends({\n    autoComplete: \"off\",\n    autoCorrect: \"off\",\n    autoCapitalize: \"off\",\n    spellCheck: false\n  }, other, {\n    ref: textRef,\n    className: prefixCls + \"-text-input \" + (other.className ? other.className : ''),\n    value: markdown,\n    onChange: e => {\n      dispatch && dispatch({\n        markdown: e.target.value\n      });\n      _onChange && _onChange(e);\n    }\n  }));\n}", "/**\n * The MIT License\n * Copyright (c) 2018 Dmitriy Kubyshkin\n * Copied from https://github.com/grassator/insert-text-at-cursor\n */\n\nvar browserSupportsTextareaTextNodes;\n\n/**\n * @param {HTMLElement} input\n * @return {boolean}\n */\nfunction canManipulateViaTextNodes(input) {\n  if (input.nodeName !== 'TEXTAREA') {\n    return false;\n  }\n  if (typeof browserSupportsTextareaTextNodes === 'undefined') {\n    var textarea = document.createElement('textarea');\n    textarea.value = '1';\n    browserSupportsTextareaTextNodes = !!textarea.firstChild;\n  }\n  return browserSupportsTextareaTextNodes;\n}\n\n/**\n * @param {HTMLTextAreaElement|HTMLInputElement} input\n * @param {string} text\n * @returns {void}\n */\nexport function insertTextAtPosition(input, text) {\n  // Most of the used APIs only work with the field selected\n  input.focus();\n\n  // IE 8-10\n  if (document.selection) {\n    var ieRange = document.selection.createRange();\n    ieRange.text = text;\n\n    // Move cursor after the inserted text\n    ieRange.collapse(false /* to the end */);\n    ieRange.select();\n    return;\n  }\n\n  // Webkit + Edge\n  var isSuccess = false;\n  if (text !== '') {\n    isSuccess = document.execCommand && document.execCommand('insertText', false, text);\n  } else {\n    isSuccess = document.execCommand && document.execCommand('delete', false);\n  }\n  if (!isSuccess) {\n    var start = input.selectionStart;\n    var end = input.selectionEnd;\n    // Firefox (non-standard method)\n    if (typeof input.setRangeText === 'function') {\n      input.setRangeText(text);\n    } else {\n      // To make a change we just need a Range, not a Selection\n      var range = document.createRange();\n      var textNode = document.createTextNode(text);\n      if (canManipulateViaTextNodes(input)) {\n        var node = input.firstChild;\n\n        // If textarea is empty, just insert the text\n        if (!node) {\n          input.appendChild(textNode);\n        } else {\n          // Otherwise we need to find a nodes for start and end\n          var offset = 0;\n          var startNode = null;\n          var endNode = null;\n          while (node && (startNode === null || endNode === null)) {\n            var nodeLength = node.nodeValue.length;\n\n            // if start of the selection falls into current node\n            if (start >= offset && start <= offset + nodeLength) {\n              range.setStart(startNode = node, start - offset);\n            }\n\n            // if end of the selection falls into current node\n            if (end >= offset && end <= offset + nodeLength) {\n              range.setEnd(endNode = node, end - offset);\n            }\n            offset += nodeLength;\n            node = node.nextSibling;\n          }\n\n          // If there is some text selected, remove it as we should replace it\n          if (start !== end) {\n            range.deleteContents();\n          }\n        }\n      }\n\n      // If the node is a textarea and the range doesn't span outside the element\n      //\n      // Get the commonAncestorContainer of the selected range and test its type\n      // If the node is of type `#text` it means that we're still working with text nodes within our textarea element\n      // otherwise, if it's of type `#document` for example it means our selection spans outside the textarea.\n      if (canManipulateViaTextNodes(input) && range.commonAncestorContainer.nodeName === '#text') {\n        // Finally insert a new node. The browser will automatically split start and end nodes into two if necessary\n        range.insertNode(textNode);\n      } else {\n        // If the node is not a textarea or the range spans outside a textarea the only way is to replace the whole value\n        var value = input.value;\n        input.value = value.slice(0, start) + text + value.slice(end);\n      }\n    }\n\n    // Correct the cursor position to be at the end of the insertion\n    input.setSelectionRange(start + text.length, start + text.length);\n\n    // Notify any possible listeners of the change\n    var e = document.createEvent('UIEvent');\n    e.initEvent('input', true, false);\n    input.dispatchEvent(e);\n  }\n}", "import React from 'react';\nimport { selectWord, executeCommand } from \"../utils/markdownUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var bold = {\n  name: 'bold',\n  keyCommand: 'bold',\n  shortcuts: 'ctrlcmd+b',\n  prefix: '**',\n  buttonProps: {\n    'aria-label': 'Add bold text (ctrl + b)',\n    title: 'Add bold text (ctrl + b)'\n  },\n  icon: /*#__PURE__*/_jsx(\"svg\", {\n    role: \"img\",\n    width: \"12\",\n    height: \"12\",\n    viewBox: \"0 0 384 512\",\n    children: /*#__PURE__*/_jsx(\"path\", {\n      fill: \"currentColor\",\n      d: \"M304.793 243.891c33.639-18.537 53.657-54.16 53.657-95.693 0-48.236-26.25-87.626-68.626-104.179C265.138 34.01 240.849 32 209.661 32H24c-8.837 0-16 7.163-16 16v33.049c0 8.837 7.163 16 16 16h33.113v318.53H24c-8.837 0-16 7.163-16 16V464c0 8.837 7.163 16 16 16h195.69c24.203 0 44.834-1.289 66.866-7.584C337.52 457.193 376 410.647 376 350.014c0-52.168-26.573-91.684-71.207-106.123zM142.217 100.809h67.444c16.294 0 27.536 2.019 37.525 6.717 15.828 8.479 24.906 26.502 24.906 49.446 0 35.029-20.32 56.79-53.029 56.79h-76.846V100.809zm112.642 305.475c-10.14 4.056-22.677 4.907-31.409 4.907h-81.233V281.943h84.367c39.645 0 63.057 25.38 63.057 63.057.001 28.425-13.66 52.483-34.782 61.284z\"\n    })\n  }),\n  execute: (state, api) => {\n    var newSelectionRange = selectWord({\n      text: state.text,\n      selection: state.selection,\n      prefix: state.command.prefix\n    });\n    var state1 = api.setSelectionRange(newSelectionRange);\n    executeCommand({\n      api,\n      selectedText: state1.selectedText,\n      selection: state.selection,\n      prefix: state.command.prefix\n    });\n  }\n};", "// `*` is a prefix of `**`, so `**text**` is bold-only and `***text***` is bold+italic.\nfunction isItalicInsideBoldOnly(text, start, end) {\n  var insideBold = start >= 2 && end + 2 <= text.length && text.slice(start - 2, start) === '**' && text.slice(end, end + 2) === '**';\n  if (!insideBold) {\n    return false;\n  }\n  var insideBoldItalic = start >= 3 && end + 3 <= text.length && text.slice(start - 3, start) === '***' && text.slice(end, end + 3) === '***';\n  return !insideBoldItalic;\n}\nfunction isAlreadyWrapped(selectedText, prefix, suffix) {\n  if (selectedText.length < prefix.length + suffix.length || !selectedText.startsWith(prefix) || !selectedText.endsWith(suffix)) {\n    return false;\n  }\n  if (prefix === '*' && suffix === '*') {\n    var isBold = selectedText.startsWith('**') && selectedText.endsWith('**');\n    var isBoldItalic = selectedText.startsWith('***') && selectedText.endsWith('***');\n    if (isBold && !isBoldItalic) {\n      return false;\n    }\n  }\n  return true;\n}\nexport function selectWord(_ref) {\n  var text = _ref.text,\n    selection = _ref.selection,\n    prefix = _ref.prefix,\n    _ref$suffix = _ref.suffix,\n    suffix = _ref$suffix === void 0 ? prefix : _ref$suffix;\n  var result = selection;\n  if (text && text.length && selection.start === selection.end) {\n    result = getSurroundingWord(text, selection.start);\n  }\n  if (result.start >= prefix.length && result.end <= text.length - suffix.length) {\n    var selectedTextContext = text.slice(result.start - prefix.length, result.end + suffix.length);\n    if (selectedTextContext.startsWith(prefix) && selectedTextContext.endsWith(suffix)) {\n      if (prefix === '*' && suffix === '*' && isItalicInsideBoldOnly(text, result.start, result.end)) {\n        return result;\n      }\n      return {\n        start: result.start - prefix.length,\n        end: result.end + suffix.length\n      };\n    }\n  }\n  return result;\n}\nexport function selectLine(_ref2) {\n  var text = _ref2.text,\n    selection = _ref2.selection;\n  var start = text.slice(0, selection.start).lastIndexOf('\\n') + 1;\n  var end = text.slice(selection.end).indexOf('\\n') + selection.end;\n  if (end === selection.end - 1) {\n    end = text.length;\n  }\n  return {\n    start,\n    end\n  };\n}\n\n/**\n *  Gets the number of line-breaks that would have to be inserted before the given 'startPosition'\n *  to make sure there's an empty line between 'startPosition' and the previous text\n */\nexport function getBreaksNeededForEmptyLineBefore(text, startPosition) {\n  if (text === void 0) {\n    text = '';\n  }\n  if (startPosition === 0) return 0;\n\n  // rules:\n  // - If we're in the first line, no breaks are needed\n  // - Otherwise there must be 2 breaks before the previous character. Depending on how many breaks exist already, we\n  //      may need to insert 0, 1 or 2 breaks\n\n  var neededBreaks = 2;\n  var isInFirstLine = true;\n  for (var i = startPosition - 1; i >= 0 && neededBreaks >= 0; i--) {\n    switch (text.charCodeAt(i)) {\n      case 32:\n        // blank space\n        continue;\n      case 10:\n        // line break\n        neededBreaks--;\n        isInFirstLine = false;\n        break;\n      default:\n        return neededBreaks;\n    }\n  }\n  return isInFirstLine ? 0 : neededBreaks;\n}\n\n/**\n *  Gets the number of line-breaks that would have to be inserted after the given 'startPosition'\n *  to make sure there's an empty line between 'startPosition' and the next text\n */\nexport function getBreaksNeededForEmptyLineAfter(text, startPosition) {\n  if (text === void 0) {\n    text = '';\n  }\n  if (startPosition === text.length - 1) return 0;\n\n  // rules:\n  // - If we're in the first line, no breaks are needed\n  // - Otherwise there must be 2 breaks before the previous character. Depending on how many breaks exist already, we\n  //      may need to insert 0, 1 or 2 breaks\n\n  var neededBreaks = 2;\n  var isInLastLine = true;\n  for (var i = startPosition; i < text.length && neededBreaks >= 0; i++) {\n    switch (text.charCodeAt(i)) {\n      case 32:\n        continue;\n      case 10:\n        {\n          neededBreaks--;\n          isInLastLine = false;\n          break;\n        }\n      default:\n        return neededBreaks;\n    }\n  }\n  return isInLastLine ? 0 : neededBreaks;\n}\nexport function getSurroundingWord(text, position) {\n  if (!text) throw Error(\"Argument 'text' should be truthy\");\n  var isWordDelimiter = c => c === ' ' || c.charCodeAt(0) === 10;\n\n  // leftIndex is initialized to 0 because if selection is 0, it won't even enter the iteration\n  var start = 0;\n  // rightIndex is initialized to text.length because if selection is equal to text.length it won't even enter the interation\n  var end = text.length;\n\n  // iterate to the left\n  for (var i = position; i - 1 > -1; i--) {\n    if (isWordDelimiter(text[i - 1])) {\n      start = i;\n      break;\n    }\n  }\n\n  // iterate to the right\n  for (var _i = position; _i < text.length; _i++) {\n    if (isWordDelimiter(text[_i])) {\n      end = _i;\n      break;\n    }\n  }\n  return {\n    start,\n    end\n  };\n}\nexport function executeCommand(_ref3) {\n  var api = _ref3.api,\n    selectedText = _ref3.selectedText,\n    selection = _ref3.selection,\n    prefix = _ref3.prefix,\n    _ref3$suffix = _ref3.suffix,\n    suffix = _ref3$suffix === void 0 ? prefix : _ref3$suffix;\n  if (isAlreadyWrapped(selectedText, prefix, suffix)) {\n    api.replaceSelection(selectedText.slice(prefix.length, suffix.length ? -suffix.length : undefined));\n    api.setSelectionRange({\n      start: selection.start - prefix.length,\n      end: selection.end - prefix.length\n    });\n  } else {\n    api.replaceSelection(\"\" + prefix + selectedText + suffix);\n    api.setSelectionRange({\n      start: selection.start + prefix.length,\n      end: selection.end + prefix.length\n    });\n  }\n}\n/**\n * Inserts insertionString before each line\n */\nexport function insertBeforeEachLine(selectedText, insertBefore) {\n  var lines = selectedText.split(/\\n/);\n  var insertionLength = 0;\n  var modifiedText = lines.map((item, index) => {\n    if (typeof insertBefore === 'string') {\n      if (item.startsWith(insertBefore)) {\n        insertionLength -= insertBefore.length;\n        return item.slice(insertBefore.length);\n      }\n      insertionLength += insertBefore.length;\n      return insertBefore + item;\n    }\n    if (typeof insertBefore === 'function') {\n      if (item.startsWith(insertBefore(item, index))) {\n        insertionLength -= insertBefore(item, index).length;\n        return item.slice(insertBefore(item, index).length);\n      }\n      var insertionResult = insertBefore(item, index);\n      insertionLength += insertionResult.length;\n      return insertBefore(item, index) + item;\n    }\n    throw Error('insertion is expected to be either a string or a function');\n  }).join('\\n');\n  return {\n    modifiedText,\n    insertionLength\n  };\n}", "import React from 'react';\nimport { selectWord, executeCommand } from \"../utils/markdownUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var codeBlock = {\n  name: 'codeBlock',\n  keyCommand: 'codeBlock',\n  shortcuts: 'ctrlcmd+shift+j',\n  prefix: '```',\n  buttonProps: {\n    'aria-label': 'Insert Code Block (ctrl + shift + j)',\n    title: 'Insert Code Block (ctrl + shift +j)'\n  },\n  icon: /*#__PURE__*/_jsx(\"svg\", {\n    width: \"13\",\n    height: \"13\",\n    role: \"img\",\n    viewBox: \"0 0 156 156\",\n    children: /*#__PURE__*/_jsx(\"path\", {\n      fill: \"currentColor\",\n      d: \"M110.85 120.575 43.7 120.483333 43.7083334 110.091667 110.85 110.191667 110.841667 120.583333 110.85 120.575ZM85.1333334 87.1916666 43.625 86.7083332 43.7083334 76.3166666 85.2083334 76.7916666 85.1333334 87.1916666 85.1333334 87.1916666ZM110.841667 53.4166666 43.7 53.3166666 43.7083334 42.925 110.85 43.025 110.841667 53.4166666ZM36 138C27.2916666 138 20.75 136.216667 16.4 132.666667 12.1333334 129.2 10 124.308333 10 118L10 95.3333332C10 91.0666666 9.25 88.1333332 7.7333334 86.5333332 6.3166668 84.8416666 3.7333334 84 0 84L0 72C3.7333334 72 6.3083334 71.2 7.7333334 69.6 9.2416668 67.9083334 10 64.9333334 10 60.6666666L10 38C10 31.775 12.1333334 26.8833334 16.4 23.3333332 20.7583334 19.7749998 27.2916666 18 36 18L40.6666668 18 40.6666668 30 36 30C34.0212222 29.9719277 32.1263151 30.7979128 30.8 32.2666666 29.3605875 33.8216362 28.5938182 35.8823287 28.6666668 38L28.6666668 60.6666666C28.6666668 67.5083332 26.6666668 72.4 22.6666668 75.3333332 20.9317416 76.7274684 18.8640675 77.6464347 16.6666668 78 18.8916668 78.35 20.8916668 79.2416666 22.6666668 80.6666666 26.6666668 83.95 28.6666668 88.8416666 28.6666668 95.3333332L28.6666668 118C28.6666668 120.308333 29.3750002 122.216667 30.8 123.733333 32.2166666 125.241667 33.9583334 126 36 126L40.6666668 126 40.6666668 138 36 138 36 138ZM114.116667 126 118.783333 126C120.833333 126 122.566667 125.241667 123.983333 123.733333 125.422746 122.178364 126.189515 120.117671 126.116667 118L126.116667 95.3333332C126.116667 88.8333332 128.116667 83.9499998 132.116667 80.6666666 133.9 79.2416666 135.9 78.35 138.116667 78 135.919156 77.6468047 133.851391 76.7277979 132.116667 75.3333332 128.116667 72.3999998 126.116667 67.5 126.116667 60.6666666L126.116667 38C126.189515 35.8823287 125.422746 33.8216361 123.983333 32.2666666 122.657018 30.7979128 120.762111 29.9719277 118.783333 30L114.116667 30 114.116667 18 118.783333 18C127.5 18 133.983333 19.775 138.25 23.3333332 142.608333 26.8833332 144.783333 31.7749998 144.783333 38L144.783333 60.6666666C144.783333 64.9333332 145.5 67.9083332 146.916667 69.6 148.433333 71.2 151.05 72 154.783333 72L154.783333 84C151.05 84 148.433333 84.8333334 146.916667 86.5333332 145.5 88.1333332 144.783333 91.0666666 144.783333 95.3333332L144.783333 118C144.783333 124.308333 142.616667 129.2 138.25 132.666667 133.983333 136.216667 127.5 138 118.783333 138L114.116667 138 114.116667 126 114.116667 126Z\"\n    })\n  }),\n  execute: (state, api) => {\n    var newSelectionRange = selectWord({\n      text: state.text,\n      selection: state.selection,\n      prefix: '```\\n',\n      suffix: '\\n```'\n    });\n    var state1 = api.setSelectionRange(newSelectionRange);\n\n    // Based on context determine if new line is needed or not\n    var prefix = '\\n```\\n';\n    var suffix = '\\n```\\n';\n    if (state1.selectedText.length >= prefix.length + suffix.length - 2 && state1.selectedText.startsWith(prefix) && state1.selectedText.endsWith(suffix)) {\n      // Remove code block\n      prefix = '```\\n';\n      suffix = '\\n```';\n    } else {\n      // Add code block\n      if (state1.selection.start >= 1 && state.text.slice(state1.selection.start - 1, state1.selection.start) === '\\n' || state1.selection.start === 0) {\n        prefix = '```\\n';\n      }\n      if (state1.selection.end <= state.text.length - 1 && state.text.slice(state1.selection.end, state1.selection.end + 1) === '\\n' || state1.selection.end === state.text.length) {\n        suffix = '\\n```';\n      }\n    }\n    var newSelectionRange2 = selectWord({\n      text: state.text,\n      selection: state.selection,\n      prefix,\n      suffix\n    });\n    var state2 = api.setSelectionRange(newSelectionRange2);\n    executeCommand({\n      api,\n      selectedText: state2.selectedText,\n      selection: state.selection,\n      prefix,\n      suffix\n    });\n  }\n};\nexport var code = {\n  name: 'code',\n  keyCommand: 'code',\n  shortcuts: 'ctrlcmd+j',\n  prefix: '`',\n  buttonProps: {\n    'aria-label': 'Insert code (ctrl + j)',\n    title: 'Insert code (ctrl + j)'\n  },\n  icon: /*#__PURE__*/_jsx(\"svg\", {\n    width: \"14\",\n    height: \"14\",\n    role: \"img\",\n    viewBox: \"0 0 640 512\",\n    children: /*#__PURE__*/_jsx(\"path\", {\n      fill: \"currentColor\",\n      d: \"M278.9 511.5l-61-17.7c-6.4-1.8-10-8.5-8.2-14.9L346.2 8.7c1.8-6.4 8.5-10 14.9-8.2l61 17.7c6.4 1.8 10 8.5 8.2 14.9L293.8 503.3c-1.9 6.4-8.5 10.1-14.9 8.2zm-114-112.2l43.5-46.4c4.6-4.9 4.3-12.7-.8-17.2L117 256l90.6-79.7c5.1-4.5 5.5-12.3.8-17.2l-43.5-46.4c-4.5-4.8-12.1-5.1-17-.5L3.8 247.2c-5.1 4.7-5.1 12.8 0 17.5l144.1 135.1c4.9 4.6 12.5 4.4 17-.5zm327.2.6l144.1-135.1c5.1-4.7 5.1-12.8 0-17.5L492.1 112.1c-4.8-4.5-12.4-4.3-17 .5L431.6 159c-4.6 4.9-4.3 12.7.8 17.2L523 256l-90.6 79.7c-5.1 4.5-5.5 12.3-.8 17.2l43.5 46.4c4.5 4.9 12.1 5.1 17 .6z\"\n    })\n  }),\n  execute: (state, api) => {\n    if (state.selectedText.indexOf('\\n') === -1) {\n      var newSelectionRange = selectWord({\n        text: state.text,\n        selection: state.selection,\n        prefix: state.command.prefix\n      });\n      var state1 = api.setSelectionRange(newSelectionRange);\n      executeCommand({\n        api,\n        selectedText: state1.selectedText,\n        selection: state.selection,\n        prefix: state.command.prefix\n      });\n    } else {\n      codeBlock.execute(state, api);\n    }\n  }\n};", "import React from 'react';\nimport { selectWord, executeCommand } from \"../utils/markdownUtils.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport var comment = {\n  name: 'comment',\n  keyCommand: 'comment',\n  shortcuts: 'ctrlcmd+/',\n  prefix: '<!-- ',\n  suffix: ' -->',\n  buttonProps: {\n    'aria-label': 'Insert comment (ctrl + /)',\n    title: 'Insert comment (ctrl + /)'\n  },\n  icon: /*#__PURE__*/_jsx(\"svg\", {\n    height: \"1em\",\n    width: \"1em\",\n    viewBox: \"0 0 25 25\",\n    children: /*#__PURE__*/_jsxs(\"g\", {\n      fill: \"none\",\n      fillRule: \"evenodd\",\n      children: [/*#__PURE__*/_jsx(\"polygon\", {\n        points: \".769 .727 24.981 .727 24.981 24.727 .769 24.727\"\n      }), /*#__PURE__*/_jsx(\"path\", {\n        stroke: \"currentColor\",\n        strokeLinecap: \"round\",\n        strokeLinejoin: \"round\",\n        strokeWidth: \"3\",\n        d: \"M12.625,23.8787879 L8.125,19.6969697 L5.125,19.6969697 C2.63971863,19.6969697 0.625,17.8247059 0.625,15.5151515 L0.625,7.15151515 C0.625,4.84196074 2.63971863,2.96969697 5.125,2.96969697 L20.125,2.96969697 C22.6102814,2.96969697 24.625,4.84196074 24.625,7.15151515 L24.625,15.5151515 C24.625,17.8247059 22.6102814,19.6969697 20.125,19.6969697 L17.125,19.6969697 L12.625,23.8787879\"\n      }), /*#__PURE__*/_jsx(\"path\", {\n        stroke: \"currentColor\",\n        strokeLinecap: \"round\",\n        strokeLinejoin: \"round\",\n        strokeWidth: \"3\",\n        d: \"M10.625,8.54545455 L7.25,11.3333333 L10.625,14.1212121 M15.6875,8.54545455 L19.0625,11.3333333 L15.6875,14.1212121\"\n      })]\n    })\n  }),\n  execute: (state, api) => {\n    var newSelectionRange = selectWord({\n      text: state.text,\n      selection: state.selection,\n      prefix: state.command.prefix,\n      suffix: state.command.suffix\n    });\n    var state1 = api.setSelectionRange(newSelectionRange);\n    executeCommand({\n      api,\n      selectedText: state1.selectedText,\n      selection: state.selection,\n      prefix: state.command.prefix,\n      suffix: state.command.suffix\n    });\n  }\n};", "export var divider = {\n  keyCommand: 'divider'\n};", "import React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var fullscreen = {\n  name: 'fullscreen',\n  keyCommand: 'fullscreen',\n  shortcuts: 'ctrlcmd+0',\n  value: 'fullscreen',\n  buttonProps: {\n    'aria-label': 'Toggle fullscreen (ctrl + 0)',\n    title: 'Toggle fullscreen (ctrl+ 0)'\n  },\n  icon: /*#__PURE__*/_jsx(\"svg\", {\n    width: \"12\",\n    height: \"12\",\n    viewBox: \"0 0 520 520\",\n    children: /*#__PURE__*/_jsx(\"path\", {\n      fill: \"currentColor\",\n      d: \"M118 171.133334L118 342.200271C118 353.766938 126.675 365.333605 141.133333 365.333605L382.634614 365.333605C394.201281 365.333605 405.767948 356.658605 405.767948 342.200271L405.767948 171.133334C405.767948 159.566667 397.092948 148 382.634614 148L141.133333 148C126.674999 148 117.999999 156.675 118 171.133334zM465.353591 413.444444L370 413.444444 370 471.222222 474.0221 471.222222C500.027624 471.222222 520.254143 451 520.254143 425L520.254143 321 462.464089 321 462.464089 413.444444 465.353591 413.444444zM471.0221 43L367 43 367 100.777778 462.353591 100.777778 462.353591 196.111111 520.143647 196.111111 520.143647 89.2222219C517.254144 63.2222219 497.027624 43 471.0221 43zM57.7900547 100.777778L153.143646 100.777778 153.143646 43 46.2320439 43C20.2265191 43 0 63.2222219 0 89.2222219L0 193.222222 57.7900547 193.222222 57.7900547 100.777778zM57.7900547 321L0 321 0 425C0 451 20.2265191 471.222222 46.2320439 471.222223L150.254143 471.222223 150.254143 413.444445 57.7900547 413.444445 57.7900547 321z\"\n    })\n  }),\n  execute: (state, api, dispatch, executeCommandState, shortcuts) => {\n    api.textArea.focus();\n    if (shortcuts && dispatch && executeCommandState) {\n      dispatch({\n        fullscreen: !executeCommandState.fullscreen\n      });\n    }\n  }\n};", "function _objectDestructuringEmpty(t) {\n  if (null == t) throw new TypeError(\"Cannot destructure \" + t);\n}\nexport { _objectDestructuringEmpty as default };", "import _objectDestructuringEmpty from \"@babel/runtime/helpers/objectDestructuringEmpty\";\nimport _extends from \"@babel/runtime/helpers/extends\";\nimport React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var group = (arr, options) => {\n  var data = _extends({\n    children: arr,\n    icon: /*#__PURE__*/_jsx(\"svg\", {\n      width: \"12\",\n      height: \"12\",\n      viewBox: \"0 0 520 520\",\n      children: /*#__PURE__*/_jsx(\"path\", {\n        fill: \"currentColor\",\n        d: \"M15.7083333,468 C7.03242448,468 0,462.030833 0,454.666667 L0,421.333333 C0,413.969167 7.03242448,408 15.7083333,408 L361.291667,408 C369.967576,408 377,413.969167 377,421.333333 L377,454.666667 C377,462.030833 369.967576,468 361.291667,468 L15.7083333,468 Z M21.6666667,366 C9.69989583,366 0,359.831861 0,352.222222 L0,317.777778 C0,310.168139 9.69989583,304 21.6666667,304 L498.333333,304 C510.300104,304 520,310.168139 520,317.777778 L520,352.222222 C520,359.831861 510.300104,366 498.333333,366 L21.6666667,366 Z M136.835938,64 L136.835937,126 L107.25,126 L107.25,251 L40.75,251 L40.75,126 L-5.68434189e-14,126 L-5.68434189e-14,64 L136.835938,64 Z M212,64 L212,251 L161.648438,251 L161.648438,64 L212,64 Z M378,64 L378,126 L343.25,126 L343.25,251 L281.75,251 L281.75,126 L238,126 L238,64 L378,64 Z M449.047619,189.550781 L520,189.550781 L520,251 L405,251 L405,64 L449.047619,64 L449.047619,189.550781 Z\"\n      })\n    }),\n    execute: () => {}\n  }, options, {\n    keyCommand: 'group'\n  });\n  if (Array.isArray(data.children)) {\n    data.children = data.children.map(_ref => {\n      var item = _extends({}, (_objectDestructuringEmpty(_ref), _ref));\n      item.parent = data;\n      return _extends({}, item);\n    });\n  }\n  return data;\n};", "import React from 'react';\nimport { selectWord, executeCommand } from \"../utils/markdownUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var hr = {\n  name: 'hr',\n  keyCommand: 'hr',\n  shortcuts: 'ctrlcmd+h',\n  prefix: '\\n\\n---\\n',\n  suffix: '',\n  buttonProps: {\n    'aria-label': 'Insert HR (ctrl + h)',\n    title: 'Insert HR (ctrl + h)'\n  },\n  icon: /*#__PURE__*/_jsx(\"svg\", {\n    width: \"12\",\n    height: \"12\",\n    viewBox: \"0 0 175 175\",\n    children: /*#__PURE__*/_jsx(\"path\", {\n      fill: \"currentColor\",\n      d: \"M0,129 L175,129 L175,154 L0,154 L0,129 Z M3,9 L28.2158203,9 L28.2158203,47.9824219 L55.7695313,47.9824219 L55.7695313,9 L81.0966797,9 L81.0966797,107.185547 L55.7695313,107.185547 L55.7695313,68.0214844 L28.2158203,68.0214844 L28.2158203,107.185547 L3,107.185547 L3,9 Z M93.1855469,100.603516 L93.1855469,19 L135.211914,19 C143.004922,19 148.960917,19.6679621 153.080078,21.0039063 C157.199239,22.3398504 160.520495,24.8168764 163.043945,28.4350586 C165.567395,32.0532407 166.829102,36.459935 166.829102,41.6552734 C166.829102,46.1826398 165.864267,50.0883625 163.93457,53.3725586 C162.004873,56.6567547 159.351579,59.3193257 155.974609,61.3603516 C153.822255,62.6591862 150.872089,63.7353473 147.124023,64.5888672 C150.129898,65.5908253 152.319329,66.5927684 153.692383,67.5947266 C154.620122,68.2626987 155.965323,69.6913953 157.728027,71.8808594 C159.490731,74.0703234 160.668942,75.7587831 161.262695,76.9462891 L173,100.603516 L144.953125,100.603516 L131.482422,75.6660156 C129.775382,72.4374839 128.253913,70.3408251 126.917969,69.3759766 C125.0996,68.1142515 123.040051,67.4833984 120.739258,67.4833984 L118.512695,67.4833984 L118.512695,100.603516 L93.1855469,100.603516 Z M118.512695,52.0644531 L129.144531,52.0644531 C130.294928,52.0644531 132.521468,51.6933631 135.824219,50.9511719 C137.494149,50.6171858 138.857905,49.7636787 139.915527,48.390625 C140.97315,47.0175713 141.501953,45.4404386 141.501953,43.6591797 C141.501953,41.0244009 140.667001,39.0019602 138.99707,37.5917969 C137.32714,36.1816336 134.191429,35.4765625 129.589844,35.4765625 L117.512695,35.4765625 L118.512695,52.0644531 Z\",\n      transform: \"translate(0 9)\"\n    })\n  }),\n  execute: (state, api) => {\n    var newSelectionRange = selectWord({\n      text: state.text,\n      selection: state.selection,\n      prefix: state.command.prefix,\n      suffix: state.command.suffix\n    });\n    var state1 = api.setSelectionRange(newSelectionRange);\n    if (state1.selectedText.length >= state.command.prefix.length && state1.selectedText.startsWith(state.command.prefix)) {\n      // Remove\n      executeCommand({\n        api,\n        selectedText: state1.selectedText,\n        selection: state.selection,\n        prefix: state.command.prefix,\n        suffix: state.command.suffix\n      });\n    } else {\n      // Add\n      state1 = api.setSelectionRange({\n        start: state.selection.start,\n        end: state.selection.start\n      });\n      executeCommand({\n        api,\n        selectedText: state1.selectedText,\n        selection: state.selection,\n        prefix: state.command.prefix,\n        suffix: state.command.suffix\n      });\n    }\n  }\n};", "import React from 'react';\nimport { selectWord, executeCommand } from \"../utils/markdownUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var image = {\n  name: 'image',\n  keyCommand: 'image',\n  shortcuts: 'ctrlcmd+k',\n  prefix: '![image](',\n  suffix: ')',\n  buttonProps: {\n    'aria-label': 'Add image (ctrl + k)',\n    title: 'Add image (ctrl + k)'\n  },\n  icon: /*#__PURE__*/_jsx(\"svg\", {\n    width: \"13\",\n    height: \"13\",\n    viewBox: \"0 0 20 20\",\n    children: /*#__PURE__*/_jsx(\"path\", {\n      fill: \"currentColor\",\n      d: \"M15 9c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm4-7H1c-.55 0-1 .45-1 1v14c0 .55.45 1 1 1h18c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1zm-1 13l-6-5-2 2-4-5-4 8V4h16v11z\"\n    })\n  }),\n  execute: (state, api) => {\n    var newSelectionRange = selectWord({\n      text: state.text,\n      selection: state.selection,\n      prefix: state.command.prefix,\n      suffix: state.command.suffix\n    });\n    var state1 = api.setSelectionRange(newSelectionRange);\n    if (state1.selectedText.includes('http') || state1.selectedText.includes('www')) {\n      executeCommand({\n        api,\n        selectedText: state1.selectedText,\n        selection: state.selection,\n        prefix: state.command.prefix,\n        suffix: state.command.suffix\n      });\n    } else {\n      newSelectionRange = selectWord({\n        text: state.text,\n        selection: state.selection,\n        prefix: '![',\n        suffix: ']()'\n      });\n      state1 = api.setSelectionRange(newSelectionRange);\n      if (state1.selectedText.length === 0) {\n        executeCommand({\n          api,\n          selectedText: state1.selectedText,\n          selection: state.selection,\n          prefix: '![image',\n          suffix: '](url)'\n        });\n      } else {\n        executeCommand({\n          api,\n          selectedText: state1.selectedText,\n          selection: state.selection,\n          prefix: '![',\n          suffix: ']()'\n        });\n      }\n    }\n  }\n};", "import React from 'react';\nimport { selectWord, executeCommand } from \"../utils/markdownUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var italic = {\n  name: 'italic',\n  keyCommand: 'italic',\n  shortcuts: 'ctrlcmd+i',\n  prefix: '*',\n  buttonProps: {\n    'aria-label': 'Add italic text (ctrl + i)',\n    title: 'Add italic text (ctrl + i)'\n  },\n  icon: /*#__PURE__*/_jsx(\"svg\", {\n    \"data-name\": \"italic\",\n    width: \"12\",\n    height: \"12\",\n    role: \"img\",\n    viewBox: \"0 0 320 512\",\n    children: /*#__PURE__*/_jsx(\"path\", {\n      fill: \"currentColor\",\n      d: \"M204.758 416h-33.849l62.092-320h40.725a16 16 0 0 0 15.704-12.937l6.242-32C297.599 41.184 290.034 32 279.968 32H120.235a16 16 0 0 0-15.704 12.937l-6.242 32C96.362 86.816 103.927 96 113.993 96h33.846l-62.09 320H46.278a16 16 0 0 0-15.704 12.935l-6.245 32C22.402 470.815 29.967 480 40.034 480h158.479a16 16 0 0 0 15.704-12.935l6.245-32c1.927-9.88-5.638-19.065-15.704-19.065z\"\n    })\n  }),\n  execute: (state, api) => {\n    var newSelectionRange = selectWord({\n      text: state.text,\n      selection: state.selection,\n      prefix: state.command.prefix\n    });\n    var state1 = api.setSelectionRange(newSelectionRange);\n    executeCommand({\n      api,\n      selectedText: state1.selectedText,\n      selection: state.selection,\n      prefix: state.command.prefix\n    });\n  }\n};", "import React from 'react';\nimport { selectWord, executeCommand } from \"../utils/markdownUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var link = {\n  name: 'link',\n  keyCommand: 'link',\n  shortcuts: 'ctrlcmd+l',\n  prefix: '[',\n  suffix: '](url)',\n  buttonProps: {\n    'aria-label': 'Add a link (ctrl + l)',\n    title: 'Add a link (ctrl + l)'\n  },\n  icon: /*#__PURE__*/_jsx(\"svg\", {\n    \"data-name\": \"italic\",\n    width: \"12\",\n    height: \"12\",\n    role: \"img\",\n    viewBox: \"0 0 520 520\",\n    children: /*#__PURE__*/_jsx(\"path\", {\n      fill: \"currentColor\",\n      d: \"M331.751196,182.121107 C392.438214,241.974735 391.605313,337.935283 332.11686,396.871226 C332.005129,396.991316 331.873084,397.121413 331.751196,397.241503 L263.493918,464.491645 C203.291404,523.80587 105.345257,523.797864 45.151885,464.491645 C-15.0506283,405.187427 -15.0506283,308.675467 45.151885,249.371249 L82.8416853,212.237562 C92.836501,202.39022 110.049118,208.9351 110.56511,222.851476 C111.223305,240.5867 114.451306,258.404985 120.407566,275.611815 C122.424812,281.438159 120.983487,287.882964 116.565047,292.23621 L103.272145,305.332975 C74.8052033,333.379887 73.9123737,379.047937 102.098973,407.369054 C130.563883,435.969378 177.350591,436.139505 206.033884,407.879434 L274.291163,340.6393 C302.9257,312.427264 302.805844,266.827265 274.291163,238.733318 C270.531934,235.036561 266.74528,232.16442 263.787465,230.157924 C259.544542,227.2873 256.928256,222.609848 256.731165,217.542518 C256.328935,206.967633 260.13184,196.070508 268.613213,187.714278 L289.998463,166.643567 C295.606326,161.118448 304.403592,160.439942 310.906317,164.911276 C318.353355,170.034591 325.328531,175.793397 331.751196,182.121107 Z M240.704978,55.4828366 L172.447607,122.733236 C172.325719,122.853326 172.193674,122.983423 172.081943,123.103513 C117.703294,179.334654 129.953294,261.569283 185.365841,328.828764 C191.044403,335.721376 198.762988,340.914712 206.209732,346.037661 C212.712465,350.509012 221.510759,349.829503 227.117615,344.305363 L248.502893,323.234572 C256.984277,314.87831 260.787188,303.981143 260.384957,293.406218 C260.187865,288.338869 257.571576,283.661398 253.328648,280.790763 C250.370829,278.78426 246.58417,275.912107 242.824936,272.215337 C214.310216,244.121282 206.209732,204.825874 229.906702,179.334654 L298.164073,112.094263 C326.847404,83.8340838 373.633159,84.0042113 402.099123,112.604645 C430.285761,140.92587 429.393946,186.594095 400.92595,214.641114 L387.63303,227.737929 C383.214584,232.091191 381.773257,238.536021 383.790506,244.362388 C389.746774,261.569283 392.974779,279.387637 393.632975,297.122928 C394.149984,311.039357 411.361608,317.584262 421.356437,307.736882 L459.046288,270.603053 C519.249898,211.29961 519.249898,114.787281 459.047304,55.4828366 C398.853851,-3.82360914 300.907572,-3.83161514 240.704978,55.4828366 Z\"\n    })\n  }),\n  execute: (state, api) => {\n    var newSelectionRange = selectWord({\n      text: state.text,\n      selection: state.selection,\n      prefix: state.command.prefix,\n      suffix: state.command.suffix\n    });\n    var state1 = api.setSelectionRange(newSelectionRange);\n    if (state1.selectedText.includes('http') || state1.selectedText.includes('www')) {\n      newSelectionRange = selectWord({\n        text: state.text,\n        selection: state.selection,\n        prefix: '[](',\n        suffix: ')'\n      });\n      state1 = api.setSelectionRange(newSelectionRange);\n      executeCommand({\n        api,\n        selectedText: state1.selectedText,\n        selection: state.selection,\n        prefix: '[](',\n        suffix: ')'\n      });\n    } else {\n      if (state1.selectedText.length === 0) {\n        executeCommand({\n          api,\n          selectedText: state1.selectedText,\n          selection: state.selection,\n          prefix: '[title',\n          suffix: '](url)'\n        });\n      } else {\n        executeCommand({\n          api,\n          selectedText: state1.selectedText,\n          selection: state.selection,\n          prefix: state.command.prefix,\n          suffix: state.command.suffix\n        });\n      }\n    }\n  }\n};", "import React from 'react';\nimport { selectWord, getBreaksNeededForEmptyLineBefore, getBreaksNeededForEmptyLineAfter, insertBeforeEachLine } from \"../utils/markdownUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var makeList = (state, api, insertBefore) => {\n  var newSelectionRange = selectWord({\n    text: state.text,\n    selection: state.selection,\n    prefix: state.command.prefix\n  });\n  var state1 = api.setSelectionRange(newSelectionRange);\n  var breaksBeforeCount = getBreaksNeededForEmptyLineBefore(state1.text, state1.selection.start);\n  var breaksBefore = Array(breaksBeforeCount + 1).join('\\n');\n  var breaksAfterCount = getBreaksNeededForEmptyLineAfter(state1.text, state1.selection.end);\n  var breaksAfter = Array(breaksAfterCount + 1).join('\\n');\n  var _insertBeforeEachLine = insertBeforeEachLine(state1.selectedText, insertBefore),\n    modifiedText = _insertBeforeEachLine.modifiedText,\n    insertionLength = _insertBeforeEachLine.insertionLength;\n  if (insertionLength < 0) {\n    // Remove\n    var selectionStart = state1.selection.start;\n    var selectionEnd = state1.selection.end;\n    if (state1.selection.start > 0 && state.text.slice(state1.selection.start - 1, state1.selection.start) === '\\n') {\n      selectionStart -= 1;\n    }\n    if (state1.selection.end < state.text.length - 1 && state.text.slice(state1.selection.end, state1.selection.end + 1) === '\\n') {\n      selectionEnd += 1;\n    }\n    api.setSelectionRange({\n      start: selectionStart,\n      end: selectionEnd\n    });\n    api.replaceSelection(\"\" + modifiedText);\n    api.setSelectionRange({\n      start: selectionStart,\n      end: selectionStart + modifiedText.length\n    });\n  } else {\n    // Add\n    api.replaceSelection(\"\" + breaksBefore + modifiedText + breaksAfter);\n    var _selectionStart = state1.selection.start + breaksBeforeCount;\n    var _selectionEnd = _selectionStart + modifiedText.length;\n    api.setSelectionRange({\n      start: _selectionStart,\n      end: _selectionEnd\n    });\n  }\n};\nexport var unorderedListCommand = {\n  name: 'unordered-list',\n  keyCommand: 'list',\n  shortcuts: 'ctrl+shift+u',\n  prefix: '- ',\n  buttonProps: {\n    'aria-label': 'Add unordered list (ctrl + shift + u)',\n    title: 'Add unordered list (ctrl + shift + u)'\n  },\n  icon: /*#__PURE__*/_jsx(\"svg\", {\n    \"data-name\": \"unordered-list\",\n    width: \"12\",\n    height: \"12\",\n    viewBox: \"0 0 512 512\",\n    children: /*#__PURE__*/_jsx(\"path\", {\n      fill: \"currentColor\",\n      d: \"M96 96c0 26.51-21.49 48-48 48S0 122.51 0 96s21.49-48 48-48 48 21.49 48 48zM48 208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm0 160c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm96-236h352c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h352c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h352c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"\n    })\n  }),\n  execute: (state, api) => {\n    makeList(state, api, '- ');\n  }\n};\nexport var orderedListCommand = {\n  name: 'ordered-list',\n  keyCommand: 'list',\n  shortcuts: 'ctrl+shift+o',\n  prefix: '1. ',\n  buttonProps: {\n    'aria-label': 'Add ordered list (ctrl + shift + o)',\n    title: 'Add ordered list (ctrl + shift + o)'\n  },\n  icon: /*#__PURE__*/_jsx(\"svg\", {\n    \"data-name\": \"ordered-list\",\n    width: \"12\",\n    height: \"12\",\n    role: \"img\",\n    viewBox: \"0 0 512 512\",\n    children: /*#__PURE__*/_jsx(\"path\", {\n      fill: \"currentColor\",\n      d: \"M3.263 139.527c0-7.477 3.917-11.572 11.573-11.572h15.131V88.078c0-5.163.534-10.503.534-10.503h-.356s-1.779 2.67-2.848 3.738c-4.451 4.273-10.504 4.451-15.666-1.068l-5.518-6.231c-5.342-5.341-4.984-11.216.534-16.379l21.72-19.938C32.815 33.602 36.732 32 42.785 32H54.89c7.656 0 11.749 3.916 11.749 11.572v84.384h15.488c7.655 0 11.572 4.094 11.572 11.572v8.901c0 7.477-3.917 11.572-11.572 11.572H14.836c-7.656 0-11.573-4.095-11.573-11.572v-8.902zM2.211 304.591c0-47.278 50.955-56.383 50.955-69.165 0-7.18-5.954-8.755-9.28-8.755-3.153 0-6.479 1.051-9.455 3.852-5.079 4.903-10.507 7.004-16.111 2.451l-8.579-6.829c-5.779-4.553-7.18-9.805-2.803-15.409C13.592 201.981 26.025 192 47.387 192c19.437 0 44.476 10.506 44.476 39.573 0 38.347-46.753 46.402-48.679 56.909h39.049c7.529 0 11.557 4.027 11.557 11.382v8.755c0 7.354-4.028 11.382-11.557 11.382h-67.94c-7.005 0-12.083-4.028-12.083-11.382v-4.028zM5.654 454.61l5.603-9.28c3.853-6.654 9.105-7.004 15.584-3.152 4.903 2.101 9.63 3.152 14.359 3.152 10.155 0 14.358-3.502 14.358-8.23 0-6.654-5.604-9.106-15.934-9.106h-4.728c-5.954 0-9.28-2.101-12.258-7.88l-1.05-1.926c-2.451-4.728-1.226-9.806 2.801-14.884l5.604-7.004c6.829-8.405 12.257-13.483 12.257-13.483v-.35s-4.203 1.051-12.608 1.051H16.685c-7.53 0-11.383-4.028-11.383-11.382v-8.755c0-7.53 3.853-11.382 11.383-11.382h58.484c7.529 0 11.382 4.027 11.382 11.382v3.327c0 5.778-1.401 9.806-5.079 14.183l-17.509 20.137c19.611 5.078 28.716 20.487 28.716 34.845 0 21.363-14.358 44.126-48.503 44.126-16.636 0-28.192-4.728-35.896-9.455-5.779-4.202-6.304-9.805-2.626-15.934zM144 132h352c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h352c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h352c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H144c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"\n    })\n  }),\n  execute: (state, api) => {\n    makeList(state, api, (item, index) => index + 1 + \". \");\n  }\n};\nexport var checkedListCommand = {\n  name: 'checked-list',\n  keyCommand: 'list',\n  shortcuts: 'ctrl+shift+c',\n  prefix: '- [ ] ',\n  buttonProps: {\n    'aria-label': 'Add checked list (ctrl + shift + c)',\n    title: 'Add checked list (ctrl + shift + c)'\n  },\n  icon: /*#__PURE__*/_jsx(\"svg\", {\n    \"data-name\": \"checked-list\",\n    width: \"12\",\n    height: \"12\",\n    role: \"img\",\n    viewBox: \"0 0 512 512\",\n    children: /*#__PURE__*/_jsx(\"path\", {\n      fill: \"currentColor\",\n      d: \"M208 132h288c8.8 0 16-7.2 16-16V76c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16zm0 160h288c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16zm0 160h288c8.8 0 16-7.2 16-16v-40c0-8.8-7.2-16-16-16H208c-8.8 0-16 7.2-16 16v40c0 8.8 7.2 16 16 16zM64 368c-26.5 0-48.6 21.5-48.6 48s22.1 48 48.6 48 48-21.5 48-48-21.5-48-48-48zm92.5-299l-72.2 72.2-15.6 15.6c-4.7 4.7-12.9 4.7-17.6 0L3.5 109.4c-4.7-4.7-4.7-12.3 0-17l15.7-15.7c4.7-4.7 12.3-4.7 17 0l22.7 22.1 63.7-63.3c4.7-4.7 12.3-4.7 17 0l17 16.5c4.6 4.7 4.6 12.3-.1 17zm0 159.6l-72.2 72.2-15.7 15.7c-4.7 4.7-12.9 4.7-17.6 0L3.5 269c-4.7-4.7-4.7-12.3 0-17l15.7-15.7c4.7-4.7 12.3-4.7 17 0l22.7 22.1 63.7-63.7c4.7-4.7 12.3-4.7 17 0l17 17c4.6 4.6 4.6 12.2-.1 16.9z\"\n    })\n  }),\n  execute: (state, api) => {\n    makeList(state, api, (item, index) => \"- [ ] \");\n  }\n};", "import React from 'react';\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport var codePreview = {\n  name: 'preview',\n  keyCommand: 'preview',\n  value: 'preview',\n  shortcuts: 'ctrlcmd+9',\n  buttonProps: {\n    'aria-label': 'Preview code (ctrl + 9)',\n    title: 'Preview code (ctrl + 9)'\n  },\n  icon: /*#__PURE__*/_jsxs(\"svg\", {\n    width: \"12\",\n    height: \"12\",\n    viewBox: \"0 0 520 520\",\n    children: [/*#__PURE__*/_jsx(\"polygon\", {\n      fill: \"currentColor\",\n      points: \"0 71.293 0 122 38.023 123 38.023 398 0 397 0 449.707 91.023 450.413 91.023 72.293\"\n    }), /*#__PURE__*/_jsx(\"polygon\", {\n      fill: \"currentColor\",\n      points: \"148.023 72.293 520 71.293 520 122 200.023 124 200.023 397 520 396 520 449.707 148.023 450.413\"\n    })]\n  }),\n  execute: (state, api, dispatch, executeCommandState, shortcuts) => {\n    api.textArea.focus();\n    if (shortcuts && dispatch && executeCommandState) {\n      dispatch({\n        preview: 'preview'\n      });\n    }\n  }\n};\nexport var codeEdit = {\n  name: 'edit',\n  keyCommand: 'preview',\n  value: 'edit',\n  shortcuts: 'ctrlcmd+7',\n  buttonProps: {\n    'aria-label': 'Edit code (ctrl + 7)',\n    title: 'Edit code (ctrl + 7)'\n  },\n  icon: /*#__PURE__*/_jsxs(\"svg\", {\n    width: \"12\",\n    height: \"12\",\n    viewBox: \"0 0 520 520\",\n    children: [/*#__PURE__*/_jsx(\"polygon\", {\n      fill: \"currentColor\",\n      points: \"0 71.293 0 122 319 122 319 397 0 397 0 449.707 372 449.413 372 71.293\"\n    }), /*#__PURE__*/_jsx(\"polygon\", {\n      fill: \"currentColor\",\n      points: \"429 71.293 520 71.293 520 122 481 123 481 396 520 396 520 449.707 429 449.413\"\n    })]\n  }),\n  execute: (state, api, dispatch, executeCommandState, shortcuts) => {\n    api.textArea.focus();\n    if (shortcuts && dispatch && executeCommandState) {\n      dispatch({\n        preview: 'edit'\n      });\n    }\n  }\n};\nexport var codeLive = {\n  name: 'live',\n  keyCommand: 'preview',\n  value: 'live',\n  shortcuts: 'ctrlcmd+8',\n  buttonProps: {\n    'aria-label': 'Live code (ctrl + 8)',\n    title: 'Live code (ctrl + 8)'\n  },\n  icon: /*#__PURE__*/_jsxs(\"svg\", {\n    width: \"12\",\n    height: \"12\",\n    viewBox: \"0 0 520 520\",\n    children: [/*#__PURE__*/_jsx(\"polygon\", {\n      fill: \"currentColor\",\n      points: \"0 71.293 0 122 179 122 179 397 0 397 0 449.707 232 449.413 232 71.293\"\n    }), /*#__PURE__*/_jsx(\"polygon\", {\n      fill: \"currentColor\",\n      points: \"289 71.293 520 71.293 520 122 341 123 341 396 520 396 520 449.707 289 449.413\"\n    })]\n  }),\n  execute: (state, api, dispatch, executeCommandState, shortcuts) => {\n    api.textArea.focus();\n    if (shortcuts && dispatch && executeCommandState) {\n      dispatch({\n        preview: 'live'\n      });\n    }\n  }\n};", "import React from 'react';\nimport { getBreaksNeededForEmptyLineBefore, getBreaksNeededForEmptyLineAfter, selectWord, insertBeforeEachLine } from \"../utils/markdownUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var quote = {\n  name: 'quote',\n  keyCommand: 'quote',\n  shortcuts: 'ctrlcmd+q',\n  prefix: '> ',\n  buttonProps: {\n    'aria-label': 'Insert a quote (ctrl + q)',\n    title: 'Insert a quote (ctrl + q)'\n  },\n  icon: /*#__PURE__*/_jsx(\"svg\", {\n    width: \"12\",\n    height: \"12\",\n    viewBox: \"0 0 520 520\",\n    children: /*#__PURE__*/_jsx(\"path\", {\n      fill: \"currentColor\",\n      d: \"M520,95.75 L520,225.75 C520,364.908906 457.127578,437.050625 325.040469,472.443125 C309.577578,476.586875 294.396016,464.889922 294.396016,448.881641 L294.396016,414.457031 C294.396016,404.242891 300.721328,395.025078 310.328125,391.554687 C377.356328,367.342187 414.375,349.711094 414.375,274.5 L341.25,274.5 C314.325781,274.5 292.5,252.674219 292.5,225.75 L292.5,95.75 C292.5,68.8257812 314.325781,47 341.25,47 L471.25,47 C498.174219,47 520,68.8257812 520,95.75 Z M178.75,47 L48.75,47 C21.8257813,47 0,68.8257812 0,95.75 L0,225.75 C0,252.674219 21.8257813,274.5 48.75,274.5 L121.875,274.5 C121.875,349.711094 84.8563281,367.342187 17.828125,391.554687 C8.22132813,395.025078 1.89601563,404.242891 1.89601563,414.457031 L1.89601563,448.881641 C1.89601563,464.889922 17.0775781,476.586875 32.5404687,472.443125 C164.627578,437.050625 227.5,364.908906 227.5,225.75 L227.5,95.75 C227.5,68.8257812 205.674219,47 178.75,47 Z\"\n    })\n  }),\n  execute: (state, api) => {\n    var newSelectionRange = selectWord({\n      text: state.text,\n      selection: state.selection,\n      prefix: state.command.prefix\n    });\n    var state1 = api.setSelectionRange(newSelectionRange);\n    var breaksBeforeCount = getBreaksNeededForEmptyLineBefore(state1.text, state1.selection.start);\n    var breaksBefore = Array(breaksBeforeCount + 1).join('\\n');\n    var breaksAfterCount = getBreaksNeededForEmptyLineAfter(state1.text, state1.selection.end);\n    var breaksAfter = Array(breaksAfterCount + 1).join('\\n');\n    var modifiedText = insertBeforeEachLine(state1.selectedText, state.command.prefix);\n    api.replaceSelection(\"\" + breaksBefore + modifiedText.modifiedText + breaksAfter);\n    var selectionStart = state1.selection.start + breaksBeforeCount;\n    var selectionEnd = selectionStart + modifiedText.modifiedText.length;\n    api.setSelectionRange({\n      start: selectionStart,\n      end: selectionEnd\n    });\n  }\n};", "import React from 'react';\nimport { selectWord, executeCommand } from \"../utils/markdownUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var strikethrough = {\n  name: 'strikethrough',\n  keyCommand: 'strikethrough',\n  shortcuts: 'ctrl+shift+x',\n  buttonProps: {\n    'aria-label': 'Add strikethrough text (ctrl + shift + x)',\n    title: 'Add strikethrough text (ctrl + shift + x)'\n  },\n  prefix: '~~',\n  icon: /*#__PURE__*/_jsx(\"svg\", {\n    \"data-name\": \"strikethrough\",\n    width: \"12\",\n    height: \"12\",\n    role: \"img\",\n    viewBox: \"0 0 512 512\",\n    children: /*#__PURE__*/_jsx(\"path\", {\n      fill: \"currentColor\",\n      d: \"M496 288H16c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h480c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16zm-214.666 16c27.258 12.937 46.524 28.683 46.524 56.243 0 33.108-28.977 53.676-75.621 53.676-32.325 0-76.874-12.08-76.874-44.271V368c0-8.837-7.164-16-16-16H113.75c-8.836 0-16 7.163-16 16v19.204c0 66.845 77.717 101.82 154.487 101.82 88.578 0 162.013-45.438 162.013-134.424 0-19.815-3.618-36.417-10.143-50.6H281.334zm-30.952-96c-32.422-13.505-56.836-28.946-56.836-59.683 0-33.92 30.901-47.406 64.962-47.406 42.647 0 64.962 16.593 64.962 32.985V136c0 8.837 7.164 16 16 16h45.613c8.836 0 16-7.163 16-16v-30.318c0-52.438-71.725-79.875-142.575-79.875-85.203 0-150.726 40.972-150.726 125.646 0 22.71 4.665 41.176 12.777 56.547h129.823z\"\n    })\n  }),\n  execute: (state, api) => {\n    var newSelectionRange = selectWord({\n      text: state.text,\n      selection: state.selection,\n      prefix: state.command.prefix\n    });\n    var state1 = api.setSelectionRange(newSelectionRange);\n    executeCommand({\n      api,\n      selectedText: state1.selectedText,\n      selection: state.selection,\n      prefix: state.command.prefix\n    });\n  }\n};", "import _extends from \"@babel/runtime/helpers/extends\";\nimport React from 'react';\nimport { heading1 } from \"./title1.js\";\nimport { selectLine, executeCommand } from \"../utils/markdownUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport function headingExecute(_ref) {\n  var state = _ref.state,\n    api = _ref.api,\n    prefix = _ref.prefix,\n    _ref$suffix = _ref.suffix,\n    suffix = _ref$suffix === void 0 ? prefix : _ref$suffix;\n  var newSelectionRange = selectLine({\n    text: state.text,\n    selection: state.selection\n  });\n  var state1 = api.setSelectionRange(newSelectionRange);\n  executeCommand({\n    api,\n    selectedText: state1.selectedText,\n    selection: state.selection,\n    prefix,\n    suffix\n  });\n}\nexport var heading = _extends({}, heading1, {\n  icon: /*#__PURE__*/_jsx(\"svg\", {\n    width: \"12\",\n    height: \"12\",\n    viewBox: \"0 0 520 520\",\n    children: /*#__PURE__*/_jsx(\"path\", {\n      fill: \"currentColor\",\n      d: \"M15.7083333,468 C7.03242448,468 0,462.030833 0,454.666667 L0,421.333333 C0,413.969167 7.03242448,408 15.7083333,408 L361.291667,408 C369.967576,408 377,413.969167 377,421.333333 L377,454.666667 C377,462.030833 369.967576,468 361.291667,468 L15.7083333,468 Z M21.6666667,366 C9.69989583,366 0,359.831861 0,352.222222 L0,317.777778 C0,310.168139 9.69989583,304 21.6666667,304 L498.333333,304 C510.300104,304 520,310.168139 520,317.777778 L520,352.222222 C520,359.831861 510.300104,366 498.333333,366 L21.6666667,366 Z M136.835938,64 L136.835937,126 L107.25,126 L107.25,251 L40.75,251 L40.75,126 L-5.68434189e-14,126 L-5.68434189e-14,64 L136.835938,64 Z M212,64 L212,251 L161.648438,251 L161.648438,64 L212,64 Z M378,64 L378,126 L343.25,126 L343.25,251 L281.75,251 L281.75,126 L238,126 L238,64 L378,64 Z M449.047619,189.550781 L520,189.550781 L520,251 L405,251 L405,64 L449.047619,64 L449.047619,189.550781 Z\"\n    })\n  })\n});\n\n/**\n * @deprecated Use `heading` instead.\n * This command is now deprecated and will be removed in future versions.\n * Use `title` for inserting headings.\n */\nexport var title = heading;", "import React from 'react';\nimport { headingExecute } from \"../commands/title.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var heading1 = {\n  name: 'heading1',\n  keyCommand: 'heading1',\n  shortcuts: 'ctrlcmd+1',\n  prefix: '# ',\n  suffix: '',\n  buttonProps: {\n    'aria-label': 'Insert Heading 1 (ctrl + 1)',\n    title: 'Insert Heading 1 (ctrl + 1)'\n  },\n  icon: /*#__PURE__*/_jsx(\"div\", {\n    style: {\n      fontSize: 18,\n      textAlign: 'left'\n    },\n    children: \"Heading 1\"\n  }),\n  execute: (state, api) => {\n    headingExecute({\n      state,\n      api,\n      prefix: state.command.prefix,\n      suffix: state.command.suffix\n    });\n  }\n};\n\n/**\n * @deprecated Use `heading1` instead.\n * This command is now deprecated and will be removed in future versions.\n * Use `title1` for inserting Heading 1.\n */\nexport var title1 = heading1;", "import React from 'react';\nimport { headingExecute } from \"../commands/title.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var heading2 = {\n  name: 'heading2',\n  keyCommand: 'heading2',\n  shortcuts: 'ctrlcmd+2',\n  prefix: '## ',\n  suffix: '',\n  buttonProps: {\n    'aria-label': 'Insert Heading 2 (ctrl + 2)',\n    title: 'Insert Heading 2 (ctrl + 2)'\n  },\n  icon: /*#__PURE__*/_jsx(\"div\", {\n    style: {\n      fontSize: 16,\n      textAlign: 'left'\n    },\n    children: \"Heading 2\"\n  }),\n  execute: (state, api) => {\n    headingExecute({\n      state,\n      api,\n      prefix: state.command.prefix,\n      suffix: state.command.suffix\n    });\n  }\n};\n\n/**\n * @deprecated Use `heading2` instead.\n * This command is now deprecated and will be removed in future versions.\n * Use `title2` for inserting Heading 2.\n */\nexport var title2 = heading2;", "import React from 'react';\nimport { headingExecute } from \"../commands/title.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var heading3 = {\n  name: 'heading3',\n  keyCommand: 'heading3',\n  shortcuts: 'ctrlcmd+3',\n  prefix: '### ',\n  suffix: '',\n  buttonProps: {\n    'aria-label': 'Insert Heading 3 (ctrl + 3)',\n    title: 'Insert Heading 3 (ctrl + 3)'\n  },\n  icon: /*#__PURE__*/_jsx(\"div\", {\n    style: {\n      fontSize: 15,\n      textAlign: 'left'\n    },\n    children: \"Heading 3\"\n  }),\n  execute: (state, api) => {\n    headingExecute({\n      state,\n      api,\n      prefix: state.command.prefix,\n      suffix: state.command.suffix\n    });\n  }\n};\n\n/**\n * @deprecated Use `heading3` instead.\n * This command is now deprecated and will be removed in future versions.\n * Use `title3` for inserting Heading 3.\n */\nexport var title3 = heading3;", "import React from 'react';\nimport { headingExecute } from \"../commands/title.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var heading4 = {\n  name: 'heading4',\n  keyCommand: 'heading4',\n  shortcuts: 'ctrlcmd+4',\n  prefix: '#### ',\n  suffix: '',\n  buttonProps: {\n    'aria-label': 'Insert Heading 4 (ctrl + 4)',\n    title: 'Insert Heading 4 (ctrl + 4)'\n  },\n  icon: /*#__PURE__*/_jsx(\"div\", {\n    style: {\n      fontSize: 14,\n      textAlign: 'left'\n    },\n    children: \"Heading 4\"\n  }),\n  execute: (state, api) => {\n    headingExecute({\n      state,\n      api,\n      prefix: state.command.prefix,\n      suffix: state.command.suffix\n    });\n  }\n};\n\n/**\n * @deprecated Use `heading4` instead.\n * This command is now deprecated and will be removed in future versions.\n * Use `title4` for inserting Heading 4.\n */\nexport var title4 = heading4;", "import React from 'react';\nimport { headingExecute } from \"../commands/title.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var heading5 = {\n  name: 'heading5',\n  keyCommand: 'heading5',\n  shortcuts: 'ctrlcmd+5',\n  prefix: '##### ',\n  suffix: '',\n  buttonProps: {\n    'aria-label': 'Insert Heading 5 (ctrl + 5)',\n    title: 'Insert Heading 5 (ctrl + 5)'\n  },\n  icon: /*#__PURE__*/_jsx(\"div\", {\n    style: {\n      fontSize: 12,\n      textAlign: 'left'\n    },\n    children: \"Heading 5\"\n  }),\n  execute: (state, api) => {\n    headingExecute({\n      state,\n      api,\n      prefix: state.command.prefix,\n      suffix: state.command.suffix\n    });\n  }\n};\n\n/**\n * @deprecated Use `heading5` instead.\n * This command is now deprecated and will be removed in future versions.\n * Use `title5` for inserting Heading 5.\n */\nexport var title5 = heading5;", "import React from 'react';\nimport { headingExecute } from \"../commands/title.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var heading6 = {\n  name: 'heading6',\n  keyCommand: 'heading6',\n  shortcuts: 'ctrlcmd+6',\n  prefix: '###### ',\n  suffix: '',\n  buttonProps: {\n    'aria-label': 'Insert Heading 6 (ctrl + 6)',\n    title: 'Insert Heading 6 (ctrl + 6)'\n  },\n  icon: /*#__PURE__*/_jsx(\"div\", {\n    style: {\n      fontSize: 12,\n      textAlign: 'left'\n    },\n    children: \"Heading 6\"\n  }),\n  execute: (state, api) => {\n    headingExecute({\n      state,\n      api,\n      prefix: state.command.prefix,\n      suffix: state.command.suffix\n    });\n  }\n};\n\n/**\n * @deprecated Use `heading6` instead.\n * This command is now deprecated and will be removed in future versions.\n * Use `title6` for inserting Heading 6.\n */\nexport var title6 = heading6;", "import React from 'react';\nimport { selectWord, executeCommand } from \"../utils/markdownUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var table = {\n  name: 'table',\n  keyCommand: 'table',\n  prefix: '\\n| Header | Header |\\n|--------|--------|\\n| Cell | Cell |\\n| Cell | Cell |\\n| Cell | Cell |\\n\\n',\n  suffix: '',\n  buttonProps: {\n    'aria-label': 'Add table',\n    title: 'Add table'\n  },\n  icon: /*#__PURE__*/_jsx(\"svg\", {\n    role: \"img\",\n    width: \"12\",\n    height: \"12\",\n    viewBox: \"0 0 512 512\",\n    children: /*#__PURE__*/_jsx(\"path\", {\n      fill: \"currentColor\",\n      d: \"M64 256V160H224v96H64zm0 64H224v96H64V320zm224 96V320H448v96H288zM448 256H288V160H448v96zM64 32C28.7 32 0 60.7 0 96V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H64z\"\n      //Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com\n    })\n  }),\n  execute: (state, api) => {\n    var newSelectionRange = selectWord({\n      text: state.text,\n      selection: state.selection,\n      prefix: state.command.prefix,\n      suffix: state.command.suffix\n    });\n    var state1 = api.setSelectionRange(newSelectionRange);\n    if (state1.selectedText.length >= state.command.prefix.length + state.command.suffix.length && state1.selectedText.startsWith(state.command.prefix)) {\n      // Remove\n      executeCommand({\n        api,\n        selectedText: state1.selectedText,\n        selection: state.selection,\n        prefix: state.command.prefix,\n        suffix: state.command.suffix\n      });\n    } else {\n      // Add\n      state1 = api.setSelectionRange({\n        start: state.selection.start,\n        end: state.selection.start\n      });\n      executeCommand({\n        api,\n        selectedText: state1.selectedText,\n        selection: state.selection,\n        prefix: state.command.prefix,\n        suffix: state.command.suffix\n      });\n    }\n  }\n};", "import React from 'react';\nimport { selectWord, executeCommand } from \"../utils/markdownUtils.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var issue = {\n  name: 'issue',\n  keyCommand: 'issue',\n  prefix: '#',\n  suffix: '',\n  buttonProps: {\n    'aria-label': 'Add issue',\n    title: 'Add issue'\n  },\n  icon: /*#__PURE__*/_jsx(\"svg\", {\n    role: \"img\",\n    width: \"12\",\n    height: \"12\",\n    viewBox: \"0 0 448 512\",\n    children: /*#__PURE__*/_jsx(\"path\", {\n      fill: \"currentColor\",\n      d: \"M181.3 32.4c17.4 2.9 29.2 19.4 26.3 36.8L197.8 128l95.1 0 11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3s29.2 19.4 26.3 36.8L357.8 128l58.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-68.9 0L325.8 320l58.2 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-68.9 0-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8l9.8-58.7-95.1 0-11.5 69.3c-2.9 17.4-19.4 29.2-36.8 26.3s-29.2-19.4-26.3-36.8L90.2 384 32 384c-17.7 0-32-14.3-32-32s14.3-32 32-32l68.9 0 21.3-128L64 192c-17.7 0-32-14.3-32-32s14.3-32 32-32l68.9 0 11.5-69.3c2.9-17.4 19.4-29.2 36.8-26.3zM187.1 192L165.8 320l95.1 0 21.3-128-95.1 0z\"\n      //Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com\n    })\n  }),\n  execute: (state, api) => {\n    var newSelectionRange = selectWord({\n      text: state.text,\n      selection: state.selection,\n      prefix: state.command.prefix,\n      suffix: state.command.suffix\n    });\n    var state1 = api.setSelectionRange(newSelectionRange);\n    executeCommand({\n      api,\n      selectedText: state1.selectedText,\n      selection: state.selection,\n      prefix: state.command.prefix,\n      suffix: state.command.suffix\n    });\n  }\n};", "import React from 'react';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport var help = {\n  name: 'help',\n  keyCommand: 'help',\n  buttonProps: {\n    'aria-label': 'Open help',\n    title: 'Open help'\n  },\n  icon: /*#__PURE__*/_jsx(\"svg\", {\n    viewBox: \"0 0 16 16\",\n    width: \"12px\",\n    height: \"12px\",\n    children: /*#__PURE__*/_jsx(\"path\", {\n      d: \"M8 0C3.6 0 0 3.6 0 8s3.6 8 8 8 8-3.6 8-8-3.6-8-8-8Zm.9 13H7v-1.8h1.9V13Zm-.1-3.6v.5H7.1v-.6c.2-2.1 2-1.9 1.9-3.2.1-.7-.3-1.1-1-1.1-.8 0-1.2.7-1.2 1.6H5c0-1.7 1.2-3 2.9-3 2.3 0 3 1.4 3 2.3.1 2.3-1.9 2-2.1 3.5Z\",\n      fill: \"currentColor\"\n    })\n  }),\n  execute: () => {\n    window.open('https://www.markdownguide.org/basic-syntax/', '_blank', 'noreferrer');\n  }\n};", "import _extends from \"@babel/runtime/helpers/extends\";\nimport { insertTextAtPosition } from \"../utils/InsertTextAtPosition.js\";\nimport { bold } from \"./bold.js\";\nimport { code, codeBlock } from \"./code.js\";\nimport { comment } from \"./comment.js\";\nimport { divider } from \"./divider.js\";\nimport { fullscreen } from \"./fullscreen.js\";\nimport { group } from \"./group.js\";\nimport { hr } from \"./hr.js\";\nimport { image } from \"./image.js\";\nimport { italic } from \"./italic.js\";\nimport { link } from \"./link.js\";\nimport { checkedListCommand, orderedListCommand, unorderedListCommand } from \"./list.js\";\nimport { codeEdit, codeLive, codePreview } from \"./preview.js\";\nimport { quote } from \"./quote.js\";\nimport { strikethrough } from \"./strikeThrough.js\";\nimport { title, heading } from \"./title.js\";\nimport { title1, heading1 } from \"./title1.js\";\nimport { title2, heading2 } from \"./title2.js\";\nimport { title3, heading3 } from \"./title3.js\";\nimport { title4, heading4 } from \"./title4.js\";\nimport { title5, heading5 } from \"./title5.js\";\nimport { title6, heading6 } from \"./title6.js\";\nimport { table } from \"./table.js\";\nimport { issue } from \"./issue.js\";\nimport { help } from \"./help.js\";\nvar getCommands = () => [bold, italic, strikethrough, hr, group([title1, title2, title3, title4, title5, title6], {\n  name: 'title',\n  groupName: 'title',\n  buttonProps: {\n    'aria-label': 'Insert title',\n    title: 'Insert title'\n  }\n}), divider, link, quote, code, codeBlock, comment, image, table, divider, unorderedListCommand, orderedListCommand, checkedListCommand, divider, help];\nvar getExtraCommands = () => [codeEdit, codeLive, codePreview, divider, fullscreen];\nfunction getStateFromTextArea(textArea) {\n  var _textArea$value;\n  return {\n    selection: {\n      start: textArea.selectionStart,\n      end: textArea.selectionEnd\n    },\n    text: textArea.value,\n    selectedText: (_textArea$value = textArea.value) == null ? void 0 : _textArea$value.slice(textArea.selectionStart, textArea.selectionEnd)\n  };\n}\nclass TextAreaTextApi {\n  constructor(textArea) {\n    this.textArea = void 0;\n    this.textArea = textArea;\n  }\n\n  /**\n   * Replaces the current selection with the new text. This will make the new selectedText to be empty, the\n   * selection start and selection end will be the same and will both point to the end\n   * @param text Text that should replace the current selection\n   */\n  replaceSelection(text) {\n    insertTextAtPosition(this.textArea, text);\n    return getStateFromTextArea(this.textArea);\n  }\n\n  /**\n   * Selects the specified text range\n   * @param selection\n   */\n  setSelectionRange(selection) {\n    this.textArea.focus();\n    this.textArea.selectionStart = selection.start;\n    this.textArea.selectionEnd = selection.end;\n    return getStateFromTextArea(this.textArea);\n  }\n}\nclass TextAreaCommandOrchestrator {\n  constructor(textArea) {\n    this.textArea = void 0;\n    this.textApi = void 0;\n    this.textArea = textArea;\n    this.textApi = new TextAreaTextApi(textArea);\n  }\n  getState() {\n    if (!this.textArea) return false;\n    return getStateFromTextArea(this.textArea);\n  }\n  executeCommand(command, dispatch, state, shortcuts) {\n    command.execute && command.execute(_extends({\n      command\n    }, getStateFromTextArea(this.textArea)), this.textApi, dispatch, state, shortcuts);\n  }\n}\nexport { title, title1, title2, title3, title4, title5, title6, heading, heading1, heading2, heading3, heading4, heading5, heading6, bold, codeBlock, comment, italic, strikethrough, hr, group, divider, link, quote, code, image, unorderedListCommand, orderedListCommand, checkedListCommand, table, issue, help, codeEdit, codeLive, codePreview, fullscreen,\n// Tool method.\ngetCommands, getExtraCommands, getStateFromTextArea, TextAreaCommandOrchestrator, TextAreaTextApi };", "import { insertTextAtPosition } from \"../../utils/InsertTextAtPosition.js\";\nimport { insertBeforeEachLine, selectLine } from \"../../utils/markdownUtils.js\";\nimport { TextAreaTextApi } from \"../../commands/index.js\";\n/**\n * - `13` - `Enter`\n * - `9` - `Tab`\n */\nfunction stopPropagation(e) {\n  e.stopPropagation();\n  e.preventDefault();\n}\nfunction handleLineMove(e, direction) {\n  stopPropagation(e);\n  var target = e.target;\n  var textArea = new TextAreaTextApi(target);\n  var selection = {\n    start: target.selectionStart,\n    end: target.selectionEnd\n  };\n  selection = selectLine({\n    text: target.value,\n    selection\n  });\n  if (direction < 0 && selection.start <= 0 || direction > 0 && selection.end >= target.value.length) {\n    return;\n  }\n  var blockText = target.value.slice(selection.start, selection.end);\n  if (direction < 0) {\n    var prevLineSelection = selectLine({\n      text: target.value,\n      selection: {\n        start: selection.start - 1,\n        end: selection.start - 1\n      }\n    });\n    var prevLineText = target.value.slice(prevLineSelection.start, prevLineSelection.end);\n    textArea.setSelectionRange({\n      start: prevLineSelection.start,\n      end: selection.end\n    });\n    insertTextAtPosition(target, blockText + \"\\n\" + prevLineText);\n    textArea.setSelectionRange({\n      start: prevLineSelection.start,\n      end: prevLineSelection.start + blockText.length\n    });\n  } else {\n    var nextLineSelection = selectLine({\n      text: target.value,\n      selection: {\n        start: selection.end + 1,\n        end: selection.end + 1\n      }\n    });\n    var nextLineText = target.value.slice(nextLineSelection.start, nextLineSelection.end);\n    textArea.setSelectionRange({\n      start: selection.start,\n      end: nextLineSelection.end\n    });\n    insertTextAtPosition(target, nextLineText + \"\\n\" + blockText);\n    textArea.setSelectionRange({\n      start: nextLineSelection.end - blockText.length,\n      end: nextLineSelection.end\n    });\n  }\n}\nexport default function handleKeyDown(e, tabSize, defaultTabEnable) {\n  if (tabSize === void 0) {\n    tabSize = 2;\n  }\n  if (defaultTabEnable === void 0) {\n    defaultTabEnable = false;\n  }\n  var target = e.target;\n  var starVal = target.value.substr(0, target.selectionStart);\n  var valArr = starVal.split('\\n');\n  var currentLineStr = valArr[valArr.length - 1];\n  var textArea = new TextAreaTextApi(target);\n\n  /**\n   * `9` - `Tab`\n   */\n  if (!defaultTabEnable && e.code && e.code.toLowerCase() === 'tab') {\n    stopPropagation(e);\n    var space = new Array(tabSize + 1).join('  ');\n    if (target.selectionStart !== target.selectionEnd) {\n      var _star = target.value.substring(0, target.selectionStart).split('\\n');\n      var _end = target.value.substring(0, target.selectionEnd).split('\\n');\n      var modifiedTextLine = [];\n      _end.forEach((item, idx) => {\n        if (item !== _star[idx]) {\n          modifiedTextLine.push(item);\n        }\n      });\n      var modifiedText = modifiedTextLine.join('\\n');\n      var oldSelectText = target.value.substring(target.selectionStart, target.selectionEnd);\n      var newStarNum = target.value.substring(0, target.selectionStart).length;\n      textArea.setSelectionRange({\n        start: target.value.indexOf(modifiedText),\n        end: target.selectionEnd\n      });\n      var modifiedTextObj = insertBeforeEachLine(modifiedText, e.shiftKey ? '' : space);\n      var text = modifiedTextObj.modifiedText;\n      if (e.shiftKey) {\n        text = text.split('\\n').map(item => item.replace(new RegExp(\"^\" + space), '')).join('\\n');\n      }\n      textArea.replaceSelection(text);\n      var startTabSize = e.shiftKey ? -tabSize : tabSize;\n      var endTabSize = e.shiftKey ? -modifiedTextLine.length * tabSize : modifiedTextLine.length * tabSize;\n      textArea.setSelectionRange({\n        start: newStarNum + startTabSize,\n        end: newStarNum + oldSelectText.length + endTabSize\n      });\n    } else {\n      return insertTextAtPosition(target, space);\n    }\n  } else if (e.keyCode === 13 && e.code.toLowerCase() === 'enter' && (/^(-|\\*)\\s/.test(currentLineStr) || /^\\d+.\\s/.test(currentLineStr)) && !e.shiftKey) {\n    /**\n     * `13` - `Enter`\n     */\n    stopPropagation(e);\n    var startStr = '\\n- ';\n    if (currentLineStr.startsWith('*')) {\n      startStr = '\\n* ';\n    }\n    if (currentLineStr.startsWith('- [ ]') || currentLineStr.startsWith('- [X]') || currentLineStr.startsWith('- [x]')) {\n      startStr = '\\n- [ ] ';\n    }\n    if (/^\\d+.\\s/.test(currentLineStr)) {\n      startStr = \"\\n\" + (parseInt(currentLineStr) + 1) + \". \";\n    }\n    return insertTextAtPosition(target, startStr);\n  } else if (e.code && e.code.toLowerCase() === 'keyd' && e.ctrlKey) {\n    // Duplicate lines\n    stopPropagation(e);\n    var selection = {\n      start: target.selectionStart,\n      end: target.selectionEnd\n    };\n    var savedSelection = selection;\n    selection = selectLine({\n      text: target.value,\n      selection\n    });\n    var textToDuplicate = target.value.slice(selection.start, selection.end);\n    textArea.setSelectionRange({\n      start: selection.end,\n      end: selection.end\n    });\n    insertTextAtPosition(target, \"\\n\" + textToDuplicate);\n    textArea.setSelectionRange({\n      start: savedSelection.start,\n      end: savedSelection.end\n    });\n  } else if (e.code && e.code.toLowerCase() === 'arrowup' && e.altKey) {\n    handleLineMove(e, -1);\n  } else if (e.code && e.code.toLowerCase() === 'arrowdown' && e.altKey) {\n    handleLineMove(e, 1);\n  }\n}", "import Markdown from \"./Markdown.js\";\nimport { createTextArea } from \"./factory.js\";\nexport default createTextArea({\n  Markdown,\n  useMinHeight: true\n});", "import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/objectWithoutPropertiesLoose\";\nvar _excluded = [\"prefixCls\", \"className\", \"value\", \"commands\", \"commandsFilter\", \"direction\", \"extraCommands\", \"height\", \"enableScroll\", \"visibleDragbar\", \"highlightEnable\", \"preview\", \"fullscreen\", \"overflow\", \"previewOptions\", \"textareaProps\", \"maxHeight\", \"minHeight\", \"autoFocus\", \"autoFocusEnd\", \"tabSize\", \"defaultTabEnable\", \"onChange\", \"onStatistics\", \"onHeightChange\", \"hideToolbar\", \"toolbarBottom\", \"components\", \"renderTextarea\"];\nimport React, { useEffect, useReducer, useMemo, useRef, useImperativeHandle } from 'react';\nimport { ToolbarVisibility } from \"./components/Toolbar/index.js\";\nimport DragBar from \"./components/DragBar/index.js\";\nimport { getCommands, getExtraCommands, TextAreaCommandOrchestrator } from \"./commands/index.js\";\nimport { reducer, EditorContext } from \"./Context.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nfunction setGroupPopFalse(data) {\n  if (data === void 0) {\n    data = {};\n  }\n  Object.keys(data).forEach(keyname => {\n    data[keyname] = false;\n  });\n  return data;\n}\nexport function createMDEditor(options) {\n  var MarkdownPreview = options.MarkdownPreview,\n    TextArea = options.TextArea;\n  var PreviewComponent = MarkdownPreview;\n  var TextAreaComponent = TextArea;\n  var InternalMDEditor = /*#__PURE__*/React.forwardRef((props, ref) => {\n    var _ref = props || {},\n      _ref$prefixCls = _ref.prefixCls,\n      prefixCls = _ref$prefixCls === void 0 ? 'w-md-editor' : _ref$prefixCls,\n      className = _ref.className,\n      propsValue = _ref.value,\n      _ref$commands = _ref.commands,\n      commands = _ref$commands === void 0 ? getCommands() : _ref$commands,\n      commandsFilter = _ref.commandsFilter,\n      direction = _ref.direction,\n      _ref$extraCommands = _ref.extraCommands,\n      extraCommands = _ref$extraCommands === void 0 ? getExtraCommands() : _ref$extraCommands,\n      _ref$height = _ref.height,\n      height = _ref$height === void 0 ? 200 : _ref$height,\n      _ref$enableScroll = _ref.enableScroll,\n      enableScroll = _ref$enableScroll === void 0 ? true : _ref$enableScroll,\n      _ref$visibleDragbar = _ref.visibleDragbar,\n      visibleDragbar = _ref$visibleDragbar === void 0 ? typeof props.visiableDragbar === 'boolean' ? props.visiableDragbar : true : _ref$visibleDragbar,\n      _ref$highlightEnable = _ref.highlightEnable,\n      highlightEnable = _ref$highlightEnable === void 0 ? true : _ref$highlightEnable,\n      _ref$preview = _ref.preview,\n      previewType = _ref$preview === void 0 ? 'live' : _ref$preview,\n      _ref$fullscreen = _ref.fullscreen,\n      fullscreen = _ref$fullscreen === void 0 ? false : _ref$fullscreen,\n      _ref$overflow = _ref.overflow,\n      overflow = _ref$overflow === void 0 ? true : _ref$overflow,\n      _ref$previewOptions = _ref.previewOptions,\n      previewOptions = _ref$previewOptions === void 0 ? {} : _ref$previewOptions,\n      textareaProps = _ref.textareaProps,\n      _ref$maxHeight = _ref.maxHeight,\n      maxHeight = _ref$maxHeight === void 0 ? 1200 : _ref$maxHeight,\n      _ref$minHeight = _ref.minHeight,\n      minHeight = _ref$minHeight === void 0 ? 100 : _ref$minHeight,\n      autoFocus = _ref.autoFocus,\n      _ref$autoFocusEnd = _ref.autoFocusEnd,\n      autoFocusEnd = _ref$autoFocusEnd === void 0 ? false : _ref$autoFocusEnd,\n      _ref$tabSize = _ref.tabSize,\n      tabSize = _ref$tabSize === void 0 ? 2 : _ref$tabSize,\n      _ref$defaultTabEnable = _ref.defaultTabEnable,\n      defaultTabEnable = _ref$defaultTabEnable === void 0 ? false : _ref$defaultTabEnable,\n      onChange = _ref.onChange,\n      onStatistics = _ref.onStatistics,\n      onHeightChange = _ref.onHeightChange,\n      hideToolbar = _ref.hideToolbar,\n      _ref$toolbarBottom = _ref.toolbarBottom,\n      toolbarBottom = _ref$toolbarBottom === void 0 ? false : _ref$toolbarBottom,\n      components = _ref.components,\n      renderTextarea = _ref.renderTextarea,\n      other = _objectWithoutPropertiesLoose(_ref, _excluded);\n    var cmds = commands.map(item => commandsFilter ? commandsFilter(item, false) : item).filter(Boolean);\n    var extraCmds = extraCommands.map(item => commandsFilter ? commandsFilter(item, true) : item).filter(Boolean);\n    var _useReducer = useReducer(reducer, {\n        markdown: propsValue,\n        preview: previewType,\n        components,\n        height,\n        minHeight,\n        highlightEnable,\n        tabSize,\n        defaultTabEnable,\n        scrollTop: 0,\n        scrollTopPreview: 0,\n        commands: cmds,\n        extraCommands: extraCmds,\n        fullscreen,\n        barPopup: {}\n      }),\n      state = _useReducer[0],\n      dispatch = _useReducer[1];\n    var container = useRef(null);\n    var previewRef = useRef(null);\n    var enableScrollRef = useRef(enableScroll);\n    useImperativeHandle(ref, () => _extends({}, state, {\n      container: container.current,\n      dispatch\n    }));\n    useMemo(() => enableScrollRef.current = enableScroll, [enableScroll]);\n    useEffect(() => {\n      var stateInit = {};\n      if (container.current) {\n        stateInit.container = container.current || undefined;\n      }\n      stateInit.markdown = propsValue || '';\n      stateInit.barPopup = {};\n      if (dispatch) {\n        dispatch(_extends({}, state, stateInit));\n      }\n      // eslint-disable-next-line react-hooks/exhaustive-deps\n    }, []);\n    var cls = [className, 'wmde-markdown-var', direction ? prefixCls + \"-\" + direction : null, prefixCls, state.preview ? prefixCls + \"-show-\" + state.preview : null, state.fullscreen ? prefixCls + \"-fullscreen\" : null].filter(Boolean).join(' ').trim();\n    useMemo(() => propsValue !== state.markdown && dispatch({\n      markdown: propsValue || ''\n    }), [propsValue, state.markdown]);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    useMemo(() => previewType !== state.preview && dispatch({\n      preview: previewType\n    }), [previewType]);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    useMemo(() => tabSize !== state.tabSize && dispatch({\n      tabSize\n    }), [tabSize]);\n    useMemo(() => highlightEnable !== state.highlightEnable && dispatch({\n      highlightEnable\n    }),\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [highlightEnable]);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    useMemo(() => autoFocus !== state.autoFocus && dispatch({\n      autoFocus: autoFocus\n    }), [autoFocus]);\n    useMemo(() => autoFocusEnd !== state.autoFocusEnd && dispatch({\n      autoFocusEnd: autoFocusEnd\n    }), [autoFocusEnd]);\n    useMemo(() => fullscreen !== state.fullscreen && dispatch({\n      fullscreen: fullscreen\n    }),\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    [fullscreen]);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    useMemo(() => height !== state.height && dispatch({\n      height: height\n    }), [height]);\n    useMemo(() => height !== state.height && onHeightChange && onHeightChange(state.height, height, state), [height, onHeightChange, state]);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    useMemo(() => commands !== state.commands && dispatch({\n      commands: cmds\n    }), [props.commands]);\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n    useMemo(() => extraCommands !== state.extraCommands && dispatch({\n      extraCommands: extraCmds\n    }), [props.extraCommands]);\n    var textareaDomRef = useRef();\n    var active = useRef('preview');\n    var initScroll = useRef(false);\n    useMemo(() => {\n      textareaDomRef.current = state.textareaWarp;\n      if (state.textareaWarp) {\n        state.textareaWarp.addEventListener('mouseover', () => {\n          active.current = 'text';\n        });\n        state.textareaWarp.addEventListener('mouseleave', () => {\n          active.current = 'preview';\n        });\n      }\n    }, [state.textareaWarp]);\n    var handleScroll = (e, type) => {\n      if (!enableScrollRef.current) return;\n      var textareaDom = textareaDomRef.current;\n      var previewDom = previewRef.current ? previewRef.current : undefined;\n      if (!initScroll.current) {\n        active.current = type;\n        initScroll.current = true;\n      }\n      if (textareaDom && previewDom) {\n        var scale = (textareaDom.scrollHeight - textareaDom.offsetHeight) / (previewDom.scrollHeight - previewDom.offsetHeight);\n        if (e.target === textareaDom && active.current === 'text') {\n          previewDom.scrollTop = textareaDom.scrollTop / scale;\n        }\n        if (e.target === previewDom && active.current === 'preview') {\n          textareaDom.scrollTop = previewDom.scrollTop * scale;\n        }\n        var scrollTop = 0;\n        if (active.current === 'text') {\n          scrollTop = textareaDom.scrollTop || 0;\n        } else if (active.current === 'preview') {\n          scrollTop = previewDom.scrollTop || 0;\n        }\n        dispatch({\n          scrollTop\n        });\n      }\n    };\n    var previewClassName = prefixCls + \"-preview \" + (previewOptions.className || '');\n    var handlePreviewScroll = e => handleScroll(e, 'preview');\n    var mdPreview = useMemo(() => /*#__PURE__*/_jsx(\"div\", {\n      ref: previewRef,\n      className: previewClassName,\n      children: /*#__PURE__*/_jsx(PreviewComponent, _extends({}, previewOptions, {\n        onScroll: handlePreviewScroll,\n        source: state.markdown || ''\n      }))\n    }), [previewClassName, previewOptions, state.markdown]);\n    var preview = (components == null ? void 0 : components.preview) && (components == null ? void 0 : components.preview(state.markdown || '', state, dispatch));\n    if (preview && /*#__PURE__*/React.isValidElement(preview)) {\n      mdPreview = /*#__PURE__*/_jsx(\"div\", {\n        className: previewClassName,\n        ref: previewRef,\n        onScroll: handlePreviewScroll,\n        children: preview\n      });\n    }\n    var containerStyle = _extends({}, other.style, {\n      height: state.height || '100%'\n    });\n    var containerClick = () => dispatch({\n      barPopup: _extends({}, setGroupPopFalse(state.barPopup))\n    });\n    var dragBarChange = newHeight => dispatch({\n      height: newHeight\n    });\n    var changeHandle = evn => {\n      onChange && onChange(evn.target.value, evn, state);\n      if (textareaProps && textareaProps.onChange) {\n        textareaProps.onChange(evn);\n      }\n      if (state.textarea && state.textarea instanceof HTMLTextAreaElement && onStatistics) {\n        var obj = new TextAreaCommandOrchestrator(state.textarea);\n        var objState = obj.getState() || {};\n        onStatistics(_extends({}, objState, {\n          lineCount: evn.target.value.split('\\n').length,\n          length: evn.target.value.length\n        }));\n      }\n    };\n    return /*#__PURE__*/_jsx(EditorContext.Provider, {\n      value: _extends({}, state, {\n        dispatch\n      }),\n      children: /*#__PURE__*/_jsxs(\"div\", _extends({\n        ref: container,\n        className: cls\n      }, other, {\n        onClick: containerClick,\n        style: containerStyle,\n        children: [/*#__PURE__*/_jsx(ToolbarVisibility, {\n          hideToolbar: hideToolbar,\n          toolbarBottom: toolbarBottom,\n          prefixCls: prefixCls,\n          overflow: overflow,\n          placement: \"top\"\n        }), /*#__PURE__*/_jsxs(\"div\", {\n          className: prefixCls + \"-content\",\n          children: [/(edit|live)/.test(state.preview || '') && /*#__PURE__*/_jsx(TextAreaComponent, _extends({\n            className: prefixCls + \"-input\",\n            prefixCls: prefixCls,\n            autoFocus: autoFocus\n          }, textareaProps, {\n            onChange: changeHandle,\n            renderTextarea: (components == null ? void 0 : components.textarea) || renderTextarea,\n            onScroll: e => handleScroll(e, 'text')\n          })), /(live|preview)/.test(state.preview || '') && mdPreview]\n        }), visibleDragbar && !state.fullscreen && /*#__PURE__*/_jsx(DragBar, {\n          prefixCls: prefixCls,\n          height: state.height,\n          maxHeight: maxHeight,\n          minHeight: minHeight,\n          onChange: dragBarChange\n        }), /*#__PURE__*/_jsx(ToolbarVisibility, {\n          hideToolbar: hideToolbar,\n          toolbarBottom: toolbarBottom,\n          prefixCls: prefixCls,\n          overflow: overflow,\n          placement: \"bottom\"\n        })]\n      }))\n    });\n  });\n  var Editor = InternalMDEditor;\n  Editor.Markdown = MarkdownPreview;\n  Editor.displayName = 'MDEditor';\n  return Editor;\n}", "import _extends from \"@babel/runtime/helpers/extends\";\nimport React, { Fragment, useContext, useEffect, useRef } from 'react';\nimport { EditorContext } from \"../../Context.js\";\nimport Child from \"./Child.js\";\nimport \"./index.css\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nexport function ToolbarItems(props) {\n  var prefixCls = props.prefixCls,\n    overflow = props.overflow;\n  var _useContext = useContext(EditorContext),\n    fullscreen = _useContext.fullscreen,\n    preview = _useContext.preview,\n    _useContext$barPopup = _useContext.barPopup,\n    barPopup = _useContext$barPopup === void 0 ? {} : _useContext$barPopup,\n    components = _useContext.components,\n    commandOrchestrator = _useContext.commandOrchestrator,\n    dispatch = _useContext.dispatch;\n  var originalOverflow = useRef('');\n  function handleClick(command, name) {\n    if (!dispatch) return;\n    var state = {\n      barPopup: _extends({}, barPopup)\n    };\n    if (command.keyCommand === 'preview') {\n      state.preview = command.value;\n    }\n    if (command.keyCommand === 'fullscreen') {\n      state.fullscreen = !fullscreen;\n    }\n    if (props.commands && command.keyCommand === 'group') {\n      props.commands.forEach(item => {\n        if (name === item.groupName) {\n          state.barPopup[name] = true;\n        } else if (item.keyCommand) {\n          state.barPopup[item.groupName] = false;\n        }\n      });\n    } else if (name || command.parent) {\n      Object.keys(state.barPopup || {}).forEach(keyName => {\n        state.barPopup[keyName] = false;\n      });\n    }\n    if (Object.keys(state).length) {\n      dispatch(_extends({}, state));\n    }\n    commandOrchestrator && commandOrchestrator.executeCommand(command);\n  }\n  useEffect(() => {\n    if (document && overflow) {\n      if (fullscreen) {\n        // prevent scroll on fullscreen\n        document.body.style.overflow = 'hidden';\n      } else {\n        // get the original overflow only the first time\n        if (!originalOverflow.current) {\n          originalOverflow.current = window.getComputedStyle(document.body, null).overflow;\n        }\n        // reset to the original overflow\n        document.body.style.overflow = originalOverflow.current;\n      }\n    }\n  }, [fullscreen, originalOverflow, overflow]);\n  return /*#__PURE__*/_jsx(\"ul\", {\n    children: (props.commands || []).map((item, idx) => {\n      if (item.keyCommand === 'divider') {\n        return /*#__PURE__*/_jsx(\"li\", _extends({}, item.liProps, {\n          className: prefixCls + \"-toolbar-divider\"\n        }), idx);\n      }\n      if (!item.keyCommand) return /*#__PURE__*/_jsx(Fragment, {}, idx);\n      var activeBtn = fullscreen && item.keyCommand === 'fullscreen' || item.keyCommand === 'preview' && preview === item.value;\n      var childNode = item.children && typeof item.children === 'function' ? item.children({\n        getState: () => commandOrchestrator.getState(),\n        textApi: commandOrchestrator ? commandOrchestrator.textApi : undefined,\n        close: () => handleClick({}, item.groupName),\n        execute: () => handleClick({\n          execute: item.execute\n        }),\n        dispatch\n      }) : undefined;\n      var disabled = barPopup && preview && preview === 'preview' && !/(preview|fullscreen)/.test(item.keyCommand);\n      var render = (components == null ? void 0 : components.toolbar) || item.render;\n      var com = render && typeof render === 'function' ? render(item, !!disabled, handleClick, idx) : null;\n      return /*#__PURE__*/_jsxs(\"li\", _extends({}, item.liProps, {\n        className: activeBtn ? \"active\" : '',\n        children: [com && /*#__PURE__*/React.isValidElement(com) && com, !com && !item.buttonProps && item.icon, !com && item.buttonProps && /*#__PURE__*/React.createElement('button', _extends({\n          type: 'button',\n          key: idx,\n          disabled,\n          'data-name': item.name\n        }, item.buttonProps, {\n          onClick: evn => {\n            evn.stopPropagation();\n            handleClick(item, item.groupName);\n          }\n        }), item.icon), item.children && /*#__PURE__*/_jsx(Child, {\n          overflow: overflow,\n          groupName: item.groupName,\n          prefixCls: prefixCls,\n          children: childNode,\n          commands: Array.isArray(item.children) ? item.children : undefined\n        })]\n      }), idx);\n    })\n  });\n}\nexport default function Toolbar(props) {\n  if (props === void 0) {\n    props = {};\n  }\n  var _props = props,\n    prefixCls = _props.prefixCls,\n    isChild = _props.isChild,\n    className = _props.className;\n  var _useContext2 = useContext(EditorContext),\n    commands = _useContext2.commands,\n    extraCommands = _useContext2.extraCommands;\n  return /*#__PURE__*/_jsxs(\"div\", {\n    className: prefixCls + \"-toolbar \" + className,\n    children: [/*#__PURE__*/_jsx(ToolbarItems, _extends({}, props, {\n      commands: props.commands || commands || []\n    })), !isChild && /*#__PURE__*/_jsx(ToolbarItems, _extends({}, props, {\n      commands: extraCommands || []\n    }))]\n  });\n}\nexport function ToolbarVisibility(props) {\n  var hideToolbar = props.hideToolbar,\n    toolbarBottom = props.toolbarBottom,\n    placement = props.placement,\n    overflow = props.overflow,\n    prefixCls = props.prefixCls;\n  if (hideToolbar || placement === 'bottom' && !toolbarBottom || placement === 'top' && toolbarBottom) {\n    return null;\n  }\n  var cls = toolbarBottom ? 'bottom' : '';\n  return /*#__PURE__*/_jsx(Toolbar, {\n    prefixCls: prefixCls,\n    overflow: overflow,\n    className: cls\n  });\n}", "import _extends from \"@babel/runtime/helpers/extends\";\nimport React, { useContext, useMemo } from 'react';\nimport \"./Child.css\";\nimport Toolbar from \"./index.js\";\nimport { EditorContext } from \"../../Context.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default function Child(props) {\n  var _ref = props || {},\n    prefixCls = _ref.prefixCls,\n    groupName = _ref.groupName,\n    commands = _ref.commands,\n    children = _ref.children;\n  var _useContext = useContext(EditorContext),\n    _useContext$barPopup = _useContext.barPopup,\n    barPopup = _useContext$barPopup === void 0 ? {} : _useContext$barPopup;\n  return useMemo(() => /*#__PURE__*/_jsx(\"div\", {\n    className: prefixCls + \"-toolbar-child \" + (groupName && barPopup[groupName] ? 'active' : ''),\n    onClick: e => e.stopPropagation(),\n    children: Array.isArray(commands) ? /*#__PURE__*/_jsx(Toolbar, _extends({\n      commands: commands\n    }, props, {\n      isChild: true\n    })) : children\n  }),\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  [commands, barPopup, groupName, prefixCls]);\n}", "import React, { useEffect, useMemo, useRef } from 'react';\nimport \"./index.css\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nvar DragBar = props => {\n  var _ref = props || {},\n    prefixCls = _ref.prefixCls,\n    onChange = _ref.onChange;\n  var $dom = useRef(null);\n  var dragRef = useRef();\n  var heightRef = useRef(props.height);\n  useEffect(() => {\n    if (heightRef.current !== props.height) {\n      heightRef.current = props.height;\n    }\n  }, [props.height]);\n  function handleMouseMove(event) {\n    if (dragRef.current) {\n      var _changedTouches$;\n      var clientY = event.clientY || ((_changedTouches$ = event.changedTouches[0]) == null ? void 0 : _changedTouches$.clientY);\n      var newHeight = dragRef.current.height + clientY - dragRef.current.dragY;\n      if (newHeight >= props.minHeight && newHeight <= props.maxHeight) {\n        onChange && onChange(dragRef.current.height + (clientY - dragRef.current.dragY));\n      }\n    }\n  }\n  function handleMouseUp() {\n    var _$dom$current, _$dom$current2;\n    dragRef.current = undefined;\n    document.removeEventListener('mousemove', handleMouseMove);\n    document.removeEventListener('mouseup', handleMouseUp);\n    (_$dom$current = $dom.current) == null || _$dom$current.removeEventListener('touchmove', handleMouseMove);\n    (_$dom$current2 = $dom.current) == null || _$dom$current2.removeEventListener('touchend', handleMouseUp);\n  }\n  function handleMouseDown(event) {\n    var _changedTouches$2, _$dom$current3, _$dom$current4;\n    event.preventDefault();\n    var clientY = event.clientY || ((_changedTouches$2 = event.changedTouches[0]) == null ? void 0 : _changedTouches$2.clientY);\n    dragRef.current = {\n      height: heightRef.current,\n      dragY: clientY\n    };\n    document.addEventListener('mousemove', handleMouseMove);\n    document.addEventListener('mouseup', handleMouseUp);\n    (_$dom$current3 = $dom.current) == null || _$dom$current3.addEventListener('touchmove', handleMouseMove, {\n      passive: false\n    });\n    (_$dom$current4 = $dom.current) == null || _$dom$current4.addEventListener('touchend', handleMouseUp, {\n      passive: false\n    });\n  }\n  useEffect(() => {\n    if (document) {\n      var _$dom$current5, _$dom$current6;\n      (_$dom$current5 = $dom.current) == null || _$dom$current5.addEventListener('touchstart', handleMouseDown, {\n        passive: false\n      });\n      (_$dom$current6 = $dom.current) == null || _$dom$current6.addEventListener('mousedown', handleMouseDown);\n    }\n    return () => {\n      if (document) {\n        var _$dom$current7;\n        (_$dom$current7 = $dom.current) == null || _$dom$current7.removeEventListener('touchstart', handleMouseDown);\n        document.removeEventListener('mousemove', handleMouseMove);\n      }\n    };\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n  var svg = useMemo(() => /*#__PURE__*/_jsx(\"svg\", {\n    viewBox: \"0 0 512 512\",\n    height: \"100%\",\n    children: /*#__PURE__*/_jsx(\"path\", {\n      fill: \"currentColor\",\n      d: \"M304 256c0 26.5-21.5 48-48 48s-48-21.5-48-48 21.5-48 48-48 48 21.5 48 48zm120-48c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm-336 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z\"\n    })\n  }), []);\n  return /*#__PURE__*/_jsx(\"div\", {\n    className: prefixCls + \"-bar\",\n    ref: $dom,\n    children: svg\n  });\n};\nexport default DragBar;", "import MarkdownPreview from '@uiw/react-markdown-preview';\nimport TextArea from \"./components/TextArea/index.js\";\nimport { createMDEditor } from './Editor.factory';\nexport default createMDEditor({\n  MarkdownPreview,\n  TextArea\n});", "import MDEditor from \"./Editor.js\";\nimport * as commands from \"./commands/index.js\";\nimport * as MarkdownUtil from \"./utils/markdownUtils.js\";\nimport \"./index.css\";\nexport { headingExecute } from \"./commands/title.js\";\nexport * from \"./commands/index.js\";\nexport * from \"./commands/group.js\";\nexport * from \"./utils/markdownUtils.js\";\nexport * from \"./utils/InsertTextAtPosition.js\";\nexport * from \"./Editor.js\";\nexport * from \"./Context.js\";\nexport * from \"./Types.js\";\nexport { default as handleKeyDown } from \"./components/TextArea/handleKeyDown.js\";\nexport { default as shortcuts } from \"./components/TextArea/shortcuts.js\";\nexport { MarkdownUtil, commands };\nexport default MDEditor;", "/**\n * @import {Schema} from 'hast-util-sanitize'\n */\n\n// Couple of ARIA attributes allowed in several, but not all, places.\nconst aria = ['ariaDescribedBy', 'ariaLabel', 'ariaLabelledBy']\n\n/**\n * Default schema.\n *\n * Follows GitHub style sanitation.\n *\n * @type {Schema}\n */\nexport const defaultSchema = {\n  ancestors: {\n    tbody: ['table'],\n    td: ['table'],\n    th: ['table'],\n    thead: ['table'],\n    tfoot: ['table'],\n    tr: ['table']\n  },\n  attributes: {\n    a: [\n      ...aria,\n      // Note: these 3 are used by GFM footnotes, they do work on all links.\n      'dataFootnoteBackref',\n      'dataFootnoteRef',\n      ['className', 'data-footnote-backref'],\n      'href'\n    ],\n    blockquote: ['cite'],\n    // Note: this class is not normally allowed by GH, when manually writing\n    // `code` as HTML in markdown, they adds it some other way.\n    // We can\u2019t do that, so we have to allow it.\n    code: [['className', /^language-./]],\n    del: ['cite'],\n    div: ['itemScope', 'itemType'],\n    dl: [...aria],\n    // Note: this is used by GFM footnotes.\n    h2: [['className', 'sr-only']],\n    img: [...aria, 'longDesc', 'src'],\n    // Note: `input` is not normally allowed by GH, when manually writing\n    // it in markdown, they add it from tasklists some other way.\n    // We can\u2019t do that, so we have to allow it.\n    input: [\n      ['disabled', true],\n      ['type', 'checkbox']\n    ],\n    ins: ['cite'],\n    // Note: this class is not normally allowed by GH, when manually writing\n    // `li` as HTML in markdown, they adds it some other way.\n    // We can\u2019t do that, so we have to allow it.\n    li: [['className', 'task-list-item']],\n    // Note: this class is not normally allowed by GH, when manually writing\n    // `ol` as HTML in markdown, they adds it some other way.\n    // We can\u2019t do that, so we have to allow it.\n    ol: [...aria, ['className', 'contains-task-list']],\n    q: ['cite'],\n    section: ['dataFootnotes', ['className', 'footnotes']],\n    source: ['srcSet'],\n    summary: [...aria],\n    table: [...aria],\n    // Note: this class is not normally allowed by GH, when manually writing\n    // `ol` as HTML in markdown, they adds it some other way.\n    // We can\u2019t do that, so we have to allow it.\n    ul: [...aria, ['className', 'contains-task-list']],\n    '*': [\n      'abbr',\n      'accept',\n      'acceptCharset',\n      'accessKey',\n      'action',\n      'align',\n      'alt',\n      'axis',\n      'border',\n      'cellPadding',\n      'cellSpacing',\n      'char',\n      'charOff',\n      'charSet',\n      'checked',\n      'clear',\n      'colSpan',\n      'color',\n      'cols',\n      'compact',\n      'coords',\n      'dateTime',\n      'dir',\n      // Note: `disabled` is technically allowed on all elements by GH.\n      // But it is useless on everything except `input`.\n      // Because `input`s are normally not allowed, but we allow them for\n      // checkboxes due to tasklists, we allow `disabled` only there.\n      'encType',\n      'frame',\n      'hSpace',\n      'headers',\n      'height',\n      'hrefLang',\n      'htmlFor',\n      'id',\n      'isMap',\n      'itemProp',\n      'label',\n      'lang',\n      'maxLength',\n      'media',\n      'method',\n      'multiple',\n      'name',\n      'noHref',\n      'noShade',\n      'noWrap',\n      'open',\n      'prompt',\n      'readOnly',\n      'rev',\n      'rowSpan',\n      'rows',\n      'rules',\n      'scope',\n      'selected',\n      'shape',\n      'size',\n      'span',\n      'start',\n      'summary',\n      'tabIndex',\n      'title',\n      'useMap',\n      'vAlign',\n      'value',\n      'width'\n    ]\n  },\n  clobber: ['ariaDescribedBy', 'ariaLabelledBy', 'id', 'name'],\n  clobberPrefix: 'user-content-',\n  protocols: {\n    cite: ['http', 'https'],\n    href: ['http', 'https', 'irc', 'ircs', 'mailto', 'xmpp'],\n    longDesc: ['http', 'https'],\n    src: ['http', 'https']\n  },\n  required: {\n    input: {disabled: true, type: 'checkbox'}\n  },\n  strip: ['script'],\n  tagNames: [\n    'a',\n    'b',\n    'blockquote',\n    'br',\n    'code',\n    'dd',\n    'del',\n    'details',\n    'div',\n    'dl',\n    'dt',\n    'em',\n    'h1',\n    'h2',\n    'h3',\n    'h4',\n    'h5',\n    'h6',\n    'hr',\n    'i',\n    'img',\n    // Note: `input` is not normally allowed by GH, when manually writing\n    // it in markdown, they add it from tasklists some other way.\n    // We can\u2019t do that, so we have to allow it.\n    'input',\n    'ins',\n    'kbd',\n    'li',\n    'ol',\n    'p',\n    'picture',\n    'pre',\n    'q',\n    'rp',\n    'rt',\n    'ruby',\n    's',\n    'samp',\n    'section',\n    'source',\n    'span',\n    'strike',\n    'strong',\n    'sub',\n    'summary',\n    'sup',\n    'table',\n    'tbody',\n    'td',\n    'tfoot',\n    'th',\n    'thead',\n    'tr',\n    'tt',\n    'ul',\n    'var'\n  ]\n}\n", "/**\n * @import {\n *   Comment,\n *   Doctype,\n *   ElementContent,\n *   Element,\n *   Nodes,\n *   Properties,\n *   RootContent,\n *   Root,\n *   Text\n * } from 'hast'\n */\n\n/**\n * @typedef {[string, ...Array<Exclude<Properties[keyof Properties], Array<any>> | RegExp>] | string} PropertyDefinition\n *   Definition for a property.\n *\n * @typedef Schema\n *   Schema that defines what nodes and properties are allowed.\n *\n *   The default schema is `defaultSchema`, which follows how GitHub cleans.\n *   If any top-level key is missing in the given schema, the corresponding\n *   value of the default schema is used.\n *\n *   To extend the standard schema with a few changes, clone `defaultSchema`\n *   like so:\n *\n *   ```js\n *   import deepmerge from 'deepmerge'\n *   import {h} from 'hastscript'\n *   import {defaultSchema, sanitize} from 'hast-util-sanitize'\n *\n *   // This allows `className` on all elements.\n *   const schema = deepmerge(defaultSchema, {attributes: {'*': ['className']}})\n *\n *   const tree = sanitize(h('div', {className: ['foo']}), schema)\n *\n *   // `tree` still has `className`.\n *   console.log(tree)\n *   // {\n *   //   type: 'element',\n *   //   tagName: 'div',\n *   //   properties: {className: ['foo']},\n *   //   children: []\n *   // }\n *   ```\n * @property {boolean | null | undefined} [allowComments=false]\n *   Whether to allow comment nodes (default: `false`).\n *\n *   For example:\n *\n *   ```js\n *   allowComments: true\n *   ```\n * @property {boolean | null | undefined} [allowDoctypes=false]\n *   Whether to allow doctype nodes (default: `false`).\n *\n *   For example:\n *\n *   ```js\n *   allowDoctypes: true\n *   ```\n * @property {Record<string, Array<string>> | null | undefined} [ancestors]\n *   Map of tag names to a list of tag names which are required ancestors\n *   (default: `defaultSchema.ancestors`).\n *\n *   Elements with these tag names will be ignored if they occur outside of one\n *   of their allowed parents.\n *\n *   For example:\n *\n *   ```js\n *   ancestors: {\n *     tbody: ['table'],\n *     // \u2026\n *     tr: ['table']\n *   }\n *   ```\n * @property {Record<string, Array<PropertyDefinition>> | null | undefined} [attributes]\n *   Map of tag names to allowed property names (default:\n *   `defaultSchema.attributes`).\n *\n *   The special key `'*'` as a tag name defines property names allowed on all\n *   elements.\n *\n *   The special value `'data*'` as a property name can be used to allow all\n *   `data` properties.\n *\n *   For example:\n *\n *   ```js\n *   attributes: {\n *     'ariaDescribedBy', 'ariaLabel', 'ariaLabelledBy', \u2026, 'href'\n *     // \u2026\n *     '*': [\n *       'abbr',\n *       'accept',\n *       'acceptCharset',\n *       // \u2026\n *       'vAlign',\n *       'value',\n *       'width'\n *     ]\n *   }\n *   ```\n *\n *   Instead of a single string in the array, which allows any property value\n *   for the field, you can use an array to allow several values.\n *   For example, `input: ['type']` allows `type` set to any value on `input`s.\n *   But `input: [['type', 'checkbox', 'radio']]` allows `type` when set to\n *   `'checkbox'` or `'radio'`.\n *\n *   You can use regexes, so for example `span: [['className', /^hljs-/]]`\n *   allows any class that starts with `hljs-` on `span`s.\n *\n *   When comma- or space-separated values are used (such as `className`), each\n *   value in is checked individually.\n *   For example, to allow certain classes on `span`s for syntax highlighting,\n *   use `span: [['className', 'number', 'operator', 'token']]`.\n *   This will allow `'number'`, `'operator'`, and `'token'` classes, but drop\n *   others.\n * @property {Array<string> | null | undefined} [clobber]\n *   List of property names that clobber (default: `defaultSchema.clobber`).\n *\n *   For example:\n *\n *   ```js\n *   clobber: ['ariaDescribedBy', 'ariaLabelledBy', 'id', 'name']\n *   ```\n * @property {string | null | undefined} [clobberPrefix]\n *   Prefix to use before clobbering properties (default:\n *   `defaultSchema.clobberPrefix`).\n *\n *   For example:\n *\n *   ```js\n *   clobberPrefix: 'user-content-'\n *   ```\n * @property {Record<string, Array<string> | null | undefined> | null | undefined} [protocols]\n *   Map of *property names* to allowed protocols (default:\n *   `defaultSchema.protocols`).\n *\n *   This defines URLs that are always allowed to have local URLs (relative to\n *   the current website, such as `this`, `#this`, `/this`, or `?this`), and\n *   only allowed to have remote URLs (such as `https://example.com`) if they\n *   use a known protocol.\n *\n *   For example:\n *\n *   ```js\n *   protocols: {\n *     cite: ['http', 'https'],\n *     // \u2026\n *     src: ['http', 'https']\n *   }\n *   ```\n * @property {Record<string, Record<string, Properties[keyof Properties]>> | null | undefined} [required]\n *   Map of tag names to required property names with a default value\n *   (default: `defaultSchema.required`).\n *\n *   This defines properties that must be set.\n *   If a field does not exist (after the element was made safe), these will be\n *   added with the given value.\n *\n *   For example:\n *\n *   ```js\n *   required: {\n *     input: {disabled: true, type: 'checkbox'}\n *   }\n *   ```\n *\n *   > \uD83D\uDC49 **Note**: properties are first checked based on `schema.attributes`,\n *   > then on `schema.required`.\n *   > That means properties could be removed by `attributes` and then added\n *   > again with `required`.\n * @property {Array<string> | null | undefined} [strip]\n *   List of tag names to strip from the tree (default: `defaultSchema.strip`).\n *\n *   By default, unsafe elements (those not in `schema.tagNames`) are replaced\n *   by what they contain.\n *   This option can drop their contents.\n *\n *   For example:\n *\n *   ```js\n *   strip: ['script']\n *   ```\n * @property {Array<string> | null | undefined} [tagNames]\n *   List of allowed tag names (default: `defaultSchema.tagNames`).\n *\n *   For example:\n *\n *   ```js\n *   tagNames: [\n *     'a',\n *     'b',\n *     // \u2026\n *     'ul',\n *     'var'\n *   ]\n *   ```\n *\n * @typedef State\n *   Info passed around.\n * @property {Readonly<Schema>} schema\n *   Schema.\n * @property {Array<string>} stack\n *   Tag names of ancestors.\n */\n\nimport structuredClone from '@ungap/structured-clone'\nimport {position} from 'unist-util-position'\nimport {defaultSchema} from './schema.js'\n\nconst own = {}.hasOwnProperty\n\n/**\n * Sanitize a tree.\n *\n * @param {Readonly<Nodes>} node\n *   Unsafe tree.\n * @param {Readonly<Schema> | null | undefined} [options]\n *   Configuration (default: `defaultSchema`).\n * @returns {Nodes}\n *   New, safe tree.\n */\nexport function sanitize(node, options) {\n  /** @type {Nodes} */\n  let result = {type: 'root', children: []}\n\n  /** @type {State} */\n  const state = {\n    schema: options ? {...defaultSchema, ...options} : defaultSchema,\n    stack: []\n  }\n  const replace = transform(state, node)\n\n  if (replace) {\n    if (Array.isArray(replace)) {\n      if (replace.length === 1) {\n        result = replace[0]\n      } else {\n        result.children = replace\n      }\n    } else {\n      result = replace\n    }\n  }\n\n  return result\n}\n\n/**\n * Sanitize `node`.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Readonly<unknown>} node\n *   Unsafe node.\n * @returns {Array<ElementContent> | Nodes | undefined}\n *   Safe result.\n */\nfunction transform(state, node) {\n  if (node && typeof node === 'object') {\n    const unsafe = /** @type {Record<string, Readonly<unknown>>} */ (node)\n    const type = typeof unsafe.type === 'string' ? unsafe.type : ''\n\n    switch (type) {\n      case 'comment': {\n        return comment(state, unsafe)\n      }\n\n      case 'doctype': {\n        return doctype(state, unsafe)\n      }\n\n      case 'element': {\n        return element(state, unsafe)\n      }\n\n      case 'root': {\n        return root(state, unsafe)\n      }\n\n      case 'text': {\n        return text(state, unsafe)\n      }\n\n      default:\n    }\n  }\n}\n\n/**\n * Make a safe comment.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Readonly<Record<string, Readonly<unknown>>>} unsafe\n *   Unsafe comment-like value.\n * @returns {Comment | undefined}\n *   Safe comment (if with `allowComments`).\n */\nfunction comment(state, unsafe) {\n  if (state.schema.allowComments) {\n    // See <https://html.spec.whatwg.org/multipage/parsing.html#serialising-html-fragments>\n    const result = typeof unsafe.value === 'string' ? unsafe.value : ''\n    const index = result.indexOf('-->')\n    const value = index < 0 ? result : result.slice(0, index)\n\n    /** @type {Comment} */\n    const node = {type: 'comment', value}\n\n    patch(node, unsafe)\n\n    return node\n  }\n}\n\n/**\n * Make a safe doctype.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Readonly<Record<string, Readonly<unknown>>>} unsafe\n *   Unsafe doctype-like value.\n * @returns {Doctype | undefined}\n *   Safe doctype (if with `allowDoctypes`).\n */\nfunction doctype(state, unsafe) {\n  if (state.schema.allowDoctypes) {\n    /** @type {Doctype} */\n    const node = {type: 'doctype'}\n\n    patch(node, unsafe)\n\n    return node\n  }\n}\n\n/**\n * Make a safe element.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Readonly<Record<string, Readonly<unknown>>>} unsafe\n *   Unsafe element-like value.\n * @returns {Array<ElementContent> | Element | undefined}\n *   Safe element.\n */\nfunction element(state, unsafe) {\n  const name = typeof unsafe.tagName === 'string' ? unsafe.tagName : ''\n\n  state.stack.push(name)\n\n  const content = /** @type {Array<ElementContent>} */ (\n    children(state, unsafe.children)\n  )\n  const properties_ = properties(state, unsafe.properties)\n\n  state.stack.pop()\n\n  let safeElement = false\n\n  if (\n    name &&\n    name !== '*' &&\n    (!state.schema.tagNames || state.schema.tagNames.includes(name))\n  ) {\n    safeElement = true\n\n    // Some nodes can break out of their context if they don\u2019t have a certain\n    // ancestor.\n    if (state.schema.ancestors && own.call(state.schema.ancestors, name)) {\n      const ancestors = state.schema.ancestors[name]\n      let index = -1\n\n      safeElement = false\n\n      while (++index < ancestors.length) {\n        if (state.stack.includes(ancestors[index])) {\n          safeElement = true\n        }\n      }\n    }\n  }\n\n  if (!safeElement) {\n    return state.schema.strip && !state.schema.strip.includes(name)\n      ? content\n      : undefined\n  }\n\n  /** @type {Element} */\n  const node = {\n    type: 'element',\n    tagName: name,\n    properties: properties_,\n    children: content\n  }\n\n  patch(node, unsafe)\n\n  return node\n}\n\n/**\n * Make a safe root.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Readonly<Record<string, Readonly<unknown>>>} unsafe\n *   Unsafe root-like value.\n * @returns {Root}\n *   Safe root.\n */\nfunction root(state, unsafe) {\n  const content = /** @type {Array<RootContent>} */ (\n    children(state, unsafe.children)\n  )\n\n  /** @type {Root} */\n  const node = {type: 'root', children: content}\n\n  patch(node, unsafe)\n\n  return node\n}\n\n/**\n * Make a safe text.\n *\n * @param {State} _\n *   Info passed around.\n * @param {Readonly<Record<string, Readonly<unknown>>>} unsafe\n *   Unsafe text-like value.\n * @returns {Text}\n *   Safe text.\n */\nfunction text(_, unsafe) {\n  const value = typeof unsafe.value === 'string' ? unsafe.value : ''\n  /** @type {Text} */\n  const node = {type: 'text', value}\n\n  patch(node, unsafe)\n\n  return node\n}\n\n/**\n * Make children safe.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Readonly<unknown>} children\n *   Unsafe value.\n * @returns {Array<Nodes>}\n *   Safe children.\n */\nfunction children(state, children) {\n  /** @type {Array<Nodes>} */\n  const results = []\n\n  if (Array.isArray(children)) {\n    const childrenUnknown = /** @type {Array<Readonly<unknown>>} */ (children)\n    let index = -1\n\n    while (++index < childrenUnknown.length) {\n      const value = transform(state, childrenUnknown[index])\n\n      if (value) {\n        if (Array.isArray(value)) {\n          results.push(...value)\n        } else {\n          results.push(value)\n        }\n      }\n    }\n  }\n\n  return results\n}\n\n/**\n * Make element properties safe.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Readonly<unknown>} properties\n *   Unsafe value.\n * @returns {Properties}\n *   Safe value.\n */\nfunction properties(state, properties) {\n  const tagName = state.stack[state.stack.length - 1]\n  const attributes = state.schema.attributes\n  const required = state.schema.required\n  const specific =\n    attributes && own.call(attributes, tagName)\n      ? attributes[tagName]\n      : undefined\n  const defaults =\n    attributes && own.call(attributes, '*') ? attributes['*'] : undefined\n  const properties_ =\n    /** @type {Readonly<Record<string, Readonly<unknown>>>} */ (\n      properties && typeof properties === 'object' ? properties : {}\n    )\n  /** @type {Properties} */\n  const result = {}\n  /** @type {string} */\n  let key\n\n  for (key in properties_) {\n    if (own.call(properties_, key)) {\n      const unsafe = properties_[key]\n      let safe = propertyValue(\n        state,\n        findDefinition(specific, key),\n        key,\n        unsafe\n      )\n\n      if (safe === null || safe === undefined) {\n        safe = propertyValue(state, findDefinition(defaults, key), key, unsafe)\n      }\n\n      if (safe !== null && safe !== undefined) {\n        result[key] = safe\n      }\n    }\n  }\n\n  if (required && own.call(required, tagName)) {\n    const properties = required[tagName]\n\n    for (key in properties) {\n      if (own.call(properties, key) && !own.call(result, key)) {\n        result[key] = properties[key]\n      }\n    }\n  }\n\n  return result\n}\n\n/**\n * Sanitize a property value.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Readonly<PropertyDefinition> | undefined} definition\n *   Definition.\n * @param {string} key\n *   Field name.\n * @param {Readonly<unknown>} value\n *   Unsafe value (but an array).\n * @returns {Array<number | string> | boolean | number | string | undefined}\n *   Safe value.\n */\nfunction propertyValue(state, definition, key, value) {\n  return definition\n    ? Array.isArray(value)\n      ? propertyValueMany(state, definition, key, value)\n      : propertyValuePrimitive(state, definition, key, value)\n    : undefined\n}\n\n/**\n * Sanitize a property value which is a list.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Readonly<PropertyDefinition>} definition\n *   Definition.\n * @param {string} key\n *   Field name.\n * @param {Readonly<Array<Readonly<unknown>>>} values\n *   Unsafe value (but an array).\n * @returns {Array<number | string>}\n *   Safe value.\n */\nfunction propertyValueMany(state, definition, key, values) {\n  let index = -1\n  /** @type {Array<number | string>} */\n  const result = []\n\n  while (++index < values.length) {\n    const value = propertyValuePrimitive(state, definition, key, values[index])\n\n    if (typeof value === 'number' || typeof value === 'string') {\n      result.push(value)\n    }\n  }\n\n  return result\n}\n\n/**\n * Sanitize a property value which is a primitive.\n *\n * @param {State} state\n *   Info passed around.\n * @param {Readonly<PropertyDefinition>} definition\n *   Definition.\n * @param {string} key\n *   Field name.\n * @param {Readonly<unknown>} value\n *   Unsafe value (but not an array).\n * @returns {boolean | number | string | undefined}\n *   Safe value.\n */\nfunction propertyValuePrimitive(state, definition, key, value) {\n  if (\n    typeof value !== 'boolean' &&\n    typeof value !== 'number' &&\n    typeof value !== 'string'\n  ) {\n    return\n  }\n\n  if (!safeProtocol(state, key, value)) {\n    return\n  }\n\n  // Just a string, or only one item in an array, means all values are OK.\n  // More than one item means an allow list.\n  if (typeof definition === 'object' && definition.length > 1) {\n    let ok = false\n    let index = 0 // Ignore `key`, which is the first item.\n\n    while (++index < definition.length) {\n      const allowed = definition[index]\n\n      // Expression.\n      if (allowed && typeof allowed === 'object' && 'flags' in allowed) {\n        if (allowed.test(String(value))) {\n          ok = true\n          break\n        }\n      }\n      // Primitive.\n      else if (allowed === value) {\n        ok = true\n        break\n      }\n    }\n\n    if (!ok) return\n  }\n\n  return state.schema.clobber &&\n    state.schema.clobberPrefix &&\n    state.schema.clobber.includes(key)\n    ? state.schema.clobberPrefix + value\n    : value\n}\n\n/**\n * Check whether `value` is a safe URL.\n *\n * @param {State} state\n *   Info passed around.\n * @param {string} key\n *   Field name.\n * @param {Readonly<unknown>} value\n *   Unsafe value.\n * @returns {boolean}\n *   Whether it\u2019s a safe value.\n */\nfunction safeProtocol(state, key, value) {\n  const protocols =\n    state.schema.protocols && own.call(state.schema.protocols, key)\n      ? state.schema.protocols[key]\n      : undefined\n\n  // No protocols defined? Then everything is fine.\n  if (!protocols || protocols.length === 0) {\n    return true\n  }\n\n  const url = String(value)\n  const colon = url.indexOf(':')\n  const questionMark = url.indexOf('?')\n  const numberSign = url.indexOf('#')\n  const slash = url.indexOf('/')\n\n  if (\n    colon < 0 ||\n    // If the first colon is after a `?`, `#`, or `/`, it\u2019s not a protocol.\n    (slash > -1 && colon > slash) ||\n    (questionMark > -1 && colon > questionMark) ||\n    (numberSign > -1 && colon > numberSign)\n  ) {\n    return true\n  }\n\n  let index = -1\n\n  while (++index < protocols.length) {\n    const protocol = protocols[index]\n\n    if (\n      colon === protocol.length &&\n      url.slice(0, protocol.length) === protocol\n    ) {\n      return true\n    }\n  }\n\n  return false\n}\n\n/**\n * Add data and position.\n *\n * @param {Nodes} node\n *   Node to patch safe data and position on.\n * @param {Readonly<Record<string, Readonly<unknown>>>} unsafe\n *   Unsafe node-like value.\n * @returns {undefined}\n *   Nothing.\n */\nfunction patch(node, unsafe) {\n  const cleanPosition = position(\n    // @ts-expect-error: looks like a node.\n    unsafe\n  )\n\n  if (unsafe.data) {\n    node.data = structuredClone(unsafe.data)\n  }\n\n  if (cleanPosition) node.position = cleanPosition\n}\n\n/**\n *\n * @param {Readonly<Array<PropertyDefinition>> | undefined} definitions\n * @param {string} key\n * @returns {Readonly<PropertyDefinition> | undefined}\n */\nfunction findDefinition(definitions, key) {\n  /** @type {PropertyDefinition | undefined} */\n  let dataDefault\n  let index = -1\n\n  if (definitions) {\n    while (++index < definitions.length) {\n      const entry = definitions[index]\n      const name = typeof entry === 'string' ? entry : entry[0]\n\n      if (name === key) {\n        return entry\n      }\n\n      if (name === 'data*') dataDefault = entry\n    }\n  }\n\n  if (key.length > 4 && key.slice(0, 4).toLowerCase() === 'data') {\n    return dataDefault\n  }\n}\n", "/**\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast-util-sanitize').Schema} Schema\n */\n\nimport {sanitize} from 'hast-util-sanitize'\n\n/**\n * Sanitize HTML.\n *\n * @param {Schema | null | undefined} [options]\n *   Configuration (optional).\n * @returns\n *   Transform.\n */\nexport default function rehypeSanitize(options) {\n  /**\n   * @param {Root} tree\n   *   Tree.\n   * @returns {Root}\n   *   New tree.\n   */\n  return function (tree) {\n    // Assume root in -> root out.\n    const result = /** @type {Root} */ (sanitize(tree, options))\n    return result\n  }\n}\n", "import * as React from 'react';\nimport useMessages from '../../../hooks/useMessages';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport Layout from '../../../components/Layout/Layout';\nimport PageHeader from '../../../components/Layout/PageHeader';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport Card from '../../../components/Card/Card';\nimport DocumentForm from './DocumentForm';\n\ninterface DocumentsProps {\n  documentType: 'incoming' | 'outgoing' | 'all' | null;\n}\n\nconst DocumentFormPage = ({ documentType }: DocumentsProps) => {\n  const getMessage = useMessages();\n  const { checkPermission, checkModuleEnabled } = usePermissions();\n\n  checkModuleEnabled('documents');\n  checkPermission('documents_add');\n\n  return (\n    <Layout currentPage=\"documents\">\n      <PageHeader pageTitle={getMessage('documents.newDocument')} currentPage=\"documents\" path=\"/dokumenty\" />\n      <ContentWrapper>\n        <Card className=\"col-span-full\">\n          <DocumentForm documentType={documentType}/>\n        </Card>\n      </ContentWrapper>\n    </Layout>\n  );\n};\n\nexport default DocumentFormPage;\n", "/* eslint-disable react/jsx-props-no-spreading */\n\nimport * as React from 'react';\nimport { useNavigate } from 'react-router';\nimport { FormProvider, useFieldArray, useForm } from 'react-hook-form';\nimport { useEffect, useMemo, useState } from 'react';\nimport useMessages from '../../../hooks/useMessages';\nimport {\n  useGetDocumentsCategoriesQuery,\n  useGetFullDocumentStatusesQuery,\n  useGetEmployeesQuery,\n  useGetFullJournalsQuery,\n  useGetTenantsQuery,\n  usePostDocumentMutation,\n} from '../../../api/appApi';\nimport capitalize from '../../../../utils/formatters';\nimport { FormNotice } from '../../../components/FormNotice/FormNotice';\nimport {\n  FormFileInput, FormInput, FormSelect, FormTextarea,\n} from '../../../components/FormInputs';\nimport FormSearchableDropdown from '../../../components/FormInputs/FormSearchableDropdown';\nimport FileUploadPreview from '../../../components/AttachmentPreview/FileUploadPreview/FileUploadPreview';\nimport Button from '../../../components/Button/Button';\nimport { DocumentFormData } from '../../../api/modules/documents/documentsTypes';\nimport { translateDocumentToFormData } from '../../../api/modules/documents/documentsTranslator';\nimport useTenantlessMode from '../../../hooks/useTenantlessMode';\n\ninterface DocumentsProps {\n  documentType: 'incoming' | 'outgoing' | 'all' | null;\n}\n\nconst DocumentForm = ({ documentType }: DocumentsProps) => {\n  const getMessage = useMessages();\n  const tenantlessMode = useTenantlessMode();\n  const navigate = useNavigate();\n  const [postDocumentData, result] = usePostDocumentMutation();\n  const { data: documentCategories } = useGetDocumentsCategoriesQuery();\n  const { data: documentStatuses } = useGetFullDocumentStatusesQuery();\n  const { data: journalsResponse } = useGetFullJournalsQuery({ items: '200' });\n\n  const [autoNumbering, setAutoNumbering] = useState(false);\n\n  const methods = useForm<DocumentFormData>({\n    defaultValues: {\n      attachments: [{ description: '' }],\n    },\n  });\n\n  const availableJournals = (documentType && (['incoming', 'outgoing']).includes(documentType)) ? journalsResponse?.journals.filter((j) => (j.journal_type === documentType)) : journalsResponse?.journals;\n\n  useEffect(() => {\n    methods.setValue('statusId', documentStatuses?.find((status) => status.name === 'open')?.id);\n  }, [documentStatuses]);\n\n  const { fields, append, remove } = useFieldArray({ name: 'attachments', control: methods.control });\n\n  const attachments = methods.watch('attachments');\n  const allAttachmentsSelected = attachments.every((attachment) => attachment.file?.length);\n\n  useEffect(() => {\n    if (allAttachmentsSelected) {\n      append({ file: undefined, description: '' });\n    }\n  }, [allAttachmentsSelected]);\n\n  const onSubmit = (data: DocumentFormData) => {\n    postDocumentData(translateDocumentToFormData(data));\n  };\n\n  useEffect(() => {\n    if (result.status === 'fulfilled') navigate('/dokumenty');\n  }, [result.status]);\n\n  const categorySelectOptions = useMemo(() => documentCategories?.map(({ id, name }) => ({\n    value: id,\n    optionLabel: capitalize(name),\n  })), [documentCategories]);\n\n  const statusSelectOptions = useMemo(() => documentStatuses?.map(({ id, externalName }) => ({\n    value: id,\n    optionLabel: capitalize(externalName),\n  })) || [], [documentStatuses]);\n\n  const journalSelectOptions = useMemo(() => availableJournals?.map(({ id, name }) => ({\n    value: id,\n    optionLabel: capitalize(name),\n  })) || [], [journalsResponse]);\n\n  const selectedJournalId = methods.watch('journalId');\n\n  useEffect(() => {\n    const autoNumbering = availableJournals?.find((journal) => journal.id === selectedJournalId)?.autonumbering || false;\n    setAutoNumbering(autoNumbering);\n    if (autoNumbering) {\n      methods.setValue('number', '');\n    }\n  }, [selectedJournalId]);\n\n  return (\n    <FormProvider {...methods}>\n      { /* @ts-ignore */ }\n      {result.isError && <FormNotice type=\"error\" message={result.error?.data?.errors || getMessage('form.error')} />}\n      <form onSubmit={methods.handleSubmit(onSubmit)} className=\"grid grid-cols-12 col-span-12\">\n        <section className=\"col-span-12 md:col-span-6\">\n          <FormInput\n            className=\"mt-4 w-full\"\n            inputClassName=\"w-full\"\n            id=\"title\"\n            type=\"text\"\n            label={`${getMessage('documents.document.title')}*`}\n            options={{ required: getMessage('documents.document.error.title.required'), maxLength: { value: 150, message: getMessage('documents.document.error.title.maxLength') } }}\n          />\n          {journalSelectOptions && (\n            <FormSelect\n              className=\"mt-4\"\n              id=\"journalId\"\n              label={`${getMessage('documents.document.journal')}*`}\n              inline\n              selectOptions={journalSelectOptions}\n              options={{ required: getMessage('documents.document.error.journal.required') }}\n            />\n          )}\n          <FormInput\n            className=\"mt-4 w-full\"\n            inputClassName=\"w-full\"\n            id=\"number\"\n            type=\"text\"\n            label={`${getMessage('documents.document.documentNumber')}*`}\n            disabled={autoNumbering}\n            placeholder={autoNumbering ? getMessage('documents.document.documentNumber.auto') : ''}\n            options={{\n              validate: (value) => {\n                if (!autoNumbering && !value) {\n                  return getMessage('documents.document.error.number.required');\n                }\n                return true;\n              },\n            }}\n          />\n          <FormInput\n            className=\"mt-4 w-full\"\n            inputClassName=\"w-full\"\n            id=\"sender\"\n            type=\"text\"\n            label={getMessage('documents.document.sender')}\n          />\n          <FormInput\n            className=\"mt-4 w-full\"\n            inputClassName=\"w-full\"\n            id=\"receiver\"\n            type=\"text\"\n            label={getMessage('documents.document.receiver')}\n          />\n          {!tenantlessMode && (\n          <FormSearchableDropdown\n            label={getMessage('documents.document.tenant')}\n            className=\"mt-4 w-full\"\n            id=\"tenantId\"\n            query={useGetTenantsQuery}\n            ariaLabel=\"Wyszukaj lokatora\"\n          />\n          )}\n          <FormTextarea\n            className=\"mt-6 w-full\"\n            inputClassName=\"w-full\"\n            id=\"description\"\n            label={`${getMessage('documents.document.description')}*`}\n            options={{ required: getMessage('documents.document.error.description.required') }}\n          />\n          {fields.map(({ file, id }, index) => {\n            const fileSelected = file && file.length > 0;\n            return (\n              <div key={id} id={id} className=\"flex align-start mb-4 w-full\">\n                {fileSelected && (\n                  <FileUploadPreview attachment={attachments[index]} onDelete={() => remove(index)} />\n                )}\n                <div className=\"w-full\">\n                  {fileSelected && (\n                    <FormInput\n                      className=\"w-full\"\n                      inputClassName=\"text-xs w-full\"\n                      id={`attachments.${index}.description`}\n                      type=\"text\"\n                      placeholder={getMessage('documents.document.addAttachmentDescription')}\n                    />\n                  )}\n                  <FormFileInput\n                    inputClassName={fileSelected ? 'hidden' : ''}\n                    id={`attachments.${index}.file`}\n                    labelText={getMessage('documents.document.addAttachment')}\n                    labelClassName={fileSelected ? 'hidden' : ''}\n                    withIcon\n                  />\n                </div>\n              </div>\n            );\n          })}\n        </section>\n        <section className=\"col-span-12 md:col-span-2 md:col-start-8\">\n          {statusSelectOptions && (\n            <FormSelect\n              className=\"mt-4\"\n              id=\"statusId\"\n              label={`${getMessage('documents.document.status')}*`}\n              inline\n              selectOptions={statusSelectOptions}\n              options={{ required: getMessage('documents.document.error.status.required') }}\n            />\n          )}\n          {categorySelectOptions && (\n            <FormSelect\n              className=\"mt-4\"\n              id=\"categoryId\"\n              label={`${getMessage('documents.document.category')}*`}\n              inline\n              selectOptions={categorySelectOptions}\n              options={{ required: getMessage('documents.document.error.category.required') }}\n            />\n          )}\n          <FormSearchableDropdown\n            label={getMessage('documents.document.assignedTo')}\n            className=\"mt-4 w-full\"\n            id=\"assigneeId\"\n            query={useGetEmployeesQuery}\n            ariaLabel={getMessage('form.ariaLabel.realizer')}\n          />\n        </section>\n        <div className=\"col-span-12 col-start-1\">\n          <Button type=\"submit\" className=\"mt-6\">{getMessage('save')}</Button>\n        </div>\n      </form>\n    </FormProvider>\n  );\n};\n\nexport default DocumentForm;\n", "import * as React from 'react';\nimport useMessages from '../../../hooks/useMessages';\nimport { usePermissions } from '../../../hooks/usePermissions';\nimport { useGetDocumentsCategoriesQuery } from '../../../api/appApi';\nimport Layout from '../../../components/Layout/Layout';\nimport ParametersSidebar from '../ParametersSidebar';\nimport PageHeader from '../../../components/Layout/PageHeader';\nimport ContentWrapper from '../../../components/ContentWrapper/ContentWrapper';\nimport CategoriesTable from '../CategoryTable/CategoriesTable';\n\nconst DocumentsParametersPage = () => {\n  const getMessage = useMessages();\n  const { checkModuleEnabled } = usePermissions();\n  const { data: documentCategories } = useGetDocumentsCategoriesQuery();\n\n  checkModuleEnabled('documents');\n\n  return (\n    <Layout currentPage=\"parameters\">\n      <div className=\"flex flex-grow h-full\">\n        <ParametersSidebar selectedPage=\"documentsParameters\" />\n        <div className=\"flex flex-col flex-grow\">\n          <PageHeader currentPage=\"parameters\" pageTitle={getMessage('navigation.parameters.documents')} />\n          <ContentWrapper>\n            <CategoriesTable categoryType=\"document\" categories={documentCategories || []} />\n          </ContentWrapper>\n        </div>\n      </div>\n    </Layout>\n  );\n};\n\nexport default DocumentsParametersPage;\n", "/* eslint-disable react/jsx-props-no-spreading */\nimport * as React from 'react';\nimport { FormProvider, useForm } from 'react-hook-form';\nimport { useState, useEffect } from 'react';\nimport { useNavigate } from 'react-router';\nimport { useGetCompanySettingsQuery, usePostChangePasswordMutation } from '../../api/appApi';\nimport { FormInput } from '../../components/FormInputs';\nimport { MyNewPasswordData } from '../../api/modules/user/userTypes';\nimport useMessages from '../../hooks/useMessages';\nimport { translateMyPasswordToApi } from '../../api/modules/user/userTranslator';\nimport { InputError } from '../../components/FormInputs/InputLabel';\nimport Card from '../../components/Card/Card';\nimport Button from '../../components/Button/Button';\nimport { PASSWORD_REGEX } from '../../../utils/consts';\n\nconst PasswordChangeRequired = () => {\n  const getMessage = useMessages();\n  const { isSuccess: companySettingsFetched } = useGetCompanySettingsQuery();\n  const [postChangePassword, result] = usePostChangePasswordMutation();\n  const methods = useForm<MyNewPasswordData>({ mode: 'onTouched' });\n  const [backendErrors, setBackendErrors] = useState([] as string[]);\n  const navigate = useNavigate();\n\n  const onSubmit = (data: MyNewPasswordData) => {\n    postChangePassword(translateMyPasswordToApi(data));\n  };\n\n  useEffect(() => {\n    if (companySettingsFetched) {\n      navigate('/');\n    }\n    if (result.status === 'fulfilled') {\n      setBackendErrors([]);\n      methods.setValue('oldPassword', '');\n      methods.setValue('newPassword', '');\n      methods.setValue('confirmNewPassword', '');\n      navigate('/');\n    } else if (result.status === 'rejected') {\n      // @ts-ignore\n      const errors = result.error?.data?.errors || [];\n      setBackendErrors(Array.isArray(errors) ? errors : [errors]);\n    }\n  }, [result, companySettingsFetched]);\n\n  if (companySettingsFetched) return null;\n\n  return (\n    <Card className=\"w-full md:w-1/2 mx-auto \">\n      <FormProvider {...methods}>\n        <h2 className=\"border-b w-full pb-8 text-center text-header-sm\">{getMessage('profile.user.changePassword.passwordChangeRequired')}</h2>\n        <form\n          onSubmit={methods.handleSubmit(onSubmit)}\n          className=\"flex flex-col my-7 items-center\"\n        >\n          <FormInput\n            type=\"password\"\n            className=\"mobile:w-full w-2/3\"\n            //inputClassName=\"w-full\"\n            id=\"oldPassword\"\n            label={getMessage('profile.user.changePassword.oldPassword')}\n            options={{ required: getMessage('profile.user.changePassword.oldPassword.error.required') }}\n          />\n          <FormInput\n            type=\"password\"\n            className=\"mobile:w-full w-2/3\"\n            //inputClassName=\"w-full\"\n            id=\"newPassword\"\n            label={getMessage('profile.user.changePassword.newPassword')}\n            options={{\n              required: getMessage('profile.user.changePassword.newPassword.error.required'),\n              pattern: {\n                value: PASSWORD_REGEX,\n                message: getMessage('profile.user.changePassword.error.newPassword.pattern'),\n              },\n            }}\n          />\n          <FormInput\n            type=\"password\"\n            className=\"mt-4 mobile:w-full w-2/3\"\n            //inputClassName=\"w-full\"\n            id=\"confirmNewPassword\"\n            label={getMessage('profile.user.changePassword.confirmNewPassword')}\n            options={{\n              required: getMessage('profile.user.changePassword.confirmNewPassword.error.required'),\n              pattern: {\n                value: PASSWORD_REGEX,\n                message: getMessage('profile.user.changePassword.error.newPassword.pattern'),\n              },\n            }}\n          />\n          {backendErrors && backendErrors.map((error) => (\n            <InputError key={error} message={error} />\n          ))}\n          <Button type=\"submit\" className=\"mt-8\">{getMessage('confirm')}</Button>\n        </form>\n      </FormProvider>\n    </Card>\n  );\n};\n\nexport default PasswordChangeRequired;\n", "import * as React from 'react';\nimport { useMemo, useState } from 'react';\nimport { useNavigate } from 'react-router';\nimport useMessages from '../../hooks/useMessages';\nimport PageHeader from '../../components/Layout/PageHeader';\nimport { usePermissions } from '../../hooks/usePermissions';\nimport Tabs, { TabElement } from '../../components/Tabs/Tabs';\nimport Button from '../../components/Button/Button';\nimport { useAppSelector } from '../../hooks/reduxHooks';\nimport ContentWrapper from '../../components/ContentWrapper/ContentWrapper';\nimport NotificationsList from './NotificationsList/NotificationsList';\nimport Layout from '../../components/Layout/Layout';\nimport FiltersIcon from '../../icons/filters.svg';\nimport PlusIcon from '../../icons/plus.svg';\n\n\nconst NotificationsPage = ({}) => {\n  const getMessage = useMessages();\n  //const navigate = useNavigate();\n  const { checkPermission, hasPermission, hasRoleType } = usePermissions();\n  //const hasFilterSet = useAppSelector((state) => !!state.app.filters.find((filter) => filter.id === 'notificationsList'));\n  //const [filtersOpen, setFiltersOpen] = useState(hasFilterSet);\n\n  const tabs: TabElement[] = useMemo(() => {\n    if (hasPermission('notifications_list')) {\n      return [\n        {\n          label: getMessage('tabs.notifications.all'),\n          path: '/powiadomienia',\n        }\n      ];\n    }\n\n    return [];\n  }, [hasPermission]);\n\n  checkPermission('notifications_list');\n\n  return (\n    <Layout currentPage=\"notifications\">\n      <PageHeader pageTitle={getMessage('navigation.notifications')} currentPage=\"notifications\">\n\n      </PageHeader>\n\n      <ContentWrapper>\n        <NotificationsList />\n      </ContentWrapper>\n    </Layout>\n  );\n};\n\nexport default NotificationsPage;\n", "import * as React from 'react';\nimport { useGetNotificationsQuery, usePostMarkReadNotificationMutation } from '../../../api/appApi';\nimport PaginationControls from '../../../components/Table/PaginationControls';\nimport usePagination from '../../../hooks/usePagination';\nimport useSortParams from '../../../hooks/useSortParams';\nimport { useMediaQuery } from 'react-responsive';\nimport { md } from '../../../../utils/breakpoints';\nimport { NotificationData } from '../../../api/modules/notifications/notificationsTypes';\nimport NotificationsTableDesktop from './NotificationsTableDesktop';\nimport NotificationsTableMobile from './NotificationsTableMobile';\n\n\nconst NotificationsList = () => {\n  const [selectedPage, setSelectedPage] = usePagination('notificationsList');\n  const { sortParamsValues } = useSortParams('notificationsList');\n  const { data } = useGetNotificationsQuery({\n    ...sortParamsValues,\n    //   ...filters,\n    page: selectedPage.toString(),\n  });\n\n  const notificationsData = data?.notifications as NotificationData[] || [] as NotificationData[];\n  const isTabletOrDesktop = useMediaQuery({ query: `(min-width: ${md})` });\n  \n  return (\n    <>\n      {isTabletOrDesktop ? (\n        <NotificationsTableDesktop notifications={notificationsData} />\n      ) : <NotificationsTableMobile notifications={notificationsData} />}\n\n      {data?.metadata && (\n        <PaginationControls\n          className=\"col-span-full\"\n          selectedPage={selectedPage}\n          setSelectedPage={setSelectedPage}\n          paginationMetadata={data.metadata}\n        />\n      )}\n    </>\n  );\n};\n\nexport default NotificationsList;\n", "import * as React from 'react';\nimport { format } from 'date-fns';\nimport { Link } from 'react-router-dom';\n\nimport useMessages from '../../../hooks/useMessages';\nimport Table, {\n    TableHeader, TableHeaderRow, TableHeaderCell, TableBody, TableBodyRow, TableBodyCell,\n} from '../../../components/Table/Table';\nimport Chip from '../../../components/Chip/Chip';\nimport { TableId, saveSelectedNotificationId } from '../../../store/appSlice';\nimport TableBodyPlaceholder from '../../../components/Table/TableBodyPlaceholder';\nimport { useAppDispatch, useAppSelector } from '../../../hooks/reduxHooks';\nimport { NotificationData } from '../../../api/modules/notifications/notificationsTypes';\nimport Button from '../../../components/Button/Button';\nimport { usePostMarkReadNotificationMutation, usePostMarkReadAllNotificationMutation, useDeleteNotificationMutation } from '../../../api/appApi';\n\n\n\ninterface Props {\n    notifications: NotificationData[]\n}\n\nconst NotificationsTableDesktop = ({ notifications }: Props) => {\n    const selectedNotificationsIds = useAppSelector((state) => state.app.selectedNotificationsIds);\n    const dispatch = useAppDispatch();\n    const getMessage = useMessages();\n    const [markReadNotification] = usePostMarkReadNotificationMutation();\n    const [markReadAllNotification] = usePostMarkReadAllNotificationMutation();\n    const [deleteNotification] = useDeleteNotificationMutation();\n\n\n\n    const handleChecked = (id: string) => {\n        dispatch(saveSelectedNotificationId({ id }));\n    };\n\n\n    const handleClick = () => (\n        markReadNotification({ notification_ids: selectedNotificationsIds })\n    );\n\n    const handleDeleteClick = () => (\n        deleteNotification({ notification_ids: selectedNotificationsIds })\n    );\n\n    const handleAllClick = () => (\n        markReadAllNotification()\n    );\n\n    const handleSingleClick = (id: string) => {\n        markReadNotification({ notification_ids: [id] })\n    };\n\n    return (\n        <>\n            <div className='flex flex-row'>\n            <Button\n                    className='mr-4'\n                    onClick={handleDeleteClick}\n                >\n                    {getMessage('notifications.notification.delete')}\n                </Button>\n                <Button\n                    className='mr-4'\n                    onClick={handleClick}\n                >\n                    {getMessage('notifications.notification.markRead')}\n                </Button>\n                <Button\n                    onClick={handleAllClick}\n                >\n                    {getMessage('notifications.notification.markAllRead')}\n                </Button>\n            </div>\n            <Table className=\"col-span-full px-0 py-0 table-fixed whitespace-nowrap overflow-auto overscroll-none !p-0\">\n                <TableHeader className=\"sticky top-0 z-20 bg-background-white border-none shadow-main shadow-sm\">\n                    <TableHeaderRow className=\"[&>*:nth-child(2)]:pl-8 [&>*:last-child]:pr-8\">\n                        <TableHeaderCell className=\"sticky top-0 left-0 pt-8 bg-main \" />\n                        <TableHeaderCell className=\"pt-8 pb-4 pl-8\">{getMessage('notifications.notification.message')}</TableHeaderCell>\n                        <TableHeaderCell className=\"pt-8 pb-4 pl-8\" id=\"created_at\" tableName={'notificationsList' as TableId}>{getMessage('notifications.notification.createdAt')}</TableHeaderCell>\n                    </TableHeaderRow>\n                </TableHeader>\n                <TableBody>\n                    {notifications.length === 0\n                        && (\n                            <TableBodyPlaceholder />\n                        )}\n\n                    {notifications.map((notification) =>\n                    (\n                        <TableBodyRow key={notification.id} className=\"relative border-none odd:bg-light-100 text-typography-black [&>*:nth-child(2)]:pl-8 [&>*:last-child]:pr-8\">\n                            <TableHeaderCell className=\"sticky left-0 z-15 m-10 pl-0 !pr-0 pt-0 bg-main border-main w-1\">\n                                <label htmlFor={notification.id} className=\"hover:cursor-pointer\">\n                                    <div className=\"text-[0px] h-0\">{getMessage('tickets.ticket.checkbox.label')}</div>\n                                    <input\n                                        className=\"m-4\"\n                                        type=\"checkbox\"\n                                        checked={selectedNotificationsIds.includes(notification.id)}\n                                        onChange={() => handleChecked(notification.id)}\n                                        id={notification.id}\n                                    />\n                                </label>\n                            </TableHeaderCell>\n                            <TableBodyCell>\n                                <Link to={`${notification.url}`} onClick={() => handleSingleClick(notification.id)}>\n                                  <span className={notification.read ? \"font-normal\" : \"font-bold\"}>{notification.message}</span>\n                                </Link>\n                            </TableBodyCell>\n                            <TableBodyCell>\n                                <Chip className=\"w-fit\" chipStyle='primary'>\n                                    {format(new Date(notification.createdAt), 'HH:mm dd-MM-yyyy')}\n                                </Chip>\n                            </TableBodyCell>\n                        </TableBodyRow>\n                    ))}\n                </TableBody>\n            </Table>\n        </>\n    );\n};\n\nexport default NotificationsTableDesktop;\n", "import * as React from 'react';\nimport { format } from 'date-fns';\nimport { Link } from 'react-router-dom';\n\nimport useMessages from '../../../hooks/useMessages';\nimport { TableBodyCell } from './../../../components/Table/Table';\nimport ResponsiveTable, { ResponsiveTableHeader, ResponsiveTableBody, ResponsiveTableBodyRow } from './../../../components/Table/ResponsiveTable';\n\nimport Chip from '../../../components/Chip/Chip';\nimport { TableId, saveSelectedNotificationId } from '../../../store/appSlice';\nimport TableBodyPlaceholder from '../../../components/Table/TableBodyPlaceholder';\nimport { NotificationData } from '../../../api/modules/notifications/notificationsTypes';\nimport Button from '../../../components/Button/Button';\nimport { usePostMarkReadNotificationMutation, usePostMarkReadAllNotificationMutation } from '../../../api/appApi';\n\n\n\ninterface Props {\n  notifications: NotificationData[]\n}\n\nconst NotificationsTableMobile = ({ notifications }: Props) => {\n  const getMessage = useMessages();\n  const [markReadNotification] = usePostMarkReadNotificationMutation();\n  const [markReadAllNotification] = usePostMarkReadAllNotificationMutation();\n\n  const handleAllClick = () => (\n    markReadAllNotification()\n  );\n\n  const handleSingleClick = (id: string) => {\n    markReadNotification({ notification_ids: [id] })\n  };\n\n  const ids = notifications?.map(({ id }) => id);\n\n  const columnLabels = [\n    { label: 'notifications.notification.message' },\n    { label: 'notifications.notification.createdAt' },\n  ];\n\n  return (\n    <>\n      <div className='flex flex-col mb-2'>\n        <Button\n          onClick={handleAllClick}\n        >\n          {getMessage('notifications.notification.markAllRead')}\n        </Button>\n      </div>\n      <ResponsiveTable className=\"col-span-full md:mb-0\">\n        {notifications.length === 0 ? <TableBodyPlaceholder /> : (\n          <>\n            <ResponsiveTableHeader ids={ids} columnLabels={columnLabels} tableName={'ticketsList' as TableId} />\n            <ResponsiveTableBody>\n              {notifications && notifications?.map(({\n                id, message, createdAt, url\n              }) => (\n                <ResponsiveTableBodyRow key={id} className=\"border-b last:border-b-0 border-separate font-medium\">\n                  <TableBodyCell className='whitespace-normal'>\n                    <Link to={`${url}`} onClick={() => handleSingleClick(id)}>\n                      {message}\n                    </Link>\n                  </TableBodyCell>\n                  <TableBodyCell>\n                    <Chip chipStyle={status === 'unread' ? 'gray' : 'ghost'} className=\"w-fit\">\n                      {format(new Date(createdAt), 'dd-MM-yyyy')}\n                    </Chip>\n                  </TableBodyCell>\n                </ResponsiveTableBodyRow>\n              ))}\n            </ResponsiveTableBody>\n          </>\n        )}\n      </ResponsiveTable>\n\n    </>\n  );\n};\n\nexport default NotificationsTableMobile;\n", "/* eslint-disable quote-props */\nconst messages = {\n  'navigation.header': 'Nazwa Sp\u00F3\u0142dzielni',\n  'navigation.dashboard': 'Strona G\u0142\u00F3wna',\n  'navigation.settlements': 'Rozrachunki',\n  'navigation.settlements.payments': 'P\u0142atno\u015Bci',\n  'navigation.settlements.balance': 'Analiza salda',\n  'navigation.settlements.history': 'Historia p\u0142atno\u015Bci',\n  'navigation.local': 'Sprawy Lokalu',\n  'navigation.local.meters': 'Liczniki',\n  'navigation.local.peopleCount': 'Liczba os\u00F3b',\n  'navigation.announcements': 'Aktualno\u015Bci',\n  'navigation.notifications': 'Powiadomienia',\n  'navigation.tickets': 'Zg\u0142oszenia',\n  'navigation.tasks': 'Zadania',\n  'navigation.documents': 'Dokumenty',\n  'navigation.documents_in': 'Przychodz\u0105ce',\n  'navigation.documents_out': 'Wychodz\u0105ce',\n  'navigation.documents_ksef': 'Faktury KSeF',\n  'navigation.resolutions': 'Uchwa\u0142y',\n  'navigation.profile': 'Profil',\n  'navigation.users': 'U\u017Cytkownicy',\n  'navigation.roles': 'Role',\n  'navigation.parameters': 'Parametry',\n  'navigation.parameters.statuses': 'Statusy',\n  'navigation.parameters.journals': 'Dzienniki',\n  'navigation.parameters.ksefJournals': 'Dzienniki KSeF',\n  'navigation.parameters.tickets': 'Zg\u0142oszenia',\n  'navigation.parameters.tasks': 'Zadania',\n  'navigation.parameters.documents': 'Dokumenty',\n  'navigation.allVenues': 'Wszystkie',\n  'navigation.settings': 'Ustawienia',\n  'navigation.version': 'PRO Mieszkaniec, wersja',\n  'navigation.tenantlessVersion': 'PRO Obieg, wersja',\n  'navigation.probit': 'Probit sp. z o.o.',\n\n  'tabs.announcements.all': 'Wszystkie',\n  'tabs.announcements.documents': 'Dokumenty',\n  'tabs.announcements.statements': 'Komunikaty',\n  'tabs.announcements.notices': 'Og\u0142oszenia',\n  'tabs.announcements.archived': 'Archiwum',\n  'tabs.notifications.all' : 'Powiadomienia',\n  'tabs.tickets.mine': 'Moje',\n  'tabs.tickets.all': 'Wszystkie',\n  'tabs.tickets.unassigned': 'Nieprzypisane',\n  'tabs.tickets.open': 'Otwarte',\n  'tabs.tickets.mineInProgress': 'Moje w realizacji',  \n  'tabs.tickets.createdByMe': 'Moje',\n\n\n  'tabs.settings.mailServerConfig': 'Konfiguracja serwera poczty',\n  'tabs.settings.companyTaxDetails': 'Dane podatkowe podmiotu',\n  'tabs.settings.companyDetails': 'Dane podmiotu',\n  'tabs.settings.notificationSetting': 'Konfiguracja powiadomie\u0144',\n\n  'logout': 'Wyloguj',\n  'save': 'Zapisz',\n  'saved': 'Zapisany',\n  'send': 'Wy\u015Blij',\n  'cancel': 'Anuluj',\n  'confirm': 'Potwierdzam',\n  'open': 'Otw\u00F3rz',\n  'close': 'Zamknij',\n  'remove': 'Usu\u0144',\n  'goBack': 'Powr\u00F3t',\n  'filters': 'Filtry',\n  'reset': 'Zresetuj',\n  'choose': 'Wybierz',\n  'currency': 'z\u0142',\n  'noData': 'Brak danych',\n  'noSearchResults': 'Brak wynik\u00F3w spe\u0142niaj\u0105cych kryteria wyszukiwania',\n  'filters.clean': 'Wyczy\u015B\u0107',\n  'filters.choose': 'Wybierz',\n  'filters.search': 'Szukaj...',\n  'filters.noResults': 'Brak wynik\u00F3w spe\u0142niaj\u0105cych kryteria wyszukiwania',\n  'table.customize': 'Konfiguruj',\n  'sendResponse': 'Wy\u015Blij odpowied\u017A',\n  'opensInNewTab': 'za\u0142\u0105cznik otwiera si\u0119 w nowej zak\u0142adce',\n  'download': 'Pobierz za\u0142\u0105cznik {filename}',\n  'more': 'Zobacz szczeg\u00F3\u0142y',\n  'menu.ariaLabel': 'Otw\u00F3rz menu nawigacji',\n\n  'form.phone.error.pattern': 'Prosz\u0119 poda\u0107 prawid\u0142owy numer telefonu - wy\u0142\u0105cznie cyfry',\n  'form.email.error.pattern': 'Prosz\u0119 poda\u0107 prawid\u0142owy adres email - musi zawiera\u0107 znak @',\n  'form.postalCode.error.pattern': 'Prosz\u0119 poda\u0107 kod pocztowy w formacie XX-XXX, np. 02-584',\n  'form.success': 'Dane zosta\u0142y zaktualizowane',\n  'form.error': 'Wyst\u0105pi\u0142 b\u0142\u0105d i dane nie zosta\u0142y zapisane. Spr\u00F3buj ponownie p\u00F3\u017Aniej',\n  'form.ariaLabel.realizer': 'Wyszukaj osob\u0119 realizuj\u0105c\u0105',\n  'form.ariaLabel.employees': 'Wyszukaj pracownik\u00F3w',\n  'form.ariaLabel.hoa': 'Wyszukaj wsp\u00F3lnoty',\n  'form.ariaLabel.estates': 'Wyszukaj osiedla',\n  'form.ariaLabel.buildings': 'Wyszukaj budynki',\n  'form.ariaLabel.tenants': 'Wyszukaj lokator\u00F3w',\n  'form.ariaLabel.roles': 'Wyszukaj role',\n  'form.name.error.tooLong': 'Nazwa jest zbyt d\u0142uga - mo\u017Ce mie\u0107 maksymalnie {maxLength} znaki',\n\n  'dashboard.header': 'Witaj, {username}',\n  'dashboard.widget.settlements.balance': 'Saldo',\n  'dashboard.widget.settlements.debit': 'Zaleg\u0142o\u015Bci do zap\u0142aty:',\n  'dashboard.widget.settlements.credit': 'Nadp\u0142ata:',\n  'dashboard.widget.settlements.allVenues': 'Wszystkie lokale',\n\n  'dashboard.widget.resolutions.allResolutions': 'Wszystkie uchwa\u0142y',\n  'dashboard.widget.resolutions.activeVotings': 'Aktywne g\u0142osowania',\n  'dashboard.widget.resolutions.noActiveVotings': 'Brak aktywnych g\u0142osowa\u0144',\n  'dashboard.widget.meters.display': 'wy\u015Bwietl',\n  'dashboard.widget.meters.measurementRequired': '{metersNumber} {metersNumber, plural, one {licznik} few {liczniki} other {licznik\u00F3w}} do odczytu - ',\n  'dashboard.widget.tasks.inProgress': 'Zadania w toku ({number})',\n  'dashboard.widget.tickets.inProgress': 'Zg\u0142oszenia ({number})',\n  'dashboard.widget.documents': 'Dokumenty ({number})',\n  'dashboard.widget.announcements': 'Aktualno\u015Bci ({number})',\n  'dashboard.widget.announcements.addAnnouncement': 'Dodaj aktualno\u015B\u0107 +',\n  'dashboard.widget.documents.addDocument': 'Dodaj dokument +',\n\n\n  'settlements.payments': 'P\u0142atno\u015Bci',\n  'settlements.payments.header.title': 'Tytu\u0142',\n  'settlements.payments.header.bankAccount': 'Nr konta',\n  'settlements.payments.header.value': 'Do zap\u0142aty',\n  'settlements.payments.header.makePayment': 'Wykonaj p\u0142atno\u015B\u0107',\n  'settlements.payments.pay': 'Zap\u0142a\u0107',\n  'settlements.payment.inProgress': 'Oczekiwanie na realizacj\u0119 p\u0142atno\u015Bci',\n  'settlements.payment.success': 'P\u0142atno\u015B\u0107 zrealizowana pomy\u015Blnie',\n  'settlements.payment.error': 'Wyst\u0105pi\u0142 b\u0142\u0105d przy realizacji p\u0142atno\u015Bci',\n  'settlements.payments.make.error': 'Wyst\u0105pi\u0142 nieoczekiwany b\u0142\u0105d i nie uda\u0142o si\u0119 wykona\u0107 p\u0142atno\u015Bci. Spr\u00F3buj ponownie p\u00F3\u017Aniej lub skontaktuj si\u0119 z administratorem strony',\n  'settlements.payments.paid': 'Zap\u0142acono',\n  'settlements.payments.paymentInProgress': 'W toku',\n  'settlements.payments.noOnlinePaymeny': 'Brak p\u0142atno\u015Bci online',\n  'settlements.payment.close': 'Zamknij',\n  'settlements.history': 'Historia p\u0142atno\u015Bci',\n  'settlements.history.column.bankAccount': 'Nr konta',\n  'settlements.history.column.title': 'Tytu\u0142',\n  'settlements.history.column.date': 'Data',\n  'settlements.history.column.amount': 'Zap\u0142acono',\n  'settlements.history.column.status': 'Status',\n  'settlements.history.column.status.pending': 'W toku',\n  'settlements.history.column.status.success': 'Op\u0142acone',\n  'settlements.history.column.status.failure': 'Odrzucone',\n  'settlements.history.filters.title': 'Tytu\u0142',\n  'settlements.history.filters.date': 'Data',\n  'settlements.history.filters.minValue': 'Minimalna kwota',\n  'settlements.history.filters.maxValue': 'Maksymalna kwota',\n  'settlements.history.filters.status': 'Status',\n  'settlements.history.noResults': 'Brak historii',\n\n  'settlements.balance': 'Analiza Salda',\n  'settlements.balance.all': 'Wszystkie lokale',\n  'settlements.balance.month': 'Miesi\u0105c',\n  'settlements.balance.debits': 'Obci\u0105\u017Cenia',\n  'settlements.balance.credits': 'Uznania',\n  'settlements.balance.balance': 'Saldo',\n  'settlements.balance.openingBalance': 'Bilans otwarcia',\n  'settlements.balance.sum': 'Razem',\n  'settlements.balance.chooseVenue': 'Prosz\u0119 wybra\u0107 lokal',\n  'settlements.balance.filters.venue': 'Lokal',\n  'settlements.balance.filters.year': 'Rok',\n  'settlements.balance.filters.title': 'Tytu\u0142',\n  'settlements.balance.filters.month': 'Miesi\u0105c',\n  'settlements.monthsBalance.title': 'Tytu\u0142',\n  'settlements.monthsBalance.bankAccount': 'Numer konta',\n  'settlements.monthsBalance.balance': 'Saldo',\n  'settlements.titleBalance.header.operation': 'Operacja',\n  'settlements.titleBalance.header.creationDate': 'Data powstania',\n  'settlements.titleBalance.header.paymentDate': 'Termin p\u0142atno\u015Bci',\n  'settlements.titleBalance.header.status': 'Status',\n  'settlements.titleBalance.header.status.open': 'Status - nie zaksi\u0119gowano',\n  'settlements.titleBalance.header.status.notOpened': 'Status - zaksi\u0119gowano',\n  'settlements.titleBalance.header.deposits': 'Obci\u0105\u017Cenia',\n  'settlements.titleBalance.header.credits': 'Uznania',\n  'settlements.titleBalance.header.balance': 'Saldo',\n  'settlements.titleBalance.item.header.invoiceNumber': 'Nr faktury',\n  'settlements.titleBalance.item.header.read': 'Odczytano',\n  'settlements.titleBalance.item.header.code': 'Kod',\n  'settlements.titleBalance.item.header.name': 'Nazwa',\n  'settlements.titleBalance.item.header.vat': 'Vat',\n  'settlements.titleBalance.item.header.count': 'Ilo\u015B\u0107',\n  'settlements.titleBalance.item.header.price': 'Cena',\n  'settlements.titleBalance.item.header.value': 'Warto\u015B\u0107',\n  'settlements.titleBalance.item.header.sum': 'Razem',\n  'settlements.titleBalance.noResults': 'W wybranym miesi\u0105cu brak dokument\u00F3w dla tytu\u0142u: {title}',\n  'settlements.venuesList.columns.tenantId': 'ID lokatora',\n  'settlements.venuesList.columns.name': 'Imi\u0119 i nazwisko',\n  'settlements.venuesList.columns.code': 'Kod lokalu',\n  'settlements.venuesList.columns.building': 'Budynek',\n  'settlements.venuesList.columns.address': 'Adres lokalu',\n  'settlements.venuesList.columns.city': 'Miejscowo\u015B\u0107',\n  'settlements.venuesList.columns.residencyDates': 'Data zasiedlenia',\n  'settlements.venuesList.columns.homeownerAssociation': 'Wsp\u00F3lnota',\n  'settlements.venuesList.columns.membership': 'Cz\u0142onkostwo',\n  'settlements.venuesList.member': 'Cz\u0142onek',\n  'settlements.venuesList.filters.status': 'Status zasiedlenia',\n  'settlements.venuesList.filters.status.resident': 'Aktywne',\n  'settlements.venuesList.filters.status.notResident': 'Nieaktywne',\n  'settlements.venuesList.filters.tenant': 'ID/Imi\u0119 i nazwisko',\n  'settlements.venuesList.filters.venue': 'Kod lokalu/budynek',\n  'settlements.venuesList.filters.residencyDate': 'Data zasiedlenia',\n  'settlements.venuesList.filters.homeownerAssociation': 'Kod/nazwa wsp\u00F3lnoty',\n  'settlements.venuesList.filters.membership': 'Cz\u0142onkostwo',\n  'settlements.venuesList.filters.membership.member': 'Cz\u0142onek',\n  'settlements.venuesList.filters.membership.notMember': 'Nie cz\u0142onek',\n  'settlements.venuesList.tabs.active': 'Obecne zasiedlenia',\n  'settlements.venuesList.tabs.all': 'Wszystkie',\n\n  'local.meters.type.cw': 'Ciep\u0142a woda',\n  'local.meters.type.zw': 'Zimna woda',\n  'local.meters.type.gas': 'Gaz',\n  'local.meters.type.prad': 'Pr\u0105d',\n  'local.meters.type.co': 'Centralne ogrzewanie',\n  'local.meters.type.unknown': 'Nieznany typ licznika',\n  'local.meters.noMeters': 'Brak licznik\u00F3w do uzupe\u0142nienia',\n  'local.meters.sent': 'Wys\u0142any',\n  'local.meters.unsent': 'Nie przes\u0142ano',\n  'local.meters.cannotSend': 'Brak mo\u017Cliwo\u015Bci przes\u0142ania stanu licznika',\n  'local.meters.error.minValue': 'Nie mo\u017Ce by\u0107 ujemny',\n  'local.meters.measurementSent': 'Odczyt przes\u0142any',\n  'local.meters.measurementSendingError': 'Wyst\u0105pi\u0142 b\u0142\u0105d przy przesy\u0142aniu odczytu',\n  'local.meters.measurementDisabledTooltip': 'Wszystkie pomiary musz\u0105 by\u0107 wype\u0142nione',\n  'local.meters.meters': 'Liczniki',\n  'local.meters.readings': 'Odczyty',\n  'local.meters.readingsHistory': 'Historia',\n  'local.meters.fillBefore': 'Podaj stany do:',\n  'local.meters.outdated': 'Czas na podanie odczytu min\u0105\u0142',\n  'local.meters.meter': 'Licznik',\n  'local.meters.newReading': 'Aktualny odczyt',\n  'local.meters.previousReading': 'Poprzedni odczyt',\n  'local.meters.reading': 'Odczyt',\n  'local.meters.timedOut': 'Nie przes\u0142ano',\n  'local.meters.history': 'Historia licznik\u00F3w',\n  'local.meters.location': 'Lokalizacja',\n  'local.meters.history.date': 'Data',\n  'local.meters.history.value': 'Stan licznika',\n  'local.meters.history.source': '\u0179r\u00F3d\u0142o danych',\n  'local.meters.history.noData': 'Brak odczyt\u00F3w',\n  'local.meters.filters.type': 'Typ',\n  'local.meters.filters.location': 'Lokalizacja',\n  'local.tenants.residency.selectVenueWarning': 'Nale\u017Cy wybra\u0107 lokal.',\n  'local.tenants.residency.currentTenantsNumber': 'Aktualna liczba os\u00F3b: {currentTenantsNumber}',\n  'local.tenants.residency.upcomingChange': 'Najbli\u017Csza zmiana od {validFrom}: {tenantsNumber} {tenantsNumber, plural, one {osoba} few {osoby} other {os\u00F3b}}.',\n  'local.tenants.residency.addNew': 'Dodaj nowe zg\u0142oszenie',\n  'local.tenants.residency.history': 'Historia zg\u0142osze\u0144',\n  'local.tenants.residency.noHistory': 'Brak historii do wy\u015Bwietlenia',\n  'local.tenants.residency.createdAt': 'Data zg\u0142oszenia',\n  'local.tenants.residency.fromWhen': 'Od kiedy',\n  'local.tenants.residency.number': 'Liczba',\n  'local.tenants.residency.status': 'Status',\n  'local.tenants.residency.tenantsNumber': 'Liczba os\u00F3b',\n  'local.tenants.residency.validFrom': 'Od kiedy obowi\u0105zuje zmiana',\n  'local.tenants.residency.save': 'Zapisz',\n  'local.tenants.residency.success': 'Dodano nowe zg\u0142oszenie',\n  'local.tenants.residency.error.required': 'Liczba os\u00F3b jest wymagana',\n  'local.tenants.residency.error.minZero': 'Nie mo\u017Ce by\u0107 mniejsza od 0',\n  'local.tenants.residency.error.maxVal': 'Nie mo\u017Ce by\u0107 wi\u0119ksza od 9999',\n  'local.profile.user': 'U\u017Cytkownik',\n  'local.profile.theme': 'Wygl\u0105d',\n  'local.profile.activityLog': 'Rejestr zdarze\u0144',\n  'local.profile.notificationSetting': 'Powiadomienia',\n  'local.tickets.ticketsList': 'Zg\u0142oszenia',\n  'local.tickets.newTicket': 'Nowe zg\u0142oszenie',\n\n  'meters.venuesList': 'Lista lokali',\n  'meters.venuesList.columns.tenantExternalId': 'ID Lokatora',\n  'meters.venuesList.columns.name': 'Imi\u0119 i nazwisko',\n  'meters.venuesList.columns.venueCode': 'Kod lokalu',\n  'meters.venuesList.columns.address': 'Adres lokalu',\n  'meters.venuesList.columns.building': 'Budynek',\n  'meters.venuesList.columns.city': 'Miejscowo\u015B\u0107',\n  'meters.venuesList.columns.residencyDates': 'Data zasiedlenia',\n  'meters.venuesList.columns.homeownerAssociation': 'Wsp\u00F3lnota',\n  'meters.venuesList.filters.status': 'Status',\n  'meters.venuesList.filters.status.measurementProvided': 'Odczytano',\n  'meters.venuesList.filters.status.measurementRequired': 'Do odczytu',\n  'meters.venuesList.filters.tenantNameID': 'ID/Imi\u0119 i nazwisko',\n  'meters.venuesList.filters.venueAddressCode': 'Kod lokalu/budynek',\n  'meters.venuesList.filters.homeownerAssoctiation': 'Kod/nazwa Wsp\u00F3lnoty',\n  'meters.metersList.info': 'Info',\n  'meters.metersList.fullname': 'Imi\u0119 i nazwisko',\n  'meters.metersList.id': 'ID',\n  'meters.metersList.building': 'Budynek',\n  'meters.metersList.venueCode': 'Kod lokalu',\n  'meters.metersList.residencyDates': 'Data zasiedlenia',\n  'meters.metersList.homeownerAssociation': 'Wsp\u00F3lnota',\n  'meters.metersList.unsent': 'Min\u0105\u0142 czas na podanie odczytu przez lokatora. Wprowad\u017A zaleg\u0142y stan licznika.',\n\n  'announcements.newAnnouncement': 'Tworzenie aktualno\u015Bci',\n  'announcements.notice.new': 'Tworzenie og\u0142oszenia',\n  'announcements.notice.form.title': 'Tytu\u0142',\n  'announcements.notice.form.description': 'Tre\u015B\u0107',\n  'announcements.notice.form.expirationDate': 'Data wyga\u015Bni\u0119cia',\n  'announcements.notice.form.receiversGroups': 'Grupy adresat\u00F3w',\n  'announcements.notice.form.homeownerAssociations': 'Wsp\u00F3lnoty',\n  'announcements.notice.form.employees': 'Pracownicy',\n  'announcements.notice.form.estates': 'Osiedla',\n  'announcements.notice.form.buildings': 'Budynki',\n  'announcements.notice.form.tenants': 'Lokatorzy',\n  'announcements.notice.form.roles': 'Role',\n  'announcements.notice.form.addGroup': 'Dodaj grup\u0119',\n  'announcements.notice.form.error.title.required': 'Tytu\u0142 jest wymagany',\n  'announcements.notice.form.error.title.maxLength': 'Tytu\u0142 nie mo\u017Ce by\u0107 d\u0142u\u017Cszy ni\u017C 150 znak\u00F3w',\n  'announcements.notice.form.error.description.required': 'Tre\u015B\u0107 jest wymagana',\n\n  'announcements.notice.edit': 'Edytuj',\n  'announcements.notice.edit.addAdditionalAttachments': 'Dodaj kolejne za\u0142\u0105czniki',\n  'announcements.notice.editNotice': 'Edytuj og\u0142oszenie',\n\n  'announcements.announcement': 'Aktualno\u015B\u0107',\n  'announcements.announcement.id': 'ID',\n  'announcements.announcement.date': 'Data',\n  'announcements.announcement.expires_at': 'Data wyga\u015Bni\u0119cia',\n  'announcements.announcement.createdAt': 'Data utworzenia',\n  'announcements.announcement.author': 'Autor',\n  'announcements.announcement.recipients': 'Odbiorcy',\n  'announcements.announcement.description': 'Tre\u015B\u0107',\n  'announcements.announcement.title': 'Tytu\u0142',\n  'announcements.announcement.placeholder': ' ',\n  'announcements.announcement.category': 'Kategoria',\n  'announcements.announcement.category.document': 'Dokument',\n  'announcements.announcement.category.statement': 'Komunikat',\n  'announcements.announcement.category.notice': 'Og\u0142oszenie',\n  'announcements.announcement.status.read': 'Przeczytane',\n  'announcements.announcement.status.unread': 'Nieprzeczytane',\n  'announcements.announcement.status.archived': 'Archiwum',\n  'announcements.announcement.archived': 'Zarchiwizuj',\n  'announcements.announcement.archivePopup.title': 'Czy napewno chcesz zarchiwizowa\u0107 og\u0142oszenie nr {announcementNumber}?',\n  'announcements.announcement.archivePopup.description': 'Archiwizacja og\u0142oszenia nie mo\u017Ce zosta\u0107 cofni\u0119ta',\n\n  'tickets.ticket.pageTitle': 'Zg\u0142oszenie #{number} - PRO Mieszkaniec',\n  'tickets.ticket.ticket': 'Zg\u0142oszenie',\n  'tickets.ticket.id': 'ID',\n  'tickets.ticket.describeProblem': 'Opisz sw\u00F3j problem',\n  'tickets.ticket.ticketNumber': 'ID',\n  'tickets.ticket.description': 'Opis',\n  'tickets.ticket.title': 'Tytu\u0142',\n  'tickets.ticket.addAttachment': 'Dodaj za\u0142\u0105cznik',\n  'tickets.ticket.addAttachmentDescription': 'Opisz',\n  'tickets.ticket.reportedAt': 'Data utworzenia',\n  'tickets.ticket.lastCommentAt': 'Ostatni komentarz',\n  'tickets.ticket.homeownerAssociation': 'Wsp\u00F3lnota',\n  'tickets.ticket.homeownerAssociationCode': 'Kod wsp\u00F3lnoty',\n  'tickets.ticket.tenant': 'Widoczne dla lokatora',\n  'tickets.ticket.homeownerAssociationName': 'Nazwa wsp\u00F3lnoty',\n  'tickets.ticket.venue': 'Lokal',\n  'tickets.ticket.venueAddress': 'Adres lokalu',\n  'tickets.ticket.venueCode': 'Kod lokalu',\n  'tickets.ticket.homeownerAssociationCodeName': 'Kod/nazwa wsp\u00F3lnoty',\n  'tickets.ticket.venueCodeAddress': 'Kod/adres lokalu',\n  'tickets.ticket.assignedTo': 'Realizuj\u0105cy',\n  'tickets.ticket.unAssigned': 'nieprzypisano',\n  'tickets.ticket.reporter': 'Zg\u0142osi\u0142',\n  'tickets.ticket.reporterCode': 'Kod zg\u0142aszaj\u0105cego',\n  'tickets.ticket.reporterName': 'Zg\u0142aszaj\u0105cy',\n  'tickets.ticket.realizerCode': 'Kod realizuj\u0105cego',\n  'tickets.ticket.realizer': 'Realizuj\u0105cy',\n  'tickets.ticket.category': 'Kategoria',\n  'tickets.ticket.reporterNameCode': 'Zg\u0142aszaj\u0105cy',\n  'tickets.ticket.realizerNameCode': 'Realizuj\u0105cy',\n  'tickets.ticket.status': 'Status',\n  'tickets.ticket.status.open': 'Otwarte',\n  'tickets.ticket.status.ongoing': 'W trakcie',\n  'tickets.ticket.status.completed': 'Wykonane',\n  'tickets.ticket.date': 'Data utworzenia',\n  'tickets.ticket.placeholder': 'Przycisk zobacz szczeg\u00F3\u0142y zg\u0142oszenia',\n  'tickets.ticket.ticketDetails': 'Zobacz szczeg\u00F3\u0142y zg\u0142oszenia',\n  'tickets.ticket.titleOrNumber': 'Tytu\u0142 lub numer',\n  'tickets.ticket.changesNotifier': 'Powiadom o zmianie e-mailem',\n  'tickets.ticket.checkbox.label': 'Zaznacz',\n  'tickets.ticket.error.attachment.biggerThan5mb': 'Za\u0142\u0105cznik nie mo\u017Ce by\u0107 wi\u0119kszy ni\u017C 5mb',\n  'tickets.ticket.error.attachment.wrongFileType': 'Akceptujemy tylko pliki jpg, png, pdf',\n  'tickets.ticket.error.title.required': 'Tytu\u0142 jest wymagany',\n  'tickets.ticket.error.venue.required': 'Lokal jest wymagany',\n  'tickets.ticket.error.title.maxLength': 'Tytu\u0142 nie mo\u017Ce by\u0107 d\u0142u\u017Cszy ni\u017C 150 znak\u00F3w',\n  'tickets.ticket.error.description.required': 'Opis jest wymagany',\n  'tickets.ticket.error.category.required': 'Kategoria jest wymagana',\n  'tickets.ticket.comments.discussion': 'Dyskusja',\n  'tickets.ticket.comments.discussionWithTenant': 'Dyskusja z lokatorem',\n  'tickets.ticket.comments.discussionWithEmployee': 'Dyskusja z pracownikiem',\n  'tickets.ticket.comments.me': 'Ja',\n  'tickets.ticket.comments.write': 'Napisz...',\n  'tickets.ticket.comments.comment': 'Wpisz komentarz',\n  'tickets.ticket.comments.tenantComment': 'Wpisz komentarz widoczny dla lokatora',\n  'tickets.ticket.comments.noComments': 'Napisz wiadomo\u015B\u0107, \u017Ceby rozpocz\u0105\u0107 dyskusj\u0119',\n  'tickets.ticket.comments.error.content.required': 'Komentarz nie mo\u017Ce by\u0107 pusty',\n  'tickets.ticket.relatedTasks': 'Powi\u0105zane {tasksCount} {taskLabel}',\n  'tickets.ticket.relatedTasks.one': 'zadanie',\n  'tickets.ticket.relatedTasks.few': 'zadania',\n  'tickets.ticket.relatedTasks.other': 'zada\u0144',\n\n  'tickets.ticket.addTask': 'Dodaj zadanie',\n  'tickets.ticket.changeTicketsStatus': 'Zmie\u0144 status dla wybranych zg\u0142osze\u0144',\n  'tickets.ticket.changeTicketsCategory': 'Zmie\u0144 kategori\u0119 dla wybranych zg\u0142osze\u0144',\n  'tickets.ticket.changeTicketsRealizer': 'Zmie\u0144 osob\u0119 realizuj\u0105c\u0105 dla wybranych zg\u0142osze\u0144',\n\n  'tickets.column.ticket_number': 'Numer',\n  'tickets.column.title': 'Tytu\u0142',\n  'tickets.column.status': 'Status',\n  'tickets.column.category': 'Kategoria',\n  'tickets.column.reported_at': 'Data utworzenia',\n  'tickets.column.last_comment_at': 'Data odpowiedzi',\n  'tickets.column.reporter': 'Zg\u0142aszaj\u0105cy',\n  'tickets.column.reporter_external_id': 'Kod zg\u0142aszaj\u0105cego',\n  'tickets.column.realizer': 'Realizuj\u0105cy',\n  'tickets.column.realizer_external_id': 'Kod realizuj\u0105cego',\n  'tickets.column.venue_address': 'Adres lokalu',\n  'tickets.column.venue_code': 'Kod lokalu',\n  'tickets.column.homeowner_association_name': 'Nazwa wsp\u00F3lnoty',\n  'tickets.column.homeowner_association_code': 'Kod wsp\u00F3lnoty',\n  'tickets.bulkAction.changeRealizer': 'Zmie\u0144 osob\u0119 realizuj\u0105c\u0105',\n  'tickets.bulkAction.changeCategory': 'Zmie\u0144 kategori\u0119',\n  'tickets.bulkAction.changeStatus': 'Zmie\u0144 status',\n\n  'tasks.pageTitle': 'Zadanie #{number} - PRO Mieszkaniec',\n  'tasks.header': 'Zadania',\n  'tasks.tabs.open': 'Moje w toku',\n  'tasks.tabs.unassigned': 'Nieprzypisane',\n  'tasks.tabs.all': 'Wszystkie zadania',\n  'tasks.tabs.mineInProgress': 'Moje w realizacji',  \n  'tasks.tabs.createdByMe': 'Moje',\n  'tasks.column.status': 'Status',\n  'tasks.column.creationDate': 'Data utworzenia',\n  'tasks.column.lastCommentDate': 'Ostatnia odpowied\u017A',\n  'tasks.column.number': 'Numer',\n  'tasks.column.title': 'Tytu\u0142',\n  'tasks.column.venueAddress': 'Adres lokalu',\n  'tasks.column.venueCode': 'Kod lokalu',\n  'tasks.column.homeownerAssociation': 'Nazwa wsp\u00F3lnoty',\n  'tasks.column.homeownersAssociationCode': 'Kod wsp\u00F3lnoty',\n  'tasks.column.category': 'Kategoria',\n  'tasks.column.reporterName': 'Zg\u0142aszaj\u0105cy',\n  'tasks.column.reporterCode': 'Kod zg\u0142aszaj\u0105cego',\n  'tasks.column.realizerCode': 'Kod realizuj\u0105cego',\n  'tasks.column.realizer': 'Realizuj\u0105cy',\n  'tasks.column.startDate': 'Data rozpocz\u0119cia',\n  'tasks.column.plannedStartDate': 'Data plan. rozpocz\u0119cia',\n  'tasks.column.endDate': 'Data zako\u0144czenia',\n  'tasks.column.plannedEndDate': 'Data plan. zako\u0144czenia',\n  'tasks.column.ticketNumber': 'Nr zg\u0142oszenia',\n  'tasks.column.documentNumber': 'Nr dokumentu',\n  'tasks.bulkAction.changeRealizer': 'Zmie\u0144 osob\u0119 realizuj\u0105c\u0105',\n  'tasks.bulkAction.changeCategory': 'Zmie\u0144 kategori\u0119',\n  'tasks.bulkAction.changeStatus': 'Zmie\u0144 status',\n  'tasks.column.placeholder': 'Przycisk zobacz szczeg\u00F3\u0142y zadania',\n  'tasks.task.status.open': 'Otwarte',\n  'tasks.task.status.ongoing': 'W trakcie',\n  'tasks.task.status.completed': 'Wykonane',\n  'tasks.filter.venueSearch': 'Kod/adres lokalu',\n  'tasks.filter.homeownersAssociationSearch': 'Kod/nazwa wsp\u00F3lnoty',\n  'tasks.filter.numberTitle': 'Numer/tytu\u0142',\n  'tasks.filter.creatorNameCode': 'Zg\u0142aszaj\u0105cy',\n  'tasks.filter.realizerNameCode': 'Realizuj\u0105cy',\n  'tasks.changeTasksRealizer.popUp.label': 'Zmie\u0144 osob\u0119 realizuj\u0105c\u0105 dla wybranych zada\u0144',\n  'tasks.changeTasksRealizer.popUp.or': 'lub',\n  'tasks.changeTasksRealizer.popUp.removeRealizer': 'Usu\u0144 osob\u0119 realizuj\u0105c\u0105 dla wybranych zada\u0144',\n  'tasks.changeTasksCategory': 'Zmie\u0144 kategori\u0119 dla wybranych zada\u0144',\n  'tasks.changeTasksStatus': 'Zmie\u0144 status dla wybranych zada\u0144',\n  'tasks.checkbox.label': 'Zaznacz',\n\n  'tasks.columnConfig.status': 'Status',\n  'tasks.columnConfig.created_at': 'Data utworzenia',\n  'tasks.columnConfig.last_comment_at': 'Data odpowiedzi',\n  'tasks.columnConfig.task_number': 'Numer',\n  'tasks.columnConfig.title': 'Tytu\u0142',\n  'tasks.columnConfig.venue_address': 'Adres lokalu',\n  'tasks.columnConfig.venue_code': 'Kod lokalu',\n  'tasks.columnConfig.homeowner_association_code': 'Kod wsp\u00F3lnoty',\n  'tasks.columnConfig.homeowner_association_name': 'Nazwa wsp\u00F3lnoty',\n  'tasks.columnConfig.category': 'Kategoria',\n  'tasks.columnConfig.creator': 'Zg\u0142aszaj\u0105cy',\n  'tasks.columnConfig.creator_external_id': 'Kod zg\u0142aszaj\u0105cego',\n  'tasks.columnConfig.realizer': 'Realizuj\u0105cy',\n  'tasks.columnConfig.realizer_external_id': 'Kod realizuj\u0105cego',\n  'tasks.columnConfig.estimated_start_time': 'Data plan. rozpocz\u0119cia',\n  'tasks.columnConfig.estimated_finish_time': 'Data plan. zako\u0144czenia',\n  'tasks.columnConfig.started_at': 'Data rozpocz\u0119cia',\n  'tasks.columnConfig.finished_at': 'Data zako\u0144czenia',\n  'tasks.columnConfig.document_number': 'Nr dokumentu',\n  'tasks.columnConfig.ticket_number': 'Nr zg\u0142oszenia',\n\n\n  'tasks.newTask': 'Nowe zadanie',\n  'tasks.newTask.taskToTicket': 'Zadanie do zg\u0142oszenia:',\n  'tasks.newTask.taskToDocument': 'Zadanie do dokumentu:',\n  'tasks.newTask.category': 'Kategoria',\n  'tasks.newTask.title': 'Tytu\u0142',\n  'tasks.newTask.description': 'Opis',\n  'tasks.newTask.status': 'Status',\n  'tasks.newTask.realizer': 'Realizuj\u0105cy',\n  'tasks.newTask.attachment.add': 'Dodaj za\u0142\u0105cznik',\n  'tasks.newTask.attachment.placeholder': 'Opisz...',\n  'tasks.newTask.tenant': 'Lokator',\n  'tasks.newTask.venue': 'Lokal',\n  'tasks.newTask.homeownerAssociation': 'Wsp\u00F3lnota',\n  'tasks.newTask.estimated_start_time': 'Data plan. rozpocz\u0119cia',\n  'tasks.newTask.estimated_finish_time': 'Data plan. zako\u0144czenia',\n  'tasks.newTask.started_at': 'Data rozpocz\u0119cia',\n  'tasks.newTask.finished_at': 'Data zako\u0144czenia',\n  'tasks.newTask.title.error.required': 'Tytu\u0142 jest wymagany.',\n  'tasks.newTask.title.error.maxLength': 'Tytu\u0142 nie mo\u017Ce by\u0107 d\u0142u\u017Cszy ni\u017C 150 znak\u00F3w',\n  'tasks.newTask.description.error.required': 'Opis jest wymagany.',\n  'tasks.newTask.category.error.required': 'Kategoria jest wymagana.',\n  'tasks.newTask.status.error.required': 'Status jest wymagany.',\n\n  'tasks.task': 'Zadanie',\n  'tasks.task.status': 'Status',\n  'tasks.task.category': 'Kategoria',\n  'tasks.task.realizer': 'Realizuj\u0105cy',\n  'tasks.task.startedAt': 'Data rozpocz\u0119cia',\n  'tasks.task.finishedAt': 'Data zako\u0144czenia',\n  'tasks.task.ticket': 'Zg\u0142oszenie',\n  'tasks.task.ticket.creator': 'Zg\u0142aszaj\u0105cy',\n  'tasks.task.ticket.homeownerAssociation': 'Wsp\u00F3lnota',\n  'tasks.task.ticket.venue': 'Lokal',\n  'tasks.task.comments.discussion': 'Dyskusja',\n  'tasks.task.taskDetails': 'Zobacz szczeg\u00F3\u0142y zadania',\n  'tasks.task.createdAt': 'Data utworzenia',\n  'tasks.task.estimatedStart.estimatedEnd': 'Planowana data rozpocz\u0119cia/zako\u0144czenia',\n  'tasks.task.goToTicket': 'Otw\u00F3rz zg\u0142oszenie nr {ticketNumber}',\n  'tasks.task.goToTask': 'Otw\u00F3rz zadanie numer {taskNumberTitle}',\n  'tasks.date.from': 'od',\n  'tasks.date.until': 'do',\n  'tasks.task.document': 'Dokument',\n  'tasks.task.document.creator': 'Autor',\n  'tasks.task.document.title': 'Tytu\u0142',\n  'tasks.task.document.journal': 'Dziennik',\n  'tasks.taskCommission.apiSubmit': 'Wy\u015Blij zlecenie do PortalPro',\n  'tasks.taskCommission.apiStatus': 'Od\u015Bwie\u017C status',\n  'tasks.taskCommission.jobTrackingUrl': 'Link do statusu',\n  'tasks.taskCommission.status.created': 'Utworzony w Portal Pro',\n  'tasks.taskCommission.status.in_progress': 'W trakcie wykonywania',\n  'tasks.taskCommission.status.canceled': 'Prace zosta\u0142y anulowane',\n  'tasks.taskCommission.status.failed': 'Nie uda\u0142o si\u0119\u00A0znale\u017A\u0107\u00A0wykonawcy',\n  'tasks.taskCommission.form.serviceId': 'Typ zlecenia',\n  \"tasks.taskCommission.form.description\": 'Opis',\n  \"tasks.taskCommission.form.streetAddress\": 'Ulica',\n  \"tasks.taskCommission.form.postalCode\": 'Kod pocztowy',\n  \"tasks.taskCommission.form.city\": 'Miasto',\n  \"tasks.taskCommission.form.deadline\": 'Oczekiwany koniec prac',\n  \"tasks.taskCommission.form.offerLimit\": 'Data wycofania zlecenia w PortalPro',\n  \"tasks.taskCommission.form.contactPhone\": 'Telefon kontaktowy',\n  \"tasks.taskCommission.form.contactEmail\": 'Email kontaktowy',\n  \"tasks.taskCommission.form.error.required\": 'Wymagane dla zlecenia',\n  \"tasks.taskCommission.form.submit\": 'Wy\u015Blij zlecenie',\n  \"tasks.taskCommission.form.close\": 'Zamknij bez wysy\u0142ania',\n\n  'documents.tabs.all': 'Wszystkie',\n  'documents.tabs.mine_in_progress': 'Moje do realizacji',\n  'documents.tabs.unassigned': 'Nieprzypisane',\n  'documents.tabs.created_by_me': 'Moje',\n\n  'documents.list.title': 'Dokumenty',\n  'documents.list.newDocument': 'Tworzenie dokumentu',\n  'documents.column.date': 'Data utworzenia',\n  'documents.column.title': 'Tytu\u0142',\n  'documents.column.description': 'Tre\u015B\u0107',\n  'documents.column.journal': 'Dziennik',\n  'documents.column.creator': 'Autor',\n  'documents.column.realizer': 'Realizuj\u0105cy',\n  'documents.column.documentNumber': 'Numer',\n  'documents.column.sender': 'Nadawca',\n  'documents.column.receiver': 'Odbiorca',\n  'documents.column.tenant': 'Lokator',\n  'documents.column.category': 'Kategoria',\n  'documents.column.status': 'Status',\n  'documents.filter.titleOrNumber': 'Tytu\u0142 lub numer',\n  'documents.filter.revoked': 'Stan dokumentu',\n  'documents.filter.revoked.revoked': 'Wycofane',\n  'documents.filter.revoked.valid': 'Obowi\u0105zuj\u0105ce',\n  'documents.document.checkbox.label': 'Zaznacz',\n  'documents.document.placeholder': 'Przycisk zobacz szczeg\u00F3\u0142y dokumentu',\n  'documents.document.documentDetails': 'Zobacz szczeg\u00F3\u0142y dokumentu',\n  'documents.newDocument': 'Tworzenie dokumentu',\n  'documents.document.title': 'Tytu\u0142',\n  'documents.document.journal': 'Dziennik',\n  'documents.document.documentNumber.auto': 'Numeracja automatyczna',\n  'documents.document.creator': 'Autor',\n  'documents.document.realizer': 'Realizuj\u0105cy',\n  'documents.document.documentNumber': 'Numer',\n  'documents.document.sender': 'Nadawca',\n  'documents.document.receiver': 'Odbiorca',\n  'documents.document.tenant': 'Widoczne dla lokatora',\n  'documents.document.category': 'Kategoria',\n  'documents.document.status': 'Status',\n  'documents.document.assignedTo': 'Realizuj\u0105cy',\n  'documents.document.description': 'Opis',\n  'documents.document.error.number.required': 'Numer jest wymagany',\n  'documents.document.error.journal.required': 'Dziennik jest wymagany',\n  'documents.document.error.status.required': 'Status jest wymagany',\n  'documents.document.error.attachment.biggerThan5mb': 'Za\u0142\u0105cznik nie mo\u017Ce by\u0107 wi\u0119kszy ni\u017C 5mb',\n  'documents.document.error.attachment.wrongFileType': 'Akceptujemy tylko pliki jpg, png, pdf',\n  'documents.document.error.title.required': 'Tytu\u0142 jest wymagany',\n  'documents.document.error.title.maxLength': 'Tytu\u0142 nie mo\u017Ce by\u0107 d\u0142u\u017Cszy ni\u017C 150 znak\u00F3w',\n  'documents.document.error.description.required': 'Opis jest wymagany',\n  'documents.document.error.category.required': 'Kategoria jest wymagana',\n  'documents.document.addAttachmentDescription': 'Opisz',\n  'documents.document.addAttachment': 'Dodaj za\u0142\u0105cznik',\n  'documents.document.header': 'Dokument',\n  'documents.document.discussion': 'Dyskusja',\n  'documents.document.info': 'Info',\n  'documents.document.revoke': 'Wycofaj',\n  'documents.document.revoked': 'Dokument wycofany',\n  'documents.document.revoked.error': 'Wyst\u0105pi\u0142 b\u0142\u0105d i dokument nie zosta\u0142 wycofany. Spr\u00F3buj ponownie p\u00F3\u017Aniej',\n  'documents.document.revokePopup.title': 'Czy napewno chcesz wycofa\u0107 dokument {documentNumber}',\n  'documents.document.revokePopup.description': 'Wycofanie dokumentu nie mo\u017Ce zosta\u0107 cofni\u0119te',\n  'documents.changeDocumentsRealizer.popUp.label': 'Zmie\u0144 osob\u0119 realizuj\u0105c\u0105 dla wybranych dokument\u00F3w',\n  'documents.changeDocumentsRealizer.popUp.or': 'lub',\n  'documents.changeDocumentsRealizer.popUp.removeRealizer': 'Usu\u0144 osob\u0119 realizuj\u0105c\u0105 dla wybranych dokument\u00F3w',\n  'documents.bulkAction.changeCategory': 'Zmie\u0144 kategori\u0119',\n  'documents.bulkAction.changeStatus': 'Zmie\u0144 status',\n  'documents.bulkAction.changeRealizer': 'Zmie\u0144 osob\u0119 realizuj\u0105c\u0105',\n  'documents.changeDocumentsRealizer': 'Zmie\u0144 osob\u0119 realizuj\u0105c\u0105 dla wybranych dokument\u00F3w',\n  'documents.changeDocumentsCategory': 'Zmie\u0144 kategori\u0119 dla wybranych dokument\u00F3w',\n  'documents.changeDocumentsStatus': 'Zmie\u0144 status dla wybranych dokument\u00F3w',\n  'documents.document.addTask': 'Dodaj zadanie',\n  'documents.document.relatedTasks': 'Powi\u0105zane {tasksCount} {taskLabel}',\n  'documents.document.relatedTasks.one': 'zadanie',\n  'documents.document.relatedTasks.few': 'zadania',\n  'documents.document.relatedTasks.other': 'zada\u0144',\n  'tasks.task.goToDocument': 'Otw\u00F3rz dokument nr {documentNumber}',\n\n  'documents.columnConfig.status': 'Status',\n  'documents.columnConfig.sender': 'Nadawca',\n  'documents.columnConfig.receiver': 'Odbiorca',\n  'documents.columnConfig.tenant': 'Lokator',\n  'documents.columnConfig.category': 'Kategoria',\n  'documents.columnConfig.creator': 'Autor',\n  'documents.columnConfig.realizer': 'Realizuj\u0105cy',\n  'documents.columnConfig.document_number': 'Numer',\n  'documents.columnConfig.created_at': 'Data utworzenia',\n  'documents.columnConfig.description': 'Tre\u015B\u0107',\n  'documents.columnConfig.journal': 'Dziennik',\n  'documents.columnConfig.title': 'Tytu\u0142',\n\n  'ksefInvoices.list.title': 'Faktury KSeF',\n  'ksefInvoices.column.invoiceNumber': 'Numer faktury',\n  'ksefInvoices.column.invoiceIssueDate': 'Data wystawienia',\n  'ksefInvoices.column.invoiceReceiptDate': 'Data otrzymania',\n  'ksefInvoices.column.ksefReceiptDate': 'Data wp\u0142ywu KSeF',\n  'ksefInvoices.column.deadline': 'Termin p\u0142atno\u015Bci',\n  'ksefInvoices.column.amount': 'Kwota',\n  'ksefInvoices.column.ksefExternalId': 'ID KSeF',\n  'ksefInvoices.column.description': 'Opis',\n  'ksefInvoices.column.journal': 'Dziennik',\n  'ksefInvoices.column.firm': 'Kontrahent',\n  'ksefInvoices.column.status': 'Status',\n  'ksefInvoices.column.realizer': 'Realizuj\u0105cy',\n  'ksefInvoices.column.meritDescription': 'Opis merytoryczny',\n  'ksefInvoices.column.accountingDescription': 'Opis ksi\u0119gowy',\n  'ksefInvoices.column.accountingDisposition': 'Dyspozycja ksi\u0119gowa',\n  'ksefInvoices.column.invoiceModule': 'Modu\u0142',\n  'ksefInvoices.accountingDisposition.pending': 'Oczekuje na decyzj\u0119',\n  'ksefInvoices.accountingDisposition.rejected': 'Odrzucone',\n  'ksefInvoices.accountingDisposition.approved': 'Wprowad\u017A do systemu ksi\u0119gowego',\n  'ksefInvoices.invoiceModule.FK': 'Finanse i ksi\u0119gowo\u015B\u0107',\n  'ksefInvoices.invoiceModule.FT': 'Fakturowanie',\n  'ksefInvoices.invoiceModule.ME': 'Media',\n  'ksefInvoices.invoiceModule.MG': 'Logistyka',\n  'ksefInvoices.filter.name': 'Nazwa / numer / ID KSeF',\n  'ksefInvoices.filter.noModule': 'Brak modu\u0142u',\n  'ksefInvoices.filter.amountFrom': 'Kwota od',\n  'ksefInvoices.filter.amountTo': 'Kwota do',\n  'ksefInvoices.invoice.checkbox.label': 'Zaznacz',\n  'ksefInvoices.bulkAction.changeStatus': 'Zmie\u0144 status',\n  'ksefInvoices.bulkAction.changeRealizer': 'Zmie\u0144 osob\u0119 realizuj\u0105c\u0105',\n  'ksefInvoices.changeInvoicesStatus': 'Zmie\u0144 status dla wybranych faktur KSeF',\n  'ksefInvoices.changeInvoicesRealizer': 'Zmie\u0144 osob\u0119 realizuj\u0105c\u0105 dla wybranych faktur KSeF',\n  'ksefInvoices.changeInvoicesRealizer.popUp.or': 'lub',\n  'ksefInvoices.changeInvoicesRealizer.popUp.removeRealizer': 'Usu\u0144 osob\u0119 realizuj\u0105c\u0105 dla wybranych faktur KSeF',\n  'ksefInvoices.invoice.header': 'Faktura KSeF',\n  'ksefInvoices.invoice.info': 'Informacje',\n  'ksefInvoices.invoice.externalId': 'ID zewn\u0119trzne',\n  'ksefInvoices.invoice.extensionType': 'Rozszerzenie',\n  'ksefInvoices.invoice.compressed': 'Skompresowana',\n  'ksefInvoices.invoice.compressed.yes': 'Tak',\n  'ksefInvoices.invoice.compressed.no': 'Nie',\n  'ksefInvoices.invoice.createdAt': 'Data utworzenia',\n  'ksefInvoices.invoice.updatedAt': 'Data aktualizacji',\n  'ksefInvoices.invoice.file': 'Podgl\u0105d faktury',\n  'ksefInvoices.invoice.detailsButton': 'Szczeg\u00F3\u0142y faktury KSeF',\n  'ksefInvoices.invoice.detailsAriaLabel': 'Zobacz szczeg\u00F3\u0142y faktury KSeF {invoiceNumber}',\n  'ksefInvoices.columnConfig.invoice_number': 'Numer faktury',\n  'ksefInvoices.columnConfig.invoice_issue_date': 'Data wystawienia',\n  'ksefInvoices.columnConfig.invoice_receipt_date': 'Data otrzymania',\n  'ksefInvoices.columnConfig.ksef_receipt_date': 'Data wp\u0142ywu KSeF',\n  'ksefInvoices.columnConfig.deadline': 'Termin p\u0142atno\u015Bci',\n  'ksefInvoices.columnConfig.amount': 'Kwota',\n  'ksefInvoices.columnConfig.ksef_external_id': 'ID KSeF',\n  'ksefInvoices.columnConfig.description': 'Opis',\n  'ksefInvoices.columnConfig.journal': 'Dziennik',\n  'ksefInvoices.columnConfig.firm': 'Kontrahent',\n  'ksefInvoices.columnConfig.status': 'Status',\n  'ksefInvoices.columnConfig.realizer': 'Realizuj\u0105cy',\n  'ksefInvoices.columnConfig.accounting_disposition': 'Dyspozycja ksi\u0119gowa',\n  'ksefInvoices.columnConfig.invoice_module': 'Modu\u0142',\n  'ksefInvoices.markdown.edit': 'Edytuj',\n\n\n\n\n\n  'resolutions.status.ongoing': 'Aktywne',\n  'resolutions.status.outvoted': 'Przyj\u0119to',\n  'resolutions.status.rejected': 'Odrzucono',\n  'resolutions.voted': 'Zag\u0142osowano: ',\n  'resolutions.voteUntil': 'G\u0142osowanie do:',\n  'resolutions.createdAt': 'Utworzono',\n  'resolutions.voting': 'G\u0142osowanie',\n  'resolutions.display': 'Zapoznaj si\u0119',\n  'resolutions.displayAriaLabel': 'Zapoznaj si\u0119 z uchwa\u0142\u0105 {title}',\n  'resolutions.resolution': 'Uchwa\u0142a',\n  'resolutions.resolution.votingActive': 'G\u0142osowanie otwarte',\n  'resolutions.resolution.createdAt': 'Data uchwa\u0142y: ',\n  'resolutions.resolution.voteUntil': 'Prosimy zag\u0142osowa\u0107 do: ',\n  'resolutions.resolution.attachmentsNotice': 'Zanim zag\u0142osujesz musisz zapozna\u0107 si\u0119 z tre\u015Bci\u0105 za\u0142\u0105cznik\u00F3w',\n  'resolutions.resolution.attachmentsAccepted': 'Zapoznano si\u0119 z tre\u015Bci\u0105 za\u0142\u0105cznik\u00F3w, przejd\u017A do g\u0142osowania',\n  'resolutions.resolution.next': 'Nast\u0119pny',\n  'resolutions.resolution.previous': 'Poprzedni',\n  'resolutions.resolution.acceptedContent': 'Zapoznano',\n  'resolutions.resolution.goToVoting': 'Przejd\u017A do g\u0142osowania',\n  'resolutions.resolution.vote': 'Zag\u0142osuj',\n  'resolutions.resolution.myVote': 'M\u00F3j g\u0142os',\n  'resolutions.resolution.voted': 'Zag\u0142osowano',\n  'resolutions.resolution.voteSubmitted': 'Dzi\u0119kujemy, Tw\u00F3j g\u0142os zosta\u0142 przes\u0142any',\n  'resolutions.resolution.voteOptions.agree': 'Za',\n  'resolutions.resolution.voteOptions.disagree': 'Przeciw',\n  'resolutions.resolution.voteOptions.abstain': 'Wstrzymuj\u0119 si\u0119',\n  'resolutions.resolutions.voting.error.required': 'Prosz\u0119 wybra\u0107 jedn\u0105 z powy\u017Cych opcji',\n  'resolutions.resolutions.voting.error.internalError': 'Wyst\u0105pi\u0142 b\u0142\u0105d wewn\u0119trzny i nie uda\u0142o si\u0119 zag\u0142osowa\u0107. Spr\u00F3buj p\u00F3\u017Aniej lub skontaktuj si\u0119 z administratorem.',\n  'resolutions.tooltipText': 'Oddane online / Do oddania online',\n  'resolutions.tabs.all': 'Wszystkie',\n  'resolutions.tabs.active': 'Aktywne',\n  'resolutions.tabs.closed': 'Zamkni\u0119te',\n  'resolutions.filters.title': 'Tytu\u0142',\n  'resolutions.filters.state': 'Stan g\u0142osowania',\n  'resolutions.filters.creationDate': 'Data utworzenia',\n  'resolutions.filters.voteDate': 'Termin g\u0142osowania',\n  'resolutions.filters.state.voted': 'Zag\u0142osowano',\n  'resolutions.filters.state.notVoted': 'Nie zag\u0142osowano',\n  'resolutions.filters.homeownerAssociationCodeName': 'Kod/nazwa wsp\u00F3lnoty',\n  'resolutions.filters.number': 'Numer',\n  'resolutions.column.homeownerAssociationCode': 'Kod/nazwa wsp\u00F3lnoty',\n  'resolutions.column.resolutionNumber': 'Numer uchwa\u0142y',\n  'resolutions.column.title': 'Tytu\u0142',\n  'resolutions.column.onlineVotes': 'G\u0142osy online',\n  'resolutions.column.createdAt': 'Data utworzenia',\n  'resolutions.column.votingDeadline': 'Termin g\u0142osowania',\n  'resolutions.column.status': 'Status',\n  'resolutions.votings.onlineVotesGiven': 'Oddano g\u0142os\u00F3w online: {pwiVotes}',\n  'resolutions.votings.column.tenantExternalId': 'Kod lokatora',\n  'resolutions.votings.column.tenantName': 'Imi\u0119 i nazwisko',\n  'resolutions.votings.column.dataSource': 'Spos\u00F3b g\u0142osowania',\n  'resolutions.votings.column.votedAt': 'Zag\u0142osowano',\n  'resolutions.votings.column.votedValue': 'G\u0142os',\n  'resolutions.votings.noVoteValue': 'Brak',\n  'resolutions.votings.agree': 'Za',\n  'resolutions.votings.disagree': 'Przeciw',\n  'resolutions.votings.abstain': 'Wstrzymano',\n  'resolutions.votings.filters.tenantExternalIdFullName': 'Kod/Imi\u0119 i nazwisko',\n  'resolutions.votings.filters.votingVia': 'Spos\u00F3b g\u0142osowania',\n  'resolutions.votings.filters.voteDate': 'Data zag\u0142osowania',\n  'resolutions.votings.filters.voteValue': 'G\u0142os',\n  'resolutions.votings.filters.votedOnline': 'online',\n  'resolutions.votings.filters.votedNotOnline': 'Inne',\n\n  'profile.user.id': 'Identyfikator',\n  'profile.user.name': 'Imi\u0119 i nazwisko lub nazwa firmy',\n  'profile.user.email': 'E-mail',\n  'profile.user.tenantEmail': 'E-mail w systemie Czynsze',\n  'profile.user.login': 'Login',\n  'profile.user.password': 'Has\u0142o',\n  'profile.user.phone': 'Telefon',\n  'profile.user.address': 'Adres korespondencyjny',\n  'profile.user.postalCode': 'Kod pocztowy',\n  'profile.user.city': 'Miasto',\n  'profile.user.group': 'Role U\u017Cytkownika',\n  'profile.user.agreement': 'Zgoda na otrzymywanie powiadomie\u0144 e-mail',\n  'profile.user.error.required': 'Nie mo\u017Ce by\u0107 puste',\n  'profile.user.success': 'Dane zosta\u0142y zaktualizowane',\n  'profile.user.changePassword': 'Zmie\u0144 has\u0142o',\n  'profile.user.changePassword.success': 'Has\u0142o zosta\u0142o zmienione',\n  'profile.user.changePassword.oldPassword': 'Podaj stare has\u0142o',\n  'profile.user.changePassword.newPassword': 'Podaj nowe has\u0142o',\n  'profile.user.changePassword.confirmNewPassword': 'Powt\u00F3rz nowe has\u0142o',\n  'profile.user.changePassword.oldPassword.error.required': 'Stare has\u0142o jest wymagane',\n  'profile.user.changePassword.newPassword.error.required': 'Nowe has\u0142o jest wymagane',\n  'profile.user.changePassword.confirmNewPassword.error.required': 'Nale\u017Cy powt\u00F3rzy\u0107 has\u0142o',\n  'profile.user.changePassword.error.newPassword.pattern': 'Nowe has\u0142o musi posiada\u0107 minimalnie 8 znak\u00F3w i zawiera\u0107 przynajmniej jedn\u0105 ma\u0142\u0105, jedn\u0105 wielk\u0105 liter\u0119, cyfr\u0119 i znak specjalny',\n  'profile.user.changePassword.error.changePassword.pattern': 'Powt\u00F3rzone has\u0142o musi posiada\u0107 minimalnie 8 znak\u00F3w i zawiera\u0107 przynajmniej jedn\u0105 ma\u0142\u0105, jedn\u0105 wielk\u0105 liter\u0119, cyfr\u0119 i znak specjalny',\n  'profile.user.changePassword.passwordChangeRequired': 'Zmie\u0144 has\u0142o aby zacz\u0105\u0107 korzysta\u0107 z PRO Mieszkaniec',\n  'profile.user.activityLog.date': 'Data',\n  'profile.user.activityLog.description': 'Opis',\n  'profile.user.activityLog.menuOption': 'Opcja menu',\n  'profile.user.activityLog.venue': 'Lokal',\n  'profile.user.activityLog.id': 'ID',\n  'profile.user.activityLog.fullName': 'Imi\u0119 i nazwisko',\n  'profile.user.activityLog.role': 'Rola',\n  'profile.user.activityLog.menuOption.resolutions': 'Uchwa\u0142y',\n  'profile.user.activityLog.menuOption.tasks': 'Zadania',\n  'profile.user.activityLog.menuOption.tickets': 'Zg\u0142oszenia',\n  'profile.user.activityLog.menuOption.authentication': 'Logowanie',\n  'profile.user.activityLog.menuOption.meters': 'Liczniki',\n  'profile.user.activityLog.menuOption.profiles': 'Profil',\n  'profile.user.activityLog.menuOption.residency_amendments': 'Zmiana liczby os\u00F3b',\n  'profile.user.activityLog.menuOption.settlements': 'P\u0142atno\u015Bci',\n  'profile.user.activityLog.menuOption.announcements': 'Aktualno\u015Bci',\n  'profile.settings.color': 'Kolor',\n  'profile.settings.notifications': 'Konfiguracja powiadomie\u0144',\n  'profile.settings.adminNotificationsExpl': 'Wy\u0142\u0105czenie w tym panelu nie pozwoli lokatorom lub pracownikom na otrzymywanie tych powiadomie\u0144',\n  'profile.settings.workerNotifications': 'Konfiguracja powiadomie\u0144 pracownik\u00F3w',\n  'profile.settings.tenantNotifications': 'Konfiguracja powiadomie\u0144 lokator\u00F3w',\n  'profile.settings.notifications.group': 'Grupa powiadomie\u0144',\n  'profile.settings.notifications.online': 'Powiadomienia w aplikacji',\n  'profile.settings.notifications.email': 'Email',\n  'profile.settings.notifications.announcements': 'Og\u0142oszenia',\n  'profile.settings.notifications.tickets': 'Moje zg\u0142oszenia',\n  'profile.settings.notifications.meters': 'Liczniki',\n  'profile.settings.notifications.debits': 'Rozrachunki-obci\u0105\u017Cenia',\n  'profile.settings.notifications.credits': 'Rozrachunki-uznania',\n  'profile.settings.notifications.resolutions': 'Uchwa\u0142y',\n  'profile.settings.notifications.newTickets': 'Nowe zg\u0142oszenia',\n  'profile.settings.notifications.newAssignements': 'Nowe przypisania',\n  'profile.settings.notifications.myTickets': 'Moje zg\u0142oszenia',\n  'profile.settings.notifications.myTasks': 'Moje zadania',\n  'profile.settings.notifications.tenants': 'Sprawy lokator\u00F3w',\n  'profile.settings.notifications.workerDocuments': 'Dokumenty pracownika',\n  'profile.settings.notifications.workerKsefInvoices': 'Faktury KSeF',\n  'profile.settings.notifications.tenantsDocuments': 'Dokumenty lokatora',\n  'profile.settings.notifications.disabledOption': 'Wy\u0142\u0105czone przez administratora',\n\n  'users.name': 'Nazwa',\n  'users.other': 'Inne',\n  'user.role.permissionCount': '{count} {count, plural, one {uprawnienie} few {uprawnienia} other {uprawnie\u0144}}',\n  'user.additionalPermissions': 'Dodatkowe uprawnienia',\n  'user.noAdditionalPermissions': 'U\u017Cytkownik nie ma obecnie dodatkowych uprawnie\u0144',\n  'user.managePermissions': 'Zarz\u0105dzaj uprawnieniami',\n  'user.permissionsChanged': 'Uprawnienia U\u017Cytkownika zosta\u0142y zmienione',\n  'user.roles.deleteRole': 'Usu\u0144 rol\u0119 {roleName}',\n  'user.roles.confirmation.changeRole.header': 'Czy na pewno chcesz to zmieni\u0107?',\n  'user.roles.confirmation.changeRole.affectedUsers': 'Zmiana ta dotyczy roli, z kt\u00F3rej korzysta {usersCount} {usersCount, plural, one {osoba} few {osoby} other {os\u00F3b}}.',\n  'user.roles.confirmation.deleteRole.header': 'Usun\u0105\u0107 role {roleName}?',\n  'user.roles.confirmation.deleteRole.description': 'Czy na pewno chcesz usun\u0105\u0107 rol\u0119 {roleName}?',\n  'user.roles.confirmation.deleteRole.affectedUsers': 'Nie mo\u017Cna usun\u0105\u0107 roli {roleName}? {usersCount} {usersCount, plural, one {osoba} few {osoby} other {os\u00F3b}} wci\u0105\u017C {usersCount, plural, few {korzystaj\u0105} other {korzysta}} z tej roli.',\n  'user.roles.createRole': 'Stw\u00F3rz rol\u0119',\n  'user.roles.fillName': 'Wpisz nazw\u0119...',\n  'user.roles.validation.nameRequired': 'Nale\u017Cy poda\u0107 nazw\u0119',\n  'user.roles.validation.nameUnique': 'Nazwa musi by\u0107 unikalna',\n\n  'users.header': 'U\u017Cytkownicy',\n  'users.tabs.all': 'Wszyscy',\n  'users.tabs.workers': 'Pracownicy',\n  'users.tabs.activityLog': 'Rejestr zdarze\u0144',\n  'users.column.id': 'Identyfikator',\n  'users.column.name': 'U\u017Cytkownik',\n  'users.column.login': 'Login',\n  'users.column.roles': 'Role',\n  'users.column.email': 'Email',\n  'users.column.active': 'Status',\n  'users.values.status.active': 'Aktywny',\n  'users.values.status.inactive': 'Nieaktywny',\n  'users.filter.roleType': 'Rola',\n  'users.filter.fullName': 'U\u017Cytkownik',\n  'users.filter.login': 'ID/Login',\n  'users.filter.status': 'Status',\n  'users.newUser.create': 'Utw\u00F3rz',\n  'users.newUser.header': 'Nowy U\u017Cytkownik',\n  'users.newUser.externalId': 'Identyfikator*',\n  'users.newUser.roles': 'Role*',\n  'users.newUser.status': 'Status',\n  'users.newUser.status.active': 'Aktywny',\n  'users.newUser.status.notActive': 'Nieaktywny',\n  'users.newUser.login': 'Login',\n  'users.newUser.name': 'Imi\u0119 i nazwisko lub nazwa firmy*',\n  'users.newUser.email': 'E-mail*',\n  'users.newUser.phone': 'Telefon',\n  'users.newUser.email.error.required': 'Email jest wymagany',\n  'users.newUser.roles.error.required': 'Rola jest wymagana',\n  'users.newUser.name.error.required': 'Imi\u0119 i nazwisko lub nazwa firmy jest wymagana',\n  'users.newUser.id.error.required': 'Identyfikator jest wymagany',\n  'users.user.status': 'Status',\n  'users.user.status.active': 'Aktywny',\n  'users.user.status.notActive': 'Nieaktywny',\n  'users.user.roles': 'Role*',\n  'users.user.roles.error.required': 'Rola jest wymagana',\n  'users.user.roles.error.meAdmin': 'Administrator nie mo\u017Ce odpi\u0105\u0107 roli administratora samemu sobie. Je\u015Bli chcesz usun\u0105\u0107 rol\u0119 admina, skontaktuj si\u0119 z Super Administratorem',\n  'users.user.login': 'Login',\n  'users.user.name': 'Imi\u0119 i nazwisko lub nazwa firmy*',\n  'users.user.name.error.required': 'Imi\u0119 i nazwisko lub nazwa firmy jest wymagana',\n  'users.user.email': 'E-mail*',\n  'users.user.email.error.required': 'Email jest wymagany',\n  'users.user.phone': 'Telefon',\n  'users.user.activate': 'Aktywuj',\n  'users.user.deactivate': 'Dezaktywuj',\n  'users.user.activate.popup': 'Czy na pewno chcesz aktywowa\u0107 u\u017Cytkownika {userName}?',\n  'users.user.deactivate.popup': 'Czy na pewno chcesz dezaktywowa\u0107 u\u017Cytkownika {userName}?',\n  'users.user.deactivateAssigned.popup': 'Czy na pewno chcesz dezaktywowa\u0107 u\u017Cytkownika {userName}? Posiada przypisane zg\u0142oszenia, zadania lub dokumenty',\n  'users.user.accessGroups': 'Grupy dost\u0119pu',\n  'users.user.accessGroup.homeownerAssociations': 'Wsp\u00F3lnota',\n  'users.user.accessGroup.estates': 'Osiedle',\n  'users.user.accessGroup.buildings': 'Budynki',\n  'users.user.accessGroup.journals': 'Dzienniki',\n  'users.user.resetUserPassword': 'Zresetuj has\u0142o',\n  'users.user.changePassword.success': 'Has\u0142o zosta\u0142o zmienione',\n  'users.user.changePassword.newPassword': 'Podaj nowe has\u0142o',\n  'users.user.changePassword.confirmNewPassword': 'Powt\u00F3rz nowe has\u0142o',\n  'users.user.changePassword.newPassword.error.required': 'Has\u0142o jest wymagane',\n  'users.user.changePassword.error.pattern': 'Has\u0142o musi posiada\u0107 minimalnie 8 znak\u00F3w i zawiera\u0107 przynajmniej jedn\u0105 ma\u0142\u0105, jedn\u0105 wielk\u0105 liter\u0119, cyfr\u0119 i znak specjalny',\n  'users.user.changePassword.confirmNewPassword.error.required': 'Nale\u017Cy powt\u00F3rzy\u0107 has\u0142o',\n  'users.activityLog.date': 'Data',\n  'users.activityLog.description': 'Opis',\n  'users.activityLog.menuOption': 'Opcja menu',\n  'users.activityLog.venue': 'Lokal',\n  'users.activityLog.id': 'ID',\n  'users.activityLog.fullName': 'Imi\u0119 i nazwisko',\n  'users.activityLog.role': 'Rola',\n  'users.activityLog.menuOption.resolutions': 'Uchwa\u0142y',\n  'users.activityLog.menuOption.tasks': 'Zadania',\n  'users.activityLog.menuOption.tickets': 'Zg\u0142oszenia',\n  'users.activityLog.menuOption.authentication': 'Logowanie',\n  'users.activityLog.menuOption.meters': 'Liczniki',\n  'users.activityLog.menuOption.profiles': 'Profil',\n  'users.activityLog.menuOption.residency_amendments': 'Zmiana liczby os\u00F3b',\n  'users.activityLog.menuOption.settlements': 'P\u0142atno\u015Bci',\n  'users.activityLog.menuOption.announcements': 'Aktualno\u015Bci',\n\n  'parameters.statuses.tickets': 'Zg\u0142oszenia',\n  'parameters.statuses.tasks': 'Zadania',\n  'parameters.statuses.documents': 'Dokumenty',\n  'parameters.statuses.ksefInvoices': 'Faktury KSeF',\n  'parameters.statuses.list.active': 'Aktywny',\n  'parameters.statuses.list.externalName': 'Nazwa zewn\u0119trzna',\n  'parameters.statuses.list.internalName': 'Nazwa wewn\u0119trzna',\n  'parameters.statuses.status': 'Status - {statusName}',\n  'parameters.statuses.form.active': 'Aktywny',\n  'parameters.statuses.form.internalName': 'Nazwa wewn\u0119trzna',\n  'parameters.statuses.form.externalName': 'Nazwa zewn\u0119trzna',\n  'parameters.statuses.form.description': 'Opis',\n  'parameters.statuses.form.internalName.required': 'Nazwa wewn\u0119trzna jest wymagana',\n  'parameters.statuses.form.externalName.required': 'Nazwa zewn\u0119trzna jest wymagana',\n\n  'parameters.journals.prefixes': 'Prefiksy',\n  'parameters.journals.name': 'Nazwa',\n  'parameters.journals.type': 'Typ dziennika',\n  'parameters.journals.incoming': 'Przychodz\u0105ce',\n  'parameters.journals.outgoing': 'Wychodz\u0105ce',\n  'parameters.journals.numeration': 'Numeracja',\n  'parameters.journals.autonumbering': 'automatyczna',\n  'parameters.journals.create': 'Utw\u00F3rz',\n  'parameters.journals.newJournal': 'Nowy dziennik',\n  'parameters.journals.url.incoming': 'przychodzace',\n  'parameters.journals.url.outgoing': 'wychodzace',\n  'parameters.journals.url.przychodzace': 'incoming',\n  'parameters.journals.url.wychodzace': 'outgoing',\n  'parameters.journals.journal': 'Dziennik - {journalName}',\n  'parameters.journals.journal.confirmRemoving': 'Czy na pewno chcesz usun\u0105\u0107 dziennik - {journalName}',\n  'parameters.journals.form.autonumbering': 'Autonumeracja',\n  'parameters.journals.form.description': 'Opis',\n  'parameters.journals.form.prefix': 'Prefix',\n  'parameters.journals.form.prefix.required': 'Prefix jest wymagany',\n  'parameters.journals.form.name': 'Nazwa',\n  'parameters.journals.form.name.required': 'Nazwa jest wymagana',\n  'parameters.journals.form.journalType': 'Typ dziennika',\n  'parameters.journals.form.journalType.required': 'Typ dziennika jest wymagany',\n  'parameters.ksefJournals.journal': 'Dziennik KSeF - {journalName}',\n\n  'parameters.categories': 'Kategorie',\n  'parameters.categories.add': 'Dodaj',\n  'parameters.categories.change': 'Zmie\u0144',\n  'parameters.categories.remove': 'Usu\u0144',\n\n  'parameters.categories.addDialog.header': 'Dodaj now\u0105 kategori\u0119',\n  'parameters.categories.addDialog.button': 'Dodaj',\n  'parameters.categories.changeDialog.header': 'Zmie\u0144 nazw\u0119 kategorii',\n  'parameters.categories.changeDialog.button': 'Zmie\u0144',\n  'parameters.categories.deleteDialog.header': 'Czy na pewno usun\u0105\u0107 kategori\u0119?',\n  'parameters.categories.deleteDialog.ticketsSubHeader': 'Kategori\u0119 mo\u017Cna usun\u0105\u0107 tylko je\u015Bli nie istniej\u0105 zg\u0142oszenia z dan\u0105 kategori\u0105',\n  'parameters.categories.deleteDialog.tasksSubHeader': 'Kategori\u0119 mo\u017Cna usun\u0105\u0107 tylko je\u015Bli nie istniej\u0105 zadania z dan\u0105 kategori\u0105',\n  'parameters.categories.deleteDialog.documentsSubHeader': 'Kategori\u0119 mo\u017Cna usun\u0105\u0107 tylko je\u015Bli nie istniej\u0105 dokumenty z dan\u0105 kategori\u0105',\n  'parameters.categories.deleteDialog.error': 'Nie mo\u017Cna usun\u0105\u0107 kategorii.',\n  'parameters.categories.deleteDialog.button': 'Usu\u0144',\n\n  'parameters.categories.dialog.name': 'Nazwa',\n  'parameters.categories.dialog.name.error': 'Nazwa jest wymagana',\n\n  'pagination.info': 'Wy\u015Bwietlono {start}-{end} z {all} pozycji',\n  'pagination.previousPage': 'Poprzednia strona',\n  'pagination.nextPage': 'nast\u0119pna strona',\n\n  'datepicker.month.january': 'Stycze\u0144',\n  'datepicker.month.february': 'Luty',\n  'datepicker.month.march': 'Marzec',\n  'datepicker.month.april': 'Kwiecie\u0144',\n  'datepicker.month.may': 'Maj',\n  'datepicker.month.june': 'Czerwiec',\n  'datepicker.month.july': 'Lipiec',\n  'datepicker.month.august': 'Sierpie\u0144',\n  'datepicker.month.september': 'Wrzesie\u0144',\n  'datepicker.month.october': 'Pa\u017Adziernik',\n  'datepicker.month.november': 'Listopad',\n  'datepicker.month.december': 'Grudzie\u0144',\n\n  'datepicker.week.monday': 'pon.',\n  'datepicker.week.tuesday': 'wt.',\n  'datepicker.week.wednesday': '\u015Br.',\n  'datepicker.week.thursday': 'czw.',\n  'datepicker.week.friday': 'pt.',\n  'datepicker.week.saturday': 'sob.',\n  'datepicker.week.sunday': 'ndz.',\n\n  'select.placeholder': 'Wybierz',\n\n  'permissions.roleType.admin': 'Admin',\n  'permissions.roleType.tenant': 'Lokator',\n  'permissions.roleType.worker': 'Pracownik',\n  'permissions.roleType.member': 'Cz\u0142onek',\n\n  'permissions.meters': 'Liczniki',\n  'permissions.meters.meters_list': 'Wy\u015Bwietlanie listy licznik\u00F3w do odczytu',\n  'permissions.meters.meters_measurement_add': 'Dodawanie odczyt\u00F3w licznik\u00F3w',\n  'permissions.meters.meters_history_list': 'Wy\u015Bwietlanie historii licznik\u00F3w',\n  'permissions.tickets': 'Zg\u0142oszenia',\n  'permissions.tickets.tickets_add': 'Raportowanie',\n  'permissions.tickets.tickets_list': 'Wy\u015Bwietlanie listy zg\u0142osze\u0144',\n  'permissions.resolutions': 'Uchwa\u0142y',\n  'permissions.resolutions.resolutions_list': 'Wy\u015Bwietlanie uchwa\u0142',\n  'permissions.resolutions.resolutions_vote_add': 'G\u0142osowanie',\n  'permissions.resolutions.resolutions_votings_list': 'Wy\u015Bwietlanie listy g\u0142os\u00F3w do uchwa\u0142y',\n  'permissions.announcements': 'Aktualno\u015Bci',\n  'permissions.announcements.announcements_list': 'Wy\u015Bwietlanie aktualno\u015Bci',\n  'permissions.announcements.announcements_notice_add': 'Tworzenie og\u0142osze\u0144',\n  'permissions.documents': 'Dokumenty',\n  'permissions.documents.documents_list': 'Wy\u015Bwietlanie listy dokument\u00F3w',\n  'permissions.documents.documents_add': 'Dodawanie dokument\u00F3w',\n  'permissions.tenants': 'Lokatorzy',\n  'permissions.tenants.tenants_people_entries_manage': 'Zmiana liczby lokator\u00F3w',\n  'permissions.tasks': 'Zadania',\n  'permissions.tasks.tasks_list': 'Wy\u015Bwietlanie listy zada\u0144',\n  'permissions.tasks.tasks_add': 'Tworzenie zadania',\n  'permissions.activity_log': 'Rejestr zdarze\u0144',\n  'permissions.activity_log.activity_log_register_entries_list': 'Wy\u015Bwietlanie listy zdarze\u0144',\n  'permissions.settlements': 'Rozrachunki',\n  'permissions.settlements.settlements_balance_list': 'Wy\u015Bwietlanie analizy salda',\n  'permissions.settlements.settlements_payments_list': 'Wy\u015Bwietlanie listy p\u0142atno\u015Bci',\n  'permissions.settlements.settlements_payment_make': 'Dokonywanie p\u0142atno\u015Bci',\n  'permissions.settlements.settlements_document_read': 'Odczytywanie dokument\u00F3w rozrachunkowych',\n  'permissions.notifications': 'Powiadomienia',\n  'permissions.notifications.notifications_list': 'Wy\u015Bwietlanie listy powiadomie\u0144',\n\n  'attachment.previewUnavailable': 'Podgl\u0105d niedost\u0119pny',\n  'attachment.previewUnavailable.download': 'Podgl\u0105d niedost\u0119pny. Pobierz za\u0142\u0105cznik aby zapozna\u0107 si\u0119 z jego tre\u015Bci\u0105.',\n  'attachment.download': 'Pobierz',\n\n  'notifications.notification.message': 'Tre\u015B\u0107',\n  'notifications.notification.createdAt': 'Czas utworzenia',\n  'notifications.notification.markRead': 'Oznacz jako przeczytane',\n  'notifications.notification.markAllRead': 'Oznacz wszystkie jako przeczytane ',\n  'notifications.notification.delete': 'Usu\u0144 zaznaczone',\n\n\n  'company.details.name': 'Nazwa podmiotu',\n  'company.details.postalCode': 'Kod pocztowy',\n  'company.details.city': 'Miasto',\n  'company.details.streetAddress': 'Ulica, nr domu/nr lokalu',\n  'company.details.phone': 'Telefon',\n  'company.details.website': 'Strona www',\n  'company.details.form.name.error.required': 'Nazwa jest wymagana',\n  'company.details.addLogo': 'Dodaj logo',\n  'company.details.changeLogo': 'Zmie\u0144 logo',\n  'company.details.changeBackgroundImage': 'Zmie\u0144 zdj\u0119cie',\n  'company.details.addBackgroundImage': 'Dodaj zdj\u0119cie',\n  'company.details.changeRegulations': 'Zmie\u0144 regulamin',\n  'company.details.addRegulations': 'Dodaj regulamin',\n  'company.details.backgroundImage': 'Zdj\u0119cie',\n  'company.details.regulations': 'Regulamin',\n  'company.taxDetails.vatCode': 'NIP',\n  'company.taxDetails.companyCode': 'Kod firmy',\n  'company.taxDetails.contactPhoneNumber': 'Telefon kontaktowy',\n  'company.taxDetails.contactEmail': 'Email kontaktowy',\n  'company.attachments.success': 'Pliki zosta\u0142y zaktualizowane',\n  'company.attachments.error': 'Wyst\u0105pi\u0142 b\u0142\u0105d i pliki nie zosta\u0142y zapisane',\n  'company.settings.colorPalette': 'Wygl\u0105d',\n  'company.settings.colorPalette.red': 'Czerwony',\n  'company.settings.colorPalette.green': 'Zielony',\n  'company.settings.colorPalette.violet': 'Fioletowy',\n  'company.settings.colorPalette.default': 'Domy\u015Blny',\n  'company.mailServerConfig.form.address': 'Adres',\n  'company.mailServerConfig.form.domain': 'Domena',\n  'company.mailServerConfig.form.port': 'Port',\n  'company.mailServerConfig.form.userName': 'Nazwa u\u017Cytkownika',\n  'company.mailServerConfig.form.authentication': 'Autentykacja',\n  'company.mailServerConfig.form.communicationEncryption': 'Szyfrowanie transmisji SMTP',\n  'company.mailServerConfig.form.password': 'Has\u0142o',\n  'company.mailServerConfig.form.password.button.change': 'Zmie\u0144 has\u0142o',\n  'company.mailServerConfig.form.password.button.set': 'Ustaw has\u0142o',\n  'company.mailServerConfig.form.fromEmail': 'Email nadawcy',\n  'company.mailServerConfig.form.error.required': 'Nie mo\u017Ce by\u0107 puste',\n  'company.mailServerConfig.test.form.label': 'Przetestuj poprawno\u015B\u0107 konfiguracji serwera',\n  'company.mailServerConfig.test.form.email': 'Wprowad\u017A e-mail, na kt\u00F3ry chcesz wys\u0142a\u0107 testow\u0105 wiadomo\u015B\u0107',\n  'company.mailServerConfig.test.form.email.required': 'Nie mo\u017Ce by\u0107 pusty',\n  'company.mailServerConfig.test.form.button': 'Testuj',\n  'company.mailServerConfig.test.success': 'Testowy mail zosta\u0142 wys\u0142any. Je\u015Bli serwer zosta\u0142 poprawnie skonfigurowany, mail trafi do skrzynki mailowej',\n  'company.mailServerConfig.test.error': 'Testowy mail nie zosta\u0142 wys\u0142any. Ponownie wype\u0142nij konfiguracj\u0119 serwera, a nast\u0119pnie wy\u015Blij testowy email.',\n\n  'fallbackRender.error.404.header': 'B\u0142\u0105d 404: Strona, kt\u00F3rej szukasz nie istnieje lub zosta\u0142a usuni\u0119ta',\n  'fallbackRender.error.404.paragraph': 'Sprawd\u017A poprawno\u015B\u0107 adresu lub ',\n  'fallbackRender.header': 'Przepraszamy, wyst\u0105pi\u0142 nieoczekiwany b\u0142\u0105d',\n  'fallbackRender.backToHomepage': 'wr\u00F3\u0107 do strony g\u0142\u00F3wnej',\n};\n\nexport default messages;\n", "import { configureStore } from '@reduxjs/toolkit';\nimport { setupListeners } from '@reduxjs/toolkit/query';\nimport slice from './appSlice';\nimport { appApi } from '../api/appApi';\nimport { errorHandlingMiddleware } from './errorHandlingMiddleware';\n\nexport const store = configureStore({\n  reducer: {\n    app: slice,\n    [appApi.reducerPath]: appApi.reducer,\n  },\n  middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat([appApi.middleware, errorHandlingMiddleware]),\n});\n\nexport type RootState = ReturnType<typeof store.getState>;\nexport type AppDispatch = typeof store.dispatch;\n\nsetupListeners(store.dispatch);\n", "import { isRejectedWithValue } from '@reduxjs/toolkit';\nimport type { Middleware } from '@reduxjs/toolkit';\n\n/**\n * Log a warning and show a toast!\n */\nexport const errorHandlingMiddleware: Middleware = () => (next) => (action) => {\n  // RTK Query uses `createAsyncThunk` from redux-toolkit under the hood, so we're able to utilize these matchers!\n  if (isRejectedWithValue(action)) {\n    if (action?.payload?.status === 401) {\n      window.location.href = '/accounts/sign_in';\n    }\n    if (action?.payload?.originalStatus === 404 || action?.payload?.status === 404) {\n      window.location.href = '/404';\n    }\n  }\n\n  return next(action);\n};\n", "export class FetchResponse {\n  constructor (response) {\n    this.response = response\n  }\n\n  get statusCode () {\n    return this.response.status\n  }\n\n  get redirected () {\n    return this.response.redirected\n  }\n\n  get ok () {\n    return this.response.ok\n  }\n\n  get unauthenticated () {\n    return this.statusCode === 401\n  }\n\n  get unprocessableEntity () {\n    return this.statusCode === 422\n  }\n\n  get authenticationURL () {\n    return this.response.headers.get('WWW-Authenticate')\n  }\n\n  get contentType () {\n    const contentType = this.response.headers.get('Content-Type') || ''\n\n    return contentType.replace(/;.*$/, '')\n  }\n\n  get headers () {\n    return this.response.headers\n  }\n\n  get html () {\n    if (this.contentType.match(/^(application|text)\\/(html|xhtml\\+xml)$/)) {\n      return this.text\n    }\n\n    return Promise.reject(new Error(`Expected an HTML response but got \"${this.contentType}\" instead`))\n  }\n\n  get json () {\n    if (this.contentType.match(/^application\\/.*json$/)) {\n      return this.responseJson || (this.responseJson = this.response.json())\n    }\n\n    return Promise.reject(new Error(`Expected a JSON response but got \"${this.contentType}\" instead`))\n  }\n\n  get text () {\n    return this.responseText || (this.responseText = this.response.text())\n  }\n\n  get isTurboStream () {\n    return this.contentType.match(/^text\\/vnd\\.turbo-stream\\.html/)\n  }\n\n  async renderTurboStream () {\n    if (this.isTurboStream) {\n      if (window.Turbo) {\n        await window.Turbo.renderStreamMessage(await this.text)\n      } else {\n        console.warn('You must set `window.Turbo = Turbo` to automatically process Turbo Stream events with request.js')\n      }\n    } else {\n      return Promise.reject(new Error(`Expected a Turbo Stream response but got \"${this.contentType}\" instead`))\n    }\n  }\n}\n", "export class RequestInterceptor {\n  static register (interceptor) {\n    this.interceptor = interceptor\n  }\n\n  static get () {\n    return this.interceptor\n  }\n\n  static reset () {\n    this.interceptor = undefined\n  }\n}\n", "export function getCookie (name) {\n  const cookies = document.cookie ? document.cookie.split('; ') : []\n  const prefix = `${encodeURIComponent(name)}=`\n  const cookie = cookies.find(cookie => cookie.startsWith(prefix))\n\n  if (cookie) {\n    const value = cookie.split('=').slice(1).join('=')\n\n    if (value) {\n      return decodeURIComponent(value)\n    }\n  }\n}\n\nexport function compact (object) {\n  const result = {}\n\n  for (const key in object) {\n    const value = object[key]\n    if (value !== undefined) {\n      result[key] = value\n    }\n  }\n\n  return result\n}\n\nexport function metaContent (name) {\n  const element = document.head.querySelector(`meta[name=\"${name}\"]`)\n  return element && element.content\n}\n\nexport function stringEntriesFromFormData (formData) {\n  return [...formData].reduce((entries, [name, value]) => {\n    return entries.concat(typeof value === 'string' ? [[name, value]] : [])\n  }, [])\n}\n\nexport function mergeEntries (searchParams, entries) {\n  for (const [name, value] of entries) {\n    if (value instanceof window.File) continue\n\n    if (searchParams.has(name) && !name.includes('[]')) {\n      searchParams.delete(name)\n      searchParams.set(name, value)\n    } else {\n      searchParams.append(name, value)\n    }\n  }\n}\n", "import { FetchResponse } from './fetch_response'\nimport { RequestInterceptor } from './request_interceptor'\nimport { getCookie, compact, metaContent, stringEntriesFromFormData, mergeEntries } from './lib/utils'\n\nexport class FetchRequest {\n  constructor (method, url, options = {}) {\n    this.method = method\n    this.options = options\n    this.originalUrl = url.toString()\n  }\n\n  async perform () {\n    try {\n      const requestInterceptor = RequestInterceptor.get()\n      if (requestInterceptor) {\n        await requestInterceptor(this)\n      }\n    } catch (error) {\n      console.error(error)\n    }\n\n    const response = new FetchResponse(await window.fetch(this.url, this.fetchOptions))\n\n    if (response.unauthenticated && response.authenticationURL) {\n      return Promise.reject(window.location.href = response.authenticationURL)\n    }\n\n    const responseStatusIsTurboStreamable = response.ok || response.unprocessableEntity\n\n    if (responseStatusIsTurboStreamable && response.isTurboStream) {\n      await response.renderTurboStream()\n    }\n\n    return response\n  }\n\n  addHeader (key, value) {\n    const headers = this.additionalHeaders\n    headers[key] = value\n    this.options.headers = headers\n  }\n\n  sameHostname () {\n    if (!this.originalUrl.startsWith('http:')) {\n      return true\n    }\n\n    try {\n      return new URL(this.originalUrl).hostname === window.location.hostname\n    } catch (_) {\n      return true\n    }\n  }\n\n  get fetchOptions () {\n    return {\n      method: this.method.toUpperCase(),\n      headers: this.headers,\n      body: this.formattedBody,\n      signal: this.signal,\n      credentials: this.credentials,\n      redirect: this.redirect\n    }\n  }\n\n  get headers () {\n    const baseHeaders = {\n      'X-Requested-With': 'XMLHttpRequest',\n      'Content-Type': this.contentType,\n      Accept: this.accept\n    }\n\n    if (this.sameHostname()) {\n      baseHeaders['X-CSRF-Token'] = this.csrfToken\n    }\n\n    return compact(\n      Object.assign(baseHeaders, this.additionalHeaders)\n    )\n  }\n\n  get csrfToken () {\n    return getCookie(metaContent('csrf-param')) || metaContent('csrf-token')\n  }\n\n  get contentType () {\n    if (this.options.contentType) {\n      return this.options.contentType\n    } else if (this.body == null || this.body instanceof window.FormData) {\n      return undefined\n    } else if (this.body instanceof window.File) {\n      return this.body.type\n    }\n\n    return 'application/json'\n  }\n\n  get accept () {\n    switch (this.responseKind) {\n      case 'html':\n        return 'text/html, application/xhtml+xml'\n      case 'turbo-stream':\n        return 'text/vnd.turbo-stream.html, text/html, application/xhtml+xml'\n      case 'json':\n        return 'application/json, application/vnd.api+json'\n      default:\n        return '*/*'\n    }\n  }\n\n  get body () {\n    return this.options.body\n  }\n\n  get query () {\n    const originalQuery = (this.originalUrl.split('?')[1] || '').split('#')[0]\n    const params = new URLSearchParams(originalQuery)\n\n    let requestQuery = this.options.query\n    if (requestQuery instanceof window.FormData) {\n      requestQuery = stringEntriesFromFormData(requestQuery)\n    } else if (requestQuery instanceof window.URLSearchParams) {\n      requestQuery = requestQuery.entries()\n    } else {\n      requestQuery = Object.entries(requestQuery || {})\n    }\n\n    mergeEntries(params, requestQuery)\n\n    const query = params.toString()\n    return (query.length > 0 ? `?${query}` : '')\n  }\n\n  get url () {\n    return (this.originalUrl.split('?')[0]).split('#')[0] + this.query\n  }\n\n  get responseKind () {\n    return this.options.responseKind || 'html'\n  }\n\n  get signal () {\n    return this.options.signal\n  }\n\n  get redirect () {\n    return this.options.redirect || 'follow'\n  }\n\n  get credentials () {\n    return this.options.credentials || 'same-origin'\n  }\n\n  get additionalHeaders () {\n    return this.options.headers || {}\n  }\n\n  get formattedBody () {\n    const bodyIsAString = Object.prototype.toString.call(this.body) === '[object String]'\n    const contentTypeIsJson = this.headers['Content-Type'] === 'application/json'\n\n    if (contentTypeIsJson && !bodyIsAString) {\n      return JSON.stringify(this.body)\n    }\n\n    return this.body\n  }\n}\n", "import { FetchRequest } from '@rails/request.js';\nimport { stringToBase64 } from './formatters';\n\nconst logInForm = document.getElementById('accounts_sessions_new_form') as HTMLFormElement;\nconst passwordInput = document.getElementById('account_password') as HTMLInputElement | null;\nconst passwordVisibilityToggle = document.getElementById('toggle_password_visibility') as HTMLButtonElement | null;\nconst passwordIconShow = document.getElementById('password_icon_show') as HTMLSpanElement | null;\nconst passwordIconHide = document.getElementById('password_icon_hide') as HTMLSpanElement | null;\n\npasswordVisibilityToggle?.addEventListener('click', () => {\n  if (!passwordInput) return;\n  const shouldShowPassword = passwordInput.type === 'password';\n  passwordInput.type = shouldShowPassword ? 'text' : 'password';\n  passwordVisibilityToggle.setAttribute('aria-pressed', String(shouldShowPassword));\n  passwordVisibilityToggle.setAttribute('aria-label', shouldShowPassword ? 'Ukryj has\u0142o' : 'Poka\u017C has\u0142o');\n  passwordIconShow?.classList.toggle('hidden', shouldShowPassword);\n  passwordIconHide?.classList.toggle('hidden', !shouldShowPassword);\n});\n\nfunction createAlert(msg: string) {\n  const existingElement = document.getElementById('alert');\n\n  if (existingElement) {\n    existingElement.style.display = 'block';\n    // @ts-ignore\n    existingElement.children[1].innerText = msg;\n  } else {\n    const alertDiv = document.createElement('div');\n    const errorSpan = document.createElement('span');\n    const errorMsgSpan = document.createElement('span');\n    const errorMsg = document.createTextNode(msg);\n\n    alertDiv.id = 'alert';\n    alertDiv.className = 'alert bg-interactions-error-bg text-interactions-error-text';\n    errorSpan.className = 'font-semibold block';\n\n    alertDiv.appendChild(errorSpan);\n    alertDiv.appendChild(errorMsgSpan);\n\n    errorSpan.appendChild(document.createTextNode('B\u0142\u0105d'));\n    errorMsgSpan.appendChild(errorMsg);\n\n    document.body.appendChild(alertDiv);\n  }\n}\n\nconst fetchRequest = async (form: HTMLFormElement, payload: {}) => {\n  const method = (form.elements.namedItem('_method') as HTMLInputElement)?.value || form.method;\n  const request = new FetchRequest(method, form.action, {\n    body: JSON.stringify({\n      authenticity_token: (form.elements.namedItem('authenticity_token') as HTMLInputElement).value,\n      commit: (form.elements.namedItem('commit') as HTMLInputElement).value,\n      ...payload,\n    }),\n  });\n  const response = await request.perform();\n\n  if (response.ok) {\n    // Extract and store access token from response header\n    const accessToken = response.response.headers.get('X-Access-Token');\n    if (accessToken) {\n      sessionStorage.setItem('access_token', accessToken);\n    }\n    window.location.replace('/');\n  } else {\n    response.text.then(((text) => createAlert(text)));\n  }\n};\n\nlogInForm?.addEventListener('submit', async (event) => {\n  event.preventDefault();\n  const form = event.target as HTMLFormElement;\n\tconst shouldEncode = process.env.SHOULD_USE_BASE64_AUTHENTICATION === 'true';\n  const login_option = (form.elements.namedItem('account_login_option') as HTMLInputElement)?.value\n\tconst password = (form.elements.namedItem('account_password') as HTMLInputElement)?.value\n\n  await fetchRequest(form, {\n    account: {\n      login_option: shouldEncode ? stringToBase64(login_option) : login_option,\n      password: shouldEncode ? stringToBase64(password) : password,\n    },\n  });\n});\n", "// Entry point for the build script in your package.json\nimport './app/App';\nimport './utils/loginForm';\n\ndocument.body.classList.add(localStorage.getItem('colorPalette') || 'red');\n"],
  "mappings": "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A,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QAC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A,QACP,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,MAAM;AAAA,QACN,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,KAAK;AAAA,QACL,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,QACP,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,MAAM;AAAA,QACN,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,QACP,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,MAAM;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,QACP,OAAO;AAA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,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,UAAU;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,UAAU;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,MACL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K,SACrBA,OAAM,SACNA,OAAM,SACNA,OAAM,SACNA,OAAM,SACLA,MAAK,SAAUA,MAAK,SACrBA,OAAM,SACNA,OAAM,SACLA,MAAK,SAAUA,MAAK,SACpBA,MAAK,SAAUA,MAAK,SACpBA,MAAK,SAAUA,MAAK,SACpBA,MAAK,SAAUA,MAAK,SACpBA,MAAK,SAAUA,MAAK,SACpBA,MAAK,SAAUA,MAAK,SACpBA,MAAK,SAAUA,MAAK,SACpBA,MAAK,SAAUA,MAAK,SACrBA,OAAM,SACLA,MAAK,SAAUA,MAAK,SACpBA,MAAK,SAAUA,MAAK,SACrBA,OAAM,SACNA,OAAM,SACNA,OAAM,SACNA,OAAM,SACLA,MAAK,SAAUA,MAAK,SACrBA,OAAM,SACNA,OAAM,SACNA,OAAM,SACNA,OAAM,SACNA,OAAM,SACLA,MAAK,SAAUA,MAAK,SACrBA,OAAM,SACLA,MAAK,SAAUA,MAAK,SACrBA,OAAM,SACNA,OAAM,SACNA,OAAM,SACNA,OAAM,SACLA,MAAK,SAAUA,MAAK,SACrBA,OAAM,SACNA,OAAM,SACNA,OAAM,SACNA,OAAM,SACNA,OAAM,SACNA,OAAM,SACNA,OAAM,SACNA,OAAM,SACNA,OAAM,SACNA,OAAM,SACLA,MAAK,SAAUA,MAAK,SACrBA,OAAM,SACLA,MAAK,SAAUA,MAAK,SACpBA,MAAK,SAAUA,MAAK,SACpBA,MAAK,SAAUA,MAAK,SACrBA,OAAM,SACNA,OAAM,SACNA,OAAM,SACLA,MAAK,SAAUA,MAAK,SACpBA,MAAK,SAAUA,MAAK,SACrBA,OAAM,SACLA,MAAK,SAAUA,MAAK,SACpBA,MAAK,SAAUA,MAAK,SACrBA,OAAM,SACNA,OAAM,SACNA,OAAM,SACNA,OAAM,SACNA,OAAM,SACNA,OAAM,SACNA,OAAM,SACNA,OAAM,SACNA,OAAM,SACNA,OAAM,SACLA,MAAK,SAAUA,MAAK,SACrBA,OAAM,SACNA,OAAM,SACNA,OAAM,SACNA,OAAM,SACNA,OAAM,SACNA,OAAM,SACNA,OAAM,SACNA,OAAM,SACNA,OAAM,SACNA,OAAM,SACLA,MAAK,SAAUA,MAAK,SACrBA,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AAA,QACF;AAAA,QACA,wBAAwB;AAAA;AAAA,UAEtB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA;AAAA,UAEA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,qBAAqB;AAAA,UACnB;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,gBAAgB;AAAA,UACd;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA;AAAA,MAEF;AACA,aAAO,KAAK,QAAQ,EAAE,QAAQ,SAAUC,IAAG;AACzC,QAAAF,QAAOE,EAAC,EAAE,UAAU,iBAAiB,SAASA,EAAC,CAAC;AAAA,MAClD,CAAC;AACD,UAAI,cAAc;AAAA;AAAA,QAEhB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA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AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA;AAAA,QAEA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,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",
  "names": ["warn", "format", "ReactDebugCurrentFrame", "assign", "Component", "context", "info", "PureComponent", "a", "e", "init", "x", "hasOwnProperty", "key", "self", "element", "createElement", "children", "i", "cloneElement", "isValidElement", "escape", "match", "text", "index", "c", "count", "n", "toArray", "onlyChild", "createContext", "moduleObject", "error", "forwardRef", "render", "name", "useContext", "Context", "useState", "initialState", "useReducer", "reducer", "useRef", "useEffect", "create", "useLayoutEffect", "useCallback", "useMemo", "useImperativeHandle", "useDebugValue", "useSyncExternalStore", "prefix", "s", "location", "has", "node", "fragment", "keys", "scope", "returnValue", "Children", "push", "node", "index", "peek", "i", "parent", "a", "b", "diff", "initialTime", "startTime", "React", "warn", "format", "ReactDebugCurrentFrame", "Fragment", "i", "canUseDOM", "hasOwnProperty", "e", "name", "prefix", "properties", "sanitizeURL", "capitalize", "node", "assign", "x", "match", "s", "c", "Component", "init", "workInProgress", "info", "context", "toString", "get", "set", "element", "checked", "isHydrating", "group", "a", "options", "children", "html", "text", "firstChild", "key", "string", "_", "style", "isValid", "registrationNameDependencies", "possibleRegistrationNames", "b", "d", "f", "error", "callCallback", "has", "current", "parent", "now", "root", "map", "index", "log", "renderLanes", "queuedEvent", "enabled", "start", "normalize", "documentMode", "toNode", "is", "y", "shallowEqual", "next", "prefixes", "markup", "createElement", "createTextNode", "attributes", "location", "push", "id", "number", "list", "clone", "updateFragment", "fragment", "child", "reconcileChildFibers", "Layout", "version", "didWarnUncachedGetSnapshot", "table", "reducer", "initialState", "checkIfSnapshotChanged", "create", "destroy", "error$1", "render", "subtreeRenderLanes", "hasContextChanged", "commitTime", "ceil", "errors", "checks", "shouldFireAfterActiveInstanceBlur", "content", "hydrate", "keys", "path", "currentHook", "ReactCurrentDispatcher", "createRoot", "m", "i", "c", "h", "typeOf", "Fragment", "StrictMode", "isElement", "defineProperty", "hoistNonReactStatics", "keys", "i", "key", "e", "React", "format", "is", "x", "y", "useState", "useEffect", "useLayoutEffect", "useDebugValue", "didWarnOld18Alpha", "didWarnUncachedGetSnapshot", "useSyncExternalStore", "checkIfSnapshotChanged", "error", "useSyncExternalStore$1", "canUseDOM", "isServerEnvironment", "shim", "useSyncExternalStore$2", "React", "shim", "is", "x", "y", "useSyncExternalStore", "useRef", "useEffect", "useMemo", "useDebugValue", "isEqual", "batch", "a", "b", "context", "useSelector", "store", "_extends", "i", "key", "_objectWithoutPropertiesLoose", "key", "i", "require_react_is_development", "typeOf", "Fragment", "StrictMode", "isElement", "require_react_is", "warning", "e", "_objectWithoutPropertiesLoose2", "_excluded", "key", "isPlainObject", "proto", "name", "_extends2", "batch", "store", "canUseDOM", "shallowEqual", "is", "x", "y", "i", "_extends2", "_objectWithoutPropertiesLoose2", "_excluded", "nodeInterop", "key", "useSyncExternalStore", "store", "e", "a", "b", "pure", "forwardRef", "context", "Context", "reactReduxForwardedRef", "wrapperProps", "subscription", "notifyNestedSubs", "nodeInterop", "key", "Provider", "store", "context", "children", "Context", "context", "useStore", "store", "context", "useDispatch", "store", "key", "key", "React", "format", "ReactDebugCurrentFrame", "context", "init", "x", "assign", "prefix", "name", "match", "s", "c", "Component", "hasOwnProperty", "element", "location", "has", "a", "e", "self", "key", "isValidElement", "info", "node", "i", "fragment", "keys", "children", "jsx", "jsxs", "require_warning", "warning", "printWarning", "format", "key", "x", "hasSymbol", "Symbol", "hasMap", "Map", "hasSet", "Set", "hasProxies", "Proxy", "revocable", "Reflect", "NOTHING", "for", "DRAFTABLE", "DRAFT_STATE", "iteratorSymbol", "iterator", "errors", "_", "data", "path", "op", "plugin", "thing", "die", "error", "args", "e", "msg", "apply", "Error", "isDraft", "value", "isDraftable", "isPlainObject", "Array", "isArray", "constructor", "isMap", "isSet", "objectCtorString", "Object", "prototype", "toString", "proto", "getPrototypeOf", "Ctor", "hasOwnProperty", "call", "Function", "original", "base_", "ownKeys", "getOwnPropertySymbols", "obj", "getOwnPropertyNames", "concat", "getOwnPropertyDescriptors", "target", "res", "forEach", "key", "getOwnPropertyDescriptor", "each", "iter", "enumerableOnly", "getArchtype", "keys", "entry", "index", "state", "type_", "has", "prop", "get", "set", "propOrOldValue", "t", "add", "is", "x", "y", "latest", "copy_", "shallowCopy", "base", "slice", "descriptors", "i", "length", "desc", "writable", "configurable", "enumerable", "create", "freeze", "deep", "isFrozen", "clear", "delete", "dontMutateFrozenCollections", "plugins", "getPlugin", "pluginKey", "loadPlugin", "implementation", "currentScope", "getCurrentScope", "createScope", "parent_", "immer_", "drafts_", "canAutoFreeze_", "unfinalizedDrafts_", "usePatchesInScope", "scope", "patchListener", "patches_", "inversePatches_", "patchListener_", "revokeScope", "leaveScope", "revokeDraft", "enterScope", "immer", "draft", "revoke_", "revoked_", "processResult", "result", "baseDraft", "isReplaced", "undefined", "useProxies_", "willFinalizeES5_", "modified_", "finalize", "maybeFreeze", "generateReplacementPatches_", "rootScope", "childValue", "finalizeProperty", "scope_", "finalized_", "draft_", "resultEach", "generatePatches_", "parentState", "targetObject", "rootPath", "targetIsSet", "assigned_", "autoFreeze_", "createProxyProxy", "parent", "isManual_", "traps", "objectTraps", "arrayTraps", "revoke", "proxy", "source", "readPropFromProto", "peek", "prepareCopy", "createProxy", "getDescriptorFromProto", "current", "currentState", "markChanged", "Number", "isNaN", "deleteProperty", "owner", "defineProperty", "setPrototypeOf", "fn", "arguments", "parseInt", "Immer", "config", "recipe", "defaultBase", "self", "curriedProduce", "produce", "hasError", "Promise", "then", "p", "ip", "produceWithPatches", "patches", "inversePatches", "nextState", "useProxies", "setUseProxies", "autoFreeze", "setAutoFreeze", "createDraft", "finishDraft", "applyPatches", "patch", "applyPatchesImpl", "applyPatches_", "proxyMap_", "proxySet_", "createES5Proxy_", "push", "currentImpl", "copy", "archType", "hasChanges_", "copyHelper", "from", "enableES5", "markChangesRecursively", "markChangesSweep", "createES5Draft", "proxyProperty", "assertUnrevoked", "drafts", "hasArrayChanges", "hasObjectChanges", "object", "min", "Math", "baseValue", "baseIsDraft", "descriptor", "JSON", "stringify", "enablePatches", "REPLACE", "ADD", "REMOVE", "basePath", "generatePatchesFromAssigned", "generateArrayPatches", "generateSetPatches", "_ref", "_ref2", "clonePatchValueIfNeeded", "assignedValue", "origValue", "unshift", "replacement", "parentType", "join", "type", "deepClonePatchValue", "splice", "map", "entries", "k", "v", "cloned", "immerable", "enableMapSet", "extendStatics", "d", "b", "__proto__", "__extends", "__", "DraftMap", "_super", "size", "prepareMapCopy", "cb", "thisArg", "_value", "_map", "values", "next", "r", "done", "DraftSet", "prepareSetCopy", "enableAllPlugins", "bind", "castDraft", "castImmutable", "_typeof", "obj", "_typeof", "_typeof", "key", "key", "defineProperty", "keys", "i", "key", "e", "randomString", "isPlainObject", "proto", "isDate", "reducer", "index", "i", "subscribe", "warning", "key", "initialState", "a", "b", "createStore", "store", "get", "key", "put", "entry", "defaultEqualityCheck", "a", "b", "next", "i", "require_lib", "get", "memoize", "createSelector", "i", "createStructuredSelector", "key", "index", "require_lib", "middleware", "next", "__export", "configureStore", "createSlice", "isPlainObject", "isRejectedWithValue", "rest", "_i", "__spreadArray", "proto", "__extends", "MiddlewareArray", "isProduction", "prefix", "invariant", "stringify", "serializer", "indent", "keys", "_", "key", "path", "next", "ignore", "_c", "isBoolean", "x", "reducer", "initialState", "reducer2", "draft", "name", "m", "selectAll", "id", "merge", "a", "b", "i", "RejectWithValue", "FulfillWithMeta", "reason", "_a", "v", "matches", "TaskAbortError", "code", "assign", "defaultErrorHandler", "api", "set", "store", "l", "require_dist", "__export", "createApi", "fetchBaseQuery", "setupListeners", "status", "base", "import_toolkit", "isPlainObject", "key", "import_toolkit2", "k", "v", "_a", "baseUrl", "x", "api", "_a2", "_j", "_k", "_l", "body", "_m", "rest", "body2", "divider", "r", "e", "text", "HandledError", "baseQuery", "defaultOptions", "_", "import_toolkit3", "isFunction", "t", "context", "__spreadArray", "registered", "import_toolkit4", "id", "initialState", "merge", "d", "a", "reducer", "key2", "m", "definition", "api2", "handlers", "build", "next", "tagTypes", "__export", "createApi", "import_toolkit2", "import_react3", "import_query", "import_react_redux2", "import_react", "serialize", "import_react2", "import_react_redux", "import_toolkit", "key", "key2", "x", "api", "batch", "useDispatch", "useSelector", "context", "defaultOptions", "name", "_c", "_d", "_a", "select", "_", "store", "info", "status", "e", "capitalize", "__spreadArray", "import_react_redux3", "definition", "import_toolkit3", "import_react4", "import_react5", "import_react_redux4", "import_query2", "require_react", "x", "decode", "i", "match", "key", "string", "keys", "i", "key", "isNullOrUndefined", "key", "index", "encode", "decode", "a", "b", "parse", "k", "keys", "x", "queryString", "filter", "lookup", "code", "i", "len", "start", "len2", "e", "m", "i", "d", "s", "c", "Buffer", "proto", "e", "b", "checked", "string", "i", "a", "x", "y", "list", "start", "n", "m", "toString", "dir", "j", "byteLength", "code", "c", "table", "debounce", "context", "classNames", "i", "key", "t", "e", "r", "n", "i", "a", "l", "o", "c", "u", "s", "d", "p", "h", "m", "v", "b", "y", "w", "O", "E", "x", "j", "M", "T", "S", "L", "R", "z", "I", "X", "D", "H", "Y", "k", "f", "q", "B", "$", "G", "K", "Q", "_", "dt", "require_dist", "t", "e", "c", "n", "h", "r", "i", "s", "a", "u", "y", "l", "o", "f", "d", "m", "v", "k", "p", "b", "w", "D", "M", "O", "S", "Y", "L", "x", "j", "I", "T", "E", "H", "_", "g", "F", "P", "J", "U", "R", "e", "r", "t", "n", "a", "d", "i", "l", "u", "c", "s", "o", "f", "m", "p", "h", "y", "b", "v", "x", "w", "k", "D", "O", "Y", "g", "M", "E", "P", "C", "N", "S", "I", "j", "T", "R", "A", "L", "F", "W", "B", "_", "V", "z", "H", "q", "J", "K", "U", "$", "G", "Q", "X", "Z", "ee", "re", "me", "tr", "hr", "root", "factory", "exports", "toDecimal", "captures", "match", "name", "__webpack_require__", "self", "module", "hasOwnProperty", "i", "n", "s", "key", "has", "text", "x", "location", "assign", "isValidElement", "is", "y", "checker", "typeOf", "Fragment", "StrictMode", "isElement", "_a", "children", "settings", "__rest", "matches", "Context", "__assign", "all", "k", "v", "join", "keys", "useMatches", "useMediaQuery", "definition", "x", "create", "all", "name", "log", "messages", "key", "warn", "version", "k", "path", "nodeInterop", "key", "valid", "path", "content", "extension", "transform", "require_isPlainObject", "isPlainObject", "k", "v", "i", "code", "valid", "isSurrogate", "s", "i", "cloneNode", "parent", "j", "Node", "index", "next", "clone", "name", "toString", "get", "set", "raw", "require_types", "_getRequireWildcardCache", "key", "i", "n", "p", "_setPrototypeOf", "o", "Container", "append", "prepend", "index", "id", "node", "empty", "walk", "split", "map", "filter", "toString", "get", "i", "p", "_setPrototypeOf", "o", "Root", "toString", "set", "p", "_setPrototypeOf", "o", "Selector", "hasOwnProperty", "merge", "key", "cssesc", "string", "quote", "i", "p", "_setPrototypeOf", "o", "ClassName", "get", "set", "v", "p", "_setPrototypeOf", "o", "Comment", "p", "_setPrototypeOf", "o", "ID", "i", "p", "_setPrototypeOf", "o", "Namespace", "get", "set", "p", "_setPrototypeOf", "o", "Tag", "p", "_setPrototypeOf", "o", "String", "p", "_setPrototypeOf", "o", "Pseudo", "toString", "deprecated", "name", "_", "i", "p", "_setPrototypeOf", "o", "m", "Attribute", "v", "quote", "name", "count", "toString", "get", "set", "p", "_setPrototypeOf", "o", "Universal", "p", "_setPrototypeOf", "o", "Combinator", "p", "_setPrototypeOf", "o", "Nesting", "list", "a", "b", "space", "tab", "comment", "t", "_getRequireWildcardCache", "key", "i", "css", "start", "next", "code", "content", "quote", "_getRequireWildcardCache", "key", "i", "node", "list", "Parser", "attribute", "content", "next", "space", "n", "position", "name", "comment", "pseudo", "string", "index", "current", "parse", "required", "get", "Processor", "parser", "root", "transform", "string", "e", "ast", "process", "attribute", "className", "combinator", "comment", "id", "nesting", "pseudo", "root", "selector", "string", "tag", "universal", "node", "isString", "key", "require_dist", "_getRequireWildcardCache", "key", "parser", "className", "all", "name", "v", "_", "r", "b", "a", "match", "color", "all", "name", "color", "properties", "p", "all", "name", "shadow", "all", "name", "normalize", "number", "shadow", "color", "image", "position", "match", "all", "name", "s", "all", "name", "parser", "selectors", "node", "lookup", "_", "tailwindConfig", "color", "matches", "match", "resolveConfig", "isFunction", "k", "key", "extend", "value", "e", "path", "matches", "prefix", "resolvePath", "index", "ref", "t", "c", "resolveConfig", "require_resolveConfig", "resolveConfig", "swizzle", "i", "hasOwnProperty", "name", "string", "prefix", "match", "i", "i2", "h", "s", "l", "a", "w", "b", "r", "key", "convert", "r", "b", "h", "s", "l", "v", "diff", "c", "w", "k", "m", "y", "x", "z", "a", "i", "f", "p", "q", "t", "n", "y2", "x2", "z2", "hr", "color", "string", "match", "pure", "i", "node", "link", "path", "convert", "i", "routes", "require_color", "convert", "i", "keys", "color", "self", "element", "contrastRatio", "p", "w", "a", "w2", "number", "m", "v", "index", "n", "transform", "hasOwnProperty", "key", "keys", "proto", "isFunction", "isObject", "key", "target", "result", "isObject", "key2", "__export", "__toCommonJS", "__toESM", "forEach", "h", "s", "l", "plugin", "name", "definition", "flatten", "key", "Color", "string", "m", "str", "_", "i", "index", "style", "i", "position", "start", "node", "whitespace", "match", "re", "m", "c", "comment", "style", "capitalize", "match", "prefix", "style", "defineProperty", "isArray", "isPlainObject", "key", "setProperty", "getProperty", "name", "extend", "clone", "i", "copyTextToClipboard", "text", "__export", "__toCommonJS", "name", "_a", "init", "value", "list", "s", "reducer", "initialState", "parse", "serialize", "decode", "encode", "i", "index", "key", "name", "e", "require_lib", "global", "factory", "exports", "require_browser", "json", "format", "match", "_", "__extends", "extendStatics", "d", "b", "p", "__spreadArray", "i", "j", "InvariantError", "invariant", "require_lib", "m", "k", "k2", "exports", "p", "require_lib", "s", "m", "h", "d", "w", "y", "parse", "match", "n", "name", "env", "disable", "enabled", "destroy", "key", "i", "self", "index", "match", "format", "extend", "v", "name", "require_browser", "c", "index", "match", "r", "formatters", "v", "R", "ReflectApply", "ReflectOwnKeys", "warning", "NumberIsNaN", "n", "i", "events", "prepend", "m", "w", "once", "list", "position", "keys", "key", "index", "name", "resolver", "__extends", "extendStatics", "d", "b", "p", "s", "i", "r", "k", "a", "j", "StrictEventEmitter", "require_lib", "m", "k", "k2", "exports", "p", "AsyncEventEmitterReadyState", "__extends", "AsyncEventEmitter", "log", "_this", "__spreadArray", "_a", "filter", "InterceptorReadyState", "Interceptor", "log", "_a", "__extends", "BatchInterceptor", "log", "interceptor", "require_shams", "i", "Empty", "undefined", "e", "x", "doEval", "name", "stringToPath", "string", "match", "number", "quote", "getBaseIntrinsic", "alias", "i", "e", "applyBind", "name", "e", "_", "e", "all", "hasOwnProperty", "forEachArray", "i", "forEachString", "string", "forEachObject", "k", "forEach", "list", "i", "e", "i", "proto", "e", "proto", "name", "e", "require_types", "f", "e", "isUint8Array", "isArrayBuffer", "require_util", "getOwnPropertyDescriptors", "keys", "i", "f", "isString", "x", "_", "isObject", "deprecated", "set", "isBoolean", "isUndefined", "style", "isFunction", "name", "isDate", "base", "n", "key", "l", "hasOwnProperty", "isNullOrUndefined", "re", "d", "e", "isPrimitive", "months", "add", "reason", "self", "require_lib", "text", "getArrayBuffer", "c", "r", "v", "IsomorphicRequest", "init", "text", "_a", "__extends", "InteractiveIsomorphicRequest", "name", "e", "key", "value", "parse", "cookies", "start", "__rest", "s", "e", "t", "p", "i", "now", "_a", "name", "require_lib", "m", "k", "k2", "exports", "p", "d2", "a", "b", "x", "y", "d3", "dd", "version", "require_invariant", "invariant", "position", "match", "location", "body", "i", "_", "prefix", "path", "node", "location", "position", "Token", "start", "OperationTypeNode", "DirectiveLocation", "Kind", "code", "i", "indent", "TokenKind", "code", "body", "location", "start", "position", "escape", "point", "properties", "key", "i", "name", "instanceOf", "className", "body", "name", "require_parser", "parse", "parser", "Parser", "start", "name", "alias", "node", "x", "x", "list", "list", "map", "key", "code", "option", "a", "b", "j", "i", "map", "key", "visit", "root", "keys", "index", "node", "key", "parent", "path", "i", "ast", "node", "join", "wrap", "prefix", "alias", "name", "indent", "x", "start", "node", "name", "i", "isObjectType", "node", "name", "name", "name", "TypeKind", "name", "name", "map", "context", "errors", "node", "node", "name", "node", "context", "node", "definition", "context", "node", "x", "context", "node", "context", "context", "name", "node", "context", "node", "fragment", "context", "node", "parent", "context", "node", "definition", "context", "node", "context", "node", "fragment", "s", "context", "node", "context", "node", "fragment", "context", "node", "reason", "context", "i", "j", "fragment", "name2", "a", "b", "map", "context", "node", "name", "context", "node", "context", "requiredArgs", "context", "node", "path", "key", "key", "path", "defaultOnError", "path", "errorPrefix", "index", "errors", "hasOwnProperty", "path", "prefix", "node", "name", "node", "name", "fragment", "context", "node", "document", "definition", "list", "key", "group", "context", "node", "context", "node", "context", "node", "context", "node", "context", "node", "context", "node", "context", "node", "context", "node", "context", "node", "context", "node", "context", "node", "context", "node", "context", "node", "context", "node", "context", "node", "ast", "name", "node", "set", "fragment", "require_validate", "errors", "context", "e", "a2", "a3", "i", "key", "path", "document", "errors", "definition", "path", "info", "index", "i", "graphql", "document", "document", "path", "info", "context", "node", "context", "node", "definition", "document", "name", "node", "deprecated", "document", "x", "map", "key", "n", "i", "f", "reason", "prefix", "documents", "node", "body", "name", "BreakingChangeType", "DangerousChangeType", "diff", "location", "ast", "name", "require_utilities", "require_graphql", "i", "name", "j", "code", "count", "parse", "_a", "escapeString", "key", "path", "value", "index", "result", "prefix", "compile", "encode", "x", "matches", "optional", "match", "keys", "re", "decode", "m", "start", "_a", "__extends", "FetchInterceptor", "init", "body", "_a", "_b", "request", "__assign", "response", "_this", "find", "list", "i", "assign", "key", "uri", "find", "element", "list", "p", "_extends", "t", "code", "index", "i", "node", "key", "version", "doctype", "Document", "root", "Node", "next", "map", "n", "prefix", "c", "previous", "isElementNode", "parent", "hasDoctypeChildThatIsNotChild", "id", "classNames", "base", "matches", "Comment", "name", "count", "text", "start", "uri", "node2", "v", "getTextContent", "e", "parse", "code", "a", "k", "end", "start", "position", "p", "m", "text", "prefix", "i", "e", "f", "t", "value", "s", "c", "n", "next", "name", "match", "sax", "normalize", "build", "key", "position", "node", "i", "prefix", "uri", "start", "name", "dt", "l", "require_lib", "json", "_", "init", "_", "index", "EventPolyfill", "__extends", "ProgressEventPolyfill", "init", "init", "XMLHttpRequest", "log", "_a", "options", "_b", "name", "body", "__extends", "XMLHttpRequestInterceptor", "log", "count", "index", "require_lib", "m", "k", "k2", "exports", "p", "__export", "graphql", "rest", "setupWorker", "__toCommonJS", "body", "errors", "fetch", "json", "set", "status", "text", "xml", "name", "name2", "__toESM", "isObject", "key", "body2", "init", "formatMessage", "warn", "worker", "context", "_a", "rest2", "d", "s", "text2", "handlers", "import_graphql", "node", "ast", "map", "path", "status2", "now", "baseUrl", "_", "shouldSkip", "resolver", "start", "clone", "import_msw", "import_msw", "import_query_string", "order", "rest", "a", "b", "id", "i", "queryString", "import_msw", "id", "name", "import_msw", "import_query_string", "mockSeries", "metadata", "id", "queryString", "import_msw", "import_query_string", "mockSeries", "metadata", "search", "order", "rest", "id", "a", "b", "group", "queryString", "import_msw", "import_query_string", "mockSeries", "metadata", "rest", "venues", "queryString", "import_msw", "import_query_string", "queryString", "status", "import_msw", "import_query_string", "selectedColumns", "mockSeries", "metadata", "rest", "id", "i", "queryString", "import_msw", "import_msw", "import_query_string", "rest", "queryString", "import_msw", "import_query_string", "search", "filteredTenants", "queryString", "import_msw", "import_query_string", "venues", "search", "filteredVenues", "queryString", "import_msw", "import_query_string", "search", "filteredhomeownerAssociations", "queryString", "import_msw", "import_msw", "import_msw", "import_query_string", "mockSeries", "metadata", "queryString", "id", "document", "import_msw", "React", "ReactDOM", "d", "b", "p", "__assign", "t", "s", "i", "n", "e", "i", "l", "React", "React", "React", "ErrorKind", "TYPE", "SKELETON_TYPE", "match", "x", "_a", "option", "_", "all", "opt", "locale", "start", "n", "re", "_", "startsWith", "s", "search", "position", "fromCodePoint", "i", "code", "fromEntries", "_a", "k", "v", "codePointAt", "index", "trimStart", "trimEnd", "matchIdentifierAtIndex", "match", "c", "Parser", "children", "location", "style", "e", "prefix", "c", "k", "serializer", "context", "serialize", "key", "ErrorCode", "FormatError", "code", "InvalidValueError", "InvalidValueTypeError", "MissingValueError", "PART_TYPE", "all", "formatters", "style", "children", "p", "c", "c2", "all", "k", "store", "key", "_a", "IntlMessageFormat", "IntlErrorCode", "IntlError", "code", "UnsupportedFormatterError", "InvalidConfigError", "MissingDataError", "IntlFormatError", "locale", "MessageFormatError", "locale", "MissingTranslationError", "locale", "e", "_a", "name", "warning", "createFastMemoizeCache", "store", "key", "_a", "format", "all", "k", "keys", "_a", "locale", "messages", "id", "e", "_a", "locale", "format", "e", "_a", "locale", "e", "i", "all", "_a", "locale", "v", "id", "e", "_a", "locale", "e", "getFormatter", "_a", "locale", "format", "e", "getFormatter", "_a", "locale", "format", "e", "messages", "formatters", "locale", "DEFAULT_INTL_CONFIG", "i", "key", "DisplayName", "DisplayNameParts", "children", "name", "children", "Component", "React", "k", "v", "formatMessage", "formatters", "rest", "createIntl", "_a", "DEFAULT_INTL_CONFIG", "IntlProvider", "import_react_redux", "definition", "key", "isNodeJS", "process", "versions", "nw", "electron", "type", "FONT_IDENTITY_MATRIX", "LINE_FACTOR", "LINE_DESCENT_FACTOR", "BASELINE_FACTOR", "RenderingIntentFlag", "ANY", "DISPLAY", "PRINT", "SAVE", "ANNOTATIONS_FORMS", "ANNOTATIONS_STORAGE", "ANNOTATIONS_DISABLE", "IS_EDITING", "OPLIST", "AnnotationMode", "DISABLE", "ENABLE", "ENABLE_FORMS", "ENABLE_STORAGE", "AnnotationEditorPrefix", "AnnotationEditorType", "NONE", "FREETEXT", "HIGHLIGHT", "STAMP", "INK", "POPUP", "SIGNATURE", "COMMENT", "AnnotationEditorParamsType", "RESIZE", "CREATE", "FREETEXT_SIZE", "FREETEXT_COLOR", "FREETEXT_OPACITY", "INK_COLOR", "INK_THICKNESS", "INK_OPACITY", "HIGHLIGHT_COLOR", "HIGHLIGHT_THICKNESS", "HIGHLIGHT_FREE", "HIGHLIGHT_SHOW_ALL", "DRAW_STEP", "PermissionFlag", "MODIFY_CONTENTS", "COPY", "MODIFY_ANNOTATIONS", "FILL_INTERACTIVE_FORMS", "COPY_FOR_ACCESSIBILITY", "ASSEMBLE", "PRINT_HIGH_QUALITY", "TextRenderingMode", "FILL", "STROKE", "FILL_STROKE", "INVISIBLE", "FILL_ADD_TO_PATH", "STROKE_ADD_TO_PATH", "FILL_STROKE_ADD_TO_PATH", "ADD_TO_PATH", "FILL_STROKE_MASK", "ADD_TO_PATH_FLAG", "ImageKind", "GRAYSCALE_1BPP", "RGB_24BPP", "RGBA_32BPP", "AnnotationType", "TEXT", "LINK", "LINE", "SQUARE", "CIRCLE", "POLYGON", "POLYLINE", "UNDERLINE", "SQUIGGLY", "STRIKEOUT", "CARET", "FILEATTACHMENT", "SOUND", "MOVIE", "WIDGET", "SCREEN", "PRINTERMARK", "TRAPNET", "WATERMARK", "THREED", "REDACT", "AnnotationBorderStyleType", "SOLID", "DASHED", "BEVELED", "INSET", "UNDERLINE", "VerbosityLevel", "ERRORS", "WARNINGS", "INFOS", "OPS", "dependency", "setLineWidth", "setLineCap", "setLineJoin", "setMiterLimit", "setDash", "setRenderingIntent", "setFlatness", "setGState", "save", "restore", "transform", "moveTo", "lineTo", "curveTo", "curveTo2", "curveTo3", "closePath", "rectangle", "stroke", "closeStroke", "fill", "eoFill", "fillStroke", "eoFillStroke", "closeFillStroke", "closeEOFillStroke", "endPath", "clip", "eoClip", "beginText", "endText", "setCharSpacing", "setWordSpacing", "setHScale", "setLeading", "setFont", "setTextRenderingMode", "setTextRise", "moveText", "setLeadingMoveText", "setTextMatrix", "nextLine", "showText", "showSpacedText", "nextLineShowText", "nextLineSetSpacingShowText", "setCharWidth", "setCharWidthAndBounds", "setStrokeColorSpace", "setFillColorSpace", "setStrokeColor", "setStrokeColorN", "setFillColor", "setFillColorN", "setStrokeGray", "setFillGray", "setStrokeRGBColor", "setFillRGBColor", "setStrokeCMYKColor", "setFillCMYKColor", "shadingFill", "beginInlineImage", "beginImageData", "endInlineImage", "paintXObject", "markPoint", "markPointProps", "beginMarkedContent", "beginMarkedContentProps", "endMarkedContent", "beginCompat", "endCompat", "paintFormXObjectBegin", "paintFormXObjectEnd", "beginGroup", "endGroup", "beginAnnotation", "endAnnotation", "paintImageMaskXObject", "paintImageMaskXObjectGroup", "paintImageXObject", "paintInlineImageXObject", "paintInlineImageXObjectGroup", "paintImageXObjectRepeat", "paintImageMaskXObjectRepeat", "paintSolidColorImageMask", "constructPath", "setStrokeTransparent", "setFillTransparent", "rawFillPath", "DrawOPS", "PasswordResponses", "NEED_PASSWORD", "INCORRECT_PASSWORD", "verbosity", "setVerbosityLevel", "level", "Number", "isInteger", "getVerbosityLevel", "info", "msg", "console", "warn", "unreachable", "Error", "assert", "cond", "_isValidProtocol", "url", "protocol", "createValidAbsoluteUrl", "baseUrl", "options", "addDefaultProtocol", "startsWith", "dots", "match", "length", "tryConvertEncoding", "stringToUTF8String", "absoluteUrl", "URL", "parse", "updateUrlHash", "hash", "allowRel", "res", "href", "split", "shadow", "obj", "prop", "value", "nonSerializable", "Object", "defineProperty", "enumerable", "configurable", "writable", "BaseException", "BaseExceptionClosure", "message", "name", "prototype", "constructor", "PasswordException", "code", "UnknownErrorException", "details", "InvalidPDFException", "ResponseException", "status", "missing", "FormatError", "AbortException", "bytesToString", "bytes", "undefined", "MAX_ARGUMENT_COUNT", "String", "fromCharCode", "apply", "strBuf", "i", "chunkEnd", "Math", "min", "chunk", "subarray", "push", "join", "stringToBytes", "str", "Uint8Array", "charCodeAt", "string32", "isLittleEndian", "buffer8", "Uint8Array", "view32", "Uint32Array", "buffer", "isEvalSupported", "Function", "FeatureTest", "shadow", "isOffscreenCanvasSupported", "OffscreenCanvas", "isImageDecoderSupported", "ImageDecoder", "platform", "userAgent", "navigator", "isAndroid", "includes", "isLinux", "isMac", "isWindows", "isFirefox", "isCSSRoundSupported", "globalThis", "CSS", "supports", "hexNumbers", "Array", "from", "keys", "n", "toString", "padStart", "Util", "makeHexColor", "r", "g", "b", "domMatrixToTransform", "dm", "a", "c", "d", "e", "f", "scaleMinMax", "transform", "minMax", "temp", "m1", "m2", "multiplyByDOMMatrix", "m", "md", "applyTransform", "p", "pos", "p0", "p1", "applyTransformToBezier", "m0", "m3", "m4", "m5", "i", "pI", "pI1", "applyInverseTransform", "axialAlignedBoundingBox", "rect", "output", "r0", "r1", "r2", "r3", "a0", "a2", "a1", "a3", "b0", "b2", "b1", "b3", "m1r0", "m1r2", "m2r1", "m2r3", "Math", "min", "max", "inverseTransform", "singularValueDecompose2dScale", "matrix", "first", "second", "sqrt", "normalizeRect", "slice", "intersect", "rect1", "rect2", "xLow", "xHigh", "yLow", "yHigh", "pointBoundingBox", "x", "y", "rectBoundingBox", "x0", "y0", "x1", "y1", "x2", "x3", "y2", "y3", "t", "mt", "tt", "ttt", "abs", "delta", "sqrtDelta", "bezierBoundingBox", "stringToUTF8String", "str", "decodeURIComponent", "escape", "NormalizeRegex", "NormalizationMap", "normalizeUnicode", "str", "Map", "replaceAll", "_", "p1", "p2", "normalize", "get", "getUuid", "crypto", "randomUUID", "buf", "Uint8Array", "getRandomValues", "bytesToString", "AnnotationPrefix", "_isValidExplicitDest", "validRef", "validName", "dest", "Array", "isArray", "length", "page", "zoom", "args", "Number", "isInteger", "argsLen", "allowNull", "name", "arg", "MathClamp", "v", "min", "max", "Math", "toBase64Util", "arr", "Uint8Array", "prototype", "toBase64", "btoa", "bytesToString", "fromBase64Util", "str", "fromBase64", "stringToBytes", "atob", "Promise", "try", "fn", "args", "resolve", "Math", "sumPrecise", "numbers", "reduce", "a", "b", "XfaText", "textContent", "xfa", "items", "output", "styles", "Object", "create", "walk", "node", "str", "name", "value", "shouldBuildText", "attributes", "push", "children", "child", "XfaLayer", "setupStorage", "html", "id", "element", "storage", "intent", "storedData", "getValue", "value", "name", "textContent", "addEventListener", "event", "setValue", "target", "attributes", "type", "xfaOn", "setAttribute", "xfaOff", "removeAttribute", "checked", "getAttribute", "option", "children", "selected", "hasOwnProperty", "options", "selectedIndex", "setAttributes", "linkService", "isHTMLAnchorElement", "HTMLAnchorElement", "key", "Object", "entries", "undefined", "length", "join", "assign", "style", "addLinkAttributes", "href", "newWindow", "dataId", "render", "parameters", "annotationStorage", "root", "xfaHtml", "rootHtml", "document", "createElement", "isNotForRichText", "rootDiv", "div", "append", "viewport", "transform", "textDivs", "node", "createTextNode", "XfaText", "shouldBuildText", "push", "stack", "parent", "i", "at", "pop", "child", "childHtml", "xmlns", "createElementNS", "el", "querySelectorAll", "update", "hidden", "SVG_NS", "PixelsPerInch", "CSS", "PDF", "PDF_TO_CSS_UNITS", "fetchData", "url", "type", "isValidFetchUrl", "document", "baseURI", "response", "fetch", "ok", "Error", "statusText", "arrayBuffer", "blob", "json", "text", "Promise", "resolve", "reject", "request", "XMLHttpRequest", "open", "responseType", "onreadystatechange", "readyState", "DONE", "status", "responseText", "send", "PageViewport", "constructor", "viewBox", "userUnit", "scale", "rotation", "offsetX", "offsetY", "dontFlip", "centerX", "centerY", "rotateA", "rotateB", "rotateC", "rotateD", "offsetCanvasX", "offsetCanvasY", "width", "height", "Math", "abs", "transform", "rawDims", "dims", "shadow", "pageWidth", "pageHeight", "pageX", "pageY", "clone", "slice", "convertToViewportPoint", "x", "y", "p", "Util", "applyTransform", "convertToViewportRectangle", "rect", "topLeft", "bottomRight", "convertToPdfPoint", "applyInverseTransform", "RenderingCancelledException", "BaseException", "msg", "extraDelay", "isDataScheme", "ii", "length", "i", "trim", "substring", "toLowerCase", "isPdfFile", "filename", "test", "getFilenameFromUrl", "split", "lastIndexOf", "getPdfFilenameFromUrl", "defaultFilename", "warn", "getURL", "urlString", "URL", "decodeURIComponent", "newURL", "decode", "name", "decoded", "includes", "at", "pdfRegex", "pathname", "searchParams", "size", "values", "Array", "from", "reverse", "value", "keys", "key", "hash", "reFilename", "hashFilename", "exec", "StatTimer", "started", "Object", "create", "times", "time", "Date", "now", "timeEnd", "push", "start", "end", "toString", "outBuf", "longest", "max", "padEnd", "join", "baseUrl", "res", "parse", "protocol", "noContextMenu", "e", "preventDefault", "stopEvent", "stopPropagation", "deprecated", "details", "console", "log", "PDFDateString", "toDateObject", "input", "RegExp", "matches", "year", "parseInt", "month", "day", "hour", "minute", "second", "universalTimeRelation", "offsetHour", "offsetMinute", "UTC", "getXfaPageViewport", "xfaPage", "attributes", "style", "getRGB", "color", "startsWith", "colorRGB", "map", "getColorValues", "colors", "span", "createElement", "visibility", "colorScheme", "body", "append", "computedColor", "window", "getComputedStyle", "set", "remove", "getCurrentTransform", "ctx", "a", "b", "c", "d", "f", "getTransform", "getCurrentTransformInverse", "invertSelf", "setLayerDimensions", "div", "viewport", "mustFlip", "mustRotate", "useRound", "FeatureTest", "isCSSRoundSupported", "w", "h", "widthStr", "heightStr", "setAttribute", "OutputScale", "pixelRatio", "sx", "sy", "scaled", "symmetric", "limitCanvas", "maxPixels", "maxDim", "capAreaFactor", "maxAreaScale", "Infinity", "maxWidthScale", "maxHeightScale", "capPixels", "sqrt", "maxScale", "min", "globalThis", "devicePixelRatio", "winPixels", "ceil", "screen", "availWidth", "availHeight", "SupportedImageMimeTypes", "ColorScheme", "isDarkMode", "matchMedia", "CSSConstants", "commentForegroundColor", "element", "classList", "add", "display", "applyOpacity", "r", "g", "opacity", "white", "round", "RGBToHSL", "rgb", "output", "l", "HSLToRGB", "hsl", "s", "m", "floor", "computeLuminance", "contrastRatio", "hsl1", "hsl2", "lum1", "lum2", "contrastCache", "Map", "findContrastColor", "baseColor", "fixedColor", "cachedValue", "get", "array", "Float32Array", "subarray", "baseHSL", "fixedHSL", "isFixedColorDark", "minContrast", "PRECISION", "mid", "makeHexColor", "renderRichText", "html", "dir", "className", "container", "fragment", "createDocumentFragment", "lines", "line", "createTextNode", "XfaLayer", "render", "xfaHtml", "intent", "firstChild", "EditorToolbar", "constructor", "editor", "Object", "freeze", "freetext", "highlight", "ink", "stamp", "signature", "render", "editToolbar", "document", "createElement", "classList", "add", "setAttribute", "signal", "_uiManager", "_signal", "AbortSignal", "aborted", "addEventListener", "noContextMenu", "buttons", "className", "append", "position", "toolbarPosition", "style", "x", "direction", "insetInlineEnd", "top", "div", "e", "stopPropagation", "_focusEventsAllowed", "stopEvent", "element", "bind", "capture", "hide", "hideDropdown", "show", "remove", "shown", "addDeleteButton", "editorType", "button", "tabIndex", "delete", "divider", "addAltText", "altText", "addComment", "comment", "beforeElement", "renderForToolbar", "insertBefore", "toolbar", "addColorPicker", "colorPicker", "renderButton", "addEditSignatureButton", "signatureManager", "renderEditButton", "removeButton", "name", "removeToolbarCommentButton", "addButton", "tool", "addButtonBefore", "beforeSelector", "querySelector", "updateEditSignatureButton", "description", "title", "destroy", "FloatingToolbar", "uiManager", "hasCommentManager", "commentSelection", "highlightSelection", "boxes", "isLTR", "lastY", "lastX", "box", "y", "height", "width", "parent", "buttonClass", "l10nId", "labelL10nId", "clickHandler", "span", "bindEvents", "obj", "element", "names", "name", "addEventListener", "bind", "IdManager", "id", "AnnotationEditorPrefix", "ImageManager", "getUuid", "_isSVGFittingCanvas", "svg", "canvas", "OffscreenCanvas", "ctx", "getContext", "willReadFrequently", "image", "Image", "src", "promise", "decode", "then", "drawImage", "Uint32Array", "getImageData", "data", "buffer", "shadow", "key", "rawData", "Map", "get", "bitmap", "refCounter", "isSvg", "url", "fetchData", "File", "file", "Blob", "type", "mustRemoveAspectRatioPromise", "fileReader", "FileReader", "imageElement", "imagePromise", "Promise", "resolve", "reject", "onload", "svgUrl", "result", "onerror", "readAsDataURL", "createImageBitmap", "e", "warn", "set", "getFromFile", "lastModified", "size", "getFromUrl", "getFromBlob", "blobPromise", "blob", "getFromId", "getFromCanvas", "offscreen", "width", "height", "transferToImageBitmap", "getSvgUrl", "deleteId", "transferFromImageBitmap", "convertToBlob", "close", "isValidId", "startsWith", "CommandManager", "constructor", "maxSize", "add", "cmd", "undo", "post", "mustExec", "NaN", "overwriteIfSameType", "keepUndo", "save", "length", "push", "next", "splice", "redo", "hasSomethingToUndo", "hasSomethingToRedo", "cleanType", "i", "destroy", "KeyboardManager", "callbacks", "allKeys", "Set", "isMac", "FeatureTest", "platform", "keys", "callback", "options", "isMacKey", "slice", "split", "at", "event", "altKey", "ctrlKey", "metaKey", "shiftKey", "str", "join", "exec", "self", "has", "info", "bubbles", "args", "checker", "stopEvent", "ColorManager", "_colorsMapping", "_colors", "colors", "getColorValues", "convert", "color", "rgb", "getRGB", "window", "matchMedia", "matches", "RGB", "every", "x", "getHexCode", "Util", "makeHexColor", "AnnotationEditorUIManager", "AbortController", "_editorUndoBar", "AnnotationEditorType", "NONE", "isEditing", "isEmpty", "hasSelectedEditor", "hasSelectedText", "TRANSLATE_SMALL", "TRANSLATE_BIG", "_keyboardManager", "proto", "prototype", "arrowChecker", "contains", "document", "activeElement", "tagName", "hasSomethingToControl", "textInputChecker", "_self", "target", "el", "HTMLInputElement", "small", "big", "selectAll", "delete", "addNewEditorFromKeyboard", "HTMLButtonElement", "isEnterHandled", "unselectAll", "translateSelectedEditors", "container", "viewer", "viewerAlert", "altTextManager", "commentManager", "signatureManager", "eventBus", "pdfDocument", "pageColors", "highlightColors", "enableHighlightFloatingButton", "enableUpdatedAddImage", "enableNewAltTextWhenAddingImage", "mlManager", "editorUndoBar", "supportsPinchToZoom", "signal", "_signal", "_eventBus", "_on", "onEditingAction", "onPageChanging", "onScaleChanging", "onRotationChanging", "onSetPreference", "evt", "updateParams", "value", "capture", "annotationStorage", "filterFactory", "viewParameters", "realScale", "PixelsPerInch", "PDF_TO_CSS_UNITS", "rotation", "isShiftKeyDown", "_supportsPinchToZoom", "setSidebarUiManager", "abort", "layer", "values", "clear", "hide", "clearTimeout", "combinedSignal", "ac", "AbortSignal", "any", "useNewAltTextFlow", "useNewAltTextWhenAddingImage", "hcmFilter", "addHCMFilter", "foreground", "background", "direction", "getComputedStyle", "_highlightColors", "map", "pair", "trim", "toUpperCase", "hasHCM", "isNameForHCM", "endsWith", "replace", "highlightColorNames", "Array", "from", "reverse", "getNonHCMColor", "colorName", "getNonHCMColorName", "setCurrentDrawingSession", "disableUserSelect", "setMainHighlightColorPicker", "colorPicker", "editAltText", "editor", "firstTime", "hasCommentManager", "editComment", "posX", "posY", "showDialog", "selectComment", "pageIndex", "uid", "getEditorByUID", "toggleComment", "updateComment", "getData", "updatePopupColor", "removeComment", "removeComments", "isSelected", "visibility", "undefined", "toggleCommentPopup", "makeCommentColor", "opacity", "getCommentDialogElement", "dialogElement", "waitForEditorsRendered", "pageNumber", "withResolvers", "onEditorsRendered", "_off", "on", "getSignature", "uiManager", "switchToMode", "mode", "once", "dispatch", "source", "setPreference", "focusMainContainer", "focus", "findParent", "y", "layerX", "layerY", "div", "getBoundingClientRect", "classList", "toggle", "addShouldRescale", "removeShouldRescale", "scale", "commitOrRemove", "pagesRotation", "anchorNode", "nodeType", "Node", "TEXT_NODE", "parentElement", "textLayer", "currentLayer", "hasTextLayer", "highlightSelection", "methodOfCreation", "comment", "selection", "getSelection", "isCollapsed", "anchorOffset", "focusNode", "focusOffset", "text", "toString", "anchorElement", "closest", "boxes", "getSelectionBoxes", "empty", "isNoneMode", "createAndAddNewEditor", "showAllEditors", "HIGHLIGHT", "commentSelection", "FloatingToolbar", "show", "getAndRemoveDataFromAnnotationStorage", "annotationId", "storedValue", "getRawValue", "remove", "addToAnnotationStorage", "setValue", "a11yAlert", "messageId", "setAttribute", "JSON", "stringify", "removeAttribute", "activeLayer", "toggleDrawing", "pointerup", "button", "blur", "hasSelection", "_focusEventsAllowed", "lastEditor", "lastActiveElement", "keydown", "keyup", "copy", "cut", "paste", "dragOver", "drop", "addEditListeners", "removeEditListeners", "dataTransfer", "items", "editorType", "isHandlingMimeForPasting", "dropEffect", "preventDefault", "item", "editors", "serialized", "serialize", "clipboardData", "setData", "parse", "ex", "message", "isArray", "newEditors", "deserializedEditor", "deserialize", "addCommands", "isEditorHandlingKeyboard", "details", "hasChanged", "Object", "entries", "some", "assign", "AnnotationEditorParamsType", "HIGHLIGHT_FREE", "setEditingState", "registerEditorTypes", "types", "defaultPropertiesToUpdate", "getId", "getLayer", "currentPageIndex", "addLayer", "enable", "disable", "removeLayer", "updateMode", "editId", "isFromKeyboard", "mustEnterInEditMode", "POPUP", "hideSidebar", "destroyPopup", "hideStandaloneCommentButton", "addStandaloneCommentButton", "SIGNATURE", "loadSignatures", "getAnnotationsByType", "editorClass", "_editorType", "elementIds", "allComments", "annotationElementId", "hasComment", "deleted", "annotation", "popupRef", "contentsObj", "showSidebar", "setSelected", "enterInEditMode", "unselect", "canCreateNewEmptyEditor", "addNewEditor", "updateToolbar", "CREATE", "HIGHLIGHT_SHOW_ALL", "action", "updateDefaultParams", "visible", "updateButton", "state", "enableWaiting", "mustWait", "disableClick", "enableClick", "promises", "all", "getEditors", "getEditor", "addEditor", "removeEditor", "setTimeout", "addDeletedAnnotationElement", "addChangedExistingAnnotation", "isDeletedAnnotationElement", "removeDeletedAnnotationElement", "removeChangedExistingAnnotation", "addOrRebuild", "setActiveEditor", "propertiesToUpdate", "ed", "updateUI", "updateUIForDefaultProperties", "toggleSelected", "select", "firstSelectedEditor", "params", "cleanUndoStack", "drawingEditor", "endDrawingSession", "commit", "noCommit", "totalX", "totalY", "TIME_TO_WAIT", "translateInPage", "translationDone", "setUpDragSession", "savedX", "savedY", "savedPageIndex", "newX", "newY", "newPageIndex", "endDragSession", "mustBeAddedInUndoStack", "move", "parent", "_setParentAndPosition", "dragSelectedEditors", "tx", "ty", "drag", "rebuild", "changeParent", "getActive", "shouldGetKeyboardEvents", "isActive", "getMode", "isEditingMode", "imageManager", "ii", "rangeCount", "getRangeAt", "commonAncestorContainer", "parentWidth", "parentHeight", "rotator", "getAttribute", "w", "h", "range", "collapsed", "getClientRects", "renderAnnotationElement", "editorId", "hasBeenModified", "setMissingCanvas", "setCanvas", "addMissingCanvas", "AltText", "_l10n", "constructor", "editor", "_uiManager", "useNewAltTextFlow", "Object", "freeze", "added", "missing", "review", "initialize", "l10n", "render", "altText", "document", "createElement", "className", "tabIndex", "label", "append", "classList", "add", "setAttribute", "signal", "_signal", "addEventListener", "noContextMenu", "event", "stopPropagation", "onClick", "preventDefault", "editAltText", "_reportTelemetry", "action", "data", "capture", "target", "key", "guessedText", "finish", "focus", "focusVisible", "isEmpty", "hasData", "setGuessedText", "get", "generatedAltText", "toggleAltTextBadge", "visibility", "remove", "badge", "div", "toggle", "serialize", "isForCopying", "decorative", "textWithDisclaimer", "cancel", "enabled", "clearTimeout", "disabled", "shown", "destroy", "button", "tooltip", "id", "DELAY_TO_SHOW_TOOLTIP", "once", "setTimeout", "removeAttribute", "textContent", "parentNode", "element", "getElementForAltText", "Comment", "constructor", "editor", "renderForToolbar", "button", "document", "createElement", "className", "renderForStandalone", "position", "commentButtonPosition", "style", "insetInlineEnd", "_uiManager", "direction", "top", "color", "commentButtonColor", "backgroundColor", "focusButton", "setTimeout", "focus", "onUpdatedColor", "updatePopupColor", "commentButtonWidth", "getBoundingClientRect", "width", "parent", "boundingClientRect", "commentPopupPositionInLayer", "x", "y", "height", "parentX", "parentY", "parentWidth", "parentHeight", "pos", "hasDefaultPopupPosition", "removeStandaloneCommentButton", "remove", "removeToolbarCommentButton", "setCommentButtonStates", "selected", "hasPopup", "classList", "toggle", "ariaExpanded", "comment", "isStandalone", "hasCommentManager", "tabIndex", "ariaHasPopup", "ariaControls", "setAttribute", "ariaControlsElements", "getCommentDialogElement", "signal", "_signal", "AbortSignal", "aborted", "addEventListener", "noContextMenu", "e", "_focusEventsAllowed", "stopEvent", "capture", "event", "stopPropagation", "onClick", "preventDefault", "edit", "toggleComment", "target", "key", "options", "posX", "posY", "parentDimensions", "editComment", "finish", "focusVisible", "isDeleted", "isEmpty", "hasBeenEdited", "serialize", "data", "text", "richText", "date", "deleted", "Date", "setInitialText", "shown", "destroy", "TouchManager", "constructor", "container", "isPinchingDisabled", "isPinchingStopped", "onPinchStart", "onPinching", "onPinchEnd", "signal", "AbortController", "AbortSignal", "any", "addEventListener", "bind", "passive", "MIN_TOUCH_DISTANCE_TO_PINCH", "OutputScale", "pixelRatio", "evt", "touches", "length", "pointerDownAC", "opts", "capture", "cancelPointerDown", "e", "pointerType", "abort", "stopEvent", "opt", "onTouchEnd", "touch0", "touch1", "identifier", "touch0X", "screenX", "touch0Y", "screenY", "touch1X", "touch1Y", "screen0X", "screen0Y", "screen1X", "screen1Y", "touchInfo", "pTouch0X", "pTouch0Y", "pTouch1X", "pTouch1Y", "prevGapX", "prevGapY", "currGapX", "currGapY", "distance", "Math", "hypot", "pDistance", "abs", "origin", "destroy", "AnnotationEditor", "isSelected", "_isCopy", "_editToolbar", "_initialOptions", "Object", "create", "_initialData", "_isVisible", "_uiManager", "_focusEventsAllowed", "_l10n", "_l10nResizer", "_zIndex", "_borderLineWidth", "_colorManager", "ColorManager", "_telemetryTimeout", "_resizerKeyboardManager", "resize", "prototype", "_resizeWithKeyboard", "small", "AnnotationEditorUIManager", "TRANSLATE_SMALL", "big", "TRANSLATE_BIG", "shadow", "KeyboardManager", "args", "_stopResizingWithKeyboard", "constructor", "parameters", "parent", "id", "width", "height", "pageIndex", "name", "div", "uiManager", "annotationElementId", "_willKeepAspectRatio", "isCentered", "_structTreeParentId", "creationDate", "Date", "modificationDate", "rotation", "rawDims", "pageWidth", "pageHeight", "pageX", "pageY", "viewport", "pageRotation", "viewParameters", "pageDimensions", "pageTranslation", "parentDimensions", "x", "y", "isAttachedToDOM", "deleted", "editorType", "getPrototypeOf", "_type", "mode", "_editorType", "isDrawer", "_defaultLineColor", "getHexCode", "deleteAnnotationElement", "editor", "fakeEditor", "FakeEditor", "getNextId", "addToAnnotationStorage", "initialize", "l10n", "freeze", "topLeft", "topMiddle", "topRight", "middleRight", "bottomRight", "bottomMiddle", "bottomLeft", "middleLeft", "style", "getComputedStyle", "document", "documentElement", "parseFloat", "getPropertyValue", "updateDefaultParams", "_value", "defaultPropertiesToUpdate", "isHandlingMimeForPasting", "mime", "paste", "item", "unreachable", "propertiesToUpdate", "_isDraggable", "value", "classList", "toggle", "uid", "isEnterHandled", "center", "parentRotation", "fixAndSetPosition", "addCommands", "params", "currentLayer", "setInBackground", "zIndex", "setInForeground", "setParent", "remove", "focusin", "event", "setSelected", "focusout", "target", "relatedTarget", "closest", "preventDefault", "isMultipleSelection", "commitOrRemove", "isEmpty", "commit", "isInEditMode", "setAt", "tx", "ty", "screenToPageTranslation", "_moveAfterPaste", "baseX", "baseY", "parentWidth", "parentHeight", "_onTranslated", "_onTranslating", "translate", "translateInPage", "scrollIntoView", "block", "translationDone", "drag", "getBoundingClientRect", "findNewParent", "Math", "floor", "bx", "by", "getBaseTranslation", "left", "toFixed", "top", "_hasBeenMoved", "_hasBeenResized", "_mustFixPosition", "MathClamp", "moveInDOM", "angle", "pageTranslationToScreen", "parentScale", "realScale", "setDims", "getInitialTranslation", "createElement", "add", "classes", "signal", "_signal", "append", "setAttribute", "addEventListener", "bind", "noContextMenu", "tabIndex", "prepend", "isMac", "FeatureTest", "platform", "button", "ctrlKey", "savedDraggable", "screenX", "screenY", "ac", "AbortController", "combinedSignal", "togglePointerEvents", "window", "passive", "capture", "stopEvent", "savedX", "savedY", "savedWidth", "savedHeight", "savedParentCursor", "cursor", "savedCursor", "pointerUpCallback", "abort", "_onResized", "newX", "newY", "newWidth", "newHeight", "cmd", "undo", "mustExec", "_round", "round", "minWidth", "MIN_SIZE", "minHeight", "rotationMatrix", "transf", "invRotationMatrix", "invTransf", "getPoint", "getOpposite", "isDiagonal", "isHorizontal", "w", "h", "point", "oppositePoint", "transfOppositePoint", "oppositeX", "oppositeY", "ratioX", "ratioY", "deltaX", "deltaY", "fromKeyboard", "lastScreenX", "lastScreenY", "oldDiag", "hypot", "max", "min", "abs", "_onResizing", "altTextFinish", "finish", "toolbarButtons", "addEditToolbar", "EditorToolbar", "render", "tool", "addButton", "hasComment", "addCommentButton", "addCommentButtonInToolbar", "addButtonBefore", "removeCommentButtonFromToolbar", "removeButton", "removeEditToolbar", "destroy", "addContainer", "container", "editToolbarDiv", "before", "getClientDimensions", "createAltText", "AltText", "data", "altTextData", "guessedAltText", "guessedText", "setGuessedAltText", "text", "setGuessedText", "serializeAltText", "isForCopying", "serialize", "hasAltText", "hasAltTextData", "hasData", "focusCommentButton", "focusButton", "Comment", "addStandaloneCommentButton", "isEditingMode", "renderForStandalone", "removeStandaloneCommentButton", "hideStandaloneCommentButton", "comment", "richText", "date", "color", "getNonHCMColor", "opacity", "updateComment", "removeComment", "setCommentData", "popupRef", "setInitialText", "storedData", "getAndRemoveDataFromAnnotationStorage", "updateFromAnnotationLayer", "hasEditedComment", "hasBeenEdited", "hasDeletedComment", "isDeleted", "editComment", "options", "edit", "toggleComment", "visibility", "undefined", "setSelectedCommentButton", "selected", "setSelectedButton", "addComment", "serialized", "DEFAULT_POPUP_WIDTH", "DEFAULT_POPUP_HEIGHT", "trY", "rect", "blX", "blY", "trX", "popup", "contents", "parentBoundingClientRect", "boundingClientRect", "className", "defaultL10nId", "maxWidth", "maxHeight", "bindEvents", "isResizable", "_supportsPinchToZoom", "TouchManager", "isPinchingDisabled", "onPinchStart", "onPinching", "onPinchEnd", "_editorUndoBar", "hide", "_origin", "prevDistance", "distance", "slowDownFactor", "factor", "transfCenterPoint", "centerX", "centerY", "newTransfCenterPoint", "pointerdown", "shiftKey", "metaKey", "toggleSelected", "setUpDragSession", "hasDraggingStarted", "opts", "cancelDrag", "e", "endDragSession", "_onStopDragging", "clientX", "clientY", "pointerId", "pointerType", "_onStartDragging", "dragSelectedEditors", "isPrimary", "clearTimeout", "setTimeout", "moveEditorInDOM", "_setParentAndPosition", "changeParent", "getRect", "scale", "shiftX", "shiftY", "Error", "getRectInCurrentCoords", "x1", "y1", "x2", "y2", "getPDFRect", "convert", "onUpdatedColor", "getData", "str", "contentsObj", "onceAdded", "focus", "enableEditMode", "setEditingState", "disableEditMode", "shouldGetKeyboardEvents", "needsToBeRebuilt", "isOnScreen", "bottom", "right", "innerHeight", "innerWidth", "rebuild", "rotate", "_angle", "serializeDeleted", "context", "annotationType", "structTreeParentId", "deserialize", "accessibilityData", "isCopy", "hasBeenModified", "removeEditor", "timeout", "values", "makeResizable", "toolbarPosition", "commentButtonPosition", "direction", "commentButtonPositionInPage", "posX", "posY", "commentButtonColor", "makeCommentColor", "commentPopupPosition", "commentPopupPositionInLayer", "pos", "hasDefaultPopupPosition", "commentButtonWidth", "elementBeforePopup", "setCommentButtonStates", "keydown", "key", "children", "Array", "from", "boundResizerKeydown", "boundResizerBlur", "getAttribute", "first", "firstPosition", "nextFirstPosition", "length", "i", "firstChild", "lastChild", "child", "focusVisible", "stopImmediatePropagation", "exec", "parentNode", "select", "show", "then", "contains", "toggleAltTextBadge", "activeElement", "preventScroll", "unselect", "updateParams", "type", "disableEditing", "enableEditing", "canChangeContent", "enterInEditMode", "dblclick", "nodeName", "updateToolbar", "editId", "getElementForAltText", "contentDiv", "isEditing", "setActiveEditor", "canCreateNewEmptyEditor", "telemetryInitialData", "action", "telemetryFinalData", "_reportTelemetry", "mustWait", "Map", "get", "delete", "size", "set", "_eventBus", "dispatch", "source", "details", "visible", "enable", "disable", "updateFakeAnnotationElement", "annotationLayer", "addFakeAnnotation", "updateEdited", "renderAnnotationElement", "annotation", "content", "querySelector", "canvas", "resetAnnotationElement", "SEED", "MASK_HIGH", "MASK_LOW", "MurmurHash3_64", "constructor", "seed", "h1", "h2", "update", "input", "data", "length", "Uint8Array", "i", "ii", "code", "charCodeAt", "ArrayBuffer", "isView", "slice", "byteLength", "Error", "blockCounts", "tailLength", "dataUint32", "Uint32Array", "buffer", "k1", "k2", "C1", "C2", "C1_LOW", "C2_LOW", "hexdigest", "toString", "padStart", "SerializableEmpty", "Object", "freeze", "map", "hash", "transfer", "undefined", "AnnotationStorage", "Map", "constructor", "onSetModified", "onResetModified", "onAnnotationEditor", "getValue", "key", "defaultValue", "value", "get", "assign", "getRawValue", "remove", "storedValue", "AnnotationEditor", "delete", "annotationElementId", "size", "resetModified", "values", "setValue", "obj", "modified", "entry", "val", "entries", "set", "_type", "has", "print", "PrintAnnotationStorage", "serializable", "MurmurHash3_64", "context", "create", "hasBitmap", "serialized", "serialize", "update", "JSON", "stringify", "bitmap", "push", "hexdigest", "editorStats", "stats", "typeToEditor", "numberOfEditedComments", "numberOfDeletedComments", "popup", "deleted", "isCommentDeleted", "hasEditedComment", "telemetryFinalData", "type", "getPrototypeOf", "counters", "count", "comments", "edited", "editor", "computeTelemetryFinalData", "resetModifiedIds", "updateEditor", "annotationId", "data", "updateFromAnnotationLayer", "getEditor", "modifiedIds", "ids", "Set", "join", "Symbol", "iterator", "parent", "clone", "structuredClone", "unreachable", "shadow", "FontLoader", "Set", "constructor", "ownerDocument", "globalThis", "document", "styleElement", "_document", "nativeFontFaces", "loadingRequests", "loadTestFontId", "addNativeFontFace", "nativeFontFace", "add", "fonts", "removeNativeFontFace", "delete", "insertRule", "rule", "createElement", "documentElement", "getElementsByTagName", "append", "styleSheet", "sheet", "cssRules", "length", "clear", "remove", "loadSystemFont", "systemFontInfo", "info", "disableFontFace", "_inspectFont", "has", "loadedName", "assert", "isFontLoadingAPISupported", "src", "style", "fontFace", "FontFace", "load", "warn", "baseFontName", "unreachable", "bind", "font", "attached", "missingFile", "createNativeFontFace", "loaded", "ex", "family", "createFontFaceRule", "isSyncFontLoadingSupported", "Promise", "resolve", "request", "_queueLoadingCallback", "_prepareFontLoadEvent", "hasFonts", "shadow", "isNodeJS", "FeatureTest", "platform", "isFirefox", "callback", "completeRequest", "done", "otherRequest", "shift", "setTimeout", "complete", "push", "_loadTestFont", "testFont", "atob", "int32", "data", "offset", "charCodeAt", "spliceString", "s", "insert", "chunk1", "substring", "chunk2", "i", "ii", "canvas", "width", "height", "ctx", "getContext", "called", "isFontReady", "name", "fillText", "imageData", "getImageData", "Date", "now", "COMMENT_OFFSET", "CFF_CHECKSUM_OFFSET", "XXXX_VALUE", "checksum", "string32", "url", "btoa", "div", "visibility", "position", "top", "left", "span", "textContent", "fontFamily", "body", "FontFaceObject", "translatedData", "inspectFont", "extra", "charProcOperatorList", "compiledGlyphs", "Object", "create", "assign", "cssFontInfo", "css", "weight", "fontWeight", "italicAngle", "mimetype", "toBase64Util", "getPathGenerator", "objs", "character", "undefined", "objId", "cmds", "get", "path", "Path2D", "fontExtraProperties", "black", "bold", "isInvalidPDFjsFont", "isType3Font", "italic", "remeasure", "vertical", "ascent", "defaultWidth", "descent", "bbox", "fontMatrix", "fallbackName", "clearData", "defaultVMetrics", "getUrlProp", "val", "URL", "href", "isNodeJS", "url", "parse", "window", "location", "Error", "getDataProp", "Buffer", "Uint8Array", "byteLength", "buffer", "stringToBytes", "ArrayBuffer", "isView", "isNaN", "length", "getFactoryUrlProp", "endsWith", "isRefProxy", "v", "Number", "isInteger", "num", "gen", "isNameProxy", "name", "isValidExplicitDest", "_isValidExplicitDest", "bind", "LoopbackPort", "Map", "Promise", "resolve", "postMessage", "obj", "transfer", "event", "data", "structuredClone", "then", "listener", "call", "addEventListener", "options", "rmAbort", "signal", "AbortSignal", "aborted", "warn", "onAbort", "removeEventListener", "set", "get", "delete", "terminate", "clear", "CallbackKind", "DATA", "ERROR", "StreamKind", "CANCEL", "CANCEL_COMPLETE", "CLOSE", "ENQUEUE", "PULL", "PULL_COMPLETE", "START_COMPLETE", "onFn", "wrapReason", "ex", "AbortException", "InvalidPDFException", "PasswordException", "ResponseException", "UnknownErrorException", "Error", "unreachable", "name", "message", "code", "status", "missing", "details", "toString", "MessageHandler", "AbortController", "constructor", "sourceName", "targetName", "comObj", "callbackId", "streamId", "streamSinks", "Object", "create", "streamControllers", "callbackCapabilities", "actionHandler", "addEventListener", "bind", "signal", "data", "stream", "callback", "capability", "resolve", "reject", "reason", "action", "Promise", "try", "then", "result", "postMessage", "on", "actionName", "handler", "ah", "send", "transfers", "sendWithPromise", "withResolvers", "promise", "sendWithStream", "queueingStrategy", "ReadableStream", "start", "controller", "startCapability", "startCall", "pullCall", "cancelCall", "isClosed", "desiredSize", "pull", "pullCapability", "cancel", "assert", "cancelCapability", "self", "streamSink", "enqueue", "chunk", "size", "isCancelled", "lastDesiredSize", "sinkCapability", "ready", "close", "error", "onPull", "onCancel", "success", "streamController", "dataReason", "allSettled", "destroy", "abort", "BaseCanvasFactory", "constructor", "enableHWA", "create", "width", "height", "Error", "canvas", "_createCanvas", "context", "getContext", "willReadFrequently", "reset", "canvasAndContext", "destroy", "unreachable", "DOMCanvasFactory", "ownerDocument", "globalThis", "document", "_document", "createElement", "BaseCMapReaderFactory", "constructor", "baseUrl", "isCompressed", "fetch", "name", "Error", "url", "_fetch", "then", "cMapData", "catch", "reason", "unreachable", "DOMCMapReaderFactory", "data", "fetchData", "ArrayBuffer", "Uint8Array", "stringToBytes", "BaseFilterFactory", "addFilter", "maps", "addHCMFilter", "fgColor", "bgColor", "addAlphaFilter", "map", "addLuminosityFilter", "addHighlightHCMFilter", "filterName", "newFgColor", "newBgColor", "destroy", "keepHCM", "DOMFilterFactory", "constructor", "docId", "ownerDocument", "globalThis", "document", "Map", "div", "createElement", "style", "visibility", "contain", "width", "height", "position", "top", "left", "zIndex", "svg", "createElementNS", "SVG_NS", "setAttribute", "append", "body", "length", "mapR", "buffer", "Array", "i", "table", "join", "mapG", "mapB", "bufferR", "bufferG", "bufferB", "id", "undefined", "url", "URL", "baseURI", "isDataScheme", "warn", "updateUrlHash", "value", "get", "tableR", "tableG", "tableB", "key", "set", "filter", "info", "remove", "fgRGB", "Util", "makeHexColor", "bgRGB", "color", "x", "getSteps", "c", "n", "start", "end", "arr", "tableA", "bind", "fgGray", "Math", "round", "bgGray", "newFgRGB", "newBgRGB", "fg", "bg", "step", "newStart", "newStep", "prev", "k", "j", "size", "parentNode", "clear", "feColorMatrix", "feComponentTransfer", "func", "feFunc", "rTable", "gTable", "bTable", "aTable", "getRGB", "getComputedStyle", "getPropertyValue", "BaseStandardFontDataFactory", "constructor", "baseUrl", "fetch", "filename", "Error", "url", "_fetch", "catch", "reason", "unreachable", "DOMStandardFontDataFactory", "data", "fetchData", "Uint8Array", "BaseWasmFactory", "constructor", "baseUrl", "fetch", "filename", "Error", "url", "_fetch", "catch", "reason", "unreachable", "DOMWasmFactory", "data", "fetchData", "Uint8Array", "isNodeJS", "warn", "fetchData", "url", "fs", "process", "getBuiltinModule", "data", "promises", "readFile", "Uint8Array", "NodeFilterFactory", "BaseFilterFactory", "NodeCanvasFactory", "BaseCanvasFactory", "_createCanvas", "width", "height", "require", "createRequire", "import", "canvas", "createCanvas", "NodeCMapReaderFactory", "BaseCMapReaderFactory", "_fetch", "NodeStandardFontDataFactory", "BaseStandardFontDataFactory", "NodeWasmFactory", "BaseWasmFactory", "FORCED_DEPENDENCY_LABEL", "floor", "ceil", "Math", "expandBBox", "array", "index", "minX", "minY", "maxX", "maxY", "min", "max", "EMPTY_BBOX", "Uint32Array", "Uint8Array", "buffer", "BBoxReader", "constructor", "bboxes", "coords", "length", "isEmpty", "i", "ensureDebugMetadata", "map", "key", "undefined", "value", "get", "dependencies", "Set", "isRenderingOperation", "set", "CanvasDependencyTracker", "__proto__", "transform", "moveText", "sameLineText", "Map", "Infinity", "Float64Array", "canvas", "operationsCount", "recordDebugMetadata", "width", "height", "growOperationsCount", "oldBBoxes", "ArrayBuffer", "Uint8ClampedArray", "fill", "save", "opIdx", "push", "restore", "previous", "Object", "getPrototypeOf", "lastSave", "pop", "add", "recordOpenMarker", "idx", "getOpenMarker", "at", "recordCloseMarker", "beginMarkedContent", "endMarkedContent", "pushBaseTransform", "ctx", "Util", "multiplyByDOMMatrix", "getTransform", "popBaseTransform", "recordSimpleData", "name", "recordIncrementalData", "resetIncrementalData", "recordNamedData", "recordSimpleDataFromNamed", "depName", "fallbackIdx", "recordFutureForcedDependency", "inheritSimpleDataAsFutureForcedDependencies", "names", "inheritPendingDependenciesAsFutureForcedDependencies", "dep", "resetBBox", "recordClipBox", "clipBox", "axialAlignedBoundingBox", "intersection", "intersect", "recordBBox", "bbox", "recordCharacterBBox", "font", "scale", "x", "y", "getMeasure", "fontBBox", "isBBoxTrustworthy", "computedBBox", "fontMatrix", "scaleMinMax", "recordFullPageBBox", "measure", "actualBoundingBoxLeft", "actualBoundingBoxRight", "actualBoundingBoxAscent", "actualBoundingBoxDescent", "getSimpleIndex", "dependencyName", "recordDependencies", "dependencyNames", "pendingDependencies", "simple", "incremental", "forEach", "recordNamedDependency", "has", "recordOperation", "preserve", "metadata", "delete", "depIdx", "saveIdx", "clear", "recordShowTextOperation", "deps", "Array", "from", "bboxToClipBoxDropOperation", "_takePendingDependencies", "_extractOperation", "operation", "_pushPendingDependencies", "take", "takeDebugMetadata", "CanvasNestedDependencyTracker", "dependencyTracker", "ignoreBBoxes", "Error", "Dependencies", "stroke", "imageXObject", "rawFillPath", "showText", "transformAndFill", "PathType", "FILL", "STROKE", "SHADING", "applyBoundingBox", "ctx", "bbox", "width", "height", "region", "Path2D", "rect", "clip", "BaseShadingPattern", "isModifyingCurrentTransform", "getPattern", "unreachable", "RadialAxialShadingPattern", "constructor", "IR", "_type", "_bbox", "_colorStops", "_p0", "_p1", "_r0", "_r1", "matrix", "_createGradient", "grad", "createLinearGradient", "createRadialGradient", "colorStop", "addColorStop", "owner", "inverse", "pathType", "pattern", "ownerBBox", "current", "getClippedPathBoundingBox", "getCurrentTransform", "Math", "ceil", "tmpCanvas", "cachedCanvases", "getCanvas", "tmpCtx", "context", "clearRect", "canvas", "beginPath", "translate", "Util", "transform", "baseTransform", "fillStyle", "fill", "createPattern", "domMatrix", "DOMMatrix", "setTransform", "drawTriangle", "data", "p1", "p2", "p3", "c1", "c2", "c3", "coords", "colors", "bytes", "rowSize", "tmp", "x1", "offsetX", "scaleX", "y1", "offsetY", "scaleY", "x2", "y2", "x3", "y3", "c1r", "c1g", "c1b", "c2r", "c2g", "c2b", "c3r", "c3g", "c3b", "minY", "round", "maxY", "xa", "car", "cag", "cab", "xb", "cbr", "cbg", "cbb", "y", "k", "x1_", "min", "x2_", "max", "j", "x", "drawFigure", "figure", "ps", "cs", "i", "ii", "type", "verticesPerRow", "rows", "floor", "length", "cols", "q", "Error", "MeshShadingPattern", "_coords", "_colors", "_figures", "_bounds", "_background", "_createMeshCanvas", "combinedScale", "backgroundColor", "EXPECTED_SCALE", "MAX_PATTERN_SIZE", "BORDER_SIZE", "boundsWidth", "boundsHeight", "abs", "paddedWidth", "paddedHeight", "createImageData", "putImageData", "scale", "Float32Array", "singularValueDecompose2dScale", "matrixScaleX", "matrixScaleY", "temporaryPatternCanvas", "DummyShadingPattern", "getShadingPattern", "PaintType", "COLORED", "UNCOLORED", "TilingPattern", "canvasGraphicsFactory", "color", "operatorList", "xstep", "ystep", "paintType", "tilingType", "createPatternCanvas", "opIdx", "info", "x0", "y0", "combinedScaleX", "combinedScaleY", "canvasWidth", "canvasHeight", "redrawHorizontally", "redrawVertically", "xScaledStep", "yScaledStep", "xScaledWidth", "yScaledHeight", "dimx", "getSizeAndScale", "dimy", "size", "graphics", "createCanvasGraphics", "groupLevel", "setFillAndStrokeStyleToContext", "save", "dependencyTracker", "clipBbox", "executeOperatorList", "endDrawing", "restore", "image", "dimx2", "dimy2", "xSize", "ySize", "tmpCanvas2", "tmpCtx2", "jj", "drawImage", "step", "realOutputSize", "maxSize", "bboxWidth", "bboxHeight", "axialAlignedBoundingBox", "minMax", "endPath", "strokeStyle", "fillColor", "strokeColor", "FormatError", "convertBlackAndWhiteToRGBA", "src", "srcPos", "dest", "width", "height", "nonBlackColor", "inverseDecode", "black", "FeatureTest", "isLittleEndian", "zeroMapping", "oneMapping", "widthInSource", "widthRemainder", "srcLength", "length", "Uint32Array", "buffer", "destPos", "i", "max", "elem", "j", "MIN_FONT_SIZE", "MAX_FONT_SIZE", "EXECUTION_TIME", "EXECUTION_STEPS", "FULL_CHUNK_HEIGHT", "SCALE_MATRIX", "DOMMatrix", "XY", "Float32Array", "MIN_MAX_INIT", "Infinity", "mirrorContextOperations", "ctx", "destCtx", "_removeMirroring", "Error", "__originalSave", "save", "__originalRestore", "restore", "__originalRotate", "rotate", "__originalScale", "scale", "__originalTranslate", "translate", "__originalTransform", "transform", "__originalSetTransform", "setTransform", "__originalResetTransform", "resetTransform", "__originalClip", "clip", "__originalMoveTo", "moveTo", "__originalLineTo", "lineTo", "__originalBezierCurveTo", "bezierCurveTo", "__originalRect", "rect", "__originalClosePath", "closePath", "__originalBeginPath", "beginPath", "x", "y", "a", "b", "c", "d", "e", "f", "angle", "rule", "cp1x", "cp1y", "cp2x", "cp2y", "width", "height", "CachedCanvases", "constructor", "canvasFactory", "cache", "Object", "create", "getCanvas", "id", "canvasEntry", "undefined", "reset", "delete", "clear", "destroy", "drawImageAtIntegerCoords", "srcImg", "srcX", "srcY", "srcW", "srcH", "destX", "destY", "destW", "destH", "tx", "ty", "getCurrentTransform", "tlX", "rTlX", "Math", "round", "tlY", "rTlY", "brX", "rWidth", "abs", "brY", "rHeight", "sign", "drawImage", "scaleX", "hypot", "scaleY", "CanvasExtraState", "alphaIsShape", "fontSize", "fontSizeScale", "textMatrix", "textMatrixScale", "fontMatrix", "FONT_IDENTITY_MATRIX", "leading", "lineX", "lineY", "charSpacing", "wordSpacing", "textHScale", "textRenderingMode", "TextRenderingMode", "FILL", "textRise", "fillColor", "strokeColor", "patternFill", "patternStroke", "fillAlpha", "strokeAlpha", "lineWidth", "activeSMask", "transferMaps", "preInit", "clipBox", "minMax", "slice", "clone", "getPathBoundingBox", "pathType", "PathType", "box", "STROKE", "unreachable", "Util", "singularValueDecompose2dScale", "xStrokePad", "yStrokePad", "updateClipFromPath", "intersect", "startNewPathAndClipBox", "isEmptyClip", "set", "getClippedPathBoundingBox", "putBinaryImageData", "imgData", "ImageData", "putImageData", "partialChunkHeight", "fullChunks", "totalChunks", "chunkImgData", "createImageData", "srcPos", "destPos", "src", "data", "dest", "i", "j", "thisChunkHeight", "elemsInThisChunk", "kind", "ImageKind", "GRAYSCALE_1BPP", "srcLength", "byteLength", "dest32", "Uint32Array", "buffer", "dest32DataLength", "length", "fullSrcDiff", "white", "black", "FeatureTest", "isLittleEndian", "srcDiff", "k", "kEnd", "kEndUnrolled", "mask", "srcByte", "RGBA_32BPP", "subarray", "RGB_24BPP", "putBinaryImageMask", "bitmap", "convertBlackAndWhiteToRGBA", "nonBlackColor", "copyCtxState", "sourceCtx", "properties", "property", "setLineDash", "getLineDash", "lineDashOffset", "resetCtxToDefault", "strokeStyle", "fillStyle", "fillRule", "globalAlpha", "lineCap", "lineJoin", "miterLimit", "globalCompositeOperation", "font", "filter", "getImageSmoothingEnabled", "interpolate", "actualScale", "fround", "OutputScale", "pixelRatio", "PixelsPerInch", "PDF_TO_CSS_UNITS", "LINE_CAP_STYLES", "LINE_JOIN_STYLES", "NORMAL_CLIP", "EO_CLIP", "CanvasGraphics", "canvasCtx", "commonObjs", "objs", "filterFactory", "optionalContentConfig", "markedContentStack", "annotationCanvasMap", "pageColors", "dependencyTracker", "current", "canvas", "stateStack", "pendingClip", "pendingEOFill", "res", "xobjs", "groupStack", "baseTransform", "baseTransformStack", "groupLevel", "smaskStack", "smaskCounter", "tempSMask", "suspendedCtx", "contentVisible", "cachedCanvases", "cachedPatterns", "Map", "viewportScale", "outputScaleX", "outputScaleY", "_cachedScaleForStroking", "_cachedGetSinglePixelWidth", "_cachedBitmapsMap", "getObject", "opIdx", "fallback", "recordNamedDependency", "startsWith", "get", "beginDrawing", "viewport", "transparency", "background", "savedFillStyle", "fillRect", "transparentCanvas", "compositeCtx", "context", "executeOperatorList", "operatorList", "executionStartIdx", "continueCallback", "stepper", "operationsFilter", "argsArray", "fnArray", "argsArrayLen", "chunkOperations", "endTime", "Date", "now", "steps", "fnId", "fnArgs", "nextBreakPoint", "breakIt", "OPS", "dependency", "depObjId", "recordNamedData", "objsPool", "has", "inSMaskMode", "endDrawing", "values", "HTMLCanvasElement", "hcmFilterId", "addHCMFilter", "foreground", "savedFilter", "_scaleImage", "img", "inverseTransform", "displayWidth", "displayHeight", "widthScale", "max", "heightScale", "paintWidth", "paintHeight", "tmpCanvasId", "tmpCanvas", "tmpCtx", "newWidth", "newHeight", "floor", "ceil", "clearRect", "_createMaskCanvas", "isPatternFill", "currentTransform", "cacheKey", "scaled", "maskCanvas", "count", "mainKey", "JSON", "stringify", "cachedImage", "offsetX", "min", "offsetY", "recordDependencies", "Dependencies", "transformAndFill", "maskToCanvas", "axialAlignedBoundingBox", "minX", "minY", "maxX", "maxY", "drawnWidth", "drawnHeight", "fillCanvas", "fillCtx", "getCurrentTransformInverse", "imageSmoothingEnabled", "inverse", "getPattern", "setLineWidth", "recordSimpleData", "setLineCap", "style", "setLineJoin", "setMiterLimit", "limit", "setDash", "dashArray", "dashPhase", "setRenderingIntent", "intent", "setFlatness", "flatness", "setGState", "states", "key", "value", "setFont", "checkSMaskState", "addFilter", "beginSMaskMode", "endSMaskMode", "cacheId", "scratchCanvas", "getTransform", "compose", "dirtyBox", "smask", "composeSMask", "layerCtx", "layerBox", "layerOffsetX", "layerOffsetY", "layerWidth", "layerHeight", "genericComposeSMask", "subtype", "backdrop", "transferMap", "maskCtx", "maskOffsetX", "maskOffsetY", "maskX", "maskY", "Path2D", "addAlphaFilter", "addLuminosityFilter", "old", "push", "pop", "recordIncrementalData", "constructPath", "op", "path", "outerExtraSize", "stroke", "resetBBox", "recordBBox", "path2d", "ii", "DrawOPS", "curveTo", "warn", "_pathStartIdx", "consumePath", "isModifyingCurrentTransform", "newPath", "addPath", "invertSelf", "multiplySelf", "rescaleAndStroke", "closeStroke", "fill", "needRestore", "eoFill", "fillStroke", "eoFillStroke", "closeFillStroke", "closeEOFillStroke", "endPath", "rawFillPath", "recordOperation", "recordFutureForcedDependency", "eoClip", "beginText", "recordOpenMarker", "resetIncrementalData", "endText", "paths", "pendingTextPaths", "getOpenMarker", "recordCloseMarker", "invTransf", "preMultiplySelf", "setCharSpacing", "spacing", "setWordSpacing", "setHScale", "setLeading", "fontRefName", "size", "recordSimpleDataFromNamed", "fontObj", "fontDirection", "isType3Font", "name", "loadedName", "typeface", "systemFontInfo", "css", "fallbackName", "bold", "italic", "browserFontSize", "setTextRenderingMode", "mode", "setTextRise", "rise", "moveText", "setLeadingMoveText", "setTextMatrix", "matrix", "nextLine", "getSimpleIndex", "paintChar", "character", "patternFillTransform", "patternStrokeTransform", "fillStrokeMode", "FILL_STROKE_MASK", "isAddToPathSet", "ADD_TO_PATH_FLAG", "missingFile", "disableFontFace", "getPathGenerator", "recordCharacterBBox", "FILL_STROKE", "scaledPath", "invPatternTransform", "transf", "fillText", "measureText", "strokeText", "isFontSubpixelAAEnabled", "getImageData", "enabled", "shadow", "showText", "glyphs", "inheritPendingDependenciesAsFutureForcedDependencies", "showType3Text", "recordShowTextOperation", "glyphsLength", "vertical", "spacingDir", "defaultVMetrics", "widthAdvanceScale", "simpleFillText", "pattern", "getSinglePixelWidth", "isInvalidPDFjsFont", "chars", "glyph", "unicode", "joinedChars", "join", "measure", "actualBoundingBoxLeft", "actualBoundingBoxRight", "actualBoundingBoxAscent", "actualBoundingBoxDescent", "restoreNeeded", "isSpace", "fontChar", "accent", "scaledX", "scaledY", "vmetric", "vx", "vy", "remeasure", "measuredWidth", "characterScaleX", "isInFont", "bbox", "scaledAccentX", "offset", "scaledAccentY", "charWidth", "isTextInvisible", "INVISIBLE", "spacingLength", "CanvasNestedDependencyTracker", "charProcOperatorList", "operatorListId", "p", "applyTransform", "setCharWidth", "xWidth", "yWidth", "setCharWidthAndBounds", "llx", "lly", "urx", "ury", "recordClipBox", "getColorN_Pattern", "IR", "canvasGraphicsFactory", "createCanvasGraphics", "renderingOpIdx", "TilingPattern", "_getPattern", "setStrokeColorN", "args", "setFillColorN", "setStrokeRGBColor", "color", "setStrokeTransparent", "setFillRGBColor", "setFillTransparent", "objId", "getShadingPattern", "shadingFill", "SHADING", "inv", "x0", "y0", "x1", "y1", "recordFullPageBBox", "beginInlineImage", "beginImageData", "paintFormXObjectBegin", "paintFormXObjectEnd", "beginGroup", "group", "currentCtx", "isolated", "info", "knockout", "bounds", "canvasBounds", "groupCtx", "startTransformInverse", "inheritSimpleDataAsFutureForcedDependencies", "pushBaseTransform", "endGroup", "popBaseTransform", "currentMtx", "beginAnnotation", "hasOwnCanvas", "canvasWidth", "canvasHeight", "annotationCanvas", "savedCtx", "endAnnotation", "paintImageMaskXObject", "paintImageMaskXObjectRepeat", "skewX", "skewY", "positions", "trans", "paintImageMaskXObjectGroup", "images", "image", "paintImageXObject", "paintInlineImageXObject", "paintImageXObjectRepeat", "map", "w", "h", "paintInlineImageXObjectGroup", "applyTransferMapsToCanvas", "applyTransferMapsToBitmap", "imgToPaint", "HTMLElement", "imageXObject", "entry", "paintSolidColorImageMask", "markPoint", "tag", "markPointProps", "beginMarkedContent", "visible", "beginMarkedContentProps", "isVisible", "isContentVisible", "endMarkedContent", "beginCompat", "endCompat", "isEmpty", "bboxToClipBoxDropOperation", "m", "absDet", "normX", "normY", "getScaleForStroking", "scaledLineWidth", "scaledXLineWidth", "scaledYLineWidth", "baseArea", "saveRestore", "dashes", "prototype", "CssFontInfo", "strings", "write", "info", "encoder", "TextEncoder", "encodedStrings", "stringsLength", "prop", "encoded", "encode", "length", "buffer", "ArrayBuffer", "data", "Uint8Array", "view", "DataView", "offset", "setUint32", "set", "assert", "byteLength", "constructor", "TextDecoder", "index", "i", "getUint32", "decode", "fontFamily", "fontWeight", "italicAngle", "SystemFontInfo", "encodedStyleStyle", "encodedStyleWeight", "lengthEstimate", "style", "weight", "setUint8", "guessFallback", "transferToFixedLength", "getUint8", "css", "loadedName", "baseFontName", "src", "styleLength", "weightLength", "FontInfo", "bools", "numbers", "Math", "ceil", "extra", "Object", "assign", "byteOffset", "floor", "bitOffset", "value", "undefined", "black", "bold", "disableFontFace", "fontExtraProperties", "isInvalidPDFjsFont", "isType3Font", "italic", "missingFile", "remeasure", "vertical", "getFloat64", "ascent", "defaultWidth", "descent", "bbox", "numCoords", "push", "getInt16", "fontMatrix", "numPoints", "defaultVMetrics", "numMetrics", "stringData", "fallbackName", "mimetype", "name", "systemFontInfoLength", "cssFontInfoLength", "clearData", "fill", "cssFontInfo", "cssFontInfoData", "systemFontInfo", "systemFontInfoData", "font", "systemFontInfoBuffer", "cssFontInfoBuffer", "numBools", "boolByte", "boolBit", "bits", "setFloat64", "coord", "setInt16", "point", "metric", "GlobalWorkerOptions", "workerPort", "val", "Worker", "Error", "workerSrc", "Metadata", "constructor", "parsedData", "rawData", "getRaw", "get", "name", "Symbol", "iterator", "entries", "INTERNAL", "Symbol", "OptionalContentGroup", "constructor", "renderingIntent", "name", "intent", "usage", "rbGroups", "RenderingIntentFlag", "DISPLAY", "PRINT", "visible", "print", "view", "viewState", "printState", "_setVisible", "internal", "userSet", "unreachable", "OptionalContentConfig", "Map", "data", "creator", "order", "group", "groups", "set", "id", "baseState", "values", "on", "get", "off", "getHash", "array", "length", "operator", "i", "element", "state", "Array", "isArray", "has", "warn", "isVisible", "size", "info", "type", "expression", "policy", "ids", "setVisibility", "preserveRB", "rbGroup", "otherId", "setOCGState", "elem", "hasInitialVisibility", "getOrder", "slice", "keys", "getGroup", "hash", "MurmurHash3_64", "update", "hexdigest", "iterator", "entries", "PDFDataTransportStream", "constructor", "pdfDataRangeTransport", "disableRange", "disableStream", "assert", "length", "initialData", "progressiveDone", "contentDispositionFilename", "_queuedChunks", "_progressiveDone", "_contentDispositionFilename", "buffer", "Uint8Array", "byteLength", "push", "_pdfDataRangeTransport", "_isStreamingSupported", "_isRangeSupported", "_contentLength", "_fullRequestReader", "_rangeReaders", "addRangeListener", "begin", "chunk", "_onReceiveData", "addProgressListener", "loaded", "total", "_onProgress", "addProgressiveReadListener", "addProgressiveDoneListener", "_onProgressiveDone", "transportReady", "undefined", "_enqueue", "found", "some", "rangeReader", "_begin", "_progressiveDataLength", "_loaded", "evt", "onProgress", "_removeRangeReader", "reader", "i", "indexOf", "splice", "getFullReader", "queuedChunks", "PDFDataTransportStreamReader", "getRangeReader", "end", "PDFDataTransportStreamRangeReader", "requestDataRange", "cancelAllRequests", "reason", "cancel", "slice", "abort", "stream", "_stream", "_done", "_filename", "isPdfFile", "_requests", "_headersReady", "Promise", "resolve", "requestCapability", "shift", "value", "done", "headersReady", "filename", "isRangeSupported", "isStreamingSupported", "contentLength", "read", "withResolvers", "promise", "_end", "_queuedChunk", "requestsCapability", "getFilenameFromContentDispositionHeader", "contentDisposition", "needsEncodingFixup", "tmp", "toParamRegExp", "exec", "filename", "rfc2616unquote", "unescape", "rfc5987decode", "rfc2047decode", "fixupEncoding", "rfc2231getparam", "attributePattern", "flags", "RegExp", "textdecode", "encoding", "value", "test", "decoder", "TextDecoder", "fatal", "buffer", "stringToBytes", "decode", "contentDispositionStr", "matches", "match", "iter", "n", "quot", "part", "parseInt", "parts", "length", "push", "join", "startsWith", "slice", "split", "i", "quotindex", "indexOf", "replaceAll", "extvalue", "encodingend", "langvalue", "replace", "charset", "text", "hex", "String", "fromCharCode", "atob", "createHeaders", "isHttp", "httpHeaders", "headers", "Headers", "key", "val", "undefined", "append", "getResponseOrigin", "url", "URL", "parse", "origin", "validateRangeRequestCapabilities", "responseHeaders", "rangeChunkSize", "disableRange", "returnValues", "allowRangeRequests", "suggestedLength", "length", "parseInt", "get", "Number", "isInteger", "contentEncoding", "extractFilenameFromHeader", "contentDisposition", "filename", "getFilenameFromContentDispositionHeader", "includes", "decodeURIComponent", "isPdfFile", "createResponseError", "status", "ResponseException", "startsWith", "validateResponseStatus", "createFetchOptions", "headers", "withCredentials", "abortController", "method", "signal", "mode", "credentials", "redirect", "getArrayBuffer", "val", "Uint8Array", "buffer", "ArrayBuffer", "warn", "PDFFetchStream", "_responseOrigin", "constructor", "source", "isHttp", "test", "url", "createHeaders", "httpHeaders", "_fullRequestReader", "_rangeRequestReaders", "_progressiveDataLength", "_loaded", "getFullReader", "assert", "PDFFetchStreamReader", "getRangeReader", "begin", "end", "reader", "PDFFetchStreamRangeReader", "push", "cancelAllRequests", "reason", "cancel", "slice", "stream", "_stream", "_reader", "_filename", "_withCredentials", "_contentLength", "length", "_headersCapability", "Promise", "withResolvers", "_disableRange", "disableRange", "_rangeChunkSize", "rangeChunkSize", "_abortController", "AbortController", "_isStreamingSupported", "disableStream", "_isRangeSupported", "Headers", "fetch", "then", "response", "getResponseOrigin", "validateResponseStatus", "status", "createResponseError", "body", "getReader", "resolve", "responseHeaders", "allowRangeRequests", "suggestedLength", "validateRangeRequestCapabilities", "extractFilenameFromHeader", "AbortException", "catch", "reject", "onProgress", "headersReady", "promise", "filename", "contentLength", "isRangeSupported", "isStreamingSupported", "read", "value", "done", "byteLength", "loaded", "total", "abort", "_readCapability", "append", "responseOrigin", "Error", "OK_RESPONSE", "PARTIAL_CONTENT_RESPONSE", "getArrayBuffer", "xhr", "data", "response", "stringToBytes", "buffer", "NetworkManager", "_responseOrigin", "constructor", "url", "httpHeaders", "withCredentials", "isHttp", "test", "headers", "createHeaders", "currXhrId", "pendingRequests", "Object", "create", "request", "args", "XMLHttpRequest", "xhrId", "pendingRequest", "open", "key", "val", "setRequestHeader", "begin", "end", "expectedStatus", "responseType", "assert", "onError", "onerror", "status", "onreadystatechange", "onStateChange", "bind", "onprogress", "onProgress", "onHeadersReceived", "onDone", "send", "evt", "readyState", "xhrStatus", "ok_response_on_range_request", "chunk", "rangeHeader", "getResponseHeader", "matches", "exec", "parseInt", "warn", "getRequestXhr", "isPendingRequest", "abortRequest", "abort", "PDFNetworkStream", "source", "_source", "_manager", "_rangeChunkSize", "rangeChunkSize", "_fullRequestReader", "_rangeRequestReaders", "_onRangeRequestReaderClosed", "reader", "i", "indexOf", "splice", "getFullReader", "PDFNetworkStreamFullRequestReader", "getRangeReader", "PDFNetworkStreamRangeRequestReader", "onClosed", "push", "cancelAllRequests", "reason", "cancel", "slice", "manager", "_url", "_fullRequestId", "_onHeadersReceived", "_onDone", "_onError", "_onProgress", "_headersCapability", "Promise", "withResolvers", "_disableRange", "disableRange", "_contentLength", "length", "_isStreamingSupported", "_isRangeSupported", "_cachedChunks", "_requests", "_done", "_storedError", "undefined", "_filename", "fullRequestXhrId", "fullRequestXhr", "getResponseOrigin", "responseURL", "rawResponseHeaders", "getAllResponseHeaders", "responseHeaders", "Headers", "trimStart", "replace", "split", "map", "x", "join", "allowRangeRequests", "suggestedLength", "validateRangeRequestCapabilities", "extractFilenameFromHeader", "resolve", "requestCapability", "shift", "value", "done", "createResponseError", "reject", "loaded", "total", "lengthComputable", "filename", "isRangeSupported", "isStreamingSupported", "contentLength", "headersReady", "promise", "read", "_requestId", "_queuedChunk", "responseOrigin", "Error", "_close", "urlRegex", "parseUrlOrPath", "sourceUrl", "test", "URL", "url", "process", "getBuiltinModule", "pathToFileURL", "PDFNodeStream", "constructor", "source", "assert", "protocol", "_fullRequestReader", "_rangeRequestReaders", "_progressiveDataLength", "_loaded", "getFullReader", "PDFNodeStreamFsFullReader", "getRangeReader", "start", "end", "rangeReader", "PDFNodeStreamFsRangeReader", "push", "cancelAllRequests", "reason", "cancel", "reader", "slice", "stream", "_url", "_done", "_storedError", "onProgress", "_contentLength", "length", "_filename", "_disableRange", "disableRange", "_rangeChunkSize", "rangeChunkSize", "_isStreamingSupported", "disableStream", "_isRangeSupported", "_readableStream", "_readCapability", "Promise", "withResolvers", "_headersCapability", "fs", "promises", "lstat", "then", "stat", "size", "_setReadableStream", "createReadStream", "resolve", "error", "code", "createResponseError", "href", "reject", "headersReady", "promise", "filename", "contentLength", "isRangeSupported", "isStreamingSupported", "read", "value", "undefined", "done", "chunk", "loaded", "total", "buffer", "Uint8Array", "_error", "destroy", "readableStream", "on", "AbortException", "INITIAL_DATA", "Symbol", "PDFObjects", "Object", "create", "objId", "Promise", "withResolvers", "data", "get", "callback", "obj", "promise", "then", "Error", "has", "delete", "resolve", "clear", "bitmap", "close", "iterator", "MAX_TEXT_DIVS_TO_RENDER", "DEFAULT_FONT_SIZE", "TextLayer", "Promise", "withResolvers", "globalThis", "FontInspector", "enabled", "Object", "create", "WeakMap", "Map", "Set", "constructor", "textContentSource", "container", "viewport", "ReadableStream", "start", "controller", "enqueue", "close", "Error", "scale", "OutputScale", "pixelRatio", "rotation", "div", "properties", "ctx", "pageWidth", "pageHeight", "pageX", "pageY", "rawDims", "setLayerDimensions", "promise", "finally", "delete", "catch", "fontFamilyMap", "isWindows", "isFirefox", "FeatureTest", "platform", "shadow", "render", "pump", "read", "then", "value", "done", "resolve", "lang", "assign", "styles", "items", "reject", "getReader", "add", "update", "onBefore", "params", "get", "cancel", "abortEx", "AbortException", "textDivs", "textContentItemsStr", "item", "length", "warn", "str", "undefined", "type", "parent", "document", "createElement", "classList", "id", "setAttribute", "append", "parentNode", "push", "geom", "textDiv", "textDivProperties", "angle", "canvasWidth", "hasText", "hasEOL", "fontSize", "tx", "Util", "transform", "Math", "atan2", "style", "fontName", "vertical", "PI", "fontFamily", "fontSubstitution", "fontHeight", "hypot", "fontAscent", "left", "top", "sin", "cos", "scaleFactorStr", "divStyle", "toFixed", "textContent", "dir", "dataset", "fontSubstitutionLoadedName", "shouldScaleText", "absScaleX", "abs", "absScaleY", "max", "min", "height", "width", "set", "br", "measureText", "cleanup", "size", "clear", "canvas", "values", "remove", "className", "body", "getContext", "alpha", "willReadFrequently", "family", "cached", "font", "opacity", "lineHeight", "position", "getBoundingClientRect", "cachedAscent", "metrics", "ascent", "fontBoundingBoxAscent", "descent", "fontBoundingBoxDescent", "ratio", "RENDERING_CANCELLED_TIMEOUT", "getDocument", "src", "URL", "url", "ArrayBuffer", "isView", "data", "task", "PDFDocumentLoadingTask", "docId", "getUrlProp", "getDataProp", "httpHeaders", "withCredentials", "password", "rangeTransport", "range", "PDFDataRangeTransport", "rangeChunkSize", "Number", "isInteger", "worker", "PDFWorker", "verbosity", "docBaseUrl", "isDataScheme", "cMapUrl", "getFactoryUrlProp", "cMapPacked", "CMapReaderFactory", "isNodeJS", "NodeCMapReaderFactory", "DOMCMapReaderFactory", "iccUrl", "standardFontDataUrl", "StandardFontDataFactory", "NodeStandardFontDataFactory", "DOMStandardFontDataFactory", "wasmUrl", "WasmFactory", "NodeWasmFactory", "DOMWasmFactory", "ignoreErrors", "stopAtErrors", "maxImageSize", "isEvalSupported", "isOffscreenCanvasSupported", "isImageDecoderSupported", "FeatureTest", "platform", "isFirefox", "globalThis", "chrome", "canvasMaxAreaInBytes", "disableFontFace", "fontExtraProperties", "enableXfa", "ownerDocument", "document", "disableRange", "disableStream", "disableAutoFetch", "pdfBug", "CanvasFactory", "NodeCanvasFactory", "DOMCanvasFactory", "FilterFactory", "NodeFilterFactory", "DOMFilterFactory", "enableHWA", "useWasm", "length", "NaN", "useSystemFonts", "useWorkerFetch", "isValidFetchUrl", "baseURI", "styleElement", "setVerbosityLevel", "transportFactory", "canvasFactory", "filterFactory", "cMapReaderFactory", "baseUrl", "isCompressed", "standardFontDataFactory", "wasmFactory", "create", "port", "GlobalWorkerOptions", "workerPort", "_worker", "docParams", "apiVersion", "evaluatorOptions", "transportParams", "loadingParams", "promise", "then", "destroyed", "Error", "workerIdPromise", "messageHandler", "sendWithPromise", "buffer", "networkStream", "PDFDataTransportStream", "NetworkStream", "PDFFetchStream", "PDFNodeStream", "PDFNetworkStream", "workerId", "MessageHandler", "transport", "WorkerTransport", "_transport", "send", "catch", "_capability", "reject", "Promise", "withResolvers", "onPassword", "onProgress", "destroy", "_pendingDestroy", "ex", "getData", "constructor", "initialData", "progressiveDone", "contentDispositionFilename", "addRangeListener", "listener", "push", "addProgressListener", "addProgressiveReadListener", "addProgressiveDoneListener", "onDataRange", "begin", "chunk", "onDataProgress", "loaded", "total", "onDataProgressiveRead", "onDataProgressiveDone", "transportReady", "resolve", "requestDataRange", "end", "unreachable", "abort", "PDFDocumentProxy", "pdfInfo", "_pdfInfo", "annotationStorage", "numPages", "fingerprints", "isPureXfa", "shadow", "_htmlForXfa", "allXfaHtml", "getPage", "pageNumber", "getPageIndex", "ref", "getDestinations", "getDestination", "id", "getPageLabels", "getPageLayout", "getPageMode", "getViewerPreferences", "getOpenAction", "getAttachments", "getAnnotationsByType", "types", "pageIndexesToSkip", "getJSActions", "getDocJSActions", "getOutline", "getOptionalContentConfig", "intent", "renderingIntent", "getRenderingIntent", "getPermissions", "getMetadata", "getMarkInfo", "saveDocument", "getDownloadInfo", "downloadInfoCapability", "cleanup", "keepLoadedFonts", "startCleanup", "loadingTask", "cachedPageNumber", "getFieldObjects", "hasJSActions", "getCalculationOrderIds", "PDFPageProxy", "pageIndex", "pageInfo", "_pageIndex", "_pageInfo", "_stats", "StatTimer", "_pdfBug", "commonObjs", "objs", "PDFObjects", "_intentStates", "Map", "recordedBBoxes", "rotate", "userUnit", "view", "getViewport", "scale", "rotation", "offsetX", "offsetY", "dontFlip", "PageViewport", "viewBox", "getAnnotations", "getPageJSActions", "getXfa", "children", "render", "canvasContext", "canvas", "viewport", "annotationMode", "AnnotationMode", "ENABLE", "transform", "background", "optionalContentConfigPromise", "annotationCanvasMap", "pageColors", "printAnnotationStorage", "isEditing", "recordOperations", "operationsFilter", "time", "intentArgs", "cacheKey", "intentState", "get", "Object", "set", "streamReaderCancelTimeout", "clearTimeout", "intentPrint", "RenderingIntentFlag", "PRINT", "displayReadyCapability", "operatorList", "fnArray", "argsArray", "lastChunk", "separateAnnots", "_pumpOperatorList", "recordForDebugger", "Boolean", "StepperManager", "enabled", "shouldRecordOperations", "complete", "error", "renderTasks", "delete", "internalRenderTask", "gfx", "dependencyTracker", "take", "stepper", "setOperatorBBoxes", "takeDebugMetadata", "capability", "_abortOperatorList", "reason", "timeEnd", "Stats", "add", "InternalRenderTask", "callback", "params", "CanvasDependencyTracker", "useRequestAnimationFrame", "Set", "renderTask", "all", "transparency", "optionalContentConfig", "initializeGraphics", "operatorListChanged", "getOperatorList", "opListReadCapability", "opListTask", "streamTextContent", "includeMarkedContent", "disableNormalization", "TEXT_CONTENT_CHUNK_SIZE", "sendWithStream", "highWaterMark", "size", "textContent", "items", "getTextContent", "xfa", "XfaText", "readableStream", "pump", "reader", "read", "value", "done", "lang", "assign", "styles", "getReader", "getStructTree", "_destroy", "waitOn", "values", "force", "completed", "cancel", "clear", "resetStats", "success", "_startRenderPage", "_renderPageChunk", "operatorListChunk", "i", "ii", "annotationStorageSerializable", "modifiedIds", "map", "transfer", "streamReader", "RenderingCancelledException", "delay", "extraDelay", "setTimeout", "AbortException", "message", "curCacheKey", "curIntentState", "stats", "WeakMap", "workerSrc", "_isSameOrigin", "otherUrl", "base", "parse", "origin", "other", "_createCDNWrapper", "wrapper", "createObjectURL", "Blob", "type", "fromPort", "deprecated", "name", "getVerbosityLevel", "has", "on", "window", "location", "href", "Worker", "terminateEarly", "ac", "terminate", "AbortController", "addEventListener", "signal", "sendTest", "testObj", "Uint8Array", "info", "warn", "_setupFakeWorkerGlobal", "WorkerMessageHandler", "LoopbackPort", "workerHandler", "setup", "cachedPort", "pdfjsWorker", "loader", "factory", "fontLoader", "FontLoader", "_params", "destroyCapability", "_networkStream", "_fullReader", "_lastProgress", "setupMessageHandler", "cachedPromise", "AnnotationStorage", "isOpList", "DISPLAY", "SerializableEmpty", "ANY", "PrintAnnotationStorage", "DISABLE", "ANNOTATIONS_DISABLE", "ENABLE_FORMS", "ANNOTATIONS_FORMS", "ENABLE_STORAGE", "ANNOTATIONS_STORAGE", "serializable", "IS_EDITING", "OPLIST", "ids", "hash", "modifiedIdsHash", "cacheKeyBuf", "join", "page", "hasOwnProperty", "resetModified", "terminated", "TextLayer", "cancelAllRequests", "sink", "assert", "getFullReader", "evt", "onPull", "close", "enqueue", "onCancel", "ready", "readyReason", "headersReady", "isStreamingSupported", "isRangeSupported", "contentLength", "rangeReader", "getRangeReader", "_numPages", "htmlForXfa", "wrapReason", "updatePassword", "code", "err", "exportedData", "exportedError", "fontData", "FontInfo", "inspectFont", "FontInspector", "font", "fontAdded", "FontFaceObject", "extra", "charProcOperatorList", "bind", "finally", "clearData", "imageRef", "pageProxy", "dataLen", "structuredClone", "imageData", "bitmap", "fetch", "filename", "refStr", "isRefProxy", "num", "gen", "OptionalContentConfig", "results", "metadata", "Metadata", "cleanupSuccessful", "RenderTask", "onContinue", "onError", "form", "WeakSet", "operatorListIdx", "running", "graphicsReadyCallback", "graphicsReady", "_useRequestAnimationFrame", "cancelled", "_cancelBound", "_continueBound", "_continue", "_scheduleNextBound", "_scheduleNext", "_nextBound", "_next", "_canvas", "_canvasContext", "_enableHWA", "_dependencyTracker", "_operationsFilter", "init", "nextBreakPoint", "getNextBreakPoint", "getContext", "alpha", "willReadFrequently", "CanvasGraphics", "beginDrawing", "endDrawing", "cancelAnimationFrame", "growOperationsCount", "updateOperatorList", "requestAnimationFrame", "executeOperatorList", "version", "build", "ColorPicker", "_keyboardManager", "shadow", "KeyboardManager", "prototype", "_hideDropdownFromKeyboard", "_colorSelectFromKeyboard", "_moveToNext", "_moveToPrevious", "_moveToBeginning", "_moveToEnd", "constructor", "editor", "uiManager", "_uiManager", "_eventBus", "color", "toUpperCase", "highlightColors", "values", "next", "value", "Object", "freeze", "blue", "green", "pink", "red", "yellow", "renderButton", "button", "document", "createElement", "className", "tabIndex", "setAttribute", "ariaHasPopup", "ariaControls", "id", "signal", "_signal", "addEventListener", "bind", "swatch", "ariaHidden", "style", "backgroundColor", "append", "renderMainDropdown", "dropdown", "ariaOrientation", "ariaLabelledBy", "div", "noContextMenu", "role", "ariaMultiSelectable", "name", "title", "ariaSelected", "event", "stopPropagation", "dispatch", "source", "type", "AnnotationEditorParamsType", "HIGHLIGHT_COLOR", "updateColor", "target", "getAttribute", "firstChild", "focus", "nextSibling", "previousSibling", "lastChild", "exec", "hideDropdown", "detail", "AbortController", "window", "combinedSignal", "ariaExpanded", "classList", "remove", "root", "contains", "add", "abort", "unselect", "preventScroll", "focusVisible", "i", "child", "children", "destroy", "BasicColorPicker", "freetext", "ink", "editorType", "colorType", "colorValue", "input", "updateParams", "update", "makeColorComp", "n", "Math", "floor", "max", "min", "toString", "padStart", "scaleAndClamp", "x", "ColorConverters", "CMYK_G", "c", "y", "m", "k", "G_CMYK", "g", "G_RGB", "G_rgb", "G_HTML", "G", "RGB_G", "r", "b", "RGB_rgb", "color", "map", "RGB_HTML", "join", "T_HTML", "T_rgb", "CMYK_RGB", "CMYK_rgb", "CMYK_HTML", "components", "rgb", "slice", "RGB_CMYK", "BaseSVGFactory", "create", "width", "height", "skipDimensions", "Error", "svg", "_createSVG", "setAttribute", "createElement", "type", "unreachable", "DOMSVGFactory", "document", "createElementNS", "SVG_NS", "DEFAULT_FONT_SIZE", "GetElementsByNameSet", "WeakSet", "TIMEZONE_OFFSET", "Date", "getTimezoneOffset", "AnnotationElementFactory", "create", "parameters", "subtype", "data", "annotationType", "AnnotationType", "LINK", "LinkAnnotationElement", "TEXT", "TextAnnotationElement", "WIDGET", "fieldType", "TextWidgetAnnotationElement", "radioButton", "RadioButtonWidgetAnnotationElement", "checkBox", "CheckboxWidgetAnnotationElement", "PushButtonWidgetAnnotationElement", "ChoiceWidgetAnnotationElement", "SignatureWidgetAnnotationElement", "WidgetAnnotationElement", "POPUP", "PopupAnnotationElement", "FREETEXT", "FreeTextAnnotationElement", "LINE", "LineAnnotationElement", "SQUARE", "SquareAnnotationElement", "CIRCLE", "CircleAnnotationElement", "POLYLINE", "PolylineAnnotationElement", "CARET", "CaretAnnotationElement", "INK", "InkAnnotationElement", "POLYGON", "PolygonAnnotationElement", "HIGHLIGHT", "HighlightAnnotationElement", "UNDERLINE", "UnderlineAnnotationElement", "SQUIGGLY", "SquigglyAnnotationElement", "STRIKEOUT", "StrikeOutAnnotationElement", "STAMP", "StampAnnotationElement", "FILEATTACHMENT", "FileAttachmentAnnotationElement", "AnnotationElement", "constructor", "isRenderable", "ignoreBorder", "createQuadrilaterals", "layer", "linkService", "downloadManager", "imageResourcesPath", "renderForms", "svgFactory", "annotationStorage", "enableComment", "enableScripting", "hasJSActions", "_fieldObjects", "fieldObjects", "parent", "container", "_createContainer", "_createQuadrilaterals", "_hasPopupData", "contentsObj", "richText", "str", "_isEditable", "isEditable", "hasPopupData", "commentText", "commentData", "editor", "getEditor", "id", "getData", "hasCommentButton", "hasPopupElement", "commentButtonPosition", "commentButtonPositionInPage", "quadPoints", "inkLists", "rect", "maxX", "maxY", "length", "i", "Math", "max", "inkList", "ii", "Infinity", "_normalizePoint", "point", "page", "view", "viewport", "rawDims", "pageWidth", "pageHeight", "pageX", "pageY", "getRawValue", "AnnotationEditorPrefix", "popup", "contents", "text", "deleted", "updateEditor", "setValue", "pageIndex", "_pageIndex", "popupRef", "modificationDate", "removePopup", "remove", "updateEdited", "params", "slice", "newPopup", "_createPopup", "resetEdited", "style", "currentRect", "rotation", "splice", "left", "top", "width", "height", "setRotation", "document", "createElement", "setAttribute", "tabIndex", "zIndex", "alternativeText", "title", "noRotate", "classList", "add", "hasOwnCanvas", "borderStyle", "borderWidth", "horizontalRadius", "horizontalCornerRadius", "verticalRadius", "verticalCornerRadius", "radius", "borderRadius", "AnnotationBorderStyleType", "SOLID", "DASHED", "BEVELED", "warn", "INSET", "borderBottomStyle", "borderColor", "Util", "makeHexColor", "normalizeRect", "angle", "_commonActions", "setColor", "jsName", "styleName", "event", "color", "detail", "colorType", "colorArray", "target", "ColorConverters", "shadow", "display", "hidden", "visibility", "noView", "noPrint", "print", "focus", "setTimeout", "preventScroll", "userName", "readonly", "disabled", "required", "_setRequired", "bgColor", "fillColor", "fgColor", "textColor", "strokeColor", "_dispatchEventFromSandbox", "actions", "jsEvent", "commonActions", "name", "Object", "keys", "action", "_setDefaultPropertiesFromJS", "element", "storedData", "actionName", "entries", "eventProxy", "rectBlX", "rectBlY", "rectTrX", "rectTrY", "map", "x", "fround", "trX", "trY", "blX", "blY", "subarray", "svgBuffer", "svg", "role", "defs", "append", "clipPath", "y", "rectWidth", "rectHeight", "push", "backgroundImage", "join", "popupData", "date", "titleObj", "parentRect", "elements", "_commentManager", "div", "render", "extraPopupElement", "unreachable", "_getElementsByName", "skipId", "fields", "fieldObj", "exportValues", "exportValue", "domElement", "querySelector", "has", "getElementsByName", "getAttribute", "show", "maybeShow", "hide", "forceHide", "getElementsToTriggerPopup", "addHighlightArea", "triggers", "Array", "isArray", "_editOnDoubleClick", "annotationEditorType", "mode", "editId", "addEventListener", "eventBus", "dispatch", "source", "mustEnterInEditMode", "EditorAnnotationElement", "className", "createOrUpdatePopup", "hasComment", "comment", "renderCommentButton", "options", "isTooltipOnly", "link", "isBound", "url", "addLinkAttributes", "newWindow", "_bindNamedAction", "overlaidText", "attachment", "attachmentDest", "setOCGState", "dest", "_bindLink", "Action", "_bindJSAction", "resetForm", "_bindResetFormAction", "destination", "href", "getDestinationHash", "onclick", "goToDestination", "getAnchorUrl", "executeNamedAction", "description", "openOrDownloadData", "content", "filename", "executeSetOCGState", "Map", "get", "otherClickAction", "resetFormFields", "refs", "resetFormRefs", "include", "allFields", "fieldIds", "Set", "fieldName", "values", "field", "storage", "allIds", "type", "value", "defaultValue", "dispatchEvent", "Event", "ids", "image", "src", "toLowerCase", "JSON", "stringify", "showElementAndHideCanvas", "previousSibling", "nodeName", "_getKeyModifier", "FeatureTest", "platform", "isMac", "metaKey", "ctrlKey", "_setEventListener", "elementData", "baseName", "eventName", "valueGetter", "includes", "shift", "shiftKey", "modifier", "focused", "relatedTarget", "_setEventListeners", "names", "getter", "Blur", "Focus", "_setBackgroundColor", "backgroundColor", "_setTextStyle", "TEXT_ALIGNMENT", "fontColor", "defaultAppearanceData", "fontSize", "computedFontSize", "BORDER_SIZE", "roundToOneDecimal", "round", "multiLine", "abs", "numberOfLines", "LINE_FACTOR", "lineHeight", "min", "textAlignment", "textAlign", "isRequired", "removeAttribute", "hasAppearance", "fieldValue", "setPropertyOnSiblings", "base", "key", "keyInStorage", "getValue", "textContent", "maxLen", "charLimit", "fieldFormattedValues", "formattedValue", "comb", "replaceAll", "userValue", "lastCommittedValue", "commitKey", "doNotScroll", "overflowY", "password", "overflowX", "readOnly", "datetimeFormat", "datetimeType", "timeStep", "hasDateOrTime", "maxLength", "defaultFieldValue", "blurListener", "undefined", "scrollLeft", "step", "parts", "getHours", "getMinutes", "getSeconds", "v", "toString", "padStart", "toISOString", "split", "activeElement", "selRange", "setSelectionRange", "willCommit", "selStart", "selectionStart", "selEnd", "selectionEnd", "_blurListener", "parseInt", "valueOf", "Keystroke", "inputType", "match", "substring", "preventDefault", "change", "fieldWidth", "combWidth", "letterSpacing", "verticalAlign", "checked", "checkbox", "curChecked", "buttonValue", "radio", "pdfButtonValue", "linkElement", "lastChild", "selectElement", "addAnEmptyEntry", "combo", "size", "multiSelect", "multiple", "option", "selected", "optionElement", "displayValue", "removeEmptyEntry", "noneOptionElement", "prepend", "removeEventListener", "isExport", "selectedIndex", "prototype", "filter", "call", "selectedValues", "getItems", "multipleSelection", "index", "findIndex", "items", "clear", "insert", "selectChild", "children", "before", "item", "indices", "editable", "changeEx", "keyDown", "hasCommentManager", "PopupElement", "creationDate", "open", "commentManager", "elementIds", "ariaHasPopup", "AnnotationPrefix", "bind", "PDFDateString", "toDateObject", "trigger", "flatMap", "e", "AbortController", "signal", "find", "hasOwnButton", "togglePopup", "toggleCommentPopup", "showPopup", "hidePopup", "button", "parentContainer", "ariaControls", "after", "commentButtonColor", "opacity", "makeCommentColor", "focusCommentButton", "elementBeforePopup", "parentBoundingClientRect", "getBoundingClientRect", "setCommentButtonStates", "hasPopup", "toggle", "ariaExpanded", "setSelectedCommentButton", "commentPopupPosition", "parentX", "parentY", "parentWidth", "parentHeight", "pos", "hasDefaultPopupPosition", "commentButtonWidth", "editComment", "posX", "posY", "parentDimensions", "showDialog", "baseColor", "outlineColor", "header", "dir", "dateObj", "dateTime", "renderRichText", "html", "attributes", "popupLines", "popupContent", "lineAttributes", "line", "altKey", "abort", "useParentRect", "intersect", "normalizedRect", "HORIZONTAL_SPACE_AFTER_ANNOTATION", "popupLeft", "popupTop", "isVisible", "textPosition", "AnnotationEditorType", "lineSpan", "lineCoordinates", "square", "circle", "containerClassName", "svgElementName", "vertices", "points", "polyline", "it", "transform", "g", "thickness", "root", "parentElement", "mark", "underline", "strikeout", "file", "fillAlpha", "test", "evt", "AnnotationLayer", "accessibilityManager", "annotationCanvasMap", "annotationEditorUIManager", "structTreeLayer", "AnnotationStorage", "_annotationEditorUIManager", "hasEditableAnnotations", "popupElements", "contentElement", "firstChild", "annotationId", "ariaAttributes", "getAriaAttributes", "at", "moveElementInDOM", "annotations", "setLayerDimensions", "popupToElements", "elementParams", "DOMSVGFactory", "noHTML", "isPopupAnnotation", "set", "rendered", "renderAnnotationElement", "addLinkAnnotations", "_defaultBorderStyle", "update", "canvas", "replaceWith", "contains", "editableAnnotation", "_hasNoCanvas", "setMissingCanvas", "getEditableAnnotations", "from", "getEditableAnnotation", "addFakeAnnotation", "getPDFRect", "htmlElement", "freeze", "rawWidth", "dashArray", "EOL_PATTERN", "FreeTextEditor", "AnnotationEditor", "id", "_colorPicker", "_freeTextDefaultContent", "_internalPadding", "_defaultColor", "_defaultFontSize", "_keyboardManager", "proto", "prototype", "arrowChecker", "self", "isEmpty", "small", "AnnotationEditorUIManager", "TRANSLATE_SMALL", "big", "TRANSLATE_BIG", "shadow", "KeyboardManager", "commitOrRemove", "bubbles", "_translateEmpty", "args", "checker", "_type", "_editorType", "AnnotationEditorType", "FREETEXT", "constructor", "params", "name", "color", "_defaultLineColor", "fontSize", "annotationElementId", "_uiManager", "a11yAlert", "initialize", "l10n", "uiManager", "style", "getComputedStyle", "document", "documentElement", "parseFloat", "getPropertyValue", "updateDefaultParams", "type", "value", "AnnotationEditorParamsType", "FREETEXT_SIZE", "FREETEXT_COLOR", "updateParams", "defaultPropertiesToUpdate", "propertiesToUpdate", "toolbarButtons", "BasicColorPicker", "colorType", "setFontsize", "size", "editorDiv", "translate", "parentScale", "savedFontsize", "addCommands", "cmd", "bind", "undo", "post", "updateUI", "mustExec", "overwriteIfSameType", "keepUndo", "onUpdatedColor", "update", "setColor", "col", "savedColor", "x", "y", "translateSelectedEditors", "getInitialTranslation", "scale", "rebuild", "parent", "div", "isAttachedToDOM", "add", "enableEditMode", "overlayDiv", "classList", "remove", "contentEditable", "_isDraggable", "removeAttribute", "AbortController", "signal", "combinedSignal", "addEventListener", "editorDivKeydown", "editorDivFocus", "editorDivBlur", "editorDivInput", "editorDivPaste", "disableEditMode", "setAttribute", "abort", "focus", "preventScroll", "isEditing", "focusin", "event", "_focusEventsAllowed", "target", "onceAdded", "width", "_initialOptions", "isCentered", "center", "innerText", "trim", "setEditingState", "buffer", "normalize", "prevChild", "child", "childNodes", "nodeType", "Node", "TEXT_NODE", "nodeName", "push", "join", "parentWidth", "parentHeight", "parentDimensions", "rect", "getBoundingClientRect", "currentLayer", "savedDisplay", "display", "savedVisibility", "contains", "append", "toggle", "rotation", "parentRotation", "height", "fixAndSetPosition", "commit", "isInEditMode", "savedText", "newText", "trimEnd", "setText", "text", "shouldGetKeyboardEvents", "enterInEditMode", "keydown", "key", "preventDefault", "exec", "disableEditing", "enableEditing", "canChangeContent", "render", "baseX", "baseY", "_isCopy", "createElement", "className", "position", "_initialData", "tx", "ty", "pageTranslationToScreen", "pageWidth", "pageHeight", "pageDimensions", "pageX", "pageY", "pageTranslation", "posX", "posY", "setAt", "_moveAfterPaste", "node", "nodeValue", "replaceAll", "clipboardData", "window", "types", "length", "paste", "getData", "selection", "getSelection", "rangeCount", "deleteFromDocument", "range", "getRangeAt", "includes", "insertNode", "createTextNode", "collapseToStart", "startContainer", "startOffset", "bufferBefore", "bufferAfter", "parentElement", "slice", "i", "newRange", "Range", "beforeLength", "Math", "sumPrecise", "map", "line", "firstChild", "setStart", "setEnd", "removeAllRanges", "addRange", "replaceChildren", "split", "content", "contentDiv", "getPDFRect", "padding", "getRect", "deserialize", "data", "initialData", "FreeTextAnnotationElement", "defaultAppearanceData", "fontColor", "popupRef", "richText", "contentsObj", "creationDate", "modificationDate", "textContent", "textPosition", "page", "pageNumber", "annotationType", "Array", "from", "pageIndex", "deleted", "comment", "str", "editor", "Util", "makeHexColor", "setCommentData", "serialize", "isForCopying", "serializeDeleted", "_colorManager", "convert", "serialized", "Object", "assign", "addComment", "isCopy", "hasEditedComment", "_hasBeenMoved", "some", "c", "renderAnnotationElement", "annotation", "updateEdited", "popup", "hasCommentManager", "resetAnnotationElement", "resetEdited", "Outline", "PRECISION", "toSVGPath", "unreachable", "box", "serialize", "_bbox", "_rotation", "_rescale", "src", "tx", "ty", "sx", "sy", "dest", "Float32Array", "length", "i", "ii", "_rescaleAndSwap", "_translate", "svgRound", "x", "Math", "round", "_normalizePoint", "y", "parentWidth", "parentHeight", "rotation", "_normalizePagePoint", "createBezierPoints", "x1", "y1", "x2", "y2", "x3", "y3", "FreeDrawOutliner", "Float32Array", "constructor", "x", "y", "box", "scaleFactor", "thickness", "isLTR", "innerMargin", "set", "NaN", "push", "isEmpty", "isNaN", "lastTop", "subarray", "lastBottom", "width", "height", "add", "layerX", "layerY", "layerWidth", "layerHeight", "x1", "y1", "x2", "y2", "diffX", "diffY", "d", "Math", "hypot", "diffD", "K", "shiftX", "shiftY", "x0", "y0", "nX", "nY", "thX", "thY", "length", "angle", "abs", "atan2", "PI", "toSVGPath", "top", "bottom", "buffer", "i", "join", "lastTopX", "lastTopY", "lastBottomX", "lastBottomY", "newFreeDrawOutline", "outline", "points", "FreeDrawOutline", "getOutlines", "last", "ii", "N", "j", "pos", "Outline", "firstPoint", "lastPoint", "serialize", "blX", "blY", "trX", "trY", "rotation", "_rescale", "_rescaleAndSwap", "Array", "from", "lastX", "lastY", "minMax", "firstPointX", "firstPointY", "lastPointX", "lastPointY", "ltrCallback", "max", "min", "bezierBbox", "Util", "pointBoundingBox", "Infinity", "bezierBoundingBox", "slice", "rectBoundingBox", "bbox", "newOutliner", "point", "getNewOutline", "sx", "sy", "tx", "ty", "outliner", "HighlightOutliner", "constructor", "boxes", "borderWidth", "innerMargin", "isLTR", "minMax", "Infinity", "NUMBER_OF_DIGITS", "EPSILON", "x", "y", "width", "height", "x1", "Math", "floor", "x2", "ceil", "y1", "y2", "left", "right", "push", "Util", "rectBoundingBox", "bboxWidth", "bboxHeight", "shiftedMinX", "shiftedMinY", "firstPointX", "firstPointY", "lastEdge", "at", "lastPoint", "edge", "max", "min", "Float32Array", "getOutlines", "sort", "a", "b", "outlineVerticalEdges", "edges", "allEdges", "Set", "i", "ii", "length", "edge1", "edge2", "add", "outlines", "outline", "size", "values", "next", "value", "delete", "lastPointX", "lastPointY", "e", "has", "HighlightOutline", "array", "start", "end", "middle", "index", "splice", "results", "j", "jj", "y3", "y4", "Outline", "box", "firstPoint", "toSVGPath", "buffer", "polygon", "prevX", "prevY", "join", "serialize", "blX", "blY", "trX", "trY", "_rotation", "points", "Array", "classNamesForOutlining", "FreeHighlightOutliner", "FreeDrawOutliner", "newFreeDrawOutline", "scaleFactor", "FreeHighlightOutline", "FreeDrawOutline", "newOutliner", "point", "thickness", "HighlightEditor", "AnnotationEditor", "_defaultColor", "_defaultOpacity", "_defaultThickness", "_type", "_editorType", "AnnotationEditorType", "HIGHLIGHT", "_freeHighlightId", "_freeHighlight", "_freeHighlightClipId", "_keyboardManager", "proto", "prototype", "shadow", "KeyboardManager", "_moveCaret", "args", "constructor", "params", "name", "color", "thickness", "opacity", "boxes", "methodOfCreation", "text", "_isDraggable", "defaultL10nId", "highlightId", "anchorNode", "anchorOffset", "focusNode", "focusOffset", "rotate", "rotation", "annotationElementId", "_uiManager", "a11yAlert", "telemetryInitialData", "action", "type", "getNonHCMColorName", "telemetryFinalData", "computeTelemetryFinalData", "data", "numberOfColors", "get", "size", "outliner", "HighlightOutliner", "getOutlines", "x", "y", "width", "height", "box", "outlinerForOutline", "direction", "firstPoint", "lastPoint", "highlightOutlines", "clipPathId", "extraThickness", "getNewOutline", "parent", "drawLayer", "finalizeDraw", "bbox", "path", "d", "toSVGPath", "drawOutline", "rootClass", "highlightOutline", "free", "angle", "viewport", "updateProperties", "pageWidth", "pageHeight", "parentDimensions", "initialize", "l10n", "uiManager", "highlightColors", "values", "next", "value", "updateDefaultParams", "AnnotationEditorParamsType", "HIGHLIGHT_COLOR", "HIGHLIGHT_THICKNESS", "translateInPage", "toolbarPosition", "commentButtonPosition", "updateParams", "defaultPropertiesToUpdate", "propertiesToUpdate", "HIGHLIGHT_FREE", "onUpdatedColor", "root", "fill", "updateColor", "setColorAndOpacity", "col", "opa", "savedColor", "savedOpacity", "addCommands", "cmd", "bind", "undo", "post", "updateUI", "mustExec", "overwriteIfSameType", "keepUndo", "_reportTelemetry", "savedThickness", "setThickness", "th", "INK_THICKNESS", "toolbarButtons", "colorPicker", "ColorPicker", "editor", "disableEditing", "div", "classList", "toggle", "enableEditing", "fixAndSetPosition", "getBaseTranslation", "getRect", "tx", "ty", "onceAdded", "focus", "addUndoableEditor", "remove", "rebuild", "isAttachedToDOM", "add", "setParent", "mustBeSelected", "contains", "show", "_isVisible", "select", "setDims", "id", "draw", "viewBox", "highlight", "style", "clipPath", "render", "setAttribute", "addEventListener", "signal", "_signal", "highlightDiv", "document", "createElement", "append", "className", "bindEvents", "pointerover", "isSelected", "hovered", "pointerleave", "event", "exec", "unselect", "start", "selection", "window", "getSelection", "setPosition", "selected", "_mustFixPosition", "visible", "hidden", "pageDimensions", "pageX", "pageY", "pageTranslation", "quadPoints", "Float32Array", "length", "i", "sx", "sy", "rect", "serialize", "startHighlighting", "isLTR", "target", "textLayer", "layerX", "layerY", "parentWidth", "parentHeight", "getBoundingClientRect", "ac", "AbortController", "combinedSignal", "pointerUpCallback", "e", "abort", "stopEvent", "capture", "passive", "noContextMenu", "FreeHighlightOutliner", "scale", "isEmpty", "createAndAddNewEditor", "deserialize", "initialData", "HighlightAnnotationElement", "popupRef", "richText", "contentsObj", "creationDate", "modificationDate", "page", "pageNumber", "annotationType", "Array", "from", "pageIndex", "slice", "deleted", "comment", "str", "InkAnnotationElement", "inkLists", "borderStyle", "rawWidth", "Util", "makeHexColor", "_initialData", "setCommentData", "push", "points", "point", "ii", "parentRotation", "isForCopying", "serializeDeleted", "_colorManager", "convert", "getNonHCMColor", "serialized", "Object", "assign", "outlines", "addComment", "hasEditedComment", "some", "c", "renderAnnotationElement", "annotation", "hide", "updateEdited", "getPDFRect", "popup", "canCreateNewEmptyEditor", "DrawingOptions", "Object", "create", "updateProperty", "name", "value", "updateSVGProperty", "updateProperties", "properties", "entries", "startsWith", "toSVGProperties", "root", "reset", "updateAll", "options", "clone", "unreachable", "DrawingEditor", "AnnotationEditor", "_colorPicker", "_drawId", "_currentDrawId", "_currentParent", "NaN", "_INNER_MARGIN", "constructor", "params", "mustBeCommitted", "_addOutlines", "onUpdatedColor", "update", "color", "drawOutlines", "drawId", "drawingOptions", "_drawingOptions", "annotationElementId", "_uiManager", "a11yAlert", "editorType", "parent", "drawLayer", "finalizeDraw", "defaultProperties", "box", "id", "draw", "_mergeSVGProperties", "defaultSVGProperties", "p1", "p2", "p1Keys", "Set", "keys", "key", "has", "assign", "getDefaultDrawingOptions", "_options", "typesMap", "isDrawer", "supportMultipleDrawings", "updateDefaultParams", "type", "propertyName", "get", "_defaultDrawingOptions", "updateParams", "_updateProperty", "defaultPropertiesToUpdate", "push", "propertiesToUpdate", "savedValue", "setter", "val", "bbox", "colorType", "addCommands", "cmd", "bind", "undo", "post", "updateUI", "mustExec", "overwriteIfSameType", "keepUndo", "_onResizing", "getPathResizingSVGProperties", "_onResized", "getPathResizedSVGProperties", "_onTranslating", "_x", "_y", "_onTranslated", "getPathTranslatedSVGProperties", "parentDimensions", "_onStartDragging", "rootClass", "moving", "_onStopDragging", "commit", "disableEditMode", "disableEditing", "div", "classList", "toggle", "enableEditing", "getBaseTranslation", "isResizable", "onceAdded", "focus", "addUndoableEditor", "_isDraggable", "setSelected", "isOnScreen", "remove", "rebuild", "isAttachedToDOM", "add", "setParent", "mustBeSelected", "removeShouldRescale", "addShouldRescale", "contains", "select", "updateParent", "x", "y", "width", "height", "pW", "pH", "rotation", "fixAndSetPosition", "setDims", "parentRotation", "rotate", "updateRotation", "onScaleChanging", "updateParentDimensions", "scale", "onScaleChangingWhenDrawing", "render", "baseX", "baseY", "_isCopy", "drawDiv", "document", "createElement", "append", "setAttribute", "className", "_moveAfterPaste", "createDrawerInstance", "_parentWidth", "_parentHeight", "_rotation", "startDrawing", "uiManager", "_isLTR", "event", "target", "offsetX", "offsetY", "pointerId", "pointerType", "viewport", "parentWidth", "parentHeight", "getBoundingClientRect", "ac", "AbortController", "signal", "combinedSignal", "window", "addEventListener", "e", "_endDraw", "delete", "endDrawingSession", "isCancellable", "removeLastElement", "isEmpty", "capture", "passive", "noContextMenu", "_drawMove", "timeStamp", "stopEvent", "toggleDrawing", "_editorUndoBar", "hide", "startNew", "updateUIForDefaultProperties", "size", "_cleanup", "all", "abort", "end", "lastElement", "getLastElement", "setLastElement", "AnnotationEditorParamsType", "DRAW_STEP", "endDrawing", "isAborted", "cleanUndoStack", "pageDimensions", "pageWidth", "pageHeight", "editor", "createAndAddNewEditor", "getOutlines", "createDrawingOptions", "_data", "deserializeDraw", "_pageX", "_pageY", "_pageWidth", "_pageHeight", "_innerWidth", "deserialize", "data", "rawDims", "pageX", "pageY", "serializeDraw", "isForCopying", "pageTranslation", "serialize", "renderAnnotationElement", "annotation", "updateEdited", "rect", "getPDFRect", "canCreateNewEmptyEditor", "InkDrawOutliner", "Float64Array", "InkDrawOutline", "constructor", "x", "y", "parentWidth", "parentHeight", "rotation", "thickness", "line", "NaN", "points", "set", "updateProperty", "name", "value", "Outline", "_normalizePoint", "isEmpty", "length", "isCancellable", "add", "x1", "y1", "x2", "y2", "subarray", "diffX", "diffY", "d", "Math", "hypot", "push", "isNaN", "path", "toSVGPath", "splice", "createBezierPoints", "end", "change", "startNew", "last", "at", "Float32Array", "getLastElement", "setLastElement", "element", "removeLastElement", "pop", "i", "ii", "firstX", "svgRound", "firstY", "lastIndexOf", "slice", "secondX", "secondY", "buffer", "c1x", "c1y", "c2x", "c2y", "map", "join", "getOutlines", "scale", "innerMargin", "build", "defaultSVGProperties", "root", "viewBox", "rootClass", "draw", "bbox", "lines", "parentScale", "serialize", "pageX", "pageY", "pageWidth", "pageHeight", "isForCopying", "serializedLines", "serializedPoints", "width", "height", "tx", "ty", "sx", "sy", "rescaleFn", "_rescale", "_rescaleAndSwap", "Array", "rect", "deserialize", "paths", "newLines", "point", "len", "outlines", "prototype", "margin", "marginX", "marginY", "Infinity", "Util", "pointBoundingBox", "lastX", "lastY", "bezierBoundingBox", "MathClamp", "box", "oldMarginX", "oldMarginY", "newMarginX", "newMarginY", "diffMarginX", "diffMarginY", "updateParentDimensions", "updateRotation", "transform", "rotationTransform", "defaultProperties", "a", "b", "c", "e", "f", "getPathResizingSVGProperties", "newX", "newY", "newWidth", "newHeight", "abs", "PRECISION", "s1x", "s1y", "s2x", "s2y", "getPathResizedSVGProperties", "_translate", "getPathTranslatedSVGProperties", "parentDimensions", "newParentWidth", "newParentHeight", "InkDrawingOptions", "DrawingOptions", "constructor", "viewerParameters", "_viewParameters", "updateProperties", "fill", "stroke", "AnnotationEditor", "_defaultLineColor", "updateSVGProperty", "name", "value", "realScale", "clone", "updateAll", "InkEditor", "DrawingEditor", "_type", "_editorType", "AnnotationEditorType", "INK", "_defaultDrawingOptions", "params", "_willKeepAspectRatio", "defaultL10nId", "initialize", "l10n", "uiManager", "viewParameters", "getDefaultDrawingOptions", "options", "supportMultipleDrawings", "typesMap", "shadow", "Map", "AnnotationEditorParamsType", "INK_THICKNESS", "INK_COLOR", "INK_OPACITY", "createDrawerInstance", "x", "y", "parentWidth", "parentHeight", "rotation", "InkDrawOutliner", "deserializeDraw", "pageX", "pageY", "pageWidth", "pageHeight", "innerMargin", "data", "InkDrawOutline", "deserialize", "parent", "initialData", "InkAnnotationElement", "inkLists", "rect", "id", "color", "opacity", "borderStyle", "rawWidth", "thickness", "popupRef", "richText", "contentsObj", "creationDate", "modificationDate", "page", "pageNumber", "annotationType", "Array", "from", "paths", "points", "boxes", "pageIndex", "slice", "annotationElementId", "deleted", "comment", "str", "editor", "_initialData", "setCommentData", "toolbarButtons", "_colorPicker", "BasicColorPicker", "colorType", "_drawingOptions", "onScaleChanging", "_drawId", "drawLayer", "toSVGProperties", "onScaleChangingWhenDrawing", "_currentParent", "_currentDrawId", "createDrawingOptions", "Util", "makeHexColor", "serialize", "isForCopying", "isEmpty", "serializeDeleted", "lines", "serializeDraw", "serialized", "Object", "assign", "_colorManager", "convert", "addComment", "isCopy", "hasEditedComment", "_hasBeenMoved", "_hasBeenResized", "some", "c", "i", "renderAnnotationElement", "annotation", "hide", "updateEdited", "popup", "ContourDrawOutline", "InkDrawOutline", "toSVGPath", "path", "endsWith", "BASE_HEADER_LENGTH", "POINTS_PROPERTIES_NUMBER", "SignatureExtractor", "maxDim", "sigmaSFactor", "sigmaR", "kernelSize", "i0", "j0", "i", "j", "Int32Array", "buf", "width", "offset", "id", "k", "kk", "shiftI", "shiftJ", "height", "threshold", "N", "length", "types", "nbd", "lnbd", "contours", "ij", "pix", "i2", "j2", "Math", "abs", "points", "isHole", "contour", "parent", "push", "contour0", "c", "i1", "j1", "i3", "j3", "i4", "j4", "ij3", "start", "end", "output", "ax", "ay", "abx", "aby", "dist", "hypot", "nabx", "naby", "aa", "m", "invS", "phi", "atan", "cosPhi", "cos", "sinPhi", "sin", "tmax", "poly", "partialPhi", "max", "dmax", "index", "d", "len", "sigmaS", "kernel", "Float32Array", "sigmaS2", "halfSize", "x", "exp", "rangeValues", "sigmaR2", "out", "Uint8Array", "histogram", "Uint32Array", "center", "sum", "norm", "y", "l", "neighbour", "w", "round", "g", "Uint8ClampedArray", "min", "Infinity", "ii", "ratio", "M", "L", "findIndex", "v", "pos", "spos", "bitmap", "originalBitmap", "newWidth", "newHeight", "prevWidth", "prevHeight", "steps", "log2", "isteps", "floor", "ceil", "offscreen", "OffscreenCanvas", "ctx", "getContext", "drawImage", "close", "transferToImageBitmap", "willReadFrequently", "fillStyle", "fillRect", "filter", "grayImage", "getImageData", "data", "uint8Buf", "extractContoursFromText", "text", "fontFamily", "fontStyle", "fontWeight", "pageWidth", "pageHeight", "rotation", "innerMargin", "canvas", "alpha", "fontSize", "font", "actualBoundingBoxLeft", "actualBoundingBoxRight", "actualBoundingBoxAscent", "actualBoundingBoxDescent", "fontBoundingBoxAscent", "fontBoundingBoxDescent", "measureText", "SCALE", "canvasWidth", "canvasHeight", "fillText", "contourList", "processDrawnLines", "lines", "curves", "mustSmooth", "areContours", "process", "buffer", "thickness", "linesAndPoints", "xScale", "yScale", "newCurves", "reducedPoints", "newPoints", "line", "set", "NaN", "x1", "y1", "x2", "y2", "Outline", "createBezierPoints", "outline", "ContourDrawOutline", "InkDrawOutline", "build", "compressSignature", "outlines", "minDiff", "maxDiff", "outlinesLength", "dx", "bufferType", "Int8Array", "Int16Array", "headerLength", "header", "BYTES_PER_ELEMENT", "cs", "CompressionStream", "writer", "writable", "getWriter", "ready", "write", "BufferCtor", "prototype", "constructor", "diffs", "Response", "readable", "arrayBuffer", "bytes", "toBase64Util", "decompressSignature", "signatureData", "fromBase64Util", "DecompressionStream", "then", "catch", "chunk", "version", "Error", "numberOfDrawings", "diffsOffset", "e", "warn", "SignatureOptions", "DrawingOptions", "constructor", "updateProperties", "fill", "AnnotationEditor", "_defaultLineColor", "clone", "updateAll", "DrawnSignatureOptions", "InkDrawingOptions", "viewerParameters", "stroke", "_viewParameters", "SignatureEditor", "DrawingEditor", "_type", "_editorType", "AnnotationEditorType", "SIGNATURE", "_defaultDrawingOptions", "params", "mustBeCommitted", "name", "_willKeepAspectRatio", "signatureData", "defaultL10nId", "initialize", "l10n", "uiManager", "_defaultDrawnSignatureOptions", "viewParameters", "getDefaultDrawingOptions", "options", "supportMultipleDrawings", "typesMap", "shadow", "Map", "isDrawer", "telemetryFinalData", "type", "hasDescription", "computeTelemetryFinalData", "data", "hasDescriptionStats", "get", "hasAltText", "hasNoAltText", "isResizable", "onScaleChanging", "_drawId", "render", "div", "baseX", "baseY", "_isCopy", "x", "y", "lines", "mustSmooth", "areContours", "description", "uuid", "heightInPage", "rawDims", "pageWidth", "pageHeight", "rotation", "parent", "viewport", "outline", "SignatureExtractor", "processDrawnLines", "innerMargin", "_INNER_MARGIN", "addSignature", "setAttribute", "JSON", "stringify", "hidden", "_uiManager", "getSignature", "_moveAfterPaste", "setUuid", "addEditToolbar", "getUuid", "then", "toolbar", "updateEditSignatureButton", "getSignaturePreview", "newCurves", "thickness", "width", "height", "maxDim", "Math", "max", "outlineData", "curves", "map", "points", "toolbarButtons", "signatureManager", "savedX", "savedY", "ContourDrawOutline", "drawingOptions", "_addOutlines", "drawOutlines", "pageDimensions", "newHeight", "setDims", "center", "_onResized", "rotate", "addToAnnotationStorage", "_reportTelemetry", "action", "hasBeenSaved", "getFromImage", "bitmap", "process", "getFromText", "text", "fontInfo", "extractContoursFromText", "getDrawnSignature", "createDrawingOptions", "_drawingOptions", "serialize", "isForCopying", "isEmpty", "serializeDraw", "serialized", "Object", "assign", "isSignature", "color", "addComment", "paths", "isCopy", "accessibilityData", "alt", "deserializeDraw", "pageX", "pageY", "deserialize", "InkDrawOutline", "editor", "StampEditor", "AnnotationEditor", "_type", "_editorType", "AnnotationEditorType", "STAMP", "constructor", "params", "name", "bitmapUrl", "bitmapFile", "defaultL10nId", "initialize", "l10n", "uiManager", "isHandlingMimeForPasting", "mime", "SupportedImageMimeTypes", "includes", "paste", "item", "parent", "pasteEditor", "mode", "getAsFile", "altTextFinish", "_uiManager", "useNewAltTextFlow", "div", "hidden", "telemetryFinalData", "type", "hasAltText", "altTextData", "altText", "computeTelemetryFinalData", "data", "hasAltTextStats", "get", "hasNoAltText", "fromId", "remove", "bitmap", "id", "isSvg", "file", "enableWaiting", "useNewAltTextWhenAddingImage", "addEditToolbar", "then", "_editToolbar", "hide", "editAltText", "_reportTelemetry", "action", "alt_text_modal", "alt_text_type", "mlGuessAltText", "focus", "imageData", "updateAltTextData", "hasAltTextData", "mlManager", "Error", "isEnabledFor", "width", "height", "copyCanvas", "response", "guess", "request", "channels", "length", "error", "cancel", "output", "setGuessedAltText", "alt", "decorative", "imageManager", "getFromId", "finally", "url", "getFromUrl", "getFromFile", "input", "document", "createElement", "accept", "join", "signal", "_signal", "Promise", "resolve", "addEventListener", "files", "click", "deleteId", "clearTimeout", "rebuild", "isAttachedToDOM", "add", "onceAdded", "_isDraggable", "isEmpty", "toolbarButtons", "createAltText", "isResizable", "render", "baseX", "baseY", "_isCopy", "x", "y", "_moveAfterPaste", "addShouldRescale", "setCanvas", "annotationElementId", "canvas", "bitmapId", "getFromCanvas", "isValidId", "_onResized", "onScaleChanging", "TIME_TO_WAIT", "setTimeout", "pageWidth", "pageHeight", "pageDimensions", "MAX_RATIO", "factor", "Math", "min", "setAttribute", "addContainer", "setDims", "_initialOptions", "isCentered", "center", "fixAndSetPosition", "addUndoableEditor", "a11yAlert", "maxDataDimension", "maxPreviewDimension", "createImageData", "bitmapWidth", "bitmapHeight", "outputScale", "OutputScale", "ratio", "floor", "scaledWidth", "ceil", "sx", "scaledHeight", "sy", "ctx", "getContext", "filter", "hcmFilter", "white", "black", "ColorScheme", "isDarkMode", "boxDim", "boxDimWidth", "boxDimHeight", "pattern", "OffscreenCanvas", "patternCtx", "fillStyle", "fillRect", "createPattern", "drawImage", "dataWidth", "dataHeight", "symmetric", "offscreen", "offscreenCtx", "willReadFrequently", "getImageData", "newWidth", "newHeight", "prevWidth", "prevHeight", "transferToImageBitmap", "parentWidth", "parentHeight", "parentDimensions", "toUrl", "getSvgUrl", "toDataURL", "round", "PixelsPerInch", "PDF_TO_CSS_UNITS", "structuredClone", "deserialize", "initialData", "missingCanvas", "StampAnnotationElement", "rect", "rotation", "structParent", "popupRef", "richText", "contentsObj", "creationDate", "modificationDate", "container", "page", "pageNumber", "_hasNoCanvas", "_structTree", "getAriaAttributes", "AnnotationPrefix", "annotationType", "pageIndex", "slice", "deleted", "accessibilityData", "comment", "str", "editor", "addMissingCanvas", "_initialData", "setCommentData", "serialize", "isForCopying", "context", "serializeDeleted", "serialized", "Object", "assign", "addComment", "serializeAltText", "isCopy", "changes", "isSame", "isSameAltText", "stamps", "Map", "area", "has", "set", "prevData", "close", "isSamePageIndex", "hasEditedComment", "_hasBeenMoved", "_hasBeenResized", "renderAnnotationElement", "annotation", "updateEdited", "getPDFRect", "popup", "AnnotationEditorLayer", "Map", "_initialized", "FreeTextEditor", "InkEditor", "StampEditor", "HighlightEditor", "SignatureEditor", "map", "type", "_editorType", "constructor", "uiManager", "pageIndex", "div", "structTreeLayer", "accessibilityManager", "annotationLayer", "drawLayer", "textLayer", "viewport", "l10n", "editorTypes", "values", "editorType", "initialize", "registerEditorTypes", "_structTree", "addLayer", "isEmpty", "size", "isInvisible", "getMode", "AnnotationEditorType", "NONE", "updateToolbar", "options", "updateMode", "mode", "classList", "toggle", "disableTextSelection", "togglePointerEvents", "toggleAnnotationLayerPointerEvents", "disableClick", "INK", "enableClick", "HIGHLIGHT", "enableTextSelection", "POPUP", "_type", "hidden", "hasTextLayer", "setEditingState", "isEditing", "addCommands", "params", "cleanUndoStack", "toggleDrawing", "enabled", "getEditors", "enable", "tabIndex", "abort", "annotationElementIds", "Set", "editor", "enableEditing", "show", "annotationElementId", "removeChangedExistingAnnotation", "add", "editable", "getEditableAnnotations", "hide", "isDeletedAnnotationElement", "data", "id", "has", "deserialize", "addOrRebuild", "_eventBus", "dispatch", "source", "pageNumber", "disable", "AbortController", "signal", "combinedSignal", "addEventListener", "e", "DBL_CLICK_THRESHOLD", "clientX", "clientY", "timeStamp", "lastPointerDownTimestamp", "elements", "document", "elementsFromPoint", "contains", "regex", "RegExp", "AnnotationEditorPrefix", "element", "test", "get", "stopPropagation", "preventDefault", "dblclick", "capture", "changedAnnotations", "resetAnnotations", "disableEditing", "updateFakeAnnotationElement", "serialize", "set", "getEditableAnnotation", "remove", "editables", "updateEdited", "deleted", "resetAnnotationElement", "addChangedExistingAnnotation", "renderAnnotationElement", "setActiveEditor", "currentActive", "getActive", "bind", "event", "unselectAll", "target", "getAttribute", "isMac", "FeatureTest", "platform", "button", "ctrlKey", "showAllEditors", "startHighlighting", "direction", "x", "y", "once", "_signal", "pointerdown", "pointerup", "attach", "removeDeletedAnnotationElement", "detach", "delete", "removePointerInTextLayer", "contentDiv", "addDeletedAnnotationElement", "removeEditor", "isAttachedToDOM", "changeParent", "parent", "AnnotationEditor", "deleteAnnotationElement", "setParent", "append", "addEditor", "render", "fixAndSetPosition", "onceAdded", "addToAnnotationStorage", "_reportTelemetry", "telemetryInitialData", "moveEditorInDOM", "activeElement", "_focusEventsAllowed", "setTimeout", "focus", "_structTreeParentId", "moveElementInDOM", "needsToBeRebuilt", "rebuild", "addUndoableEditor", "cmd", "_uiManager", "undo", "mustExec", "getEditorByUID", "uid", "getNextId", "getId", "ac", "prototype", "canCreateNewEmptyEditor", "pasteEditor", "offsetX", "offsetY", "isCentered", "annotationType", "annotationEditorType", "createAndAddNewEditor", "boundingClientRect", "getBoundingClientRect", "width", "height", "tlX", "Math", "max", "tlY", "brX", "min", "window", "innerWidth", "brY", "innerHeight", "centerX", "centerY", "rotation", "addNewEditor", "setSelected", "toggleSelected", "unselect", "isDrawer", "supportMultipleDrawings", "currentMode", "STAMP", "SIGNATURE", "startDrawingSession", "preventScroll", "startDrawing", "setCurrentDrawingSession", "relatedTarget", "commitOrRemove", "pause", "on", "endDrawingSession", "isAborted", "endDrawing", "findNewParent", "layer", "findParent", "onScaleChanging", "onScaleChangingWhenDrawing", "destroy", "clearTimeout", "clear", "removeLayer", "setLayerDimensions", "update", "oldRotation", "rotate", "pageDimensions", "pageWidth", "pageHeight", "rawDims", "scale", "viewParameters", "realScale", "DrawLayer", "Map", "constructor", "pageIndex", "setParent", "parent", "size", "root", "values", "remove", "append", "_svgFactory", "shadow", "DOMSVGFactory", "element", "x", "y", "width", "height", "style", "top", "left", "svg", "create", "setAttribute", "defs", "pathId", "clipPath", "createElement", "clipPathId", "clipPathUse", "classList", "add", "properties", "key", "value", "Object", "entries", "removeAttribute", "draw", "isPathUpdatable", "hasClip", "id", "path", "set", "use", "updateProperties", "drawOutline", "mustRemoveSelfIntersections", "maskId", "mask", "rect", "use1", "use2", "cloneNode", "finalizeDraw", "delete", "elementOrId", "bbox", "rootClass", "get", "className", "toggle", "firstChild", "pathElement", "updateParent", "layer", "destroy", "clear", "globalThis", "_pdfjsTestingUtils", "HighlightOutliner", "pdfjsLib", "AbortException", "AnnotationEditorLayer", "AnnotationEditorParamsType", "AnnotationEditorType", "AnnotationEditorUIManager", "AnnotationLayer", "AnnotationMode", "AnnotationType", "applyOpacity", "build", "ColorPicker", "createValidAbsoluteUrl", "CSSConstants", "DOMSVGFactory", "DrawLayer", "FeatureTest", "fetchData", "findContrastColor", "getDocument", "getFilenameFromUrl", "getPdfFilenameFromUrl", "getRGB", "getUuid", "getXfaPageViewport", "GlobalWorkerOptions", "ImageKind", "InvalidPDFException", "isDataScheme", "isPdfFile", "isValidExplicitDest", "MathClamp", "noContextMenu", "normalizeUnicode", "OPS", "OutputScale", "PasswordResponses", "PDFDataRangeTransport", "PDFDateString", "PDFWorker", "PermissionFlag", "PixelsPerInch", "RenderingCancelledException", "renderRichText", "ResponseException", "setLayerDimensions", "shadow", "SignatureExtractor", "stopEvent", "SupportedImageMimeTypes", "TextLayer", "TouchManager", "updateUrlHash", "Util", "VerbosityLevel", "version", "XfaLayer", "import_jsx_runtime", "import_react", "e", "t", "f", "n", "key", "invariant", "import_warning", "invariant", "link", "children", "_jsx", "PasswordResponses", "import_react", "invariant", "warning", "PDFDataRangeTransport", "reason", "Document", "children", "className", "warning", "invariant", "error", "ref", "context", "_jsx", "import_react", "import_jsx_runtime", "import_react", "_i", "import_warning", "import_jsx_runtime", "import_react", "import_warning", "import_react", "import_react", "AnnotationLayer", "documentContext", "pageContext", "invariant", "warning", "_jsx", "import_jsx_runtime", "import_react", "import_warning", "import_jsx_runtime", "import_react", "import_warning", "import_jsx_runtime", "import_react", "node", "attributes", "matches", "className", "node", "attributes", "children", "index", "_jsx", "pageContext", "invariant", "warning", "_jsx", "pageContext", "invariant", "warning", "_jsx", "import_jsx_runtime", "import_react", "import_warning", "node", "element", "attribute", "_a", "content", "TextLayer", "pageContext", "invariant", "warning", "index", "_jsx", "documentContext", "children", "className", "invariant", "warning", "error", "_jsx", "TextLayer", "AnnotationLayer", "context", "_jsxs", "i", "key", "set", "name", "attributes", "get", "e", "converter", "React", "Action", "PopStateEventType", "createBrowserHistory", "options", "createBrowserLocation", "window", "globalHistory", "pathname", "search", "hash", "location", "createLocation", "state", "usr", "key", "createBrowserHref", "to", "createPath", "getUrlBasedHistory", "invariant", "value", "message", "Error", "createKey", "Math", "random", "toString", "substr", "getHistoryState", "location", "usr", "state", "key", "createLocation", "current", "to", "pathname", "search", "hash", "parsePath", "createPath", "charAt", "path", "parsedPath", "hashIndex", "indexOf", "searchIndex", "createClientSideURL", "base", "window", "origin", "href", "invariant", "URL", "getUrlBasedHistory", "getLocation", "createHref", "validateLocation", "options", "document", "defaultView", "v5Compat", "globalHistory", "history", "action", "Action", "Pop", "listener", "handlePop", "push", "Push", "historyState", "url", "pushState", "error", "assign", "replace", "Replace", "replaceState", "listen", "fn", "Error", "addEventListener", "PopStateEventType", "removeEventListener", "encodeLocation", "go", "n", "ResultType", "isIndexRoute", "route", "index", "convertRoutesToDataRoutes", "routes", "parentPath", "allIds", "Set", "map", "treePath", "id", "join", "children", "has", "add", "indexRoute", "pathOrLayoutRoute", "undefined", "matchRoutes", "locationArg", "basename", "stripBasename", "branches", "flattenRoutes", "rankRouteBranches", "matches", "i", "length", "matchRouteBranch", "safelyDecodeURI", "parentsMeta", "flattenRoute", "relativePath", "meta", "caseSensitive", "childrenIndex", "startsWith", "slice", "joinPaths", "routesMeta", "concat", "score", "computeScore", "forEach", "includes", "exploded", "explodeOptionalSegments", "segments", "split", "first", "rest", "isOptional", "endsWith", "required", "restExploded", "result", "subpath", "sort", "a", "b", "compareIndexes", "paramRe", "dynamicSegmentValue", "indexRouteValue", "emptySegmentValue", "staticSegmentValue", "splatPenalty", "isSplat", "s", "initialScore", "some", "filter", "reduce", "segment", "test", "siblings", "every", "branch", "matchedParams", "matchedPathname", "end", "remainingPathname", "match", "matchPath", "Object", "params", "pathnameBase", "normalizePathname", "matchPath", "pattern", "pathname", "path", "caseSensitive", "end", "matcher", "paramNames", "compilePath", "match", "matchedPathname", "pathnameBase", "replace", "captureGroups", "slice", "params", "reduce", "memo", "paramName", "index", "splatValue", "length", "safelyDecodeURIComponent", "warning", "endsWith", "regexpSource", "_", "push", "RegExp", "undefined", "safelyDecodeURI", "value", "decodeURI", "error", "decodeURIComponent", "stripBasename", "basename", "toLowerCase", "startsWith", "startIndex", "nextChar", "charAt", "cond", "message", "console", "warn", "Error", "e", "resolvePath", "to", "fromPathname", "toPathname", "search", "hash", "parsePath", "resolvePathname", "normalizeSearch", "normalizeHash", "relativePath", "segments", "split", "relativeSegments", "forEach", "segment", "pop", "join", "getInvalidPathError", "char", "field", "dest", "JSON", "stringify", "getPathContributingMatches", "matches", "filter", "route", "resolveTo", "toArg", "routePathnames", "locationPathname", "isPathRelative", "invariant", "includes", "isEmptyPath", "from", "routePathnameIndex", "toSegments", "shift", "hasExplicitTrailingSlash", "hasCurrentTrailingSlash", "joinPaths", "paths", "join", "replace", "normalizePathname", "pathname", "normalizeSearch", "search", "startsWith", "normalizeHash", "hash", "AbortedDeferredError", "Error", "DeferredData", "constructor", "data", "pendingKeys", "Set", "subscriber", "undefined", "invariant", "Array", "isArray", "reject", "abortPromise", "Promise", "_", "r", "controller", "AbortController", "onAbort", "unlistenAbortSignal", "signal", "removeEventListener", "addEventListener", "Object", "entries", "reduce", "acc", "key", "value", "assign", "trackPromise", "add", "promise", "race", "then", "onSettle", "error", "catch", "defineProperty", "get", "aborted", "delete", "done", "subscribe", "fn", "cancel", "abort", "forEach", "v", "k", "resolveData", "resolve", "size", "unwrappedData", "unwrapTrackedPromise", "isTrackedPromise", "_tracked", "_error", "_data", "ErrorResponse", "constructor", "status", "statusText", "data", "internal", "Error", "toString", "error", "isRouteErrorResponse", "e", "validMutationMethodsArr", "validMutationMethods", "Set", "validRequestMethodsArr", "validRequestMethods", "redirectStatusCodes", "redirectPreserveMethodStatusCodes", "IDLE_NAVIGATION", "state", "location", "undefined", "formMethod", "formAction", "formEncType", "formData", "IDLE_FETCHER", "isBrowser", "window", "document", "createElement", "isServer", "createRouter", "init", "invariant", "routes", "length", "dataRoutes", "convertRoutesToDataRoutes", "unlistenHistory", "subscribers", "savedScrollPositions", "getScrollRestorationKey", "getScrollPosition", "initialScrollRestored", "hydrationData", "initialMatches", "matchRoutes", "history", "basename", "initialErrors", "getInternalRouterError", "pathname", "matches", "route", "getShortCircuitMatches", "id", "initialized", "some", "m", "loader", "router", "historyAction", "action", "navigation", "restoreScrollPosition", "preventScrollReset", "revalidation", "loaderData", "actionData", "errors", "fetchers", "Map", "pendingAction", "HistoryAction", "Pop", "pendingPreventScrollReset", "pendingNavigationController", "isUninterruptedRevalidation", "isRevalidationRequired", "cancelledDeferredRoutes", "cancelledFetcherLoads", "fetchControllers", "incrementingLoadId", "pendingNavigationLoadId", "fetchReloadIds", "fetchRedirectIds", "fetchLoadMatches", "activeDeferreds", "initialize", "listen", "startNavigation", "dispose", "clear", "abort", "forEach", "_", "key", "deleteFetcher", "subscribe", "fn", "add", "delete", "updateState", "newState", "subscriber", "completeNavigation", "isActionReload", "isMutationMethod", "_isRedirect", "Object", "keys", "mergeLoaderData", "getSavedScrollPosition", "Push", "push", "Replace", "replace", "navigate", "to", "opts", "go", "path", "submission", "normalizeNavigateOptions", "createLocation", "encodeLocation", "userReplace", "search", "pendingError", "revalidate", "interruptActiveLoads", "startUninterruptedRevalidation", "overrideNavigation", "saveScrollPosition", "loadingNavigation", "notFoundMatches", "cancelActiveDeferreds", "isHashChangeOnly", "AbortController", "request", "createClientSideRequest", "signal", "pendingActionData", "findNearestBoundary", "actionOutput", "handleAction", "shortCircuited", "pendingActionError", "Request", "url", "handleLoaders", "result", "actionMatch", "getTargetMatch", "type", "ResultType", "method", "routeId", "callLoaderOrAction", "aborted", "isRedirectResult", "startRedirectNavigation", "isErrorResult", "boundaryMatch", "isDeferredResult", "activeSubmission", "matchesToLoad", "revalidatingFetchers", "getMatchesToLoad", "fetcher", "get", "revalidatingFetcher", "set", "results", "loaderResults", "fetcherResults", "callLoadersAndMaybeResolveData", "redirect", "findRedirect", "processLoaderData", "deferredData", "done", "markFetchRedirectsDone", "didAbortFetchLoads", "abortStaleFetchLoads", "getFetcher", "fetch", "href", "has", "abortFetcher", "setFetcherError", "match", "handleFetcherAction", "handleFetcherLoader", "requestMatches", "existingFetcher", "abortController", "fetchRequest", "actionResult", "loadingFetcher", "isFetchActionRedirect", "nextLocation", "revalidationRequest", "loadId", "loadFetcher", "filter", "staleKey", "doneFetcher", "resolveDeferredData", "redirectLocation", "_isFetchActionRedirect", "newOrigin", "createClientSideURL", "origin", "assign", "redirectHistoryAction", "currentMatches", "fetchersToLoad", "Promise", "all", "map", "fetchMatches", "slice", "resolveDeferredResults", "controller", "markFetchersDone", "doneKeys", "landedId", "yeetedKeys", "predicate", "cancelledRouteIds", "dfd", "cancel", "enableScrollRestoration", "positions", "getPosition", "getKey", "y", "userMatches", "createUseMatchesMatch", "createHref", "_internalFetchControllers", "_internalActiveDeferreds", "isSubmissionNavigation", "opts", "normalizeNavigateOptions", "to", "isFetcher", "path", "createPath", "formMethod", "isValidMethod", "error", "getInternalRouterError", "method", "submission", "formData", "formAction", "stripHashFromPath", "formEncType", "isMutationMethod", "parsedPath", "parsePath", "searchParams", "convertFormDataToSearchParams", "search", "hasNakedIndexQuery", "append", "e", "getLoaderMatchesUntilBoundary", "matches", "boundaryId", "boundaryMatches", "index", "findIndex", "m", "route", "id", "slice", "getMatchesToLoad", "state", "location", "isRevalidationRequired", "cancelledDeferredRoutes", "cancelledFetcherLoads", "pendingActionData", "pendingError", "fetchLoadMatches", "actionResult", "Object", "values", "undefined", "keys", "navigationMatches", "filter", "match", "loader", "isNewLoader", "loaderData", "some", "shouldRevalidateLoader", "revalidatingFetchers", "forEach", "key", "href", "fetchMatches", "includes", "push", "shouldRevalidate", "currentLoaderData", "currentMatch", "isNew", "isMissingData", "isNewRouteInstance", "currentPath", "pathname", "endsWith", "params", "currentLocation", "currentUrl", "createClientSideURL", "currentParams", "nextUrl", "nextParams", "defaultShouldRevalidate", "toString", "routeChoice", "callLoaderOrAction", "type", "request", "basename", "isStaticRequest", "isRouteRequest", "requestContext", "resultType", "result", "reject", "abortPromise", "Promise", "_", "r", "onReject", "signal", "addEventListener", "handler", "invariant", "race", "context", "ResultType", "removeEventListener", "isResponse", "status", "redirectStatusCodes", "has", "headers", "get", "isAbsolute", "test", "startsWith", "activeMatches", "indexOf", "routePathnames", "getPathContributingMatches", "map", "pathnameBase", "resolvedLocation", "resolveTo", "URL", "url", "joinPaths", "set", "redirect", "revalidate", "data", "response", "contentType", "json", "text", "ErrorResponse", "statusText", "statusCode", "DeferredData", "deferred", "deferredData", "createClientSideRequest", "init", "toUpperCase", "body", "Request", "URLSearchParams", "value", "entries", "processRouteLoaderData", "matchesToLoad", "results", "activeDeferreds", "errors", "foundError", "loaderHeaders", "isRedirectResult", "isErrorResult", "boundaryMatch", "findNearestBoundary", "isRouteErrorResponse", "isDeferredResult", "processLoaderData", "fetcherResults", "length", "fetchers", "delete", "Error", "doneFetcher", "mergeLoaderData", "newLoaderData", "mergedLoaderData", "hasOwnProperty", "routeId", "eligibleMatches", "reverse", "find", "hasErrorBoundary", "getShortCircuitMatches", "routes", "errorMessage", "findRedirect", "i", "hash", "isHashChangeOnly", "a", "b", "isValidMethod", "method", "validRequestMethods", "has", "isMutationMethod", "validMutationMethods", "resolveDeferredResults", "currentMatches", "matchesToLoad", "results", "signal", "isFetcher", "currentLoaderData", "index", "length", "result", "match", "currentMatch", "find", "m", "route", "id", "isRevalidatingLoader", "isNewRouteInstance", "undefined", "isDeferredResult", "resolveDeferredData", "then", "unwrap", "aborted", "deferredData", "resolveData", "type", "ResultType", "data", "unwrappedData", "e", "error", "hasNakedIndexQuery", "search", "URLSearchParams", "getAll", "some", "v", "createUseMatchesMatch", "loaderData", "pathname", "params", "handle", "getTargetMatch", "matches", "location", "parsePath", "pathMatches", "getPathContributingMatches", "isPolyfill", "x", "y", "is", "Object", "useState", "useEffect", "useLayoutEffect", "useDebugValue", "React", "didWarnOld18Alpha", "didWarnUncachedGetSnapshot", "useSyncExternalStore", "subscribe", "getSnapshot", "getServerSnapshot", "console", "error", "value", "cachedValue", "inst", "forceUpdate", "checkIfSnapshotChanged", "handleStoreChange", "latestGetSnapshot", "prevValue", "nextValue", "canUseDOM", "window", "document", "createElement", "isServerEnvironment", "shim", "server", "client", "module", "DataRouterContext", "createContext", "displayName", "DataRouterStateContext", "AwaitContext", "NavigationContext", "LocationContext", "RouteContext", "outlet", "matches", "RouteErrorContext", "useHref", "to", "relative", "useInRouterContext", "invariant", "basename", "navigator", "useContext", "hash", "pathname", "search", "useResolvedPath", "joinedPathname", "joinPaths", "createHref", "useLocation", "location", "useMatch", "pattern", "useInRouterContext", "invariant", "pathname", "useLocation", "useMemo", "matchPath", "useNavigate", "basename", "navigator", "useContext", "NavigationContext", "matches", "RouteContext", "locationPathname", "routePathnamesJson", "JSON", "stringify", "getPathContributingMatches", "map", "match", "pathnameBase", "activeRef", "useRef", "React", "useEffect", "current", "navigate", "useCallback", "to", "options", "warning", "go", "path", "resolveTo", "parse", "relative", "joinPaths", "replace", "push", "state", "useParams", "matches", "useContext", "RouteContext", "routeMatch", "length", "params", "useResolvedPath", "to", "relative", "pathname", "locationPathname", "useLocation", "routePathnamesJson", "JSON", "stringify", "getPathContributingMatches", "map", "match", "pathnameBase", "useMemo", "resolveTo", "parse", "useRoutes", "routes", "locationArg", "useInRouterContext", "invariant", "navigator", "NavigationContext", "dataRouterStateContext", "DataRouterStateContext", "parentMatches", "parentParams", "parentPathname", "parentPathnameBase", "parentRoute", "route", "parentPath", "path", "warningOnce", "endsWith", "locationFromContext", "location", "parsedLocationArg", "parsePath", "startsWith", "remainingPathname", "slice", "matchRoutes", "warning", "search", "hash", "element", "undefined", "renderedMatches", "_renderMatches", "Object", "assign", "joinPaths", "encodeLocation", "_extends", "state", "key", "navigationType", "NavigationType", "Pop", "DefaultErrorElement", "error", "useRouteError", "message", "isRouteErrorResponse", "status", "statusText", "Error", "stack", "lightgrey", "preStyles", "padding", "backgroundColor", "codeStyles", "fontStyle", "RenderErrorBoundary", "Component", "constructor", "props", "getDerivedStateFromError", "getDerivedStateFromProps", "componentDidCatch", "errorInfo", "console", "render", "routeContext", "component", "children", "RenderedRoute", "dataRouterContext", "DataRouterContext", "static", "staticContext", "errorElement", "_deepestRenderedBoundaryId", "id", "dataRouterState", "errors", "errorIndex", "findIndex", "m", "Math", "min", "reduceRight", "outlet", "index", "concat", "getChildren", "DataRouterHook", "DataRouterStateHook", "getDataRouterConsoleError", "hookName", "useDataRouterState", "hookName", "state", "useContext", "DataRouterStateContext", "invariant", "getDataRouterConsoleError", "useRouteContext", "route", "RouteContext", "useCurrentRouteId", "thisRoute", "matches", "length", "id", "useNavigation", "DataRouterStateHook", "UseNavigation", "navigation", "useMatches", "matches", "loaderData", "useDataRouterState", "DataRouterStateHook", "UseMatches", "useMemo", "map", "match", "pathname", "params", "id", "route", "data", "handle", "useRouteError", "error", "useContext", "RouteErrorContext", "state", "useDataRouterState", "DataRouterStateHook", "UseRouteError", "routeId", "useCurrentRouteId", "errors", "alreadyWarned", "warningOnce", "key", "cond", "message", "warning", "RouterProvider", "fallbackElement", "router", "state", "useSyncExternalStoreShim", "subscribe", "navigator", "useMemo", "createHref", "encodeLocation", "go", "n", "navigate", "push", "to", "opts", "preventScrollReset", "replace", "basename", "static", "location", "historyAction", "initialized", "Route", "_props", "invariant", "Router", "basename", "basenameProp", "children", "location", "locationProp", "navigationType", "NavigationType", "Pop", "navigator", "static", "staticProp", "useInRouterContext", "replace", "navigationContext", "useMemo", "parsePath", "pathname", "search", "hash", "state", "key", "trailingPathname", "stripBasename", "warning", "Routes", "dataRouterContext", "useContext", "DataRouterContext", "routes", "router", "createRoutesFromChildren", "useRoutes", "AwaitRenderStatus", "neverSettledPromise", "Promise", "createRoutesFromChildren", "children", "parentPath", "routes", "React", "Children", "forEach", "element", "index", "isValidElement", "type", "Fragment", "push", "apply", "props", "Route", "invariant", "name", "treePath", "route", "id", "join", "caseSensitive", "path", "loader", "action", "errorElement", "hasErrorBoundary", "shouldRevalidate", "handle", "enhanceManualRouteObjects", "routes", "map", "route", "routeClone", "hasErrorBoundary", "errorElement", "children", "defaultMethod", "defaultEncType", "isHtmlElement", "object", "tagName", "isButtonElement", "toLowerCase", "isFormElement", "isInputElement", "isModifiedEvent", "event", "metaKey", "altKey", "ctrlKey", "shiftKey", "shouldProcessLinkClick", "target", "button", "getFormSubmissionInfo", "target", "defaultAction", "options", "method", "action", "encType", "formData", "isFormElement", "submissionTrigger", "getAttribute", "defaultMethod", "defaultEncType", "FormData", "name", "append", "value", "isButtonElement", "isInputElement", "type", "form", "Error", "isHtmlElement", "URLSearchParams", "Object", "keys", "protocol", "host", "window", "location", "url", "URL", "toLowerCase", "createBrowserRouter", "routes", "opts", "createRouter", "basename", "history", "createBrowserHistory", "hydrationData", "parseHydrationData", "enhanceManualRouteObjects", "initialize", "parseHydrationData", "state", "window", "__staticRouterHydrationData", "errors", "_extends", "deserializeErrors", "entries", "Object", "serialized", "key", "val", "__type", "ErrorResponse", "status", "statusText", "data", "internal", "error", "Error", "message", "stack", "HistoryRouter", "basename", "children", "history", "state", "setState", "useState", "action", "location", "React", "useLayoutEffect", "listen", "createElement", "Router", "navigationType", "navigator", "displayName", "Link", "forwardRef", "LinkWithRef", "ref", "onClick", "relative", "reloadDocument", "replace", "target", "to", "preventScrollReset", "rest", "href", "useHref", "internalOnClick", "useLinkClickHandler", "handleClick", "event", "defaultPrevented", "_extends", "NavLink", "NavLinkWithRef", "ariaCurrentProp", "caseSensitive", "className", "classNameProp", "end", "style", "styleProp", "path", "useResolvedPath", "useLocation", "routerState", "useContext", "DataRouterStateContext", "NavigationContext", "toPathname", "encodeLocation", "pathname", "locationPathname", "nextLocationPathname", "navigation", "toLowerCase", "isActive", "startsWith", "charAt", "length", "isPending", "ariaCurrent", "undefined", "filter", "Boolean", "join", "Form", "props", "FormImpl", "forwardedRef", "method", "defaultMethod", "onSubmit", "fetcherKey", "routeId", "submit", "useSubmitImpl", "formMethod", "formAction", "useFormAction", "submitHandler", "preventDefault", "submitter", "nativeEvent", "submitMethod", "getAttribute", "currentTarget", "ScrollRestoration", "getKey", "storageKey", "useScrollRestoration", "DataRouterHook", "DataRouterStateHook", "getDataRouterConsoleError", "hookName", "useDataRouterContext", "ctx", "DataRouterContext", "invariant", "useDataRouterState", "replaceProp", "navigate", "useNavigate", "useCallback", "shouldProcessLinkClick", "createPath", "useSubmitImpl", "fetcherKey", "routeId", "router", "useDataRouterContext", "DataRouterHook", "UseSubmitImpl", "defaultAction", "useFormAction", "useCallback", "target", "options", "document", "Error", "method", "encType", "formData", "url", "getFormSubmissionInfo", "href", "pathname", "search", "opts", "replace", "formMethod", "formEncType", "invariant", "fetch", "navigate", "action", "relative", "basename", "useContext", "NavigationContext", "routeContext", "RouteContext", "match", "matches", "slice", "path", "_extends", "useResolvedPath", "location", "useLocation", "hash", "route", "index", "params", "URLSearchParams", "delete", "toString", "joinPaths", "createPath", "SCROLL_RESTORATION_STORAGE_KEY", "savedScrollPositions", "useScrollRestoration", "getKey", "storageKey", "router", "useDataRouterContext", "DataRouterHook", "UseScrollRestoration", "restoreScrollPosition", "preventScrollReset", "useDataRouterState", "DataRouterStateHook", "location", "useLocation", "matches", "useMatches", "navigation", "useNavigation", "React", "useEffect", "window", "history", "scrollRestoration", "useBeforeUnload", "useCallback", "state", "key", "scrollY", "sessionStorage", "setItem", "JSON", "stringify", "document", "useLayoutEffect", "sessionPositions", "getItem", "parse", "e", "disableScrollRestoration", "enableScrollRestoration", "scrollTo", "hash", "el", "getElementById", "slice", "scrollIntoView", "callback", "addEventListener", "removeEventListener", "import_react", "React", "React", "import_react", "import_react", "element", "name", "path", "result", "key", "React", "children", "disabled", "isString", "value", "elm", "name", "errors", "path", "index", "key", "d", "c", "r", "element", "isString", "React", "option", "previous", "required", "disabled", "isRadioOrCheckbox", "i", "a", "b", "append", "appendAt", "prepend", "prependAt", "insert", "insertAt", "replace", "next", "isPrimitive", "ref", "isCheckBox", "debounce", "isValid", "context", "register", "e", "formState", "React", "element", "import_react", "import_react", "import_react", "element", "id", "index", "status", "attachments", "comment", "tickets", "metadata", "index", "status", "queryString", "id", "body", "tickets", "name", "import_query_string", "apiObject", "key", "venues", "metadata", "ApiMetersVenue", "queryString", "translateAttachments", "attachments", "resolutions", "metadata", "vote", "id", "rest", "import_query_string", "id", "journals", "profile", "group", "translateApiToRoles", "profile", "id", "queryString", "translateApiToRoles", "rest", "color", "import_query_string", "recipients", "authors", "attachments", "announcements", "metadata", "r", "queryString", "id", "group", "rest", "id", "id", "import_query_string", "queryString", "import_query_string", "translateVenue", "queryString", "id", "translateVenue", "import_query_string", "queryString", "import_query_string", "string", "formatNumber", "i", "formatNumber", "months", "i", "key", "rest", "rest", "queryString", "import_query_string", "employees", "queryString", "import_query_string", "queryString", "id", "body", "tasks", "name", "details", "attachments", "name", "id", "r", "rest", "import_query_string", "comment", "translateComment", "translateAttachment", "status", "index", "journals", "queryString", "document", "documents", "id", "body", "name", "import_query_string", "metadata", "queryString", "now", "import_react", "id", "months", "import_react", "id", "filter", "filter", "React", "import_react", "React", "React", "import_react", "React", "React", "React", "import_react", "venues", "e", "classNames", "React", "React", "React", "children", "React", "React", "React", "React", "React", "React", "React", "React", "React", "React", "React", "React", "React", "import_react", "r", "React", "import_classnames", "React", "className", "classnames", "React", "React", "import_react", "settings", "e", "import_react", "children", "React", "import_react", "import_classnames", "React", "path", "React", "import_react", "React", "React", "path", "path", "children", "path", "classnames", "import_classnames", "React", "React", "import_react", "import_classnames", "React", "id", "children", "className", "classnames", "React", "React", "React", "import_react", "disabled", "className", "children", "id", "className", "disabled", "register", "classnames", "import_classnames", "React", "import_react", "React", "import_react", "import_classnames", "children", "disabled", "open", "e", "classnames", "inputDefaultStyles", "disabled", "option", "classnames", "e", "id", "className", "import_classnames", "React", "inputDefaultStyles", "id", "className", "disabled", "register", "classnames", "React", "id", "disabled", "className", "register", "option", "React", "import_classnames", "inputDefaultStyles", "id", "className", "required", "months", "classnames", "DatePicker", "React", "import_classnames", "import_react_multi_date_picker", "inputDefaultStyles", "className", "months", "classnames", "DatePicker", "import_classnames", "ErrorMessage", "s", "as", "errors", "name", "message", "render", "rest", "methods", "useFormContext", "error", "get", "formState", "messageFromRegister", "types", "props", "Object", "assign", "children", "isValidElement", "cloneElement", "messages", "createElement", "Fragment", "React", "React", "id", "className", "disabled", "register", "classnames", "React", "import_classnames", "import_react", "React", "id", "className", "disabled", "register", "classnames", "import_classnames", "React", "import_react", "inputDefaultStyles", "id", "className", "register", "option", "classnames", "React", "React", "React", "import_react", "React", "import_react", "React", "id", "journals", "id", "name", "React", "children", "className", "React", "import_react", "import_react_responsive", "import_react", "resolveConfig", "React", "import_classnames", "children", "className", "classnames", "index", "React", "import_react", "number", "required", "_typeof", "obj", "defaultOptions", "index", "_typeof", "obj", "diff", "diff", "defaultOptions", "diff", "defaultOptions", "defaultOptions", "MILLISECONDS_IN_WEEK", "diff", "number", "s", "formatters", "localize", "y", "M", "d", "e", "a", "h", "H", "m", "s", "S", "formatters_default", "dateLongFormatter", "formatLong", "timeLongFormatter", "dateTimeLongFormatter", "format", "formatDistance", "count", "format", "formatRelative", "context", "index", "ordinalNumber", "number", "string", "matchPattern", "key", "rest", "string", "rest", "valueCallback", "index", "defaultOptions", "locale", "formatters_default", "import_classnames", "React", "children", "React", "import_classnames", "React", "children", "className", "React", "React", "React", "id", "children", "className", "classnames", "id", "title", "bold", "React", "React", "text", "React", "import_classnames", "className", "children", "classnames", "React", "React", "import_react", "import_classnames", "React", "React", "import_react", "React", "children", "ReactDOM", "children", "className", "id", "name", "documents", "classNames", "e", "React", "import_react", "import_classnames", "React", "React", "import_react", "import_classnames", "inputDefaultStyles", "id", "className", "disabled", "handleKeyDown", "e", "key", "classnames", "index", "location", "documents", "classNames", "e", "React", "import_react", "import_classnames", "React", "id", "name", "documents", "classNames", "e", "React", "import_react", "React", "import_react", "React", "selectedColumns", "register", "open", "e", "option", "selectedColumns", "id", "documents", "selectedColumns", "id", "title", "status", "classnames", "React", "import_classnames", "React", "import_react_responsive", "import_classnames", "import_react", "children", "className", "classnames", "id", "columnLabels", "index", "open", "documents", "id", "columnLabels", "title", "status", "classnames", "React", "import_react", "import_classnames", "id", "columnLabels", "title", "classnames", "React", "import_react", "id", "filter", "filtersOpen", "React", "React", "React", "React", "import_react", "import_classnames", "children", "title", "className", "isOpen", "classnames", "title", "children", "React", "import_react", "React", "import_react", "import_classnames", "inputDefaultStyles", "className", "initialState", "disabled", "handleKeyDown", "e", "key", "classnames", "index", "React", "import_classnames", "classnames", "id", "document", "status", "tasks", "name", "React", "React", "import_classnames", "icon", "classNames", "React", "import_react", "className", "children", "numPages", "index", "React", "path", "className", "React", "import_react", "import_classnames", "React", "React", "import_react", "React", "append", "attachments", "id", "index", "classNames", "comment", "index", "path", "React", "React", "title", "children", "className", "React", "id", "document", "title", "attachments", "path", "description", "id", "React", "import_react", "React", "import_react", "React", "import_react", "React", "import_classnames", "classNames", "formatNumber", "React", "formatNumber", "React", "import_classnames", "classNames", "e", "React", "React", "React", "React", "formatNumber", "React", "import_react", "tab", "filter", "filtersOpen", "React", "import_react", "React", "import_classnames", "import_react", "import_react", "settings", "MetersVenuesList", "columnLabels", "code", "classNames", "React", "import_react", "filter", "filtersOpen", "React", "import_react", "React", "import_react", "MetersCard", "e", "React", "DisabledCard", "React", "React", "React", "id", "React", "id", "id", "match", "React", "import_react", "React", "import_react", "status", "React", "React", "React", "import_react", "React", "import_react", "React", "import_react", "errors", "data", "React", "import_react", "columnLabels", "React", "import_react", "venues", "React", "import_react", "React", "React", "import_react", "React", "import_react", "tab", "filter", "filtersOpen", "React", "React", "import_react", "React", "import_react", "import_react_responsive", "React", "tickets", "id", "columnLabels", "status", "title", "React", "import_react", "React", "import_react", "selectedColumns", "id", "option", "React", "React", "import_react", "import_classnames", "ticketStatuses", "id", "name", "tickets", "classNames", "e", "React", "import_react", "import_classnames", "tickets", "id", "classNames", "e", "React", "import_react", "import_classnames", "ticketCategories", "id", "name", "tickets", "classNames", "e", "tickets", "selectedColumns", "id", "title", "status", "React", "import_react", "ticketCategories", "ticketStatuses", "id", "name", "tab", "filter", "filtersOpen", "React", "import_react", "React", "ticketCategories", "ticketStatuses", "id", "name", "React", "import_react", "id", "columnLabels", "title", "status", "filter", "filtersOpen", "tab", "React", "React", "import_react", "import_classnames", "React", "React", "React", "import_react", "ticketCategories", "ticketStatuses", "id", "status", "tasks", "name", "className", "import_react", "title", "id", "title", "status", "attachments", "path", "description", "classNames", "React", "React", "status", "id", "title", "status", "attachments", "path", "description", "React", "id", "React", "React", "import_react", "ticketCategories", "ticketStatuses", "status", "append", "attachments", "id", "name", "index", "React", "import_react", "ticketCategories", "venues", "venueSelectOptions", "append", "attachments", "id", "name", "index", "React", "import_react", "React", "import_react", "import_react", "id", "p", "React", "e", "id", "React", "import_react", "React", "import_classnames", "import_react", "React", "id", "r2", "classNames", "React", "import_react", "React", "React", "import_react", "deleteRole", "React", "import_react", "import_classnames", "React", "id", "className", "disabled", "classnames", "e", "v", "role", "selectedPermissions", "id", "React", "import_react", "React", "import_react", "React", "React", "import_classnames", "className", "title", "children", "classnames", "React", "React", "React", "id", "title", "text", "status", "React", "import_react", "React", "import_react", "ResolutionsList", "columnLabels", "id", "title", "status", "React", "import_react", "resolutionsStates", "filter", "filtersOpen", "React", "React", "React", "id", "option", "title", "text", "attachments", "status", "path", "index", "React", "id", "title", "text", "attachments", "status", "path", "React", "React", "import_react", "React", "import_react", "id", "id", "filter", "filtersOpen", "id", "columnLabels", "id", "React", "import_react_responsive", "React", "path", "FilePreview", "path", "id", "index", "attachments", "React", "import_react", "React", "import_react", "authors", "recipients", "id", "React", "import_classnames", "import_react", "React", "React", "number", "initialState", "id", "status", "columnLabels", "title", "classNames", "filter", "filtersOpen", "React", "import_classnames", "React", "React", "React", "e", "recipients", "id", "name", "initialState", "id", "announcementNumber", "title", "attachments", "recipients", "homeownerAssociations", "employees", "tenants", "classNames", "path", "React", "import_react", "React", "import_react", "import_classnames", "inputDefaultStyles", "id", "className", "handleKeyDown", "e", "key", "classnames", "index", "name", "append", "attachments", "id", "index", "React", "React", "import_react", "id", "title", "recipients", "append", "_", "index", "path", "id", "React", "import_react", "React", "import_query_string", "import_react", "React", "import_react", "makePayment", "columnLabels", "index", "formatNumber", "React", "React", "React", "import_query_string", "import_react", "search", "queryString", "search", "queryString", "React", "import_react", "React", "import_react", "import_react_redux", "import_react", "venueId", "import_react", "titles", "venueId", "titles", "title", "year", "React", "import_react", "index", "React", "import_react", "React", "import_react", "import_react_redux", "path", "titles", "year", "month", "index", "title", "React", "import_react", "columnLabels", "title", "name", "id", "React", "import_react", "import_react_responsive", "React", "import_react", "path", "year", "month", "index", "title", "React", "import_react", "React", "import_react", "id", "readAt", "columnLabels", "documents", "title", "docs", "id", "React", "React", "import_react", "document", "e", "React", "import_react", "React", "columnLabels", "status", "index", "formatNumber", "React", "import_react", "status", "filter", "filtersOpen", "tab", "React", "import_react", "React", "import_react", "import_react_responsive", "React", "import_react", "React", "React", "import_react", "import_classnames", "location", "tasks", "classNames", "e", "React", "import_react", "import_classnames", "taskCategories", "id", "name", "tasks", "classNames", "e", "React", "import_react", "import_classnames", "taskStatuses", "id", "name", "tasks", "classNames", "e", "React", "import_react", "selectedColumns", "id", "option", "tasks", "selectedColumns", "id", "status", "title", "React", "tasks", "id", "columnLabels", "status", "title", "taskStatuses", "React", "import_react", "taskCategories", "taskStatuses", "id", "name", "tab", "filter", "filtersOpen", "React", "import_react", "React", "import_react", "document", "status", "append", "attachments", "id", "index", "id", "React", "React", "title", "attachments", "status", "path", "description", "React", "React", "import_react", "import_react_multi_date_picker", "import_classnames", "React", "import_react", "task", "React", "import_react", "document", "task", "React", "import_react", "React", "number", "months", "document", "status", "id", "category", "errors", "DatePicker", "classNames", "React", "title", "id", "React", "import_react", "React", "import_react", "id", "columnLabels", "React", "import_react", "React", "import_react", "columnLabels", "index", "React", "import_react", "tab", "filter", "filtersOpen", "React", "React", "import_react", "settings", "errors", "React", "React", "import_classnames", "classNames", "React", "import_react", "React", "import_react", "errors", "React", "import_react", "errors", "React", "import_react", "errors", "TableHeader", "taskCategories", "React", "ticketCategories", "React", "import_react", "React", "import_react", "tab", "columnLabels", "code", "React", "import_react", "tab", "tab", "filter", "filtersOpen", "React", "import_react", "React", "import_react", "id", "settings", "React", "import_react", "id", "errors", "UserPage", "id", "React", "React", "import_react", "React", "id", "data", "React", "React", "React", "import_react", "React", "import_react", "React", "import_react", "tab", "React", "import_react", "React", "React", "import_classnames", "React", "announcements", "_", "index", "id", "title", "status", "classNames", "React", "import_react", "import_classnames", "import_classnames", "React", "import_react_responsive", "classNames", "tickets", "_", "index", "id", "title", "status", "classNames", "React", "import_react", "id", "details", "filteredVenues", "React", "React", "React", "React", "React", "tasks", "_", "index", "id", "title", "status", "React", "documents", "_", "index", "id", "title", "React", "React", "import_react", "title", "columnLabels", "status", "ticketStatuses", "taskStatuses", "React", "import_react", "React", "status", "ticketStatuses", "taskStatuses", "status", "React", "import_react", "React", "import_react", "React", "React", "name", "id", "React", "import_react", "status", "React", "import_react", "React", "React", "id", "React", "import_react", "React", "import_react", "id", "name", "React", "import_react", "import_react_responsive", "React", "import_react", "React", "import_react", "selectedColumns", "id", "React", "React", "import_react", "import_classnames", "location", "classNames", "e", "React", "import_react", "import_classnames", "id", "name", "classNames", "e", "selectedColumns", "id", "formatNumber", "React", "id", "columnLabels", "formatNumber", "selectedColumns", "filter", "React", "React", "React", "import_react", "id", "name", "React", "React", "import_react", "React", "_extends", "n", "e", "t", "r", "import_react", "test", "checks", "index", "all", "node", "key", "parent", "d", "test", "is", "factory", "node", "index", "name", "visit", "test", "node", "parent", "index", "node", "index", "test", "is", "node", "index", "children", "next", "key", "Prism", "c", "Prism", "Prism", "c", "Prism", "Prism", "i", "Prism", "replace", "m", "index", "re", "i", "name", "Prism", "env", "lang", "Prism", "string", "markup", "Prism", "name", "prefix", "alias", "Prism", "Prism", "java", "Prism", "className", "Prism", "escape", "Prism", "json", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "properties", "string", "Prism", "tableCell", "tableRow", "env", "i", "l", "codeBlock", "lang", "alias", "match", "id", "fromCodePoint", "html", "text", "m", "code", "Prism", "c", "Prism", "Prism", "index", "env", "match", "i", "j", "keys", "k", "t", "s", "Prism", "comment", "number", "string", "env", "Prism", "r", "Prism", "Prism", "Prism", "i", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "space", "space", "definition", "attribute", "attribute", "space", "index", "key", "create", "definition", "properties", "info", "create", "_", "attributes", "attribute", "attributes", "create", "create", "create", "_", "create", "create", "_", "find", "rest", "html", "svg", "parse", "index", "start", "settings", "start", "previous", "match", "parse", "stringify", "h", "properties", "children", "node", "key", "keys", "value", "list", "info", "find", "parse", "name", "h", "html", "s", "svg", "code", "code", "code", "characterReference", "settings", "index", "point", "indent", "previous", "now", "start", "following", "characterReference", "characters", "test", "diff", "warning", "reason", "next", "code", "position", "clone", "id", "key", "v", "i", "lang", "insert", "root", "text", "env", "rest", "name", "content", "alias", "match", "j", "p", "k", "head", "list", "node", "next", "count", "stringify", "name", "alias", "map", "key", "list", "index", "env", "h", "c", "java", "json", "r", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "className", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "lang", "Prism", "attributes", "asciidoc", "keys", "i", "l", "env", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "replace", "m", "index", "re", "properties", "Prism", "Prism", "Prism", "string", "number", "Prism", "Prism", "Prism", "Prism", "Prism", "c", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "c", "Prism", "Prism", "Prism", "Prism", "Prism", "comment", "Prism", "Prism", "Prism", "Prism", "i", "Prism", "Prism", "string", "number", "Prism", "Prism", "Prism", "d", "Prism", "Prism", "className", "Prism", "Prism", "Prism", "Prism", "markupTemplating", "env", "Prism", "Prism", "space", "string", "option", "re", "Prism", "Prism", "Prism", "Prism", "Prism", "env", "Prism", "Prism", "Prism", "env", "Prism", "env", "Prism", "Prism", "Prism", "Prism", "factor", "escape", "k", "Prism", "Prism", "Prism", "Prism", "Prism", "i", "ftl", "env", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "tableRow", "Prism", "Prism", "c", "Prism", "Prism", "Prism", "Prism", "Prism", "env", "getToken", "i", "content", "alias", "t", "Prism", "Prism", "textile", "Prism", "i", "l", "filter", "Prism", "env", "Prism", "Prism", "Prism", "Prism", "c", "Prism", "Prism", "Prism", "Prism", "Prism", "name", "contentType", "Prism", "Prism", "Prism", "escape", "string", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "lang", "definition", "i", "l", "Prism", "java", "Prism", "java", "Prism", "Prism", "Prism", "Prism", "string", "jq", "Prism", "code", "env", "i", "s", "index", "content", "l", "alias", "Prism", "javascript", "Prism", "Prism", "i", "Prism", "json", "string", "Prism", "json", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "env", "Prism", "key", "Prism", "i", "lilypond", "Prism", "env", "match", "Prism", "name", "space", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "env", "content", "i", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "c", "attributes", "Prism", "Prism", "Prism", "Prism", "parser", "Prism", "Prism", "pascaligo", "key", "p", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "powershell", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "number", "Prism", "env", "Prism", "i", "l", "filter", "Prism", "Prism", "lang", "alias", "Prism", "Prism", "Prism", "replace", "m", "index", "re", "i", "q", "Prism", "Prism", "i", "Prism", "Prism", "Prism", "i", "Prism", "javascript", "space", "re", "i", "env", "Prism", "typescript", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "comment", "name", "Prism", "number", "comment", "string", "format", "Prism", "Prism", "Prism", "Prism", "string", "env", "match", "Prism", "Prism", "Prism", "Prism", "env", "match", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "java", "Prism", "Prism", "Prism", "comment", "Prism", "prefix", "className", "Prism", "Prism", "Prism", "Prism", "Prism", "env", "Prism", "key", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "velocity", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "id", "key", "Prism", "Prism", "Prism", "Prism", "Prism", "Prism", "lang", "Prism", "Prism", "i", "env", "Prism", "Prism", "TYPE", "c", "d", "json", "java", "q", "r", "c", "refractor", "options", "defaultLanguage", "registered", "Error", "tree", "visit", "visitor", "node", "index", "parent", "_node$data", "_node$properties", "tagName", "meta", "data", "properties", "metastring", "className", "Array", "isArray", "refractorRoot", "startLineNum", "lang", "_step", "_iterator", "_createForOfIteratorHelperLoose", "done", "classListItem", "value", "slice", "toLowerCase", "push", "_lang", "rootLang", "includes", "split", "highlight", "toString", "concat", "err", "ignoreMissing", "test", "message", "children", "addNodePosition", "ast", "reduce", "result", "type", "numLines", "match", "length", "position", "start", "line", "column", "end", "_step2", "lines", "_iterator2", "entries", "_step2$value", "i", "Object", "prototype", "hasOwnProperty", "call", "initialLineNum", "_step3", "shouldHighlightLine", "RE", "parsedMeta", "map", "str", "trim", "join", "strlineNumbers", "exec", "lineNumbers", "rangeParser", "startingLineNumber", "_wrapRegExp", "_RE$exec", "Number", "groups", "codeLineArray", "number", "a", "falseShowLineNumbersStr", "_loop", "_lang2", "_lang3", "_step3$value", "treeExtract", "filter", "showLineNumbers", "some", "substring", "_iterator3", "pop", "rehypePrismGenerator", "refractorCommon", "refractorAll", "index", "type", "_a", "__assign", "t", "s", "i", "n", "p", "merge", "base", "extension", "_a", "key", "name", "index", "c", "_a", "l", "is", "next", "position", "assert", "index", "match", "count", "quote", "parseSelector", "a", "b", "_b", "className", "__assign", "t", "s", "i", "n", "p", "_a", "parse", "node", "lang", "direction", "svg", "ok", "unreachable", "element", "info", "find", "propertyValue", "ok", "key", "parse", "stringify", "element", "element", "element", "filter", "matches", "next", "index", "name", "own", "node", "name", "empty", "whitespace", "parse", "a", "number", "start", "a", "b", "boolbase", "index", "parse", "own", "key", "settings", "one", "handlers", "id", "nthCheck", "empty", "has", "is", "_", "element", "ok", "unreachable", "parse", "index", "parent", "_2", "children", "element", "index", "parent", "empty", "one", "list", "all", "node", "index", "name", "nest", "parent", "count", "exit", "d", "space", "parse", "svg", "html", "code", "node", "index", "parent", "visit", "test", "node", "parent", "index", "a", "v", "index", "i", "element", "comment", "start", "match", "content", "properties", "visit", "node", "index", "parent", "firstChild", "lib_default", "name", "init", "$", "_", "index", "key", "k", "value", "map", "set", "toString", "is", "TYPE", "json", "$", "_", "index", "key", "location", "index", "point", "own", "settings", "one", "svg", "html", "node", "all", "document", "location", "start", "ok", "element", "index", "properties", "attribute", "name", "x", "s", "h", "startTag", "endTag", "content", "position", "createLocation", "key", "find", "opening", "closing", "point", "own", "one", "root", "element", "settings", "space", "svg", "html", "node", "all", "patch", "result", "ok", "info", "find", "stringify", "attribute", "index", "children", "position", "CODE_POINTS", "ERR", "code", "i", "count", "TokenType", "i", "c", "c", "fromCodePoint", "_a", "CharCodes", "BinTrieFlags", "start", "base", "NS", "ATTRS", "DOCUMENT_MODE", "TAG_NAMES", "TAG_ID", "_a", "State", "code", "_a", "count", "i", "location", "document", "element", "i", "EntryType", "i", "element", "entry", "document", "name", "node", "text", "j", "element", "location", "prefix", "name", "i", "InsertionMode", "Parser", "document", "html", "parser", "rootElement", "fragment", "code", "_a", "node", "name", "element", "location", "parent", "content", "siblings", "i", "id", "p", "index", "c", "regex", "map", "escape", "match", "parse", "html", "Parser", "parser", "point", "node", "position", "start", "document", "one", "root", "element", "text", "comment", "doctype", "Parser", "node", "index", "parent", "stitch", "siblings", "all", "clone", "point", "location", "head", "start", "_objectWithoutPropertiesLoose", "r", "e", "t", "n", "import_react", "emptyOptions", "name", "settings", "emptyOptions", "re", "position", "point", "reason", "index", "parent", "start", "own", "cap", "create", "svg", "html", "one", "node", "key", "element", "root", "text", "children", "ok", "_", "jsx", "jsxs", "point", "createProperty", "style", "attribute", "name", "index", "count", "info", "find", "stringify", "styleToJs", "import_jsx_runtime", "import_react", "emptyOptions", "toString", "settings", "one", "all", "index", "list", "start", "all", "index", "extension", "code", "list", "base", "code", "code", "regex", "index", "start", "code", "replace", "next", "ok", "start", "code", "prefix", "previous", "code", "index", "add", "events", "a", "b", "element", "document", "self", "start", "code", "point", "index", "ok", "code", "constructs", "events", "context", "index", "events", "context", "index", "start", "text", "group", "ok", "attentionMarkers", "previous", "code", "point", "ok", "start", "code", "next", "ok", "start", "code", "ok", "self", "start", "code", "ok", "start", "code", "ok", "self", "test", "start", "code", "ok", "self", "start", "code", "ok", "self", "start", "code", "info", "effects", "nok", "ok", "start", "code", "self", "furtherStart", "events", "index", "code", "ok", "self", "start", "index", "start", "count", "n", "list", "index", "events", "context", "previous", "start", "content", "events", "ok", "previous", "code", "self", "ok", "start", "code", "raw", "ok", "self", "start", "code", "ok", "start", "code", "escape", "ok", "start", "code", "ok", "self", "start", "code", "titleBefore", "ok", "start", "code", "events", "context", "content", "text", "ok", "start", "code", "events", "index", "ok", "self", "start", "code", "name", "ok", "self", "index", "start", "code", "comment", "events", "index", "context", "group", "text", "ok", "self", "start", "code", "ok", "self", "start", "code", "ok", "self", "start", "code", "ok", "start", "code", "ok", "start", "code", "ok", "self", "start", "code", "events", "context", "index", "content", "text", "definition", "heading", "ok", "self", "start", "code", "paragraph", "flow", "self", "content", "code", "text", "self", "constructs", "start", "code", "list", "index", "events", "context", "document", "flow", "string", "text", "document", "flow", "string", "text", "parser", "point", "exit", "context", "now", "go", "code", "info", "_", "constructs", "map", "start", "all", "list", "store", "ok", "from", "head", "index", "parse", "settings", "constructs", "parser", "create", "document", "flow", "text", "events", "search", "start", "match", "code", "next", "head", "own", "parse", "link", "heading", "blockQuote", "codeText", "definition", "emphasis", "hardBreak", "html", "image", "listItem", "list", "paragraph", "strong", "thematicBreak", "compile", "events", "context", "exit", "index", "point", "start", "create", "node", "parent", "siblings", "toString", "data", "text", "string", "fragment", "children", "d", "extension", "key", "self", "parser", "node", "node", "node", "properties", "node", "node", "node", "id", "index", "link", "node", "html", "node", "node", "head", "node", "id", "definition", "properties", "node", "properties", "node", "text", "node", "id", "definition", "properties", "node", "properties", "node", "parent", "properties", "children", "head", "paragraph", "index", "list", "node", "properties", "index", "node", "root", "node", "node", "node", "head", "body", "start", "node", "parent", "siblings", "cells", "properties", "result", "node", "search", "match", "start", "code", "text", "node", "thematicBreak", "node", "html", "list", "root", "text", "thematicBreak", "ignore", "_", "definition", "content", "id", "children", "listItem", "own", "emptyOptions", "createState", "settings", "handlers", "all", "one", "patch", "node", "map", "id", "parent", "handle", "children", "unknown", "index", "head", "position", "code", "createState", "node", "ok", "isPlainObject", "next", "index", "wrap", "path", "extname", "start", "index", "code", "normalize", "path", "index", "index", "field", "basename", "dirname", "assertPath", "extname", "path", "name", "self", "proto", "own", "index", "extend", "key", "self", "parser", "file", "ok", "tree", "compiler", "add", "value", "parameters", "rest", "isPlainObject", "name", "node", "isUint8Array", "rehypePlugins", "children", "unreachable", "transform", "node", "index", "parent", "key", "test", "count", "index", "string", "list", "settings", "node", "index", "parent", "siblings", "find", "replace", "start", "match", "position", "add", "previous", "node", "ok", "_", "domain", "path", "match", "prefix", "previous", "trail", "code", "footnoteReference", "node", "ok", "_", "info", "exit", "index", "blank", "node", "_", "info", "exit", "table", "settings", "row", "sizes", "columnIndex", "serialize", "code", "blockquote", "node", "_", "info", "exit", "blank", "list", "index", "hardBreak", "_", "info", "index", "index", "count", "node", "code", "node", "_", "info", "raw", "exit", "value", "map", "blank", "definition", "node", "_", "info", "quote", "exit", "emphasis", "attention", "node", "_", "info", "exit", "code", "node", "toString", "heading", "node", "_", "info", "exit", "subexit", "value", "head", "html", "node", "image", "node", "_", "info", "quote", "exit", "imageReference", "node", "_", "info", "exit", "d", "inlineCode", "node", "_", "index", "match", "position", "node", "raw", "toString", "link", "node", "_", "info", "quote", "d", "exit", "value", "linkReference", "node", "_", "info", "exit", "text", "d", "list", "node", "parent", "info", "exit", "index", "style", "listItem", "node", "parent", "info", "exit", "map", "index", "blank", "paragraph", "node", "_", "info", "exit", "root", "node", "_", "info", "d", "exit", "strong", "attention", "peek", "node", "_", "info", "exit", "text", "node", "parent", "info", "siblings", "index", "thematicBreak", "_", "blockquote", "hardBreak", "code", "definition", "emphasis", "heading", "html", "image", "imageReference", "inlineCode", "link", "linkReference", "list", "listItem", "paragraph", "root", "strong", "text", "thematicBreak", "exit", "ok", "d", "node", "settings", "_", "info", "children", "index", "parent", "node", "ok", "parent", "head", "siblings", "index", "info", "text", "code", "ok", "self", "dot", "start", "trail", "events", "index", "tokenizeIndent", "ok", "self", "index", "start", "code", "id", "events", "context", "string", "events", "context", "index", "strikethrough", "text", "insideSpan", "ok", "previous", "start", "code", "EditMap", "index", "add", "addImplementation", "events", "a", "b", "element", "events", "index", "ok", "self", "start", "code", "index", "next", "events", "context", "map", "EditMap", "now", "a", "b", "table", "ok", "self", "code", "emptyOptions", "self", "settings", "node", "index", "parent", "title", "text", "match", "item", "import_react", "handle", "copyTextToClipboard", "import_jsx_runtime", "_excluded", "defaultUrlTransform", "React", "className", "style", "_objectWithoutPropertiesLoose", "_extends", "rehypePlugins", "element", "index", "parent", "_jsx", "reservedMeta", "node", "_extends", "retrieveMeta", "node", "regex", "own", "self", "regex", "node", "name", "code", "emptyOptions", "settings", "prefix", "node", "test", "element", "anyFactory", "castFactory", "checks", "index", "parent", "emptyOptions", "settings", "properties", "content", "group", "is", "wrap", "node", "index", "parent", "children", "create", "link", "node", "index", "parent", "start", "lib_default", "node", "index", "parent", "_extends", "code", "lib_default", "import_jsx_runtime", "esm_default", "React", "rehypePlugins", "lib_default", "_jsx", "_extends", "e", "t", "import_react", "emptyOptions", "settings", "parse", "document", "code", "name", "camelcase", "info", "ok", "format", "value", "_", "self", "settings", "parser", "document", "basic", "index", "all", "code", "next", "code", "next", "own", "code", "next", "attribute", "name", "code", "next", "comment", "node", "encode", "doctype", "increment", "parent", "index", "siblings", "next", "own", "handlers", "node", "index", "parent", "html", "p", "_", "index", "parent", "next", "body", "html", "tbody", "node", "head", "child", "index", "parent", "previous", "element", "node", "index", "parent", "svg", "attributes", "content", "properties", "key", "info", "find", "x", "y", "quote", "name", "stringify", "text", "node", "_", "parent", "raw", "node", "index", "parent", "text", "root", "node", "handle", "unknown", "comment", "doctype", "element", "raw", "root", "text", "node", "emptyOptions", "emptyChildren", "quote", "one", "all", "svg", "html", "node", "index", "parent", "handle", "children", "self", "settings", "compiler", "_extends", "n", "e", "t", "r", "import_react", "reducer", "_extends", "React", "import_jsx_runtime", "c", "Markdown", "markdown", "React", "_jsx", "_objectWithoutPropertiesLoose", "r", "e", "t", "n", "import_react", "_extends", "e", "v", "import_react", "text", "start", "node", "e", "import_react", "text", "start", "prefix", "i", "position", "c", "api", "index", "import_jsx_runtime", "_jsx", "api", "import_react", "import_jsx_runtime", "_jsx", "api", "prefix", "code", "import_react", "import_jsx_runtime", "comment", "_jsx", "_jsxs", "api", "import_react", "import_jsx_runtime", "_jsx", "api", "t", "import_react", "import_jsx_runtime", "_extends", "_jsx", "import_react", "import_jsx_runtime", "_jsx", "api", "import_react", "import_jsx_runtime", "image", "_jsx", "api", "import_react", "import_jsx_runtime", "_jsx", "api", "import_react", "import_jsx_runtime", "link", "_jsx", "api", "import_react", "import_jsx_runtime", "api", "_jsx", "index", "import_react", "import_jsx_runtime", "_jsxs", "_jsx", "api", "import_react", "import_jsx_runtime", "_jsx", "api", "import_react", "import_jsx_runtime", "strikethrough", "_jsx", "api", "import_react", "import_react", "import_jsx_runtime", "_jsx", "api", "import_jsx_runtime", "api", "prefix", "heading", "_extends", "_jsx", "import_react", "import_jsx_runtime", "heading2", "_jsx", "api", "import_react", "import_jsx_runtime", "heading3", "_jsx", "api", "import_react", "import_jsx_runtime", "_jsx", "api", "import_react", "import_jsx_runtime", "_jsx", "api", "import_react", "import_jsx_runtime", "_jsx", "api", "import_react", "import_jsx_runtime", "table", "_jsx", "api", "import_react", "import_jsx_runtime", "import_react", "import_jsx_runtime", "_jsx", "getCommands", "strikethrough", "link", "code", "comment", "image", "table", "text", "_extends", "e", "direction", "space", "text", "import_jsx_runtime", "_excluded", "_excluded2", "_objectWithoutPropertiesLoose", "markdown", "fullscreen", "React", "e", "_jsx", "_extends", "import_jsx_runtime", "_excluded", "className", "_objectWithoutPropertiesLoose", "markdown", "React", "_extends", "_jsx", "_jsxs", "Markdown", "import_react", "import_react", "import_react", "import_jsx_runtime", "children", "_jsx", "e", "_extends", "import_jsx_runtime", "fullscreen", "name", "_extends", "_jsx", "disabled", "render", "_jsxs", "React", "isChild", "className", "import_react", "import_jsx_runtime", "svg", "_jsx", "import_jsx_runtime", "_excluded", "React", "className", "getCommands", "direction", "fullscreen", "_objectWithoutPropertiesLoose", "reducer", "_extends", "e", "_jsx", "_jsxs", "esm_default", "esm_default", "aria", "own", "node", "replace", "comment", "doctype", "element", "root", "text", "index", "patch", "name", "content", "properties", "_", "children", "attributes", "required", "key", "definition", "safeProtocol", "ok", "position", "id", "readOnly", "className", "esm_default", "attribute", "formatDate", "details", "formatNumber", "path", "React", "React", "import_react", "j", "status", "append", "attachments", "id", "name", "autoNumbering", "index", "React", "React", "import_react", "errors", "React", "import_react", "React", "import_react_responsive", "React", "id", "React", "id", "columnLabels", "messages", "import_toolkit", "import_toolkit", "next", "root", "name", "prefix", "cookie", "compact", "key", "element", "key", "_", "compact", "text"]
}
